Thread Alle Labels neu generieren (9 answers)
Opened by DrMaex at 2012-06-26 19:03

GUIfreund
 2012-07-01 15:58
#159490 #159490
User since
2011-08-08
559 Artikel
BenutzerIn
[default_avatar]
2012-06-28T21:54:59 pktm
Ah ok. Aber dann braucht man eine lexikalische Variable pro lokalisiertem Text. Ein Hash wäre mir natürlich lieber

Mir ist nicht ganz klar, wie dieser Hash aussehen sollte. Meintest du die deutschen Texte als Keys? Dann könntest du die Elemente deines deutschen Arrays als Textvariable benutzen. Ich hatte eher an eine Variable pro lokalisiertem Widget gedacht. Wird wohl am Ende ziemlich auf dasselbe herauslaufen. Ich hab's mal auf Hash erweitert, sieht jetzt so aus:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
........
my $lang = 'de';   # default-Sprache
my %widgetinfo;
my @allwidgets;
........
my $mybutton;
my $btntxt = $map->{$lang}->{btn_click_me};
$mybutton = $mw->Button(
    -textvariable => \$btntxt,
)->pack();
$widgetinfo{$mybutton} = [\$btntxt, 'btn_click_me'];
push @allwidgets, $mybutton;
........
sub update_window {
    foreach my $mybutton (@allwidgets) {
        my ($txtvar_ref, $txtname) = @{$widgetinfo{$mybutton}};
        $$txtvar_ref = $map->{$lang}->{$txtname};
    }
} # /update_window

Den anonymen Array habe ich nur eingeführt, um die Verwendung von cget() in sub update_window zu vermeiden.
Gruß
GUIfreund

View full thread Alle Labels neu generieren