On March 26, 2019 we launched new MODX Forums. Please join us at the new MODX Community Forums.
Subscribe: RSS
  • Недавно вышедшая версия MODx 0.9.6.3, как и предыдущие, требует некоторых исправлений для корректной работы с русским языком.

    1. Если при установке выбрать русский язык, то первая страница после установки будет выведена в неверной кодировке. Это, наверное, сразу отпугнет некоторых начинающих пользователей MODx. Для исправления следует всего лишь переименовать в папке install папку russian в russian-UTF8, войти в эту папку и переименовать файл russian.inc.php в russian-UTF8.inc.php. Для начала этого достаточно, но для полной поддержки русского языка рекомендуется внести и другие изменения, описанные ниже.

    2. Скачав прикрепленные файлы, поместить содержимое архива russian-0.9.6.3-manager.zip в папку manager/includes/lang, а содержимое russian-0.9.6.3-install.zip – в install/lang, заменив имеющиеся файлы. В языковых файлах исправлены некоторые ошибки и переведены фразы, не переведенные в оригинальной версии.

    3. Если при установке был выбран русский язык, то административная часть будет на русском, но редактор контента все равно будет использовать английский язык. Это можно изменить в конфигурации системы после установки, но проще заранее внести изменение: в файле install/setup.sql
    заменить
    ('fe_editor_lang','english'),

    на
    ('fe_editor_lang','{MANAGERLANGUAGE}'), 


    4. При описании пользователей в административной части названия стран выводятся на английском языке. Для исправления нужно в папке manager/includes/lang/country файл russian_country-UTF8.inc.php переименовать в russian-UTF8_country.inc.php.

    5. При добавлении ссылок в редакторе Tinymce названия страниц сайта могут выводиться в неверной кодировке (не всегда, зависит от настроек сервера). Есть несколько вариантов исправления проблемы:
    Вариант 1
    В файл assets/plugins/tinymce3201/jscripts/tiny_mce/plugins/advlink/link.html
    добавить в заголовок строку
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    но при этом ошибки появятся в других кодировках, отличных от UTF8.
    Вариант 2
    Можно в файл assets/plugins/tinymce3201/tinymce.linklist.php
    перед строкой:
    $list .=($list!='')?",\n":"\n";

    добавить:
    if ($database_connection_charset == 'utf8' && extension_loaded('mbstring'))
    	$caption = mb_convert_encoding($caption, "CP1251", "UTF-8");

    но при этом проблемы возникнут при использовании UTF8 для других языков.
    Корректное исправление проблемы требует более глубоких изменений.

    6. Хотя все языковые файлы в MODx используют в названиях строчные буквы, исторически сложилось, что файлы для кодировки utf8 и русского языка содержат в названии прописные буквы UTF8. Вместе с тем новая версия AjaxSearch использует единые принципы для всех языков, то есть строчные буквы.
    В принципе правильным было бы исправление названий всех файлов russian-UTF8.inc.php на russian-utf8.inc.php. Это необходимо сделать в папках:
    assets/modules/docmanager/lang
    assets/modules/quick_edit/lang
    assets/plugins/tinymce3201/lang
    assets/snippets/ditto/lang
    assets/snippets/eform/lang
    install/lang/russian-UTF8
    manager/includes/lang

    Также нужно переименовать файл russian-UTF8_country.inc.php в папке manager/includes/lang/country в russian-utf8_country.inc.php. Возможно, есть и другие файлы, названия которых надо исправить.

    Проще, наверное, исправить название одного файла russian-utf8.inc.php на russian-UTF8.inc.php в папке assets/snippets/ajaxSearch/lang.

    После описанных исправлений проблем с русским языком не должно быть, если аккуратно устанавливать систему и правильно настроить хостинг.
      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
      Статьи о MODx, регулярно новые публикации
    • Спасибо за bugfix list
      Пропустили папку country в списке директорий для исправления russian-UTF8.inc.php на russian-utf8.inc.php

      ...install/lang/russian-UTF8
      manager/includes/lang (/country)
      Также нужно переименовать файл...
      А это переименование точно безопасно и ничего за собой не понесёт?

      И как на счет вот этих введений http://modxcms.com/forums/index.php/topic,4422.msg32209.html#msg32209
      Не стоит ли их сюда поместить?
      • Quote from: Vitek at Jan 26, 2009, 02:29 AM

        Пропустили папку country в списке директорий для исправления russian-UTF8.inc.php
        Я не пропустил – в папке country файла russian-UTF8.inc.php нет, а есть файл russian-UTF8_country.inc.php, о необходимости переименования которого написано ниже.

        Quote from: Vitek at Jan 26, 2009, 02:29 AM

        А это переименование точно безопасно и ничего за собой не понесёт?
        Единственная опасность в том, что переименуется не все, что-то будет пропущено. Кроме того, какой-то дополнительный сниппет, устанавливаемый позже, может использовать UTF8 а не utf8.

        Quote from: Vitek at Jan 26, 2009, 02:29 AM

        И как на счет вот этих введений
        Лично я не представляю, как криво должен быть настроен хостинг, чтобы эти исправления потребовались. В подавляющем большинстве случаев достаточно после создания базы данных, но перед установкой, выполнить команду:
        ALTER DATABASE `имя_базы_данных` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
        Также при установке может потребоваться выбор SET NAMES, а не SET CHARACTER SET. Можно допустить, что в природе существуют хостинги, где требуются утомительные исправления, описанные в той теме, но лично я с такими не сталкивался.

        - - - - - - - - - - - - - - -

        Мне интересно, почему russian-0.9.6.3-install.zip скачивают раза в полтора чаще shocked, чем russian-0.9.6.3-manager.zip (223 и 161 соответственно)? Первый файл содержит исправления русского языка для установки, которая выполняется один раз для каждого сайта, и в принципе можно обойтись и неполным переводом. Второй файл содержит исправления перевода для административной части сайта, которая используется постоянно, и где наличие русского языка, на мой взгляд, более важно. То есть я думал, что второй файл должны скачивать намного чаще... rolleyes
          Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
          Статьи о MODx, регулярно новые публикации
        • Вот на агаве регистр имеет значение.
          Движок не видит utf-8 файлы русского языка. Выдаёт ошибки. Видит только UTF-8, т.е. в верхнем регистре.
          Да, и для корректного сопоставления таблиц тоже нужно указывать перед установкой на каждом шагу про utf_general_ci.
          Хотя у них в базе стоит MySQL-кодировка:  UTF-8 Unicode (utf8).
          Какой хостинг используете Вы?
          • Quote from: Vitek at Feb 01, 2009, 03:23 AM

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

            = = = = = = = ==

            Вообще-то команда ALTER DATABASE должна менять параметры базы, и если ввести:
            ALTER DATABASE `имя_базы_данных` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
            то потом создаваемые таблицы должны использовать правильную кодировку. Можно в этом убедиться, введя, например, в phpMyAdmin, команду CREATE TABLE `table` (`text` TEXT) и проверить ее кодировку и сравнение (сопоставление). Если созданная таблица использует неверную кодировку, можно обращаться в техподдержку хостинга с вопросом, почему у них MySQL не работает нормально.
            Если вручную созданная база имеет верную кодировку и сравнение, а созданные MODx – нет, надо копать в MODx, хотя, скорее всего ошибки были допущены пользователем при установке (кстати, utf8_general_ci и utf8_unicode_ci – не одно и то же, хотя кодировка таблицы в обоих случаях utf8).
            Если базы имеют верную кодировку и сравнение, а проблемы с кодировкой остались, надо опять же копать в MODx (сначала попробовав использовать SET NAMES).

            Что за проблема в Агаве я не знаю, и проверить не могу. Если там нельзя установить характеристики базы с помощью команды ALTER DATABASE, это можно считать «криво настроенным хостингом». Конечно, если одна база данных используется многими приложениями с разной кодировкой, менять ее нельзя, но вряд ли такую ситуацию можно считать нормальной.
              Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
              Статьи о MODx, регулярно новые публикации
            • Quote from: Vitek at Feb 01, 2009, 03:23 AM

              Вот на агаве регистр имеет значение.
              Движок не видит utf-8 файлы русского языка. Выдаёт ошибки. Видит только UTF-8, т.е. в верхнем регистре.
              Могу предположить, что названия файлов менялись после установки, когда в конфигурацию системы уже было записано UTF-8. В коде MODx лично я не обнаружил никаких особых фрагментов, связывающих русский язык и прописные буквы UTF.
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
              • Помогите пожалуйста разобраться в проблеме:
                На валуехосте был поставлен и настроен modx 0.9.6.3 При инсталяции я обычно не заморачиваюсь и выбираю английский в качестве языка установки, после чего в настройках панели управления выбираю русский. Так сделал и сейчас. какую кодировку базы данных выбрал точно сказать не могу - просто забыл. Но недавно решил переехать у них же на новый сервер с новым ПО посвежее. Что и сделал. После чего в панели управления весь контент сайта стал писаться крякозяблами вида магазин Посмотрел настройки базы -  MySQL-кодировка: UTF-8 Unicode (utf8)  Сопоставление соединения с MySQL: utf8_unicode_ci В настройках сайта стоит Кодировка: Unicode (UTF8) а Язык системы управления: Russian Если ставить язык системы управления Rissian UTF8 то и интерфейс становиться весь из таких же крякозяблов и с контентом ничего не меняется. В конфиге прописано
                $database_connection_charset = 'utf8';
                $database_connection_method = 'SET CHARACTER SET';
                

                На сайте в заголовке прописано charset=windows-1251 и все отображается нормально. Такая вот чехарда. Есть у кого-нибудь какие то предложения по решению проблемы?

                ПЫСЫ Теперь на сайте тоже крякозяблы. Вернее UTF8 причем даже если в панели управления поставить для сайта cp1251 ничего не меняется sad
                • Quote from: Veosys at Feb 24, 2009, 10:01 AM

                  Помогите пожалуйста разобраться в проблеме:
                  Сложно что-то посоветовать, когда буквально все не так, как надо. В принципе могу сказать только общие слова – сначала необходимо определить, проблема в базе или нет. То есть, если просматривать с помощью phpMyAdmin или экспортировать, все нормально? Если на этом этапе что-то ненормально, то надо разбираться с базой (к MODx это никакого отношения не имеет). Если с базой проблем нет, то надо искать, где MODx портит кодировку. Кодировки указаны в файле конфигурации, в конфигурации системы, меняемой в административной части и в настройках менеджера, вошедшего в систему. Естественно, в зависимости от версии MODx требуется выполнить ряд предварительных работ по внесению изменений в дистрибутив системы (в некоторых версиях это можно и не делать).
                  Если в дистрибутив внесены исправления, с базой проблем нет, конфигурация указана везде правильно, а проблемы остались – вы стали свидетелями чуда (или некорректных настроек хостинга), и описанием его следует поделиться на форуме.
                    Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                    Статьи о MODx, регулярно новые публикации
                  • Спасибо за ответ. В итоге все-все-все было приведено к UTF-8 плюс выполнены все рекомендации из первого поста этого топика, плюс по совету хостера в .htaccess  добавлен кусок:
                    CharsetDisable On
                    AddDefaultCharset UTF-8
                    

                    В итоге удалось убрать крякозяблы отовсюду.

                    Правда остался вопрос по AjaxSearch - почему то не смотря на выбранный в панели управления язык системы Russian UTF-8 снипет использует языковой файл russian.inc.php а не russian-UTF8.inc.php
                    Помогает заменить содержимое russian.inc.php на russian-UTF8.inc.php Но это же не есть правильно?
                    • Здравствуйте!

                      Проблема в следующем . При установке 0.9.6.3 программа сначала выдавала, что сопоставление соединения с MySQL найти не удалось. Тогда я выполнил все инструкции из первого поста. Программа написала, что сопоставление найден, но на финальной стадии написала:

                      File ’c:\mysql\share\charsets\?.conf’ not found (Errcode: 2) Character set ’#51’ is not a compiled character set and is not specified in the ’c:\mysql\share\charsets\Index’ file File ’c:\mysql\share\charsets\?.conf’ not found (Errcode: 2) Character set ’#51’ is not a compiled character set and is not specified in the ’c:\mysql\share\charsets\Index’ file Программа установки сейчас попробует установить базу данных:

                      Создание подключения к базе данных: OK!
                      Выбор базы данных `modx`: OK!
                      Проверка префикса таблиц `modx_`: OK!
                      Создание таблиц базы данных: OK!
                      Установка примера веб-сайта: OK!
                      Запись конфигурационного файла: OK!
                      .........

                      Не понимаю, почему системе до сих пор требуется cp1251?

                      Вопрос такой, надо ли переустанавливать систему или можно где-то в настройках подправить?
                      Спасибо.

                      Сервер IIS.