跳转到主要内容

从各种来源提取字符串,压缩空白,支持上下文(msgctxt),以及合并.pot文件。

项目描述

Tower为Jinja及其i18n扩展以及Babel库提供了一些附加功能。

具体细节

  • 从各种来源提取字符串:Python、JavaScript和.lhtml文件。

  • 将所有字符串中的空白压缩,以防止不规则的msgids。

  • 支持所有gettext和ngettext调用中的Gettext上下文(msgctxt)。

  • 支持合并PHP和Python .pot文件。这是临时的。如果您想长期支持,请查看Translate Toolkit中的phppo2pypo。

需求

  • Django

  • Babel

  • Jinja2和Jingo

  • translate-toolkit

有关详细信息,请参阅requirements.txt

安装

使用以下命令从pypi安装

pip install tower

源代码位于http://github.com/clouserw/tower

使用以下命令从GitHub安装

pip install -e git://github.com/clouserw/tower.git#egg=tower

配置

将以下内容添加到您的Django设置文件中的INSTALLED_APPS

INSTALLED_APPS = (
    # ...
    'tower',
    # ...
)

然后进行配置。

django.conf.settings.DOMAIN_METHODS

默认: None–您必须设置此值。

该值是一个字典,包含域名、文件规范和提取方法元组的键值对。

例如,这创建了一个名为“messages”的域,并在该域中从.py和.html文件中提取所有本地化字符串

DOMAIN_METHODS = {
    'messages': [
        ('fjord/**.py', 'tower.tools.extract_tower_python'),
        ('fjord/**.html', 'tower.tools.extract_tower_template'),
    ]
}

对于Python文件,请使用tower.tools.extract_tower_python,对于Jinja2模板,请使用tower.tools.extract_tower_template

本地化字符串将保存为与域同名的.pot文件。在上面的例子中,将是messages.pot

django.conf.settings.STANDALONE_DOMAINS

默认值: ['messages']

默认情况下,所有在DOMAIN_METHODS中指定的域都将合并到一个大的.pot文件中。如果您不希望这样,可以使用STANDALONE_DOMAINS指定哪些域拥有自己的.pot文件。

django.conf.settings.TOWER_KEYWORDS

待办事项:记录此内容。

django.conf.settings.TOWER_ADD_HEADERS

默认值: False

如果您在用Tower提取字符串时遇到问题,请尝试将其设置为True。

django.conf.settings.ROOT

这指向您想要您的locale/目录所在的源代码目录。

django.conf.settings.path

这是一个函数,它接受任意数量的参数,并将它们与ROOT结合以形成一个新的路径。

示例

import os

# The settings file is in fjord/fjord/settings/base.py. From
# base, up two directories is the initial fjord directory
# which is where all the source code and the fjord Django
# project are.
ROOT = os.path.dirname(os.path.dirname(__file__))

path = lambda *args: os.path.abspath(os.path.join(ROOT, *args))

用法

提取

./manage.py extract

合并

./manage.py merge

关于空白的说明

当Tower提取字符串时,它会压缩空白。这使得本地化人员更容易操作。这也意味着您需要使用tower中的ugettext、ungettext、ugettext_lazy和ungettext_lazy。否则,传入的msgids将不会删除空白,因此不会与您的.mo文件中的任何内容匹配。

关于safe-ness的说明

本地化字符串将自动标记为“safe”用于Jinja2,因此它们不会被HTML转义

{{ _('Hello <strong>World</strong>') }}

这按预期工作。然而,当将内容插入到本地化字符串中时,它将被标记为“unsafe”并转义,除非您使用jingo的 |fe()助手(它将转义参数,但不会转义它们插入的字符串)。如下所示

{{ _('Hello <strong>{0}</strong>')|fe(user.nickname) }}

运行测试

运行

python run_tests.py

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分布

tower-0.4.1.tar.gz (15.8 kB 查看散列)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页