Error Code 1366 of Mysql при записи переводов в базу tmgmt_deepl

Типично ошибка 1366 связана с тем, что кто то пытается записать символы с кодами не соответствующими кодовой таблице символов, установленной для таблицы в базе данных. Но в нашем случае речь идет о иной проблеме.

Drupal использует utf8mb4 для текстовых пользовательских данных. И если вы ничего не меняли вручную, то скорее всего у вас именно такая кодировка.

При использовании tmgmt_deepl данная ошибка может возникать в ряде случаев. У меня это произошло при переводе текста на турецкий язык. Особенность турецкого и ряда других языков заключается в том, что знак процентов ставится до числа.

Например, в европейских языках вы встретите — 25%, а в турецком это будет записано как %25.

Модуль tmgmt_deepl получает переводы с сервера и применяет к ним пост обработку функцией rawurldecode, для которой подобные комбинации в символом % являются целевыми. Так могут появиться символы, которые не соответствуют разрешенным в кодировке.

Я написал небольшой патч, убирающий эту функцию из постобработчика.

Не стал его публиковать на drupal.org, т.к. наверняка у разработчиков были какие то причины на использование здесь rawurldecode.

Мало букафф? Читайте есчо !

Drupal 9 за БН amazon cloudfront

Октябрь 12, 2021 г.

Типичная проблема сайта, когда тот оказывается за балансировщиком нагрузки (load balancer), это несоответствие части заголовков запроса клиента и тех заголовков, которые передаются балансировщиком серверу. Чаще всего мы сталкиваемся с этим при запуске ...

Читать

Установим контекстные фильтры в drupal views программно

Август 30, 2021 г.

Пример кода как рендерить блок views с программной установкой contextual filters. Контекстные фильтры устанавливаются методом ViewExecutable::setArguments(array $ARGS). В примере я передаю пару аргументов в качестве значений контекстных фильтров. ...

Читать

Theme image в Drupal 9

Август 3, 2021 г.

Смотрим как выполнить рендеринг файла-картинки в Drupal 9 программно. Есть FID, и требуется рендерить этот файл программно в шаблоне <IMG>. Для этого нам понадобится воспользоваться сервисом ядра - renderer. [crayon-69b68f1342bed002113728/] ...

Читать

Создаём программно url alias в Drupal 9

Август 28, 2021 г.

Сниппет кода, демонстрирующий как alias создаётся в Drupal 9. Ранее (в 8й версии) это был сервис ядра path.alias_storage, и код выглядел так: [crayon-69b68f1342d59178094395/] В 9й версии хранилище перенесли в entityTypeManager и потому выглядит ...

Читать
 

Комментарии к «Error Code 1366 of Mysql при записи переводов в базу tmgmt_deepl»

Понравилась статья? Есть вопросы? - пишите в комментариях.



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