INTEGRITY Документация

Локаль встречи

UI Kit RealtimeKit позволяет настраивать весь текст в интерфейсе видеозвонка. Вы можете адаптировать текст под требования вашей локали.

Эта страница недоступна для iOS, Androidплатформа.

Настройка языкового пакета

Языковой пакет RealtimeKit по умолчанию можно настроить в соответствии с требованиями локали вашего приложения. Вы можете переопределить любую текстовую строку, используемую в компонентах UI Kit.

React Native UI Kit использует объект языкового словаря для хранения всех строк интерфейса. Вы можете переопределить любой ключ, передав частичный словарь в useLanguage() функцию, а затем передайте результат в RtkMeeting компонент через t prop.

Импортируйте языковые утилиты

Языковой пакет RealtimeKit по умолчанию можно импортировать следующим образом:

<script type="module">
	import {
		useLanguage,
		defaultLanguage,
	} from "https://cdn.jsdelivr.net/npm/@cloudflare/realtimekit-ui/dist/esm/index.js";
</script>

Языковой пакет RealtimeKit по умолчанию можно импортировать следующим образом:

import { defaultLanguage, useLanguage } from "@cloudflare/realtimekit-react-ui";

Языковой пакет RealtimeKit по умолчанию можно импортировать следующим образом:

import {
	defaultLanguage,
	useLanguage,
} from "@cloudflare/realtimekit-angular-ui";
import {
	defaultLanguage,
	useLanguage,
} from "@cloudflare/realtimekit-react-native-ui";

Создание собственного языкового пакета

Чтобы заменить стандартную локаль RealtimeKit собственной, создайте пользовательский языковой пакет, расширив defaultLanguage объект и переопределяя нужные ключи:

<body>
	<rtk-meeting id="my-meeting"></rtk-meeting>

	<script type="module">
		import RealtimeKitClient from "https://cdn.jsdelivr.net/npm/@cloudflare/realtimekit@latest/dist/index.es.js";
		import {
			useLanguage,
			defaultLanguage,
		} from "https://cdn.jsdelivr.net/npm/@cloudflare/realtimekit-ui/dist/esm/index.js";

		// Customize RealtimeKit's default locale object
		const myLanguagePack = useLanguage({
			...defaultLanguage,
			mute_all: "Mute All Users",
			leave: "Exit Call",
			join: "Join Now",
		});

		const init = async () => {
			const meeting = await RealtimeKitClient.init({
				authToken: "<participant_auth_token>",
			});

			const meetingEl = document.getElementById("my-meeting");
			meetingEl.meeting = meeting;
			meetingEl.showSetupScreen = true;

			// Pass custom language pack
			meetingEl.t = myLanguagePack;
		};

		init();
	</script>
</body>

useLanguage функция принимает ваш пользовательский объект локали в качестве аргумента и создаёт функцию, которая возвращает значение, связанное с указанным ключом.

import {
	RealtimeKitProvider,
	useRealtimeKitClient,
} from "@cloudflare/realtimekit-react";
import {
	RtkMeeting,
	defaultLanguage,
	useLanguage,
} from "@cloudflare/realtimekit-react-ui";
import { useEffect, useState } from "react";

function App() {
	const [meeting, initMeeting] = useRealtimeKitClient();
	const [authToken, setAuthToken] = useState("<participant_auth_token>");

	// Customize RealtimeKit's default locale object
	const myLanguagePack = useLanguage({
		...defaultLanguage,
		mute_all: "Mute All Users",
		leave: "Exit Call",
		join: "Join Now",
	});

	useEffect(() => {
		if (authToken) {
			initMeeting({
				authToken: authToken,
			});
		}
	}, [authToken]);

	return (
		<RealtimeKitProvider value={meeting}>
			<RtkMeeting showSetupScreen={true} meeting={meeting} t={myLanguagePack} />
		</RealtimeKitProvider>
	);
}

useLanguage хук принимает ваш пользовательский объект локали в качестве аргумента и создаёт функцию, которая возвращает значение, связанное с указанным ключом.

import { Component, OnInit } from "@angular/core";
import RealtimeKitClient from "@cloudflare/realtimekit-angular";
import {
	defaultLanguage,
	useLanguage,
} from "@cloudflare/realtimekit-angular-ui";

@Component({
	selector: "app-meeting",
	template: `
		<rtk-meeting [meeting]="meeting" [t]="myLanguagePack"></rtk-meeting>
	`,
})
export class MeetingComponent implements OnInit {
	meeting: any;
	myLanguagePack: any;

