在Python的Django框架中創(chuàng)建語言文件
當(dāng)你標(biāo)記了翻譯字符串,你就需要寫出(或獲取已有的)對應(yīng)的語言翻譯信息。 這里就是它如何工作的。
地域限制
Django不支持把你的應(yīng)用本地化到一個連它自己都還沒被翻譯的地域。 在這種情況下,它將忽略你的翻譯文件。 如果你想嘗試這個并且Django支持它,你會不可避免地見到這樣一個混合體––參雜著你的譯文和來自Django自己的英文。 如果你的應(yīng)用需要你支持一個Django中沒有的地域,你將至少需要做一個Django core的最小翻譯。
消息文件
第一步,就是為一種語言創(chuàng)建一個信息文件。 信息文件是包含了某一語言翻譯字符串和對這些字符串的翻譯的一個文本文件。 信息文件以 .po 為后綴名。
Django中帶有一個工具, bin/make-messages.py ,它完成了這些文件的創(chuàng)建和維護(hù)工作。 運(yùn)行以下命令來創(chuàng)建或更新一個信息文件:
django-admin.py makemessages -l de
其中 de 是所創(chuàng)建的信息文件的語言代碼。 在這里,語言代碼是以本地格式給出的。 例如,巴西地區(qū)的葡萄牙語為 pt_BR ,澳大利亞地區(qū)的德語為 de_AT 。
這段腳本應(yīng)該在三處之一運(yùn)行:
- Django項目根目錄。
- 您Django應(yīng)用的根目錄。
- django 根目錄(不是Subversion檢出目錄,而是通過 $PYTHONPATH 鏈接或位于該路徑的某處)。 這僅和你為Django自己創(chuàng)建一個翻譯時有關(guān)。
這段腳本遍歷你的項目源樹或你的應(yīng)用程序源樹并且提取出所有為翻譯而被標(biāo)記的字符串。 它在 locale/LANG/LC_MESSAGES 目錄下創(chuàng)建(或更新)了一個信息文件。針對上面的de,應(yīng)該是locale/de/LC_MESSAGES/django.po。
作為默認(rèn), django-admin.py makemessages 檢測每一個有 .html 擴(kuò)展名的文件。 以備你要重載缺省值,使用 --extension 或 -e 選項指定文件擴(kuò)展名來檢測。
django-admin.py makemessages -l de -e txt
用逗號和(或)使用-e或--extension來分隔多項擴(kuò)展名:
django-admin.py makemessages -l de -e html,txt -e xml
當(dāng)創(chuàng)建JavaScript翻譯目錄時,你需要使用特殊的Django域:not -e js 。
沒有g(shù)ettext?
如果沒有安裝 gettext 組件, make-messages.py 將會創(chuàng)建空白文件。 這種情況下,安裝 gettext 組件或只是復(fù)制英語信息文件( conf/locale/en/LC_MESSAGES/django.po )來作為一個起點;只是一個空白的翻譯信息文件而已。
工作在Windows上么?
如果你正在使用Windows,且需要安裝GNU gettext共用程序以便 django-admin makemessages 可以工作,請參看下面Windows小節(jié)中g(shù)ettext部分以獲得更多信息。
.po 文件格式很直觀。 每個 .po 文件包含一小部分的元數(shù)據(jù),比如翻譯維護(hù)人員的聯(lián)系信息,而文件的大部分內(nèi)容是簡單的翻譯字符串和對應(yīng)語言翻譯結(jié)果的映射關(guān)系的列表。
舉個例子,如果Django應(yīng)用程序包括一個 "Welcome to my site." 的待翻譯字符串 ,像這樣:
_("Welcome to my site.")
則django-admin.py makemessages將創(chuàng)建一個 .po 文件來包含以下片段的消息:
#: path/to/python/module.py:23 msgid "Welcome to my site." msgstr ""
快速解釋:
- msgid 是在源文件中出現(xiàn)的翻譯字符串。 不要做改動。
- msgstr 是相應(yīng)語言的翻譯結(jié)果。 剛創(chuàng)建時它只是空字符串,此時就需要你來完成它。 注意不要丟掉語句前后的引號。
- 作為方便之處,每一個消息都包括:以 # 為前綴的一個注釋行并且定位上邊的msgid 行,文件名和行號。
對于比較長的信息也有其處理方法。 msgstr (或 msgid )后緊跟著的字符串為一個空字符串。 然后真正的內(nèi)容在其下面的幾行。 這些字符串會被直接連在一起。 同時,不要忘了字符串末尾的空格,因為它們會不加空格地連到一起。
若要對新創(chuàng)建的翻譯字符串校驗所有的源代碼和模板,并且更新所有語言的信息文件,可以運(yùn)行以下命令:
django-admin.py makemessages -a
編譯信息文件
創(chuàng)建信息文件之后,每次對其做了修改,都需要將它重新編譯成一種更有效率的形式,供 gettext 使用??梢允褂胐jango-admin.py compilemessages完成。
這個工具作用于所有有效的 .po 文件,創(chuàng)建優(yōu)化過的二進(jìn)制 .mo 文件供 gettext 使用。在你可以運(yùn)行django-admin.py makemessages的目錄下,運(yùn)行django-admin.py compilemessages:
django-admin.py compilemessages
就是這樣了。 你的翻譯成果已經(jīng)可以使用了。
編譯信息文件
創(chuàng)建信息文件之后,每次對其做了修改,都需要將它重新編譯成一種更有效率的形式,供 gettext 使用??梢允褂胐jango-admin.py compilemessages完成。
這個工具作用于所有有效的 .po 文件,創(chuàng)建優(yōu)化過的二進(jìn)制 .mo 文件供 gettext 使用。在你可以運(yùn)行django-admin.py makemessages的目錄下,運(yùn)行django-admin.py compilemessages:
django-admin.py compilemessages
就是這樣了。 你的翻譯成果已經(jīng)可以使用了。
- python Django 創(chuàng)建應(yīng)用過程圖示詳解
- python使用Pycharm創(chuàng)建一個Django項目
- 使用PyCharm創(chuàng)建Django項目及基本配置詳解
- Django在win10下的安裝并創(chuàng)建工程
- Django中ORM表的創(chuàng)建和增刪改查方法示例
- 在Django中創(chuàng)建動態(tài)視圖的教程
- 在Python的Django框架中創(chuàng)建和使用模版
- 詳解在Python的Django框架中創(chuàng)建模板庫的方法
- 使用python搭建Django應(yīng)用程序步驟及版本沖突問題解決
- 在Django框架中運(yùn)行Python應(yīng)用全攻略
- Docker部署Django應(yīng)用的示例
- django框架創(chuàng)建應(yīng)用操作示例
相關(guān)文章
Python 腳本實現(xiàn)淘寶準(zhǔn)點秒殺功能
這篇文章主要介紹了python實現(xiàn)淘寶準(zhǔn)點秒殺腳本,本文圖文實例相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11Python計算機(jī)視覺SIFT尺度不變的圖像特征變換
這篇文章主要為大家介紹了Python計算機(jī)視覺SIFT尺度不變的圖像特征變換,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python函數(shù)關(guān)鍵字參數(shù)及用法詳解
本文主要介紹了Python函數(shù)關(guān)鍵字參數(shù)及用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Keras load_model 導(dǎo)入錯誤的解決方式
這篇文章主要介紹了Keras load_model 導(dǎo)入錯誤的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Pytorch四維Tensor轉(zhuǎn)圖片并保存方式(維度順序調(diào)整)
這篇文章主要介紹了Pytorch四維Tensor轉(zhuǎn)圖片并保存方式(維度順序調(diào)整),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12python基礎(chǔ)教程之基本數(shù)據(jù)類型和變量聲明介紹
這篇文章主要介紹了python基礎(chǔ)教程之基本數(shù)據(jù)類型和變量聲明介紹,首先講解了變量聲明的一些知識,然后列出最常用的基本數(shù)據(jù)類型,需要的朋友可以參考下2014-08-08python pandas輕松通過特定列的值多條件去篩選數(shù)據(jù)及contains方法的使用
這篇文章主要介紹了python pandas輕松通過特定列的值多條件去篩選數(shù)據(jù)及contains方法的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02