Merge remote-tracking branch 'origin/master' into post-zephry-link-channel
This commit is contained in:
commit
eee4b19b6c
|
@ -38,30 +38,36 @@ export type DesktopAPI = {
|
||||||
onBrowserHistoryPush: (listener: (pathName: string) => void) => () => void;
|
onBrowserHistoryPush: (listener: (pathName: string) => void) => () => void;
|
||||||
sendBrowserHistoryPush: (path: string) => void;
|
sendBrowserHistoryPush: (path: string) => void;
|
||||||
|
|
||||||
// Calls widget
|
// Calls
|
||||||
openLinkFromCallsWidget: (url: string) => void;
|
|
||||||
openScreenShareModal: () => void;
|
|
||||||
onScreenShared: (listener: (sourceID: string, withAudio: boolean) => void) => () => void;
|
|
||||||
callsWidgetConnected: (callID: string, sessionID: string) => void;
|
|
||||||
onJoinCallRequest: (listener: (callID: string) => void) => () => void;
|
|
||||||
resizeCallsWidget: (width: number, height: number) => void;
|
|
||||||
focusPopout: () => void;
|
|
||||||
leaveCall: () => void;
|
|
||||||
sendCallsError: (err: string, callID?: string, errMsg?: string) => void;
|
|
||||||
|
|
||||||
// Calls plugin
|
|
||||||
getDesktopSources: (opts: DesktopSourcesOptions) => Promise<DesktopCaptureSource[]>;
|
|
||||||
onOpenScreenShareModal: (listener: () => void) => () => void;
|
|
||||||
shareScreen: (sourceID: string, withAudi: boolean) => void;
|
|
||||||
joinCall: (opts: {
|
joinCall: (opts: {
|
||||||
callID: string;
|
callID: string;
|
||||||
title: string;
|
title: string;
|
||||||
rootID: string;
|
rootID: string;
|
||||||
channelURL: string;
|
channelURL: string;
|
||||||
}) => Promise<{callID: string; sessionID: string}>;
|
}) => Promise<{callID: string; sessionID: string}>;
|
||||||
sendJoinCallRequest: (callId: string) => void;
|
leaveCall: () => void;
|
||||||
|
|
||||||
|
callsWidgetConnected: (callID: string, sessionID: string) => void;
|
||||||
|
resizeCallsWidget: (width: number, height: number) => void;
|
||||||
|
|
||||||
|
sendCallsError: (err: string, callID?: string, errMsg?: string) => void;
|
||||||
onCallsError: (listener: (err: string, callID?: string, errMsg?: string) => void) => () => void;
|
onCallsError: (listener: (err: string, callID?: string, errMsg?: string) => void) => () => void;
|
||||||
|
|
||||||
|
getDesktopSources: (opts: DesktopSourcesOptions) => Promise<DesktopCaptureSource[]>;
|
||||||
|
|
||||||
|
openScreenShareModal: () => void;
|
||||||
|
onOpenScreenShareModal: (listener: () => void) => () => void;
|
||||||
|
|
||||||
|
shareScreen: (sourceID: string, withAudio: boolean) => void;
|
||||||
|
onScreenShared: (listener: (sourceID: string, withAudio: boolean) => void) => () => void;
|
||||||
|
|
||||||
|
sendJoinCallRequest: (callId: string) => void;
|
||||||
|
onJoinCallRequest: (listener: (callID: string) => void) => () => void;
|
||||||
|
|
||||||
|
openLinkFromCalls: (url: string) => void;
|
||||||
|
|
||||||
|
focusPopout: () => void;
|
||||||
|
|
||||||
// Utility
|
// Utility
|
||||||
unregister: (channel: string) => void;
|
unregister: (channel: string) => void;
|
||||||
}
|
}
|
||||||
|
|
28
api-types/lib/index.d.ts
vendored
28
api-types/lib/index.d.ts
vendored
|
@ -1,3 +1,5 @@
|
||||||
|
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
||||||
|
// See LICENSE.txt for license information.
|
||||||
export declare type DesktopSourcesOptions = {
|
export declare type DesktopSourcesOptions = {
|
||||||
types: Array<'screen' | 'window'>;
|
types: Array<'screen' | 'window'>;
|
||||||
thumbnailSize?: {
|
thumbnailSize?: {
|
||||||
|
@ -30,18 +32,6 @@ export declare type DesktopAPI = {
|
||||||
onBrowserHistoryStatusUpdated: (listener: (canGoBack: boolean, canGoForward: boolean) => void) => () => void;
|
onBrowserHistoryStatusUpdated: (listener: (canGoBack: boolean, canGoForward: boolean) => void) => () => void;
|
||||||
onBrowserHistoryPush: (listener: (pathName: string) => void) => () => void;
|
onBrowserHistoryPush: (listener: (pathName: string) => void) => () => void;
|
||||||
sendBrowserHistoryPush: (path: string) => void;
|
sendBrowserHistoryPush: (path: string) => void;
|
||||||
openLinkFromCallsWidget: (url: string) => void;
|
|
||||||
openScreenShareModal: () => void;
|
|
||||||
onScreenShared: (listener: (sourceID: string, withAudio: boolean) => void) => () => void;
|
|
||||||
callsWidgetConnected: (callID: string, sessionID: string) => void;
|
|
||||||
onJoinCallRequest: (listener: (callID: string) => void) => () => void;
|
|
||||||
resizeCallsWidget: (width: number, height: number) => void;
|
|
||||||
focusPopout: () => void;
|
|
||||||
leaveCall: () => void;
|
|
||||||
sendCallsError: (err: string, callID?: string, errMsg?: string) => void;
|
|
||||||
getDesktopSources: (opts: DesktopSourcesOptions) => Promise<DesktopCaptureSource[]>;
|
|
||||||
onOpenScreenShareModal: (listener: () => void) => () => void;
|
|
||||||
shareScreen: (sourceID: string, withAudi: boolean) => void;
|
|
||||||
joinCall: (opts: {
|
joinCall: (opts: {
|
||||||
callID: string;
|
callID: string;
|
||||||
title: string;
|
title: string;
|
||||||
|
@ -51,7 +41,19 @@ export declare type DesktopAPI = {
|
||||||
callID: string;
|
callID: string;
|
||||||
sessionID: string;
|
sessionID: string;
|
||||||
}>;
|
}>;
|
||||||
sendJoinCallRequest: (callId: string) => void;
|
leaveCall: () => void;
|
||||||
|
callsWidgetConnected: (callID: string, sessionID: string) => void;
|
||||||
|
resizeCallsWidget: (width: number, height: number) => void;
|
||||||
|
sendCallsError: (err: string, callID?: string, errMsg?: string) => void;
|
||||||
onCallsError: (listener: (err: string, callID?: string, errMsg?: string) => void) => () => void;
|
onCallsError: (listener: (err: string, callID?: string, errMsg?: string) => void) => () => void;
|
||||||
|
getDesktopSources: (opts: DesktopSourcesOptions) => Promise<DesktopCaptureSource[]>;
|
||||||
|
openScreenShareModal: () => void;
|
||||||
|
onOpenScreenShareModal: (listener: () => void) => () => void;
|
||||||
|
shareScreen: (sourceID: string, withAudio: boolean) => void;
|
||||||
|
onScreenShared: (listener: (sourceID: string, withAudio: boolean) => void) => () => void;
|
||||||
|
sendJoinCallRequest: (callId: string) => void;
|
||||||
|
onJoinCallRequest: (listener: (callID: string) => void) => () => void;
|
||||||
|
openLinkFromCalls: (url: string) => void;
|
||||||
|
focusPopout: () => void;
|
||||||
unregister: (channel: string) => void;
|
unregister: (channel: string) => void;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
"use strict";
|
|
||||||
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
||||||
// See LICENSE.txt for license information.
|
// See LICENSE.txt for license information.
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
'use strict';
|
||||||
|
|
||||||
|
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
||||||
|
// See LICENSE.txt for license information.
|
||||||
|
Object.defineProperty(exports, '__esModule', {value: true});
|
||||||
|
|
4
api-types/package-lock.json
generated
4
api-types/package-lock.json
generated
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "@mattermost/desktop-api",
|
"name": "@mattermost/desktop-api",
|
||||||
"version": "5.7.0-2",
|
"version": "5.7.0-3",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "@mattermost/desktop-api",
|
"name": "@mattermost/desktop-api",
|
||||||
"version": "5.7.0-2",
|
"version": "5.7.0-3",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"typescript": "^4.3"
|
"typescript": "^4.3"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@mattermost/desktop-api",
|
"name": "@mattermost/desktop-api",
|
||||||
"version": "5.7.0-2",
|
"version": "5.7.0-3",
|
||||||
"description": "Shared types for the Desktop App API provided to the Web App",
|
"description": "Shared types for the Desktop App API provided to the Web App",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"mattermost"
|
"mattermost"
|
||||||
|
|
284
i18n/ar.json
284
i18n/ar.json
|
@ -1,123 +1,165 @@
|
||||||
{
|
{
|
||||||
"main.badge.noUnreads": "ليس لديك رسائل غير مقروءة",
|
"common.permissions.canBasicAuth": "مصادقه الويب",
|
||||||
"main.autoUpdater.noUpdate.message": "لديك اخر اصدار",
|
"common.tabs.TAB_FOCALBOARD": "اللوحات",
|
||||||
"main.autoUpdater.noUpdate.detail": "أنت تستخدم أحدث إصدار من {appName} اصدار سطح المكتب (الإصدار {version}). سيتم إعلامك عند توفر إصدار جديد للتثبيت.",
|
"common.tabs.TAB_MESSAGING": "القنوات",
|
||||||
"main.app.utils.migrateMacAppStore.dialog.detail": "يبدو أن تهيئة {appName} موجودة ، هل ترغب في استيرادها؟ سيُطلب منك اختيار دليل التكوين الصحيح.",
|
"common.tabs.TAB_PLAYBOOKS": "Playbooks",
|
||||||
"main.app.utils.migrateMacAppStore.button.dontImport": "لا تستورد",
|
"label.accept": "قبول",
|
||||||
"main.app.initialize.downloadBox.allFiles": "كل الملفات",
|
"label.add": "أضف",
|
||||||
"main.app.app.handleAppCertificateError.dialog.extraDetail": "الشهادة مختلفة عن السابقة.\n\n",
|
"label.allow": "سماح",
|
||||||
"main.app.app.handleAppCertificateError.certNotTrusted.dialog.title": "الشهاده غير موثقة",
|
"label.cancel": "إلغاء",
|
||||||
"main.app.app.handleAppCertificateError.certNotTrusted.dialog.message": "الشهاده من \"{issuerName}\" غيرموثقة.",
|
"label.change": "تغيير",
|
||||||
"main.app.app.handleAppCertificateError.certNotTrusted.button.trustInsecureCertificate": "مصادقه الشهاده غير الامنة",
|
"label.close": "اغلاق",
|
||||||
"main.app.app.handleAppCertificateError.certNotTrusted.button.cancelConnection": "إلغاء الاتصال",
|
"label.deny": "رفض",
|
||||||
"main.app.app.handleAppCertificateError.certError.dialog.title": "خطأ فى الشهاده",
|
"label.denyPermanently": "رفض بشكل دائم",
|
||||||
"main.app.app.handleAppCertificateError.certError.dialog.message": "هناك مشكلة في الاعدادات مع خادم Mattermost هذا ، أو أن شخصًا ما يحاول اعتراض اتصالك. قد تحتاج أيضًا إلى تسجيل الدخول إلى شبكة Wi-Fi التي تتصل بها باستخدام متصفح الويب الخاص بك.",
|
"label.login": "تسجيل الدخول",
|
||||||
"main.app.app.handleAppCertificateError.certError.button.moreDetails": "تفاصيل اكثر",
|
"label.no": "لا",
|
||||||
"main.app.app.handleAppCertificateError.certError.button.cancelConnection": "ألغاء الاتصال",
|
"label.ok": "نعم",
|
||||||
"main.allowProtocolDialog.title": "ليس http(s) بروتوكول",
|
"label.remove": "إزالة",
|
||||||
"main.allowProtocolDialog.message": "{protocol} الرابط يحتاج تطبيق خارجى.",
|
"label.save": "حفظ",
|
||||||
"main.allowProtocolDialog.detail": "الرابط المطلوب هو {URL} هل تريد الاستمرار ؟",
|
"label.yes": "موافق",
|
||||||
"label.yes": "نعم",
|
"main.CriticalErrorHandler.uncaughtException.button.reopen": "اعاده فتح",
|
||||||
"label.save": "حفظ",
|
"main.CriticalErrorHandler.uncaughtException.button.showDetails": "اظهار التفاصيل",
|
||||||
"label.remove": "حذف",
|
"main.CriticalErrorHandler.uncaughtException.dialog.message": "تم إنهاء التطبيق {appName} بشكل غير متوقع. انقر على \"{showDetails}\" لمعرفة المزيد أو \"{reopen}\" لفتح التطبيق مرة أخرى.\n\nخطأ داخلي: {err}",
|
||||||
"label.ok": "نعم",
|
"main.CriticalErrorHandler.unresponsive.dialog.message": "النافذة لم تعد تستجيب.\nهل تريد الانتظار حتى تستجيب النافذة مرة أخرى؟",
|
||||||
"label.no": "لا",
|
"main.allowProtocolDialog.button.saveProtocolAsAllowed": "نعم (احفظ {protocol} على النحو المسموح به)",
|
||||||
"label.login": "تسجيل الدخول",
|
"main.allowProtocolDialog.detail": "الرابط المطلوب هو {URL}. هل تريد الاستمرار ؟",
|
||||||
"label.close": "اغلاق",
|
"main.allowProtocolDialog.message": "{protocol} الرابط يحتاج تطبيق خارجى.",
|
||||||
"label.change": "تغيير",
|
"main.allowProtocolDialog.title": "ليس بروتوكول http(s)",
|
||||||
"label.cancel": "إلغاء",
|
"main.app.app.handleAppCertificateError.certError.button.cancelConnection": "ألغاء الاتصال",
|
||||||
"label.add": "أضف",
|
"main.app.app.handleAppCertificateError.certError.button.moreDetails": "تفاصيل اكثر",
|
||||||
"label.accept": "قبول",
|
"main.app.app.handleAppCertificateError.certError.dialog.detail": "{extraDetail} الاصل: {origin}\nخطأ: {error}",
|
||||||
"common.tabs.TAB_MESSAGING": "القنوات",
|
"main.app.app.handleAppCertificateError.certError.dialog.message": "هناك مشكلة في الاعدادات مع خادم Mattermost هذا ، أو أن شخصًا ما يحاول اعتراض اتصالك. قد تحتاج أيضًا إلى تسجيل الدخول إلى شبكة Wi-Fi التي تتصل بها باستخدام متصفح الويب الخاص بك.",
|
||||||
"common.tabs.TAB_FOCALBOARD": "اللوحات",
|
"main.app.app.handleAppCertificateError.certError.dialog.title": "خطأ فى شهادة التصديق",
|
||||||
"common.permissions.canBasicAuth": "مصادقه الويب",
|
"main.app.app.handleAppCertificateError.certNotTrusted.button.cancelConnection": "إلغاء الاتصال",
|
||||||
"main.menus.app.help.checkForUpdates": "تحقق من وجود تحديثات",
|
"main.app.app.handleAppCertificateError.certNotTrusted.button.trustInsecureCertificate": "مصادقة الشهادة غير الآمنة",
|
||||||
"main.menus.app.help": "المساعدة",
|
"main.app.app.handleAppCertificateError.certNotTrusted.dialog.message": "الشهادة من \"{issuerName}\" غير موثقة.",
|
||||||
"main.menus.app.file.unhide": "اظهار الكل",
|
"main.app.app.handleAppCertificateError.certNotTrusted.dialog.title": "الشهادة غير موثقة",
|
||||||
"main.menus.app.file.signInToAnotherServer": "تسجيل الدخول لخادم اخر",
|
"main.app.app.handleAppCertificateError.dialog.extraDetail": "الشهادة مختلفة عن السابقة.\n\n",
|
||||||
"main.menus.app.file.settings": "الاعدادات...",
|
"main.app.initialize.downloadBox.allFiles": "كل الملفات",
|
||||||
"main.menus.app.file.quit": "انهاء{appName}",
|
"main.app.utils.migrateMacAppStore.button.dontImport": "لا تستورد",
|
||||||
"main.menus.app.file.preferences": "التفضيلات..",
|
"main.app.utils.migrateMacAppStore.button.selectAndImport": "حدد مسار ثم استورد",
|
||||||
"main.menus.app.file.hideOthers": "اخفاء الاخرين",
|
"main.app.utils.migrateMacAppStore.dialog.detail": "يبدو أن تهيئة {appName} موجودة ، هل ترغب في استيرادها؟ سيُطلب منك اختيار دليل التكوين الصحيح.",
|
||||||
"main.menus.app.file.hide": "اخفاء{appName}",
|
"main.app.utils.migrateMacAppStore.dialog.message": "استيراد الاعدادات الحالية",
|
||||||
"main.menus.app.file.exit": "انهاء",
|
"main.autoUpdater.noUpdate.detail": "أنت تستخدم أحدث إصدار من {appName} نسخة سطح المكتب (الإصدار {version}). سيتم إشعارك عند توفر إصدار جديد للتثبيت.",
|
||||||
"main.menus.app.file.about": "عن{appName}",
|
"main.autoUpdater.noUpdate.message": "لديك اخر اصدار",
|
||||||
"main.menus.app.file": "&ملف",
|
"main.badge.noUnreads": "ليس لديك رسائل غير مقروءة",
|
||||||
"main.menus.app.edit.undo": "تراجع",
|
"main.badge.sessionExpired": "انتهت الجلسة: الرجاء تسجيل الدخول لمتابعة تلقي الإخطارات.",
|
||||||
"main.menus.app.edit.selectAll": "تحديد الكل",
|
"main.badge.unreadChannels": "لديك قنوات غير مقروءة",
|
||||||
"main.menus.app.edit.redo": "إعادة",
|
"main.badge.unreadMentions": "لديك ({mentionCount}) إشعار(ات) غير مقروءة",
|
||||||
"main.menus.app.edit.pasteAndMatchStyle": "لصق ومطابقة النمط",
|
"main.downloadsManager.resetDownloadsFolder": "يرجى إعادة تعيين المجلد الذي سيحتوي الملفات المنزلة",
|
||||||
"main.menus.app.edit.paste": "لصق",
|
"main.downloadsManager.specifyDownloadsFolder": "المجلد الذي سوف يحتوي الملفات المنزلة",
|
||||||
"main.menus.app.edit.cut": "قطع",
|
"main.menus.app.edit": "&تحرير",
|
||||||
"main.menus.app.edit.copy": "نسخ",
|
"main.menus.app.edit.copy": "نسخ",
|
||||||
"main.menus.app.edit": "&تحرير",
|
"main.menus.app.edit.cut": "قطع",
|
||||||
"main.CriticalErrorHandler.unresponsive.dialog.message": "النافذة لم تعد تستجيب.\nهل تريد الانتظار حتى تستجيب النافذة مرة أخرى؟",
|
"main.menus.app.edit.paste": "لصق",
|
||||||
"main.CriticalErrorHandler.uncaughtException.dialog.message": "تم إنهاء التطبيق {appName} بشكل غير متوقع. انقر على \"{showDetails}\" لمعرفة المزيد أو \"{reopen}\" لفتح التطبيق مرة أخرى.\n\nخطأ داخلي: {err}",
|
"main.menus.app.edit.pasteAndMatchStyle": "لصق ومطابقة النمط",
|
||||||
"main.CriticalErrorHandler.uncaughtException.button.showDetails": "اظهار التفاصيل",
|
"main.menus.app.edit.redo": "إعادة",
|
||||||
"main.CriticalErrorHandler.uncaughtException.button.reopen": "اعاده فتح",
|
"main.menus.app.edit.selectAll": "تحديد الكل",
|
||||||
"main.badge.unreadMentions": "لديك إشارات غير مقروءة ({الذكر Count})",
|
"main.menus.app.edit.undo": "تراجع",
|
||||||
"main.badge.unreadChannels": "لديك قنوات غير مقروءة",
|
"main.menus.app.file": "&ملف",
|
||||||
"main.badge.sessionExpired": "انتهت الجلسة: الرجاء تسجيل الدخول لمتابعة تلقي الإخطارات.",
|
"main.menus.app.file.about": "عن {appName}",
|
||||||
"main.windows.mainWindow.minimizeToTray.dialog.checkboxLabel": "لا تظهر مرة أخرى",
|
"main.menus.app.file.exit": "انهاء",
|
||||||
"main.windows.mainWindow.closeApp.dialog.title": "اغلاق التطبيق",
|
"main.menus.app.file.hide": "اخفاء {appName}",
|
||||||
"main.windows.mainWindow.closeApp.dialog.message": "هل أنت متأكد من أنك تريد الخروج؟",
|
"main.menus.app.file.hideOthers": "اخفاء الاخرين",
|
||||||
"main.windows.mainWindow.closeApp.dialog.detail": "لن تتلقى بعد الآن إشعارات بالرسائل. إذا كنت تريد ترك {appName} قيد التشغيل في علبة النظام ، فيمكنك تمكين هذا في الإعدادات.",
|
"main.menus.app.file.preferences": "التفضيلات..",
|
||||||
"main.windows.mainWindow.closeApp.dialog.checkboxLabel": "لا تسأل مرة أخرى",
|
"main.menus.app.file.quit": "انهاء {appName}",
|
||||||
"main.views.viewManager.handleDeepLink.error.title": "لا يوجد خادم مطابق",
|
"main.menus.app.file.settings": "الاعدادات...",
|
||||||
"main.views.viewManager.handleDeepLink.error.body": "لا يوجد خادم مهيأ في التطبيق يطابق عنوان url المطلوب: {url}",
|
"main.menus.app.file.signInToAnotherServer": "تسجيل الدخول لخادم اخر",
|
||||||
"main.tray.tray.unread": "لديك قنوات غير مقروءة",
|
"main.menus.app.file.unhide": "اظهار الكل",
|
||||||
"main.tray.tray.mention": "تم الاشارة أليك",
|
"main.menus.app.help": "المساعدة",
|
||||||
"main.tray.tray.expired": "انتهت الجلسة: الرجاء تسجيل الدخول لمتابعة تلقي الإخطارات.",
|
"main.menus.app.help.RunDiagnostics": "تشغيل التشخيصات",
|
||||||
"main.notifications.upgrade.readyToInstall.title": "انقر لإعادة التشغيل وتثبيت التحديث",
|
"main.menus.app.help.ShowLogs": "اظهار السجلات",
|
||||||
"main.notifications.upgrade.readyToInstall.body": "إصدار سطح المكتب الجديد جاهز للتثبيت الآن.",
|
"main.menus.app.help.checkForUpdates": "تحقق من وجود تحديثات",
|
||||||
"main.notifications.upgrade.newVersion.title": "إصدار سطح المكتب الجديد متاح",
|
"main.menus.app.help.commitString": " التعديل: {hashVersion}",
|
||||||
"main.notifications.upgrade.newVersion.body": "يتوفر إصدار جديد للتنزيل الآن.",
|
"main.menus.app.help.downloadUpdate": "تنزل التحديثات",
|
||||||
"main.notifications.mention.title": "شخص م اشار اليك",
|
"main.menus.app.help.learnMore": "اعرف اكثر...",
|
||||||
"main.notifications.download.complete.title": "تم التنزيل",
|
"main.menus.app.help.restartAndUpdate": "اعد التشغيل والتحديث",
|
||||||
"main.notifications.download.complete.body": "تم التنزيل\n {filename}",
|
"main.menus.app.help.versionString": "اصدار{version}{commit}",
|
||||||
"main.menus.tray.settings": "الاعدادات...",
|
"main.menus.app.history": "&التاريخ",
|
||||||
"main.menus.tray.preferences": "التفضيلات ...",
|
"main.menus.app.history.back": "الرجوع",
|
||||||
"main.menus.app.window.zoom": "تقريب",
|
"main.menus.app.history.forward": "الامام",
|
||||||
"main.menus.app.window.showServers": "اظهار الخوادم",
|
"main.menus.app.view": "&عرض",
|
||||||
"main.menus.app.window.selectPreviousTab": "حدد التبويبة السابقة",
|
"main.menus.app.view.actualSize": "المقاس الحقيقى",
|
||||||
"main.menus.app.window.selectNextTab": "حدد التبويبه التاليه",
|
"main.menus.app.view.clearCacheAndReload": "امسح ذاكرة التخزين المؤقت وإعادة التحميل",
|
||||||
"main.menus.app.window.minimize": "تصغير",
|
"main.menus.app.view.devToolsAppWrapper": "أدوات المطور لغلاف التطبيق",
|
||||||
"main.menus.app.window.closeWindow": "اغلاق النافذة",
|
"main.menus.app.view.devToolsCurrentCallWidget": "أدوات المطور لعنصر (أداة) الاتصال الاضافي(ة)",
|
||||||
"main.menus.app.window.close": "اغلاق",
|
"main.menus.app.view.devToolsCurrentServer": "أدوات المطور للخادم الحالي",
|
||||||
"main.menus.app.window.bringAllToFront": "إحضار الكل إلى المقدمة",
|
"main.menus.app.view.devToolsSubMenu": "أدوات المطور",
|
||||||
"main.menus.app.window": "&النافذة",
|
"main.menus.app.view.downloads": "التنزيلات",
|
||||||
"main.menus.app.view.zoomOut": "تصغير",
|
"main.menus.app.view.find": "بحث..",
|
||||||
"main.menus.app.view.zoomIn": "تكبير",
|
"main.menus.app.view.fullscreen": "تبديل ملىء الشاشة",
|
||||||
"main.menus.app.view.toggleDarkMode": "تبديل الوضع المظلم",
|
"main.menus.app.view.reload": "اعاده تحميل",
|
||||||
"main.menus.app.view.reload": "اعاده تحميل",
|
"main.menus.app.view.toggleDarkMode": "تبديل الوضع المظلم",
|
||||||
"main.menus.app.view.fullscreen": "تبديل ملىء الشاشة",
|
"main.menus.app.view.zoomIn": "تكبير",
|
||||||
"main.menus.app.view.find": "بحث..",
|
"main.menus.app.view.zoomOut": "تصغير",
|
||||||
"main.menus.app.view.downloads": "التنزيلات",
|
"main.menus.app.window": "&النافذة",
|
||||||
"main.menus.app.view.devToolsCurrentServer": "أدوات المطور للخادم الحالي",
|
"main.menus.app.window.bringAllToFront": "إحضار الكل إلى المقدمة",
|
||||||
"main.menus.app.view.devToolsAppWrapper": "أدوات المطور لغلاف التطبيق",
|
"main.menus.app.window.close": "اغلاق",
|
||||||
"main.menus.app.view.clearCacheAndReload": "امسح ذاكرة التخزين المؤقت وإعادة التحميل",
|
"main.menus.app.window.closeWindow": "اغلاق النافذة",
|
||||||
"main.menus.app.view.actualSize": "المقاس الحقيقى",
|
"main.menus.app.window.minimize": "تصغير",
|
||||||
"main.menus.app.view": "&عرض",
|
"main.menus.app.window.selectNextTab": "حدد التبويبه التاليه",
|
||||||
"main.menus.app.history.forward": "الامام",
|
"main.menus.app.window.selectPreviousTab": "حدد التبويبة السابقة",
|
||||||
"main.menus.app.history.back": "الرجوع",
|
"main.menus.app.window.showServers": "اظهار الخوادم",
|
||||||
"main.menus.app.history": "&التاريخ",
|
"main.menus.app.window.zoom": "تقريب",
|
||||||
"main.menus.app.help.versionString": "اصدار{version}{commit}",
|
"main.menus.tray.preferences": "التفضيلات ...",
|
||||||
"main.menus.app.help.ShowLogs": "اظهار السجلات",
|
"main.menus.tray.settings": "الاعدادات...",
|
||||||
"main.menus.app.help.restartAndUpdate": "اعد التشغيل والتحديث",
|
"main.notifications.download.complete.body": "تم التحميل\n{fileName}",
|
||||||
"main.menus.app.help.learnMore": "اعرف اكثر.",
|
"main.notifications.download.complete.title": "تم التنزيل",
|
||||||
"main.menus.app.help.downloadUpdate": "تنزل التحديثات",
|
"main.notifications.mention.title": "شخص م اشار اليك",
|
||||||
"main.app.utils.migrateMacAppStore.dialog.message": "استيراد الاعدادات الحالية",
|
"main.notifications.upgrade.newVersion.body": "يتوفر إصدار جديد للتنزيل الآن.",
|
||||||
"main.app.utils.migrateMacAppStore.button.selectAndImport": "حدد مسار ثم استورد",
|
"main.notifications.upgrade.newVersion.title": "إصدار سطح المكتب الجديد متاح",
|
||||||
"main.app.app.handleAppCertificateError.certError.dialog.detail": "{extraDetail}الاصل: {origin}\nخطأ: {error}",
|
"main.notifications.upgrade.readyToInstall.body": "إصدار سطح المكتب الجديد جاهز للتثبيت الآن.",
|
||||||
"main.allowProtocolDialog.button.saveProtocolAsAllowed": "نعم (احفظ {protocol} على النحو المسموح به)",
|
"main.notifications.upgrade.readyToInstall.title": "انقر لإعادة التشغيل وتثبيت التحديث",
|
||||||
"main.menus.app.help.RunDiagnostics": "تشغيل التشخيصات",
|
"main.permissionsManager.checkPermission.dialog.detail.geolocation": "سيستخدم {appName} الموقع لإعداد منطقتك الزمنية. ويمكنك دائمًا تغيير ذلك لاحقًا في إعدادات جهاز الكمبيوتر الخاص بك.",
|
||||||
"main.menus.app.help.commitString": " commit: {hashVersion}",
|
"main.permissionsManager.checkPermission.dialog.detail.media": "{appName} سوف يستخدم المايكروفون و الكاميرا من أجل الاتصالات و الملاحظات الصوتية، يمكنك تغيير هذا لاحقاً من خلال الإعدادات.",
|
||||||
"common.tabs.TAB_PLAYBOOKS": "Playbooks",
|
"main.permissionsManager.checkPermission.dialog.detail.notifications": "{appName} سوف يرسل اشعارات للرسائل والاتصالات. يمكنك ضبط تفضيلات الاشعارات في الإعدادات.",
|
||||||
"renderer.components.configureServer.connect.saving": "توصيل",
|
"main.permissionsManager.checkPermission.dialog.message.geolocation": "{appName} ({url}) يود الوصول الى موقعك.",
|
||||||
"renderer.components.configureServer.connect.default": "يتصل",
|
"main.permissionsManager.checkPermission.dialog.message.media": "{appName} ({url}) يود الوصول الى الكاميرا والمايكروفون.",
|
||||||
"renderer.components.configureServer.cardtitle": "أدخل تفاصيل الخادم الخاص بك",
|
"main.permissionsManager.checkPermission.dialog.message.notifications": "{appName} ({url}) يود إرسال الإشعارات.",
|
||||||
"renderer.components.autoSaveIndicator.saving": "يحفظ",
|
"main.permissionsManager.checkPermission.dialog.title": "تم طلب الإذن",
|
||||||
"renderer.components.autoSaveIndicator.saved": "حفظ",
|
"main.tray.tray.expired": "انتهت الجلسة: الرجاء تسجيل الدخول لمتابعة تلقي الإخطارات.",
|
||||||
"main.windows.mainWindow.minimizeToTray.dialog.title": "تصغير إلى الصينية",
|
"main.tray.tray.mention": "تم ذِكرك",
|
||||||
"main.windows.mainWindow.minimizeToTray.dialog.message": "سيستمر تشغيل {appName} في علبة النظام. يمكن تعطيل هذا في الإعدادات."
|
"main.tray.tray.unread": "لديك قنوات غير مقروءة",
|
||||||
|
"main.views.viewManager.handleDeepLink.error.body": "لا يوجد خادم مهيأ في التطبيق يطابق عنوان url المطلوب: {url}",
|
||||||
|
"main.views.viewManager.handleDeepLink.error.title": "لا يوجد خادم مطابق",
|
||||||
|
"main.windows.mainWindow.closeApp.dialog.checkboxLabel": "لا تسأل مرة أخرى",
|
||||||
|
"main.windows.mainWindow.closeApp.dialog.detail": "لن تتلقى بعد الآن إشعارات بالرسائل. إذا كنت تريد ترك {appName} قيد التشغيل في مصفوفة النظام ، فيمكنك تمكين هذا في الإعدادات.",
|
||||||
|
"main.windows.mainWindow.closeApp.dialog.message": "هل أنت متأكد من أنك تريد الخروج؟",
|
||||||
|
"main.windows.mainWindow.closeApp.dialog.title": "اغلاق التطبيق",
|
||||||
|
"main.windows.mainWindow.minimizeToTray.dialog.checkboxLabel": "لا تظهر مرة أخرى",
|
||||||
|
"main.windows.mainWindow.minimizeToTray.dialog.message": "سيستمر تشغيل {appName} في علبة النظام. يمكن تعطيل هذا في الإعدادات.",
|
||||||
|
"main.windows.mainWindow.minimizeToTray.dialog.title": "تصغير إلى الصينية",
|
||||||
|
"renderer.components.autoSaveIndicator.saved": "تم الحفظ",
|
||||||
|
"renderer.components.autoSaveIndicator.saving": "جاري الحفظ...",
|
||||||
|
"renderer.components.configureServer.cardtitle": "أدخل تفاصيل الخادم الخاص بك",
|
||||||
|
"renderer.components.configureServer.connect.default": "يتصل",
|
||||||
|
"renderer.components.configureServer.connect.override": "الإتصال على أي حال",
|
||||||
|
"renderer.components.configureServer.connect.saving": "جاري الإتصال…",
|
||||||
|
"renderer.components.configureServer.name.placeholder": "اسم الخادم",
|
||||||
|
"renderer.components.configureServer.url.info": "رابط الخادم الذي يخص Mattermost",
|
||||||
|
"renderer.components.configureServer.url.validating": "جاري التحقق...",
|
||||||
|
"renderer.components.errorView.cannotConnectToAppName": "لا يمكن الاتصال بـ{appName}",
|
||||||
|
"renderer.components.errorView.havingTroubleConnecting": "نواجه مشكلة في الاتصال بـ {appName} . سنستمر في محاولة إقامة اتصال.",
|
||||||
|
"renderer.components.errorView.refreshThenVerify": "إذا لم يعمل تحديث هذه الصفحة (Ctrl+R أو Command+R)، فيرجى التحقق من ما يلي:",
|
||||||
|
"renderer.components.errorView.troubleshooting.browserView.canReachFromBrowserWindow": "يمكنك الوصول إلى <link>{url}</link> من خلال نافذة متصفح.",
|
||||||
|
"renderer.components.errorView.troubleshooting.computerIsConnected": "جهازك متصل بالانترنت.",
|
||||||
|
"renderer.components.errorView.troubleshooting.urlIsCorrect.appNameIsCorrect": "إرتباط منصة {appName} <link>{url}</link> صحيح",
|
||||||
|
"renderer.components.extraBar.back": "رجوع",
|
||||||
|
"renderer.components.input.required": "هذه الخانة مطلوبة",
|
||||||
|
"renderer.components.mainPage.contextMenu.ariaLabel": "قائمة الخيارات",
|
||||||
|
"renderer.components.mainPage.titleBar": "{appName}",
|
||||||
|
"renderer.components.newServerModal.error.nameRequired": "الاسم مطلوب.",
|
||||||
|
"renderer.components.newServerModal.validating": "جاري التحقق...",
|
||||||
|
"renderer.components.saveButton.save": "حفظ",
|
||||||
|
"renderer.components.saveButton.saving": "جاري الحفظ",
|
||||||
|
"renderer.components.settingsPage.afterRestart": "يسري مفعول الإعداد بعد إعادة تشغيل التطبيق.",
|
||||||
|
"renderer.components.settingsPage.appLanguage": "ضبط لغة التطبيق (اختباري)",
|
||||||
|
"renderer.components.settingsPage.appOptions": "خيارات التطبيق",
|
||||||
|
"renderer.components.settingsPage.bounceIcon.once": "مرة",
|
||||||
|
"renderer.components.settingsPage.bounceIcon.untilOpenApp": "حتى أفتح التطبيق",
|
||||||
|
"renderer.components.settingsPage.checkSpelling": "التحقق من الإملاء",
|
||||||
|
"renderer.components.settingsPage.checkSpelling.preferredLanguages": "اختر اللغة أو اللغات المرغوبة",
|
||||||
|
"renderer.components.settingsPage.flashWindow.description.note": "ملاحظة: ",
|
||||||
|
"renderer.components.settingsPage.fullscreen.description": "إذا تم التمكين، فسيتم فتح تطبيق {appName} دائماً في وضع ملء الشاشة",
|
||||||
|
"renderer.downloadsDropdown.Update.ANewVersionIsAvailableToInstall": "يتوفر إصدار جديد من تطبيق سطح المكتب لـ{appName} (الإصدار {version}) للتثبيت."
|
||||||
}
|
}
|
||||||
|
|
604
i18n/en_AU.json
604
i18n/en_AU.json
|
@ -1,303 +1,305 @@
|
||||||
{
|
{
|
||||||
"main.autoUpdater.update.dialog.button.restartAndUpdate": "Restart and Update",
|
"common.permissions.canBasicAuth": "Web Authentication",
|
||||||
"main.autoUpdater.update.dialog.button.remindMeLater": "Remind me later",
|
"common.tabs.TAB_FOCALBOARD": "Boards",
|
||||||
"main.autoUpdater.noUpdate.message": "You're up to date",
|
"common.tabs.TAB_MESSAGING": "Channels",
|
||||||
"main.autoUpdater.noUpdate.detail": "You are using the latest version of the {appName} Desktop App (version {version}). You'll be notified when a new version is available to install.",
|
"common.tabs.TAB_PLAYBOOKS": "Playbooks",
|
||||||
"main.autoUpdater.download.dialog.message": "New desktop version available",
|
"label.accept": "Accept",
|
||||||
"main.autoUpdater.download.dialog.detail": "A new version of the {appName} Desktop App is available for you to download and install now.",
|
"label.add": "Add",
|
||||||
"main.autoUpdater.download.dialog.button.remindMeLater": "Remind me later",
|
"label.allow": "Allow",
|
||||||
"main.autoUpdater.download.dialog.button.download": "Download",
|
"label.cancel": "Cancel",
|
||||||
"main.app.utils.migrateMacAppStore.dialog.message": "Import Existing Configuration",
|
"label.change": "Change",
|
||||||
"main.app.utils.migrateMacAppStore.dialog.detail": "It appears that an existing {appName} configuration exists, would you like to import it? You will be asked to pick the correct configuration directory.",
|
"label.close": "Close",
|
||||||
"main.app.utils.migrateMacAppStore.button.selectAndImport": "Select Directory and Import",
|
"label.deny": "Deny",
|
||||||
"main.app.utils.migrateMacAppStore.button.dontImport": "Don't Import",
|
"label.denyPermanently": "Deny Permanently",
|
||||||
"main.app.initialize.downloadBox.allFiles": "All files",
|
"label.login": "Login",
|
||||||
"main.app.app.handleAppCertificateError.dialog.extraDetail": "Certificate is different from previous one.\n\n",
|
"label.no": "No",
|
||||||
"main.app.app.handleAppCertificateError.certNotTrusted.dialog.title": "Certificate Not Trusted",
|
"label.ok": "OK",
|
||||||
"main.app.app.handleAppCertificateError.certNotTrusted.dialog.message": "Certificate from '\\{issuerName}'\\ is not trusted.",
|
"label.remove": "Remove",
|
||||||
"main.app.app.handleAppCertificateError.certNotTrusted.button.trustInsecureCertificate": "Trust Insecure Certificate",
|
"label.save": "Save",
|
||||||
"main.app.app.handleAppCertificateError.certNotTrusted.button.cancelConnection": "Cancel Connection",
|
"label.yes": "Yes",
|
||||||
"main.app.app.handleAppCertificateError.certError.dialog.title": "Certificate Error",
|
"main.CriticalErrorHandler.uncaughtException.button.reopen": "Reopen",
|
||||||
"main.app.app.handleAppCertificateError.certError.dialog.message": "There is a configuration issue with this Mattermost server, or someone is trying to intercept your connection. You also may need to sign into the Wi-Fi you are connected to using your web browser.",
|
"main.CriticalErrorHandler.uncaughtException.button.showDetails": "Show Details",
|
||||||
"main.app.app.handleAppCertificateError.certError.dialog.detail": "{extraDetail}origin: {origin}\nError: {error}",
|
"main.CriticalErrorHandler.uncaughtException.dialog.message": "The {appName} app quit unexpectedly. Click '\\{showDetails}'\\ to learn more or '\\{reopen}'\\ to open the application again.\n\nInternal error: {err}",
|
||||||
"main.app.app.handleAppCertificateError.certError.button.moreDetails": "More Details",
|
"main.CriticalErrorHandler.unresponsive.dialog.message": "The window is no longer responsive.\nDo you want to wait until the window becomes responsive again?",
|
||||||
"main.app.app.handleAppCertificateError.certError.button.cancelConnection": "Cancel Connection",
|
"main.allowProtocolDialog.button.saveProtocolAsAllowed": "Yes (Save {protocol} as allowed)",
|
||||||
"main.allowProtocolDialog.title": "Non http(s) protocol",
|
"main.allowProtocolDialog.detail": "The requested link is {URL}. Do you want to continue?",
|
||||||
"main.allowProtocolDialog.message": "{protocol} link requires an external application.",
|
"main.allowProtocolDialog.message": "{protocol} link requires an external application.",
|
||||||
"main.allowProtocolDialog.detail": "The requested link is {URL}. Do you want to continue?",
|
"main.allowProtocolDialog.title": "Non http(s) protocol",
|
||||||
"main.allowProtocolDialog.button.saveProtocolAsAllowed": "Yes (Save {protocol} as allowed)",
|
"main.app.app.handleAppCertificateError.certError.button.cancelConnection": "Cancel Connection",
|
||||||
"label.yes": "Yes",
|
"main.app.app.handleAppCertificateError.certError.button.moreDetails": "More Details",
|
||||||
"label.save": "Save",
|
"main.app.app.handleAppCertificateError.certError.dialog.detail": "{extraDetail}origin: {origin}\nError: {error}",
|
||||||
"label.remove": "Remove",
|
"main.app.app.handleAppCertificateError.certError.dialog.message": "There is a configuration issue with this Mattermost server, or someone is trying to intercept your connection. You also may need to sign into the Wi-Fi you are connected to using your web browser.",
|
||||||
"label.ok": "OK",
|
"main.app.app.handleAppCertificateError.certError.dialog.title": "Certificate Error",
|
||||||
"label.no": "No",
|
"main.app.app.handleAppCertificateError.certNotTrusted.button.cancelConnection": "Cancel Connection",
|
||||||
"label.login": "Login",
|
"main.app.app.handleAppCertificateError.certNotTrusted.button.trustInsecureCertificate": "Trust Insecure Certificate",
|
||||||
"label.close": "Close",
|
"main.app.app.handleAppCertificateError.certNotTrusted.dialog.message": "Certificate from '\\{issuerName}'\\ is not trusted.",
|
||||||
"label.change": "Change",
|
"main.app.app.handleAppCertificateError.certNotTrusted.dialog.title": "Certificate Not Trusted",
|
||||||
"label.cancel": "Cancel",
|
"main.app.app.handleAppCertificateError.dialog.extraDetail": "Certificate is different from previous one.\n\n",
|
||||||
"label.add": "Add",
|
"main.app.initialize.downloadBox.allFiles": "All files",
|
||||||
"label.accept": "Accept",
|
"main.app.utils.migrateMacAppStore.button.dontImport": "Don't Import",
|
||||||
"common.tabs.TAB_PLAYBOOKS": "Playbooks",
|
"main.app.utils.migrateMacAppStore.button.selectAndImport": "Select Directory and Import",
|
||||||
"common.tabs.TAB_MESSAGING": "Channels",
|
"main.app.utils.migrateMacAppStore.dialog.detail": "It appears that an existing {appName} configuration exists, would you like to import it? You will be asked to pick the correct configuration directory.",
|
||||||
"common.tabs.TAB_FOCALBOARD": "Boards",
|
"main.app.utils.migrateMacAppStore.dialog.message": "Import Existing Configuration",
|
||||||
"common.permissions.canBasicAuth": "Web Authentication",
|
"main.autoUpdater.download.dialog.button.download": "Download",
|
||||||
"renderer.modals.permission.permissionModal.body": "A site that's not included in your Mattermost server configuration requires access for {permission}.",
|
"main.autoUpdater.download.dialog.button.remindMeLater": "Remind me later",
|
||||||
"renderer.modals.login.loginModal.username": "User Name",
|
"main.autoUpdater.download.dialog.detail": "A new version of the {appName} Desktop App is available for you to download and install now.",
|
||||||
"renderer.modals.login.loginModal.title": "Authentication Required",
|
"main.autoUpdater.download.dialog.message": "New desktop version available",
|
||||||
"renderer.modals.login.loginModal.password": "Password",
|
"main.autoUpdater.noUpdate.detail": "You are using the latest version of the {appName} Desktop App (version {version}). You'll be notified when a new version is available to install.",
|
||||||
"renderer.modals.login.loginModal.message.server": "The server {url} requires a username and password.",
|
"main.autoUpdater.noUpdate.message": "You're up to date",
|
||||||
"renderer.modals.login.loginModal.message.proxy": "The proxy {host}:{port} requires a username and password.",
|
"main.autoUpdater.update.dialog.button.remindMeLater": "Remind me later",
|
||||||
"renderer.modals.certificate.certificateModal.title": "Select a certificate",
|
"main.autoUpdater.update.dialog.button.restartAndUpdate": "Restart and Update",
|
||||||
"renderer.modals.certificate.certificateModal.subtitle": "Select a certificate to authenticate yourself to {url}",
|
"main.autoUpdater.update.dialog.detail": "A new version of the {appName} Desktop App is ready to install.",
|
||||||
"renderer.modals.certificate.certificateModal.subject": "Subject",
|
"main.autoUpdater.update.dialog.message": "A new version is ready to install",
|
||||||
"renderer.modals.certificate.certificateModal.serial": "Serial",
|
"main.badge.noUnreads": "You have no unread messages",
|
||||||
"renderer.modals.certificate.certificateModal.noCertsAvailable": "No certificates available",
|
"main.badge.sessionExpired": "Session Expired: Please sign in to continue receiving notifications.",
|
||||||
"renderer.modals.certificate.certificateModal.issuer": "Issuer",
|
"main.badge.unreadChannels": "You have unread channels",
|
||||||
"renderer.modals.certificate.certificateModal.certInfoButton": "Certificate Information",
|
"main.badge.unreadMentions": "You have unread mentions ({mentionCount})",
|
||||||
"renderer.dropdown.servers": "Servers",
|
"main.downloadsManager.resetDownloadsFolder": "Please reset the folder where files will download",
|
||||||
"renderer.dropdown.addAServer": "Add a server",
|
"main.downloadsManager.specifyDownloadsFolder": "Specify the folder where files will download",
|
||||||
"renderer.components.serverDropdownButton.noServersConfigured": "No servers configured",
|
"main.menus.app.edit": "&Edit",
|
||||||
"renderer.components.showCertificateModal.subjectName": "Subject Name",
|
"main.menus.app.edit.copy": "Copy",
|
||||||
"renderer.components.showCertificateModal.serialNumber": "Serial Number",
|
"main.menus.app.edit.cut": "Cut",
|
||||||
"renderer.components.showCertificateModal.publicKeyInfo": "Public Key Info",
|
"main.menus.app.edit.paste": "Paste",
|
||||||
"renderer.components.showCertificateModal.notValidBefore": "Not Valid Before",
|
"main.menus.app.edit.pasteAndMatchStyle": "Paste and Match Style",
|
||||||
"renderer.components.showCertificateModal.notValidAfter": "Not Valid After",
|
"main.menus.app.edit.redo": "Redo",
|
||||||
"renderer.components.showCertificateModal.noCertSelected": "No certificate selected",
|
"main.menus.app.edit.selectAll": "Select All",
|
||||||
"renderer.components.showCertificateModal.issuerName": "Issuer Name",
|
"main.menus.app.edit.undo": "Undo",
|
||||||
"renderer.components.showCertificateModal.commonName": "Common Name",
|
"main.menus.app.file": "&File",
|
||||||
"renderer.components.showCertificateModal.algorithm": "Algorithm",
|
"main.menus.app.file.about": "About {appName}",
|
||||||
"renderer.components.settingsPage.updates.checkNow": "Check for Updates now",
|
"main.menus.app.file.exit": "Exit",
|
||||||
"renderer.components.settingsPage.updates.automatic.description": "If enabled, updates to the Desktop App will download automatically and you will be notified when they're ready to install.",
|
"main.menus.app.file.hide": "Hide {appName}",
|
||||||
"renderer.components.settingsPage.updates.automatic": "Automatically check for updates",
|
"main.menus.app.file.hideOthers": "Hide Others",
|
||||||
"renderer.components.settingsPage.updates": "Updates",
|
"main.menus.app.file.preferences": "Preferences",
|
||||||
"renderer.components.settingsPage.trayIcon.theme.systemDefault": "Use system default",
|
"main.menus.app.file.quit": "Quit {appName}",
|
||||||
"renderer.components.settingsPage.trayIcon.theme.light": "Light",
|
"main.menus.app.file.settings": "Settings",
|
||||||
"renderer.components.settingsPage.trayIcon.theme.dark": "Dark",
|
"main.menus.app.file.signInToAnotherServer": "Sign in to another server",
|
||||||
"renderer.components.settingsPage.trayIcon.theme": "Icon theme: ",
|
"main.menus.app.file.unhide": "Show All",
|
||||||
"renderer.components.settingsPage.trayIcon.show.darwin": "Show {appName} icon in the menu bar",
|
"main.menus.app.help": "Hel&p",
|
||||||
"renderer.components.settingsPage.trayIcon.show": "Show icon in the notification area",
|
"main.menus.app.help.RunDiagnostics": "Run diagnostics",
|
||||||
"renderer.components.settingsPage.startAppOnLogin.description": "If enabled, the app starts automatically when you log in to your machine.",
|
"main.menus.app.help.ShowLogs": "Show logs",
|
||||||
"renderer.components.settingsPage.startAppOnLogin": "Start app on login",
|
"main.menus.app.help.checkForUpdates": "Check for Updates",
|
||||||
"renderer.components.settingsPage.showUnreadBadge.description": "Regardless of this setting, mentions are always indicated with a red badge and item count on the {taskbar} icon.",
|
"main.menus.app.help.commitString": " commit: {hashVersion}",
|
||||||
"renderer.components.settingsPage.showUnreadBadge": "Show red badge on {taskbar} icon to indicate unread messages",
|
"main.menus.app.help.downloadUpdate": "Download Update",
|
||||||
"renderer.components.settingsPage.saving.error": "Your changes can't be saved. Please try again.",
|
"main.menus.app.help.learnMore": "Learn More...",
|
||||||
"renderer.components.settingsPage.minimizeToTray.description": "If enabled, the app stays running in the notification area after app window is closed.",
|
"main.menus.app.help.restartAndUpdate": "Restart and Update",
|
||||||
"renderer.components.settingsPage.minimizeToTray": "Leave the app running in the notification area when the application window is closed",
|
"main.menus.app.help.versionString": "Version {version}{commit}",
|
||||||
"renderer.components.settingsPage.loggingLevel.level.warn": "Errors and Warnings (warn)",
|
"main.menus.app.history": "&History",
|
||||||
"renderer.components.settingsPage.loggingLevel.level.verbose": "Verbose (verbose)",
|
"main.menus.app.history.back": "Back",
|
||||||
"renderer.components.settingsPage.loggingLevel.level.silly": "Finest (silly)",
|
"main.menus.app.history.forward": "Forward",
|
||||||
"renderer.components.settingsPage.loggingLevel.level.info": "Informational (info)",
|
"main.menus.app.view": "&View",
|
||||||
"renderer.components.settingsPage.loggingLevel.level.error": "Errors (error)",
|
"main.menus.app.view.actualSize": "Actual Size",
|
||||||
"renderer.components.settingsPage.loggingLevel.level.debug": "Debug (debug)",
|
"main.menus.app.view.clearCacheAndReload": "Clear Cache and Reload",
|
||||||
"renderer.components.settingsPage.loggingLevel.description.subtitle": "Increasing the log level increases disk space usage and can impact performance. It is recommended to only increase the log level if you are having issues.",
|
"main.menus.app.view.devToolsAppWrapper": "Developer Tools for Application Wrapper",
|
||||||
"renderer.components.settingsPage.loggingLevel.description": "Logging is helpful for developers and support to isolate issues you may be encountering with the desktop app.",
|
"main.menus.app.view.devToolsCurrentCallWidget": "Developer Tools for Call Widget",
|
||||||
"renderer.components.settingsPage.loggingLevel": "Logging level",
|
"main.menus.app.view.devToolsCurrentServer": "Developer Tools for Current Server",
|
||||||
"renderer.components.settingsPage.loadingConfig": "Loading configuration...",
|
"main.menus.app.view.devToolsSubMenu": "Developer Tools",
|
||||||
"renderer.components.settingsPage.launchAppMinimized.description": "If enabled, the app will start in system tray, and will not show the window on launch.",
|
"main.menus.app.view.downloads": "Downloads",
|
||||||
"renderer.components.settingsPage.launchAppMinimized": "Launch app minimised",
|
"main.menus.app.view.find": "Find...",
|
||||||
"renderer.components.settingsPage.header": "Settings",
|
"main.menus.app.view.fullscreen": "Toggle Full Screen",
|
||||||
"renderer.components.settingsPage.fullscreen.description": "If enabled, the {appName} application will always open in full screen",
|
"main.menus.app.view.reload": "Reload",
|
||||||
"renderer.components.settingsPage.fullscreen": "Open app in fullscreen",
|
"main.menus.app.view.toggleDarkMode": "Toggle Dark Mode",
|
||||||
"renderer.components.settingsPage.flashWindow.description.note": "NOTE: ",
|
"main.menus.app.view.zoomIn": "Zoom In",
|
||||||
"renderer.components.settingsPage.flashWindow.description.linuxFunctionality": "This functionality may not work with all Linux window managers.",
|
"main.menus.app.view.zoomOut": "Zoom Out",
|
||||||
"renderer.components.settingsPage.flashWindow.description": "If enabled, the taskbar icon will flash for a few seconds when a new message is received.",
|
"main.menus.app.window": "&Window",
|
||||||
"renderer.components.settingsPage.flashWindow": "Flash taskbar icon when a new message is received",
|
"main.menus.app.window.bringAllToFront": "Bring all to front",
|
||||||
"renderer.components.settingsPage.enableHardwareAcceleration.description": "If enabled, {appName} UI is rendered more efficiently but can lead to decreased stability for some systems.",
|
"main.menus.app.window.close": "Close",
|
||||||
"renderer.components.settingsPage.enableHardwareAcceleration": "Use GPU hardware acceleration",
|
"main.menus.app.window.closeWindow": "Close Window",
|
||||||
"renderer.components.settingsPage.downloadLocation.description": "Specify the folder where files will download.",
|
"main.menus.app.window.minimize": "Minimise",
|
||||||
"renderer.components.settingsPage.downloadLocation": "Download Location",
|
"main.menus.app.window.selectNextTab": "Select Next Tab",
|
||||||
"renderer.components.settingsPage.checkSpelling.specifyURL": "Specify the URL where dictionary definitions can be retrieved",
|
"main.menus.app.window.selectPreviousTab": "Select Previous Tab",
|
||||||
"renderer.components.settingsPage.checkSpelling.revertToDefault": "Revert to default",
|
"main.menus.app.window.showServers": "Show Servers",
|
||||||
"renderer.components.settingsPage.checkSpelling.preferredLanguages": "Select preferred language(s)",
|
"main.menus.app.window.zoom": "Zoom",
|
||||||
"renderer.components.settingsPage.checkSpelling.editSpellcheckUrl": "Use an alternative dictionary URL",
|
"main.menus.tray.preferences": "Preferences",
|
||||||
"renderer.components.settingsPage.checkSpelling.description": "Highlight misspelt words in your messages based on your system language or language preference.",
|
"main.menus.tray.settings": "Settings",
|
||||||
"renderer.components.settingsPage.checkSpelling": "Check spelling",
|
"main.notifications.download.complete.body": "Download Complete \n {fileName}",
|
||||||
"renderer.components.settingsPage.bounceIcon.untilOpenApp": "until I open the app",
|
"main.notifications.download.complete.title": "Download Complete",
|
||||||
"renderer.components.settingsPage.bounceIcon.once": "once",
|
"main.notifications.mention.title": "Someone mentioned you",
|
||||||
"renderer.components.settingsPage.bounceIcon.description": "If enabled, the Dock icon bounces once or until the user opens the app when a new notification is received.",
|
"main.notifications.upgrade.newVersion.body": "A new version is available for you to download now.",
|
||||||
"renderer.components.settingsPage.bounceIcon": "Bounce the Dock icon",
|
"main.notifications.upgrade.newVersion.title": "New desktop version available",
|
||||||
"renderer.components.settingsPage.appOptions": "App Options",
|
"main.notifications.upgrade.readyToInstall.body": "A new desktop version is ready to install now.",
|
||||||
"renderer.components.settingsPage.appLanguage.useSystemDefault": "Use system default",
|
"main.notifications.upgrade.readyToInstall.title": "Click to restart and install update",
|
||||||
"renderer.components.settingsPage.appLanguage.description": "Chooses the language that the Desktop App will use for menu items and popups. This feature is still in beta, and some languages will be missing translation strings.",
|
"main.permissionsManager.checkPermission.dialog.detail.geolocation": "{appName} will use the location for setting up your timezone. You can always change this later in your computer's settings.",
|
||||||
"renderer.components.settingsPage.appLanguage": "Set app language (beta)",
|
"main.permissionsManager.checkPermission.dialog.detail.media": "{appName} will use the microphone and camera for calls and voice messages. You can always change this later in your computer's settings.",
|
||||||
"renderer.components.settingsPage.afterRestart": "Setting takes effect after restarting the app.",
|
"main.permissionsManager.checkPermission.dialog.detail.notifications": "{appName} will send you notifications for messages and calls. You can configure your notification preferences in Settings.",
|
||||||
"renderer.components.removeServerModal.confirm": "Confirm you wish to remove the {serverName} server?",
|
"main.permissionsManager.checkPermission.dialog.message.geolocation": "{appName} ({url}) would like to access your location.",
|
||||||
"renderer.components.removeServerModal.title": "Remove Server",
|
"main.permissionsManager.checkPermission.dialog.message.media": "{appName} ({url}) would like to access the microphone and camera.",
|
||||||
"renderer.components.removeServerModal.body": "This will remove the server from your Desktop App but will not delete any of its data - you can add the server back to the app at any time.",
|
"main.permissionsManager.checkPermission.dialog.message.notifications": "{appName} ({url}) would like to send you notifications.",
|
||||||
"renderer.components.newServerModal.title.edit": "Edit Server",
|
"main.permissionsManager.checkPermission.dialog.title": "Permission Requested",
|
||||||
"renderer.components.newServerModal.title.add": "Add Server",
|
"main.tray.tray.expired": "Session Expired: Please sign in to continue receiving notifications.",
|
||||||
"renderer.components.newServerModal.serverURL.description": "The URL of your Mattermost server. Must start with http:// or https://.",
|
"main.tray.tray.mention": "You have been mentioned",
|
||||||
"renderer.components.newServerModal.serverURL": "Server URL",
|
"main.tray.tray.unread": "You have unread channels",
|
||||||
"renderer.components.newServerModal.serverDisplayName.description": "The name of the server displayed on your desktop app tab bar.",
|
"main.views.viewManager.handleDeepLink.error.body": "There is no configured server in the app that matches the requested URL: {url}",
|
||||||
"renderer.components.newServerModal.serverDisplayName": "Server Display Name",
|
"main.views.viewManager.handleDeepLink.error.title": "No matching server",
|
||||||
"renderer.components.newServerModal.error.urlRequired": "URL is required.",
|
"main.windows.mainWindow.closeApp.dialog.checkboxLabel": "Don't ask again",
|
||||||
"renderer.components.newServerModal.error.urlNeedsHttp": "URL should start with http:// or https://.",
|
"main.windows.mainWindow.closeApp.dialog.detail": "You will no longer receive notifications for messages. If you want to leave {appName} running in the system tray, you can enable this in Settings.",
|
||||||
"renderer.components.newServerModal.error.urlIncorrectFormatting": "URL is not formatted correctly.",
|
"main.windows.mainWindow.closeApp.dialog.message": "Are you sure you want to quit?",
|
||||||
"renderer.components.newServerModal.error.serverUrlExists": "A server with the same URL already exists.",
|
"main.windows.mainWindow.closeApp.dialog.title": "Close Application",
|
||||||
"renderer.components.newServerModal.error.serverNameExists": "A server with the same name already exists.",
|
"main.windows.mainWindow.minimizeToTray.dialog.checkboxLabel": "Don't show again",
|
||||||
"renderer.components.newServerModal.error.nameRequired": "Name is required.",
|
"main.windows.mainWindow.minimizeToTray.dialog.message": "{appName} will continue to run in the system tray. This can be disabled in Settings.",
|
||||||
"renderer.components.mainPage.updateReady": "Update ready to install",
|
"main.windows.mainWindow.minimizeToTray.dialog.title": "Minimise to Tray",
|
||||||
"renderer.components.mainPage.updateAvailable": "Update available",
|
"renderer.components.autoSaveIndicator.saved": "Saved",
|
||||||
"renderer.components.mainPage.downloadingUpdate": "Downloading update. {percentDone}% of {total} @ {speed}/s",
|
"renderer.components.autoSaveIndicator.saving": "Saving...",
|
||||||
"renderer.components.mainPage.contextMenu.ariaLabel": "Context menu",
|
"renderer.components.configureServer.cardtitle": "Enter your server details",
|
||||||
"renderer.components.extraBar.back": "Back",
|
"renderer.components.configureServer.connect.default": "Connect",
|
||||||
"renderer.components.errorView.troubleshooting.urlIsCorrect.appNameIsCorrect": "The {appName} URL <link>{url}</link> is correct",
|
"renderer.components.configureServer.connect.override": "Connect anyway",
|
||||||
"renderer.components.errorView.troubleshooting.computerIsConnected": "Your computer is connected to the internet.",
|
"renderer.components.configureServer.connect.saving": "Connecting…",
|
||||||
"renderer.components.errorView.troubleshooting.browserView.canReachFromBrowserWindow": "You can reach <link>{url}</link> from a browser window.",
|
"renderer.components.configureServer.name.info": "The name that will be displayed in your server list",
|
||||||
"renderer.components.errorView.refreshThenVerify": "If refreshing this page (Ctrl+R or Command+R) does not work, please verify that:",
|
"renderer.components.configureServer.name.placeholder": "Server display name",
|
||||||
"renderer.components.errorView.cannotConnectToAppName": "Cannot connect to {appName}",
|
"renderer.components.configureServer.subtitle": "Set up your first server to connect to your<br></br>team’s communication hub",
|
||||||
"renderer.components.autoSaveIndicator.saving": "Saving...",
|
"renderer.components.configureServer.title": "Connect to a server",
|
||||||
"renderer.components.autoSaveIndicator.saved": "Saved",
|
"renderer.components.configureServer.url.info": "The URL of your Mattermost server",
|
||||||
"main.windows.mainWindow.minimizeToTray.dialog.title": "Minimise to Tray",
|
"renderer.components.configureServer.url.insecure": "Your server URL is potentially insecure. For best results, use a URL with the HTTPS protocol.",
|
||||||
"main.windows.mainWindow.minimizeToTray.dialog.message": "{appName} will continue to run in the system tray. This can be disabled in Settings.",
|
"renderer.components.configureServer.url.notMattermost": "The server URL provided does not appear to point to a valid Mattermost server. Please verify the URL and check your connection.",
|
||||||
"main.windows.mainWindow.minimizeToTray.dialog.checkboxLabel": "Don't show again",
|
"renderer.components.configureServer.url.ok": "Server URL is valid. Server version: {serverVersion}",
|
||||||
"main.windows.mainWindow.closeApp.dialog.title": "Close Application",
|
"renderer.components.configureServer.url.placeholder": "Server URL",
|
||||||
"main.windows.mainWindow.closeApp.dialog.message": "Are you sure you want to quit?",
|
"renderer.components.configureServer.url.urlNotMatched": "The server URL provided does not match the configured Site URL on your Mattermost server. Server version: {serverVersion}",
|
||||||
"main.windows.mainWindow.closeApp.dialog.detail": "You will no longer receive notifications for messages. If you want to leave {appName} running in the system tray, you can enable this in Settings.",
|
"renderer.components.configureServer.url.urlUpdated": "The server URL provided has been updated to match the configured Site URL on your Mattermost server. Server version: {serverVersion}",
|
||||||
"main.windows.mainWindow.closeApp.dialog.checkboxLabel": "Don't ask again",
|
"renderer.components.configureServer.url.validating": "Validating...",
|
||||||
"main.views.viewManager.handleDeepLink.error.title": "No matching server",
|
"renderer.components.errorView.cannotConnectToAppName": "Cannot connect to {appName}",
|
||||||
"main.views.viewManager.handleDeepLink.error.body": "There is no configured server in the app that matches the requested URL: {url}",
|
"renderer.components.errorView.havingTroubleConnecting": "A connection to {appName} couldn't be established. Retrying...",
|
||||||
"main.tray.tray.unread": "You have unread channels",
|
"renderer.components.errorView.refreshThenVerify": "If refreshing this page (Ctrl+R or Command+R) does not work, please verify that:",
|
||||||
"main.tray.tray.mention": "You have been mentioned",
|
"renderer.components.errorView.troubleshooting.browserView.canReachFromBrowserWindow": "You can reach <link>{url}</link> from a browser window.",
|
||||||
"main.tray.tray.expired": "Session Expired: Please sign in to continue receiving notifications.",
|
"renderer.components.errorView.troubleshooting.computerIsConnected": "Your computer is connected to the internet.",
|
||||||
"main.notifications.upgrade.readyToInstall.title": "Click to restart and install update",
|
"renderer.components.errorView.troubleshooting.urlIsCorrect.appNameIsCorrect": "The {appName} URL <link>{url}</link> is correct",
|
||||||
"main.notifications.upgrade.readyToInstall.body": "A new desktop version is ready to install now.",
|
"renderer.components.extraBar.back": "Back",
|
||||||
"main.notifications.upgrade.newVersion.title": "New desktop version available",
|
"renderer.components.input.required": "This field is required",
|
||||||
"main.notifications.upgrade.newVersion.body": "A new version is available for you to download now.",
|
"renderer.components.mainPage.contextMenu.ariaLabel": "Context menu",
|
||||||
"main.notifications.mention.title": "Someone mentioned you",
|
"renderer.components.mainPage.downloadingUpdate": "Downloading update. {percentDone}% of {total} @ {speed}/s",
|
||||||
"main.notifications.download.complete.title": "Download Complete",
|
"renderer.components.mainPage.titleBar": "{appName}",
|
||||||
"main.notifications.download.complete.body": "Download Complete \n {fileName}",
|
"renderer.components.mainPage.updateAvailable": "Update available",
|
||||||
"main.menus.tray.settings": "Settings",
|
"renderer.components.mainPage.updateReady": "Update ready to install",
|
||||||
"main.menus.tray.preferences": "Preferences",
|
"renderer.components.newServerModal.error.nameRequired": "Name is required.",
|
||||||
"main.menus.app.window.zoom": "Zoom",
|
"renderer.components.newServerModal.error.serverNameExists": "A server with the same name already exists.",
|
||||||
"main.menus.app.window.showServers": "Show Servers",
|
"renderer.components.newServerModal.error.serverUrlExists": "A server with the same URL already exists.",
|
||||||
"main.menus.app.window.selectPreviousTab": "Select Previous Tab",
|
"renderer.components.newServerModal.error.urlIncorrectFormatting": "URL is not formatted correctly.",
|
||||||
"main.menus.app.window.selectNextTab": "Select Next Tab",
|
"renderer.components.newServerModal.error.urlNeedsHttp": "URL should start with http:// or https://.",
|
||||||
"main.menus.app.window.minimize": "Minimise",
|
"renderer.components.newServerModal.error.urlRequired": "URL is required.",
|
||||||
"main.menus.app.window.closeWindow": "Close Window",
|
"renderer.components.newServerModal.serverDisplayName": "Server Display Name",
|
||||||
"main.menus.app.window.close": "Close",
|
"renderer.components.newServerModal.serverDisplayName.description": "The name of the server displayed on your desktop app tab bar.",
|
||||||
"main.menus.app.window.bringAllToFront": "Bring all to front",
|
"renderer.components.newServerModal.serverURL": "Server URL",
|
||||||
"main.menus.app.window": "&Window",
|
"renderer.components.newServerModal.serverURL.description": "The URL of your Mattermost server. Must start with http:// or https://.",
|
||||||
"main.menus.app.view.zoomOut": "Zoom Out",
|
"renderer.components.newServerModal.success.ok": "Server URL is valid. Server version: {serverVersion}",
|
||||||
"main.menus.app.view.zoomIn": "Zoom In",
|
"renderer.components.newServerModal.title.add": "Add Server",
|
||||||
"main.menus.app.view.toggleDarkMode": "Toggle Dark Mode",
|
"renderer.components.newServerModal.title.edit": "Edit Server",
|
||||||
"main.menus.app.view.reload": "Reload",
|
"renderer.components.newServerModal.validating": "Validating...",
|
||||||
"main.menus.app.view.fullscreen": "Toggle Full Screen",
|
"renderer.components.newServerModal.warning.insecure": "Your server URL is potentially insecure. For best results, use a URL with the HTTPS protocol.",
|
||||||
"main.menus.app.view.find": "Find...",
|
"renderer.components.newServerModal.warning.notMattermost": "The server URL provided does not appear to point to a valid Mattermost server. Please verify the URL and check your connection.",
|
||||||
"main.menus.app.view.devToolsCurrentServer": "Developer Tools for Current Server",
|
"renderer.components.newServerModal.warning.urlNotMatched": "The server URL does not match the configured Site URL on your Mattermost server. Server version: {serverVersion}",
|
||||||
"main.menus.app.view.devToolsAppWrapper": "Developer Tools for Application Wrapper",
|
"renderer.components.newServerModal.warning.urlUpdated": "The server URL provided has been updated to match the configured Site URL on your Mattermost server. Server version: {serverVersion}",
|
||||||
"main.menus.app.view.clearCacheAndReload": "Clear Cache and Reload",
|
"renderer.components.removeServerModal.body": "This will remove the server from your Desktop App but will not delete any of its data - you can add the server back to the app at any time.",
|
||||||
"main.menus.app.view.actualSize": "Actual Size",
|
"renderer.components.removeServerModal.confirm": "Confirm you wish to remove the {serverName} server?",
|
||||||
"main.menus.app.view": "&View",
|
"renderer.components.removeServerModal.title": "Remove Server",
|
||||||
"main.menus.app.history.forward": "Forward",
|
"renderer.components.saveButton.save": "Save",
|
||||||
"main.menus.app.history.back": "Back",
|
"renderer.components.saveButton.saving": "Saving",
|
||||||
"main.menus.app.history": "&History",
|
"renderer.components.serverDropdownButton.noServersConfigured": "No servers configured",
|
||||||
"main.menus.app.help": "Hel&p",
|
"renderer.components.settingsPage.afterRestart": "Setting takes effect after restarting the app.",
|
||||||
"main.menus.app.help.versionString": "Version {version}{commit}",
|
"renderer.components.settingsPage.appLanguage": "Set app language (beta)",
|
||||||
"main.menus.app.help.restartAndUpdate": "Restart and Update",
|
"renderer.components.settingsPage.appLanguage.description": "Chooses the language that the Desktop App will use for menu items and popups. This feature is still in beta, and some languages will be missing translation strings.",
|
||||||
"main.menus.app.help.learnMore": "Learn More...",
|
"renderer.components.settingsPage.appLanguage.useSystemDefault": "Use system default",
|
||||||
"main.menus.app.help.downloadUpdate": "Download Update",
|
"renderer.components.settingsPage.appOptions": "App Options",
|
||||||
"main.menus.app.help.commitString": " commit: {hashVersion}",
|
"renderer.components.settingsPage.bounceIcon": "Bounce the Dock icon",
|
||||||
"main.menus.app.help.checkForUpdates": "Check for Updates",
|
"renderer.components.settingsPage.bounceIcon.description": "If enabled, the Dock icon bounces once or until the user opens the app when a new notification is received.",
|
||||||
"main.menus.app.file.unhide": "Show All",
|
"renderer.components.settingsPage.bounceIcon.once": "once",
|
||||||
"main.menus.app.file.signInToAnotherServer": "Sign in to another server",
|
"renderer.components.settingsPage.bounceIcon.untilOpenApp": "until I open the app",
|
||||||
"main.menus.app.file.settings": "Settings",
|
"renderer.components.settingsPage.checkSpelling": "Check spelling",
|
||||||
"main.menus.app.file.quit": "Quit {appName}",
|
"renderer.components.settingsPage.checkSpelling.description": "Highlight misspelt words in your messages based on your system language or language preference.",
|
||||||
"main.menus.app.file.preferences": "Preferences",
|
"renderer.components.settingsPage.checkSpelling.editSpellcheckUrl": "Use an alternative dictionary URL",
|
||||||
"main.menus.app.file.hideOthers": "Hide Others",
|
"renderer.components.settingsPage.checkSpelling.preferredLanguages": "Select preferred language(s)",
|
||||||
"main.menus.app.file.hide": "Hide {appName}",
|
"renderer.components.settingsPage.checkSpelling.revertToDefault": "Revert to default",
|
||||||
"main.menus.app.file.exit": "Exit",
|
"renderer.components.settingsPage.checkSpelling.specifyURL": "Specify the URL where dictionary definitions can be retrieved",
|
||||||
"main.menus.app.file.about": "About {appName}",
|
"renderer.components.settingsPage.downloadLocation": "Download Location",
|
||||||
"main.menus.app.file": "&File",
|
"renderer.components.settingsPage.downloadLocation.description": "Specify the folder where files will download.",
|
||||||
"main.menus.app.edit.undo": "Undo",
|
"renderer.components.settingsPage.enableHardwareAcceleration": "Use GPU hardware acceleration",
|
||||||
"main.menus.app.edit.selectAll": "Select All",
|
"renderer.components.settingsPage.enableHardwareAcceleration.description": "If enabled, {appName} UI is rendered more efficiently but can lead to decreased stability for some systems.",
|
||||||
"main.menus.app.edit.redo": "Redo",
|
"renderer.components.settingsPage.flashWindow": "Flash taskbar icon when a new message is received",
|
||||||
"main.menus.app.edit.pasteAndMatchStyle": "Paste and Match Style",
|
"renderer.components.settingsPage.flashWindow.description": "If enabled, the taskbar icon will flash for a few seconds when a new message is received.",
|
||||||
"main.menus.app.edit.paste": "Paste",
|
"renderer.components.settingsPage.flashWindow.description.linuxFunctionality": "This functionality may not work with all Linux window managers.",
|
||||||
"main.menus.app.edit.cut": "Cut",
|
"renderer.components.settingsPage.flashWindow.description.note": "NOTE: ",
|
||||||
"main.menus.app.edit.copy": "Copy",
|
"renderer.components.settingsPage.fullscreen": "Open app in fullscreen",
|
||||||
"main.menus.app.edit": "&Edit",
|
"renderer.components.settingsPage.fullscreen.description": "If enabled, the {appName} application will always open in full screen",
|
||||||
"main.CriticalErrorHandler.unresponsive.dialog.message": "The window is no longer responsive.\nDo you want to wait until the window becomes responsive again?",
|
"renderer.components.settingsPage.header": "Settings",
|
||||||
"main.CriticalErrorHandler.uncaughtException.dialog.message": "The {appName} app quit unexpectedly. Click '\\{showDetails}'\\ to learn more or '\\{reopen}'\\ to open the application again.\n\nInternal error: {err}",
|
"renderer.components.settingsPage.launchAppMinimized": "Launch app minimised",
|
||||||
"main.CriticalErrorHandler.uncaughtException.button.showDetails": "Show Details",
|
"renderer.components.settingsPage.launchAppMinimized.description": "If enabled, the app will start in system tray, and will not show the window on launch.",
|
||||||
"main.CriticalErrorHandler.uncaughtException.button.reopen": "Reopen",
|
"renderer.components.settingsPage.loadingConfig": "Loading configuration...",
|
||||||
"main.badge.unreadMentions": "You have unread mentions ({mentionCount})",
|
"renderer.components.settingsPage.loggingLevel": "Logging level",
|
||||||
"main.badge.unreadChannels": "You have unread channels",
|
"renderer.components.settingsPage.loggingLevel.description": "Logging is helpful for developers and support to isolate issues you may be encountering with the desktop app.",
|
||||||
"main.badge.sessionExpired": "Session Expired: Please sign in to continue receiving notifications.",
|
"renderer.components.settingsPage.loggingLevel.description.subtitle": "Increasing the log level increases disk space usage and can impact performance. It is recommended to only increase the log level if you are having issues.",
|
||||||
"main.badge.noUnreads": "You have no unread messages",
|
"renderer.components.settingsPage.loggingLevel.level.debug": "Debug (debug)",
|
||||||
"main.autoUpdater.update.dialog.message": "A new version is ready to install",
|
"renderer.components.settingsPage.loggingLevel.level.error": "Errors (error)",
|
||||||
"main.autoUpdater.update.dialog.detail": "A new version of the {appName} Desktop App is ready to install.",
|
"renderer.components.settingsPage.loggingLevel.level.info": "Informational (info)",
|
||||||
"renderer.modals.permission.permissionModal.unknownOrigin": "unknown origin",
|
"renderer.components.settingsPage.loggingLevel.level.silly": "Finest (silly)",
|
||||||
"renderer.modals.permission.permissionModal.title": "{permission} Required",
|
"renderer.components.settingsPage.loggingLevel.level.verbose": "Verbose (verbose)",
|
||||||
"renderer.modals.permission.permissionModal.requestOriginatedFromOrigin": "This request originated from <link>{origin}</link>",
|
"renderer.components.settingsPage.loggingLevel.level.warn": "Errors and Warnings (warn)",
|
||||||
"renderer.components.welcomeScreen.slides.welcome.title": "Welcome",
|
"renderer.components.settingsPage.minimizeToTray": "Leave the app running in the notification area when the application window is closed",
|
||||||
"renderer.components.welcomeScreen.slides.welcome.subtitle": "Mattermost is an open source platform for developer collaboration. Secure, flexible and integrated with the tools you love.",
|
"renderer.components.settingsPage.minimizeToTray.description": "If enabled, the app stays running in the notification area after app window is closed.",
|
||||||
"renderer.components.welcomeScreen.slides.playbooks.title": "Playbooks",
|
"renderer.components.settingsPage.saving.error": "Your changes can't be saved. Please try again.",
|
||||||
"renderer.components.welcomeScreen.slides.palybooks.subtitle": "Move faster and make fewer mistakes with checklists, automations and tool integrations that power your team’s workflows.",
|
"renderer.components.settingsPage.showUnreadBadge": "Show red badge on {taskbar} icon to indicate unread messages",
|
||||||
"renderer.components.welcomeScreen.slides.channels.title": "Channels",
|
"renderer.components.settingsPage.showUnreadBadge.description": "Regardless of this setting, mentions are always indicated with a red badge and item count on the {taskbar} icon.",
|
||||||
"renderer.components.welcomeScreen.slides.channels.subtitle": "All your team’s communication in one place.<br></br>Secure collaboration, built for developers.",
|
"renderer.components.settingsPage.startAppOnLogin": "Start app on login",
|
||||||
"renderer.components.welcomeScreen.slides.boards.title": "Boards",
|
"renderer.components.settingsPage.startAppOnLogin.description": "If enabled, the app starts automatically when you log in to your machine.",
|
||||||
"renderer.components.welcomeScreen.slides.boards.subtitle": "Ship your product on time, every time, with a project and task management solution built for digital operations.",
|
"renderer.components.settingsPage.trayIcon.color": "Icon colour: ",
|
||||||
"renderer.components.welcomeScreen.button.getStarted": "Get started",
|
"renderer.components.settingsPage.trayIcon.show": "Show icon in the notification area",
|
||||||
"renderer.components.mainPage.titleBar": "{appName}",
|
"renderer.components.settingsPage.trayIcon.show.darwin": "Show {appName} icon in the menu bar",
|
||||||
"renderer.components.saveButton.saving": "Saving",
|
"renderer.components.settingsPage.trayIcon.theme": "Icon theme: ",
|
||||||
"renderer.components.saveButton.save": "Save",
|
"renderer.components.settingsPage.trayIcon.theme.dark": "Dark",
|
||||||
"renderer.components.input.required": "This field is required",
|
"renderer.components.settingsPage.trayIcon.theme.light": "Light",
|
||||||
"renderer.components.configureServer.url.placeholder": "Server URL",
|
"renderer.components.settingsPage.trayIcon.theme.systemDefault": "Use system default",
|
||||||
"renderer.components.configureServer.url.info": "The URL of your Mattermost server",
|
"renderer.components.settingsPage.updates": "Updates",
|
||||||
"renderer.components.configureServer.title": "Connect to a server",
|
"renderer.components.settingsPage.updates.automatic": "Automatically check for updates",
|
||||||
"renderer.components.configureServer.subtitle": "Set up your first server to connect to your<br></br>team’s communication hub",
|
"renderer.components.settingsPage.updates.automatic.description": "If enabled, updates to the Desktop App will download automatically and you will be notified when they're ready to install.",
|
||||||
"renderer.components.configureServer.name.placeholder": "Server display name",
|
"renderer.components.settingsPage.updates.checkNow": "Check for Updates now",
|
||||||
"renderer.components.configureServer.name.info": "The name that will be displayed in your server list",
|
"renderer.components.showCertificateModal.algorithm": "Algorithm",
|
||||||
"renderer.components.configureServer.connect.saving": "Connecting…",
|
"renderer.components.showCertificateModal.commonName": "Common Name",
|
||||||
"renderer.components.configureServer.connect.default": "Connect",
|
"renderer.components.showCertificateModal.issuerName": "Issuer Name",
|
||||||
"renderer.components.configureServer.cardtitle": "Enter your server details",
|
"renderer.components.showCertificateModal.noCertSelected": "No certificate selected",
|
||||||
"renderer.time.hours": "hours",
|
"renderer.components.showCertificateModal.notValidAfter": "Not Valid After",
|
||||||
"renderer.downloadsDropdownMenu.ShowInFolder": "Show in Folder",
|
"renderer.components.showCertificateModal.notValidBefore": "Not Valid Before",
|
||||||
"renderer.downloadsDropdownMenu.ShowInFinder": "Show in Finder",
|
"renderer.components.showCertificateModal.publicKeyInfo": "Public Key Info",
|
||||||
"renderer.downloadsDropdownMenu.ShowInFileManager": "Show in File Manager",
|
"renderer.components.showCertificateModal.serialNumber": "Serial Number",
|
||||||
"renderer.downloadsDropdownMenu.ShowInFileExplorer": "Show in File Explorer",
|
"renderer.components.showCertificateModal.subjectName": "Subject Name",
|
||||||
"renderer.downloadsDropdownMenu.Open": "Open",
|
"renderer.components.welcomeScreen.button.getStarted": "Get started",
|
||||||
"renderer.downloadsDropdownMenu.Clear": "Clear",
|
"renderer.components.welcomeScreen.slides.boards.subtitle": "Ship your product on time, every time, with a project and task management solution built for digital operations.",
|
||||||
"renderer.downloadsDropdownMenu.CancelDownload": "Cancel Download",
|
"renderer.components.welcomeScreen.slides.boards.title": "Boards",
|
||||||
"renderer.downloadsDropdown.Update.RestartAndUpdate": "Restart & update",
|
"renderer.components.welcomeScreen.slides.channels.subtitle": "All your team’s communication in one place.<br></br>Secure collaboration, built for developers.",
|
||||||
"renderer.downloadsDropdown.Update.NewDesktopVersionAvailable": "New Desktop version available",
|
"renderer.components.welcomeScreen.slides.channels.title": "Channels",
|
||||||
"renderer.downloadsDropdown.Update.MattermostVersionX": "{appName} version {version}",
|
"renderer.components.welcomeScreen.slides.palybooks.subtitle": "Move faster and make fewer mistakes with checklists, automations and tool integrations that power your team’s workflows.",
|
||||||
"renderer.downloadsDropdown.Update.DownloadUpdate": "Download Update",
|
"renderer.components.welcomeScreen.slides.playbooks.title": "Playbooks",
|
||||||
"renderer.downloadsDropdown.Update.ANewVersionIsAvailableToInstall": "A new version of the {appName} Desktop App (version {version}) is available to install.",
|
"renderer.components.welcomeScreen.slides.welcome.subtitle": "Mattermost is an open source platform for developer collaboration. Secure, flexible and integrated with the tools you love.",
|
||||||
"renderer.downloadsDropdown.remaining": "remaining",
|
"renderer.components.welcomeScreen.slides.welcome.title": "Welcome",
|
||||||
"renderer.downloadsDropdown.Downloads": "Downloads",
|
"renderer.downloadsDropdown.ClearAll": "Clear All",
|
||||||
"renderer.downloadsDropdown.ClearAll": "Clear All",
|
"renderer.downloadsDropdown.Downloads": "Downloads",
|
||||||
"main.menus.app.view.downloads": "Downloads",
|
"renderer.downloadsDropdown.Update.ANewVersionIsAvailableToInstall": "A new version of the {appName} Desktop App (version {version}) is available to install.",
|
||||||
"renderer.time.sec": "seconds",
|
"renderer.downloadsDropdown.Update.DownloadUpdate": "Download Update",
|
||||||
"renderer.time.mins": "minutes",
|
"renderer.downloadsDropdown.Update.MattermostVersionX": "{appName} version {version}",
|
||||||
"renderer.components.errorView.havingTroubleConnecting": "A connection to {appName} couldn't be established. Retrying...",
|
"renderer.downloadsDropdown.Update.NewDesktopVersionAvailable": "New Desktop version available",
|
||||||
"renderer.components.settingsPage.trayIcon.color": "Icon colour: ",
|
"renderer.downloadsDropdown.Update.RestartAndUpdate": "Restart & update",
|
||||||
"main.menus.app.help.RunDiagnostics": "Run diagnostics",
|
"renderer.downloadsDropdown.remaining": "remaining",
|
||||||
"main.menus.app.help.ShowLogs": "Show logs",
|
"renderer.downloadsDropdownMenu.CancelDownload": "Cancel Download",
|
||||||
"renderer.components.configureServer.connect.override": "Connect anyway",
|
"renderer.downloadsDropdownMenu.Clear": "Clear",
|
||||||
"renderer.components.configureServer.url.insecure": "Your server URL is potentially insecure. For best results, use a URL with the HTTPS protocol.",
|
"renderer.downloadsDropdownMenu.Open": "Open",
|
||||||
"renderer.components.configureServer.url.notMattermost": "The server URL provided does not appear to point to a valid Mattermost server. Please verify the URL and check your connection.",
|
"renderer.downloadsDropdownMenu.ShowInFileExplorer": "Show in File Explorer",
|
||||||
"renderer.components.configureServer.url.ok": "Server URL is valid. Server version: {serverVersion}",
|
"renderer.downloadsDropdownMenu.ShowInFileManager": "Show in File Manager",
|
||||||
"renderer.components.configureServer.url.urlNotMatched": "The server URL provided does not match the configured Site URL on your Mattermost server. Server version: {serverVersion}",
|
"renderer.downloadsDropdownMenu.ShowInFinder": "Show in Finder",
|
||||||
"renderer.components.configureServer.url.urlUpdated": "The server URL provided has been updated to match the configured Site URL on your Mattermost server. Server version: {serverVersion}",
|
"renderer.downloadsDropdownMenu.ShowInFolder": "Show in Folder",
|
||||||
"renderer.components.configureServer.url.validating": "Validating...",
|
"renderer.dropdown.addAServer": "Add a server",
|
||||||
"renderer.components.newServerModal.success.ok": "Server URL is valid. Server version: {serverVersion}",
|
"renderer.dropdown.servers": "Servers",
|
||||||
"renderer.components.newServerModal.validating": "Validating...",
|
"renderer.modals.certificate.certificateModal.certInfoButton": "Certificate Information",
|
||||||
"renderer.components.newServerModal.warning.insecure": "Your server URL is potentially insecure. For best results, use a URL with the HTTPS protocol.",
|
"renderer.modals.certificate.certificateModal.issuer": "Issuer",
|
||||||
"renderer.components.newServerModal.warning.notMattermost": "The server URL provided does not appear to point to a valid Mattermost server. Please verify the URL and check your connection.",
|
"renderer.modals.certificate.certificateModal.noCertsAvailable": "No certificates available",
|
||||||
"renderer.components.newServerModal.warning.urlNotMatched": "The server URL does not match the configured Site URL on your Mattermost server. Server version: {serverVersion}",
|
"renderer.modals.certificate.certificateModal.serial": "Serial",
|
||||||
"renderer.components.newServerModal.warning.urlUpdated": "The server URL provided has been updated to match the configured Site URL on your Mattermost server. Server version: {serverVersion}",
|
"renderer.modals.certificate.certificateModal.subject": "Subject",
|
||||||
"main.downloadsManager.resetDownloadsFolder": "Please reset the folder where files will download",
|
"renderer.modals.certificate.certificateModal.subtitle": "Select a certificate to authenticate yourself to {url}",
|
||||||
"main.downloadsManager.specifyDownloadsFolder": "Specify the folder where files will download",
|
"renderer.modals.certificate.certificateModal.title": "Select a certificate",
|
||||||
"main.permissionsManager.checkPermission.dialog.detail.media": "{appName} will use the microphone and camera for calls and voice messages. You can always change this later in your computer's settings.",
|
"renderer.modals.login.loginModal.message.proxy": "The proxy {host}:{port} requires a username and password.",
|
||||||
"label.allow": "Allow",
|
"renderer.modals.login.loginModal.message.server": "The server {url} requires a username and password.",
|
||||||
"main.permissionsManager.checkPermission.dialog.detail.geolocation": "{appName} will use the location for setting up your timezone. You can always change this later in your computer's settings.",
|
"renderer.modals.login.loginModal.password": "Password",
|
||||||
"label.deny": "Deny",
|
"renderer.modals.login.loginModal.title": "Authentication Required",
|
||||||
"label.denyPermanently": "Deny Permanently",
|
"renderer.modals.login.loginModal.username": "User Name",
|
||||||
"main.permissionsManager.checkPermission.dialog.detail.notifications": "{appName} will send you notifications for messages and calls. You can configure your notification preferences in Settings.",
|
"renderer.modals.permission.permissionModal.body": "A site that's not included in your Mattermost server configuration requires access for {permission}.",
|
||||||
"main.permissionsManager.checkPermission.dialog.message.geolocation": "{appName} ({url}) would like to access your location.",
|
"renderer.modals.permission.permissionModal.requestOriginatedFromOrigin": "This request originated from <link>{origin}</link>",
|
||||||
"main.permissionsManager.checkPermission.dialog.message.media": "{appName} ({url}) would like to access the microphone and camera.",
|
"renderer.modals.permission.permissionModal.title": "{permission} Required",
|
||||||
"main.permissionsManager.checkPermission.dialog.message.notifications": "{appName} ({url}) would like to send you notifications.",
|
"renderer.modals.permission.permissionModal.unknownOrigin": "unknown origin",
|
||||||
"main.permissionsManager.checkPermission.dialog.title": "Permission Requested"
|
"renderer.time.hours": "hours",
|
||||||
|
"renderer.time.mins": "minutes",
|
||||||
|
"renderer.time.sec": "seconds"
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,7 +89,9 @@
|
||||||
"main.menus.app.view.actualSize": "实际尺寸",
|
"main.menus.app.view.actualSize": "实际尺寸",
|
||||||
"main.menus.app.view.clearCacheAndReload": "清除缓存并重新加载",
|
"main.menus.app.view.clearCacheAndReload": "清除缓存并重新加载",
|
||||||
"main.menus.app.view.devToolsAppWrapper": "Application Wrapper 开发工具",
|
"main.menus.app.view.devToolsAppWrapper": "Application Wrapper 开发工具",
|
||||||
|
"main.menus.app.view.devToolsCurrentCallWidget": "通话小组件开发人员工具",
|
||||||
"main.menus.app.view.devToolsCurrentServer": "当前服务器的开发者工具",
|
"main.menus.app.view.devToolsCurrentServer": "当前服务器的开发者工具",
|
||||||
|
"main.menus.app.view.devToolsSubMenu": "开发人员工具",
|
||||||
"main.menus.app.view.downloads": "下载",
|
"main.menus.app.view.downloads": "下载",
|
||||||
"main.menus.app.view.find": "查找...",
|
"main.menus.app.view.find": "查找...",
|
||||||
"main.menus.app.view.fullscreen": "全屏",
|
"main.menus.app.view.fullscreen": "全屏",
|
||||||
|
|
|
@ -81,25 +81,30 @@ const desktopAPI: DesktopAPI = {
|
||||||
onBrowserHistoryPush: (listener) => createListener(BROWSER_HISTORY_PUSH, listener),
|
onBrowserHistoryPush: (listener) => createListener(BROWSER_HISTORY_PUSH, listener),
|
||||||
sendBrowserHistoryPush: (path) => ipcRenderer.send(BROWSER_HISTORY_PUSH, path),
|
sendBrowserHistoryPush: (path) => ipcRenderer.send(BROWSER_HISTORY_PUSH, path),
|
||||||
|
|
||||||
// Calls widget
|
// Calls
|
||||||
openLinkFromCallsWidget: (url) => ipcRenderer.send(CALLS_LINK_CLICK, url),
|
|
||||||
openScreenShareModal: () => ipcRenderer.send(DESKTOP_SOURCES_MODAL_REQUEST),
|
|
||||||
onScreenShared: (listener) => createListener(CALLS_WIDGET_SHARE_SCREEN, listener),
|
|
||||||
callsWidgetConnected: (callID, sessionID) => ipcRenderer.send(CALLS_JOINED_CALL, callID, sessionID),
|
|
||||||
onJoinCallRequest: (listener) => createListener(CALLS_JOIN_REQUEST, listener),
|
|
||||||
resizeCallsWidget: (width, height) => ipcRenderer.send(CALLS_WIDGET_RESIZE, width, height),
|
|
||||||
focusPopout: () => ipcRenderer.send(CALLS_POPOUT_FOCUS),
|
|
||||||
leaveCall: () => ipcRenderer.send(CALLS_LEAVE_CALL),
|
|
||||||
sendCallsError: (error) => ipcRenderer.send(CALLS_ERROR, error),
|
|
||||||
|
|
||||||
// Calls plugin
|
|
||||||
getDesktopSources: (opts) => ipcRenderer.invoke(GET_DESKTOP_SOURCES, opts),
|
|
||||||
onOpenScreenShareModal: (listener) => createListener(DESKTOP_SOURCES_MODAL_REQUEST, listener),
|
|
||||||
shareScreen: (sourceID, withAudio) => ipcRenderer.send(CALLS_WIDGET_SHARE_SCREEN, sourceID, withAudio),
|
|
||||||
joinCall: (opts) => ipcRenderer.invoke(CALLS_JOIN_CALL, opts),
|
joinCall: (opts) => ipcRenderer.invoke(CALLS_JOIN_CALL, opts),
|
||||||
sendJoinCallRequest: (callId) => ipcRenderer.send(CALLS_JOIN_REQUEST, callId),
|
leaveCall: () => ipcRenderer.send(CALLS_LEAVE_CALL),
|
||||||
|
|
||||||
|
callsWidgetConnected: (callID, sessionID) => ipcRenderer.send(CALLS_JOINED_CALL, callID, sessionID),
|
||||||
|
resizeCallsWidget: (width, height) => ipcRenderer.send(CALLS_WIDGET_RESIZE, width, height),
|
||||||
|
|
||||||
|
sendCallsError: (err, callID, errMsg) => ipcRenderer.send(CALLS_ERROR, err, callID, errMsg),
|
||||||
onCallsError: (listener) => createListener(CALLS_ERROR, listener),
|
onCallsError: (listener) => createListener(CALLS_ERROR, listener),
|
||||||
|
|
||||||
|
getDesktopSources: (opts) => ipcRenderer.invoke(GET_DESKTOP_SOURCES, opts),
|
||||||
|
openScreenShareModal: () => ipcRenderer.send(DESKTOP_SOURCES_MODAL_REQUEST),
|
||||||
|
onOpenScreenShareModal: (listener) => createListener(DESKTOP_SOURCES_MODAL_REQUEST, listener),
|
||||||
|
|
||||||
|
shareScreen: (sourceID, withAudio) => ipcRenderer.send(CALLS_WIDGET_SHARE_SCREEN, sourceID, withAudio),
|
||||||
|
onScreenShared: (listener) => createListener(CALLS_WIDGET_SHARE_SCREEN, listener),
|
||||||
|
|
||||||
|
sendJoinCallRequest: (callId) => ipcRenderer.send(CALLS_JOIN_REQUEST, callId),
|
||||||
|
onJoinCallRequest: (listener) => createListener(CALLS_JOIN_REQUEST, listener),
|
||||||
|
|
||||||
|
openLinkFromCalls: (url) => ipcRenderer.send(CALLS_LINK_CLICK, url),
|
||||||
|
|
||||||
|
focusPopout: () => ipcRenderer.send(CALLS_POPOUT_FOCUS),
|
||||||
|
|
||||||
// Utility
|
// Utility
|
||||||
unregister: (channel) => ipcRenderer.removeAllListeners(channel),
|
unregister: (channel) => ipcRenderer.removeAllListeners(channel),
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,7 +7,7 @@ import {BrowserWindow, desktopCapturer, systemPreferences, ipcMain} from 'electr
|
||||||
|
|
||||||
import ServerViewState from 'app/serverViewState';
|
import ServerViewState from 'app/serverViewState';
|
||||||
|
|
||||||
import {CALLS_WIDGET_SHARE_SCREEN, UPDATE_SHORTCUT_MENU} from 'common/communication';
|
import {CALLS_WIDGET_SHARE_SCREEN, BROWSER_HISTORY_PUSH, UPDATE_SHORTCUT_MENU} from 'common/communication';
|
||||||
import {
|
import {
|
||||||
MINIMUM_CALLS_WIDGET_WIDTH,
|
MINIMUM_CALLS_WIDGET_WIDTH,
|
||||||
MINIMUM_CALLS_WIDGET_HEIGHT,
|
MINIMUM_CALLS_WIDGET_HEIGHT,
|
||||||
|
@ -534,6 +534,7 @@ describe('main/windows/callsWidgetWindow', () => {
|
||||||
|
|
||||||
describe('handleGetDesktopSources', () => {
|
describe('handleGetDesktopSources', () => {
|
||||||
const callsWidgetWindow = new CallsWidgetWindow();
|
const callsWidgetWindow = new CallsWidgetWindow();
|
||||||
|
callsWidgetWindow.options = {callID: 'callID'};
|
||||||
callsWidgetWindow.win = {
|
callsWidgetWindow.win = {
|
||||||
webContents: {
|
webContents: {
|
||||||
send: jest.fn(),
|
send: jest.fn(),
|
||||||
|
@ -626,12 +627,8 @@ describe('main/windows/callsWidgetWindow', () => {
|
||||||
it('should send error with no sources', async () => {
|
it('should send error with no sources', async () => {
|
||||||
jest.spyOn(desktopCapturer, 'getSources').mockResolvedValue([]);
|
jest.spyOn(desktopCapturer, 'getSources').mockResolvedValue([]);
|
||||||
await callsWidgetWindow.handleGetDesktopSources({sender: {id: 1}}, null);
|
await callsWidgetWindow.handleGetDesktopSources({sender: {id: 1}}, null);
|
||||||
expect(callsWidgetWindow.win.webContents.send).toHaveBeenCalledWith('calls-error', {
|
expect(callsWidgetWindow.win.webContents.send).toHaveBeenCalledWith('calls-error', 'screen-permissions', 'callID');
|
||||||
err: 'screen-permissions',
|
expect(views.get('server-1_view-1').sendToRenderer).toHaveBeenCalledWith('calls-error', 'screen-permissions', 'callID');
|
||||||
});
|
|
||||||
expect(views.get('server-1_view-1').sendToRenderer).toHaveBeenCalledWith('calls-error', {
|
|
||||||
err: 'screen-permissions',
|
|
||||||
});
|
|
||||||
expect(callsWidgetWindow.win.webContents.send).toHaveBeenCalledTimes(1);
|
expect(callsWidgetWindow.win.webContents.send).toHaveBeenCalledTimes(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -649,12 +646,8 @@ describe('main/windows/callsWidgetWindow', () => {
|
||||||
await callsWidgetWindow.handleGetDesktopSources({sender: {id: 1}}, null);
|
await callsWidgetWindow.handleGetDesktopSources({sender: {id: 1}}, null);
|
||||||
|
|
||||||
expect(systemPreferences.getMediaAccessStatus).toHaveBeenCalledWith('screen');
|
expect(systemPreferences.getMediaAccessStatus).toHaveBeenCalledWith('screen');
|
||||||
expect(callsWidgetWindow.win.webContents.send).toHaveBeenCalledWith('calls-error', {
|
expect(callsWidgetWindow.win.webContents.send).toHaveBeenCalledWith('calls-error', 'screen-permissions', 'callID');
|
||||||
err: 'screen-permissions',
|
expect(views.get('server-1_view-1').sendToRenderer).toHaveBeenCalledWith('calls-error', 'screen-permissions', 'callID');
|
||||||
});
|
|
||||||
expect(views.get('server-1_view-1').sendToRenderer).toHaveBeenCalledWith('calls-error', {
|
|
||||||
err: 'screen-permissions',
|
|
||||||
});
|
|
||||||
expect(views.get('server-1_view-1').sendToRenderer).toHaveBeenCalledTimes(1);
|
expect(views.get('server-1_view-1').sendToRenderer).toHaveBeenCalledTimes(1);
|
||||||
expect(callsWidgetWindow.win.webContents.send).toHaveBeenCalledTimes(1);
|
expect(callsWidgetWindow.win.webContents.send).toHaveBeenCalledTimes(1);
|
||||||
});
|
});
|
||||||
|
@ -680,12 +673,8 @@ describe('main/windows/callsWidgetWindow', () => {
|
||||||
expect(callsWidgetWindow.missingScreensharePermissions).toBe(true);
|
expect(callsWidgetWindow.missingScreensharePermissions).toBe(true);
|
||||||
expect(resetScreensharePermissionsMacOS).toHaveBeenCalledTimes(1);
|
expect(resetScreensharePermissionsMacOS).toHaveBeenCalledTimes(1);
|
||||||
expect(openScreensharePermissionsSettingsMacOS).toHaveBeenCalledTimes(0);
|
expect(openScreensharePermissionsSettingsMacOS).toHaveBeenCalledTimes(0);
|
||||||
expect(callsWidgetWindow.win.webContents.send).toHaveBeenCalledWith('calls-error', {
|
expect(callsWidgetWindow.win.webContents.send).toHaveBeenCalledWith('calls-error', 'screen-permissions', 'callID');
|
||||||
err: 'screen-permissions',
|
expect(views.get('server-1_view-1').sendToRenderer).toHaveBeenCalledWith('calls-error', 'screen-permissions', 'callID');
|
||||||
});
|
|
||||||
expect(views.get('server-1_view-1').sendToRenderer).toHaveBeenCalledWith('calls-error', {
|
|
||||||
err: 'screen-permissions',
|
|
||||||
});
|
|
||||||
|
|
||||||
await callsWidgetWindow.handleGetDesktopSources({sender: {id: 1}}, null);
|
await callsWidgetWindow.handleGetDesktopSources({sender: {id: 1}}, null);
|
||||||
|
|
||||||
|
@ -799,6 +788,49 @@ describe('main/windows/callsWidgetWindow', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('handleCallsLinkClick', () => {
|
||||||
|
const view = {
|
||||||
|
view: {
|
||||||
|
server: {
|
||||||
|
id: 'server-1',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sendToRenderer: jest.fn(),
|
||||||
|
};
|
||||||
|
const callsWidgetWindow = new CallsWidgetWindow();
|
||||||
|
callsWidgetWindow.mainView = view;
|
||||||
|
callsWidgetWindow.win = {webContents: {id: 1}};
|
||||||
|
|
||||||
|
const focus = jest.fn();
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
urlUtils.parseURL.mockImplementation((url) => {
|
||||||
|
try {
|
||||||
|
return new URL(url);
|
||||||
|
} catch (e) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
MainWindow.get.mockReturnValue({focus});
|
||||||
|
ViewManager.getView.mockReturnValue(view);
|
||||||
|
ViewManager.handleDeepLink = jest.fn();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should switch server, focus and send history push event', () => {
|
||||||
|
const url = '/team/channel';
|
||||||
|
callsWidgetWindow.handleCallsLinkClick({sender: {id: 1}}, url);
|
||||||
|
expect(ServerViewState.switchServer).toHaveBeenCalledWith('server-1');
|
||||||
|
expect(focus).toHaveBeenCalled();
|
||||||
|
expect(view.sendToRenderer).toBeCalledWith(BROWSER_HISTORY_PUSH, url);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should call ViewManager.handleDeepLink for parseable urls', () => {
|
||||||
|
const url = 'http://localhost:8065/team/channel';
|
||||||
|
callsWidgetWindow.handleCallsLinkClick({sender: {id: 1}}, url);
|
||||||
|
expect(ViewManager.handleDeepLink).toHaveBeenCalledWith(new URL(url));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('isOpen', () => {
|
describe('isOpen', () => {
|
||||||
const callsWidgetWindow = new CallsWidgetWindow();
|
const callsWidgetWindow = new CallsWidgetWindow();
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ export class CallsWidgetWindow {
|
||||||
// forwards to the main app
|
// forwards to the main app
|
||||||
ipcMain.on(DESKTOP_SOURCES_MODAL_REQUEST, this.forwardToMainApp(DESKTOP_SOURCES_MODAL_REQUEST));
|
ipcMain.on(DESKTOP_SOURCES_MODAL_REQUEST, this.forwardToMainApp(DESKTOP_SOURCES_MODAL_REQUEST));
|
||||||
ipcMain.on(CALLS_ERROR, this.forwardToMainApp(CALLS_ERROR));
|
ipcMain.on(CALLS_ERROR, this.forwardToMainApp(CALLS_ERROR));
|
||||||
ipcMain.on(CALLS_LINK_CLICK, this.forwardToMainApp(CALLS_LINK_CLICK));
|
ipcMain.on(CALLS_LINK_CLICK, this.handleCallsLinkClick);
|
||||||
ipcMain.on(CALLS_JOIN_REQUEST, this.forwardToMainApp(CALLS_JOIN_REQUEST));
|
ipcMain.on(CALLS_JOIN_REQUEST, this.forwardToMainApp(CALLS_JOIN_REQUEST));
|
||||||
|
|
||||||
// deprecated in favour of CALLS_LINK_CLICK
|
// deprecated in favour of CALLS_LINK_CLICK
|
||||||
|
@ -394,7 +394,7 @@ export class CallsWidgetWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const screenPermissionsErrMsg = {err: 'screen-permissions'};
|
const screenPermissionsErrArgs = ['screen-permissions', this.callID];
|
||||||
|
|
||||||
return desktopCapturer.getSources(opts).then((sources) => {
|
return desktopCapturer.getSources(opts).then((sources) => {
|
||||||
let hasScreenPermissions = true;
|
let hasScreenPermissions = true;
|
||||||
|
@ -409,8 +409,8 @@ export class CallsWidgetWindow {
|
||||||
|
|
||||||
if (!hasScreenPermissions || !sources.length) {
|
if (!hasScreenPermissions || !sources.length) {
|
||||||
log.info('missing screen permissions');
|
log.info('missing screen permissions');
|
||||||
view.sendToRenderer(CALLS_ERROR, screenPermissionsErrMsg);
|
view.sendToRenderer(CALLS_ERROR, ...screenPermissionsErrArgs);
|
||||||
this.win?.webContents.send(CALLS_ERROR, screenPermissionsErrMsg);
|
this.win?.webContents.send(CALLS_ERROR, ...screenPermissionsErrArgs);
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,8 +426,8 @@ export class CallsWidgetWindow {
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
log.error('desktopCapturer.getSources failed', err);
|
log.error('desktopCapturer.getSources failed', err);
|
||||||
|
|
||||||
view.sendToRenderer(CALLS_ERROR, screenPermissionsErrMsg);
|
view.sendToRenderer(CALLS_ERROR, ...screenPermissionsErrArgs);
|
||||||
this.win?.webContents.send(CALLS_ERROR, screenPermissionsErrMsg);
|
this.win?.webContents.send(CALLS_ERROR, ...screenPermissionsErrArgs);
|
||||||
|
|
||||||
return [];
|
return [];
|
||||||
});
|
});
|
||||||
|
@ -505,6 +505,31 @@ export class CallsWidgetWindow {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private handleCallsLinkClick = (event: IpcMainEvent, url: string) => {
|
||||||
|
log.debug('handleCallsLinkClick', url);
|
||||||
|
|
||||||
|
if (!this.isCallsWidget(event.sender.id)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.serverID) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const parsedURL = parseURL(url);
|
||||||
|
if (parsedURL) {
|
||||||
|
ViewManager.handleDeepLink(parsedURL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If parsing above fails it means it's a relative path (e.g.
|
||||||
|
// pointing to a channel).
|
||||||
|
|
||||||
|
ServerViewState.switchServer(this.serverID);
|
||||||
|
MainWindow.get()?.focus();
|
||||||
|
this.mainView?.sendToRenderer(BROWSER_HISTORY_PUSH, url);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated
|
* @deprecated
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -20,5 +20,6 @@ export interface ExternalAPI {
|
||||||
createListener(event: 'calls-widget-share-screen', listener: (sourceID: string, withAudio: boolean) => void): () => void;
|
createListener(event: 'calls-widget-share-screen', listener: (sourceID: string, withAudio: boolean) => void): () => void;
|
||||||
createListener(event: 'calls-join-request', listener: (callID: string) => void): () => void;
|
createListener(event: 'calls-join-request', listener: (callID: string) => void): () => void;
|
||||||
createListener(event: 'calls-error', listener: (err: string, callID?: string, errMsg?: string) => void): () => void;
|
createListener(event: 'calls-error', listener: (err: string, callID?: string, errMsg?: string) => void): () => void;
|
||||||
|
createListener(event: 'calls-link-click', listener: (url: string) => void): () => void;
|
||||||
createListener(event: 'desktop-sources-modal-request', listener: () => void): () => void;
|
createListener(event: 'desktop-sources-modal-request', listener: () => void): () => void;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue