2010夏 Wikipedia翻訳プロジェクト開発状況

From MediaWikiExt

Jump to: navigation, search

Contents

開発体制

マネージメント:高崎(京大)
多言語LQTおよびLangridExtension実装/サーバ整備:小山(EIP), 北島(EIP) 緊急連絡先 wiki@eip.co.jp
多言語LQT実装/サーバ整備補助:里田(京大)
Wikimedia版言語グリッド実装/サーバ整備:中口(AT)
テスト(実験):Ari(京大), Linsi(京大)

スケジュール

現在Andrewコードレビュー中 (これまでに全てのソフトウェアはリファクタリング&デバッグ完了)[調整:高崎]
Andrewコードレビュー後 Wikimediaテストサーバ配備[EIP]
10月上旬:Erikに連絡
10月中: Andrewによるコードレビューとフィードバック
11月上旬: Wikimedia財団訪問
11月: Wikimedia財団テストサーバでのClosed Testとフィードバック
12月: Wikiniews等のSmall Wiki(Wikinewsなど.ユーザ約100名)でOpen Testとフィードバック
2010年度内 Operation Phase [Wikimedia]


以降は終了した過去のスケジュール:
8月6日 Langrid Extension(テキスト翻訳・Page Dictionaty import・ログ機能)の配備[EIP]
(8月6日までは第1回Wiki翻訳実験を目指し、LangridExtensionの開発をメインに行う)
8月9日-13日 第1回Wiki翻訳実験(多言語LQTは不使用)[京大]
8月13日 LangridExtensionのリファクタリング版(Smarty除去・言語パス設定ファイル化)配備完了
8月25日 多言語LQTデバッグ&リファクタリング完了/配備[EIP]
8月27日 Wikimedia用言語グリッド開発完了/配備[中口]
9月 3日 LangridExtensionおよび多言語LQTとの統合テスト完了
9月20-24日 第2回Wikipedia翻訳実験[京大]

技術情報

システムの要素とバージョン

開発環境

Apache: Apache 2.2.14
必要なApacheモジュールとバージョン:
PHP:5.2
必要なPHPモジュールとバージョン:php-soap 5.3.2 php5-xmlrpc 5.3.2
MySQL:5.1.47
MediaWiki:1.16.0
LiquidThreads:
LanguageSelector
SVN:

確認済み動作環境

Apache: 2.2.3
必要なApacheモジュールとバージョン:
PHP:
必要なPHPモジュールとバージョン:

php-5.2.13 php-soap-5.2.13

MySQL:5.0.x
MediaWiki:1.16.0
LiquidThreads:2.0α
Java環境(Wikimedia用言語グリッド):Tomcat6?

ロギングについて(京大の8月/9月実験でログを利用)

Langrid Extensionの入出力+言語グリッドへの呼出し&レスポンス
多言語LQTの入出力+Langrid Extensionへの呼出し&レスポンス
本システムがカバーしないログ(Web版英辞郎や他のWikipedia記事参照などのアクセス行動ログ)については, 開発チームが知っている範囲で、例えばブラウザ設定等で外部参照履歴が取得可能かどうかのサジェスチョンを実験チームにして、実験チームが最終決定する。

Wikimedia版言語グリッドのToDo一覧

LangridExtensionのToDo一覧

・リファクタリング:Smarty除去 (配備完了)
・リファクタリング:翻訳パス設定のファイル化 (配備完了)
・「Translate」ボタンなどのラベルのローカライズ(配備完了)
・現状、ログのタイムスタンプはUNIXタイムスタンプなため、
http://kyucon.com/cgi-bin/time.cgi
のようなツールで変換が必要なので、MediaWikiの標準的な記法にする。

:・dictionaryタブのラベル文字列を、translate/dictionaryに変更する。他の言語でも同様に対応する。

多言語LQTのToDo一覧

太文字はAndrewのサポート/確認が必要。

[ToDo1 デバッグ(原因究明済)] タイトルがundefinedになる。
[ToDo2 デバッグ(原因究明済)] Human Correction(edit):--> 本文(body)部はNG(ローカルではOKだけど、デモサイト上でNG)。
[ToDo3(Refactor)] AddOn化(正規フック化):AndrewにSVN経由でコードを見てもらい指摘受ける。要Andrew
[ToDo4(Refactor)] LanguageGridAccessObjectクラスに汚く入れられているメソッドを、正しく分離する必要がある。要Andrew


