Thinking Skeever

Skyrim/The Witcher 3 Modについてのあれこれ。FoModの作り方、Mod導入時のトラブル事例などのニッチな話を書いていきます。a.k.a. BowmoreLover@nexusmods

Skyrim Mod導入トラブル事例:TESVTranslatorで原文・訳文が文字化けする

概要

TESVTranslatorでmodを開くと原文(または訳文)が文字化けした。

原文・訳文すべてが文字化けする場合
 f:id:thinkingskeever:20151212090442p:plain

原文の一部が文字化けする場合
 f:id:thinkingskeever:20151212090418p:plain


対策1(原文・訳文すべてが文字化けする場合)

原文・訳文ともにすべてが文字化けする場合、日本語化済みのmodをUtf8で開かなかった可能性があります。
 f:id:thinkingskeever:20151212090442p:plain

メニュー「オプション-Utf8-強制的にUtf8で開く」をチェックします。
 f:id:thinkingskeever:20151212090445p:plain

もう一度modを開きます。
 f:id:thinkingskeever:20151212090448p:plain


対策2(原文の一部が文字化けする場合)

原文の一部が文字化けする場合、Utf8で開いたことにより、欧米圏の特殊文字が文字化けした可能性があります。
 f:id:thinkingskeever:20151212090418p:plain

メニュー「オプション-Utf8-強制的にUtf8で開く」のチェックを外します。
 f:id:thinkingskeever:20151212090422p:plain

もう一度modを開きます。
 f:id:thinkingskeever:20151212090426p:plain


さらにくわしい解説

「強制的にUtf8で開く」オプションの使い分けについて

次のように使い分けましょう。
・未翻訳のmodを開くとき:チェックしない
・日本語化済みのmodを開くとき:チェックする

「強制的にUtf8で開く」オプションの意味について

TESVTranslatorはmod中に含まれる翻訳対象文字列を読み込む際、「オプションと言語の設定」画面で指定された翻訳元言語に対応したコードページを使用します。
「強制的にUtf8で開く」は、翻訳元言語の設定を無視して「強制的」にUtf8のコードページを使用するという意味です。

恐らくほとんどの方は「オプションと言語の設定」画面で翻訳元言語:英語、翻訳先言語:日本語の設定にしていると思います。
英語のコードページはWindows-1252、日本語のコードページはUtf8なので、日本語化済みのmodを普通に開くと、保存文字のコードページと読み込みコードページの不一致で文字化けします。この現象を回避するために「強制的にUtf8で開く」オプションが用意されています。

ちなみに、言語毎のコードページはTESVTranslatorインストールフォルダのcodepage.txtで定義されています。

「強制的にUtf8で開く」をチェックすると海外の文字が文字化けする理由

英語/フランス語/ドイツ語/スペイン語/イタリア語などではWindows-1252というコードページが使用されます。ラテン語由来の言語では256文字(1バイトで表現可能な文字数)もあればすべての文字が表現できるため、Asciiコードセット(128文字の基本的な文字)に特殊文字128文字を加えた256種類の文字を1文字=1バイトの形式で保存します。

一方、日本や中国などでは漢字が存在するので256文字ではとても足りません。ですので、Asciiコードセット(128文字の基本的な文字)と、コードの組み合わせで保存バイト長が可変にでき、多くの文字を表現できるUTF-8形式を使用します。

ところがUTF-8においては、Windows-1252の特殊文字(0x80以降)に対応するコードは文字の長さや種類を拡張する特殊コードとして扱われ、対応する文字が存在しません。このため不正コードと扱われ(フォールバック)、「◆にR」の記号で表示される結果となります。

他の言語でつくられたModを読み込む

Skyrimは世界中で愛されており、上記の言語以外で作られたModも存在します。言語によってはWindows-1252以外のコードページが使われています。
例えばロシア語はWindows-1251、チェコスロバキアハンガリーポーランド語はWindows-1250といった具合です。
こういったModを翻訳するには、「オプションと言語の設定」画面の翻訳元言語を変更する必要があります。
(翻訳辞書ための各言語のstringsファイルの入手が問題ですが・・・Steamの言語切替でダウンロードしなおせば揃うかも?)

中国語(おそらく韓国語も)ではUtf8が使われていますので、翻訳元言語の変更は必要なく、「強制的にUtf8で開く」を使えば良いと思われます。

文字化けした日本語化xmlファイルの存在について

原文に特殊文字が含まれていても、コードページを適切に処理すれば、正しい日本語化xmlファイルを作成できます。
 f:id:thinkingskeever:20151212090433p:plain

ところが、流通している日本語化xmlの中には、原文が文字化けした状態で作成したものが存在します。
 f:id:thinkingskeever:20151212090439p:plain

このような日本語化xmlファイルを読み込んで翻訳する場合、文字化け覚悟で「強制的にUtf8で開く」をチェックしてmodを読み込まないとうまく翻訳されません。

どうやって元の言語(コードページ)を判断するか?

拙作のツールTESVKanjiCheckerの活用をお勧めします。

 f:id:thinkingskeever:20151212090430p:plain

ツールの画面にesm/espファイルをドロップし、次のようなことが行えます。
・文章を読んで言語からコードページを推測する
・フォールバックによる文字化けを検出する
・画面下部の言語を切り替えて適切なコードページを判定する
・バニラのフォントで文字化けする文字を検出する(これが本来の目的)


以上です。

Copyright (C) 2015-2020 ThinkingSkeever, All Rights Reserved.
ブログの記事内に記載されているメーカー名、製品名称等は、日本及びその他の国における各企業の商標または登録商標です。
リンクはご自由に。記事の転載はご遠慮ください。記事を引用する場合はトラックバックするか元のURLを明記してください。