旺仔牛奶
旺仔牛奶
  • 发布:2026-07-16 17:48
  • 更新:2026-07-16 17:48
  • 阅读:28

uni-app 国际化问题配置示例

分类:uni-app

如有更好的解决方法,欢迎大家评论和指正。

  • 目前存在的问题

    1. IOS平台 默认启动图显示名称,会使用回退语言,没有实现国际化配置
    2. 还有目前没有涉及到的国际化,如:uniCloud和Android平台strings 等

  • 项目根目录下 locale 文件夹

    ├── locale  
    │   ├── en.json  
    │   ├── index.js  
    │   ├── // 如果有其他语言,如日语,则添加 ja.json  
    │   ├── uni-app.en.json  
    │   ├── // 如果有其他语言,如日语,则添加 uni-app.ja.json  
    │   ├── uni-app.zh-Hans.json  
    │   ├── uni-app.zh-Hant.json  
    │   ├── zh-Hans.json  
    │   └── zh-Hant.json  

    这里做下简单说明:

    uni-app.*.json 这些文件,决定了手机系统桌面应用名称、默认启动图显示名称和系统默认 tabbar 定义的国际化。

    uni-app.*.json 使用跟官方文档一致 如:%app.name%%privacyDescription.NSBluetoothAlwaysUsageDescription%


    1. index.js

      import en from './en.json'  
      import zhHans from './zh-Hans.json'  
      import zhHant from './zh-Hant.json'  
      // import ja from './ja.json'  
      export default {  
          en,  
          'zh-Hans': zhHans,  
          'zh-Hant': zhHant,  
          // 如果有其他语言,如日语,则添加 ja  
      }  
    2. en.json

      {  
          "tabbar.index": "Home",  
          "tabbar.list": "List",  
          "tabbar.me": "Me",  
      
          // ... 其他字段  
      }  
    3. zh-Hans.json

      {  
          "tabbar.index": "首页",  
          "tabbar.list": "列表",  
          "tabbar.me": "我的",  
      
          // ... 其他字段  
      }  
    4. zh-Hant.json

      {  
          "tabbar.index": "首頁",  
          "tabbar.list": "清單",  
          "tabbar.me": "我的",  
      
          // ... 其他字段  
      }  

    配置应用名称和IOS平台配置隐私权限描述国际化,还有一种方式官方提供的 manifest.json国际化配置【本文章末尾】

    注意: 我试过在uni-app.en.json中把隐私权限描述写到下面ios内打包,没有效果

      // 这里是错误说明,不要这样写,正确写法是下面的 uni-app.en.json 示例  
      {  
          "common": {  
              "app.name": "app name",  
              "app.description": "app description",  
          },  
          "ios": {  
              "privacyDescription":{  
                  "NSBluetoothAlwaysUsageDescription": "Requires access to your Bluetooth to function properly",  
                  "NSBluetoothPeripheralUsageDescription": "Requires access to your Bluetooth to function properly"  
              }  
          },  
          "android": {}  
      }  

    1. uni-app.en.json

      {  
          "common": {  
              "app.name": "app name",  
              "app.description": "app description",  
      
              "privacyDescription.NSBluetoothAlwaysUsageDescription": "Requires access to your Bluetooth to function properly",  
              "privacyDescription.NSBluetoothPeripheralUsageDescription": "Requires access to your Bluetooth to function properly"  
          },  
          "ios": {},  
          "android": {}  
      }  
    2. uni-app.zh-Hans.json

      {  
          "common": {  
              "app.name": "应用名称",  
              "app.description": "应用描述",  
      
              "privacyDescription.NSBluetoothAlwaysUsageDescription": "需要访问您的蓝牙以正常工作",  
              "privacyDescription.NSBluetoothPeripheralUsageDescription": "需要访问您的蓝牙以正常工作"  
          },  
          "ios": {},  
          "android": {}  
      }  
    3. uni-app.zh-Hant.json

      {  
          "common": {  
              "app.name": "應用名稱",  
              "app.description": "應用描述",  
      
              "privacyDescription.NSBluetoothAlwaysUsageDescription": "需要訪問您的藍牙以正常工作",  
              "privacyDescription.NSBluetoothPeripheralUsageDescription": "需要訪問您的藍牙以正常工作"  
          },  
          "ios": {},  
          "android": {}  
      }  
  • manifest.json

  1. 配置 manifest.json 的默认语言 在 manifest.json 中设置 locale 为 "auto",这是跟随系统语言的关键。

    {  
        "name": "%app.name%",  
        "appid": "__your_appid__",  
        "locale": "auto" // 设置为 auto,跟随系统 os 的语言  
        "fallbackLocale" : "en" // 默认回退语言 这个根据自己需求设置  
        // ... 其他配置  
    }  
  2. 配置 android 和 ios 原生平台支持的语言列表 (关键步骤) 这一步在标准基座下由 dcloud 预先完成,但你的应用必须自行配置,否则打包后系统无法识别你的应用支持哪些语言,通常会回退到默认语言 (如英文)【这里不提供详细示例,可以直接看官方文档中的示例】

    {  
        "app-plus" : {  
            "locales": {  
                "en": {}, // 英文  
                "zh": {}, // 中文  (特别注意)  
                "zh-Hans": {}, // 简体中文  
                "zh-Hant": {}, // 繁体中文  
                // 如果有其他语言,如日语,则添加 "ja": {}  
            }  
        }  
    }  

    关于"zh": {} 这个配置说明:

    1. 如果这个"zh": {}不配置,当系统语言是【简体中文】,应用名称和隐私权限描述会回退到【默认语言】,而不是使用【简体中文】-搞不懂为什么
    2. 虽然官方文档语言代码中提到locales下的键名(key)可以取值示例,没有zh-Hanszh-Hant两个键名,但是实际测试中,其可以正常工作,其他键名会回退到【默认语言】,而不是当前【系统语言】
0 关注 分享

要回复文章请先登录注册