	async ngOnInit() {
		// Customize RealtimeKit's default locale object
		this.myLanguagePack = useLanguage({
			...defaultLanguage,
			mute_all: "Mute All Users",
			leave: "Exit Call",
			join: "Join Now",
		});

		this.meeting = await RealtimeKitClient.init({
			authToken: "<participant_auth_token>",
		});
	}
}

useLanguage функция принимает ваш пользовательский объект локали в качестве аргумента и создаёт функцию, которая возвращает значение, связанное с указанным ключом.

Разверните defaultLanguage объект и переопределите нужные ключи. Передайте результат в RtkMeeting через t prop.

import {
  RtkMeeting,
  defaultLanguage,
  useLanguage,
} from '@cloudflare/realtimekit-react-native-ui';

function App() {
  const myLanguagePack = useLanguage({
    ...defaultLanguage,
    mute_all: 'Silenciar todo',
    leave: 'Salir',
    join: 'Unirse',
    participants: 'Participantes',
    chat: 'Chat',
    settings: 'Configuración',
  });

  return (
    <RtkMeeting
      meeting={meeting}
      t={myLanguagePack}
      showSetupScreen={true}
    />
  );
}

useLanguage функция объединяет ваши переопределения со значениями по умолчанию. Любой ключ, который вы не переопределите, сохранит английское значение по умолчанию.

Используйте пользовательскую локаль с UI-провайдером

Пользовательский языковой пакет также можно передать в компонент провайдера UI при создании собственного интерфейса:

<body>
	<rtk-ui-provider id="ui-provider">
		<!-- Your custom UI components -->
	</rtk-ui-provider>

	<script type="module">
		import RealtimeKitClient from "https://cdn.jsdelivr.net/npm/@cloudflare/realtimekit@latest/dist/index.es.js";
		import {
			useLanguage,
			defaultLanguage,
		} from "https://cdn.jsdelivr.net/npm/@cloudflare/realtimekit-ui/dist/esm/index.js";

		const myLanguagePack = useLanguage({
			...defaultLanguage,
			mute_all: "Mute All Users",
		});

		const meeting = await RealtimeKitClient.init({
			authToken: "<participant_auth_token>",
		});

		const uiProvider = document.getElementById("ui-provider");
		uiProvider.meeting = meeting;
		uiProvider.t = myLanguagePack;
	</script>
</body>
import {
	RealtimeKitProvider,
	useRealtimeKitClient,
} from "@cloudflare/realtimekit-react";
import {
	RtkUIProvider,
	defaultLanguage,
	useLanguage,
} from "@cloudflare/realtimekit-react-ui";
import { useEffect, useState } from "react";

function App() {
	const [meeting, initMeeting] = useRealtimeKitClient();
	const [authToken, setAuthToken] = useState("<participant_auth_token>");

	const myLanguagePack = useLanguage({
		...defaultLanguage,
		mute_all: "Mute All Users",
	});

	useEffect(() => {
		if (authToken) {
			initMeeting({
				authToken: authToken,
			});
		}
	}, [authToken]);

	return (
		<RealtimeKitProvider value={meeting}>
			<RtkUIProvider meeting={meeting} t={myLanguagePack}>
				{/* Your custom UI components */}
			</RtkUIProvider>
		</RealtimeKitProvider>
	);
}
import { Component, OnInit } from "@angular/core";
import RealtimeKitClient from "@cloudflare/realtimekit-angular";
import {
	defaultLanguage,
	useLanguage,
} from "@cloudflare/realtimekit-angular-ui";

@Component({
	selector: "app-meeting",
	template: `
		<rtk-ui-provider [meeting]="meeting" [t]="myLanguagePack">
			<!-- Your custom UI components -->
		</rtk-ui-provider>
	`,
})
export class MeetingComponent implements OnInit {
	meeting: any;
	myLanguagePack: any;

	async ngOnInit() {
		this.myLanguagePack = useLanguage({
			...defaultLanguage,
			mute_all: "Mute All Users",
		});

		this.meeting = await RealtimeKitClient.init({
			authToken: "<participant_auth_token>",
		});
	}
}

Справочник языка по умолчанию

RealtimeKit предоставляет полный языковой пакет по умолчанию со всеми текстовыми строками, используемыми в UI Kit. Вы можете переопределить любой из этих ключей, чтобы настроить текст, отображаемый в интерфейсе встречи.

Ниже приведен полный языковой пакет по умолчанию, предлагаемый RealtimeKit:

