Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 19.04.2015 16:03:59

Как реализовать мультиязычный сайт на Laravel 5?

Добрый день, делаю блог на laravel 5. Практически реализовал все, кроме мультиязычности. До этого не приходилось делать мультиязычные сайты, не опыта. Думаю контент хранить в БД, в таблицах типа table_ru, table_en, table_de.
А роуты типа: site.ru/about
                    site.ru/en/about
                    site.ru/de/about

Русский по умолчанию, остальные уже по нужде. Так вот, может кто так делал, поделится дельным советом, примерам. Буду признателен.

Не в сети

#2 19.04.2015 18:39:40

Re: Как реализовать мультиязычный сайт на Laravel 5?

Как я это сделал на своем сайте - http://beatmonster()org
Я установил пакет - https://packagist.org/packages/mcamara/ … calization

Мультиязычный контент хранил в столбцах - например, description_ru, description_en
Также под переводы отдельных слов и выражений, а также ошибок валидации и прочего, создал папки lang/en и lang/ru и поместил туда файлы с переводами, об этом можно прочитать в офф доках

В файле ConfigServiceProvider поместил следующий код, с описанием моих локалей:
    public function register()
    {
        config([
                'laravellocalization.supportedLocales' => [
                'en'  => array( 'name' => 'English', 'script' => 'Latn', 'native' => 'English' ),
                'ru'  => array( 'name' => 'Russian', 'script' => 'Latn', 'native' => 'Русский' ),               
        ],
                'laravellocalization.useAcceptLanguageHeader' => true,

                'laravellocalization.hideDefaultLocaleInURL' => false

        ]);
    }

Далее, в модели я использовал get attribute, для назначения суффикса столбцу, взависимости от выбранной пользователем локали:
    public function getDescriptionAttribute()
    {
        $locale = App::getLocale();
        $column = "description_" . $locale;
        return $this->{$column};
    }

На главной странице, в шаблоне вывел выбор языка:
                    <ul class="nav navbar-nav navbar-right lang">
                            <li><a rel="alternate" hreflang="en" href="http://beatmonster()org/en" locale="en"><img src="/img/us-lang.png" alt="English"></a></li>
                            <li><a rel="alternate" hreflang="ru" href="http://beatmonster()org/ru" locale="ru"><img src="/img/rus-lang.png" alt="Russian"></a></li>
                        </ul>       

Все роуты, которые должны попадать под перевод, загнал в группу:
Route::group(['prefix' => LaravelLocalization::setLocale(), 'middleware' => [ 'localizationRedirect', 'localeSessionRedirect' ]], function()
{
    //все роуты сайта
});

Для вывода контента в шаблоне, просто указываю
<p>{{ $sample->description}}</p>

Изменено Sarkozi (19.04.2015 18:40:37)

Не в сети

#3 20.04.2015 13:56:27

Re: Как реализовать мультиязычный сайт на Laravel 5?

Sarkozi, привет а что у тебя в контроллере написано, какой код? Я че то не понял что прописать в контролере и в роуте, где у тебя написано  //все роуты сайта

Не в сети

#4 20.04.2015 18:23:14

Re: Как реализовать мультиязычный сайт на Laravel 5?

zisma пишет:

Sarkozi, привет а что у тебя в контроллере написано, какой код? Я че то не понял что прописать в контролере и в роуте, где у тебя написано  //все роуты сайта

Привет, ты все роуты свои которые у тебя изначально были загоняешь в группу, которую я описал выше. Таким образом LaravelLocalization будет автоматически добавлять префикс к каждому твоему роуту (т.е. все ссылки станут вида сайт.com/ru/ссылка, сайт.com/en/ссылка)

В контроллере ничего, стандартная выборка из базы, и вывод в шаблон.

Покури маны этого пакета всё станет ясно:
https://github.com/mcamara/laravel-localization

Не в сети

#5 20.04.2015 19:18:59

Re: Как реализовать мультиязычный сайт на Laravel 5?

Sarkozi, хорошо. Я понял у тебя в папке resources, есть папки en и ru. Где лежат переводы для ошибок, кнопок и т.д. Как сделать, что бы при выборе флага, он перевел шаблоны, а не только брал перевод из БД. Вот это, я точно не могу догнать.

Не в сети

#6 05.05.2015 15:38:32

Re: Как реализовать мультиязычный сайт на Laravel 5?

Не в сети

Подвал раздела