мультиязычный сайт

Прислано: alexsm

чт, 30/08/2007 - 12:10

Другие статьи по теме:

Появилась необходимость создать один сайт с несколькими языками, чтобы url'ы выглядели следующим образом (желательно без всяких '?' и '&'):
http://site.ru/en/
http://site.ru/ru/
http://site.ru/de/
Пользователи одни на всех, меню на разных языках (видимо создается отдельно каждое), контент тоже создается раздельно и должен быть привязан к выбранному языку, конечно же.

Сам контент будет примерно такой:
- Объект 1
-- Производитель 1
-- Производитель 2
- Объект 2
-- Производитель 1
-- Производитель 3
И уже при выборе в меню производителя - должен показываться список его продукции.

И если со вторым примерно понятно как реализовать (таксономия, словари), то как лучше всего в данном случае сделать первое? Идея с мультисайтингом не очень вдохновляет.

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано edhel в чт, 30/08/2007 - 12:33.

Ниасилил что тут первое, а что второе) Первое - мультиязычность, а второе - каталог?

По правильному видимо надо использовать модуль i18n...

Я сделал проще, пока мне этого достаточно. Сделал так: сайт один, для каждого языка отдельная тема, для каждого языка отдельное меню, все англоязычные ноды имеют адрес вида /en/* (с другими языками аналогично). И самое важное: модуль taxonomy_theme. С помощью него настраиваю, чтобы все страницы с адресами вида /en/* отображались в англоязычной теме, страницы /ru/* в русскоязыной теме и т.д. Блоки для каждой темы тоже отдельно настроить надо (для каждой темы своё меню).

Плюс модуль-мини-хак для переключения локали в зависимости от пути:

<?php

function my_i18n_menu($may_cache) {
    
$offset  = (variable_get('clean_url'0) ? 3) + strlen(base_path());
    
$uri substr(request_uri(), $offset);
    if (
$uri == 'en' || substr($uri03) == 'en/') {
        
$GLOBALS['locale'] = 'en';
    }
}

?>

В моем случае этот модуль помог только с отображением ссылки "home" в breadcrumb.


Опубликовано PVasili в чт, 30/08/2007 - 12:33.

Вопрос дюже идеологический...


Опубликовано edhel в чт, 30/08/2007 - 12:37.

Но если сайт делается с нуля и есть время поразбираться с i18n, то думаю лучше его и юзать)


Опубликовано andron13 в чт, 30/08/2007 - 12:51.

Свои блоки, свои темы, своё меню. коды дополнительные.
не проще ли 3 субдомены сделать и 3 сайта на связку в мультисайтинге повесить?


Опубликовано edhel в чт, 30/08/2007 - 13:11.

На 3 сайтах опять же надо настраивать меню, темы, блоки, юзеров и роли, прочие настойки типа настроек кэша, журнала, модули включать/настраивать.

А если на основном сайте были настроены типы в CCK, шаблоны для них, то придется и их переносить. Гемора еще больше.

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


Опубликовано andron13 в чт, 30/08/2007 - 13:43.

Сохраняется база нового сайта. Копируется в новую базу. Все настройки есть. Поправляем язык, сами ноды и патавто. всё. работы абсолютно не больше, чем все другие варианты, а то и меньше. Юзеры и роли по любому общие, а так же их профили. Результат - на лицо ;)


Опубликовано ultraboy@drupal.org в чт, 30/08/2007 - 14:00.

Так не пойдет, потому что каждую настройку потом придется менять 3 раза, и потом еще каждую перепроверять, не пропустил ли какую.


Опубликовано andron13 в чт, 30/08/2007 - 14:06.

Какие настройки придётся поменять, которые по любому менять надо при любом варианте? может список составим в каком варианте меньше менять, в каком больше?


Опубликовано edhel в чт, 30/08/2007 - 14:32.

5+ сайтов не катит... Нужно добавить поле в CCK (например, URL источника для новости) — придется добавлять в 5+ сайтов это поле. Обнаружилось, что время жизни кэша надо меньше ставить - опять по 5+ сайтам лазить. Решил поставить модули какой-нибудь (статистика, например) - опять везде его настраивать отдельно.

ЗЫ: Надеюсь в 6.х будет проще решать такие задачки..


Опубликовано andron13 в чт, 30/08/2007 - 14:43.

Ок. заказчик решил, что должны показываться последние материалы. 5 штук. в блоке. Ходит англичанин и немец, что кому показывается?


Опубликовано edhel в чт, 30/08/2007 - 15:15.

Категория "язык" для всех материалов и разные блоки для разных тем. Или один хитрый блок. Новости я уже так делал (клонировал view и указал другой термин). Как в i18n это делается хз, тоже наверное есть нормальные варианты.

Есть более сложный "контропример": если надо поиск... Тоже решаемо при желании.


Опубликовано НовичОК в чт, 30/08/2007 - 18:49.

У меня двуязычный сайт. поставил i18n. Всё работает тьфу-тьфу. Грамотный модуль.


Опубликовано andron13 в чт, 30/08/2007 - 22:40.

покажи пожалуйста. хочу грамотный и18н сайт посмотреть. без субдомен.


Опубликовано jason32 в чт, 30/08/2007 - 23:24.

а что за мучения? Чтобы не поставить модуль localizer или его предшественник i18 - я с ним разбирался недавно, там всё это из коробки, а то и покруче - например, как тут - вообще изменений нет в адресах. Но это в настройках ставится, можно поставить и так, как описано. Несколько нелогично там как-то правда сделано, но привыкнуть можно.


Опубликовано run в пт, 31/08/2007 - 08:41.

Хорошее решение с использованием модуля taxonomy_theme.

Но как сделать что-бы смена темы производилась при выборе языка на основе модуля i18?


Опубликовано Stass в ср, 10/08/2011 - 14:47.

"run" написал(а):

Но как сделать что-бы смена темы производилась при выборе языка на основе модуля i18?

я решил писать свой модуль.


Ссылки партнёров