The purpose of this page is to illustrate the use of the msgcat package to make a Tk software internationalized automatically. The recommended usage of the msgcat package to translate messages is to insert msgcat::mc instructions like this (http://wiki.tcl.tk/1488): Instead of label .x -text Files you write label .x -text [msgcat::mc Files] This is good, but forces the developper to insert "msgcat::mc" everywhere into the current Tcl script. Of course, it is well known that the Frink tool can instrument a Tcl script and insert the msgcat::mc automatically. But the resulting script is modified, which may be unwanted (http://wiki.tcl.tk/2611). What should be available is a method to translate automatically the software, """without modification""" of the original script. The only things which should be done is : - create the "yourlanguage.msg" catalog, - use msgcat and configure it with the desired language. One can try to overload the Tk widgets to use the msgcat::mc automatically. The following is an example. package require Tcl package require Tk package require msgcat ::msgcat::mclocale fr set dirname [tk_chooseDirectory] set dirname [tk_chooseDirectory -title "This is an untranslated title"] msgcat::mcset fr "This is an untranslated title" "C'est mon titre" namespace eval mynamespace { proc translate { original } { set translated [msgcat::mc $original] return $translated } } if {[info commands "::tk_chooseDirectory"]=="::tk_chooseDirectory"} then { rename ::tk_chooseDirectory ::_tk_chooseDirectory proc ::tk_chooseDirectory {args} { set command [list "::_tk_chooseDirectory"] foreach {key value} $args { if {$key=="-title" || $key=="-message"} then { set value [mynamespace::translate $value] } lappend command $key $value } set answer [eval $command] return $answer } } set dirname [tk_chooseDirectory -title "This is an untranslated title"] exit ---- ''See also:'' * [msgcat magic], [msgcat and shortcut keys], [msgcat-Ready Script Utility], [msgcat-x] * [ampersand magic], [locale], [localization], * [message catalog] ---- [Tcl syntax help] - [Arts and crafts of Tcl-Tk programming] [Category Command] - [Category Local] - [Category String Processing]