![]() |
Re: Das eigene Programm in Russisch
Zitat:
Zitat:
|
Re: Das eigene Programm in Russisch
Danke für die Nachfrage. Also ich habe jetzt bei mir erstmal noch ein russisches Tastaturlayout hinzugefügt. Damit kann ich jetzt in Textdateien schreiben, muss diese aber aber UniCode speichern, damit nix verloren geht. Soweit hoffen ich, habe ich das schon mal verstanden.
Habe ich es richtig verstanden, dass ich das Tool einfach so lassen soll, alle Komponenten auf Russischen Char umstellen soll und dann eine Übersetzungsdatei laden soll? So in der Art [Deutsch] btn_danke.caption = "Danke" [Russisch] btn_danke.caption = "спосйбо" ? Und das dann als UniCode-Datei abspeichern??? |
Re: Das eigene Programm in Russisch
So gehts schon mal nicht. Ich erhalte zwar keine Fragezeichen mehr in dem Programm, aber dafür dann auch gar keinen Inhalt. Ich probiere mal weiter...
Delphi-Quellcode:
Inhalt der Textdatei:
procedure TForm1.Button1Click(Sender: TObject);
var myList:TStringlist; begin myList:=TStringlist.Create; myList.LoadFromFile('c:\test.txt'); Label1.Caption := WideStringToStringEx(myList.Strings[0],251); end;
Delphi-Quellcode:
CP_ACP
ЕУЧЕ
???? TEXT CP_MACCP CP_OEMCP CP_SYMBOL CP_THREAD_ACP CP_UTF7 Windows CP_UTF8 Windows Habe jetzt auch diese CodePages versucht, aber ich erhalte NIE ЕУЧЕ im Label angezeigt. |
Re: Das eigene Programm in Russisch
Eine TStringList kann keine WideStrinsg, d.h. die brauchst Du auch nicht als WideString konvertieren. Die bereits erwähnten TNTWare Controls haben imho eine TWideStringList (und es gibt auch noch einige andere).
Oder einen Editor nehmen, der Dich die Codepage auswählen lässt (zur Not auch in Delphi selber schreiben, musst ja nur ein TMemo mit dem entsprechenden Charset versehen und nen Speicherknopf dazupacken), dann kannst Du TStringList nehmen und musst gar nichts mehr konvertieren. |
Re: Das eigene Programm in Russisch
Für mich waren und sind diese Codepages und Charsets bisher bömische Dörfer. Also einfach ein Memo nehmen und von dort laden? Muss aber dann schon wieder zwingend eine der TNT´s sein, oder? Ok, dann werde ich es später mal versuchen. Warum muss das alles so kompliziert sein?
|
Re: Das eigene Programm in Russisch
Zitat:
Zitat:
|
Re: Das eigene Programm in Russisch
Naja, nochmal von vorne :D
1. Wenn man ein Projekt frisch anfängt, sollte man gleich Unicode in Betracht ziehen, und dafür z.B. die TNTWare Controls (edit: wie Bernhard gerade sagte). 2. Wenn man ein bestehendes Projekt mit Komponenten, die es nur in ANSI gibt, umstellt (übrigens aus genau diesem Grund hab ich mir die LMDTools nie angetan, war mir zu unsicher, ob die mal Unicode können würden), geht es auch per ANSI. Was ich mit dem TMemo meinte, völlig ohne Unicode-Komponenten:
Womit ich jetzt nicht sagen will, daß eine rein Textdatei als TStringList ausgelesen wirklich geeignet wäre, aber als Ansatz zum Lernen kannst Du das ja mal versuchen. Kurze Erklärung zu Codepages: normale strings in Pascal bestehen aus normalen chars. Ein Char kann halt maximal 256 verschiedene Zeichen abbilden, das reicht natürlich nicht für alle Alphabete der Welt ;) Also hat man unterschiedliche Bedeutungen für die einzelnen Zeichen erfunden - Zeichen #65 ist auf "Standard"-Codepages (englisch, deutsch um es vereinfacht zu sagen) immer das kleine 'a', auf russichen Codepages immer das Zeichen für Vodka (letzeres natürlich nur erfunden, leider kenn ich keine echten russischen Buchstaben :D). @Bernhard Geyer: und leider werben Sie trotzdem groß mit Unicode-Unterstützung, meinen damit aber nur die IDE :( |
Re: Das eigene Programm in Russisch
Zitat:
|
Re: Das eigene Programm in Russisch
Hallo nochmals,
also nun klappt es. Ok, ich würde also wie folgt vorgehen und ich bitte hiermit nochmal sum Einspruch, falls erforderlich. In einer Schleife alle Controls und Forms durchsuchen und den Font-Charset ändern. Dabei schauen, ob das Control nen Namen, eine Caption bzw. einen Text besitzt. Den Namen in die Ini schreiben und dazu den Wert des Textes oder der Caption. Später im "Translator" in die Memo die Ini laden und den russischen Kollegen alles übersetzen lassen und speichern nicht vergessen. Gangbarer und sinnvoller Weg? Auf jeden Fall Danke ich euch!!! Edit: Gerade eben habe ich festgestellt, dass dies zwar wunderbar mit einem Label funktioniert aber nicht mit nem Button und der Cpation eines Forms und dabei habe ich definitiv den Charset eingestellt und auch Tahoma als Schriftart gewählt. Was ist denn nun wieder?
Delphi-Quellcode:
Die Memo wird beim Createn geladen. Da stimmt alles und steht auch alles kyrillisch drin...
procedure TForm1.Button1Click(Sender: TObject);
var myList:TStringlist; begin //erstmal speichern was drin ist Memo1.Lines.SaveToFile('c:\test.txt'); //und dann taufrisch rausholen was drin ist myList:=TStringlist.Create; myList.LoadFromFile('c:\test.txt'); //und verteilen Label1.Caption := myList.Strings[0]; self.Caption := myList.Strings[1]; Button1.Caption := myList.Strings[2]; end; |
Re: Das eigene Programm in Russisch
Zu beachten gibt es z.B. noch diverse Font-Eigenschaften von Screen, z.B. Screen.MenuFont etc. (siehe Hilfe unter TScreen).. auch im Application-Objekt findet sich beispielsweise noch ein BiDiMode (wobei der für russisch keine Rolle spielt)...
Nur so ganz nebenbei fällt mir ein, hat Delphi nicht sogar auch eine integrierte Lokalisierungshilfe? Ich hab die nie verwendet, weil 500KB+ pro Sprachdatei selbst für das kleinste Projekt für mich nicht in Frage kamen, aber drauf hinweisen kann ja nicht schaden ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz