Django 國際化(翻譯)


django 國際化

1.切到app目錄下
python manage.py makemessages -l zh-cn # 校驗跟現有po文件的差異性,把多出的英文寫在.po文件中

django-admin makemessages -l zh-cn 
2.html文件中的翻譯
修改項目目錄下的.po文件
如果遇到一個英語翻譯成幾種不同的中文
msgctxt "courseact" # 加標記
msgid "Price"
msgstr "價格"

找到html對應的翻譯處 加上context
{% trans 'Price' context 'courseact' %}

3. js文件中的翻譯
在local app中zh_CN中的js.po文件中添加翻譯
js中加標記pgettext('staffs', 'Please confirm your password')
正常寫法gettext('Inconsistent Password')


# js或者全局的html中,切換到根目錄進行編譯
4.編譯
python manage.py compilemessages
django-admin compilemessages

settings中的LOCALE_PATHS決定查找順序

# django 自帶的模版渲染 國際化 需要加{% verbatim %}{% endverbatim %}
'''
verbatim
禁止模版引擎在該標簽中進行渲染工作
'''
{% verbatim %}
    {{each data value i}}
    <div style="margin-bottom:10px" class="clearfix">
        <span class="bold mr20 category_title_name pull-left">{{value.tag_type__name}}:</span>
        <div class="pull-left label_click_wrap">
            {{ if value.tag_type_id == -1}}
            <span data-id="-1" class="label_click">其他</span>
            {{ else }}
            <span data-id="0" class="label_all_click label_click">{% endverbatim %}{% trans 'All' %}{% verbatim %}</span>
    {{/each}}
    {% endverbatim %}

 # js文件中的html中的翻譯
   $('#calendar_show_tbody').empty();
                            var temp = '<tr><td style="height: 240px !important;" colspan="'+ month_list.length +'" rowspan="'+ level_list.length +'">' +
                                '<p class="td-p"><img style="margin-bottom: 20px" src="/static/img/course/none_data.png"></p>' +
                                '<p class="td-p">' + gettext("You have not created any lesson plan") + '</p>' +
                                '<p class="td-p">' + gettext("If you need help, please contact Taidii account managers.")+ '</p>' +
                                '</td></tr>'
                            $('#calendar_show_tbody').append(temp);

django國際化幾個參數的用途

django.utils.translation.ugettext()

指定一個翻譯字符串,一般都用於 views.py

django.utils.translation.gettext_noop()

標記一個不需要立即翻譯的字符串。 這個串會稍后從變量翻譯。使用這種方法的環境是,有字符串必須以原始語言的形式存儲(如儲存在數據庫中的字符串)而在最后需要被 翻譯出來(如顯示給用戶時)。

django.utils.translation.gettext_lazy()
ugettext_lazy() 將字符串作為惰性參照存儲,而不是實際翻譯 , 一般會用於 models.py。 翻譯工作將在字符串在字符串上下文中被用到時進行,比如在 Django 管理頁面提交模板時。在 Django 模型中總是無一例外的使用惰性翻譯。

django.utils.translation.ungettext()
函數包括三個參數: 單數形式的翻譯字符串,復數形式的翻譯字符串,和對象的個數(將以 count 變量傳遞給需要翻譯的語言)。

django中設置和獲取中英文配置

# 設置系統中英文
# 將session中的django_language更新  en-us(英文) zh_CN(中文)
self.request.session['django_language'] = self.language

# 獲取
request.session.get('django_language')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM