此处定义的语言字符串仅会在后端面板中加载。有关翻译前端内容,请访问主题本地化文章。
插件可以在 lang 子目录内部拥有本地化文件。 插件本地化文件使用 JSON 格式,并由系统在后端面板中自动检测。 使用本地化字符串被原生支持在后端用户界面菜单、表单标签、等等。
你的应用程序的默认语言存储在 config/app.php 配置文件中的 locale 配置选项中。你可以自由修改此值以满足你的应用程序的需求。每个用户都可以通过 用户菜单 → 后端偏好设置 来设置他们偏好的语言环境。
你可以在 PHP 中使用 App::getLocale 方法来检查活跃语言,并使用将语言代码作为第一个参数的 App::setLocale 来设置活跃语言。
App::getLocale();
App::setLocale('fr');下面是插件的语言目录示例。
├── 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 说明操作。当 GitHub 上某个语言变得更加活跃时,我们会将其添加到 Crowdin。
您可以访问 GitHub 上的仓库 以通过拉取请求为您的语言建议更新。语言文件位于各个模块中,因此您可能需要检查多个文件才能找到正确的语言字符串。在此示例中,我们将使用 nl 语言代码修改荷兰语,并且我们知道该字符串位于 Tailor 模块中。
在文件中,你将看到左侧为英文版本,右侧为荷兰语版本,例如:
{
"Manage Entries": "Invoer beheren",
"Create :name Entry": "Maak :name invoer"
}进行更新时,只修改右侧其中包含翻译后的值。某些值可能包含变量,例如 :name,这些变量应保持不变。完成后,点击 Commit changes 按钮以提交新的 Pull Request。团队将对其进行审查,并将其包含在后续版本中。
如果语言键不存在或您找不到它,您可以联系我们寻求帮助。