понедельник, 14 июня 2010 г.

twiki 5 и русский язык в TinyMCEPlugin

Есть такая корпоративная Wiki для Enterprise сегмента, TWiki (а так же ее форк FosWiki). Очень мощное решение, изначально написанное для корпоративного использования.
Единственное, что я в ней никогда не любила, так это то, что она написана на Perl, который я не знаю.

Кто-то, конечно, использует и MediaWiki (которая и мне сама по себе гораздо больше нравиться) и другие Wiki вроде Maco, а так же проприетарные и платные Wiki, но все-таки для Enterprise сегмента мощный ACL + LDAP must have, а с этим, особенно с первым, у MediaWiki не так хорошо.

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

Вот и сегодня, когда ставили 5.0 заказчику, всплыла проблема с кирилицей в плагине TinyMCE

Cannot decode string with wide characters at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/Encode.pm line 173., referer: http://wiki.домен.tld/bin/edit/Web_заказчика/WebHome?t=1276519484

Нужно сказать, что в нашей инсталляции, еще четвертой ветки, этой проблемы не было.

Вот патч, который написала на скорую руку, для файла lib/TWiki/Plugins/WysiwygPlugin/HTML2TML.pm

--- lib/TWiki/Plugins/WysiwygPlugin/HTML2TML.pm /root/HTML2TML.pm 2010-06-14 16:55:29.000000000 +0400
+++ /root/HTML2TML.pm 2010-06-14 17:00:46.000000000 +0400
@@ -109,9 +109,11 @@

# If the text is UTF8-encoded we have to decode it first, otherwise
# the HTML parser will barf.
- if (WC::encoding() =~ /^utf-?8/) {
- $text = Encode::decode_utf8($text);
- }
+
+ if (utf8::valid($text)) {
+ utf8::decode($text);
+ }
+

# get rid of nasties
$text =~ s/\r//g;
@@ -126,9 +128,12 @@
$text = $this->{stackTop}->rootGenerate( $opts );

# If the site charset is UTF8, we need to recode
- if (WC::encoding() =~ /^utf-?8/) {
$text = Encode::encode_utf8($text);
- }
+
+ if (utf8::valid($text)) {
+ utf8::decode($text);
+ }
+

# Convert (safe) named entities back to the
# site charset. Numeric entities are mapped straight to the

Не забудьте поставить в configure скрипте

Localisation -

{UserInterfaceInternationalisation} - галочку

{Languages}{ru}{Enabled} - галочку

{DefaultDateFormat} - день-месяц-год

{UseLocale} - галочку

{Site}{Locale} - ru_RU.UTF-8

{Site}{CharSet} - UTF-8


Все это ставится на CentOS 5, никаких CPAN-модулей, разрушающих пакетную структуру системы. Советую вот этот официальный ман

Все прекрасно ставится и работает из RPM(CPAN-модули из RPM) с русским языком :)

5 комментариев:

Анонимный комментирует...

офф конечно, но есть ли какой нибудь джаббер куда можно написать?

sHaggY_caT комментирует...

Привет. Очень рада тебя видеть :)

Насчет Жаббера, когда над тобой начальство(то есть, конечно, Ира и Дима по этому поводу никогда не шипели, за что им спасибо, но все равно), себя проще ограничивать во флейме на форумах, в жабберах, и т д, а если его над тобой нет, это может стать проблемой :(

Для клиентов у нас саппорт только по телефону и через хэлпдеск систему.

В общем, я сама себя административными мерами ограничила на использование jabber'а только на выходных, и то не на каждых.

Пиши на info [at] shaggy-cat [dot] ru, договоримся, созвониться или в жаббере когда пообщаться, хорошо?

Vladimir Korotenko комментирует...

Линукс вай, корпоративного уровня продукт. В котором ЗАЯВЛЕНА поддержка кирилицы, нуждается в допиливании.

sHaggY_caT комментирует...

Не в Linux, а в Twiki.

Под IIS + Perl будет не меньше, если не больше проблем. С русским в twiki все действительно не идеально.

zidi root комментирует...

sHaggY_caT немного я не в тему, но признаюсь: впервые вижу девушку-юниксоида и я в восторге. Буду по возможности следить за твоими телодвижениями ;-)