1 Programm + 2 Sprachen = ???



  • Hallo,

    ich habe da mal eine Grundsatzfrage.

    (Keine Ahnung ob das MFC-Forum das richtige dafür ist)

    Ich möchte mein Programm in 2 Sprachen erstellen, welche man dann im Menü umschalten kann.

    Im MS Visual C++ gibt es ja die Möglichkeit, Resourcen zu Kopieren, und andere Sprachen festzulegen.
    Aber wie geht es dann weiter?

    Ich habe jetzt im Resourcenbaum 2 Dialogeinträge:
    + Dialog
    - Anwendungsdialog - Standard, also DE
    - Anwendungsdialog (English / USA)

    Wie kriege ich das jetzt hin, dass beim Klick im Menü auf English der Englische Dialog angezeigt wird?
    Und wie mache ich das mit den MessageBoxen?
    Ich habe jetzt MessageBox("Hallo Welt!");
    wie lade ich jetzt da den richtigen Text aus der jeweiligen stringtabelle?

    Zerbreche mir schon die ganze Zeit den Kopf darüber...

    mfg
    trequ



  • Naja ich sag jetzt einfach wie ich es machen würde aber da ich Anfänger bin könnte es sicherlich auch anders, vielleicht sogar einfacher, gehen:

    Variante 1:
    Du machst insgesamt 2 komplett verschiedene Dialoge. Zu diesen Dialogen logischerweise je eine eigene Klasse. Dann codest du das Ganze in einer Sprache bis alles so funktioniert wie du es dir vorgestellt hast. Der zweite Dialog ist erstmal unwichtig. Wenn du dann mit dem ersten Dialog fertig bist kopierst du den gesamten Code in den zweiten und übersetzt einfach alle Ausgaben die du im Programm machst (MessageBoxen, Dialogelemente etc.). Dann erstellst du zwei neue Menüs und fügst sie in den zwei Dialogen hinzu. Eines auf englisch, das andere auf deutsch. Dort kannst du dann festlegen was er machen soll wenn du auf die andere Sprache klickst. Natürlich das neue öffnen und das aktuelle schliessen oder sowas. Was ich noch empfehlen würde: Du speicherst in der Registry irgendeinen Wert ob der User englisch oder deutsch gewählt hat (z.B. einen int-Wert (z.B. 1 für englisch und 2 für deutsch). Damit das Programm beim nächsten Start dann die letzte Einstellung noch weis. Musst einfach beim Konstruktor eine Funktion die abfragt welche Sprache es ist aufrufen.

    Variante 2:
    Du machst selbiges mit der Registry und machst nur einen Dialog. Vor JEDER Ausgabe musst du dann abfragen ob der User auf dem englischen oder auf dem deutschen Interface ist und je nach Wahl dann eine entsprechende Ausgabe generieren.

    Ich hoffe ich konnte dir etwas auf die Sprünge helfen. Aber warte besser bis noch erfahrenere User posten, vielleicht gibt es einfachere Möglichkeiten von denen ich (noch) nichts weis...




Anmelden zum Antworten