将字符串转换为Laravel中的键

And*_*eas 2 laravel blade

我阅读了有关检索翻译字符串的翻译字符串文档,但是不知如何应用。

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

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

小智 8

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

  1. 键包含上下文信息:main-screen.dialog.add-item-button- 您知道这是主屏幕上的按钮。这比使用 string 好得多Add Item
  2. BabelEdit这样的编辑器将键显示为树。这使得编辑翻译的特定子集变得更加容易。使用字符串你很容易得到一个像Abort, Add item, Alabama, Alaska, All, Arizona,..
  3. 您可以对同一文本的不同位置使用不同的翻译。例如,对于表单标签,如果您没有足够的语言空间,您可以创建更短的翻译。
  4. 如果您的主要语言发生变化,您不必更新所有翻译文件。例如,如果您添加决定更改Hello world.Hello world!则不必更新所有文件。


And*_*eas 6

我终于理解了这个概念。在其中,resources/lang您为每种语言创建一个翻译JSON文件,例如:

/resources
    /lang
        /de.json
        /es.json
Run Code Online (Sandbox Code Playgroud)

如果您未使用设置语言,则无需创建en.json文件,因为en它将是默认语言App::setLocale()

de.json:

{
     "I love programming.": "Ich mag programmieren."
}
Run Code Online (Sandbox Code Playgroud)

es.json:

{
     "I love programming.": "Me encanta programar."
}
Run Code Online (Sandbox Code Playgroud)

接下来,您在控制器中通过设置语言App::setLocale();,现在有了有趣的部分。在视图中,您仅包含JSON的键,例如

{{ __('I love programming.') }}

并根据您的本地化,Laravel将自动加载正确的翻译。


Bas*_*Bas 1

消息(您可以选择)是翻译文件的名称。

对于每种语言,您可以在 lang 文件夹中创建一个目录。西班牙语是es。

{{ trans('messages.cool') }}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我希望这有帮助...