【发布时间】:2021-05-13 19:57:02
【问题描述】:
我有一个旧版/非 django 应用程序,其中的翻译文件格式与 Django/gettext .po 文件不同。我想在我的 Django 应用程序中使用所有字符串,但我也想在现有应用程序中继续使用它们。
当前系统的格式是:
- 每种语言都有自己的文件。 (即
en.txt、de.txt、fr.txt) - 每一行都有一个字符串翻译成它自己的语言
- 在应用程序中使用字符串时,首先在
en.txt中找到与该字符串匹配的行号,并从目标语言返回同一行。因此,如果字符串是“hello world”并且在 en.txt 的第 5 行,该函数将返回 de.txt 的第 5 行,即“hallo welt”。
在 Django 中使用旧翻译文件的最佳方式是什么?
这是我想到的一些想法
- 覆盖 Django 中的
gettext系统以返回我自己的翻译 - 创建我自己的模板标签来处理翻译
- 创建脚本以从
.txt文件创建.po文件
【问题讨论】:
-
1) 到目前为止。旧格式非常脆弱且难以调试:其中一个翻译文件中缺少行,您必须追溯到第一个不匹配的翻译。因此,将其转换为受良好支持和内置的东西。一旦你有了 .po 文件,你仍然可以根据需要决定使用不同的系统,而且很可能不同的系统会有一个 .po 导入器。
-
@Melvyn 问题是我仍然需要维护旧的 txt 文件,因为旧的应用程序依赖它们。但我可以创建一个脚本,以便在进行更改时将它们重新导入 Django 应用程序
-
你有我的同情。 Legacy是个残忍的情妇。 :) 我会按下将旧应用程序迁移到 gettext,但如果无法做到,也许可以使用 Crowdin 之类的服务并以该应用程序的原生格式编写翻译。
标签: python django internationalization gettext