Richard Suchenwirth - Here is a little menu demo that allows localization for different languages, either at startup (by specifying one of the language codes de, en, fr as first argument, and on-the-fly while running, by using inlined msgcat commands, so the single file is self-contained. For 4 LOC more, you also get the window title localized ;-)
package require msgcat namespace import msgcat::* mcset de Language Sprache mcset de English Englisch mcset de German Deutsch mcset de French Franz\u00f6sisch mcset de Test Versuch mcset fr Language Langage mcset fr English Anglais mcset fr German Allemand mcset fr French Francais mcset fr Test Essai set choice [lindex $argv 0] if {[lsearch "en de fr" $choice]>=0} {mclocale $choice} proc makeMenu {} { . config -menu [menu .m] menu .m.m2 -tearoff 0 .m add cascade -label [mc Language] -menu .m.m2 foreach {language code} {English en French fr German de} { .m.m2 add command -label [mc $language] -command [list reset $code] } wm title . [mc Test] } proc reset code { mclocale $code .m entryconfig 1 -label [mc Language] foreach i {0 1 2} label {English French German} { .m.m2 entryconfig $i -label [mc $label] } wm title . [mc Test] } makeMenu
PL: I changed the 'ö' to a Unicode code.
AMG: What made this edit necessary? Are you having problems with [source] using the wrong encoding?