Перевести Symfony 4 / Twig - PullRequest
       1

Перевести Symfony 4 / Twig

0 голосов
/ 03 марта 2019

Я перевожу свою строку, используя следующую инструкцию:

{% trans into lang %}hi{% endtrans %}

Я сомневаюсь, есть ли способ перевести строки внутри блока?вот так:

{{ include('user/_form.html.twig', {'button_label': 'Update'}) }}
<button class="btn  btn-primary submit-user"><i class="fa fa-edit"></i> {{ button_label|default('Save') }}</button>

Я загружаю текст с внешнего ямла.

Спасибо

С уважением.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Вы можете попробовать что-то вроде этого.

Я создал LocaleSubscriber для прослушивания onkernelRequest со значением Accept-language в каждом заголовке запроса и автоматически изменил локаль.

Таким образом, вы можете положиться на |trans в веточке для перевода на нужный язык

Здесь код:

class LocaleSubscriber implements EventSubscriberInterface
{
private $defaultLocale;
private $supportedLanguages;

public function __construct($defaultLocale = 'fr')
{
    $this->defaultLocale = $defaultLocale;

    $this->supportedLanguages = ['en', 'fr', 'es'];
}

public function onKernelRequest(GetResponseEvent $event): void
{
    if (null !== $acceptLanguage = $event->getRequest()->headers->get('Accept-Language')) {
        $locale = Locale::acceptFromHttp($acceptLanguage);
        if (\strlen($locale) > 2) {
            $locale = substr($locale, 0, 2);
        }
        if (\in_array($locale, $this->supportedLanguages, false)) {
            $event->getRequest()->setLocale($locale);
        } else {
            $locale = $this->defaultLocale;
            $event->getRequest()->setLocale($locale);
        }
    }
}

public static function getSubscribedEvents(): array
{
    return [
        // must be registered before (i.e. with a higher priority than) the default Locale listener
        KernelEvents::REQUEST => [['onKernelRequest', 20]],
    ];
}
} 
0 голосов
/ 04 марта 2019

Вы должны использовать локаль Symfony и обработку перевода, например здесь , чтобы управлять локалью пользователя, а затем просто использовать переводы в ветке, как обычно.Вы также можете использовать собственную языковую переменную пользователя, чтобы установить ее по запросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...