Version 4 of Multilingual menu

Updated 2002-02-05 10:01:03

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�sisch
 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 {} {
    catch {destroy .m}
    . 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

i18n - Writing for the world - Arts and crafts of Tcl-Tk programming