pfcode / symfony-i18n-comparator
用于比较Symfony项目中重复的翻译文件的实用工具。
1.0.10
2021-05-31 18:45 UTC
Requires
- php: ^7.1 || ^8.0
- symfony/config: ^4.4 || ^5.0
- symfony/console: ^4.4 || ^5.0
- symfony/dependency-injection: ^4.4 || ^5.0
- symfony/http-kernel: ^4.4 || ^5.0
- symfony/translation: ^4.4 || ^5.0
- symfony/yaml: ^4.4 || ^5.0
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许可证分发。