用于在django中使用babel的实用程序,无django版本限制。

django2-babel的Python项目详细描述


与django一起使用babel的工具

此包包含各种实用程序,用于将 babel 集成到 django 网络框架:

< Buff行情>
  • Django模板的消息提取插件。
  • 将babel对象添加到请求的中间件类。
  • 一组用于设置日期和数字格式的模板标记。

这是django babel的硬分叉。 https://img.shields.io/pypi/v/django2-babel.svghttps://img.shields.io/travis/wooyek/django2-babel.svg

提取消息

babel提供了一个类似于gnu xgettext 的消息提取框架,但是 更具扩展性和面向python应用程序。而Django 提供 包装脚本 ,以便使用 xgettext 更多 方便,提取功能相当有限。例如,你 不能使用扩展名为 .html的模板文件以及其他所有文件 需要在项目包目录中。

提取方法映射

因此django babel附带了一个提取方法插件,可以提取 来自django模板文件的可本地化消息。python在 巴贝尔的盒子。要使用此提取功能,请创建名为 babel.cfg 在项目目录(项目上方的目录)中 包装),内容:

[django: templates/**.*][django: mypkg/*/templates/**.*][python: mypkg/**.py]

这将指示babel在顶级模板中查找任何文件。 目录,或应用程序 模板 目录中的任何文件,并使用 名为"django"的提取方法从这些模板文件中提取消息。 你需要调整这些球的形状以适应你的位置 模板。

此外,任何扩展名为 .py 的文件都在包目录中(替换 "mypkg"(实际名称为django项目包)由处理 "python"提取方法。

如果你不使用setuptools,或者由于某种原因没有安装django babel 使用setuptools/pip,您需要定义提取方法的功能 "django"映射到。这是在 配置文件:

[extractors]django=django_babel.extract:extract_django

模板的编码假定为utf-8。如果你在使用 不同的编码,您需要在配置中指定它。为了 例子:

[django: templates/**.*]encoding=iso-8859-1

运行提取过程

设置完配置文件后,将执行实际的提取 通过执行命令行程序 巴别塔套餐:

$ cd projectdir
$ pybabel extract -F babel.cfg -o mypkg/locale/django.pot .

这将在 mypkg/locale/django.pot 中创建po文件模板。

创建和更新翻译目录

如果您还没有翻译目录,则需要创建它们。这个 使用 pybabel init 命令完成:

$ pybabel init -D django -i mypkg/locale/django.pot -d mypkg/locale -l en_US
$ pybabel init -D django -i mypkg/locale/django.pot -d mypkg/locale -l de_DE

这将创建两个文件: mypkg/locale/en_us/django.po mypkg/locale/de_de/django.po 。这些文件是你把 翻译。

当您修改python源文件或模板时,通常需要 同步翻译目录。为此,你首先要表演 如前一节所述提取,以便 django.pot 文件 更新。

然后,运行 pybabel update 命令将更改合并到 翻译目录:

< < > > $pybabel update -d django -i mypkg/locale/django.pot -d mypkg/locale

这将更新在 mypkg/locale 目录中找到的所有 .po 文件。

编译翻译目录

最后,您需要将这些 .po 文件编译为二进制 .mo 文件。使用 pybabel compile 命令

$ pybabel compile -D django -d mypkg/locale

添加 --statistics选项以获取有关 翻译:

$ pybabel compile -D django -d mypkg/locale --statistics

使用setup.py

如果您将一个 setup.py 脚本添加到 您的项目并使用babel附带的distutils/setuptools命令。 这可在 distutils/setuptools integration中描述。

使用中间件

要使用babel中间件,请将其添加到 设置模块。如果您还使用django自己的 localemidlware 来改变 基于用户偏好的区域设置,必须插入babel中间件 在Django One之后:

MIDDLEWARE_CLASSES=(...'django.middleware.locale.LocaleMiddleware','django_babel.middleware.LocaleMiddleware',...)

这将向请求对象添加 locale 属性,该对象是 babel 语言环境类。当 请求对象可用,或者使用 django_babel.middleware.get_current_locale() 函数获取当前 来自线程本地缓存的区域设置。

使用模板标记

django babel提供的模板过滤器允许格式化日期/时间和 以对区域设置敏感的方式对值进行编号,提供更强大的功能 与随附的 日期 时间 浮点格式 过滤器不同 Django,

要使模板过滤器/标记可用,需要将django babel添加到 设置模块中已安装的应用程序列表:

INSTALLED_APPS=(...'django_babel',...)

在每个要使用过滤器的模板中,都需要显式加载 Django Babel图书馆:

[django: templates/**.*][django: mypkg/*/templates/**.*][python: mypkg/**.py]
0

有关日期/时间和数字格式的一般信息,请访问 日期格式 数字格式

以下过滤器可用。这些示例假定一个区域设置为 我们

日期fmt

呈现日期的字符串表示形式。

  • 输入 datetime.date datetime.datetime 或float/int时间戳
  • 参数 :格式名称或模式(可选)

假设 book.pubdate 返回一个 datetime.date 日期时间.datetime 对象:

[django: templates/**.*][django: mypkg/*/templates/**.*][python: mypkg/**.py]
1

将呈现: 4/1/07 ,和

[django: templates/**.*][django: mypkg/*/templates/**.*][python: mypkg/**.py]
2

将呈现: 太阳,2007年4月1日广告

日期时间

呈现日期和时间的字符串表示形式。

  • 输入:t>datetime.datetime 或float/int时间戳
  • 参数 :格式名称或模式(可选)

示例:

[django: templates/**.*][django: mypkg/*/templates/**.*][python: mypkg/**.py]
3

将呈现: 4/1/07下午3:30 ,和

[django: templates/**.*][django: mypkg/*/templates/**.*][python: mypkg/**.py]
4

将呈现: 太阳,2007年4月1日AD-15:30:00

时间

呈现时间的字符串表示形式。

  • 输入: datetime.datetime datetime.time 或float/int时间戳
  • 参数 :格式名称或模式(可选)

示例:

[django: templates/**.*][django: mypkg/*/templates/**.*][python: mypkg/**.py]
5

将呈现: 3:30 pm ,和

[django: templates/**.*][django: mypkg/*/templates/**.*][python: mypkg/**.py]
6

将呈现:下午3点

决策故障

呈现十进制数的字符串表示形式。

  • 输入 :一个 十进制 对象,或一个float/int/long值
  • 参数 :格式名称或模式(可选)

示例:

[django: templates/**.*][django: mypkg/*/templates/**.*][python: mypkg/**.py]
7

将呈现: 1234 ,和

[django: templates/**.*][django: mypkg/*/templates/**.*][python: mypkg/**.py]
8

将呈现: 1234.00

货币fmt

呈现格式为货币值的数字。

  • 输入 :a 十进制 对象或float/int/long值
  • 参数 :货币代码

示例:

[django: templates/**.*][django: mypkg/*/templates/**.*][python: mypkg/**.py]
9

将呈现: $49.90

百分比fmt

以百分比形式呈现数字的字符串表示。

  • 输入 :a 十进制 对象或float/int/long值
  • 参数 :格式名称或模式(可选)

示例:

假设 帐面折扣 将返回 0.15

[extractors]django=django_babel.extract:extract_django
0

将呈现 15% ,和

[extractors]django=django_babel.extract:extract_django
1

将渲染 15.00%

科学的

使用科学符号呈现数字的字符串表示。

  • 输入 :a 十进制 对象或float/int/long值
  • 参数 :无

示例:

假设 book.numsold 将返回1.000.000,

[extractors]django=django_babel.extract:extract_django
2

将渲染 10e5

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用SerializationUtils时java ClassNotFoundException。克隆()   java Cucumber+spring:如何通过测试触发SmartLifecycle事件?   java如何使ProGuard以简单的方式工作?   java JSP页面显示来自集合的日期   谷歌地图检查坐标是否位于JAVA中谷歌地图API的多边形中   java如何在终端中使用“tokens”打印令牌?   java获取编译错误:包com。威里奥。sdk不存在   java会使用JAXB或类似工具自动填充HATEAOS链接吗?   Javascript(GraalJS)与Java中未签名的右移>>>>   如何在Java代码中创建jdbc请求的Jmeter测试   java如何在CellList中添加或删除单个元素?   java Progressbar:如何创建原始对象的深度副本