【问题标题】:Django localisation path separator Windows (\) vs macOS (/)Django 本地化路径分隔符 Windows (\) vs macOS (/)
【发布时间】:2019-09-18 09:50:23
【问题描述】:

我们一直在维护一个有几个 Mac 和 Linux 用户(通过 GitHub)的 Django 网站,但现在一个只使用 Windows 的人加入了这个团队。 在创建.po 本地化文件方面,我们遇到了一个令人讨厌的小差异。

到目前为止,我们一直有带有正斜杠的路径:#: core/templates/home.html:8,但 Windows 用户生成的路径带有反斜杠:#: .\core\templates\home.html:8

这使得发现更改变得更加困难,因为每次都会更改 750 多行,而不仅仅是新的或更改的文本和翻译。

我在 Windows 电脑上试了一下,结果是一样的。

我们可以做些什么来统一这个?

谢谢!

编辑:澄清一下,我们是一个没有专门(外部)翻译的小团队。谁更改或添加东西,通常也应该添加和更新本地化文件。

【问题讨论】:

  • 您可以使用os.path.join() 而不是编写完整路径,这样您就不需要使用(反)斜杠,或者您可以查看pathlib
  • Windows 上的人是否有必要生成 .po 文件并提交它们?如果您只集中生成它们,例如通过提交挂钩,或者当您准备将翻译文件发送给您的翻译人员时,您将不会遇到这个问题。
  • @KostasCharitidis,路径是自动生成的,所以我认为这是不可能的。
  • @dirkgroten,这是可能的,但由于我们是一个小团队,我们没有专门的翻译人员,并且在提出拉取请求之前自己翻译所有内容(因为我们只有荷兰语,我们的母语, 和英语作为本地化)
  • @ThijsB。然后你可以给 Windows 用户一个脚本,在提交之前替换所有斜杠

标签: django windows localization gettext


【解决方案1】:

您可以在原始的基础上创建自己的makemessages 命令(django.core.management.commands.makemessages)。您需要做的就是继承BuildFile,覆盖postprocess_messages 来替换斜线。

然后您将Command 子类化以使用您自己的BuildFile 子类(它只是一个类属性build_file_class)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-27
    • 2011-10-19
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2018-04-25
    • 2011-06-03
    • 1970-01-01
    相关资源
    最近更新 更多