laravel5.5实现多语言环境

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' => '点击图片重新获取验证码',

];

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-CNhttp://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 内置的本地化功能轻松实现多语言支持

猜你喜欢

转载自blog.csdn.net/yiluohan0307/article/details/80514844