问题标签 [python-babel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1557 浏览

python - 通过 Babel 国际化 Python 2.6 应用程序

我们正在评估 Windows 下的 Babel 0.9.5 [1] 以与 Python 2.6 一起使用,并且通过阅读文档或谷歌搜索我们无法回答以下问题。

1) 我想使用类似 _ 的 ungettext 缩写。是否应该为此使用 n_ 或 N_ ?

n_ 似乎不起作用。Babel 不提取文本。

N_ 似乎部分工作。Babel 像 gettext 一样提取文本,但不为 ngettext 格式化(缺少复数参数和 msgstr[n]。)

2) 有没有办法在创建 POT 文件时设置如下的初始 msgstr 字段?

我怀疑可能有一种方法可以通过 Babel cfg 文件执行此操作,但我一直无法找到有关 Babel cfg 文件格式的文档。

"Project-Id-Version: PROJECT VERSION\n" "Language-Team: en_US \n"

3) 有没有办法在我们的 PO 文件中保留“过时”的 msgid/msgstr?当我使用 Babel update 命令时,新创建的过时字符串用#~ 前缀标记,但现有的过时消息字符串会被删除。

谢谢,马尔科姆

[1] http://babel.edgewall.org/

0 投票
1 回答
1541 浏览

python - 使用 Babel:如何保护 GNU gettext PO 文件中的译者注释(和旧译文)?

使用基于 Python 的Babel gettext 实用程序,是否有任何技术可以在文件更新时保留文件中的翻译器注释和旧(“过时”)翻译(标记为#~)?.po.pot

过时的翻译第一次出现在.po文件中并pybabel update运行时,翻译会用 标记#~。这样一方面,它被视为注释,在翻译人员查看并更改之前不会使用,但另一方面,它不会被删除,因此翻译人员可以参考或复制文本从它到他们的其他翻译。

但是,下次pybabel update运行时,所有注释都会从文件中永久删除。这意味着那些标有 的翻译也将#~被删除。

例如,使用 Babel 0.9.6 版和Jinja2 2.6 版,以及以下文件:

./babel.ini

./templates/test.html

./i18n/pt_PT/LC_MESSAGES/messages.po

运行以下命令后:

葡萄牙语messages.po文件丢失了所有旧注释,仅包含:

./i18n/pt_PT/LC_MESSAGES/messages.po

如何在不丢失评论和旧翻译的情况下更新我的翻译文件?

0 投票
1 回答
1392 浏览

python - GAE webapp 应用程序国际化与 Babel

您将如何使用BABEL将 Google App Engine webapp 应用程序国际化?我在这里寻找所有阶段:

  1. 标记要翻译的字符串。
  2. 提取它们。
  3. 翻译
  4. 配置您的应用程序以加载浏览器请求的正确语言
0 投票
3 回答
1164 浏览

python - python babel映射配置文件应该放在哪里或者为独立脚本命名?

我目前正在尝试使用 Babel 在一个简单的脚本中使用 Jinja2 生成一组不同语言的静态 html 页面(不是作为 Web 应用程序的一部分)

我现在需要提取消息进行翻译,我知道我应该修改 Babel 映射配置文件以理解 Jinja2 模板。由于我使用的是命令行工具,我假设我需要创建映射文件我。

但是,我似乎无法在文档中找到映射配置文件应该命名的内容以及应该放置的位置。我只知道我需要放置以下内容:

根据 Jinja2 文档进入映射文件。有没有人做过类似的事情或知道映射配置文件应该是什么?谢谢!

0 投票
1 回答
2053 浏览

python - Python:为什么我从 cron 调用时会从 Babel 得到这个异常?

当我的脚本调用 Babel 函数时,我从 Python Babel 包中抛出了这个异常。问题是当我从命令行运行它时它工作正常。但是,这是我从 cron 运行它时遇到的错误。似乎它可能与某些环境或语言环境设置或缺少它有关。

更新

从命令行调用时,语言环境是 en_US,从 cron None 调用时。从cron调用它时如何设置它?

另外,不知道这是否重要,但调用 Babel 的脚本是自定义的 django-admin 命令。

0 投票
1 回答
682 浏览

python - 更好的python日期时间显示?

我正在使用 babel 和 pytz 来获取时区。然而,对于美国的大部分地区,它映射到下拉框中没有那么有用的东西:

“America/New_York”显示“东部时间”,“America/Nipigon”也显示“东部时间”。

有没有办法进行这种转换以添加城市信息?其他时区似乎还可以,例如“亚洲/雅加达”转换为“印度尼西亚(雅加达)时间”

0 投票
1 回答
1889 浏览

python - 如何以多种语言显示日期/时间?

我想以多种语言显示日期和时间(或日期或时间,分别)。特别是英语和西班牙语,但将来可能会使用其他语言。

我已经考虑将 pythons time.strftime 函数与 locale.setlocal 结合使用。我在阅读文档(http://docs.python.org/library/locale.html)后排除了这一点,图书馆不应该调用 locale.setlocal,所以我不应该只是“触发器”(改变,然后恢复)我的图书馆中的语言环境设置。

我也考虑过 python 库 Babel,但我在他们的文档(http://babel.edgewall.org/wiki/Documentation/0.9/dates.html)中读到日期解析“没有正确实现”,这让我很担心. 我确实需要日期解析能力。但是,Babel 可以使用不同的语言环境显示时间。

第三个 [hybrid] 选项是使用 pythons datetime 来解析日期,然后 Babel 以多种语言/语言环境显示日期。这有点混乱,因为 strptime 使用它自己的格式字符串语法,而 Babel 对其格式字符串使用 LDML 语法。

可能还有其他选择。又是一个问题:以多种语言显示日期或时间的最佳方式是什么?

0 投票
1 回答
382 浏览

python - 如何根据 Django 站点上的当前用户区域设置对集合进行排序

我需要通过 utf-8 字符串属性(通过 ActiveRecord 构建)对对象集合进行排序。目前,代码通过 o​​rder_by 方法按 ASCII 顺序排序,但是需要将其更改为 locale.strcoll。不幸的是,使用内置的语言环境功能需要更改整个应用程序的文化,而不仅仅是当前请求。

我查看了 Babel 库,但它似乎没有提供我需要的功能。

我能找到的唯一其他选择是 pyICU,但是在我的环境中安装 ICU 库将阻止这成为可行的解决方案。

还有其他选择吗?

0 投票
1 回答
1011 浏览

python - 如何注册 Pylons 翻译器对象?

我有一个在多个进程中运行的应用程序(一个网络服务器和几个用于繁重计算的进程)。目标是使这些计算过程返回局部错误。为了做到这一点,我制作了 Babel 将使用的字典:

但是当我尝试启动应用程序时,我得到

加载翻译器对象的正确方法是什么?

在此先感谢,伊万。

0 投票
1 回答
509 浏览

python - Mako, Babel and string interpolation

I'm trying to do something like this:

${_('Hello ${name}, welcome to...', mapping=dict(name='${name}'))}

Where _() is my Babel translation function, the first ${name} is string interpolation I'd like to be performed by Babel and the second ${name} I'd like to be replaced by Mako so the value is the value in the Python dictionary:

This is ultimately rendered as:

Hello ${name}, welcome to...

Not desirable. Problem seems to be that since the second ${name} is nested inside another ${}, it's not evaluated.

What I'm aiming for:

Hello Ryan, welcome to...

How can I achieve this?