中文電脳/PukiWiki改造覚書

Top / 中文電脳 / PukiWiki改造覚書

PukiWikiは、1.4.7で正式にUTF-8に対応しました。


以下は、PukiWiki1.4.4台湾版(UTF-8)の日本語化、および、電脳瓦崗寨における機能強化に関する覚え書きである。多言語環境でPukiWikiを利用したい方は、導入時の参考にしていただきたい。

中国語が苦手な方は、日本語版のPukiWIき1.4.4もダウンロードしておき、適宜参照するとわかりやすい。

台湾版PukiWikiでは、日本語版のEUC-JPのままでも動作に支障ないファイルは、コードコンバートせずにそのまま使っている。そのままでも動作に問題はないが、気になるのであればUTF-8(BOM無し)にコンバートしてしまってもいいだろう。コンバートが必要なファイルについては、その旨明記する。

以下、上のコードがオリジナル、下が改修後。

基本設定

\lib\init.php

EUC-JP。コンバートはしなくても大丈夫。

l.14 動作言語の設定
define('LANG', 'tw'); // Select 'ja' or 'en'
define('LANG', 'ja'); // Select 'te' or 'en'
l.18
mb_language('Chinese');
mb_language('Japanese');

ja.lng

EUC-JPからUTF-8にコンバート。

\skin\pukiwiki.skin.ja.php

EUC-JPからUTF-8にコンバート。

l.10
header('Content-Type: text/html; charset=EUC-JP');
header('Content-Type: text/html; charset=UTF-8');
l.11
echo '<?xml version="1.0" encoding="EUC-JP"?>';
echo '<?xml version="1.0" encoding="UTF-8"?>';
l.22
<meta http-equiv="content-type" content="application/xhtml+xml; charset=EUC-JP" />
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />

他のスキンファイルやCSSをWeb上で入手したり自作したりして利用する場合も、同様の設定が必要になる。

携帯用スキンkeitai.skin.ja.phpについても、設定変更が必要になると思われるが、寨主は携帯ではWebを見ないので、設定していない。

pukiwiki.ini.php

同ファイルは、コメントが台湾国語に書き換えられているので、日本語版のPukiWikiの同ファイルと対照するとわかりやすい。

l.47~49
Weblogページ名称とタイトルの設定
l.61 WikiNameが有効に成らない場合はここをOFFに
$nowikiname = 1;
$nowikiname = 0;
l.306 前行の説明にあるように、config.phpは、pukiwiki.ini.phpの設定を上書きする。このため、この行をコメントアウトしてconfig.phpを無効化した方がよい。
require('config.php');
//require('config.php');

config.php

無効化しない場合は、pukiwiki.ini.phpと設定を揃える。

多言語対応設定

default.ini.php

EUC-JP。コンバートは必要ない。

l.90以下
spanタグによる言語指定のためのルールを追加
"&lang\(([^\(\)]*)\){([^}]*)}" => '<span lang="$1">$2</span>',

小見出しランクの増加

現状の3ランクから5ランクに

\lib\html.php

euc-jp。コンバートは不要。

l.324
if (preg_match('/^(\*{0,3})(.*?)\[#([A-Za-z][\w-]+)\](.*?)$/m',$str,$matches))
if (preg_match('/^(\*{0,5})(.*?)\[#([A-Za-z][\w-]+)\](.*?)$/m',$str,$matches))
l.331
$str = preg_replace('/^\*{0,3}/','',$str);
$str = preg_replace('/^\*{0,5}/','',$str);

\lib\convert_html.php

l.184
$this->level = min(3, strspn($text, '*'));
$this->level = min(5, strspn($text, '*'));

その他

ヘルプなどのファイルは、日本語版のPukiWikiから移植する必要がある。ただ、日本語版のファイルを、EUC-JPからUTF-8にコンバートしてそのままWikiディレクトリにぶち込むと、英数名称ファイルはいいのだが、日本語ファイル名のものについてはファイル名が文字化けする。それらのファイルは、スクリプトを書いて、ファイル名を一括置換するしかない。

が、面倒だろうから、置換したファイルを添付してしまいます(笑)。