国际化方案
国际化背景
国际化(Internationalization,简称 i18n)是指在软件、网站或应用开发中,使其能够适应不同国家或地区的语言、文化、时间格式、货币符号、法律规范等多样化需求的过程。通过国际化,产品可以更容易地进行本地化(Localization),即根据特定地区的需求进行适应和调整,而无需重新开发整个系统。
国际化的核心目标是设计和构建一个产品,使其能够支持多语言、多地区的使用,并且能够灵活处理各种与地域相关的差异,如文本翻译、日期格式、货币、单位、输入法等。
扩展:
本地化:本地化(Localization, L10n)的核心是将产品适配特定地区的语言、文化、习俗和法律要求,以便为目标市场提供符合当地用户期望的体验。
国际化需要解决的问题
- 语言翻译
- 静态文案(前端静态模板文案)
- 动态文案(服务端下发的动态数据)
- 样式
- 不同的语言文案,长度不一样,容易造成样式混乱
- 图片替换(带有文案的图片)
- 受文化习惯的影响,部分地区使用从右到左的阅读方式
- 文化习惯
- 货币单位
- 时间格式
- 准确的文字翻译,受文化风俗的影响,相同的文字可能蕴含了不同的意思
- 第三方服务
- SDK
- 打包方案
- 编译时
- 运行时
- 如何确定用户所在地区
国际化的一般流程
文案国际化
文案国际化就是将页面中的文案做成可以切换语言,然后用对应语言的文案进行展示,主要是在工程中维护多份语言包(key-value),通过同一个key获取不同语言下对应的 value。
- 提取,将项目中的文档提取出来,生成资源文件 以 key-value的形式维护
- 翻译,由翻译方将文案翻译成不同语言
- 使用,加载资源文件,将文案换成key
使用国际化方案碰到的问题
- 文案使用国际化 Key代替后,难以搜索,文案不直观
- 代码中的中文提取困难
- 无法知道项目中是不是还有未提取的中文文案
可用的框架工具
react-intl
- 基于webpack的
I18N-loader
kiwi
kiwi开源项目地址
问题:
- 已经停止维护,最新的更新是两年前,用户群二维码过期,找不到作者
- 文档内容非常少,拿不到有效信息,连配置文件的说明都没有
react-intl-universal
react-18next
提取工具:
- i8next-scanner
- 解析不了装饰器(@xxx)