uni-app 苹果打包国际化APP后 商店上传应用国际化失效 页面内不显示转译后的俄文 显示的是我定义的各字段名称

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app 苹果打包国际化APP后 商店上传应用国际化失效 页面内不显示转译后的俄文 显示的是我定义的各字段名称

产品分类

uniapp/App

开发环境信息

项⽬目创建方式 HBuilderX
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win11
HBuilderX类型 正式
HBuilderX版本号 4.43
手机系统 iOS
手机系统版本号 iOS 18
手机厂商 苹果
手机机型 iphone12
页面类型 vue
vue版本 vue2
打包方式 云端

示例代码

国际化文件定义的字段和俄文:

"goods.addToCart": "В корзину",
"goods.orderNow": "Покупка"

应用内使用国际化的代码:

<button class="cu-btn bg-gradual-blue08 round-left text-bold" @tap="SubmitData('addToCart', 1)">{{$t('goods.addToCart')}}</button>
<button class="cu-btn bg-gradual-blue round-right text-bold" @tap="SubmitData('placeOrder', 1)">{{$t('goods.orderNow')}}</button>

操作步骤

ios上传代码及证书打正式包。打开应用-切换语言-进入商品详情,查看样式。

预期结果

国际化显示正常,页面内显示俄文翻译,而不是我定义的字段名称。

实际结果

页面内显示我定义的字段名称,不显示俄文翻译。

bug描述

当前APP内有国际化功能,可切换中文和俄文,在开发和调试过程中一切正常,于是打苹果包并上传苹果商店审核,审核拒绝原因是因为页面排版问题,查看原因后发现应用国际化失效,页面内显示的是我定义的各字段名称,而不是翻译后的文字。例如“购买”,转为俄文应该为“Покупка”,但是页面里显示的是“goods.orderNow”。如图,图一为排版问题的图片。图二为国际化代码。图三为国际化我定义的字段和俄文翻译。

运行和打Adhoc包都没有问题,打正式包上传商店审核时才出现这个问题!!

图一 图二 图三


1 回复

在处理uni-app打包国际化应用后,上传到App Store发现国际化失效的问题时,通常我们需要确保几个关键步骤已经正确实施。以下是一个简化的代码案例和流程检查,以确保国际化资源正确加载并显示。

1. 确保国际化资源配置正确

首先,确认你的pages.jsonmanifest.json等配置文件中已经正确设置了支持的语言。例如,在manifest.json中:

{
  "mp-weixin": { // 小程序相关配置
    ...
  },
  "app-plus": {
    "name": "yourAppName",
    "distribute": {
      ...
    },
    "usingComponents": true,
    "languages": [
      "zh", // 中文
      "ru"  // 俄文
    ]
  }
}

2. 准备国际化资源文件

staticcommon目录下创建i18n文件夹,并在其中放置不同语言的JSON文件,如ru.json

// static/i18n/ru.json
{
  "home": "Домашняя страница",
  "settings": "Настройки",
  "welcome": "Добро пожаловать"
}

3. 加载并使用国际化资源

在你的Vue组件或页面中,使用uni-app提供的国际化API加载和使用这些资源。在main.js或应用启动时:

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import App from './App'

Vue.config.productionTip = false
Vue.use(VueI18n)

const messages = {
  ru: require('@/static/i18n/ru.json')
}

const i18n = new VueI18n({
  locale: 'ru', // 默认语言
  messages
})

new Vue({
  i18n,
  render: h => h(App)
}).$mount('#app')

4. 在模板中使用国际化文本

在你的Vue组件模板中,使用$t方法来引用国际化文本:

<template>
  <view>
    <text>{{ $t('welcome') }}</text>
    <text>{{ $t('home') }}</text>
    <text>{{ $t('settings') }}</text>
  </view>
</template>

5. 确保打包和发布流程无误

在打包前,清理项目依赖,确保所有资源文件都被正确打包。使用HBuilderX或其他支持uni-app的工具进行打包时,检查打包日志,确保没有资源文件丢失或未被正确包含。

如果以上步骤都确认无误,但问题依旧存在,可能需要检查App Store Connect中的应用信息是否也正确设置了支持的语言,以及是否有其他配置或代码影响到国际化资源的加载。此外,查看控制台日志,检查是否有加载资源失败或语言设置被覆盖的错误信息。

回到顶部