python - 列出 PyGTK UI 字符串的可用语言

标签 python gtk translation pygtk gettext

我正在清理 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/

相关文章:

python - 在anaconda3中安装opencv

java - C++ 到 Java 的翻译

Java语言翻译库

python - python中的浏览函数

python - 如何在 Django 模板中使用法语字母?

Python, hstack 不同类型的列numpy数组(列向量)

c - 在 X11 上激活一个窗口,为什么我会丢失标题栏?

c - GTK+ 线程与 OpenGL 的 GLUT/FreeGLUT

python - pygtk:如何手动发出信号

javascript - 在javascript中调用C函数