Я новичок в Laravel и хочу, чтобы мой сайт был многоязычным. И я сохраняю выбранный язык slug
в Session
. Но как я могу сделать так, чтобы мои URL-адреса отображали выбранный язык:
Route::get('/{lang?}/signup', array(
'as' => 'signup',
'uses' => 'UsersController@getSignup'
));
http://example.com/en/signup — если я получу первый сегмент с URL::segment (1) и передать его Session
все в порядке. С Route
, который я разместил выше, я получаю 4oh4, если открываю вторую ссылку.
В общем, я не могу придумать способ, который сделает оба http://example.com/en/signup и http://example.com/singup.
Первая ссылка должна изменить язык пользователя, а вторая должна использовать значение, хранящееся в Session
, для получения результатов для этого языка.
Изменить:
Я пытаюсь сделать что-то вроде CMS, где я установил некоторые ключи в таблице в базе данных - languages
:
id
- (int) AI, name
- (varchar) - название языка, prefix
- (varchar) - префикс языка
И еще одна таблица, в которой хранятся translations
определенных частей веб-сайта: id
- (int) AI, key
(например, signup_form_name), value
(например, моя форма регистрации)
И у меня есть эта функция в моем helpers.php
:
function _t($key, $language = NULL)
{
if(is_null($language))
$language = Session::get('currLang');
$string = DB::table('translations')
->where('key', $key)
->pluck('value');
return (!is_null($string)) ? $string : $key;
}
/en/singup
и/singup
). Я бы перенаправил на сохраненный язык вSession
. И сделайте так, чтобы в первом сегменте всегда был код языка. Вы можете сравнить первый сегмент с массивом, содержащим список всех кодов языков, которые вы ожидаете. - person azeós   schedule 13.08.2014Locale
в Laravel. - person Ivanka Todorova   schedule 13.08.2014