i18n-overseas README
Features
插件介绍
背景
针对已有/新建项目,存在多语言内容需要被翻译,常规流程是逐个找到需要被翻译的内容,替换为国际化标识如 $t('key'),并在 locales 语言包中新增相应的 key 和文案,人工查找替换较为困难,费时费力且容易错漏。当前插件可以辅助查找 hard code 以及一键写入 key 到语言包中。
使用
使用插件之前需插件处于 visible 状态
在侧边栏 treeview 可以看见三个菜单,显示当前文件的检测结果
- 待翻译的 Hard Code
- Hard Code 黑名单
- Hard Code 白名单
点击的子菜单,可以跳转到项目中对应的位置
插件面板
插件图标
Hard Code 检测规则
- 变量/对象属性默认为非 hard code
- 当变量名/对象属性等于 title、message、description 时,识别为 hard code
- 对象属性默认非 hard cod,
- 对象属性名包含 title、message、description 时,识别为 hard code
- 对象属性等于 label,识别为 hard code
- 模板字符串,其他规则同上变量
- 但不识别拥有国际化标识的部分,即使变量名等于 title 时
- JSX 组件属性默认非 hard code
- 当属性名包含 title、message、description、text、tips 时,识别为 hard code
- 当属性名等于 title 时,识别为 hard code
- JSXText 默认识别为 hard code
- 当只包含非语言字符时,如 &¥,识别为非 hard code
- 函数参数、return 返回值、JSX Children 中的表达式,都默认识别为 hard code
- 以下场景识别为非 hard code
- 函数名等于 console、require、import
- 只含非语言字符如&¥
- 只含数字
- 只含字母和下划线,且中间至少含有一个下划线"_"
- 只含小写字母、数字、"."、"_"、"-"
- 只含大写字母、数字、"."、"_"、"-"
- 内容为小驼峰
- 其他未覆盖的场景,均默认不识别
黑名单
在检测 Hard Code 出现错误时,鼠标悬浮在”错误“ Hard Code 上,点击快速修复,选择"该内容不需要翻译,添加黑名单"
白名单
在检测 Hard Code 出现错误时,鼠标划选代码(字符串、模板字符串需要包含引号),点击将 [''] 标记为 Hard Code,选择 hard code 的场景类型
场景类型说明:
js-string
- 普通字符串如
"name"
,或模板字符串name{value}
jsx-attribute-string
jsx-text
插件指令
插件配置
{
"i18n-overseas.rules.detectVariableIdContain": {
"type": "array",
"default": [],
"description": "检测规则,当变量包含关键字时识别为 hard code"
},
"i18n-overseas.localesPath": {
"type": "string",
"default": "",
"description": "存放语言包 locales 的路径"
},
"i18n-overseas.sourceLanguage": {
"type": "string",
"default": "zh-CN",
"description": "设置语言来源,设置后转换 hard code 自动将 key 填入该语言包"
},
"i18n-overseas.internationalizationID": {
"type": "string",
"default": "formatMessage",
"description": "国际化标识"
},
"i18n-overseas.detectRules": {
"type": "object",
"properties": {
"ObjectPropertyOnly": {
"type": "array",
"items": {
"type": "string"
}
},
"ObjectPropertyInclude": {
"type": "array",
"items": {
"type": "string"
}
},
"ObjectPropertyExclude": {
"type": "array",
"items": {
"type": "string"
}
},
"ObjectPropertyExcludeOnly": {
"type": "array",
"items": {
"type": "string"
}
},
"VariableIdentifierOnly": {
"type": "array",
"items": {
"type": "string"
}
},
"VariableIdentifierInclude": {
"type": "array",
"items": {
"type": "string"
}
},
"VariableIdentifierExclude": {
"type": "array",
"items": {
"type": "string"
}
},
"VariableIdentifierExcludeOnly": {
"type": "array",
"items": {
"type": "string"
}
},
"JsxAttributeOnly": {
"type": "array",
"items": {
"type": "string"
}
},
"JsxAttributeInclude": {
"type": "array",
"items": {
"type": "string"
}
},
"FunctionNameOnly": {
"type": "array",
"items": {
"type": "string"
}
},
"FunctionNameInclude": {
"type": "array",
"items": {
"type": "string"
}
},
"FunctionNameExclude": {
"type": "array",
"items": {
"type": "string"
}
},
"FunctionNameExcludeOnly": {
"type": "array",
"items": {
"type": "string"
}
}
},
"default": {},
"description": "国际化标识"
}
}