QQ扫一扫联系
ModStart从底层架构支持多语言。多语言翻译文件位于以下路径:
resources/lang/zh/xxx.php
resources/lang/en/xxx.php
return [
'Message' => '消息',
'Error Msg Is %s' => '错误为 %s',
// ...
];
系统按照以下顺序来确定当前语言:
http://example.com/zh/xxx
中的 zh
,需要指定路由参数为 locale
;Session
中的 _locale
值决定;I18n
模块设定的默认语言,如果没安装 I18n
模块,则忽略。config('app.locale')
的值;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.php
和 resources/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');
}
}