laravel5.5实现多语言环境
.env配置
APP_LOCALE=en(zh-CN)
修改config/app.php
'locale' => env('APP_LOCALE', 'en'),
在view/lang文件加下增加你想配置的语言zh-CN文件夹
以auth插件为例
在laravel中添加auth
php artisan make:auth
mkdir view/lang/zh-CN
添加文件
auth.php
<?php
return [
'failed' => '用户名/密码不匹配',
'throttle' => '失败次数太多,请在:seconds秒后再尝试',
'E-Mail Address' => 'E-Mail 地址',
'Password' => '密码',
'Remember Me' => '记住我',
'Forgot Your Password' => '忘记密码',
'Login' => '登录',
'Register' => '注册',
'Name' => '昵称',
'Confirm Password' => '确认密码',
'Captcha' => '验证码',
'Reset Password' => '重置密码',
'Send Password Reset Link' => '发送密码连接',
'click to get captcha' => '点击图片重新获取验证码',
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
password.php
<?php
return [
'password' => '密码长度至少包含6个字符并且两次输入密码要一致',
'reset' => '密码已经被重置!',
'sent' => '我们已经发送密码重置链接到您的邮箱',
'token' => '密码重置令牌无效',
'user' => "该邮箱对应的用户不存在!",
];
validation.php
<?php
return [
'confirmed' => '两次:attribute输入不一致',
'email' => '请输入正确的邮箱地址!',
'unique' => '该:attribute已存在',
'required' => ':attribute不能为空',
'max' => [
'string' => ':attribute长度不能超过:max个字符',
],
'min' => [
'string' => ':attribute长度至少包含:min个字符',
],
];
在blade模板中,通过trans函数进行替换即可
trans('auth.confirmed')
通过URL动态实现本地化
route中添加
Route::get('/{locale}', function ($locale) {
App::setLocale($locale);
return view('welcome');
});
然后在resources/lang/en目录下新建welcome.php:
<?php
return [
'message' => 'Welcome To Laravel Academy!'
];
在resources/lang/zh-CN目录下新建welcome.php:
<?php
return [
'message' => '欢迎访问Laravel学院!'
];
最后修改resources/views/welcome.blade.php页面主体部分:
<div class="content">
<div class="title">{{ trans('welcome.message') }}</div>
</div>
在浏览器中访问http://fadmin.test/zh-CN和http://fadmin.test/en可以查看效果
自定义封装trans函数
<?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;
}
}
参考
Laravel- 配置多语言环境
使用 Laravel 5.1 内置的本地化功能轻松实现多语言支持