日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django国际化与本地化

發布時間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django国际化与本地化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Django國際化

所謂的國際化,是指使用不同語言的用戶在訪問同一個網站頁面時能夠看到符合其自身語言的文本頁面。

設置setting.py

# system time zone. TIME_ZONE = 'UTC' # Language code for this installation. All choices can be found here: # http://www.i18nguy.com/unicode/language-identifiers.html LANGUAGE_CODE = 'zh_hans'# Internationalization # https://docs.djangoproject.com/en/1.11/topics/i18n/ USE_I18N = True USE_L10N = True USE_TZ = TrueLANGUAGES = (('en', ('English')),('zh-hans', ('中文簡體')),('zh-hant', ('中文繁體')), )# 翻譯文件所在目錄,需要手工創建 LOCALE_PATHS = (os.path.join(BASE_DIR, 'locale'), )MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','django.middleware.locale.LocaleMiddleware', # 添加此行 ]

一、在視圖中標識需要翻譯的文本

在視圖中和HTML模板中都可以標識要翻譯的文本。在視圖中,通過_()或ugettext()函數,指定某個變量需要翻譯,如下所示:

from django.utils.translation import ugettext as _ from django.http import HttpResponsedef my_view(request):output = _("Welcome to my site.")return HttpResponse(output)

二、在模板中表示需要翻譯的文本

在模版文件中,要標識一個待翻譯的文本,需要使用{% trans %}模板標簽,但首先你要在模版的頂部加載{% load i18n %}。比如:

{% load i18n %} <title>{% trans "This is the title." %}</title>

三、blocktrans模板標簽

與{% trans %}模板標簽不同,blocktrans標簽允許你通過使用占位符來標記由文字和可變內容組成的復雜句子進行翻譯,如下例所示:

{% blocktrans %}This string will have {{ value }} inside.{% endblocktrans %}

四、本地化

建立語言文件是通過django-admin makemessages命令完成的。
在項目的根目錄下,也就是包含manage.py的目錄下,運行下面的命令:

python manage.py makemessages -l zh_hans python manage.py makemessages -l en python manage.py makemessages -l zh_hant

注意:在Windows下,需要提前安裝GNU gettext工具!安裝鏈接

每個.po文件首先包含一小部分元數據,例如翻譯維護者的聯系信息,但文件的大部分是翻譯對照:被翻譯字符串和特定語言的實際翻譯文本之間的簡單映射。
例如,有一個像下面這樣的待翻譯字符串:
_("Welcome to my site.")
在.po文件中將包含一條下面樣子的條目:
#: path/to/python/module.py:23
msgid "Welcome to my site."
msgstr ""

這三行內容各自代表下面的意思:

  • 第一行通過注釋表達該條要翻譯的字符串在視圖或模版中的位置;
  • msgid:要翻譯的字符串。不要修改它。
  • msgstr:翻譯后的文本。一開始它是空的,需要翻譯人員逐條填寫。
    這是一個文本文件,需要專業的翻譯人員將所有的msgstr空白‘填寫’齊全。如果你的項目比較大,這可能是個磨人的事。

五、編譯語言文件

django-admin compilemessages

Django將自動搜索所有的.po文件,將它們都翻譯成.mo文件。

六、附件

