


UIKitProvider: this is the unified container for theme and language settings. It should wrap the root level of your application. Any theme or language changes made from any child node are applied globally.<template><UIKitProvider :theme="initialTheme" :language="initialLanguage"><router-view /></UIKitProvider></template><script setup lang="ts">import { ref } from 'vue';import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';// Load last user preference, or fallback to light theme and browser languageconst initialTheme = ref(localStorage.getItem('tuiRoom-theme') || 'light');const initialLanguage = ref(localStorage.getItem('tuiRoom-language') || '');</script>
initialLanguage is empty, UIKitProvider automatically detects the browser language. Chinese browsers will show Chinese, English browsers will show English—no extra setup needed.theme property of UIKitProvider:<UIKitProvider theme="dark"><ConferenceMainView /></UIKitProvider><script setup>import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';import { ConferenceMainView } from '@tencentcloud/roomkit-web-vue3';</script>
useUIKit() API from any child component:import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';const { theme, setTheme } = useUIKit();function toggleTheme() {const next = theme.value === 'dark' ? 'light' : 'dark';setTheme(next);// Save preference for next visitlocalStorage.setItem('tuiRoom-theme', next);}
<UIKitProvider :theme="{ themeStyle: 'light', primaryColor: '#FF6B35' }"><ConferenceMainView /></UIKitProvider>
#RRGGBB. Formats like #RGB, rgb(), or hsl() are not supported.setTheme():const { setTheme } = useUIKit();setTheme({ themeStyle: 'light', primaryColor: '#07C160' });
backgroundColor property. UIKitProvider will automatically derive up to 10 background shades for areas like the top bar, bottom bar, popups, and input fields, according to the brightness hierarchy of the current mode.<UIKitProvider :theme="{ themeStyle: 'dark', backgroundColor: '#1a1a2e' }"><ConferenceMainView /></UIKitProvider>
textColor property. RoomKit will automatically generate three levels of text color (primary, secondary, and tertiary) and apply them to titles, descriptions, hints, and other text elements:<UIKitProvider :theme="{ themeStyle: 'light', textColor: '#1a2742' }"><ConferenceMainView /></UIKitProvider>
Level | Element | Light Mode Opacity | Dark Mode Opacity |
Primary | Name, Title | 90% | 93% |
Secondary | Status, Description | 55% | 55% |
Tertiary | Hint, Placeholder | 40% | 30% |
import { conference, BuiltinWidget } from '@tencentcloud/roomkit-web-vue3';conference.setWidgetVisible({ [BuiltinWidget.ThemeWidget]: false });
import { conference } from '@tencentcloud/roomkit-web-vue3';import MyThemeToggle from './MyThemeToggle.vue';conference.registerWidget({id: 'my-theme-toggle',zone: { pc: 'top-left' }, // Specify the render location for MyThemeTogglecomponent: MyThemeToggle,});
useUIKit() to control theme switching:<!-- MyThemeToggle.vue --><script setup lang="ts">import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';const { theme, setTheme } = useUIKit();const toggle = () => {const next = theme.value === 'dark' ? 'light' : 'dark';setTheme(next);localStorage.setItem('tuiRoom-theme', next);};</script><template><button @click="toggle">{{ theme === 'dark' ? 'Dark Theme' : 'Light Theme' }}</button></template>
ConferenceMainViewH5 (mobile view) does not include a built-in theme switch button. We recommend managing theme and language state at the App.vue level, so users can select their interface language before entering the room, and their selection persists after entry.<template><UIKitProvider :theme="customTheme" :language="lang"><ConferenceMainView /></UIKitProvider></template><script setup lang="ts">import { ref } from 'vue';import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';import { ConferenceMainView } from '@tencentcloud/roomkit-web-vue3';const customTheme = ref({themeStyle: 'light',primaryColor: '#07C160', // Vibrant green for buttons, links, selected statesbackgroundColor: '#F2FAF5', // Light green background; auto-derives colors for top bar, popups, inputstextColor: '#122B1C', // Deep forest green text; generates primary/secondary/tertiary levels});const lang = ref('zh-CN');</script>
language property to UIKitProvider. RoomKit currently supports 'zh-CN' (Simplified Chinese) and 'en-US' (English):<UIKitProvider language="en-US"><ConferenceMainView /></UIKitProvider>
setLanguage() from any child component. The UI updates immediately:import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';const { language, setLanguage } = useUIKit();function toggleLanguage() {const nextLang = language.value === 'zh-CN' ? 'en-US' : 'zh-CN';setLanguage(nextLang);// Save preference for next visitlocalStorage.setItem('tuiRoom-language', nextLang);}
import { i18next } from '@tencentcloud/uikit-base-component-vue3';i18next.addResourceBundle('en-US', 'translation', {'Room.TemporaryMeeting': 'Temporary Channel', // Previously "Temporary Room"'Room.End': 'End Room', // Previously "End"'Participant.Title': 'Participant', // Previously "Member"}, true, true);
main.ts so the overrides take effect before any page renders.@tencentcloud/roomkit-web-vue3/es/i18n/zh-CN/index.mjs in the dependency package.Prefix | Scope |
Room.* | Enter/exit room text, error messages, dialogs. |
Microphone.* | Microphone-related. |
Camera.* | Camera-related. |
ScreenShare.* | Screen sharing. |
Setting.* | Settings panel. |
Participant.* | Participant list. |
RoomNotifications.* | In-room notifications. |
RoomChat.* | Chat functionality. |
RoomInvitation.* | Room invitation-related. |
i18next.addResourceBundle(), then use setLanguage() to switch languages.// main.tsimport { i18next } from '@tencentcloud/uikit-base-component-vue3';i18next.addResourceBundle('ko-KR', 'translation', {'Room.End': '종료','Room.LeaveRoom': '나가기','Microphone.Mute': '음소거','Camera.Start': '카메라 켜기',// Refer to the full zh-CN key list for additional keys...}, true, false);
@tencentcloud/roomkit-web-vue3/es/i18n/zh-CN/index.mjs in the dependency package.setLanguage() from any child component within <UIKitProvider> to switch languages dynamically:import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';const { setLanguage } = useUIKit();// Switch to JapanesesetLanguage('ko-KR');// Save preference for next visitlocalStorage.setItem('tuiRoom-language', 'ko-KR');
import { conference, BuiltinWidget } from '@tencentcloud/roomkit-web-vue3';// Hide the built-in buttonconference.setWidgetVisible({ [BuiltinWidget.LanguageWidget]: false });
import { conference } from '@tencentcloud/roomkit-web-vue3';import MyLanguageToggle from './MyLanguageToggle.vue';// Register your custom componentconference.registerWidget({id: 'my-language-toggle',zone: { pc: 'top-right' }, // Specify the render location for MyLanguageTogglecomponent: MyLanguageToggle,});
useUIKit() to control language switching:<!-- MyLanguageToggle.vue --><script setup lang="ts">import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';const { language, setLanguage } = useUIKit();const toggleLanguage = () => {// Switch between en-US and ko-KRconst nextLang = language.value === 'en-US' ? 'ko-KR' : 'en-US';setLanguage(nextLang);// Save preference to persist after refreshlocalStorage.setItem('tuiRoom-language', nextLang);};</script><template><button @click="toggleLanguage"><span v-if="language === 'en-US'" lang="ko">한국어</span><span v-else lang="en">English</span></button></template>
ConferenceMainViewH5 (mobile view) does not include a built-in language switch button. We recommend managing theme and language state at the App.vue level, so users can select their interface language before entering the room, and their selection persists after entry.primaryColor, but button colors did not change?primaryColor only accepts a 6-digit hexadecimal string in the format #RRGGBB (e.g., #FF6B35). Formats like #RGB, rgb(), or hsl() are not supported.setLanguage()?setLanguage('ja-JP') has no effect?i18next.addResourceBundle() or component binding is run before you call setLanguage(). We strongly recommend registering language packs during the initialization phase in main.ts.localStorage each time you call setTheme or setLanguage, and reading from local cache during App.vue initialization:const initialTheme = ref(localStorage.getItem('tuiRoom-theme') || 'light');const initialLanguage = ref(localStorage.getItem('tuiRoom-language') || '');
Apakah halaman ini membantu?
Anda juga dapat Menghubungi Penjualan atau Mengirimkan Tiket untuk meminta bantuan.
masukan