django的settings中設(shè)置中文支持的實(shí)現(xiàn)
今天創(chuàng)建了個(gè)django工程,用的是目前django 1.9.6,創(chuàng)建工程后,settings.py中設(shè)置中文顯示支持(最簡(jiǎn)單的,例如把a(bǔ)dmin界面的默認(rèn)英文改成中文),定義
TIME_ZONE = 'Asia/Shanghai' LANGUAGE_CODE = 'zh-cn'
當(dāng)然TIME_ZONE只是指定時(shí)區(qū),和中文顯示沒有關(guān)系,這里一并修改了默認(rèn)值。結(jié)果運(yùn)行項(xiàng)目時(shí)報(bào)錯(cuò)了,如下:
django IOError: No translation files found for default language zh-cn
即找不到zh-cn對(duì)應(yīng)的本地化文件。一般而言,zh-cn編碼對(duì)應(yīng)的本地化文件夾為zh_CN,我去django的安裝目錄查找zh_CN,結(jié)果確實(shí)沒有找到,在django安裝目錄的contrib子目錄下的一系列子目錄的locale文件夾中,沒有zh_CN,而有zh_Hans。不知道為什么django的這個(gè)版本沒有zh_CN文件夾,可能是一個(gè)bug吧。網(wǎng)上有人說將zh_Hans目錄全部復(fù)制一份并命名為zh_CN,就可以解決這個(gè)問題,我試了下,再次運(yùn)行確實(shí)可行了,在admin界面顯示了中文。至于這種比較山寨的方法有沒有隱患,現(xiàn)在還不知道,以后遇到再說吧。
不過話說回來,其實(shí)還有正統(tǒng)的方式去生成國際化文件,如下命令:
django-admin.py makemessages -l zh_CN
不過這個(gè)需要gettext組件,如果你是在windows上開發(fā),那么你需要自己安裝這個(gè)組件,
在http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/下載gettext-runtime-X.zip以及gettext-tools-X.zip的最新版(注:X為版本號(hào))并解壓后,將兩個(gè)bin目錄可以合并后放入系統(tǒng)環(huán)境變量中。不過該方法我沒有驗(yàn)證,感興趣的可以試試。
后來我又想,django之前的老版本是有zh_CN的,要說這個(gè)一個(gè)bug,估計(jì)也比較低級(jí),按理不應(yīng)該的。于是又查,發(fā)現(xiàn)貌似zh_Hans可能已經(jīng)替代zh_CN了。Han表示漢字,s表示Simplified簡(jiǎn)體,反正我設(shè)置為L(zhǎng)ANGUAGE_CODE = 'zh-hans'也是正常顯示中文。
zh-cn will expired in Django1.9, the new format is zh-hans, but drf3.1.0 does not support this type of language.
上面的意思是在django1.9中,zh-cn過期了,可以用zh-hans替代,不過可能有些django的第三方模塊還沒有跟上這個(gè)變化。
總之,仁者見仁智者見智了,其實(shí)大可不必如此研究,只是突然對(duì)這個(gè)比較感興趣所以多研究了一會(huì)。
ps:網(wǎng)上很多地方對(duì)于LANGUAGE_CODE = 'zh-cn'有各種不同寫法,包括zh_CN,zh-CN等,有的人還說只能用某某寫法等,反正我是沒看出來區(qū)別,我也都試了,都沒發(fā)現(xiàn)問題。
另外說個(gè)題外話,之前一直都不知道settings.py中的USE_I18N和USE_L10N是什么意思,直到看到了下面的一段話:
當(dāng) Web 服務(wù)搭建好以后,可以接收來自全球不同國家用戶訪問。這樣就要求開發(fā)人員調(diào)整軟件,使之能適用于不同的語言,即國際化和本地化。國際化
-- Internationalization,i 和 n 之間有 18 個(gè)字母,簡(jiǎn)稱 I18N,。本地化 -- localization, l 和 n 之間有 10 個(gè)字母,簡(jiǎn)稱 L10N。國際化意味著 Web
產(chǎn)品有適用于任何地方的潛力,針對(duì)程序開發(fā)人員;本地化則是指使一個(gè)國際化的程序?yàn)榱嗽谀硞€(gè)特定地區(qū)使用而進(jìn)行實(shí)際翻譯的過程,針對(duì)翻譯人員而言。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)小程序推送頁面收錄腳本
這篇文章主要介紹了python實(shí)現(xiàn)小程序推送頁面收錄腳本,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04關(guān)于Matplotlib繪制動(dòng)態(tài)實(shí)時(shí)曲線的方法改進(jìn)指南
這篇文章主要給大家介紹了關(guān)于Matplotlib繪制動(dòng)態(tài)實(shí)時(shí)曲線的相關(guān)資料,matplotlib是python里最popular的畫圖工具,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-06-06python使用pygame模塊實(shí)現(xiàn)坦克大戰(zhàn)游戲
這篇文章主要為大家詳細(xì)介紹了python使用pygame模塊實(shí)現(xiàn)坦克大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05Python入門教程(十七)Python的While循環(huán)
這篇文章主要介紹了Python入門教程(十七)Python的While循環(huán),Python是一門非常強(qiáng)大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下2023-04-04Python+OpenCV圖像處理——圖像二值化的實(shí)現(xiàn)
這篇文章主要介紹了Python+OpenCV實(shí)現(xiàn)圖像二值化,幫助大家更好的利用python處理圖片,感興趣的朋友可以了解下2020-10-10python 循環(huán)讀取txt文檔 并轉(zhuǎn)換成csv的方法
今天小編就為大家分享一篇python 循環(huán)讀取txt文檔 并轉(zhuǎn)換成csv的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10