Symfony 4 перевод

Пытался поработать с этим: https://symfony.com/doc/current/translation.html

Но, похоже, ни у кого нет проблем с переводами, я, должно быть, ошибаюсь.

Моя локаль установлена ​​на 'fr' в 'services.yaml'

У меня есть сообщения message.en.xlf и message.fr.xlf

Вот мой .fr:

<?xml version = "1.0"?> 
<xliff version = "1.2" xmlns = "urn:oasis:names:tc:xliff:document:1.2">
    <file source-language = "en" target-language = "fr" datatype = "plaintext" original = "file.ext">
        <body>
            <trans-unit id = "homepage_presta">
                <source>homepage.presta</source>
                <target>Les prestations</target>
            </trans-unit>
        </body>
    </file>
 </xliff>

Пробовал в контроллере (появляется предупреждение "отсутствует ключ перевода"):

var_dump($translator->trans("homepage_presta"));

или в веточке:

{{ 'homepage.presta'|trans }}  

Но ничего не работает .. В конце концов, я хотел бы перевести на нужный язык в зависимости от языка браузера, а затем на какой-то язык, если он выбран на панели навигации (например, в файле cookie?).

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
0
400
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
/**
 * @Route("/test/translation")
 */
public function translationAction(TranslatorInterface $translator)
{
    dump($translator->trans("homepage.presta"));

    return new Response('<html><body>testaroni</body></html>');
}

у меня работает ... несколько вещей ...

  1. домен перевода по умолчанию - это сообщения, а не сообщения, поэтому ваш файл должен быть translations / messages.fr.xlf

  2. Я не привык к xlf, но похоже, что для перевода нужно использовать <source>homepage.presta</source>, а не идентификатор homepage_presta

  3. Не забывайте очищать кеш каждый раз, когда вы создаете новый файл перевода php bin/console cache:clear.

Спасибо, в моем файле пропущена буква "s" .. Думаю, имя файла не имеет значения: s

Antoine Nedelec 10.06.2018 15:11

Другие вопросы по теме