From c16de2d6b39df5caaa1090dc72529665fce6bc76 Mon Sep 17 00:00:00 2001 From: ethanbourne789 Date: Thu, 28 May 2026 11:41:34 +0800 Subject: [PATCH] Add Simplified Chinese translation support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit adds Simplified Chinese localization support to the Maily email application: Changes made: 1. Created lib/src/localization/app_zh.arb - Complete Chinese translation file with all app strings 2. Updated lib/src/settings/view/settings_language_screen.dart - Added '中文' language option 3. Updated pubspec.yaml - Enabled flutter generate flag for l10n 4. Regenerated localization files using flutter gen-l10n Users can now select Chinese (Simplified) as their preferred app language in the settings. --- lib/src/localization/app_localizations.g.dart | 56 +- .../localization/app_localizations_de.g.dart | 238 +- .../localization/app_localizations_en.g.dart | 193 +- .../localization/app_localizations_es.g.dart | 250 +- .../localization/app_localizations_zh.g.dart | 1808 +++++++++++++ lib/src/localization/app_zh.arb | 2238 +++++++++++++++++ .../view/settings_language_screen.dart | 62 +- missing-translations.txt | 81 + pubspec.yaml | 2 +- 9 files changed, 4629 insertions(+), 299 deletions(-) create mode 100644 lib/src/localization/app_localizations_zh.g.dart create mode 100644 lib/src/localization/app_zh.arb diff --git a/lib/src/localization/app_localizations.g.dart b/lib/src/localization/app_localizations.g.dart index f863f61..254158f 100644 --- a/lib/src/localization/app_localizations.g.dart +++ b/lib/src/localization/app_localizations.g.dart @@ -8,6 +8,9 @@ import 'package:intl/intl.dart' as intl; import 'app_localizations_de.g.dart'; import 'app_localizations_en.g.dart'; import 'app_localizations_es.g.dart'; +import 'app_localizations_zh.g.dart'; + +// ignore_for_file: type=lint /// Callers can lookup localized strings with an instance of AppLocalizations /// returned by `AppLocalizations.of(context)`. @@ -61,7 +64,8 @@ import 'app_localizations_es.g.dart'; /// be consistent with the languages listed in the AppLocalizations.supportedLocales /// property. abstract class AppLocalizations { - AppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + AppLocalizations(String locale) + : localeName = intl.Intl.canonicalizedLocale(locale.toString()); final String localeName; @@ -69,7 +73,8 @@ abstract class AppLocalizations { return Localizations.of(context, AppLocalizations); } - static const LocalizationsDelegate delegate = _AppLocalizationsDelegate(); + static const LocalizationsDelegate delegate = + _AppLocalizationsDelegate(); /// A list of this localizations delegate along with the default localizations /// delegates. @@ -81,18 +86,20 @@ abstract class AppLocalizations { /// Additional delegates can be added by appending to this list in /// MaterialApp. This list does not have to be used at all if a custom list /// of delegates is preferred or required. - static const List> localizationsDelegates = >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; + static const List> localizationsDelegates = + >[ + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; /// A list of this localizations delegate's supported locales. static const List supportedLocales = [ Locale('en'), Locale('de'), - Locale('es') + Locale('es'), + Locale('zh'), ]; /// Default signature text @@ -1815,7 +1822,10 @@ abstract class AppLocalizations { /// /// In en, this message translates to: /// **'Your account {accountName} might support so called + aliases like {example}.\nA + alias helps you to protect your identity and helps you against spam.\nTo test this, a test message will be sent to this generated address. If it arrives, your provider supports + aliases and you can easily generate them on demand when writing a new mail message.'** - String editAccountTestPlusAliasStepIntroductionText(String accountName, String example); + String editAccountTestPlusAliasStepIntroductionText( + String accountName, + String example, + ); /// Title while testing concept of + aliases. /// @@ -1935,7 +1945,10 @@ abstract class AppLocalizations { /// /// In en, this message translates to: /// **'Maily cannot reach the specified mail server. Please check your incoming server setting \"{incomingHost}\" and your outgoing server setting \"{outgoingHost}\".'** - String accountDetailsErrorHostProblem(String incomingHost, String outgoingHost); + String accountDetailsErrorHostProblem( + String incomingHost, + String outgoingHost, + ); /// Error details when login fails /// @@ -3066,7 +3079,8 @@ abstract class AppLocalizations { String get durationEmpty; } -class _AppLocalizationsDelegate extends LocalizationsDelegate { +class _AppLocalizationsDelegate + extends LocalizationsDelegate { const _AppLocalizationsDelegate(); @override @@ -3075,26 +3089,30 @@ class _AppLocalizationsDelegate extends LocalizationsDelegate } @override - bool isSupported(Locale locale) => ['de', 'en', 'es'].contains(locale.languageCode); + bool isSupported(Locale locale) => + ['de', 'en', 'es', 'zh'].contains(locale.languageCode); @override bool shouldReload(_AppLocalizationsDelegate old) => false; } AppLocalizations lookupAppLocalizations(Locale locale) { - - // Lookup logic when only language code is specified. switch (locale.languageCode) { - case 'de': return AppLocalizationsDe(); - case 'en': return AppLocalizationsEn(); - case 'es': return AppLocalizationsEs(); + case 'de': + return AppLocalizationsDe(); + case 'en': + return AppLocalizationsEn(); + case 'es': + return AppLocalizationsEs(); + case 'zh': + return AppLocalizationsZh(); } throw FlutterError( 'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' 'an issue with the localizations generation tool. Please file an issue ' 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.' + 'that was used.', ); } diff --git a/lib/src/localization/app_localizations_de.g.dart b/lib/src/localization/app_localizations_de.g.dart index a1c2839..ece5f3b 100644 --- a/lib/src/localization/app_localizations_de.g.dart +++ b/lib/src/localization/app_localizations_de.g.dart @@ -1,7 +1,9 @@ +// ignore: unused_import import 'package:intl/intl.dart' as intl; - import 'app_localizations.g.dart'; +// ignore_for_file: type=lint + /// The translations for German (`de`). class AppLocalizationsDe extends AppLocalizations { AppLocalizationsDe([String locale = 'de']) : super(locale); @@ -61,25 +63,29 @@ class AppLocalizationsDe extends AppLocalizations { String get welcomePanel1Title => 'Maily'; @override - String get welcomePanel1Text => 'Willkommen zu Maily, deinem freundlichen und schnellen E-Mail Helferlein!'; + String get welcomePanel1Text => + 'Willkommen zu Maily, deinem freundlichen und schnellen E-Mail Helferlein!'; @override String get welcomePanel2Title => 'Konten'; @override - String get welcomePanel2Text => 'Verwalte beliebig viele E-Mail Konten. Lese und suche Mails in allen Konten gleichzeitig'; + String get welcomePanel2Text => + 'Verwalte beliebig viele E-Mail Konten. Lese und suche Mails in allen Konten gleichzeitig'; @override String get welcomePanel3Title => 'Wisch und drück mich!'; @override - String get welcomePanel3Text => 'Wische eine E-Mail um sie zu löschen oder als gelesen zu markieren. Halte eine E-Mail lange um mehrere gleichzeitig zu bearbeiten.'; + String get welcomePanel3Text => + 'Wische eine E-Mail um sie zu löschen oder als gelesen zu markieren. Halte eine E-Mail lange um mehrere gleichzeitig zu bearbeiten.'; @override String get welcomePanel4Title => 'Halte Deinen Posteingang sauber'; @override - String get welcomePanel4Text => 'Melde Dich von Newslettern mit einem Klick ab.'; + String get welcomePanel4Text => + 'Melde Dich von Newslettern mit einem Klick ab.'; @override String get welcomeActionSignIn => 'Melde dich bei deinem E-Mail Konto an'; @@ -94,7 +100,8 @@ class AppLocalizationsDe extends AppLocalizations { String get homeActionsShowAsList => 'Listen Modus'; @override - String get homeEmptyFolderMessage => 'Alles fertig!\n\nEs gibt keine E-Mails in diesem Ordner.'; + String get homeEmptyFolderMessage => + 'Alles fertig!\n\nEs gibt keine E-Mails in diesem Ordner.'; @override String get homeEmptySearchMessage => 'Keine E-Mails gefunden.'; @@ -150,7 +157,6 @@ class AppLocalizationsDe extends AppLocalizations { String multipleMovedToJunk(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -167,7 +173,6 @@ class AppLocalizationsDe extends AppLocalizations { String multipleMovedToInbox(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -184,7 +189,6 @@ class AppLocalizationsDe extends AppLocalizations { String multipleMovedToArchive(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -201,7 +205,6 @@ class AppLocalizationsDe extends AppLocalizations { String multipleMovedToTrash(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -215,7 +218,8 @@ class AppLocalizationsDe extends AppLocalizations { } @override - String get multipleSelectionNeededInfo => 'Wähle mindestens eine Nachricht aus.'; + String get multipleSelectionNeededInfo => + 'Wähle mindestens eine Nachricht aus.'; @override String multipleSelectionActionFailed(String details) { @@ -226,7 +230,6 @@ class AppLocalizationsDe extends AppLocalizations { String multipleMoveTitle(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -311,7 +314,6 @@ class AppLocalizationsDe extends AppLocalizations { String drawerAccountsSectionTitle(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -503,7 +505,6 @@ class AppLocalizationsDe extends AppLocalizations { String messageActionForwardAttachments(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -582,10 +583,12 @@ class AppLocalizationsDe extends AppLocalizations { String get redirectTitle => 'Umleiten'; @override - String get redirectInfo => 'Leite diese Nachricht an folgende Empfänger:innen um. Umleiten verändert nicht die Nachricht.'; + String get redirectInfo => + 'Leite diese Nachricht an folgende Empfänger:innen um. Umleiten verändert nicht die Nachricht.'; @override - String get redirectEmailInputRequired => 'Bitte gebe mindestens eine gültige E-Mail-Adresse ein.'; + String get redirectEmailInputRequired => + 'Bitte gebe mindestens eine gültige E-Mail-Adresse ein.'; @override String searchQueryDescription(String folder) { @@ -598,7 +601,8 @@ class AppLocalizationsDe extends AppLocalizations { } @override - String get legaleseUsage => 'Durch die Nutzung von Maily stimmst du unserer [PP] und unseren [TC] zu.'; + String get legaleseUsage => + 'Durch die Nutzung von Maily stimmst du unserer [PP] und unseren [TC] zu.'; @override String get legalesePrivacyPolicy => 'Datenschutzerlärung'; @@ -607,7 +611,8 @@ class AppLocalizationsDe extends AppLocalizations { String get legaleseTermsAndConditions => 'Bedingungen'; @override - String get aboutApplicationLegalese => 'Maily ist freie Software, die unter der GPL GNU General Public License veröffentlicht ist.'; + String get aboutApplicationLegalese => + 'Maily ist freie Software, die unter der GPL GNU General Public License veröffentlicht ist.'; @override String get feedbackActionSuggestFeature => 'Feature vorschlagen'; @@ -625,7 +630,8 @@ class AppLocalizationsDe extends AppLocalizations { String get feedbackIntro => 'Danke, dass du Maily testest!'; @override - String get feedbackProvideInfoRequest => 'Bitte teile folgende Information mit, wenn du ein Problem berichtest:'; + String get feedbackProvideInfoRequest => + 'Bitte teile folgende Information mit, wenn du ein Problem berichtest:'; @override String get feedbackResultInfoCopied => 'kopiert'; @@ -643,16 +649,20 @@ class AppLocalizationsDe extends AppLocalizations { String get settingsSecurityBlockExternalImages => 'Externe Bilder blockieren'; @override - String get settingsSecurityBlockExternalImagesDescriptionTitle => 'Externe Bilder'; + String get settingsSecurityBlockExternalImagesDescriptionTitle => + 'Externe Bilder'; @override - String get settingsSecurityBlockExternalImagesDescriptionText => 'E-Mail-Nachrichten können Bilder enthalten, die entweder auf externen Servern integriert oder gehostet werden. Die letzteren externen Bilder können dem Absender der Nachricht Informationen offen legen, z.B. um dem Absender mitzuteilen, dass Sie die Nachricht geöffnet haben. Mit dieser Option können Sie solche externen Bilder blockieren, was das Risiko verringert, sensible Informationen zu enthüllen. Wenn Sie eine Nachricht lesen, können Sie diese Bilder immer noch pro Nachricht laden.'; + String get settingsSecurityBlockExternalImagesDescriptionText => + 'E-Mail-Nachrichten können Bilder enthalten, die entweder auf externen Servern integriert oder gehostet werden. Die letzteren externen Bilder können dem Absender der Nachricht Informationen offen legen, z.B. um dem Absender mitzuteilen, dass Sie die Nachricht geöffnet haben. Mit dieser Option können Sie solche externen Bilder blockieren, was das Risiko verringert, sensible Informationen zu enthüllen. Wenn Sie eine Nachricht lesen, können Sie diese Bilder immer noch pro Nachricht laden.'; @override - String get settingsSecurityMessageRenderingHtml => 'Gesamte Nachricht anzeigen'; + String get settingsSecurityMessageRenderingHtml => + 'Gesamte Nachricht anzeigen'; @override - String get settingsSecurityMessageRenderingPlainText => 'Nur den Text der Nachricht anzeigen'; + String get settingsSecurityMessageRenderingPlainText => + 'Nur den Text der Nachricht anzeigen'; @override String get settingsSecurityLaunchModeLabel => 'Wie soll Maily Links öffnen?'; @@ -679,7 +689,8 @@ class AppLocalizationsDe extends AppLocalizations { String get settingsReadReceipts => 'Lesebestätigungen'; @override - String get readReceiptsSettingsIntroduction => 'Sollen Lesebestätigungs-Anforderungen angezeigt werden?'; + String get readReceiptsSettingsIntroduction => + 'Sollen Lesebestätigungs-Anforderungen angezeigt werden?'; @override String get readReceiptOptionAlways => 'Immer'; @@ -691,7 +702,8 @@ class AppLocalizationsDe extends AppLocalizations { String get settingsFolders => 'Ordner'; @override - String get folderNamesIntroduction => 'Welche Ordner-Namen möchtest du nutzen?'; + String get folderNamesIntroduction => + 'Welche Ordner-Namen möchtest du nutzen?'; @override String get folderNamesSettingLocalized => 'Von Maily vorgegebene Namen'; @@ -760,7 +772,8 @@ class AppLocalizationsDe extends AppLocalizations { String get developerModeTitle => 'Entwicklungs-Modus'; @override - String get developerModeIntroduction => 'Mit einem aktivierten Entwicklungs-Modus kannst du den Sourcecode von Mails einsehen, siehst alle Fehler-Details und Text Anhänge in eine Mail Nachricht umwandeln.'; + String get developerModeIntroduction => + 'Mit einem aktivierten Entwicklungs-Modus kannst du den Sourcecode von Mails einsehen, siehst alle Fehler-Details und Text Anhänge in eine Mail Nachricht umwandeln.'; @override String get developerModeEnable => 'Entwicklungs-Modus aktivieren'; @@ -769,7 +782,8 @@ class AppLocalizationsDe extends AppLocalizations { String get developerShowAsEmail => 'Text zu E-Mail konvertieren'; @override - String get developerShowAsEmailFailed => 'Dieser Text kann nicht in einer MIME Nachricht umgewandelt werden.'; + String get developerShowAsEmailFailed => + 'Dieser Text kann nicht in einer MIME Nachricht umgewandelt werden.'; @override String get designTitle => 'Design Einstellungen'; @@ -809,7 +823,8 @@ class AppLocalizationsDe extends AppLocalizations { String get securitySettingsTitle => 'Sicherheit'; @override - String get securitySettingsIntro => 'Passe die Sicherheitseinstellungen deinen persönlichen Ansprüchen an.'; + String get securitySettingsIntro => + 'Passe die Sicherheitseinstellungen deinen persönlichen Ansprüchen an.'; @override String get securityUnlockWithFaceId => 'Entsicher Maily mit Face ID.'; @@ -821,10 +836,12 @@ class AppLocalizationsDe extends AppLocalizations { String get securityUnlockReason => 'Entsicher Maily.'; @override - String get securityUnlockDisableReason => 'Entsicher Maily um die Sicherung zu deaktvieren.'; + String get securityUnlockDisableReason => + 'Entsicher Maily um die Sicherung zu deaktvieren.'; @override - String get securityUnlockNotAvailable => 'Dein Gerät unterstützt keine Biometrie-Absicherung. Vielleicht musst du zuerst die Displaysperre in den Geräteeinstellungen aktivieren.'; + String get securityUnlockNotAvailable => + 'Dein Gerät unterstützt keine Biometrie-Absicherung. Vielleicht musst du zuerst die Displaysperre in den Geräteeinstellungen aktivieren.'; @override String get securityUnlockLabel => 'Maily Absichern'; @@ -833,7 +850,8 @@ class AppLocalizationsDe extends AppLocalizations { String get securityUnlockDescriptionTitle => 'Maily Absichern'; @override - String get securityUnlockDescriptionText => 'Du kannst Maily absichern, so dass anderen deine E-Mails auch dann nicht lesen können, wenn sie Zugang zu deinem Gerät haben.'; + String get securityUnlockDescriptionText => + 'Du kannst Maily absichern, so dass anderen deine E-Mails auch dann nicht lesen können, wenn sie Zugang zu deinem Gerät haben.'; @override String get securityLockImmediately => 'Sofort absichern'; @@ -848,7 +866,8 @@ class AppLocalizationsDe extends AppLocalizations { String get lockScreenTitle => 'Maily ist gesichert'; @override - String get lockScreenIntro => 'Maily ist gesichert, bitte authentifiziere dich um weiter zu machen.'; + String get lockScreenIntro => + 'Maily ist gesichert, bitte authentifiziere dich um weiter zu machen.'; @override String get lockScreenUnlockAction => 'Entsichern'; @@ -887,13 +906,16 @@ class AppLocalizationsDe extends AppLocalizations { String get addAccountPasswordHint => 'Dein Passwort'; @override - String get addAccountApplicationPasswordRequiredInfo => 'Dieser Anbieter verlangt ein Applikations-spezifisches Passwort.'; + String get addAccountApplicationPasswordRequiredInfo => + 'Dieser Anbieter verlangt ein Applikations-spezifisches Passwort.'; @override - String get addAccountApplicationPasswordRequiredButton => 'App Passwort erstellen'; + String get addAccountApplicationPasswordRequiredButton => + 'App Passwort erstellen'; @override - String get addAccountApplicationPasswordRequiredAcknowledged => 'Ich habe bereits ein App Passwort'; + String get addAccountApplicationPasswordRequiredAcknowledged => + 'Ich habe bereits ein App Passwort'; @override String get addAccountVerificationStep => 'Überprüfen'; @@ -930,10 +952,12 @@ class AppLocalizationsDe extends AppLocalizations { String get addAccountOauthSignInGoogle => 'Mit Google einloggen'; @override - String get addAccountOauthSignInWithAppPassword => 'Oder erstelle ein Applikations-Passwort:'; + String get addAccountOauthSignInWithAppPassword => + 'Oder erstelle ein Applikations-Passwort:'; @override - String get accountAddImapAccessSetupMightBeRequired => 'Vielleicht musst Du bei deinem Anbieter den Zugang für E-Mail Apps aktivieren.'; + String get accountAddImapAccessSetupMightBeRequired => + 'Vielleicht musst Du bei deinem Anbieter den Zugang für E-Mail Apps aktivieren.'; @override String get addAccountSetupImapAccessButtonLabel => 'E-Mail Zugang aktivieren'; @@ -964,16 +988,19 @@ class AppLocalizationsDe extends AppLocalizations { String get editAccountFailureToConnectRetryAction => 'Wiederholen'; @override - String get editAccountFailureToConnectChangePasswordAction => 'Passwort ändern'; + String get editAccountFailureToConnectChangePasswordAction => + 'Passwort ändern'; @override String get editAccountFailureToConnectFixedTitle => 'Verbunden'; @override - String get editAccountFailureToConnectFixedInfo => 'Das Konto ist wieder verbunden.'; + String get editAccountFailureToConnectFixedInfo => + 'Das Konto ist wieder verbunden.'; @override - String get editAccountIncludeInUnifiedLabel => 'zu \"Alle Konten\" hinzufügen'; + String get editAccountIncludeInUnifiedLabel => + 'zu \"Alle Konten\" hinzufügen'; @override String editAccountAliasLabel(String email) { @@ -981,7 +1008,8 @@ class AppLocalizationsDe extends AppLocalizations { } @override - String get editAccountNoAliasesInfo => 'Du hast noch keine bekannten Alias E-Mail Adressen für dieses Konto.'; + String get editAccountNoAliasesInfo => + 'Du hast noch keine bekannten Alias E-Mail Adressen für dieses Konto.'; @override String editAccountAliasRemoved(String email) { @@ -995,7 +1023,8 @@ class AppLocalizationsDe extends AppLocalizations { String get editAccountPlusAliasesSupported => 'Unterstützt + Aliase'; @override - String get editAccountCheckPlusAliasAction => 'Teste Unterstützung für + Aliase'; + String get editAccountCheckPlusAliasAction => + 'Teste Unterstützung für + Aliase'; @override String get editAccountBccMyself => 'Setze mich auf BCC'; @@ -1004,10 +1033,12 @@ class AppLocalizationsDe extends AppLocalizations { String get editAccountBccMyselfDescriptionTitle => 'Setze mich auf CC'; @override - String get editAccountBccMyselfDescriptionText => 'Du kannst Dir selbst eine \"BCC\" Kopie von jeder Nachricht schicken, die du von diesem Konto verschickst. Normalerweise ist das nicht nötig und nicht gewollt, weil alle gesendeten Nachrichten im\"Gesendete Nachrichten\" Ordner gespeichert werden.'; + String get editAccountBccMyselfDescriptionText => + 'Du kannst Dir selbst eine \"BCC\" Kopie von jeder Nachricht schicken, die du von diesem Konto verschickst. Normalerweise ist das nicht nötig und nicht gewollt, weil alle gesendeten Nachrichten im\"Gesendete Nachrichten\" Ordner gespeichert werden.'; @override - String get editAccountServerSettingsAction => 'Bearbeite Server Einstellungen'; + String get editAccountServerSettingsAction => + 'Bearbeite Server Einstellungen'; @override String get editAccountDeleteAccountAction => 'Lösche Konto'; @@ -1029,7 +1060,10 @@ class AppLocalizationsDe extends AppLocalizations { String get editAccountTestPlusAliasStepIntroductionTitle => 'Einleitung'; @override - String editAccountTestPlusAliasStepIntroductionText(String accountName, String example) { + String editAccountTestPlusAliasStepIntroductionText( + String accountName, + String example, + ) { return 'Dein Konto $accountName könnte sogenannte + Aliase wie $example unterstützen.\nEin + Alias hilft dir Deine Identität zu schützen und kann gegen Spam helfen.\nUm dies zu testen, wird eine Nachricht an diese generierte Adresse gesendet. Wenn sie ankommt, dann unterstützt dein Anbieter + Aliase und du kannst leicht neue generieren wenn Du eine E-Mail schreibst.'; } @@ -1082,7 +1116,8 @@ class AppLocalizationsDe extends AppLocalizations { String get editAccountLoggingEnabled => 'Log aktiviert, bitte neu starten'; @override - String get editAccountLoggingDisabled => 'Log de-aktiviert, bitte neu starten'; + String get editAccountLoggingDisabled => + 'Log de-aktiviert, bitte neu starten'; @override String get accountDetailsFallbackTitle => 'Server Einstellungen'; @@ -1097,7 +1132,10 @@ class AppLocalizationsDe extends AppLocalizations { String get accountProviderCustom => 'Anderer E-Mail Service'; @override - String accountDetailsErrorHostProblem(String incomingHost, String outgoingHost) { + String accountDetailsErrorHostProblem( + String incomingHost, + String outgoingHost, + ) { return 'Maily kann den angegeben Server nicht erreich. Bitte überprüfe die Einstellugen des Posteingang-Servers \"$incomingHost\" und des Postausgang-Servers \"$outgoingHost\".'; } @@ -1110,7 +1148,8 @@ class AppLocalizationsDe extends AppLocalizations { String get accountDetailsUserNameLabel => 'Login Name'; @override - String get accountDetailsUserNameHint => 'Dein Login, falls es nicht die E-Mail ist'; + String get accountDetailsUserNameHint => + 'Dein Login, falls es nicht die E-Mail ist'; @override String get accountDetailsPasswordLabel => 'Login Passwort'; @@ -1134,10 +1173,12 @@ class AppLocalizationsDe extends AppLocalizations { String get accountDetailsOutgoingHint => 'Domäne wie smtp.domain.de'; @override - String get accountDetailsAdvancedIncomingSectionTitle => 'Erweiterte Posteingang Einstellungen'; + String get accountDetailsAdvancedIncomingSectionTitle => + 'Erweiterte Posteingang Einstellungen'; @override - String get accountDetailsIncomingServerTypeLabel => 'Typ des Posteingang Servers:'; + String get accountDetailsIncomingServerTypeLabel => + 'Typ des Posteingang Servers:'; @override String get accountDetailsOptionAutomatic => 'automatisch'; @@ -1146,31 +1187,37 @@ class AppLocalizationsDe extends AppLocalizations { String get accountDetailsIncomingSecurityLabel => 'Posteingang Sicherheit:'; @override - String get accountDetailsSecurityOptionNone => 'Plain (keine Verschlüsselung)'; + String get accountDetailsSecurityOptionNone => + 'Plain (keine Verschlüsselung)'; @override String get accountDetailsIncomingPortLabel => 'Posteingang Port'; @override - String get accountDetailsPortHint => 'Leer lassen um automatisch finden zu lassen'; + String get accountDetailsPortHint => + 'Leer lassen um automatisch finden zu lassen'; @override String get accountDetailsIncomingUserNameLabel => 'Posteingang Login-Name'; @override - String get accountDetailsAlternativeUserNameHint => 'Login, falls abweichend von oben'; + String get accountDetailsAlternativeUserNameHint => + 'Login, falls abweichend von oben'; @override String get accountDetailsIncomingPasswordLabel => 'Posteingang Passwort'; @override - String get accountDetailsAlternativePasswordHint => 'Passwort, falls abweichend von oben'; + String get accountDetailsAlternativePasswordHint => + 'Passwort, falls abweichend von oben'; @override - String get accountDetailsAdvancedOutgoingSectionTitle => 'Erweiterte Postausgang Einstellungen'; + String get accountDetailsAdvancedOutgoingSectionTitle => + 'Erweiterte Postausgang Einstellungen'; @override - String get accountDetailsOutgoingServerTypeLabel => 'Typ des Postausgang Servers:'; + String get accountDetailsOutgoingServerTypeLabel => + 'Typ des Postausgang Servers:'; @override String get accountDetailsOutgoingSecurityLabel => 'Postausgang Sicherheit:'; @@ -1197,7 +1244,8 @@ class AppLocalizationsDe extends AppLocalizations { String get composeEmptyMessage => 'Leere Nachricht'; @override - String get composeWarningNoSubject => 'Du hast kein Betreff geschrieben. Möchtest du die Nachricht ohne Betreff senden?'; + String get composeWarningNoSubject => + 'Du hast kein Betreff geschrieben. Möchtest du die Nachricht ohne Betreff senden?'; @override String get composeActionSentWithoutSubject => 'Senden'; @@ -1225,10 +1273,12 @@ class AppLocalizationsDe extends AppLocalizations { } @override - String get composeConvertToPlainTextEditorAction => 'Zu Text-Nachricht konvertieren'; + String get composeConvertToPlainTextEditorAction => + 'Zu Text-Nachricht konvertieren'; @override - String get composeConvertToHtmlEditorAction => 'Zu HTML-Nachricht konvertieren'; + String get composeConvertToHtmlEditorAction => + 'Zu HTML-Nachricht konvertieren'; @override String get composeContinueEditingAction => 'Weiter bearbeiten'; @@ -1302,13 +1352,16 @@ class AppLocalizationsDe extends AppLocalizations { String get languageSettingConfirmationTitle => 'Deutsch für Maily nutzen?'; @override - String get languageSettingConfirmationQuery => 'Bitte bestätige, dass deutsch als Sprache verwendet werden soll.'; + String get languageSettingConfirmationQuery => + 'Bitte bestätige, dass deutsch als Sprache verwendet werden soll.'; @override - String get languageSetInfo => 'Maily ist nun auf deutsch. Bitte starte die App neu.'; + String get languageSetInfo => + 'Maily ist nun auf deutsch. Bitte starte die App neu.'; @override - String get languageSystemSetInfo => 'Maily wird nun die Systemsprache oder englisch nutzen, wenn die Systemprache nicht unterstützt wird. Bitte starte die App neu.'; + String get languageSystemSetInfo => + 'Maily wird nun die Systemsprache oder englisch nutzen, wenn die Systemprache nicht unterstützt wird. Bitte starte die App neu.'; @override String get swipeSettingTitle => 'Wischgesten'; @@ -1326,10 +1379,12 @@ class AppLocalizationsDe extends AppLocalizations { String get signatureSettingsTitle => 'Signatur'; @override - String get signatureSettingsComposeActionsInfo => 'Aktiviere die Signatur für folgende Nachrichten:'; + String get signatureSettingsComposeActionsInfo => + 'Aktiviere die Signatur für folgende Nachrichten:'; @override - String get signatureSettingsAccountInfo => 'Du kannst Signaturen für Konten in den Konten-Einstellungen festlegen.'; + String get signatureSettingsAccountInfo => + 'Du kannst Signaturen für Konten in den Konten-Einstellungen festlegen.'; @override String signatureSettingsAddForAccount(String account) { @@ -1340,7 +1395,8 @@ class AppLocalizationsDe extends AppLocalizations { String get defaultSenderSettingsTitle => 'Standard Absender'; @override - String get defaultSenderSettingsLabel => 'Wähle den Absender für neue Nachrichten aus.'; + String get defaultSenderSettingsLabel => + 'Wähle den Absender für neue Nachrichten aus.'; @override String defaultSenderSettingsFirstAccount(String email) { @@ -1348,7 +1404,8 @@ class AppLocalizationsDe extends AppLocalizations { } @override - String get defaultSenderSettingsAliasInfo => 'Du kannst Alias E-Mail Adressen in den [AS] festlegen.'; + String get defaultSenderSettingsAliasInfo => + 'Du kannst Alias E-Mail Adressen in den [AS] festlegen.'; @override String get defaultSenderSettingsAliasAccountSettings => 'Konto-Einstellungen'; @@ -1357,13 +1414,15 @@ class AppLocalizationsDe extends AppLocalizations { String get replySettingsTitle => 'Nachrichten Format'; @override - String get replySettingsIntro => 'In welchem Format möchtest du Nachrichten schreiben?'; + String get replySettingsIntro => + 'In welchem Format möchtest du Nachrichten schreiben?'; @override String get replySettingsFormatHtml => 'Immer HTML'; @override - String get replySettingsFormatSameAsOriginal => 'Im selben Format wie die Orignal-Nachricht'; + String get replySettingsFormatSameAsOriginal => + 'Im selben Format wie die Orignal-Nachricht'; @override String get replySettingsFormatPlainText => 'Immer nur Text'; @@ -1460,7 +1519,8 @@ class AppLocalizationsDe extends AppLocalizations { String get extensionsTitle => 'Erweiterungen'; @override - String get extensionsIntro => 'Mit Erweiterungen können E-Mail-Dienstleister, Firmen und Entwickler:innen Maily mit hilfreichen Funktionen ergänzen.'; + String get extensionsIntro => + 'Mit Erweiterungen können E-Mail-Dienstleister, Firmen und Entwickler:innen Maily mit hilfreichen Funktionen ergänzen.'; @override String get extensionsLearnMoreAction => 'Lerne mehr über Erweiterungen'; @@ -1519,25 +1579,32 @@ class AppLocalizationsDe extends AppLocalizations { String get icalendarLabelParticipants => 'Teilnehmer'; @override - String get icalendarParticipantStatusNeedsAction => 'Du wirst gebeten, diese Einladung zu beantworten.'; + String get icalendarParticipantStatusNeedsAction => + 'Du wirst gebeten, diese Einladung zu beantworten.'; @override - String get icalendarParticipantStatusAccepted => 'Du hast die Einladung akzeptiert.'; + String get icalendarParticipantStatusAccepted => + 'Du hast die Einladung akzeptiert.'; @override - String get icalendarParticipantStatusDeclined => 'Du hast die Einladung abgelehnt.'; + String get icalendarParticipantStatusDeclined => + 'Du hast die Einladung abgelehnt.'; @override - String get icalendarParticipantStatusAcceptedTentatively => 'Du hast die Einladung vorbehaltlich akzeptiert.'; + String get icalendarParticipantStatusAcceptedTentatively => + 'Du hast die Einladung vorbehaltlich akzeptiert.'; @override - String get icalendarParticipantStatusDelegated => 'Du hast die Teilnahme delegiert.'; + String get icalendarParticipantStatusDelegated => + 'Du hast die Teilnahme delegiert.'; @override - String get icalendarParticipantStatusInProcess => 'Die Aufgabe wird bearbeitet.'; + String get icalendarParticipantStatusInProcess => + 'Die Aufgabe wird bearbeitet.'; @override - String get icalendarParticipantStatusPartial => 'Die Aufgabe ist teilweise erledigt.'; + String get icalendarParticipantStatusPartial => + 'Die Aufgabe ist teilweise erledigt.'; @override String get icalendarParticipantStatusCompleted => 'Die Aufgabe ist erledigt.'; @@ -1549,7 +1616,8 @@ class AppLocalizationsDe extends AppLocalizations { String get icalendarParticipantStatusChangeTitle => 'Dein Status'; @override - String get icalendarParticipantStatusChangeText => 'Möchtest Du an diese Einladung annehmen?'; + String get icalendarParticipantStatusChangeText => + 'Möchtest Du an diese Einladung annehmen?'; @override String icalendarParticipantStatusSentFailure(String details) { @@ -1605,7 +1673,8 @@ class AppLocalizationsDe extends AppLocalizations { } @override - String get icalendarReplyWithoutParticipants => 'Diese Antwort enthält keine Teilnehmer:innen.'; + String get icalendarReplyWithoutParticipants => + 'Diese Antwort enthält keine Teilnehmer:innen.'; @override String icalendarReplyWithoutStatus(String attendee) { @@ -1663,13 +1732,13 @@ class AppLocalizationsDe extends AppLocalizations { } @override - String get composeAppointmentRecurrenceUntilOptionSpecificDate => 'Bestimmtes Datum'; + String get composeAppointmentRecurrenceUntilOptionSpecificDate => + 'Bestimmtes Datum'; @override String composeAppointmentRecurrenceMonthlyOnDayOfMonth(int day) { final intl.NumberFormat dayNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String dayString = dayNumberFormat.format(day); @@ -1677,7 +1746,8 @@ class AppLocalizationsDe extends AppLocalizations { } @override - String get composeAppointmentRecurrenceMonthlyOnWeekDay => 'Am Wochentag des Monats'; + String get composeAppointmentRecurrenceMonthlyOnWeekDay => + 'Am Wochentag des Monats'; @override String get composeAppointmentRecurrenceFirst => 'Erster'; @@ -1698,7 +1768,6 @@ class AppLocalizationsDe extends AppLocalizations { String durationYears(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1715,7 +1784,6 @@ class AppLocalizationsDe extends AppLocalizations { String durationMonths(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1732,7 +1800,6 @@ class AppLocalizationsDe extends AppLocalizations { String durationWeeks(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1749,7 +1816,6 @@ class AppLocalizationsDe extends AppLocalizations { String durationDays(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1766,7 +1832,6 @@ class AppLocalizationsDe extends AppLocalizations { String durationHours(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1783,7 +1848,6 @@ class AppLocalizationsDe extends AppLocalizations { String durationMinutes(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); diff --git a/lib/src/localization/app_localizations_en.g.dart b/lib/src/localization/app_localizations_en.g.dart index 039736e..7c56e12 100644 --- a/lib/src/localization/app_localizations_en.g.dart +++ b/lib/src/localization/app_localizations_en.g.dart @@ -1,7 +1,9 @@ +// ignore: unused_import import 'package:intl/intl.dart' as intl; - import 'app_localizations.g.dart'; +// ignore_for_file: type=lint + /// The translations for English (`en`). class AppLocalizationsEn extends AppLocalizations { AppLocalizationsEn([String locale = 'en']) : super(locale); @@ -61,19 +63,22 @@ class AppLocalizationsEn extends AppLocalizations { String get welcomePanel1Title => 'Maily'; @override - String get welcomePanel1Text => 'Welcome to Maily, your friendly and fast email helper!'; + String get welcomePanel1Text => + 'Welcome to Maily, your friendly and fast email helper!'; @override String get welcomePanel2Title => 'Accounts'; @override - String get welcomePanel2Text => 'Manage unlimited email accounts. Read and search for mails in all your accounts at once.'; + String get welcomePanel2Text => + 'Manage unlimited email accounts. Read and search for mails in all your accounts at once.'; @override String get welcomePanel3Title => 'Swipe & Long-Press'; @override - String get welcomePanel3Text => 'Swipe your mails to delete them or to mark them read. Long-press a message to select and manage several messages.'; + String get welcomePanel3Text => + 'Swipe your mails to delete them or to mark them read. Long-press a message to select and manage several messages.'; @override String get welcomePanel4Title => 'Keep your Inbox clean'; @@ -94,7 +99,8 @@ class AppLocalizationsEn extends AppLocalizations { String get homeActionsShowAsList => 'Show as list'; @override - String get homeEmptyFolderMessage => 'All done!\n\nThere are no messages in this folder.'; + String get homeEmptyFolderMessage => + 'All done!\n\nThere are no messages in this folder.'; @override String get homeEmptySearchMessage => 'No messages found.'; @@ -150,7 +156,6 @@ class AppLocalizationsEn extends AppLocalizations { String multipleMovedToJunk(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -167,7 +172,6 @@ class AppLocalizationsEn extends AppLocalizations { String multipleMovedToInbox(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -184,7 +188,6 @@ class AppLocalizationsEn extends AppLocalizations { String multipleMovedToArchive(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -201,7 +204,6 @@ class AppLocalizationsEn extends AppLocalizations { String multipleMovedToTrash(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -226,7 +228,6 @@ class AppLocalizationsEn extends AppLocalizations { String multipleMoveTitle(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -311,7 +312,6 @@ class AppLocalizationsEn extends AppLocalizations { String drawerAccountsSectionTitle(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -503,7 +503,6 @@ class AppLocalizationsEn extends AppLocalizations { String messageActionForwardAttachments(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -582,10 +581,12 @@ class AppLocalizationsEn extends AppLocalizations { String get redirectTitle => 'Redirect'; @override - String get redirectInfo => 'Redirect this message to the following recipient(s). Redirecting does not alter the message.'; + String get redirectInfo => + 'Redirect this message to the following recipient(s). Redirecting does not alter the message.'; @override - String get redirectEmailInputRequired => 'You need to add at least one valid email address.'; + String get redirectEmailInputRequired => + 'You need to add at least one valid email address.'; @override String searchQueryDescription(String folder) { @@ -598,7 +599,8 @@ class AppLocalizationsEn extends AppLocalizations { } @override - String get legaleseUsage => 'By using Maily you agree to our [PP] and to our [TC].'; + String get legaleseUsage => + 'By using Maily you agree to our [PP] and to our [TC].'; @override String get legalesePrivacyPolicy => 'Privacy Policy'; @@ -607,7 +609,8 @@ class AppLocalizationsEn extends AppLocalizations { String get legaleseTermsAndConditions => 'Terms & Conditions'; @override - String get aboutApplicationLegalese => 'Maily is free software published under the GNU General Public License.'; + String get aboutApplicationLegalese => + 'Maily is free software published under the GNU General Public License.'; @override String get feedbackActionSuggestFeature => 'Suggest a feature'; @@ -625,7 +628,8 @@ class AppLocalizationsEn extends AppLocalizations { String get feedbackIntro => 'Thank you for testing Maily!'; @override - String get feedbackProvideInfoRequest => 'Please provide this information when you report a problem:'; + String get feedbackProvideInfoRequest => + 'Please provide this information when you report a problem:'; @override String get feedbackResultInfoCopied => 'Copied to clipboard'; @@ -643,16 +647,20 @@ class AppLocalizationsEn extends AppLocalizations { String get settingsSecurityBlockExternalImages => 'Block external images'; @override - String get settingsSecurityBlockExternalImagesDescriptionTitle => 'External images'; + String get settingsSecurityBlockExternalImagesDescriptionTitle => + 'External images'; @override - String get settingsSecurityBlockExternalImagesDescriptionText => 'Email messages can contain images that are either integrated or hosted on external servers. The latter, external images can expose information to the sender of the message, e.g. to let the sender know that you have opened the message. This option allows you to block such external images, which reduces the risk of exposing sensitive information. You can still opt in to load such images on a per-message-basis when you read a message.'; + String get settingsSecurityBlockExternalImagesDescriptionText => + 'Email messages can contain images that are either integrated or hosted on external servers. The latter, external images can expose information to the sender of the message, e.g. to let the sender know that you have opened the message. This option allows you to block such external images, which reduces the risk of exposing sensitive information. You can still opt in to load such images on a per-message-basis when you read a message.'; @override - String get settingsSecurityMessageRenderingHtml => 'Show full message contents'; + String get settingsSecurityMessageRenderingHtml => + 'Show full message contents'; @override - String get settingsSecurityMessageRenderingPlainText => 'Show only the text of messages'; + String get settingsSecurityMessageRenderingPlainText => + 'Show only the text of messages'; @override String get settingsSecurityLaunchModeLabel => 'How should Maily open links?'; @@ -679,7 +687,8 @@ class AppLocalizationsEn extends AppLocalizations { String get settingsReadReceipts => 'Read receipts'; @override - String get readReceiptsSettingsIntroduction => 'Do you want to display read receipt requests?'; + String get readReceiptsSettingsIntroduction => + 'Do you want to display read receipt requests?'; @override String get readReceiptOptionAlways => 'Always'; @@ -691,7 +700,8 @@ class AppLocalizationsEn extends AppLocalizations { String get settingsFolders => 'Folders'; @override - String get folderNamesIntroduction => 'What names do you prefer for your folders?'; + String get folderNamesIntroduction => + 'What names do you prefer for your folders?'; @override String get folderNamesSettingLocalized => 'Names given by Maily'; @@ -760,7 +770,8 @@ class AppLocalizationsEn extends AppLocalizations { String get developerModeTitle => 'Development mode'; @override - String get developerModeIntroduction => 'If you enable the development mode you will be able to view the source code of messages and convert text attachments to messages.'; + String get developerModeIntroduction => + 'If you enable the development mode you will be able to view the source code of messages and convert text attachments to messages.'; @override String get developerModeEnable => 'Enable development mode'; @@ -769,7 +780,8 @@ class AppLocalizationsEn extends AppLocalizations { String get developerShowAsEmail => 'Convert text to email'; @override - String get developerShowAsEmailFailed => 'This text cannot be converted into a MIME message.'; + String get developerShowAsEmailFailed => + 'This text cannot be converted into a MIME message.'; @override String get designTitle => 'Design Settings'; @@ -809,7 +821,8 @@ class AppLocalizationsEn extends AppLocalizations { String get securitySettingsTitle => 'Security'; @override - String get securitySettingsIntro => 'Adapt the security settings to your personal needs.'; + String get securitySettingsIntro => + 'Adapt the security settings to your personal needs.'; @override String get securityUnlockWithFaceId => 'Unlock Maily with Face ID.'; @@ -824,7 +837,8 @@ class AppLocalizationsEn extends AppLocalizations { String get securityUnlockDisableReason => 'Unlock Maily to turn off lock.'; @override - String get securityUnlockNotAvailable => 'Your device does not support biometrics, possibly you need to set up unlock options first.'; + String get securityUnlockNotAvailable => + 'Your device does not support biometrics, possibly you need to set up unlock options first.'; @override String get securityUnlockLabel => 'Lock Maily'; @@ -833,7 +847,8 @@ class AppLocalizationsEn extends AppLocalizations { String get securityUnlockDescriptionTitle => 'Lock Maily'; @override - String get securityUnlockDescriptionText => 'You can choose to lock access to Maily, so that others cannot read your email even when they have access to your device.'; + String get securityUnlockDescriptionText => + 'You can choose to lock access to Maily, so that others cannot read your email even when they have access to your device.'; @override String get securityLockImmediately => 'Lock immediately'; @@ -848,7 +863,8 @@ class AppLocalizationsEn extends AppLocalizations { String get lockScreenTitle => 'Maily is locked'; @override - String get lockScreenIntro => 'Maily is locked, please authenticate to proceed.'; + String get lockScreenIntro => + 'Maily is locked, please authenticate to proceed.'; @override String get lockScreenUnlockAction => 'Unlock'; @@ -887,13 +903,16 @@ class AppLocalizationsEn extends AppLocalizations { String get addAccountPasswordHint => 'Please enter your password'; @override - String get addAccountApplicationPasswordRequiredInfo => 'This provider requires you to set up an app specific password.'; + String get addAccountApplicationPasswordRequiredInfo => + 'This provider requires you to set up an app specific password.'; @override - String get addAccountApplicationPasswordRequiredButton => 'Create app specific password'; + String get addAccountApplicationPasswordRequiredButton => + 'Create app specific password'; @override - String get addAccountApplicationPasswordRequiredAcknowledged => 'I already have an app password'; + String get addAccountApplicationPasswordRequiredAcknowledged => + 'I already have an app password'; @override String get addAccountVerificationStep => 'Verification'; @@ -930,10 +949,12 @@ class AppLocalizationsEn extends AppLocalizations { String get addAccountOauthSignInGoogle => 'Sign in with Google'; @override - String get addAccountOauthSignInWithAppPassword => 'Alternatively, create an app password to sign in.'; + String get addAccountOauthSignInWithAppPassword => + 'Alternatively, create an app password to sign in.'; @override - String get accountAddImapAccessSetupMightBeRequired => 'Your provider might require you to setup access for email apps manually.'; + String get accountAddImapAccessSetupMightBeRequired => + 'Your provider might require you to setup access for email apps manually.'; @override String get addAccountSetupImapAccessButtonLabel => 'Setup email access'; @@ -948,7 +969,8 @@ class AppLocalizationsEn extends AppLocalizations { String get addAccountNameOfAccountLabel => 'Account name'; @override - String get addAccountNameOfAccountHint => 'Please enter the name of your account'; + String get addAccountNameOfAccountHint => + 'Please enter the name of your account'; @override String editAccountTitle(String name) { @@ -964,13 +986,15 @@ class AppLocalizationsEn extends AppLocalizations { String get editAccountFailureToConnectRetryAction => 'Retry'; @override - String get editAccountFailureToConnectChangePasswordAction => 'Change Password'; + String get editAccountFailureToConnectChangePasswordAction => + 'Change Password'; @override String get editAccountFailureToConnectFixedTitle => 'Connected'; @override - String get editAccountFailureToConnectFixedInfo => 'The account is connected again.'; + String get editAccountFailureToConnectFixedInfo => + 'The account is connected again.'; @override String get editAccountIncludeInUnifiedLabel => 'Include in unified account'; @@ -981,7 +1005,8 @@ class AppLocalizationsEn extends AppLocalizations { } @override - String get editAccountNoAliasesInfo => 'You have no known aliases for this account yet.'; + String get editAccountNoAliasesInfo => + 'You have no known aliases for this account yet.'; @override String editAccountAliasRemoved(String email) { @@ -1004,7 +1029,8 @@ class AppLocalizationsEn extends AppLocalizations { String get editAccountBccMyselfDescriptionTitle => 'BCC myself'; @override - String get editAccountBccMyselfDescriptionText => 'You can automatically send messages to yourself for every message you send from this account with the \"BCC myself\" feature. Usually this is not required and wanted as all outgoing messages are stored in the \"Sent\" folder anyhow.'; + String get editAccountBccMyselfDescriptionText => + 'You can automatically send messages to yourself for every message you send from this account with the \"BCC myself\" feature. Usually this is not required and wanted as all outgoing messages are stored in the \"Sent\" folder anyhow.'; @override String get editAccountServerSettingsAction => 'Edit server settings'; @@ -1029,7 +1055,10 @@ class AppLocalizationsEn extends AppLocalizations { String get editAccountTestPlusAliasStepIntroductionTitle => 'Introduction'; @override - String editAccountTestPlusAliasStepIntroductionText(String accountName, String example) { + String editAccountTestPlusAliasStepIntroductionText( + String accountName, + String example, + ) { return 'Your account $accountName might support so called + aliases like $example.\nA + alias helps you to protect your identity and helps you against spam.\nTo test this, a test message will be sent to this generated address. If it arrives, your provider supports + aliases and you can easily generate them on demand when writing a new mail message.'; } @@ -1097,7 +1126,10 @@ class AppLocalizationsEn extends AppLocalizations { String get accountProviderCustom => 'Other email service'; @override - String accountDetailsErrorHostProblem(String incomingHost, String outgoingHost) { + String accountDetailsErrorHostProblem( + String incomingHost, + String outgoingHost, + ) { return 'Maily cannot reach the specified mail server. Please check your incoming server setting \"$incomingHost\" and your outgoing server setting \"$outgoingHost\".'; } @@ -1110,7 +1142,8 @@ class AppLocalizationsEn extends AppLocalizations { String get accountDetailsUserNameLabel => 'Login name'; @override - String get accountDetailsUserNameHint => 'Your user name, if different from email'; + String get accountDetailsUserNameHint => + 'Your user name, if different from email'; @override String get accountDetailsPasswordLabel => 'Login password'; @@ -1134,7 +1167,8 @@ class AppLocalizationsEn extends AppLocalizations { String get accountDetailsOutgoingHint => 'Domain like smtp.domain.com'; @override - String get accountDetailsAdvancedIncomingSectionTitle => 'Advanced incoming settings'; + String get accountDetailsAdvancedIncomingSectionTitle => + 'Advanced incoming settings'; @override String get accountDetailsIncomingServerTypeLabel => 'Incoming type:'; @@ -1158,16 +1192,19 @@ class AppLocalizationsEn extends AppLocalizations { String get accountDetailsIncomingUserNameLabel => 'Incoming user name'; @override - String get accountDetailsAlternativeUserNameHint => 'Your user name, if different from above'; + String get accountDetailsAlternativeUserNameHint => + 'Your user name, if different from above'; @override String get accountDetailsIncomingPasswordLabel => 'Incoming password'; @override - String get accountDetailsAlternativePasswordHint => 'Your password, if different from above'; + String get accountDetailsAlternativePasswordHint => + 'Your password, if different from above'; @override - String get accountDetailsAdvancedOutgoingSectionTitle => 'Advanced outgoing settings'; + String get accountDetailsAdvancedOutgoingSectionTitle => + 'Advanced outgoing settings'; @override String get accountDetailsOutgoingServerTypeLabel => 'Outgoing type:'; @@ -1197,7 +1234,8 @@ class AppLocalizationsEn extends AppLocalizations { String get composeEmptyMessage => 'empty message'; @override - String get composeWarningNoSubject => 'You have not specified a subject. Do you want to sent the message without a subject?'; + String get composeWarningNoSubject => + 'You have not specified a subject. Do you want to sent the message without a subject?'; @override String get composeActionSentWithoutSubject => 'Send'; @@ -1228,7 +1266,8 @@ class AppLocalizationsEn extends AppLocalizations { String get composeConvertToPlainTextEditorAction => 'Convert to plain text'; @override - String get composeConvertToHtmlEditorAction => 'Convert to rich message (HTML)'; + String get composeConvertToHtmlEditorAction => + 'Convert to rich message (HTML)'; @override String get composeContinueEditingAction => 'Continue editing'; @@ -1302,13 +1341,15 @@ class AppLocalizationsEn extends AppLocalizations { String get languageSettingConfirmationTitle => 'Use English for Maily?'; @override - String get languageSettingConfirmationQuery => 'Please confirm to use English as your chosen language.'; + String get languageSettingConfirmationQuery => + 'Please confirm to use English as your chosen language.'; @override String get languageSetInfo => 'Maily is now shown in English.'; @override - String get languageSystemSetInfo => 'Maily will now use the system\'s language or English if the system\'s language is not supported.'; + String get languageSystemSetInfo => + 'Maily will now use the system\'s language or English if the system\'s language is not supported.'; @override String get swipeSettingTitle => 'Swipe gestures'; @@ -1326,10 +1367,12 @@ class AppLocalizationsEn extends AppLocalizations { String get signatureSettingsTitle => 'Signature'; @override - String get signatureSettingsComposeActionsInfo => 'Enable the signature for the following messages:'; + String get signatureSettingsComposeActionsInfo => + 'Enable the signature for the following messages:'; @override - String get signatureSettingsAccountInfo => 'You can specify account specific signatures in the account settings.'; + String get signatureSettingsAccountInfo => + 'You can specify account specific signatures in the account settings.'; @override String signatureSettingsAddForAccount(String account) { @@ -1340,7 +1383,8 @@ class AppLocalizationsEn extends AppLocalizations { String get defaultSenderSettingsTitle => 'Default sender'; @override - String get defaultSenderSettingsLabel => 'Select the sender for new messages.'; + String get defaultSenderSettingsLabel => + 'Select the sender for new messages.'; @override String defaultSenderSettingsFirstAccount(String email) { @@ -1348,7 +1392,8 @@ class AppLocalizationsEn extends AppLocalizations { } @override - String get defaultSenderSettingsAliasInfo => 'You can set up email alias addresses in the [AS].'; + String get defaultSenderSettingsAliasInfo => + 'You can set up email alias addresses in the [AS].'; @override String get defaultSenderSettingsAliasAccountSettings => 'account settings'; @@ -1357,13 +1402,15 @@ class AppLocalizationsEn extends AppLocalizations { String get replySettingsTitle => 'Message format'; @override - String get replySettingsIntro => 'In what format do you want to answer or forward email by default?'; + String get replySettingsIntro => + 'In what format do you want to answer or forward email by default?'; @override String get replySettingsFormatHtml => 'Always rich format (HTML)'; @override - String get replySettingsFormatSameAsOriginal => 'Use same format as originating email'; + String get replySettingsFormatSameAsOriginal => + 'Use same format as originating email'; @override String get replySettingsFormatPlainText => 'Always text-only'; @@ -1460,7 +1507,8 @@ class AppLocalizationsEn extends AppLocalizations { String get extensionsTitle => 'Extensions'; @override - String get extensionsIntro => 'With extensions e-mail service providers, companies and developers can adapt Maily with useful functionalities.'; + String get extensionsIntro => + 'With extensions e-mail service providers, companies and developers can adapt Maily with useful functionalities.'; @override String get extensionsLearnMoreAction => 'Learn more about extensions'; @@ -1519,19 +1567,24 @@ class AppLocalizationsEn extends AppLocalizations { String get icalendarLabelParticipants => 'Participants'; @override - String get icalendarParticipantStatusNeedsAction => 'You are asked to answer this invitation.'; + String get icalendarParticipantStatusNeedsAction => + 'You are asked to answer this invitation.'; @override - String get icalendarParticipantStatusAccepted => 'You have accepted this invitation.'; + String get icalendarParticipantStatusAccepted => + 'You have accepted this invitation.'; @override - String get icalendarParticipantStatusDeclined => 'You have declined this invitation.'; + String get icalendarParticipantStatusDeclined => + 'You have declined this invitation.'; @override - String get icalendarParticipantStatusAcceptedTentatively => 'You have tentatively accepted this invitation.'; + String get icalendarParticipantStatusAcceptedTentatively => + 'You have tentatively accepted this invitation.'; @override - String get icalendarParticipantStatusDelegated => 'You have delegated this invitation.'; + String get icalendarParticipantStatusDelegated => + 'You have delegated this invitation.'; @override String get icalendarParticipantStatusInProcess => 'The task is in progress.'; @@ -1549,7 +1602,8 @@ class AppLocalizationsEn extends AppLocalizations { String get icalendarParticipantStatusChangeTitle => 'Your Status'; @override - String get icalendarParticipantStatusChangeText => 'Do you want to accept this invitation?'; + String get icalendarParticipantStatusChangeText => + 'Do you want to accept this invitation?'; @override String icalendarParticipantStatusSentFailure(String details) { @@ -1605,7 +1659,8 @@ class AppLocalizationsEn extends AppLocalizations { } @override - String get icalendarReplyWithoutParticipants => 'This calendar reply contains no participants.'; + String get icalendarReplyWithoutParticipants => + 'This calendar reply contains no participants.'; @override String icalendarReplyWithoutStatus(String attendee) { @@ -1663,13 +1718,13 @@ class AppLocalizationsEn extends AppLocalizations { } @override - String get composeAppointmentRecurrenceUntilOptionSpecificDate => 'Until chosen date'; + String get composeAppointmentRecurrenceUntilOptionSpecificDate => + 'Until chosen date'; @override String composeAppointmentRecurrenceMonthlyOnDayOfMonth(int day) { final intl.NumberFormat dayNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String dayString = dayNumberFormat.format(day); @@ -1698,7 +1753,6 @@ class AppLocalizationsEn extends AppLocalizations { String durationYears(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1715,7 +1769,6 @@ class AppLocalizationsEn extends AppLocalizations { String durationMonths(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1732,7 +1785,6 @@ class AppLocalizationsEn extends AppLocalizations { String durationWeeks(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1749,7 +1801,6 @@ class AppLocalizationsEn extends AppLocalizations { String durationDays(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1766,7 +1817,6 @@ class AppLocalizationsEn extends AppLocalizations { String durationHours(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1783,7 +1833,6 @@ class AppLocalizationsEn extends AppLocalizations { String durationMinutes(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); diff --git a/lib/src/localization/app_localizations_es.g.dart b/lib/src/localization/app_localizations_es.g.dart index 03542dc..ea26c92 100644 --- a/lib/src/localization/app_localizations_es.g.dart +++ b/lib/src/localization/app_localizations_es.g.dart @@ -1,7 +1,9 @@ +// ignore: unused_import import 'package:intl/intl.dart' as intl; - import 'app_localizations.g.dart'; +// ignore_for_file: type=lint + /// The translations for Spanish Castilian (`es`). class AppLocalizationsEs extends AppLocalizations { AppLocalizationsEs([String locale = 'es']) : super(locale); @@ -61,25 +63,29 @@ class AppLocalizationsEs extends AppLocalizations { String get welcomePanel1Title => 'Maily'; @override - String get welcomePanel1Text => 'Bienvenido a Maily, tu ayudante de correo electrónico rápido y amistoso!'; + String get welcomePanel1Text => + 'Bienvenido a Maily, tu ayudante de correo electrónico rápido y amistoso!'; @override String get welcomePanel2Title => 'Cuentas'; @override - String get welcomePanel2Text => 'Administra cuentas de correo electrónico ilimitadas. Lee y busca correos en todas tus cuentas a la vez.'; + String get welcomePanel2Text => + 'Administra cuentas de correo electrónico ilimitadas. Lee y busca correos en todas tus cuentas a la vez.'; @override String get welcomePanel3Title => 'Deslizar y pulsar largo'; @override - String get welcomePanel3Text => 'Desliza el dedo por tus mensajes para borrarlos o marcarlos como leídos. Mantén pulsado un mensaje para seleccionarlo y gestionar varios.'; + String get welcomePanel3Text => + 'Desliza el dedo por tus mensajes para borrarlos o marcarlos como leídos. Mantén pulsado un mensaje para seleccionarlo y gestionar varios.'; @override String get welcomePanel4Title => 'Mantén tu bandeja de entrada limpia'; @override - String get welcomePanel4Text => 'Darse de baja de los boletines con un solo toque.'; + String get welcomePanel4Text => + 'Darse de baja de los boletines con un solo toque.'; @override String get welcomeActionSignIn => 'Inicia sesión en tu cuenta de correo'; @@ -94,7 +100,8 @@ class AppLocalizationsEs extends AppLocalizations { String get homeActionsShowAsList => 'Mostrar como lista'; @override - String get homeEmptyFolderMessage => '¡Todo listo!\n\nNo hay mensajes en esta carpeta.'; + String get homeEmptyFolderMessage => + '¡Todo listo!\n\nNo hay mensajes en esta carpeta.'; @override String get homeEmptySearchMessage => 'No se encontraron mensajes.'; @@ -150,7 +157,6 @@ class AppLocalizationsEs extends AppLocalizations { String multipleMovedToJunk(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -167,14 +173,14 @@ class AppLocalizationsEs extends AppLocalizations { String multipleMovedToInbox(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); String _temp0 = intl.Intl.pluralLogic( number, locale: localeName, - other: '¡Se ha movido $numberString ¡Los mensajes a la bandeja de entrada', + other: + '¡Se ha movido $numberString ¡Los mensajes a la bandeja de entrada', one: '¡Se ha movido un mensaje a la bandeja de entrada', ); return '$_temp0'; @@ -184,7 +190,6 @@ class AppLocalizationsEs extends AppLocalizations { String multipleMovedToArchive(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -201,7 +206,6 @@ class AppLocalizationsEs extends AppLocalizations { String multipleMovedToTrash(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -215,7 +219,8 @@ class AppLocalizationsEs extends AppLocalizations { } @override - String get multipleSelectionNeededInfo => 'Por favor, seleccione mensajes primero.'; + String get multipleSelectionNeededInfo => + 'Por favor, seleccione mensajes primero.'; @override String multipleSelectionActionFailed(String details) { @@ -226,7 +231,6 @@ class AppLocalizationsEs extends AppLocalizations { String multipleMoveTitle(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -311,7 +315,6 @@ class AppLocalizationsEs extends AppLocalizations { String drawerAccountsSectionTitle(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -497,13 +500,13 @@ class AppLocalizationsEs extends AppLocalizations { String get messageActionForward => 'Reenviar'; @override - String get messageActionForwardAsAttachment => 'Reenviar como archivo adjunto'; + String get messageActionForwardAsAttachment => + 'Reenviar como archivo adjunto'; @override String messageActionForwardAttachments(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -582,10 +585,12 @@ class AppLocalizationsEs extends AppLocalizations { String get redirectTitle => 'Redireccionar'; @override - String get redirectInfo => 'Redirigir este mensaje a los siguientes destinatarios. Redirigir no altera el mensaje.'; + String get redirectInfo => + 'Redirigir este mensaje a los siguientes destinatarios. Redirigir no altera el mensaje.'; @override - String get redirectEmailInputRequired => 'Necesitas añadir al menos una dirección de correo electrónico válida.'; + String get redirectEmailInputRequired => + 'Necesitas añadir al menos una dirección de correo electrónico válida.'; @override String searchQueryDescription(String folder) { @@ -598,7 +603,8 @@ class AppLocalizationsEs extends AppLocalizations { } @override - String get legaleseUsage => 'Al utilizar Maily aceptas nuestras [PP] y nuestras [TC].'; + String get legaleseUsage => + 'Al utilizar Maily aceptas nuestras [PP] y nuestras [TC].'; @override String get legalesePrivacyPolicy => 'Política de Privacidad'; @@ -607,7 +613,8 @@ class AppLocalizationsEs extends AppLocalizations { String get legaleseTermsAndConditions => 'Términos y Condiciones'; @override - String get aboutApplicationLegalese => 'Maily es un software libre publicado bajo la Licencia Pública General GNU.'; + String get aboutApplicationLegalese => + 'Maily es un software libre publicado bajo la Licencia Pública General GNU.'; @override String get feedbackActionSuggestFeature => 'Sugerir una característica'; @@ -625,7 +632,8 @@ class AppLocalizationsEs extends AppLocalizations { String get feedbackIntro => '¡Gracias por probar Maily!'; @override - String get feedbackProvideInfoRequest => 'Por favor, proporcione esta información cuando reporte un problema:'; + String get feedbackProvideInfoRequest => + 'Por favor, proporcione esta información cuando reporte un problema:'; @override String get feedbackResultInfoCopied => 'Copiado al portapapeles'; @@ -640,22 +648,28 @@ class AppLocalizationsEs extends AppLocalizations { String get settingsTitle => 'Ajustes'; @override - String get settingsSecurityBlockExternalImages => 'Bloquear imágenes externas'; + String get settingsSecurityBlockExternalImages => + 'Bloquear imágenes externas'; @override - String get settingsSecurityBlockExternalImagesDescriptionTitle => 'Imágenes externas'; + String get settingsSecurityBlockExternalImagesDescriptionTitle => + 'Imágenes externas'; @override - String get settingsSecurityBlockExternalImagesDescriptionText => 'Los mensajes de correo electrónico pueden contener imágenes que están integradas o alojadas en servidores externos. Este último, imágenes externas pueden exponer información al remitente del mensaje, por ejemplo, para que el remitente sepa que ha abierto el mensaje. Esta opción le permite bloquear dichas imágenes externas, lo que reduce el riesgo de exponer información confidencial. Todavía puede optar por cargar dichas imágenes por mensaje cuando lea un mensaje.'; + String get settingsSecurityBlockExternalImagesDescriptionText => + 'Los mensajes de correo electrónico pueden contener imágenes que están integradas o alojadas en servidores externos. Este último, imágenes externas pueden exponer información al remitente del mensaje, por ejemplo, para que el remitente sepa que ha abierto el mensaje. Esta opción le permite bloquear dichas imágenes externas, lo que reduce el riesgo de exponer información confidencial. Todavía puede optar por cargar dichas imágenes por mensaje cuando lea un mensaje.'; @override - String get settingsSecurityMessageRenderingHtml => 'Mostrar contenido completo del mensaje'; + String get settingsSecurityMessageRenderingHtml => + 'Mostrar contenido completo del mensaje'; @override - String get settingsSecurityMessageRenderingPlainText => 'Mostrar sólo el texto de los mensajes'; + String get settingsSecurityMessageRenderingPlainText => + 'Mostrar sólo el texto de los mensajes'; @override - String get settingsSecurityLaunchModeLabel => '¿Cómo debe abrir enlaces Maily?'; + String get settingsSecurityLaunchModeLabel => + '¿Cómo debe abrir enlaces Maily?'; @override String get settingsSecurityLaunchModeExternal => 'Abrir enlaces externamente'; @@ -679,7 +693,8 @@ class AppLocalizationsEs extends AppLocalizations { String get settingsReadReceipts => 'Leer recibos'; @override - String get readReceiptsSettingsIntroduction => '¿Quieres mostrar las solicitudes de recibos de lectura?'; + String get readReceiptsSettingsIntroduction => + '¿Quieres mostrar las solicitudes de recibos de lectura?'; @override String get readReceiptOptionAlways => 'Siempre'; @@ -691,7 +706,8 @@ class AppLocalizationsEs extends AppLocalizations { String get settingsFolders => 'Carpetas'; @override - String get folderNamesIntroduction => '¿Qué nombres prefiere para sus carpetas?'; + String get folderNamesIntroduction => + '¿Qué nombres prefiere para sus carpetas?'; @override String get folderNamesSettingLocalized => 'Nombres dados por Maily'; @@ -760,7 +776,8 @@ class AppLocalizationsEs extends AppLocalizations { String get developerModeTitle => 'Modo de desarrollo'; @override - String get developerModeIntroduction => 'Si activas el modo de desarrollo podrás ver el código fuente de los mensajes y convertir los archivos adjuntos de texto a mensajes.'; + String get developerModeIntroduction => + 'Si activas el modo de desarrollo podrás ver el código fuente de los mensajes y convertir los archivos adjuntos de texto a mensajes.'; @override String get developerModeEnable => 'Activar modo de desarrollo'; @@ -769,7 +786,8 @@ class AppLocalizationsEs extends AppLocalizations { String get developerShowAsEmail => 'Convertir texto a email'; @override - String get developerShowAsEmailFailed => 'Este texto no se puede convertir en un mensaje MIME.'; + String get developerShowAsEmailFailed => + 'Este texto no se puede convertir en un mensaje MIME.'; @override String get designTitle => 'Ajustes de diseño'; @@ -809,7 +827,8 @@ class AppLocalizationsEs extends AppLocalizations { String get securitySettingsTitle => 'Seguridad'; @override - String get securitySettingsIntro => 'Adapte la configuración de seguridad a sus necesidades personales.'; + String get securitySettingsIntro => + 'Adapte la configuración de seguridad a sus necesidades personales.'; @override String get securityUnlockWithFaceId => 'Desbloquea Maily con Face ID.'; @@ -821,10 +840,12 @@ class AppLocalizationsEs extends AppLocalizations { String get securityUnlockReason => 'Desbloquea Maily.'; @override - String get securityUnlockDisableReason => 'Desbloquear Maily para desactivar el bloqueo.'; + String get securityUnlockDisableReason => + 'Desbloquear Maily para desactivar el bloqueo.'; @override - String get securityUnlockNotAvailable => 'Su dispositivo no soporta biométricos, posiblemente necesite configurar las opciones de desbloqueo primero.'; + String get securityUnlockNotAvailable => + 'Su dispositivo no soporta biométricos, posiblemente necesite configurar las opciones de desbloqueo primero.'; @override String get securityUnlockLabel => 'Bloquear Maily'; @@ -833,7 +854,8 @@ class AppLocalizationsEs extends AppLocalizations { String get securityUnlockDescriptionTitle => 'Bloquear Maily'; @override - String get securityUnlockDescriptionText => 'Puedes elegir bloquear el acceso a Maily, para que otros no puedan leer tu correo electrónico incluso cuando tengan acceso a tu dispositivo.'; + String get securityUnlockDescriptionText => + 'Puedes elegir bloquear el acceso a Maily, para que otros no puedan leer tu correo electrónico incluso cuando tengan acceso a tu dispositivo.'; @override String get securityLockImmediately => 'Bloquear inmediatamente'; @@ -848,7 +870,8 @@ class AppLocalizationsEs extends AppLocalizations { String get lockScreenTitle => 'Maily está bloqueado'; @override - String get lockScreenIntro => 'Maily está bloqueado, por favor autentifíquese para continuar.'; + String get lockScreenIntro => + 'Maily está bloqueado, por favor autentifíquese para continuar.'; @override String get lockScreenUnlockAction => 'Desbloquear'; @@ -860,7 +883,8 @@ class AppLocalizationsEs extends AppLocalizations { String get addAccountEmailLabel => 'E-mail'; @override - String get addAccountEmailHint => 'Introduzca su dirección de correo electrónico'; + String get addAccountEmailHint => + 'Introduzca su dirección de correo electrónico'; @override String addAccountResolvingSettingsLabel(String email) { @@ -887,13 +911,16 @@ class AppLocalizationsEs extends AppLocalizations { String get addAccountPasswordHint => 'Por favor, introduce tu contraseña'; @override - String get addAccountApplicationPasswordRequiredInfo => 'Este proveedor requiere que establezcas una contraseña específica para la aplicación.'; + String get addAccountApplicationPasswordRequiredInfo => + 'Este proveedor requiere que establezcas una contraseña específica para la aplicación.'; @override - String get addAccountApplicationPasswordRequiredButton => 'Crear contraseña específica de la aplicación'; + String get addAccountApplicationPasswordRequiredButton => + 'Crear contraseña específica de la aplicación'; @override - String get addAccountApplicationPasswordRequiredAcknowledged => 'Ya tengo una contraseña de la aplicación'; + String get addAccountApplicationPasswordRequiredAcknowledged => + 'Ya tengo una contraseña de la aplicación'; @override String get addAccountVerificationStep => 'Verificación'; @@ -930,13 +957,16 @@ class AppLocalizationsEs extends AppLocalizations { String get addAccountOauthSignInGoogle => 'Iniciar sesión con Google'; @override - String get addAccountOauthSignInWithAppPassword => 'Alternativamente, cree una contraseña de la aplicación para iniciar sesión.'; + String get addAccountOauthSignInWithAppPassword => + 'Alternativamente, cree una contraseña de la aplicación para iniciar sesión.'; @override - String get accountAddImapAccessSetupMightBeRequired => 'Su proveedor puede requerir que configure el acceso para aplicaciones de correo electrónico manualmente.'; + String get accountAddImapAccessSetupMightBeRequired => + 'Su proveedor puede requerir que configure el acceso para aplicaciones de correo electrónico manualmente.'; @override - String get addAccountSetupImapAccessButtonLabel => 'Configurar acceso a email'; + String get addAccountSetupImapAccessButtonLabel => + 'Configurar acceso a email'; @override String get addAccountNameOfUserLabel => 'Tu nombre'; @@ -964,13 +994,15 @@ class AppLocalizationsEs extends AppLocalizations { String get editAccountFailureToConnectRetryAction => 'Reintentar'; @override - String get editAccountFailureToConnectChangePasswordAction => 'Cambiar contraseña'; + String get editAccountFailureToConnectChangePasswordAction => + 'Cambiar contraseña'; @override String get editAccountFailureToConnectFixedTitle => 'Conectado'; @override - String get editAccountFailureToConnectFixedInfo => 'La cuenta está conectada de nuevo.'; + String get editAccountFailureToConnectFixedInfo => + 'La cuenta está conectada de nuevo.'; @override String get editAccountIncludeInUnifiedLabel => 'Incluye en cuenta unificada'; @@ -981,7 +1013,8 @@ class AppLocalizationsEs extends AppLocalizations { } @override - String get editAccountNoAliasesInfo => 'Aún no tienes alias conocidos para esta cuenta.'; + String get editAccountNoAliasesInfo => + 'Aún no tienes alias conocidos para esta cuenta.'; @override String editAccountAliasRemoved(String email) { @@ -995,7 +1028,8 @@ class AppLocalizationsEs extends AppLocalizations { String get editAccountPlusAliasesSupported => 'Soporta + alias'; @override - String get editAccountCheckPlusAliasAction => 'Prueba de soporte para + alias'; + String get editAccountCheckPlusAliasAction => + 'Prueba de soporte para + alias'; @override String get editAccountBccMyself => 'BCC mismo'; @@ -1004,10 +1038,12 @@ class AppLocalizationsEs extends AppLocalizations { String get editAccountBccMyselfDescriptionTitle => 'BCC mismo'; @override - String get editAccountBccMyselfDescriptionText => 'Puedes enviar automáticamente mensajes a ti mismo para cada mensaje que envíes desde esta cuenta con la función \"BCC yo\". Normalmente esto no es necesario y deseado, ya que todos los mensajes salientes se almacenan en la carpeta \"Enviado\" de todos modos.'; + String get editAccountBccMyselfDescriptionText => + 'Puedes enviar automáticamente mensajes a ti mismo para cada mensaje que envíes desde esta cuenta con la función \"BCC yo\". Normalmente esto no es necesario y deseado, ya que todos los mensajes salientes se almacenan en la carpeta \"Enviado\" de todos modos.'; @override - String get editAccountServerSettingsAction => 'Editar configuración del servidor'; + String get editAccountServerSettingsAction => + 'Editar configuración del servidor'; @override String get editAccountDeleteAccountAction => 'Eliminar cuenta'; @@ -1029,7 +1065,10 @@ class AppLocalizationsEs extends AppLocalizations { String get editAccountTestPlusAliasStepIntroductionTitle => 'Introducción'; @override - String editAccountTestPlusAliasStepIntroductionText(String accountName, String example) { + String editAccountTestPlusAliasStepIntroductionText( + String accountName, + String example, + ) { return 'Tu cuenta $accountName podría ser compatible con los alias + llamados como $example.\nUn alias A + te ayuda a proteger tu identidad y te ayuda contra el spam.\nPara probarlo, se enviará un mensaje de prueba a esta dirección generada. Si llega, su proveedor soporta + alias y puede generarlos fácilmente a petición al escribir un nuevo mensaje de correo.'; } @@ -1079,10 +1118,12 @@ class AppLocalizationsEs extends AppLocalizations { String get editAccountEnableLogging => 'Activar registro'; @override - String get editAccountLoggingEnabled => 'Registro habilitado, por favor reinicie'; + String get editAccountLoggingEnabled => + 'Registro habilitado, por favor reinicie'; @override - String get editAccountLoggingDisabled => 'Registro desactivado, por favor reinicie'; + String get editAccountLoggingDisabled => + 'Registro desactivado, por favor reinicie'; @override String get accountDetailsFallbackTitle => 'Ajustes del servidor'; @@ -1097,7 +1138,10 @@ class AppLocalizationsEs extends AppLocalizations { String get accountProviderCustom => 'Otro servicio de email'; @override - String accountDetailsErrorHostProblem(String incomingHost, String outgoingHost) { + String accountDetailsErrorHostProblem( + String incomingHost, + String outgoingHost, + ) { return 'Maily no puede llegar al servidor de correo especificado. Por favor, compruebe la configuración del servidor de entrada \"$incomingHost\" y la configuración del servidor de salida \"$outgoingHost\".'; } @@ -1110,7 +1154,8 @@ class AppLocalizationsEs extends AppLocalizations { String get accountDetailsUserNameLabel => 'Nombre de usuario'; @override - String get accountDetailsUserNameHint => 'Su nombre de usuario, si es diferente del correo electrónico'; + String get accountDetailsUserNameHint => + 'Su nombre de usuario, si es diferente del correo electrónico'; @override String get accountDetailsPasswordLabel => 'Contraseña de acceso'; @@ -1134,7 +1179,8 @@ class AppLocalizationsEs extends AppLocalizations { String get accountDetailsOutgoingHint => 'Dominio como smtp.domain.com'; @override - String get accountDetailsAdvancedIncomingSectionTitle => 'Configuración avanzada de entrada'; + String get accountDetailsAdvancedIncomingSectionTitle => + 'Configuración avanzada de entrada'; @override String get accountDetailsIncomingServerTypeLabel => 'Tipo de entrada:'; @@ -1152,22 +1198,27 @@ class AppLocalizationsEs extends AppLocalizations { String get accountDetailsIncomingPortLabel => 'Puerto entrante'; @override - String get accountDetailsPortHint => 'Dejar en blanco para determinar automáticamente'; + String get accountDetailsPortHint => + 'Dejar en blanco para determinar automáticamente'; @override - String get accountDetailsIncomingUserNameLabel => 'Nombre de usuario entrante'; + String get accountDetailsIncomingUserNameLabel => + 'Nombre de usuario entrante'; @override - String get accountDetailsAlternativeUserNameHint => 'Tu nombre de usuario, si es diferente de arriba'; + String get accountDetailsAlternativeUserNameHint => + 'Tu nombre de usuario, si es diferente de arriba'; @override String get accountDetailsIncomingPasswordLabel => 'Contraseña entrante'; @override - String get accountDetailsAlternativePasswordHint => 'Su contraseña, si es diferente de la anterior'; + String get accountDetailsAlternativePasswordHint => + 'Su contraseña, si es diferente de la anterior'; @override - String get accountDetailsAdvancedOutgoingSectionTitle => 'Ajustes avanzados de salida'; + String get accountDetailsAdvancedOutgoingSectionTitle => + 'Ajustes avanzados de salida'; @override String get accountDetailsOutgoingServerTypeLabel => 'Tipo saliente:'; @@ -1179,7 +1230,8 @@ class AppLocalizationsEs extends AppLocalizations { String get accountDetailsOutgoingPortLabel => 'Puerto saliente'; @override - String get accountDetailsOutgoingUserNameLabel => 'Nombre de usuario saliente'; + String get accountDetailsOutgoingUserNameLabel => + 'Nombre de usuario saliente'; @override String get accountDetailsOutgoingPasswordLabel => 'Contraseña saliente'; @@ -1197,7 +1249,8 @@ class AppLocalizationsEs extends AppLocalizations { String get composeEmptyMessage => 'mensaje vacío'; @override - String get composeWarningNoSubject => 'No ha especificado un asunto. ¿Desea enviar el mensaje sin un asunto?'; + String get composeWarningNoSubject => + 'No ha especificado un asunto. ¿Desea enviar el mensaje sin un asunto?'; @override String get composeActionSentWithoutSubject => 'Enviar'; @@ -1228,7 +1281,8 @@ class AppLocalizationsEs extends AppLocalizations { String get composeConvertToPlainTextEditorAction => 'Convertir a texto plano'; @override - String get composeConvertToHtmlEditorAction => 'Convertir a mensaje enriquecido (HTML)'; + String get composeConvertToHtmlEditorAction => + 'Convertir a mensaje enriquecido (HTML)'; @override String get composeContinueEditingAction => 'Continuar editando'; @@ -1302,13 +1356,16 @@ class AppLocalizationsEs extends AppLocalizations { String get languageSettingConfirmationTitle => '¿Usar Inglés para Maily?'; @override - String get languageSettingConfirmationQuery => 'Por favor confirme el uso del inglés como idioma elegido.'; + String get languageSettingConfirmationQuery => + 'Por favor confirme el uso del inglés como idioma elegido.'; @override - String get languageSetInfo => 'Ahora se muestra en inglés. Por favor, reinicia la aplicación para que surta efecto.'; + String get languageSetInfo => + 'Ahora se muestra en inglés. Por favor, reinicia la aplicación para que surta efecto.'; @override - String get languageSystemSetInfo => 'Maily ahora utilizará el idioma del sistema o Inglés si el idioma del sistema no es compatible.'; + String get languageSystemSetInfo => + 'Maily ahora utilizará el idioma del sistema o Inglés si el idioma del sistema no es compatible.'; @override String get swipeSettingTitle => 'Deslizar gestos'; @@ -1326,10 +1383,12 @@ class AppLocalizationsEs extends AppLocalizations { String get signatureSettingsTitle => 'Firma'; @override - String get signatureSettingsComposeActionsInfo => 'Activar la firma para los siguientes mensajes:'; + String get signatureSettingsComposeActionsInfo => + 'Activar la firma para los siguientes mensajes:'; @override - String get signatureSettingsAccountInfo => 'Puede especificar firmas específicas de la cuenta en la configuración de la cuenta.'; + String get signatureSettingsAccountInfo => + 'Puede especificar firmas específicas de la cuenta en la configuración de la cuenta.'; @override String signatureSettingsAddForAccount(String account) { @@ -1340,7 +1399,8 @@ class AppLocalizationsEs extends AppLocalizations { String get defaultSenderSettingsTitle => 'Remitente por defecto'; @override - String get defaultSenderSettingsLabel => 'Seleccione el remitente para nuevos mensajes.'; + String get defaultSenderSettingsLabel => + 'Seleccione el remitente para nuevos mensajes.'; @override String defaultSenderSettingsFirstAccount(String email) { @@ -1348,22 +1408,26 @@ class AppLocalizationsEs extends AppLocalizations { } @override - String get defaultSenderSettingsAliasInfo => 'Puede configurar direcciones de alias de correo electrónico en la [AS].'; + String get defaultSenderSettingsAliasInfo => + 'Puede configurar direcciones de alias de correo electrónico en la [AS].'; @override - String get defaultSenderSettingsAliasAccountSettings => 'configuración de cuenta'; + String get defaultSenderSettingsAliasAccountSettings => + 'configuración de cuenta'; @override String get replySettingsTitle => 'Formato de mensaje'; @override - String get replySettingsIntro => '¿En qué formato desea responder o reenviar el correo electrónico por defecto?'; + String get replySettingsIntro => + '¿En qué formato desea responder o reenviar el correo electrónico por defecto?'; @override String get replySettingsFormatHtml => 'Formato siempre rico (HTML)'; @override - String get replySettingsFormatSameAsOriginal => 'Usar el mismo formato que el correo original'; + String get replySettingsFormatSameAsOriginal => + 'Usar el mismo formato que el correo original'; @override String get replySettingsFormatPlainText => 'Siempre sólo texto'; @@ -1460,7 +1524,8 @@ class AppLocalizationsEs extends AppLocalizations { String get extensionsTitle => 'Extensiones'; @override - String get extensionsIntro => 'Con los proveedores de servicios de correo electrónico de extensiones, las empresas y los desarrolladores pueden adaptarse a las funcionalidades más útiles.'; + String get extensionsIntro => + 'Con los proveedores de servicios de correo electrónico de extensiones, las empresas y los desarrolladores pueden adaptarse a las funcionalidades más útiles.'; @override String get extensionsLearnMoreAction => 'Más información sobre extensiones'; @@ -1519,25 +1584,31 @@ class AppLocalizationsEs extends AppLocalizations { String get icalendarLabelParticipants => 'Participantes'; @override - String get icalendarParticipantStatusNeedsAction => 'Se le pide que responda a esta invitación.'; + String get icalendarParticipantStatusNeedsAction => + 'Se le pide que responda a esta invitación.'; @override - String get icalendarParticipantStatusAccepted => 'Has aceptado esta invitación.'; + String get icalendarParticipantStatusAccepted => + 'Has aceptado esta invitación.'; @override - String get icalendarParticipantStatusDeclined => 'Has rechazado esta invitación.'; + String get icalendarParticipantStatusDeclined => + 'Has rechazado esta invitación.'; @override - String get icalendarParticipantStatusAcceptedTentatively => 'Has aceptado esta invitación de forma tentativa.'; + String get icalendarParticipantStatusAcceptedTentatively => + 'Has aceptado esta invitación de forma tentativa.'; @override - String get icalendarParticipantStatusDelegated => 'Usted ha delegado esta invitación.'; + String get icalendarParticipantStatusDelegated => + 'Usted ha delegado esta invitación.'; @override String get icalendarParticipantStatusInProcess => 'La tarea está en curso.'; @override - String get icalendarParticipantStatusPartial => 'La tarea está parcialmente hecha.'; + String get icalendarParticipantStatusPartial => + 'La tarea está parcialmente hecha.'; @override String get icalendarParticipantStatusCompleted => 'La tarea está hecha.'; @@ -1549,7 +1620,8 @@ class AppLocalizationsEs extends AppLocalizations { String get icalendarParticipantStatusChangeTitle => 'Tu estado'; @override - String get icalendarParticipantStatusChangeText => '¿Quieres aceptar esta invitación?'; + String get icalendarParticipantStatusChangeText => + '¿Quieres aceptar esta invitación?'; @override String icalendarParticipantStatusSentFailure(String details) { @@ -1605,7 +1677,8 @@ class AppLocalizationsEs extends AppLocalizations { } @override - String get icalendarReplyWithoutParticipants => 'Esta respuesta de calendario no contiene participantes.'; + String get icalendarReplyWithoutParticipants => + 'Esta respuesta de calendario no contiene participantes.'; @override String icalendarReplyWithoutStatus(String attendee) { @@ -1663,13 +1736,13 @@ class AppLocalizationsEs extends AppLocalizations { } @override - String get composeAppointmentRecurrenceUntilOptionSpecificDate => 'Hasta la fecha elegida'; + String get composeAppointmentRecurrenceUntilOptionSpecificDate => + 'Hasta la fecha elegida'; @override String composeAppointmentRecurrenceMonthlyOnDayOfMonth(int day) { final intl.NumberFormat dayNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String dayString = dayNumberFormat.format(day); @@ -1677,7 +1750,8 @@ class AppLocalizationsEs extends AppLocalizations { } @override - String get composeAppointmentRecurrenceMonthlyOnWeekDay => 'Día de la semana en mes'; + String get composeAppointmentRecurrenceMonthlyOnWeekDay => + 'Día de la semana en mes'; @override String get composeAppointmentRecurrenceFirst => 'Primero'; @@ -1698,7 +1772,6 @@ class AppLocalizationsEs extends AppLocalizations { String durationYears(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1715,7 +1788,6 @@ class AppLocalizationsEs extends AppLocalizations { String durationMonths(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1732,7 +1804,6 @@ class AppLocalizationsEs extends AppLocalizations { String durationWeeks(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1749,7 +1820,6 @@ class AppLocalizationsEs extends AppLocalizations { String durationDays(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1766,7 +1836,6 @@ class AppLocalizationsEs extends AppLocalizations { String durationHours(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); @@ -1783,7 +1852,6 @@ class AppLocalizationsEs extends AppLocalizations { String durationMinutes(int number) { final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( locale: localeName, - ); final String numberString = numberNumberFormat.format(number); diff --git a/lib/src/localization/app_localizations_zh.g.dart b/lib/src/localization/app_localizations_zh.g.dart new file mode 100644 index 0000000..a6da8c4 --- /dev/null +++ b/lib/src/localization/app_localizations_zh.g.dart @@ -0,0 +1,1808 @@ +// ignore: unused_import +import 'package:intl/intl.dart' as intl; +import 'app_localizations.g.dart'; + +// ignore_for_file: type=lint + +/// The translations for Chinese (`zh`). +class AppLocalizationsZh extends AppLocalizations { + AppLocalizationsZh([String locale = 'zh']) : super(locale); + + @override + String get signature => '使用 Maily 发送'; + + @override + String get actionCancel => '取消'; + + @override + String get actionOk => '确定'; + + @override + String get actionDone => '完成'; + + @override + String get actionNext => '下一步'; + + @override + String get actionSkip => '跳过'; + + @override + String get actionUndo => '撤销'; + + @override + String get actionDelete => '删除'; + + @override + String get actionAccept => '接受'; + + @override + String get actionDecline => '拒绝'; + + @override + String get actionEdit => '编辑'; + + @override + String get actionAddressCopy => '复制'; + + @override + String get actionAddressCompose => '新建邮件'; + + @override + String get actionAddressSearch => '搜索'; + + @override + String get splashLoading1 => 'Maily 正在启动...'; + + @override + String get splashLoading2 => '正在准备您的 Maily 引擎...'; + + @override + String get splashLoading3 => 'Maily 即将启动,倒数 10、9、8...'; + + @override + String get welcomePanel1Title => 'Maily'; + + @override + String get welcomePanel1Text => '欢迎使用 Maily,您友好快捷的邮件助手!'; + + @override + String get welcomePanel2Title => '账户'; + + @override + String get welcomePanel2Text => '管理无限数量的电子邮件账户。一次性阅读和搜索所有账户中的邮件。'; + + @override + String get welcomePanel3Title => '滑动与长按'; + + @override + String get welcomePanel3Text => '滑动邮件以删除或标记为已读。长按邮件以选择并管理多个邮件。'; + + @override + String get welcomePanel4Title => '保持收件箱整洁'; + + @override + String get welcomePanel4Text => '只需一键即可取消订阅新闻通讯。'; + + @override + String get welcomeActionSignIn => '登录您的邮件账户'; + + @override + String get homeSearchHint => '搜索'; + + @override + String get homeActionsShowAsStack => '以堆叠方式显示'; + + @override + String get homeActionsShowAsList => '以列表方式显示'; + + @override + String get homeEmptyFolderMessage => '已全部完成!\n\n此文件夹中没有邮件。'; + + @override + String get homeEmptySearchMessage => '未找到邮件。'; + + @override + String get homeDeleteAllTitle => '确认'; + + @override + String get homeDeleteAllQuestion => '确定要删除所有邮件吗?'; + + @override + String get homeDeleteAllAction => '全部删除'; + + @override + String get homeDeleteAllScrubOption => '清除邮件'; + + @override + String get homeDeleteAllSuccess => '所有邮件已删除。'; + + @override + String get homeMarkAllSeenAction => '全部已读'; + + @override + String get homeMarkAllUnseenAction => '全部未读'; + + @override + String get homeFabTooltip => '新建邮件'; + + @override + String get homeLoadingMessageSourceTitle => '加载中...'; + + @override + String homeLoading(String name) { + return '正在加载 $name...'; + } + + @override + String get swipeActionToggleRead => '标记为已读/未读'; + + @override + String get swipeActionDelete => '删除'; + + @override + String get swipeActionMarkJunk => '标记为垃圾邮件'; + + @override + String get swipeActionArchive => '存档'; + + @override + String get swipeActionFlag => '标记/取消标记'; + + @override + String multipleMovedToJunk(int number) { + final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String numberString = numberNumberFormat.format(number); + + String _temp0 = intl.Intl.pluralLogic( + number, + locale: localeName, + other: '$numberString 封邮件已标记为垃圾邮件', + one: '一封邮件已标记为垃圾邮件', + ); + return '$_temp0'; + } + + @override + String multipleMovedToInbox(int number) { + final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String numberString = numberNumberFormat.format(number); + + String _temp0 = intl.Intl.pluralLogic( + number, + locale: localeName, + other: '$numberString 封邮件已移至收件箱', + one: '一封邮件已移至收件箱', + ); + return '$_temp0'; + } + + @override + String multipleMovedToArchive(int number) { + final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String numberString = numberNumberFormat.format(number); + + String _temp0 = intl.Intl.pluralLogic( + number, + locale: localeName, + other: '$numberString 封邮件已存档', + one: '一封邮件已存档', + ); + return '$_temp0'; + } + + @override + String multipleMovedToTrash(int number) { + final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String numberString = numberNumberFormat.format(number); + + String _temp0 = intl.Intl.pluralLogic( + number, + locale: localeName, + other: '$numberString 封邮件已删除', + one: '一封邮件已删除', + ); + return '$_temp0'; + } + + @override + String get multipleSelectionNeededInfo => '请先选择邮件。'; + + @override + String multipleSelectionActionFailed(String details) { + return '无法执行操作\n详情:$details'; + } + + @override + String multipleMoveTitle(int number) { + final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String numberString = numberNumberFormat.format(number); + + String _temp0 = intl.Intl.pluralLogic( + number, + locale: localeName, + other: '移动 $numberString 封邮件', + one: '移动邮件', + ); + return '$_temp0'; + } + + @override + String get messageActionMultipleMarkSeen => '标记为已读'; + + @override + String get messageActionMultipleMarkUnseen => '标记为未读'; + + @override + String get messageActionMultipleMarkFlagged => '标记邮件'; + + @override + String get messageActionMultipleMarkUnflagged => '取消标记邮件'; + + @override + String get messageActionViewInSafeMode => '查看不含外部内容'; + + @override + String get emailSenderUnknown => '<无发件人>'; + + @override + String get dateRangeFuture => '未来'; + + @override + String get dateRangeTomorrow => '明天'; + + @override + String get dateRangeToday => '今天'; + + @override + String get dateRangeYesterday => '昨天'; + + @override + String get dateRangeCurrentWeek => '本周'; + + @override + String get dateRangeLastWeek => '上周'; + + @override + String get dateRangeCurrentMonth => '本月'; + + @override + String get dateRangeLastMonth => '上月'; + + @override + String get dateRangeCurrentYear => '今年'; + + @override + String get dateRangeLongAgo => '很久以前'; + + @override + String get dateUndefined => '未定义'; + + @override + String get dateDayToday => '今天'; + + @override + String get dateDayYesterday => '昨天'; + + @override + String dateDayLastWeekday(String day) { + return '上$day'; + } + + @override + String get drawerEntryAbout => '关于 Maily'; + + @override + String get drawerEntrySettings => '设置'; + + @override + String drawerAccountsSectionTitle(int number) { + final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String numberString = numberNumberFormat.format(number); + + String _temp0 = intl.Intl.pluralLogic( + number, + locale: localeName, + other: '$numberString 个账户', + one: '一个账户', + ); + return '$_temp0'; + } + + @override + String get drawerEntryAddAccount => '添加账户'; + + @override + String get unifiedAccountName => '统一账户'; + + @override + String get unifiedFolderInbox => '统一收件箱'; + + @override + String get unifiedFolderSent => '统一已发送'; + + @override + String get unifiedFolderDrafts => '统一草稿'; + + @override + String get unifiedFolderTrash => '统一垃圾箱'; + + @override + String get unifiedFolderArchive => '统一存档'; + + @override + String get unifiedFolderJunk => '统一垃圾邮件'; + + @override + String get folderInbox => '收件箱'; + + @override + String get folderSent => '已发送'; + + @override + String get folderDrafts => '草稿'; + + @override + String get folderTrash => '垃圾箱'; + + @override + String get folderArchive => '存档'; + + @override + String get folderJunk => '垃圾邮件'; + + @override + String get folderUnknown => '未知'; + + @override + String get viewContentsAction => '查看内容'; + + @override + String get viewSourceAction => '查看源代码'; + + @override + String get detailsErrorDownloadInfo => '邮件无法下载。'; + + @override + String get detailsErrorDownloadRetry => '重试'; + + @override + String get detailsHeaderFrom => '发件人'; + + @override + String get detailsHeaderTo => '收件人'; + + @override + String get detailsHeaderCc => '抄送'; + + @override + String get detailsHeaderBcc => '密送'; + + @override + String get detailsHeaderDate => '日期'; + + @override + String get subjectUndefined => '<无主题>'; + + @override + String get detailsActionShowImages => '显示图片'; + + @override + String get detailsNewsletterActionUnsubscribe => '取消订阅'; + + @override + String get detailsNewsletterActionResubscribe => '重新订阅'; + + @override + String get detailsNewsletterStatusUnsubscribed => '已取消订阅'; + + @override + String get detailsNewsletterUnsubscribeDialogTitle => '取消订阅'; + + @override + String detailsNewsletterUnsubscribeDialogQuestion(String listName) { + return '您确定要取消订阅邮件列表 $listName 吗?'; + } + + @override + String get detailsNewsletterUnsubscribeDialogAction => '取消订阅'; + + @override + String get detailsNewsletterUnsubscribeSuccessTitle => '已取消订阅'; + + @override + String detailsNewsletterUnsubscribeSuccessMessage(String listName) { + return '您已成功取消订阅邮件列表 $listName。'; + } + + @override + String get detailsNewsletterUnsubscribeFailureTitle => '取消订阅失败'; + + @override + String detailsNewsletterUnsubscribeFailureMessage(String listName) { + return '抱歉,我无法自动为您取消订阅 $listName。'; + } + + @override + String get detailsNewsletterResubscribeDialogTitle => '重新订阅'; + + @override + String detailsNewsletterResubscribeDialogQuestion(String listName) { + return '您确定要重新订阅邮件列表 $listName 吗?'; + } + + @override + String get detailsNewsletterResubscribeDialogAction => '订阅'; + + @override + String get detailsNewsletterResubscribeSuccessTitle => '已订阅'; + + @override + String detailsNewsletterResubscribeSuccessMessage(String listName) { + return '您已成功重新订阅邮件列表 $listName。'; + } + + @override + String get detailsNewsletterResubscribeFailureTitle => '订阅失败'; + + @override + String detailsNewsletterResubscribeFailureMessage(String listName) { + return '抱歉,邮件列表 $listName 的订阅请求失败。'; + } + + @override + String get detailsSendReadReceiptAction => '发送已读回执'; + + @override + String get detailsReadReceiptSentStatus => '已发送已读回执 ✔'; + + @override + String get detailsReadReceiptSubject => '已读回执'; + + @override + String get attachmentActionOpen => '打开'; + + @override + String attachmentDecodeError(String details) { + return '此附件格式或编码不受支持。\n详情:\$$details'; + } + + @override + String attachmentDownloadError(String details) { + return '无法下载此附件。\n详情:\$$details'; + } + + @override + String get messageActionReply => '回复'; + + @override + String get messageActionReplyAll => '回复全部'; + + @override + String get messageActionForward => '转发'; + + @override + String get messageActionForwardAsAttachment => '作为附件转发'; + + @override + String messageActionForwardAttachments(int number) { + final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String numberString = numberNumberFormat.format(number); + + String _temp0 = intl.Intl.pluralLogic( + number, + locale: localeName, + other: '转发 $numberString 个附件', + one: '转发附件', + ); + return '$_temp0'; + } + + @override + String get messagesActionForwardAttachments => '转发附件'; + + @override + String get messageActionDelete => '删除'; + + @override + String get messageActionMoveToInbox => '移至收件箱'; + + @override + String get messageActionMove => '移动'; + + @override + String get messageStatusSeen => '已读'; + + @override + String get messageStatusUnseen => '未读'; + + @override + String get messageStatusFlagged => '已标记'; + + @override + String get messageStatusUnflagged => '未标记'; + + @override + String get messageActionMarkAsJunk => '标记为垃圾邮件'; + + @override + String get messageActionMarkAsNotJunk => '标记为非垃圾邮件'; + + @override + String get messageActionArchive => '存档'; + + @override + String get messageActionUnarchive => '移至收件箱'; + + @override + String get messageActionRedirect => '重定向'; + + @override + String get messageActionAddNotification => '添加通知'; + + @override + String get resultDeleted => '已删除'; + + @override + String get resultMovedToJunk => '已标记为垃圾邮件'; + + @override + String get resultMovedToInbox => '已移至收件箱'; + + @override + String get resultArchived => '已存档'; + + @override + String get resultRedirectedSuccess => '邮件已重定向 👍'; + + @override + String resultRedirectedFailure(String details) { + return '无法重定向邮件。\n\n服务器返回以下详情:\"$details\"'; + } + + @override + String get redirectTitle => '重定向'; + + @override + String get redirectInfo => '将此邮件重定向到以下收件人。重定向不会更改邮件内容。'; + + @override + String get redirectEmailInputRequired => '您需要添加至少一个有效的电子邮件地址。'; + + @override + String searchQueryDescription(String folder) { + return '在 $folder 中搜索...'; + } + + @override + String searchQueryTitle(String query) { + return '搜索 \"$query\"'; + } + + @override + String get legaleseUsage => '使用 Maily 即表示您同意我们的 [PP] 和 [TC]。'; + + @override + String get legalesePrivacyPolicy => '隐私政策'; + + @override + String get legaleseTermsAndConditions => '服务条款'; + + @override + String get aboutApplicationLegalese => 'Maily 是根据 GNU 通用公共许可证发布的免费软件。'; + + @override + String get feedbackActionSuggestFeature => '建议功能'; + + @override + String get feedbackActionReportProblem => '报告问题'; + + @override + String get feedbackActionHelpDeveloping => '帮助开发 Maily'; + + @override + String get feedbackTitle => '反馈'; + + @override + String get feedbackIntro => '感谢您测试 Maily!'; + + @override + String get feedbackProvideInfoRequest => '报告问题时,请提供以下信息:'; + + @override + String get feedbackResultInfoCopied => '已复制到剪贴板'; + + @override + String get accountsTitle => '账户'; + + @override + String get accountsActionReorder => '重新排序账户'; + + @override + String get settingsTitle => '设置'; + + @override + String get settingsSecurityBlockExternalImages => '阻止外部图片'; + + @override + String get settingsSecurityBlockExternalImagesDescriptionTitle => '外部图片'; + + @override + String get settingsSecurityBlockExternalImagesDescriptionText => + '电子邮件可能包含内联图片或托管在外部服务器上的图片。后者(外部图片)可能会向发件人泄露信息,例如让发件人知道您已打开邮件。此选项允许您阻止此类外部图片,从而降低泄露敏感信息的风险。您仍然可以在阅读邮件时选择按邮件加载此类图片。'; + + @override + String get settingsSecurityMessageRenderingHtml => '显示完整邮件内容'; + + @override + String get settingsSecurityMessageRenderingPlainText => '仅显示邮件文本'; + + @override + String get settingsSecurityLaunchModeLabel => 'Maily 应如何打开链接?'; + + @override + String get settingsSecurityLaunchModeExternal => '在外部打开链接'; + + @override + String get settingsSecurityLaunchModeInApp => '在 Maily 中打开链接'; + + @override + String get settingsActionAccounts => '管理账户'; + + @override + String get settingsActionDesign => '外观'; + + @override + String get settingsActionFeedback => '提供反馈'; + + @override + String get settingsActionWelcome => '显示欢迎界面'; + + @override + String get settingsReadReceipts => '已读回执'; + + @override + String get readReceiptsSettingsIntroduction => '您是否希望显示已读回执请求?'; + + @override + String get readReceiptOptionAlways => '始终显示'; + + @override + String get readReceiptOptionNever => '从不显示'; + + @override + String get settingsFolders => '文件夹'; + + @override + String get folderNamesIntroduction => '您喜欢使用什么名称来命名文件夹?'; + + @override + String get folderNamesSettingLocalized => 'Maily 提供的名称'; + + @override + String get folderNamesSettingServer => '服务提供的名称'; + + @override + String get folderNamesSettingCustom => '自定义名称'; + + @override + String get folderNamesEditAction => '编辑自定义名称'; + + @override + String get folderNamesCustomTitle => '自定义名称'; + + @override + String get folderAddAction => '创建文件夹'; + + @override + String get folderAddTitle => '创建文件夹'; + + @override + String get folderAddNameLabel => '名称'; + + @override + String get folderAddNameHint => '新文件夹名称'; + + @override + String get folderAccountLabel => '账户'; + + @override + String get folderMailboxLabel => '文件夹'; + + @override + String get folderAddResultSuccess => '文件夹已创建 😊'; + + @override + String folderAddResultFailure(String details) { + return '无法创建文件夹。\n\n服务器返回:$details'; + } + + @override + String get folderDeleteAction => '删除'; + + @override + String get folderDeleteConfirmTitle => '确认'; + + @override + String folderDeleteConfirmText(String name) { + return '您确定要删除文件夹 $name 吗?'; + } + + @override + String get folderDeleteResultSuccess => '文件夹已删除。'; + + @override + String folderDeleteResultFailure(String details) { + return '无法删除文件夹。\n\n服务器返回:$details'; + } + + @override + String get settingsDevelopment => '开发设置'; + + @override + String get developerModeTitle => '开发模式'; + + @override + String get developerModeIntroduction => '如果启用开发模式,您将能够查看邮件的源代码并将文本附件转换为邮件。'; + + @override + String get developerModeEnable => '启用开发模式'; + + @override + String get developerShowAsEmail => '转换为邮件格式'; + + @override + String get developerShowAsEmailFailed => '此文本无法转换为 MIME 邮件。'; + + @override + String get designTitle => '外观设置'; + + @override + String get designSectionThemeTitle => '主题'; + + @override + String get designThemeOptionLight => '浅色'; + + @override + String get designThemeOptionDark => '深色'; + + @override + String get designThemeOptionSystem => '系统'; + + @override + String get designThemeOptionCustom => '自定义'; + + @override + String get designSectionCustomTitle => '启用深色主题'; + + @override + String designThemeCustomStart(String time) { + return '从 $time 开始'; + } + + @override + String designThemeCustomEnd(String time) { + return '到 $time 结束'; + } + + @override + String get designSectionColorTitle => '配色方案'; + + @override + String get securitySettingsTitle => '安全'; + + @override + String get securitySettingsIntro => '根据您的个人需求调整安全设置。'; + + @override + String get securityUnlockWithFaceId => '使用面容 ID 解锁 Maily。'; + + @override + String get securityUnlockWithTouchId => '使用触控 ID 解锁 Maily。'; + + @override + String get securityUnlockReason => '解锁 Maily。'; + + @override + String get securityUnlockDisableReason => '解锁 Maily 以关闭锁定。'; + + @override + String get securityUnlockNotAvailable => '您的设备不支持生物识别功能,可能需要先设置解锁选项。'; + + @override + String get securityUnlockLabel => '锁定 Maily'; + + @override + String get securityUnlockDescriptionTitle => '锁定 Maily'; + + @override + String get securityUnlockDescriptionText => + '您可以选择锁定对 Maily 的访问,这样即使他人访问您的设备也无法阅读您的邮件。'; + + @override + String get securityLockImmediately => '立即锁定'; + + @override + String get securityLockAfter5Minutes => '5分钟后锁定'; + + @override + String get securityLockAfter30Minutes => '30分钟后锁定'; + + @override + String get lockScreenTitle => 'Maily 已锁定'; + + @override + String get lockScreenIntro => 'Maily 已锁定,请验证身份以继续。'; + + @override + String get lockScreenUnlockAction => '解锁'; + + @override + String get addAccountTitle => '添加账户'; + + @override + String get addAccountEmailLabel => '邮箱'; + + @override + String get addAccountEmailHint => '请输入您的邮箱地址'; + + @override + String addAccountResolvingSettingsLabel(String email) { + return '正在解析 $email 的设置...'; + } + + @override + String addAccountResolvedSettingsWrongAction(String provider) { + return '不在 $provider 上?'; + } + + @override + String addAccountResolvingSettingsFailedInfo(String email) { + return '无法解析 $email。请返回修改或手动设置账户。'; + } + + @override + String get addAccountEditManuallyAction => '手动编辑'; + + @override + String get addAccountPasswordLabel => '密码'; + + @override + String get addAccountPasswordHint => '请输入您的密码'; + + @override + String get addAccountApplicationPasswordRequiredInfo => '此提供商要求您设置应用专用密码。'; + + @override + String get addAccountApplicationPasswordRequiredButton => '创建应用专用密码'; + + @override + String get addAccountApplicationPasswordRequiredAcknowledged => '我已有应用密码'; + + @override + String get addAccountVerificationStep => '验证'; + + @override + String get addAccountSetupAccountStep => '账户设置'; + + @override + String addAccountVerifyingSettingsLabel(String email) { + return '正在验证 $email...'; + } + + @override + String addAccountVerifyingSuccessInfo(String email) { + return '已成功登录 $email。'; + } + + @override + String addAccountVerifyingFailedInfo(String email) { + return '抱歉,出现问题。请检查您的邮箱 $email 和密码。'; + } + + @override + String addAccountOauthOptionsText(String provider) { + return '使用 $provider 登录或创建应用专用密码。'; + } + + @override + String addAccountOauthSignIn(String provider) { + return '使用 $provider 登录'; + } + + @override + String get addAccountOauthSignInGoogle => '使用 Google 登录'; + + @override + String get addAccountOauthSignInWithAppPassword => '或者,创建应用密码进行登录。'; + + @override + String get accountAddImapAccessSetupMightBeRequired => + '您的提供商可能要求您手动设置电子邮件应用的访问权限。'; + + @override + String get addAccountSetupImapAccessButtonLabel => '设置邮箱访问权限'; + + @override + String get addAccountNameOfUserLabel => '您的姓名'; + + @override + String get addAccountNameOfUserHint => '收件人将看到的姓名'; + + @override + String get addAccountNameOfAccountLabel => '账户名称'; + + @override + String get addAccountNameOfAccountHint => '请输入您的账户名称'; + + @override + String editAccountTitle(String name) { + return '编辑 $name'; + } + + @override + String editAccountFailureToConnectInfo(String name) { + return 'Maily 无法连接到 $name。'; + } + + @override + String get editAccountFailureToConnectRetryAction => '重试'; + + @override + String get editAccountFailureToConnectChangePasswordAction => '修改密码'; + + @override + String get editAccountFailureToConnectFixedTitle => '已连接'; + + @override + String get editAccountFailureToConnectFixedInfo => '账户已重新连接。'; + + @override + String get editAccountIncludeInUnifiedLabel => '包含在统一账户中'; + + @override + String editAccountAliasLabel(String email) { + return '$email 的别名邮箱地址:'; + } + + @override + String get editAccountNoAliasesInfo => '此账户暂无已知别名。'; + + @override + String editAccountAliasRemoved(String email) { + return '$email 别名已移除'; + } + + @override + String get editAccountAddAliasAction => '添加别名'; + + @override + String get editAccountPlusAliasesSupported => '支持 + 别名'; + + @override + String get editAccountCheckPlusAliasAction => '测试 + 别名支持'; + + @override + String get editAccountBccMyself => '密送自己'; + + @override + String get editAccountBccMyselfDescriptionTitle => '密送自己'; + + @override + String get editAccountBccMyselfDescriptionText => + '您可以使用\"密送自己\"功能,自动在您从此账户发送的每封邮件中密送一份给自己。通常这不太必要,因为所有外发邮件都会存储在\"已发送\"文件夹中。'; + + @override + String get editAccountServerSettingsAction => '编辑服务器设置'; + + @override + String get editAccountDeleteAccountAction => '删除账户'; + + @override + String get editAccountDeleteAccountConfirmationTitle => '确认'; + + @override + String editAccountDeleteAccountConfirmationQuery(String name) { + return '您确定要删除账户 $name 吗?'; + } + + @override + String editAccountTestPlusAliasTitle(String name) { + return '$name 的 + 别名'; + } + + @override + String get editAccountTestPlusAliasStepIntroductionTitle => '介绍'; + + @override + String editAccountTestPlusAliasStepIntroductionText( + String accountName, + String example, + ) { + return '您的账户 $accountName 可能支持所谓的 + 别名,如 $example。\n+ 别名可帮助您保护身份并抵御垃圾邮件。\n要测试此项,将向生成的地址发送一封测试邮件。如果邮件到达,说明您的提供商支持 + 别名,您可以在撰写新邮件时按需生成它们。'; + } + + @override + String get editAccountTestPlusAliasStepTestingTitle => '测试中'; + + @override + String get editAccountTestPlusAliasStepResultTitle => '结果'; + + @override + String editAccountTestPlusAliasStepResultSuccess(String name) { + return '您的账户 $name 支持 + 别名。'; + } + + @override + String editAccountTestPlusAliasStepResultNoSuccess(String name) { + return '您的账户 $name 不支持 + 别名。'; + } + + @override + String get editAccountAddAliasTitle => '添加别名'; + + @override + String get editAccountEditAliasTitle => '编辑别名'; + + @override + String get editAccountAliasAddAction => '添加'; + + @override + String get editAccountAliasUpdateAction => '更新'; + + @override + String get editAccountEditAliasNameLabel => '别名名称'; + + @override + String get editAccountEditAliasEmailLabel => '别名邮箱'; + + @override + String get editAccountEditAliasEmailHint => '您的别名邮箱地址'; + + @override + String editAccountEditAliasDuplicateError(String email) { + return '$email 已存在别名。'; + } + + @override + String get editAccountEnableLogging => '启用日志'; + + @override + String get editAccountLoggingEnabled => '日志已启用,请重启'; + + @override + String get editAccountLoggingDisabled => '日志已禁用,请重启'; + + @override + String get accountDetailsFallbackTitle => '服务器设置'; + + @override + String get errorTitle => '错误'; + + @override + String get accountProviderStepTitle => '电子邮件服务提供商'; + + @override + String get accountProviderCustom => '其他电子邮件服务'; + + @override + String accountDetailsErrorHostProblem( + String incomingHost, + String outgoingHost, + ) { + return 'Maily 无法连接到指定的邮件服务器。请检查您的传入服务器设置 \"$incomingHost\" 和传出服务器设置 \"$outgoingHost\"。'; + } + + @override + String accountDetailsErrorLoginProblem(String userName, String password) { + return '无法登录。请检查您的用户名 \"$userName\" 和密码 \"$password\"。'; + } + + @override + String get accountDetailsUserNameLabel => '登录名'; + + @override + String get accountDetailsUserNameHint => '您的用户名(如与邮箱不同)'; + + @override + String get accountDetailsPasswordLabel => '登录密码'; + + @override + String get accountDetailsPasswordHint => '您的密码'; + + @override + String get accountDetailsBaseSectionTitle => '基础设置'; + + @override + String get accountDetailsIncomingLabel => '传入服务器'; + + @override + String get accountDetailsIncomingHint => '域名,如 imap.domain.com'; + + @override + String get accountDetailsOutgoingLabel => '传出服务器'; + + @override + String get accountDetailsOutgoingHint => '域名,如 smtp.domain.com'; + + @override + String get accountDetailsAdvancedIncomingSectionTitle => '高级传入设置'; + + @override + String get accountDetailsIncomingServerTypeLabel => '传入类型:'; + + @override + String get accountDetailsOptionAutomatic => '自动'; + + @override + String get accountDetailsIncomingSecurityLabel => '传入安全:'; + + @override + String get accountDetailsSecurityOptionNone => '明文(无加密)'; + + @override + String get accountDetailsIncomingPortLabel => '传入端口'; + + @override + String get accountDetailsPortHint => '留空以自动确定'; + + @override + String get accountDetailsIncomingUserNameLabel => '传入用户名'; + + @override + String get accountDetailsAlternativeUserNameHint => '您的用户名(如与上方不同)'; + + @override + String get accountDetailsIncomingPasswordLabel => '传入密码'; + + @override + String get accountDetailsAlternativePasswordHint => '您的密码(如与上方不同)'; + + @override + String get accountDetailsAdvancedOutgoingSectionTitle => '高级传出设置'; + + @override + String get accountDetailsOutgoingServerTypeLabel => '传出类型:'; + + @override + String get accountDetailsOutgoingSecurityLabel => '传出安全:'; + + @override + String get accountDetailsOutgoingPortLabel => '传出端口'; + + @override + String get accountDetailsOutgoingUserNameLabel => '传出用户名'; + + @override + String get accountDetailsOutgoingPasswordLabel => '传出密码'; + + @override + String get composeTitleNew => '新建邮件'; + + @override + String get composeTitleForward => '转发'; + + @override + String get composeTitleReply => '回复'; + + @override + String get composeEmptyMessage => '空邮件'; + + @override + String get composeWarningNoSubject => '您尚未指定主题。确定要发送无主题的邮件吗?'; + + @override + String get composeActionSentWithoutSubject => '发送'; + + @override + String get composeMailSendSuccess => '邮件已发送 😊'; + + @override + String composeSendErrorInfo(String details) { + return '抱歉,您的邮件无法发送。收到以下错误:\n$details。'; + } + + @override + String get composeRequestReadReceiptAction => '请求已读回执'; + + @override + String get composeSaveDraftAction => '保存为草稿'; + + @override + String get composeMessageSavedAsDraft => '草稿已保存'; + + @override + String composeMessageSavedAsDraftErrorInfo(String details) { + return '您的草稿无法保存,错误如下:\n$details'; + } + + @override + String get composeConvertToPlainTextEditorAction => '转换为纯文本'; + + @override + String get composeConvertToHtmlEditorAction => '转换为富文本(HTML)'; + + @override + String get composeContinueEditingAction => '继续编辑'; + + @override + String get composeCreatePlusAliasAction => '创建新的 + 别名...'; + + @override + String get composeSenderHint => '发件人'; + + @override + String get composeRecipientHint => '收件人邮箱'; + + @override + String get composeSubjectLabel => '主题'; + + @override + String get composeSubjectHint => '邮件主题'; + + @override + String get composeAddAttachmentAction => '添加'; + + @override + String composeRemoveAttachmentAction(String name) { + return '移除 $name'; + } + + @override + String get composeLeftByMistake => '误离开?'; + + @override + String get attachTypeFile => '文件'; + + @override + String get attachTypePhoto => '照片'; + + @override + String get attachTypeVideo => '视频'; + + @override + String get attachTypeAudio => '音频'; + + @override + String get attachTypeLocation => '位置'; + + @override + String get attachTypeGif => '动图'; + + @override + String get attachTypeGifSearch => '搜索 GIPHY'; + + @override + String get attachTypeSticker => '贴纸'; + + @override + String get attachTypeStickerSearch => '搜索 GIPHY'; + + @override + String get attachTypeAppointment => '日程'; + + @override + String get languageSettingTitle => '语言'; + + @override + String get languageSettingLabel => '选择 Maily 的语言:'; + + @override + String get languageSettingSystemOption => '系统语言'; + + @override + String get languageSettingConfirmationTitle => '使用中文作为 Maily 语言?'; + + @override + String get languageSettingConfirmationQuery => '请确认使用中文作为您选择的语言。'; + + @override + String get languageSetInfo => 'Maily 现在显示为中文。'; + + @override + String get languageSystemSetInfo => 'Maily 将使用系统语言,如果系统语言不支持则使用英语。'; + + @override + String get swipeSettingTitle => '滑动手势'; + + @override + String get swipeSettingLeftToRightLabel => '从左向右滑动'; + + @override + String get swipeSettingRightToLeftLabel => '从右向左滑动'; + + @override + String get swipeSettingChangeAction => '更改'; + + @override + String get signatureSettingsTitle => '签名'; + + @override + String get signatureSettingsComposeActionsInfo => '为以下邮件类型启用签名:'; + + @override + String get signatureSettingsAccountInfo => '您可以在账户设置中指定特定账户的签名。'; + + @override + String signatureSettingsAddForAccount(String account) { + return '为 $account 添加签名'; + } + + @override + String get defaultSenderSettingsTitle => '默认发件人'; + + @override + String get defaultSenderSettingsLabel => '选择新邮件的发件人。'; + + @override + String defaultSenderSettingsFirstAccount(String email) { + return '第一个账户 ($email)'; + } + + @override + String get defaultSenderSettingsAliasInfo => '您可以在 [AS] 中设置邮箱别名地址。'; + + @override + String get defaultSenderSettingsAliasAccountSettings => '账户设置'; + + @override + String get replySettingsTitle => '邮件格式'; + + @override + String get replySettingsIntro => '默认情况下,您希望以什么格式回复或转发邮件?'; + + @override + String get replySettingsFormatHtml => '始终使用富格式(HTML)'; + + @override + String get replySettingsFormatSameAsOriginal => '使用与原始邮件相同的格式'; + + @override + String get replySettingsFormatPlainText => '始终使用纯文本'; + + @override + String get moveTitle => '移动邮件'; + + @override + String moveSuccess(String mailbox) { + return '邮件已移至 $mailbox。'; + } + + @override + String get editorArtInputLabel => '您的输入'; + + @override + String get editorArtInputHint => '在此输入文本'; + + @override + String get editorArtWaitingForInputHint => '等待输入...'; + + @override + String get fontSerifBold => '衬线粗体'; + + @override + String get fontSerifItalic => '衬线斜体'; + + @override + String get fontSerifBoldItalic => '衬线粗斜体'; + + @override + String get fontSans => '无衬线'; + + @override + String get fontSansBold => '无衬线粗体'; + + @override + String get fontSansItalic => '无衬线斜体'; + + @override + String get fontSansBoldItalic => '无衬线粗斜体'; + + @override + String get fontScript => '手写体'; + + @override + String get fontScriptBold => '手写体粗体'; + + @override + String get fontFraktur => '德文花体'; + + @override + String get fontFrakturBold => '德文花体粗体'; + + @override + String get fontMonospace => '等宽'; + + @override + String get fontFullwidth => '全角'; + + @override + String get fontDoublestruck => '双线体'; + + @override + String get fontCapitalized => '大写'; + + @override + String get fontCircled => '圆圈'; + + @override + String get fontParenthesized => '括号'; + + @override + String get fontUnderlinedSingle => '下划线'; + + @override + String get fontUnderlinedDouble => '双下划线'; + + @override + String get fontStrikethroughSingle => '删除线'; + + @override + String get fontCrosshatch => 'Crosshatch'; + + @override + String accountLoadError(String name) { + return 'Unable to connect to your account $name. Has the password been changed?'; + } + + @override + String get accountLoadErrorEditAction => 'Edit account'; + + @override + String get extensionsTitle => 'Extensions'; + + @override + String get extensionsIntro => + 'With extensions e-mail service providers, companies and developers can adapt Maily with useful functionalities.'; + + @override + String get extensionsLearnMoreAction => 'Learn more about extensions'; + + @override + String get extensionsReloadAction => 'Reload extensions'; + + @override + String get extensionDeactivateAllAction => 'Deactivate all extensions'; + + @override + String get extensionsManualAction => 'Load manually'; + + @override + String get extensionsManualUrlLabel => 'Url of extension'; + + @override + String extensionsManualLoadingError(String url) { + return 'Unable to download extension from \"$url\".'; + } + + @override + String get icalendarAcceptTentatively => 'Tentatively'; + + @override + String get icalendarActionChangeParticipantStatus => 'Change'; + + @override + String get icalendarLabelSummary => 'Title'; + + @override + String get icalendarNoSummaryInfo => '(no title)'; + + @override + String get icalendarLabelDescription => 'Description'; + + @override + String get icalendarLabelStart => 'Start'; + + @override + String get icalendarLabelEnd => 'End'; + + @override + String get icalendarLabelDuration => 'Duration'; + + @override + String get icalendarLabelLocation => 'Location'; + + @override + String get icalendarLabelTeamsUrl => 'Link'; + + @override + String get icalendarLabelRecurrenceRule => 'Repeats'; + + @override + String get icalendarLabelParticipants => 'Participants'; + + @override + String get icalendarParticipantStatusNeedsAction => + 'You are asked to answer this invitation.'; + + @override + String get icalendarParticipantStatusAccepted => + 'You have accepted this invitation.'; + + @override + String get icalendarParticipantStatusDeclined => + 'You have declined this invitation.'; + + @override + String get icalendarParticipantStatusAcceptedTentatively => + 'You have tentatively accepted this invitation.'; + + @override + String get icalendarParticipantStatusDelegated => + 'You have delegated this invitation.'; + + @override + String get icalendarParticipantStatusInProcess => 'The task is in progress.'; + + @override + String get icalendarParticipantStatusPartial => 'The task is partially done.'; + + @override + String get icalendarParticipantStatusCompleted => 'The task is done.'; + + @override + String get icalendarParticipantStatusOther => 'Your status is unknown.'; + + @override + String get icalendarParticipantStatusChangeTitle => 'Your Status'; + + @override + String get icalendarParticipantStatusChangeText => + 'Do you want to accept this invitation?'; + + @override + String icalendarParticipantStatusSentFailure(String details) { + return 'Unable to send reply.\nThe server responded with the following details:\n$details'; + } + + @override + String get icalendarExportAction => 'Export'; + + @override + String icalendarReplyStatusNeedsAction(String attendee) { + return '$attendee has not answered this invitation.'; + } + + @override + String icalendarReplyStatusAccepted(String attendee) { + return '$attendee has accepted the appointment.'; + } + + @override + String icalendarReplyStatusDeclined(String attendee) { + return '$attendee has declined this invitation.'; + } + + @override + String icalendarReplyStatusAcceptedTentatively(String attendee) { + return '$attendee has tentatively accepted this invitation.'; + } + + @override + String icalendarReplyStatusDelegated(String attendee) { + return '$attendee has delegated this invitation.'; + } + + @override + String icalendarReplyStatusInProcess(String attendee) { + return '$attendee has started this task.'; + } + + @override + String icalendarReplyStatusPartial(String attendee) { + return '$attendee has partially done this task.'; + } + + @override + String icalendarReplyStatusCompleted(String attendee) { + return '$attendee has finished this task.'; + } + + @override + String icalendarReplyStatusOther(String attendee) { + return '$attendee has answered with an unknown status.'; + } + + @override + String get icalendarReplyWithoutParticipants => + 'This calendar reply contains no participants.'; + + @override + String icalendarReplyWithoutStatus(String attendee) { + return '$attendee replied without an participation status.'; + } + + @override + String get composeAppointmentTitle => 'Create Appointment'; + + @override + String get composeAppointmentLabelDay => 'day'; + + @override + String get composeAppointmentLabelTime => 'time'; + + @override + String get composeAppointmentLabelAllDayEvent => 'All day'; + + @override + String get composeAppointmentLabelRepeat => 'Repeat'; + + @override + String get composeAppointmentLabelRepeatOptionNever => 'Never'; + + @override + String get composeAppointmentLabelRepeatOptionDaily => 'Daily'; + + @override + String get composeAppointmentLabelRepeatOptionWeekly => 'Weekly'; + + @override + String get composeAppointmentLabelRepeatOptionMonthly => 'Monthly'; + + @override + String get composeAppointmentLabelRepeatOptionYearly => 'Annually'; + + @override + String get composeAppointmentRecurrenceFrequencyLabel => 'Frequency'; + + @override + String get composeAppointmentRecurrenceIntervalLabel => 'Interval'; + + @override + String get composeAppointmentRecurrenceDaysLabel => 'On days'; + + @override + String get composeAppointmentRecurrenceUntilLabel => 'Until'; + + @override + String get composeAppointmentRecurrenceUntilOptionUnlimited => 'Unlimited'; + + @override + String composeAppointmentRecurrenceUntilOptionRecommended(String duration) { + return 'Recommended ($duration)'; + } + + @override + String get composeAppointmentRecurrenceUntilOptionSpecificDate => + 'Until chosen date'; + + @override + String composeAppointmentRecurrenceMonthlyOnDayOfMonth(int day) { + final intl.NumberFormat dayNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String dayString = dayNumberFormat.format(day); + + return 'On the $dayString. day of the month'; + } + + @override + String get composeAppointmentRecurrenceMonthlyOnWeekDay => 'Weekday in month'; + + @override + String get composeAppointmentRecurrenceFirst => 'First'; + + @override + String get composeAppointmentRecurrenceSecond => 'Second'; + + @override + String get composeAppointmentRecurrenceThird => 'Third'; + + @override + String get composeAppointmentRecurrenceLast => 'Last'; + + @override + String get composeAppointmentRecurrenceSecondLast => 'Second-last'; + + @override + String durationYears(int number) { + final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String numberString = numberNumberFormat.format(number); + + String _temp0 = intl.Intl.pluralLogic( + number, + locale: localeName, + other: '$numberString years', + one: '1 year', + ); + return '$_temp0'; + } + + @override + String durationMonths(int number) { + final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String numberString = numberNumberFormat.format(number); + + String _temp0 = intl.Intl.pluralLogic( + number, + locale: localeName, + other: '$numberString months', + one: '1 month', + ); + return '$_temp0'; + } + + @override + String durationWeeks(int number) { + final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String numberString = numberNumberFormat.format(number); + + String _temp0 = intl.Intl.pluralLogic( + number, + locale: localeName, + other: '$numberString weeks', + one: '1 week', + ); + return '$_temp0'; + } + + @override + String durationDays(int number) { + final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String numberString = numberNumberFormat.format(number); + + String _temp0 = intl.Intl.pluralLogic( + number, + locale: localeName, + other: '$numberString days', + one: '1 day', + ); + return '$_temp0'; + } + + @override + String durationHours(int number) { + final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String numberString = numberNumberFormat.format(number); + + String _temp0 = intl.Intl.pluralLogic( + number, + locale: localeName, + other: '$numberString hours', + one: '1 hour', + ); + return '$_temp0'; + } + + @override + String durationMinutes(int number) { + final intl.NumberFormat numberNumberFormat = intl.NumberFormat.compactLong( + locale: localeName, + ); + final String numberString = numberNumberFormat.format(number); + + String _temp0 = intl.Intl.pluralLogic( + number, + locale: localeName, + other: '$numberString minutes', + one: '1 minute', + ); + return '$_temp0'; + } + + @override + String get durationEmpty => 'No duration'; +} diff --git a/lib/src/localization/app_zh.arb b/lib/src/localization/app_zh.arb new file mode 100644 index 0000000..ebf2fef --- /dev/null +++ b/lib/src/localization/app_zh.arb @@ -0,0 +1,2238 @@ +{ + "@@locale": "zh", + "signature": "使用 Maily 发送", + "@signature": { + "description": "Default signature text" + }, + "actionCancel": "取消", + "@actionCancel": { + "description": "Generic cancel action" + }, + "actionOk": "确定", + "@actionOk": { + "description": "Generic OK action" + }, + "actionDone": "完成", + "@actionDone": { + "description": "Generic done action" + }, + "actionNext": "下一步", + "@actionNext": { + "description": "Generic next action" + }, + "actionSkip": "跳过", + "@actionSkip": { + "description": "Generic skip action" + }, + "actionUndo": "撤销", + "@actionUndo": { + "description": "Generic undo action" + }, + "actionDelete": "删除", + "@actionDelete": { + "description": "Generic delete action" + }, + "actionAccept": "接受", + "@actionAccept": { + "description": "Generic accept action" + }, + "actionDecline": "拒绝", + "@actionDecline": { + "description": "Generic decline action" + }, + "actionEdit": "编辑", + "@actionEdit": { + "description": "Generic edit action" + }, + "actionAddressCopy": "复制", + "@actionAddressCopy": { + "description": "Copy action for email addresses" + }, + "actionAddressCompose": "新建邮件", + "@actionAddressCompose": { + "description": "Compose action for email addresses" + }, + "actionAddressSearch": "搜索", + "@actionAddressSearch": { + "description": "Search action for email addresses" + }, + "splashLoading1": "Maily 正在启动...", + "@splashLoading1": { + "description": "Message shown on splash screen while loading" + }, + "splashLoading2": "正在准备您的 Maily 引擎...", + "@splashLoading2": { + "description": "Message shown on splash screen while loading" + }, + "splashLoading3": "Maily 即将启动,倒数 10、9、8...", + "@splashLoading3": { + "description": "Message shown on splash screen while loading" + }, + "welcomePanel1Title": "Maily", + "@welcomePanel1Title": { + "description": "Welcome panel title" + }, + "welcomePanel1Text": "欢迎使用 Maily,您友好快捷的邮件助手!", + "@welcomePanel1Text": { + "description": "Welcome message shown on first panel" + }, + "welcomePanel2Title": "账户", + "@welcomePanel2Title": { + "description": "Welcome panel title" + }, + "welcomePanel2Text": "管理无限数量的电子邮件账户。一次性阅读和搜索所有账户中的邮件。", + "@welcomePanel2Text": { + "description": "Welcome message shown on second panel" + }, + "welcomePanel3Title": "滑动与长按", + "@welcomePanel3Title": { + "description": "Welcome panel title" + }, + "welcomePanel3Text": "滑动邮件以删除或标记为已读。长按邮件以选择并管理多个邮件。", + "@welcomePanel3Text": { + "description": "Welcome message shown on third panel" + }, + "welcomePanel4Title": "保持收件箱整洁", + "@welcomePanel4Title": { + "description": "Welcome panel title" + }, + "welcomePanel4Text": "只需一键即可取消订阅新闻通讯。", + "@welcomePanel4Text": { + "description": "Welcome message shown on fourth panel" + }, + "welcomeActionSignIn": "登录您的邮件账户", + "@welcomeActionSignIn": { + "description": "Button showing login option" + }, + "homeSearchHint": "搜索", + "@homeSearchHint": { + "description": "Hint shown in empty search field" + }, + "homeActionsShowAsStack": "以堆叠方式显示", + "@homeActionsShowAsStack": { + "description": "Action to show mails as stack" + }, + "homeActionsShowAsList": "以列表方式显示", + "@homeActionsShowAsList": { + "description": "Action to show mails as list" + }, + "homeEmptyFolderMessage": "已全部完成!\n\n此文件夹中没有邮件。", + "@homeEmptyFolderMessage": { + "description": "Message shown when there are no messages in the folder" + }, + "homeEmptySearchMessage": "未找到邮件。", + "@homeEmptySearchMessage": { + "description": "Message shown when there are no messages found in a search query" + }, + "homeDeleteAllTitle": "确认", + "@homeDeleteAllTitle": { + "description": "Title of confirmation dialog when deleting all messages" + }, + "homeDeleteAllQuestion": "确定要删除所有邮件吗?", + "@homeDeleteAllQuestion": { + "description": "Question in confirmation dialog when deleting all messages" + }, + "homeDeleteAllAction": "全部删除", + "@homeDeleteAllAction": { + "description": "Action to tap to delete all messages (must be short)." + }, + "homeDeleteAllScrubOption": "清除邮件", + "@homeDeleteAllScrubOption": { + "description": "Option to remove deleted messages from disk." + }, + "homeDeleteAllSuccess": "所有邮件已删除。", + "@homeDeleteAllSuccess": { + "description": "Message shown after all messages have been deleted." + }, + "homeMarkAllSeenAction": "全部已读", + "@homeMarkAllSeenAction": { + "description": "Action to tap to mark all messages as seen / read (must be short)." + }, + "homeMarkAllUnseenAction": "全部未读", + "@homeMarkAllUnseenAction": { + "description": "Action to tap to mark all messages as unseen / unread (must be short)." + }, + "homeFabTooltip": "新建邮件", + "@homeFabTooltip": { + "description": "Tooltip for 'compose new message' floating action button." + }, + "homeLoadingMessageSourceTitle": "加载中...", + "@homeLoadingMessageSourceTitle": { + "description": "Title shown while message source itself is being loaded." + }, + "homeLoading": "正在加载 {name}...", + "@homeLoading": { + "description": "Message shown while loading message.", + "placeholders": { + "name": { + "type": "String", + "example": "收件箱" + } + } + }, + "swipeActionToggleRead": "标记为已读/未读", + "@swipeActionToggleRead": { + "description": "Swipe action for marking a message as read / unread." + }, + "swipeActionDelete": "删除", + "@swipeActionDelete": { + "description": "Swipe action for deleting a message." + }, + "swipeActionMarkJunk": "标记为垃圾邮件", + "@swipeActionMarkJunk": { + "description": "Swipe action for moving a message to junk." + }, + "swipeActionArchive": "存档", + "@swipeActionArchive": { + "description": "Swipe action for moving a message to archive." + }, + "swipeActionFlag": "标记/取消标记", + "@swipeActionFlag": { + "description": "Swipe action for marking a message as flagged / unflagged." + }, + "multipleMovedToJunk": "{number,plural, =1{一封邮件已标记为垃圾邮件} other{{number} 封邮件已标记为垃圾邮件}}", + "@multipleMovedToJunk": { + "description": "Message shown after moving messages to junk. Message formatted using the plural JSON scheme.", + "placeholders": { + "number": { + "type": "int", + "example": "2", + "format": "compactLong" + } + } + }, + "multipleMovedToInbox": "{number,plural, =1{一封邮件已移至收件箱} other{{number} 封邮件已移至收件箱}}", + "@multipleMovedToInbox": { + "description": "Message shown after moving messages from junk, trash or archive back to the Inbox. Message formatted using the plural JSON scheme.", + "placeholders": { + "number": { + "type": "int", + "example": "2", + "format": "compactLong" + } + } + }, + "multipleMovedToArchive": "{number,plural, =1{一封邮件已存档} other{{number} 封邮件已存档}}", + "@multipleMovedToArchive": { + "description": "Message shown after moving messages to archive. Message formatted using the plural JSON scheme.", + "placeholders": { + "number": { + "type": "int", + "example": "2", + "format": "compactLong" + } + } + }, + "multipleMovedToTrash": "{number,plural, =1{一封邮件已删除} other{{number} 封邮件已删除}}", + "@multipleMovedToTrash": { + "description": "Message shown after moving messages to trash. Message formatted using the plural JSON scheme.", + "placeholders": { + "number": { + "type": "int", + "example": "2", + "format": "compactLong" + } + } + }, + "multipleSelectionNeededInfo": "请先选择邮件。", + "@multipleSelectionNeededInfo": { + "description": "Short info shown when a multiple message action is triggered without selecting at least one message first." + }, + "multipleSelectionActionFailed": "无法执行操作\n详情:{details}", + "@multipleSelectionActionFailed": { + "description": "Error message when the selection action failed.", + "placeholders": { + "details": { + "type": "String", + "example": "邮箱文件夹未找到" + } + } + }, + "multipleMoveTitle": "{number,plural, =1{移动邮件} other{移动 {number} 封邮件}}", + "@multipleMoveTitle": { + "description": "Title of move dialog for multiple messages. Message formatted using the plural JSON scheme.", + "placeholders": { + "number": { + "type": "int", + "example": "2", + "format": "compactLong" + } + } + }, + "messageActionMultipleMarkSeen": "标记为已读", + "@messageActionMultipleMarkSeen": { + "description": "Action for several messages." + }, + "messageActionMultipleMarkUnseen": "标记为未读", + "@messageActionMultipleMarkUnseen": { + "description": "Action for several messages." + }, + "messageActionMultipleMarkFlagged": "标记邮件", + "@messageActionMultipleMarkFlagged": { + "description": "Action for several messages." + }, + "messageActionMultipleMarkUnflagged": "取消标记邮件", + "@messageActionMultipleMarkUnflagged": { + "description": "Action for several messages." + }, + "messageActionViewInSafeMode": "查看不含外部内容", + "@messageActionMultipleViewInSafeMode": { + "description": "Action for message." + }, + "emailSenderUnknown": "<无发件人>", + "@emailSenderUnknown": { + "description": "Shown as replacement when there is no known sender of a message." + }, + "dateRangeFuture": "未来", + "@dateRangeFuture": { + "description": "Date range title." + }, + "dateRangeTomorrow": "明天", + "@dateRangeTomorrow": { + "description": "Date range title." + }, + "dateRangeToday": "今天", + "@dateRangeToday": { + "description": "Date range title." + }, + "dateRangeYesterday": "昨天", + "@dateRangeYesterday": { + "description": "Date range title." + }, + "dateRangeCurrentWeek": "本周", + "@dateRangeCurrentWeek": { + "description": "Date range title." + }, + "dateRangeLastWeek": "上周", + "@dateRangeLastWeek": { + "description": "Date range title." + }, + "dateRangeCurrentMonth": "本月", + "@dateRangeCurrentMonth": { + "description": "Date range title." + }, + "dateRangeLastMonth": "上月", + "@dateRangeLastMonth": { + "description": "Date range title." + }, + "dateRangeCurrentYear": "今年", + "@dateRangeCurrentYear": { + "description": "Date range title." + }, + "dateRangeLongAgo": "很久以前", + "@dateRangeLongAgo": { + "description": "Date range title." + }, + "dateUndefined": "未定义", + "@dateUndefined": { + "description": "Unknown date." + }, + "dateDayToday": "今天", + "@dateDayToday": { + "description": "Message data is today." + }, + "dateDayYesterday": "昨天", + "@dateDayYesterday": { + "description": "Message data is yesterday." + }, + "dateDayLastWeekday": "上{day}", + "@dateDayLastWeekday": { + "description": "Message data is a recent weekday.", + "placeholders": { + "day": { + "type": "String", + "example": "周二" + } + } + }, + "drawerEntryAbout": "关于 Maily", + "@drawerEntryAbout": { + "description": "Menu entry for about." + }, + "drawerEntrySettings": "设置", + "@drawerEntrySettings": { + "description": "Menu entry for settings." + }, + "drawerAccountsSectionTitle": "{number,plural, =1{一个账户} other{{number} 个账户}}", + "@drawerAccountsSectionTitle": { + "description": "Title shown for accounts drop down. Message formatted using the plural JSON scheme.", + "placeholders": { + "number": { + "type": "int", + "example": "2", + "format": "compactLong" + } + } + }, + "drawerEntryAddAccount": "添加账户", + "@drawerEntryAddAccount": { + "description": "Menu entry for adding a new account." + }, + "unifiedAccountName": "统一账户", + "@unifiedAccountName": { + "description": "Name of unified account." + }, + "unifiedFolderInbox": "统一收件箱", + "@unifiedFolderInbox": { + "description": "Folder name of unified account." + }, + "unifiedFolderSent": "统一已发送", + "@unifiedFolderSent": { + "description": "Folder name of unified account." + }, + "unifiedFolderDrafts": "统一草稿", + "@unifiedFolderDrafts": { + "description": "Folder name of unified account." + }, + "unifiedFolderTrash": "统一垃圾箱", + "@unifiedFolderTrash": { + "description": "Folder name of unified account." + }, + "unifiedFolderArchive": "统一存档", + "@unifiedFolderArchive": { + "description": "Folder name of unified account." + }, + "unifiedFolderJunk": "统一垃圾邮件", + "@unifiedFolderJunk": { + "description": "Folder name of unified account." + }, + "folderInbox": "收件箱", + "@folderInbox": { + "description": "Folder name." + }, + "folderSent": "已发送", + "@folderSent": { + "description": "Folder name." + }, + "folderDrafts": "草稿", + "@folderDrafts": { + "description": "Folder name." + }, + "folderTrash": "垃圾箱", + "@folderTrash": { + "description": "Folder name." + }, + "folderArchive": "存档", + "@folderArchive": { + "description": "Folder name." + }, + "folderJunk": "垃圾邮件", + "@folderJunk": { + "description": "Folder name." + }, + "folderUnknown": "未知", + "@folderUnknown": { + "description": "Folder name for a message source without a name." + }, + "viewContentsAction": "查看内容", + "@viewContentsAction": { + "description": "Show contents of a message on a separate screen." + }, + "viewSourceAction": "查看源代码", + "@viewSourceAction": { + "description": "Show source code of a message." + }, + "detailsErrorDownloadInfo": "邮件无法下载。", + "@detailsErrorDownloadInfo": { + "description": "Info shown when an email could not be downloaded." + }, + "detailsErrorDownloadRetry": "重试", + "@detailsErrorDownloadRetry": { + "description": "Retry action shown when an email could not be downloaded." + }, + "detailsHeaderFrom": "发件人", + "@detailsHeaderFrom": { + "description": "Label for sender(s) of email." + }, + "detailsHeaderTo": "收件人", + "@detailsHeaderTo": { + "description": "Label for [to] recipient(s) of email." + }, + "detailsHeaderCc": "抄送", + "@detailsHeaderCc": { + "description": "Label for [CC] - carbon copy - recipient(s) of email." + }, + "detailsHeaderBcc": "密送", + "@detailsHeaderBcc": { + "description": "Label for [BCC] - blind carbon copy - recipient(s) of email." + }, + "detailsHeaderDate": "日期", + "@detailsHeaderDate": { + "description": "Label for date of email." + }, + "subjectUndefined": "<无主题>", + "@subjectUndefined": { + "description": "Shown instead of the subject when it is undefined." + }, + "detailsActionShowImages": "显示图片", + "@detailsActionShowImages": { + "description": "Action for showing images. Only visible when external images are blocked." + }, + "detailsNewsletterActionUnsubscribe": "取消订阅", + "@detailsNewsletterActionUnsubscribe": { + "description": "Action shown for unsubscribable newsletter." + }, + "detailsNewsletterActionResubscribe": "重新订阅", + "@detailsNewsletterActionResubscribe": { + "description": "Action shown after re-subscribable newsletter has been unsubscribed." + }, + "detailsNewsletterStatusUnsubscribed": "已取消订阅", + "@detailsNewsletterStatusUnsubscribed": { + "description": "Status shown for unsubscribed newsletter." + }, + "detailsNewsletterUnsubscribeDialogTitle": "取消订阅", + "@detailsNewsletterUnsubscribeDialogTitle": { + "description": "Title for unsubscribe newsletter dialog." + }, + "detailsNewsletterUnsubscribeDialogQuestion": "您确定要取消订阅邮件列表 {listName} 吗?", + "@detailsNewsletterUnsubscribeDialogQuestion": { + "description": "Question for unsubscribe newsletter dialog.", + "placeholders": { + "listName": { + "type": "String", + "example": "邮件列表名称" + } + } + }, + "detailsNewsletterUnsubscribeDialogAction": "取消订阅", + "@detailsNewsletterUnsubscribeDialogAction": { + "description": "Action for unsubscribe newsletter dialog." + }, + "detailsNewsletterUnsubscribeSuccessTitle": "已取消订阅", + "@detailsNewsletterUnsubscribeSuccessTitle": { + "description": "Title for dialog after unsubscribing newsletter successfully." + }, + "detailsNewsletterUnsubscribeSuccessMessage": "您已成功取消订阅邮件列表 {listName}。", + "@detailsNewsletterUnsubscribeSuccessMessage": { + "description": "Text confirmation after successfully unsubscribing a newsletter.", + "placeholders": { + "listName": { + "type": "String", + "example": "邮件列表名称" + } + } + }, + "detailsNewsletterUnsubscribeFailureTitle": "取消订阅失败", + "@detailsNewsletterUnsubscribeFailureTitle": { + "description": "Title for dialog after unsubscribing newsletter failed." + }, + "detailsNewsletterUnsubscribeFailureMessage": "抱歉,我无法自动为您取消订阅 {listName}。", + "@detailsNewsletterUnsubscribeFailureMessage": { + "description": "Text confirmation after unsubscribing a newsletter failed.", + "placeholders": { + "listName": { + "type": "String", + "example": "邮件列表名称" + } + } + }, + "detailsNewsletterResubscribeDialogTitle": "重新订阅", + "@detailsNewsletterResubscribeDialogTitle": { + "description": "Title for re-subscribe newsletter dialog." + }, + "detailsNewsletterResubscribeDialogQuestion": "您确定要重新订阅邮件列表 {listName} 吗?", + "@detailsNewsletterResubscribeDialogQuestion": { + "description": "Question for re-subscribe newsletter dialog.", + "placeholders": { + "listName": { + "type": "String", + "example": "邮件列表名称" + } + } + }, + "detailsNewsletterResubscribeDialogAction": "订阅", + "@detailsNewsletterResubscribeDialogAction": { + "description": "Action for re-subscribe newsletter dialog." + }, + "detailsNewsletterResubscribeSuccessTitle": "已订阅", + "@detailsNewsletterResubscribeSuccessTitle": { + "description": "Title for dialog after re-subscribed newsletter successfully." + }, + "detailsNewsletterResubscribeSuccessMessage": "您已成功重新订阅邮件列表 {listName}。", + "@detailsNewsletterResubscribeSuccessMessage": { + "description": "Text confirmation after successfully re-subscribing a newsletter.", + "placeholders": { + "listName": { + "type": "String", + "example": "邮件列表名称" + } + } + }, + "detailsNewsletterResubscribeFailureTitle": "订阅失败", + "@detailsNewsletterResubscribeFailureTitle": { + "description": "Title for dialog after re-subscribing newsletter failed." + }, + "detailsNewsletterResubscribeFailureMessage": "抱歉,邮件列表 {listName} 的订阅请求失败。", + "@detailsNewsletterResubscribeFailureMessage": { + "description": "Text confirmation after re-subscribing a newsletter failed.", + "placeholders": { + "listName": { + "type": "String", + "example": "邮件列表名称" + } + } + }, + "detailsSendReadReceiptAction": "发送已读回执", + "@detailsSendReadReceiptAction": { + "description": "Action to send the read receipt for the shown message." + }, + "detailsReadReceiptSentStatus": "已发送已读回执 ✔", + "@detailsReadReceiptSentStatus": { + "description": "Status after sending the read receipt for the shown message." + }, + "detailsReadReceiptSubject": "已读回执", + "@detailsReadReceiptSubject": { + "description": "Message subject for read receipts." + }, + "attachmentActionOpen": "打开", + "@attachmentActionOpen": { + "description": "Open action for attachments without interactive viewer." + }, + "attachmentDecodeError": "此附件格式或编码不受支持。\n详情:${details}", + "@attachmentDecodeError": { + "description": "Text shown when downloaded attachment could not be decoded.", + "placeholders": { + "details": { + "type": "String", + "example": "FormatException" + } + } + }, + "attachmentDownloadError": "无法下载此附件。\n详情:${details}", + "@attachmentDownloadError": { + "description": "Text shown when attachment could not be downloaded.", + "placeholders": { + "details": { + "type": "String", + "example": "NotFound" + } + } + }, + "messageActionReply": "回复", + "@messageActionReply": { + "description": "Action for single message." + }, + "messageActionReplyAll": "回复全部", + "@messageActionReplyAll": { + "description": "Action for single message." + }, + "messageActionForward": "转发", + "@messageActionForward": { + "description": "Action for single message." + }, + "messageActionForwardAsAttachment": "作为附件转发", + "@messageActionForwardAsAttachment": { + "description": "Action for single message." + }, + "messageActionForwardAttachments": "{number,plural, =1{转发附件} other{转发 {number} 个附件}}", + "@messageActionForwardAttachments": { + "description": "Action for single message to forward the given number of attachments.", + "placeholders": { + "number": { + "type": "int", + "example": "2", + "format": "compactLong" + } + } + }, + "messagesActionForwardAttachments": "转发附件", + "@messagesActionForwardAttachments": { + "description": "Action for multiple selected messages to forward all attachments of the messages." + }, + "messageActionDelete": "删除", + "@messageActionDelete": { + "description": "Action for single message." + }, + "messageActionMoveToInbox": "移至收件箱", + "@messageActionMoveToInbox": { + "description": "Action for single message." + }, + "messageActionMove": "移动", + "@messageActionMove": { + "description": "Action for single message." + }, + "messageStatusSeen": "已读", + "@messageStatusSeen": { + "description": "Status of single message." + }, + "messageStatusUnseen": "未读", + "@messageStatusUnseen": { + "description": "Status of single message." + }, + "messageStatusFlagged": "已标记", + "@messageStatusFlagged": { + "description": "Status of single message." + }, + "messageStatusUnflagged": "未标记", + "@messageStatusUnflagged": { + "description": "Status of single message." + }, + "messageActionMarkAsJunk": "标记为垃圾邮件", + "@messageActionMarkAsJunk": { + "description": "Action for single message." + }, + "messageActionMarkAsNotJunk": "标记为非垃圾邮件", + "@messageActionMarkAsNotJunk": { + "description": "Action for single message." + }, + "messageActionArchive": "存档", + "@messageActionArchive": { + "description": "Action for single message." + }, + "messageActionUnarchive": "移至收件箱", + "@messageActionUnarchive": { + "description": "Action for single message." + }, + "messageActionRedirect": "重定向", + "@messageActionRedirect": { + "description": "Action for single message." + }, + "messageActionAddNotification": "添加通知", + "@messageActionAddNotification": { + "description": "Action for single message." + }, + "resultDeleted": "已删除", + "@resultDeleted": { + "description": "Successful short snackbar message after deleting message(s)." + }, + "resultMovedToJunk": "已标记为垃圾邮件", + "@resultMovedToJunk": { + "description": "Successful short snackbar message after moving message(s) to junk." + }, + "resultMovedToInbox": "已移至收件箱", + "@resultMovedToInbox": { + "description": "Successful short snackbar message after moving message(s) to inbox." + }, + "resultArchived": "已存档", + "@resultArchived": { + "description": "Successful short snackbar message after moving message(s) to archive." + }, + "resultRedirectedSuccess": "邮件已重定向 👍", + "@resultRedirectedSuccess": { + "description": "Successful snackbar message after redirecting message to new recipient(s)." + }, + "resultRedirectedFailure": "无法重定向邮件。\n\n服务器返回以下详情:\"{details}\"", + "@resultRedirectedFailure": { + "description": "Failure snackbar message after failed to redirect message to new recipient(s).", + "placeholders": { + "details": { + "type": "String", + "example": "Invalid recipient" + } + } + }, + "redirectTitle": "重定向", + "@redirectTitle": { + "description": "Title of redirect dialog." + }, + "redirectInfo": "将此邮件重定向到以下收件人。重定向不会更改邮件内容。", + "@redirectInfo": { + "description": "Short explanation of redirect action in redirect dialog." + }, + "redirectEmailInputRequired": "您需要添加至少一个有效的电子邮件地址。", + "@redirectEmailInputRequired": { + "description": "Information when redirect is wanted but no address has been entered." + }, + "searchQueryDescription": "在 {folder} 中搜索...", + "@searchQueryDescription": { + "description": "Description of search within the given folder.", + "placeholders": { + "folder": { + "type": "String", + "example": "收件箱" + } + } + }, + "searchQueryTitle": "搜索 \"{query}\"", + "@searchQueryTitle": { + "description": "Title for a search with the given query.", + "placeholders": { + "query": { + "type": "String", + "example": "发件人姓名" + } + } + }, + "legaleseUsage": "使用 Maily 即表示您同意我们的 [PP] 和 [TC]。", + "@legaleseUsage": { + "description": "Legal info shown on initial welcome screen and later in about. [PP] is replaced with the legalesePrivacyPolicy text and [TC] with legaleseTermsAndConditions." + }, + "legalesePrivacyPolicy": "隐私政策", + "@legalesePrivacyPolicy": { + "description": "Translation of privacy policy" + }, + "legaleseTermsAndConditions": "服务条款", + "@legaleseTermsAndConditions": { + "description": "Translation of Terms & Conditions " + }, + "aboutApplicationLegalese": "Maily 是根据 GNU 通用公共许可证发布的免费软件。", + "@aboutApplicationLegalese": { + "description": "Legal info shown in about dialog." + }, + "feedbackActionSuggestFeature": "建议功能", + "@feedbackActionSuggestFeature": { + "description": "Action to suggest a feature." + }, + "feedbackActionReportProblem": "报告问题", + "@feedbackActionReportProblem": { + "description": "Action to report a problem." + }, + "feedbackActionHelpDeveloping": "帮助开发 Maily", + "@feedbackActionHelpDeveloping": { + "description": "Action to help developing." + }, + "feedbackTitle": "反馈", + "@feedbackTitle": { + "description": "Title of feedback settings screen." + }, + "feedbackIntro": "感谢您测试 Maily!", + "@feedbackIntro": { + "description": "Intro for feedback settings screen." + }, + "feedbackProvideInfoRequest": "报告问题时,请提供以下信息:", + "@feedbackProvideInfoRequest": { + "description": "Request to provide device and app information when reporting a problem." + }, + "feedbackResultInfoCopied": "已复制到剪贴板", + "@feedbackResultInfoCopied": { + "description": "Info shown after copying device and app info to clipboard." + }, + "accountsTitle": "账户", + "@accountsTitle": { + "description": "Title of accounts settings screen." + }, + "accountsActionReorder": "重新排序账户", + "@accountActionReorder": { + "description": "Action to start reordering accounts." + }, + "settingsTitle": "设置", + "@settingsTitle": { + "description": "Title of base settings screen." + }, + "settingsSecurityBlockExternalImages": "阻止外部图片", + "@settingsSecurityBlockExternalImages": { + "description": "Settings option to block external options." + }, + "settingsSecurityBlockExternalImagesDescriptionTitle": "外部图片", + "@settingsSecurityBlockExternalImagesDescriptionTitle": { + "description": "Title of dialog that shows additional information about the 'block external images' option." + }, + "settingsSecurityBlockExternalImagesDescriptionText": "电子邮件可能包含内联图片或托管在外部服务器上的图片。后者(外部图片)可能会向发件人泄露信息,例如让发件人知道您已打开邮件。此选项允许您阻止此类外部图片,从而降低泄露敏感信息的风险。您仍然可以在阅读邮件时选择按邮件加载此类图片。", + "@settingsSecurityBlockExternalImagesDescriptionText": { + "description": "Text of dialog that shows additional information about the 'block external images' option." + }, + "settingsSecurityMessageRenderingHtml": "显示完整邮件内容", + "@settingsSecurityMessageRenderingHtml": { + "description": "Option for how to render messages." + }, + "settingsSecurityMessageRenderingPlainText": "仅显示邮件文本", + "@settingsSecurityMessageRenderingPlainText": { + "description": "Option for how to render messages." + }, + "settingsSecurityLaunchModeLabel": "Maily 应如何打开链接?", + "@settingsSecurityLaunchModeLabel": { + "description": "Option for how to launch URLs." + }, + "settingsSecurityLaunchModeExternal": "在外部打开链接", + "@settingsSecurityLaunchModeExternal": { + "description": "Option for how to launch URLs." + }, + "settingsSecurityLaunchModeInApp": "在 Maily 中打开链接", + "@settingsSecurityLaunchModeInApp": { + "description": "Option for how to launch URLs." + }, + "settingsActionAccounts": "管理账户", + "@settingsActionAccounts": { + "description": "Settings action to manage accounts." + }, + "settingsActionDesign": "外观", + "@settingsActionDesign": { + "description": "Settings action to manage the visualization of the app." + }, + "settingsActionFeedback": "提供反馈", + "@settingsActionFeedback": { + "description": "Settings action to provide feedback about the app." + }, + "settingsActionWelcome": "显示欢迎界面", + "@settingsActionWelcome": { + "description": "Settings action to show welcome screen of the app again." + }, + "settingsReadReceipts": "已读回执", + "@settingsReadReceipts": { + "description": "Settings action to customize read receipts." + }, + "readReceiptsSettingsIntroduction": "您是否希望显示已读回执请求?", + "@readReceiptsSettingsIntroduction": { + "description": "Introduction text for managing read receipt requests." + }, + "readReceiptOptionAlways": "始终显示", + "@readReceiptOptionAlways": { + "description": "Display option for read receipt requests." + }, + "readReceiptOptionNever": "从不显示", + "@readReceiptOptionNever": { + "description": "Display option for read receipt requests." + }, + "settingsFolders": "文件夹", + "@settingsFolders": { + "description": "Settings action to customize folders." + }, + "folderNamesIntroduction": "您喜欢使用什么名称来命名文件夹?", + "@folderNamesIntroduction": { + "description": "Introduction for folder names setting." + }, + "folderNamesSettingLocalized": "Maily 提供的名称", + "@folderNamesSettingLocalized": { + "description": "Folder name setting option." + }, + "folderNamesSettingServer": "服务提供的名称", + "@folderNamesSettingServer": { + "description": "Folder name setting option." + }, + "folderNamesSettingCustom": "自定义名称", + "@folderNamesSettingCustom": { + "description": "Folder name setting option." + }, + "folderNamesEditAction": "编辑自定义名称", + "@folderNamesEditAction": { + "description": "Action to specify custom folder names." + }, + "folderNamesCustomTitle": "自定义名称", + "@folderNamesCustomTitle": { + "description": "Title of dialog to specify custom folder names." + }, + "folderAddAction": "创建文件夹", + "@folderAddAction": { + "description": "Action to create a new folder." + }, + "folderAddTitle": "创建文件夹", + "@folderAddTitle": { + "description": "Dialog title when creating a new folder." + }, + "folderAddNameLabel": "名称", + "@folderAddNameLabel": { + "description": "Label for input field for the folder name." + }, + "folderAddNameHint": "新文件夹名称", + "@folderAddNameHint": { + "description": "Hint for input field for the folder name." + }, + "folderAccountLabel": "账户", + "@folderAddAccountLabel": { + "description": "Label to select the current account." + }, + "folderMailboxLabel": "文件夹", + "@folderAddParentFolderLabel": { + "description": "Label to select the current folder." + }, + "folderAddResultSuccess": "文件夹已创建 😊", + "@folderAddResultSuccess": { + "description": "Info for showing the creation success." + }, + "folderAddResultFailure": "无法创建文件夹。\n\n服务器返回:{details}", + "@folderAddResultFailure": { + "description": "Info for showing a folder creation error.", + "placeholders": { + "details": { + "type": "String", + "example": "无效名称" + } + } + }, + "folderDeleteAction": "删除", + "@folderDeleteAction": { + "description": "Action to delete an existing folder." + }, + "folderDeleteConfirmTitle": "确认", + "@folderDeleteConfirmTitle": { + "description": "Dialog title to confirm deleting a folder." + }, + "folderDeleteConfirmText": "您确定要删除文件夹 {name} 吗?", + "@folderDeleteConfirmText": { + "description": "Dialog text to confirm deleting a folder.", + "placeholders": { + "name": { + "type": "String", + "example": "我的自定义文件夹" + } + } + }, + "folderDeleteResultSuccess": "文件夹已删除。", + "@folderDeleteResultSuccess": { + "description": "Info for showing the creation success." + }, + "folderDeleteResultFailure": "无法删除文件夹。\n\n服务器返回:{details}", + "@folderDeleteResultFailure": { + "description": "Info for showing a folder deletion error.", + "placeholders": { + "details": { + "type": "String", + "example": "无效名称" + } + } + }, + "settingsDevelopment": "开发设置", + "@settingsDevelopment": { + "description": "Settings action to specify the development options." + }, + "developerModeTitle": "开发模式", + "@developerModeTitle": { + "description": "Title of the development mode section." + }, + "developerModeIntroduction": "如果启用开发模式,您将能够查看邮件的源代码并将文本附件转换为邮件。", + "@developerModeIntroduction": { + "description": "Text explaining the development mode." + }, + "developerModeEnable": "启用开发模式", + "@developerModeEnable": { + "description": "Text in checkbox to enable the development mode." + }, + "developerShowAsEmail": "转换为邮件格式", + "@developerShowAsEmail": { + "description": "Action to convert text into an email." + }, + "developerShowAsEmailFailed": "此文本无法转换为 MIME 邮件。", + "@developerShowAsEmailFailed": { + "description": "Text shown when text cannot be converted into an email." + }, + "designTitle": "外观设置", + "@designTitle": { + "description": "Title of design settings screen." + }, + "designSectionThemeTitle": "主题", + "@designSectionThemeTitle": { + "description": "Title of theme section on design settings screen." + }, + "designThemeOptionLight": "浅色", + "@designThemeOptionLight": { + "description": "Theme option." + }, + "designThemeOptionDark": "深色", + "@designThemeOptionDark": { + "description": "Theme option." + }, + "designThemeOptionSystem": "系统", + "@designThemeOptionSystem": { + "description": "Theme option." + }, + "designThemeOptionCustom": "自定义", + "@designThemeOptionCustom": { + "description": "Theme option." + }, + "designSectionCustomTitle": "启用深色主题", + "@designSectionCustomTitle": { + "description": "Title of custom theme option section on design settings screen." + }, + "designThemeCustomStart": "从 {time} 开始", + "@designThemeCustomStart": { + "description": "Start time of custom theme setting.", + "placeholders": { + "time": { + "type": "String", + "example": "晚上10点" + } + } + }, + "designThemeCustomEnd": "到 {time} 结束", + "@designThemeCustomEnd": { + "description": "End time of custom theme setting.", + "placeholders": { + "time": { + "type": "String", + "example": "早上7点" + } + } + }, + "designSectionColorTitle": "配色方案", + "@designSectionColorTitle": { + "description": "Title of color section on design settings screen." + }, + "securitySettingsTitle": "安全", + "@securitySettingsTitle": { + "description": "Title of security settings screen." + }, + "securitySettingsIntro": "根据您的个人需求调整安全设置。", + "@securitySettingsIntro": { + "description": "Introduction of security settings screen." + }, + "securityUnlockWithFaceId": "使用面容 ID 解锁 Maily。", + "@securityUnlockWithFaceId": { + "description": "iOS-specific unlock reason." + }, + "securityUnlockWithTouchId": "使用触控 ID 解锁 Maily。", + "@securityUnlockWithTouchId": { + "description": "iOS-specific unlock reason." + }, + "securityUnlockReason": "解锁 Maily。", + "@securityUnlockReason": { + "description": "Generic unlock reason." + }, + "securityUnlockDisableReason": "解锁 Maily 以关闭锁定。", + "@securityUnlockDisableReason": { + "description": "Generic unlock disable reason." + }, + "securityUnlockNotAvailable": "您的设备不支持生物识别功能,可能需要先设置解锁选项。", + "@securityUnlockNotAvailable": { + "description": "Message when biometric authentication is not available." + }, + "securityUnlockLabel": "锁定 Maily", + "@securityUnlockLabel": { + "description": "Label of biometric authentication lock feature." + }, + "securityUnlockDescriptionTitle": "锁定 Maily", + "@securityUnlockDescriptionTitle": { + "description": "Title to explain lock feature via biometric authentication." + }, + "securityUnlockDescriptionText": "您可以选择锁定对 Maily 的访问,这样即使他人访问您的设备也无法阅读您的邮件。", + "@securityUnlockDescriptionText": { + "description": "Text explaining lock feature via biometric authentication." + }, + "securityLockImmediately": "立即锁定", + "@securityLockImmediately": { + "description": "Lock timing option." + }, + "securityLockAfter5Minutes": "5分钟后锁定", + "@securityLockAfter5Minutes": { + "description": "Lock timing option." + }, + "securityLockAfter30Minutes": "30分钟后锁定", + "@securityLockAfter30Minutes": { + "description": "Lock timing option." + }, + "lockScreenTitle": "Maily 已锁定", + "@lockScreenTitle": { + "description": "Title of lock screen." + }, + "lockScreenIntro": "Maily 已锁定,请验证身份以继续。", + "@lockScreenIntro": { + "description": "Text on lock screen." + }, + "lockScreenUnlockAction": "解锁", + "@lockScreenUnlockAction": { + "description": "Action to unlock on lock screen." + }, + "addAccountTitle": "添加账户", + "@addAccountTitle": { + "description": "Title of add account screen." + }, + "addAccountEmailLabel": "邮箱", + "@addAccountEmailLabel": { + "description": "Label and section header of email address input field." + }, + "addAccountEmailHint": "请输入您的邮箱地址", + "@addAccountEmailHint": { + "description": "Hint text of email address input field." + }, + "addAccountResolvingSettingsLabel": "正在解析 {email} 的设置...", + "@addAccountResolvingSettingsLabel": { + "description": "Label shown while resolving the settings for the specified email address.", + "placeholders": { + "email": { + "type": "String", + "example": "someone@domain.com" + } + } + }, + "addAccountResolvedSettingsWrongAction": "不在 {provider} 上?", + "@addAccountResolvedSettingsWrongAction": { + "description": "Button text shown for the user to edit server settings manually when the resolving was successful but turned out a different than expected provider name.", + "placeholders": { + "provider": { + "type": "String", + "example": "gmail" + } + } + }, + "addAccountResolvingSettingsFailedInfo": "无法解析 {email}。请返回修改或手动设置账户。", + "@addAccountResolvingSettingsFailedInfo": { + "description": "Info shown after resolving the settings for the specified email address failed.", + "placeholders": { + "email": { + "type": "String", + "example": "someone@domain.com" + } + } + }, + "addAccountEditManuallyAction": "手动编辑", + "@addAccountEditManuallyAction": { + "description": "Action shown after account settings could not be automatically be discovered." + }, + "addAccountPasswordLabel": "密码", + "@addAccountPasswordLabel": { + "description": "Label and section header of password input field." + }, + "addAccountPasswordHint": "请输入您的密码", + "@addAccountPasswordHint": { + "description": "Hint text of password input field." + }, + "addAccountApplicationPasswordRequiredInfo": "此提供商要求您设置应用专用密码。", + "@addAccountApplicationPasswordRequiredInfo": { + "description": "Text shown when the provider of the email account requires app specific passwords to be set up." + }, + "addAccountApplicationPasswordRequiredButton": "创建应用专用密码", + "@addAccountApplicationPasswordRequiredButton": { + "description": "Button text for setting up app specific password." + }, + "addAccountApplicationPasswordRequiredAcknowledged": "我已有应用密码", + "@addAccountApplicationPasswordRequiredAcknowledged": { + "description": "Acknowledgement to be confirmed by user to acknowledge the fact that an app specific password is required." + }, + "addAccountVerificationStep": "验证", + "@addAccountVerificationStep": { + "description": "Section header of verification/log in step." + }, + "addAccountSetupAccountStep": "账户设置", + "@addAccountSetupAccountStep": { + "description": "Section header of account setup step." + }, + "addAccountVerifyingSettingsLabel": "正在验证 {email}...", + "@addAccountVerifyingSettingsLabel": { + "description": "Info shown while the account settings for the given email are verified.", + "placeholders": { + "email": { + "type": "String", + "example": "someone@domain.com" + } + } + }, + "addAccountVerifyingSuccessInfo": "已成功登录 {email}。", + "@addAccountVerifyingSuccessInfo": { + "description": "Info shown after the account settings for the given email have been verified.", + "placeholders": { + "email": { + "type": "String", + "example": "someone@domain.com" + } + } + }, + "addAccountVerifyingFailedInfo": "抱歉,出现问题。请检查您的邮箱 {email} 和密码。", + "@addAccountVerifyingFailedInfo": { + "description": "Info shown after the account settings for the given email could not be verified.", + "placeholders": { + "email": { + "type": "String", + "example": "someone@domain.com" + } + } + }, + "addAccountOauthOptionsText": "使用 {provider} 登录或创建应用专用密码。", + "@addAccountOauthOptionsText": { + "description": "Info shown oauth process fails and the user can try again or use an app-specific password.", + "placeholders": { + "provider": { + "type": "String", + "example": "Mailbox.org" + } + } + }, + "addAccountOauthSignIn": "使用 {provider} 登录", + "@addAccountOauthSignIn": { + "description": "Label of button to sign in via oauth with the given provider.", + "placeholders": { + "provider": { + "type": "String", + "example": "Mailbox.org" + } + } + }, + "addAccountOauthSignInGoogle": "使用 Google 登录", + "@addAccountOauthSignInGoogle": { + "description": "Label of button to sign in via oauth with the Google." + }, + "addAccountOauthSignInWithAppPassword": "或者,创建应用密码进行登录。", + "@addAccountOauthSignInWithAppPassword": { + "description": "Info to set up app specific password." + }, + "accountAddImapAccessSetupMightBeRequired": "您的提供商可能要求您手动设置电子邮件应用的访问权限。", + "@accountAddImapAccessSetupMightBeRequired": { + "description": "Info shown when login fails for a provider that is know to require manual activation of IMAP access." + }, + "addAccountSetupImapAccessButtonLabel": "设置邮箱访问权限", + "@addAccountSetupImapAccessButtonLabel": { + "description": "Label of button to launch website with instructions." + }, + "addAccountNameOfUserLabel": "您的姓名", + "@addAccountNameOfUserLabel": { + "description": "Label for user name input field." + }, + "addAccountNameOfUserHint": "收件人将看到的姓名", + "@addAccountNameOfUserHint": { + "description": "Hint for user name input field." + }, + "addAccountNameOfAccountLabel": "账户名称", + "@addAccountNameOfAccountLabel": { + "description": "Label for account name input field." + }, + "addAccountNameOfAccountHint": "请输入您的账户名称", + "@addAccountNameOfAccountHint": { + "description": "Hint for account name input field." + }, + "editAccountTitle": "编辑 {name}", + "@editAccountTitle": { + "description": "Title for screen when editing the account with the given name.", + "placeholders": { + "name": { + "type": "String", + "example": "domain.com" + } + } + }, + "editAccountFailureToConnectInfo": "Maily 无法连接到 {name}。", + "@editAccountFailureToConnectInfo": { + "description": "Info about not being able to connect to the named service. Most common causes are temporary network problems or a changed password.", + "placeholders": { + "name": { + "type": "String", + "example": "domain.com" + } + } + }, + "editAccountFailureToConnectRetryAction": "重试", + "@editAccountFailureToConnectRetryAction": { + "description": "Action to retry connecting to service again." + }, + "editAccountFailureToConnectChangePasswordAction": "修改密码", + "@editAccountFailureToConnectChangePasswordAction": { + "description": "Action to change password for the service." + }, + "editAccountFailureToConnectFixedTitle": "已连接", + "@editAccountFailureToConnectFixedTitle": { + "description": "Title of dialog shown after successfully connecting a failed account again." + }, + "editAccountFailureToConnectFixedInfo": "账户已重新连接。", + "@editAccountFailureToConnectFixedInfo": { + "description": "Message of dialog shown after successfully connecting a failed account again." + }, + "editAccountIncludeInUnifiedLabel": "包含在统一账户中", + "@editAccountIncludeInUnifiedLabel": { + "description": "Label for opting this account in/out of the unified account." + }, + "editAccountAliasLabel": "{email} 的别名邮箱地址:", + "@editAccountAliasLabel": { + "description": "Label for any alias addresses that have been specified for the given email address.", + "placeholders": { + "email": { + "type": "String", + "example": "someone@domain.com" + } + } + }, + "editAccountNoAliasesInfo": "此账户暂无已知别名。", + "@editAccountNoAliasesInfo": { + "description": "Info when there have been no aliases specified for this account." + }, + "editAccountAliasRemoved": "{email} 别名已移除", + "@editAccountAliasRemoved": { + "description": "Info given after an alias was removed.", + "placeholders": { + "email": { + "type": "String", + "example": "someone@domain.com" + } + } + }, + "editAccountAddAliasAction": "添加别名", + "@editAccountAddAliasAction": { + "description": "Button text for adding an alias to this account." + }, + "editAccountPlusAliasesSupported": "支持 + 别名", + "@editAccountPlusAliasesSupported": { + "description": "Info shown when + aliases are supported by this account." + }, + "editAccountCheckPlusAliasAction": "测试 + 别名支持", + "@editAccountCheckPlusAliasAction": { + "description": "Button text for testing of + aliases are supported by this account." + }, + "editAccountBccMyself": "密送自己", + "@editAccountBccMyself": { + "description": "Label of checkbox to enable the BCC-MYSELF-Feature." + }, + "editAccountBccMyselfDescriptionTitle": "密送自己", + "@editAccountBccMyselfDescriptionTitle": { + "description": "Title of alert explaining the BCC-MYSELF-Feature." + }, + "editAccountBccMyselfDescriptionText": "您可以使用\"密送自己\"功能,自动在您从此账户发送的每封邮件中密送一份给自己。通常这不太必要,因为所有外发邮件都会存储在\"已发送\"文件夹中。", + "@editAccountBccMyselfDescriptionText": { + "description": "Explanation of the the BCC-MYSELF-Feature." + }, + "editAccountServerSettingsAction": "编辑服务器设置", + "@editAccountServerSettingsAction": { + "description": "Button text for editing the server settings of this account." + }, + "editAccountDeleteAccountAction": "删除账户", + "@editAccountDeleteAccountAction": { + "description": "Button text for deleting this account." + }, + "editAccountDeleteAccountConfirmationTitle": "确认", + "@editAccountDeleteAccountConfirmationTitle": { + "description": "Title for confirmation dialog when deleting this account." + }, + "editAccountDeleteAccountConfirmationQuery": "您确定要删除账户 {name} 吗?", + "@editAccountDeleteAccountConfirmationQuery": { + "description": "Request to confirm when deleting this account.", + "placeholders": { + "name": { + "type": "String", + "example": "domain.com" + } + } + }, + "editAccountTestPlusAliasTitle": "{name} 的 + 别名", + "@editAccountTestPlusAliasTitle": { + "description": "Title for dialog shown while testing + alias support", + "placeholders": { + "name": { + "type": "String", + "example": "domain.com" + } + } + }, + "editAccountTestPlusAliasStepIntroductionTitle": "介绍", + "@editAccountTestPlusAliasStepIntroductionTitle": { + "description": "Title for introducing concept of + aliases." + }, + "editAccountTestPlusAliasStepIntroductionText": "您的账户 {accountName} 可能支持所谓的 + 别名,如 {example}。\n+ 别名可帮助您保护身份并抵御垃圾邮件。\n要测试此项,将向生成的地址发送一封测试邮件。如果邮件到达,说明您的提供商支持 + 别名,您可以在撰写新邮件时按需生成它们。", + "@editAccountTestPlusAliasStepIntroductionText": { + "description": "Introduction text for explaining the concept of + aliases.", + "placeholders": { + "accountName": { + "type": "String", + "example": "domain.com" + }, + "example": { + "type": "String", + "example": "someone+example@domain.com" + } + } + }, + "editAccountTestPlusAliasStepTestingTitle": "测试中", + "@editAccountTestPlusAliasStepTestingTitle": { + "description": "Title while testing concept of + aliases." + }, + "editAccountTestPlusAliasStepResultTitle": "结果", + "@editAccountTestPlusAliasStepResultTitle": { + "description": "Title after testing concept of + aliases." + }, + "editAccountTestPlusAliasStepResultSuccess": "您的账户 {name} 支持 + 别名。", + "@editAccountTestPlusAliasStepResultSuccess": { + "description": "Result when account supports + aliases", + "placeholders": { + "name": { + "type": "String", + "example": "domain.com" + } + } + }, + "editAccountTestPlusAliasStepResultNoSuccess": "您的账户 {name} 不支持 + 别名。", + "@editAccountTestPlusAliasStepResultNoSuccess": { + "description": "Result when account does not supports + aliases", + "placeholders": { + "name": { + "type": "String", + "example": "domain.com" + } + } + }, + "editAccountAddAliasTitle": "添加别名", + "@editAccountAddAliasTitle": { + "description": "Title when adding new alias." + }, + "editAccountEditAliasTitle": "编辑别名", + "@editAccountEditAliasTitle": { + "description": "Title when editing alias." + }, + "editAccountAliasAddAction": "添加", + "@editAccountAliasAddAction": { + "description": "Action when adding new alias." + }, + "editAccountAliasUpdateAction": "更新", + "@editAccountAliasUpdateAction": { + "description": "Action when editing alias." + }, + "editAccountEditAliasNameLabel": "别名名称", + "@editAccountEditAliasNameLabel": { + "description": "Label for alias name input field." + }, + "editAccountEditAliasEmailLabel": "别名邮箱", + "@editAccountEditAliasEmailLabel": { + "description": "Label for alias email input field." + }, + "editAccountEditAliasEmailHint": "您的别名邮箱地址", + "@editAccountEditAliasEmailHint": { + "description": "Hint for alias email input field." + }, + "editAccountEditAliasDuplicateError": "{email} 已存在别名。", + "@editAccountEditAliasDuplicateError": { + "description": "Error when the alias email is already known", + "placeholders": { + "email": { + "type": "String", + "example": "you@domain.com" + } + } + }, + "editAccountEnableLogging": "启用日志", + "@editAccountEnableLogging": { + "description": "Label developer mode option to enable logging." + }, + "editAccountLoggingEnabled": "日志已启用,请重启", + "@editAccountLoggingEnabled": { + "description": "Short message shown after the log has been enabled." + }, + "editAccountLoggingDisabled": "日志已禁用,请重启", + "@editAccountLoggingDisabled": { + "description": "Short message shown after the log has been disabled." + }, + "accountDetailsFallbackTitle": "服务器设置", + "@accountDetailsFallbackTitle": { + "description": "Title shown when account name is not set." + }, + "errorTitle": "错误", + "@errorTitle": { + "description": "Title for error dialogs." + }, + "accountProviderStepTitle": "电子邮件服务提供商", + "@accountProviderStepTitle": { + "description": "Step to select a provider." + }, + "accountProviderCustom": "其他电子邮件服务", + "@accountProviderCustom": { + "description": "When no standard provider is chosen." + }, + "accountDetailsErrorHostProblem": "Maily 无法连接到指定的邮件服务器。请检查您的传入服务器设置 \"{incomingHost}\" 和传出服务器设置 \"{outgoingHost}\"。", + "@accountDetailsErrorHostProblem": { + "description": "Error details when no connection to server could be established at all", + "placeholders": { + "incomingHost": { + "type": "String", + "example": "imap@domain.com" + }, + "outgoingHost": { + "type": "String", + "example": "smtp@domain.com" + } + } + }, + "accountDetailsErrorLoginProblem": "无法登录。请检查您的用户名 \"{userName}\" 和密码 \"{password}\"。", + "@accountDetailsErrorLoginProblem": { + "description": "Error details when login fails", + "placeholders": { + "userName": { + "type": "String", + "example": "email@domain.com" + }, + "password": { + "type": "String", + "example": "secret" + } + } + }, + "accountDetailsUserNameLabel": "登录名", + "@accountDetailsUserNameLabel": { + "description": "Label for user name input field." + }, + "accountDetailsUserNameHint": "您的用户名(如与邮箱不同)", + "@accountDetailsUserNameHint": { + "description": "Hint for user name input field." + }, + "accountDetailsPasswordLabel": "登录密码", + "@accountDetailsPasswordLabel": { + "description": "Label for password input field." + }, + "accountDetailsPasswordHint": "您的密码", + "@accountDetailsPasswordHint": { + "description": "Hint for user password input field." + }, + "accountDetailsBaseSectionTitle": "基础设置", + "@accountDetailsBaseSectionTitle": { + "description": "Title of base settings section." + }, + "accountDetailsIncomingLabel": "传入服务器", + "@accountDetailsIncomingLabel": { + "description": "Label for incoming server domain field." + }, + "accountDetailsIncomingHint": "域名,如 imap.domain.com", + "@accountDetailsIncomingHint": { + "description": "Hint for incoming server domain field." + }, + "accountDetailsOutgoingLabel": "传出服务器", + "@accountDetailsOutgoingLabel": { + "description": "Label for outgoing server domain field." + }, + "accountDetailsOutgoingHint": "域名,如 smtp.domain.com", + "@accountDetailsOutgoingHint": { + "description": "Hint for outgoing server domain field." + }, + "accountDetailsAdvancedIncomingSectionTitle": "高级传入设置", + "@accountDetailsAdvancedIncomingSectionTitle": { + "description": "Title of incoming settings section." + }, + "accountDetailsIncomingServerTypeLabel": "传入类型:", + "@accountDetailsIncomingServerTypeLabel": { + "description": "Label for server type dropdown." + }, + "accountDetailsOptionAutomatic": "自动", + "@accountDetailsOptionAutomatic": { + "description": "Option when the server type/security should be discovered automatically." + }, + "accountDetailsIncomingSecurityLabel": "传入安全:", + "@accountDetailsIncomingSecurityLabel": { + "description": "Label for server security dropdown." + }, + "accountDetailsSecurityOptionNone": "明文(无加密)", + "@accountDetailsSecurityOptionNone": { + "description": "Label for security dropdown option without encryption." + }, + "accountDetailsIncomingPortLabel": "传入端口", + "@accountDetailsIncomingPortLabel": { + "description": "Label for incoming port input field." + }, + "accountDetailsPortHint": "留空以自动确定", + "@accountDetailsPortHint": { + "description": "Hint for port input fields." + }, + "accountDetailsIncomingUserNameLabel": "传入用户名", + "@accountDetailsIncomingUserNameLabel": { + "description": "Label for incoming user name input field." + }, + "accountDetailsAlternativeUserNameHint": "您的用户名(如与上方不同)", + "@accountDetailsAlternativeUserNameHint": { + "description": "Label for alternative user name input fields." + }, + "accountDetailsIncomingPasswordLabel": "传入密码", + "@accountDetailsIncomingPasswordLabel": { + "description": "Label for incoming password input field." + }, + "accountDetailsAlternativePasswordHint": "您的密码(如与上方不同)", + "@accountDetailsAlternativePasswordHint": { + "description": "Label for alternative user name input fields." + }, + "accountDetailsAdvancedOutgoingSectionTitle": "高级传出设置", + "@accountDetailsAdvancedOutgoingSectionTitle": { + "description": "Title of incoming settings section." + }, + "accountDetailsOutgoingServerTypeLabel": "传出类型:", + "@accountDetailsOutgoingServerTypeLabel": { + "description": "Label for server type dropdown." + }, + "accountDetailsOutgoingSecurityLabel": "传出安全:", + "@accountDetailsOutgoingSecurityLabel": { + "description": "Label for server security dropdown." + }, + "accountDetailsOutgoingPortLabel": "传出端口", + "@accountDetailsOutgoingPortLabel": { + "description": "Label for outgoing port input field." + }, + "accountDetailsOutgoingUserNameLabel": "传出用户名", + "@accountDetailsOutgoingUserNameLabel": { + "description": "Label for outgoing user name input field." + }, + "accountDetailsOutgoingPasswordLabel": "传出密码", + "@accountDetailsOutgoingPasswordLabel": { + "description": "Label for outgoing password input field." + }, + "composeTitleNew": "新建邮件", + "@composeTitleNew": { + "description": "Title for compose screen when a new message is created." + }, + "composeTitleForward": "转发", + "@composeTitleForward": { + "description": "Title for compose screen when a message is forwarded." + }, + "composeTitleReply": "回复", + "@composeTitleReply": { + "description": "Title for compose screen when a message is replied." + }, + "composeEmptyMessage": "空邮件", + "@composeEmptyMessage": { + "description": "Message text for message without text." + }, + "composeWarningNoSubject": "您尚未指定主题。确定要发送无主题的邮件吗?", + "@composeWarningNoSubject": { + "description": "Warning shown when trying to send a message without subject." + }, + "composeActionSentWithoutSubject": "发送", + "@composeActionSentWithoutSubject": { + "description": "Action to send message without subject." + }, + "composeMailSendSuccess": "邮件已发送 😊", + "@composeMailSendSuccess": { + "description": "Notification shown after a mail was sent successfully." + }, + "composeSendErrorInfo": "抱歉,您的邮件无法发送。收到以下错误:\n{details}。", + "@composeSendErrorInfo": { + "description": "Error shown when email could not be send", + "placeholders": { + "details": { + "type": "String", + "example": "554-Reject due to policy restrictions." + } + } + }, + "composeRequestReadReceiptAction": "请求已读回执", + "@composeRequestReadReceiptAction": { + "description": "Action to request a read receipt for this message" + }, + "composeSaveDraftAction": "保存为草稿", + "@composeSaveDraftAction": { + "description": "Action to save a message as draft" + }, + "composeMessageSavedAsDraft": "草稿已保存", + "@composeMessageSavedAsDraft": { + "description": "Info shown when message was saved as draft successfully" + }, + "composeMessageSavedAsDraftErrorInfo": "您的草稿无法保存,错误如下:\n{details}", + "@composeMessageSavedAsDraftErrorInfo": { + "description": "Info shown when message could not be saved as a draft", + "placeholders": { + "details": { + "type": "String", + "example": "Invalid header: XX" + } + } + }, + "composeConvertToPlainTextEditorAction": "转换为纯文本", + "@composeConvertToPlainTextEditorAction": { + "description": "Action to write a plain text message instead of an html message" + }, + "composeConvertToHtmlEditorAction": "转换为富文本(HTML)", + "@composeConvertToHtmlEditorAction": { + "description": "Action to write a HTML message instead of a text message" + }, + "composeContinueEditingAction": "继续编辑", + "@composeContinueEditingAction": { + "description": "Action to return to compose screen when draft cannot be saved" + }, + "composeCreatePlusAliasAction": "创建新的 + 别名...", + "@composeCreatePlusAliasAction": { + "description": "Action to create a new + alias as a sender" + }, + "composeSenderHint": "发件人", + "@composeSenderHint": { + "description": "Hint for From input field" + }, + "composeRecipientHint": "收件人邮箱", + "@composeRecipientHint": { + "description": "Hint for To input field" + }, + "composeSubjectLabel": "主题", + "@composeSubjectLabel": { + "description": "Label for Subject input field" + }, + "composeSubjectHint": "邮件主题", + "@composeSubjectHint": { + "description": "Hint for Subject input field" + }, + "composeAddAttachmentAction": "添加", + "@composeAddAttachmentAction": { + "description": "Action to add an attachment - should be short!" + }, + "composeRemoveAttachmentAction": "移除 {name}", + "@composeRemoveAttachmentAction": { + "description": "Action to remove an attachment", + "placeholders": { + "name": { + "type": "String", + "example": "funny.png" + } + } + }, + "composeLeftByMistake": "误离开?", + "@composeLeftByMistake": { + "description": "Info shown after leaving compose screen to allow an easy return" + }, + "attachTypeFile": "文件", + "@attachTypeFile": { + "description": "Attachment type to add" + }, + "attachTypePhoto": "照片", + "@attachTypePhoto": { + "description": "Attachment type to add" + }, + "attachTypeVideo": "视频", + "@attachTypeVideo": { + "description": "Attachment type to add" + }, + "attachTypeAudio": "音频", + "@attachTypeAudio": { + "description": "Attachment type to add" + }, + "attachTypeLocation": "位置", + "@attachTypeLocation": { + "description": "Attachment type to add" + }, + "attachTypeGif": "动图", + "@attachTypeGif": { + "description": "Attachment type to add" + }, + "attachTypeGifSearch": "搜索 GIPHY", + "@attachTypeGifSearch": { + "description": "Text for searching in GIPHY service for GIF" + }, + "attachTypeSticker": "贴纸", + "@attachTypeSticker": { + "description": "Attachment type to add" + }, + "attachTypeStickerSearch": "搜索 GIPHY", + "@attachTypeStickerSearch": { + "description": "Text for searching in GIPHY service for sticker" + }, + "attachTypeAppointment": "日程", + "@attachTypeAppointment": { + "description": "Attachment type to add" + }, + "languageSettingTitle": "语言", + "@languageSettingTitle": { + "description": "Title of language setting screen" + }, + "languageSettingLabel": "选择 Maily 的语言:", + "@languageSettingLabel": { + "description": "Label for language setting dropdown screen" + }, + "languageSettingSystemOption": "系统语言", + "@languageSettingSystemOption": { + "description": "Option to use the system's settings" + }, + "languageSettingConfirmationTitle": "使用中文作为 Maily 语言?", + "@languageSettingConfirmationTitle": { + "description": "Title of dialog to confirm when switching the language" + }, + "languageSettingConfirmationQuery": "请确认使用中文作为您选择的语言。", + "@languageSettingConfirmationQuery": { + "description": "Query to be confirmed by user when switching the language" + }, + "languageSetInfo": "Maily 现在显示为中文。", + "@languageSetInfo": { + "description": "Info text after having specified the language." + }, + "languageSystemSetInfo": "Maily 将使用系统语言,如果系统语言不支持则使用英语。", + "@languageSystemSetInfo": { + "description": "Info text after choosing the system's language for Maily." + }, + "swipeSettingTitle": "滑动手势", + "@swipeSettingTitle": { + "description": "Title of swipe setting screen" + }, + "swipeSettingLeftToRightLabel": "从左向右滑动", + "@swipeSettingLeftToRightLabel": { + "description": "Label for swipe gesture" + }, + "swipeSettingRightToLeftLabel": "从右向左滑动", + "@swipeSettingRightToLeftLabel": { + "description": "Label for swipe gesture" + }, + "swipeSettingChangeAction": "更改", + "@swipeSettingChangeAction": { + "description": "Action for changing a swipe gesture" + }, + "signatureSettingsTitle": "签名", + "@signatureSettingsTitle": { + "description": "Title of signature setting screen" + }, + "signatureSettingsComposeActionsInfo": "为以下邮件类型启用签名:", + "@signatureSettingsComposeActionsInfo": { + "description": "Text before selecting message types for a signature (new, forward, reply)." + }, + "signatureSettingsAccountInfo": "您可以在账户设置中指定特定账户的签名。", + "@signatureSettingsAccountInfo": { + "description": "Informational text before showing link to account settings." + }, + "signatureSettingsAddForAccount": "为 {account} 添加签名", + "@signatureSettingsAddForAccount": { + "description": "Action to add account specific signature.", + "placeholders": { + "account": { + "type": "String", + "example": "domain.com" + } + } + }, + "defaultSenderSettingsTitle": "默认发件人", + "@defaultSenderSettingsTitle": { + "description": "Title of default sender setting screen" + }, + "defaultSenderSettingsLabel": "选择新邮件的发件人。", + "@defaultSenderSettingsLabel": { + "description": "Description of default sender setting screen" + }, + "defaultSenderSettingsFirstAccount": "第一个账户 ({email})", + "@defaultSenderSettingsFirstAccount": { + "description": "The default sender is the one from the first account", + "placeholders": { + "email": { + "type": "String", + "example": "email@domain.com" + } + } + }, + "defaultSenderSettingsAliasInfo": "您可以在 [AS] 中设置邮箱别名地址。", + "@defaultSenderSettingsAliasInfo": { + "description": "Info about that email aliases can be set up in the account settings. [AS] is the place, where defaultSenderSettingsAliasAccountSettings is included as a link." + }, + "defaultSenderSettingsAliasAccountSettings": "账户设置", + "@defaultSenderSettingsAliasAccountSettings": { + "description": "Text of the account settings link." + }, + "replySettingsTitle": "邮件格式", + "@replySettingsTitle": { + "description": "Reply settings title." + }, + "replySettingsIntro": "默认情况下,您希望以什么格式回复或转发邮件?", + "@replySettingsIntro": { + "description": "Reply settings introduction text." + }, + "replySettingsFormatHtml": "始终使用富格式(HTML)", + "@replySettingsFormatHtml": { + "description": "Reply settings option." + }, + "replySettingsFormatSameAsOriginal": "使用与原始邮件相同的格式", + "@replySettingsFormatSameAsOriginal": { + "description": "Reply settings option." + }, + "replySettingsFormatPlainText": "始终使用纯文本", + "@replySettingsFormatPlainText": { + "description": "Reply settings option." + }, + "moveTitle": "移动邮件", + "@moveTitle": { + "description": "Title of move to mailbox dialog." + }, + "moveSuccess": "邮件已移至 {mailbox}。", + "@moveSuccess": { + "description": "Message after moving message successfully.", + "placeholders": { + "mailbox": { + "type": "String", + "example": "收件箱" + } + } + }, + "editorArtInputLabel": "您的输入", + "@editorArtInputLabel": { + "description": "Label of input field when inserting a formatted text" + }, + "editorArtInputHint": "在此输入文本", + "@editorArtInputHint": { + "description": "Hint of input field when inserting a formatted text" + }, + "editorArtWaitingForInputHint": "等待输入...", + "@editorArtWaitingForInputHint": { + "description": "Text shown while waiting for input" + }, + "fontSerifBold": "衬线粗体", + "@fontSerifBold": { + "description": "Font name" + }, + "fontSerifItalic": "衬线斜体", + "@fontSerifItalic": { + "description": "Font name" + }, + "fontSerifBoldItalic": "衬线粗斜体", + "@fontSerifBoldItalic": { + "description": "Font name" + }, + "fontSans": "无衬线", + "@fontSans": { + "description": "Font name" + }, + "fontSansBold": "无衬线粗体", + "@fontSansBold": { + "description": "Font name" + }, + "fontSansItalic": "无衬线斜体", + "@fontSansItalic": { + "description": "Font name" + }, + "fontSansBoldItalic": "无衬线粗斜体", + "@fontSansBoldItalic": { + "description": "Font name" + }, + "fontScript": "手写体", + "@fontScript": { + "description": "Font name" + }, + "fontScriptBold": "手写体粗体", + "@fontScriptBold": { + "description": "Font name" + }, + "fontFraktur": "德文花体", + "@fontFraktur": { + "description": "Font name" + }, + "fontFrakturBold": "德文花体粗体", + "@fontFrakturBold": { + "description": "Font name" + }, + "fontMonospace": "等宽", + "@fontMonospace": { + "description": "Font name" + }, + "fontFullwidth": "全角", + "@fontFullwidth": { + "description": "Font name" + }, + "fontDoublestruck": "双线体", + "@fontDoublestruck": { + "description": "Font name" + }, + "fontCapitalized": "大写", + "@fontCapitalized": { + "description": "Font name" + }, + "fontCircled": "圆圈", + "@fontCircled": { + "description": "Font name" + }, + "fontParenthesized": "括号", + "@fontParenthesized": { + "description": "Font name" + }, + "fontUnderlinedSingle": "下划线", + "@fontUnderlinedSingle": { + "description": "Font name" + }, + "fontUnderlinedDouble": "双下划线", + "@fontUnderlinedDouble": { + "description": "Font name" + }, + "fontStrikethroughSingle": "删除线", + "@fontStrikethroughSingle": { + "description": "Font name" + }, + "fontStrikethroughDouble": "双删除线", + "@fontStrikethroughDouble": { + "description": "Font name" + }, + "fontSubscript": "下标", + "@fontSubscript": { + "description": "Font name" + }, + "fontSuperscript": "上标", + "@fontSuperscript": { + "description": "Font name" + }, + "fontSmallcaps": "小型大写", + "@fontSmallcaps": { + "description": "Font name" + }, + "fontSmallcapsBold": "小型大写粗体", + "@fontSmallcapsBold": { + "description": "Font name" + }, + "fontItalic": "斜体", + "@fontItalic": { + "description": "Font name" + }, + "fontBold": "粗体", + "@fontBold": { + "description": "Font name" + }, + "fontBoldItalic": "粗斜体", + "@fontBoldItalic": { + "description": "Font name" + }, + "fontSerif": "衬线", + "@fontSerif": { + "description": "Font name" + }, + "fontBoldFraktur": "粗体德文花体", + "@fontBoldFraktur": { + "description": "Font name" + }, + "fontBoldScript": "粗体手写体", + "@fontBoldScript": { + "description": "Font name" + }, + "fontBoldSans": "粗体无衬线", + "@fontBoldSans": { + "description": "Font name" + }, + "fontBoldSerif": "粗体衬线", + "@fontBoldSerif": { + "description": "Font name" + }, + "fontBoldMonospace": "粗体等宽", + "@fontBoldMonospace": { + "description": "Font name" + }, + "fontBoldSmallcaps": "粗体小型大写", + "@fontBoldSmallcaps": { + "description": "Font name" + }, + "fontBoldStrikethrough": "粗体删除线", + "@fontBoldStrikethrough": { + "description": "Font name" + }, + "fontBoldUnderline": "粗体下划线", + "@fontBoldUnderline": { + "description": "Font name" + }, + "fontBoldUnderlineDouble": "粗体双下划线", + "@fontBoldUnderlineDouble": { + "description": "Font name" + }, + "fontBoldItalicUnderline": "粗斜体下划线", + "@fontBoldItalicUnderline": { + "description": "Font name" + }, + "fontBoldItalicUnderlineDouble": "粗斜体双下划线", + "@fontBoldItalicUnderlineDouble": { + "description": "Font name" + }, + "fontBoldStrikethroughDouble": "粗体双删除线", + "@fontBoldStrikethroughDouble": { + "description": "Font name" + }, + "fontBoldItalicStrikethrough": "粗斜体删除线", + "@fontBoldItalicStrikethrough": { + "description": "Font name" + }, + "fontBoldItalicStrikethroughDouble": "粗斜体双删除线", + "@fontBoldItalicStrikethroughDouble": { + "description": "Font name" + }, + "fontBoldSmallcapsBold": "粗体小型大写粗体", + "@fontBoldSmallcapsBold": { + "description": "Font name" + }, + "fontBoldScriptBold": "粗体手写体粗体", + "@fontBoldScriptBold": { + "description": "Font name" + }, + "fontBoldFrakturBold": "粗体德文花体粗体", + "@fontBoldFrakturBold": { + "description": "Font name" + }, + "fontBoldMonospaceBold": "粗体等宽粗体", + "@fontBoldMonospaceBold": { + "description": "Font name" + }, + "fontBoldSerifBold": "粗体衬线粗体", + "@fontBoldSerifBold": { + "description": "Font name" + }, + "fontBoldSansBold": "粗体无衬线粗体", + "@fontBoldSansBold": { + "description": "Font name" + }, + "fontBoldItalicBold": "粗斜体粗体", + "@fontBoldItalicBold": { + "description": "Font name" + }, + "fontBoldItalicBoldItalic": "粗斜体粗斜体", + "@fontBoldItalicBoldItalic": { + "description": "Font name" + }, + "fontBoldSerifBoldItalic": "粗体衬线粗斜体", + "@fontBoldSerifBoldItalic": { + "description": "Font name" + }, + "fontBoldSansBoldItalic": "粗体无衬线粗斜体", + "@fontBoldSansBoldItalic": { + "description": "Font name" + }, + "fontBoldScriptBoldItalic": "粗体手写体粗斜体", + "@fontBoldScriptBoldItalic": { + "description": "Font name" + }, + "fontBoldFrakturBoldItalic": "粗体德文花体粗斜体", + "@fontBoldFrakturBoldItalic": { + "description": "Font name" + }, + "fontBoldMonospaceBoldItalic": "粗体等宽粗斜体", + "@fontBoldMonospaceBoldItalic": { + "description": "Font name" + }, + "fontBoldSmallcapsBoldItalic": "粗体小型大写粗斜体", + "@fontBoldSmallcapsBoldItalic": { + "description": "Font name" + }, + "fontBoldStrikethroughBold": "粗体删除线粗体", + "@fontBoldStrikethroughBold": { + "description": "Font name" + }, + "fontBoldStrikethroughDoubleBold": "粗体双删除线粗体", + "@fontBoldStrikethroughDoubleBold": { + "description": "Font name" + }, + "fontBoldUnderlineBold": "粗体下划线粗体", + "@fontBoldUnderlineBold": { + "description": "Font name" + }, + "fontBoldUnderlineDoubleBold": "粗体双下划线粗体", + "@fontBoldUnderlineDoubleBold": { + "description": "Font name" + }, + "fontBoldItalicUnderlineBold": "粗斜体下划线粗体", + "@fontBoldItalicUnderlineBold": { + "description": "Font name" + }, + "fontBoldItalicUnderlineDoubleBold": "粗斜体双下划线粗体", + "@fontBoldItalicUnderlineDoubleBold": { + "description": "Font name" + }, + "fontBoldItalicStrikethroughBold": "粗斜体删除线粗体", + "@fontBoldItalicStrikethroughBold": { + "description": "Font name" + }, + "fontBoldItalicStrikethroughDoubleBold": "粗斜体双删除线粗体", + "@fontBoldItalicStrikethroughDoubleBold": { + "description": "Font name" + }, + "fontBoldSerifBoldBold": "粗体衬线粗体粗体", + "@fontBoldSerifBoldBold": { + "description": "Font name" + }, + "fontBoldSansBoldBold": "粗体无衬线粗体粗体", + "@fontBoldSansBoldBold": { + "description": "Font name" + }, + "fontBoldScriptBoldBold": "粗体手写体粗体粗体", + "@fontBoldScriptBoldBold": { + "description": "Font name" + }, + "fontBoldFrakturBoldBold": "粗体德文花体粗体粗体", + "@fontBoldFrakturBoldBold": { + "description": "Font name" + }, + "fontBoldMonospaceBoldBold": "粗体等宽粗体粗体", + "@fontBoldMonospaceBoldBold": { + "description": "Font name" + }, + "fontBoldSmallcapsBoldBold": "粗体小型大写粗体粗体", + "@fontBoldSmallcapsBoldBold": { + "description": "Font name" + }, + "fontBoldStrikethroughBoldBold": "粗体删除线粗体粗体", + "@fontBoldStrikethroughBoldBold": { + "description": "Font name" + }, + "fontBoldStrikethroughDoubleBoldBold": "粗体双删除线粗体粗体", + "@fontBoldStrikethroughDoubleBoldBold": { + "description": "Font name" + }, + "fontBoldUnderlineBoldBold": "粗体下划线粗体粗体", + "@fontBoldUnderlineBoldBold": { + "description": "Font name" + }, + "fontBoldUnderlineDoubleBoldBold": "粗体双下划线粗体粗体", + "@fontBoldUnderlineDoubleBoldBold": { + "description": "Font name" + }, + "fontBoldItalicUnderlineBoldBold": "粗斜体下划线粗体粗体", + "@fontBoldItalicUnderlineBoldBold": { + "description": "Font name" + }, + "fontBoldItalicUnderlineDoubleBoldBold": "粗斜体双下划线粗体粗体", + "@fontBoldItalicUnderlineDoubleBoldBold": { + "description": "Font name" + }, + "fontBoldItalicStrikethroughBoldBold": "粗斜体删除线粗体粗体", + "@fontBoldItalicStrikethroughBoldBold": { + "description": "Font name" + }, + "fontBoldItalicStrikethroughDoubleBoldBold": "粗斜体双删除线粗体粗体", + "@fontBoldItalicStrikethroughDoubleBoldBold": { + "description": "Font name" + } +} \ No newline at end of file diff --git a/lib/src/settings/view/settings_language_screen.dart b/lib/src/settings/view/settings_language_screen.dart index 7318fa2..b3c4d4a 100644 --- a/lib/src/settings/view/settings_language_screen.dart +++ b/lib/src/settings/view/settings_language_screen.dart @@ -20,16 +20,14 @@ class SettingsLanguageScreen extends HookConsumerWidget { 'de': 'deutsch', 'en': 'English', 'es': 'español', + 'zh': '中文', }; final available = AppLocalizations.supportedLocales .map( (locale) => _Language(locale, displayNames[locale.toLanguageTag()]), ) .toList(); - final systemLanguage = _Language( - null, - ref.text.designThemeOptionSystem, - ); + final systemLanguage = _Language(null, ref.text.designThemeOptionSystem); final languages = [systemLanguage, ...available]; final languageTag = ref.watch( @@ -37,8 +35,9 @@ class SettingsLanguageScreen extends HookConsumerWidget { ); final _Language? selectedLanguage; selectedLanguage = languageTag != null - ? available - .firstWhereOrNull((l) => l.locale?.toLanguageTag() == languageTag) + ? available.firstWhereOrNull( + (l) => l.locale?.toLanguageTag() == languageTag, + ) : systemLanguage; final theme = Theme.of(context); @@ -75,32 +74,35 @@ class SettingsLanguageScreen extends HookConsumerWidget { return; } - final selectedLocalizations = - await AppLocalizations.delegate.load(locale); + final selectedLocalizations = await AppLocalizations + .delegate + .load(locale); selectedLocalizationsState.value = selectedLocalizations; if (context.mounted) { final confirmed = await LocalizedDialogHelper.showTextDialog( - ref, - selectedLocalizations.languageSettingConfirmationTitle, - selectedLocalizations.languageSettingConfirmationQuery, - actions: [ - PlatformTextButton( - child: Text( - selectedLocalizations.actionCancel, - ), - onPressed: () => context.pop(false), - ), - PlatformTextButton( - child: Text(selectedLocalizations.actionOk), - onPressed: () => context.pop(true), - ), - ], - ); + ref, + selectedLocalizations + .languageSettingConfirmationTitle, + selectedLocalizations + .languageSettingConfirmationQuery, + actions: [ + PlatformTextButton( + child: Text(selectedLocalizations.actionCancel), + onPressed: () => context.pop(false), + ), + PlatformTextButton( + child: Text(selectedLocalizations.actionOk), + onPressed: () => context.pop(true), + ), + ], + ); if (confirmed) { selectedLanguageState.value = value; - await ref.read(settingsProvider.notifier).update( + await ref + .read(settingsProvider.notifier) + .update( settings.copyWith( languageTag: locale.toLanguageTag(), ), @@ -112,10 +114,12 @@ class SettingsLanguageScreen extends HookConsumerWidget { .map((language) => Text(language.displayName ?? '')) .toList(), items: languages - .map((language) => DropdownMenuItem( - value: language, - child: Text(language.displayName ?? ''), - )) + .map( + (language) => DropdownMenuItem( + value: language, + child: Text(language.displayName ?? ''), + ), + ) .toList(), ), if (selectedLocalizationsState.value != null) diff --git a/missing-translations.txt b/missing-translations.txt index 22a6c04..5c5d64b 100644 --- a/missing-translations.txt +++ b/missing-translations.txt @@ -5,5 +5,86 @@ "es": [ "multipleSelectionActionFailed" + ], + + "zh": [ + "fontCrosshatch", + "accountLoadError", + "accountLoadErrorEditAction", + "extensionsTitle", + "extensionsIntro", + "extensionsLearnMoreAction", + "extensionsReloadAction", + "extensionDeactivateAllAction", + "extensionsManualAction", + "extensionsManualUrlLabel", + "extensionsManualLoadingError", + "icalendarAcceptTentatively", + "icalendarActionChangeParticipantStatus", + "icalendarLabelSummary", + "icalendarNoSummaryInfo", + "icalendarLabelDescription", + "icalendarLabelStart", + "icalendarLabelEnd", + "icalendarLabelDuration", + "icalendarLabelLocation", + "icalendarLabelTeamsUrl", + "icalendarLabelRecurrenceRule", + "icalendarLabelParticipants", + "icalendarParticipantStatusNeedsAction", + "icalendarParticipantStatusAccepted", + "icalendarParticipantStatusDeclined", + "icalendarParticipantStatusAcceptedTentatively", + "icalendarParticipantStatusDelegated", + "icalendarParticipantStatusInProcess", + "icalendarParticipantStatusPartial", + "icalendarParticipantStatusCompleted", + "icalendarParticipantStatusOther", + "icalendarParticipantStatusChangeTitle", + "icalendarParticipantStatusChangeText", + "icalendarParticipantStatusSentFailure", + "icalendarExportAction", + "icalendarReplyStatusNeedsAction", + "icalendarReplyStatusAccepted", + "icalendarReplyStatusDeclined", + "icalendarReplyStatusAcceptedTentatively", + "icalendarReplyStatusDelegated", + "icalendarReplyStatusInProcess", + "icalendarReplyStatusPartial", + "icalendarReplyStatusCompleted", + "icalendarReplyStatusOther", + "icalendarReplyWithoutParticipants", + "icalendarReplyWithoutStatus", + "composeAppointmentTitle", + "composeAppointmentLabelDay", + "composeAppointmentLabelTime", + "composeAppointmentLabelAllDayEvent", + "composeAppointmentLabelRepeat", + "composeAppointmentLabelRepeatOptionNever", + "composeAppointmentLabelRepeatOptionDaily", + "composeAppointmentLabelRepeatOptionWeekly", + "composeAppointmentLabelRepeatOptionMonthly", + "composeAppointmentLabelRepeatOptionYearly", + "composeAppointmentRecurrenceFrequencyLabel", + "composeAppointmentRecurrenceIntervalLabel", + "composeAppointmentRecurrenceDaysLabel", + "composeAppointmentRecurrenceUntilLabel", + "composeAppointmentRecurrenceUntilOptionUnlimited", + "composeAppointmentRecurrenceUntilOptionRecommended", + "composeAppointmentRecurrenceUntilOptionSpecificDate", + "composeAppointmentRecurrenceMonthlyOnDayOfMonth", + "composeAppointmentRecurrenceMonthlyOnWeekDay", + "composeAppointmentRecurrenceFirst", + "composeAppointmentRecurrenceSecond", + "composeAppointmentRecurrenceThird", + "composeAppointmentRecurrenceLast", + "composeAppointmentRecurrenceSecondLast", + "durationYears", + "durationMonths", + "durationWeeks", + "durationDays", + "durationHours", + "durationMinutes", + "durationEmpty" ] } diff --git a/pubspec.yaml b/pubspec.yaml index 35633cd..502a1dc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -178,7 +178,7 @@ flutter: uses-material-design: true # For localization / l10n: - generate: false + generate: true # To add assets to your application, add an assets section, like this: assets: