Django中的多语言API文档

2023-04-11 00:00:00 django 文档 多语言

Django中的多语言API文档

在Django中,支持多语言的API编写十分简单,只需要在settings.py中配置LANGUAGE_CODE和LANGUAGES即可。

  1. 首先在settings.py中配置多语言:
LANGUAGE_CODE = 'zh-hans'

LANGUAGES = (
    ('en', 'English'),
    ('zh-hans', 'Simplified Chinese'),
    ('zh-hant', 'Traditional Chinese')
)

其中LANGUAGE_CODE指定默认语言,LANGUAGES指定支持的语言列表。

  1. 定义视图函数

在views.py中,定义一个支持多语言的视图函数。我们以一个简单的Hello World为例:

from django.utils.translation import ugettext as _

def hello(request):
    return HttpResponse(_('Hello, world!'))

在视图函数中使用了ugettext函数来将字符串翻译为当前语言的字符串。需要注意的是,必须导入django.utils.translation中的ugettext函数,并将其命名为_,这是Django官方推荐的做法。

  1. 翻译字符串

在Django中翻译字符串使用的是gettext工具,需要先在代码中标记出需要翻译的字符串,然后运行makemessages命令生成.po文件,再运行compilemessages命令生成.mo文件。

假设在hello视图函数中需要翻译的字符串是"Hello, world!",需要这样标记:

from django.utils.translation import ugettext as _

def hello(request):
    return HttpResponse(_('Hello, world!'))

接下来我们执行以下代码生成.po文件:

python manage.py makemessages -l en

这会在locale/en/LC_MESSAGES目录下生成一个django.po文件,我们需要编辑这个文件将需要翻译的字符串翻译成英文:

msgid "Hello, world!"
msgstr "Hello, world in English!"

注意msgid需要和我们在代码中标记的字符串一致。

翻译完成后,我们需要运行如下命令生成.mo文件:

python manage.py compilemessages

这会将django.po文件编译成django.mo文件,存放在locale/en/LC_MESSAGES目录中。

  1. 测试

完成以上步骤后,我们就可以测试多语言API了。

在浏览器中访问http://localhost:8000/hello,如果当前语言为英文,将会看到"Hello, world in English!",如果当前语言为中文,则会看到中文翻译结果。

参考资料:

  1. Django官方文档:https://docs.djangoproject.com/en/3.1/topics/i18n/translation/#internationalization-in-python-code
  2. Django多语言实战:https://www.jianshu.com/p/5968947885d5

相关文章