Memories / Dokumentation

Auf dieser Seite

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:

  1. --lang en|zh|ja|de|fr, unterstützt auf oberster Ebene und bei Unterbefehlen.
  2. Ein nicht leeres MEMORIES_LANG.
  3. Die gespeicherte Einstellung im ausgewählten Memories-Home-Verzeichnis.
  4. Der erste nicht leere Wert von LC_ALL, LC_MESSAGES oder LANG.
  5. 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.