翻訳の流れ - Amnesia: Rebirth



テキストの翻訳

ゲーム内のテキストは.langファイルにXML形式で記述されており、それぞれのテキストはEntryタグのテキストとして記述されています。具体的には次のようなかたちです。
<Entry Name="NewGame">NEW GAME</Entry>
 
このテキスト部分を翻訳します。
<Entry Name="NewGame">最初からゲームを開始</Entry>
 
原文を残さなくても日本語データの作成には影響しませんが、対になる原文を後で確認しておきたいときは隣にコメントアウトしてくっつけておきましょう。このあと変換するときに無視されます。(注)原文の最後がハイフンで終わっている場合、"- -->"のように後ろにスペースを入れます。"--->"の形はLangEditorに怒られました。
<Entry Name="NewGame">最初からゲームを開始</Entry><!--NEW GAME-->
 

翻訳する内容や、翻訳済みの範囲についてはAmnesia: Rebirth翻訳文を参照してください。

文字をコードポイントへ変換

日本語の文字をゲームエンジンが扱えるコードポイント表現に変換します。
<Entry Name="NewGame">[u26368][u21021][u12363][u12425][u12466][u12540][u12512][u12434][u38283][u22987]</Entry><!--NEW GAME-->
 

一文字ずつUnicodeのコードポイントに変換すると上の例のようになります。この変換を行うため、SOMAまでは作業者が自分でスクリプトを書く必要があったのですが、Amnesia: Rebirthからは公式ツールが同梱されているのでそちらを使いましょう。*1

steamの「ローカルファイルを閲覧」で開ける位置にあるLangEditor.exeを起動。メニューのFile->Openで日本語に翻訳したファイル(コードポイント変換前)を開きます。
すると画像のように読み込まれるので、メニューのFile->Save Asで別名保存すればコードポイント変換後のファイルが出力されます。最初からLangEditor.exeで直接翻訳することもできなくはないのですが、コードポイント変換前のテキスト表現のかたちで出力する機能は搭載されていないようなので、翻訳を共有するためlangファイルはテキストエディタで編集するようにしてください。

日本語フォントの作成

外部ツールのBitmap Font Generaterを使用します。詳細はBitmap Font Generatorの使用法を参照してください。

例としてNoto Sans Japaneseを使ってフォントファイルを作ります。公式の中国語用フォントにNoto Sans Simplified Chineseが使われているため、ライセンス的にも問題なさそうです。

Amnesia: Rebirthでは56,72,96のサイズ別にフォントが用意されているので、Bitmap Font Generatorで次のフォントを出力します。
  • noto_sans_jp_56.fnt
  • noto_sans_jp_72.fnt
  • noto_sans_jp_96.fnt

これで出力したフォントファイルをアップロードしておきます。
https://drive.google.com/file/d/1ZaPpsCuOKCOH4ndiamHwCC9x4ZcQproU/view?usp=sharing
このフォントファイルには次の文字が含まれています。
  • U+0 - U+7F (必須)アルファベット、記号
  • U+3000 - U+303F 句読点、括弧など
  • U+3040 - U+309F ひらがな
  • U+30A0 - U+30FF カタカナ
  • U+4E00 - U+9FFF この範囲の漢字のうち、常用漢字2136字

作成したフォントはMODのfontsディレクトリに配置して使用します。

MODパッケージ用ファイルの作成

MODディレクトリの作成

ゲームのmodsディレクトリの下にjapanese_languageディレクトリを作成して、ここを日本語化MOD用ディレクトリとして使います。

ここまでに作成したものを次の場所に配置します。
作成したファイル 配置先
base_japanese.lang mods/japanese_language/config/
japanese.lang mods/japanese_language/config/lang_main/
作成した.fntファイル mods/japanese_language/fonts
フォント用.ddsファイル mods/japanese_language/fonts

MOD必須ファイルの作成

オリジナルのconfig/main_init.cfgから、最低限変更が必要な箇所をmod側に記載します。(mods/japanese_language/config/main_init.cfgに記載)
<ConfigFiles
  Resources = "resources.cfg" 
  Game = "config/game.cfg"
  DefaultGameLanguage = "japanese.lang"
/>
 
<Directories
  MainSaveFolder = "JpLang"
  BaseLanguageFolder = "config/"
  GameLanguageFolder = "config/lang_main/"
