Lang クラス
Lang クラスは、アプリケーション内の言語ファイルを使用して言語の変数をセットすることができます。
デフォルトの言語は、app/config/config.php の中で en
と設定されています。
値を変更するには、Config の set メソッド を使用してください。
Config::set('language', 'cy');
フォールバック言語を設定の中で言語コードや言語コードの配列として定義することもできます。
言語ファイルを読み込むときに指定した言語ファイルが存在しなければ、
フォールバック言語が使用されます。
多言語サポート
Lang クラスは同時に使うことができる多数の言語をサポートしています。
デフォルトでは、ファイルの読み込みと言語文字列の取得は現在設定されている言語で行われます。
しかし、上記のメソッドを使うか、または必要な言語コードを Lang クラスのメソッドで呼び出すことによって動的に切り替えることができます。
言語ファイルの種類
言語ファイルを保存するのに、さまざまなファイルレイアウトを使用できます。レイアウトの種類は、ファイルの拡張子で決められます。
-
PHP 。デフォルト。PHP ファイルは配列構造を返します。
return array('key' => 'value');
-
INI 。ini ファイルのレイアウトについては、このページ をごらんください。
[group]
key=value
-
YAML 。yaml ファイルのレイアウトについては、このページ をごらんください。
group:
key: value
-
JSON 。json ファイルのレイアウトについては、このページ をごらんください。
{
"group" :
{
"key": "value"
}
}
-
DB 。次のようなテーブル構造を用います。
CREATE TABLE IF NOT EXISTS `lang` (
`identifier` char(100) NOT NULL,
`language` char(10) NOT NULL,
`lang` longtext NOT NULL,
`hash` char(13) NOT NULL,
PRIMARY KEY (`identifier`, `language`)
)
デフォルトでは、'lang' というテーブル名を使用します。
app/config/config.php
の中にあるキー lang.table_name に使いたいテーブル名を定義することで変更ができます。
ファイルの種類を指定しない場合、Lang::load() はデフォルトの 'php' を使用します。
load($file, $group = null, $language = null, $overwrite = false, $reload = false)
load メソッドは、言語ファイルを読み込むことができます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$file |
必須 |
求めるファイルへのパス。読み込まれたパッケージやモジュールから読み込むために、名前空間のプレフィックスを付けることができます。 |
$group |
null
|
使用する言語グループをセットします。 |
$language |
null
|
読み込みたい指定の言語をセットします。 |
$overwrite |
false |
(オプション) true にセットしたならば、読み込んだ言語アイテムは既にある読み込まれたアイテムと非再帰的な方法でマージされます。多次元配列である場合は、マージするのではなく配列の値が上書きされます。 |
$reload |
false |
(オプション) true にセットしたならば、要求された言語ファイルは再読み込みが強制され、読み込まれている言語ファイルに関連した言語アイテムのキャッシュが削除されます。 |
|
返り値 |
void |
例 |
// 言語ファイルの例:
return array(
'hello' => 'Hello :name',
'something'=> 'something :name!',
'test'=> array('hello' => 'Hello', 'something' => 'Plop') // グループ
);
// example.php を読み込む。
// 注意: 設定に言語がセットされていないならば、英語が代わりに使われます。
Lang::load('example');
// 'test' グループの中の指定したファイルが読み込まれます。
Lang::load('example', 'test');
// プロパティの出力
$this->output = Lang::get('test.test.something');
// 'bar' グループの中の 'foo' モジュールから example 言語ファイルが読み込まれます。
Lang::load('foo::example', 'bar');
// イタリア語の言語ファイル example が読み込まれます。
// 存在しなかったならば、設定されている言語が読み込まれます
Lang::load('foo::example', 'bar', 'it');
|
get($line, $params = array(), $default = null, $language = null)
get メソッドは、言語ファイルから指定した行を取得します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$line |
必須 |
求める行の識別子。 |
$parameters |
array()
|
行へ渡されるパラメータの配列をセットします。 |
$default |
null
|
$line が見つからなければ返す値。 |
$language |
null
|
この行で取得したい言語コード。与えられないならば、現在アクティブな言語が使用されます。 |
|
返り値 |
mixed 。見つかれば String 、見つからなければ false |
例 |
// この言語ファイルを与える
return array('hello' => 'Hello :name');
// Hello world を出力
$this->output = Lang::get('hello', array('name' => 'world'));
// プロパティの出力
$this->output = Lang::get('test.something');
|
set($line, $value, $group = null, $language = null)
set メソッドは、指定した行を言語ファイルにセットすることができます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$line |
必須 |
求める行の識別子。 |
$value |
array()
|
行の値をセットする。 |
$group |
null
|
使用する言語グループをセットする。 |
$language |
null
|
この行でセットしたい言語コード。与えられないならば、現在アクティブな言語が使用されます。 |
|
返り値 |
void |
例 |
// true を返す
Lang::set('hello', 'Ahoy!');
// グループを使って
Lang:set('hello', 'Ahoy!', 'test');
// 上と同じ様な動作
Lang::load('test', 'test');
Lang::set('hello', 'Ahoy!');
|
save($file, $lang, $language = null)
save メソッドは、システムの中に言語ファイルを保存します。要求されたファイルの言語ディレクトリを検索します。
もしファイルが見つからないならば、APPPATH の lang ディレクトリに言語ファイルを作成します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$file |
必須 |
設定ファイルのパスは、config ディレクトリに対する相対パスです。ファイル拡張子を含まないでください (拡張子として ".php" であることが決め打ちされています) 。読み込まれたパッケージやモジュールの設定ファイルを読み込むために、名前空間のプレフィックスを付けることが出来ます。 |
$lang |
必須 |
文字列ならばグループ名を指定して保存します。配列ならば、言語文字列が含まれているとして保存します。 |
$language |
null |
ファイルに保存される言語コード。指定されないならば、現在セットされている言語コードで保存されます。 |
|
返り値 |
言語ファイルが保存されたら true 、エラーが発生したら false |
例 |
// これは、"foo" という名前のグループにある言語ファイル "custom" を読み込む。
Lang::load('custom', 'foo');
// 言語のアイテムを更新する
Lang::set('foo.key', $value);
// 更新された言語グループ 'foo' を保存 (注意: グループの中の全てのものが保存されます!)
Lang::save('custom', 'foo');
// 更新された言語グループ 'foo' を モジュール 'foo' の中の 言語ファイル 'custom' に保存
Lang::save('foo::custom', 'bar');
|
delete($item, $group = null, $language = null)
delete メソッドは、読み込まれた 言語ファイルから指定された行を削除します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$item |
必須 |
求める行の識別子。 |
$group |
null
|
使いたい言語グループをセットします。 |
$language |
null
|
削除する行の言語コード。与えられないならば、現在アクティブな言語が使用されます。 |
|
返り値 |
void |
例 |
// 言語キー 'hello' を削除
Lang::delete('hello');
|
language クラスに格納された言語アイテムを削除するのであって、ディスクにある言語ファイルから削除しないことに注意してください。
get_lang()
get_lang メソッドは、現在アクティブな言語を取得します。一般的に、Config::get('language') と同じ結果になります。
静的 |
はい |
パラメータ |
なし |
返り値 |
String 現在アクティブな言語。 |
例 |
// 現在アクティブな言語を返す。大抵は 'en' になるだろう
Lang::get_lang();
|
手続き型ヘルパー
__($string, $params = array())
The __ 関数は、Lang::get の別名です。
パラメータ |
パラメータ |
デフォルト |
説明 |
$string |
必須 |
求める行の識別子。 |
$parameters |
array()
|
行に渡されるパラメータの配列。 |
|
返り値 |
string 。Lang::get からの結果 |
例 |
// Hello world を出力
$this->output = __('hello', array('name' => 'world');
// プロパティを出力
$this->output = __('test.something');
|