Seite 1 von 1

Gadgettext Updaten

Verfasst: 06.02.2009 14:38
von Tompazi
Hallo,
meine Gadgettexte sind Variablen (strings natürlich), ich will dass ich die Sprache umschalten kann (die Wortlisten hab ich schon geschrieben).

Muss ich jetzt für jedes Gadget sagen SetGadgetText()? gibt es da nicht eine nicht so umständliche Methode sodass die Gadgets einfach ihre Variablen neu laden?

MfG Tompazi

Verfasst: 06.02.2009 14:46
von STARGÅTE
n Liste machen wo alle GadgetIDs rein kommen die geändert werden sollten. und deren mögliche Inhalte:

zB:

Code: Alles auswählen

Structure MyGadget
 ID.l
 Deutsch$
 Englisch$
Endstructure
Global NewList MyGadget.MyGadget()
Diese Liste füllst du dann und rufst bei einer Sprachänderung dann auf :

Code: Alles auswählen

ForEach MyGadget()
 SetGadgetText(MyGadget()\ID, MyGadget()\Deutsch$)
Next
oder halt englsich ...

Re: Gadgettext Updaten

Verfasst: 06.02.2009 14:47
von Kiffi
Tompazi hat geschrieben:Muss ich jetzt für jedes Gadget sagen SetGadgetText()? gibt es da nicht eine nicht so umständliche Methode sodass die Gadgets einfach ihre Variablen neu laden?
kommt darauf an, wie komfortabel Du das dem Anwender anbieten willst. Es
gibt beispielsweise auch Applikationen, die nach einer Umschaltung die neue
Sprache erst anzeigen, wenn man sie (die App) neu startet. In diesem Fall
musst Du natürlich bis auf die Anzeige des MessageRequesters('Sprache
wird erst nach App-Neustart aktiv') gar nichts machen (vorausgesetzt
natürlich, dass Du Dir beim Erstellen der Gadgets die Texte sprachspezifisch
holst.)

Grüße ... Kiffi

Verfasst: 06.02.2009 14:53
von ts-soft
Ich nutze dafür sowas: http://www.purebasic.fr/english/viewtop ... 073#191073
In einer Extra-Procedure werden dann Menü, Toolbar, Tooltips usw.
neu erstellt bzw. geupdated, sowie Buttons beschriftet.

Code: Alles auswählen

  ; Menü erstellen / updaten
  If IsMenu(#frmMain)
    FreeMenu(#frmMain)
  EndIf
  If CreateImageMenu(#frmMain, WindowID(#frmMain), #PB_Menu_ModernLook)
    MenuTitle(Language("MenuTitle", "File"))
    MenuItem(#mnuNew, Language("MenuItem", "New"), ImageID(#mnuNew_ico))
    MenuItem(#mnuOpen, Language("MenuItem", "Open"), ImageID(#mnuOpen_ico))
    MenuBar()
    MenuItem(#mnuSave, Language("MenuItem", "Save"), ImageID(#mnuSave_ico))
    MenuItem(#mnuSaveAs, Language("MenuItem", "SaveAs"), ImageID(#mnuSaveAs_ico))
    MenuBar()
    MenuItem(#mnuQuit, Language("MenuItem", "Quit"), ImageID(#mnuQuit_ico))

Verfasst: 06.02.2009 14:53
von Tompazi
Danke werd ich machen

so komfortabel wie möglich Klick und und alles anders :wink:

MfG Tompazi

Verfasst: 06.02.2009 15:09
von Kiffi
Tompazi hat geschrieben:so komfortabel wie möglich Klick und und alles anders :wink:
klar, Deine Entscheidung.

Allerdings gebe ich folgendes noch zu bedenken: Wie oft schaltet ein
Anwender gewöhnlich die Sprache seiner Applikation um? Ich schätze, dass
99.8% aller Anwender das genau einmal tun.

Ich als Pragmatiker (andere sagen: 'Fauler Sack') würde mir deswegen nicht
die Mühe machen und nun alle Gadgets zur Laufzeit in der neuen Sprache
anzeigen, sondern halte es vertretbar, dem Anwender zuzumuten, die
Applikation neu zu starten. Die dadurch gewonnene Zeit kann ich nutzen,
um sinnvollere Features in mein Programm einzubauen ;-)

Grüße ... Kiffi

Verfasst: 06.02.2009 15:21
von ts-soft
Abgesehen von buttons, davon hat man eh meist nicht so viele, kann man
die Erstellung in eine Procedure auslagern, siehe oben, weil erstellt werden
muß es sowieso, ist also kaum mehr Code.
Die paar SetGadgetText fallen doch kaum ins Gewicht, gibt also keinen
Grund nicht OnTheFly wechsel zu ermöglichen, bedeutet bei richtiger
Organisation so gut wie keinen Mehraufwand.

yust my 2 cents

Verfasst: 06.02.2009 15:38
von Andesdaf
ts-soft hat geschrieben:Die paar SetGadgetText fallen doch kaum ins Gewicht, gibt also keinen
Grund nicht OnTheFly wechsel zu ermöglichen, bedeutet bei richtiger
Organisation so gut wie keinen Mehraufwand.
+1