BS-Sprache vs. Anwendungssprache
-
Hallo Gemeinschaft,
ich bin immernoch dabei die Englisch-Übersetzung zu machen. Die Programm-Sprache soll unabhängig davon eingestellt werden können, welche Sprache das Betriebssystem gerade benutzt. Nun habe ich Hinweise dafür gefunden, dass eine Anwendung eine andere Sprache nutzen kann als das Betriebssystem, sofern die andere Sprache vom Betriebssystem auch unterstützt wird. Dazu müsste man erstmal prüfen, welche Sprachen das Betriebssystem unterstützt.
(1) Wie prüfe ich aus einem Programm heraus, welche Sprachen das Betriebssystem unterstützt?
Sofern die vom Nutzer gewählte Sprache vom BS unterstützt wird, möchte ich die Anwendung darauf einstellen diese für Standarddialoge zu nutzen.
(2) Hat jemand von euch schonmal nur die Sprache der Anwendung geändert? Habt ihr Ideen, wie das gehen könnte und was zu beachten ist?
Jetzt kommt sicher auch wieder die Frage nach dem Sinn auf. Nehmen wir folgendes, (nicht unbedingt unwahrscheinliches) Szenario:
Ein Nutzer X der Software hat einen Auftrag in einem Unternehmen in Rumänien (Beispielland). Er fliegt also dorthin und bekommt einen Rechner zugewiesen, auf dem er seine Software installieren kann die er zum arbeiten braucht. Gleichzeitig wird der Rechner von einem rumänischen Mitarbeiter Y genutzt. Die beiden stimmen sich zeitlich ab. X kann Deutsch und Englisch, aber kein Rumänisch. Das Betriebssystem des rumänischen Rechners kann Deutsch, Englisch und Rumänisch. Y kann üblicherweise nur Rumänisch, deswegen ist das BS seines Rechners auf Rumänisch eingestellt (warum muss ich lachen wenn ich das schreibe?). Schon stehen wir vor einem Problem: Das Programm von X darf die BS-Sprache nicht umstellen, weil sonst Y nicht mehr an seinem Rechner arbeiten kann. X kann aber die Standarddialoge der Software nicht lesen / bedienen, weil er kein Rumänisch kann. X und Y verstehen sich untereinander nicht, so kann X nichtmal fragen was da in seiner Software steht...Und jetzt soll mir bitte keiner auf die Idee kommen, X könne ja seinen Laptop mitnehmen.

Ich freue mich auf eure Antworten
-
Was hast du denn für ein Problem mit anderen Sprachen.
Du hast für jede Sprache dann eine Sprachdatei, die eingelesen wird, wenn die Sprache umgestellt wird.
Wenn du dein Programm auch in Thailand, China etc. anbieten willst, musst du dich dann mit Unicode auseinandersetzen. Da gibt es von TNT Komponenten für den BCB.
-
Hallo
Kolumbus schrieb:
(1) Wie prüfe ich aus einem Programm heraus, welche Sprachen das Betriebssystem unterstützt?
Sofern die vom Nutzer gewählte Sprache vom BS unterstützt wird, möchte ich die Anwendung darauf einstellen diese für Standarddialoge zu nutzen.
Sicher mit WinAPI-Funktionen. (Dezenter Hinweis auf das WinAPI-Forum)
(2) Hat jemand von euch schonmal nur die Sprache der Anwendung geändert? Habt ihr Ideen, wie das gehen könnte und was zu beachten ist?
Du must alle sprachrelevanten Beschriftungen austauschen, bzw. ganz auslagern. Dafür können String-Ressourcen, externe DLLs, externe (XML-) Textdateien oder eine Datenbank benutzt werden.
Wenn du wirklich richtig internationalisieren willst must du Unicode anstelle von ASCII verwenden, respektive WideString anstelle von AnsiString. Sonst bekommst du ganz schnell Probleme mit den ganzen nichtlateinischen Zeichen. Ich glaub Rumänisch beinhaltet auch schon welche.
Da (zumindestens bei den Builder-Versionen die ich kenne) die Standardcontrols nicht mit WideString arbeiten must du eventuell ein externes Package mit entsprechenden Unicode-fähigen Controls (wie TMS) einbinden und alle Controls ersetzen.
Dazu kommt das man bei allen Controls mit Beschriftungen mehr Platz einplanen muß, da in anderen Sprachen die Beschriftung länger werden könnte.
Außerdem sollte bedacht werden das in anderen Sprachen Datums- und Zahlenangaben anders formatiert werden.bis bald
akari
-
wt_f schrieb:
Was hast du denn für ein Problem mit anderen Sprachen.
Das Problem ist Folgendes:
(Anwendungssprache != const AktuellEingestellteBetriebssystemsprache) == truewt_f schrieb:
Du hast für jede Sprache dann eine Sprachdatei, die eingelesen wird, wenn die Sprache umgestellt wird.
Ich verstehe nicht ganz was du meinst!?! Wo habe ich eine Sprachdatei, die wann eingelesen wird, wenn welche / wo Sprache umgestellt wird?
wt_f schrieb:
Wenn du dein Programm auch in Thailand, China etc. anbieten willst, musst du dich dann mit Unicode auseinandersetzen. Da gibt es von TNT Komponenten für den BCB.
Nein, will ich nicht.
//--------------------------------------------------------------------------
Jetzt kam grad noch akari's Post:
akari schrieb:
Du must alle sprachrelevanten Beschriftungen austauschen [...]
Habe ich schon. So viele sind es nicht und es soll auch nur Deutsch / Englisch sein, daher hab ich's einfach in ner extra Unit gemacht. Nicht gut?
akari schrieb:
Dazu kommt das man bei allen Controls mit Beschriftungen mehr Platz einplanen muß, da in anderen Sprachen die Beschriftung länger werden könnte.
Ja, das hat etwas Mühe gekostet

