Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Das eigene Programm in Russisch (https://www.delphipraxis.net/90947-das-eigene-programm-russisch.html)

torud 26. Apr 2007 12:09


Das eigene Programm in Russisch
 
Hallo Wissende,

ich würde gern eines meiner Tools ins Russische übersetzen, verzweifele aber gerade, die Buchstaben in die Controls zu bekommen. Mir ist klar, dass da was mit UniCode ist, und das das nicht ganz einfach ist, aber was muss ich beachten und wie kann ich vorgehen, ohne dabei alle meine Controls ändern zu müssen. Ich erhalte nur ???? statt der Buchstaben, wie sie hier schön zu sehen sind.

АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

Was muss ich also tun, um dieses Problem zu beheben?

RXR-Max 26. Apr 2007 12:22

Re: Das eigene Programm in Russisch
 
schreib das ganze doch in eine ini und dann kann man bei einem button-klick die sprache ändern. und die fragezeichen bedeuten soweit ich weiß das du das language-pack nicht installiert hast. musst dann wohl machen. ja und nen russe hat das sicher schon standard auf seinem rechner denke ich mal...

CCRDude 26. Apr 2007 12:27

Re: Das eigene Programm in Russisch
 
Du musst jedem Control in Font.Charset RUSSIAN_CHARSET (204) zuweisen. Geht per Code recht schnell, eine alle Controls der Form durchiterieren (Controls/ControlCount).

torud 26. Apr 2007 12:31

Re: Das eigene Programm in Russisch
 
Ok, dann werde ich das mal probieren. der Code, den ich über Skype erhielt war natürlich schon in UniCode, weshalb es nicht ging.

Ich habe soeben eine Textdatei in verschiedenen Formaten erhalten.

Unicode
Unicode Big endian
UTF-8
Ansi

Leider in den 3 erstgenannten Dateien zwar alles auf Russisch in Kyrillischen Schriftzeichen zu lesen, aber nach dem Kopieren in ein Label von Delphi waren nur Fragenzeichen zu lesen.

In der Ansitextdatei waren von vornherein nur Fragezeichen drin. Ich hatte bei dem Label mal auf

ANSI_CHARSET
RUSSIAN_CHARSET

gestellt, aber es scheint nicht zu funzen. Irgendwie mache ich immer noch was falsch...!?

CCRDude 26. Apr 2007 12:34

Re: Das eigene Programm in Russisch
 
Es gibt übrigens auch die TNTWare Unicode Controls, die als Ersatz für die normalen richtig Unicode können statt Charsets zu benötigen.

Dummerweise wurden die gerade kommerziell, aber vielleicht findet sich ja auf Torry etc. noch ein etwas ältereres Download.

Bernhard Geyer 26. Apr 2007 12:37

Re: Das eigene Programm in Russisch
 
Zitat:

Zitat von RXR-Max
schreib das ganze doch in eine ini und dann kann man bei einem button-klick die sprache ändern.

Ini-Dateien sind nicht Unicode-Fähig bzw. von Windows-Seite auf 8-Bit-Charaters beschränkt.

Zitat:

Zitat von RXR-Max
und die fragezeichen bedeuten soweit ich weiß das du das language-pack nicht installiert hast. musst dann wohl machen.

Falsch. Fragezeichen bedeuten das eine Codepagewandlung durchgeführt wurde (in die aktuelle Codepage) und in der Zielcodepage dieses Zeichen nicht abbildbar ist. Ist ein Zeichen im verwendeten Font nicht vorhanden bekommt man ein leeres Ersatzzeichen im Font (z.B. ein schwarz umrandetes Rechteck).

Zitat:

Zitat von RXR-Max
ja und nen russe hat das sicher schon standard auf seinem rechner denke ich mal...

Nein. Ein "Russe" wird ein Windows-System haben das als Standard-Codepage kyrilisch hat. Damit könnenn Nicht-Unicode-Anwendungen kyrilische Zeichen verarbeiten. Jedoch werden diese keine Westeuropäischen Umlaute mehr verarbeiten könnnen.

Zitat:

Zitat von CCRDude
Du musst jedem Control in Font.Charset RUSSIAN_CHARSET (204) zuweisen. Geht per Code recht schnell, eine alle Controls der Form durchiterieren (Controls/ControlCount).

Vergiss eine solceh Lösung. Nicht alle Controls berücksichtigen diese Einstellung und eine darauf aufbauende Lösung verursachte mehr Probleme als sie lößt.

Die einzige vernünftige Lösungen ist Unicode-Controls wie ElPack oder TMS TNTWare-Controls zu verwenden.

CCRDude 26. Apr 2007 12:45

Re: Das eigene Programm in Russisch
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von CCRDude
Du musst jedem Control in Font.Charset RUSSIAN_CHARSET (204) zuweisen. Geht per Code recht schnell, eine alle Controls der Form durchiterieren (Controls/ControlCount).

Vergiss eine solceh Lösung. Nicht alle Controls berücksichtigen diese Einstellung und eine darauf aufbauende Lösung verursachte mehr Probleme als sie lößt.

Nun, hier wende ich das erfolgreich für 53 verschiedene Sprachen an. Bis auf Persisch (4 Sonderzeichen, die in ARABIC_CHARSET nicht enthalten sind) keinerlei Probleme.
Klar, TVirtualStringTree z.B. will lieber Unicode, dafür registriere ich in meiner Lokalisierungsklasse einen speziellen Handler, aber Controls, die nur ANSI können, dort aber Font.Charset ignorieren, sind mir noch nicht untergekommen (oder vielleicht schon, aber wegen mangelnder Qualität sofort rausgeflogen).
Übrigens: auch mit ANSI-INI-Dateien gelöst ;)

