Globalisieren



  • Guten Abend,

    habe heute mal darüber nachgedacht, wie ich mein derzeitiges Projekt benutzerfreundlicher machen könnte. Das Erste was mir dazu eingefallen ist, wäre die Mehrsprachigkeit.
    Nun habe ich in diversen Hilfen gelesen, dass man sämtliche Texte die irgendwann mal in dem Programm angezeigt werden, aus einem File beziehen kann. Wenn man dann eine andere Sprache wählen möchte, so "tauscht" man einfach das File aus und schon ist das Problem gelöst.

    Mir stellt sich jetzt allerdings die Frage, wie ich das umsetze. Darüber stand nämlich in den von mir herangezogenen Hilfen nichts. Kann mir also mal einer von euch erklären, wie ich das am besten angehe? Eine Schritt-für-Schritt Anleitung wäre gut.

    Habt besten Dank
    physici



  • Es gäbe da zum Beispiel die Möglichkeit, dass du eine XML-Datei schreibst.
    Die sähe dann in etwa so aus:

    <language name="English">
      <ButtonName1 text="Hit Me!" />
      <MenuFileOpen text="Open File..." />
    </language>
    <language name="German">
      <ButtonName1 text="Klick Mich!" />
      <MenuFileOpen text="Datei öffnen..." />
    </language>
    

    Über den Aufbau der XML-Datei lässt sich sicher streiten. Man könnte zum Beispiel auch pro Namensfeld die Unterteilung in die einzelnen Sprachen machen.

    Und nun schreibst du dir ne Klasse, der du die aktuell eingestellte Sprache übergibst und die dir dann die richtige Übersetzung für den entsprechenden Knoten in der XML-Datei liefert.

    LanguageKlasse test = new LanguageKlasse("English");
    Button1.Text = test.GetText("ButtonName1");
    test.SetLanguage("German");
    MenuFileOpen.Text = test.GetText("MenuFileOpen");
    

    (Singleton bietet sich hier an)

    Dank dem .net-Framework ist der Zugriff auf XML-Elemente auch nicht wirklich schwer.

    Aber vielleicht bietet das .net-Framework ja schon irgendwas in der Richtung an. Bin grad aber zu faul und vor allem zu müde, danach zu suchen.



  • cin schrieb:

    Dank dem .net-Framework ist der Zugriff auf XML-Elemente auch nicht wirklich schwer.

    Dank den .NET-Framework muss sich nicht jeder die Arbeit machen... sondern Du verwendest einfach den ResourceManager.

    @physici_errantes: Was für ein VS verwendest Du? 2003 oder 2005?
    Ab 2005 wird es noch einfacher/schöner.

    Wenn es nur um die Form geht, so kannst Du einfach das Property "Localizable" auf "true" setzen und dann ist sie lokaliesiert. Jetzt kannst Du für jede Sprache die Du unterstützen willst alles anpassen was Du willst.



  • Ich verwende VS2003, da ich noch keine 2005er Version auftreiben konnte.
    Es geht aber nicht nur um Formulare und deren Elemente, sondern auch um alle während des Programms generierten Fehlermeldungen etc.

    Was ich so gelesen habe, ist, dass man solch ein Ressource-File erstellen muss (für jede Sprache eins) und auf dieses dann zugreift. Allerdings seh ich da noch nicht so richtig durch, vor allem wie der Zugriff darauf funktioniert.

    Das mit der xml-Datei sah ja schon ganz gut aus und da hab ich auch durchgesehen. Aber das mit den Ressourcen war in dem Buch äußerst merkwürdig beschrieben.

    Gruß
    physici


Anmelden zum Antworten