Skyrimの日本語化方法

Skyrimの日本語化手順の説明。SkyrimSE向けの手順は[こちら](https://qiita.com/SkyLaptor/items/8531567d99643c54d03d)
なおLegendary Edition(3DLC)であることを基準とするため、それ以外の環境であれば適宜読み替えること。
いわゆる**旧方式**の説明。新方式はCreationKitが起動できないため、Mod製作者であればこちらを選択すべきだろう。
ついでにtesvTranslatorのセットアップも同時に行うこととする。

## 事前準備
### Skyrim環境のバックアップとクリーニング

Nexus Mod ManagerやModOrganizerといったMODマネージャー類を使用しているのであれば、すべてのMODを無効化する。
手動インストールの場合は手作業で必要なファイルをバックアップする。

Skyrimをアンインストールする。
![uninstall.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/16b3630d-fe5a-876c-7dc9-26264a96e7a8.jpeg)


以下のフォルダ内にある残留ファイルを消す。必要に応じてバックアップもしておくこと。

* C:\Users\\{ユーザー名}\Documents\My Games\Skyrim
* C:\Users\\{ユーザー名}\AppData\Local\Skyrim
* Skyrimインストール場所 (例: G:\SteamLibrary\steamapps\common\Skyrim)

### ツールのインストール
#### tesvTranslator
以下のリンクからダウンロードし、適当な場所に解凍する。
https://www.nexusmods.com/skyrimspecialedition/mods/134/

#### BSABrowser
以下のリンクからダウンロードし、適当な場所に解凍する。
https://www.nexusmods.com/skyrimspecialedition/mods/1756/



## 日本語化作業
### 日本語版Skyrimデータの取得
Steam上のゲームプロパティを開き、`日本語 (Japanese)`に設定してインストールを行う。
![language_japanese.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/36e1bc94-7000-4265-81ff-9503d23578e6.jpeg)

インストール後、念のためファイルの整合性チェックを行うこと。
![check_consist.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/35f1f281-01fa-b757-159a-1a7ed59cfac3.jpeg)

何度やっても1個ファイルが必ず認証に失敗するため、2回ほど整合性チェックを実行して1ファイルであれば次に進んでよい。
![one_error.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/2a396518-9736-a160-31b6-cb71ec7f3c55.jpeg)



Skyrimインストールフォルダを開き、中身を丸ごと適当な場所にコピーする。圧縮して保存するとなお良い。

コピーが完了したら、日本語版Skyrimはアンインストールする。
インストールフォルダに残留ファイルが残った場合には、それもきれいに削除しておく。


### 英語版Skyrimデータの取得
Steam上のゲームプロパティを開き、`English (英語)`に設定してインストールを行う。
![language_english.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/de8518a2-bee9-7023-0132-69dee24c2bad.jpeg)

インストール後、念のためファイルの整合性チェックを行うこと。
![check_consist.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/35f1f281-01fa-b757-159a-1a7ed59cfac3.jpeg)

英語版も何度やっても1個ファイルが必ず認証に失敗するため、2回ほど整合性チェックを実行して1ファイルであれば次に進んでよい。
![one_error.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/2a396518-9736-a160-31b6-cb71ec7f3c55.jpeg)

Skyrimインストールフォルダを開き、中身を丸ごと適当な場所にコピーする。圧縮して保存するとなお良い。


### 言語関連データを取り出す
コピーしておいた日本語版と英語版から、言語に関連するファイルを抽出してゆく。
作業用として`translate`といった名前でフォルダを適当な場所に作っておく。

#### 英語版
コピーしておいた**英語版Skyrimデータ**の`Data\Interface`フォルダと、`Data\Strings`フォルダをそのまま作業フォルダにコピーする。

さらに、コピーしておいた**英語版Skyrimデータ**の`Data\Skyrim - Dawnguard.bsa`、`Data\Skyrim - Dragonborn.bsa`、`Data\Skyrim - HearthFires.bsa`の3ファイルをBSABrowserで開いて以下のファイルを作業フォルダに抽出する。

BSA内のファイル一覧が表示されるので、以下のファイルを選択して右クリック→Extract Foldersで、作業フォルダに抽出する。
左下の検索ウィンドウにenglishと入力するとすぐに出てくる。

![extract_engdlc_strings.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/7d6776df-582d-3798-782e-343ad3ca3dad.jpeg)

![extract_file.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/dfbb677e-9ff8-7250-7517-d6453c37ba8a.jpeg)

```:英語版DLC抽出対象のファイル
strings\dawnguard_english.dlstrings
strings\dawnguard_english.ilstrings
strings\dawnguard_english.strings
strings\dragonborn_english.dlstrings
strings\dragonborn_english.ilstrings
strings\dragonborn_english.strings
strings\hearthfires_english.dlstrings
strings\hearthfires_english.ilstrings
strings\hearthfires_english.strings
```

各DLC毎に3ファイルずつ、合計9ファイルを取り出すことになる。

作業フォルダのStringsフォルダ内に以下の内容でバッチファイル(.bat)を作成して実行する。

```bat:tesvTranslater用言語ファイルコピーバッチファイル1
@echo off
setlocal
cd /d %~dp0

mkdir backup
move /Y dawnguard_english.dlstrings backup\
move /Y dawnguard_english.ilstrings backup\
move /Y dawnguard_english.strings backup\
move /Y dragonborn_english.dlstrings backup\
move /Y dragonborn_english.ilstrings backup\
move /Y dragonborn_english.strings backup\
move /Y hearthfires_english.dlstrings backup\
move /Y hearthfires_english.ilstrings backup\
move /Y hearthfires_english.strings backup\
copy skyrim_english.dlstrings backup\
copy skyrim_english.ilstrings backup\
copy skyrim_english.strings backup\
copy update_english.dlstrings backup\
copy update_english.ilstrings backup\
copy update_english.strings backup\

pause
exit
```

バックアップ後はバッチファイルを削除する。


#### 日本語版
BSABrowserを起動し、コピーしておいた**日本語版Skyrimデータ**の`Data\Skyrim - Interface.bsa`を開く。

![extract_jpninterface.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/667bc6d0-bb9f-9f6e-5f3e-d792fe264f3d.jpeg)


```:日本語版抽出対象のファイル
interface\book.swf
interface\fonts_jp.swf
```

さらに、コピーしておいた**日本語版Skyrimデータ**の`Data\Skyrim - Dawnguard.bsa`、`Data\Skyrim - Dragonborn.bsa`、`Data\Skyrim - HearthFires.bsa`の3ファイルを開いて以下のファイルを作業フォルダに先程と同じように作業フォルダに抽出する。
japaneseで検索するとすぐに出てくる。

![extract_jpndlc_strings.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/e0bc9287-c98e-a805-5c2f-01aa65c1ce34.jpeg)


```:日本語版DLC抽出対象のファイル
strings\dawnguard_japanese.dlstrings
strings\dawnguard_japanese.ilstrings
strings\dawnguard_japanese.strings
strings\dragonborn_japanese.dlstrings
strings\dragonborn_japanese.ilstrings
strings\dragonborn_japanese.strings
strings\hearthfires_japanese.dlstrings
strings\hearthfires_japanese.ilstrings
strings\hearthfires_japanese.strings
```

各DLC毎に3ファイルずつ、合計9ファイルを取り出すことになる。


最後に、コピーしておいた**日本語版Skyrimデータ**の`Data\Interface\Translate_JAPANESE.txt`を、作業フォルダのInterfaceフォルダにコピーする。


### Skyrim1.9用日本語差分パッチの実行
以下のURLからパッチをダウンロードする。
http://cyclotron.moe.hm/up/skyrim/fileup/src/cysk0026.7z.html

ダウンロードしたファイルを解凍すると以下のexeが出てくるので、好きなほうを実行する。
* 公式日本語に準拠: `Skyrim1.9.26.0_English→公式日本語版.exe`
* 誤訳を修正: `Skyrim1.9.26.0_English→誤訳修正版.exe`

![patch_step1.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/22d0b46d-d47b-22d8-a8fb-068bcf423316.jpeg)

フォルダの指定場所は作業用フォルダを指定する。

![patch_step2.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/b5dc19e8-972f-263f-4da0-e22b39a608d4.jpeg)

![patch_step3.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/7a2249f9-6bf6-57b3-074e-b78ec3945b74.jpeg)

oldファイルは不要であるため、"終了時にバックアップファイル(*.old)を削除する" にチェックを入れて終了する。


作業フォルダのStringsフォルダ内に以下の内容でバッチファイル(.bat)を作成して実行する。

```bat:tesvTranslater用言語ファイルコピーバッチファイル2
@echo off
setlocal
cd /d %~dp0

copy dawnguard_japanese.dlstrings backup\
copy dawnguard_japanese.ilstrings backup\
copy dawnguard_japanese.strings backup\
copy dragonborn_japanese.dlstrings backup\
copy dragonborn_japanese.ilstrings backup\
copy dragonborn_japanese.strings backup\
copy hearthfires_japanese.dlstrings backup\
copy hearthfires_japanese.ilstrings backup\
copy hearthfires_japanese.strings backup\
copy Skyrim_English.DLSTRINGS backup\Skyrim_Japanese.DLSTRINGS
copy Skyrim_English.ILSTRINGS backup\Skyrim_Japanese.ILSTRINGS
copy Skyrim_English.STRINGS backup\Skyrim_Japanese.STRINGS
copy Update_English.DLSTRINGS backup\Update_Japanese.DLSTRINGS
copy Update_English.ILSTRINGS backup\Update_Japanese.ILSTRINGS
copy Update_English.STRINGS backup\Update_Japanese.STRINGS

move /Y dawnguard_japanese.dlstrings dawnguard_english.dlstrings
move /Y dawnguard_japanese.ilstrings dawnguard_english.ilstrings
move /Y dawnguard_japanese.strings dawnguard_english.strings
move /Y dragonborn_japanese.dlstrings dragonborn_english.dlstrings
move /Y dragonborn_japanese.ilstrings dragonborn_english.ilstrings
move /Y dragonborn_japanese.strings dragonborn_english.strings
move /Y hearthfires_japanese.dlstrings hearthfires_english.dlstrings
move /Y hearthfires_japanese.ilstrings hearthfires_english.ilstrings
move /Y hearthfires_japanese.strings hearthfires_english.strings

pause
exit
```

バックアップ後はバッチファイルを削除する。

不要となった作業フォルダ内の`Interface\Translate_JAPANESE.txt`を削除する。

### tesvTranslatorのセットアップ
作業フォルダ内の`Strings\backup`フォルダを、フォルダごとtesvTranslatorのインストールフォルダ内にコピーし、`SkyrimStrings`と名前を変える。

`xTranslator.exe`を起動する。初回起動時にどのゲーム向けで起動するか聞かれるので`Skyrim`を選択する。

![startup_tesvtranslator.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/ff5884ce-6923-d3ec-fb3e-0f815dc0af89.jpeg)



起動時にオプション設定が開くので設定を行う。

* Directionaries and languages
    * Destination Language : japanese
    * .\data folder : Skyrimインストールフォルダ\Data
    * .\strings folder : tesvTranslatorインストールフォルダ\SkyrimStrings

![init_settings.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/d488b3bb-6a77-3a4a-c642-9e4d50fe7c4d.jpeg)

* Options...
    * Intarface : Japanese

![setting2_option.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/f063ddf5-f329-f953-676e-e2c21268a51e.jpeg)


インターフェース言語をJapaneseに設定してOKを押すと、自動でツールが再起動して日本語表示になる。

自動翻訳を有効にするため、辞書を作成する。
メニューバーの "オプション" から、"言語と辞書" を選択し、以下のように設定して辞書作成を実行する。

* 高度な辞書 (.esm + .strings)
* .\stringsフォルダのstringファイルのみ使用する(bsa/ba2を無視)

![create_dict.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/b0016e32-956f-f1c3-9fd8-bb56f21c2948.jpeg)

少し経ったのち辞書が作成される。これで自動翻訳が行われるようになる。
![created_dict.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/74e044f1-f403-1813-2736-329cde2b7133.jpeg)

#### コードページの設定
Skyrimのデフォルトコードページ設定がデフォルトでは`1252`となっているため、`UTF-8`に直す。
`tesvTranslatorインストールフォルダ\Data\Skyrim\codepage.txt`を開いて、以下のように修正する。

```:codepage.txt
english=1252
↓
english=utf8
```

### フォント設定ファイルの作成
以下の内容で`作業フォルダ\interface`フォルダに`fontconfig.txt`という名前でテキストファイルを作成する。**文字コードはUTF-8にすること！**
メモ帳はShift-JISになってしまうため、[サクラエディタ](http://sakura-editor.sourceforge.net/)や[SublimeText](https://www.sublimetext.com/)などのテキストエディタを使ってUTF-8で保存すること。

```txt:interface\fontconfig.txt
fontlib "Interface\fonts_console.swf"
fontlib "Interface\fonts_en.swf"
fontlib "Interface\fonts_jp.swf"
map "$ConsoleFont" = "Skyrim_JP_EveryFont" Normal
map "$StartMenuFont" = "Skyrim_JP_EveryFont" Normal
map "$DialogueFont" = "Skyrim_JP_EveryFont" Normal
map "$EverywhereFont" = "Skyrim_JP_EveryFont" Normal
map "$EverywhereBoldFont" = "Skyrim_JP_EveryFont" Normal
map "$EverywhereMediumFont" = "Skyrim_JP_EveryFont" Normal
map "$DragonFont" = "Dragon_script" Normal
map "$SkyrimBooks" = "Skyrim_JP_BookFont" Normal
map "$HandwrittenFont" = "Skyrim_JP_HandWriteFont" Normal
map "$HandwrittenBold" = "Skyrim_JP_HandWriteFont" Normal
map "$FalmerFont" = "Falmer" Normal
map "$DwemerFont" = "Dwemer" Normal
map "$DaedricFont" = "Daedric" Normal
map "$MageScriptFont" = "Mage Script" Normal
map "$SkyrimSymbolsFont" = "SkyrimSymbols" Normal
map "$SkyrimBooks_UnreadableFont" = "SkyrimBooks_Unreadable" Normal
map "$CreditsFont" = "Futura Condensed" Normal
validNameChars "ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ"
```

`validNameChars`は長いため割愛した。自身のキャラクター名に使いたい文字があれば、""の中に書き足すこと。


### 音声ファイルのコピー
コピーしておいた**日本語版Skyrimデータ**の`Data\Skyrim - Voices.bsa`と`Data\Skyrim - VoicesExtra.bsa`を、作業用フォルダの直下にコピーする。
※音声は英語でも良いという人であれば、この作業は必要ない。


### 翻訳ファイルの動作確認
以上で翻訳作業が完了した。最後にファイルを見直しする。

* 作業用フォルダ
    * interface
        * book.swf
        * fontconfig.txt
        * fonts_jp.swf
        * Translate_ENGLISH.txt
    * strings
        * dawnguard_english.dlstrings
        * dawnguard_english.ilstrings
        * dawnguard_english.strings
        * dragonborn_english.dlstrings
        * dragonborn_english.ilstrings
        * dragonborn_english.strings
        * hearthfires_english.dlstrings
        * hearthfires_english.ilstrings
        * hearthfires_english.strings
        * Skyrim_English.DLSTRINGS
        * Skyrim_English.ILSTRINGS
        * Skyrim_English.STRINGS
        * Update_English.DLSTRINGS
        * Update_English.ILSTRINGS
        * Update_English.STRINGS
    * Skyrim - Voices.bsa
    * Skyrim - VoicesExtra.bsa

どれ1つとして抜けなどが無いことを確認する。何か抜けていれば初めからきちんと見直しを行うこと。

問題がなさそうであれば、丸ごと圧縮してNexus Mod Managerで導入するか、`Skyrimインストールフォルダ\Data`内に丸ごとコピーする。

今後のことも考えると、Nexus Mod Managerで導入することをおすすめする。
例えば、`Translate Japanese v1.9.32.zip`みたいな名前で導入しておけば、なにかと捗ると思う。

Skyrimを起動し、日本語化されていることを確認する。

![mainmenu.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/c6a78351-62ec-3de8-88ba-f0109d2e71cf.jpeg)

ちなみに、この方法で日本語化すると「へ スカイリム」問題は起きない模様。
言語ファイル(`Skyrim_English.STRINGS ID:0671D`)を確認したところ、該当箇所がそもそも無かった。