Laravel по-русски

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

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

#1 13.01.2013 03:05:01

Мультиязычность

Столкнулся с задачей мультиязычности, прошу дать совет и навести на путь истинный как лучше реализовать мультиязычность контента. По интерфейсу все ясно - локализация.

Изменено Dem (13.01.2013 03:05:50)

Не в сети

#2 13.01.2013 10:13:04

Re: Мультиязычность

Раньше уже была тема. Могу только сказать, что довольно давно в ядре Laravel появилась простая поддержка URL вида http://host/root/EN/... — см. опцию languages в application/config.php.

Или ты спрашиваешь про что-то другое?

Не в сети

#3 13.01.2013 23:33:03

Re: Мультиязычность

Это все про интерфейс, по интерфейсу все ясно — локализация. А как реализовать правильно хранение контента в базе под мультиязычность.

Не в сети

#4 14.01.2013 13:41:53

Re: Мультиязычность

  1. А как реализовать правильно хранение контента в базе под мультиязычность.

Это вопрос реализации тобой. Я бы сделал к каждой языкозависимой таблице поле lang типа ENUM или CHAR(2) и повесил бы на него индексы.

Не в сети

#5 14.01.2013 18:32:36

Re: Мультиязычность

спасибо за вариант, сейчас рассматриваю таблицей переводов для каждого контента, даже если нет перевода будет показывать существующий перевод

Изменено Dem (14.01.2013 18:33:03)

Не в сети

#6 14.01.2013 19:37:19

Re: Мультиязычность

Можно держать таблицу с полем lang, строки с null — язык по умолчанию с максимальным охватом всех строк в проекте, а отдельные (возможно незаконченные) строки имеют это поле вида ru, которое используется при отображении статей в этом языке. То есть если lang задан, он перекрывает язык по умолчанию. В скрипте можно выхватывать оба варианта и показывать переведённый, если он есть, если нет — умолчательный:

PHP
$lines Lines::where('lang''='$lang)->or_where_null('lang')->get();
if (
count($lines) > and $lines[1]->lang) {
  
$lines[0] = $lines[1];
}

$translated $line[0];  // переведённая строка или текст в
                         // умолчательном языке, если перевода нет

Не в сети

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