我想在金字塔框架中激活我的翻译。因此,我添加了翻译directorys,并在https://stackoverflow.com/a/11289565/2648872中设置了一个本地谈判代表,并在http://docs.pylonsproject.org/docs/pyramid/en/latest/narr/i18n.html#default-locale-negotiator中进行了描述。此外,我的ini文件中的默认和可用语言已设置,但金字塔不接受我的翻译。我是否会错过激活翻译的内容?
问候
托拜厄斯
修改:
我的produ.ini的片段
[app:main]
use = egg:dbas
pyramid.reload_templates = true
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.default_locale_name = de
available_languages = de en
我的 init .py:
def main(global_config, **settings):
[...]
config = Configurator(settings=settings,root_factory='dbas.database.RootFactory')
config.add_translation_dirs('locale')
[...]
config.set_locale_negotiator(my_locale_negotiator)
此外,还会记录设置,并且可以看到default_locale_name和available_languages。不幸的是,在my_locale_negotiator中,它们不可读:(
我的文件夹结构如下:
dbas
|- setup.py
|- development.ini
|- [...]
|-dbas
|- __init__.py
|- views.py
|- [...]
|- locale
|- dbas.pot
|- de
|- LC_MESSAGES
|- dbas.mo
|- dbas.po
|- en
|- LC_MESSAGES
|- dbas.mo
|- dbas.po
答案 0 :(得分:1)
Pyramid实际上找不到你的翻译dirs。 According to docs you need to pass absolute directory paths or asset specifications。我更喜欢资产规范,因为我习惯于为视图配置执行此操作。
config.add_translation_dirs('dbas:locale')
从you are applying localization-related deployment settings起,您的用例不需要自定义区域设置协商器。在金字塔配置中禁用自定义区域设置协商器。 Rely on the pyramid implementation of the default locale negotiator
你只是need two things to activate translations。首先只应用这两个概念。
出于调试目的,您可以use one these concepts to set locale manually。我真的很喜欢在查询字符串中传递 LOCALE 值。例如,访问
http://my.application?_LOCALE_=de
答案 1 :(得分:0)
解决了这个问题,导致变色龙模板的宏观结构是恶意的。