首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使应用程序自动检测系统语言

使应用程序自动检测系统语言
EN

Ask Ubuntu用户
提问于 2012-10-07 09:01:02
回答 2查看 682关注 0票数 2
  1. 在像Ubuntu这样的Linux系统下开发的应用程序应该如何自动检测系统语言?有些应用程序,比如Liferea,会自动更改语言以匹配系统的语言,而不会改变程序本身的任何偏好:

这应该是所有程序的“默认”行为吗?

  1. 程序中是否应该有一个选项,以便让用户仍然选择语言?
  2. 所有这些翻译都伴随着程序本身吗?如果用户设置了程序翻译中不可用的系统语言怎么办?
  3. 这是Ubuntu还是大多数linux发行版的特定版本?
EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2012-10-08 20:53:24

我知道应用程序开发与快速和Launchpad支持翻译来做到这一点。我不是专家,所以除了我的答案外,还可以查看这些链接:

http://www.gnu.org/software/gettext/

https://help.launchpad.net/Translations

我的应用程序导入gettext模块,该模块允许我标记将显示给程序中的用户的字符串。当我的程序通过快速提交到Launchpad时,Launchpad被设置为通过源代码自动扫描并为标记的字符串生成特殊的翻译模板文件。类Launchpad用户(或开发人员)可以使用模板为他们想要的每一个字符串和语言生成翻译。然后,这些翻译文件可以同步到源分支,并在发布前进行合并。然后,在运行时,gettext模块根据系统区域设置用适当的转换替换标记的字符串。

总之,下面列出了这个过程:

  • 将gettext导入您的程序
  • 标记需要翻译的字符串
  • 在Launchpad中设置翻译
  • 将模板和同步转换为源

这里是我的程序的标题,在这里我通过地区导入gettext (注意,这会为我快速添加所有这些!)添加locale和bindtextdomain是因为它正在被放入/opt/expresas.ubuntu.com(我认为):

代码语言:javascript
复制
import locale
from locale import gettext as _
locale.bindtextdomain('drawers', '/opt/extras.ubuntu.com/drawers/share/locale')
locale.textdomain('drawers')

现在,我只是标记文本,以便在整个程序中使用_("text to be translated")翻译。

票数 2
EN

Ask Ubuntu用户

发布于 2012-10-09 10:53:08

在未来,即使它们是相关的,我也会建议为每个问题分别提出问题。无论如何,我会试着回答他们:

在像Ubuntu这样的Linux系统下开发的应用程序应该如何自动检测系统语言?

您只需在应用程序中初始化gettext即可。盖特文是标准的国际化和本地化技术,Ubuntu和大多数其他基于Linux的发行版(如果我们认为Android是一个发行版,那么它将是唯一的例外)。

在最基本的情况下,并使用Python

代码语言:javascript
复制
import gettext
from gettext import gettext as _
locale.bindtextdomain('yourapp', '/usr/share/locale')
locale.textdomain('yourapp')

备注:

  • 在Python中,为了支持/opt安装,您需要使用locale库而不是gettext (对于大多数实际目的,它们是等价的)
  • 几乎任何编程语言都有gettext绑定,而不仅仅是Python。

这应该是所有程序的“默认”行为吗?

是。

程序中是否应该有一个选项,以便让用户仍然选择语言?

不是的。如果您想拥有这样的选项,那么您就只能靠自己来实现它了。按照惯例,每个用户只有一种语言,而你只在一个地方改变它,影响到系统中的所有应用程序。

所有这些翻译都伴随着程序本身吗?

是的,它们和应用程序一起作为二进制.mo文件提供,每种语言翻译一份。

如果用户设置了程序翻译中不可用的系统语言怎么办?

然后,gettext的默认设置是使用英语作为后盾。

这是Ubuntu还是大多数linux发行版的特定版本?

这是Linux发行版的标准行为。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/197367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档