wxpython GUI中含有静态日文和中文文本
我们想要在wxpython中支持静态文本的本地化,比如标签、按钮标签等,想把它们翻译成日语和中文。我们只希望在图形界面元素中的静态文本被更改,直接在标签(静态文本字段)里写上日语或中文字符就可以解决这个问题。
如果有人能提供一些帮助,告诉我们该怎么做,那就太好了。
谢谢!
1 个回答
0
看看:wx.GetTranslation
http://wiki.wxpython.org/Internationalization
我做的事情是,在我的脚本顶部使用 _ = wx.GetTranslation,然后把任何字符串放在 _("我的字符串") 里面。
我使用这个批处理脚本:http://code.google.com/p/gui2exe/source/browse/trunk/scripts/gen_lang 来运行在维基上找到的 mki18n.py 脚本。这个脚本基本上会对你的源代码运行 "gettext" 命令,提取出符合 _("") 格式的字符串进行翻译。
然后你需要为 wxPython 添加一个消息目录:
self.locale = wx.Locale(wx.LANGUAGE_JAPANESE, wx.LOCALE_LOAD_DEFAULT)
langdir = os.path.join('path', 'to', 'locale', 'folder')
self.locale.AddCatalogLookupPathPrefix(langdir)
self.locale.AddCatalog("program-name")
当然,你还得让用户选择他们喜欢的语言,并根据这个来映射 wx.LANGUAGE_*。比如:
languages = ( (_("English"), wx.LANGUAGE_ENGLISH),
(_("English (United Kingdom)"), wx.LANGUAGE_ENGLISH_UK),
(_("Japanese"), wx.LANGUAGE_JAPANESE),
(_("Portuguese"), wx.LANGUAGE_PORTUGUESE),
(_("Dutch"), wx.LANGUAGE_DUTCH),
(_("German"), wx.LANGUAGE_GERMAN),
(_("Russian"), wx.LANGUAGE_RUSSIAN) )
self.locale = wx.Locale(languages[user.preference.language], wx.LOCALE_LOAD_DEFAULT)