【问题标题】:Deployment-free gettext translations for web applicationsWeb 应用程序的免部署 gettext 翻译
【发布时间】:2012-08-01 09:33:09
【问题描述】:

我正在开发的基于 Django 的 Web 应用程序被翻译成几种不同的语言。到目前为止,我们已经使用 gettext/PO 文件来翻译静态文件(代码和模板中的文本、静态页面);存储在数据库中的 CMS 页面和文本通过管理界面进行翻译。

这种通用设置非常适合我们的开发人员,但不受我们的翻译人员的青睐,他们宁愿始终使用他们的翻译工具(带有 PO 文件)而不是使用管理界面。

现在越来越多的内容从代码迁移到我们尝试使用gettext for texts stored in the DB 的数据库。虽然这个想法听起来不错,但围绕它的工作流程却相当繁琐:

  1. 编辑器在管理界面中更改英文文本
  2. 开发人员运行命令以在连接到生产数据库的主机上提取消息
  3. PO 文件已发送给翻译人员
  4. 翻译完成后将文件发回给开发人员
  5. 开发者编译 mo 文件,在代码库中检查并部署

虽然某些步骤可以通过使用Transifex 之类的服务来自动化,但我不知道如何绕过最后一步。由于数据库更改而不得不进行部署听起来是错误的。

是否有人能够为不需要部署的 Web 应用程序提出一个基于 gettext 的合理翻译工作流程?

【问题讨论】:

    标签: django internationalization gettext po


    【解决方案1】:

    我们使用Django-rosetta(它的另一个好处是不关心 PO 条目的来源)来管理我们的大部分 i18n 需求。关于你在这里问的是我们最终得到的工作流程:

    1. 翻译者使用自己的管理界面登录 Rosetta
    2. Rosetta 解析所有 po 文件并呈现页面以编辑翻译
    3. 每次用户点击保存时,rosetta 都会与 django 一起重新启动,现在所有更改都已生效并应用
    4. 如果翻译人员回到 django,他们会看到新字符串的样子
    5. 如果翻译人员更喜欢使用他们自己的 PO 编辑软件,他们可以,但他们必须向我们提供我们不鼓励的新版本

    我们编写了一些脚本来帮助我们完成额外的自动化步骤,但是这个设置运行得非常好。我们甚至将我们的非基于 django 的系统集成到了rosetta 中(在对rosetta 代码进行了一些自定义修改之后),以便于翻译。

    【讨论】:

    • 感谢您的回答。您是否使用 ROSETTA_WSGI_AUTO_RELOAD 重新启动?您是否自动化了重新集成外部修改的 PO 文件的过程(第 5 点)?
    • 是的,自动重新加载是要走的路。我们还有一个单独的 python 应用程序使用 babel 生成 PO 文件,并编写脚本来根据需要从 Rosetta 推送/拉取这些文件(通过带有备份的 cron 自动执行)。我们以类似方式处理 iOS/Android 的东西。当然,他们无法使用非 django 应用程序即时看到他们的更改,但至少他们可以使用相同的工作流程进行翻译。
    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多