Barvna shema: Riviera
Trenutno dejavna stran: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Anwendung lokalisieren

Anwendung lokalisieren

Zeigen Sie die eigenen Texte einer Access-Anwendung – Meldungen, Beschriftungen, Fragen – in der Sprache an, in der auch die WKL-Komponenten mit dem Benutzer sprechen: Englisch, Deutsch, Slowenisch, Kroatisch oder Italienisch, mit einer Datenbank für alle Sprachen.

Voraussetzungen: WKL Forms Object Library 1.65 oder höher; Beschriftungen mit Schlüssel (@orders.title) ab 1.66, neutrale Texte, weitere Sprachen und der Sprachordner ab 1.67.

Lösungsüberblick

  • Die Texte stehen in der Tabelle USysWklTexts der Anwendung: ein Datensatz je Schlüssel und Sprache. Die Tabelle liegt in der Datenbank selbst; ACCDE und Access Runtime brauchen nichts weiter.
  • Im Code holt WklTexts.Text einen Text nach Schlüssel. Er erscheint in der Sprache, die die Komponenten für die Datenbank gewählt haben (Sprache der Komponenten festlegen); fehlt die Übersetzung, in Englisch.
  • Beschriftungen, die Sie in der Entwurfsansicht festlegen, nennen statt eines Textes einen Schlüssel: @orders.title. WKL-Steuerelemente und das Menüband zeigen den Text selbst an; für die Access-eigenen Steuerelemente eines Formulars oder Berichts genügt ein Aufruf von WklTexts.Localize im Ereignis Beim Öffnen. Ein Formular dient so allen Sprachen.
  • Für Schaltflächen und Rückfragen, die jede Anwendung braucht (OK, Abbrechen, Speichern, Löschen …), gibt es Standardtexte mit festen Schlüsseln wkl.*. Sie sind in allen fünf Sprachen geprüft und lauten in jeder WKL-Anwendung gleich.

Projekte des WKL Office SDK: Führen Sie die Texte statt mit den Schritten 1 und 2 als Dateien source/texts/<Sprache>.json des Projekts; der Build schreibt daraus die Tabelle USysWklTexts. Steht zusätzlich eine Tabelle dieses Namens unter den Quellen, bricht der Build ab (Dokumentation des WKL Office SDK, „Vorgehen: Eine Anwendung übersetzen“). Die Schritte 3 und 4 gelten unverändert.

Umsetzung

  1. Tabelle anlegen. Führen Sie die Anweisung einmal aus, zum Beispiel im Direktbereich des VBA-Editors:

    CurrentDb.Execute "CREATE TABLE USysWklTexts (ID COUNTER CONSTRAINT pkUSysWklTexts PRIMARY KEY, " & _
        "TextKey TEXT(255), Language TEXT(10), TextValue MEMO)", dbFailOnError

    Das Präfix USys blendet die Tabelle im Navigationsbereich aus, solange Systemobjekte ausgeblendet sind.

  2. Texte eintragen. Je Schlüssel ein Datensatz für Englisch und je einer für jede weitere Sprache:

    TextKeyLanguageTextValue
    orders.titleenOrders
    orders.titledeAufträge
    orders.saveden{0} orders saved.
    orders.savedde{0} Aufträge gespeichert.

    Englisch ist die Rückfallsprache; legen Sie jeden Schlüssel mindestens in Englisch an.

  3. Texte im Code verwenden:

    Private Sub cmdSave_Click()
        Dim texts As New WklTexts
        Dim count As Long
        On Error GoTo ErrorHandler
     
        count = SaveOrders()
        MsgBox texts.Text("orders.saved", count), vbInformation, texts.Text("wkl.information")
     
    FinalHandler:
        Exit Sub
     
    ErrorHandler:
        MsgBox Err.Description, vbExclamation, texts.Text("wkl.error")
        Resume FinalHandler
    End Sub

    New WklTexts braucht den Verweis WKL Forms x.y Object Library (VBA-Editor: Extras › Verweise); ohne Verweis schreiben Sie CreateObject("WklForms.Texts").

  4. Schlüssel in die Beschriftungen schreiben. Setzen Sie in der Entwurfsansicht die Eigenschaft Beschriftung des Formulars auf @orders.title, die der Schaltfläche Speichern auf @wkl.save und die der Schaltfläche Schließen auf @wkl.close. Lokalisieren Sie das Formular dann beim Öffnen:

    Private Sub Form_Open(Cancel As Integer)
        Dim texts As New WklTexts
        texts.Localize Me
    End Sub

    Localize ersetzt Beschriftung (Caption), SteuerelementTip-Text (ControlTipText) und Statusleistentext (StatusBarText) des Formulars und aller seiner Steuerelemente, deren Wert ein Schlüssel ist, und gibt die Zahl der ersetzten Werte zurück. Ein Bericht macht es ebenso in Report_Open; ein Unterformular lokalisiert sich im eigenen Ereignis Beim Öffnen.

