Как правильно организовать мультиязычность?

Добрый вечер господа.

Как создать мультиязычность шаблонов и распределять по

site.com

site.com/eng/

— ясно, а вот как быть с наполнением сайта? Ведь есть несколько способов.


Меня интересует для неограниченного количества языков, т.е. в отдельной таблице мы храним id языка и его название, а при создании, например, текстовой страницы указываем какой lang_id мы добавляем/редактируем. И вот тут столкнулся с вопросами, которые в моей голове не раскладываются по полочкам: языки могут быть как независимой структурой так и зеркальной; галереи — вряд ли будут разные — нужно делать зеркальную.


Может у кого есть рабочие примеры как это всё реализовано? Буду очень благодарен, если покажите как вы создаете мультиязычные сайты, на примере текстовых страниц.
  • Вопрос задан
  • 5397 просмотров
Пригласить эксперта
Ответы на вопрос 2
Stdit
@Stdit
Галереи тоже вполне могут содержать язык, особенно если изображения содержат текст. Если у какой-то записи не указан язык, устанавливается язык «unknown» или null, который поступает в запросы с другими языками, грубо говоря where lang in ('ru', 'en', 'unknown') или where lang = 'ru' or lang is null. Есть ещё специфическая задача, когда у сущности должно быть несколько языков одновременно, но она сложнее в реализации, особенно на RDBMS. В других БД могут быть расширенные возможности для этого, например в MongoDB запрос всех статей на русском, английском или неопределенном языках в категории 123 будет выглядеть как-то так: find({lang:{$in:['en','ru','unknown']}, category: 123}), при этом исползуется индекс по lang и в выборку попадут как статьи с lang:'en' или lang: 'default', так и например с lang: ['en', 'en-US']
Ответ написан
AlexPres
@AlexPres
site.com
site.com/eng/


Есть всего 4 способа, и этот №3 по крутости =) Хотя если «интересует для неограниченного количества языков», то выбор правильный, только стоит сразу использовать ISO коды, а не кастомные.

Я сделал специальный дефолтный роутер в Zend FW, чтобы всегда работало как у вас — server.com/ru/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы