KDE 国際化 HOWTO

!

このページは10年以上前の非常に古いものであり、歴史的資料保存を目的として維持しています。
現在の状況とは大きく異なる場合がありますので、原則として参考にはしないで下さい。

KDE デスクトップ環境


www.kde.org/i18n.html を見ると、アプリケーションの表のところに
.pot ファイルへのリンクがあります。それらは以下のような形式になっています。

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR , YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 1998-01-02 15:01+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"

#: kdecore/kapp.cpp:407 kdeui/kcolordlg.cpp:469 kdeui/kcontrol.cpp:34
#: po/texts.cpp:43
msgid "Help"
msgstr ""

#: kdecore/kapp.cpp:412
msgid "About "
msgstr ""

#: kdecore/kapp.cpp:416 kdecore/kapp.cpp:437
msgid "About KDE"
msgstr ""

ヘッダは現在のところ私にとってのみ、翻訳者と連絡をとる必要が
ある時のために重要なものです。以前は翻訳者はそれを削除しても
構いませんでしたが、ヘッダなしでは誰が何をしたかを覚えておくのは
困難です。
現在のところ、私自身は以下のような形式のものをヘッダに使っています。

msgid ""
msgstr ""
"Project-Id-Version: kdelibs\n"
"POT-Creation-Date: 1998-01-02 21:12+0100\n"
"PO-Revision-Date: 1997-12-28 19:46+01\n"
"Last-Translator: Stephan Kulow \n"

もしバージョンを更新した時はここにさらに翻訳者を追加すると
よいでしょう。

オリジナルのヘッダに話を戻しましょう。"#" に続いてファイル名と
行番号が書いてあります。それらはアプリケーションの中でその
メッセージがどのように使われているかを知るためのヒントとなります。

そのファイルを翻訳する場合は msgstr の後ろに Help の翻訳を
追加して下さい。ドイツ語の場合は以下のようになります。

#: kdecore/kapp.cpp:407 kdeui/kcolordlg.cpp:469 kdeui/kcontrol.cpp:34
#: po/texts.cpp:43
msgid "Help"
msgstr "Hilfe"

簡単でしょう? 時には以下のようなもっと長いメッセージに
でくわすこともあるでしょう。(スウェーデン語のバージョンより):

#: kdecore/kapp.cpp:439
msgid ""
"The KDE Desktop Environment was written by the KDE team.\n"
"\n"
"Please send bug reports to kde-bugs@kde.org.\n"
"\n"
"\n"
"KDE was developed with Qt, a cross-platform GUI library.\n"
"\n"
"Qt is a product of Troll Tech (http://www.troll.no, info@troll.no).\n"
"Qt may be used freely to develop free software on the X Window
System.\n"
msgstr ""
"KDE Desktop Environment skrevs av KDE-teamet.\n"
"\n"
"V-A ligen, skicka bug-rapporter till kde-bugs@kde.org.\n"$)B
"\n"
"\n"
"Det h-A  programmet utvecklades med hj p av Qt, ett tv kompatibelt "$)B
"GUI-bibliotek.\n"
"\n"
"Qt tillverkas av Troll Tech AS (http://www.troll.no, info@troll.no). Qt
f-A  "$)B
"anv-A das fritt f  att utveckla fri programvara p X Window System.\n"$)B

こちらにも msgid と msgstr がありますが、より長い文章が
続いています。ユーザーに同じ情報が提供される限り、文章の
配置を同じに保つ必要はありません。ほとんどの場合、長い文章は
ダイアログボックスか --help の文章に使われるものです。
どちらの場合にも、オリジナルの方にあるからといって途中にある
改行を保存する必要はありません。もし翻訳のためにより多くの行が
必要だとしてもそれは全く問題ありませんし、もしより少なくて
済んだとしても同様に問題ありません。
唯一重要な箇所は最後の行です。msgfmt コマンドは両方のバージョンが
改行有りか、または改行無しで終っているかをチェックします。
それは、後ろにさらに文章が続く際に重要になるからです。

テンプレートファイルでみかける別のケースはアクセラレータです。

#: po/texts.cpp:48
msgid "View"
msgstr ""

#: po/texts.cpp:49
msgid "&View"
msgstr ""

最初の方がアクセラレータなしの View で、二番目の方が
アクセラレータ付きの View です。両方ともメインメニューには
View として表示されますが、二番目の方は "V" にアンダーラインが
ついて ALT+V が使えることを示します。ですから、問題は、
翻訳する時にどこに "&" を置けばいいか、ということになります。
その答えは簡単です。メニューの中でただ一つの文字だけが
マークされていることが重要なのです。これはメインメニューと
全てのポップアップについて言えます。もし英語バージョンのものと
同じ文字が使えれば、ほとんどどんな場合も安全です。
(しかし、このようにする必要はありません。)
例えば、View のドイツ語訳は Ansicht (V なし) で、
スウェーデン語訳は Utseende (こちらも V なし) です。
そのような場合(メインメニューでは)、最初の文字が最もよく
使われます。これは、普通はメニューにはせいぜい 5 か 6 しか
項目が無いので、問題にはなりません。

さて、次のトピックスに行きましょう。C-形式の文字列です。

#: app.cpp:416
#, c-format
msgid "Your time: %02d:%02d:%02d"
msgstr ""

みんなが少しでも printf() を使った経験があればいいのですが。
そうすればここで何が起こっているのかを理解する助けになります。
These messages are translated and then the real time is filled in the gaps. // No sure what real time is
(訳注:恐らく、この場合、%02d のところが実行時に変換される、ということを
 言いたいのだと思う。%なんちゃらについては、man printf あるいは
 C 言語の解説書を眺めるといいでしょう。)
