Kibana 仓库外部插件的本地化

编辑

Kibana 仓库外部插件的本地化

编辑

要为您的插件引入本地化,请使用我们的 i18n 工具创建 ID 和默认消息。然后,您可以将这些 ID 和相应的默认消息提取到本地化 JSON 文件中,供 Kibana 在运行您的插件时使用。

向您的插件添加本地化

编辑

您必须在插件的根目录添加一个 translations 目录。此目录将包含 Kibana 使用的翻译文件。

.
├── translations
│   ├── en.json
│   ├── ja-JP.json
│   └── zh-CN.json
└── .i18nrc.json

使用 Kibana i18n 工具

编辑

为了简化本地化过程,Kibana 提供了以下功能的工具

  • 验证所有翻译是否都包含可翻译的字符串,并从模板中提取默认消息
  • 验证翻译文件并将其集成到 Kibana 中

要使用 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 消息

编辑

检查 i18n 执行以下操作

  • 检查所有现有标签是否存在违规行为。
  • .i18nrc.json 中获取翻译,并将其与提取和验证的消息进行比较。

    • 检查未使用的翻译。如果您删除了具有相应翻译的标签,则还必须从翻译文件中删除该标签。
    • 检查不兼容的翻译。如果您从现有字符串中添加或删除新参数,则还必须从翻译文件中删除该标签。

要检查您的 i18n 翻译,请运行以下命令

node scripts/i18n_check --fix --include-config ../kibana-extra/myPlugin/.i18nrc.json

在 UI 中实现 i18n

编辑

Kibana 依赖于 ReactJS,并且需要在不同的环境(浏览器和 NodeJS)中进行本地化。国际化引擎与框架无关,并且可以在 Kibana 的所有部分(ReactJS 和 NodeJS)中使用。

为了简化 React 中的国际化,使用 React-intl 为 React 构建了围绕 I18n 引擎的额外抽象层。

用于原生 JavaScript 的 i18n
编辑
import { i18n } from '@kbn/i18n';

export const HELLO_WORLD = i18n.translate('hello.wonderful.world', {
  defaultMessage: 'Greetings, planet Earth!',
});

完整详细信息在此

用于 React 的 i18n
编辑

要在 React 中本地化字符串,请使用 FormattedMessagei18n.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 的更多信息,请使用以下链接