4.5 KiB
React Native 国际化指南
编辑器原生版本涉及两种类型的字符串:
- 在网页和原生平台共同使用的字符串
- 仅限原生平台使用的字符串
对于第一类字符串,其翻译流程与网页版本遵循相同的操作指南,但第二类字符串需要您自行提供翻译方案。
提取仅限原生平台使用的字符串
要识别这类字符串,您可以使用位于 packages/react-native-editor/bin/extract-used-strings.js 的 extract-used-strings 脚本生成 JSON 对象,该对象包含所有被引用的字符串及其使用平台和引用文件信息。格式示例如下:
{
"gutenberg": {
"<字符串>": {
"string": 字符串值,
"stringPlural": 包含复数形式的字符串值,[可选]
"comments": 给译者的注释,[默认值为空字符串]
"reference": 包含引用该字符串的源文件路径的数组,
"platforms": 包含字符串使用平台的数组,可选值为 "android" | "ios" | "web"
},
...
},
"其他域插件": {
...
},
...
}
该命令还支持传入额外插件参数,适用于编辑器生成的 React Native 包包含其他插件的情况。
需要注意的是,该 JSON 对象包含所有已使用的字符串,因此要识别仅限原生平台使用的字符串,您需要自行编写脚本/流程进行提取。这可以通过遍历字符串并过滤掉包含 "web" 平台的字符串来实现。
NPM 命令
提取已使用字符串:
npm run native i18n:extract-used-strings -- "$PWD/used-strings.json"
注意: 需要传入绝对路径,否则会以 packages/react-native-editor 作为相对路径的根目录
提取包含额外插件的已使用字符串:
npm run native i18n:extract-used-strings -- "$PWD/used-strings.json" "域插件-1" <插件1源路径> "域插件-2" <插件2源路径> ...
提供自有翻译(针对仅限原生平台使用的字符串)
获取原生平台使用的字符串列表后,需要对字符串进行翻译。但此过程不在原生版本支持范围内,需要您自行提供翻译方案。
通过编辑器初始化时传递的 translations 初始属性注入翻译数据:
由于移动客户端集成方案具有特异性且实现方式多样,本文不赘述如何通过 translations 初始属性集成翻译数据。但需确保通过该属性提供翻译,因为编辑器会负责将其与内置翻译进行合并。
注意: 与编辑器内置字符串相匹配的翻译将被覆盖。
获取翻译文件(针对跨平台使用的字符串)
翻译文件本质上是包含每个字符串翻译键值对的 JSON 对象。这些内容从 translate.wordpress.org 获取,该网站存储了 WordPress 及 Gutenberg 等插件的翻译数据。
这些文件可缓存至指定文件夹并进行优化。同时会生成作为导入入口点的索引文件。
获取的翻译文件包含插件所有可翻译字符串,包括编辑器原生版本未使用的字符串。但可通过已使用字符串 JSON 文件过滤未引用的字符串来减小文件体积。
默认情况下,在安装依赖项时,如果缓存不存在,可能会下载未优化的 Gutenberg 翻译文件并存放于 i18n-cache 文件夹。
编辑器初始化时会导入这些翻译文件中的字符串(参考),这些字符串将与通过 translations 初始属性提供的额外翻译进行合并。
NPM 命令
获取未优化翻译:
npm run native i18n:fetch-translations -- "gutenberg" <输出路径>
注意: 需要传入绝对路径,否则会以 packages/react-native-editor 作为相对路径的根目录
获取优化翻译:
npm run native i18n:fetch-translations -- "gutenberg" <输出路径> <已使用字符串文件>