New in Symfony 6.1: Locale Switcher

Contributed by Kevin Bond in #45793.

Working with the locale in Symfony applications is simple. The locale is stored in a request attribute called _locale and used in the rest of the application. Changing the locale (e.g. in multilingual applications via a list of languages selectable by users) requires changing that request attribute in an early event listener. However, sometimes you need to change the locale of the application dynamically just to run some code. Imagine an application that renders Twig templates of emails in different languages. You need to change the locale only to render those templates. In Symfony 6.1 we're improving situations like this thanks to a new locale switcher. The LocaleSwitcher object/service allows you to change at once the locale of all the services that are tagged with kernel.locale_aware.

    use Symfony\Component\Translation\LocaleSwitcher;

class SomeClass { public function __construct( private LocaleSwitcher $localeSwitcher, ) {}

public function someMethod()
{
    // you can get the current application locale like this:
    $currentLocale = $this->localeSwitcher->getLocale();

    // you can set the locale for the entire application like this:
    // (from now on, the application will use 'fr' (French) as the
    // locale; including the default locale used to translate Twig templates)
    $this->localeSwitcher->setLocale('fr');

    // you can also run some code with a certain locale, without
    // changing the locale for the rest of the application
    $this->localeSwitcher->runWithLocale('es', function() {

        // e.g. render here some Twig templates using 'es' (Spanish) locale

    });

    // ...
}

}

                Sponsor the Symfony project.

https://symfony.com/blog/new-in-symfony-6-1-locale-switcher?utm_source=Symfony%20Blog%20Feed&utm_medium=feed

Created 3y | Apr 14, 2022, 9:20:06 AM


Login to add comment

Other posts in this group

SymfonyOnline June 2025: Speakers, Stats & Replays!

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

Jun 18, 2025, 8:50:17 AM | Symfony
A Week of Symfony #963 (June 9–15, 2025)

This week, Symfony celebrated the SymfonyOnline June 2025 conference with great success. Meanwhile, development efforts focused on improving invokable commands for the upcoming Symfony 7.4 version. Th

Jun 15, 2025, 9:10:09 AM | Symfony
A Week of Symfony #962 (June 2–8, 2025)

This week, development activity focused on the upcoming Symfony 7.4 and 8.0 versions, which will deprecate and remove many features. In addition, we published a case study about Yousign. Finally, we'r

Jun 8, 2025, 7:50:05 AM | Symfony
Case study - Yousign: Scaling Trust with Smart, Scalable Architecture

As digital signatures become the norm in modern business, Yousign has established itself as a trusted leader across Europe. Behind its simple, intuitive interface is a powerful technical engine, handl

Jun 6, 2025, 7:10:24 AM | Symfony
SymfonyOnline June 2025 starts next week!

Get ready for the exciting SymfonyOnline June 2025, kicking off in a few days only! There’s still time to register and join the international online Symfony conference—along with pre-conferenc

Jun 5, 2025, 10:20:09 AM | Symfony
A Week of Symfony #961 (May 26 – June 1, 2025)

This week, Symfony released the stable version of Symfony 7.3, which includes lots of amazing new features. We also published the maintenance versions 6.4.22 and 7.2.7.

Symfony development highlights

Jun 1, 2025, 8:50:16 AM | Symfony
New in Symfony 7.3: DX Improvements (part 2)

This is the second part of the blog post showcasing the main DX (developer experience) features introduced in Symfony 7.3. Read the first part of this blog post.

Verify URI Signatures… https://symfon

May 29, 2025, 9:10:19 AM | Symfony