概述
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 时,确保传入的配置符合类型定义。
相关文档
交流与反馈