使用
安裝gettext
gettext是django國際化的必要環境,直接下載,按下一步安裝就行
設置locale文件夾
- 在文件setting.py裏添加
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
- 在manage.py所處目錄下,手動新建locale文件夾
標記
- 在需要國際化的文件裏導入
from django.utils.translation import gettext_lazy as _
這裏注意應該是lazy,如果不是懶加載,在appconfig相關設置國際化時會報錯
- 在需要國際化出標記
verbose_name = _('Order')
記這個order爲key
翻譯&編譯
- 輸入以下命令生成翻譯文件django.po
python manage.py makemessages -l zh_hans
django.po會生成在locale/zh_hans目錄下
- 在django.po文件裏我們會看到
#: .\zn\models.py:9
msgid "Order"
msgstr "訂單"
第一行是標記位置,第二行msgid(message id)指的就是上一節中標記的key,第三行msgstr(message string)指的是翻譯的文本
第一次運行命令生成的msgstr是空的,當你爲"Order"賦值"訂單"後再運行命令,django會自動識別,新生成的django.po裏msgstr將會保留上次賦予的值。
- 運行以下命令,進行編譯
python manage.py compilemessages -l zh_hans
如果不加-l zh_hans將編譯所有語言,這個相當費時
- run server!!
國際化技巧
field
number = models.CharField(verbose_name=_('Order Number'))
model
class Meta:
verbose_name = _('Order')
app
class ZnConfig(AppConfig):
verbose_name = _('zn')
template
{% load i18n %}
<title>{% trans "This is the title." %}</title>
{% load i18n %}在每個頁面頂端引入一次即可