Мёртвый Babel и глючащий испанский контекст.

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

Первая. Не запускается Babel. Вообще никак. В админке не появляются кнопки для связывания переводов, и BabelLinks ничего не выводит. Переставлял несколько раз — глухо. Версия Revo 2.2.9 досталась.

Вторая проблема. При выводе документа из испанского контекста происходит непонятный расколбас содержимого (и в хроме и в фф и в опере). Инструментарий хрома показывает, что в head попали только 3 последних линка, а все остальные метатеги, скрипты и прочее отображаются в body. При том, что при просмотре полного кода страницы всё на своих местах. При этом визуально код страницы испанского и английского контекста не отличается. И если скопировать этот код в пустой файл а потом его запустить то всё отображается нормально. И что ещё веселее, при смене cultureKey контекста с «es» на «pt» (португальский) или даже финнский, расколбас исчезает.
Отсюда вопрос — шо это за фигня такая и чем может грозить использование неверного cultureKey? Даты идут в цифровом формате, так что в переводе не нуждаются.
Со вчерашнего дня экспериментирую и не вылезаю из гугла, выхлоп нулевой…
Сайт — www.us-trans.ru
Илья Никитин
04 февраля 2014, 22:47
modx.pro
2 357
0

Комментарии: 22

Илья Никитин
05 февраля 2014, 16:40
0
Обновился до 2.2.11 и Babel заработал! Ещё зафигачил все таблички в базе в utf8 (<сарказм>большое спасибо предыдущему разработчику за cp1254<.сарказм>) и теперь умляуты нормально сохраняются.

