Lang 类別
Lang 类別能让你在你的应用程序中,使用語言档案設定語言變数。
預設語言是 en
,設定在 app/config/config.php。
使用 Config set 方法去變更值。
Config::set('language', 'cy');
你也可以在你的配置定義一个備用語言,它是語言代码,或一个語言代码的陣列。
備用用於只要你載入語言档案,
且該指定語言的档案不存在時。
多語言支援
Lang 类別支援多个語言,可同時使用。預設情況下,
目前設定的語言是用來載入档案和取回語言字串,但你可以使用上述的方法动態切換,
或藉由在 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,請求語言档案的重載是強制的,抹去快取的與被載入語言档案相關的語言項目。 |
|
回傳 |
空 |
範例 |
// 語言档案的例子:
return array(
'hello' => 'Hello :name',
'something'=> 'something :name!',
'test'=> array('hello' => 'Hello', 'something' => 'Plop') // 群組
);
// 載入 example.php。
// 請注意:如果在配置裡沒有語言被設定,将会退回至 English。
Lang::load('example');
// 将載入所給的档案進 'test' 群組。
Lang::load('example', 'test');
// 輸出 Plop
$this->output = Lang::get('test.test.something');
// 将從模組 'foo' 載入 example 語言档案進 'bar' 群組。
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
|
應該被取回行的語言代码。如果沒給,目前活躍的語言将被使用。 |
|
回傳 |
混合。如果找到是字串,否則是 false |
範例 |
// 給这个 lang 档案
return array('hello' => 'Hello :name');
// 輸出 Hello world
$this->output = Lang::get('hello', array('name' => 'world'));
// 輸出 Plop
$this->output = Lang::get('test.something');
|
set($line, $value, $group = null, $language = null)
set 方法能让你設定一个特定行至語言档案。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$line |
必要 |
所需行的識別符。 |
$value |
array()
|
設定行的值。 |
$group |
null
|
設定要使用的語言組。 |
$language |
null
|
應該被設定行的語言代码。如果沒給,目前活躍的語言将被使用。 |
|
回傳 |
空 |
範例 |
// 回傳 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 語言目录。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$file |
必要 |
指向相對於配置目录的配置档案路徑,不包括副档名(假設是".php")。你可以用命名空間前綴它,來從已載入的套件或模組載入一个配置档案。 |
$lang |
必要 |
如果这是一个字串,它指定一个群組名稱來儲存。如果它是一个陣列,它被認为包含要儲存的語言字串。 |
$language |
null |
要儲存档案的語言代码,如果沒給,無論目前設定的語言代码是什么,它将被儲存。 |
|
回傳 |
如果档案被儲存为 true,如果错误发生为 false。 |
範例 |
// 載入 "custom" 語言档案中名为 "foo" 的群組。
Lang::load('custom', 'foo');
// 更新一些語言項目
Lang::set('foo.key', $value);
// 儲存已更新的語言群組 'foo'(注意:它将儲存在群組內的所有東西!)
Lang::save('custom', 'foo');
// 儲存已更新的語言群組 'bar' 到模組 'foo' 裡的語言档案 'custom'。
Lang::save('foo::custom', 'bar');
|
delete($item, $group = null, $language = null)
delete 方法能让你從 已載入 的語言档案刪除特定行。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$item |
必要 |
所需行的識別符。 |
$group |
null
|
設定要使用的語言組。 |
$language |
null
|
應該被刪除行的語言代码。如果沒給,目前活躍的語言将被使用。 |
|
回傳 |
空 |
範例 |
// 刪除 'hello' 語言鍵
Lang::delete('hello');
|
請注意,这樣会刪除儲存在語言类別中的語言項目,不会 從磁碟上的語言档案刪除!
get_lang()
get_lang 方法能让你取回目前活躍的語言。通常会跟 Config::get('language') 一樣。
靜態 |
是 |
參数 |
無 |
回傳 |
字串,目前活躍的語言。 |
範例 |
// 将回傳目前活躍的語言,最可能是 'en'
Lang::get_lang();
|
程序助手
__($string, $params = array())
__ 函式是 Lang::get 的別名。
參数 |
參数 |
預設 |
描述 |
$string |
必要 |
所需行的識別符。 |
$parameters |
array()
|
設定一个能被傳遞至行的參数陣列。 |
|
回傳 |
字串,來自 Lang::get 的結果 |
範例 |
// 輸出 Hello world
$this->output = __('hello', array('name' => 'world');
// 輸出 Plop
$this->output = __('test.something');
|