Мультиязыковый сайт на Yii

saxon

Новичок
Привет.
Я делаю небольшой сайт-визитку.10-15 страниц, 2-3 локализации.
Большая часть внутренних страниц контента могут быть сверстаны с помощью подключенного WYSIWYG редактора (ckedit, tinymce). Это удобно тем, что непосредственно в админке можно выбрать язык и сделать перевод страницы-оригинала.
Но есть такие, в которых есть колонки или более сложные блоки - виджеты.
Эти виджеты можно оформить отдельными компонентами, можно добавить поддержку raw-HTML страниц и подключать шаблоны страниц из файлов. Но тогда редактировать и переводить страницы на другие языки будет неудобно.
Как правильно организовать работу с контентом?
 

saxon

Новичок
спасибо. а можно подробнее?
Yii i18n позволяет, к примеру, автоматически рендерит нужный view по текущей локали. ::t() и т.д.
Но кто и как это будет переводить? Клиент должен иметь возможность сам изменить контент.
С помощью WYSIWYG - легко. юзер создает страницу-оригинал. нажимает кнопку "создать перевод на ХХХ языке" и получает копию контента в редакторе. Тут же по смыслу делает перевод и правит верстку, сохраняет.
А кто и как будет делать перевод вьюшек?
 

fixxxer

К.О.
Партнер клуба
Надо разделять две задачи - перевод страниц сайта, которые вводит юзер, и перевод всяких там сообщений.
Первое - как ты говоришь делай. Для второго стандартно используют gettext.
 

saxon

Новичок
Про сообщения я понимаю, конечно же.
Просто страницы бывают нескольких типов:
1. простые - которые можно создать с помощью WYSIWYG редактора2
2. сложные - содержащие виджеты и более сложную верстку.

Первый тип легко реализуется - для каждого языка юзер правит отдельный текст и верстку с помощью редактора.
Второй вариант сложнее. Юзер как минимум не может сделать сложную верстку. Поэтому есть вручную сверстанная страница с большим количеством вставок текста. как юзеру это переводить в админке?

пока идея такова, что в админке 2 панели перевода:
1. все простые страницы, которые юзер редактирует в редакторе
2. остальные страницы и блоки. эта панель состоит из списка всех элементов (виджеты, блоки, сложные страницы). при выборе элемента отображается список всех его констант в таблице.
Неужели так работают все?!
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Неужели так работают все?!
На самом деле, сайтов, у которых есть одинаковый контент на разных языках — единицы.
У большинства это по факту, разные сайты на одном домене, каждый со своим контентом. Даже у википедии это по сути так, хотя это несомненно лидер в области мультиязычного контента.
(я не про интерфейс говорю, а именно про контент)
 

fixxxer

К.О.
Партнер клуба
saxon
ну вобщем то примерно да :) посмотри админку этого форума (xenforo) например
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
спасибо. а можно подробнее?
Yii i18n позволяет, к примеру, автоматически рендерит нужный view по текущей локали. ::t() и т.д.
Но кто и как это будет переводить? Клиент должен иметь возможность сам изменить контент.
Не все в мире просто. Сделай наборы шаблонов по языкам и пусть по ftp редактирует файлы. Хочет сам - пусть учит html.
С помощью WYSIWYG - легко. юзер создает страницу-оригинал. нажимает кнопку "создать перевод на ХХХ языке" и получает копию контента в редакторе. Тут же по смыслу делает перевод и правит верстку, сохраняет.
А кто и как будет делать перевод вьюшек?
Профессиональный переводчик. Да, это непросто и недешево.
В Yii::t() сделано для совместимости с дешевыми хостингами, оно тупо конвертит из gettext в массив, по сути хрень.

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

saxon

Новичок
На самом деле, сайтов, у которых есть одинаковый контент на разных языках — единицы.
У большинства это по факту, разные сайты на одном домене, каждый со своим контентом. Даже у википедии это по сути так, хотя это несомненно лидер в области мультиязычного контента.
(я не про интерфейс говорю, а именно про контент)
А откуда сведения, что у вики это разные сайты?
И как раз контент на вики там должен быть один и тот же во многих статьях. Иначе теряется смысл - информация должна быть доступна в полном объеме на всех языках, а не кусок на русском, кусок на английском.
Исключением могут быть термины или события, которые специфичны для определенного языка, этноса, в общем группы какой-то, к примеру, "8 марта" и т.д.

ну вобщем то примерно да :) посмотри админку этого форума (xenforo) например
форум - немного другой случай. для _интерфейса_ нормально хранить переводы где-то поглубже и как угодно. А вот контент - дело клиента. Он должен иметь возможность им управлять. При чем удобно, а не в 2-3 разных панелях в различных форматах.

Не все в мире просто. Сделай наборы шаблонов по языкам и пусть по ftp редактирует файлы. Хочет сам - пусть учит html.
Сделай настолько просто, насколько это возможно, но не проще.
К чему это я. Клиент платит за решение. Хорошее решение - довольный клиент - больше денег.
Хорошее решение - это когда все просто и прозрачно. для _клиента_
а когда даже разработчик в шоке, это не уже не так и просто и прозрачно

Профессиональный переводчик. Да, это непросто и недешево.
За пределами пост-советского пространства люди вполне неплохо владеют кроме родного, еще и английским. поэтому как минимум 2 языка можно осилить (а в моем случае так и есть).

Таблицу в базе делать можно, но надо быть готовым к тому, что это дополнительная нагрузка на базу и значительный объем работы для программиста и верстальщщика.
С базой не хочется как-то связываться для отдельных фраз. Больше Yii::t() нравится. Но тогда придется сохранять данные в файл из админки
Кстати, а Yii::t() нормально работает с китайскими символами?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
«С вашего позволения, Ваше Величество, я этих слов не писал...» © Валет Червей
 

baev

‹°°¬•
Команда форума
А откуда сведения, что у вики это разные сайты?
И как раз контент на вики там должен быть один и тот же во многих статьях.
— гм, Вы на википедию заходили, вообще?
 

saxon

Новичок
— гм, Вы на википедию заходили, вообще?
зависимости между языками нет. но есть статистика "устаревания" статьи на одном из языков. т.е. все же какая-то зависимость есть.
версионность, ревью статей.
и я хочу такое - чтобы любой контент был строгого формата. так что вики - плохой пример для универсального решения.
 

Dovg

Продвинутый новичок
Ты хочешь странного. Только в идеальном мире бывает демократия и одинаковый контент для всех языков. Вот представь, умер у вас в компании переводчик на один из языков. Новости перестанете выкладывать?
 

saxon

Новичок
нет. не перестанем. но когда понадобится (или появится возможность) сделать перевод на этот язык, человек возьмет за основу оригинал, в котором есть все, и переведет его. а до этого будет, как в вики, перевод устарел на 43% и т.д.
просто смысл в том, чтобы сохранить связанность переводов. т.е. это должен быть один и тот же текст, только на разных языках.
и принципиально при написании нужно или дополнять смысловое дерево статьи (т.е. контет вне зависимости от языка. по сути план подразделов как в вики), или переводить уже существующее максимально детально.
а так получается, что один написал часть на одном языке, другой написал часть на другом. но только в сумме оно дает полную картину.

мы далеко ушли от темы. вики не решает проблему с переводом кастомных страниц, а просто не нуждается в этом.
и пока нормального решения как-то не видно. т.е. все ручками и в блокнотике
 
Сверху