Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Спасибо за вариант.
Я размышлял, читал, и тут вдруг наткнулся на чудесный туториал.
Все-таки дополнительные поля в таблице с префиксами языка - 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
Заказчик хочет магазин с небольшим оборотом товаров + блог. Админка будет на одном, дефолтном языке, но весь контент (название/описание товаров, статьи блога, ну кроме комментов, наверное) должен быть на 3-х языках.
Допустим, маршруты по контенту имеют вид */{lang?}, а контроллер использует переменную $lang, чтобы делать подходящую выборку из базы.
Как лучше - дублировать поля в таблицах (content_ru, content_en ит.п) для каждой модели или же иметь отдельные таблицы и может даже отдельные модели для каждого языка (posts_ru, posts_en)? Чутье подсказывает, что первый вариант явно лучше, но может вообще есть какое-то решение по-умнее, ведь в первом варианте все равно попахивает дублированием кода.
Шаблоны представления: всякие фразы для кнопок типа "Купить" хранить в отдельном классе и
прописывать типа {{ Words::buy($lang) }} Есть еще рациональные варианты?
Да, и это важно, добавление языков на сайт не планируется.
PS. Знаю, про мультиязычность часто спрашивают, но я хочу об этом поговорить тоже :-)
Заработало. Надо было внести строку extension=mcrypt.so в php.ini
Ubuntu, поставил LAMPP
1) php -m показывает, что mcrypt есть
2) phpinfo() показывает, что mcrypt есть
(по крайне мере в выводе есть такая строчка: mcrypt Sascha Schumann, Derick Rethans)
запускаю новый свежеустановленный (и он бы НЕ установился компоузером без mcrypt) ларавеловский проект пишет - Mcrypt PHP extension required.
Есть идеи?
Есть подозрение, что lampp запускает не тот пхп, который с mcrypt. Как заставить использовать именно тот? Где-то в настройках апаче?