Vue3

最近更新时间:2025-09-12 18:14:53

我的收藏

概述

UIKit Vue3 组件库提供了完整的国际化(i18n)解决方案,基于 i18next 构建,支持多语言切换,默认支持以下语言:
en-US - 英语(美国)默认为英语
zh-CN - 简体中文

快速开始

基础配置

请使用 UIKitProvider 包装您的应用,并配置语言选项:
<template>
<UIKitProvider language="zh-CN">
<YourApp />
</UIKitProvider>
</template>

<script setup lang="ts">
import { UIKitProvider } from '@tencentcloud/chat-uikit-vue3';
import YourApp from './YourApp.vue';
</script>

在组件外切换语言

<template>
<div>
<button @click="setLang('zh-CN')">中文</button>
<button @click="setLang('en-US')">English</button>
<div>当前的语言是: {{ lang }}</div>
<UIKitProvider
:language="lang"
theme="light"
>
<YourApp />
</UIKitProvider>
</div>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import { UIKitProvider, ConversationList } from '@tencentcloud/chat-uikit-vue3';
import YourApp from './YourApp.vue';

type Language = 'en-US' | 'zh-CN';

const lang = ref<Language>('zh-CN');

const setLang = (language: Language) => {
lang.value = language;
};
</script>

在组件内切换语言

在组件内可以使用 useUIKit Hook 访问国际化功能。
<template>
<div>
<div>当前的语言是: {{ language }}</div>
<div>{{ t('MessageInput.enter') }}</div>
<button @click="setLanguage('en-US')">English</button>
<button @click="setLanguage('zh-CN')">中文</button>
</div>
</template>

<script setup lang="ts">
import { useUIKit } from '@tencentcloud/chat-uikit-vue3';

const { t, language, setLanguage } = useUIKit();
</script>

多语言支持/修改语言词条/新增语言

展示如何使用多语言功能:
<script lang="ts" setup>
import { UIKitProvider, useUIKit } from '@tencentcloud/chat-uikit-vue3';
import YourApp from './YourApp.vue';

const customLanguageResources = [
// 替换现有词条
{
lng: 'zh-CN',
translation: {
MessageInput: {
send: '我要发送', // 默认是"发送"
},
},
},
// 新增一种语言
{
lng: 'fr',
translation: {
MessageInput: {
send: 'Je veux envoyer',
},
},
},
];
</script>

<template>
<UIKitProvider language="fr" theme="light">
<YourApp />
</UIKitProvider>
</template>

实践示例 —— 语言检测与持久化

<template>
<UIKitProvider
:language="language"
:language-resources="customResources"
>
<YourApp />
</UIKitProvider>
</template>

<script setup lang="ts">
import { ref, watch } from 'vue';
import { UIKitProvider } from '@tencentcloud/chat-uikit-vue3';
import YourApp from './YourApp.vue';

type SupportedLanguage = 'en-US' | 'zh-CN';

// 智能语言检测函数
const detectLanguage = (): SupportedLanguage => {
// 1. 优先使用保存的语言设置
const saved = localStorage.getItem('language') as SupportedLanguage;
if (saved) return saved;
// 2. 自动检测浏览器语言
const browserLang = navigator.language;
if (browserLang.startsWith('zh')) return 'zh-CN';
else return 'en-US';
// 3. 默认回退
return 'auto';
};

// 初始化语言
const language = ref<SupportedLanguage>(detectLanguage());

// 监听语言变化并持久化
watch(language, (newLang) => {
localStorage.setItem('language', newLang);
console.log(`语言已切换为: ${newLang}`);
}, { immediate: true });
</script>

注意事项

1. 提供者位置:UIKitProvider 建议用于即时通讯所有组件的上层。
2. 语言资源:自定义语言资源会与内置资源合并,相同 key 会覆盖内置资源。
3. 类型安全:使用 TypeScript 时,确保传入的配置符合类型定义。

相关文档

交流与反馈

如遇任何问题,可联系 官网售后 反馈,享有专业工程师的支持,解决您的难题。