回到最上方

文件

在地化

介紹

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',

討論