重要なのはこれらのメッセージの構造を保存するということです。
しかし、もちろん、"%02d:%02d:%02d was your time" や
"you did in %02d hours, %02d minutes and %02d seconds" のように
翻訳することも適切です。
やってはいけないのは、"file %s not found, tried %d times" を
"I have tried %d times to find file %s" のように翻訳することです。
(訳注: %s と %d の順序が入れ替わっている)
翻訳したバージョンは、printf() が文字列を数字の場所に入れようとして
アプリケーションをクラッシュさせるでしょう。

これで個々のメッセージを翻訳する方法が分かったでしょう。

KDE には、kdelibs にいくつかの重要なメッセージを含んだ
ファイルがあります(前に書いた "View" や "Help" のような)。
これは最新の状態に保たれなければなりません。

次に、KDE アプリケーションのためのメッセージファイルが
あります。翻訳されたアプリケーションのためには、両方とも
(kdelibs のファイルとアプリケーションのファイル)が翻訳されて
いる必要があります。
GNU の "gettext" が翻訳作業のためにインストールされていなければ
なりません。msgfmt コマンドで .po ファイルを .gmo ファイルに
コンパイルして、それを .mo ファイルとして
 $KDEDIR/share/locale/$LANG/LC_MESSAGES/ にインストールします。
それが済んだら、"LANG=sv khexdit" とすればスウェーデン語版の
khexdit が起動しますし、"LANG=de khexdit" とすればドイツ語版の
khexdit が起動します。

前の節は主に新規の翻訳のための説明ですが、既存の翻訳を
アップデートする必要もかなりあります。既存の翻訳ファイルを
手に入れると(スナップショットから)、テンプレートファイルに
あるものと全く同じように扱われる空のメッセージがあります。
しかし、時々 以下のようなあいまい(fuzzy)な項目というのもあります。

#: kfmprops.cpp:697
#, fuzzy
msgid "Run normally"
msgstr "In Terminal ausf-A ren"$)B

これは msgmerge (私がこの仕事のために使っている
アプリケーション)による推測です。時々この推測は
うまくいくのですが、この場合は完全に誤りです。
気にせず、この項目を更新してあいまい(fuzzy)という
コメントを削除して下さい。というのは、msgfmt は
あいまい(fuzzy)と印の付けられた項目を無視するからです。

その他にも以下のような使われていない翻訳があるかもしれません。

#~ msgid "Do you really want to quit?"
#~ msgstr "Wirklich beenden?"

#~ msgid "&How can I ..."
#~ msgstr "&Wie kann ich ...?"

これらの翻訳は一時使われていましたが、もはやアプリケーションの
一部ではないか、(それよりもあり得るのは)変更されたかです。
これは、"Do you really want to exit?" かそれと似た項目が
なくて、msgmerge がこれらのメッセージのつながりを
見つけられなかったのです。もし残りの部分を更新したのなら
削除しても構いません。ただのコメントですから。

もし翻訳が出来たら、それらを Stephan Kulow  に
email して下さい。私がそれらを KDE のソースに追加します。

ここに書いておきたいもう一つのトピックスは .kdelnk ファイルに
ついてです。これはもうちょっと複雑です。というのは、
それらは .pot ファイルのように全部が一か所にあるわけでは
ないからです。
You'll need to make patches to get them applied.

$KDEDIR/share/applnk を見ると、kpanel によってスキャンされる
ファイルの構造があります。これらのファイルと、それらが入っている
ディレクトリも翻訳できます。しかし、そこではなくて
ソースパッケージの方を翻訳して下さい。kdebase/applnk に
ほとんどものがあります。例えば、kdebase/applnk/Games には
.directory ファイルがあって、以下のようになっています。

[KDE Desktop Entry]
Name=Games
Name[de]=Spiele
Name[nl]=Spelletjes
Name[pl]=Gry
Name[cs]=Hry

見れば分かるように、ここにはほんの少しの翻訳しか追加されていません。
.directory ファイルか .kdelnk ファイル、それは以下のようになっています、を

# KDE Config File
[KDE Desktop Entry]
Name=Hex Editor
Name[de]=Hexeditor
Name[pl]=HexEdytor
Exec=khexdit -caption "%c" -icon "%i" -miniicon "%m" %f
Icon=khexdit.xpm
Type=Application
DocPath=khexdit/index.html
Comment=A simple Hex editor
Comment[de]=Ein Editor f-A  bin e Dateien$)B
Comment[pl]=Prosty edytor plik-A  binarnych$)B
Terminal=0
MiniIcon=khexdit.xpm

翻訳する場合は、単に Name[$LANG] や Comment[$LANG] といった
行をファイルに追加して、最新のスナップショットに対する
パッチとして私に送って下さい。私はあなたがスナップショットを
ダウンロードして、1時間かあるいは KDE を使うのに費す時間を
割いて翻訳して、同じ日にパッチを送って下さることを本当に
お願いします。同じ日に二つのパッチを受け取らければいいのですが、
これは私が目を光らせていなければならないような事なのです;)。

もしパッチの作り方を知らない場合は、ソース(それを
コンパイルしないのがベストです;)を別のディレクトリに
(例えばkdebase を kdebase.origに)コピーして下さい。
それから kdebase を編集して、それが済んだら
"diff -U0r kdebase.orig kdebase | gzip > kdebase-patch.gz"
として結果を私に送って下さい。

さぁ、これがあたなの助けとなって、私のメールボックスをいっぱいに
してくれますように;)。

Stephan Kulow
もしさらに質問があれば日本語化チームコーディネーターに連絡して下さい。
原文はこちら

日本誤^H語訳 : 1998/01/11 高木淳司
追記 : 1999/10/04 菰田泰生