uni-app 内置国际化方案说明
uni-app 内置国际化方案说明
uni-app 从 3.1.5 版本开始框架内置组件开始完善国际化支持
- App平台、H5平台 优化 uni.showModal、uni.showActionSheet 等 API 内置国际化支持
- App平台 优化 应用退出提示内置国际化支持
- App平台 优化 uni.scanCode、uni.previewImage 等 API 内置国际化支持
- H5平台 优化 picker、video 组件内置国际化支持
这些组件内置如下语言
- 中文简体 zh-Hans
- 中文繁体 zh-Hant
- 英语 en
- 法语 fr
- 西班牙语 es
组件和接口显示会根据系统语言环境自动切换,未支持的系统语言环境会显示为英文。
uni-app 3.2.5 版本以下当使用 vue-i18n 时,会使用 vue-i18n 设置的语言。
uni-app 3.2.5 版本开始请在 manifest.json 内配置,或者调用 uni.setLocale 进行设置,具体参考 locale.md。
项目 | 信息 |
---|---|
开发环境 | 无 |
版本号 | 3.1.5, 3.2.5 |
项目创建方式 | 无 |
1 回复
在uni-app中,内置国际化方案主要通过uni.getI18nInfoSync
、uni.setLocale
以及配置文件的方式来实现。以下是一个简单的代码案例,用于展示如何在uni-app中实现和应用国际化。
1. 配置国际化资源文件
首先,在项目的static
或assets
目录下创建国际化资源文件,例如en.json
和zh.json
。
en.json
{
"hello": "Hello",
"welcome": "Welcome to our app"
}
zh.json
{
"hello": "你好",
"welcome": "欢迎来到我们的应用"
}
2. 读取并存储国际化资源
在项目的main.js
或某个初始化文件中,读取国际化资源文件,并将其存储在一个全局对象中。
import en from '@/static/en.json';
import zh from '@/static/zh.json';
const i18nResources = {
en,
zh
};
const getCurrentLocale = () => {
// 根据实际情况获取当前语言,这里简单返回'en'作为示例
return uni.getStorageSync('locale') || 'en';
};
const $t = (key) => {
const locale = getCurrentLocale();
return i18nResources[locale][key] || key;
};
Vue.prototype.$t = $t;
3. 设置和应用国际化
在应用启动时或用户更改语言设置时,调用uni.setLocale
来设置当前语言,并通过$t
函数来获取翻译后的文本。
// 在应用启动时设置语言
uni.setLocale({
locale: getCurrentLocale(),
success: () => {
console.log('Locale set to', getCurrentLocale());
}
});
// 示例组件
<template>
<view>
<text>{{ $t('hello') }}</text>
<text>{{ $t('welcome') }}</text>
</view>
</template>
<script>
export default {
mounted() {
// 可以在这里根据用户选择动态更改语言
// uni.setLocale({ locale: 'zh' }); // 切换到中文
}
};
</script>
4. 用户界面更改语言选项
可以在用户界面添加一个语言选择器,让用户能够切换语言。当用户选择语言时,调用uni.setLocale
并更新存储中的语言设置。
// 切换语言的函数示例
const changeLanguage = (locale) => {
uni.setLocale({ locale });
uni.setStorageSync('locale', locale);
};
以上代码案例展示了如何在uni-app中实现和应用国际化方案,包括配置资源文件、读取资源、设置语言以及应用翻译文本。通过这种方式,可以方便地实现应用的国际化支持。