WKL-Steuerelemente, Menüband und Navigation

WKL-Steuerelemente nehmen überall, wo sie eine Beschriftung haben, einen Schlüssel an und zeigen dessen Text ohne Code:

WoBeschriftung mit Schlüssel
WklGrid, WklTreeListSpalten- und Bandbeschriftungen, Befehlsschaltflächen der Zeilen, Register der Detailansichten
WklPropertyGridFeldbeschriftungen und Kategorien
WklNavBar und die Navigationstabelle USysWklShellNavigationGruppen und Einträge (Spalte Caption der Tabelle)
WklActionBarTitel, Untertitel, Befehle, deren QuickInfos, die Schaltfläche Mehr
WklButtonBeschriftung, Menüeinträge, Segmente
WklToggleSwitch, WklGaugeBeschriftung, Ein- und Aus-Text; Beschriftung, Hinweis und Balkenbeschriftungen
Menüband-Modell (USysWklRibbon)Beschriftungen von Registerkarten, Gruppen, Backstage-Elementen und Befehlen

Entwurfsansicht, Eigenschaftenblätter, Designer und die gespeicherte Definition behalten den Schlüssel; das Formular bleibt in jeder Sprache dasselbe. QuickInfos und erweiterte QuickInfos (screentip, supertip) des Menübands werden so geschrieben, wie sie stehen, und nehmen keine Schlüssel an.

Neutrale Texte, weitere Sprachen und Sprachordner

  • Neutrale Texte. Datensätze mit der Sprache neutral enthalten den Text, den ein Schlüssel in jeder Sprache ohne eigene Übersetzung zeigt, noch vor Englisch. Schreiben Sie dort die Texte in Ihrer eigenen Sprache und ergänzen Sie nur die Übersetzungen: Sind die neutralen Texte deutsch, bleibt die Spalte de leer. Die Reihenfolge lautet: verlangte Sprache, neutral, en, [key].
  • Beliebige Sprachen. Die Texte der Anwendung dürfen in jeder Sprache vorliegen, etwa fr, pl oder es; ein regionaler Code wie fr-CA zählt als seine Sprache. Die Sprache der Sitzung ist die erste aus Anwendungsmodell, Office und Windows, in der die Anwendung Texte hat. Die WKL-Steuerelemente bleiben bei ihren fünf Sprachen: Bei französischen Anwendungstexten zeigen sie ihre eigenen Texte in der Sprache, die sie sonst wählen.
  • Sprachordner i18n. Dateien <Sprache>.json und neutral.json in einem Ordner i18n neben der Datenbank ergänzen die Texte und ersetzen Datensätze der Tabelle mit gleichem Schlüssel und gleicher Sprache – für eine Korrektur oder eine weitere Sprache nach der Auslieferung, ohne neuen Build. Jede Datei ist ein JSON-Objekt aus Schlüsseln und Texten in UTF-8:

    { "orders.title": "Commandes", "orders.saved": "{0} commandes enregistrées." }

    Eine Datei, die sich nicht lesen lässt, wird übergangen; die übrigen Texte gelten weiter. Wer in den Ordner schreiben darf, ändert die Texte der Anwendung: Schützen Sie ihn auf einer Netzwerkfreigabe wie die Datenbank selbst.

  • Excel und Word. Eine Arbeitsmappe oder ein Dokument hat keine Tabelle; die Texte kommen aus einem Sprachordner, den der Code einmal nennt, zum Beispiel in Workbook_Open:

    Dim texts As New WklTexts
    texts.Folder = ThisWorkbook.Path & "\i18n"

    Die Sprache ist dort die Anzeigesprache von Windows, wenn der Ordner Texte in ihr hat, sonst die Sprache der Komponenten; texts.Language legt eine andere fest.

