Symfony2: мультиязычный слаг локального изменения

1

Я пытаюсь создать свое многоязычное приложение для веб-приложений, я хочу изменить стандартную локаль с совместимостью с slug, потому что мой slug также является многоязычным.

Я использую JMS\I18nRoutingBundle\JMSI18nRoutingBundle(), чтобы изменить локаль.

и на моих взглядах на ветку у меня:

{% if app.request.attributes.get('_locale') == 'fr' %}
        <a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge(app.request.query.all|merge({'_locale': 'en' }))) }}">
            en
        </a>
    {% else %}
        <a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge(app.request.query.all|merge({'_locale': 'fr' }))) }}">
            fr
        </a>
    {% endif %}

Теперь проблема заключается в следующем: - когда я устанавливаю локаль в Fr, например, я получаю все свои сущности из базы данных в случае текущей локали, на данный момент красив, когда я обращаюсь к странице, например, с пули, импортированной из базы данных, и я пытаюсь изменить locale на en, проблема в том, что в моих представлениях ничего не изменилось из базы данных, но набор переводов в файлах i18n импортируется.

Что я могу сделать, чтобы решить эту проблему?

Теги:
twig
slug

1 ответ

1

Обрабатывая данные из вашей базы данных, как и любые другие строки, которые необходимо перевести:

Переводческие документы

В ваших контроллерах это выглядит примерно так:

$translated = $this->get('translator')->trans( $row['field'] );

В ваших шаблонах это выглядит примерно так:

{{ field|trans }}

Теперь все, что вам нужно сделать, это предоставить перевод для каждого возможного "ключа", который может выйти из вашей базы данных. Надеюсь, вы НЕ пытаетесь перевести данные, введенные французским пользователем автоматически на английский язык на выходе - это НЕ является работой компонента Translator - оставьте это до Google Translate.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню