Skip to content

如何校验umi max 项目中i18n 对应的key 是否被定义? #12083

Answered by fz6m
andyFang94 asked this question in Q&A
Discussion options

You must be logged in to vote

自己写扫描工具去检验吧,比如用 babel 扫 ast 然后找一下,但静态扫描的方法有很多问题,比如使用的方法名字可能不确定,有用别名的,然后 key 也可能是拼接的,比如 ${namespace}.a.b ,所以静态的方式有一些限制,要求你的调用都是一模一样的才行,比如你确保所有用到 i18n 的地方都是 t('a.b.c') 这样的才可以用 ast 去扫描是否存在。

另一个方法是运行时去检验,现在默认如果你用了 locales 文案里不存在的 key 的话,控制台会报 React Intl 的错误的,通过有没有这个报错就可以知道用到的 key 是不是都存在了,参考 locale 的配置,可以自定义这个报错行为,改成 alert 等明显的方式也可以,从而确保 key 都是存在的。

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by andyFang94
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants