我不知道我做错了什么。我有它在 resources/lang/de/de.json 但不知怎的它就是不起作用......
我用它测试了
Route::get('/', function () {
app()->setLocale('de');
echo __('good');
dd(app()->getLocale());
return view('welcome');
});
Run Code Online (Sandbox Code Playgroud)
我得到:
good
"de"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
翻译并不完全是这样的。您不能只提供一个字符串并期望对其进行有效的翻译。您需要正确定义和引用它们。
在 中resources/lang,默认情况下您应该有一个文件夹en,其中可以包含任意数量的文件。根据您的情况,为 添加一个general.php,内容如下:
<?php return [
"good" => "good"
];
Run Code Online (Sandbox Code Playgroud)
现在,添加相应的de文件夹和文件(resources/lang/de/general.php):
<?php return [
"good" => "gut"
];
Run Code Online (Sandbox Code Playgroud)
现在,当调用__("general.good")(或trans("general.good"),取决于 Laravel 版本)时,根据您当前的情况,locale您应该得到"good"或"gut":
// Default locale is `en` unless overridden
echo __("general.good"); // "good"
app()->setLocale("de");
echo __("general.good"); // "gut"
Run Code Online (Sandbox Code Playgroud)
注意:每当翻译失败时,它都会逐字回显您尝试翻译的任何内容,因此app()->setLocale("es); echo __("general.good");会回显,因为未定义"general.good"翻译文件夹/文件。es.general.good
编辑:
在意识到我们正在尝试使用翻译字符串后,我注意到与示例中提供的路径相比,当前路径de.json有点偏离:
/resources/lang/de/de.json
/resources/lang/es.json
Run Code Online (Sandbox Code Playgroud)
似乎使用翻译字符串时,.json文件要保存在/resources/lang目录中,而不是保存在特定于语言的子目录中。
| 归档时间: |
|
| 查看次数: |
6597 次 |
| 最近记录: |