{
  "about_call": "About Call",
  "screen": "Screen",
  "camera": "Camera",
  "leave": "Leave",
  "dismiss": "Dismiss",
  "logo": "Logo",
  "page": "Page",
  "more": "More",
  "page.prev": "Previous Page",
  "page.next": "Next Page",
  "layout": "Layout",
  "layout.auto": "Auto Layout",
  "settings": "Settings",
  "file": "File",
  "image": "Image",
  "connection": "Connection",
  "leave_confirmation": "Are you sure you want to leave the call?",
  "cancel": "Cancel",
  "yes": "Yes",
  "(you)": "(you)",
  "you": "You",
  "everyone": "Everyone",
  "to": "To",
  "mute": "Mute",
  "kick": "Kick",
  "pin": "Pin",
  "pinned": "Pinned",
  "accept": "Accept",
  "unpin": "Unpin",
  "pip_on": "Show PiP",
  "pip_off": "Hide PiP",
  "viewers": "Viewers",
  "join": "Join",
  "joined": "Joined",
  "create": "Create",
  "close": "Close",
  "ask": "Ask",
  "type": "Type",
  "activate": "Activate",
  "requests": "Requests",
  "mic_off": "Mic Off",
  "disable_mic": "Disable Mic",
  "mic_on": "Mic On",
  "enable_mic": "Enable Mic",
  "audio": "Audio",
  "test": "Test",
  "minimize": "Hide Tile",
  "maximize": "Show Tile",
  "mute_all": "Mute all",
  "mute_all.description": "Everyone else in the meeting will be muted.",
  "mute_all.header": "Are you sure?",
  "mute_all.allow_unmute": "Allow others to unmute",
  "video_off": "Video Off",
  "disable_video": "Disable Video",
  "video_on": "Video On",
  "enable_video": "Enable Video",
  "video": "Video",
  "offline": "You're offline",
  "offline.description": "Please ensure that you are connected to the internet.",
  "disconnected": "You haven't joined the meeting.",
  "failed": "You've been disconnected",
  "failed.description": "We could not connect you back to the meeting room. Please try rejoining the meeting.",
  "disconnected.description": "Please join the meeting in order to see and interact with other participants.",
  "participants": "Participants",
  "participants.errors.empty_results": "Couldn't find a participant with the specified name or ID.",
  "participants.empty_list": "It looks like nobody is here.",
  "participants.no_pending_requests": "There are no pending requests.",
  "participants.turn_off_video": "Turn off video",
  "polls": "Polls",
  "polls.by": "Poll by",
  "polls.question": "Poll Question",
  "polls.question.placeholder": "What is your poll for?",
  "polls.answers": "Answers",
  "polls.option": "Add an option.",
  "polls.option.placeholder": "Enter an option",
  "polls.results.anon": "Anonymous",
  "polls.results.hide": "Hide results before voting",
  "polls.create": "Create Poll",
  "polls.cancel": "Cancel Poll Creation",
  "polls.empty": "No polls available",
  "polls.errors.question_required": "Question is required.",
  "polls.errors.empty_option": "Empty options not allowed.",
  "screenshare": "Screen Share",
  "screenshare.min_preview": "Minimize Preview",
  "screenshare.max_preview": "Expand Preview",
  "screenshare.shared": "Your screen is being shared.",
  "screenshare.start": "Share Screen",
  "screenshare.stop": "Stop Sharing",
  "screenshare.error.unknown": "An error occurred while starting screenshare.",
  "screenshare.error.max_count": "Maximum screen share limit reached.",
  "plugins": "Plugins",
  "plugins.empty": "No plugins available",
  "perm_denied": "Permission denied by browser.",
  "perm_denied.audio": "Mic Permission denied by browser",
  "perm_denied.video": "Camera Permission denied by browser",
  "perm_denied.screenshare": "Screenshare Permission denied by browser",
  "perm_denied.audio.chrome.message": "In the top navigation bar, click on the icon left to the URL and ensure  'Microphone' permission is checked",
  "perm_denied.video.chrome.message": "In the top navigation bar, click on the icon left to the URL and ensure  'Camera' permission is checked",
  "perm_denied.screenshare.chrome.message": "Under Chrome settings, navigate to 'Privacy and Security > Site Settings > Permissions'. Select 'Screenshare', provide permission and reload this application.",
  "perm_denied.audio.safari.message": "Under Safari settings, navigate to 'Websites > Microphone', provide permission and reload this application.",
  "perm_denied.video.safari.message": "Under Safari settings, navigate to 'Websites > Camera', provide permission and reload this application.",
  "perm_denied.screenshare.safari.message": "Under Safari settings, navigate to 'Websites > Screenshare', provide permission and reload this application.",
  "perm_denied.audio.edge.message": "Under Edge settings, navigate to 'Site Permissions > Microphone', provide permission and reload this application.",
  "perm_denied.video.edge.message": "Under Edge settings, navigate to 'Site Permissions > Camera', provide permission and reload this application.",
  "perm_denied.screenshare.edge.message": "Under Edge settings, navigate to 'Site Permissions > Screenshare', provide permission and reload this application.",
  "perm_denied.audio.microsoft edge.message": "Under Edge settings, navigate to 'Site Permissions > Microphone', provide permission and reload this application.",
  "perm_denied.video.microsoft edge.message": "Under Edge settings, navigate to 'Site Permissions > Camera', provide permission and reload this application.",
  "perm_denied.screenshare.microsoft edge.message": "Under Edge settings, navigate to 'Site Permissions > Screenshare', provide permission and reload this application.",
  "perm_denied.audio.firefox.message": "Under Firefox settings, navigate to 'Privacy and Security > Permissions > Microphone', provide permission and reload this application.",
  "perm_denied.video.firefox.message": "Under Firefox settings, navigate to 'Privacy and Security > Permissions > Camera', provide permission and reload this application.",
  "perm_denied.screenshare.firefox.message": "Under Firefox settings, navigate to 'Privacy and Security > Permissions > Screenshare', provide permission and reload this application.",
  "perm_denied.audio.others.message": "From your browser settings, enable 'Microphone' permissions and reload this application.",
  "perm_denied.video.others.message": "From your browser settings, enable 'Camera' permissions and reload this application.",
  "perm_denied.screenshare.others.message": "From your browser settings, enable 'Screenshare' permissions and reload this application.",
  "perm_sys_denied": "Permission denied by system",
  "perm_sys_denied.audio": "Mic permission denied by system",
  "perm_sys_denied.video": "Camera permission denied by system",
  "perm_sys_denied.screenshare": "Screenshare permission denied by system",
  "perm_sys_denied.audio.macos.message": "Open Apple Menu, Navigate to 'System Settings > Privacy & Security > Microphone'. Allow access to your browser and reload this application.",
  "perm_sys_denied.video.macos.message": "Open Apple Menu, Navigate to 'System Settings > Privacy & Security > Camera'. Allow access to your browser and reload this application.",
  "perm_sys_denied.screenshare.macos.message": "Open Apple Menu, Navigate to 'System Settings > Privacy & Security > Screenshare'. Allow access to your browser and reload this application.",
  "perm_sys_denied.audio.ios.message": "On your iPhone, navigate to 'Settings > Privacy > Microphone', allow access to your browser and reload this application.",
  "perm_sys_denied.video.ios.message": "On your iPhone, navigate to 'Settings > Privacy > Camera', allow access to your browser and reload this application.",
  "perm_sys_denied.screenshare.ios.message": "On your iPhone, navigate to 'Settings > Privacy > Screenshare', allow access to your browser and reload this application.",
  "perm_sys_denied.audio.windows.message": "Go to windows settings, select 'Settings > Privacy > Microphone'. Allow permissions to your browser and reload this application.",
  "perm_sys_denied.video.windows.message": "Go to windows settings, select 'Settings > Privacy > Camera'. Allow permissions to your browser and reload this application.",
  "perm_sys_denied.screenshare.windows.message": "Go to windows settings, select 'Settings > Privacy > Screenshare'. Allow permissions to your browser and reload this application.",
  "perm_sys_denied.audio.android.message": "On your device, navigate to 'Settings > Apps'. Select your browser, allow Microphone permissions and reload this application.",
  "perm_sys_denied.video.android.message": "On your device, navigate to 'Settings > Apps'. Select your browser, allow Camera permissions and reload this application.",
  "perm_sys_denied.screenshare.android.message": "On your device, navigate to 'Settings > Apps'. Select your browser, allow Screenshare permissions and reload this application.",
  "perm_sys_denied.audio.others.message": "Navigate to your system settings. Allow 'Microphone' permissions for your browser and reload this application.",
  "perm_sys_denied.video.others.message": "Navigate to your system settings. Allow 'Camera' permissions for your browser and reload this application.",
  "perm_sys_denied.screenshare.others.message": "Navigate to your system settings. Allow 'Screenshare' permissions for your browser and reload this application.",
  "perm_could_not_start": "Could not capture device.",
  "perm_could_not_start.audio": "Unable to start your Microphone",
  "perm_could_not_start.video": "Unable to start your Camera",
  "perm_could_not_start.screenshare": "Unable to start your Screenshare",
  "perm_could_not_start.audio.message": "Looks like the system could not capture your microphone. Please restart your device or upgrade your browser to fix this.",
  "perm_could_not_start.video.message": "Looks like the system could not capture your camera. Please restart your device or upgrade your browser to fix this.",
  "perm_could_not_start.screenshare.message": "Looks like the system could not capture your screenshare. Please restart your device or upgrade your browser to fix this.",
  "full_screen": "Full Screen",
  "full_screen.exit": "Exit Full Screen",
  "waitlist.header_title": "Waiting",
  "waitlist.body_text": "You are in the waiting room, the host will let you in soon.",
  "waitlist.deny_request": "Deny request",
  "waitlist.accept_request": "Accept request",
  "waitlist.accept_all": "Accept all",
  "stage_request.header_title": "Join Stage Requests",
  "stage_request.deny_request": "Deny request",
  "stage_request.accept_request": "Accept request",
  "stage_request.accept_all": "Accept all",
  "stage_request.deny_all": "Deny all",
  "stage_request.approval_pending": "Pending",
  "stage_request.denied": "Denied",
  "stage_request.request": "Join stage",
  "stage_request.requested": "Requested",
  "stage_request.cancel_request": "Cancel request",
  "stage_request.leave_stage": "Leave stage",
  "stage_request.request_tip": "Request to join the discussion",
  "stage_request.leave_tip": "Leave the stage",
  "stage_request.pending_tip": "Request pending",
  "stage_request.denied_tip": "Rejected request",
  "stage.empty_host": "The stage is empty",
  "stage.empty_host_summary": "You are off stage. You can manage stage request from the participants tab.",
  "stage.empty_viewer": "There is no one on stage",
  "stage.remove_from_stage": "Remove from stage",
  "stage.invited_notification": "has been invited to join stage.",
  "stage.add_to_stage": "Invite to stage",
  "stage.join_title": "Join Stage",
  "stage.join_summary": "You are about to join the stage, your video & audio as shown above will be visible to all participants.",
  "stage.join_cancel": "Cancel",
  "stage.join_confirm": "Join",
  "setup_screen.join_in_as": "Joining as",
  "setup_screen.your_name": "Your name",
  "stage.reconnecting": "Reconnecting...",
  "recording.label": "REC",
  "recording.indicator": "This meeting is being recorded.",
  "recording.started": "This meeting is being recorded.",
  "recording.stopped": "Recording for this meeting has been stopped.",
  "recording.paused": "Recording for this meeting has been paused.",
  "recording.error.start": "Error while starting recording.",
  "recording.error.already_recording": "A recording is already in progress.",
  "recording.error.stop": "Error while stopping recording",
  "recording.error.resume": "Error while resuming recording",
  "recording.start": "Start Recording",
  "recording.stop": "Stop Recording",
  "recording.resume": "Resume Recording",
  "recording.starting": "Starting",
  "recording.stopping": "Stopping",
  "recording.loading": "Loading",
  "recording.idle": "Record",
  "audio_playback": "Play Audio",
  "audio_playback.title": "Allow Audio Playback",
  "audio_playback.description": "In order to play audio properly on your device, click the button below.",
  "breakout_rooms": "Breakout Rooms",
  "breakout_rooms.room_config_header": "Create Breakout",
  "breakout_rooms.join_breakout_header": "Join Breakout",
  "breakout_rooms.empty": "Nobody here yet.",
  "breakout_rooms.delete": "Delete Room",
  "breakout_rooms.switch": "Switch",
  "breakout_rooms.main_room": "Main Room",
  "breakout_rooms.shuffle_participants": "Shuffle Participants",
  "breakout_rooms.deselect": "Deselect",
  "breakout_rooms.selected": "selected",
  "breakout_rooms.num_of_rooms": "No. of Rooms",
  "breakout_rooms.approx": "Approx.",
  "breakout_rooms.participants_per_room": "participants/room",
  "breakout_rooms.division_text": "when equally divided.",
  "breakout_rooms.start_breakout": "Start Breakout",
  "breakout_rooms.close_breakout": "Close Breakout",
  "breakout_rooms.update_breakout": "Update Breakout",
  "breakout_rooms.discard_changes": "Discard Changes",
  "breakout_rooms.room": "Room",
  "breakout_rooms.rooms": "Rooms",
  "breakout_rooms.room_name": "Room Name",
  "breakout_rooms.edit_room_name": "Edit Room Name",
  "breakout_rooms.save_room_name": "Save Room Name",
  "breakout_rooms.add_room": "Add",
  "breakout_rooms.add_room_brief": "Add Room",
  "breakout_rooms.select_all": "Select all",
  "breakout_rooms.unassign_all": "Unassign all",
  "breakout_rooms.assign": "Assign",
  "breakout_rooms.assign_participants": "Assign Participants",
  "breakout_rooms.none_assigned": "No participants assigned yet",
  "breakout_rooms.drag_drop_participants": "Drag and drop participants",
  "breakout_rooms.click_drop_participants": "Click here to assign",
  "breakout_rooms.status.assign_multiple": "Assign multiple participants at once by clicking and selecting them",
  "breakout_rooms.status.select_room": "Select a room to assign",
  "breakout_rooms.ephemeral_status.participants_assigned": "Participants assigned",
  "breakout_rooms.ephemeral_status.participants_assigned_randomly": "Participants assigned randomly",
  "breakout_rooms.ephemeral_status.changes_discarded": "Changes discarded",
  "breakout_rooms.confirm_modal.start_breakout.header": "Start breakout rooms?",
  "breakout_rooms.confirm_modal.start_breakout.content": "Once started, all participants will be moved to their assigned rooms.",
  "breakout_rooms.confirm_modal.start_breakout.cancelText": "No, go back",
  "breakout_rooms.confirm_modal.start_breakout.ctaText": "Yes, start",
  "breakout_rooms.confirm_modal.close_breakout.header": "Close breakout rooms?",
  "breakout_rooms.confirm_modal.close_breakout.content": "All breakout rooms will be closed & participants will be moved back to the main room.",
  "breakout_rooms.confirm_modal.close_breakout.ctaText": "Yes, close breakout",
  "breakout_rooms.move_reason.started_msg": "Starting breakout rooms...",
  "breakout_rooms.move_reason.started_desc": "You are being moved to your assigned room",
  "breakout_rooms.move_reason.closed_msg": "Closing Breakout rooms...",
  "breakout_rooms.move_reason.closed_desc": "You are being moved back to the main room",
  "breakout_rooms.move_reason.switch_room": "Joining Breakout Room...",
  "breakout_rooms.move_reason.switch_main_room": "Joining Main Room...",
  "breakout_rooms.all_assigned": "All participants have been assigned",
  "breakout_rooms.empty_main_room": "No more participants in the main room.",
  "breakout_rooms.leave_confirmation": "Are you sure you want to leave the call? You are in a breakout room, you can join the main room too.",
  "breakout_rooms.leave_confirmation.main_room_btn": "Go back to main room",
  "ai": "AI",
  "ai.meeting_ai": "MeetingAI",
  "ai.home": "Home",
  "ai.transcriptions": "Transcriptions",
  "ai.personal": "Personal",
  "ai.caption_view": "Caption View",
  "ai.chat.tooltip": "This conversation will just be visible to you and not to others in the call.",
  "ai.transcriptions.search_placeholder": "Search by participant name or transcript",
  "ai.transcriptions.no_transcripts_found": "No transcripts found. Try searching for a different participant or transcript.",
  "ai.transcriptions.no_transcripts_yet": "No transcripts yet.",
  "search": "Search",
  "search.could_not_find": "Couldn't find a participant with the specified name or ID.",
  "search.empty": "It looks like nobody is here.",
  "end": "End Meeting",
  "end.all": "End meeting for all",
  "ended": "The meeting ended.",
  "ended.rejected": "Your request to join the meeting was denied.",
  "ended.left": "You left the meeting.",
  "ended.kicked": "You were removed from the meeting.",
  "ended.disconnected": "The call ended because the connection was lost.",
  "ended.network": "Please check your internet connection and try again.",
  "ended.unauthorized": "You are not authorized to join this meeting.",
  "network": "Network",
  "network.reconnecting": "Connection lost. Trying to reconnect.",
  "network.delay_extended": "Taking too long to reconnect. Please check your network connection.",
  "network.disconnected": "Could not reconnect. Please leave the meeting and try refreshing the window.",
  "network.leaving": "Automatically leaving the meeting in 10 seconds.",
  "network.restored": "Connection restored",
  "network.delay": "Taking too long to reconnect.",
  "network.lost": "Connection lost",
  "network.lost_extended": "Connection lost. Please check your network connection.",
  "network.troubleshoot": "Troubleshoot your connection",
  "init.auth_error": "We couldn't verify your access to this meeting. The meeting may have ended, or you may not have permission to join.",
  "init.network_error": "We couldn't connect to the meeting. Please try again, and if the problem continues, check your internet connection.",
  "init.browser_error": "Your browser is not supported. Please try a different or updated browser.",
  "init.default_error": "Something went wrong while connecting to the meeting. Please try again.",
  "join.network_error": "We couldn't connect to the meeting. Please check your internet connection and try again.",
  "join.media_error": "We're having trouble connecting to the meeting. Please try again, and if the problem continues, try using a different network.",
  "join.media_firewall_error": "Your network may be blocking this connection. Try using a different network, or contact your network administrator for help.",
  "join.default_error": "Something went wrong while joining the meeting. Please try again.",
  "join.error_code": "Error code",
  "livestream": "Livestream",
  "livestream.indicator": "This meeting is being livestreamed.",
  "livestream.skip": "Skip to Live",
  "livestream.idle": "Waiting to go live.",
  "livestream.starting": "Livestream is starting...",
  "livestream.stopping": "Livestream is stopping...",
  "livestream.waiting_on_manual_ingestion": "Please ingest livestream media.",
  "livestream.error.not_supported": "Player not supported.",
  "livestream.error.not_found": "Playback URL not found.",
  "livestream.error.unknown": "An unknown error occurred.",
  "livestream.error.sync": "Could not sync livestream please try again later.",
  "livestream.error.start": "Error while starting livestream.",
  "livestream.error.stop": "Error while stopping livestream.",
  "livestream.go_live": "Go Live",
  "livestream.end_live": "End Live",
  "livestream.error": "Error",
  "cta.help": "Need help on how to do this?",
  "cta.continue": "Ignore",
  "cta.reload": "Reload",
  "cta.confirmation": "Are you sure?",
  "cta.system_settings": "Open Settings",
  "remote_access.empty": "There are no remote requests, yet.",
  "remote_access.requests": "The following people have requested remote control to your screen share.",
  "remote_access.allow": "Please select whom you want to give access to.",
  "remote_access.grant": "Grant access",
  "remote_access.indicator": "Any plugin or screenshare you switch to will sync the change across the meeting",
  "chat": "Chat",
  "chat.new": "New",
  "chat.max_limit_warning": "Max Character Limit",
  "chat.rate_limit_error": "Please wait before you can send another message",
  "chat.member_name": "Enter member name",
  "chat.add_members": "Add members",
  "chat.delete_msg": "Delete",
  "chat.edit_msg": "Edit",
  "chat.send_msg": "Send message",
  "chat.send_attachment": "Drop files/images to send",
  "chat.send_img": "Send an image",
  "chat.send_file": "Send a file",
  "chat.send_emoji": "Send an emoji",
  "chat.update_msg": "Update message",
  "chat.img.loading": "Loading image",
  "chat.error.img_not_found": "Image not found",
  "chat.error.empty_results": "Couldn't find a member with the specified name.",
  "chat.img.shared_by": "Shared by",
  "chat.reply": "Reply",
  "chat.message_placeholder": "Message..",
  "chat.click_to_send": "Click to send as message",
  "chat.search_msgs": "Search messages",
  "chat.search_conversations": "Search conversations",
  "chat.start_conversation": "Start a conversation..",
  "chat.empty_search": "No messages found",
  "chat.empty_chat": "Send a message to get started",
  "chat.cancel_upload": "Cancel upload",
  "chat.view_chats": "View chats",
  "chat.everyone": "everyone",
  "chat.pinned_msgs": "Pinned messages",
  "chat.toggle_pinned_msgs": "Toggle pinned messages",
  "date.today": "Today",
  "date.yesterday": "Yesterday",
  "date.sunday": "Sunday",
  "date.monday": "Monday",
  "date.tuesday": "Tuesday",
  "date.wednesday": "Wednesday",
  "date.thursday": "Thursday",
  "date.friday": "Friday",
  "date.saturday": "Saturday",
  "list.empty": "No items found",
  "grid.listening": "Listening",
  "transcript.off": "Turn off Transcripts",
  "transcript.on": "Turn on Transcripts",
  "settings.notification_sound": "Notification sound",
  "settings.microphone_input": "Microphone",
  "settings.speaker_output": "Speaker",
  "settings.mirror_video": "Mirror my Video",
  "settings.camera_off": "Camera is off",
  "dialog.close": "Close dialog",
  "notifications.joined": "just joined",
  "notifications.left": "left",
  "notifications.requesting_to_join_meeting": "is requesting to join the meeting",
  "notifications.requested_to_join_stage": "has requested to join stage",
  "notifications.joined_stage": "has joined stage",
  "notifications.request_to_join_accepted": "Request to join accepted",
  "notifications.request_to_join_rejected": "Request to join rejected",
  "notifications.accept": "Accept",
  "notifications.new_poll_created_by": "New poll created by",
  "notifications.connected_to": "Connected to",
  "notifications.plugin_switched_to": "Plugin switched to",
  "notifications.remote_control_requested": "has requested for remote control",
  "notifications.remote_control_request_sent": "Sent remote control request to",
  "notifications.remote_control_request_accepted": "has granted remote control",
  "notifications.remote_control_granted": "Granted remote control to",
  "notifications.remote_control_terminated": "Existing remote control has been terminated",
  "debugger.troubleshooting.label": "Troubleshooting",
  "debugger.quality.good": "Good",
  "debugger.quality.average": "Average",
  "debugger.quality.poor": "Poor",
  "debugger.stats.bitrate.label": "Bitrate",
  "debugger.stats.bitrate.description": "Data transmitted per second, affects quality and file size.",
  "debugger.stats.packet_loss.label": "Packet Loss",
  "debugger.stats.packet_loss.description": "Amount of data lost during transfer",
  "debugger.stats.jitter.label": "Jitter",
  "debugger.stats.jitter.description": "Variance or fluctuation in latency",
  "debugger.stats.cpu_limitations.label": "CPU Limitations",
  "debugger.stats.cpu_limitations.description": "CPU limitations can impact WebRTC call quality and performance.",
  "debugger.stats.bandwidth_limitations.label": "Bandwidth Limitations",
  "debugger.stats.bandwidth_limitations.description": "Slow internet speeds can degrade video quality.",
  "debugger.audio.label": "Audio",
  "debugger.audio.troubleshooting.label": "Audio Troubleshooting",
  "debugger.audio.messages.generating_report": "Generating report. Please wait for a few seconds.",
  "debugger.audio.messages.enable_media": "Please enable mic to see the report.",
  "debugger.audio.sections.network_media": "Network & Media",
  "debugger.video.label": "Video",
  "debugger.video.troubleshooting.label": "Video Troubleshooting",
  "debugger.video.messages.generating_report": "Generating report. Please wait for a few seconds.",
  "debugger.video.messages.enable_media": "Please enable camera to see the report.",
  "debugger.video.sections.network_media": "Network & Media",
  "debugger.screenshare.label": "Screenshare",
  "debugger.screenshare.troubleshooting.label": "Screenshare Troubleshooting",
  "debugger.screenshare.sections.network_media": "Network & Media",
  "debugger.screenshare.messages.generating_report": "Generating report. Please wait for a few seconds.",
  "debugger.screenshare.messages.enable_media": "Please share screen to see the report.",
  "debugger.system.label": "System",
  "debugger.system.troubleshooting.label": "System Troubleshooting",
  "debugger.system.sections.battery": "Battery",
  "debugger.system.battery.level.label": "Battery Level",
  "debugger.system.battery.level.description": "A low battery charge may result in reduced performance.",
  "debugger.system.battery.charging.label": "Battery Charging Status",
  "debugger.system.battery.charging.description": "A device running on power performs optimally.",
  "debugger.system.battery.charging.is_charging": "Charging",
  "debugger.system.battery.charging.is_not_charging": "Not charging"
}

