We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 33303
    • 31 Posts
    Хочу затронуть эту тему. Конечно, она наверное уже неоднократно обсуждалась, но к сожалению, решения, так и не нашел sad Помогите, пожалуйста, разобраться.

    Насколько я понял есть два способа решения:
    1. Делать под каждый язык свой сайт.
    Хоть это и проще, но всеже не выход бегать по разным админкам.

    2. Метод описанный в Wiki.
    Но он на английском. Если первая часть понятна, более-менее, то со второй как-то всё смутно получается.

    Я идиот, конечно, но понял от туда только две вещи. Остальное сумбур. sad
    1. Создаем сначала сниппет "Redirect".
    <?php
    $url = $modx->makeUrl($id);
    ob_end_clean(); // this will end the output buffer and discard silently what ever was in it
    header(’Location: ’.$url);
    ?>

    2. Создаем сниппет "Languages".
    <?php
    // get languages info
    $tv = $modx->getTemplateVar(’languages’, "", $modx->documentIdentifier);
    $languages = $tv[’value’];

    if (!strlen($languages))
    {
    return "";
    }

    $langnames = array(
    "en" => "English",
    "de" => "Deutsch"
    );

    $output = "";

    // get entries in languages list
    $entries = explode(",", $languages);
    // loop through language entries
    for ($e = 0; $e < count($entries); $e++)
    {
    // seperate into lang code and target document id
    list($lang, $targetid) = explode("=", $entries[$e]);
    $image = ’<img src="assets/images/’.$lang.’.gif" width="16" height="11" border="0" alt="’.$langnames[$lang].’" />’;
    if (strlen($output))
    {
    $output .= ’ ’;
    }
    $output .= ’<a href="’.$modx->makeUrl($targetid).’">’.$image.’</a>’;
    }

    return $output;
    ?>

    3. Создаем TV, называем "languages". С типом "text".

    А дальше, что куда?... huh

    • Тема действительно наболевшая. Но как увидите, нормального решения, к сожалению, пока не найдено.

      Вариант 1: Вы планируете создать НЕ очень большой сайт по объему, ну например - до 50 документов на каждый язык, 2-3 языка, то наиболее простым, быстрым и удобным способом будет простое дублирование дерева документов на одной установке CMS.

      Вариант 2: Планируется сравнительно большой сайт по количеству документов, например, более 70 на один язык, и/или более 3 языков.
      В данном случае я бы посоветовал создавать языковые версии на поддоменах с отдельными инсталляциями (увы).

      Вариант 3: Независимо от количества информации, все-же принимается решение впихнуть все данные в одну CMS и сделать удобные возможности по управлению всем объемом из единого места.

      И тогда начинается ерунда типа той, о которой Вы написали. Имею ввиду попытки создать возможности мультиязычности в системе, которая такие возможности изначально не имеет. К сожалению это длительный, геморройный и зачастую провальный проект.

      С другой стороны, если есть желание - сделать можно все, тем более, что в наших руках не CMS, а CMF (content management framework).
      И если Вы все-таки решили идти этим путем, то заранее советую изучить опыт других мультиязычных CMS, например, тот же Drupal, хотя по моему субъективному мнению в нем тоже не идеальная ситуация с мультиязычностью. Далее будет необходимо серьезно разобраться в MODx, чтобы четко представлять архитектуру этой системы управления. И уже после этого - творить smiley. В прямом смысле этого слова.

      P.S.: Есть еще один момент - в новой версии MODx планируются очень значительные перемены, в том числе в плане мультиязычности. Знаю лично от разработчиков. Правда, я пока плохо могу представить по описанию, как это будет работать, но хочется надеяться, что все будет круто.
        Разработка сайтов и программных модулей на MODX.
        Опыт работы на MODx с 2005 года. Высокое качество.
        Компания Baltic Design Colors: http://www.bdcolors.ru.
        • 33303
        • 31 Posts
        Quote from: Igor at Jun 12, 2008, 07:07 PM

        Тема действительно наболевшая. Но как увидите, нормального решения, к сожалению, пока не найдено.

        Спасибо, Игорь за ответ.
        Теперь более менее понятная ситуация. Конечно, в руках программиста все проще, но для большинства балбесов как - я, нужны простые возможности для реализации. Жаль, что большество описаний MODx написанны не пошагово, а на своем языке, который нужно долго вкуривать. Но хочется похвалить MODx, так как более понятной админки, как для рядового пользователя и для создания шаблонов, ещё не видел. Про Друпал все же проблематично будет рассказывать, например, клиенту, как и что обновлять, а в этой системе - все предельно понятно.

        Что ж сайт планируется небольшой 10-20 стр. и похоже лучшего (простого) варианта, чем делать с отдельными инсталляциями, все ещё нет. Тем более, если делать разные деревья для языков (например ru, en) возникают проблемы с менюшками, подменюшками и breadcrumbs. sad
          • 2495
          • 30 Posts
          Да, тема и вправду достаточно необходимая. Дополню описанные варианты возможностью поиграться с выводом содержания через TV, которые для каждого документа заполняются для всех имеющихся языков и выводятся в зависимости от какого-нибудь явления, например, наличия в урле lang=ru/en/ua и проч... Но это уже для взрыва мозга. smiley
          Quote from: z211 at Jun 13, 2008, 08:25 AM

          Что ж сайт планируется небольшой 10-20 стр. и похоже лучшего (простого) варианта, чем делать с отдельными инсталляциями, все ещё нет. Тем более, если делать разные деревья для языков (например ru, en) возникают проблемы с менюшками, подменюшками и breadcrumbs. sad
          Ну, первые основные действия вы сделали, осталась рутина. А именно, создаёте дерево для основной локализании, копируете и переименовываете (ну, и контекстик свой, а так же шаблончик с другим языком, еси не охота заморачиваться с кодингом в одном шаблоне), а затем смотрите в документы: там ваша ТиВишка для выбора языка, там вся и магия. Допустим, у вас 2 языка: ру и ен. Так вот, для того, чтобы у вас в шаблоне была ссылочка на документ, который дублирует данный в другом языке, в этом документе в строке TV с называем "languages" пишите строчку "en=23", где en - другой язык, а 23 - страничка, содержащий контент данной страницы на языке, указанном выше, то есть в en... Сумбурненько, но, надеюсь, хоть что-то помгу этим прояснить.
          А так, на будущее, загоняйте MODx’овскую вику в гугль транслейт и читайте всё на русском, коль с английским не очень - написно там достаточно понятно для робо-переводчика, а узкие моменты должны пойти по-наитию...
          Желаю успехов.
            • 33303
            • 31 Posts
            Quote from: Avis at Jun 16, 2008, 01:10 PM

            Желаю успехов.

            Спасибо, Авис!
              • 21244
              • 5 Posts
              Здравствуйте. Думаю, большой проблемой не будет помочь решить вопрос, который мне никак не удается осилить.

              Нужна такая мультиязычная структура как на рисунке. Мультиязычность достигается методом дублирования дерева документов.



              Делаю дерево такого вида (в скобках id), «в кавычках название в меню»

              Site (0)
              + ru (1) «по-русски»
              ++ Главная (2) «главная»
              ++ Продукция (3) «продукция»
              ++ Контакты (4) «контакты»
              + en (5) «in english»
              ++Main(6) «main»
              ++ Production (7) «Production»
              ++Contacts(8) «Contacts»

              Создаю два шаблона. В каждом шаблоне два меню, первое одинаковое для выбора языка [!Wayfinder? &startId=`0` &level`1`!] В русском шаблоне меню для выбора страниц [!Wayfinder? &startId=`1`!], а в английском шаблоне [!Wayfinder? &startId=`5`!].

              Но дело в том, что в таком случае при нажатии на «по-русски » выхожу на страницу «ru», а нужно, что бы выходил на страницу «Главная».



              Если же делать вторым вариантом.
              Для выбора языка [!Wayfinder? &startId=`0` &level`1` &textOfLinks=`introtext`!] В русском шаблоне меню для выбора страниц [!Wayfinder? &startId=`1`!], а в английском шаблоне [!Wayfinder? &startId=`4`!].

              Делаю дерево такого вида (в скобках id), «в кавычках название в меню», ‘в одинарных кавычках introtext ’

              Site (0)
              + Главная (1) «главная» ‘по-русски’
              ++ Продукция (2) «продукция»
              ++ Контакты (3) «контакты»
              +Main(4) «main» ‘in english’
              ++ Production (7) «Production»
              ++Contacts(6) «Contacts»

              То в таком случае в основном меню отображается «Продукция » «Контакты», и не отображается «Главная».

              Резюмирующий вопрос: как сделать, что бы при нажатии на «по-русски» из меню выбора языка, и «Главная» из основного меню переход осуществлялся на одну и туже страницу.
                • 1788
                • 1,103 Posts
                1. Произвольный редирект http://modxcms.com/phiRedirect-1537.html
                2. Редирект на первую страницу в папке [[FirstChildRedirect]]
                Любой из способов прописываеш на корневых папках ru и en.
                  • 2097
                  • 1 Posts
                  Мучаюсь с такой же проблемой.... дошел до создания ТВ. Не понял, что там нужно писать... и всё остальное тоже....

                  З.Ы.: Не ругайте сильно, т.к. общаюсь с МОДх впервые, а сайт нужно сделать в минимальные сроки =(
                  З.Ы.Ы.: Прошу по возможности описать всё подробнее...
                    • 25192
                    • 18 Posts
                    я делал так:
                    сначала была укр. версия сайта, далее создаю документ с названием uа, все содержимое переношу в ua, копирую всю ветку ua и переименовую в rus (перевод контента с укр на рус нужно ещё делать), потом пишу снипет, который будет определять где ми сейчас находимся, в ветке ua или rus, также добавил на сайт подобие двух кнопок для переключения ua<->rus с сохранением позиции где находимся.

                    как работает можно посмотреть на http://www.bioclimat.rv.ua (не сочтите за рекламу).

                    ничего более умного как дублировать страницы сайта ничего не придумал.
                      • 15607
                      • 14 Posts
                      Quote from: rmmalc at Aug 08, 2008, 07:03 PM

                      я делал так:
                      сначала была укр. версия сайта, далее создаю документ с названием uа, все содержимое переношу в ua, копирую всю ветку ua и переименовую в rus (перевод контента с укр на рус нужно ещё делать), потом пишу снипет, который будет определять где ми сейчас находимся, в ветке ua или rus, также добавил на сайт подобие двух кнопок для переключения ua<->rus с сохранением позиции где находимся.

                      как работает можно посмотреть на http://www.bioclimat.rv.ua (не сочтите за рекламу).

                      ничего более умного как дублировать страницы сайта ничего не придумал.
                      А можно поподробнее что за сниппет, который определяет где находится посетитель, и кнопки с сохранением позиции на сайте... rolleyes