Django中的多语言API文档
Django中的多语言API文档
在Django中,支持多语言的API编写十分简单,只需要在settings.py中配置LANGUAGE_CODE和LANGUAGES即可。
- 首先在settings.py中配置多语言:
LANGUAGE_CODE = 'zh-hans' LANGUAGES = ( ('en', 'English'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese') )
其中LANGUAGE_CODE指定默认语言,LANGUAGES指定支持的语言列表。
- 定义视图函数
在views.py中,定义一个支持多语言的视图函数。我们以一个简单的Hello World为例:
from django.utils.translation import ugettext as _ def hello(request): return HttpResponse(_('Hello, world!'))
在视图函数中使用了ugettext函数来将字符串翻译为当前语言的字符串。需要注意的是,必须导入django.utils.translation中的ugettext函数,并将其命名为_,这是Django官方推荐的做法。
- 翻译字符串
在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目录中。
- 测试
完成以上步骤后,我们就可以测试多语言API了。
在浏览器中访问http://localhost:8000/hello,如果当前语言为英文,将会看到"Hello, world in English!",如果当前语言为中文,则会看到中文翻译结果。
参考资料:
- Django官方文档:https://docs.djangoproject.com/en/3.1/topics/i18n/translation/#internationalization-in-python-code
- Django多语言实战:https://www.jianshu.com/p/5968947885d5
相关文章