zoukankan      html  css  js  c++  java
  • 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')
    
  • 相关阅读:
    2019/9/8
    实现简单的网页登录注册功能 (使用html和css以及javascript技术) 没有美化的日后补全
    测试一些以前的代码
    使用三层开发遵循的原则
    超市管理
    热身训练
    考试第三题
    考试第七题
    考试第10题
    考试第8题
  • 原文地址:https://www.cnblogs.com/robert-zhou/p/14115760.html
Copyright © 2011-2022 走看看