Silverstripe (модуль "Блог"): локализация "Tag cloud" виджета

Метки: , , ,

В текущей версии блог-модуля в Silverstripe CMS не получается отображать набранные по-русски метки в облаке тегов — выводятся крякозябры:Крякозябры в виджете Tag Cloud

Чтобы решить эту задачу, достаточно открыть на редактирование файл "blog\code\widgets\TagCloudWidget.php" и заменить в этой строке:

$theseTags = split(" *, *", strtolower(trim($entry->Tags)));

вызов функции "strtolower" на "mb_strtolower":

$theseTags = split(" *, *", mb_strtolower(trim($entry->Tags)));

Заметьте, что внутренняя кодировка для многобайтовых функций в PHP уже установлена в файле "sapphire\main.php",

if (function_exists('mb_http_output')) {
    mb_http_output('UTF-8');
    mb_internal_encoding('UTF-8');
}

То есть, ещё раз делать это не нужно.

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

[mbstring]
mbstring.func_overload = 2

При чём, на уровне .htaccess это официально не работает (по состоянию на PHP 5.3.8). Раньше работало, но с ошибками, потом от поддержки перегрузки на уровне папок отказались.


21 Август 2011

Комментарии (заморожены на какое-то время)

На этой странице еще нет комментариев.


Интернет реклама