标签:多语言 i18n iplas
#背景
应泰方要求,运营系统、网上商城以及移动端服务平台等项目都要做国际化,支持英文、泰文等多国语言。故研讨国际化方案对项目进行国际化改造。
##1.后端
关键:使用java.util.Locale类判断地区,处理国际化差异
项目 | 解决方案 |
---|---|
静态配置文件 | 处理成zh_CN.properties(中文需要处理ASCII编码格式)和th_TH.properties版本,使用java.util.ResourceBundle根据地区读取 |
错误提示 | 中文翻译成泰文,处理成中文和泰文2个错误枚举类,根据地区选择一个枚举类 |
日期 | 使用java.util.DateFormat类及其子类SimpleDateFormat根据地区处理 |
数字、货币、百分比 | 使用java.util.NumberFormat类根据地区处理 |
##2.前端
关键:i18n.properties
项目 | 解决方案 |
---|---|
配置文件 | 配置*_i18n.properties 国际字典,用以多国语言翻译 |
静态文字 | 使用*i18n国际化插件匹配字典重新赋值(预估工作量相当大) |
动态数据中的文字 | 后端处理后发送到前端 |
样式 | 不同语言文案长度不一样造成的样式错乱,对样式要做适配性修改(预估工作量相当大),先统一处理英文版本,再适配其它语言 |
图片 | 例如帮助指引等,替换泰文版新图 |
第三方服务SDK | 运营系统中暂时没有 |
数字、货币单位 | 使用阿拉伯数字,货币单位使用฿,要增加货币格式化工具函数处理 |
日期、时间 | 使用泰国当地时间 |
###国际化插件选择
前端处理国际化的插件总类繁多,不同的框架各有不同。比如vue有vue-i18n,jquery有 jquery-i18n,构建层面有i18n-webpack-plugin等等。且不同国际化插件语法各不相同,学习起来有一定的时间成本,维护起来也不方便。对于公司来说,项目肯定不止一个,使用的技术框架也不尽相同,如果能有一个通用、易用、好用的的国际化插件统一使用维护那是再好不过了。
既然是通用,便要支持各种技术框架,类似vue-i18n这些配合指定框架的插件便不大适用了。当然,直接vue + vue-i18n这样的固定搭配也是可以