django的國際化

使用

安裝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 %}在每個頁面頂端引入一次即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章