0

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

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

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

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

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

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

4

1 回答 1

1

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

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

We wrote some scripts to help us with additional automation steps, but this setup has worked exceptionally well. We have even integrated (after some custom modifications to rosetta code) our non django based system into rosetta for easy translations.

于 2012-08-03T12:10:35.630 回答