采用的是vue3+setup,自定义国际化配置,所以我的语言文件名按照官方文档要求都带uni-app前缀,结果配置完成,发现不生效,排查不到原因。
根目录下创建locale文件,其中index.js文件内容:
import { createI18n } from 'vue-i18n';
import en from './uni-app.en.json';
import zhHans from './uni-app.zh-Hans.json';
import zhHant from './uni-app.zh-Hant.json';
// 创建i18n实例
console.log(uni.getLocale());
const i18n = createI18n({
locale: uni.getLocale() || 'zh-Hans', // 获取当前设备语言,默认为中文简体
messages: {
en,
'zh-Hans': zhHans,
'zh-Hant': zhHant,
},
legacy: false, // vue3中需要设置为false,以使用组合式API
});
export default i18n;
在main.js中导入
import { createSSRApp } from 'vue'
import App from './App'
import i18n from './locale/index.js'
export function createApp() {
const app = createSSRApp(App)
app.use(i18n)
return {
app
}
}
在页面中使用:
<view class="login_box_header_username">
{{t('Username')}}
</view>
import { useI18n } from 'vue-i18n';
const { locale,t } = useI18n();
console.log(t('Username'))// !!!应该显示:用户名,结果却是Username
3 个回复
DCloud_UNI_JBB
我来试下
DCloud_UNI_JBB
我刚刚用hbuilderx创建了一个测试国际化的项目,api那里我是按照你的写法测试的
1***@qq.com (作者)
我也在示例项目测试了,发现只要更改zh-Hans.json文件名,将其改为uni-app.zh-Hans.json就会出现相同错误
2025-04-14 15:29
1***@qq.com (作者)
重点在于我采用的是自定义国际化语言,也就是语言文件都要加uni-app前缀,
如果自动适配语言不满足你的需求,比如需要预置的5种语言外的更多语言。那么可以使用自定义方案。在指定目录创建指定文件,用同名词条来替换,语言地区代码请遵循 BCP47 规范。
项目根目录支持 locale 目录,locale/uni-app.语言地区代码.json,如:uni-app.en.json,uni-app.zh-Hans.json,uni-app.zh-Hant.json
2025-04-14 15:34
DCloud_UNI_JBB
回复 1***@qq.com: 不需要吧,你不是自定义的页面内的国际化吗?username这种也不内置啊
2025-04-14 15:39
DCloud_UNI_JBB
https://uniapp.dcloud.net.cn/tutorial/i18n.html#%E8%87%AA%E5%8A%A8%E9%80%82%E9%85%8D%E6%89%8B%E6%9C%BA%E6%88%96%E6%B5%8F%E8%A7%88%E5%99%A8%E8%AF%AD%E8%A8%80 文档这里写了样的国际化文件才会命名为 uni-app.en.json 这样的格式
1***@qq.com (作者)
针对这点我有些疑惑,我的项目要适配数十种语言,那么我的语言配置文件名要不要加uni-app前缀?
2025-04-14 15:41
1***@qq.com (作者)
按照官方文档的意思,如果内置的5种语言不够用,所以替换同名词条,加上前缀名uni-app。我的理解应该没有问题吧?
2025-04-14 15:45
DCloud_UNI_JBB
回复 1***@qq.com: 你要是想改uniapp内置的一些国际化,比如 showModal 的取消按钮文本 uni.showModal.cancel 这种,你才需要以 uni-app 开头。否则的话,都是你个人项目的国际化内容,比如 username,打开弹窗,您好等等这类词汇,正常 en.json 就行了
2025-04-14 15:46
1***@qq.com (作者)
回复 DCloud_UNI_JBB: 好的。我明白了
2025-04-14 15:47