We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 31675
    • 5 Posts
    У меня есть чанк с разметкой формы обратной связи.
    Как для разных веток (языков) сайта использовать различные переводы label
    Например в русском языке "Ваше имя"
    на английском "Your name"
      • 6623
      • 127 Posts
      Метод "в лоб":
      chank_ru
      chank_en
      chank_kz ...
      [Ditto? &tpl=`chank_(yams_id)`]
      P.S. это если для локализации используется YAMS, но сам вариант есть нечто универсальное...
        • 31675
        • 5 Posts
        Ну это же не по прагиммистски.

        Дублировать код.
          • 16545
          • 358 Posts
          Копайте в сторону YAMS, на сегодняшний день, самое работоспособное средство для мультиязычности.
            • 31675
            • 5 Posts
            Поступил проще

            Создал два снипета

            getTranslate
            (&snip=Снипет;string;getTranslate &language=Язык;string;russian &word=Слово;string;)
            <?php
            global $_lang;
            if(file_exists("assets/snippets/$snip/lang/$language.inc.php")){
                include_once("assets/snippets/$snip/lang/$language.inc.php");
            }
            return $_lang[$word];
            ?>
            


            Второй
            getCurrentLanguage
            (&format=Get Format;string;0)
            <?php
            $cid = $modx->documentIdentifier;
            $parents_array = $modx->getParentIds($cid);
            if (is_array($parents_array))
            {
                $parent = $modx->getDocument(array_pop($parents_array));
            }
            
            if ($format == 0)
            {
                return $parent['longtitle'];
            }
            else {
                return $parent['alias'];
            }
            ?>


            Если надо какие-то данные менять в зависимости от текущего языка.
            Вставляю в чанке [!getTranslate? &language=[[getCurrentLanguage]] &snip=`feedback` &word=`feedback_fio`!]

            &snip - это название папки снипета который юзает текущий чанк
            &word - ключ массива

            include_once("assets/snippets/$snip/lang/$language.inc.php");
            заносит в global $_lang порцию набора
            <?php
            /**
            * Russian language file for feedback
            */
            $_lang["feedback_fio"] = "Ваше имя и фамилия";
            $_lang["feedback_email"] = "Адрес электронной почты";
            $_lang["feedback_message"] = "Текст сообщения";
            $_lang["feedback_spam_title"] = "Защита от спама";
            $_lang["feedback_spam_picture"] = "Код на картинке";
            $_lang["feedback_send"] = "Отправить";
            $_lang["feedback_thanks"] = "Сообщение отправлено, ответ будет выслан по указанному вами адресу.";
            ?>
            



              • 6623
              • 127 Posts
              Quote from: viv81ster at Apr 16, 2010, 01:45 AM

              Ну это же не по прагиммистски.

              Дублировать код.
              а использовать цмс/цмф это прям призвание программистов... Да и не код вы дублируете, а разметку.
              Ваш конечный результат очень убогий, так как заставляет пользователя/контент-менеджера писать файлы, в случае необходимости добавления очередного языка...