Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Realisierung von Mehrsprachigkeit (https://www.delphipraxis.net/82336-realisierung-von-mehrsprachigkeit.html)

OldGrumpy 13. Dez 2006 17:32

Re: Realisierung von Mehrsprachigkeit
 
Handbuch, Manual, Docs... alles das gleiche in Grün. Zeig mal bitte nen Codebeispiel für die TTreeView die er nicht erkennt. Das wundert mich jetzt nämlich doch sehr. Einträge zum po-File hinzufügen bringt nämlich genau NULL. Denn der Inhalt des po-Files wird ja nicht einfach gelesen und irgendwo drübergezogen, sondern nur benutzt, um die Texte die der _()-Funktion übergeben werden, sowie die Texte die TranslateComponent(self) findet, zu übersetzen. Wenn beim Extrahieren Komponenten nicht gefunden werden, bedeutet das im Umkehrschluss dann aber auch, dass die Übersetzungen selbst wenn sie vorhanden sind, nicht angezogen werden (werden?). Wenn Du die TreeViews dynamisch erzeugst, also Texte erst zur Laufzeit reinschreibst, dann musst Du halt überall _() drum rum schreiben. Bei statisch vorhandenen TreeViews müssten aber eigentlich alle per OI eingetragenen Texte erkannt und extrahiert werden. Vielleicht fehlt nur ein TranslateComponent()-Aufruf an der richtigen Stelle? Troubleshooting gibts im Online Manual übrigens auch... Aber wie gesagt, stell mal Codebeispiel hin, dann kann man da mehr sagen.

xZise 13. Dez 2006 17:41

Re: Realisierung von Mehrsprachigkeit
 
1. Statisch (also nicht dynamisch)
2. Alle Werte vordefiniert
3. = Codebeispiel ist schlecht (außer die .dfm?)

Vielleicht, guckst du dir das mal an: Editor

OldGrumpy 13. Dez 2006 17:54

Re: Realisierung von Mehrsprachigkeit
 
Ja, pack doch .pas und .dfm als attachment (bitte gepackt) hier rein. Mir gehts darum, dass ich mir das mal hier selber anschauen kann.

Edit: Hab da gerade was gefunden (google...), allerdings muss ich erstmal schauen zu welcher Version das gehört:
Zitat:

Zitat von Google-Suchergebnis
Some components, like treeviews and listviews, have item list properties that you need to handle manually by adding your own procedure to explicitly iterate over the list and use _() to translate them. For a treeview, here's the code I added to my base form: type THackTreeView = class(TCustomTreView); procedure TfrmGnuGT.HandleTreeView(Obj: TObject); var N:TTreeNode;T:THackTreeView; begin T := THackTreeView(Obj); N := T.Items.GetFirstNode; while N <> nil do begin N.Text := _(N.Text); N := N.GetNext; end; end; I also had to tell dxgettext that I want to handle treeview translations myself, so I added a call to TP_GlobalHandleClass in AfterConstruction: TP_GlobalHandleClass(TCustomTreeView,HandleTreeVie w); I also added similar handlers for listviews and the KWizard.

Jetzt wo ich drüber nachdenke kommt mir auch in den Sinn dass alle meine Treeviews dynamisch gefüllt werden, daher ist mir wohl das Problem noch nie aufgefallen. :)

Zweiter Edit: Hier ist noch ein Hinweise darauf, dass es am Verhalten der TTreeView liegt, und wie das zu umgehen ist: TreeView und andere Samples

Hoffe, das hilft Dir weiter :)
Da ich eigentlich aus der Ecke von C/C++ komme, fülle ich meine Controls meist eh dynamisch mit Inhalten, alte Angewohnheit ;) Daher ist mir das bisher noch gar nicht aufgefallen :)

xZise 29. Dez 2006 14:38

Re: Realisierung von Mehrsprachigkeit
 
So... Ich bin wieder dahin gekommen :P
Nun habe ich aber ein ziemlich Problematisches Problem (lol)...

Und zwar habe ich ein Label mit der Caption "Items (X)" wobei X sich während der Runtime ändert.
Wie kriege ich es jetzt hin, dass er mir es trotzdem brav übersetzt?

jbg 29. Dez 2006 15:37

Re: Realisierung von Mehrsprachigkeit
 
Das geht mit
Delphi-Quellcode:
Format(_('Items (%d)'), [Items.Count]);

OldGrumpy 29. Dez 2006 15:42

Re: Realisierung von Mehrsprachigkeit
 
Oh, da war jemand schneller :)

Der grundlegende Trick ist halt, Platzhalter zu verwenden und seine Strings die variable Anteile enthalten können mittels der Format-Funktion zusammenzubauen. Ausser %d für Integer gibts auch noch eine Reihe weitere Platzhalter, dazu steht aber auch einiges in der Delphi-Hilfe. Bei mir ists fast immer %s (für nen String) oder %d (für nen Integerwert), Fließkommazahlen und Werte in anderen Zahlensystemen kann man aber auch benutzen.

xZise 29. Dez 2006 20:42

Re: Realisierung von Mehrsprachigkeit
 
Okay... Funktioniert soweit ;)

Außer dass er sich wehement dagegen aufbringt mir "Items (%d)" zu übersetzen!

Andere Strings mit "%d" funktionieren (Stichprobe)...

Gabs da einen Bug mit Zahlen die in () sind?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr.
Seite 3 von 3     123   

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