Появилась необходимость создать один сайт с несколькими языками, чтобы url'ы выглядели следующим образом (желательно без всяких '?' и '&'):
http://site.ru/en/
http://site.ru/ru/
http://site.ru/de/
Пользователи одни на всех, меню на разных языках (видимо создается отдельно каждое), контент тоже создается раздельно и должен быть привязан к выбранному языку, конечно же.
Сам контент будет примерно такой:
- Объект 1
-- Производитель 1
-- Производитель 2
- Объект 2
-- Производитель 1
-- Производитель 3
И уже при выборе в меню производителя - должен показываться список его продукции.
И если со вторым примерно понятно как реализовать (таксономия, словари), то как лучше всего в данном случае сделать первое? Идея с мультисайтингом не очень вдохновляет.
Комментарии
Ниасилил что тут первое, а что второе) Первое - мультиязычность, а второе - каталог?
По правильному видимо надо использовать модуль i18n...
Я сделал проще, пока мне этого достаточно. Сделал так: сайт один, для каждого языка отдельная тема, для каждого языка отдельное меню, все англоязычные ноды имеют адрес вида /en/* (с другими языками аналогично). И самое важное: модуль taxonomy_theme. С помощью него настраиваю, чтобы все страницы с адресами вида /en/* отображались в англоязычной теме, страницы /ru/* в русскоязыной теме и т.д. Блоки для каждой темы тоже отдельно настроить надо (для каждой темы своё меню).
Плюс модуль-мини-хак для переключения локали в зависимости от пути:
<?php
function my_i18n_menu($may_cache) {
$offset = (variable_get('clean_url', 0) ? 0 : 3) + strlen(base_path());
$uri = substr(request_uri(), $offset);
if ($uri == 'en' || substr($uri, 0, 3) == 'en/') {
$GLOBALS['locale'] = 'en';
}
}
?>
В моем случае этот модуль помог только с отображением ссылки "home" в breadcrumb.
Свои блоки, свои темы, своё меню. коды дополнительные.
не проще ли 3 субдомены сделать и 3 сайта на связку в мультисайтинге повесить?
Вопрос дюже идеологический...
Но если сайт делается с нуля и есть время поразбираться с i18n, то думаю лучше его и юзать)
На 3 сайтах опять же надо настраивать меню, темы, блоки, юзеров и роли, прочие настойки типа настроек кэша, журнала, модули включать/настраивать.
А если на основном сайте были настроены типы в CCK, шаблоны для них, то придется и их переносить. Гемора еще больше.
Я вообще сначала и сделал домен и отдельный сайт на одной инсталляции друпала, но потом меня обрадовали, что еще будет языков 5+ и меня напрягла мысль держать 7+ сайтов и каждый настраивать)
Сохраняется база нового сайта. Копируется в новую базу. Все настройки есть. Поправляем язык, сами ноды и патавто. всё. работы абсолютно не больше, чем все другие варианты, а то и меньше. Юзеры и роли по любому общие, а так же их профили. Результат - на лицо
Так не пойдет, потому что каждую настройку потом придется менять 3 раза, и потом еще каждую перепроверять, не пропустил ли какую.
Какие настройки придётся поменять, которые по любому менять надо при любом варианте? может список составим в каком варианте меньше менять, в каком больше?
5+ сайтов не катит... Нужно добавить поле в CCK (например, URL источника для новости) — придется добавлять в 5+ сайтов это поле. Обнаружилось, что время жизни кэша надо меньше ставить - опять по 5+ сайтам лазить. Решил поставить модули какой-нибудь (статистика, например) - опять везде его настраивать отдельно.
ЗЫ: Надеюсь в 6.х будет проще решать такие задачки..
Ок. заказчик решил, что должны показываться последние материалы. 5 штук. в блоке. Ходит англичанин и немец, что кому показывается?
Категория "язык" для всех материалов и разные блоки для разных тем. Или один хитрый блок. Новости я уже так делал (клонировал view и указал другой термин). Как в i18n это делается хз, тоже наверное есть нормальные варианты.
Есть более сложный "контропример": если надо поиск... Тоже решаемо при желании.
У меня двуязычный сайт. поставил i18n. Всё работает тьфу-тьфу. Грамотный модуль.
покажи пожалуйста. хочу грамотный и18н сайт посмотреть. без субдомен.
а что за мучения? Чтобы не поставить модуль localizer или его предшественник i18 - я с ним разбирался недавно, там всё это из коробки, а то и покруче - например, как тут - вообще изменений нет в адресах. Но это в настройках ставится, можно поставить и так, как описано. Несколько нелогично там как-то правда сделано, но привыкнуть можно.
Хорошее решение с использованием модуля taxonomy_theme.
Но как сделать что-бы смена темы производилась при выборе языка на основе модуля i18?
я решил писать свой модуль.