Erwartetes Ergebnis

In einem deutschen Office zeigt das Formular „Aufträge“ und die Schaltflächen „Speichern“ und „Schließen“, in einem slowenischen „Naročila“, „Shrani“ und „Zapri“. Eine Spalte eines WklGrid mit der Beschriftung @orders.customer zeigt ebenso „Kunde“ oder „Stranka“. Hat orders.title keine slowenische Übersetzung, erscheint sein neutraler Text und ohne diesen „Orders“. Ein Schlüssel ohne jeden Text erscheint als [orders.title], damit die Lücke auffällt, statt eine leere Beschriftung zu hinterlassen.

Hinweise

  • Platzhalter: {0}, {1} … werden in dieser Reihenfolge mit den weiteren Argumenten von Text gefüllt; {0:N2} zeigt eine Zahl mit zwei Nachkommastellen, {1:d} ein kurzes Datum. Zahlen und Datumsangaben folgen den Regionaleinstellungen von Windows, wie alles, was Access formatiert, nicht der Sprache des Textes.
  • Schlüssel unterscheiden nicht zwischen Groß- und Kleinschreibung. Punkte gliedern sie nach Formular oder Thema (orders.title, orders.saved).
  • Welche Beschriftungen Schlüssel sind: @, gefolgt von einem Schlüssel mit mindestens einem Punkt und nur Buchstaben, Ziffern, ., _ und -. @Home oder @ Büro bleiben, wie sie sind. @@ am Anfang schreibt ein wörtliches @: @@orders.title zeigt @orders.title. Ein Schlüssel ohne jeden Text erscheint als [key] und steht in Missing, wie bei Text.
  • Localize einmal je Öffnen aufrufen, in der Formular- oder Berichtsansicht. Danach enthalten die Eigenschaften die Texte. In der Entwurfsansicht löst Localize einen Fehler aus, statt die Schlüssel zu ersetzen, die sonst mit dem Formular gespeichert würden.
  • Beschriftungen als Daten: texts.CaptionText(Wert) löst einen Wert nach derselben Regel auf wie die Steuerelemente, zum Beispiel die Beschriftung der Navigationstabelle, die die Anwendung in eine Tabelle oder einen Bericht übernimmt.
  • Standardtexte wkl.* lassen sich nicht überschreiben; ein Datensatz der Anwendung mit einem solchen Schlüssel wird übergangen. Die Liste steht in der API-Referenz von WklTexts.
  • Sprache für einen Test festlegen: texts.Language = "sl" zeigt bis zum Ende von Access alle Texte – auch die der Komponenten – auf Slowenisch, unabhängig von Office; texts.Language = "" kehrt zur gemessenen Sprache zurück. texts.Missing nennt danach jeden Schlüssel, dem in der verlangten Sprache der Text fehlte, je Zeile Schlüssel Sprache. Ein Test kann so prüfen, dass eine Übersetzung vollständig ist.
  • Wann die Texte gelesen werden: Tabelle und Sprachordner einmal je Datenbank und Access-Sitzung. Ändert die Anwendung sie während des Betriebs, liest texts.Reload sie neu.
  • IntelliSense und die Namen der Mitglieder bleiben englisch; nur die Texte wechseln die Sprache.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/localize-an-application.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille