地域化

ページ名:地域化

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

ここでは、Freecivの地域化(l10n)への貢献に関する情報を提供します。 対象読者はプレーヤーではなく翻訳者です。

Freecivは、国際化と地域化のためにgettextシステムを使用しています。 gettextの概要については、FreecivのGettextガイドを参照してください。詳細については、gettextのドキュメントを参照してください。Freeciv翻訳の技術的詳細については国際化を参照してください。

目次

参加するには[]

ロケールがすでにサポートされている場合は、既存のメンテナに連絡してみてください。 既存のロケールのリストと現況、連絡先の詳細については、翻訳ページを参照してください。 また、既存のpo-fileも調べてください。これには、最新の連絡先の詳細が含まれている可能性があります。 (ただし、翻訳が見捨てられたように見える場合は、それを引き継ぐことが適切な場合があります。)

新しいロケールを提供したい場合はfreeciv-i18n メーリングリストに投稿して意図をお知らせください。ソースツリーへのアクセスを申請して、翻訳を追加および維持できるようにすることもできますが必須ではありません。

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

新たな言語のサポート[]

たとえば、コーンウォール語(kwロケール)を追加したいとします。その場合、下記の事項を実行します。

  1. 翻訳するバージョンを決めます。
  2. GitからFreecivのソースをダウンロードしてインストールします。
  3. configure.acの、ALL_LINGUASの含まれる行に'kw'を追加します。
    変更前:
    ALL_LINGUAS="es fr"
    変更後:
    ALL_LINGUAS="es fr kw"
  4. autoConfツールを再生成します。
    $ ./autogen.sh
  5. Freecivをconfigureします。
    $ ./configure
  6. translation/coreディレクトリに移動します。
    $ cd ./translation/core
  7. freeciv-core.potファイルをmakeします。
    $ make freeciv-core.pot
  8. freeciv-core.potをkw.pox(予備の.poファイル)にコピーします。
    $ cp freeciv-core.pot kw.pox
  9. kw.poxファイルを編集してすべてのエントリを翻訳します。
  10. kw.poxのファイル名をkw.poに変更します。
    $ mv kw.pox kw.po
  11. kw.gmoファイルをmakeします。
    $ make kw.gmo

(ただし、これが唯一の方法ではありません。このページからあなたの作業するバージョンの最近のfreeciv.potを入手してステップ8までスキップできます。)

poeditがエラーになるときは[]

新しいpoファイルを保存しようとしたときにpoeditがエラーを返す場合は、ファイルの最上部から次の行を削除してください。

#, fuzzy msgid "" msgstr ""

翻訳の更新[]

コードは常に変更されているため、新たな文章が追加されたり、古い文章が変更または削除されたりします。上記の手順に従って行った翻訳を更新したいとします。その場合、下記の手順を実行する必要があります。

  1. Freecivソースをダウンロードしてインストールします。
    (これは既存のkw.poファイルを含みます。)
    po翻訳ファイルにすばやくアクセスするために、このページで最近生成されたファイルを取得できます。
  2. Freecivをconfigureします。
    $ ./configure
  3. 作業中の翻訳ディレクトリごとに以下のことを行います。(2.4以前ではpoのみ、2.5以降はtranslations/freeciv、translations/nationsなど)
    1. 翻訳ディレクトリに移動します:
      $cd ./translations/freeciv
    2. 補助.poファイルを作成します。
      $make kw.pox
      (これにはソースコード中の以前の翻訳と変更点のマージが含まれています。)
    3. kw.poxファイルを編集して、すべてのエントリを更新します。
    4. kw.poxの名前をkw.poに変更します。
      $mv kw.pox kw.po
    5. kw.gmoファイルを作成します:
      $make kw.gmo

新しいブランチでは、翻訳ディレクトリでmake update-poを使用できます。これにより、.potファイルが更新されてから、すべての.poファイルが更新されます。ソースディレクトリのルートでmake installを実行して、コンパイル済みの.gmoファイルをインストールし、実行時に翻訳を確認することを忘れないでください。

作業するブランチの選択[]

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

  • Freecivの最新の公開安定版(現在は3.0.7)のブランチを確認しましょう。よりバグフィックスを進めたリリースがこのブランチから作成される可能性があります。文字列は比較的安定しています。
  • Freeciv.orgのダウンロードページで、ベータリリースが最近出ていないか確認しましょう。もしあれば、今後数カ月のうちにいくつかのリリースがこのブランチから作成される可能性がより高いでしょう。新しい翻訳を開始し、完了するまでに時間がかかると予想される場合は、完了する前に開発が終了する可能性のある安定したブランチではなく、ベータブランチまたは開発ブランチから開始することをお勧めします。 ただし、文字列はより不安定になります。

