Форуми / National / Russian / Хочу сайт на 3 языках ! :)

Macik
#41092 19.10.2015 21:24

На счет первого абзаца — сейчас не прокомментирую, т.к. на память не помню. 

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

  1. Движок создавался с прицелом на гибкость и универсальность. Представим у нас портал (или скажем так энциклопедия/сборник документации) где языком не 2-3, а пара десятков. Тогда мы получаем вродебы из логичной идеи «монстра о восьми головах» и со списком полей на 5 листов.
  2. Текущий механизм «ручного» написания шаблонов накладывает жесткие ограничения на возможность расширения количества полей. А если мы пытаемся обойти этот момент программной генерацией (на подобие экстраполей) — мы теряем возможность простого их контроля из шаблона (т.к. там их в реальности нет).
  3. Вывод всех полей всем редакторам контента — геометрически повышает шанс запороть контент (кто-то полез править перевод, и случайно стер или изменил другое поле и привет-пока, концов не найдешь). Вариант который реализован сейчас более правильный — автор перевода имеет доступ только к переводу и источник на редактирование для него не доступен (по умолчанию). 
  4. Опять же есть логика первоисточник-перевод. Если весь фарш сразу на экране, да еще с конентом работают несколько редакторов (пример документация тут на сайте), то отследить соответствие одного другому будет очень сложно. 
  5. В случае, если у нас заметки длиннее пары строк, вариант 2-х колоночного отображения более удобен для перевода материала (не надо листать вверх-вниз постоянно ища в тексте нужную строку).
  6. Не имея главного языка (или, скажем, как-то обозначенной версии, которая считается источником материала) мы попадаем в логическую ловушку, когда не можем выводить материалы списком и правильно сортировать их.
  7. Добавляя поле (колонку) для каждого поля на каждом языке, мы получаем:
    • огромную избыточность, т.к. большая часть ячеек не будут заняты никогда
    • растущие тормоза, т.к. надо будет извлекать строки данных целиком и из нее делать выборки
    • сложность/невозможность строить универсальные запросы к БД

Именно поэтому, сейчас нет универсального решения «сверху». А изменение «снизу», ведет к необходимости сильно пересмотреть и проработать сам механизм. Начиная от задач и сценариев использования i18n, удобства UI и заканчивая способом хранения данных в БД, гибким API для плагинов, учетом перспектив испоьлзования не только «языков» (с «тупой» привязкой к странам), но и локалей. 

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F