この記事では、例を通じてCodeIgniterの多言語実装方法を分析します。参考のために皆さんと共有してください。詳細は次のとおりです:
CI アプリケーション ディレクトリの下には、複数の異なる言語を構成するために使用される言語パッケージ ディレクトリがあります。言語設定は設定ファイルにあり、設定形式は次のとおりです:
コードをコピーします コードは次のとおりです: $config[' language'] = 'english';
定義言語ファイル
language の下に空の english ディレクトリがあります。これは、上で定義したシステムのデフォルトの言語ディレクトリです。システムはこのディレクトリから言語パック ファイルをロードします。 zh_cn などの別の言語パックを定義する場合は、zh_cn ディレクトリを作成し、対応する言語パック ファイルを構成するだけです。言語ファイルのサフィックスは _lang.php である必要があることに注意してください。言語変換は、キー名が重複するのを防ぐために、キー名に追加することができます。
設定方法は以下を参照してください:
リーリー言語パックの使用方法
使用する前に言語パックをロードする必要があります。ロードと使用方法は次のとおりです:
リーリー言語パックの使用は非常に簡単であると言えます。私も少し前に台湾版のシステムを作成しました。ところで、CI での言語パックの使用と注意が必要な問題についてお話します。
1. $config['言語'] が zh_cn として直接設定された場合はどうなりますか?
システムには、system/ language/english ディレクトリにいくつかのデフォルトの言語パッケージがあります。システムが提供するいくつかのクラスを使用してエラーが報告されると、対応する言語パッケージがロードされます。このとき、システムは最初に language/zh_cn ディレクトリを検索し、次に system/ language/zh_cn ディレクトリを検索します。見つからない場合は、言語パッケージが見つからないというエラーが表示されます。したがって、言語構成を変更する場合は、system/ language/english の下にあるファイルを対応する言語ディレクトリにコピーすることをお勧めします。
これは少し奇妙に思えますが、次のように考えてみてはいかがでしょうか。まず、 language/zh_cn ディレクトリに移動して見つけ、見つからない場合は、system/ language/english ディレクトリに移動します。これを英語と呼ぶのは適切ではないかもしれませんが、システムのデフォルト言語パックと呼ぶべきです。
2. 言語パックを使用する必要がありますか?
特定のシステムでこの状況が発生しました。一部のエラー プロンプトは言語パッケージを使用しており、一部は中国語を直接使用しています。これは、複数人による開発が原因である可能性があり、キーの名前を比較する必要があることがよくあります。対応する言語ファイルが必要なため、プログラムを読むのが比較的面倒ですが、中国語版にはこの問題はありません。また、システムで言語パックを使用するのが少し面倒だと思います。したがって、多言語プログラムを考慮する必要がない場合は、言語パックを使用しないことをお勧めします。
3. 言語パックを自動的に検出するにはどうすればよいですか?
通常は、ブラウザの言語タイプに基づいて判断でき、PHPの$_SERVER['HTTP_ACCEPT_LANGUAGE']で値を取得し、文字列の分離や正規のマッチングに基づいてクライアントブラウザのデフォルト言語を取得できます。タイプ。取得したら、を介してコードをコピーします。 コードは次のとおりです: $this->config->set_item(' language', 'zh_cn');
実際に言語パックを使用するかどうかについては、lang 関数を書き換えることができます。 ^_^ を使用する場合は、言語パックが使用されます。
リーリー多くの場合、多言語実装は配列の形式で実装され、一部は .mo 形式で実装されます。l18n 多言語実装には php の php_gettext 拡張機能のサポートが必要です。詳細については、関連情報を参照してください。
CodeIgniter 関連のコンテンツに興味のある読者は、このサイトの特別トピック「codeigniter 入門チュートリアル」と「CI (CodeIgniter) フレームワーク上級チュートリアル」をチェックしてください
この記事が、CodeIgniter フレームワークに基づく皆様の PHP プログラム設計に役立つことを願っています。