有人可以帮我运行 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”而不是“我的本地化字符串”。
有人可以建议如何解决这个问题吗?我认为官方指南应该更具描述性,以帮助新开发人员创建基本的功能示例。非常感谢。
获取翻译字符串的基本点符号语法是
filename.key
,因此在这种情况下,正确的函数调用将是 __('messages.my_string')
。
文档:https://laravel.com/docs/10.x/localization#retriving-translation-strings