【问题标题】:Pyramid Internationalization i18n word in database?数据库中的金字塔国际化 i18n 字?
【发布时间】:2012-09-28 12:19:11
【问题描述】:

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

【问题讨论】:

  • 嗨@uralbash ..已经很长时间了,但是您最终做了什么来实现数据库中单词的翻译?

标签: python internationalization pyramid


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    例如:

    金字塔_i18n_howto/views.py:7 msgstr "我的 i18n 项目" #field_id 添加到模板中 msgstr "" # 要显示的标签 默认值:搜索文档 金字塔_i18n_howto/templates/mytemplate.pt:37 msgstr "search_documentation" msgstr ""

    您还将为文件locale/it/project_name.po中的每种语言添加它

    详情请见this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多