我不知道我在做什么错。我在resources / lang / de / de.json中有它,但是以某种方式它不起作用...
我用
进行了测试Route::get('/', function () {
app()->setLocale('de');
echo __('good');
dd(app()->getLocale());
return view('welcome');
});
我得到:
good
"de"
我在做什么错了?
答案 0 :(得分:1)
那不是翻译的工作原理;您不能只提供一个字符串并期望得到有效的翻译。您需要正确定义和引用它们。
在resources/lang
中,默认情况下,您应该有一个文件夹en
,其中可以包含任意数量的文件。对于您的情况,请为general.php
添加一个,并添加以下内容:
<?php return [
"good" => "good"
];
现在,添加一个相应的de
文件夹和文件(resources/lang/de/general.php
):
<?php return [
"good" => "gut"
];
现在,在调用__("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"
注意:每当翻译失败时,它都会在字面上回显您尝试翻译的内容,因此app()->setLocale("es); echo __("general.good");
将回显"general.good"
,因为未定义es.general.good
的翻译文件夹/文件。 / p>
编辑:
意识到我们正在尝试使用转换字符串后,我注意到与示例中提供的路径相比,de.json
的当前路径有些偏离:
/resources/lang/de/de.json
/resources/lang/es.json
似乎在使用翻译字符串时,.json
文件将保存在/resources/lang
目录中,而不会保存在特定于语言的子目录中。