Lokalisierung
Der Flutter-Client und die CLI unterstützen Englisch (en), vereinfachtes Chinesisch (zh),
Japanisch (ja), Deutsch (de) und Französisch (fr). Englisch dient als Rückfallsprache.
Chinesische Systemvarianten werden der Übersetzung in vereinfachtem Chinesisch zugeordnet.
Web-Client und Registrierungs-E-Mails
Der gehostete Web-Client und die Verifizierungs-E-Mails unterstützen Englisch (en), vereinfachtes
Chinesisch (zh-CN), traditionelles Chinesisch (zh-TW), Japanisch (ja), Französisch (fr),
Deutsch (de) und Spanisch (es). Diese Auswahl ist unabhängig von der Sprachauswahl der nativen Clients.
Die Sprachauswahl im Web funktioniert vor der Anmeldung und speichert ausschließlich die
Spracheinstellung. Ohne gespeicherte Einstellung wird die Browsersprache verwendet; nicht unterstützte
Sprachen fallen auf Englisch zurück. zh-Hant, zh-HK und zh-MO werden traditionellem
Chinesisch zugeordnet; explizites zh-Hans wird vereinfachtem Chinesisch zugeordnet.
Web-Meldungen befinden sich in website/app/i18n.mjs. Fügen Sie allen Katalogen dieselben Schlüssel hinzu.
Die Registrierungsanfrage sendet locale an Center; E-Mail-Betreff und -Text in
crates/center/src/saas/accounts/email.rs verwenden die Sprache dieser Anfrage. Bestehende
Clients, die diesen Wert auslassen, erhalten Englisch. Der Verifizierungscode bleibt unverändert.
Die Wiederverwendung ausstehender Codes und die Drosselung gelten auch bei Sprachwechseln. Die eigenständige
Dokumentationswebsite bietet jeden Leitfaden und die Datenschutzrichtlinie in denselben
sieben Sprachen an. Beim Sprachwechsel bleiben das Dokument und der aktuelle Abschnitt erhalten.
Flutter
mobile/l10n.yaml konfiguriert den offiziellen Lokalisierungsgenerator von Flutter. Fügen Sie
Meldungen zu mobile/lib/l10n/app_en.arb hinzu und übersetzen Sie dieselben Schlüssel in den anderen
vier ARB-Dateien. Verwenden Sie aussagekräftige Schlüssel und benannte Platzhalter für vollständige Meldungen;
verwenden Sie ICU-Pluralformen, wenn Anzahlen die Formulierung verändern. Deklarieren Sie Platzhaltertypen in
der englischen Vorlage. Führen Sie nach dem Bearbeiten der Ressourcen flutter gen-l10n aus.
Widgets beziehen Zeichenketten über context.l10n. Der Bibliothekszustand aktualisiert seine
Lokalisierungsreferenz in didChangeDependencies, damit asynchrone
Vorgänge Zeichenketten verwenden können, ohne einen BuildContext über await-Aufrufe hinweg festzuhalten.
flutter_localizations stellt Material-/Cupertino-Beschriftungen bereit, und intl formatiert
Datumsangaben und Anzahlen. Halten Sie Englisch in preferred-supported-locales an erster Stelle, damit unbekannte
Systemsprachen eine deterministische Rückfallsprache haben. iOS deklariert unterstützte Sprachen
in Runner/Info.plist.
Das Sprachmenü ist vor dem Entsperren verfügbar. SharedPreferences speichert ausschließlich
die nicht geheime Einstellung language; system entfernt diese Einstellung. Schlägt das
Speichern fehl, bleibt die bestehende Auswahl erhalten, und ein lokalisierter Fehler wird angezeigt.
Sprachwechsel erstellen das Backend nicht neu und verändern die entsperrte Sitzung nicht.
Ohne gespeicherte Einstellung aktualisieren Änderungen der Systemsprache sowohl die Oberfläche als auch
die Ersatzschrift, während die App läuft. Eine gespeicherte Auswahl bleibt bestehen, bis sie geändert
oder auf den Systemstandard zurückgesetzt wird.
Lokale Fehler werden bei der Anzeige übersetzt, sodass ein bestehendes Banner bei einem
Sprachwechsel ebenfalls wechselt. Native Fehler verwenden ihre stabilen Codes für einen übersetzten Ersatztext.
Übersetzen Sie keine Protokollwerte, Bezeichner, URLs, Kontometadaten, vom Benutzer vergebenen
Titel, Inhalte, Tags, Beziehungen, signierten Audit-Datensätze oder geheimen Werte.
Geschützte Vorschauen müssen weiterhin die explizite Feld-Zulassungsliste und die festgelegten
Maskierungen in protected_cards.dart verwenden.
CLI
crates/cli/src/i18n.rs bestimmt die Sprache, bevor Clap die Hilfe ausgibt. Rangfolge:
--lang en|zh|ja|de|fr, unterstützt auf oberster Ebene und bei Unterbefehlen.- Ein nicht leeres
MEMORIES_LANG. - Die gespeicherte Einstellung im ausgewählten Memories-Home-Verzeichnis.
- Der erste nicht leere Wert von
LC_ALL,LC_MESSAGESoderLANG. - Die Windows-Benutzersprache oder Englisch auf anderen Plattformen ohne Sprachumgebungsvariablen.
memories language zh # Save a language for subsequent commands
memories language # Show the saved choice and effective language
memories language system # Clear the choice and follow the system
Die nicht geheime Einstellung wird als language.txt unter --home /
MEMORIES_HOME (oder im standardmäßigen Memories-Datenverzeichnis) gespeichert. Beim Speichern wird die
Datei atomar ersetzt. Dies funktioniert vor der Initialisierung und ohne laufenden Daemon.
Allein durch das Ermitteln der Systemsprache wird keine Einstellungsdatei erstellt. Fehlende,
nicht lesbare oder ungültige Einstellungen fallen auf das System zurück; fehlgeschlagene Schreibvorgänge melden
einen Fehler. Temporäre Überschreibungen mit --lang und MEMORIES_LANG verändern die Datei nicht.
Sprachvarianten wie ja_JP.UTF-8 werden auf ihre Basissprache normalisiert.
Nicht unterstützte Umgebungs-/Systemsprachen fallen auf Englisch zurück. Explizite ungültige
--lang-Werte werden von Clap zurückgewiesen. Die anfängliche Suche endet bei --, wodurch
sprachähnliche Argumente erhalten bleiben, die an Programme mit abgefangener Eingabe übergeben werden.
UTF-8-Kataloge in crates/cli/locales/ werden zur Kompilierzeit eingebettet; installierte
Binärdateien benötigen keine zusätzlichen Ressourcendateien. Katalogschlüssel sind die ursprünglichen
englischen Meldungen. Behalten Sie sowohl vollständige Varianten als auch Varianten ohne abschließenden Punkt von Clap-Dokumentations-
kommentaren bei, da die Kurzhilfe den abschließenden Punkt entfernt. Übersetzen Sie Kurz- und
Langhilfe. Fügen Sie für jeden neuen CLI-eigenen Fehler und jede neue Eingabeaufforderung einen Katalogeintrag hinzu.
Verwenden Sie i18n::format für benannte Platzhalter. Die Ersetzung verarbeitet die Vorlage
einmalig, sodass Benutzertext mit geschweiften Klammern nicht zu einem weiteren Platzhalter werden kann. Passwörter
und Geheimnisse werden weiterhin über verborgene Eingabe erfasst. USE und APPROVE bleiben wörtliche
Bestätigungstoken und müssen in ihren übersetzten Aufforderungen unverändert erscheinen.
Die JSON-Ausgabe behält die vorhandene Version, Feldnamen, Fehlercodes und den Exit- Status bei. Nur Meldungen für Menschen werden lokalisiert. Nicht zugeordnete native/OS-Diagnosen behalten ihren Originaltext nach einer lokalisierten Zusammenfassung; Clap-Parsing-Diagnosen enthalten eine lokalisierte Einleitung und die ursprünglichen Argumentdetails. MCP-Schemas, Werkzeugnamen und Protokollmeldungen bleiben stabil und sind unabhängig von der CLI-Sprache.
Validierung
cargo test -p memories --locked
cd mobile
flutter gen-l10n
flutter analyze
flutter test
Rust-Tests decken alle Kataloge, Hilfeabdeckung, Erhaltung von Platzhaltern, Sprach- rangfolge, weitergeleitete Argumente, verschachtelte Hilfe und lokalisierte Fehler mit stabilen JSON-Feldern ab. Flutter-Tests decken Kataloggleichheit, alle fünf Systemsprachen, den Rückfall bei nicht unterstützten Sprachen, Speicherung von Einstellungen, Sitzungserhaltung, lokalisierte Dialoge bei Telefonbreiten und maskierte Vorschauen geschützter Karten ab.
Schließen Sie auf Hosts mit HTTP-Proxy localhost, 127.0.0.1 und ::1 vom
Proxy aus, während Widget-Tests laufen; Flutters lokaler Test-WebSocket muss sich
direkt verbinden. Tests auf Geräten bleiben erforderlich, um plattformspezifische Ersatzschriften,
native Dateiauswahl und OAuth-Browseroberflächen zu prüfen, deren Sprache vom Betriebssystem
oder Anbieter verwaltet wird.