akari schrieb:
Außerdem sollte bedacht werden das in anderen Sprachen Datums- und Zahlenangaben anders formatiert werden.
Guter Hinweis, hab ich auch schon dran gedacht. Das ist bei meinen Vorlagen hier garnicht beachtet worden und der Kollege hat das in seinem Programm auch nicht vorgesehen. Irgendwie ist das Alles ziemlich schlecht vorbereitet... "Hier, mach mal auf Englisch. Hier die Vorlage vom Übersetzungsbüro." fertig war er. Leider hat er Urlaub und ich kann ihn derzeit nicht fragen, wie das mit dem Datumsformat geregelt werden soll.
zum prüfen welche BS-Sprachen unterstützt werden:
akari schrieb:
...mit WinAPI-Funktionen. (Dezenter Hinweis auf das WinAPI-Forum)
Danke!

akari schrieb:
Wenn du wirklich richtig internationalisieren willst [...]
Will ich ja garnicht. Nur Deutsch / Englisch.
//--------------------------------------------------------------------------
Nochmal kurz das Problem: Die Beschriftungen des Programms werden aus einer Unit heraus ausgetauscht wenn der Nutzer Deutsch / Englisch wählt. Die Standarddialoge kann ich so allerdings nicht ändern. Ich will aber auch nicht die BS-Sprache verstellen, damit die Standarddialoge passen. Das Umstellen der BS-Sprache hilft eh nicht immer: Ein XP das nur Deutsch kann, kann eben nicht auf Englisch umgestellt werden!Seid bitte etwas nachsichtig, ich beschäftige mich zum 1. Mal mit Nationalsprachen in Anwendungen! Benutzernamen wie wt_f sind mies, wenn ich den Namen richtig interpretiert habe!
-
Hallo
Kolumbus schrieb:
akari schrieb:
Du must alle sprachrelevanten Beschriftungen austauschen [...]
Habe ich schon. So viele sind es nicht und es soll auch nur Deutsch / Englisch sein, daher hab ich's einfach in ner extra Unit gemacht. Nicht gut?
Das must du wissen. Bei deiner (wohl die einfachst mögliche) Lösung must du das ganze Programm neu kompilieren und verteilen wenn nur mal eine Übersetzung geändert werden muß oder eine neue Sprache hinzukommt.
bis bald
akari
-
akari schrieb:
Das must du wissen. Bei deiner (wohl die einfachst mögliche) Lösung must du das ganze Programm neu kompilieren und verteilen wenn nur mal eine Übersetzung geändert werden muß oder eine neue Sprache hinzukommt.
Das geht in Ordnung so, trotzdem Danke für den Hinweis.