torud 26. Apr 2007 12:47

Re: Das eigene Programm in Russisch
 
Das war doch mal ne Aussage. Das tolle ist, dass ich von TMS das ComponentenPack gekauft habe und ehrlich gesagt nicht einsehe nun auf die optisch recht ansprechenden Controls verzichten zu müssen und nochmal extra zahlen soll. Ich werde mal den Support von den Kollegen anschreiben. Vielleicht lassen die sich ja zu nem Update hinreißen!?

Im übrigen hat es bei mir nicht einmal geklappt ein einfaches Label mit nem russischen Text zu bestücken.

Bernhard Geyer 26. Apr 2007 13:08

Re: Das eigene Programm in Russisch
 
Zitat:

Zitat von CCRDude
Nun, hier wende ich das erfolgreich für 53 verschiedene Sprachen an. Bis auf Persisch (4 Sonderzeichen, die in ARABIC_CHARSET nicht enthalten sind) keinerlei Probleme.

Wolltest Du nicht mal nach Freepascal wechseln ...

Zitat:

Zitat von CCRDude
... aber Controls, die nur ANSI können, dort aber Font.Charset ignorieren, sind mir noch nicht untergekommen (oder vielleicht schon, aber wegen mangelnder Qualität sofort rausgeflogen).

Und was machst du wenn du "Ω=∑aa−≍⋥ ä" benötigst?

Zitat:

Zitat von CCRDude
Übrigens: auch mit ANSI-INI-Dateien gelöst ;)

Wenn die Text in der entsprechenden Codepage als 8-Bit Character gespeichert werden ...

Zitat:

Zitat von torud
Das war doch mal ne Aussage. Das tolle ist, dass ich von TMS das ComponentenPack gekauft habe und ehrlich gesagt nicht einsehe nun auf die optisch recht ansprechenden Controls verzichten zu müssen und nochmal extra zahlen soll.

Wenn du dein Geld damit verdienst wird das Geld das kleinste Problem sein. Der Aufwand zum umstellen. Aber das TMS ja jetzt die TNT's besitzt kannst Du ja mal nachfragen ob diese Technik in den Controls einfließt. Aber bisher waren die eigenen Unicode-Lösungen von TMS alles andere als Praktikabel.

Zitat:

Zitat von torud
Im übrigen hat es bei mir nicht einmal geklappt ein einfaches Label mit nem russischen Text zu bestücken.

Du mußt schon deinene Widestring in die passende Codepage umwandeln z.B. per WideStringToStringEx-Funktion aus den Jedis. Und das bei jedem Text die du in ein Ansi-Control schreibst oder auslesen willst.

CCRDude 26. Apr 2007 13:22

Re: Das eigene Programm in Russisch
 
Zitat:

Zitat von Bernhard Geyer
Wolltest Du nicht mal nach Freepascal wechseln ...

Was genau hat das damit jetzt zu tun? :D
Lazarus (LCL, das VCL-Äquivalent) ist leider unter Windows auch nicht wirklich Unicode, bringt hier also keine Vorteile.
Aber: Die Windows Mobile-Version ist pures FreePascal, die nächste Symbian-Version wird das ebenfalls sein, und insgesamt kompilieren inzwischen 100% mit beiden Compilern (fpc/dcc32) und 95% sind schon auf Funktion unter FPC getestet ;)

Zitat:

Zitat von Bernhard Geyer
Und was machst du wenn du "Ω=∑aa−≍⋥ ä" benötigst?

Wahrscheinlich SYMBOL_CHARSET? Benötige ich im genannten Beispiel ja nicht ;)
Aber wo ich Unicode wirklich brauche, verwende ich selbstverständlich auch Unicode, genauso wie in meinen eigenen UI-Klassen.

Ich sprech mich ja nicht dafür aus, daß Codepages & ANSI die ideale Lösung sind, nur daß die eben eine durchaus gut funktionierende Lösung sind, wenn man ein einfaches ANSI-Projekt mit durchgehend einer Benutzersprache umstellen will, und eben eigentlich nicht die Probleme machen muss, die Du erwähntest.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz