【问题标题】:Laravel Validation errors are not being translated if locale changed at runtime如果在运行时更改语言环境,则不会翻译 Laravel 验证错误
【发布时间】:2019-03-24 10:37:57
【问题描述】:

我的 Laravel 应用程序有 locale 默认为英文(config/app.php)。有一个中间件可以检查每个请求并根据用户偏好设置语言环境。

下面是中间件代码

public function handle($request, Closure $next)
{
    $langs=['en', 'ar'];
    $appLang=app()->getLocale();
    if (request()->has('lang')) {
        $requestLang=request()->get('lang');
        if ($requestLang != $appLang && in_array($requestLang, $langs)) {
            app()->setLocale($requestLang);
        }
    } else {
        request()->merge(['lang' => $appLang]);
    }
    return $next($request);
}

语言环境是根据 url 参数 lang 设置的,例如。 http://localhost:8000/admin/departments?lang=ar

一切正常,除了验证错误。当语言环境设置为“ar”,硬编码在config/app.php 中时,无论中间件设置的语言环境如何,它都会显示翻译错误。但是如果区域设置是由中间件设置的,视图会被翻译,但验证错误仍然是英文。

谁能指出我哪里出错了。谢谢。

【问题讨论】:

    标签: php laravel localization laravel-blade laravel-middleware


    【解决方案1】:

    您是否使用 json 文件进行翻译?验证/认证文本位放置在单独的文件中。检查 resources > lang 子文件夹。在 lang 子文件夹中,您可以创建其他附加子文件夹,例如“en”或“es”或您想要的任何其他语言。

    【讨论】:

    • 翻译在resources/lang/ar/validation.php
    • 就是这样,这些是您应该翻译的文件,它应该可以工作。至少这就是我所拥有的,如果语言环境设置正确,那么它应该以正确的语言显示所有内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多