Announcement

Collapse
No announcement yet.

Fertige Anwendungen mehrsprachig gestalten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fertige Anwendungen mehrsprachig gestalten

    Hallo,

    Bin am verzweifeln... Ich muss auf der Arbeit folgendes realisieren:

    Es gibt fertige bestehende Anwendungen, die in vb.net gemacht sind und die ganzen Text-Strings in Buttons, Grid-Überschriften, Auswahlmenüinhaltne ,etc. sind auf deutsch geschrieben...
    Nun sollen die Anwendungen mehrsprachig werden und sich den jeweiligen Sprach-String aus einer Datenbank ziehen. Dazu sollen eine oder mehrere Klassen erstellt werden, die die Methoden bereitstellen, welche diese Übersetzungs-Aufgabe erfüllen.

    Es soll eine SQL-Datenbank erstellt werden, die für jeden String der Beispielsweise auf einem Button drauf ist (Beenden, Drucken, Exportieren., usw...) einen String in einer anderen Sprache bereitstellt.
    Sollte es in einer anderen Sprache einen gesuchten String nicht geben, dann soll eine Default-Sprache ausgegeben werden.

    Hat jemand einen VB.net Lösungsansatz für mich? Ich bitte sowohl um Tipps, als auch um Code...

    Vielen dank im voraus

  • #2
    Hi,

    was Du beschreibst, ist doch schon ein Lösungsansatz. Dabei gibt es zwei Wege:
    a) Identifizierung der Strings im Quellcode über ID-Nummern
    b) Indentifizierung der Strings im Quellcode über eine ausgewählte (default) Sprache.

    Im Fall a) sieht dann der Quellcode so aus:

    'T wie Translate, nicht sehr sprechend, aber praktisch kurz!
    Sub T( Stringnummer as Integer ) as String
    ...
    End Sub

    'irgendwo im Programm:
    MessageBox.Show( T(ID_PROGRAMM_BEENDEN_SIND_SIE_SICHER) )

    Im Fall b), den ich bevorzuge, sieht das Ganze so aus:
    Sub T( Originaltext as String ) as String
    ...
    End Sub

    'irgendwo im Programm:
    MessageBox.Show( T("Programm beenden. Sind Sie sicher?") )

    Die Funktion T muß auf die Datenbank zugreifen, die die Texte enthält.
    Es ist z.B. eine Möglichkeit, in einer Variablen die aktuelle Sprache zu speichern, anhand der T auswählt, welche Übersetzung angeboten wird.
    Mit der Funktion T können alle laufenden Textausgaben in der aktuellen Sprache angeboten werden.

    Zusätzlich müssen noch beim Sprache umschalten alle Texte in der Oberfläche auf die neue Sprache manuell umgestellt werden. Das geht so:
    Button.Text = T("Hallo")

    Zur Funktion T():
    Vorteil von Variante a) mit Text-IDs: ist leichter zu realisieren
    Vorteil von Variante b) mit Originaltexten: ist im Quelltext schöner und man braucht nicht tausend ID-Nummern vergeben. Für nicht gepflegte Texte gibt es gleich einen Default-String, nämlich den Parameter Originaltext.

    Wenn man das Ganze objektorientiert realisieren will, dann ist T keine Funktion sondern ein Objekt und T() die Default-Property der Klasse von T.
    Die aktuelle Sprache ist dann eine Eigenschaft (Member-Variable) von T.

    Comment


    • #3
      Vielen dank Tonkey!

      so wie Du es in Fall b) beschrieben hast, hatte ich auch vor es umzusetzen!

      Allerdings weiss ich nicht wie ich

      - jedes einzelne Steuerelement (nicht nur Buttons) des Programms erfasse:
      Ich brauche eine Schleife, die alle Steuerelmente durchläuft und erkennt welcher Typ von Steuerelement es ist, denn ich muss auch überprüfen,

      - ob ein Steuerelement noch weitere Steuerelemente enthält:
      1) Falls es welche enthält, sollen diese natürlich auch erfasst werden!
      2) Falls es keine enthält, dann soll die Texteigenschaft des Steuerelementes einfach nur übersetzt werden mit der von Dir beschriebenen Translate-Methode

      Die Translate-Anweisung in meiner Klasse muss so in der Art aussehen:

      Button.Text = T("Text-Eigenschaft von Button")
      Label.Text = T("Text-Eigenschaft von Label")
      usw...

      Es klingt alles so einfach, aber für mich als .NET Einsteiger ist das alles doch sehr anspruchsvoll...

      Comment

      Working...
      X