pfcode/symfony-i18n-comparator

用于比较Symfony项目中重复的翻译文件的实用工具。

1.0.10 2021-05-31 18:45 UTC

This package is auto-updated.

Last update: 2024-08-29 06:12:52 UTC


README

用于在Symfony项目中比较重复的翻译文件的实用工具。

使用场景

此实用工具解决的问题非常具体 - 它旨在帮助查找属于同一域和语言的翻译文件之间的差异,但这些文件以不同的格式保存(例如messages.en.xlf和messages.en.yml)。

注意:在正常情况下使用symfony/translation组件时,不应出现此类差异。请参见下面的示例部分,并检查此包是否真正解决了您的问题。

安装

您可以使用Composer将此包添加到您的Symfony项目中

composer require pfcode/symfony-i18n-comparator

此包至少需要Symfony 4.4或5.0以及PHP 7.1或更高版本,并且不打算在生产环境中使用。

示例

假设您的项目中包含两个翻译文件,它们属于同一域且使用相同的语言

translations/messages.en.xlf:

<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
    <file source-language="fr" target-language="en" datatype="plaintext" original="file.ext">
        <header>
            <tool tool-id="symfony" tool-name="Symfony"/>
        </header>
        <body>
            <trans-unit id="XXXXXXX" resname="nav.home">
                <source>nav.home</source>
                <target>Dashboard</target>
            </trans-unit>
            <trans-unit id="YYYYYY" resname="nav.login">
                <source>nav.login</source>
                <target>Sign In</target>
            </trans-unit>
            <trans-unit id="ZZZZZZ" resname="nav.logout">
                <source>nav.logout</source>
                <target>Logout</target>
            </trans-unit>
        </body>
    </file>
</xliff>

translations/messages.en.yml:

nav:
  home: 'Home'
  login: 'Sign In'
  logout: 'Sign Out'
  search: 'Search something...'

这些翻译文件显然存在一些差异。其中一个缺少nav.search键,其他消息的值不同。在文本编辑器中比较这些文件将是痛苦的。

要逻辑上比较它们(即翻译键),您可以使用此包提供的命令

bash-4.4# bin/console i18n-comparator:find-conflicts --translations-dir=translations
+---------------------+-- messages.en ------+-----------------+
| Key                 | messages.en.yml     | messages.en.xlf |
+---------------------+---------------------+-----------------+
| messages.nav.home   | Home                | Dashboard       |
| messages.nav.logout | Sign Out            | Logout          |
| messages.nav.search | Search something... |                 |
+---------------------+---------------------+-----------------+

使用此命令,跨各种翻译格式查找差异应该会容易得多。

支持的翻译格式

此包注册了一个ComparatorFactory服务,并将所有已知的翻译加载器(所有标记为translation.loader的服务)的引用传递给它。因此,它支持您的Symfony安装支持的所有格式。

许可证

本项目采用MIT许可证分发。