翻译字符串作为Laravel中的键

时间:2017-08-02 03:57:04

标签: laravel blade

我在Retrieving Translation Strings上阅读了翻译字符串的文档,但不知怎的,我不明白如何应用它。

假设我想在视图posts.index中呈现消息“我喜欢编程”用英语,德语(“ Ich mag Programmieren ”)或西班牙语(“ Me encanta programar ”),取决于App :: setLocale()设置的本地化。

翻译文件的外观如何?如何设置视图?

4 个答案:

答案 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)

我建议不要使用翻译字符串,而是使用密钥:

  1. 键包含上下文信息:main-screen.dialog.add-item-button - 您知道这是主屏幕上的按钮。这比使用字符串Add Item要好得多。
  2. BabelEdit这样的编辑器将键显示为树。这样可以更轻松地编辑翻译的特定子集。使用字符串,您最终会得到AbortAdd itemAlabamaAlaskaAllArizona,...等列表。 LI>
  3. 您可以对同一文本的不同位置使用不同的翻译。例如。对于表单标签,如果您没有足够的语言空间,则可以创建较短的翻译。
  4. 如果您的主要语言发生变化,您不必更新所有翻译文件。例如。如果您添加决定将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)

消息(您可以选择)是翻译文件的名称。 对于每种语言,您在lang文件夹中创建一个目录。西班牙语是es。

{{反式(&#39; messages.cool&#39;)}}

enter image description here

我希望这会有所帮助......