金字塔国际化i18n在数据库中的单词?

时间:2012-09-28 12:19:12

标签: python internationalization pyramid

是否可以翻译数据库中的单词?我想使用标准工具:python setup.py extract_messages并使用文件区域设置/ fr / LC_MESSAGES / * .po进行翻译。

2 个答案:

答案 0 :(得分:2)

有可能。只需将数据库返回的文本传递给TranslationString。

您可以使用TranslationStringFactory(domain)构建字符串并将其传递给本地化程序。您可能遇到的问题是从数据库中提取字符串。我不知道你怎么做,但你可能能够传递一个提取器从数据库中提取消息。

另一种可能更好的方法是创建一个带字符串的虚拟文件。将所有内容解压缩到格式为gettext的文件。

您可以将其添加到修订版中,当前的消息提取器将获得与通常一样的文本

修改

由于事物存储在数据库中的方式总是非常自定义的,所以据我所知,没有这样的工具。但它应该很容易写。

应该是这样的。

with open(registry.settings['db_locale_file'], 'w') as f:
    for result in my_query_results:
        f.writeline('_(u"%s")' % result.key_you_want)

这是一个非常简单的例子,但它应该更复杂。您可以使用金字塔引导程序将其设为脚本,然后调用

your_script
python setup.py extract_messages
python setup.py update_catalog
????
python setup.py compile_catalog
????
#profit!

答案 1 :(得分:0)

是的,这是可能的。您应该实现一个脚本来添加必须在文件locale/project_name.pot

中的行末尾翻译的字段

例如:


pyramid_i18n_howto/views.py:7
msgid "My i18n project"    #field_id to add in template 
msgstr ""                  # label to show

Default: Search documentation
pyramid_i18n_howto/templates/mytemplate.pt:37
msgid "search_documentation" 
msgstr ""

您还会为文件locale/it/project_name.po

中的每种语言添加它

有关详细信息,请参阅this