搜索中心
搜索中心 搜索快照

开发必看 - 多语言

系统多语言支持

翻译文件位置

ModStart从底层架构支持多语言。多语言翻译文件位于以下路径:

  • resources/lang/zh/xxx.php
  • resources/lang/en/xxx.php

翻译文件格式

return [
    'Message' => '消息',
    'Error Msg Is %s' => '错误为 %s',
    // ...
];

系统如何确定多语言

系统按照以下顺序来确定当前语言:

  • routeLocale:路由中的语言参数,比如 http://example.com/zh/xxx 中的 zh,需要指定路由参数为 locale
  • sessionLocale:当前会话使用的语言,由 Session 中的 _locale 值决定;
  • i18nLocale:模块 I18n 模块设定的默认语言,如果没安装 I18n 模块,则忽略。
  • locale:系统设定的默认语言,为 config('app.locale') 的值;
  • fallbackLocale:系统设定的回退语言,为 config('app.fallback_locale') 的值。

代码调用多语言

// 没有参数
L('xxx.Message')
// 带有参数
L('xxx.Error Msg Is %s', '错误信息')

模块多语言支持

翻译文件位置

模块多语言翻译文件位于模块的路径:

  • module/Xxx/Lang/zh.php
  • module/Xxx/Lang/en.php
  • ...

翻译文件格式

return [
    'Message' => '消息',
    'Error Msg Is' => '错误为 %s',
    // ...
];

代码调用多语言

// 没有参数,Xxx 表示模块名
LM('Xxx', 'Message')
// 带有参数,Xxx 表示模块名
LM('Xxx', 'Error Msg Is', '错误信息')

系统如何切换多语言

可以通过程序切换 Session 中的变量 _locale 来实现。

如:

// 切换到中文
Session::put('_locale', 'zh');
// 切换到英文
Session::put('_locale', 'en');

系统多语言示例

resources/lang/zh/xxx.phpresources/lang/en/xxx.php 中,定义多语言:

// 语言包文件 resources/lang/zh/xxx.php
return [
    'Message' => '消息',
    'Error Msg Is %s' => '错误为 %s',
];
// 语言包文件 resources/lang/en/xxx.php
return [
    'Message' => 'Message',
    'Error Msg Is %s' => 'Error is %s',
];

xxx.blade.php 视图文件中,输出多语言:


    不带参数语言:{{ L('xxx.Message') }}


    带参数语言:{{ L('xxx.Error Msg Is %s', '错误信息') }}

可以在 Controller 中切换语言:

class XxxController
{
    public function index() {
        // 切换到中文
        Session::put('_locale', 'zh');
        // 切换到英文
        Session::put('_locale', 'en');
    }
}
查看原文
QQ
微信
客服