マスターブランチで直接作業することは避けるのが最善です。これは、新機能が開発され文字列が不安定であり、リリースにならない文字列を翻訳することになる場合があるためです。古いブランチで行われた作業はいつでも新しいブランチに移行できるため、古いブランチを選択してもかまいません。疑問がある場合は、freeciv-i18nでアドバイスを求めてください。

作業する文字列の選択方法[]

Freeciv 2.5以降、翻訳可能な文字列はいくつかのセットに分割されました。

freeciv/coreゲームエンジンで使用されるコア文字列、提供されたルールセットとシナリオ、および提供されたルールセット内の比較的少数の文明のセット。すべてのローカリゼーションには、このセットを含める必要があります。 (S3_0以降はcoreに名前が変更されました。)nations拡張された文明のセット。これには何百もの追加の文明の説明が含まれており、多くのテキストが追加されますが、すべての寄稿者が維持することを約束しているわけではありません。これらの文明はアクセスするのは簡単ですが、デフォルトではプレーヤーに表示されなくなりました。プレイヤーは、文明名がローカライズされていない可能性があるという警告を受け取ります。
(2.4以前のバージョンではこれらは文字列のメインセットに含まれていましたが、多くのローカリゼーションで完全に翻訳されていませんでした。)ruledit(2.6から)ルールセットエディタに関連する文字列の小さなカタログ。これらは、translationsディレクトリの下に個別の文字列カタログとして保持され、それぞれに独自のfreeciv * .pot と言語 .po ファイルがあります。(現在、単一のカタログでこれらすべての文字列を処理したい翻訳者や、文字列カタログ間の競合/重複を調整するための適切なサポートはありません。)

2.4以前には、単一の文字列カタログ( po )がありました。ローカリゼーションを分割されたファイルに移行することは少し複雑であり、開発者に任せるのが最善です。 freeciv-i18n で質問してください。 (勇敢な人のために、これを支援するスクリプトがGNAPATCH#4650に添付されています。)休止中の翻訳はすでに全て移行されています。

2つのブランチの同期[]

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

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

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

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

例:

make freeciv-core.potmsgmerge --compendium=de.po ../../stable/translations/core/de.po freeciv-core.pot -o de.pox

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

最新のfreeciv*.potファイルの作成[]

(既にあるファイルに頼らずに)最新のfreeciv*.potファイルを自力で作成するには、下記の手順を実行します。

  1. Gitリポジトリから最新のFreecivソースをチェックアウトします。
    Gitの使用方法については、ここを参照してください。
  2. Freecivをconfigureします。
    $ ./configure
  3. ディレクトリに移動します。(2.5以降ではtranslations/freeciv やtranslations/coreなど):
    $ cd ./translations/core
  4. freeciv-core.potファイルをmakeします。
    $ make freeciv-core.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は、原文の何番目の引数をここに代入したいのか、その番号を指定します。

引数が混在している場合(たとえば、%sと%dの場合、項目に番号を付ける必要があることに注意)、たとえば、"%s and %d other unit lost to an attack from the %s %s"の引数の順序を変更するには、これらは「%3$s の %4$sからの攻撃により、%1$s と %2$d個の他のユニットが失われました」となります。

文字列にすでに数値が含まれている場合、たとえば"%2d: The %s ruler %s scored %d points"の場合、そのような数値と文字の組み合わせを1つのかたまりであるかのように扱います。したがって「%2d: %s の統治者 %s が %d ポイントを獲得」のようになります。

よくあるエラーの確認[]

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

まず、.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 \n""Language-Team: LANGUAGE \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-i18nリストに投稿して、誰かにこれを依頼することができます。)これには、Gitチェックアウトとツリーへの書き込みアクセスが必要です。

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

% git commit --message "what I did with the po file, updates etc." translations/core/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/xgettextfound 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以上でなければ)。



特に記載のない限り、コミュニティのコンテンツはCC BY-SAライセンスの下で利用可能です。

シェアボタン: このページをSNSに投稿するのに便利です。


最近更新されたページ

左メニュー

左メニューサンプル左メニューはヘッダーメニューの【編集】&gt;【左メニューを編集する】をクリックすると編集できます。ご自由に編集してください。掲示板雑談・質問・相談掲示板更新履歴最近のコメントカウン...

高山部隊

高山部隊U.alpine troops.png生産コスト50維持コストシールド食料不幸101必要条件戦術旧式化するなし次世代なし体力移動力攻撃力2015火力視界防御力125輸送燃料00地形効果を無視し...

騎馬兵

騎馬兵U.horsemen.png生産コスト20維持コストシールド食料不幸101必要条件騎乗旧式化するなし次世代騎士体力移動力攻撃力1022火力視界防御力121輸送燃料00ユニットのマニュアルページヘ...

騎士

騎士U.knights.png生産コスト40維持コストシールド食料不幸101必要条件騎兵隊旧式化するチャリオット, 騎馬兵次世代竜騎兵体力移動力攻撃力1024火力視界防御力122輸送燃料00特定の防御...

騎兵隊

騎兵隊U.cavalry.png生産コスト60維持コストシールド食料不幸101必要条件戦術旧式化する竜騎兵次世代機甲部隊体力移動力攻撃力2028火力視界防御力123輸送燃料00都市で解散することで生産...

駆逐艦

駆逐艦U.destroyer.png生産コスト60維持コストシールド食料不幸101必要条件電気学旧式化する装甲艦次世代なし体力移動力攻撃力3064火力視界防御力184輸送燃料00都市で解散することでユ...

関連リンク

非公式wikiに関連リンクの記事がありますFreeciv非公式wiki 攻略情報満載。初心者でも熟練者でもどうぞ!公式Twitteren:Related_links 英語版の関連リンクFreeciv基...

開拓者

開拓者U.settlers.png生産コスト40維持コストシールド食料不幸110必要条件なし旧式化するなし次世代なし体力移動力攻撃力2010火力視界防御力121輸送燃料00開拓者はゲームの鍵となるユニ...

長槍兵

長槍兵U.pikemen.png生産コスト20維持コストシールド食料不幸101必要条件封建主義旧式化するファランクス, 戦士次世代マスケット兵体力移動力攻撃力1011火力視界防御力122輸送燃料00ユ...

都市

概要 | 操作 | 地形 | 都市 | ユニット | 戦闘 | 経済 | 外交 | 政治体制 | 科学技術 | 世界の不思議 | 都市建造物 | マニュアルのトップページこのマニュアルはまだver3....

輸送船

輸送船U.transport.png生産コスト50維持コストシールド食料不幸101必要条件産業化旧式化するガレオン船次世代なし体力移動力攻撃力3050火力視界防御力183輸送燃料80陸上ユニットを8体...

貨物運送車

貨物運送車U.freight.png生産コスト50維持コストシールド食料不幸000必要条件株式会社旧式化するキャラバン次世代なし体力移動力攻撃力1020火力視界防御力121輸送燃料00ユニットのマニュ...

装甲艦

装甲艦U.ironclad.png生産コスト60維持コストシールド食料不幸101必要条件蒸気機関旧式化するフリゲート艦次世代駆逐艦体力移動力攻撃力3044火力視界防御力124輸送燃料00都市で解散する...

翻訳

翻訳 |地域化 |国際化 |navbarの編集Freecivを20以上の言語でプレイできることはご存知でしょうか?Freecivの開発チームでは、キーワードと文章を翻訳して他の言語でもプレイできるよう...

編集モード

ver2.2から「編集モード」が追加され、マップ作成がやや容易に行えるようになった。非公式wikiに編集モードの記事がありますできること[]ユニットや都市を新たに配置する、あるいは削除する。地形や特産...

総督府

Original: CVS-1.2 Translator: SAWADA Katsuya 非公式wikiに総督府の記事があります目次1 総督府(Citizen Management Agent, 市民...

経済

概要 | 操作 | 地形 | 都市 | ユニット | 戦闘 | 経済 | 外交 | 政治体制 | 科学技術 | 世界の不思議 | 都市建造物 | マニュアルのトップページこのマニュアルはまだver3....

竜騎兵

竜騎兵U.dragoons.png生産コスト50維持コストシールド食料不幸101必要条件指揮旧式化する騎士次世代騎兵隊体力移動力攻撃力2025火力視界防御力122輸送燃料00都市で解散することで生産コ...