-
Notifications
You must be signed in to change notification settings - Fork 152
i18n
** 使用 Internationalization API built-in to JavaScript. ** 目前数据转化方法还没有完全实现,遇到一个需求增加一个。
从 'utils/createi18n' 引入 i8n
开发时在需要写文字的地方
-
i18n`settings.general.main${object}:=default value {obj}`
此方法会返回一个 span component,此 component 已关注语言配置,可实时联动。
保证 app/i18n/ 下有languange文件夹,形如en_US、zh_CN, 并有一个 index.json ["en_US", "zh_CN"] 汇总支持的语言包
运行 yarn i18n 自动生成语言 json 包,并去除代码中:=后的内容,保留 i18n`settings.general.main${object} shape。在开发时则默认会显示:=后的内容,去除后会去找语言包里相应的解释。${}
里为数据参数,例如${{date: new Date(), number: 23}} ,在value 里即可 default value {date} {value} 获得
生成规则: 其中 settings 会 generate 成 app/i18n/language 的目录下的一个 语言包 json 文件。general.main.* 则会在 所有语言的此 json 文件下生成
general: {
main: "default value {obj}", // value 的写法遵从 i18n 规范
}
i18n.get(settings.general.main${object}:=default value {obj}
) 此方法会返回当前语言的 string,需要搭配 props 改变通知 react。
对于时间信息的变更,当语言配置变更则 moment会全局的切换时间。我们开发时直接用moment即可
大部分监测需求需要获取按钮等各种和用户交互的地方的dom,只通过className是不行的,我们在 i18n 生成的span component中绑一个 id,此id就为i18n的引用key,对于测试或者监控段可以方便的获取相应的dom id,开发者也不需要再去管理这些内容