本地化

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

注意: 为了翻译前端内容,可以使用的这个插件

本地化目录和文件结构

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

  1. plugins/
  2. acme/
  3. todo/ <=== Plugin directory
  4. lang/ <=== Localization directory
  5. en/ <=== Language directory
  6. lang.php <=== Localization file
  7. fr/
  8. lang.php

lang.php文件应该定义并返回数组,例如:

  1. <?php
  2. return [
  3. 'app' => [
  4. 'name' => 'OctoberCMS',
  5. 'tagline' => 'Getting back to basics'
  6. ]
  7. ];

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

  1. <?php
  2. return [
  3. 'required' => 'We need to know your xxx!',
  4. 'email.required' => 'We need to know your e-mail address!',
  5. ];

访问本地化字符串

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

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

覆盖本地化字符串

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

  1. lang/ <=== App localization directory
  2. en/ <=== Language directory
  3. acme/ <=== Plugin/Module directory
  4. blog/ <===^
  5. lang.php <=== Localization override file

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

  1. <?php
  2. return [
  3. 'app' => [
  4. 'name' => 'OctoberCMS!'
  5. ]
  6. ];