⚠️国际化开发注意事项

181 阅读2分钟

时区问题

时间戳没有时区问题,一般存储时间时会使用时间戳进行存储。

时区时间

如北京时间为东八区的时间

如果前端在显示时间时,是服务端直接返回的时间字符串,那么这个时间很有可能就固定是某一个时区的时间。即使在不同的地区也可能看见相同的时间。对于这种,通常在显示时都需要标明北京时间xxx。

设备本地时间

设备本地时间即是根据时间戳,前端进行转换的对应时区的时间。

这种情况,一般传输的时间为时间戳格式。在前端进行格式化展示时,会转换成对应时间,因此在不同的时区,那么显示的格式化后的时间就会不一样。

case

  1. 当客户端不在东八区时,客户端传给服务端使用时间戳格式上传。服务端返回时进行了格式话字符串处理,这种情况就会出现“时间差”。因为当服务器在国内时,时间戳转换成时间字符串时,会按照东八区进行转换。这样渲染的时间跟当时上传的时间就表现上不一样了。

多语言问题

对于国际化开发来讲,多语言适配是肯定需要做的事情了。对于前端实现上,多语言切换已经有很多方案了。

实现方案

  1. 服务端适配多语言

对于一些动态信息(由服务端返回)。这里一般采用服务端进行多语言适配。那么,前端所做的就需要在请求接口时,带上当前的语言环境标识即可。

  1. 前端获取语言环境
  • 对于 pc 上,通常可以通过 navigator.language / navigator.languages 获取当前语言环境。
  • 对于 移动端 H5,一般客户端会设置 Navigator.userAgent 带上语言标识 Language/en ProductType/rc Region/CN NebulaX/1.0.0。