Laravel по-русски

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

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

#1 Re: Laravel 4 » Как рациональнее реализовать мультиязычный сайт на Laravel? » 02.09.2014 01:28:01

Спасибо за вариант.

Я размышлял, читал, и тут вдруг наткнулся на чудесный туториал.

Все-таки дополнительные поля в таблице с префиксами языка - field_en, field_fr итп

Затем добавляем методы в Модель:

public function getTitleAttribute()
{
    $locale = App::getLocale();
    $column = "title_" . $locale;
    return $this->{$column};
}
public function getContentAttribute()
{
    $locale = App::getLocale();
    $column = "content_" . $locale;
    return $this->{$column};
}

Тогда в шаблоне можно пользоваться переменными вот так:

<h1>
    {{ $post->title }}
</h1>
<p>
    {{ $post->content }}
</p>

Ну а для фраз, к-рые касаются только представлений (и не хранятся в БД) есть методы trans() или Lang::get(..)

Если добавится язык - то придется добавить поля в таблицы, да, но это не так страшно, как дублирование кода и излишняя проверочная логика. Как тебе такое решение?

PS вот туториал https://medium.com/laravel-4/laravel-4- … cdc75e4810

#2 Laravel 4 » Как рациональнее реализовать мультиязычный сайт на Laravel? » 26.08.2014 03:27:55

dimka
Ответов: 2

Заказчик хочет магазин с небольшим оборотом товаров + блог. Админка будет на одном, дефолтном языке, но весь контент (название/описание товаров, статьи блога, ну кроме комментов, наверное) должен быть на 3-х языках.

Допустим, маршруты по контенту имеют вид */{lang?}, а контроллер использует переменную $lang, чтобы делать подходящую выборку из базы.

Как лучше - дублировать поля в таблицах (content_ru, content_en ит.п) для каждой модели или же иметь отдельные таблицы и может даже отдельные модели для каждого языка (posts_ru, posts_en)? Чутье подсказывает, что первый вариант явно лучше, но может вообще есть какое-то решение по-умнее, ведь в первом варианте все равно попахивает дублированием кода.

Шаблоны представления: всякие фразы для кнопок типа "Купить" хранить в отдельном классе и
прописывать типа {{ Words::buy($lang) }} Есть еще рациональные варианты?

Да, и это важно, добавление языков на сайт не планируется.

PS. Знаю, про мультиязычность часто спрашивают, но я хочу об этом поговорить тоже :-)

#3 Re: Laravel 4 » Mcrypt PHP extension required » 26.08.2014 00:07:43

Заработало. Надо было внести строку extension=mcrypt.so в php.ini

#4 Laravel 4 » Mcrypt PHP extension required » 25.08.2014 23:44:43

dimka
Ответов: 1

Ubuntu, поставил LAMPP

1) php -m показывает, что mcrypt есть
2) phpinfo() показывает, что mcrypt есть
(по крайне мере в выводе есть такая строчка: mcrypt Sascha Schumann, Derick Rethans)

запускаю новый свежеустановленный (и он бы НЕ установился компоузером без mcrypt) ларавеловский проект пишет - Mcrypt PHP extension required.

Есть идеи?

Есть подозрение, что lampp запускает не тот пхп, который с mcrypt. Как заставить использовать именно тот? Где-то в настройках апаче?

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