ich habe vor, in bestimmten Bereichen per Mausklick die Bezeichnung von Label und Buttons durch eine andere Sprache zu ändern.
Ich habe mal ein Beispiel angehängt. Ich dachte, dass der Befehl window1.Refresh alle Controls aktualisiert. Wie könnte ich dies anhand meines Beispiels lösen?
@StefanA ist hier das Problem nicht, dass ich die Lokalisierung nicht zur Laufzeit umstellen kann? Wenn ich diese in Xojo verwende, dann geht dies nur, wenn die Systemsprache umgestellt wird.
Je nachdem was man erreichen will gibt es noch weitere Ansatzpunkte.
Ich nutze z.B. in allen meinen Programmen einen Ordner “Localization” mit einem Modul “Strings” mit lokalisierten Konstanten vom Typ “String”. Da kann man dann für jede unterstützte Sprache den passenden Text eingeben.
Verwendet wird das Ganze dann z.B. im Text Objekt des Labels (z.B. mit #Strings.kLabel_Content).
Wenn man dann eine andere Sprache als die Systemsprache nutzen möchte, reicht es, entweder Global oder für das Fenster oder die Methode eine Variable anzulegen (heisst bei mir “XLng”) die mit dem Sprachkürzel (also z.B. “EN” oder “DE”) gefüllt wird. Durch das Ergänzen von (XLng) wird die passende Sprache der lokalisierten Konstante verwendet, anstelle von #Strings.kLabel_Content wird also #Strings.kLabel_Content(XLng) für das Textobjekt eingetragen.
Klingt komplizierter als es ist, erlaubt aber eine schneller und bequeme Sprachumschaltung bzw. Anpassung. Ist im Prinzip eine kleine Erweiterung der oben von Stefan A. und in der Dokumentation beschriebenen Vorgehensweise…