此处定义的语言字符串将仅在后端面板中加载。要翻译前端内容,请访问主题本地化文章。
插件可以在 lang 子目录中包含本地化文件。插件本地化文件使用 JSON 格式,并在后台面板中被系统自动检测到。在后台用户界面菜单、表单标签等地方原生支持使用本地化字符串。
应用程序的默认语言存储在 config/app.php 配置文件中的 locale 配置选项中。您可以自由修改此值以满足您应用程序的需求。每个用户都可以通过 用户菜单 → 后端偏好设置 来设置他们偏好的 locale 设置。
您可以在 PHP 中检查当前语言 通过 App::getLocale 方法并设置当前语言 通过 App::setLocale 该方法将语言代码作为第一个参数。
App::getLocale();
App::setLocale('fr');下方是插件的 lang 目录。
├── plugins
| └── acme
| └── todo
| └── lang
| ├── en.json ← 本地化文件
| └── fr.json ← 本地化文件
使用 JSON 文件进行本地化是首选的翻译方法,其中字符串使用该字符串的“默认”翻译作为键。例如,如果您的应用程序有法语翻译,您应该创建一个 lang/fr.json 文件。
{
"I love programming.": "j'adore programmer"
}Laravel 提供一种基于 PHP 的翻译方法,作为使用 JSON 的受支持替代方案。查看 Laravel 本地化文章 以了解更多信息。
:::
本地化字符串可以通过 __() 辅助函数加载,传入您字符串的默认翻译。
echo __('I love programming.');通过将一个数组作为第二个参数传递,可以在翻译字符串中替换参数。每个参数都以 : 字符为前缀。
echo __(':name loves programming.', ['name' => 'Jeff']);不同语言可以有各种复杂的复数规则。
使用 | 字符,你可以区分字符串的单数和复数形式。
{
"There is one apple|There are many apples": "Il y a une pomme|Il y a beaucoup de pommes"
}更复杂的复数规则可以指定针对多个数值范围的翻译字符串。
{
"{0} There are none|[1,19] There are some|[20,*] There are many": "..."
}该 trans_choice 函数用于处理复数形式的值。
echo __('There is one apple|There are many apples', 3);系统用户可以覆盖插件本地化字符串,而无需修改插件文件。这通过在 lang 目录中添加本地化文件来完成。例如,要覆盖法语翻译,您应该在以下位置创建文件:
├── app
| └── lang
| └── fr.json ← 覆盖文件
文件可以只包含您想要覆盖的字符串,无需替换整个文件。示例:
{
"I love programming.": "Coding is the best!"
}某些插件可能附带它们自己的基于 PHP 的语言文件。
您可以在相同位置覆盖这些文件。
在 JSON 文件中使用完整的语言键,例如,以覆盖 rainlab.blog::lang.post_label 值。
{
"rainlab.blog::lang.post_label": "Article"
}您也可以使用嵌套文件夹结构,以 PHP 格式覆盖文件。例如,插件名为 Acme.Blog 将文件放置在 lang/acme/blog/en/lang.php。
├── app
| └── lang
| └── acme ← 插件作者
| └── todo ← 插件名称
| └── en
| └── lang.php ← 覆盖文件
你可以在 PHP 中通过使用 Lang::set 方法来覆盖语言字符串。它将语言键和新的翻译值作为参数。
Lang::set('I love programming.', 'Coding is the best!');默认情况下,这将覆盖当前的语言环境,第三个参数可以指定一个显式的语言环境。以下示例替换了法语的值。
Lang::set('I love programming.', 'Le codage est le meilleur!', 'fr');October CMS 使用一个名为 Crowdin 的服务,以更好地管理常用语言的翻译。它还使用 Google 翻译 API 对所有其他语言执行自动化机器翻译。如果你发现 October CMS 中有缺失或不正确的翻译,请按照以下说明操作。
您可以使用下面的链接,检查 Crowdin 项目是否支持您的语言。此服务允许您使用精简的界面贡献翻译。
如果您的语言未在此页面显示,请按照下面的 GitHub 说明进行操作。语言会添加到 Crowdin,当我们注意到某种语言在 GitHub 上变得更加活跃时。
您可以访问 GitHub 仓库 以使用拉取请求建议您的语言更新。语言文件位于各个模块中,因此您可能需要检查多个文件才能找到正确的语言字符串。在此示例中,我们将使用 nl 语言代码修改荷兰语,并且我们知道该字符串位于 Tailor 模块中。
在文件中你将看到左侧是英文版本,右侧是荷兰语版本,例如:
{
"Manage Entries": "Invoer beheren",
"Create :name Entry": "Maak :name invoer"
}When making the update, only modify the right side which contains the translated value. Some values may contain variables such as :name and these should be left intact. Once completed, click the Commit changes button to submit a new Pull Request. It will be reviewed by the team and included in subsequent releases.
如果语言键不存在或您找不到它,您可以联系我们寻求帮助。