本地化

简介

Laravel Lang 类提供非常方便的方法来从不同语言文件中取得字符串,允许在应用程序中支持多语言。

语言文件

语言文字存放在 app/lang 目录。应用程序所要支持的语言都需要在此目录建立为子目录。

/app
    /lang
        /en
            messages.php
        /es
            messages.php

语言文件只是返回键值(字符串)对数组。例如:

语言文件示例

<?php

return array(
    'welcome' => 'Welcome to our application'
);

应用程序默认语言配置在 app/config/app.php配置文件中 locale 配置项.你可以在任何时候使用 App::setLocale 方法来改变当前激活语言。

在运行时改变默认语言

App::setLocale('es');

基本用例

从语言文件中获取文本

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

传给 get 方法字符串第一部分是语言文件名称,第二个部分是要取得文本的名字。

注意: 如果语言不存在该文本,那么 get 方法会将键返回。

文本中替换

可以在语言文件中定义占位符:

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

然后,将要替换的值传递给 Lang::get 方法的第二个参数:

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

判断语言文件是否存在该文本

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

复数形式

复数形式是一个复杂的问题,因为不同的语言有着不同的复数形式规则。你可以通过简单的在语言文件中使用”管道“符来分开单数和复数文本形式:

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

验证

对于验证功能中需要本地化的错误信息和提示信息,请参阅 相关文档