首页 > 其他分享 >《Django 5 By Example》阅读笔记:p493-p520

《Django 5 By Example》阅读笔记:p493-p520

时间:2024-12-12 13:55:20浏览次数:10  
标签:p520 p493 字母 gettext Django translated month order

《Django 5 By Example》学习第 17 天,p493-p520 总结,总计 28 页。

一、技术总结

1.internationalization(国际化) vs localization(本地化)

(1)18n,L10n,g11n

以前总觉得这两个缩写好难记,今天仔细看了下维基百科,"i18n" 中的 i 代表 “internationalization” 的第一个字母 i,n 代表最后一个字母 n, 18 代表 i 和 n 中间有 18 个字母。"L10n" 中的 i 代表 “localization” 的第一个字母 l,n 代表最后一个字母 n, 10 代表 l 和 n 中间有 10个字母。使用大写L 是因为小写的 l(L的小写) 和 大写的 I(i 的 大写)差不多一样,所以使用大写,其实大小写都可以。

也有人把上面两者合称为全球化(globalization),简称为 g11n。

(2)internationalization 和 localization 的区别?

p495, Internationalization (frequently abbreviated to i18n) is the process of adapting software for the potential use of different languages and locales so that it isn’t hardwired to a specific language or locale.

Localization (abbreviated to l10n) is the process of actually translating the software and adapt-ing it to a particular locale. Django itself is translated into more than 50 languages using its internationalization framework.

说实话,看完这两句还是没法理解它们之间的区别是什么。

2.Django 国际化和本地化实现

(1)设置

国际化和本地化依赖于 gettext, 如果没有先安装。本人是在WSL 里面使用 Ubuntu 系统,安装示例:

# sudo apt install gettext

(2)翻译 Python 代码

1)Standard translation

使用 gettext() 实现:

from django.utils.translation import gettext as _

output = _('Text to be translated.')

2)Lazy translations

When using the lazy functions, strings are translated when the value is accessed, rather than when the function is called (this is why they are translated lazily).

使用 suffix _lazy() 实现。

3)Translations including variables

使用 gettext() 及 占位(placeholder)符实现。

from django.utils.translation import gettext as _

month = _('April')

day = '14'

output = _('Today is %(month)s %(day)s') % {'month': month, 'day': day}

4)Plural forms in translations

使用 ngettext() 和 ngettext_lazy() 实现。

(3)生成 po 文件

在 project 目录下执行命令:

django-admin makemessages --all

(4)生成mo文件

在 project 目录下执行命令:

django-admin compilemessages

(5)翻译 template

使用 {% translate %} 和 {% blocktranslate %} 。

(6)poedit

用于编辑翻译文件的工具。

https://poedit.net/

二、英语总结(生词:2)

1.hardwired

p495, Internationalization (frequently abbreviated to i18n) is the process of adapting software for the potential use of different languages and locales so that it isn’t hardwired to a specific language or locale.

(1)haredwired: hard("with effor or energy, with difficulty") + wire("adorn(装饰) with wire")

adj. 也写作 hard-wired。本意是:In computing, with permanently connected circuit performing unchangeable functions(在计算机技术中,具有永久连接的电路,执行不可改变的功能),后面引申为“Describe sth that is fixed, or designed in a way that is cannot be easily changed or modified",和 hardcoded 的用法类似。

2.interpolate

p499, Translations including variables: Used to interpolate variables within strings that are to be translated.

(1)interpolate:inter-("among, between") + polare("to smooth, polish(擦)")

vt. to alter by inserting sth between other elements.

3.place an order

p503, You have added names for the fields that are displayed when a user places a new order.

"place an order" 的意思就是“下订单”,对于 order,看的时候一下脑子里面的第一反应是“顺序”,导致理解不了,其实 place an order 是一个很常见的用法,这里记一下。

三、其它

看下去,即使这本书写得再不好。

四、参考资料

1. 编程

(1) Antonio Melé,《Django 5 By Example》:https://book.douban.com/subject/37007362/

2. 英语

(1) Etymology Dictionary:https://www.etymonline.com

