Laravel- 配置多語言環境

--文章僅供個人學習參考,如有不恰當的地方,希望前輩們指教。--

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);
}




參考教程:http://laravelacademy.org/tutorials/blog
GitHub:  https://github.com/CiaraLi/blogtest


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章