2014-12-02 2 views
1

Я использую пакет laravel и mcamara/laravel-localization для управления двуязычным сайтом (французский/английский). В документации к пакету https://github.com/mcamara/laravel-localization они не объясняют, как указывать URL-адрес для правильного представления в зависимости от того, какой язык установлен как локальный.Локализация Laravel, переадресация в правильное представление

Например, если URL-адрес является /ный/контактной нагрузки вида en.contact (еп подкаталогом для представлений написано на английском языке) и идентификатор URL-адрес является /FR/контакта вид нагрузки из подкаталога fr. То же самое для URL-адреса, который нуждается в переводе /ru/products Для английского языка необходимо загрузить /fr/produits, если локальный язык установлен на французский.

ответ

0

Отказ от ответственности: Я никогда не использовал пакет ...

Это потому, что пакет (а также локализация Laravel) предположим, что вы используете Laravel's translations. Таким образом, пакет в основном беспокоит настройку правильного языка приложения, а Laravel выполняет остальную часть работы.

Однако если вам нужно разные точки зрения (или не хочет использовать переводы), вы можете просто получить текущую локаль и использовать его, чтобы построить имя зрения

View::make(App::getLocale().'.contact'); 
0

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

Просто создайте новое промежуточное программное обеспечение и зарегистрируйте его в Kernel.php. Я создал для этого суть. https://gist.github.com/vanderb/80dea9a8039dd60962c5cb291eae7b75

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

Я также рекомендую использовать именованные маршруты https://laravel.com/docs/5.4/routing#named-routes

0

Я не понимаю, почему вы хотели бы использовать различные представления для каждого языка. Это удвоит ваш код. Просто используйте одно представление с собственными функциями перевода Laravels, чтобы перевести ваши строки. Пакет обрабатывает имена маршрутов (/ products vs/produits). Взгляды должны оставаться неизменными.

Если вы действительно хотите разные взгляды для разных языков, у @lukasgeiter есть ответ. Однако звучит как дублирование кода.

Боковое примечание: новая функция перевода JSON Laravel 5.4s вместе с langman действительно замечательная.