W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Laravel 的 Lang
facade 提供方便的方法來取得多種語言的字串,讓你簡單地在應(yīng)用進(jìn)程里支持多種語言。
語言字串保存在 resources/lang
文件夾的文檔里。在這個(gè)文件夾里應(yīng)該要給每一個(gè)應(yīng)用進(jìn)程支持的語言一個(gè)子文件夾。
/resources /lang /en messages.php /es messages.php
語言文件簡單地返回鍵跟字串的數(shù)組。例如:
<?phpreturn [ 'welcome' => 'Welcome to our application'];
應(yīng)用進(jìn)程的默認(rèn)語言被保存在 config/app.php
配置文件。你可以在任何時(shí)候用 App::setLocale
方法變換現(xiàn)行語言:
App::setLocale('es');
你也可以配置「備用語言」,它將會在當(dāng)現(xiàn)行語言沒有給定的語句時(shí)被使用。就像默認(rèn)語言,備用語言也可以在 config/app.php
配置文件配置:
'fallback_locale' => 'en',
echo Lang::get('messages.welcome');
傳遞給 get
方法的字串的第一個(gè)部分是語言文件的名稱,第二個(gè)部分是應(yīng)該被取得的句子的名稱。
注意: 如果語句不存在,
get
方法將會返回鍵的名稱。
你也可以使用 trans
輔助方法,它是 Lang::get
方法的別名。
echo trans('messages.welcome');
你也可以在語句中定義占位符:
'welcome' => 'Welcome, :name',
接著,傳遞替代用的第二個(gè)參數(shù)給 Lang::get
方法:
echo Lang::get('messages.welcome', ['name' => 'Dayle']);
if (Lang::has('messages.welcome')){ //}
復(fù)數(shù)是個(gè)復(fù)雜的問題,不同語言對于復(fù)數(shù)有很多種復(fù)雜的規(guī)則。你可以簡單地在你的語言文件里管理它。你可以用「管道」字符區(qū)分字串的單數(shù)和復(fù)數(shù)形態(tài):
'apples' => 'There is one apple|There are many apples',
接著你可以用 Lang::choice
方法取得語句:
echo Lang::choice('messages.apples', 10);
你也可以提供一個(gè)地區(qū)參數(shù)來指定語言。舉個(gè)例,如果你想要使用俄語 (ru):
echo Lang::choice('товар|товара|товаров', $count, [], 'ru');
因?yàn)?Laravel 的翻譯器由 Symfony 翻譯組件提供,你也可以很容易地建立更明確的復(fù)數(shù)規(guī)則:
'apples' => '{0} There are none|[1,19] There are some|[20,Inf] There are many',
要驗(yàn)證本地化的錯(cuò)誤和消息,可以看一下驗(yàn)證的文檔.
許多擴(kuò)展包附帶它們自有的語句。你可以通過放置文檔在 resources/lang/packages/{locale}/{package}
文件夾來覆寫它們,而不是改變擴(kuò)展包的核心文檔來調(diào)整這些句子。所以,舉個(gè)例子,如果你需要覆寫 skyrim/hearthfire
擴(kuò)展包在 messages.php
的英文語句,你可以放置語言文件在: resources/lang/packages/en/hearthfire/messages.php
。你可以只定義你想要覆寫的語句在這個(gè)文檔里,任何你沒有覆寫的語句將會仍從擴(kuò)展包的語言文件加載。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: