Fandom

Freeciv.org ジャパン

地域化

95このwikiの
ページ数
新しいページをつくる
コメント0 シェアする

翻訳 | 地域化 | 国際化 | navbarの編集


ここではFreecivの地域化(Localization、L10n)についての情報を提供します。

Freecivは国際化と地域化に対応するため、gettextシステムを使用しています。詳細については、gettextのinfoファイルを参照してください。

手っ取り早くgettextの概要を知りたい方は、FreecivのGettextガイドを参照してください。

Freeciv翻訳の技術的詳細については国際化を参照してください。

po翻訳ファイルに簡単にアクセスするため、最近生成されたファイルを http://www.cazfi.net/freeciv/translations/ で手に入れられるようにしています。

参加するには編集

ロケールが対応済みの場合は、そのロケールに特有の情報についてはそれぞれの首席担当者(翻訳を参照)に連絡してください。

新たなロケールを投稿したい場合は、まずあなたの決意を私たちにお知らせください。次に、あなたが作成した翻訳を追加し修正するために、ソースツリーへの参加手続きをしてください。

変更を投稿する方法など、すべての参加者に知っておいてほしい事柄については、こちらにも情報があります。

gettextの使用法について正確な情報を得るには、gettextのinfoファイルを参照するのが最も確実です。

新たな言語のサポート編集

たとえば、ポーランド語(plロケール)を追加したいとします。その場合、下記の事項を実行する必要があります。

  1. Freecivのソースをダウンロードしてインストールします。
    最新のSVNトランクスナップショットはここを、S2_0ブランチおよびS2_1ブランチのスナップショットはここを確認してください。
  2. configure.acの、ALL_LINGUASの含まれる行に'pl'を追加します。
    変更前:
    ALL_LINGUAS="es fr"
    変更後:
    ALL_LINGUAS="es fr pl"
  3. AutoConfツールを再生成します。
    $ ./autogen.sh
  4. Freecivをconfigureします。
    $ ./configure
  5. poディレクトリに移動します。
    $ cd ./po
  6. freeciv.potファイルをmakeします。
    $ make freeciv.pot
  7. freeciv.potpl.pox(予備の.poファイル)にコピーします。
    $ cp freeciv.pot pl.pox
  8. pl.poxファイルを編集してすべてのエントリを翻訳します。
  9. pl.poxのファイル名をpl.poに変更します。
    $ mv pl.pox pl.po
  10. pl.gmoファイルをmakeします。
    $ make pl.gmo

翻訳の更新編集

コードは常に変更されているため、新たな文章が追加されたり、古い文章が変更または削除されたりします。

上記の手順に従って行ったポーランド語の翻訳を更新したいとします。その場合、下記の手順を実行する必要があります。

  1. Freecivのソースをダウンロードしてインストールします。
    最新のSVNトランクスナップショットはここを、S2_0ブランチおよびS2_1ブランチのスナップショットはここを確認してください。
    (これにはすでにあなたが以前作成したpl.poファイルが含まれているはずです)
  2. Freecivをconfigureします。
    $ ./configure
  3. poディレクトリに移動します。
    $ cd ./po
  4. 予備の.poファイルをmakeします。
    $ make pl.pox
    (このファイルは、あなたが以前行った翻訳と、ソースコードで変更されたエントリがマージされたものになります)
  5. pl.poxファイルを編集し、すべてのエントリを更新します。
  6. pl.poxのファイル名をpl.poに変更します。
    $ mv pl.pox pl.po
  7. pl.gmoファイルをmakeします。
    $ make pl.gmo

作業するブランチの選択編集

Freecivのsubversionリポジトリには、安定版ブランチがいくつもあります。どのブランチを作業するべきか選ぶヒントをいくつか紹介します。

  • Freecivの最新の公開安定版(現在は2.2.5)のブランチを確認しましょう。よりバグフィックスを進めたリリースがこのブランチから作成される可能性があります。
  • ダウンロードページで、ベータリリースが最近出ていないか確認しましょう。もしあれば、今後数カ月のうちにいくつかのリリースがこのブランチから作成される可能性がより高いでしょう。

2つのブランチの同期編集

Freecivの開発にはsvnブランチを使用しています。私たちは、リリースを準備する際に必ず、その時点でいったん開発を止めたブランチを分岐させます。分岐したブランチではその後はバグフィックスのみを行うようにし、これが最終的に次の安定版としてリリースされます。この安定版ブランチと、頻繁に変更が加えられる開発版ブランチとの間で翻訳を同期させる方法を知らなかったとしたら、あなたは悪夢を見ることになるでしょう。