Вы можете переопределить любой из этих ключей в своём пользовательском языковом пакете. Например, чтобы перевести интерфейс на испанский:

const spanishLanguagePack = useLanguage({
	...defaultLanguage,
	leave: "Salir",
	join: "Unirse",
	mute: "Silenciar",
	participants: "Participantes",
	chat: "Chat",
	settings: "Configuración",
});

React Native UI Kit предоставляет около 195 переопределяемых строковых ключей через defaultLanguage объект. В таблице ниже перечислены часто используемые ключи. Полный список см. в defaultLanguage экспорт из @cloudflare/realtimekit-react-native-ui.

Ключ По умолчанию
join Присоединиться
leave Покинуть
cancel Отмена
leave_confirmation Вы уверены, что хотите покинуть звонок?
mic_on Микрофон включён
mic_off Микрофон выключен
video_on Видео включено
video_off Видео выключено
mute Отключить звук
mute_all Отключить всех
participants Участники
chat Чат
settings Настройки
polls Опросы
screenshare Демонстрация экрана
screenshare.start Демонстрация экрана
screenshare.stop Остановить демонстрацию экрана
recording.start Начать запись
recording.stop Остановить запись
end Завершить встречу
end.all Завершить встречу для всех
setup_screen.join_in_as Присоединиться как
setup_screen.your_name Ваше имя
network.reconnecting Соединение потеряно. Попытка переподключения...
network.restored Соединение восстановлено
ended Встреча завершена.
ended.left Вы покинули встречу.
ended.kicked Вас удалили из встречи.