Skip to content
Candy Zheng edited this page Aug 1, 2017 · 4 revisions

阅读材料

数据转换依赖 I18n

** 使用 Internationalization API built-in to JavaScript. ** 目前数据转化方法还没有完全实现,遇到一个需求增加一个。

i18n generator 自动生成 i18n

主项目

从 'utils/createi18n' 引入 i8n

开发时在需要写文字的地方

  1. 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 规范
    }

其他 api

i18n.get(settings.general.main${object}:=default value {obj}) 此方法会返回当前语言的 string,需要搭配 props 改变通知 react。

momentjs

对于时间信息的变更,当语言配置变更则 moment会全局的切换时间。我们开发时直接用moment即可

关于用户行为监测埋点

大部分监测需求需要获取按钮等各种和用户交互的地方的dom,只通过className是不行的,我们在 i18n 生成的span component中绑一个 id,此id就为i18n的引用key,对于测试或者监控段可以方便的获取相应的dom id,开发者也不需要再去管理这些内容

APIs

Clone this wiki locally