当 django 显式地从 .po 和 .mo 文件转换时,gettext 有什么用?

What is the use of gettext when django explicitly translates from .po and .mo files?

当我在 Django 中学习国际化和本地化时,我被告知要在我的 windows 中安装 gettext 应用程序。但我可以看到翻译是由 django 使用我们在 .po 文件中键入的翻译字符串完成的。

所以我可以想象当用户选择特定语言时,django 从我们翻译默认语言的 .po 文件中提取他们的语言特定字符串的过程。

我不明白这个过程中在哪里使用了gettext?一开始以为gettext是用来自己翻译的,其实不是。

从django的主要入口可以看出translation source

Django 内部使用 gettext 进行翻译

trans_real 在此处导入 gettext here

假设您应用了正确的设置。

为什么 django 使用 gettext 而不是自己制作翻译代码?出于同样的原因,人们选择使用现有的库而不是自己编写(维护、测试等),而且它已经存在了 20 多年,这意味着来自现有项目的任何人都可以更轻松地将其集成到 django 中。