从各种来源提取字符串,压缩空白,支持上下文(msgctxt),以及合并.pot文件。
项目描述
Tower为Jinja及其i18n扩展以及Babel库提供了一些附加功能。
作者:Wil Clouser和贡献者
许可证:BSD
兼容性:Python 2.6和2.7,Django 1.4、1.5和1.6
需求:django、babel、jinja2、jingo和translate-toolkit
具体细节
从各种来源提取字符串: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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | b13b8c19d9c36143fd614e535c23fdbe7b146cb82b8d9a246ecacb368e14d2dd |
|
MD5 | 8db1d1bdb8afcfc1b2c5083bc3e55b17 |
|
BLAKE2b-256 | cf535b6063fa2e03d53b8782fa6c01bf6676a60cd186eed47914a02c269ac239 |