鍍金池/ 教程/ PHP/ 本地化
Laravel Cashier
Eloquent ORM
HTTP 響應(yīng)
發(fā)行說明
擴展包開發(fā)
HTTP 控制器
事件
擴展框架
Contracts
開發(fā)
配置
表單驗證
錯誤與日志
Hashing
貢獻指南
郵件
Session
遷移與數(shù)據(jù)填充
查詢構(gòu)造器
Redis
升級向?qū)?/span>
概覽
緩存
服務(wù)提供者
Envoy 任務(wù)執(zhí)行器
隊列
單元測試
服務(wù)容器
文件系統(tǒng) / 云存儲
認(rèn)證
請求的生命周期
加密
模板
視圖 (View)
Laravel Homestead
Laravel 安裝指南
介紹
Command Bus
分頁
輔助方法
應(yīng)用程序結(jié)構(gòu)
HTTP 路由
HTTP 請求
基本用法
本地化
HTTP 中間件
結(jié)構(gòu)生成器
Facades
Laravel Elixir

本地化

介紹

Laravel 的 Lang facade 提供方便的方法來取得多種語言的字串,讓你簡單地在應(yīng)用進程里支持多種語言。

語言文件

語言字串保存在 resources/lang 文件夾的文檔里。在這個文件夾里應(yīng)該要給每一個應(yīng)用進程支持的語言一個子文件夾。

    /resources
        /lang
            /en
                messages.php
            /es
                messages.php

語言文件例子

語言文件簡單地返回鍵跟字串的數(shù)組。例如:

     'Welcome to our application'
    );

在執(zhí)行時變換默認(rèn)語言

應(yīng)用進程的默認(rèn)語言被保存在 config/app.php 配置文件。你可以在任何時候用 App::setLocale 方法變換現(xiàn)行語言:

    App::setLocale('es');

配置備用語言

你也可以配置「備用語言」,它將會在當(dāng)現(xiàn)行語言沒有給定的語句時被使用。就像默認(rèn)語言,備用語言也可以在 config/app.php 配置文件配置:

    'fallback_locale' => 'en',

基本用法

從語言文件取得句子

    echo Lang::get('messages.welcome');

傳遞給 get 方法的字串的第一個部分是語言文件的名稱,第二個部分是應(yīng)該被取得的句子的名稱。

注意: 如果語句不存在, get 方法將會返回鍵的名稱。

你也可以使用 trans 輔助方法,它是 Lang::get 方法的別名。

    echo trans('messages.welcome');

在句子中做替代

你也可以在語句中定義占位符:

    'welcome' => 'Welcome, :name',

接著,傳遞替代用的第二個參數(shù)給 Lang::get 方法:

    echo Lang::get('messages.welcome', array('name' => 'Dayle'));

判斷語言文件是否有指定的句子

    if (Lang::has('messages.welcome'))
    {
        //
    }

復(fù)數(shù)

復(fù)數(shù)是個復(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);

你也可以提供一個地區(qū)參數(shù)來指定語言。舉個例,如果你想要使用俄語 (ru):

    echo Lang::choice('товар|товара|товаров', $count, array(), 'ru');

因為 Laravel 的翻譯器由 Symfony 翻譯組件提供,你也可以很容易地建立更明確的復(fù)數(shù)規(guī)則:

    'apples' => '{0} There are none|[1,19] There are some|[20,Inf] There are many',

驗證

要驗證本地化的錯誤和消息,可以看一下驗證的文檔.

覆寫擴展包的語言文件

許多擴展包附帶它們自有的語句。你可以通過放置文檔在 resources/lang/packages/{locale}/{package} 文件夾來覆寫它們,而不是改變擴展包的核心文檔來調(diào)整這些句子。所以,舉個例子,如果你需要覆寫 skyrim/hearthfire 擴展包在 messages.php 的英文語句,你可以放置語言文件在: resources/lang/packages/en/hearthfire/messages.php。你可以只定義你想要覆寫的語句在這個文檔里,任何你沒有覆寫的語句將會仍從擴展包的語言文件加載。

上一篇:發(fā)行說明下一篇:郵件