@@ -453,6 +453,77 @@ To add a new rendering strategy - in addition to the core strategies like
453
453
:class: `Symfony\\ Component\\ HttpKernel\\ Fragment\\ FragmentRendererInterface `,
454
454
register it as a service, then tag it with ``kernel.fragment_renderer ``.
455
455
456
+ kernel.locale_aware
457
+ -------------------
458
+
459
+ .. versionadded :: 4.3
460
+
461
+ The ``kernel.locale_aware `` tag was introduced in Symfony 4.3.
462
+
463
+ **Purpose **: To access and use the current :doc: `locale </translation/locale >`
464
+
465
+ Setting and retrieving the locale can be done via configuration or using
466
+ container parameters, listeners, route parameters or the current request.
467
+
468
+ Thanks to the ``Translation `` contract, the locale can be set via services.
469
+
470
+ To register your own locale aware service, first create a service that implements
471
+ the :class: `Symfony\\ Contracts\\ Translation\\ LocaleAwareInterface ` interface::
472
+
473
+ // src/Locale/MyCustomLocaleHandler.php
474
+ namespace App\Locale;
475
+
476
+ use Symfony\Contracts\Translation\LocaleAwareInterface;
477
+
478
+ class MyCustomLocaleHandler implements LocaleAwareInterface
479
+ {
480
+ public function setLocale($locale)
481
+ {
482
+ $this->locale = $locale;
483
+ }
484
+
485
+ public function getLocale()
486
+ {
487
+ return $this->locale;
488
+ }
489
+ }
490
+
491
+ If you're using the :ref: `default services.yaml configuration <service-container-services-load-example >`,
492
+ your service will be automatically tagged with ``kernel.locale_aware ``. But, you
493
+ can also register it manually:
494
+
495
+ .. configuration-block ::
496
+
497
+ .. code-block :: yaml
498
+
499
+ services :
500
+ App\Locale\MyCustomLocaleHandler :
501
+ tags : [kernel.locale_aware]
502
+
503
+ .. code-block :: xml
504
+
505
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
506
+ <container xmlns =" http://symfony.com/schema/dic/services"
507
+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
508
+ xsi : schemaLocation =" http://symfony.com/schema/dic/services
509
+ https://symfony.com/schema/dic/services/services-1.0.xsd" >
510
+
511
+ <services >
512
+ <service id =" App\Locale\MyCustomLocaleHandler" >
513
+ <tag name =" kernel.locale_aware" />
514
+ </service >
515
+ </services >
516
+ </container >
517
+
518
+ .. code-block :: php
519
+
520
+ use App\Locale\MyCustomLocaleHandler;
521
+
522
+ $container
523
+ ->register(LocaleHandler::class)
524
+ ->addTag('kernel.locale_aware')
525
+ ;
526
+
456
527
kernel.reset
457
528
------------
458
529
0 commit comments