af 南非荷蘭語
sq 阿爾巴尼亞語
ar-sa 阿拉伯語(沙特阿拉伯)
ar-iq 阿拉伯語(伊拉克)
ar-eg 阿拉伯語(埃及)
ar-ly 阿拉伯語(利比亞)
ar-dz 阿拉伯語(阿爾及利亞)
ar-ma 阿拉伯語(摩洛哥)
ar-tn 阿拉伯語(突尼斯)
ar-om 阿拉伯語(阿曼)
ar-ye 阿拉伯語(也門)
ar-sy 阿拉伯語(敘利亞)
ar-jo 阿拉伯語(約旦)
ar-lb 阿拉伯語(黎巴嫩)
ar-kw 阿拉伯語(科威特)
ar-ae 阿拉伯語(阿拉伯聯合酋長國)
ar-bh 阿拉伯語(巴林)
ar-qa 阿拉伯語(卡塔爾)
eu 巴斯克語
bg 保加利亞語
be 貝勞語
ca 加泰羅尼亞語
zh-tw 中文(中國臺灣)
zh-cn 中文(中華人民共和國)
zh-hk 中文(中國香港特別行政區)
zh-sg 中文(新加坡)
hr 克羅地亞語
cs 捷克語
da 丹麥語
nl 荷蘭語(標準)
nl-be 荷蘭語(比利時)
en 英語
en-us 英語(美國)
en-gb 英語(英國)
en-au 英語(澳大利亞)
en-ca 英語(加拿大)
en-nz 英語(新西蘭)
en-ie 英語(愛爾蘭)
en-za 英語(南非)
en-jm 英語(牙買加)
en 英語(加勒比)
en-bz 英語(伯利茲)
en-tt 英語(特立尼達)
et 愛沙尼亞語
fo 法羅語
fa 波斯語
fi 芬蘭語
fr 法語(標準)
fr-be 法語(比利時)
fr-ca 法語(加拿大)
fr-ch 法語(瑞士)
fr-lu 法語(盧森堡)
gd 蓋爾語(蘇格蘭)
gd-ie 蓋爾語(愛爾蘭)
de 德語(標準)
de-ch 德語(瑞士)
de-at 德語(奧地利)
de-lu 德語(盧森堡)
de-li 德語(列支敦士登)
el 希臘語
he 希伯來語
hi 北印度語
hu 匈牙利語
is 冰島語
in 印度尼西亞語
it 意大利語(標準)
it-ch 意大利語(瑞士)
ja 日語
ko 朝鮮語
ko 朝鮮語(韓國)
lv 拉脫維亞語
lt 立陶宛語
mk FYRO 馬其頓語
ms 馬來西亞語
mt 馬耳他語
no 挪威語(博克馬爾)
no 挪威語(尼諾斯克)
pl 波蘭語
pt-br 葡萄牙語(巴西)
pt 葡萄牙語(葡萄牙)
rm 拉丁語系
ro 羅馬尼亞語
ro-mo 羅馬尼亞語(摩爾達維亞)
ru 俄語
ru-mo 俄語(摩爾達維亞)
sz 薩摩斯語(拉普蘭)
sr 塞爾維亞語(西里爾)
sr 塞爾維亞語(拉丁)
sk 斯洛伐克語
sl 斯洛文尼亞語
sb 索布語
es 西班牙語(西班牙傳統)
es-mx 西班牙語(墨西哥)
es 西班牙語(西班牙現代)
es-gt 西班牙語(危地馬拉)
es-cr 西班牙語(哥斯達黎加)
es-pa 西班牙語(巴拿馬)
es-do 西班牙語(多米尼加共和國)
es-ve 西班牙語(委內瑞拉)
es-co 西班牙語(哥倫比亞)
es-pe 西班牙語(秘魯)
es-ar 西班牙語(阿根廷)
es-ec 西班牙語(厄瓜多爾)
es-cl 西班牙語(智利)
es-uy 西班牙語(烏拉圭)
es-py 西班牙語(巴拉圭)
es-bo 西班牙語(玻利維亞)
es-sv 西班牙語(薩爾瓦多)
es-hn 西班牙語(洪都拉斯)
es-ni 西班牙語(尼加拉瓜)
es-pr 西班牙語(波多黎各)
sx 蘇圖語
sv 瑞典語
sv-fi 瑞典語(芬蘭)
th 泰語
ts 湯加語
tn 瓦納語
tr 土耳其語
uk 烏克蘭語
ur 烏爾都語
ve 文達語
vi 越南語
xh 科薩語
ji 依地語
zu 祖魯語
原文鏈接

總結

以上是生活随笔為你收集整理的django国际化与本地化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。