From 193a9d6f8958140b8db46d9540567fa2c009eb01 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Mon, 28 Feb 2022 12:04:58 -0800 Subject: [PATCH] Add support for many prospective new languages --- lib/l10n/delegateLb.dart | 434 ++++++++++++++++++++++++++++++ lib/l10n/intl_de.arb | 11 +- lib/l10n/intl_el.arb | 328 ++++++++++++++++++++++ lib/l10n/intl_en.arb | 5 +- lib/l10n/intl_es.arb | 5 +- lib/l10n/intl_fr.arb | 5 +- lib/l10n/intl_it.arb | 5 +- lib/l10n/intl_lb.arb | 328 ++++++++++++++++++++++ lib/l10n/intl_no.arb | 328 ++++++++++++++++++++++ lib/l10n/intl_pl.arb | 5 +- lib/l10n/intl_pt.arb | 5 +- lib/l10n/intl_ro.arb | 5 +- lib/l10n/intl_ru.arb | 5 +- lib/main.dart | 15 +- lib/views/globalsettingsview.dart | 11 +- 15 files changed, 1479 insertions(+), 16 deletions(-) create mode 100644 lib/l10n/delegateLb.dart create mode 100644 lib/l10n/intl_el.arb create mode 100644 lib/l10n/intl_lb.arb create mode 100644 lib/l10n/intl_no.arb diff --git a/lib/l10n/delegateLb.dart b/lib/l10n/delegateLb.dart new file mode 100644 index 00000000..d1d44b49 --- /dev/null +++ b/lib/l10n/delegateLb.dart @@ -0,0 +1,434 @@ +import 'package:flutter/material.dart'; + +// Flutter doesn't supported Luxembourgish... +class MaterialLocalizationDelegate extends LocalizationsDelegate { + @override + bool isSupported(Locale locale) { + return locale.languageCode == "lb"; + } + + @override + Future load(Locale locale) async { + return MaterialLocalizationLu(); + } + + @override + bool shouldReload(covariant LocalizationsDelegate old) { + return false; + } +} + +class MaterialLocalizationLu extends MaterialLocalizations { + @override + String get aboutListTileTitleRaw => r'Über $applicationName'; + + @override + String get alertDialogLabel => 'Benachrichtigung'; + + @override + String get anteMeridiemAbbreviation => 'AM'; + + @override + String get backButtonTooltip => 'Zurück'; + + @override + String get calendarModeButtonLabel => 'Zum Kalender wechseln'; + + @override + String get cancelButtonLabel => 'ABBRECHEN'; + + @override + String get closeButtonLabel => 'SCHLIEẞEN'; + + @override + String get closeButtonTooltip => 'Schließen'; + + @override + String get collapsedIconTapHint => 'Maximieren'; + + @override + String get continueButtonLabel => 'WEITER'; + + @override + String get copyButtonLabel => 'Kopieren'; + + @override + String get cutButtonLabel => 'Ausschneiden'; + + @override + String get dateHelpText => 'tt.mm.jjjj'; + + @override + String get dateInputLabel => 'Datum eingeben'; + + @override + String get dateOutOfRangeLabel => 'Außerhalb des Zeitraums.'; + + @override + String get datePickerHelpText => 'DATUM AUSWÄHLEN'; + + @override + String get dateRangeEndDateSemanticLabelRaw => r'Enddatum $fullDate'; + + @override + String get dateRangeEndLabel => 'Enddatum'; + + @override + String get dateRangePickerHelpText => 'ZEITRAUM AUSWÄHLEN'; + + @override + String get dateRangeStartDateSemanticLabelRaw => r'Startdatum $fullDate'; + + @override + String get dateRangeStartLabel => 'Startdatum'; + + @override + String get dateSeparator => '.'; + + @override + String get deleteButtonTooltip => 'Löschen'; + + @override + String get dialModeButtonLabel => 'Zur Uhrzeitauswahl wechseln'; + + @override + String get dialogLabel => 'Dialogfeld'; + + @override + String get drawerLabel => 'Navigationsmenü'; + + @override + String get expandedIconTapHint => 'Minimieren'; + + @override + String get firstPageTooltip => 'Erste Seite'; + + @override + String get hideAccountsLabel => 'Konten ausblenden'; + + @override + String get inputDateModeButtonLabel => 'Zur Texteingabe wechseln'; + + @override + String get inputTimeModeButtonLabel => 'Zum Texteingabemodus wechseln'; + + @override + String get invalidDateFormatLabel => 'Ungültiges Format.'; + + @override + String get invalidDateRangeLabel => 'Ungültiger Zeitraum.'; + + @override + String get invalidTimeLabel => 'Geben Sie eine gültige Uhrzeit ein'; + + @override + String get lastPageTooltip => 'Letzte Seite'; + + @override + String? get licensesPackageDetailTextFew => null; + + @override + String? get licensesPackageDetailTextMany => null; + + @override + String? get licensesPackageDetailTextOne => '1 Lizenz'; + + @override + String get licensesPackageDetailTextOther => r'$licenseCount Lizenzen'; + + @override + String? get licensesPackageDetailTextTwo => null; + + @override + String? get licensesPackageDetailTextZero => 'No licenses'; + + @override + String get licensesPageTitle => 'Lizenzen'; + + @override + String get modalBarrierDismissLabel => 'Schließen'; + + @override + String get moreButtonTooltip => 'Mehr'; + + @override + String get nextMonthTooltip => 'Nächster Monat'; + + @override + String get nextPageTooltip => 'Nächste Seite'; + + @override + String get okButtonLabel => 'OK'; + + @override + String get openAppDrawerTooltip => 'Navigationsmenü öffnen'; + + @override + String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow von $rowCount'; + + @override + String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow von etwa $rowCount'; + + @override + String get pasteButtonLabel => 'Einsetzen'; + + @override + String get popupMenuLabel => 'Pop-up-Menü'; + + @override + String get postMeridiemAbbreviation => 'PM'; + + @override + String get previousMonthTooltip => 'Vorheriger Monat'; + + @override + String get previousPageTooltip => 'Vorherige Seite'; + + @override + String get refreshIndicatorSemanticLabel => 'Aktualisieren'; + + @override + String? get remainingTextFieldCharacterCountFew => null; + + @override + String? get remainingTextFieldCharacterCountMany => null; + + @override + String? get remainingTextFieldCharacterCountOne => 'Noch 1 Zeichen'; + + @override + String get remainingTextFieldCharacterCountOther => r'Noch $remainingCount Zeichen'; + + @override + String? get remainingTextFieldCharacterCountTwo => null; + + @override + String? get remainingTextFieldCharacterCountZero => 'TBD'; + + @override + String get reorderItemDown => 'Nach unten verschieben'; + + @override + String get reorderItemLeft => 'Nach links verschieben'; + + @override + String get reorderItemRight => 'Nach rechts verschieben'; + + @override + String get reorderItemToEnd => 'An das Ende verschieben'; + + @override + String get reorderItemToStart => 'An den Anfang verschieben'; + + @override + String get reorderItemUp => 'Nach oben verschieben'; + + @override + String get rowsPerPageTitle => 'Zeilen pro Seite:'; + + @override + String get saveButtonLabel => 'SPEICHERN'; + + @override + ScriptCategory get scriptCategory => ScriptCategory.englishLike; + + @override + String get searchFieldLabel => 'Suchen'; + + @override + String get selectAllButtonLabel => 'Alle auswählen'; + + @override + String get selectYearSemanticsLabel => 'Jahr auswählen'; + + @override + String? get selectedRowCountTitleFew => null; + + @override + String? get selectedRowCountTitleMany => null; + + @override + String? get selectedRowCountTitleOne => '1 Element ausgewählt'; + + @override + String get selectedRowCountTitleOther => r'$selectedRowCount Elemente ausgewählt'; + + @override + String? get selectedRowCountTitleTwo => null; + + @override + String? get selectedRowCountTitleZero => 'Keine Objekte ausgewählt'; + + @override + String get showAccountsLabel => 'Konten anzeigen'; + + @override + String get showMenuTooltip => 'Menü anzeigen'; + + @override + String get signedInLabel => 'Angemeldet'; + + @override + String get tabLabelRaw => r'Tab $tabIndex von $tabCount'; + + @override + TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm; + + @override + String get timePickerDialHelpText => 'UHRZEIT AUSWÄHLEN'; + + @override + String get timePickerHourLabel => 'Stunde'; + + @override + String get timePickerHourModeAnnouncement => 'Stunden auswählen'; + + @override + String get timePickerInputHelpText => 'ZEIT EINGEBEN'; + + @override + String get timePickerMinuteLabel => 'Minute'; + + @override + String get timePickerMinuteModeAnnouncement => 'Minuten auswählen'; + + @override + String get unspecifiedDate => 'Datum'; + + @override + String get unspecifiedDateRange => 'Zeitraum'; + + @override + String get viewLicensesButtonLabel => 'LIZENZEN ANZEIGEN'; + + @override + String aboutListTileTitle(String applicationName) { + return aboutListTileTitleRaw.replaceFirst("$applicationName", applicationName); + } + + @override + String dateRangeEndDateSemanticLabel(String formattedDate) { + // TODO: implement dateRangeEndDateSemanticLabel + throw UnimplementedError(); + } + + @override + String dateRangeStartDateSemanticLabel(String formattedDate) { + // TODO: implement dateRangeStartDateSemanticLabel + throw UnimplementedError(); + } + + @override + // TODO: implement firstDayOfWeekIndex + int get firstDayOfWeekIndex => throw UnimplementedError(); + + @override + String formatCompactDate(DateTime date) { + // TODO: implement formatCompactDate + throw UnimplementedError(); + } + + @override + String formatDecimal(int number) { + // TODO: implement formatDecimal + throw UnimplementedError(); + } + + @override + String formatFullDate(DateTime date) { + // TODO: implement formatFullDate + throw UnimplementedError(); + } + + @override + String formatHour(TimeOfDay timeOfDay, {bool alwaysUse24HourFormat = false}) { + // TODO: implement formatHour + throw UnimplementedError(); + } + + @override + String formatMediumDate(DateTime date) { + // TODO: implement formatMediumDate + throw UnimplementedError(); + } + + @override + String formatMinute(TimeOfDay timeOfDay) { + // TODO: implement formatMinute + throw UnimplementedError(); + } + + @override + String formatMonthYear(DateTime date) { + // TODO: implement formatMonthYear + throw UnimplementedError(); + } + + @override + String formatShortDate(DateTime date) { + // TODO: implement formatShortDate + throw UnimplementedError(); + } + + @override + String formatShortMonthDay(DateTime date) { + // TODO: implement formatShortMonthDay + throw UnimplementedError(); + } + + @override + String formatTimeOfDay(TimeOfDay timeOfDay, {bool alwaysUse24HourFormat = false}) { + // TODO: implement formatTimeOfDay + throw UnimplementedError(); + } + + @override + String formatYear(DateTime date) { + // TODO: implement formatYear + throw UnimplementedError(); + } + + @override + String licensesPackageDetailText(int licenseCount) { + // TODO: implement licensesPackageDetailText + throw UnimplementedError(); + } + + @override + // TODO: implement narrowWeekdays + List get narrowWeekdays => throw UnimplementedError(); + + @override + String pageRowsInfoTitle(int firstRow, int lastRow, int rowCount, bool rowCountIsApproximate) { + // TODO: implement pageRowsInfoTitle + throw UnimplementedError(); + } + + @override + DateTime? parseCompactDate(String? inputString) { + // TODO: implement parseCompactDate + throw UnimplementedError(); + } + + @override + String remainingTextFieldCharacterCount(int remaining) { + return remaining.toString(); + } + + @override + String selectedRowCountTitle(int selectedRowCount) { + return selectedRowCount.toString(); + } + + @override + String tabLabel({required int tabIndex, required int tabCount}) { + // TODO: implement tabLabel + throw UnimplementedError(); + } + + @override + TimeOfDayFormat timeOfDayFormat({bool alwaysUse24HourFormat = false}) { + // TODO: implement timeOfDayFormat + throw UnimplementedError(); + } +} diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index bcb96730..d23b544d 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -1,9 +1,12 @@ { "@@locale": "de", - "@@last_modified": "2022-02-27T21:00:12+01:00", - "localeRo": "Romanian", - "newMessageNotificationConversationInfo": "New Message From %1", - "newMessageNotificationSimple": "New Message", + "@@last_modified": "2022-02-28T19:53:33+01:00", + "localeEl": "Greek", + "localeNo": "Norwegian", + "localeLb": "Luxembourgish", + "newMessageNotificationConversationInfo": "Neue Nachricht von %1", + "newMessageNotificationSimple": "Neue Nachricht", + "localeRo": "Rumänisch", "notificationContentContactInfo": "Conversation Information", "notificationContentSimpleEvent": "Plain Event", "conversationNotificationPolicySettingDescription": "Control notification behaviour for this conversation", diff --git a/lib/l10n/intl_el.arb b/lib/l10n/intl_el.arb new file mode 100644 index 00000000..6ee01623 --- /dev/null +++ b/lib/l10n/intl_el.arb @@ -0,0 +1,328 @@ +{ + "@@locale": "el", + "@@last_modified": "2022-02-28T19:53:33+01:00", + "localeEl": "Greek", + "localeNo": "Norwegian", + "localeLb": "Luxembourgish", + "localeRo": "Romanian", + "newMessageNotificationConversationInfo": "New Message From %1", + "newMessageNotificationSimple": "New Message", + "notificationContentContactInfo": "Conversation Information", + "notificationContentSimpleEvent": "Plain Event", + "conversationNotificationPolicySettingDescription": "Control notification behaviour for this conversation", + "conversationNotificationPolicySettingLabel": "Conversation Notification Policy", + "settingsGroupExperiments": "Experiments", + "settingsGroupAppearance": "Appearance", + "settingGroupBehaviour": "Behaviour", + "notificationContentSettingDescription": "Controls the contents of conversation notifications", + "notificationPolicySettingDescription": "Controls the default application notification behaviour", + "notificationContentSettingLabel": "Notification Content", + "notificationPolicySettingLabel": "Notification Policy", + "conversationNotificationPolicyNever": "Never", + "conversationNotificationPolicyOptIn": "Opt In", + "conversationNotificationPolicyDefault": "Default", + "notificationPolicyDefaultAll": "Default All", + "notificationPolicyOptIn": "Opt In", + "notificationPolicyMute": "Mute", + "tooltipSelectACustomProfileImage": "Select a Custom Profile Image", + "torSettingsEnabledCacheDescription": "Cache the current downloaded Tor consensus to reuse next time Cwtch is opened. This will allow Tor to start faster. When disabled, Cwtch will purge cached data on start up.", + "torSettingsEnableCache": "Cache Tor Consensus", + "labelTorNetwork": "Tor Network", + "descriptionACNCircuitInfo": "In depth information about the path that the anonymous communication network is using to connect to this conversation.", + "labelACNCircuitInfo": "ACN Circuit Info", + "fileSharingSettingsDownloadFolderTooltip": "Browse to select a different default folder for downloaded files.", + "fileSharingSettingsDownloadFolderDescription": "When files are downloaded automatically (e.g. image files, when image previews are enabled) a default location to download the files to is needed.", + "torSettingsErrorSettingPort": "Port Number must be between 1 and 65535", + "torSettingsUseCustomTorServiceConfigurastionDescription": "Override the default tor configuration. Warning: This could be dangerous. Only turn this on if you know what you are doing.", + "torSettingsUseCustomTorServiceConfiguration": "Use a Custom Tor Service Configuration (torrc)", + "torSettingsCustomControlPortDescription": "Use a custom port for control connections to the Tor proxy", + "torSettingsCustomControlPort": "Custom Control Port", + "torSettingsCustomSocksPortDescription": "Use a custom port for data connections to the Tor proxy", + "torSettingsCustomSocksPort": "Custom SOCKS Port", + "torSettingsEnabledAdvancedDescription": "Use an existing Tor service on your system, or change the parameters of the Cwtch Tor Service", + "torSettingsEnabledAdvanced": "Enable Advanced Tor Configuration", + "msgAddToAccept": "Add this account to your contacts in order to accept this file.", + "btnSendFile": "Send File", + "msgConfirmSend": "Are you sure you want to send", + "msgFileTooBig": "File size cannot exceed 10 GB", + "storageMigrationModalMessage": "Migrating profiles to new storage format. This could take a few minutes...", + "loadingCwtch": "Loading Cwtch...", + "themeColorLabel": "Color Theme", + "themeNameNeon2": "Neon2", + "themeNameNeon1": "Neon1", + "themeNameMidnight": "Midnight", + "themeNameMermaid": "Mermaid", + "themeNamePumpkin": "Pumpkin", + "themeNameGhost": "Ghost", + "themeNameVampire": "Vampire", + "themeNameWitch": "Witch", + "themeNameCwtch": "Cwtch", + "settingDownloadFolder": "Download Folder", + "settingImagePreviewsDescription": "Images will be downloaded and previewed automatically. Please note that image previews can often lead to security vulnerabilities, and you should not enable this Experiment if you use Cwtch with untrusted contacts. Profile pictures are planned for Cwtch 1.6.", + "settingImagePreviews": "Image Previews and Profile Pictures", + "experimentClickableLinksDescription": "The clickable links experiment allows you to click on URLs shared in messages", + "enableExperimentClickableLinks": "Enable Clickable Links", + "serverConnectionsLabel": "Connection", + "serverTotalMessagesLabel": "Total Messages", + "serverMetricsLabel": "Server Metrics", + "manageKnownServersShort": "Servers", + "manageKnownServersLong": "Manage Known Servers", + "displayNameTooltip": "Please enter a display name", + "manageKnownServersButton": "Manage Known Servers", + "fieldDescriptionLabel": "Description", + "groupsOnThisServerLabel": "Groups I am in hosted on this server", + "importLocalServerButton": "Import %1", + "importLocalServerSelectText": "Select Local Server", + "importLocalServerLabel": "Import a locally hosted server", + "newMessagesLabel": "New Messages", + "localeRU": "Russian", + "copyServerKeys": "Copy keys", + "verfiyResumeButton": "Verify\/resume", + "fileCheckingStatus": "Checking download status", + "fileInterrupted": "Interrupted", + "fileSavedTo": "Saved to", + "encryptedServerDescription": "Encrypting a server with a password protects it from other people who may also use this device. Encrypted servers cannot be decrypted, displayed or accessed until the correct password is entered to unlock them.", + "plainServerDescription": "We recommend that you protect your Cwtch servers with a password. If you do not set a password on this server then anyone who has access to this device may be able to access information about this server, including sensitive cryptographic keys.", + "deleteServerConfirmBtn": "Really delete server", + "deleteServerSuccess": "Successfully deleted server", + "enterCurrentPasswordForDeleteServer": "Please enter current password to delete this server", + "copyAddress": "Copy Address", + "settingServersDescription": "The hosting servers experiment enables hosting and managing Cwtch servers", + "settingServers": "Hosting Servers", + "enterServerPassword": "Enter password to unlock server", + "unlockProfileTip": "Please create or unlock a profile to begin!", + "unlockServerTip": "Please create or unlock a server to begin!", + "addServerTooltip": "Add new server", + "serversManagerTitleShort": "Servers", + "serversManagerTitleLong": "Servers You Host", + "saveServerButton": "Save Server", + "serverAutostartDescription": "Controls if the application will automatically launch the server on start", + "serverAutostartLabel": "Autostart", + "serverEnabledDescription": "Start or stop the server", + "serverEnabled": "Server Enabled", + "serverDescriptionDescription": "Your description of the server for personal management use only, will never be shared", + "serverDescriptionLabel": "Server Description", + "serverAddress": "Server Address", + "editServerTitle": "Edit Server", + "addServerTitle": "Add Server", + "titleManageProfilesShort": "Profiles", + "descriptionFileSharing": "The file sharing experiment allows you to send and receive files from Cwtch contacts and groups. Note that sharing a file with a group will result in members of that group connecting with you directly over Cwtch to download it.", + "settingFileSharing": "File Sharing", + "tooltipSendFile": "Send File", + "messageFileOffered": "Contact is offering to send you a file", + "messageFileSent": "You sent a file", + "messageEnableFileSharing": "Enable the file sharing experiment to view this message.", + "labelFilesize": "Size", + "labelFilename": "Filename", + "downloadFileButton": "Download", + "openFolderButton": "Open Folder", + "retrievingManifestMessage": "Retrieving file information...", + "descriptionStreamerMode": "If turned on, this option makes the app more visually private for streaming or presenting with, for example, hiding profile and contact addresses", + "streamerModeLabel": "Streamer\/Presentation Mode", + "archiveConversation": "Archive this Conversation", + "blockUnknownConnectionsEnabledDescription": "Connections from unknown contacts are blocked. You can change this in Settings", + "showMessageButton": "Show Message", + "blockedMessageMessage": "This message is from a profile you have blocked.", + "placeholderEnterMessage": "Type a message...", + "plainProfileDescription": "We recommend that you protect your Cwtch profiles with a password. If you do not set a password on this profile then anyone who has access to this device may be able to access information about this profile, including contacts, messages and sensitive cryptographic keys.", + "encryptedProfileDescription": "Encrypting a profile with a password protects it from other people who may also use this device. Encrypted profiles cannot be decrypted, displayed or accessed until the correct password is entered to unlock them.", + "addContactConfirm": "Add contact %1", + "addContact": "Add contact", + "contactGoto": "Go to conversation with %1", + "settingUIColumnOptionSame": "Same as portrait mode setting", + "settingUIColumnDouble14Ratio": "Double (1:4)", + "settingUIColumnDouble12Ratio": "Double (1:2)", + "settingUIColumnSingle": "Single", + "settingUIColumnLandscape": "UI Columns in Landscape Mode", + "settingUIColumnPortrait": "UI Columns in Portrait Mode", + "localePl": "Polish", + "tooltipRemoveThisQuotedMessage": "Remove quoted message.", + "tooltipReplyToThisMessage": "Reply to this message", + "tooltipRejectContactRequest": "Reject this contact request", + "tooltipAcceptContactRequest": "Accept this contact request.", + "notificationNewMessageFromGroup": "New message in a group!", + "notificationNewMessageFromPeer": "New message from a contact!", + "tooltipHidePassword": "Hide Password", + "tooltipShowPassword": "Show Password", + "groupInviteSettingsWarning": "You have been invited to join a group! Please enable the Group Chat Experiment in Settings to view this Invitation.", + "shutdownCwtchAction": "Shutdown Cwtch", + "shutdownCwtchDialog": "Are you sure you want to shutdown Cwtch? This will close all connections, and exit the application.", + "shutdownCwtchDialogTitle": "Shutdown Cwtch?", + "shutdownCwtchTooltip": "Shutdown Cwtch", + "malformedMessage": "Malformed message", + "profileDeleteSuccess": "Successfully deleted profile", + "debugLog": "Turn on console debug logging", + "torNetworkStatus": "Tor network status", + "addContactFirst": "Add or pick a contact to begin chatting.", + "createProfileToBegin": "Please create or unlock a profile to begin", + "nickChangeSuccess": "Profile nickname changed successfully", + "addServerFirst": "You need to add a server before you can create a group", + "deleteProfileSuccess": "Successfully deleted profile", + "sendInvite": "Send a contact or group invite", + "sendMessage": "Send Message", + "cancel": "Cancel", + "resetTor": "Reset", + "torStatus": "Tor Status", + "torVersion": "Tor Version", + "sendAnInvitation": "You sent an invitation for: ", + "contactSuggestion": "This is a contact suggestion for: ", + "rejected": "Rejected!", + "accepted": "Accepted!", + "chatHistoryDefault": "This conversation will be deleted when Cwtch is closed! Message history can be enabled per-conversation via the Settings menu in the upper right.", + "newPassword": "New Password", + "yesLeave": "Yes, Leave This Conversation", + "reallyLeaveThisGroupPrompt": "Are you sure you want to leave this conversation? All messages and attributes will be deleted.", + "leaveConversation": "Leave This Conversation", + "inviteToGroup": "You have been invited to join a group:", + "titleManageServers": "Manage Servers", + "dateNever": "Never", + "dateLastYear": "Last Year", + "dateYesterday": "Yesterday", + "dateLastMonth": "Last Month", + "dateRightNow": "Right Now", + "successfullAddedContact": "Successfully added ", + "descriptionBlockUnknownConnections": "If turned on, this option will automatically close connections from Cwtch users that have not been added to your contact list.", + "descriptionExperimentsGroups": "The group experiment allows Cwtch to connect with untrusted server infrastructure to facilitate communication with more than one contact.", + "descriptionExperiments": "Cwtch experiments are optional, opt-in features that add additional functionality to Cwtch that may have different privacy considerations than traditional 1:1 metadata resistant chat e.g. group chat, bot integration etc.", + "titleManageProfiles": "Manage Cwtch Profiles", + "tooltipUnlockProfiles": "Unlock encrypted profiles by entering their password.", + "titleManageContacts": "Conversations", + "tooltipAddContact": "Add a new contact or conversation", + "tooltipOpenSettings": "Open the settings pane", + "contactAlreadyExists": "Contact Already Exists", + "invalidImportString": "Invalid import string", + "conversationSettings": "Conversation Settings", + "enterCurrentPasswordForDelete": "Please enter current password to delete this profile.", + "enableGroups": "Enable Group Chat", + "localeIt": "Italiana", + "localeEs": "Espanol", + "todoPlaceholder": "Todo...", + "addNewItem": "Add a new item to the list", + "addListItem": "Add a New List Item", + "newConnectionPaneTitle": "New Connection", + "networkStatusOnline": "Online", + "networkStatusConnecting": "Connecting to network and contacts...", + "networkStatusAttemptingTor": "Attempting to connect to Tor network", + "networkStatusDisconnected": "Disconnected from the internet, check your connection", + "viewGroupMembershipTooltip": "View Group Membership", + "loadingTor": "Loading tor...", + "smallTextLabel": "Small", + "defaultScalingText": "Default size text (scale factor:", + "builddate": "Built on: %2", + "version": "Version %1", + "versionTor": "Version %1 with tor %2", + "experimentsEnabled": "Enable Experiments", + "themeDark": "Dark", + "themeLight": "Light", + "settingTheme": "Use Light Themes", + "largeTextLabel": "Large", + "settingInterfaceZoom": "Zoom level", + "localeDe": "Deutsche", + "localePt": "Portuguesa", + "localeFr": "Frances", + "localeEn": "English", + "settingLanguage": "Language", + "blockUnknownLabel": "Block Unknown Contacts", + "zoomLabel": "Interface zoom (mostly affects text and button sizes)", + "versionBuilddate": "Version: %1 Built on: %2", + "cwtchSettingsTitle": "Cwtch Settings", + "unlock": "Unlock", + "yourServers": "Your Servers", + "yourProfiles": "Your Profiles", + "error0ProfilesLoadedForPassword": "0 profiles loaded with that password", + "password": "Password", + "enterProfilePassword": "Enter a password to view your profiles", + "addNewProfileBtn": "Add new profile", + "deleteConfirmText": "DELETE", + "deleteProfileConfirmBtn": "Really Delete Profile", + "deleteConfirmLabel": "Type DELETE to confirm", + "deleteProfileBtn": "Delete Profile", + "passwordChangeError": "Error changing password: Supplied password rejected", + "passwordErrorMatch": "Passwords do not match", + "saveProfileBtn": "Save Profile", + "createProfileBtn": "Create Profile", + "passwordErrorEmpty": "Password cannot be empty", + "password2Label": "Reenter password", + "password1Label": "Password", + "currentPasswordLabel": "Current Password", + "yourDisplayName": "Your Display Name", + "profileOnionLabel": "Send this address to contacts you want to connect with", + "noPasswordWarning": "Not using a password on this account means that all data stored locally will not be encrypted", + "radioNoPassword": "Unencrypted (No password)", + "radioUsePassword": "Password", + "copiedToClipboardNotification": "Copied to Clipboard", + "editProfile": "Edit Profile", + "newProfile": "New Profile", + "defaultProfileName": "Alice", + "profileName": "Display name", + "editProfileTitle": "Edit Profile", + "addProfileTitle": "Add new profile", + "deleteBtn": "Delete", + "unblockBtn": "Unblock Contact", + "dontSavePeerHistory": "Delete History", + "savePeerHistoryDescription": "Determines whether to delete any history associated with the contact.", + "savePeerHistory": "Save History", + "blockBtn": "Block Contact", + "saveBtn": "Save", + "displayNameLabel": "Display Name", + "addressLabel": "Address", + "puzzleGameBtn": "Puzzle Game", + "bulletinsBtn": "Bulletins", + "listsBtn": "Lists", + "chatBtn": "Chat", + "rejectGroupBtn": "Reject", + "acceptGroupBtn": "Accept", + "acceptGroupInviteLabel": "Do you want to accept the invitation to", + "newGroupBtn": "Create new group", + "copiedClipboardNotification": "Copied to clipboard", + "copyBtn": "Copy", + "peerOfflineMessage": "Contact is offline, messages can't be delivered right now", + "peerBlockedMessage": "Contact is blocked", + "pendingLabel": "Pending", + "acknowledgedLabel": "Acknowledged", + "couldNotSendMsgError": "Could not send this message", + "dmTooltip": "Click to DM", + "membershipDescription": "Below is a list of users who have sent messages to the group. This list may not reflect all users who have access to the group.", + "addListItemBtn": "Add Item", + "peerNotOnline": "Contact is offline. Applications cannot be used right now.", + "searchList": "Search List", + "update": "Update", + "inviteBtn": "Invite", + "inviteToGroupLabel": "Invite to group", + "groupNameLabel": "Group name", + "viewServerInfo": "Server Info", + "serverNotSynced": "Syncing New Messages (This can take some time)...", + "serverSynced": "Synced", + "serverConnectivityDisconnected": "Server Disconnected", + "serverConnectivityConnected": "Server Connected", + "serverInfo": "Server Information", + "invitationLabel": "Invitation", + "serverLabel": "Server", + "search": "Search...", + "cycleColoursDesktop": "Click to cycle colours.\nRight-click to reset.", + "cycleColoursAndroid": "Click to cycle colours.\nLong-press to reset.", + "cycleMorphsDesktop": "Click to cycle morphs.\nRight-click to reset.", + "cycleMorphsAndroid": "Click to cycle morphs.\nLong-press to reset.", + "cycleCatsDesktop": "Click to cycle category.\nRight-click to reset.", + "cycleCatsAndroid": "Click to cycle category.\nLong-press to reset.", + "blocked": "Blocked", + "pasteAddressToAddContact": "Paste a cwtch address, invitation or key bundle here to add a new conversation", + "titlePlaceholder": "title...", + "postNewBulletinLabel": "Post new bulletin", + "newBulletinLabel": "New Bulletin", + "joinGroup": "Join group", + "createGroup": "Create group", + "addPeer": "Add Contact", + "groupAddr": "Address", + "invitation": "Invitation", + "server": "Server", + "groupName": "Group name", + "peerName": "Name", + "peerAddress": "Address", + "joinGroupTab": "Join a group", + "createGroupTab": "Create a group", + "addPeerTab": "Add a contact", + "createGroupBtn": "Create", + "defaultGroupName": "Awesome Group", + "createGroupTitle": "Create Group" +} \ No newline at end of file diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 66e56126..35986595 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -1,6 +1,9 @@ { "@@locale": "en", - "@@last_modified": "2022-02-27T21:00:12+01:00", + "@@last_modified": "2022-02-28T19:53:33+01:00", + "localeEl": "Greek", + "localeNo": "Norwegian", + "localeLb": "Luxembourgish", "conversationNotificationPolicySettingDescription": "Control notification behaviour for this conversation", "localeRo": "Romanian", "newMessageNotificationConversationInfo": "New Message From %1", diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb index 41ddbff0..f299b1b1 100644 --- a/lib/l10n/intl_es.arb +++ b/lib/l10n/intl_es.arb @@ -1,6 +1,9 @@ { "@@locale": "es", - "@@last_modified": "2022-02-27T21:00:12+01:00", + "@@last_modified": "2022-02-28T19:53:33+01:00", + "localeEl": "Greek", + "localeNo": "Norwegian", + "localeLb": "Luxembourgish", "localeRo": "Romanian", "newMessageNotificationConversationInfo": "New Message From %1", "newMessageNotificationSimple": "New Message", diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 570b6126..abb85288 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -1,6 +1,9 @@ { "@@locale": "fr", - "@@last_modified": "2022-02-27T21:00:12+01:00", + "@@last_modified": "2022-02-28T19:53:33+01:00", + "localeEl": "Grec", + "localeNo": "Norvégien", + "localeLb": "Luxembourgeois", "notificationPolicySettingDescription": "Contrôle le comportement de notification d'application par défaut", "notificationContentSettingDescription": "Contrôle le contenu des notifications de conversation", "notificationContentSimpleEvent": "Plain-Evénement", diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb index 512da344..e329f410 100644 --- a/lib/l10n/intl_it.arb +++ b/lib/l10n/intl_it.arb @@ -1,6 +1,9 @@ { "@@locale": "it", - "@@last_modified": "2022-02-27T21:00:12+01:00", + "@@last_modified": "2022-02-28T19:53:33+01:00", + "localeEl": "Greek", + "localeNo": "Norwegian", + "localeLb": "Luxembourgish", "localeRo": "Romanian", "newMessageNotificationConversationInfo": "New Message From %1", "newMessageNotificationSimple": "New Message", diff --git a/lib/l10n/intl_lb.arb b/lib/l10n/intl_lb.arb new file mode 100644 index 00000000..c3fbf080 --- /dev/null +++ b/lib/l10n/intl_lb.arb @@ -0,0 +1,328 @@ +{ + "@@locale": "lb", + "@@last_modified": "2022-02-28T19:53:33+01:00", + "localeEl": "Greek", + "localeNo": "Norwegian", + "localeLb": "Luxembourgish", + "localeRo": "Romanian", + "newMessageNotificationConversationInfo": "New Message From %1", + "newMessageNotificationSimple": "New Message", + "notificationContentContactInfo": "Conversation Information", + "notificationContentSimpleEvent": "Plain Event", + "conversationNotificationPolicySettingDescription": "Control notification behaviour for this conversation", + "conversationNotificationPolicySettingLabel": "Conversation Notification Policy", + "settingsGroupExperiments": "Experiments", + "settingsGroupAppearance": "Appearance", + "settingGroupBehaviour": "Behaviour", + "notificationContentSettingDescription": "Controls the contents of conversation notifications", + "notificationPolicySettingDescription": "Controls the default application notification behaviour", + "notificationContentSettingLabel": "Notification Content", + "notificationPolicySettingLabel": "Notification Policy", + "conversationNotificationPolicyNever": "Never", + "conversationNotificationPolicyOptIn": "Opt In", + "conversationNotificationPolicyDefault": "Default", + "notificationPolicyDefaultAll": "Default All", + "notificationPolicyOptIn": "Opt In", + "notificationPolicyMute": "Mute", + "tooltipSelectACustomProfileImage": "Select a Custom Profile Image", + "torSettingsEnabledCacheDescription": "Cache the current downloaded Tor consensus to reuse next time Cwtch is opened. This will allow Tor to start faster. When disabled, Cwtch will purge cached data on start up.", + "torSettingsEnableCache": "Cache Tor Consensus", + "labelTorNetwork": "Tor Network", + "descriptionACNCircuitInfo": "In depth information about the path that the anonymous communication network is using to connect to this conversation.", + "labelACNCircuitInfo": "ACN Circuit Info", + "fileSharingSettingsDownloadFolderTooltip": "Browse to select a different default folder for downloaded files.", + "fileSharingSettingsDownloadFolderDescription": "When files are downloaded automatically (e.g. image files, when image previews are enabled) a default location to download the files to is needed.", + "torSettingsErrorSettingPort": "Port Number must be between 1 and 65535", + "torSettingsUseCustomTorServiceConfigurastionDescription": "Override the default tor configuration. Warning: This could be dangerous. Only turn this on if you know what you are doing.", + "torSettingsUseCustomTorServiceConfiguration": "Use a Custom Tor Service Configuration (torrc)", + "torSettingsCustomControlPortDescription": "Use a custom port for control connections to the Tor proxy", + "torSettingsCustomControlPort": "Custom Control Port", + "torSettingsCustomSocksPortDescription": "Use a custom port for data connections to the Tor proxy", + "torSettingsCustomSocksPort": "Custom SOCKS Port", + "torSettingsEnabledAdvancedDescription": "Use an existing Tor service on your system, or change the parameters of the Cwtch Tor Service", + "torSettingsEnabledAdvanced": "Enable Advanced Tor Configuration", + "msgAddToAccept": "Add this account to your contacts in order to accept this file.", + "btnSendFile": "Send File", + "msgConfirmSend": "Are you sure you want to send", + "msgFileTooBig": "File size cannot exceed 10 GB", + "storageMigrationModalMessage": "Migrating profiles to new storage format. This could take a few minutes...", + "loadingCwtch": "Loading Cwtch...", + "themeColorLabel": "Color Theme", + "themeNameNeon2": "Neon2", + "themeNameNeon1": "Neon1", + "themeNameMidnight": "Midnight", + "themeNameMermaid": "Mermaid", + "themeNamePumpkin": "Pumpkin", + "themeNameGhost": "Ghost", + "themeNameVampire": "Vampire", + "themeNameWitch": "Witch", + "themeNameCwtch": "Cwtch", + "settingDownloadFolder": "Download Folder", + "settingImagePreviewsDescription": "Images will be downloaded and previewed automatically. Please note that image previews can often lead to security vulnerabilities, and you should not enable this Experiment if you use Cwtch with untrusted contacts. Profile pictures are planned for Cwtch 1.6.", + "settingImagePreviews": "Image Previews and Profile Pictures", + "experimentClickableLinksDescription": "The clickable links experiment allows you to click on URLs shared in messages", + "enableExperimentClickableLinks": "Enable Clickable Links", + "serverConnectionsLabel": "Connection", + "serverTotalMessagesLabel": "Total Messages", + "serverMetricsLabel": "Server Metrics", + "manageKnownServersShort": "Servers", + "manageKnownServersLong": "Manage Known Servers", + "displayNameTooltip": "Please enter a display name", + "manageKnownServersButton": "Manage Known Servers", + "fieldDescriptionLabel": "Description", + "groupsOnThisServerLabel": "Groups I am in hosted on this server", + "importLocalServerButton": "Import %1", + "importLocalServerSelectText": "Select Local Server", + "importLocalServerLabel": "Import a locally hosted server", + "newMessagesLabel": "New Messages", + "localeRU": "Russian", + "copyServerKeys": "Copy keys", + "verfiyResumeButton": "Verify\/resume", + "fileCheckingStatus": "Checking download status", + "fileInterrupted": "Interrupted", + "fileSavedTo": "Saved to", + "encryptedServerDescription": "Encrypting a server with a password protects it from other people who may also use this device. Encrypted servers cannot be decrypted, displayed or accessed until the correct password is entered to unlock them.", + "plainServerDescription": "We recommend that you protect your Cwtch servers with a password. If you do not set a password on this server then anyone who has access to this device may be able to access information about this server, including sensitive cryptographic keys.", + "deleteServerConfirmBtn": "Really delete server", + "deleteServerSuccess": "Successfully deleted server", + "enterCurrentPasswordForDeleteServer": "Please enter current password to delete this server", + "copyAddress": "Copy Address", + "settingServersDescription": "The hosting servers experiment enables hosting and managing Cwtch servers", + "settingServers": "Hosting Servers", + "enterServerPassword": "Enter password to unlock server", + "unlockProfileTip": "Please create or unlock a profile to begin!", + "unlockServerTip": "Please create or unlock a server to begin!", + "addServerTooltip": "Add new server", + "serversManagerTitleShort": "Servers", + "serversManagerTitleLong": "Servers You Host", + "saveServerButton": "Save Server", + "serverAutostartDescription": "Controls if the application will automatically launch the server on start", + "serverAutostartLabel": "Autostart", + "serverEnabledDescription": "Start or stop the server", + "serverEnabled": "Server Enabled", + "serverDescriptionDescription": "Your description of the server for personal management use only, will never be shared", + "serverDescriptionLabel": "Server Description", + "serverAddress": "Server Address", + "editServerTitle": "Edit Server", + "addServerTitle": "Add Server", + "titleManageProfilesShort": "Profiles", + "descriptionFileSharing": "The file sharing experiment allows you to send and receive files from Cwtch contacts and groups. Note that sharing a file with a group will result in members of that group connecting with you directly over Cwtch to download it.", + "settingFileSharing": "File Sharing", + "tooltipSendFile": "Send File", + "messageFileOffered": "Contact is offering to send you a file", + "messageFileSent": "You sent a file", + "messageEnableFileSharing": "Enable the file sharing experiment to view this message.", + "labelFilesize": "Size", + "labelFilename": "Filename", + "downloadFileButton": "Download", + "openFolderButton": "Open Folder", + "retrievingManifestMessage": "Retrieving file information...", + "descriptionStreamerMode": "If turned on, this option makes the app more visually private for streaming or presenting with, for example, hiding profile and contact addresses", + "streamerModeLabel": "Streamer\/Presentation Mode", + "archiveConversation": "Archive this Conversation", + "blockUnknownConnectionsEnabledDescription": "Connections from unknown contacts are blocked. You can change this in Settings", + "showMessageButton": "Show Message", + "blockedMessageMessage": "This message is from a profile you have blocked.", + "placeholderEnterMessage": "Type a message...", + "plainProfileDescription": "We recommend that you protect your Cwtch profiles with a password. If you do not set a password on this profile then anyone who has access to this device may be able to access information about this profile, including contacts, messages and sensitive cryptographic keys.", + "encryptedProfileDescription": "Encrypting a profile with a password protects it from other people who may also use this device. Encrypted profiles cannot be decrypted, displayed or accessed until the correct password is entered to unlock them.", + "addContactConfirm": "Add contact %1", + "addContact": "Add contact", + "contactGoto": "Go to conversation with %1", + "settingUIColumnOptionSame": "Same as portrait mode setting", + "settingUIColumnDouble14Ratio": "Double (1:4)", + "settingUIColumnDouble12Ratio": "Double (1:2)", + "settingUIColumnSingle": "Single", + "settingUIColumnLandscape": "UI Columns in Landscape Mode", + "settingUIColumnPortrait": "UI Columns in Portrait Mode", + "localePl": "Polish", + "tooltipRemoveThisQuotedMessage": "Remove quoted message.", + "tooltipReplyToThisMessage": "Reply to this message", + "tooltipRejectContactRequest": "Reject this contact request", + "tooltipAcceptContactRequest": "Accept this contact request.", + "notificationNewMessageFromGroup": "New message in a group!", + "notificationNewMessageFromPeer": "New message from a contact!", + "tooltipHidePassword": "Hide Password", + "tooltipShowPassword": "Show Password", + "groupInviteSettingsWarning": "You have been invited to join a group! Please enable the Group Chat Experiment in Settings to view this Invitation.", + "shutdownCwtchAction": "Shutdown Cwtch", + "shutdownCwtchDialog": "Are you sure you want to shutdown Cwtch? This will close all connections, and exit the application.", + "shutdownCwtchDialogTitle": "Shutdown Cwtch?", + "shutdownCwtchTooltip": "Shutdown Cwtch", + "malformedMessage": "Malformed message", + "profileDeleteSuccess": "Successfully deleted profile", + "debugLog": "Turn on console debug logging", + "torNetworkStatus": "Tor network status", + "addContactFirst": "Add or pick a contact to begin chatting.", + "createProfileToBegin": "Please create or unlock a profile to begin", + "nickChangeSuccess": "Profile nickname changed successfully", + "addServerFirst": "You need to add a server before you can create a group", + "deleteProfileSuccess": "Successfully deleted profile", + "sendInvite": "Send a contact or group invite", + "sendMessage": "Send Message", + "cancel": "Cancel", + "resetTor": "Reset", + "torStatus": "Tor Status", + "torVersion": "Tor Version", + "sendAnInvitation": "You sent an invitation for: ", + "contactSuggestion": "This is a contact suggestion for: ", + "rejected": "Rejected!", + "accepted": "Accepted!", + "chatHistoryDefault": "This conversation will be deleted when Cwtch is closed! Message history can be enabled per-conversation via the Settings menu in the upper right.", + "newPassword": "New Password", + "yesLeave": "Yes, Leave This Conversation", + "reallyLeaveThisGroupPrompt": "Are you sure you want to leave this conversation? All messages and attributes will be deleted.", + "leaveConversation": "Leave This Conversation", + "inviteToGroup": "You have been invited to join a group:", + "titleManageServers": "Manage Servers", + "dateNever": "Never", + "dateLastYear": "Last Year", + "dateYesterday": "Yesterday", + "dateLastMonth": "Last Month", + "dateRightNow": "Right Now", + "successfullAddedContact": "Successfully added ", + "descriptionBlockUnknownConnections": "If turned on, this option will automatically close connections from Cwtch users that have not been added to your contact list.", + "descriptionExperimentsGroups": "The group experiment allows Cwtch to connect with untrusted server infrastructure to facilitate communication with more than one contact.", + "descriptionExperiments": "Cwtch experiments are optional, opt-in features that add additional functionality to Cwtch that may have different privacy considerations than traditional 1:1 metadata resistant chat e.g. group chat, bot integration etc.", + "titleManageProfiles": "Manage Cwtch Profiles", + "tooltipUnlockProfiles": "Unlock encrypted profiles by entering their password.", + "titleManageContacts": "Conversations", + "tooltipAddContact": "Add a new contact or conversation", + "tooltipOpenSettings": "Open the settings pane", + "contactAlreadyExists": "Contact Already Exists", + "invalidImportString": "Invalid import string", + "conversationSettings": "Conversation Settings", + "enterCurrentPasswordForDelete": "Please enter current password to delete this profile.", + "enableGroups": "Enable Group Chat", + "localeIt": "Italiana", + "localeEs": "Espanol", + "todoPlaceholder": "Todo...", + "addNewItem": "Add a new item to the list", + "addListItem": "Add a New List Item", + "newConnectionPaneTitle": "New Connection", + "networkStatusOnline": "Online", + "networkStatusConnecting": "Connecting to network and contacts...", + "networkStatusAttemptingTor": "Attempting to connect to Tor network", + "networkStatusDisconnected": "Disconnected from the internet, check your connection", + "viewGroupMembershipTooltip": "View Group Membership", + "loadingTor": "Loading tor...", + "smallTextLabel": "Small", + "defaultScalingText": "Default size text (scale factor:", + "builddate": "Built on: %2", + "version": "Version %1", + "versionTor": "Version %1 with tor %2", + "experimentsEnabled": "Enable Experiments", + "themeDark": "Dark", + "themeLight": "Light", + "settingTheme": "Use Light Themes", + "largeTextLabel": "Large", + "settingInterfaceZoom": "Zoom level", + "localeDe": "Deutsche", + "localePt": "Portuguesa", + "localeFr": "Frances", + "localeEn": "English", + "settingLanguage": "Language", + "blockUnknownLabel": "Block Unknown Contacts", + "zoomLabel": "Interface zoom (mostly affects text and button sizes)", + "versionBuilddate": "Version: %1 Built on: %2", + "cwtchSettingsTitle": "Cwtch Settings", + "unlock": "Unlock", + "yourServers": "Your Servers", + "yourProfiles": "Your Profiles", + "error0ProfilesLoadedForPassword": "0 profiles loaded with that password", + "password": "Password", + "enterProfilePassword": "Enter a password to view your profiles", + "addNewProfileBtn": "Add new profile", + "deleteConfirmText": "DELETE", + "deleteProfileConfirmBtn": "Really Delete Profile", + "deleteConfirmLabel": "Type DELETE to confirm", + "deleteProfileBtn": "Delete Profile", + "passwordChangeError": "Error changing password: Supplied password rejected", + "passwordErrorMatch": "Passwords do not match", + "saveProfileBtn": "Save Profile", + "createProfileBtn": "Create Profile", + "passwordErrorEmpty": "Password cannot be empty", + "password2Label": "Reenter password", + "password1Label": "Password", + "currentPasswordLabel": "Current Password", + "yourDisplayName": "Your Display Name", + "profileOnionLabel": "Send this address to contacts you want to connect with", + "noPasswordWarning": "Not using a password on this account means that all data stored locally will not be encrypted", + "radioNoPassword": "Unencrypted (No password)", + "radioUsePassword": "Password", + "copiedToClipboardNotification": "Copied to Clipboard", + "editProfile": "Edit Profile", + "newProfile": "New Profile", + "defaultProfileName": "Alice", + "profileName": "Display name", + "editProfileTitle": "Edit Profile", + "addProfileTitle": "Add new profile", + "deleteBtn": "Delete", + "unblockBtn": "Unblock Contact", + "dontSavePeerHistory": "Delete History", + "savePeerHistoryDescription": "Determines whether to delete any history associated with the contact.", + "savePeerHistory": "Save History", + "blockBtn": "Block Contact", + "saveBtn": "Save", + "displayNameLabel": "Display Name", + "addressLabel": "Address", + "puzzleGameBtn": "Puzzle Game", + "bulletinsBtn": "Bulletins", + "listsBtn": "Lists", + "chatBtn": "Chat", + "rejectGroupBtn": "Reject", + "acceptGroupBtn": "Accept", + "acceptGroupInviteLabel": "Do you want to accept the invitation to", + "newGroupBtn": "Create new group", + "copiedClipboardNotification": "Copied to clipboard", + "copyBtn": "Copy", + "peerOfflineMessage": "Contact is offline, messages can't be delivered right now", + "peerBlockedMessage": "Contact is blocked", + "pendingLabel": "Pending", + "acknowledgedLabel": "Acknowledged", + "couldNotSendMsgError": "Could not send this message", + "dmTooltip": "Click to DM", + "membershipDescription": "Below is a list of users who have sent messages to the group. This list may not reflect all users who have access to the group.", + "addListItemBtn": "Add Item", + "peerNotOnline": "Contact is offline. Applications cannot be used right now.", + "searchList": "Search List", + "update": "Update", + "inviteBtn": "Invite", + "inviteToGroupLabel": "Invite to group", + "groupNameLabel": "Group name", + "viewServerInfo": "Server Info", + "serverNotSynced": "Syncing New Messages (This can take some time)...", + "serverSynced": "Synced", + "serverConnectivityDisconnected": "Server Disconnected", + "serverConnectivityConnected": "Server Connected", + "serverInfo": "Server Information", + "invitationLabel": "Invitation", + "serverLabel": "Server", + "search": "Search...", + "cycleColoursDesktop": "Click to cycle colours.\nRight-click to reset.", + "cycleColoursAndroid": "Click to cycle colours.\nLong-press to reset.", + "cycleMorphsDesktop": "Click to cycle morphs.\nRight-click to reset.", + "cycleMorphsAndroid": "Click to cycle morphs.\nLong-press to reset.", + "cycleCatsDesktop": "Click to cycle category.\nRight-click to reset.", + "cycleCatsAndroid": "Click to cycle category.\nLong-press to reset.", + "blocked": "Blocked", + "pasteAddressToAddContact": "Paste a cwtch address, invitation or key bundle here to add a new conversation", + "titlePlaceholder": "title...", + "postNewBulletinLabel": "Post new bulletin", + "newBulletinLabel": "New Bulletin", + "joinGroup": "Join group", + "createGroup": "Create group", + "addPeer": "Add Contact", + "groupAddr": "Address", + "invitation": "Invitation", + "server": "Server", + "groupName": "Group name", + "peerName": "Name", + "peerAddress": "Address", + "joinGroupTab": "Join a group", + "createGroupTab": "Create a group", + "addPeerTab": "Add a contact", + "createGroupBtn": "Create", + "defaultGroupName": "Awesome Group", + "createGroupTitle": "Create Group" +} \ No newline at end of file diff --git a/lib/l10n/intl_no.arb b/lib/l10n/intl_no.arb new file mode 100644 index 00000000..d615d397 --- /dev/null +++ b/lib/l10n/intl_no.arb @@ -0,0 +1,328 @@ +{ + "@@locale": "no", + "@@last_modified": "2022-02-28T19:53:33+01:00", + "localeEl": "Greek", + "localeNo": "Norwegian", + "localeLb": "Luxembourgish", + "localeRo": "Romanian", + "newMessageNotificationConversationInfo": "New Message From %1", + "newMessageNotificationSimple": "New Message", + "notificationContentContactInfo": "Conversation Information", + "notificationContentSimpleEvent": "Plain Event", + "conversationNotificationPolicySettingDescription": "Control notification behaviour for this conversation", + "conversationNotificationPolicySettingLabel": "Conversation Notification Policy", + "settingsGroupExperiments": "Experiments", + "settingsGroupAppearance": "Appearance", + "settingGroupBehaviour": "Behaviour", + "notificationContentSettingDescription": "Controls the contents of conversation notifications", + "notificationPolicySettingDescription": "Controls the default application notification behaviour", + "notificationContentSettingLabel": "Notification Content", + "notificationPolicySettingLabel": "Notification Policy", + "conversationNotificationPolicyNever": "Never", + "conversationNotificationPolicyOptIn": "Opt In", + "conversationNotificationPolicyDefault": "Default", + "notificationPolicyDefaultAll": "Default All", + "notificationPolicyOptIn": "Opt In", + "notificationPolicyMute": "Mute", + "tooltipSelectACustomProfileImage": "Select a Custom Profile Image", + "torSettingsEnabledCacheDescription": "Cache the current downloaded Tor consensus to reuse next time Cwtch is opened. This will allow Tor to start faster. When disabled, Cwtch will purge cached data on start up.", + "torSettingsEnableCache": "Cache Tor Consensus", + "labelTorNetwork": "Tor Network", + "descriptionACNCircuitInfo": "In depth information about the path that the anonymous communication network is using to connect to this conversation.", + "labelACNCircuitInfo": "ACN Circuit Info", + "fileSharingSettingsDownloadFolderTooltip": "Browse to select a different default folder for downloaded files.", + "fileSharingSettingsDownloadFolderDescription": "When files are downloaded automatically (e.g. image files, when image previews are enabled) a default location to download the files to is needed.", + "torSettingsErrorSettingPort": "Port Number must be between 1 and 65535", + "torSettingsUseCustomTorServiceConfigurastionDescription": "Override the default tor configuration. Warning: This could be dangerous. Only turn this on if you know what you are doing.", + "torSettingsUseCustomTorServiceConfiguration": "Use a Custom Tor Service Configuration (torrc)", + "torSettingsCustomControlPortDescription": "Use a custom port for control connections to the Tor proxy", + "torSettingsCustomControlPort": "Custom Control Port", + "torSettingsCustomSocksPortDescription": "Use a custom port for data connections to the Tor proxy", + "torSettingsCustomSocksPort": "Custom SOCKS Port", + "torSettingsEnabledAdvancedDescription": "Use an existing Tor service on your system, or change the parameters of the Cwtch Tor Service", + "torSettingsEnabledAdvanced": "Enable Advanced Tor Configuration", + "msgAddToAccept": "Add this account to your contacts in order to accept this file.", + "btnSendFile": "Send File", + "msgConfirmSend": "Are you sure you want to send", + "msgFileTooBig": "File size cannot exceed 10 GB", + "storageMigrationModalMessage": "Migrating profiles to new storage format. This could take a few minutes...", + "loadingCwtch": "Loading Cwtch...", + "themeColorLabel": "Color Theme", + "themeNameNeon2": "Neon2", + "themeNameNeon1": "Neon1", + "themeNameMidnight": "Midnight", + "themeNameMermaid": "Mermaid", + "themeNamePumpkin": "Pumpkin", + "themeNameGhost": "Ghost", + "themeNameVampire": "Vampire", + "themeNameWitch": "Witch", + "themeNameCwtch": "Cwtch", + "settingDownloadFolder": "Download Folder", + "settingImagePreviewsDescription": "Images will be downloaded and previewed automatically. Please note that image previews can often lead to security vulnerabilities, and you should not enable this Experiment if you use Cwtch with untrusted contacts. Profile pictures are planned for Cwtch 1.6.", + "settingImagePreviews": "Image Previews and Profile Pictures", + "experimentClickableLinksDescription": "The clickable links experiment allows you to click on URLs shared in messages", + "enableExperimentClickableLinks": "Enable Clickable Links", + "serverConnectionsLabel": "Connection", + "serverTotalMessagesLabel": "Total Messages", + "serverMetricsLabel": "Server Metrics", + "manageKnownServersShort": "Servers", + "manageKnownServersLong": "Manage Known Servers", + "displayNameTooltip": "Please enter a display name", + "manageKnownServersButton": "Manage Known Servers", + "fieldDescriptionLabel": "Description", + "groupsOnThisServerLabel": "Groups I am in hosted on this server", + "importLocalServerButton": "Import %1", + "importLocalServerSelectText": "Select Local Server", + "importLocalServerLabel": "Import a locally hosted server", + "newMessagesLabel": "New Messages", + "localeRU": "Russian", + "copyServerKeys": "Copy keys", + "verfiyResumeButton": "Verify\/resume", + "fileCheckingStatus": "Checking download status", + "fileInterrupted": "Interrupted", + "fileSavedTo": "Saved to", + "encryptedServerDescription": "Encrypting a server with a password protects it from other people who may also use this device. Encrypted servers cannot be decrypted, displayed or accessed until the correct password is entered to unlock them.", + "plainServerDescription": "We recommend that you protect your Cwtch servers with a password. If you do not set a password on this server then anyone who has access to this device may be able to access information about this server, including sensitive cryptographic keys.", + "deleteServerConfirmBtn": "Really delete server", + "deleteServerSuccess": "Successfully deleted server", + "enterCurrentPasswordForDeleteServer": "Please enter current password to delete this server", + "copyAddress": "Copy Address", + "settingServersDescription": "The hosting servers experiment enables hosting and managing Cwtch servers", + "settingServers": "Hosting Servers", + "enterServerPassword": "Enter password to unlock server", + "unlockProfileTip": "Please create or unlock a profile to begin!", + "unlockServerTip": "Please create or unlock a server to begin!", + "addServerTooltip": "Add new server", + "serversManagerTitleShort": "Servers", + "serversManagerTitleLong": "Servers You Host", + "saveServerButton": "Save Server", + "serverAutostartDescription": "Controls if the application will automatically launch the server on start", + "serverAutostartLabel": "Autostart", + "serverEnabledDescription": "Start or stop the server", + "serverEnabled": "Server Enabled", + "serverDescriptionDescription": "Your description of the server for personal management use only, will never be shared", + "serverDescriptionLabel": "Server Description", + "serverAddress": "Server Address", + "editServerTitle": "Edit Server", + "addServerTitle": "Add Server", + "titleManageProfilesShort": "Profiles", + "descriptionFileSharing": "The file sharing experiment allows you to send and receive files from Cwtch contacts and groups. Note that sharing a file with a group will result in members of that group connecting with you directly over Cwtch to download it.", + "settingFileSharing": "File Sharing", + "tooltipSendFile": "Send File", + "messageFileOffered": "Contact is offering to send you a file", + "messageFileSent": "You sent a file", + "messageEnableFileSharing": "Enable the file sharing experiment to view this message.", + "labelFilesize": "Size", + "labelFilename": "Filename", + "downloadFileButton": "Download", + "openFolderButton": "Open Folder", + "retrievingManifestMessage": "Retrieving file information...", + "descriptionStreamerMode": "If turned on, this option makes the app more visually private for streaming or presenting with, for example, hiding profile and contact addresses", + "streamerModeLabel": "Streamer\/Presentation Mode", + "archiveConversation": "Archive this Conversation", + "blockUnknownConnectionsEnabledDescription": "Connections from unknown contacts are blocked. You can change this in Settings", + "showMessageButton": "Show Message", + "blockedMessageMessage": "This message is from a profile you have blocked.", + "placeholderEnterMessage": "Type a message...", + "plainProfileDescription": "We recommend that you protect your Cwtch profiles with a password. If you do not set a password on this profile then anyone who has access to this device may be able to access information about this profile, including contacts, messages and sensitive cryptographic keys.", + "encryptedProfileDescription": "Encrypting a profile with a password protects it from other people who may also use this device. Encrypted profiles cannot be decrypted, displayed or accessed until the correct password is entered to unlock them.", + "addContactConfirm": "Add contact %1", + "addContact": "Add contact", + "contactGoto": "Go to conversation with %1", + "settingUIColumnOptionSame": "Same as portrait mode setting", + "settingUIColumnDouble14Ratio": "Double (1:4)", + "settingUIColumnDouble12Ratio": "Double (1:2)", + "settingUIColumnSingle": "Single", + "settingUIColumnLandscape": "UI Columns in Landscape Mode", + "settingUIColumnPortrait": "UI Columns in Portrait Mode", + "localePl": "Polish", + "tooltipRemoveThisQuotedMessage": "Remove quoted message.", + "tooltipReplyToThisMessage": "Reply to this message", + "tooltipRejectContactRequest": "Reject this contact request", + "tooltipAcceptContactRequest": "Accept this contact request.", + "notificationNewMessageFromGroup": "New message in a group!", + "notificationNewMessageFromPeer": "New message from a contact!", + "tooltipHidePassword": "Hide Password", + "tooltipShowPassword": "Show Password", + "groupInviteSettingsWarning": "You have been invited to join a group! Please enable the Group Chat Experiment in Settings to view this Invitation.", + "shutdownCwtchAction": "Shutdown Cwtch", + "shutdownCwtchDialog": "Are you sure you want to shutdown Cwtch? This will close all connections, and exit the application.", + "shutdownCwtchDialogTitle": "Shutdown Cwtch?", + "shutdownCwtchTooltip": "Shutdown Cwtch", + "malformedMessage": "Malformed message", + "profileDeleteSuccess": "Successfully deleted profile", + "debugLog": "Turn on console debug logging", + "torNetworkStatus": "Tor network status", + "addContactFirst": "Add or pick a contact to begin chatting.", + "createProfileToBegin": "Please create or unlock a profile to begin", + "nickChangeSuccess": "Profile nickname changed successfully", + "addServerFirst": "You need to add a server before you can create a group", + "deleteProfileSuccess": "Successfully deleted profile", + "sendInvite": "Send a contact or group invite", + "sendMessage": "Send Message", + "cancel": "Cancel", + "resetTor": "Reset", + "torStatus": "Tor Status", + "torVersion": "Tor Version", + "sendAnInvitation": "You sent an invitation for: ", + "contactSuggestion": "This is a contact suggestion for: ", + "rejected": "Rejected!", + "accepted": "Accepted!", + "chatHistoryDefault": "This conversation will be deleted when Cwtch is closed! Message history can be enabled per-conversation via the Settings menu in the upper right.", + "newPassword": "New Password", + "yesLeave": "Yes, Leave This Conversation", + "reallyLeaveThisGroupPrompt": "Are you sure you want to leave this conversation? All messages and attributes will be deleted.", + "leaveConversation": "Leave This Conversation", + "inviteToGroup": "You have been invited to join a group:", + "titleManageServers": "Manage Servers", + "dateNever": "Never", + "dateLastYear": "Last Year", + "dateYesterday": "Yesterday", + "dateLastMonth": "Last Month", + "dateRightNow": "Right Now", + "successfullAddedContact": "Successfully added ", + "descriptionBlockUnknownConnections": "If turned on, this option will automatically close connections from Cwtch users that have not been added to your contact list.", + "descriptionExperimentsGroups": "The group experiment allows Cwtch to connect with untrusted server infrastructure to facilitate communication with more than one contact.", + "descriptionExperiments": "Cwtch experiments are optional, opt-in features that add additional functionality to Cwtch that may have different privacy considerations than traditional 1:1 metadata resistant chat e.g. group chat, bot integration etc.", + "titleManageProfiles": "Manage Cwtch Profiles", + "tooltipUnlockProfiles": "Unlock encrypted profiles by entering their password.", + "titleManageContacts": "Conversations", + "tooltipAddContact": "Add a new contact or conversation", + "tooltipOpenSettings": "Open the settings pane", + "contactAlreadyExists": "Contact Already Exists", + "invalidImportString": "Invalid import string", + "conversationSettings": "Conversation Settings", + "enterCurrentPasswordForDelete": "Please enter current password to delete this profile.", + "enableGroups": "Enable Group Chat", + "localeIt": "Italiana", + "localeEs": "Espanol", + "todoPlaceholder": "Todo...", + "addNewItem": "Add a new item to the list", + "addListItem": "Add a New List Item", + "newConnectionPaneTitle": "New Connection", + "networkStatusOnline": "Online", + "networkStatusConnecting": "Connecting to network and contacts...", + "networkStatusAttemptingTor": "Attempting to connect to Tor network", + "networkStatusDisconnected": "Disconnected from the internet, check your connection", + "viewGroupMembershipTooltip": "View Group Membership", + "loadingTor": "Loading tor...", + "smallTextLabel": "Small", + "defaultScalingText": "Default size text (scale factor:", + "builddate": "Built on: %2", + "version": "Version %1", + "versionTor": "Version %1 with tor %2", + "experimentsEnabled": "Enable Experiments", + "themeDark": "Dark", + "themeLight": "Light", + "settingTheme": "Use Light Themes", + "largeTextLabel": "Large", + "settingInterfaceZoom": "Zoom level", + "localeDe": "Deutsche", + "localePt": "Portuguesa", + "localeFr": "Frances", + "localeEn": "English", + "settingLanguage": "Language", + "blockUnknownLabel": "Block Unknown Contacts", + "zoomLabel": "Interface zoom (mostly affects text and button sizes)", + "versionBuilddate": "Version: %1 Built on: %2", + "cwtchSettingsTitle": "Cwtch Settings", + "unlock": "Unlock", + "yourServers": "Your Servers", + "yourProfiles": "Your Profiles", + "error0ProfilesLoadedForPassword": "0 profiles loaded with that password", + "password": "Password", + "enterProfilePassword": "Enter a password to view your profiles", + "addNewProfileBtn": "Add new profile", + "deleteConfirmText": "DELETE", + "deleteProfileConfirmBtn": "Really Delete Profile", + "deleteConfirmLabel": "Type DELETE to confirm", + "deleteProfileBtn": "Delete Profile", + "passwordChangeError": "Error changing password: Supplied password rejected", + "passwordErrorMatch": "Passwords do not match", + "saveProfileBtn": "Save Profile", + "createProfileBtn": "Create Profile", + "passwordErrorEmpty": "Password cannot be empty", + "password2Label": "Reenter password", + "password1Label": "Password", + "currentPasswordLabel": "Current Password", + "yourDisplayName": "Your Display Name", + "profileOnionLabel": "Send this address to contacts you want to connect with", + "noPasswordWarning": "Not using a password on this account means that all data stored locally will not be encrypted", + "radioNoPassword": "Unencrypted (No password)", + "radioUsePassword": "Password", + "copiedToClipboardNotification": "Copied to Clipboard", + "editProfile": "Edit Profile", + "newProfile": "New Profile", + "defaultProfileName": "Alice", + "profileName": "Display name", + "editProfileTitle": "Edit Profile", + "addProfileTitle": "Add new profile", + "deleteBtn": "Delete", + "unblockBtn": "Unblock Contact", + "dontSavePeerHistory": "Delete History", + "savePeerHistoryDescription": "Determines whether to delete any history associated with the contact.", + "savePeerHistory": "Save History", + "blockBtn": "Block Contact", + "saveBtn": "Save", + "displayNameLabel": "Display Name", + "addressLabel": "Address", + "puzzleGameBtn": "Puzzle Game", + "bulletinsBtn": "Bulletins", + "listsBtn": "Lists", + "chatBtn": "Chat", + "rejectGroupBtn": "Reject", + "acceptGroupBtn": "Accept", + "acceptGroupInviteLabel": "Do you want to accept the invitation to", + "newGroupBtn": "Create new group", + "copiedClipboardNotification": "Copied to clipboard", + "copyBtn": "Copy", + "peerOfflineMessage": "Contact is offline, messages can't be delivered right now", + "peerBlockedMessage": "Contact is blocked", + "pendingLabel": "Pending", + "acknowledgedLabel": "Acknowledged", + "couldNotSendMsgError": "Could not send this message", + "dmTooltip": "Click to DM", + "membershipDescription": "Below is a list of users who have sent messages to the group. This list may not reflect all users who have access to the group.", + "addListItemBtn": "Add Item", + "peerNotOnline": "Contact is offline. Applications cannot be used right now.", + "searchList": "Search List", + "update": "Update", + "inviteBtn": "Invite", + "inviteToGroupLabel": "Invite to group", + "groupNameLabel": "Group name", + "viewServerInfo": "Server Info", + "serverNotSynced": "Syncing New Messages (This can take some time)...", + "serverSynced": "Synced", + "serverConnectivityDisconnected": "Server Disconnected", + "serverConnectivityConnected": "Server Connected", + "serverInfo": "Server Information", + "invitationLabel": "Invitation", + "serverLabel": "Server", + "search": "Search...", + "cycleColoursDesktop": "Click to cycle colours.\nRight-click to reset.", + "cycleColoursAndroid": "Click to cycle colours.\nLong-press to reset.", + "cycleMorphsDesktop": "Click to cycle morphs.\nRight-click to reset.", + "cycleMorphsAndroid": "Click to cycle morphs.\nLong-press to reset.", + "cycleCatsDesktop": "Click to cycle category.\nRight-click to reset.", + "cycleCatsAndroid": "Click to cycle category.\nLong-press to reset.", + "blocked": "Blocked", + "pasteAddressToAddContact": "Paste a cwtch address, invitation or key bundle here to add a new conversation", + "titlePlaceholder": "title...", + "postNewBulletinLabel": "Post new bulletin", + "newBulletinLabel": "New Bulletin", + "joinGroup": "Join group", + "createGroup": "Create group", + "addPeer": "Add Contact", + "groupAddr": "Address", + "invitation": "Invitation", + "server": "Server", + "groupName": "Group name", + "peerName": "Name", + "peerAddress": "Address", + "joinGroupTab": "Join a group", + "createGroupTab": "Create a group", + "addPeerTab": "Add a contact", + "createGroupBtn": "Create", + "defaultGroupName": "Awesome Group", + "createGroupTitle": "Create Group" +} \ No newline at end of file diff --git a/lib/l10n/intl_pl.arb b/lib/l10n/intl_pl.arb index dae20ab6..558c046e 100644 --- a/lib/l10n/intl_pl.arb +++ b/lib/l10n/intl_pl.arb @@ -1,6 +1,9 @@ { "@@locale": "pl", - "@@last_modified": "2022-02-27T21:00:12+01:00", + "@@last_modified": "2022-02-28T19:53:33+01:00", + "localeEl": "Greek", + "localeNo": "Norwegian", + "localeLb": "Luxembourgish", "localeRo": "Romanian", "newMessageNotificationConversationInfo": "New Message From %1", "newMessageNotificationSimple": "New Message", diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb index 61d56427..12590bb6 100644 --- a/lib/l10n/intl_pt.arb +++ b/lib/l10n/intl_pt.arb @@ -1,6 +1,9 @@ { "@@locale": "pt", - "@@last_modified": "2022-02-27T21:00:12+01:00", + "@@last_modified": "2022-02-28T19:53:33+01:00", + "localeEl": "Greek", + "localeNo": "Norwegian", + "localeLb": "Luxembourgish", "localeRo": "Romanian", "newMessageNotificationConversationInfo": "New Message From %1", "newMessageNotificationSimple": "New Message", diff --git a/lib/l10n/intl_ro.arb b/lib/l10n/intl_ro.arb index 4e756013..dd73bc2e 100644 --- a/lib/l10n/intl_ro.arb +++ b/lib/l10n/intl_ro.arb @@ -1,6 +1,9 @@ { "@@locale": "ro", - "@@last_modified": "2022-02-27T21:00:12+01:00", + "@@last_modified": "2022-02-28T19:53:33+01:00", + "localeNo": "Norvegiană", + "localeEl": "Greacă", + "localeLb": "Luxemburgheză", "localeRo": "Română", "createGroupTitle": "Creați un grup", "serverLabel": "Server", diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb index 47820ee7..ce8304c7 100644 --- a/lib/l10n/intl_ru.arb +++ b/lib/l10n/intl_ru.arb @@ -1,6 +1,9 @@ { "@@locale": "ru", - "@@last_modified": "2022-02-27T21:00:12+01:00", + "@@last_modified": "2022-02-28T19:53:33+01:00", + "localeEl": "Греческий", + "localeNo": "Норвежский", + "localeLb": "Люксембургский", "settingsGroupAppearance": "Появление", "settingGroupBehaviour": "Поведение", "settingsGroupExperiments": "Эксперименты", diff --git a/lib/main.dart b/lib/main.dart index d7c0021e..fa5b6dca 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -12,23 +12,26 @@ import 'package:cwtch/errorHandler.dart'; import 'package:cwtch/settings.dart'; import 'package:cwtch/torstatus.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.dart'; import 'package:window_manager/window_manager.dart'; import 'cwtch/cwtch.dart'; import 'cwtch/cwtchNotifier.dart'; +import 'l10n/delegateLb.dart'; import 'licenses.dart'; import 'models/appstate.dart'; import 'models/contactlist.dart'; import 'models/profile.dart'; import 'models/profilelist.dart'; import 'models/servers.dart'; -import 'views/contactsview.dart'; import 'views/profilemgrview.dart'; import 'views/splashView.dart'; -import 'dart:io' show Platform, exit, sleep; +import 'dart:io' show Platform, exit; import 'themes/opaque.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:intl/intl.dart' as intl; + var globalSettings = Settings(Locale("en", ''), CwtchDark()); var globalErrorHandler = ErrorHandler(); var globalTorStatus = TorStatus(); @@ -120,7 +123,13 @@ class FlwtchState extends State with WindowListener { key: Key('app'), navigatorKey: navKey, locale: settings.locale, - localizationsDelegates: AppLocalizations.localizationsDelegates, + localizationsDelegates: >[ + AppLocalizations.delegate, + MaterialLocalizationDelegate(), + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ], supportedLocales: AppLocalizations.supportedLocales, title: 'Cwtch', theme: mkThemeData(settings), diff --git a/lib/views/globalsettingsview.dart b/lib/views/globalsettingsview.dart index 332b8ca5..471d3cdc 100644 --- a/lib/views/globalsettingsview.dart +++ b/lib/views/globalsettingsview.dart @@ -67,7 +67,7 @@ class _GlobalSettingsViewState extends State { value: Provider.of(context).locale.languageCode, onChanged: (String? newValue) { setState(() { - settings.switchLocale(Locale(newValue!, '')); + settings.switchLocale(Locale(newValue!)); saveSettings(context); }); }, @@ -412,12 +412,21 @@ String getLanguageFull(context, String languageCode) { if (languageCode == "de") { return AppLocalizations.of(context)!.localeDe; } + if (languageCode == "el") { + return AppLocalizations.of(context)!.localeEl; + } if (languageCode == "it") { return AppLocalizations.of(context)!.localeIt; } + if (languageCode == "no") { + return AppLocalizations.of(context)!.localeNo; + } if (languageCode == "pl") { return AppLocalizations.of(context)!.localePl; } + if (languageCode == "lb") { + return AppLocalizations.of(context)!.localeLb; + } if (languageCode == "ru") { return AppLocalizations.of(context)!.localeRU; }