Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo Leute,

mein Programm soll alle europäischen Sprachen und evtl. alle anderen beherrschen.

Das beudeutet, dass ich bei Programmstart die eingestellte Systemsprache abfragen muss und jenachdem die Menüs und MessageBoxen in dieser Sprache anzeigen muss.

Wie ändert man entsprechend die Texte?

Wie funktioniert das mit anderen Schriftzeichen (z. Bsp. griechisch, tschechisch, usw.)?

Geschrieben

Wie ändert man entsprechend die Texte?

Wie funktioniert das mit anderen Schriftzeichen (z. Bsp. griechisch, tschechisch, usw.)?

Autsch :D;)

Wenn du noch sooo wenig Ahnung von der Softwarelokalisierung hast, dann wuerd ich besser die Finger davon lassen. Das ist ein sehr komplexes Thema bei dem viel bedacht werden muss.

Goos

Geschrieben
Autsch :D;)

Wenn du noch sooo wenig Ahnung von der Softwarelokalisierung hast, dann wuerd ich besser die Finger davon lassen. Das ist ein sehr komplexes Thema bei dem viel bedacht werden muss.

Goos

Es hilft alles nichts, ich werde mich der Herausforderung stellen müssen!

Geschrieben
Es hilft alles nichts, ich werde mich der Herausforderung stellen müssen!

Dann erzaehl mal naeheres. Geht es nur um das eine Programm, oder solls auch eher ne Libary zum relativ einfachen Einsatz in anderer Software sein?

Willst du deine Texte dynamisch zur Laufzeit aendern, oder nur nach nem Neustart?

Wirst du auch bei allen Buttons und sonstigen benannten Controls die Schriftgroesse berechnen und das entsprechende Control in der Groesse anpassen?

Soll die dann auch auf entsprechenden Landessprachlichen Windows Systemen laufen, oder sollte man auch auf einem sagen wir mal englischen Windows chinesische Schrift anzeigen koennen?

usw....

Goos

Geschrieben

Das Programm soll beim Starten die Systemsprache abfragen und entsprechend sind dann im Programm schon das Menü und die Messageboxen so integriert, dass sie entsprechend der gesetzten Systemsprache den entsprechenden Text enthalten.

if(Systemsprache==Englisch)

MenuText==Englisch;

Vereinfacht dargestellt.

Es soll keine Sprachumstellung im Programm geben, sondern sich nach der Systemsprache richten.

Geschrieben

Üblicherweise lagert man alle sprachabhängigen Ressourcen in DLLs aus. Beim Programmstart wird dann in Abhängigkeit von der Sprache eine dieser DLLs geladen und die darin enthaltenen Ressourcen verwendet.

Bei Verwendung der MFC geht das z.B. mit AfxSetResourceHandle.

Geschrieben

Wenn du keine DLL nutzen möchtest,, kannst oder willst kannst du es dir ganz einfach machen.

Erstelle für jede Sprache jeweils eine INI-Datei. Language_d.INI;Language_gb.ini, etc.etc.

Dann schaust du beim Programmstart nach, welche Sprache eingestellt ist, und nimmst die Einträge aus der INI-Datei.

Ein kleines Beispiel:



if Systemsprache=GB then begin

  pass.FilesprachShare='C:\language_gb.ini';

end;

