diff --git a/dist/index.css b/dist/index.css index f1183254..4435b4f8 100644 --- a/dist/index.css +++ b/dist/index.css @@ -445,7 +445,7 @@ body[showing-chat] #chat-page-wrapper { justify-content: space-between; } #chat-page > div > #ribbon > span { - overflowx: hidden; + overflow-x: hidden; flex-direction: column; justify-content: end; } diff --git a/dist/index.js b/dist/index.js index a9a11824..e331f0a3 100644 --- a/dist/index.js +++ b/dist/index.js @@ -348,7 +348,7 @@ greeting: (name) => `Hi ${name}`, /// serverAddress: "Server address", - serverAddressPlaceholder: "wss://udn-s1.onrender.com", + serverAddressPlaceholder: "wss://udn.vdpr.org", connectAudioLabel: "connect to server", disconnectAudioLabel: "disconnect from server", manageConnectionsAudioLabel: "manage connections", @@ -385,7 +385,9 @@ }, about: { version: "Version", - checkUpdatesButton: "Check for updates" + checkUpdatesButton: "Check for updates", + brand: "Developed by VDMDI", + brandDescription: "Code available on Viridian Public Resources (VDPR)" } }, onboarding: { @@ -472,6 +474,7 @@ settingsHeadline: "Settings", nameLabel: "Chat name", setNameButtonAudioLabel: "set name", + transferLabel: "Share chat", newSecondaryChannelPlaceholder: "Add secondary channel", newSecondaryChannelAudioLabel: "name of new secondary channel", addSecondaryChannelButtonAudioLabel: "add secondary channel", @@ -623,7 +626,7 @@ appName: "Coordination Tool", greeting: (name) => `Hallo ${name}`, serverAddress: "Serveradresse", - serverAddressPlaceholder: "wss://udn-s1.onrender.com", + serverAddressPlaceholder: "wss://udn.vdpr.org", connectAudioLabel: "mit Server verbinden", disconnectAudioLabel: "vom Server trennen", manageConnectionsAudioLabel: "Verbindungen verwalten", @@ -659,7 +662,9 @@ }, about: { version: "Version", - checkUpdatesButton: "Nach Updates suchen" + checkUpdatesButton: "Nach Updates suchen", + brand: "Software von VDMDI", + brandDescription: "Code verf\xFCgbar auf Viridian Public Resources (VDPR)" } }, onboarding: { @@ -740,13 +745,14 @@ settingsHeadline: "Einstellungen", nameLabel: "Name", setNameButtonAudioLabel: "namen festlegen", + transferLabel: "Chat teilen", newSecondaryChannelPlaceholder: "Sekund\xE4ren Kanal hinzuf\xFCgen", newSecondaryChannelAudioLabel: "Name des neuen sekund\xE4ren Kanals", addSecondaryChannelButtonAudioLabel: "Sekund\xE4ren Kanal hinzuf\xFCgen", encryptionKeyLabel: "Schl\xFCssel", setEncryptionKeyButtonAudioLabel: "Schl\xFCssel festlegen", showEncryptionKey: "Schl\xFCssel anzeigen", - randomizeKey: "Zuf\xE4llig generieren", + randomizeKey: "Generieren", setColorButtonAudioLabel: "Farbe festlegen", deleteChatButton: "Gesamten Chat l\xF6schen", deleteChatHeadline: "Gesamten Chat l\xF6schen?", @@ -795,7 +801,7 @@ filterTasksButtonAudioLabel: "Aufgaben filtern", createTaskButtonAudioLabel: "Neue Aufgabe erstellen", boardSettingsHeadline: "Board-Einstellungen", - boardNameInputLabel: "Boardname", + boardNameInputLabel: "Name", deleteBoardButton: "Board und alle Aufgaben l\xF6schen", taskSettingsHeadline: "Aufgabe bearbeiten", taskNameLabel: "Titel", @@ -878,7 +884,7 @@ appName: "Coordination Tool", greeting: (name) => `Hola ${name}`, serverAddress: "Direcci\xF3n del servidor", - serverAddressPlaceholder: "wss://udn-s1.onrender.com", + serverAddressPlaceholder: "wss://udn.vdpr.org", connectAudioLabel: "conectar al servidor", disconnectAudioLabel: "desconectar del servidor", manageConnectionsAudioLabel: "gestionar conexiones", @@ -914,7 +920,9 @@ }, about: { version: "Versi\xF3n", - checkUpdatesButton: "Buscar actualisaciones" + checkUpdatesButton: "Buscar actualisaciones", + brand: "Software de VDMDI", + brandDescription: "Code desponible en Viridian Public Resources (VDPR)" } }, onboarding: { @@ -995,6 +1003,7 @@ settingsHeadline: "Configuraci\xF3n", nameLabel: "Nombre del chat", setNameButtonAudioLabel: "establecer nombre", + transferLabel: "Compartir chat", newSecondaryChannelPlaceholder: "A\xF1adir canal secundario", newSecondaryChannelAudioLabel: "nombre del nuevo canal secundario", addSecondaryChannelButtonAudioLabel: "a\xF1adir canal secundario", @@ -1530,6 +1539,10 @@ window.location.reload(); }, 500); }; + // VDPR + this.openVDPR = () => { + window.open("https://vdpr.org/VDMDI/CT"); + }; this.translations = allTranslations[settingsModel2.language] || allTranslations.en; this.latestVersion.subscribe((latestVersion) => { this.updateText.value = this.translations.homePage.updateButton(latestVersion); @@ -5150,7 +5163,7 @@ // src/ViewModel/Chat/chatViewModel.ts var ChatViewModel6 = class extends ContextHost { // init - constructor(coreViewModel2, chatModel, settingsViewModel2, notificationViewModel, connectionViewModel2, chatListViewModel2, contactListViewModel2) { + constructor(coreViewModel2, chatModel, settingsViewModel2, notificationViewModel, connectionViewModel2, chatListViewModel2, contactListViewModel2, fileTransferViewModel2) { super("chat", coreViewModel2); this.coreViewModel = coreViewModel2; this.chatModel = chatModel; @@ -5159,6 +5172,7 @@ this.connectionViewModel = connectionViewModel2; this.chatListViewModel = chatListViewModel2; this.contactListViewModel = contactListViewModel2; + this.fileTransferViewModel = fileTransferViewModel2; // state this.displayedColor = new State("standard" /* Standard */); this.selectedPage = new State( @@ -5191,6 +5205,9 @@ const index = this.chatListViewModel.chatIndexManager.getIndex(this); this.index.value = index; }; + this.share = () => { + this.fileTransferViewModel.showDirectionSelectionModal(); + }; // load this.loadPageSelection = () => { const path = StorageModel.getPath( @@ -5390,11 +5407,12 @@ // src/ViewModel/Chat/chatListViewModel.ts var ChatListViewModel = class { // init - constructor(coreViewModel2, settingsViewModel2, connectionViewModel2, contactListViewModel2) { + constructor(coreViewModel2, settingsViewModel2, connectionViewModel2, contactListViewModel2, fileTransferViewModel2) { this.coreViewModel = coreViewModel2; this.settingsViewModel = settingsViewModel2; this.connectionViewModel = connectionViewModel2; this.contactListViewModel = contactListViewModel2; + this.fileTransferViewModel = fileTransferViewModel2; // data this.chatIndexManager = new IndexManager( (chatViewModel) => chatViewModel.settingsPageViewModel.name.value @@ -5434,7 +5452,8 @@ this.notificationViewModel, this.connectionViewModel, this, - this.contactListViewModel + this.contactListViewModel, + this.fileTransferViewModel ); }; this.updateIndices = () => { @@ -6731,7 +6750,15 @@ } ); }; - return /* @__PURE__ */ createElement("div", { id: "settings-page" }, /* @__PURE__ */ createElement("div", { class: "pane-wrapper" }, /* @__PURE__ */ createElement("div", { class: "pane" }, /* @__PURE__ */ createElement("div", { class: "toolbar" }, /* @__PURE__ */ createElement("span", { class: "title" }, coreViewModel2.translations.chatPage.settings.settingsHeadline)), /* @__PURE__ */ createElement("div", { class: "content" }, /* @__PURE__ */ createElement("label", { class: "tile flex-no" }, /* @__PURE__ */ createElement("span", { class: "icon" }, "forum"), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, coreViewModel2.translations.chatPage.settings.nameLabel), /* @__PURE__ */ createElement( + return /* @__PURE__ */ createElement("div", { id: "settings-page" }, /* @__PURE__ */ createElement("div", { class: "pane-wrapper" }, /* @__PURE__ */ createElement("div", { class: "pane" }, /* @__PURE__ */ createElement("div", { class: "toolbar" }, /* @__PURE__ */ createElement("span", { class: "title" }, coreViewModel2.translations.chatPage.settings.settingsHeadline)), /* @__PURE__ */ createElement("div", { class: "content" }, /* @__PURE__ */ createElement( + "button", + { + class: "standard width-input", + "on:click": settingsPageViewModel.chatViewModel.share + }, + /* @__PURE__ */ createElement("span", null, coreViewModel2.translations.chatPage.settings.transferLabel), + /* @__PURE__ */ createElement("span", { class: "icon" }, "share") + ), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("label", { class: "tile flex-no" }, /* @__PURE__ */ createElement("span", { class: "icon" }, "forum"), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, coreViewModel2.translations.chatPage.settings.nameLabel), /* @__PURE__ */ createElement( "input", { "bind:value": settingsPageViewModel.nameInput, @@ -7978,7 +8005,23 @@ }, /* @__PURE__ */ createElement("span", { "subscribe:innerText": coreViewModel2.updateText }), /* @__PURE__ */ createElement("span", { class: "icon" }, "update") - ), /* @__PURE__ */ createElement("button", { class: "standard", "on:click": coreViewModel2.checkUpdates }, coreViewModel2.translations.settings.about.checkUpdatesButton))); + ), /* @__PURE__ */ createElement("button", { class: "standard", "on:click": coreViewModel2.checkUpdates }, coreViewModel2.translations.settings.about.checkUpdatesButton), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement( + "img", + { + class: "width-100", + style: "max-width: 256px", + src: "/vdmdi-logo.png" + } + ), /* @__PURE__ */ createElement( + "button", + { + class: "tile flex-row", + "on:click": coreViewModel2.openVDPR + }, + /* @__PURE__ */ createElement("span", { class: "icon" }, "code"), + /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("b", null, coreViewModel2.translations.settings.about.brand), /* @__PURE__ */ createElement("span", { class: "secondary" }, coreViewModel2.translations.settings.about.brandDescription)), + /* @__PURE__ */ createElement("span", { class: "icon" }, "open_in_new") + ))); } function SettingsRegionalPane(coreViewModel2, settingsViewModel2) { return /* @__PURE__ */ createElement("div", { class: "slide-up" }, /* @__PURE__ */ createElement("h2", null, coreViewModel2.translations.settings.pages.regional), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("h3", null, coreViewModel2.translations.settings.regional.language), OptionButtonList( @@ -9317,13 +9360,14 @@ settingsViewModel ); var connectionViewModel = new ConnectionViewModel(coreViewModel); + var fileTransferViewModel = new FileTransferViewModel(coreViewModel); var chatListViewModel = new ChatListViewModel( coreViewModel, settingsViewModel, connectionViewModel, - contactListViewModel + contactListViewModel, + fileTransferViewModel ); - var fileTransferViewModel = new FileTransferViewModel(coreViewModel); var onboardingViewModel = new OnboardingViewModel( connectionViewModel, fileTransferViewModel, diff --git a/dist/styles.css b/dist/styles.css index 257db030..9ec60440 100644 --- a/dist/styles.css +++ b/dist/styles.css @@ -280,7 +280,7 @@ SIZES body { /* gap */ --gap-between-tiles: 4px; - --gap-in-controls: 7px; + --gap-in-controls: 9px; --gap-in-tab-links: 1rem; --text-gap: 1.2rem; --large-gap: 2rem; diff --git a/dist/sw.js b/dist/sw.js index a0f8c162..369a2070 100644 --- a/dist/sw.js +++ b/dist/sw.js @@ -1,4 +1,4 @@ -const VERSION = "2610 Beta 22" +const VERSION = "2610 Beta 25" function processUrl(event) { const url = event.request.url; diff --git a/dist/vdmdi-logo.png b/dist/vdmdi-logo.png new file mode 100644 index 00000000..f710cc95 Binary files /dev/null and b/dist/vdmdi-logo.png differ diff --git a/dist/version.txt b/dist/version.txt index 052393cb..49f4ed0c 100644 --- a/dist/version.txt +++ b/dist/version.txt @@ -1 +1 @@ -2610 Beta 22 +2610 Beta 25 diff --git a/src/View/ChatPages/settingsPage.tsx b/src/View/ChatPages/settingsPage.tsx index 2de4943b..347b3010 100644 --- a/src/View/ChatPages/settingsPage.tsx +++ b/src/View/ChatPages/settingsPage.tsx @@ -36,7 +36,15 @@ export function SettingsPage( } -
+
+ +
); diff --git a/src/View/translations.ts b/src/View/translations.ts index 404de4d2..5b507e24 100644 --- a/src/View/translations.ts +++ b/src/View/translations.ts @@ -1,381 +1,385 @@ const englishTranslations = { updater: { - migrated: "Migrated", + migrated: "Migrated", }, general: { - deleteItemButtonAudioLabel: "delete item", - searchButtonAudioLabel: "search", - searchButtonClearAudioLabel: "clear search query", + deleteItemButtonAudioLabel: "delete item", + searchButtonAudioLabel: "search", + searchButtonClearAudioLabel: "clear search query", - abortButton: "Abort", - applyButton: "Apply", - backButton: "Back", - cancelButton: "Cancel", - confirmButton: "Confirm", - continueButton: "Continue", - closeButton: "Close", - deleteButton: "Delete", - exitButton: "Exit", - fullscreenButton: "Fullscreen", - refreshButton: "Refresh", - saveButton: "Save", - setButton: "Set", + abortButton: "Abort", + applyButton: "Apply", + backButton: "Back", + cancelButton: "Cancel", + confirmButton: "Confirm", + continueButton: "Continue", + closeButton: "Close", + deleteButton: "Delete", + exitButton: "Exit", + fullscreenButton: "Fullscreen", + refreshButton: "Refresh", + saveButton: "Save", + setButton: "Set", - selectAllLabel: "Select all", + selectAllLabel: "Select all", - filterOrCreateLabel: (type: string) => `Search or create ${type}`, - createLabel: (query: string) => `Create "${query}"`, + filterOrCreateLabel: (type: string) => `Search or create ${type}`, + createLabel: (query: string) => `Create "${query}"`, - reloadAppButton: "Reload App", + reloadAppButton: "Reload App", - fileVersionLabel: "Version", - searchLabel: "Search", - searchSuggestionsLabel: "Recent searches", - waitingLabel: "Waiting...", + fileVersionLabel: "Version", + searchLabel: "Search", + searchSuggestionsLabel: "Recent searches", + waitingLabel: "Waiting...", - restoreConnection: "Restore connection", + restoreConnection: "Restore connection", - noPageSelected: "No page selected", + noPageSelected: "No page selected", }, regional: { - weekdays: { - full: [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday", - ], - abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - }, + weekdays: { + full: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + ], + abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + }, }, homePage: { - appName: "Coordination Tool", - greeting: (name: string) => `Hi ${name}`, + appName: "Coordination Tool", + greeting: (name: string) => `Hi ${name}`, - /// + /// - serverAddress: "Server address", - serverAddressPlaceholder: "wss://udn-s1.onrender.com", - connectAudioLabel: "connect to server", - disconnectAudioLabel: "disconnect from server", - manageConnectionsAudioLabel: "manage connections", + serverAddress: "Server address", + serverAddressPlaceholder: "wss://udn.vdpr.org", + connectAudioLabel: "connect to server", + disconnectAudioLabel: "disconnect from server", + manageConnectionsAudioLabel: "manage connections", - settingsButton: "Settings", - manageStorageButton: "Manage storage", - transferDataButton: "Transfer or export data", + settingsButton: "Settings", + manageStorageButton: "Manage storage", + transferDataButton: "Transfer or export data", - updateButton: (version: string) => `Update to ${version}`, + updateButton: (version: string) => `Update to ${version}`, - /// + /// - typeChat: "chat", - noChatsPlaceholder: "No chats", + typeChat: "chat", + noChatsPlaceholder: "No chats", }, settings: { - pages: { - appearance: "Appearance", - account: "Account", - regional: "Language & Region", - info: "About CT", - }, - themes: { - dynamic: "Dynamic", - dark: "Dark", - light: "Light", - system: "Device theme", - black: "Black", - }, - account: { - yourNameLabel: "Your name", - yourNamePlaceholder: "Jane Doe", - setNameButtonAudioLabel: "set name", - }, - regional: { - language: "Language", - firstDayOfWeekLabel: "First day of week", - }, - about: { - version: "Version", - checkUpdatesButton: "Check for updates", - }, + pages: { + appearance: "Appearance", + account: "Account", + regional: "Language & Region", + info: "About CT", + }, + themes: { + dynamic: "Dynamic", + dark: "Dark", + light: "Light", + system: "Device theme", + black: "Black", + }, + account: { + yourNameLabel: "Your name", + yourNamePlaceholder: "Jane Doe", + setNameButtonAudioLabel: "set name", + }, + regional: { + language: "Language", + firstDayOfWeekLabel: "First day of week", + }, + about: { + version: "Version", + checkUpdatesButton: "Check for updates", + brand: "Developed by VDMDI", + brandDescription: "Code available on Viridian Public Resources (VDPR)" + }, }, onboarding: { - connectionHeadline: "Connect to UDN", - connectionDescription: - "To transfer files and send messages, connect to the Universal Decentralized Network (UDN).", - connectButton: "Connect", - connectionNextButton: (isConnected: boolean): string => - isConnected ? "Continue" : "Set up without UDN", + connectionHeadline: "Connect to UDN", + connectionDescription: + "To transfer files and send messages, connect to the Universal Decentralized Network (UDN).", + connectButton: "Connect", + connectionNextButton: (isConnected: boolean): string => + isConnected ? "Continue" : "Set up without UDN", - /// + /// - transferOptionsHeadline: "Copy Your Data", - transferOptionsDescription: - "If you already use the Coordination Tool on another device, copy your identity here. You can use both devices at the same time.", - transferOptionTransfer: "Copy my data here", - transferOptionNew: "Set up as new device", + transferOptionsHeadline: "Copy Your Data", + transferOptionsDescription: + "If you already use the Coordination Tool on another device, copy your identity here. You can use both devices at the same time.", + transferOptionTransfer: "Copy my data here", + transferOptionNew: "Set up as new device", - // + // - nameHeadline: "Your Name", - nameDescription: - "This is what others see when you send messages. You can always change your name in settings.", + nameHeadline: "Your Name", + nameDescription: + "This is what others see when you send messages. You can always change your name in settings.", - // + // - transferHeadline: "Data Transfer", - transferDescription: - "On your other device, prepare to transfer your identity and personal data alongside any chats you wish to copy. Then, enter the displayed data here. You can find the data transfer on the home screen of the other device.", - transferButton: "Copy data", + transferHeadline: "Data Transfer", + transferDescription: + "On your other device, prepare to transfer your identity and personal data alongside any chats you wish to copy. Then, enter the displayed data here. You can find the data transfer on the home screen of the other device.", + transferButton: "Copy data", }, connectionModal: { - connectionModalHeadline: "Manage Connections", + connectionModalHeadline: "Manage Connections", - /// + /// - connectButtonAudioLabel: "connect", + connectButtonAudioLabel: "connect", }, dataTransferModal: { - transferDataHeadline: "Data Transfer", - sendHeadline: "Transfer to other device", - receiveHeadline: "Transfer to This Device", - exportHeadline: "Export Data", - importHeadline: "Import Data", - selectionDescription: "Select the data that you want to transfer.", - exportSelectionDescription: "Select the data that you want to export.", - dataEntryDescription: "Enter this data on the other device.", - dataEntryInputDescription: - "Enter the data displayed on the other device.", + transferDataHeadline: "Data Transfer", + sendHeadline: "Transfer to other device", + receiveHeadline: "Transfer to This Device", + exportHeadline: "Export Data", + importHeadline: "Import Data", + selectionDescription: "Select the data that you want to transfer.", + exportSelectionDescription: "Select the data that you want to export.", + dataEntryDescription: "Enter this data on the other device.", + dataEntryInputDescription: + "Enter the data displayed on the other device.", - /// + /// - fromThisDeviceButton: "Send to other device", - toThisDeviceButton: "Send to this device", - exportButton: "Export to file", - importButton: "Import from file", + fromThisDeviceButton: "Send to other device", + toThisDeviceButton: "Send to this device", + exportButton: "Export to file", + importButton: "Import from file", - /// + /// - generalHeadline: "General", + generalHeadline: "General", - connectionData: "Connection data", - settingsData: "Identity & personal data", + connectionData: "Connection data", + settingsData: "Identity & personal data", - chatsHeadline: "Chats", - noChatsPlaceholder: "No chats", + chatsHeadline: "Chats", + noChatsPlaceholder: "No chats", - /// + /// - transferChannelHeadline: "Transfer Chanel", - transferKeyHeadline: "Transfer Encryption Key", + transferChannelHeadline: "Transfer Chanel", + transferKeyHeadline: "Transfer Encryption Key", - sendButton: "Send", - sendAgainButton: "Send again", + sendButton: "Send", + sendAgainButton: "Send again", - /// + /// - filesSentProgress: (progress: number, total: number) => - `Sent ${progress} of ${total} files`, - filesReceivedProgress: (progress: number, total: number) => - `Received ${progress} of ${total} files`, + filesSentProgress: (progress: number, total: number) => + `Sent ${progress} of ${total} files`, + filesReceivedProgress: (progress: number, total: number) => + `Received ${progress} of ${total} files`, - // + // - exportKey: "Encryption key", - exportKeyConfirmation: "Confirm", - downloadFileButton: "Download", - importFileButton: "Import", - decryptImportButton: "Decrypt", - incorrectPassphraseError: "The encryption key is incorrect", + exportKey: "Encryption key", + exportKeyConfirmation: "Confirm", + downloadFileButton: "Download", + importFileButton: "Import", + decryptImportButton: "Decrypt", + incorrectPassphraseError: "The encryption key is incorrect", }, storage: { - noItemSelected: "No item selected", - notAFile: "(not a file)", - contentEmpty: "(empty)", + noItemSelected: "No item selected", + notAFile: "(not a file)", + contentEmpty: "(empty)", - usageLabel: "Usage", - usageVauleLabel: (used: number, max: number) => `${used} of ${max} MB`, + usageLabel: "Usage", + usageVauleLabel: (used: number, max: number) => `${used} of ${max} MB`, - path: "Path", - content: "Content", + path: "Path", + content: "Content", - deleteItem: "Delete item", + deleteItem: "Delete item", - removeJunkButton: "Delete junk files", + removeJunkButton: "Delete junk files", }, chatPage: { - closeChatAudioLabe: "close chat", - chatSettingsAudioLabel: "chat settings", + closeChatAudioLabe: "close chat", + chatSettingsAudioLabel: "chat settings", - pages: { - settings: "Settings", - messages: "Messages", - tasks: "Tasks", - calendar: "Calendar", - }, + pages: { + settings: "Settings", + messages: "Messages", + tasks: "Tasks", + calendar: "Calendar", + }, - settings: { - settingsHeadline: "Settings", + settings: { + settingsHeadline: "Settings", - nameLabel: "Chat name", - setNameButtonAudioLabel: "set name", + nameLabel: "Chat name", + setNameButtonAudioLabel: "set name", - newSecondaryChannelPlaceholder: "Add secondary channel", - newSecondaryChannelAudioLabel: "name of new secondary channel", - addSecondaryChannelButtonAudioLabel: "add secondary channel", + transferLabel: "Share chat", - encryptionKeyLabel: "Encryption key", - setEncryptionKeyButtonAudioLabel: "set encryption key", - showEncryptionKey: "Show encryption key", - randomizeKey: "Randomize", + newSecondaryChannelPlaceholder: "Add secondary channel", + newSecondaryChannelAudioLabel: "name of new secondary channel", + addSecondaryChannelButtonAudioLabel: "add secondary channel", - setColorButtonAudioLabel: "set color", + encryptionKeyLabel: "Encryption key", + setEncryptionKeyButtonAudioLabel: "set encryption key", + showEncryptionKey: "Show encryption key", + randomizeKey: "Randomize", - deleteChatButton: "Delete entire chat", - deleteChatHeadline: "Delete chat?", - deleteChatDescription: - "This will delete all messages, tasks, and other data related to this chat from device.", - }, + setColorButtonAudioLabel: "set color", - message: { - messagesHeadline: "Messages", + deleteChatButton: "Delete entire chat", + deleteChatHeadline: "Delete chat?", + deleteChatDescription: + "This will delete all messages, tasks, and other data related to this chat from device.", + }, - messageFilterHeadline: "Filter messages", - messageFilterReactionsHadline: "Reactions", - messageFilterAllReactionsButton: "Show all", + message: { + messagesHeadline: "Messages", - /// + messageFilterHeadline: "Filter messages", + messageFilterReactionsHadline: "Reactions", + messageFilterAllReactionsButton: "Show all", - composerInputPlaceholder: "Type a message...", - sendMessageButtonAudioLabel: "send message", - filterMessagesButtonAudioLabel: "filter messages", + /// - /// + composerInputPlaceholder: "Type a message...", + sendMessageButtonAudioLabel: "send message", + filterMessagesButtonAudioLabel: "filter messages", - showMessageInfoButtonAudioLabel: "show message info", - messageInfoHeadline: "Message Info", - cancelReplyAudioLabel: "cancel reply", + /// - sentBy: "Sent by", - timeSent: "Time sent", - channel: "Channel", - messageContent: "Message content", + showMessageInfoButtonAudioLabel: "show message info", + messageInfoHeadline: "Message Info", + cancelReplyAudioLabel: "cancel reply", - copyMessageButton: "Copy message", - resendMessageButton: "Resend message", - decryptMessageButton: "Decrypt message", - replyToMessageButton: "Reply to message", - deleteMessageButton: "Delete message", + sentBy: "Sent by", + timeSent: "Time sent", + channel: "Channel", + messageContent: "Message content", - // + copyMessageButton: "Copy message", + resendMessageButton: "Resend message", + decryptMessageButton: "Decrypt message", + replyToMessageButton: "Reply to message", + deleteMessageButton: "Delete message", - thumbsUpReaction: "Reaction: thumbs up", - checkReaction: "Reaction: check", - stopReaction: "Reaction: stop sign", - attentionReaction: "Reaction: exclamation mark", - doubleAttentionReaction: "Reaction: double exclamation mark", - questionReaction: "Reaction: question mark", + // - // + thumbsUpReaction: "Reaction: thumbs up", + checkReaction: "Reaction: check", + stopReaction: "Reaction: stop sign", + attentionReaction: "Reaction: exclamation mark", + doubleAttentionReaction: "Reaction: double exclamation mark", + questionReaction: "Reaction: question mark", - replyPrefixLabel: "Replies: ", - replyHeaderLabel: (message: string) => `Replies to "${message}"`, - }, + // - task: { - noBoardSelected: "No board selected", - boardNotFound: "Board not found", + replyPrefixLabel: "Replies: ", + replyHeaderLabel: (message: string) => `Replies to "${message}"`, + }, - typeBoard: "board", + task: { + noBoardSelected: "No board selected", + boardNotFound: "Board not found", - /// + typeBoard: "board", - closeBoardButtonAudioLabel: "close board", - toggleBoardButtonAudioLabel: "toggle board list", - showBoardSettingsButtonAudioLabel: "show board settigns", + /// - listViewButtonAudioLabel: "list view", - kanbanViewButtonAudioLabel: "kanban view", - statusViewButtonAudioLabel: "status grid view", + closeBoardButtonAudioLabel: "close board", + toggleBoardButtonAudioLabel: "toggle board list", + showBoardSettingsButtonAudioLabel: "show board settigns", - filterTasksButtonAudioLabel: "filter tasks", - createTaskButtonAudioLabel: "create new task", + listViewButtonAudioLabel: "list view", + kanbanViewButtonAudioLabel: "kanban view", + statusViewButtonAudioLabel: "status grid view", - /// + filterTasksButtonAudioLabel: "filter tasks", + createTaskButtonAudioLabel: "create new task", - boardSettingsHeadline: "Board Settings", - boardNameInputLabel: "Board name", - deleteBoardButton: "Delete board and all tasks", + /// - /// + boardSettingsHeadline: "Board Settings", + boardNameInputLabel: "Board name", + deleteBoardButton: "Delete board and all tasks", - taskSettingsHeadline: "Edit Task", + /// - taskNameLabel: "Title", - taskBoardLabel: "Board", + taskSettingsHeadline: "Edit Task", - taskCategoryLabel: "Category", - taskStatusLabel: "Status", - taskPriorityLabel: "Priority", + taskNameLabel: "Title", + taskBoardLabel: "Board", - taskDescriptionLabel: "Description", + taskCategoryLabel: "Category", + taskStatusLabel: "Status", + taskPriorityLabel: "Priority", - taskDateLabel: "Date", - taskTimeLabel: "Time", + taskDescriptionLabel: "Description", - deleteTaskButton: "Delete task", + taskDateLabel: "Date", + taskTimeLabel: "Time", - /// + deleteTaskButton: "Delete task", - filterTasksHeadline: "Filter Tasks", + /// - /// + filterTasksHeadline: "Filter Tasks", - renameCategoryInputPlaceholder: "Rename category", - renameStatusInputPlaceholder: "Rename status", - }, + /// - calendar: { - eventsBoard: "Events", + renameCategoryInputPlaceholder: "Rename category", + renameStatusInputPlaceholder: "Rename status", + }, - /// + calendar: { + eventsBoard: "Events", - todayButtonAudioLabel: "go to today", + /// - previousMonthButtonAudioLabel: "previous month", - nextMonthButtonAudioLabel: "next month", + todayButtonAudioLabel: "go to today", - yearInputAudioLabel: "year", - monthInputAudioLabel: "month", + previousMonthButtonAudioLabel: "previous month", + nextMonthButtonAudioLabel: "next month", - yearInputPlaceholder: "2000", - monthInputPlaceholder: "01", + yearInputAudioLabel: "year", + monthInputAudioLabel: "month", - /// + yearInputPlaceholder: "2000", + monthInputPlaceholder: "01", - searchEventsHeadline: "Search Events", + /// - /// + searchEventsHeadline: "Search Events", - events: "Events", - noEvents: "No events", + /// - // + events: "Events", + noEvents: "No events", - eventNext: "Up next", - }, + // + + eventNext: "Up next", + }, }, }; @@ -385,707 +389,715 @@ export const allTranslations: { en: englishTranslations, de: { - updater: { - migrated: "Migriert", - }, - - general: { - deleteItemButtonAudioLabel: "element löschen", - searchButtonAudioLabel: "suchen", - searchButtonClearAudioLabel: "suche zurücksetzen", - - abortButton: "Abbrechen", - applyButton: "Anwenden", - backButton: "Zurück", - cancelButton: "Abbrechen", - continueButton: "Weiter", - confirmButton: "Bestätigen", - closeButton: "Schließen", - deleteButton: "Löschen", - exitButton: "Schließen", - fullscreenButton: "Vollbild", - refreshButton: "Aktualisieren", - saveButton: "Speichern", - setButton: "OK", - - selectAllLabel: "Alle auswählen", - - filterOrCreateLabel: (type: string) => - `${type} suchen oder erstellen`, - createLabel: (query: string) => `"${query}" erstellen`, - - reloadAppButton: "Neu laden", - - fileVersionLabel: "Version", - searchLabel: "Suche", - searchSuggestionsLabel: "Vorherige Suchen", - waitingLabel: "Warten...", - - restoreConnection: "Verbindung wiederherstellen", - - noPageSelected: "Keine Seite ausgewählt", - }, - - regional: { - weekdays: { - full: [ - "Sonntag", - "Montag", - "Dienstag", - "Mittwoch", - "Donnerstag", - "Freitag", - "Samstag", - ], - abbreviated: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], - }, - }, - - homePage: { - appName: "Coordination Tool", - greeting: (name: string) => `Hallo ${name}`, - - serverAddress: "Serveradresse", - serverAddressPlaceholder: "wss://udn-s1.onrender.com", - connectAudioLabel: "mit Server verbinden", - disconnectAudioLabel: "vom Server trennen", - manageConnectionsAudioLabel: "Verbindungen verwalten", - - settingsButton: "Einstellungen", - manageStorageButton: "Daten verwalten", - transferDataButton: "Daten übertragen", - - updateButton: (version: string) => `Aktualisieren: ${version}`, - - typeChat: "Chat", - noChatsPlaceholder: "Keine Chats", - }, - - settings: { - pages: { - appearance: "Erscheinungsbild", - account: "Konto", - regional: "Sprache & Region", - info: "Über CT", - }, - themes: { - dynamic: "Dynamisch", - dark: "Dunkel", - light: "Hell", - system: "Geräteeinstellung", - black: "Schwarz", - }, - account: { - yourNameLabel: "Dein Name", - yourNamePlaceholder: "Max Mustermann", - setNameButtonAudioLabel: "Namen festlegen", - }, - regional: { - language: "Sprache", - firstDayOfWeekLabel: "Erster Wochentag", - }, - about: { - version: "Version", - checkUpdatesButton: "Nach Updates suchen", - }, - }, - - onboarding: { - connectionHeadline: "Mit UDN verbinden", - connectionDescription: - "Um Daten und Nachichten zu verschicken, verbinde dich mit dem Universellen Dezentralen Netzwerk (UDN).", - connectButton: "Verbinden", - connectionNextButton: (isConnected: boolean) => - isConnected ? "Weiter" : "Ohne UDN einrichten", - - /// - - transferOptionsHeadline: "Deine Daten kopieren", - transferOptionsDescription: - "Wenn du Coordination Tool bereits auf einem anderen Gerät verwendest, kopiere deine Kontodaten. Du kannst beide Geräte gleichzeitig verwenden.", - transferOptionTransfer: "Daten übertragen", - transferOptionNew: "Als neues Gerät enrichten", - - // - - nameHeadline: "Dein Name", - nameDescription: - "Diesen Namen sehen andere, wenn du Nachrichten versendest. Du kannst deinen Namen jederzeit in den Einstellungen ändern.", - - // - - transferHeadline: "Datenübertragung", - transferDescription: - "Verwende die Funktion zur Datenübertragung auf deinem anderen Getät, um deine Identität und persönlichen Daten zu kopieren. Gib die dazu angezeigten Daten unten ein. Du findest die Datenübertragung auf der Startseite des anderen Geräts.", - transferButton: "Daten kopieren", - }, - - connectionModal: { - connectionModalHeadline: "Verbindungen verwalten", - - connectButtonAudioLabel: "verbinden", - }, - - dataTransferModal: { - transferDataHeadline: "Datenübertragung", - sendHeadline: "An anderes Gerät senden", - receiveHeadline: "An dieses Gerät senden", - exportHeadline: "Daten exportieren", - importHeadline: "Daten importieren", - selectionDescription: - "Wähle die Daten aus, die du übertragen möchtest.", - exportSelectionDescription: - "Wähle die Daten aus, die du exportieren möchtest.", - dataEntryDescription: - "Gib diese Informationen auf dem anderen Gerät ein.", - dataEntryInputDescription: - "Gib die auf dem anderen Gerät angezeigten Informationen ein.", - - fromThisDeviceButton: "An anderes Gerät senden", - toThisDeviceButton: "An dieses Gerät senden", - exportButton: "Als Datei exportieren", - importButton: "Aus Datei importieren", - - generalHeadline: "Allgemein", - - connectionData: "Verbindungsdaten", - settingsData: "Identität und persönliche Daten", - - chatsHeadline: "Chats", - noChatsPlaceholder: "Keine Chats", - - transferChannelHeadline: "Übertragungskanal", - transferKeyHeadline: "Schlüssel", - - sendButton: "Senden", - sendAgainButton: "Erneut senden", - - filesSentProgress: (progress: number, total: number) => - `${progress} von ${total} Dateien gesendet`, - filesReceivedProgress: (progress: number, total: number) => - `${progress} von ${total} Dateien empfangen`, - - exportKey: "Schlüssel", - exportKeyConfirmation: "Schlüssel bestätigen", - downloadFileButton: "Herunterladen", - importFileButton: "Importieren", - decryptImportButton: "Entschlüsseln", - incorrectPassphraseError: "Der Schlüssel ist nicht korrekt", - }, - - storage: { - noItemSelected: "Kein Element ausgewählt", - notAFile: "(keine Datei)", - contentEmpty: "(leer)", - - usageLabel: "Speicher", - usageVauleLabel: (used: number, max: number) => - `${used} von ${max} MB belegt`, - - path: "Pfad", - content: "Inhalt", - - deleteItem: "Element löschen", - - removeJunkButton: "Datenmüll löschen", - }, - - chatPage: { - closeChatAudioLabe: "Chat schließen", - chatSettingsAudioLabel: "Chateinstellungen", - - pages: { - settings: "Einstellungen", - messages: "Nachrichten", - tasks: "Aufgaben", - calendar: "Kalender", - }, - - settings: { - settingsHeadline: "Einstellungen", + updater: { + migrated: "Migriert", + }, + + general: { + deleteItemButtonAudioLabel: "element löschen", + searchButtonAudioLabel: "suchen", + searchButtonClearAudioLabel: "suche zurücksetzen", + + abortButton: "Abbrechen", + applyButton: "Anwenden", + backButton: "Zurück", + cancelButton: "Abbrechen", + continueButton: "Weiter", + confirmButton: "Bestätigen", + closeButton: "Schließen", + deleteButton: "Löschen", + exitButton: "Schließen", + fullscreenButton: "Vollbild", + refreshButton: "Aktualisieren", + saveButton: "Speichern", + setButton: "OK", + + selectAllLabel: "Alle auswählen", + + filterOrCreateLabel: (type: string) => + `${type} suchen oder erstellen`, + createLabel: (query: string) => `"${query}" erstellen`, + + reloadAppButton: "Neu laden", + + fileVersionLabel: "Version", + searchLabel: "Suche", + searchSuggestionsLabel: "Vorherige Suchen", + waitingLabel: "Warten...", + + restoreConnection: "Verbindung wiederherstellen", + + noPageSelected: "Keine Seite ausgewählt", + }, + + regional: { + weekdays: { + full: [ + "Sonntag", + "Montag", + "Dienstag", + "Mittwoch", + "Donnerstag", + "Freitag", + "Samstag", + ], + abbreviated: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], + }, + }, + + homePage: { + appName: "Coordination Tool", + greeting: (name: string) => `Hallo ${name}`, + + serverAddress: "Serveradresse", + serverAddressPlaceholder: "wss://udn.vdpr.org", + connectAudioLabel: "mit Server verbinden", + disconnectAudioLabel: "vom Server trennen", + manageConnectionsAudioLabel: "Verbindungen verwalten", + + settingsButton: "Einstellungen", + manageStorageButton: "Daten verwalten", + transferDataButton: "Daten übertragen", + + updateButton: (version: string) => `Aktualisieren: ${version}`, + + typeChat: "Chat", + noChatsPlaceholder: "Keine Chats", + }, + + settings: { + pages: { + appearance: "Erscheinungsbild", + account: "Konto", + regional: "Sprache & Region", + info: "Über CT", + }, + themes: { + dynamic: "Dynamisch", + dark: "Dunkel", + light: "Hell", + system: "Geräteeinstellung", + black: "Schwarz", + }, + account: { + yourNameLabel: "Dein Name", + yourNamePlaceholder: "Max Mustermann", + setNameButtonAudioLabel: "Namen festlegen", + }, + regional: { + language: "Sprache", + firstDayOfWeekLabel: "Erster Wochentag", + }, + about: { + version: "Version", + checkUpdatesButton: "Nach Updates suchen", + brand: "Software von VDMDI", + brandDescription: "Code verfügbar auf Viridian Public Resources (VDPR)" + }, + }, + + onboarding: { + connectionHeadline: "Mit UDN verbinden", + connectionDescription: + "Um Daten und Nachichten zu verschicken, verbinde dich mit dem Universellen Dezentralen Netzwerk (UDN).", + connectButton: "Verbinden", + connectionNextButton: (isConnected: boolean) => + isConnected ? "Weiter" : "Ohne UDN einrichten", + + /// + + transferOptionsHeadline: "Deine Daten kopieren", + transferOptionsDescription: + "Wenn du Coordination Tool bereits auf einem anderen Gerät verwendest, kopiere deine Kontodaten. Du kannst beide Geräte gleichzeitig verwenden.", + transferOptionTransfer: "Daten übertragen", + transferOptionNew: "Als neues Gerät enrichten", + + // + + nameHeadline: "Dein Name", + nameDescription: + "Diesen Namen sehen andere, wenn du Nachrichten versendest. Du kannst deinen Namen jederzeit in den Einstellungen ändern.", + + // + + transferHeadline: "Datenübertragung", + transferDescription: + "Verwende die Funktion zur Datenübertragung auf deinem anderen Getät, um deine Identität und persönlichen Daten zu kopieren. Gib die dazu angezeigten Daten unten ein. Du findest die Datenübertragung auf der Startseite des anderen Geräts.", + transferButton: "Daten kopieren", + }, + + connectionModal: { + connectionModalHeadline: "Verbindungen verwalten", + + connectButtonAudioLabel: "verbinden", + }, + + dataTransferModal: { + transferDataHeadline: "Datenübertragung", + sendHeadline: "An anderes Gerät senden", + receiveHeadline: "An dieses Gerät senden", + exportHeadline: "Daten exportieren", + importHeadline: "Daten importieren", + selectionDescription: + "Wähle die Daten aus, die du übertragen möchtest.", + exportSelectionDescription: + "Wähle die Daten aus, die du exportieren möchtest.", + dataEntryDescription: + "Gib diese Informationen auf dem anderen Gerät ein.", + dataEntryInputDescription: + "Gib die auf dem anderen Gerät angezeigten Informationen ein.", + + fromThisDeviceButton: "An anderes Gerät senden", + toThisDeviceButton: "An dieses Gerät senden", + exportButton: "Als Datei exportieren", + importButton: "Aus Datei importieren", + + generalHeadline: "Allgemein", + + connectionData: "Verbindungsdaten", + settingsData: "Identität und persönliche Daten", + + chatsHeadline: "Chats", + noChatsPlaceholder: "Keine Chats", + + transferChannelHeadline: "Übertragungskanal", + transferKeyHeadline: "Schlüssel", + + sendButton: "Senden", + sendAgainButton: "Erneut senden", + + filesSentProgress: (progress: number, total: number) => + `${progress} von ${total} Dateien gesendet`, + filesReceivedProgress: (progress: number, total: number) => + `${progress} von ${total} Dateien empfangen`, + + exportKey: "Schlüssel", + exportKeyConfirmation: "Schlüssel bestätigen", + downloadFileButton: "Herunterladen", + importFileButton: "Importieren", + decryptImportButton: "Entschlüsseln", + incorrectPassphraseError: "Der Schlüssel ist nicht korrekt", + }, + + storage: { + noItemSelected: "Kein Element ausgewählt", + notAFile: "(keine Datei)", + contentEmpty: "(leer)", + + usageLabel: "Speicher", + usageVauleLabel: (used: number, max: number) => + `${used} von ${max} MB belegt`, + + path: "Pfad", + content: "Inhalt", + + deleteItem: "Element löschen", + + removeJunkButton: "Datenmüll löschen", + }, + + chatPage: { + closeChatAudioLabe: "Chat schließen", + chatSettingsAudioLabel: "Chateinstellungen", + + pages: { + settings: "Einstellungen", + messages: "Nachrichten", + tasks: "Aufgaben", + calendar: "Kalender", + }, + + settings: { + settingsHeadline: "Einstellungen", + + nameLabel: "Name", + setNameButtonAudioLabel: "namen festlegen", + + transferLabel: "Chat teilen", + + newSecondaryChannelPlaceholder: "Sekundären Kanal hinzufügen", + newSecondaryChannelAudioLabel: + "Name des neuen sekundären Kanals", + addSecondaryChannelButtonAudioLabel: + "Sekundären Kanal hinzufügen", + + encryptionKeyLabel: "Schlüssel", + setEncryptionKeyButtonAudioLabel: "Schlüssel festlegen", + showEncryptionKey: "Schlüssel anzeigen", + randomizeKey: "Generieren", - nameLabel: "Name", - setNameButtonAudioLabel: "namen festlegen", + setColorButtonAudioLabel: "Farbe festlegen", - newSecondaryChannelPlaceholder: "Sekundären Kanal hinzufügen", - newSecondaryChannelAudioLabel: - "Name des neuen sekundären Kanals", - addSecondaryChannelButtonAudioLabel: - "Sekundären Kanal hinzufügen", + deleteChatButton: "Gesamten Chat löschen", + deleteChatHeadline: "Gesamten Chat löschen?", + deleteChatDescription: + "Dies löscht alle Nachrichten, Aufgaben und alle anderen Daten, die zu diesem Chat gehören.", + }, - encryptionKeyLabel: "Schlüssel", - setEncryptionKeyButtonAudioLabel: "Schlüssel festlegen", - showEncryptionKey: "Schlüssel anzeigen", - randomizeKey: "Zufällig generieren", + message: { + messagesHeadline: "Nachrichten", - setColorButtonAudioLabel: "Farbe festlegen", + messageFilterHeadline: "Nachrichten filtern", + messageFilterReactionsHadline: "Reaktionen", + messageFilterAllReactionsButton: "Alle anzeigen", - deleteChatButton: "Gesamten Chat löschen", - deleteChatHeadline: "Gesamten Chat löschen?", - deleteChatDescription: - "Dies löscht alle Nachrichten, Aufgaben und alle anderen Daten, die zu diesem Chat gehören.", - }, + composerInputPlaceholder: "Schreib eine Nachricht...", + sendMessageButtonAudioLabel: "nachricht senden", + filterMessagesButtonAudioLabel: "nachrichten filtern", - message: { - messagesHeadline: "Nachrichten", + showMessageInfoButtonAudioLabel: "nachrichteninfo anzeigen", + messageInfoHeadline: "Nachrichteninfo", + cancelReplyAudioLabel: "antwort abbrechen", - messageFilterHeadline: "Nachrichten filtern", - messageFilterReactionsHadline: "Reaktionen", - messageFilterAllReactionsButton: "Alle anzeigen", + sentBy: "Gesendet von", + timeSent: "Sendezeit", + channel: "Kanal", + messageContent: "Nachrichteninhalt", - composerInputPlaceholder: "Schreib eine Nachricht...", - sendMessageButtonAudioLabel: "nachricht senden", - filterMessagesButtonAudioLabel: "nachrichten filtern", + copyMessageButton: "Nachricht kopieren", + resendMessageButton: "Nachricht erneut senden", + decryptMessageButton: "Nachricht entschlüsseln", + replyToMessageButton: "Auf Nachricht antworten", + deleteMessageButton: "Nachricht löschen", - showMessageInfoButtonAudioLabel: "nachrichteninfo anzeigen", - messageInfoHeadline: "Nachrichteninfo", - cancelReplyAudioLabel: "antwort abbrechen", + // - sentBy: "Gesendet von", - timeSent: "Sendezeit", - channel: "Kanal", - messageContent: "Nachrichteninhalt", + thumbsUpReaction: "Reaktion: Daumen hoch", + checkReaction: "Reaktion: Haken", + stopReaction: "Reaktion: Stopp", + attentionReaction: "Reaktion: Ausrufezeichen", + doubleAttentionReaction: "Reaktion: doppeltes Ausrufezeichen", + questionReaction: "Reaktion: Fragezeichen", - copyMessageButton: "Nachricht kopieren", - resendMessageButton: "Nachricht erneut senden", - decryptMessageButton: "Nachricht entschlüsseln", - replyToMessageButton: "Auf Nachricht antworten", - deleteMessageButton: "Nachricht löschen", + replyPrefixLabel: "Antworten: ", + replyHeaderLabel: (message: string) => + `Antworten an "${message}"`, + }, - // + task: { + noBoardSelected: "Kein Board ausgewählt", + boardNotFound: "Board nicht gefunden", - thumbsUpReaction: "Reaktion: Daumen hoch", - checkReaction: "Reaktion: Haken", - stopReaction: "Reaktion: Stopp", - attentionReaction: "Reaktion: Ausrufezeichen", - doubleAttentionReaction: "Reaktion: doppeltes Ausrufezeichen", - questionReaction: "Reaktion: Fragezeichen", + typeBoard: "Board", - replyPrefixLabel: "Antworten: ", - replyHeaderLabel: (message: string) => - `Antworten an "${message}"`, - }, + closeBoardButtonAudioLabel: "board schließen", + toggleBoardButtonAudioLabel: "board-liste ein/ausblenden", + showBoardSettingsButtonAudioLabel: + "Board-Einstellungen anzeigen", - task: { - noBoardSelected: "Kein Board ausgewählt", - boardNotFound: "Board nicht gefunden", + listViewButtonAudioLabel: "Listenansicht", + kanbanViewButtonAudioLabel: "Kanban-Ansicht", + statusViewButtonAudioLabel: "Statusrasteransicht", - typeBoard: "Board", + filterTasksButtonAudioLabel: "Aufgaben filtern", + createTaskButtonAudioLabel: "Neue Aufgabe erstellen", - closeBoardButtonAudioLabel: "board schließen", - toggleBoardButtonAudioLabel: "board-liste ein/ausblenden", - showBoardSettingsButtonAudioLabel: - "Board-Einstellungen anzeigen", + boardSettingsHeadline: "Board-Einstellungen", + boardNameInputLabel: "Name", + deleteBoardButton: "Board und alle Aufgaben löschen", - listViewButtonAudioLabel: "Listenansicht", - kanbanViewButtonAudioLabel: "Kanban-Ansicht", - statusViewButtonAudioLabel: "Statusrasteransicht", + taskSettingsHeadline: "Aufgabe bearbeiten", - filterTasksButtonAudioLabel: "Aufgaben filtern", - createTaskButtonAudioLabel: "Neue Aufgabe erstellen", + taskNameLabel: "Titel", + taskBoardLabel: "Board", - boardSettingsHeadline: "Board-Einstellungen", - boardNameInputLabel: "Boardname", - deleteBoardButton: "Board und alle Aufgaben löschen", + taskCategoryLabel: "Kategorie", + taskStatusLabel: "Status", + taskPriorityLabel: "Priorität", - taskSettingsHeadline: "Aufgabe bearbeiten", + taskDescriptionLabel: "Beschreibung", - taskNameLabel: "Titel", - taskBoardLabel: "Board", + taskDateLabel: "Datum", + taskTimeLabel: "Uhrzeit", - taskCategoryLabel: "Kategorie", - taskStatusLabel: "Status", - taskPriorityLabel: "Priorität", + deleteTaskButton: "Aufgabe löschen", - taskDescriptionLabel: "Beschreibung", + filterTasksHeadline: "Aufgaben filtern", - taskDateLabel: "Datum", - taskTimeLabel: "Uhrzeit", + renameCategoryInputPlaceholder: "Kategorie umbenennen", + renameStatusInputPlaceholder: "Status umbenennen", + }, - deleteTaskButton: "Aufgabe löschen", + calendar: { + eventsBoard: "Ereignisse", - filterTasksHeadline: "Aufgaben filtern", + /// - renameCategoryInputPlaceholder: "Kategorie umbenennen", - renameStatusInputPlaceholder: "Status umbenennen", - }, + todayButtonAudioLabel: "gehe zu heute", - calendar: { - eventsBoard: "Ereignisse", + previousMonthButtonAudioLabel: "vorheriger monat", + nextMonthButtonAudioLabel: "nächster monat", - /// + yearInputAudioLabel: "Jahr", + monthInputAudioLabel: "Monat", - todayButtonAudioLabel: "gehe zu heute", + yearInputPlaceholder: "2000", + monthInputPlaceholder: "01", - previousMonthButtonAudioLabel: "vorheriger monat", - nextMonthButtonAudioLabel: "nächster monat", + searchEventsHeadline: "Ereignisse suchen", - yearInputAudioLabel: "Jahr", - monthInputAudioLabel: "Monat", + events: "Ereignisse", + noEvents: "Keine Ereignisse", - yearInputPlaceholder: "2000", - monthInputPlaceholder: "01", - - searchEventsHeadline: "Ereignisse suchen", - - events: "Ereignisse", - noEvents: "Keine Ereignisse", - - eventNext: "Als nächstes", - }, - }, + eventNext: "Als nächstes", + }, + }, }, es: { - updater: { - migrated: "Migrado", - }, - - general: { - deleteItemButtonAudioLabel: "eliminar elemento", - searchButtonAudioLabel: "buscar", - searchButtonClearAudioLabel: "borrar büsqueda", - - abortButton: "Abortar", - applyButton: "Guardar", - backButton: "Atrás", - cancelButton: "Cancelar", - continueButton: "Continuar", - confirmButton: "Confirmar", - closeButton: "Cerrar", - deleteButton: "Borrar", - exitButton: "Salir", - fullscreenButton: "Pantalla completa", - refreshButton: "Actualizar", - saveButton: "Guardar", - setButton: "OK", - - selectAllLabel: "Seleccionar todos", - - filterOrCreateLabel: (type: string) => `Buscar o crear ${type}`, - createLabel: (query: string) => `Crear "${query}"`, - - reloadAppButton: "Recargar app", - - fileVersionLabel: "Versión", - searchLabel: "Buscar", - searchSuggestionsLabel: "Búsquedas anteriores", - waitingLabel: "Esperando...", - - restoreConnection: "Conectar de nuevo", - - noPageSelected: "No página seleccionada", - }, - - regional: { - weekdays: { - full: [ - "Domingo", - "Lunes", - "Martes", - "Miércoles", - "Jueves", - "Viernes", - "Sábado", - ], - abbreviated: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"], - }, - }, - - homePage: { - appName: "Coordination Tool", - greeting: (name: string) => `Hola ${name}`, - - serverAddress: "Dirección del servidor", - serverAddressPlaceholder: "wss://udn-s1.onrender.com", - connectAudioLabel: "conectar al servidor", - disconnectAudioLabel: "desconectar del servidor", - manageConnectionsAudioLabel: "gestionar conexiones", - - settingsButton: "Ajustes", - manageStorageButton: "Gestionar almacenamiento", - transferDataButton: "Enviar o exportar archivos", - - updateButton: (version: string) => `Actualizar a ${version}`, - - typeChat: "chat", - noChatsPlaceholder: "No hay chats", - }, - - settings: { - pages: { - appearance: "Aspecto", - account: "Cuenta", - regional: "Idioma y Región", - info: "Sobre CT", - }, - themes: { - dynamic: "Dinámico", - dark: "Oscuro", - light: "Claro", - system: "Según dispositivo", - black: "Negro", - }, - account: { - yourNameLabel: "Tu nombre", - yourNamePlaceholder: "Juan Pérez", - setNameButtonAudioLabel: "establecer nombre", - }, - regional: { - language: "Idioma", - firstDayOfWeekLabel: "Primer día de la semana", - }, - about: { - version: "Versión", - checkUpdatesButton: "Buscar actualisaciones", - }, - }, - - onboarding: { - connectionHeadline: "Conectar al UDN", - connectionDescription: - "Para transferir datos y enviar mensajes, conéctate a la Red Descentralizada Universal (UDN).", - connectButton: "Conectar", - connectionNextButton: (isConnected: boolean): string => - isConnected ? "Continuar" : "Configurar sin UDN", - - /// - - transferOptionsHeadline: "Copiar tus datos", - transferOptionsDescription: - "Si ya usas el Coordination Tool en otro disposistivo, copia tu idantidad aquí. Puedes usar ambos dispositivos al mismo tiempo.", - transferOptionTransfer: "Copiar mis datos aquí", - transferOptionNew: "Configurar como dispositivo nuevo", - - // - - nameHeadline: "Tu nombre", - nameDescription: - "Esto es lo que ven otros cuando envías menajes. Siempre lo puedes cambiar en las ajustes.", - - // - - transferHeadline: "Transferencia de datos", - transferDescription: - "En el otro dispositivo, prepara la transferencia de tu identidad y datos personales. Ingresa los datos que se muestran a continuación. La opción de la transferencia de datos se encuentra en la pantalla inicial en el otro dispositivo.", - transferButton: "Copiar datos", - }, - - connectionModal: { - connectionModalHeadline: "Gestionar Conexiones", - - connectButtonAudioLabel: "conectar", - }, - - dataTransferModal: { - transferDataHeadline: "Transferencia de datos", - sendHeadline: "Enviar a otro dispositivo", - receiveHeadline: "Enviar a este dispositivo", - exportHeadline: "Exportar archivo", - importHeadline: "Importar archivo", - selectionDescription: - "Selecciona los datos que quieres transferir.", - exportSelectionDescription: - "Selecciona los datos que quieres exportar.", - dataEntryDescription: - "Introduce estos datos en el otro dispositivo.", - dataEntryInputDescription: - "Introduce los datos mostrados en el otro dispositivo.", - - fromThisDeviceButton: "Enviar a otro dispositivo", - toThisDeviceButton: "Enviar a este dispositivo", - exportButton: "Exportar archivo", - importButton: "Importar archivo", - - generalHeadline: "General", - - connectionData: "Datos de conexión", - settingsData: "Identidad y datos personales", - - chatsHeadline: "Chats", - noChatsPlaceholder: "No hay chats", - - transferChannelHeadline: "Canal de Transferencia", - transferKeyHeadline: "Clave de encriptación de transferencia", - - sendButton: "Enviar", - sendAgainButton: "Enviar otra vez", - - filesSentProgress: (progress: number, total: number) => - `${progress} de ${total} enviados`, - filesReceivedProgress: (progress: number, total: number) => - `${progress} de ${total} recibidos`, - - exportKey: "Clave de encriptación", - exportKeyConfirmation: "Confirmar clave", - downloadFileButton: "Descargar", - importFileButton: "Importar", - decryptImportButton: "Descifrar", - incorrectPassphraseError: "La clave no es correcta", - }, - - storage: { - noItemSelected: "Ningún elemento seleccionado", - notAFile: "(no es un archivo)", - contentEmpty: "(vacío)", - - usageLabel: "Almacenamiento", - usageVauleLabel: (used: number, max: number) => - `${used} de ${max} MB en uso`, - - path: "Ruta", - content: "Contenido", - - deleteItem: "Eliminar elemento", - - removeJunkButton: "Eliminar archivos basura", - }, - - chatPage: { - closeChatAudioLabe: "cerrar chat", - chatSettingsAudioLabel: "configuración del chat", - - pages: { - settings: "Configuración", - messages: "Mensajes", - tasks: "Tareas", - calendar: "Calendario", - }, - - settings: { - settingsHeadline: "Configuración", - - nameLabel: "Nombre del chat", - setNameButtonAudioLabel: "establecer nombre", - - newSecondaryChannelPlaceholder: "Añadir canal secundario", - newSecondaryChannelAudioLabel: - "nombre del nuevo canal secundario", - addSecondaryChannelButtonAudioLabel: "añadir canal secundario", + updater: { + migrated: "Migrado", + }, + + general: { + deleteItemButtonAudioLabel: "eliminar elemento", + searchButtonAudioLabel: "buscar", + searchButtonClearAudioLabel: "borrar büsqueda", + + abortButton: "Abortar", + applyButton: "Guardar", + backButton: "Atrás", + cancelButton: "Cancelar", + continueButton: "Continuar", + confirmButton: "Confirmar", + closeButton: "Cerrar", + deleteButton: "Borrar", + exitButton: "Salir", + fullscreenButton: "Pantalla completa", + refreshButton: "Actualizar", + saveButton: "Guardar", + setButton: "OK", + + selectAllLabel: "Seleccionar todos", + + filterOrCreateLabel: (type: string) => `Buscar o crear ${type}`, + createLabel: (query: string) => `Crear "${query}"`, + + reloadAppButton: "Recargar app", + + fileVersionLabel: "Versión", + searchLabel: "Buscar", + searchSuggestionsLabel: "Búsquedas anteriores", + waitingLabel: "Esperando...", + + restoreConnection: "Conectar de nuevo", + + noPageSelected: "No página seleccionada", + }, + + regional: { + weekdays: { + full: [ + "Domingo", + "Lunes", + "Martes", + "Miércoles", + "Jueves", + "Viernes", + "Sábado", + ], + abbreviated: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"], + }, + }, + + homePage: { + appName: "Coordination Tool", + greeting: (name: string) => `Hola ${name}`, + + serverAddress: "Dirección del servidor", + serverAddressPlaceholder: "wss://udn.vdpr.org", + connectAudioLabel: "conectar al servidor", + disconnectAudioLabel: "desconectar del servidor", + manageConnectionsAudioLabel: "gestionar conexiones", + + settingsButton: "Ajustes", + manageStorageButton: "Gestionar almacenamiento", + transferDataButton: "Enviar o exportar archivos", + + updateButton: (version: string) => `Actualizar a ${version}`, + + typeChat: "chat", + noChatsPlaceholder: "No hay chats", + }, + + settings: { + pages: { + appearance: "Aspecto", + account: "Cuenta", + regional: "Idioma y Región", + info: "Sobre CT", + }, + themes: { + dynamic: "Dinámico", + dark: "Oscuro", + light: "Claro", + system: "Según dispositivo", + black: "Negro", + }, + account: { + yourNameLabel: "Tu nombre", + yourNamePlaceholder: "Juan Pérez", + setNameButtonAudioLabel: "establecer nombre", + }, + regional: { + language: "Idioma", + firstDayOfWeekLabel: "Primer día de la semana", + }, + about: { + version: "Versión", + checkUpdatesButton: "Buscar actualisaciones", + brand: "Software de VDMDI", + brandDescription: "Code desponible en Viridian Public Resources (VDPR)" + }, + }, + + onboarding: { + connectionHeadline: "Conectar al UDN", + connectionDescription: + "Para transferir datos y enviar mensajes, conéctate a la Red Descentralizada Universal (UDN).", + connectButton: "Conectar", + connectionNextButton: (isConnected: boolean): string => + isConnected ? "Continuar" : "Configurar sin UDN", + + /// + + transferOptionsHeadline: "Copiar tus datos", + transferOptionsDescription: + "Si ya usas el Coordination Tool en otro disposistivo, copia tu idantidad aquí. Puedes usar ambos dispositivos al mismo tiempo.", + transferOptionTransfer: "Copiar mis datos aquí", + transferOptionNew: "Configurar como dispositivo nuevo", + + // + + nameHeadline: "Tu nombre", + nameDescription: + "Esto es lo que ven otros cuando envías menajes. Siempre lo puedes cambiar en las ajustes.", + + // + + transferHeadline: "Transferencia de datos", + transferDescription: + "En el otro dispositivo, prepara la transferencia de tu identidad y datos personales. Ingresa los datos que se muestran a continuación. La opción de la transferencia de datos se encuentra en la pantalla inicial en el otro dispositivo.", + transferButton: "Copiar datos", + }, + + connectionModal: { + connectionModalHeadline: "Gestionar Conexiones", + + connectButtonAudioLabel: "conectar", + }, + + dataTransferModal: { + transferDataHeadline: "Transferencia de datos", + sendHeadline: "Enviar a otro dispositivo", + receiveHeadline: "Enviar a este dispositivo", + exportHeadline: "Exportar archivo", + importHeadline: "Importar archivo", + selectionDescription: + "Selecciona los datos que quieres transferir.", + exportSelectionDescription: + "Selecciona los datos que quieres exportar.", + dataEntryDescription: + "Introduce estos datos en el otro dispositivo.", + dataEntryInputDescription: + "Introduce los datos mostrados en el otro dispositivo.", + + fromThisDeviceButton: "Enviar a otro dispositivo", + toThisDeviceButton: "Enviar a este dispositivo", + exportButton: "Exportar archivo", + importButton: "Importar archivo", + + generalHeadline: "General", + + connectionData: "Datos de conexión", + settingsData: "Identidad y datos personales", + + chatsHeadline: "Chats", + noChatsPlaceholder: "No hay chats", + + transferChannelHeadline: "Canal de Transferencia", + transferKeyHeadline: "Clave de encriptación de transferencia", + + sendButton: "Enviar", + sendAgainButton: "Enviar otra vez", + + filesSentProgress: (progress: number, total: number) => + `${progress} de ${total} enviados`, + filesReceivedProgress: (progress: number, total: number) => + `${progress} de ${total} recibidos`, + + exportKey: "Clave de encriptación", + exportKeyConfirmation: "Confirmar clave", + downloadFileButton: "Descargar", + importFileButton: "Importar", + decryptImportButton: "Descifrar", + incorrectPassphraseError: "La clave no es correcta", + }, + + storage: { + noItemSelected: "Ningún elemento seleccionado", + notAFile: "(no es un archivo)", + contentEmpty: "(vacío)", + + usageLabel: "Almacenamiento", + usageVauleLabel: (used: number, max: number) => + `${used} de ${max} MB en uso`, + + path: "Ruta", + content: "Contenido", + + deleteItem: "Eliminar elemento", + + removeJunkButton: "Eliminar archivos basura", + }, + + chatPage: { + closeChatAudioLabe: "cerrar chat", + chatSettingsAudioLabel: "configuración del chat", + + pages: { + settings: "Configuración", + messages: "Mensajes", + tasks: "Tareas", + calendar: "Calendario", + }, + + settings: { + settingsHeadline: "Configuración", + + nameLabel: "Nombre del chat", + setNameButtonAudioLabel: "establecer nombre", + + transferLabel: "Compartir chat", + + newSecondaryChannelPlaceholder: "Añadir canal secundario", + newSecondaryChannelAudioLabel: + "nombre del nuevo canal secundario", + addSecondaryChannelButtonAudioLabel: "añadir canal secundario", + + encryptionKeyLabel: "Clave de encriptación", + setEncryptionKeyButtonAudioLabel: + "establecer clave de encriptación", + showEncryptionKey: "Mostrar clave de encriptación", + randomizeKey: "Aleatorizar", - encryptionKeyLabel: "Clave de encriptación", - setEncryptionKeyButtonAudioLabel: - "establecer clave de encriptación", - showEncryptionKey: "Mostrar clave de encriptación", - randomizeKey: "Aleatorizar", + setColorButtonAudioLabel: "establecer color", - setColorButtonAudioLabel: "establecer color", + deleteChatButton: "Eliminar todo el chat", + deleteChatHeadline: "¿Eliminar chat?", + deleteChatDescription: + "¿Quieres borrar todas las mensajes, tareas y otros datos que pertenecen a este chat?", + }, - deleteChatButton: "Eliminar todo el chat", - deleteChatHeadline: "¿Eliminar chat?", - deleteChatDescription: - "¿Quieres borrar todas las mensajes, tareas y otros datos que pertenecen a este chat?", - }, + message: { + messagesHeadline: "Mensajes", - message: { - messagesHeadline: "Mensajes", + messageFilterHeadline: "Filtrar mensajes", + messageFilterReactionsHadline: "Reacciones", + messageFilterAllReactionsButton: "Mostrar todas", - messageFilterHeadline: "Filtrar mensajes", - messageFilterReactionsHadline: "Reacciones", - messageFilterAllReactionsButton: "Mostrar todas", + composerInputPlaceholder: "Escribe un mensaje...", + sendMessageButtonAudioLabel: "enviar mensaje", + filterMessagesButtonAudioLabel: "filtrar mensajes", - composerInputPlaceholder: "Escribe un mensaje...", - sendMessageButtonAudioLabel: "enviar mensaje", - filterMessagesButtonAudioLabel: "filtrar mensajes", + showMessageInfoButtonAudioLabel: + "mostrar información del mensaje", + messageInfoHeadline: "Información del Mensaje", + cancelReplyAudioLabel: "abortar la respuesta", - showMessageInfoButtonAudioLabel: - "mostrar información del mensaje", - messageInfoHeadline: "Información del Mensaje", - cancelReplyAudioLabel: "abortar la respuesta", + sentBy: "Enviado por", + timeSent: "Hora de envío", + channel: "Canal", + messageContent: "Contenido del mensaje", - sentBy: "Enviado por", - timeSent: "Hora de envío", - channel: "Canal", - messageContent: "Contenido del mensaje", + copyMessageButton: "Copiar mensaje", + resendMessageButton: "Reenviar mensaje", + decryptMessageButton: "Desencriptar mensaje", + replyToMessageButton: "Responder al mensaje", + deleteMessageButton: "Eliminar mensaje", - copyMessageButton: "Copiar mensaje", - resendMessageButton: "Reenviar mensaje", - decryptMessageButton: "Desencriptar mensaje", - replyToMessageButton: "Responder al mensaje", - deleteMessageButton: "Eliminar mensaje", + // - // + thumbsUpReaction: "Reacción: pulgar hacia arriba", + checkReaction: "Reacción: marca de verificación", + stopReaction: "Reacción: signo de parada", + attentionReaction: "Reaccion: signo de atención", + doubleAttentionReaction: "Reaccion: signo de atención doble", + questionReaction: "Reaccion: signo de interrogación", - thumbsUpReaction: "Reacción: pulgar hacia arriba", - checkReaction: "Reacción: marca de verificación", - stopReaction: "Reacción: signo de parada", - attentionReaction: "Reaccion: signo de atención", - doubleAttentionReaction: "Reaccion: signo de atención doble", - questionReaction: "Reaccion: signo de interrogación", + replyPrefixLabel: "Respuestas: ", + replyHeaderLabel: (message: string) => + `Respuestas a "${message}"`, + }, - replyPrefixLabel: "Respuestas: ", - replyHeaderLabel: (message: string) => - `Respuestas a "${message}"`, - }, + task: { + noBoardSelected: "Ningún tablero seleccionado", + boardNotFound: "Tablero no encontrado", - task: { - noBoardSelected: "Ningún tablero seleccionado", - boardNotFound: "Tablero no encontrado", + typeBoard: "board", - typeBoard: "board", + closeBoardButtonAudioLabel: "cerrar tablero", + toggleBoardButtonAudioLabel: + "mostrar o ocultar lista de tableros", + showBoardSettingsButtonAudioLabel: + "mostrar configuración del tablero", - closeBoardButtonAudioLabel: "cerrar tablero", - toggleBoardButtonAudioLabel: - "mostrar o ocultar lista de tableros", - showBoardSettingsButtonAudioLabel: - "mostrar configuración del tablero", + listViewButtonAudioLabel: "vista de lista", + kanbanViewButtonAudioLabel: "vista kanban", + statusViewButtonAudioLabel: "vista de cuadrícula de estado", - listViewButtonAudioLabel: "vista de lista", - kanbanViewButtonAudioLabel: "vista kanban", - statusViewButtonAudioLabel: "vista de cuadrícula de estado", + filterTasksButtonAudioLabel: "filtrar tareas", + createTaskButtonAudioLabel: "crear nueva tarea", - filterTasksButtonAudioLabel: "filtrar tareas", - createTaskButtonAudioLabel: "crear nueva tarea", + boardSettingsHeadline: "Configuración del Tablero", + boardNameInputLabel: "Nombre del tablero", + deleteBoardButton: "Eliminar tablero y todas las tareas", - boardSettingsHeadline: "Configuración del Tablero", - boardNameInputLabel: "Nombre del tablero", - deleteBoardButton: "Eliminar tablero y todas las tareas", + taskSettingsHeadline: "Editar Tarea", - taskSettingsHeadline: "Editar Tarea", + taskNameLabel: "Título", + taskBoardLabel: "Tablero", - taskNameLabel: "Título", - taskBoardLabel: "Tablero", + taskCategoryLabel: "Categoría", + taskStatusLabel: "Estado", + taskPriorityLabel: "Prioridad", - taskCategoryLabel: "Categoría", - taskStatusLabel: "Estado", - taskPriorityLabel: "Prioridad", + taskDescriptionLabel: "Descripción", - taskDescriptionLabel: "Descripción", + taskDateLabel: "Fecha", + taskTimeLabel: "Hora", - taskDateLabel: "Fecha", - taskTimeLabel: "Hora", + deleteTaskButton: "Eliminar tarea", - deleteTaskButton: "Eliminar tarea", + filterTasksHeadline: "Filtrar Tareas", - filterTasksHeadline: "Filtrar Tareas", + renameCategoryInputPlaceholder: "Renombrar categoría", + renameStatusInputPlaceholder: "Renombrar estado", + }, - renameCategoryInputPlaceholder: "Renombrar categoría", - renameStatusInputPlaceholder: "Renombrar estado", - }, + calendar: { + eventsBoard: "Eventos", - calendar: { - eventsBoard: "Eventos", + /// - /// + todayButtonAudioLabel: "ir a hoy", - todayButtonAudioLabel: "ir a hoy", + previousMonthButtonAudioLabel: "mes anterior", + nextMonthButtonAudioLabel: "mes siguiente", - previousMonthButtonAudioLabel: "mes anterior", - nextMonthButtonAudioLabel: "mes siguiente", + yearInputAudioLabel: "año", + monthInputAudioLabel: "mes", - yearInputAudioLabel: "año", - monthInputAudioLabel: "mes", + yearInputPlaceholder: "2000", + monthInputPlaceholder: "01", - yearInputPlaceholder: "2000", - monthInputPlaceholder: "01", + searchEventsHeadline: "Buscar Eventos", - searchEventsHeadline: "Buscar Eventos", + events: "Eventos", + noEvents: "No hay eventos", - events: "Eventos", - noEvents: "No hay eventos", - - eventNext: "A continuación", - }, - }, + eventNext: "A continuación", + }, + }, }, }; diff --git a/src/ViewModel/Chat/chatListViewModel.ts b/src/ViewModel/Chat/chatListViewModel.ts index 31dbd62f..53453e2b 100644 --- a/src/ViewModel/Chat/chatListViewModel.ts +++ b/src/ViewModel/Chat/chatListViewModel.ts @@ -7,6 +7,7 @@ import ConnectionViewModel from "../Global/connectionViewModel"; import * as React from "../../react"; import implementFilter, { IndexManager } from "../../Model/Utility/utility"; import ChatModel from "../../Model/Chat/chatModel"; +import FileTransferViewModel from "../Global/fileTransferViewModel"; export default class ChatListViewModel { notificationViewModel: NotificationViewModel; @@ -62,6 +63,7 @@ export default class ChatListViewModel { this.connectionViewModel, this, this.contactListViewModel, + this.fileTransferViewModel ); }; @@ -99,6 +101,7 @@ export default class ChatListViewModel { public readonly settingsViewModel: SettingsViewModel, public readonly connectionViewModel: ConnectionViewModel, public readonly contactListViewModel: ContactListViewModel, + public readonly fileTransferViewModel: FileTransferViewModel, ) { this.notificationViewModel = new NotificationViewModel( this, diff --git a/src/ViewModel/Chat/chatViewModel.ts b/src/ViewModel/Chat/chatViewModel.ts index f37b0122..b568c396 100644 --- a/src/ViewModel/Chat/chatViewModel.ts +++ b/src/ViewModel/Chat/chatViewModel.ts @@ -22,6 +22,7 @@ import ChatModel, { ChatMessage, ChatMessageReaction, } from "../../Model/Chat/chatModel"; +import FileTransferViewModel from "../Global/fileTransferViewModel"; export default class ChatViewModel extends ContextHost { calendarViewModel: CalendarPageViewModel; @@ -81,6 +82,10 @@ export default class ChatViewModel extends ContextHost { this.index.value = index; }; + share = (): void => { + this.fileTransferViewModel.showDirectionSelectionModal(); + } + // load loadPageSelection = (): void => { const path: string[] = StorageModel.getPath( @@ -151,6 +156,7 @@ export default class ChatViewModel extends ContextHost { public readonly connectionViewModel: ConnectionViewModel, public readonly chatListViewModel: ChatListViewModel, public readonly contactListViewModel: ContactListViewModel, + public readonly fileTransferViewModel: FileTransferViewModel, ) { super("chat", coreViewModel); diff --git a/src/ViewModel/Global/coreViewModel.ts b/src/ViewModel/Global/coreViewModel.ts index 2db92ce2..ae35effa 100644 --- a/src/ViewModel/Global/coreViewModel.ts +++ b/src/ViewModel/Global/coreViewModel.ts @@ -153,6 +153,11 @@ export default class CoreViewModel { }, 500); }; + // VDPR + openVDPR = (): void => { + window.open("https://vdpr.org/VDMDI/CT"); + } + // init constructor( public readonly storageModel: StorageModel, diff --git a/src/index.tsx b/src/index.tsx index 9d5694dc..4490a634 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -54,13 +54,14 @@ const contactListViewModel = new ContactListViewModel( settingsViewModel, ); const connectionViewModel = new ConnectionViewModel(coreViewModel); +const fileTransferViewModel = new FileTransferViewModel(coreViewModel); const chatListViewModel = new ChatListViewModel( coreViewModel, settingsViewModel, connectionViewModel, contactListViewModel, + fileTransferViewModel ); -const fileTransferViewModel = new FileTransferViewModel(coreViewModel); const onboardingViewModel = new OnboardingViewModel( connectionViewModel, fileTransferViewModel,