【问题标题】:Should I check in *.mo files?我应该签入 *.mo 文件吗?
【发布时间】:2010-11-01 18:11:37
【问题描述】:

我应该将 *.mo 翻译文件签入我的版本控制系统吗?

这是一个普遍的问题。但特别是我正在使用 git 存储库处理 Django 项目。

【问题讨论】:

    标签: version-control internationalization translation project-structure


    【解决方案1】:

    一般的答案是:
    如果您确实需要这些文件来编译或部署(在镜头中:“使用”)您的组件(从您的 VCS 查询的文件集),那么是的,它们应该存储在其中(此处:在 Git 中)。 其他类型的文件也是如此(例如project files

    .mo files 很特别:

    django-admin.py compilemessages utility.
    

    此工具运行所有可用的 .po 文件并创建 .mo 文件,这些文件是为 gettext 使用而优化的二进制文件

    意思:

    • 您应该能够在每次需要它们时重新构建它们(实际上保证它们与它们的 .po 文件同步)
    • Git 不太适合二进制存储,这会避免它为每次更改存储完整版本

    所以具体的答案就不是那么明确了:

    • 如果您的 po 文件是稳定的并且不会经常演变,您可以明确存储 .mo 文件
    • 您应该绝对存储一个大的 README 文件,说明如何从 po 文件生成 mo。

    【讨论】:

    • "如果您确实需要这些文件来编译或部署" -> 这意味着您还应该提交您的库和所有依赖项。这是一个很大的NONO。
    • @ravenwing(差不多 12 年后)。我同意:最好的做法是declare 其依赖项而不是包含它们,并看到第三方工具将从外部引用中获取这些依赖项(例如 maven/mvnpom.xml 和 Nexus .org)
    【解决方案2】:

    一般的答案是生成的内容存储在版本控制中。

    如果它需要稀有工具,您可以将它包含在 tarball 中,或者甚至有单独的存储库或仅包含那些生成的文件的断开连接的分支(例如 git.git 存储库中的“html”和“man”分支)。

    【讨论】:

      【解决方案3】:

      对于提出的问题Jakub answer 非常简洁。

      但有人可能会问:

      那么我应该在哪里存储这些文件?我应该在每次部署代码时生成它们吗?

      为此……这取决于。您可以将它部署在 tarball 中(正如 Jakub 所建议的那样),甚至更好 - 创建 pip 或系统包(用于 Fedora 的 RPM,用于 debian 的 DEB 等)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 2015-06-03
        • 1970-01-01
        • 2011-02-24
        • 2012-09-09
        • 1970-01-01
        相关资源
        最近更新 更多