(2) Cambridge Dictionary:https://dictionary.cambridge.org

欢迎搜索及关注:编程人(a_codists)

标签:p520,p493,字母,gettext,Django,translated,month,order
From: https://www.cnblogs.com/codists/p/18602251

相关文章

  • Django-simple-captcha实现图片和输入框的样式
    django验证码的插件一、安装pipinstalldjango-simple-captcha二、配置和安装settting.py在INSTALLED_APPS,添加captcha在末尾增加captcha增加如下配置:CAPTCHA_IMAGE_SIZE=(120,50)#图片大小CAPTCHA_BACKGROUND_COLOR='#FFFFFF'CAPTCHA_CHALLENGE_FUN......
  • Python社区邻里互助便民平台 16gm(Pycharm Flask Django Vue mysql)
    文章目录项目介绍具体实现截图开发技术设计思路开发与测试:核心代码部分展示文章目录/协作提纲源码/演示视频获取方式项目介绍社区互助平台的功能分为管理员和用户两个部分,系统的主要功能包括首页,个人中心,用户管理,租房信息管理,失物招领管理,宠物代遛管理,停车位出租管......
  • 计算机毕业设计必看必学!!42576,djangoNBA球员数据可视化系统LW原创定制程序单片机,java
    摘 要在当今的数字化时代,数据可视化已经成为分析和理解复杂数据的重要手段。对于NBA球员数据来说,可视化能够更直观地展示球员的表现、统计信息以及比赛趋势,为球队管理、球迷分析和媒体报道等提供有力支持。本系统旨在通过Django框架Python技术,构建一个NBA球员数据可......
  • 大数据项目-Django基于随机森林和决策树算法实现的电商平台销量预测系统
    《[含文档+PPT+源码等]精品Django基于随机森林和决策树算法实现的电商平台销量预测系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!数据库管理工具:phpstudy/Navicat或者phpstudy/sq......
  • 大数据项目-Django基于用户反馈实现的电影评论数据可视化展示及分析系统
    《[含文档+PPT+源码等]精品Django基于用户反馈实现的电影评论数据可视化展示及分析系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!数据库管理工具:phpstudy/Navicat或者phpstudy/sq......
  • Django 中的数据库update() 和 save() 方法的机制的不同
    1.save()方法•机制:•调用save()方法时,会先对模型实例的字段进行验证(如字段类型、长度约束等)。•如果模型定义了clean()或者字段设置了验证规则(如validators),这些规则也会被执行。•验证通过后,Django才会将数据保存到数据库中。•触发的逻辑:•触发模型的......
  • 博客-django--MySQL--报错版本低
    报错信息django.db.utils.NotSupportedError:MySQL8orlaterisrequired(found5.7.31).原因因为mysql5.7及以下是免费的数据库,8.0之后是收费的。使用免费的数据库更放心,使用上没有什么区别。这个提示只是Django的版本检测提示,把它注释掉就好了。解决办法注释掉版本检测......
  • 如何优雅地在Django项目里生成不重复的ID?
    前言本来标题是想叫“生成不重复的四位数”的,不过单纯数字有点局限,推广一下变成不重复ID吧~这个功能是在做下面图片里这个小项目时遇到的,有点像微信的面对面建群,生成一个随机且不重复的密码,其他人输入这个密码就能加入教室。实现这个功能有不少方法,本文简单记录一下。不依......
  • Django静态资源配置及配置模版
    前沿:      学友哥手把手带你了解Django静态资源配置及配置模版,涉及资源路由配置,图片,视频媒体资源部署,Django生命流程介绍,模版配置,继承,模板导入.....图文示例,一看就懂。......
  • Python基于django小型中医诊所管理系统
    我国中医诊所遍布大街小巷,大大方便了患者的急诊速度,能够及时得到诊断治疗但是当传染病爆发,人员过多,会出现信息化水平低、管理效率不高等问题。为了提高中医诊所的管理效率,实现信息化管理,开发基于Django的中医诊所管理系统是必要的。本系统基于django框架,采用python作为开发......