左メニュー
左メニューサンプル左メニューはヘッダーメニューの【編集】>【左メニューを編集する】をクリックすると編集できます。ご自由に編集してください。掲示板雑談・質問・相談掲示板更新履歴最近のコメントカウン...
gettextはFreecivが使用している国際化/地域化システムです。
.poファイルは人が編集可能なテキストファイルです。1カラム目に文字'#'がある行はコメント行で、行の終端までがコメントになります。gettextプログラムでは、特殊な"フラグ"や有益な情報を示すためにもコメント行が使用されます。
すべての.poファイルには"エントリ"が含まれています。1つのエントリは、翻訳が必要な文字列それぞれに対応しています。
典型的なエントリは以下のようになります。
#: client/civclient.c:104 server/civserver.c:242 #, c-format msgid "Usage: %s [option ...]\n" msgstr "Utilisation: %s [option ...]\n"エントリの第1行は"#:"で始まっていますが、これは翻訳対象文字列がソースコード内で含まれている場所をすべて挙げたリストになっています。リストが複数行になる場合もあります。
第2行は"#,"で始まっていますが、ここには"フラグ"が含まれています。フラグ行は常に存在するわけではありません。今回のケースでは、フラグが1つのみ(", c-format")指定されています。このフラグは、翻訳対象文字列がCフォーマットの文字列であることを意味しています。
第3行は"msgid"で始まっていますが、これは翻訳対象の英語文字列です。この文字列は複数行にわたることもあります。たとえば以下のようになります。
msgid "" "Usage: %s [option ...]\n" "Valid options are:\n"第4行は"msgstr"で始まっていますが、これは翻訳後の文字列です。この文字列は複数行にわたることもあります。たとえば以下のようになります。
msgstr "" "Utilisation: %s [option ...]\n" "Les options valides sont:\n"(以下の"make"コマンドは、'./configure'を済ませていることを仮定しています)
翻訳対象となる文字列は、"マーク付け"をしたソースファイルから'xgettext'プログラムが自動的に抽出します。ソースファイルが正しくマーク付されているかを確認するのはプログラマーの仕事です。
慣例として、'xgettext'は'<パッケージ>.pot'という名前のファイルを生成します(私たちの場合は'freeciv.pot'となります。ビルド後に'./po'ディレクトリ内で確認できます)。'freeciv.pot'をリビルドするには、cdで'./po'ディレクトリに移動し、"make freeciv.pot"と入力します。
ただし、'freeciv.pot'は「空っぽの」地域化ファイルです('.po'ファイルと同じフォーマットですが、"msgid"文字列があるだけで"msgstr"文字列は含まれていません)。今度は、"新しい"'freeciv.pot'ファイルと、手持ちの"既存の"'<言語>.po'ファイルを"マージ"します。これは'msgmerge'プログラムの仕事です。
やはり慣例として、'msgmerge'は'<言語>.pox'という名前のファイルを生成します(たとえば'de.pox')。'<言語>.pox'をビルドするには、cdで'./po'ディレクトリに移動し、"make <言語>.pox"と入力します(たとえば"make de.pox")。こうすると、既存の'<言語>.po'と新しい'freeciv.pot'を読み込んで、マージした新しい'<言語>.pox'ファイルを生成します。
ここで、新しい'
'msgmerge'は、新たなファイルのエントリのいくつかにフラグを付けます。フラグの意味を覚えておいてください。
注: すべての'.po'ファイルにはあいまいエントリが必ず1つ存在します。それはファイルの先頭にあり、"msgid"の文字列が空になっているエントリです。
#, fuzzy msgid "" msgstr "" "Project-Id-Version ...このエントリの"#, fuzzy"フラグは決して削除してはいけません。これはフェイクエントリです。ここを翻訳可能にしてしまうと、ランタイムライブラリを混乱させてしまいます。
新しい'.po'ファイルの編集が終わったら、'msgfmt'を使用して、'<言語>.gmo'という名前のランタイム翻訳ファイルを生成します。'<言語>.gmo'をビルドするには、cdで'./po'ディレクトリに移動し、"make <言語>.gmo"と入力します(たとえば、'pt.gmo'をビルドする場合は"make pt.gmo")。Freecivを完全ビルドした場合には、すべての'.gmo'ファイルもビルドされます。
'msgfmt'には、デフォルト以上に細かくチェックする機能があります。"-c"パラメータは言語特有のチェックを要求するものです。たとえば、'./po'ディレクトリで"msgfmt -c -o junk.gmo <言語>.po"と入力します。すると、Cフォーマット文字列の翻訳時に発生するエラーを表示します。
残念ながら、Freecivで "msgfmt -c"をすると、実際には問題にならないことが問題として報告されることがあります。そこで、Freecivでは独自の'.po'ファイルチェッカー'check_po.pl'を用意しています。
'check_po.pl'は'./po'ディレクトリにあります。'./po'ディレクトリから実行するには、"./check_po.pl <言語>.po"と入力します。すると、'.po'ファイル内のエラーが表示されます。このエラーには、実際に問題となるであろうものが挙げられます。
私はいつもソースツリー内から実行しています(テストのためだけにインストールしたくはないのです)。私がしている方法はエレガントではないですが、使えているのでいいのです。すべてのロケールディレクトリから、私の開発ディレクトリ内のそれぞれの'.gmo'ファイルへのシンボリックリンクを作成します。たとえば以下のようになります(環境によってパスは異なります)。
su # パーミッション確保 cd /usr/local/share/locale/<言語>/LC_MESSAGES ln -s ~/prj/freeciv/po/<言語>.gmo freeciv.mo exit(リンクは'freeciv.mo'と呼ばれていますが、これがリンクしているファイルはあなたが作成した'<言語>.gmo'になっていることに注意してください)
これで、'<言語>'ロケールをテストしたいと思ったら、以下のようにすればよくなりました。
LANG=<言語> ./ser ...あるいは
LANG=<言語> ./civ ...バージョン2.6の場合[]ソースが.moファイルを探している場所に注意を払う必要があります。 これを行うには、ユーティリティディレクトリのMakefileを確認する必要があります。 現在${datarootdir}/localeであるLOCALEDIRの値を見つけたいと考えています。 datarootdirは${prefix}/shareで、プレフィックスは/usr/localです。 したがって、ソースは/usr/local/share/localeでmoファイルを探しています(現在のディストリビューションはおそらく別のディレクトリを使用しています。これで問題ありません)。ソースから再生するには、必要に応じてすべての変数を設定する2つのスクリプトからfreecivを呼び出す必要があります。
sudo mkdir /usr/local/share/localesudo mkdir /usr/local/share/locale/<言語>sudo mkdir /usr/local/share/locale/<言語>/LC_MESSAGESsudo ln -s ~/prj/translations/freeciv/<言語>.gmo /usr/local/share/locale/<言語>/LC_MESSAGES/freeciv.mosudo ln -s ~/prj/translations/nations/<言語>.gmo /usr/local/share/locale/<言語>/LC_MESSAGES/freeciv-nations.mo現在freeciv.moとfreeciv-nations.moの2つの.moファイルがあるため、指示は次のようになります。
./fcser ... #オプションを設定してサーバーを立ちあげます./fcgui ... #クライアントオプションを加えます。たとえば -t amplioシェアボタン: このページをSNSに投稿するのに便利です。
左メニューサンプル左メニューはヘッダーメニューの【編集】>【左メニューを編集する】をクリックすると編集できます。ご自由に編集してください。掲示板雑談・質問・相談掲示板更新履歴最近のコメントカウン...
ニュース...
高山部隊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都市で解散する...
(本記事は英語公式wikiでKernigh氏が執筆された記事の和訳です。(本記事の翻訳、及び投稿先選定にあたり、それぞれ定期鯖のJames氏、KINOKO氏のアドバイスを頂きました。ありがとうございま...
翻訳 |地域化 |国際化 |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都市で解散することで生産コ...