Multilanguage
-
Moin,
ja, ja... in der faq steht's.
Aber irgendwie kann ich mich damit nicht zufrieden geben. Geht das nicht ein bisschen weniger umständlich???
Wenn sich jemand von Euch schonmal mit sowas beschäftigt hat, lass es mich wissen!!!!Tausend Dank.
Tom
-
Also ich mache das immer so:
CString strPath = CString( GetCommandLine()).Left( CString(GetCommandLine()).ReverseFind('\\')); CStdioFile File; CString m_1; CString m_2; CString m_3; CString m_4; if(File.Open(strPath,CFile::modeRead,NULL) ) { File.ReadString(m_1); File.ReadString(m_2); File.ReadString(m_3); File.ReadString(m_4); File.Close(); GetDlgItem(IDC_RADIO_1)->SetWindowText(m_1); GetDlgItem(IDC_RADIO_2)->SetWindowText(m_2); GetDlgItem(IDOK)->SetWindowText(m_3); GetDlgItem(IDCANCEL)->SetWindowText(m_4); }
Ich finde das um einges leicheter asl das im FAQ.
-
Schade ich haber vergesen das du an strPath noch den name der datei ranhängen muss die du als sprach datei willst.
-
@ mysticempires
dann verwendest du aber keine dll's, sondern dateien die du selbst vorher erstellst bzw ini's ???
-
Hallo
ich verwende dazu Textdateien (*.lng). So kann jeder spaeter
weitere Sorachen dazufuegen.
Einlesen mach ich zwar mit einer TStringList aber jeder wie er will.MfG
Klaus
-
genaus so mache ich das.Hier noch mal der coder wo ich eine Datei in den Pfad eingebunden habe.
CString strPath = CString( GetCommandLine()).Left( CString(GetCommandLine()).ReverseFind('\\')); strcat(strPath, "\\translation.ini"); CStdioFile File; CString m_1; CString m_2; CString m_3; CString m_4; if(File.Open(strPath,CFile::modeRead,NULL) ) { File.ReadString(m_1); File.ReadString(m_2); File.ReadString(m_3); File.ReadString(m_4); File.Close(); GetDlgItem(IDC_RADIO_CS)->SetWindowText(m_1); GetDlgItem(IDC_RADIO_HL)->SetWindowText(m_2); GetDlgItem(IDOK)->SetWindowText(m_3); GetDlgItem(IDCANCEL)->SetWindowText(m_4); }
Mann kann ja wenn man will eine ortner in seinen Programm verzeichnis erstellen der "Lang" da drin sind dan lauter date wie eng.ini und ru.ini die mann dan zum kanns leicht ins haubt verzeichnis kopiert und so in translation.ini umbennent.Sonne sprch datei sieht z.b so aus:
Eingabe
Was soll ersetzt werden :
Durch was :
Öffnen
Ersetzen
BeendenAlso ich finde es so am leichtesten.
Soory kann sein das Rechtschreibfehler drin sind bin garde in Zeitnot.
-
Aaalso ich habe das so gemacht:
1. Eine stringtable anglegt.
2. Jeweils um 100 (ID Nummern) versetzt die verschiedensprachigen Texte eingetragenz.B.
ID_TEXT=100 enthält "Bitte öffnen"
ID_TEXT_ENG=200 enthält "please open"
ID_TEXT_NL=300 enthält "bedde offenen" (ich kann kein NL)3. jetzt einfach Konstanten DE = 0, ENG = 100, NL = 300.
Irgendeine global, oder member m_iLang enthält dann die aktuelle Sprache und Du lädst texte immer mit:str.LoadString(ID_TEXT +m:iLang)
Fertig. Wenn Du mehr als 100 verschiedene Texte zu jeder Spache hast, nimmst Du halt größere Abstände.
F.
-
jui
tausend dank für die antworten.
bin zwischenzeitlich soweit gekommen, dass ich die stringtables in verschiedene dll's kopiert hab, für jede sprache eine.
nun möchte ich über ein menue die sprache zur laufzeit verändern. und zwar so, dass alle neuen texte komplett zugewiesen werden, da das prog später nicht mehr auf die platte zugreifen soll. hat da vielleicht nochmal jemand ne idee, wie das funzt??