Kibana 仓库之外插件的本地化
要为您的插件引入本地化,请使用我们的 i18n 工具来创建 ID 和默认消息。 然后,您可以将这些带有相应默认消息的 ID 提取到本地化 JSON 文件中,供 Kibana 在运行您的插件时使用。
您必须在插件的根目录添加一个 translations
目录。 此目录将包含 Kibana 使用的翻译文件。
.
├── translations
│ ├── en.json
│ ├── ja-JP.json
│ └── zh-CN.json
└── .i18nrc.json
为了简化本地化过程,Kibana 提供了以下功能的工具
- 验证所有翻译是否具有可翻译的字符串,并从模板中提取默认消息
- 验证翻译文件并将它们集成到 {kib} 中
要使用 Kibana i18n 工具,请创建一个包含以下配置的 .i18nrc.json
文件
paths
。 从中提取 i18n 翻译 ID 的目录。exclude
。 在解析路径时要排除的文件列表。translations
。 可以在其中找到 JSON 本地化的翻译列表。
{
"paths": {
"myPlugin": "src/ui",
},
"exclude": [
],
"translations": [
"translations/zh-CN.json",
"translations/ja-JP.json"
]
}
一个 Kibana .i18nrc.json
示例是 这里。
有关 i18n 工具的完整文档,请参见这里。
要从您的插件中提取默认消息,请运行以下命令
node scripts/i18n_extract --output-dir ./translations --include-config ../kibana-extra/myPlugin/.i18nrc.json
这会在 translations
目录中输出一个 en.json
文件。 要本地化其他语言,请克隆该文件并翻译每个字符串。
检查 i18n 会执行以下操作
检查所有现有标签是否存在违规。
从
.i18nrc.json
获取翻译,并将它们与提取和验证的消息进行比较。- 检查未使用的翻译。 如果您删除具有相应翻译的标签,则还必须从翻译文件中删除该标签。
- 检查不兼容的翻译。 如果您从现有字符串添加或删除新参数,则还必须从翻译文件中删除该标签。
要检查您的 i18n 翻译,请运行以下命令
node scripts/i18n_check --fix --include-config ../kibana-extra/myPlugin/.i18nrc.json
Kibana 依赖于 ReactJS,并且需要在不同的环境(浏览器和 NodeJS)中进行本地化。 国际化引擎与框架无关,可以在 Kibana 的所有部分(ReactJS 和 NodeJS)中使用。
为了简化 React 中的国际化,使用 React-intl 为 React 构建了 I18n 引擎的附加抽象。
import { i18n } from '@kbn/i18n';
export const HELLO_WORLD = i18n.translate('hello.wonderful.world', {
defaultMessage: 'Greetings, planet Earth!',
});
完整详细信息请参见这里。
要在 React 中本地化字符串,请使用 FormattedMessage
或 i18n.translate
。
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
export const Component = () => {
return (
<div>
{i18n.translate('xpack.someText', { defaultMessage: 'Some text' })}
<FormattedMessage id="xpack.someOtherText" defaultMessage="Some other text">
</FormattedMessage>
</div>
);
};
完整详细信息请参见这里。
要了解有关 i18n 工具的更多信息,请参见i18n 开发工具。
要了解有关在 UI 中实现 i18n 的更多信息,请使用以下链接