■ページ上部の履歴→適当な日時をクリックでエラーが表示される要Andrew
※TalkpageView::getTOC内が原因?
※foreach ( $threads as $thread ) { の直下が怪しい
※LQTのバグ?

->MLQTでコメントアウトされていた為。


■原文の言語が日本語のときに,投稿本文の英訳を修正・セーブすると,日本語に切り替えた際にスレッドのタイトルが英訳で上書きされている.要Andrew
※言語問わず確認. 処法が分からないのでAndrewへ聞いてみるのも手

->MLQTでコメントアウトされていた為。


■投稿を編集するフォームを開き,そのフォームのcancelをクリックすると,スレッドの表示がおかしくなる.要Andrew
※LQTのバグ?

->LQT最新版で修正済み

■原文の言語を表示する際の,中国語の英語名が簡体字・繁体字に関わらずChineseになっている.
※日本語も同様
※i18nを直すだけの作業


■/api/ApiThreadAction.phpに追加したコードをHook化していない
※追記部分は2010年1~2月の門脇さん時代の資料参照+以下の箇所
※rev.315の,639・640行目をコメントアウト.641~651行目を追記


■サマリ部翻訳が未実装:2010年7月中旬時点で石松タスクで実装完了しているとの報告済みだがサーバ(SVNサーバおよびテストサーバ)に反映されていない。

->未実装

■現在のLQTでは、英語でインストールしないと言語セレクトができない実装になってる。※Talkで正規表現をかけている為この点は変更した方が良い。

->対応完了

多言語LQTのHookリスト

===使用したLQTの既存Hook一覧===
■LiquidThreadsThreadCommands
classes/View.php rev.322 1076行目
■LiquidThreadsThreadSignature
classes/View.php rev.322 1487行目
■LiquidThreadsShowThreadHeading
classes/View.php rev.322 1571行目
■LiquidThreadsShowPostContent
classes/View.php rev.322 1452行目
■LiquidThreadsThreadMajorCommands
classes/View.php rev.322 1141行目
■LiquidThreadsShowReplyForm
classes/View.php rev.322 514行目
■LiquidThreadsSaveNewThread
classes/View.php rev.322 423行目
■LiquidThreadsSaveReply
classes/View.php rev.322 531行目


===勝手に作成したHook一覧===
■LiquidThreadsThreadPermalinkView
pages/ThreadPermalinkView.php rev.190 191行目
■LiquidThreadsEditingFormContent
classes/View.php rev.322 576行目
■LiquidThreadsGetTOC
pages/TalkpageView.php rev.205 140行目
■LiquidThreadsShowPostThreadBody
classes/View.php rev.322 1459行目
■LiquidThreadsDoInlineEditForm
classes/View.php rev.322 319行目
■LiquidThreadsEndOfShowNewThreadForm
classes/View.php rev.322 402行目
■LiquidThreadsAfterNewPostMetadataUpdates
classes/View.php rev.322 936行目
■LiquidThreadsAfterReplyMetadataUpdates
classes/View.php rev.322 826行目

{WIKIHOME}/LocalSetting.phpに追記する内容

【タイムーゾーン関連】

$wgLocaltimezone = "Asia/Tokyo";

$wgLocalTZoffset = 9 * 60;

【Extension関連】

require_once("$IP/extensions/LiquidThreads/LiquidThreads.php");

require_once("$IP/extensions/LanguageGrid/LanguageGrid.php");

require_once("$IP/extensions/LanguageSelector/LanguageSelector.php");

実行するSQLファイル

php {WIKIHOME}/maintenance/sql.php extensions/LiquidThreads/langrid/langridaccess.sql

php {WIKIHOME}/maintenance/sql.php extensions/LiquidThreads/lqt.sql

php {WIKIHOME}/maintenance/sql.php extensions/LanguageGrid/languagegrid.mysql.sql


技術調査

履歴のカスタマイズ方法

  • $wgHooks['OldChangesListRecentChangesLine'][]

MediaWiki標準の履歴は困難かと思われる。
->resentchangesにinsertすれば可能。
http://www.mediawiki.org/wiki/Recentchanges_table/ja
また、page,textテーブルも流用した方がよいかという結論->スキーマ仕様の変更


タイトルのカスタマイズ方法

  • $wgOut->setPagetitle("your title");

Wikimedia送付パッケージについて

<言語グリッドエクステンション>
全てのファイルサイズ(ソースコード):402KB
(PHPはソースコードのみで,バイナリ版はありません)
【内訳】
 CSS:8KB
 日本語英語メッセージリソース:40.6KB
 Ajax対応JavaScriptライブラリ(Prototype.js):127KB
 PHPのコード:230KB程度
一番大きくしめるのは,画像やラベルなどのメッセージリソース。
作成したコードで大きな2つのコンポーネントは以下の通り:
・ServiceGridContext.class.php 12KB
 ->言語グリッドにアクセスするための情報を格納するクラス
・ServiceGridTranslationServiceSetting.class.php 8KB
 ->翻訳設定をDBから取得するクラス


> MediaWiki上の主要なextensionの大きさを調べてください。
> その感覚で、この大きさが妥当かどうか検討してください。
通常のExtensionは単純な機能拡張(地図の表示,OpenIDの利用等)のみのため,1ファイルから10ファイル程度の小規模な構成で100KB未満.一方,より高機能なLiquidThreadは2MBほど.
<Wikimedia用言語グリッド> 2010/9/17更新
全てのコード行数(オリジナルコード):45,448行(コメント等除いた有効行)
全てのファイルサイズ(バイナリ):5.06MB
【内訳】
 オリジナルコード:1.16MB
 依存ライブラリ:3.9MB
オリジナルコードで大きいのは以下の通りです.
・DB用データ定義:202KB
 →ServiceSupervisor(アクセス制御・ロギング処理等を追加できるフレームワーク)でグリッド情報を扱うために必要な、データ構造とデータアクセスインタフェースを定義したモジュール。DBの実装はJSONファイルを利用した読み出し専用の物を搭載。また、アクセス制御等のロジックはパッケージには含まれない(必要であれば後から追加可能)
・ラッピングライブラリ:135KB
 →パッケージに含めるラッパーの構築に必要なライブラリ
依存ライブラリでは大きいものは以下の通り:
・スプリングライブラリ(context) :662KB
 →XMLファイルからの読み込みを担当
・スプリングライブラリ(beans):553KB
 →オブジェクトの生成を担当
上記二つは,設定ファイルからDecoratorやServcieWorkflow/WrapperExecutor,Service ComponentExecutorを構成するのに必要なもの.
Personal tools