Skip to content

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

Open
@goetas

Description

@goetas
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:

PHP:

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

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>

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>

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions