国际化(i18n)多语言教程/国家对照表

1,119 阅读1分钟

技术改变生活

常用国家语言列表

文章地址:www.cnblogs.com/jacksoft/p/…

阿拉伯语 ar
英语   en
zh-cn 中文
zh-tw 中文(中国台湾)
he 希伯来语
he-IL 希伯来语-以色列
安装 GNU gettext

安装完 GNU gettext后,对 Django 工程执行下面的命令

$ python3 manage.py makemessages --local en

Django 会找到被 gettext 函数包裹的所有字符串,以 msgid 的形式保存在 django.po。每个 msgid 下面的 msgstr 就代表你要把这个 msgid 翻译成什么。通过修改这个文件可以告诉 Django 翻译的内容。同时通过注释说明了这个 msgid 出现在哪个文件的哪一行。

多语言的简单使用

文章来源:juejin.cn/post/684490…

目前只有两种语言:`zh` 、`en`

# 修改好Django.po文件后,执行下面命令
python3 manage.py compilemessages --local en
# 将en改成zh可以生成zh的mo文件

#### views使用多语言步骤:

> 电脑上必须先安装`makemessages`,安装教程可看参考文档

1. 导入翻译的模块:`from django.utils.translation import gettext as _`
2. 对需要翻译的文字进行处理:`retunr Response({"detail": _("我需要翻译")})`,如果包含了变量,必须使用`.format`进行格式化: `return Response({"detail": _("今天是{date}").format(date=datetime.datetime.now().date())})`
中间件处理多语言

LocaleMiddleware 可以决定使用何种语言。具体来说,LocaleMiddleware 是按照下面的顺序(优先级递减)

i18n_patterns
request.session[settings.LANGUAGE_SESSION_KEY] # 使用session处理多语言
request.COOKIES[settings.LANGUAGE_COOKIE_NAME] # 使用cookies处理多语言
request.META['HTTP_ACCEPT_LANGUAGE'] # 即 HTTP 请求中的 Accept-Language header
settings.LANGUAGE_CODE  # setting配置默认多语言