多言語対応できてそれなりにしっかりしたWikiエンジンを探していたらMediaWikiにたどり着いたのだけど、どうもやり方がよく分からない。ドキュメントも日本語ではあまり見つからなかった。

というわけで、基礎知識と、多言語対応の方法について調べたことを書いておきます。

MediaWikiの基礎知識

  • Wikipediaなど大型Wikiサイトのエンジンとして有名
  • インストールガイドによるとPHP (5.3.2-) + MySQL (5.0.2-, InnoDB推奨)あるいはSQLite, PostgreSQL (8.1-)で動作する
  • デフォルトのURLはindex.php?…と長ったらしい
    • Apache mod_rewriteを使っている場合は所定の方法で短くできる

Extensionによる機能拡張

Extensionで機能を拡張できますが、わりと方法は原始的です。

  • tarballをダウンロード、解凍してextensionsに突っ込み、LocalSettings.phpという特別な設定ファイルの末尾にrequire_once文を足すことで機能が拡張される
  • データベースを利用する拡張機能の場合、別途データベースの更新作業が必要になることがある
  • 更新作業ではmaintenance/update.phpをコマンドラインで実行するか、Webアップデータを利用する

Skinによる見た目の変更

Skinでデフォルトの見た目を変えられますが、あまり作っている人がいない感じです。

  • tarballあるいはzipをダウンロードしてskinsに突っ込むことで選べるスキンが増える
  • スキン一つにつき “スキン名.php” (先頭大文字)というファイルと “スキン名” というディレクトリがある
  • ログインしている人は当該Wikiにインストールされているものの中から自分好みのスキンを選べる
  • 公式サイトのスキン一覧はなんだか寂しい感じ
  • 外部サイトが独自に収集したスキン一覧もバリエーションに欠ける…要は作ってる人が少ないものと思われる
  • デフォルトでついてくるVectorか、かつてMozilla Wikiで使われていたというCavendishの改良版Cavendish-mwあたりが完成度高そう

多言語対応の方法

で、さまざまな言語で記事を作りたいときは、2つの方法があります。

  1. 拡張機能 Translate を使う
  2. Wiki familyを作る

これらは根本的に異なる方法で、結果としてできることも全く違います。

拡張機能Translateを使う

一つ目は、一つのWikiを拡張して多言語で記事を書くサポートを足す方法です。

段落ごとに翻訳したり、他の人に校正を頼むなど、翻訳に関する機能が細かく追加されます。これにより、記事翻訳のプロセス全体が便利になりますが、Wikiのベース言語をほかの言語に翻訳することしかできません。

例えば、英語Wikiを作ったら、各記事を日本語やフランス語などに翻訳する機能がつきますが、逆に日本語で記事を作っておいたものを英語に翻訳する機能はありません。

Wiki familyを作る

二つ目は、言語ごとに個別のWikiを設置しつつ、基本的なファイルを共有することで無駄を省く方法です。Wiki間はInterwikiの相互リンクによってゆるく接続されます。

言語ごとの記事データは全く別のデータベースで管理されます。Wikipediaはこの方法を取っています。とても柔軟な運用ができますが、Translateを使う場合のような緻密な翻訳支援機能は期待できません。

今回は英語のWikiを作って日本語などに翻訳していきたかったので、一つ目の方法を取りました。

MediaWiki Language Extension Bundle

Translateという拡張機能は、前述のように翻訳プロセス全体を支援してくれます。これを単体でインストールしてもよいのですが、公式サイトはMediaWiki Language Extension Bundle(MLEB)という他の拡張機能もセットになったバンドルを入れることをお勧めしています。

インストール手順はMLEBの公式インストールガイドをまとめると以下の通りです。

  1. tarballをMediaWikiのインストールディレクトリにダウンロードする
  2. tar xjf MediaWikiLanguageExtensionBundle-*.tar.bz2 コマンドを実行してMediaWikiのインストールディレクトリ下に展開する
  3. LocalSettings.phpに $EXT = “$IP/extensions”; という行を足す
  4. LocalSettings.phpにその他の設定を書き足す
  5. データベースの更新作業を行う

ここまでしても、Wikiページの見た目にはあまり変化がありません。かろうじて、MediaWikiエンジンの表示インタフェース言語を切り替えるUniversal Language Selectorのリンクが画面上に追加される程度です。

翻訳のための主たるインタフェースは特別なWikiネーム、Special:Translateでアクセスできるようになっていますが、このURLへのリンクはどこにも追加されません。分かりづらいです…。例えば、MediaWiki公式サイトのSpecial:Translateを見てみるとよいでしょう。ここには翻訳待ちのWikiページ一覧が表示されます。

一般的なWikiページを翻訳待ち一覧に登録するには、ページの当該箇所を <translate>~</translate> で囲む必要があります。そうすると、当該ページに翻訳用のリンクが表示されたり、Special:Translateの一覧に登録されたりします。

その後、翻訳が部分的にでも済むと、例えば Fréttinga という記事なら Fréttinga/ja のように言語の識別子がポストフィックスについたWikiページが生成されます。また、ページ内に <languages /> と書き込んでおくと、他言語版の記事へのリンクのテンプレートが挿入されます。


2 Responses to “MediaWikiの多言語対応を調べた”

Trackbacks and Pingbacks:

  1. Wikipediaのテンプレートを自前のMediaWikiに追加した | junkato.jp

    […] 前日に引き続きMediaWikiに関する記事です。 […]

  2. レンタルサーバのMediaWikiにJava製SVGレンダラを設定した | junkato.jp

    […] そこで、この記事では、SVG画像のレンダリングに使うエンジンをImageMagickからApache BatikというJavaで動作するものに差し替えた手順を紹介します。(これで、前日、前々日から続いたMediaWikiのセットアップ記録は終わりです。) […]

Leave a Reply

  • (will not be published)