[英]Using babel and lingua in pyramid
我有 babel 和 lingua 的問題。 我希望 babel/lingua 掃描我的源文件夾中的特定字符串以創建鍋目錄。
這是我的 setup.py
...
requires = [
...
'Babel',
'lingua',
]
extractors = { 'dbas': [
('**.py', 'python', None ),
('**.pt', 'chameleon', None ),
('static/**', 'ignore', None),
]}
setup(name='DBAS',
...
message_extractors=extractors,
...
)
還有我的 setup.cfg
[compile_catalog]
directory = dbas/locale
domain = mydbas
statistics = true
[extract_messages]
copyright_holder = Acme Inc.
output_file = dbas/locale/mydbas.pot
charset = UTF-8
[init_catalog]
domain = mydbas
input_file = dbas/locale/mydbas.pot
output_dir = dbas/locale
[update_catalog]
domain = mydbas
input_file = dbas/locale/mydbas.pot
output_dir = dbas/locale
previous = true
在我的init .py 我有這樣的東西:
config.add_translation_dirs('dbas:locale')
例如我的 404 模板是這樣的:
<!DOCTYPE html>
<html lang="${request.locale_name}"
metal:use-macro="load: basetemplate.pt"
xmlns="http://www.w3.org/1999/xhtml"
xml:lang="en"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
i18n:domain="dbas">
<head>
<link type="text/css" href="${request.static_url('dbas:static/css/theme_center.css')}" rel="stylesheet">
</head>
<body>
<div class="center">
<div class="error">
<h1><span class="font-semi-bold" i18n:translate="404">404 Error</span></h1>
<p class="lead font-normal">The page "<span class="font-semi-bold">${page_notfound_viewname}</span>" for could not be found.</p>
<br>
<input class="button button-block btn-lg btn btn-primary" type="submit" onClick="self.location.href='/'" value="Let's go home!" />
</div>
</div>
</body>
<html>
現在我可以運行:
python3 setup.py develop
setup.py extract_messages
我收到:
running extract_messages
extracting messages from dbas/__init__.py
extracting messages from dbas/helper.py
extracting messages from dbas/security.py
extracting messages from dbas/tests.py
extracting messages from dbas/views.py
extracting messages from dbas/database/__init__.py
extracting messages from dbas/database/initializedb.py
extracting messages from dbas/database/model.py
extracting messages from dbas/templates/404.pt
Traceback (most recent call last):
File "setup.py", line 60, in <module>
""",
File "/usr/lib/python3.4/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/lib/python3.4/distutils/dist.py", line 955, in run_commands
self.run_command(cmd)
File "/usr/lib/python3.4/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "/usr/local/lib/python3.4/dist-packages/babel/messages/frontend.py", line 305, in run
for filename, lineno, message, comments, context in extracted:
File "/usr/local/lib/python3.4/dist-packages/babel/messages/extract.py", line 163, in extract_from_dir
strip_comment_tags):
File "/usr/local/lib/python3.4/dist-packages/babel/messages/extract.py", line 190, in extract_from_file
strip_comment_tags))
File "/usr/local/lib/python3.4/dist-packages/babel/messages/extract.py", line 262, in extract
raise ValueError('Unknown extraction method %r' % method)
ValueError: Unknown extraction method 'chameleon'
有人知道嗎,怎么了?
對於最新版本的 babel 和 lingua,您的message_extractors
配置可能已經過時。 出於調試目的,您可以要求 lingua extractors 。 我實際上不知道如何為 babel 做到這一點。
$ bin/pot-create --list-extractors
chameleon Chameleon templates (defaults to Python expressions)
python Python sources
xml Chameleon templates (defaults to Python expressions)
zcml Zope Configuration Markup Language (ZCML)
zope Zope templates (defaults to TALES expressions)
我最近關注了金字塔的 i18n/l10 敘述文檔。 提取工作流程似乎發生了變化。 使用 lingua >=3.0.9 和 babel==1.3 我不再需要像 setup.cfg 這樣的任何 setuptools 集成配置,也不需要為像我和你這樣的常見情況定義message_extractors
。 從 python 和變色龍模板中提取消息字符串是開箱即用的。 但是金字塔文檔應該稍微改進一下。
幾天后,我將我對該主題的觀察通知了金字塔項目,並建議對有助於查找模糊消息的 lingua i18n.sh 腳本進行一些小的更改。 也許這些資源也可以幫助您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.