
这应该是所有程序的“默认”行为吗?
发布于 2012-10-08 20:53:24
我知道应用程序开发与快速和Launchpad支持翻译来做到这一点。我不是专家,所以除了我的答案外,还可以查看这些链接:
http://www.gnu.org/software/gettext/
https://help.launchpad.net/Translations
我的应用程序导入gettext模块,该模块允许我标记将显示给程序中的用户的字符串。当我的程序通过快速提交到Launchpad时,Launchpad被设置为通过源代码自动扫描并为标记的字符串生成特殊的翻译模板文件。类Launchpad用户(或开发人员)可以使用模板为他们想要的每一个字符串和语言生成翻译。然后,这些翻译文件可以同步到源分支,并在发布前进行合并。然后,在运行时,gettext模块根据系统区域设置用适当的转换替换标记的字符串。
总之,下面列出了这个过程:
这里是我的程序的标题,在这里我通过地区导入gettext (注意,这会为我快速添加所有这些!)添加locale和bindtextdomain是因为它正在被放入/opt/expresas.ubuntu.com(我认为):
import locale
from locale import gettext as _
locale.bindtextdomain('drawers', '/opt/extras.ubuntu.com/drawers/share/locale')
locale.textdomain('drawers')现在,我只是标记文本,以便在整个程序中使用_("text to be translated")翻译。
发布于 2012-10-09 10:53:08
在未来,即使它们是相关的,我也会建议为每个问题分别提出问题。无论如何,我会试着回答他们:
在像Ubuntu这样的Linux系统下开发的应用程序应该如何自动检测系统语言?
您只需在应用程序中初始化gettext即可。盖特文是标准的国际化和本地化技术,Ubuntu和大多数其他基于Linux的发行版(如果我们认为Android是一个发行版,那么它将是唯一的例外)。
在最基本的情况下,并使用Python
import gettext
from gettext import gettext as _
locale.bindtextdomain('yourapp', '/usr/share/locale')
locale.textdomain('yourapp')备注:
/opt安装,您需要使用locale库而不是gettext (对于大多数实际目的,它们是等价的)这应该是所有程序的“默认”行为吗?
是。
程序中是否应该有一个选项,以便让用户仍然选择语言?
不是的。如果您想拥有这样的选项,那么您就只能靠自己来实现它了。按照惯例,每个用户只有一种语言,而你只在一个地方改变它,影响到系统中的所有应用程序。
所有这些翻译都伴随着程序本身吗?
是的,它们和应用程序一起作为二进制.mo文件提供,每种语言翻译一份。
如果用户设置了程序翻译中不可用的系统语言怎么办?
然后,gettext的默认设置是使用英语作为后盾。
这是Ubuntu还是大多数linux发行版的特定版本?
这是Linux发行版的标准行为。
https://askubuntu.com/questions/197367
复制相似问题