Django API 提供了几个有用的模块来帮助你翻译你的应用程序. 它们都在django.utils.translation中使用,大多数情况下, 我们会使用到ugettext()和ugettext_lazy().

「u」前缀代表「unicode」, 因为大多数情况下,我们经常使用 Unicode, 所以使用ugettext()代替gettext(), 使用ugettext_lazy()代替gettext_lazy().

顾名思义, lazy该函数是对翻译字符串的引用, 而不是实际翻译的文本. 因此在访问值的时候会进行转换, 而不是调用的时候.

注意这个特性,Django 启动的时候一些特定的代码只执行一次, 比如在models, forms 和 model forms.

那么, 我们假设在模型定义的时候使用ugettext(), 而不是ugettext_lazy()会怎么样?

  • 1. Django 启动, 默认语言是英文.
  • 2. Django 选择了英文版的field labels
  • 3. 用户将网站语言改为简体中文.
  • 4. field labels依然是英文显示.

因为models的字段定义仅仅被执行一次,并且在执行定义代码的时候语言不是简体中文(一般是英文).

要避免这种行为,要必须正确的使用ugettext()和ugettext_lazy()

下面总结了, 在合适的地方使用合适的函数:

  • ugettext_lazy():

    • models.py (fields, verbose_name, help_text, methods short_description);
    • forms.py (labels, help_text, empty_label);
    • apps.py (verbose_name).
  • ugettext():
    • views.py
    • 其他类似于在请求过程中调用的代码

Django 国际化翻译中的 gettext 和 gettext_lazy相关推荐

  1. gettext 国际化_如何使用Gettext在Phoenix应用程序中执行本地化

    gettext 国际化 by Anastasia 由Anastasia 如何使用Gettext在Phoenix应用程序中执行本地化 (How to perform localization in Ph ...

  2. qt 判断路径非英文符号与非英文字符_Qt中,软件多语言国际化翻译的方法与步骤...

    总第23篇 在Qt的项目开发过程中,有时软件要翻译成多语言版本,这就涉及到国际化方面的操作.虽然Qt对这方面集成了很多工具,操作起来比较方便,本文还是总结一下国际化的方法和步骤,用以备忘和参考. 我们 ...

  3. Qt中,软件多语言国际化翻译的方法与步骤

    Qt中,软件多语言国际化翻译的方法与步骤 在Qt的项目开发过程中,有时软件要翻译成多语言版本,这就涉及到国际化方面的操作.虽然Qt对这方面集成了很多工具,操作起来比较方便,本文还是总结一下国际化的方法 ...

  4. 在VS中使用Qt Linguist完成国际化翻译

    1.  在Qt Vs Tool中点击Create New Translation File,创建翻译文件,此时项目文件夹目录中会生成一个后缀为.ts的文件,同时此文件也在出现在Vs的解决方案资源管理器 ...

  5. django 国际化支持 I18N

    问题描述 最近做的网站需要中英双语可以切换,内容大致相同,只是文字上需要做翻译,而且可以让用户进行语言的选择. 问题解决 其实页面大部分内容是相同的,只是文字和部分图片不同.django提供了i18n ...

  6. django国际化与html语言,Django 国际化

    Django 国际化 Django 支持国际化,多语言.Django的国际化是默认开启的,如果您不需要国际化支持,那么您可以在您的设置文件中设置 USE_I18N = False,那么Django会进 ...

  7. python 64式: 第24式、python项目国际化翻译实战

    1 寻找一个项目 进入一个python项目,这里我用的是之前写的项目myproject 2 步骤 2.1 在项目的目录下编写i18n.py文件 例如我的路径是: myproject/myproject ...

  8. Django 1.10中文文档-聚合

    目录 速查表 QuerySet 聚合 QuerySet 逐个对象的聚合 Join 和聚合 聚合 QuerySet 子句 正文 Django 1.10 中文文档:https://github.com/j ...

  9. python setting.py_python基础教程:Django框架的中的setting.py文件说明详解

    这篇文章主要介绍了Django框架的中的setting.py文件说明详解,这个文件包含了所有有关这个Django项目的配置信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.加载数据库,数据库 ...

  10. Django框架的中的setting.py文件说明详解

    这篇文章主要介绍了Django框架的中的setting.py文件说明详解,这个文件包含了所有有关这个Django项目的配置信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.加载数据库,数据库 ...

最新文章

  1. wxpython有没有可视化设计_wxPython - GUI Builder工具( GUI Builder Tools)
  2. GO语言教程2:使用VS code进行go语言的编写和运行
  3. java Random类详解
  4. Android4.0-4.4 加入支持状态栏显示耳机图标方法(支持带不带MIC的两种耳机自己主动识别)...
  5. 如何让Ubuntu系统支持WebP图片格式
  6. Html标签带来的安全隐患
  7. python Anaconda2安装OpenCV2
  8. java中哪些可以私有化_《Java基础学习笔记》JAVA修饰符之私有化(Private)
  9. 两种设置安卓背景图片的方法
  10. PostgreSQL的日志文件和数据加载
  11. codeforces 719A Vitya in the Countryside(序列判断趋势)
  12. Python---HTML表单
  13. Ubuntu20.04如何卸载软件
  14. wps文字表格制作拼音田字格模板_用word2003表格快速制作拼音田字格的方法.doc
  15. 小型企业有必要引进ERP系统?
  16. 《Loy解说SpringBoot的注解》
  17. CPU也能加速AlphaFold2!英特尔最新发布:23倍通量优化指南!
  18. Quartus Prime基础操作
  19. 多多情报通:拼多多修改关键词会降权吗?有什么影响?
  20. MIT麻省理工最新研究揭示GAN生成数据可视化分析

热门文章

  1. 易语言服务器客户端网络验证,超强网络验证系统附远程服务支持库
  2. ai-tb.cn 这里面的数据就该都是淘宝的,现在去哪抓取?
  3. C语言对复数模运算的处理
  4. java通过经纬度查询位置(调用百度地图API)
  5. 职称英语 计算机哪报名,职称计算机考试报名
  6. 中国土地市场网lanchina.com数据采集过程
  7. linux V4L2子系统——v4l2的结构体(1)之v4l2_device
  8. html图片旁边加文字
  9. echarts设置tooltips样式以及调取数据
  10. 如何避免服务器被恶意网络攻击