でも大丈夫です。同期させることはそれほど難しくはありません。まず作業するブランチを選び(安定版でも開発版でもかまいません)、翻訳を変更したら、'msgmerge'プログラムを使用します。これにより、一方のブランチで行った変更を他方のブランチにマージさせることができます。


安定版ブランチでde.poの翻訳を完了し、それを開発版ブランチにも適用したいとします。cdtrunk/poに移動し、下記のようにmsgmergeを呼び出します。

make freeciv.pot
msgmerge --compendium=de.po <安定版de.poへのパス> freeciv.pot -o de.pox

例:

make freeciv.pot
msgmerge --compendium=de.po ../../stable/po/de.po freeciv.pot -o de.pox

この手順を行うと、'make de.pox'を呼び出すのと同様の結果が得られますが、3つ目のファイルである.poファイルも一緒にマージされる点が異なります。

最新のfreeciv.potファイルの作成編集

最新のfreeciv.potファイルを作成するには、下記の手順を実行します。

  1. SVNリポジトリから最新のFreecivソースをチェックアウトします。
    SVNの使用方法については、ここを参照してください。
  2. Freecivをconfigureします。
    $ ./configure
  3. poディレクトリに移動します。
    $ cd ./po
  4. freeciv.potファイルをmakeします。
    $ make freeciv.pot

訳し分け文字列の処理編集

一部の文は複数の解釈ができるため、簡単には翻訳できません。典型的な例は、英単語 "game" です。この単語はFreecivでは2つの役割で使用されます。

  1. 私たちがプレイする game。Freecivではメニューバーの先頭項目などで使用されます(日本語訳はゲーム)。
  2. 地形特徴の game 動物。食べるために狩猟される動物です(日本語訳は獲物)。

まったく異なる2つの概念が含まれている単語は、ほとんどの場合は別の単語に訳す必要があります。しかし、これらはコード内で同一の文として登場することがしばしばあります。これを通常の方法で国際化すると、freeciv.potファイル内では1つのエントリとして統合されてしまいます。

#: menu.c:123 terrain.c:321 
msgid "Game" 
msgstr ""

そうなると、本来は別個の単語に訳し分けなければいけないのに、訳し分けることができません。

Freecivではこの問題を解決するために、訳し分け文字列(qualified translatable strings)という概念を導入しています。文字列が"訳し分け可能"であることを、単語の先頭に"?"と":"で挟んだ説明タグを付けることで示します。

gameの例で言えば、訳し分け文字列にするには下記のようにします。

"?play:Game" 
"?animals:Game"

こうすることで、freeciv.potファイル内に2つの独立したエントリとして登場するようになります。

#: menu.c:123 
msgid "?play:Game" 
msgstr "" 
     
#: terrain.c:321 
msgid "?animals:Game" 
msgstr ""

これで必要に応じた訳ができるようになりました。たとえば、de.poでは下記のようになります。

#: menu.c:123 
msgid "?play:Game" 
msgstr "?Spiel:Spiel" 
     
#: terrain.c:321 
msgid "?animals:Game" 
msgstr "?Tiere:Wild"

これはユーザーには下記のように表示されます。

Spiel および Wild

注意してほしいのは、説明タグは翻訳する必要がないということです。ユーザーには決して表示されないのですから。たとえば下記のようにしてかまいません。

#: menu.c:123 
msgid "?play:Game" 
msgstr "Spiel" 
     
#: terrain.c:321 
msgid "?animals:Game" 
msgstr "Wild"


引数の順序変更編集

文字列内の引数の順序を入れ替える必要がある場合があります。単語の順序が英語と逆になる言語では特に重要です。

2つの引数からなる文字列"%s %s"があった場合、"%2$s %1$s"とすることで、引数の順序を入れ替えることができます。フォーマット指定子の%の後ろに、X$を入れます。ここでXは、原文の何番目の引数をここに代入したいのか、その番号を指定します。

よくあるエラーの確認編集

翻訳した.poファイルをSVNに加える前に、明らかなエラーが含まれていないか確認した方が良いでしょう。

まず、.poファイルの先頭付近に、下記のようなエントリがあるはずです。

msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2000-04-07 13:50-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"

(他にもフィールドが追加されているかもしれません)。このエントリは必ず存在し、最低でも下記の部分が含まれます。

msgid ""
msgstr ""
"POT-Creation-Date: 2000-04-07 13:50-0400\n"

次に、gettextには.poファイルを検証する機能があるので、それでクイックチェックを行いましょう。

% cd po
% msgfmt -v -c --stat de.po

指定した.poファイルに何らかのエラーが見つかった場合、それぞれの問題についての説明が出力されます。

翻訳のチェックイン編集

Freecivは管理方法をCVSからSvnに変更したため、FreecivツリーにSVNでチェックアウトおよび書き込みができるようにする必要があります。

ソースルートディレクトリから、下記のようにコマンドを実行します。

% svn --message "what I did with the po file, updates etc." commit po/de.po

地域化ミニFAQ編集

ここでは地域化に関するいくつかの問題や疑問について述べます。

Freecivはどうやって使用言語を決定しているのですか?編集

Freecivは環境変数$LANGを確認して言語を決めています。ですから、この環境変数を設定する必要があります。たとえば、ドイツ語を使用するには、civserverあるいはcivclientを起動する前に、bashコマンドの"export LANG=de_DE"を発行する必要があります。tcshを使用している場合は"setenv LANG de_DE"です。 これでも英語のままの場合は、正しくない値を指定している可能性があります("de_DE"ではなく、間違えて"de"と指定していませんか? それでは上手くいかないでしょう)。あるいは、Freecivのソフトウェアを地域化サポート機能抜きでコンパイルしてしまったのかもしれません。

"make freeciv.pot"を実行したのですが、ファイルが生成されません。編集

./configureがGNUバージョンのxgettextを見つけられなかったのだと思われます。./configureからの出力を見て、下記のような行を探してください。

checking for xgettext... :

(単なる":"です。xgettextへのパスではありません)この場合、./configureはいかなるバージョンのxgettextも見つけることができなかったことになります。あるいは、下記のような行があったとします。

checking for xgettext... /usr/bin/xgettext
found xgettext program is not GNU xgettext; ignore it

この場合、./configureはGNUバージョンのxgettextを見つけることができなかったことになります。

どちらの場合でも、GNUバージョンのgettextシステムを入手してインストールする必要があります。非標準のディレクトリにインストールした場合は、./configureを呼び出す前に、gettext$PATHに追加してください。

"Freeciv"は翻訳すべきでしょうか?編集

いいえ。どこで出てきても"Freeciv"のままにしてください("Freeciv"の"c"は大文字ではないことにも注意してください)。

poファイルをロードしても、Emacsのpoモードが起動しません。どうすればいいでしょうか?編集

GNU Gettextをインストールしてあるか確認してください。GNU FTPミラーサイトからダウンロードできます。

GNU Gettextはインストール済みですが、やはりpoモードが起動しません。今度はどうすればいいでしょうか?編集

シェルで'info gettext'と入力し(あるいはEmacsのinfoモードを使用し)、'Basics'から'Installation'を選択してください。Emacsのpoモードをインストールする方法の詳細が記述されています。

Emacsにpoファイルをロードしたところ、"Fontifying XX.po...buffer too big"というエラーメッセージが出ました。poファイルが大きすぎるのでしょうか?編集

心配は要りません。バッファもファイルもサイズは正常です。Emacsがこのようなエラーメッセージを出すのは、変数font-lock-maximum-sizeの値が小さすぎるためです。この値より大きいバッファのフォント表示をEmacsが拒否するのは、大きなバッファに対してフォントロックをすると、リソースが多量に消費されることがあるためです。値を変更するには、'M-x'を押し、'customize-variable'と入力し、Returnを押し、'font-lock-maximum-size'と入力し、Returnを押します。開いたバッファ内のヘルプテキストを読み、値を524288(2^19です。適切であると思われる値であればなんでもいいです)に変更してカスタマイズしてください。これでファイルを開いたときにフォント表示されるでしょう(ファイルサイズが512kB以上でなければ)。

広告ブロッカーが検出されました。


広告収入で運営されている無料サイトWikiaでは、このたび広告ブロッカーをご利用の方向けの変更が加わりました。

広告ブロッカーが改変されている場合、Wikiaにアクセスしていただくことができなくなっています。カスタム広告ブロッカーを解除してご利用ください。

Fandomでも見てみる

おまかせWiki