i18next-checker
是一个可以在应用程序中轻松检测翻译字符串的工具。当在应用程序中使用i18n框架时,翻译字符串很容易出现错别字或语法错误。因此,i18next-checker
工具基于规则检查器,可以方便的检测这些错误。
安装
安装可以在命令行中运行下面的命令:
npm install @wertarbyte/i18next-checker
使用
首先,在
package.json
文件的scripts
中添加一行命令:"check-i18n": "i18next-check --config i18next.config.js --files \"src/**/*.@(ts|tsx|js|jsx)\""
该命令将在代码变动时执行,并对i18n文件使用linter校验规则。
创建一个名为
i18next.config.js
的配置文件,并将以下内容添加到该文件中:-- -------------------- ---- ------- -------------- - - ------ - ---------- ----------- ---------- ----------- -- -------------- ------ ------------ ----- ------------ - - -------- ------------------------------------- -------- ------------ ------ -------- -------- -- - -------- ------------------------- -------- ------------ ------ -------- --------- -- - -------- ----------------------------------------- -------- ------------ ------ -------- --------------- - - --
这个文件定义了i18n检查器要检查的文件,并定义了三种检查器规则。
matcher
规则检查需要匹配的字符串,这里的字符串是指翻译用到的字符串。matcher
接受一个正则表达式作为参数。message
规则检查错误后给出的错误提示信息。
接下来,在命令行中执行:
npm run check-i18n
这个命令将会检查所有在配置文件中规定的文件,并返回错误或者警告信息。
可以将其自动化。通过
husky
和lint-staged
可以让i18next-check
在提交代码之前运行。 修改husky
pre-commit
提交钩子, 修改package.json
文件:-- -------------------- ---- ------- - -------- - -------- - ------------- ------------- - -- -------------- - -------------------- - -------------- -------- ----------------- --------- --------- -------- - - - -
将以下配置放到IDE中,以便产生错误时使用
eslint
错误突出显示-- -------------------- ---- ------- -------------- - - ------ - ---------- ----- ----------- ----- ------ ---- -- ---------- --------------------- ---------- - ---------- ----------- -------------------- ----------- ---------- ----------- ----------- ----------- ----------- ---------- -- ---------------- - --------------- - ------ ---- -- -------------- ---- -- ---------- --- -------- - --------- - -------- - -- ------------------ - -------- ------ -- --------- - -------- -------- -- ------- - -------- ------- -- ----------------- ------ ------------- ------ -------------- ------ -- ------------ - - -------- --------- -------- - ---------------------------- - -- - - ------------ -------- -------------- ---- ------ --- --- ------- ------- -- ----- ----------- --- --------------- -------- -- - ------------ ---- -------------- ---- ------ --- --- ------- -------- --- --------------- -------- - - - - -- - -------- ---------- -------- - ---------------------------- - -- - - ------------ -------- -------------- ---- ------ --- --- ------- ------- -- ----- ----------- --- --------------- -------- -- - ------------ ---- -------------- ---- ------ --- --- ------- -------- --- --------------- -------- - - - - -- - -------- --------- -------- - ---------------------------- - -- - - ------------ -------- -------------- ---- ------ --- --- ------- ------- -- ----- ----------- --- --------------- -------- -- - ------------ ---- -------------- ---- ------ --- --- ------- -------- --- --------------- -------- - - -- --------------------------------------------------- - ------ - ------------------- ---- - - - -- - -------- ---------- -------- - ---------------------------- - -- - - ------------ -------- -------------- ---- ------ --- --- ------- ------- -- ----- ----------- --- --------------- -------- -- - ------------ ---- -------------- ---- ------ --- --- ------- -------- --- --------------- -------- - - -- --------------------------------------------------- - ------ - ------------------- ---- - - - -
]
};
-- -------------------- ---- ------- -- ---- ------------- ------ ---- ---- ---------- ----- - - ------- ----- --------- - -- -- - ----- ------- ------------ --------------------------------- -------------------------- ------ -- ------ ------- ----------
如此,当提交代码并在预提交钩子中使用了i18n错误时,将会在 IDE 中出现i18next/no-literal-string
的编译错误显示。这可以让开发者及时发现问题,从而减少代码中的错误引入。
结论
通过使用 i18next-checker
模块,我们在预提交钩子上自动地发现了语言问题,代码的可靠性和可维护性更高。此外,通常情况下,前端JS大部分代码由预处理器或库生成,因此用于预处理器或库的基于规则的检测器将是非常有用的。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60065f70238a385564ab66b6