From 2d9647b9e953dbd85fc1d0873eaa163505b97e82 Mon Sep 17 00:00:00 2001 From: florianv Date: Mon, 3 Mar 2014 18:49:17 +0100 Subject: [PATCH 1/3] Added documentation for translation:debug --- book/translation.rst | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/book/translation.rst b/book/translation.rst index c27ac70c933..b8c0600b932 100644 --- a/book/translation.rst +++ b/book/translation.rst @@ -649,6 +649,39 @@ The translation of database content should be handled by Doctrine through the `Translatable Extension`_. For more information, see the documentation for that library. +Debugging Translations +---------------------- + +.. versionadded:: 2.5 + The ``translation:debug`` command was introduced in Symfony 2.5. + +When maintaining a bundle, you may use or remove the usage of a translation +message without updating all message catalogues. The ``translation:debug`` +command helps you finding these missing or unused translation messages for a +given locale. It shows you a table with the result when translating the +message in the given locale and the result when the fallback would be used. +On top of that, it also shows you when the translation is the same as the +fallback translation (this could indicate that the message was not correctly +translated). To inspect all messages in the ``en`` locale for the AcmeDemoBundle, run: + +.. code-block:: bash + + $ php app/console translation:debug en AcmeDemoBundle + +By default all domains are inspected, but it is possible to specify a single domain: + +.. code-block:: bash + + $ php app/console translation:debug en AcmeDemoBundle --domain=messages + +You can also display only the unused or only the missing messages, by using +the ``--only-unused`` or ``--only-missing`` switches: + +.. code-block:: bash + + $ php app/console translation:debug en AcmeDemoBundle --only-unused + $ php app/console translation:debug en AcmeDemoBundle --only-missing + Summary ------- From 38b2955966776d2836106bd1650e820b87e4b748 Mon Sep 17 00:00:00 2001 From: florianv Date: Thu, 13 Mar 2014 03:08:32 +0100 Subject: [PATCH 2/3] Improved the documentation with examples and images --- book/translation.rst | 134 ++++++++++++++++++++++++++-- images/book/translation/debug_1.png | Bin 0 -> 22689 bytes images/book/translation/debug_2.png | Bin 0 -> 22534 bytes images/book/translation/debug_3.png | Bin 0 -> 22381 bytes images/book/translation/debug_4.png | Bin 0 -> 22236 bytes 5 files changed, 129 insertions(+), 5 deletions(-) create mode 100644 images/book/translation/debug_1.png create mode 100644 images/book/translation/debug_2.png create mode 100644 images/book/translation/debug_3.png create mode 100644 images/book/translation/debug_4.png diff --git a/book/translation.rst b/book/translation.rst index d3a6e010ff6..2356f239f6c 100644 --- a/book/translation.rst +++ b/book/translation.rst @@ -657,16 +657,140 @@ Debugging Translations When maintaining a bundle, you may use or remove the usage of a translation message without updating all message catalogues. The ``translation:debug`` -command helps you finding these missing or unused translation messages for a +command helps you to find these missing or unused translation messages for a given locale. It shows you a table with the result when translating the message in the given locale and the result when the fallback would be used. On top of that, it also shows you when the translation is the same as the fallback translation (this could indicate that the message was not correctly -translated). To inspect all messages in the ``en`` locale for the AcmeDemoBundle, run: +translated). + +Thanks to the messages extractors, the command will detect the translation +tag or filter usages in Twig templates: + +.. code-block:: jinja + + {% trans %}Symfony2 is great{% endtrans %} + + {{ 'Symfony2 is great'|trans }} + +It will also detect the following translator usages in PHP templates: + +.. code-block:: php + + $view['translator']->trans("Symfony2 is great"); + + $view['translator']->trans(‘Symfony2 is great’); + +Supposing your application default_locale is French ``fr`` and you have enabled +the translator in your configuration with English ``en`` as fallback locale. + +See :ref:`book-translation-configuration` and :ref:`book-translation-fallback` for details +about how to configure these. + +You are working on the AcmeDemoBundle and the translation file for the ``messages`` domain +in the ``fr`` locale contains: + +.. configuration-block:: + + .. code-block:: xml + + + + + + + + Symfony2 is great + J'aime Symfony2 + + + + + + .. code-block:: php + + // messages.fr.php + return array( + 'Symfony2 is great' => 'J\'aime Symfony2', + ); + + .. code-block:: yaml + + # messages.fr.yml + Symfony2 is great: J'aime Symfony2 + +and for the ``en`` locale: + +.. configuration-block:: + + .. code-block:: xml + + + + + + + + Symfony2 is great + Symfony2 is great + + + + + + .. code-block:: php + + // messages.en.php + return array( + 'Symfony2 is great' => 'Symfony2 is great', + ); + + .. code-block:: yaml + + # messages.en.yml + Symfony2 is great: Symfony2 is great + +To inspect all messages in the ``fr`` locale for the AcmeDemoBundle, run: .. code-block:: bash - $ php app/console translation:debug en AcmeDemoBundle + $ php app/console translation:debug fr AcmeDemoBundle + +You will get this output: + +.. image:: /images/book/translation/debug_1.png + :align: center + +It indicates the message with id ``Symfony2 is great`` is unused because it is translated +but we don’t use it in any template yet. + +Now, if you translate the message in one of your templates, you will get this output: + +.. image:: /images/book/translation/debug_2.png + :align: center + +The state is empty which means the message is translated in the ``fr`` locale and used in one or more templates. +Moreover, we see the translation is different than the ``en`` one. + +If you delete the message ``Symfony2 is great`` from your translation file for the ``fr`` locale +and run the command, you will get: + +.. image:: /images/book/translation/debug_3.png + :align: center + +The state indicates the message is missing because it is not translated in the ``fr`` locale +but it is still used in the template. +Moreover, we see the message in the ``fr`` locale equals to the message in the ``en`` locale. +This is a special case because the untranslated message id equals its translation in the ``en`` locale. + +If you copy the content of the translation file in the ``en`` locale, to the translation file +in the ``fr`` locale and run the command, you will get: + +.. image:: /images/book/translation/debug_4.png + :align: center + +We observe the translations of the message are identical in the ``fr`` and ``en`` locales +which means this message was probably copied from French to English or vice versa (which is the case). By default all domains are inspected, but it is possible to specify a single domain: @@ -674,8 +798,8 @@ By default all domains are inspected, but it is possible to specify a single dom $ php app/console translation:debug en AcmeDemoBundle --domain=messages -You can also display only the unused or only the missing messages, by using -the ``--only-unused`` or ``--only-missing`` switches: +When bundles have a lot of messages, it is useful to display only the unused +or only the missing messages, by using the ``--only-unused`` or ``--only-missing`` switches: .. code-block:: bash diff --git a/images/book/translation/debug_1.png b/images/book/translation/debug_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8f175f4d7fffb76a5834a22b37580c5b8213f2d0 GIT binary patch literal 22689 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 literal 0 HcmV?d00001 diff --git a/images/book/translation/debug_2.png b/images/book/translation/debug_2.png new file mode 100644 index 0000000000000000000000000000000000000000..04a57fa41d45ef6bfa7ed755518b5ee1a2178a71 GIT binary patch literal 22534 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 D9@U|- literal 0 HcmV?d00001 diff --git a/images/book/translation/debug_3.png b/images/book/translation/debug_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed595e097b7b714b93be70d134cef71ac8b7c9a GIT binary patch literal 22381 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�D7=5gk)_W3TkefbFJrdOqir!n0*vrq9t+X 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 literal 0 HcmV?d00001 From b6ac4540c0b95f1bcdd47c26db126336cd0535f2 Mon Sep 17 00:00:00 2001 From: florianv Date: Thu, 13 Mar 2014 16:21:09 +0100 Subject: [PATCH 3/3] Fixed the issues --- book/translation.rst | 47 ++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/book/translation.rst b/book/translation.rst index 2356f239f6c..0c7e13e77ae 100644 --- a/book/translation.rst +++ b/book/translation.rst @@ -673,28 +673,38 @@ tag or filter usages in Twig templates: {{ 'Symfony2 is great'|trans }} + {{ 'Symfony2 is great'|transchoice(1) }} + + {% transchoice 1 %}Symfony2 is great{% endtranschoice %} + It will also detect the following translator usages in PHP templates: .. code-block:: php $view['translator']->trans("Symfony2 is great"); - $view['translator']->trans(‘Symfony2 is great’); + $view['translator']->trans('Symfony2 is great'); + +.. caution:: -Supposing your application default_locale is French ``fr`` and you have enabled -the translator in your configuration with English ``en`` as fallback locale. + The extractors are not able to inspect the messages translated outside templates which means + that translator usages in form labels or inside your controllers won't be detected. + Dynamic translations involving variables or expressions are not detected in templates, + which means this example won't be analyzed: -See :ref:`book-translation-configuration` and :ref:`book-translation-fallback` for details -about how to configure these. + .. code-block:: jinja + {% set message = 'Symfony2 is great' %} + {{ message|trans }} -You are working on the AcmeDemoBundle and the translation file for the ``messages`` domain -in the ``fr`` locale contains: +Suppose your application's default_locale is ``fr`` and you have configured ``en`` as the fallback locale +(see :ref:`book-translation-configuration` and :ref:`book-translation-fallback` for how to configure these). +And suppose you've already setup some translations for the ``fr`` locale inside an AcmeDemoBundle: .. configuration-block:: .. code-block:: xml - + @@ -709,14 +719,14 @@ in the ``fr`` locale contains: .. code-block:: php - // messages.fr.php + // src/Acme/AcmeDemoBundle/Resources/translations/messages.fr.php return array( 'Symfony2 is great' => 'J\'aime Symfony2', ); .. code-block:: yaml - # messages.fr.yml + # src/Acme/AcmeDemoBundle/Resources/translations/messages.fr.yml Symfony2 is great: J'aime Symfony2 and for the ``en`` locale: @@ -725,7 +735,7 @@ and for the ``en`` locale: .. code-block:: xml - + @@ -740,14 +750,14 @@ and for the ``en`` locale: .. code-block:: php - // messages.en.php + // src/Acme/AcmeDemoBundle/Resources/translations/messages.en.php return array( 'Symfony2 is great' => 'Symfony2 is great', ); .. code-block:: yaml - # messages.en.yml + # src/Acme/AcmeDemoBundle/Resources/translations/messages.en.yml Symfony2 is great: Symfony2 is great To inspect all messages in the ``fr`` locale for the AcmeDemoBundle, run: @@ -761,8 +771,8 @@ You will get this output: .. image:: /images/book/translation/debug_1.png :align: center -It indicates the message with id ``Symfony2 is great`` is unused because it is translated -but we don’t use it in any template yet. +It indicates that the message ``Symfony2 is great`` is unused because it is translated, +but you haven't used it anywhere yet. Now, if you translate the message in one of your templates, you will get this output: @@ -770,7 +780,6 @@ Now, if you translate the message in one of your templates, you will get this ou :align: center The state is empty which means the message is translated in the ``fr`` locale and used in one or more templates. -Moreover, we see the translation is different than the ``en`` one. If you delete the message ``Symfony2 is great`` from your translation file for the ``fr`` locale and run the command, you will get: @@ -780,7 +789,7 @@ and run the command, you will get: The state indicates the message is missing because it is not translated in the ``fr`` locale but it is still used in the template. -Moreover, we see the message in the ``fr`` locale equals to the message in the ``en`` locale. +Moreover, the message in the ``fr`` locale equals to the message in the ``en`` locale. This is a special case because the untranslated message id equals its translation in the ``en`` locale. If you copy the content of the translation file in the ``en`` locale, to the translation file @@ -789,8 +798,8 @@ in the ``fr`` locale and run the command, you will get: .. image:: /images/book/translation/debug_4.png :align: center -We observe the translations of the message are identical in the ``fr`` and ``en`` locales -which means this message was probably copied from French to English or vice versa (which is the case). +You can see that the translations of the message are identical in the ``fr`` and ``en`` locales +which means this message was probably copied from French to English and maybe you forgot to translate it. By default all domains are inspected, but it is possible to specify a single domain: