我正在清理 PyGTK 应用程序中的一些本地化和翻译设置。该应用程序仅适用于 GNU/Linux 系统。我们想要的功能之一是让用户选择应用程序使用的语言(有些人更喜欢他们的母语,有些人喜欢英语以保持一致性,有些人喜欢法语,因为它听起来很浪漫,等等)。
为此,我需要实际显示一个包含各种可用语言的组合框。我怎样才能得到这份名单?事实上,我需要成对的语言代码(“en”、“ru”等)和语言名称母语(“英语(美国)”、“Русские” ).
如果我必须实现暴力方法,我会做类似的事情:在系统区域设置目录(例如“/usr/share/locale”)中查找所有语言代码目录(例如“en/” ) 包含相对路径“LC_MESSAGES/OurAppName.mo”。
有没有更程序化的方式?
最佳答案
您可以使用 gettext 来查找翻译是否可用并已安装,但您需要 babel(它在我的 Ubuntu 系统上作为软件包 python-pybabel
可用)来获取名称。这是一个代码片段,它返回您想要的列表:
import gettext
import babel
messagefiles = gettext.find('OurAppName',
languages=babel.Locale('en').languages.keys(),
all=True)
messagefiles.sort()
languages = [path.split('/')[-3] for path in messagefiles]
langlist = zip(languages,
[babel.Locale.parse(lang).display_name for lang in languages])
print langlist
要在程序中间更改语言,请参阅 relevant section of the Python docs .这可能需要重建所有 GTK 小部件,但我不确定。
有关gettext.find
的更多信息,这里是link也是如此。
关于python - 列出 PyGTK UI 字符串的可用语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2891254/