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!'
]
];