Laravel 10 基本本地化不起作用

问题描述 投票:0回答:1

有人可以帮我运行 Laravel 10 的基本本地化吗?我已按照指南进行操作,但本地化仍然不起作用。

我运行命令:

php artisan lang:publish

此创建的文件夹包含我简化的文件,仅创建一个文件,

lang/en/messages.php
messages.php
的内容:

<?php

return [
  'my_string' => 'My localized string',  
];

我已经创建了中间件

LanguageManager
:

class LanguageManager
{
    public function handle(Request $request, Closure $next): Response
    {
        if (\Session::get("locale") != null) {
            App::setLocale(\Session::get("locale"));
        } else {
            \Session::put("locale", "en");
            App::setLocale(\Session::get("locale"));
        }

        return $next($request);
    }
}

我已将此文件添加到

Kernel

 protected $middlewareGroups = [
        'web' => [
            ...
            \App\Http\Middleware\LanguageManager::class,
        ],

在我的控制器中,我在

index
函数中添加了以下几行:

\App::setLocale('en');
session()->put('locale', 'en');

最后,在我的

blade
文件中:

...
<span>{{ __('my_string') }}</span>
...

我还运行了命令

php artisan cache:clear
。但是,该应用程序仍然显示“my_string”而不是“我的本地化字符串”。

有人可以建议如何解决这个问题吗?我认为官方指南应该更具描述性,以帮助新开发人员创建基本的功能示例。非常感谢。

laravel localization locale translation laravel-artisan
1个回答
0
投票

获取翻译字符串的基本点符号语法是

filename.key
,因此在这种情况下,正确的函数调用将是
__('messages.my_string')

文档:https://laravel.com/docs/10.x/localization#retriving-translation-strings

© www.soinside.com 2019 - 2024. All rights reserved.