Color scheme: Light
You are here: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Office SDK » how-to » Vorgehen: Eine Anwendung übersetzen

Vorgehen: Eine Anwendung übersetzen

Die Texte einer Access-Anwendung in beliebig vielen Sprachen als Dateien des Projekts führen, jedem Übersetzer ein Paket seiner Sprache für Excel geben, alle Pakete in einem Schritt zurücknehmen und die Anwendung in jeder Sprache testen.

Voraussetzungen: WKL Office SDK 0.8 oder höher; WKL Forms Object Library 1.67 oder höher auf den Rechnern, auf denen die Anwendung läuft (das Objekt WklTexts).

Lösungsüberblick

  • Die Texte sind Dateien des Projekts: source/texts/neutral.json enthält sie in der Sprache, in der die Anwendung geschrieben ist, source/texts/<code>.json je eine Übersetzung, für jeden Sprachcode (de.json, fr.json, pl.json …).
  • Der Build schreibt sie in die Tabelle USysWklTexts der ACCDB und der ACCDE. Zur Laufzeit liefert WklTexts jeden Text in der Sprache der Sitzung; ein Schlüssel ohne Text in dieser Sprache zeigt den neutralen Text, danach den englischen. Zur Laufzeit wird das SDK nicht gebraucht.
  • Jeder Build meldet fehlende Übersetzungen, Texte mit anderen Platzhaltern, Schlüssel, die der Code verlangt, die aber keinen Text haben, und Übersetzungen, deren Vorlage sich inzwischen geändert hat.
  • Jeder Übersetzer bekommt ein CSV-Paket seiner Sprache, das Excel direkt öffnet; die Pakete kommen in beliebiger Reihenfolge zurück und werden in einem Import zusammengeführt.

Umsetzung

  1. Die neutralen Texte schreiben in source/texts/neutral.json, in der Sprache, in der Sie entwickeln. Jeder Schlüssel braucht einen neutralen Text, denn er ist der Rückfall für jede andere Sprache:

    {
      "orders.saved": "{0} orders saved.",
      "orders.title": "Orders"
    }

    Nennen Sie diese Sprache in der Projektdatei; dann braucht sie keine eigene Datei und wird nicht als unübersetzt gemeldet:

    <NeutralLanguage>en</NeutralLanguage>
  2. Die Schlüssel im Code verwenden, über WklTexts (siehe die Dokumentation der WKL Forms Object Library, “Anwendung lokalisieren”):

    Dim texts As New WklTexts
    Me.Caption = texts.Text("orders.title")
    MsgBox texts.Text("orders.saved", count), vbInformation, texts.Text("wkl.information")
  3. Jedem Übersetzer ein Paket geben. Ein Befehl je Sprache:

    wkl-office texts export Orders.acproj --language fr
    wkl-office texts export Orders.acproj --language it

    Jeder Befehl schreibt texts.<code>.csv neben die Projektdatei, mit den Spalten key, source (der neutrale Text), der Sprache und review. Der Übersetzer füllt in Excel nur die Sprachspalte und speichert die Datei als CSV UTF-8. Eine Zeile mit Text in review ist eine Übersetzung zum Prüfen: Die Spalte zeigt die Vorlage, nach der sie entstand.

  4. Alle Pakete auf einmal übernehmen, sobald sie da sind:

    wkl-office texts import Orders.acproj texts.fr.csv texts.it.csv

    Geschrieben werden nur die Sprachspalten. Eine leere Zelle und eine fehlende Zeile ändern nichts; ein Übersetzer, der das Paket halb fertig zurückgibt, löscht also nichts. Eine Zeile je Sprache nennt, wie viele Texte neu, geändert, noch unübersetzt und zur Prüfung markiert sind. Prüfen und committen Sie die Dateien wie jede andere Quelle.

  5. Bauen und prüfen. wkl-office build Orders.acproj schreibt die Texte in die Datenbank und nennt als Warnung jeden Schlüssel, der in einer Sprache keinen Text hat, und jede zur Prüfung markierte Übersetzung.
  6. In jeder Sprache testen:

    foreach ($language in 'en', 'fr', 'it') {
        wkl-office test Orders.acproj --language $language --work "test-results\$language"
    }

    --language legt die Sprache der Sitzung für die Anwendungstexte und die WKL-Komponenten fest, unabhängig von der Sprache von Office.

Erwartetes Ergebnis

ACCDB und ACCDE enthalten die Tabelle USysWklTexts mit jedem Text jeder Sprache. In einem französischen Office zeigt die Anwendung ihre französischen Texte; ein Schlüssel ohne französischen Text zeigt den neutralen Text. Ein Testlauf mit --language fr meldet dieselben Prüfungen wie in einem französischen Office.

Hinweise

  • Zwei Pakete widersprechen sich. Liefern zwei Dateien für denselben Schlüssel und dieselbe Sprache verschiedene Texte, nennt der Import jeden Widerspruch, schreibt nichts und endet mit Exitcode 2. Entfernen Sie die falsche Zeile oder Datei und importieren Sie erneut.
  • Der neutrale Text hat sich geändert. Die Übersetzungen, die nach dem früheren Text entstanden, werden in source/texts/review.<code>.json zur Prüfung markiert, und das nächste Paket zeigt diesen früheren Text in der Spalte review. Ein Paket, das nach einer veralteten Vorlage übersetzt wurde, wird übernommen und ebenso markiert. Die Markierung verschwindet, sobald eine Übersetzung des aktuellen Texts zurückkommt.
  • Neue Schlüssel kommen aus den neutralen Texten. Ein Paket kann keine Schlüssel hinzufügen: Eine Zeile mit einem Schlüssel, den die Anwendung nicht hat, wird mit einer Warnung übergangen.
  • Der ganze Bestand in einer Datei. texts export ohne --language schreibt alle Sprachen in texts.csv, eine Spalte je Sprache, neutral zuerst. texts import --replace texts.csv nimmt eine solche Datei als ganzen Bestand: Ein Schlüssel, der in ihr fehlt, wird entfernt, und eine Sprachspalte, die in jeder Zeile leer ist, lässt ihre Datei unverändert.
  • Keine neutralen Texte. Ein Projekt, das nur source/texts/en.json hat, funktioniert weiter: Dann ist Englisch die Vorlage der Prüfungen und der Pakete.
  • Excel und Trennzeichen. Excel speichert CSV mit dem Listentrennzeichen der Regionaleinstellungen, Komma oder Semikolon; texts import liest beides. Speichern Sie als “CSV UTF-8”: Das einfache Format “CSV” von Excel verliert č, š, ž und andere Buchstaben außerhalb der Codepage von Windows.
  • Eine Datei am falschen Ort. Eine Textdatei einer Sprache außerhalb von source/texts (zum Beispiel source/fr.json) wird nicht gelesen; check und build melden sie als Warnung.
  • Terminologie. source/texts/terms.<code>.json nennt Begriffe, die nicht verwendet werden sollen, zum Beispiel { "podatkovna zbirka": [ "zbirka podatkov" ] }; jeder Build meldet einen Text, der eine solche Variante enthält.
  • In Access geändert? Der Export schreibt die Tabelle USysWklTexts nie zurück: Ändern Sie Texte in den Dateien, nicht in der Datenbank.
  • Tests finden Lücken. WklTexts.Missing nennt die Schlüssel, die in der verlangten Sprache keinen Text hatten; ein Test, der texts.Missing = "" prüft, schlägt bei einer unvollständigen Übersetzung fehl.

Verwandte Themen

de/wiki/msaccess/sdk/how-to/translate-an-application.txt · Last modified: by Wolfgang van der Stille