Localization

插件可以在lang 插件目录的子目录。插件的本地化文件会自动注册。后端用户界面菜单、表单标签等自动支持本地化字符串 - 如果您提供本地化密钥而不是真实字符串,系统将尝试从本地化文件加载它。在其他情况下,您需要加载本地化字符串使用 API.

NOTE:用于翻译前端内容,有插件可以用 以此目的。

本地化目录和文件结构

下面是插件的 lang 目录的示例:

📂 plugins
 ┗ 📂 acme
   ┗ 📂 todo              <=== Plugin directory
     ┗ 📂 lang            <=== Localization directory
       ┣ 📂 en            <=== Language directory
       ┃ ┗ 📜 lang.php    <=== Localization file
       ┗ 📂 fr
         ┗ 📜 lang.php

lang.php 文件应定义并返回任意深度的数组,例如:

<?php

return [
    'app' => [
        'name' => 'Winter CMS',
        'tagline' => 'Getting back to basics'
    ]
];

validation.php 文件具有类似的结构lang.php 并用于指定您的自定义验证 语言文件中的消息,例如:

<?php

return [
    'required' => 'We need to know your xxx!',
    'email.required' => 'We need to know your e-mail address!',
];

访问本地化字符串

本地化字符串可以用Lang 班级。它接受的参数是本地化密钥字符串,由插件名称、本地化文件名和从文件返回的数组中本地化字符串的路径组成。下一个示例加载app.name 来自 plugins/acme/blog/lang/en/lang.php 文件的字符串(语言设置为locale 中的参数config/app.php 配置文件):

echo Lang::get('acme.blog::lang.app.name');

您可以将数组作为第二个参数传递:

echo Lang::get('acme.blog::lang.app.test', ['key1' => $value_1, 'key2' => $value_2]);

该键将在本地化字符串中找到并替换为它的值。此类情况的示例本地化字符串:

'app' => [
    'test' => 'Text text text :key1 text text :key2 text.',
],

覆盖本地化字符串

系统用户可以在不更改插件文件的情况下覆盖插件本地化字符串。这是通过将本地化文件添加到lang 目录。例如,覆盖的 lang.php 文件acme/blog 插件,您应该在以下位置创建文件:

📂 lang                 <=== App localization directory
 ┗ 📂 en                <=== Language directory
   ┗ 📂 acme            <=== Plugin / Module directory
     ┗ 📂 blog          <===^
       ┗ 📜 lang.php    <=== Localization override file

该文件可以只包含您要覆盖的字符串,无需替换整个文件。例子:

<?php

return [
    'app' => [
        'name' => 'Winter CMS!'
    ]
];
豫ICP备18041297号-2