From 8063e51312e3731aff435c19c5ebbb1b36fbf771 Mon Sep 17 00:00:00 2001 From: Miroslav Pejic Date: Tue, 10 Feb 2026 01:55:44 +0100 Subject: [PATCH] [call-me] - fix translate --- app/locales/ar.json | 18 ++++++++++++++-- app/locales/de.json | 18 ++++++++++++++-- app/locales/en.json | 18 ++++++++++++++-- app/locales/es.json | 18 ++++++++++++++-- app/locales/fr.json | 18 ++++++++++++++-- app/locales/hi.json | 18 ++++++++++++++-- app/locales/it.json | 18 ++++++++++++++-- app/locales/ja.json | 18 ++++++++++++++-- app/locales/pt.json | 18 ++++++++++++++-- app/locales/ru.json | 18 ++++++++++++++-- app/locales/zh.json | 18 ++++++++++++++-- package-lock.json | 4 ++-- package.json | 2 +- public/i18n.js | 50 +++++++++++++++++++++++++++++++-------------- public/index.html | 45 ++++++++++++++++++++++++++++++---------- 15 files changed, 248 insertions(+), 51 deletions(-) diff --git a/app/locales/ar.json b/app/locales/ar.json index c147d80..bc56fe8 100644 --- a/app/locales/ar.json +++ b/app/locales/ar.json @@ -18,7 +18,8 @@ "userLeft": "غادر __username__ المكالمة", "users": "المستخدمون", "chat": "الدردشة", - "searchUsers": "ابحث عن مستخدمين..." + "searchUsers": "البحث عن المستخدمين...", + "closeSidebar": "إغلاق الشريط الجانبي" }, "controls": { "microphone": "الميكروفون", @@ -26,7 +27,15 @@ "screenShare": "مشاركة الشاشة", "endCall": "إنهاء المكالمة", "settings": "الإعدادات", - "fullscreen": "ملء الشاشة" + "fullscreen": "ملء الشاشة", + "shareRoom": "مشاركة الغرفة", + "toggleHideMe": "إظهار/إخفاء نفسي", + "toggleAudio": "تبديل الصوت", + "toggleVideo": "تبديل الفيديو", + "swapCamera": "تبديل الكاميرا", + "toggleScreen": "تبديل الشاشة", + "toggleUsers": "تبديل المستخدمين", + "leave": "مغادرة" }, "messages": { "microphoneEnabled": "تم تفعيل الميكروفون", @@ -51,9 +60,14 @@ "settings": { "language": "اللغة", "selectLanguage": "اختر اللغة", + "mediaDevicesTitle": "أجهزة الوسائط", + "chatSettingsTitle": "إعدادات الدردشة", "audioInput": "الميكروفون", "videoInput": "الكاميرا", "audioOutput": "مكبر الصوت", + "loadingCameras": "جارٍ تحميل الكاميرات...", + "loadingMicrophones": "جارٍ تحميل الميكروفونات...", + "loadingSpeakers": "جارٍ تحميل مكبرات الصوت...", "resolution": "دقة الفيديو", "save": "حفظ", "cancel": "إلغاء", diff --git a/app/locales/de.json b/app/locales/de.json index c37bc09..72fdd67 100644 --- a/app/locales/de.json +++ b/app/locales/de.json @@ -18,7 +18,8 @@ "userLeft": "__username__ hat den Anruf verlassen", "users": "Benutzer", "chat": "Chat", - "searchUsers": "Benutzer suchen..." + "searchUsers": "Benutzer suchen...", + "closeSidebar": "Seitenleiste schließen" }, "controls": { "microphone": "Mikrofon", @@ -26,7 +27,15 @@ "screenShare": "Bildschirm Teilen", "endCall": "Anruf Beenden", "settings": "Einstellungen", - "fullscreen": "Vollbild" + "fullscreen": "Vollbild", + "shareRoom": "Raum teilen", + "toggleHideMe": "Mich ein-/ausblenden", + "toggleAudio": "Audio umschalten", + "toggleVideo": "Video umschalten", + "swapCamera": "Kamera wechseln", + "toggleScreen": "Bildschirm umschalten", + "toggleUsers": "Benutzer umschalten", + "leave": "Verlassen" }, "messages": { "microphoneEnabled": "Mikrofon aktiviert", @@ -51,9 +60,14 @@ "settings": { "language": "Sprache", "selectLanguage": "Sprache Auswählen", + "mediaDevicesTitle": "Mediengeräte", + "chatSettingsTitle": "Chat-Einstellungen", "audioInput": "Mikrofon", "videoInput": "Kamera", "audioOutput": "Lautsprecher", + "loadingCameras": "Kameras werden geladen...", + "loadingMicrophones": "Mikrofone werden geladen...", + "loadingSpeakers": "Lautsprecher werden geladen...", "resolution": "Videoauflösung", "save": "Speichern", "cancel": "Abbrechen", diff --git a/app/locales/en.json b/app/locales/en.json index 47aed2d..2ebb320 100644 --- a/app/locales/en.json +++ b/app/locales/en.json @@ -18,7 +18,8 @@ "userLeft": "__username__ left the call", "users": "Users", "chat": "Chat", - "searchUsers": "Search users..." + "searchUsers": "Search users...", + "closeSidebar": "Close sidebar" }, "controls": { "microphone": "Microphone", @@ -26,7 +27,15 @@ "screenShare": "Share Screen", "endCall": "End Call", "settings": "Settings", - "fullscreen": "Fullscreen" + "fullscreen": "Fullscreen", + "shareRoom": "Share room", + "toggleHideMe": "Toggle hide me", + "toggleAudio": "Toggle audio", + "toggleVideo": "Toggle video", + "swapCamera": "Swap camera", + "toggleScreen": "Toggle screen", + "toggleUsers": "Toggle users", + "leave": "Leave" }, "messages": { "microphoneEnabled": "Microphone enabled", @@ -51,9 +60,14 @@ "settings": { "language": "Language", "selectLanguage": "Select Language", + "mediaDevicesTitle": "Media Devices", + "chatSettingsTitle": "Chat Settings", "audioInput": "Microphone", "videoInput": "Camera", "audioOutput": "Speaker", + "loadingCameras": "Loading cameras...", + "loadingMicrophones": "Loading microphones...", + "loadingSpeakers": "Loading speakers...", "resolution": "Video Resolution", "save": "Save", "cancel": "Cancel", diff --git a/app/locales/es.json b/app/locales/es.json index b36e6d4..2eae45e 100644 --- a/app/locales/es.json +++ b/app/locales/es.json @@ -18,7 +18,8 @@ "userLeft": "__username__ salió de la llamada", "users": "Usuarios", "chat": "Chat", - "searchUsers": "Buscar usuarios..." + "searchUsers": "Buscar usuarios...", + "closeSidebar": "Cerrar barra lateral" }, "controls": { "microphone": "Micrófono", @@ -26,7 +27,15 @@ "screenShare": "Compartir Pantalla", "endCall": "Finalizar Llamada", "settings": "Configuración", - "fullscreen": "Pantalla Completa" + "fullscreen": "Pantalla Completa", + "shareRoom": "Compartir sala", + "toggleHideMe": "Ocultarme/mostrarme", + "toggleAudio": "Alternar audio", + "toggleVideo": "Alternar video", + "swapCamera": "Cambiar cámara", + "toggleScreen": "Alternar pantalla", + "toggleUsers": "Alternar usuarios", + "leave": "Salir" }, "messages": { "microphoneEnabled": "Micrófono activado", @@ -51,9 +60,14 @@ "settings": { "language": "Idioma", "selectLanguage": "Seleccionar Idioma", + "mediaDevicesTitle": "Dispositivos multimedia", + "chatSettingsTitle": "Configuración del chat", "audioInput": "Micrófono", "videoInput": "Cámara", "audioOutput": "Altavoz", + "loadingCameras": "Cargando cámaras...", + "loadingMicrophones": "Cargando micrófonos...", + "loadingSpeakers": "Cargando altavoces...", "resolution": "Resolución de Video", "save": "Guardar", "cancel": "Cancelar", diff --git a/app/locales/fr.json b/app/locales/fr.json index 13f3357..1f8d734 100644 --- a/app/locales/fr.json +++ b/app/locales/fr.json @@ -18,7 +18,8 @@ "userLeft": "__username__ a quitté l'appel", "users": "Utilisateurs", "chat": "Chat", - "searchUsers": "Rechercher des utilisateurs..." + "searchUsers": "Rechercher des utilisateurs...", + "closeSidebar": "Fermer la barre latérale" }, "controls": { "microphone": "Microphone", @@ -26,7 +27,15 @@ "screenShare": "Partager l'Écran", "endCall": "Terminer l'Appel", "settings": "Paramètres", - "fullscreen": "Plein Écran" + "fullscreen": "Plein Écran", + "shareRoom": "Partager la salle", + "toggleHideMe": "Masquer/Afficher moi", + "toggleAudio": "Activer/Désactiver l'audio", + "toggleVideo": "Activer/Désactiver la vidéo", + "swapCamera": "Changer de caméra", + "toggleScreen": "Activer/Désactiver l'écran", + "toggleUsers": "Afficher/Masquer les utilisateurs", + "leave": "Quitter" }, "messages": { "microphoneEnabled": "Microphone activé", @@ -51,9 +60,14 @@ "settings": { "language": "Langue", "selectLanguage": "Sélectionner la Langue", + "mediaDevicesTitle": "Périphériques multimédias", + "chatSettingsTitle": "Paramètres du chat", "audioInput": "Microphone", "videoInput": "Caméra", "audioOutput": "Haut-parleur", + "loadingCameras": "Chargement des caméras...", + "loadingMicrophones": "Chargement des microphones...", + "loadingSpeakers": "Chargement des haut-parleurs...", "resolution": "Résolution Vidéo", "save": "Enregistrer", "cancel": "Annuler", diff --git a/app/locales/hi.json b/app/locales/hi.json index 83efe63..f2f8942 100644 --- a/app/locales/hi.json +++ b/app/locales/hi.json @@ -18,7 +18,8 @@ "userLeft": "__username__ कॉल से निकल गया", "users": "उपयोगकर्ता", "chat": "चैट", - "searchUsers": "उपयोगकर्ता खोजें..." + "searchUsers": "उपयोगकर्ता खोजें...", + "closeSidebar": "साइडबार बंद करें" }, "controls": { "microphone": "माइक्रोफ़ोन", @@ -26,7 +27,15 @@ "screenShare": "स्क्रीन साझा करें", "endCall": "कॉल समाप्त करें", "settings": "सेटिंग्स", - "fullscreen": "फुलस्क्रीन" + "fullscreen": "फुलस्क्रीन", + "shareRoom": "कमरा साझा करें", + "toggleHideMe": "मुझे छुपाएँ/दिखाएँ", + "toggleAudio": "ऑडियो टॉगल करें", + "toggleVideo": "वीडियो टॉगल करें", + "swapCamera": "कैमरा बदलें", + "toggleScreen": "स्क्रीन टॉगल करें", + "toggleUsers": "उपयोगकर्ता टॉगल करें", + "leave": "छोड़ें" }, "messages": { "microphoneEnabled": "माइक्रोफ़ोन चालू", @@ -51,9 +60,14 @@ "settings": { "language": "भाषा", "selectLanguage": "भाषा चुनें", + "mediaDevicesTitle": "मीडिया डिवाइस", + "chatSettingsTitle": "चैट सेटिंग्स", "audioInput": "माइक्रोफ़ोन", "videoInput": "कैमरा", "audioOutput": "स्पीकर", + "loadingCameras": "कैमरे लोड हो रहे हैं...", + "loadingMicrophones": "माइक्रोफ़ोन लोड हो रहे हैं...", + "loadingSpeakers": "स्पीकर लोड हो रहे हैं...", "resolution": "वीडियो रिज़ॉल्यूशन", "save": "सहेजें", "cancel": "रद्द करें", diff --git a/app/locales/it.json b/app/locales/it.json index 7afc331..954a5d6 100644 --- a/app/locales/it.json +++ b/app/locales/it.json @@ -18,7 +18,8 @@ "userLeft": "__username__ ha lasciato la chiamata", "users": "Utenti", "chat": "Chat", - "searchUsers": "Cerca utenti..." + "searchUsers": "Cerca utenti...", + "closeSidebar": "Chiudi barra laterale" }, "controls": { "microphone": "Microfono", @@ -26,7 +27,15 @@ "screenShare": "Condividi Schermo", "endCall": "Termina Chiamata", "settings": "Impostazioni", - "fullscreen": "Schermo Intero" + "fullscreen": "Schermo Intero", + "shareRoom": "Condividi stanza", + "toggleHideMe": "Mostra/Nascondi me", + "toggleAudio": "Attiva/Disattiva audio", + "toggleVideo": "Attiva/Disattiva video", + "swapCamera": "Cambia fotocamera", + "toggleScreen": "Attiva/Disattiva schermo", + "toggleUsers": "Mostra/Nascondi utenti", + "leave": "Esci" }, "messages": { "microphoneEnabled": "Microfono attivato", @@ -51,9 +60,14 @@ "settings": { "language": "Lingua", "selectLanguage": "Seleziona Lingua", + "mediaDevicesTitle": "Dispositivi multimediali", + "chatSettingsTitle": "Impostazioni chat", "audioInput": "Microfono", "videoInput": "Fotocamera", "audioOutput": "Altoparlante", + "loadingCameras": "Caricamento fotocamere...", + "loadingMicrophones": "Caricamento microfoni...", + "loadingSpeakers": "Caricamento altoparlanti...", "resolution": "Risoluzione Video", "save": "Salva", "cancel": "Annulla", diff --git a/app/locales/ja.json b/app/locales/ja.json index 6dc8d74..a7db460 100644 --- a/app/locales/ja.json +++ b/app/locales/ja.json @@ -18,7 +18,8 @@ "userLeft": "__username__ が通話から退出しました", "users": "ユーザー", "chat": "チャット", - "searchUsers": "ユーザーを検索..." + "searchUsers": "ユーザーを検索...", + "closeSidebar": "サイドバーを閉じる" }, "controls": { "microphone": "マイク", @@ -26,7 +27,15 @@ "screenShare": "画面共有", "endCall": "通話終了", "settings": "設定", - "fullscreen": "全画面" + "fullscreen": "全画面", + "shareRoom": "ルームを共有", + "toggleHideMe": "自分を表示/非表示", + "toggleAudio": "音声を切り替え", + "toggleVideo": "映像を切り替え", + "swapCamera": "カメラを切り替え", + "toggleScreen": "画面を切り替え", + "toggleUsers": "ユーザーを切り替え", + "leave": "退室" }, "messages": { "microphoneEnabled": "マイクを有効にしました", @@ -51,9 +60,14 @@ "settings": { "language": "言語", "selectLanguage": "言語を選択", + "mediaDevicesTitle": "メディアデバイス", + "chatSettingsTitle": "チャット設定", "audioInput": "マイク", "videoInput": "カメラ", "audioOutput": "スピーカー", + "loadingCameras": "カメラを読み込み中...", + "loadingMicrophones": "マイクを読み込み中...", + "loadingSpeakers": "スピーカーを読み込み中...", "resolution": "ビデオ解像度", "save": "保存", "cancel": "キャンセル", diff --git a/app/locales/pt.json b/app/locales/pt.json index c78dedb..ff273a8 100644 --- a/app/locales/pt.json +++ b/app/locales/pt.json @@ -18,7 +18,8 @@ "userLeft": "__username__ saiu da chamada", "users": "Usuários", "chat": "Chat", - "searchUsers": "Pesquisar usuários..." + "searchUsers": "Pesquisar usuários...", + "closeSidebar": "Fechar barra lateral" }, "controls": { "microphone": "Microfone", @@ -26,7 +27,15 @@ "screenShare": "Compartilhar tela", "endCall": "Encerrar chamada", "settings": "Configurações", - "fullscreen": "Tela cheia" + "fullscreen": "Tela Cheia", + "shareRoom": "Compartilhar sala", + "toggleHideMe": "Ocultar/mostrar-me", + "toggleAudio": "Alternar áudio", + "toggleVideo": "Alternar vídeo", + "swapCamera": "Trocar câmera", + "toggleScreen": "Alternar tela", + "toggleUsers": "Alternar usuários", + "leave": "Sair" }, "messages": { "microphoneEnabled": "Microfone ativado", @@ -51,9 +60,14 @@ "settings": { "language": "Idioma", "selectLanguage": "Selecionar idioma", + "mediaDevicesTitle": "Dispositivos de mídia", + "chatSettingsTitle": "Configurações do chat", "audioInput": "Microfone", "videoInput": "Câmera", "audioOutput": "Alto-falante", + "loadingCameras": "Carregando câmeras...", + "loadingMicrophones": "Carregando microfones...", + "loadingSpeakers": "Carregando alto-falantes...", "resolution": "Resolução de vídeo", "save": "Salvar", "cancel": "Cancelar", diff --git a/app/locales/ru.json b/app/locales/ru.json index 99fa890..015f5f8 100644 --- a/app/locales/ru.json +++ b/app/locales/ru.json @@ -18,7 +18,8 @@ "userLeft": "__username__ покинул звонок", "users": "Пользователи", "chat": "Чат", - "searchUsers": "Поиск пользователей..." + "searchUsers": "Поиск пользователей...", + "closeSidebar": "Закрыть боковую панель" }, "controls": { "microphone": "Микрофон", @@ -26,7 +27,15 @@ "screenShare": "Демонстрация экрана", "endCall": "Завершить звонок", "settings": "Настройки", - "fullscreen": "Полный экран" + "fullscreen": "Полный экран", + "shareRoom": "Поделиться комнатой", + "toggleHideMe": "Скрыть/показать меня", + "toggleAudio": "Вкл/выкл звук", + "toggleVideo": "Вкл/выкл видео", + "swapCamera": "Сменить камеру", + "toggleScreen": "Вкл/выкл экран", + "toggleUsers": "Показать/скрыть пользователей", + "leave": "Выйти" }, "messages": { "microphoneEnabled": "Микрофон включён", @@ -51,9 +60,14 @@ "settings": { "language": "Язык", "selectLanguage": "Выберите язык", + "mediaDevicesTitle": "Медиаустройства", + "chatSettingsTitle": "Настройки чата", "audioInput": "Микрофон", "videoInput": "Камера", "audioOutput": "Динамик", + "loadingCameras": "Загрузка камер...", + "loadingMicrophones": "Загрузка микрофонов...", + "loadingSpeakers": "Загрузка динамиков...", "resolution": "Разрешение видео", "save": "Сохранить", "cancel": "Отмена", diff --git a/app/locales/zh.json b/app/locales/zh.json index 31a9e6e..d1ec7f0 100644 --- a/app/locales/zh.json +++ b/app/locales/zh.json @@ -18,7 +18,8 @@ "userLeft": "__username__ 离开了通话", "users": "用户", "chat": "聊天", - "searchUsers": "搜索用户..." + "searchUsers": "搜索用户...", + "closeSidebar": "关闭侧边栏" }, "controls": { "microphone": "麦克风", @@ -26,7 +27,15 @@ "screenShare": "共享屏幕", "endCall": "结束通话", "settings": "设置", - "fullscreen": "全屏" + "fullscreen": "全屏", + "shareRoom": "分享房间", + "toggleHideMe": "隐藏/显示我", + "toggleAudio": "切换音频", + "toggleVideo": "切换视频", + "swapCamera": "切换摄像头", + "toggleScreen": "切换屏幕", + "toggleUsers": "切换用户", + "leave": "离开" }, "messages": { "microphoneEnabled": "麦克风已开启", @@ -51,9 +60,14 @@ "settings": { "language": "语言", "selectLanguage": "选择语言", + "mediaDevicesTitle": "媒体设备", + "chatSettingsTitle": "聊天设置", "audioInput": "麦克风", "videoInput": "摄像头", "audioOutput": "扬声器", + "loadingCameras": "正在加载摄像头...", + "loadingMicrophones": "正在加载麦克风...", + "loadingSpeakers": "正在加载扬声器...", "resolution": "视频分辨率", "save": "保存", "cancel": "取消", diff --git a/package-lock.json b/package-lock.json index 8d07237..a48c589 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "call-me", - "version": "1.2.91", + "version": "1.2.92", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "call-me", - "version": "1.2.91", + "version": "1.2.92", "license": "AGPLv3", "dependencies": { "@ngrok/ngrok": "1.7.0", diff --git a/package.json b/package.json index cf37eda..74cca53 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "call-me", - "version": "1.2.91", + "version": "1.2.92", "description": "Your Go-To for Instant Video Calls", "author": "Miroslav Pejic - miroslav.pejic.85@gmail.com", "license": "AGPLv3", diff --git a/public/i18n.js b/public/i18n.js index 8535085..6b08e4f 100644 --- a/public/i18n.js +++ b/public/i18n.js @@ -205,7 +205,8 @@ function translatePage() { // Translate elements with data-i18n-title attribute (for tooltips) document.querySelectorAll('[data-i18n-title]').forEach((element) => { const key = element.getAttribute('data-i18n-title'); - element.title = t(key); + const translatedTitle = t(key); + setElementTitle(element, translatedTitle); }); // Update document title @@ -215,6 +216,37 @@ function translatePage() { updateCustomTranslations(); } +/** + * Set element title in a way that works with Bootstrap tooltips. + * Bootstrap may cache the initial title into the Tooltip instance config. + * @param {Element} element + * @param {string} translatedTitle + */ +function setElementTitle(element, translatedTitle) { + if (!element || typeof translatedTitle !== 'string') return; + + // Keep regular title attribute in sync + element.setAttribute('title', translatedTitle); + + // Bootstrap 5 stores original title here and may remove the title attribute + element.setAttribute('data-bs-original-title', translatedTitle); + + // If a Bootstrap Tooltip instance already exists, update its cached config/content + try { + if (typeof bootstrap !== 'undefined' && bootstrap.Tooltip) { + const instance = bootstrap.Tooltip.getInstance ? bootstrap.Tooltip.getInstance(element) : null; + if (instance) { + if (instance._config) instance._config.title = translatedTitle; + if (typeof instance.setContent === 'function') { + instance.setContent({ '.tooltip-inner': translatedTitle }); + } + } + } + } catch (err) { + // No-op: translation should still work without tooltip refresh + } +} + /** * Update custom translations for specific elements */ @@ -226,18 +258,6 @@ function updateCustomTranslations() { // Update app name const appName = document.getElementById('appName'); if (appName) appName.textContent = t('appName'); - - // Update settings title for language - const settingsTitles = document.querySelectorAll('.settings-title'); - if (settingsTitles.length > 0) { - settingsTitles[0].innerHTML = ' ' + t('settings.language'); - } - if (settingsTitles.length > 1) { - settingsTitles[1].innerHTML = ' Media Devices'; - } - if (settingsTitles.length > 2) { - settingsTitles[2].innerHTML = ' Chat Settings'; - } } /** @@ -320,7 +340,7 @@ function translateElement(element) { // Translate data-i18n-title if (element.hasAttribute && element.hasAttribute('data-i18n-title')) { const key = element.getAttribute('data-i18n-title'); - element.title = t(key); + setElementTitle(element, t(key)); } // Recursively translate children @@ -347,7 +367,7 @@ function translateElement(element) { element.querySelectorAll('[data-i18n-title]').forEach((child) => { const key = child.getAttribute('data-i18n-title'); - child.title = t(key); + setElementTitle(child, t(key)); }); } } diff --git a/public/index.html b/public/index.html index 06017ab..e8e6c23 100755 --- a/public/index.html +++ b/public/index.html @@ -115,6 +115,7 @@ data-toggle="tooltip" data-placement="top" title="Share room" + data-i18n-title="controls.shareRoom" > @@ -125,6 +126,7 @@ data-toggle="tooltip" data-placement="top" title="Toggle hide me" + data-i18n-title="controls.toggleHideMe" > @@ -135,6 +137,7 @@ data-toggle="tooltip" data-placement="top" title="Toggle audio" + data-i18n-title="controls.toggleAudio" > @@ -145,6 +148,7 @@ data-toggle="tooltip" data-placement="top" title="Toggle video" + data-i18n-title="controls.toggleVideo" > @@ -155,6 +159,7 @@ data-toggle="tooltip" data-placement="top" title="Swap camera" + data-i18n-title="controls.swapCamera" > @@ -165,6 +170,7 @@ data-toggle="tooltip" data-placement="top" title="Toggle screen" + data-i18n-title="controls.toggleScreen" > @@ -175,6 +181,7 @@ data-toggle="tooltip" data-placement="top" title="Toggle users" + data-i18n-title="controls.toggleUsers" > @@ -185,6 +192,7 @@ data-toggle="tooltip" data-placement="top" title="Leave" + data-i18n-title="controls.leave" > @@ -207,7 +215,12 @@ - @@ -256,39 +269,46 @@
-

Language

+

+ Language +

-

Media Devices

+

+ Media Devices +

- +
@@ -301,7 +321,10 @@
-

Chat Settings

+

+ + Chat Settings +