Laravel 本地化定义

时间:2023-03-08 20:10:48

1、配置本地化语言
Laravel
的本地化语言配置项位于config/app.php:

[php] view
plain
 copy

'locale' => 'zh',//当前语言

'fallback_locale' => 'en',//备用语言


2、创建翻译文件

翻译文件所在目录为resources/lang,在此创建 zh/auth.php文件

[php] view plain copy

return [

'username'=>'用户名',

'password'=>'密码',

'rememberme'=>'记住密码',

'login'=>'登录',

'badpassword' => '用户名或密码错误.',

];


3、在代码中实现 使用 trans()方法  实现本地化显示
[php] view plain copy
  1. <div class="form-group">
  2. <label class="col-lg-4 control-label">{{trans('auth.username')}}</label>
  3. <div class="col-lg-6">
  4. <input type="text" class="form-control" name="name" value="{{old('name')}}" autofocus/>
  5. </div>
  6. </div>

4、如没有定义翻译你会返回整个字符串,可以封装自己封装的trans函数

创建app/Libraries/helpers.php文件,添加代码

[php] view plain copy
  1. if(!function_exists('ts')){
  2. function ts($code,$lang='zh'){
  3. $lang= empty($lang)?'zh':$lang;
  4. $code= preg_replace('/[^0-9a-zA-z.-_ ]/', '', $code);
  5. $trans=trans($code,[],'',$lang);
  6. if(empty($trans)||$trans==$code){
  7. $trans= ucwords(preg_replace('/([0-9a-zA-z-_ ]*[.])*/', '', $code));
  8. }
  9. return $trans;
  10. }
  11. }


在根目录下composer.json文件中修改代码
[php] view plain copy
  1. "autoload": {
  2. "classmap": [
  3. "database"
  4. ],
  5. "files": [
  6. "app/helpers.php",
  7. "app/Libraries/helpers.php"  //新添加
  8. ],
  9. "psr-4": {
  10. "App\\": "app/"
  11. }
  12. },


执行 composer dumpautoload

之后在项目、 模板中就可以使用 ts() 函数了

[php] view plain copy
  1. {{ts('auth.login')}}


5、有时候需要动态的切换语言,通过URL传递参数,动态实现本地化
[php] view plain copy
  1. function setLocalLang(Request $request) {
  2. $lang=$request->lang;
  3. App::setLocale($lang);
  4. }