/>
 
<Variables
  GameName = "Amnesia: Rebirth [JP MOD]"
/>
 
オリジナルのconfig/game.cfgをMOD側にコピーして、<Voice>と<LoadScreen>に次の属性を追加します。
<Voice
  Font_japanese = "noto_sans_jp_72.fnt"
/>
 
<LoadScreen
  Font_japanese = "noto_sans_jp_56.fnt"
/>
 

MOD直下のresources.cfgでMODが使用するリソースのパスを指定します。
<Resources>
	<Directory Path="/config" AddSubDirs="true"/>
	<Directory Path="/fonts" AddSubDirs="true"/>
	<Directory Path="/script" AddSubDirs="true"/>
</Resources>
 

MOD直下のentry.hpcでMODのタイトルなどのメタデータを記述します。
<?xml version="1.0" encoding="UTF-8"?>
<Content
  Version="0.1"
  Type="StandAlone"
  Title="Japanese Language MOD"
  Author="volunteers"
  Description_english="Add japanese language text, fonts."
  UID="volunteers.japanese_language_mod"
  InitCfg="config/main_init.cfg"
/>
 

これらはMODとして使用するために必須となります。

スクリプト追記

script/custom/modules/FontHandler.hpsのオリジナルをMOD側にコピーして、日本語フォントがゲーム内で使えるように追記します。

cScrFontHandlerクラスのGetFontメソッド内、msLanguage言語チェックの中に次を追加(コメントで囲った範囲)
else if (msLanguage == "simplified_chinese")
{
  switch (aFontType)
  {
  case eFontType_MainMenu:
  case eFontType_MainMenu_InfoBox:
  case eFontType_GamepadPrompt:
  case eFontType_Hints:
  case eFontType_Subtitles:
  case eFontType_Readable:
  case eFontType_MemoryCylinder_Big:
  case eFontType_MemoryCylinder_Small:
  case eFontType_Credits:
  case eFontType_Sketchbook:
    sFont = "noto_sans_sc";
    break;
  }
}
//==========================
// Japanese Language MOD
else if (msLanguage == "japanese")
{
  switch (aFontType){
  case eFontType_MainMenu:
    sFont = "noto_sans_jp";
    break;
  case eFontType_Sketchbook:
    sFont = "noto_sans_jp";
    break;
  case eFontType_MainMenu_InfoBox:
  case eFontType_GamepadPrompt:
  case eFontType_Hints:
  case eFontType_Subtitles:
  case eFontType_Readable:
  case eFontType_Credits:
    sFont = "noto_sans_jp";
    break;
  case eFontType_MemoryCylinder_Big:
    sFont = "noto_sans_jp";
    break;
  case eFontType_MemoryCylinder_Small:
    sFont = "noto_sans_jp";
    break;
  }
}
//===========================
 

同様にscript/custom/modules/MenuHandler.hpsもコピーして、オプション画面で"japanese"を選択できるようにします。

cScrMenuHandlerクラスのInitiateメソッド内、「// Get lang files」の後に新しい項目を追記します。
mvLangFiles.push_back("brazilian_portuguese");
mvLangFiles.push_back("english");
mvLangFiles.push_back("french");
mvLangFiles.push_back("german");
mvLangFiles.push_back("italian");
mvLangFiles.push_back("russian");
mvLangFiles.push_back("spanish");
mvLangFiles.push_back("simplified_chinese");
//======================
// Japanese Language MOD
mvLangFiles.push_back("japanese");
//======================
 

これで最低限動くはずです。MODの起動はメインメニューのcustom storyから選択します。

いちいちMODを読み込むのが面倒な場合は、ゲームディレクトリに
AmnesiaRebirth.exe -mod local:japanese_language
という内容でbatファイルを作るとはじめから日本語MODが起動するbatファイルとして使えます。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2023年02月13日 20:40
添付ファイル

*1 Amnesia: the Dark Descentでも試したところ、そのまま使えました。なので、コードポイント通りのフォントファイルを用意すれば、langファイルにそのままUTF-8で記述したテキストをLangEditorで変換できます。おそらくAmnesia: A Machine for Pigs, SOMAでもそのまま使えると思います。Penumbraシリーズではコードポイント制限問題があるため、結局変換スクリプトは必要になるでしょう。