1、配置本地化语言
Laravel 的本地化语言配置项位于config/app.php:
'locale' => 'zh', //当前语言 'fallback_locale' => 'en', //备用语言
2、创建翻译文件
翻译文件所在目录为resources/lang,在此创建 zh/auth.php文件
return [ 'username'=>'用户名', 'password'=>'密码', 'rememberme'=>'记住密码', 'login'=>'登录', 'badpassword' => '用户名或密码错误.', ];
3、在代码中实现 使用 trans()方法 实现本地化显示
<div class="form-group"> <label class="col-lg-4 control-label">{{trans('auth.username')}}</label> <div class="col-lg-6"> <input type="text" class="form-control" name="name" value="{{old('name')}}" autofocus/> </div> </div>
4、如没有定义翻译你会返回整个字符串,可以封装自己封装的trans函数
创建app/Libraries/helpers.php文件,添加代码
if(!function_exists('ts')){ function ts($code,$lang='zh'){ $lang= empty($lang)?'zh':$lang; $code= preg_replace('/[^0-9a-zA-z.-_ ]/', '', $code); $trans=trans($code,[],'',$lang); if(empty($trans)||$trans==$code){ $trans= ucwords(preg_replace('/([0-9a-zA-z-_ ]*[.])*/', '', $code)); } return $trans; } }
在根目录下composer.json文件中修改代码
"autoload": { "classmap": [ "database" ], "files": [ "app/helpers.php", "app/Libraries/helpers.php" //新添加 ], "psr-4": { "App\\": "app/" } },
执行 composer dumpautoload
之后在项目、 模板中就可以使用 ts() 函数了
{{ts('auth.login')}}
5、有时候需要动态的切换语言,通过URL传递参数,动态实现本地化
function setLocalLang(Request $request) { $lang=$request->lang; App::setLocale($lang); }