小程序国际化方案

4 阅读1分钟

2024-03-18 创建于墨问

小程序官方的方案是

github.com/wechat-mini…

这个方案是使用 gulp 来构建 wxs 函数,不推荐使用,原因是:

  1. 所有 i18n 文本放在一起,会占用小程序主包体积
  2. 修改 i18n 文本后,必须执行 gulp 重新生成,无法热更新立即预览,开发效率低
  3. 无法适配小程序的 skyline 模式
  4. 官方多年不维护了

下面说说如何自己实现一个国际化方案呢?

  1. 配合小程序分包,每个页面定义 2 个 i18n 文本,分别是 js 文件和 wxs 文件

  2. 页面导航栏标题

首先移除页面 json 配置里的 navigationBarTitleText

方式1:引入 js 文件翻译,使用 wx.setNavgationTitle 设置
方式2:引入 wxs 文件翻译,使用 navigation-bar 组件设置

  1. 页面/组件 wxml 里的数据,引入 wxs 文件翻译

  2. 页面/组件 js 里的数据,引入 js 文件翻译

  3. 当前微信的语言,可以在系统信息获取到 systemInfo.language,值为 zh-CN、en-US 等

  4. 语言的切换方式:

方式1: 跟随微信的语言,目前无法监听,切换后需要用户自己重新进入小程序
方式2: 用户手动设置,设置后提示用户,用户同意后使用 wx.restartMiniProgram重启小程序(推荐)