Я использую пакет laravel и mcamara / laravel-localization для управления двуязычным сайтом (французский / английский).
В документации пакета https://github.com/mcamara/laravel-localization
они не объясняют, как указать URL-адрес для правильного представления в зависимости от того, какой язык установлен как локальный.
Например, если URL / О / контактные загрузить вид en.contact (en — это подкаталог для представлений, написанных на английском языке), а id — это URL / FR / контактная загрузить вид из подкаталога фр.
То же самое для URL, который требует перевода / EN / продукты для английского нужно загрузить / FR / Produits когда местный язык установлен на французский.
Отказ от ответственности: я никогда не использовал пакет …
Это потому, что пакет (а также локализация laravel) предполагают, что вы используете Переводы Ларавеля. Таким образом, пакет в основном беспокоится о правильной настройке языкового стандарта приложения, а Laravel выполняет всю остальную работу.
Однако, если вам нужны разные представления (или вы не хотите использовать переводы), вы можете просто получить текущую локаль и использовать ее для построения имени представления.
View::make(App::getLocale().'.contact');
Вы должны динамически изменять путь просмотра, поэтому вам не нужно добавлять префиксы к своим представлениям вручную.
Просто создайте новое Middleware и зарегистрируйте его в Kernel.php.
Я создал суть для этого.
https://gist.github.com/vanderb/80dea9a8039dd60962c5cb291eae7b75
Теперь все, что вам нужно сделать, это сослаться на имя вида, не добавляя lang-код каждый раз.
Я также рекомендую использовать named-маршруты
https://laravel.com/docs/5.4/routing#named-routes
Я не понимаю, почему вы хотите использовать разные представления для каждого языка. Это удвоит ваш код. Просто используйте одно представление с собственными функциями перевода Laravels для перевода ваших строк. Пакет обрабатывает наименование маршрутов (/ products vs / Produits). Мнения должны оставаться такими же.
Если вам действительно нужны разные представления для разных языков, у @lukasgeiter есть ответ. Похоже, дублирование кода.
Примечание: новая функция перевода JSON в Laravel 5.4s вместе с Лангман действительно здорово.