From b81dc08ebc1d4a2c07eadf4dc5dd0a2b4a0c4aad Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Tue, 25 Jul 2017 19:57:30 +0200 Subject: [PATCH 01/12] Create an interface for TranslationWriter --- .../Component/Translation/CHANGELOG.md | 1 + .../Translation/Writer/TranslationWriter.php | 2 +- .../Writer/TranslationWriterInterface.php | 35 +++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/Symfony/Component/Translation/Writer/TranslationWriterInterface.php diff --git a/src/Symfony/Component/Translation/CHANGELOG.md b/src/Symfony/Component/Translation/CHANGELOG.md index baa791b0ad174..5df311312447e 100644 --- a/src/Symfony/Component/Translation/CHANGELOG.md +++ b/src/Symfony/Component/Translation/CHANGELOG.md @@ -7,6 +7,7 @@ CHANGELOG * Added `TranslationDumperPass` * Added `TranslationExtractorPass` * Added `TranslatorPass` + * Added `TranslationWriterInterface` 3.2.0 ----- diff --git a/src/Symfony/Component/Translation/Writer/TranslationWriter.php b/src/Symfony/Component/Translation/Writer/TranslationWriter.php index 901a8894e1c4c..010c09f674c00 100644 --- a/src/Symfony/Component/Translation/Writer/TranslationWriter.php +++ b/src/Symfony/Component/Translation/Writer/TranslationWriter.php @@ -21,7 +21,7 @@ * * @author Michel Salib */ -class TranslationWriter +class TranslationWriter implements TranslationWriterInterface { /** * Dumpers used for export. diff --git a/src/Symfony/Component/Translation/Writer/TranslationWriterInterface.php b/src/Symfony/Component/Translation/Writer/TranslationWriterInterface.php new file mode 100644 index 0000000000000..d60340b853557 --- /dev/null +++ b/src/Symfony/Component/Translation/Writer/TranslationWriterInterface.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Writer; + +use Symfony\Component\Translation\Exception\InvalidArgumentException; +use Symfony\Component\Translation\MessageCatalogue; + + +/** + * TranslationWriter writes translation messages. + * + * @author Michel Salib + */ +interface TranslationWriterInterface +{ + /** + * Writes translation from the catalogue according to the selected format. + * + * @param MessageCatalogue $catalogue The message catalogue to dump + * @param string $format The format to use to dump the messages + * @param array $options Options that are passed to the dumper + * + * @throws InvalidArgumentException + */ + public function writeTranslations(MessageCatalogue $catalogue, $format, $options = array()); +} \ No newline at end of file From 05191f9435bc780e41ef3bd762a6d544b31951f9 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Tue, 25 Jul 2017 20:25:31 +0200 Subject: [PATCH 02/12] cs --- .../Translation/Writer/TranslationWriterInterface.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/Translation/Writer/TranslationWriterInterface.php b/src/Symfony/Component/Translation/Writer/TranslationWriterInterface.php index d60340b853557..ba6496d0270a4 100644 --- a/src/Symfony/Component/Translation/Writer/TranslationWriterInterface.php +++ b/src/Symfony/Component/Translation/Writer/TranslationWriterInterface.php @@ -14,7 +14,6 @@ use Symfony\Component\Translation\Exception\InvalidArgumentException; use Symfony\Component\Translation\MessageCatalogue; - /** * TranslationWriter writes translation messages. * @@ -26,10 +25,10 @@ interface TranslationWriterInterface * Writes translation from the catalogue according to the selected format. * * @param MessageCatalogue $catalogue The message catalogue to dump - * @param string $format The format to use to dump the messages - * @param array $options Options that are passed to the dumper + * @param string $format The format to use to dump the messages + * @param array $options Options that are passed to the dumper * * @throws InvalidArgumentException */ public function writeTranslations(MessageCatalogue $catalogue, $format, $options = array()); -} \ No newline at end of file +} From 99c5ef500e29b1a56315c7dbf890db103a562320 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Wed, 26 Jul 2017 09:53:21 +0200 Subject: [PATCH 03/12] Updated method name, deprecated old method. --- .../Translation/Writer/TranslationWriter.php | 19 +++++++++++++++++-- .../Writer/TranslationWriterInterface.php | 4 ++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/Translation/Writer/TranslationWriter.php b/src/Symfony/Component/Translation/Writer/TranslationWriter.php index 010c09f674c00..a1f48eadc5aac 100644 --- a/src/Symfony/Component/Translation/Writer/TranslationWriter.php +++ b/src/Symfony/Component/Translation/Writer/TranslationWriter.php @@ -66,13 +66,13 @@ public function getFormats() /** * Writes translation from the catalogue according to the selected format. * - * @param MessageCatalogue $catalogue The message catalogue to dump + * @param MessageCatalogue $catalogue The message catalogue to write * @param string $format The format to use to dump the messages * @param array $options Options that are passed to the dumper * * @throws InvalidArgumentException */ - public function writeTranslations(MessageCatalogue $catalogue, $format, $options = array()) + public function write(MessageCatalogue $catalogue, $format, $options = array()) { if (!isset($this->dumpers[$format])) { throw new InvalidArgumentException(sprintf('There is no dumper associated with format "%s".', $format)); @@ -88,4 +88,19 @@ public function writeTranslations(MessageCatalogue $catalogue, $format, $options // save $dumper->dump($catalogue, $options); } + + /** + * @param MessageCatalogue $catalogue The message catalogue to write + * @param string $format The format to use to dump the messages + * @param array $options Options that are passed to the dumper + * + * @throws InvalidArgumentException + * + * @deprecated since 3.4 will be removed in 4.0. Use write instead. + */ + public function writeTranslations(MessageCatalogue $catalogue, $format, $options = array()) + { + @trigger_error('Method writeTranslations() is deprecated. Use write() instead.', E_USER_DEPRECATED); + $this->write($catalogue, $format, $options); + } } diff --git a/src/Symfony/Component/Translation/Writer/TranslationWriterInterface.php b/src/Symfony/Component/Translation/Writer/TranslationWriterInterface.php index ba6496d0270a4..992ab769a0d59 100644 --- a/src/Symfony/Component/Translation/Writer/TranslationWriterInterface.php +++ b/src/Symfony/Component/Translation/Writer/TranslationWriterInterface.php @@ -24,11 +24,11 @@ interface TranslationWriterInterface /** * Writes translation from the catalogue according to the selected format. * - * @param MessageCatalogue $catalogue The message catalogue to dump + * @param MessageCatalogue $catalogue The message catalogue to write * @param string $format The format to use to dump the messages * @param array $options Options that are passed to the dumper * * @throws InvalidArgumentException */ - public function writeTranslations(MessageCatalogue $catalogue, $format, $options = array()); + public function write(MessageCatalogue $catalogue, $format, $options = array()); } From a04a778003b4dd26f9649dde63adb8cc6102cdec Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Wed, 26 Jul 2017 09:58:02 +0200 Subject: [PATCH 04/12] Updated changelog --- UPGRADE-3.4.md | 6 ++++++ UPGRADE-4.0.md | 2 ++ src/Symfony/Component/Translation/CHANGELOG.md | 1 + 3 files changed, 9 insertions(+) diff --git a/UPGRADE-3.4.md b/UPGRADE-3.4.md index 1f15a45d18ea3..73a4c895d0838 100644 --- a/UPGRADE-3.4.md +++ b/UPGRADE-3.4.md @@ -128,6 +128,12 @@ SecurityBundle * `FirewallContext::getListeners()` now returns `\Traversable|array` +Translation +----------- + + * Deprecated `Symfony\Component\Translation\Writer\TranslationWriter::writeTranslations` + function, use `Symfony\Component\Translation\Writer\TranslationWriter::write` instead. + TwigBridge ---------- diff --git a/UPGRADE-4.0.md b/UPGRADE-4.0.md index e0fdf18eda5c9..3c545b10c7b85 100644 --- a/UPGRADE-4.0.md +++ b/UPGRADE-4.0.md @@ -554,6 +554,8 @@ Translation ----------- * Removed the backup feature from the file dumper classes. + + * Deprecated `Symfony\Component\Translation\Writer\TranslationWriter::writeTranslations` function, use `Symfony\Component\Translation\Writer\TranslationWriter::write` instead. TwigBundle ---------- diff --git a/src/Symfony/Component/Translation/CHANGELOG.md b/src/Symfony/Component/Translation/CHANGELOG.md index 5df311312447e..ffc5701e64b15 100644 --- a/src/Symfony/Component/Translation/CHANGELOG.md +++ b/src/Symfony/Component/Translation/CHANGELOG.md @@ -8,6 +8,7 @@ CHANGELOG * Added `TranslationExtractorPass` * Added `TranslatorPass` * Added `TranslationWriterInterface` + * Deprecated `TranslationWriter::writeTranslations` in favor of `TranslationWriter::write` 3.2.0 ----- From 6a66aca332c076761f42bb910f863dcdc0a73c8b Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sat, 29 Jul 2017 17:42:27 +0200 Subject: [PATCH 05/12] Update tests --- .../Translation/Tests/Writer/TranslationWriterTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php b/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php index 2d2aec7c8a054..f79c72b1c2152 100644 --- a/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php +++ b/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php @@ -18,7 +18,7 @@ class TranslationWriterTest extends TestCase { - public function testWriteTranslations() + public function testWrite() { $dumper = $this->getMockBuilder('Symfony\Component\Translation\Dumper\DumperInterface')->getMock(); $dumper @@ -27,7 +27,7 @@ public function testWriteTranslations() $writer = new TranslationWriter(); $writer->addDumper('test', $dumper); - $writer->writeTranslations(new MessageCatalogue(array()), 'test'); + $writer->write(new MessageCatalogue(array()), 'test'); } public function testDisableBackup() From c5af6b91a6e560740421b3242eb983dffcf24978 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sat, 29 Jul 2017 17:53:00 +0200 Subject: [PATCH 06/12] Do not use deprecated methods --- .../Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php index 357902a209305..23a7b896c0d80 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php +++ b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php @@ -276,7 +276,7 @@ protected function execute(InputInterface $input, OutputInterface $output) $bundleTransPath = end($transPaths).'translations'; } - $this->writer->writeTranslations($operation->getResult(), $input->getOption('output-format'), array('path' => $bundleTransPath, 'default_locale' => $this->defaultLocale)); + $this->writer->write($operation->getResult(), $input->getOption('output-format'), array('path' => $bundleTransPath, 'default_locale' => $this->defaultLocale)); if (true === $input->getOption('dump-messages')) { $resultMessage .= ' and translation files were updated'; From b4bfb4bc95020d3780dfbca5b3ebc5c5b660611b Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sun, 30 Jul 2017 14:32:26 +0200 Subject: [PATCH 07/12] Added test to @legacy --- .../Translation/Tests/Writer/TranslationWriterTest.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php b/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php index f79c72b1c2152..32e7213bd0498 100644 --- a/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php +++ b/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php @@ -18,7 +18,11 @@ class TranslationWriterTest extends TestCase { - public function testWrite() + /** + * @group legacy + * @expectedDeprecation Method writeTranslations() is deprecated. Use write() instead. + */ + public function testWriteTranslations() { $dumper = $this->getMockBuilder('Symfony\Component\Translation\Dumper\DumperInterface')->getMock(); $dumper @@ -27,7 +31,7 @@ public function testWrite() $writer = new TranslationWriter(); $writer->addDumper('test', $dumper); - $writer->write(new MessageCatalogue(array()), 'test'); + $writer->writeTranslations(new MessageCatalogue(array()), 'test'); } public function testDisableBackup() From ace5b60b2adb647c58746e2fec06f7a567114a68 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Mon, 31 Jul 2017 17:11:15 +0200 Subject: [PATCH 08/12] Added test for write() --- .../Tests/Writer/TranslationWriterTest.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php b/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php index 32e7213bd0498..7baa934924447 100644 --- a/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php +++ b/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php @@ -34,6 +34,18 @@ public function testWriteTranslations() $writer->writeTranslations(new MessageCatalogue(array()), 'test'); } + public function testWrite() + { + $dumper = $this->getMockBuilder('Symfony\Component\Translation\Dumper\DumperInterface')->getMock(); + $dumper + ->expects($this->once()) + ->method('dump'); + + $writer = new TranslationWriter(); + $writer->addDumper('test', $dumper); + $writer->write(new MessageCatalogue(array()), 'test'); + } + public function testDisableBackup() { $nonBackupDumper = new NonBackupDumper(); From f868b49149d2be91b0672b2544ec4065e49022a3 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sat, 5 Aug 2017 17:05:00 +0200 Subject: [PATCH 09/12] Updated according to feedback. --- UPGRADE-3.4.md | 5 +++-- UPGRADE-4.0.md | 3 ++- .../Component/Translation/Writer/TranslationWriter.php | 4 +++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/UPGRADE-3.4.md b/UPGRADE-3.4.md index 73a4c895d0838..0d5bde4f138ac 100644 --- a/UPGRADE-3.4.md +++ b/UPGRADE-3.4.md @@ -131,8 +131,9 @@ SecurityBundle Translation ----------- - * Deprecated `Symfony\Component\Translation\Writer\TranslationWriter::writeTranslations` - function, use `Symfony\Component\Translation\Writer\TranslationWriter::write` instead. + * `Symfony\Component\Translation\Writer\TranslationWriter::writeTranslations` has been deprecated + and will be removed in 4.0, use `Symfony\Component\Translation\Writer\TranslationWriter::write` + instead. TwigBridge ---------- diff --git a/UPGRADE-4.0.md b/UPGRADE-4.0.md index 3c545b10c7b85..45839be11ef65 100644 --- a/UPGRADE-4.0.md +++ b/UPGRADE-4.0.md @@ -555,7 +555,8 @@ Translation * Removed the backup feature from the file dumper classes. - * Deprecated `Symfony\Component\Translation\Writer\TranslationWriter::writeTranslations` function, use `Symfony\Component\Translation\Writer\TranslationWriter::write` instead. + * Removed `Symfony\Component\Translation\Writer\TranslationWriter::writeTranslations`, + use `Symfony\Component\Translation\Writer\TranslationWriter::write` instead. TwigBundle ---------- diff --git a/src/Symfony/Component/Translation/Writer/TranslationWriter.php b/src/Symfony/Component/Translation/Writer/TranslationWriter.php index a1f48eadc5aac..53bb1cc7a482d 100644 --- a/src/Symfony/Component/Translation/Writer/TranslationWriter.php +++ b/src/Symfony/Component/Translation/Writer/TranslationWriter.php @@ -90,6 +90,8 @@ public function write(MessageCatalogue $catalogue, $format, $options = array()) } /** + * Writes translation from the catalogue according to the selected format. + * * @param MessageCatalogue $catalogue The message catalogue to write * @param string $format The format to use to dump the messages * @param array $options Options that are passed to the dumper @@ -100,7 +102,7 @@ public function write(MessageCatalogue $catalogue, $format, $options = array()) */ public function writeTranslations(MessageCatalogue $catalogue, $format, $options = array()) { - @trigger_error('Method writeTranslations() is deprecated. Use write() instead.', E_USER_DEPRECATED); + @trigger_error(sprintf('Method %s() is deprecated since version 3.4 and will be removed in 4.0. Use write() instead.', __METHOD__), E_USER_DEPRECATED); $this->write($catalogue, $format, $options); } } From 4ff28a1266bc663aa9d16a361999f98feced1e8b Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sat, 5 Aug 2017 19:59:35 +0200 Subject: [PATCH 10/12] Fixed the tests --- .../Translation/Tests/Writer/TranslationWriterTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php b/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php index 7baa934924447..39da3f7c02396 100644 --- a/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php +++ b/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php @@ -20,7 +20,7 @@ class TranslationWriterTest extends TestCase { /** * @group legacy - * @expectedDeprecation Method writeTranslations() is deprecated. Use write() instead. + * @expectedDeprecation Method Symfony\Component\Translation\Writer\TranslationWriter::writeTranslations() is deprecated since version 3.4 and will be removed in 4.0. Use write() instead. */ public function testWriteTranslations() { From faf7c2bb91bf35ec1c4eadc10f954dee741940d1 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sun, 6 Aug 2017 21:10:45 +0200 Subject: [PATCH 11/12] Minor --- .../Command/TranslationUpdateCommand.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php index 23a7b896c0d80..439b39fc6d64d 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php +++ b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php @@ -22,6 +22,7 @@ use Symfony\Component\Translation\Extractor\ExtractorInterface; use Symfony\Component\Translation\MessageCatalogue; use Symfony\Component\Translation\Writer\TranslationWriter; +use Symfony\Component\Translation\Writer\TranslationWriterInterface; /** * A command that parses templates to extract translation messages and adds them @@ -39,14 +40,14 @@ class TranslationUpdateCommand extends ContainerAwareCommand private $defaultLocale; /** - * @param TranslationWriter $writer - * @param TranslationLoader $loader - * @param ExtractorInterface $extractor - * @param string $defaultLocale + * @param TranslationWriterInterface $writer + * @param TranslationLoader $loader + * @param ExtractorInterface $extractor + * @param string $defaultLocale */ public function __construct($writer = null, TranslationLoader $loader = null, ExtractorInterface $extractor = null, $defaultLocale = null) { - if (!$writer instanceof TranslationWriter) { + if (!$writer instanceof TranslationWriterInterface) { @trigger_error(sprintf('Passing a command name as the first argument of "%s" is deprecated since version 3.4 and will be removed in 4.0. If the command was registered by convention, make it a service instead.', __METHOD__), E_USER_DEPRECATED); parent::__construct($writer); From f6a3dd45039ca01c7bec479a11cdae6bb5541408 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sat, 12 Aug 2017 12:15:49 +0200 Subject: [PATCH 12/12] Code style --- .../Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php index 439b39fc6d64d..a580315efdaa1 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php +++ b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php @@ -21,7 +21,6 @@ use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Translation\Extractor\ExtractorInterface; use Symfony\Component\Translation\MessageCatalogue; -use Symfony\Component\Translation\Writer\TranslationWriter; use Symfony\Component\Translation\Writer\TranslationWriterInterface; /**