Version 9 of Multilingual menu

Updated 2014-02-18 16:36:27 by AMG

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?