2015-10-09 5 views
1

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

Я использую 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, например, я получаю все мои объекты из базы данных в случай текущей локали, на данный момент красив, когда я обращаюсь к странице, например, с slug, импортированным из базы данных, и я пытаюсь изменить locale на en, проблема в том, что в моих представлениях ничего не изменилось из базы данных, но набор переводов в файлах i18n импортируется.

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

ответ

1

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

Translation Docs

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

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

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

{{ field|trans }} 

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