uni-app 国际化中,获取相机相册权限拒绝后提示语一直是英文,如何设置相对应的其他语言?

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

uni-app 国际化中,获取相机相册权限拒绝后提示语一直是英文,如何设置相对应的其他语言?

iOS端

图片

42 回复

你好,可以尝试设置ios操作系统的语言设置


iOS系统语言目前就是越南语,但是权限引导提示是英文

回复 重庆金城武: 好的, 麻烦提供一下最小示例代码的工程demo

回复 BFC: demo在下面

你好,manifest.json 上面可以配置对应的国际化设置 , 详情 uniapp 国际化文档

我配了的,用的uni-app.vi.json命名的,这个命名是不是有问题,越南语

回复 重庆金城武: 你这边把国际化配好的的demo,发一下吧,我看下

回复 BFC: 刚那个demo就是配好的

回复 重庆金城武: 你好, 那个demo manifestjson 里面的locale 字段我看配置的是 en(英文),不是vi

回复 BFC: 没有vi选项,不知道啥情况,麻烦看看呢

回复 重庆金城武: 如果是hbuilderx 打开manifest.json 的话,左侧滑到最下边,一个源码视图,通过源码视图直接改manifest.json的 locale字段, 或者你用其他文本编辑器直接打开manifest.json,就可以看到整个json了

回复 BFC: 我看了 已经是vi了,麻烦帮我看看,但是权限引导提示还是英文

回复 BFC: 老哥还是不行,manifest.json里locale和fallbackLocale都设置成vi了,还是提示的英文

回复 BFC: 系统语言也是越南语

回复 重庆金城武: 好的,我这边看下

你好, 还需配置应用名称及iOS隐私提示语的国际化。 详情情况下面文档 应用名称及ios隐私提示语的国际化
应用云端打包国际化处理
配置完应用的语言后, 需要重新提交打包自定义基座

你好 ios我配置了隐私的国际化处理,麻烦帮我看看权限引导这块的国际化是不是没加上,应该配置哪个字段,图在下面

怎么样老哥,麻烦帮我看看

遇到类似的国际话问题。有些弹窗插件的多语言逻辑写死了,或者是中英文混杂。之前反馈过多次bug,但没有人回复。希望能关注解决一下。

你好,可以发一下bug链接

例如:权限弹窗的title和description中英文混杂,description有多语言配置。另外,启动图也有问题(与设置语言不一致),等等。

好的,稍等

兄弟,能共享一下完整的manifest这个app-plus->locales的多语言配置吗?官方文档只有"ja": {},具体的格式和内容基本靠猜和盲试。

例如:这里按照多语言都是写死每个语言对应的字符串常量值,不能用类似%permission.camera.usage.description%"?

你好,可以尝试在 infoPList字段下面补充以下key

你好,你发的这个事安卓的好像,ios的字段事哪些

回复 重庆金城武: ios的需要去苹果官网查询

你好,我看了下,访问相册相机的提示语我都配了,但是拒绝后 引导开启权限的提示语 ,没找到对应的key

回复 重庆金城武: 无效呀,不管怎么配置,ios权限的提示语都是中文

都是根据系统语言来的,配置的默认语言是en没有效果

回复 3***@qq.com: 提供一下demo工程,我这边看一下

谢谢!启动图片无法国际化的问题也遇到并解决了吗?我当初提的几个bug和截图,https://ask.dcloud.net.cn/question/181293

想问一下这个中文在哪里设置成英文

这个应该是根据系统语言来的吧

在uni-app中实现国际化时,如果相机相册权限拒绝后的提示语一直是英文,可以通过以下步骤来设置相对应的其他语言。这通常涉及到国际化配置文件的创建和使用,以及在请求权限时的提示语动态替换。

首先,确保你已经配置好了uni-app的国际化文件。假设你已经有了以下国际化配置文件结构:

// static/locales/en.json
{
  "permission": {
    "camera_denied": "Camera access denied"
  }
}

// static/locales/zh.json
{
  "permission": {
    "camera_denied": "相机访问被拒绝"
  }
}

接下来,在你的uni-app项目中,确保你已经引入了uni-i18n插件或者自己实现了国际化逻辑。以下是一个简单的国际化实现示例:

// main.js
import Vue from 'vue'
import App from './App'
import VueI18n from 'vue-i18n'
import en from './static/locales/en.json'
import zh from './static/locales/zh.json'

Vue.config.productionTip = false

Vue.use(VueI18n)

const messages = {
  en,
  zh
}

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

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

然后,在你的组件中,当你请求相机权限时,可以使用国际化函数来获取对应的提示语。以下是一个示例:

<template>
  <view>
    <!-- 其他内容 -->
    <button @click="requestCameraPermission">请求相机权限</button>
  </view>
</template>

<script>
export default {
  methods: {
    requestCameraPermission() {
      uni.authorize({
        scope: 'scope.camera',
        success() {
          // 权限授权成功
        },
        fail() {
          // 权限授权失败
          uni.showToast({
            title: this.$t('permission.camera_denied'), // 使用国际化函数
            icon: 'none'
          })
        }
      })
    }
  }
}
</script>

在这个示例中,this.$t('permission.camera_denied')会根据当前设置的语言环境返回对应的提示语。如果你希望用户能够切换语言,你可以在应用中添加一个语言切换的功能,更新i18n.locale的值,例如:

switchLanguage(lang) {
  this.$i18n.locale = lang
}

这样,当用户切换语言后,再次请求相机权限时,就会显示对应语言的提示语了。

回到顶部