RapidSMS 开发人员指南/国际化
本节解释如何本地化您的应用程序。这描述了如何从一种语言(代码语言,通常为英语)切换到另一种语言。如果您想同时提供多种语言,请自行操作。
在您的应用程序中创建一个新目录,并将其命名为locale。在我们的例子中:我们创建了apps/survey/locale
导入所需的软件包以翻译我们每个包含要翻译的文本字符串或消息的文件中的文本。
在app.py和models.py中,我们必须从django导入gettext翻译库,并从中需要ugettext函数。
from django.utils.translation import ugettext as _
我们为ugettext设置一个别名:_ 使代码更清晰,更易于编写。
注意:建议在模型和GUI中导入ugettext_lazy函数,而不是ugettext
对于您要翻译的每个消息,都调用_()函数,并将文本传递给它。例如
message.respond(u"Hello World!") message.respond(_(u"Hello World !"))
要翻译带有参数的消息,请确保您只翻译格式,而不是已评估的字符串
message.respond(u"Thank you %s. for your opinion" % lname) message.respond(_(u"Thank you %s. for your opinion") % lname)
如果Django在django.mo文件中找到了此句子(参见下面),它将检索相应的翻译,否则它将使用默认文本,即原始文本。
在您将应用程序中所有字符串标记为可翻译之后,使用以下命令创建一个翻译文件
cd apps/myapp mkdir locale django-admin.py makemessages –l ar
在前面的示例中,myapp是您要翻译的应用程序的名称,ar是目标语言的语言代码。
在locale文件夹中,Django将创建一个以语言代码(此处为ar)命名的文件夹,其中包含一个LC_MESSAGES子文件夹,该子文件夹本身包含一个名为django.po的文件。
此文件是要翻译的文件。您可以与翻译人员共享此文件。
每次您在应用程序中创建或修改消息,重新发出makemessages命令以更新.po文件。
打开django.po文件,并为每个消息翻译您的文本,如下所示
msgid "Thank you %s. for your opinion” msgstr "شكرا لك %s. لمشاركتنا رأيك"
- msgid:原始消息“默认语言”
- msgstr:相应的翻译。
注意:必须保留原始格式的所有格式参数(%s、%d、%(key)s等)到翻译。对于阿拉伯语翻译,%s必须像这样出现,而不是s%。
Django不使用dango.po文件。它使用其编译版本:django.mo。要编译您的.po文件,请使用以下命令
django-admin.py compilemessages
此命令将创建.mo文件,该文件由Django和rapidsms用来显示本地化字符串。
每次更新翻译.po文件后重新启动命令以查看更改。
要能够使用本地化版本,您需要配置RapidSMS以使用该语言。
这是使用bonjour应用程序完成的。如果您还没有链接它,然后将其添加到您的local.ini apps=列表中。
最后,您需要在local.ini中配置bonjour以指定语言代码
[bonjour] lang=ar