SprachIni:=TIniFile.Create(Pass.FileSprachShare);

  with SprachIni do begin

    Caption                       := ReadString('PASSWORT','Fenster','_');

    //Labels

    LabelPassw.Caption            := ReadString('PASSWORT','Passworteing','_');

    LabelName.Caption             := ReadString('PASSWORT','Name','_');

    LabelPasswort.Caption         := ReadString('PASSWORT','Passwort','_');

    LabelLevel.Caption            := ReadString('PASSWORT','Level','_');

    Labelpwaendern.caption        := ReadString('PASSWORT','PwAendern','-');

    labelnote1.caption            := ReadString('PASSWORT','Note1','-');

    labelnote2.caption            := ReadString('PASSWORT','Note2','-');

    labelselectlevel.caption      := ReadString('PASSWORT','Selectlevel','-');

    labelnewpw.caption            := ReadString('PASSWORT','Neues_Passwort','-');

    labelnewpwwiederholung.caption:= ReadString('PASSWORT','Passwort_Wiederholung','-');

    //Buttons

    BitBtnAnmelden.Caption        := ReadString('PASSWORT','Anmelden','_');

    BitBtnAbmelden.Caption        := ReadString('PASSWORT','Abmelden','_');

    BitBtnEnde.Caption            := ReadString('PASSWORT','Ende','_');

    BitBtnok.caption              := ReadString('PASSWORT','BtnOK','_');

    BitBtnabort.caption           := ReadString('PASSWORT','BtnAbort','_');

    BitBtnyes.caption             := ReadString('PASSWORT','BtnYes','_');

    Free;

  end;

Code ist weder geprüft noch funzt es so.soll dir das ganze nur vereinfachen.

MVG

need-some-blood

Geschrieben

@Narf

Hast Du Dir schon mal den Multilizer angeguck? Der hilft Dir bei Mehrsprachigen Anwendung und bietet auch die Möglichkeit, die Texte aus Deinem Programm von anderen übersetzen zu lassen, ohne ihnen Einsicht in Deinen Quellcode geben zu müssen. Kannst ja mal aufwww.multilizer.com nachgucken.

Geschrieben

Mutig, mutig, bei der Menge an Sprachen die du dir da vorgenommen hast. :D

(ich wollt jetzt nicht gleich sagen: quasi undurchfuehrbar und hoellischer Aufwand usw.)

Goos

  • 2 Jahre später...
Geschrieben

Und jetzt ist es soweit.

Ich soll mein Programm griechisch "sprechen" lassen.

Zur Zeit habe ich deutsch und englisch, was ja kein Problem ist.

Dazu habe ich eine String-Table, in der ich alle Texte drin habe und für die englische Anzeige einfach zu der ID 200 dazuzähle.


CString Text;


Text.LoadString(ID_Text_Deutsch+200); //Text ist englisch

Alle Texte wurden ins Griechische übersetzt. Jetzt wollte ich mir die Sache einfach machen und aus der Excel-Tabelle die griechischen Texte rauskopieren und in die String-Table einfügen.

Tja.

Nur kommen da statt der Schriftzeichen nur "?????". Wenn ich den selben String in den Editor kopiere, klappt es wunderbar und in Excel offensichtlich auch.

Ich habe in der Systemsteuerung bei Sprachen/Eingabeschema griechisch hinzugefügt. Ein extra Sprachpaket für das Visual Studio war nicht dabei.

Wo kann ich denn meinem Projekt beibringen, dass er mir diese Zeichen korrekt darstellt?

Geschrieben

Am besten haettest gleich ein Unicode Projekt gemacht ;)

Ansonsten kannst du bei deinem Windows noch unter Einstellungen->"Regions und Sprachoptionen"->Erweitert->"Sprache fuer Programme, die Unicode nicht unterstuetzen" griechisch einstellen.

Falls dir dann nichts rechtes angezeigt wird, ist deine Uebersetzung wohl nicht passend :)

Goos

Geschrieben

Also jezt mal ganz ehrlich... Ist dir die Mühe nicht etwas zu groß?

Wenn du das für jede Sprache machen musst die irgendwann neu dazukommt?!

Nimm dir mal 3-4 Stunden Zeit und erzeuge eine Resource Dll. In dieser brauchst du dann nur den String Table anpassen und kannst auch bequem die Dialoge so umgestalten das es passt.

Die wird am Anfang geladen und gut ist. So verstehst du dein Programm auch leichter und das hinzufügen von einer neuen Sprache (oder nur neuen Strings ) ist super simpel.

Geschrieben

Da das ganze neu für mich ist, kannst Du mir sagen, was ich da zu tun habe?

Das geht schon los mit der Erstellung einer DLL, dann die Einbindung in mein Programm, was da zu beachten ist uvm.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...