Renamed the Translation Update Command
Contributed by Mathieu Santostefano
in #43758.
The well-known translation:update command extracts translatable contents from templates, controllers, and some PHP files. It's useful to automatically create (and update) the translation files of your applications. Although the command "updates" the translation files, its main feature is to "extract" translatable contents. That's why in Symfony 5.4 we've updated its name from translation:update to translation:extract. You can still use the old name, but you should update it as soon as possible because the old name will no longer work in Symfony 6.0.
GitHub Actions Integration
Contributed by Yannis Foucher
in #39828.
The lint:xliff command has added a new github output format so you can see the translation errors properly formatted in the GitHub Actions output. Use the following command to validate your translation files inside GitHub Actions:
1
$ php bin/console lint:xliff translations/ --format=github
Translatable Help Messages
Contributed by Patrick Landolt
in #41717.
In Symfony 5.2 we introduced Translatable objects, which include not only the contents to translate but all the information needed to do so (translation parameters, translation domain, etc.) In Symfony 5.4 we're improving Symfony Forms to allow these objects as the help message of form fields too:
1
2 3 4 5 use Symfony\Component\Translation\TranslatableMessage;
$builder->add('zipCode', null, [ 'help' => new TranslatableMessage('admin.zip_code', ['%current_zip%' => $order->getZipCode()], 'admin'), ]);
Translatable Parameters in Translatable Objects
Contributed by kylekatarnls
in #41858.
Another improvement related to Translatable objects is that parameters can now also be translatable. This may sound confusing, but consider the following message:
1
2 3 // message 'invoice.status' (English) 'This invoice is in "%status%" status' (Spanish) 'El estado de la factura es "%status%"'
In addition to translating the entire message, the %status% parameter must be translated as well. In Symfony 5.4 you can solve that by making the parameter a TranslatableMessage object:
1
2 3 4 5 $message = new TranslatableMessage('invoice.status', ['%status%' => new TranslatableMessage('status.draft')]); echo $message->trans($translator, 'en'); // This invoice is in "draft" status echo $message->trans($translator, 'es'); // El estado de la factura es "borrador"
Sponsor the Symfony project.
Autentifică-te pentru a adăuga comentarii
Alte posturi din acest grup

Vente-unique.com, a leading European online retailer of furniture and home decor, operates in 11 countries, powered by a team of 400 professionals and serving more than 3 million customers. From 15 ye

This week, Symfony 6.4.23, 7.2.8 and 7.3.1 maintenance versions were released. Meanwhile, the upcoming Symfony 7.4 version continued adding new features such as better controller helpers, more precisi

Symfony 6.4.23 has just been released. Read the Symfony upgrade guide to learn more about upgrading Symfony and use the SymfonyInsight upgrade reports to detect the code you will need to change in you

Symfony 7.2.8 has just been released. Read the Symfony upgrade guide to learn more about upgrading Symfony and use the SymfonyInsight upgrade reports to detect the code you will need to change in your

Symfony 7.3.1 has just been released. Read the Symfony upgrade guide to learn more about upgrading Symfony and use the SymfonyInsight upgrade reports to detect the code you will need to change in your

This week, development activity was intense, with many bug fixes in the maintained branches, numerous deprecation removals in the 8.0 branch, and new features added to the 7.4 branch, including tighte

Thank you for joining us at SymfonyOnline June 2025!
What a great edition of SymfonyOnline we’ve just wrapped up! 🎉
We were thrilled to welcome 300 participants from 35 different countries—a