Python 数据库中的i18n字?

Python 数据库中的i18n字?,python,internationalization,pyramid,Python,Internationalization,Pyramid,有可能翻译数据库中的单词吗?我想使用标准工具:python setup.py extract_messages,并使用文件locale/fr/LC_messages/*.po进行翻译。这是可能的。只需将从数据库返回的文本传递给TranslationString 您可以使用TranslationStringFactory(domain)构建字符串并将其传递给定位器。您可能遇到的问题是从数据库中提取字符串。我不知道如何才能做到这一点,但您可能能够传递一个提取器来从数据库中提取消息 另一种可能更好的方

有可能翻译数据库中的单词吗?我想使用标准工具:python setup.py extract_messages,并使用文件locale/fr/LC_messages/*.po进行翻译。

这是可能的。只需将从数据库返回的文本传递给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!

是的,有可能。您应该实现一个脚本,将必须翻译的字段添加到文件
locale/project\u 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 "" 金字塔视图/视图。py:7 msgid“我的i18n项目”#要添加到模板中的字段id msgstr“”#要显示的标签 默认值:搜索文档 pyramid_i18n_howto/templates/mytemplate.pt:37 msgid“搜索文档” msgstr“” 您还将在文件
locale/it/project\u name.po


有关详细信息,请参见

Hi@uralbash..这是一段很长的时间,但您最终做了什么来实现数据库中单词的翻译?