如何校验umi max 项目中i18n 对应的key 是否被定义? #12083
Answered
by
fz6m
andyFang94
asked this question in
Q&A
-
有点类似 报告项目中使用的所有i18n对应的key是否有在locales 文件中定义? |
Beta Was this translation helpful? Give feedback.
Answered by
fz6m
Jan 21, 2024
Replies: 1 comment
-
自己写扫描工具去检验吧,比如用 babel 扫 ast 然后找一下,但静态扫描的方法有很多问题,比如使用的方法名字可能不确定,有用别名的,然后 key 也可能是拼接的,比如 另一个方法是运行时去检验,现在默认如果你用了 locales 文案里不存在的 key 的话,控制台会报 React Intl 的错误的,通过有没有这个报错就可以知道用到的 key 是不是都存在了,参考 |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
andyFang94
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
自己写扫描工具去检验吧,比如用 babel 扫 ast 然后找一下,但静态扫描的方法有很多问题,比如使用的方法名字可能不确定,有用别名的,然后 key 也可能是拼接的,比如
${namespace}.a.b
,所以静态的方式有一些限制,要求你的调用都是一模一样的才行,比如你确保所有用到 i18n 的地方都是t('a.b.c')
这样的才可以用 ast 去扫描是否存在。另一个方法是运行时去检验,现在默认如果你用了 locales 文案里不存在的 key 的话,控制台会报 React Intl 的错误的,通过有没有这个报错就可以知道用到的 key 是不是都存在了,参考
locale
的配置,可以自定义这个报错行为,改成alert
等明显的方式也可以,从而确保 key 都是存在的。