Тема: Многоязычность, перенаправление

Добрый день!
Только начал юзать этот фрейм и столкнулся с такой проблемой:
Есть сайт, на нем 3 языка и по умолчанию стоит русский, так вот как сделать чтобы по умолчанию стоял английский?
Думал что-то нужно поменять в .htaccess но так и не разобрался что...

<IfModule mod_rewrite.c>
  RewriteEngine On
 
  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  #RewriteBase /
 
  # we skip all files with .something
  #RewriteCond %{REQUEST_URI} \..+$
  #RewriteCond %{REQUEST_URI} !\.html$
  #RewriteRule .* - [L]
  RewriteCond %{HTTP_HOST} ^domain.com$
  RewriteRule ^(.*)$ http://www.domain.com/$1 [R=permanent,L] .
 
  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f
 
  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

Можно ли сделать, чтоб при входе на domain.com перекидывало на domain.com\en
ну или какие советы есть по этому поводу?
Спасибо!
З.Ы. Прошу прощение если глупый вопрос

2

Re: Многоязычность, перенаправление

Язык по-умолчанию меняется в конфигурации приложения (обычно app/config/parameters.yml), parameters -> default_locale.
Но замена дефолтного языка вызовет совсем не то, что вы хотите — просто по адресу domain.com будет сразу открываться англоязычная версия. А если вам нужен редирект, то его можно либо запилить в том же .htaccess (менять там ничего не нужно, просто добавьте правило редиректа с корня на /en сразу за первым RewriteRule), либо в контроллере в экшене, который обрабатывает корневой роут (/). Где он конкретно в вашем приложении — я понятия не имею, это как писавший этот проект программист решил. Какой из вариантов вы используете — значения не имеет.

Алсо, редирект с корня на /en — хоть и допустимая, но не самая удачная идея. У сайта в этом случае вообще нет корневой страницы, это минус для поисковиков. Но без конкретики и знания проекта советовать тут нечего.

Re: Многоязычность, перенаправление

Язык по-умолчанию меняется в конфигурации приложения (обычно app/config/parameters.yml), parameters -> default_locale.
Но замена дефолтного языка вызовет совсем не то, что вы хотите — просто по адресу domain.com будет сразу открываться англоязычная версия. 

Да да да, вот именно это мне и нужно
Нашел вот это

framework:
    #esi:             ~
    #translator:      { fallback: %locale% }
    secret:          %secret%
    router:
        resource: "%kernel.root_dir%/config/routing.yml"
        strict_requirements: ~
    form:            ~
    csrf_protection: ~
    validation:      { enable_annotations: true }
    templating:
        engines: ['twig']
        #assets_version: SomeVersionScheme
    default_locale:  "%locale%"
    trusted_proxies: ~
    session:         ~
    fragments:       ~
    http_method_override: true

Попробовал поменять
default_locale:  "%locale%"
на
default_locale:  en
не помогло (((

4

Re: Многоязычность, перенаправление

dubovitskii1990 пишет:

Попробовал поменять

Ну, лучше все-таки менять значение %locale% в app/config/parameters.yml, а не напрямую забивать его в конфигурацию. Хотя бы потому, что параметр %locale% мог быть использован программистом где-нибудь еще в коде, где ему нужна была локаль по-умолчанию.

И да, после смены конфигурации ничего не произойдет до тех пор, пока вы не сбросите кеш (лучше всего через консоль, что-нибудь типа "php bin/console cache:clear --env=prod").
http://symfony.com/doc/current/console/usage.html
Если доступа к консоли сервера нет, можно конечно просто грохнуть все внутри директории app/cache (или var/cache в последних версиях Симфони). Но это не самая безопасная операция, так как если по какой-либо причине новый кеш  конфигурации создан не будет, то сайт перестанет отвечать на запросы. Новый кеш генерируется автоматически, при первом запросе вебсервера к приложению, в случае отсутствия ошибок.