Hey Chun, all,
I am thinking that for adding locales to pd-devel, we should leave
iemgui out of it. It is very messy code that has a lot of legacy use,
so that the iemgui stuff would need to have full backwards
compatibility. Instead, I think we should build a new GUI library
that includes locale support. In the process we could make a locale
API for people who want to write their own GUI objects and include
translations. I have almost the whole framework for such a library
finished, its called 'tkwidgets'.
Perhaps it makes sense to use the standard .po file format for
locales, its pretty simple and would be easy to parse in Tcl. I
imagine there are tools for working with .po files, so then we could
use those. Then init_locale() could read the .po into a hashtable,
i.e. $hashtable($key). My guess is that a big hashtable would be
faster than the current say() procedure, but I could be wrong.
Or maybe a locale namespace makes more sense, it would just be lots of
variable names, something like:
namespace eval ::pd_locale:: {
variable file_new
variable file_open
variable file_save
variable file_saveas
...
variable edit_undo
variable edit_redo
variable edit_cut
variable edit_copy
...
variable put_object
variable put_message
variable put_numberbox
variable put_symbolbox
variable put_comment
...
}
Then to use them:
$rootmenu add command -label $::pd_locale::file_new -accelerator
"$accelerator+N"
$rootmenu add command -label $::pd_locale::file_open -accelerator
"$accelerator+O"
$rootmenu add command -label $::pd_locale::file_save -accelerator
"$accelerator+S"
But I suppose it might make more sense to programmatically declare the
'variable's.
.hc