KDE 日本語翻訳プロジェクト
メッセージカタログの翻訳
KDEではメッセージ、ドキュメントとも翻訳はメッセージカタログ形式のファイルを使用します。 翻訳をやってみようという方は以下を参考にやってみて下さい。ドキュメント翻訳の詳しい仕組みについてはドキュメントの詳細の項で説明しています。一応本家KDE projectの流儀に乗っ取っていますが一部日本語チームに特化した情報も入っています。
手順
既存の翻訳、一部翻訳されたファイル
またはテンプレートファイルをダウンロードする
↓
翻訳状況を確認する
↓
Kbabelを設定する (翻訳はKBabelというツールを使って行います。KBabelの設定はここ)
↓
対訳表とKDEの独自拡張を読む
↓
訳す
↓
もう一度対訳表を読んで確認
↓
公表する(KDeveloper-MLか担当宛)
翻訳状況の確認
以前は翻訳状況をHTMLにして公開していたのですが手間がかかる、利用者が少ないという理由から
現在は更新していません。それではどうやって翻訳状況を確認するかと言うとこれには2つの方法があります。
(1)KBabelを使う
KBabelのカタログマネージャというツールを使います。これを利用するにはテンプレートと日本語翻訳ファイルを
インストールし、KBabelの設定でこれらのディレクトリを指定する必要があります。
(図)カタログマネージャ
(2)i18n.kde.orgのHighscore
for jaを参照する。
これは本家が提供しているTranslation Statisticsです。
対訳表
更新中です。しばらくお待ち下さい。旧版はここ。
KDEの独自拡張
KDEにはgettextにはないメッセージ翻訳の独自拡張があります。これらは間違えると深刻なので気を付けてください。
msgidが_:や_n:で始まるのが特徴です。_:や_n:で始まる行は訳さないで下さい。
translation information
これらは翻訳者情報です。アプリケーションのバージョン情報の「翻訳」のところに表示されます。
複数人いる場合はカンマで区切ります。
#: _translatorinfo.cpp:1
msgid ""
"_: NAME OF TRANSLATORS\n"
"Your names"
msgstr "Taiki Komoda"
#: _translatorinfo.cpp:3
msgid ""
"_: EMAIL OF TRANSLATORS\n"
"Your emails"
msgstr "kom@kde.gr.jp"
context information
これは文脈情報です。短縮語とかで分かりづらい場合に翻訳者にこの語がどういう文脈で使われているかを
示します。
#: kdecore/klocale.cpp:117
msgid ""
"_: June\n"
"Jun"
msgstr "6月"
plural form
これは複数形情報です。gettext-0.10. 36以降で導入されたものとは書式が若干違います。ただ日本語の場合はNo
Pluralですので
単純に下のようになります。
#: kfile/kfiledialog.cpp:1220
kio/defaultprogress.cpp:140
#, c-format
msgid ""
"_n: %n directory\n"
"%n directories"
msgstr "%n ディレクトリ"
ちなみにgettextは0.10.35を使用するのがいいらしいです。
[参考]
Plural=3の言語の場合は以下のようになります。
msgid ""
"_n: %n directory\n"
"%n directories"
msgstr ""
"%n Katalog\n"
"%n Kataloga\n"
"%n Katalogiv"
[注意]
kdelibs.poに以下のような項目があります。
msgid ""
"_: Definition of PluralForm\n"
"Look at klocale.cpp for now"
これは訳すものではなく設定情報です。これに対するmsgstrは"NoPlural"にします。
(kdelibs.poはできるだけ私がメインテナンスします)
ドキュメントの詳細
翻訳中、査読中ファイル
査読待ちファイル。いままで日本語化されていないファイルがここにあります。ご覧ください。
過去の翻訳ファイルに関してはのここにあります。
設定
まずKBabelを設定してください。
翻訳
KBabelで翻訳します。
KDE翻訳エキスパート向け情報
XML/POフォーマット
KDEでは2.2からドキュメントのフォーマットをXMLに変更しました。これは世界的に標準になりつつあるXMLをドキュメントフォーマットの中核にしようとしたものです。
ドキュメントの翻訳には一つ問題がありました。それはもしオリジナルの文書が更新された場合にそれに追随するのが難しいということです。ましてやSGMLやXMLのタグだらけの文書の中の更新された一部分を探し出すのはそれだけで一苦労で肝心の翻訳に労力が割けません。そこで考え出された方法がXMLから擬似的にPOファイル(メッセージカタログ)を作成し、それを既に熟成された感のあるメッセージカタログ翻訳ツールKBabelで翻訳しそれをまたXMLに変換するという方法です。こうすることで翻訳者はタグをほとんど意識することなく、更新された部分も一目瞭然(原文と翻訳が対応した形になっているため)に翻訳だけに集中して作業ができます。POファイルはCVSで自動的に生成され、PO->XMLの変換は各国語のコーディネータが行います。
このように翻訳者が行うKDEドキュメント翻訳のほぼ全ての作業はKBabelで行えます。つまりKBabelさえ使いこなせるようになれば翻訳に協力して頂くことができるということです。もちろんこの上位でどういうことが行われているかを理解していただくことはKDEのドキュメントシステムに対するより深い理解につながりますが、これは必ずしも必要ではありません。いずれにせよKBabelを使うことで効率的なKDEドキュメントの翻訳が行えるでしょう。
ドキュメントの変換の仕方
>
ちなみに最初からKBabelで翻訳すればこんな苦労はしなくてすみます;)。
この方法はKDE2のドキュメントが存在し、かつほとんど情報が変わっていない場合に有効です。
以下の手順でXML/PO化します。ただほとんどの場合ものすごい労力を伴うことに注意してください。
エンコーディングをUTF8に変更する。ほとんどの場合元ファイルはEUC-JP。
% iconv -f ujis -t utf8 index.docbook > index.xml
% mv index.xml index.docbook
(注)XMLファイルの拡張子は.xmlではなく.docbookです。
一部の記号をXML対応にする(このコマンドは日本語を破壊するので使用しなくても手間は変わらないかもしれません;()
% xmlizer index.docbook
日本語の場合一部の文字が破壊されるのでYudit(UNICODEエディタ)で直す;(。このエディタは壊れたシーケンスが入っていてもなんとか編集
できます。
% yudit index.docbook
XML的に正しいかのチェック。正しくない場合はYuditで直す(結構エラーが出ます
;()。タグがXMLで定義されていないこともあります。
% checkXML index.docbook
もしくは
% meinproc --check index.docbook
これでエラーが出なくなったら
% meinproc index.docbook
とするとindex.html以下様々なファイルが作成され、ヘルプの閲覧ができます。(適当なディレクトリで
読み込めばスタイルシートのファイルも読み込まれます。)
この状態で閲覧可能なXMLファイルができました。次にメッセージファイルへの分割を行います。メッセージファイルへの分割はタグをいくつか直せば通ることがありますがたいていの場合パラグラフが足りなかったりタグが異なったりします。Kbabelでメッセージカタログ化されたものを確認すれば不整合が起こっているのが分かるでしょう。そのような場合にはタグを直し、パラグラフが足りないところには
その場で訳すか原文をはさみます。
% split2po 原文のXML 翻訳されたXML > app.po
% kbabel app.po
この作業でエラーが出なくなり、かつオフセットがなくなったらXMLに戻す際にエラーが起こらないか確認します。
% po2xml 原文のXML 翻訳されたPOファイル > index.docbook
エラーが出なくなったらようやくそのpo、xmlとも最新のフォーマットに追いつきました。お疲れ様でした。
メッセージカタログ化した後は修正はメッセージカタログに対して行います。なぜならKbabelで翻訳する場合パラグラフ内のタグしか見えません。その他のタグは自動的に処理してくれるためここらへんで起こるエラーが防げます。