Однако вторую проблему эти действия не решили и мне совершенно непонятно где, как и куда копать.
    Aртур Чикин
    05 февраля 2014, 17:07
    0
    Чекай базу данных на правильную кодировку. И права доступа к файлам.
      Илья Никитин
      05 февраля 2014, 19:13
      0
      В базе вроде всё нормально теперь — везде utf-8 да general_ci. Но проблемы с расфигачиванием вёрстки при cultureKey=es это не решило :( Самое поганое, что даже при cultureKey=pt всё работает нормально. Вот в чём, скажите мне, принципиальная разница испанского и португальского? Загадка…
        Aртур Чикин
        05 февраля 2014, 19:19
        0
        Где то посмотреть на это можно?)
          Илья Никитин
          05 февраля 2014, 20:41
          0
          Если на расколбас, то вот — www.us-trans.ru/?lang=es. Буду признателен.
            Aртур Чикин
            05 февраля 2014, 21:01
            0
            У тебя шаблоны разные я так понимаю для разных языков?

            Я скачал оба шаблона в 2 текстовых файла. И я сравнил их программой WinMerge и он говорит что у es Половина символов в шаблоне разной кодировки. Отсюда и проблемы.
              Илья Никитин
              05 февраля 2014, 21:10
              0
              Планируются разные, пока просто копии, но это роли не имеет и значения не играет, как я выяснил. Сейчас, например подключил шаблон для русской главной — глянь что выходит.
                Aртур Чикин
                05 февраля 2014, 21:11
                0


                У тебя шаблоны в разной кодировке, видать парсер MODx не может понять что это за кодировка и выкидывает эти символы из обработки (не уверен). Даже в текстовом редакторе видно аж шрифт отличается.

                P.S Кодировку то ты изменил, а вот битые символы остались.
                P.P.S Верстка ползет потому что браузер думает что не указан DOCTYPE.
                  Илья Никитин
                  05 февраля 2014, 22:30
                  0
                  Ух ты, прикольно! Спасибо за наводку на WinMerge.
                  Сохранил сейчас в хроме оба варианта главной как «страницу целиком» о потом заглянул унутырь — в испанском варианте нет доктайпа вообще. Куда он девается и почему это может происходить? Ведь используется один и тот же шаблон… Я этот доктайп вручную перебил — ноль эффекта.
                    Aртур Чикин
                    05 февраля 2014, 22:41
                    +1
                    У тебя шаблон состоит из разных кодировок.
                    В нормальном шаблоне строка с доктайпом на utf-8 а в проблемном Я думаю тоже utf-8 Но С BOM! То есть это 4 дополнительных символа в начале. Отсюда доктайп в исходном коде есть view-source:http://www.us-trans.ru/?lang=es Но вот браузер его не понимает и рендрит страницу без доктайпа.



                    Отключи текстовый редактор (или открой шаблон в быстром редактировании) и перепиши проблемный кусок, и сохранись. Если не выйдет то скорее придется залезть в бд и там исправить.
                      Илья Никитин
                      05 февраля 2014, 22:55
                      0
                      Редакторы все давно отключены. А вот что лежит в таблице шаблонов
                      Aртур Чикин
                      05 февраля 2014, 23:00
                      0
                      Попробуй очистить поле content у проблемного шаблона из БД и собрать его заного? Или прямо в БД заменить начало шаблонов.

                      Ты где Админер скачивал? А то я брал с сорсфореджа а он у меня без шрифтов и js работал:( А у тебя смотрю нормально как надо) Может поделишься?))
                      Илья Никитин
                      05 февраля 2014, 23:56
                      0
                      Создал новый шаблон
                      <!DOCTYPE html>
                      <html>
                      	<head>
                      	<meta charset="utf-8" />
                      	</head>
                      	<body>
                      	Тест
                      	</body>
                      </html>
                      Доктайп пока на месте. Придётся поэтапно выискиваь злодея…
                      И опять же, не даёт покоя мысль — почему при смене cultureKey на португальский эта фигня пропадает… Я в недоумении, короче. ))

                      Ещё вариант — развернуть этот сайт на другом хостинге и там посмотреть что будет там…

                      Я тож оттуда качал. 4.0.3 версия — yadi.sk/d/sw8LbEc_HPUbR
                      Илья Никитин
                      06 февраля 2014, 03:34
                      0
                      Вычислил я где собака зарыта, однако причины для меня остаются загадкой. В оригинале, в head есть следующие строчки
                      <title>[[*seo-title:is=``:then=`[[*pagetitle]]`:else=`[[*seo-title]]`]]</title>
                      <meta name="keywords" content="[[*seo-keywords]]" />
                      <meta name="description" content="[[*seo-description]]" />
                      В этом варианте пропадает доктайп с соответствующими последствиями. Однако если убрать две ТВшки, вот так
                      <title>[[*pagetitle]]</title>
                      <meta name="keywords" content="" />
                      <meta name="description" content="[[*seo-description]]" />
                      то всё работает. *seo-title и *seo-keywords имеют тип ввода Текст, а *seo-description — Текстовая область. Это единственное их различие. Однако замена типа у первых двух ничего не дала. Они продолжают всё портить, даже если эти поля в ресурсе пустые. Видимо на этом придётся остановиться. Я думаю испанцы переживут отсутствие ключевиков, которые всё равно поисковиками давно игнорятся…
                      Спасибо за помощь по поддержку!
                      Василий Наумкин
                      06 февраля 2014, 06:30
                      0
                      1. Фильтр лучше переделать:
                      <title>[[*seo-title:default=`[[*pagetitle]]`]]</title>
                      2. Содержимое тегов можно попробовать «обезопасить»:
                      <meta name="keywords" content="[[*seo-keywords:striptags:escape]]" />
                      <meta name="description" content="[[*seo-description:striptags:escape]]" />
                      Илья Никитин
                      06 февраля 2014, 12:26
                      0
                      Так конечно же красивее и правильнее. Но результат, к сожалению, прежний. Какая-то необъяснимая идиосинкразия у испанского контекста к этим двум полям…
                      Василий Наумкин
                      06 февраля 2014, 12:48
                      0
                      Беда.
                      Илья Никитин
                      06 февраля 2014, 13:03
                      0
                      Отож.
                      Aртур Чикин
                      06 февраля 2014, 14:15
                      0
                      Ну так ты по цепочке следуй?) Теперь лезь в таблицу переменных шаблона и смотри все ли строки в нужной кодировке отдаются.
                      Илья Никитин
                      06 февраля 2014, 15:07
                      -1
                      Проблема в том, что эти поля пустые и, соответсвенно, значения в базе у них отсутствуют — нет записей вообще и смотреть не на что. :(
                      Aртур Чикин
                      06 февраля 2014, 16:46
                      0
                      А вдруг там пробел стоит в 1251 кодировке? и все ломает? Я тебе говорю что нужно по цепочке искать битые символы.
                      Попробуй сделать дамп базы данных в sql файл, потом открыть его через notepad++ и посмотри в какой он кодировке, потом преобразуй ее в utf-8 принудительно и залей обратно.

                      Я уверен что проблема исчезнет.
                      Илья Никитин
                      06 февраля 2014, 19:04
                      0
                      Сконвертировал, но… нет, не исчезает. Да и негде там пробелу взяться — в базе нет соответствующих записей для этих страниц. Не то, что там содержимое пустое, а их просто нет. Совсем. Вписывал в эти ТВшки в ресурсе слово на испанском (матерное), записи в таблице появляются, результат всё тот же — расколбас…
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
22