# 多语言适配

  • 开发者工具版本要求: ≥ 1.06.2312122(建议使用最新的 nightly 开发者工具)。
  • 当前可支持 App 名称、隐私信息访问许可描述、隐私弹窗内容以及启动页的多语言适配。

# 一、使用步骤

# 1.1 下载工具并创建文件夹

  • 下载最新 nightly 开发者工具

  • 如果是存量多端项目,在项目目录中新建文件夹用于放置不同语言的配置文件(建议建在项目根目录,可随其他代码一起 push 到 git 仓库)。

  • 如果是全新刚升级的多端项目,则开发者工具默认已经为开发者创建 i18n 文件夹,并且生成了 base.json 以及默认将 Name 以及适配文件的文件夹填充。

# 1.2 创建基准配置文件

  • 如果是存量多端项目,需手动在步骤 1 的 文件夹里创建 base.json ( 这个是基准文件,会被用在没有设置国际化的其他语言、国家、地区上)。

# 1.3 创建其他语言配置文件

  • json 文件的命名规范是:BCP 47 (需要注意 iOS 中因为系统原因无法使用 zh 需要使用 zh-Hans 或 zh-Hant)

  • 创建其他语言的 json 文件,常见语言对应的 json 文件名:

    语言 json 文件名
    简体中文 zh.json(iOS 为 zh-Hans.json 或 zh-Hant.json)
    繁体中文(香港) zh-Hk.json
    繁体中文(台湾) zh-TW.json
    英文 en.json
    法语 fr.json
    德语 de.json
    俄语 ru.json
    西班牙语 es.json
    日语 ja.json
    韩语 ko.json
    阿拉伯语 ar.json
  • 并在 json 中按照以下格式编写国际化文本(以配置 App 名称为例子)。

    {
        "ios": {
            "name": "xx" 
        },
        "android": {
            "name": "yy"
        },
        "common": {
            "someDesc": "zz"
        }
    }
    

注意:其中相同字段国际化读取时的覆盖关系优先级为:zh-Hk.json > zh-Hans.json > zh.json > base.json

# 1.4 project.miniapp.json 完成多语言适配

  • 配置多语言适配的文件夹路径。

  • 前往 project.miniapp.json,在需要进行多语言适配的的字段(如:名字、隐私信息访问许可描述)以 %i18n_key% 的形式填入,例如:%name%、%someDesc%

# 1.5 隐私提示框多语言适配示例

  • 可在 i18n文件夹中继续创建privacy文件夹放置不同语言版本的隐私提示窗内容。

  • 然后在 i18n 文件夹里各语言的 json 文件中配置 privacy 内容,例如

    {
        "ios": {
            "name": "xx" ,
            "privacy":"i18n/privacy/fr.json"
        },
        "android": {
            "name": "yy"
        },
        "common": {
            "someDesc": "zz"
        }
    }
    
  • 最后,在 project.miniapp.json 中配置 Android 和 iOS 对应的 privacy template 的路径。

# 1.6 启动页多语言适配示例

注意:开发者工具需 ≥ 1.06.2407092

  • 在国际化文件中添加 {splashscreen} 字段,值为启动页图片地址,例如 base.json 中的配置示参考。

  • 在 project.miniapp.json 文件中,以 %{splashscreen}% 格式使用国际化启动页图片。

# iOS 注意事项

  • 启动页图片有 2 个阶段,阶段 1 的图片会在第一次 APP 启动时根据此时用户的语言设置确定,之后再切换语言也不会改变了。阶段 2 的图片会时刻跟随用户的语言设置进行改变。

# 1.7 权限描述配置多语言适配

Android 的权限描述以及 iOS 的隐私信息访问许可描述均支持多语言适配,使用 %{xxxx}% 进行配置即可(参考上面 %name% 的实现)

# 1.8 网络异常页配置多语言适配

  • 当用户处于无网络或者未允许将网络授权给 App 时,会进入一个网络无权限或者网络未开启的说明页,如下截图:
  • 如需对该页面进行多语言适配,可参考下方的说明进行使用(注意,开发者工具版本需要 > 1.06.2412242 )
  • 配置LOCALES,即,国际化文件增加了保留字 LOCALES,用于声明通用国际化配置文件的路径。

{
  "ios": {
    "name": "xx",
    "LOCALES": "path/to/common/locales/config/file/ios.json"
  },
  "android": {
    "name": "yy",
    "LOCALES": "path/to/common/locales/config/file/android.json"
  },
  "common": {
    "name": "zz",
    "LOCALES": "path/to/common/locales/config/file.json"
  }
}

  • LOCALES指向的文件,目前支持网络异常落地页国际化,和iOS网络拒绝提示页国际化,需按照下面指定的格式编写。

{
  "networkError": {
    "tips": "检测到网络权限可能未开启",
    "confirm": "前往设置",
    "solution": {
      "describe": "查看解决办法",
      "confirm": "知道了",
      "title": "网络设置参照方法",
      "words": "1.点击前往设置,查看是否允许应用使用蜂窝数据。\n2.检查设备的\"设置\"-\"无线局域网\"设置,查看是否有可接入的无线局域网信号。\n3.检查设备是否启用了蜂窝数据(启用后运营商可能会收取数据通信费用)。\n4.如果你已接入无线局域网络:请检查你所连接的网络是否已接入互联网,或该网络是否已允许你的设备访问互联网。"
    }
  },
  "weakNetworkError": {
    "tips": "当前网络连接不可用,请确保手机正常联网后重试",
    "confirm": "立即重试",
    "retry": "重试中......",
    "solution": {
      "describe": "查看解决办法",
      "confirm": "知道了",
      "title": "您的设备未启用移动网络、 Wi-Fi 网络或网络连接异常",
      "words": "如需要连接到互联网,请参考以下几点:\n检查手机中的无线局域网设置,查看是否有可接入的无线局域网信号。\n检查手机是否已接入移动网络,并且手机没有被停机。\n如果您已接入无线局域网:\n请检查您所连接的无线局域网热点是否已接入互联网,或该热点是否已允许您的设备访问互联网。\n"
    },
    "detailedLog": {
      "describe": "错误详细日志",
      "confirm": "知道了"
    }
  }
}