React项目国际化
背景问题及带来思考
1.语言翻译
- 项目前期建立时,仅考虑支持中文,未考虑支持多语言版本(前期决策很关键,对一个旧工程做国际化改造是十分痛苦的)
- 翻译方式: 手动翻译(准确性高,但是耗时)、 借助开放平台跑自动化脚本(准确性和语义会打一定折扣,效率高)
2.map表维护
- 一个文件维护(文件太大, 可能会对页面加载速率带来一定影响, 但是对于自动化脚本翻译方便)
- 多个文件维护(拆发了词表, 并根据页面动态加载词表, 对页面加载友好, 但是可能会增大维护成本, 自动化脚本处理也会带来一定问题)
3.样式问题
- 不同语言的文本长度不一样会造成样式错乱(这里暂时未处理)
解决方案
集成react-intl
例子:
1 | import React from 'react' |
react-intl本身不支持动态加载, 我们需要自己实现
基于react-intl的动态加载高阶组件实现
1 | import React, { PureComponent, Fragment } from 'react'; |
基于开放API的nodejs自动化翻译工具实现
1.基于开放api接口的可配置性实现
2.错误记录文件,结果记录文件,日志
3.可扩展性,目前基于百度API实现,通过同一套配置如何集成更多开放翻译API