我在Retrieving Translation Strings上阅读了翻译字符串的文档,但不知怎的,我不明白如何应用它。
假设我想在视图posts.index
中呈现消息“我喜欢编程”用英语,德语(“ Ich mag Programmieren ”)或西班牙语(“ Me encanta programar ”),取决于App :: setLocale()设置的本地化。
翻译文件的外观如何?如何设置视图?
答案 0 :(得分:6)
我终于理解了这个概念。在resources/lang
内,您可以为每种语言创建翻译JSON文件,例如: G:
/resources
/lang
/de.json
/es.json
如果您未使用en.json
设置语言,则无需创建en
文件,因为App::setLocale()
将成为默认语言。
de.json:
{
"I love programming.": "Ich mag programmieren."
}
es.json:
{
"I love programming.": "Me encanta programar."
}
接下来,您通过App::setLocale();
在控制器中设置语言,现在就是有趣的部分。在视图中,您只包含JSON的键,e。 G。
{{ __('I love programming.') }}
根据您的本地化,Laravel将自动加载正确的翻译。
答案 1 :(得分:2)
我建议不要使用翻译字符串,而是使用密钥:
main-screen.dialog.add-item-button
- 您知道这是主屏幕上的按钮。这比使用字符串Add Item
要好得多。Abort
,Add item
,Alabama
,Alaska
,All
,Arizona
,...等列表。 LI>
Hello world.
更改为Hello world!
,则无需更新所有文件。 答案 2 :(得分:1)
将您的语言文件存储在resources/lang
中,结构将如下所示。
/resources
/lang
/en
messages.php
/es
messages.php
所有语言文件只返回一个键控字符串数组。例如:
<?php
return [
'welcome' => 'Welcome to our application'
];
然后,您可以定义捕获区域设置并进行设置的路线。像这样
Route::get('welcome/{locale}', function ($locale) {
App::setLocale($locale);
// your code here
});
然后只需使用dot notation
打印{{ __() }}
或使用@lang()
{{ __('messages.welcome') }}
<!-- OR -->
@lang('messages.welcome')
答案 3 :(得分:0)