在地化
介紹
Laravel 的 Lang
類別提供一個很方便的方式可以用來存取不同類型的語言,讓你的應用程式可以很容易的支援多國語言。
語言檔
語言資訊存放在 app/lang
資料夾中,在這個資料夾中會放置你應用程式所支援各種不同語言的子資料夾。
/app
/lang
/en
messages.php
/es
messages.php
語言檔指回傳陣列的字串值,例如:
語言檔範例
<?php
return array(
'welcome' => '歡迎到我的應用程式'
);
應用程序默認語言配置在app/config/app.php配置文件中locale配置項.你可以在任何時候使用App::setLocale方法來改變當前激活語言。
預設的語言設定存放在 app/config/app.php
檔案中,你可以隨時使用 App::setLocale
方法去變更目前要使用的語言:
執行時變更預設語言
App::setLocale('es');
基本使用
從語言檔中取得資料
echo Lang::get('messages.welcome');
第一個傳送給 get
方法的參數是語言檔的檔案名稱,而第二個名稱是要取得字串的鍵值名稱。
注意: 假如要取得的語言資料不存在,則
get
方法會回傳原鍵值名稱。
取代語言檔字串
你也可以在語言檔中定義 位置標誌符 (place-holders):
'welcome' => 'Welcome, :name',
然後傳遞第二個參數給 Lang::get
方法,去取代設定的 位置標誌符 (place-holders):
echo Lang::get('messages.welcome', array('name' => 'Dayle'));
判斷語言資訊是否存在
if (Lang::has('messages.welcome'))
{
//
}
多元化
複數形式是一個複雜的問題,因為不同的語言有著不同的複數形式規則。你可以通過簡單的在語言文件中使用”管道“符來分開單數和復數文本形式: 複數是一個很複雜的問題,不同的語言有不同且複雜的複數型態規則,你可以藉由使用"管線 (pipe)"字元,簡單的去區別單數與複數的字串格式:
'apples' => 'There is one apple|There are many apples',
然後你可以使用 Lang::choice
方法去取得有複數型態的語言資訊:
echo Lang::choice('messages.apples', 10);
由於 Laravel 翻譯器是用強大的 Symfony 翻譯原件,你也可以容易的建立更多複雜的複數規則:
'apples' => '{0} There are none|[1,19] There are some|[20,Inf] There are many',