schmittjoh / JMSTranslationBundle

Puts the Symfony2 Translation Component on steroids
http://jmsyst.com/bundles/JMSTranslationBundle
426 stars 292 forks source link

[RFC] Do not load state=new translations #507

Open goetas opened 5 years ago

goetas commented 5 years ago
Q A
Bundle version master
Symfony version 3.4
PHP version 7.2

This is not a bug issue.

Is more of a RFC.

Currently Translation/Loader/Symfony/XliffLoader.php loads all the translations in the symfony catalogue.

Does it make sense to skip translations marked as new ?

The reason for this is that new strings are in 99% of cases not translated. Currently the loader considers them as translated and does not fallback on the default locale setting.

In my case i have:

1) PHP:

echo $translator->trans('welcome_message');

2) I extract the translations using the extract command (extracted for en and es language). This generates:

messages.en.xlf

<trans-unit id="123" resname="welcome_message">
  <source>welcome_message</source>
  <target state="new">welcome_message</target>
</trans-unit>

messages.es.xlf

<trans-unit id="123" resname="welcome_message">
  <source>welcome_message</source>
  <target state="new">welcome_message</target>
</trans-unit>

3) A as first thing I translate messages.en.xlf. welcome_message is translated as Hi!.

messages.en.xlf

<trans-unit id="123" resname="welcome_message">
  <source>welcome_message</source>
  <target>Hi!</target>
</trans-unit>

4) When a user has es locale:

$translator->setLocale('es');
echo $translator->trans('welcome_message'); // prints welcome_message

prints welcome_message instead of Hi!.

This is because <target state="new">welcome_message</target> is considered as translated.