激活金字塔中的翻译

时间:2015-07-23 12:50:27

标签: python internationalization translation pyramid

我想在金字塔框架中激活我的翻译。因此,我添加了翻译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

2 个答案:

答案 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)

解决了这个问题,导致变色龙模板的宏观结构是恶意的。