- 検索欄の 拡大鏡 をクリックして正規表現検索に切り替え

- Ctrl+TABで前のファイル、Shift+Ctrl+TABで次のファイルの編集画面に移動

- Record/Field Header検索によって選択肢やアイテム名など、特定タイプの項目だけを検索
 例:INFO:RNAM(またはDIAL:FULL)と入力してRecord/Field Header検索をするとプレイヤーの選択肢のみを表示します。さらにグループIDとフィルターを割り当てることで簡単に表示の切り替えが可能です。

正規表現は非常に強力な機能で、パターンを用いることで複数のさまざまな文字列を自由自在に置換・整形することができます。

xTranslatorでは標準的な記法を使用することができます。最初は理解するまでに少し苦労しますが、慣れると非常にさまざまな場面で役に立つことでしょう。

インターネット上に多くの解説サイトがあるため、このマニュアルでは記法そのものを解説せず、xTranslatorにおける利用法だけを解説します。

解説サイト:
[正規表現サンプル集] [正規表現一覧] [サルにもわかる正規表現入門] [PHP正規表現チェッカー]

正規表現がどういうものか理解するために、一つサンプルを挙げましょう。Fallout4のDon't Call Me SettlerというModを例として扱います。
このModには以下のような文字列が大量に含まれています。

Somerville Place->Oberland Station
Somerville Place->The Slog
County Crossing->Boston Airport
...

それぞれの文字列は' -> 'という文字によって二つに区切られています。
1=Somerville Place
2=Oberland Station

これらの文字列を手作業で翻訳するのは非常に大変です。しかし正規表現ならこうした文字列を簡単に扱うことができ、区切りごとに自動で翻訳することもできます。
このModをお持ちでしたら、xTranslatorでEspを開き、上記と同じ形式の文字列にカーソルを合わせ、メニューからツール->正規表現ツールを開いてみてください。

このような画面が表示されます。



1. 選択中の文字列です。
2. 選択中の文字列をマッチした箇所ごとに分けたリストです。
3. 置換後のプレビューです。
4. 正規表現パターンの入力欄です。変更するとプレビュー結果にリアルタイムで反映されます。()で取り込んだ文字列には1, 2, 3...というように、連続で参照番号が割り当てられます。
5. 置換パターンの入力欄です。%1, %2, %3...といったように参照記号を使用することで、4番の欄で取り込んだ文字列を呼び出すことができます。
6. モード:
原文を元に検索&置換: 翻訳が可能な場合、取り込まれた文字列は全て翻訳され、さらに4番の欄に入力したパターンに応じて置換されます。
訳文を元に検索&置換: 原文を参照せず、訳文の内容から置換します。
7. ヒューリスティック閾値
ヒューリスティック翻訳使用時のLD(一致率)の閾値です。数値を上げるほど一致率の低い文字列も検出されますが、1、2など、ごく低い数値にすることをお勧めします。なお0で完全一致翻訳と同じ挙動になります。
0.9.8c以降では後方参照から使用します(下記の情報をご覧ください)。
8. 訳文が見つからなかった場合、文字列を破棄します。訳文が見つかった場合は書式を維持します。
9. 置換対象です。
10. チェックすると<Alias>が含まれている文字列を無視します。
11. チェックすると検索フィルターで表示されている範囲のみ置換します。
12. 現在入力されている正規表現をテンプレートに保存します。保存した正規表現は自由に呼び出すことが可能になります。

上記の正規表現を適用すると以下のような結果になります。



- 完全一致した文字列は青
- ヒューリスティック一致した文字列はピンクのライン+黄色の!マーク
- 正規表現一致したものの一箇所でも翻訳されなかった文字列はピンクのライン+オレンジ色の!マーク(まったく翻訳されなかった文字列は8番目の項目にチェックを入れることで訳を破棄可能)


サンプルの仕組み:
() で区切ることで、文字列を部分的に取り込むことができます。以下の文字列を見てください。

Somerville Place->Oberland Station

この場合は以下のパターンで文字列を解析し、二つのグループに分けることができます。
(.*)->(.*)
(.*)の働き: " -> "という文字列に行き当たるまで全ての文字列を%1に取り込む(括弧外の文字列は取り込まれない。この場合は" -> ")。二つ目の(.*)は" -> "以降の文字列を全て%2に取り込む。

結果:
%1=County Crossing
%2=Warwick Homestead

以下の置換パターンを [原文を元に検索&翻訳] モードで使用することにより、二つのグループをまとめて翻訳・整形することができます。
%1->%2

-----

0.9.8c以降では用途に応じて、三つのタイプの後方参照呼び出しを使用することができます。

#1( 記号): 後方参照文を翻訳しない
%1( 記号): 後方参照文に完全一致翻訳を試みる
$1( 記号): 後方参照文にヒューリスティック翻訳を試みる(オプションから一致率の閾値を設定可能)

例:
文字列: (Note) My Special Demo Note
正規表現: ^([\[\(\{\|].+?[\|\]\}\)]) (.+)
置換: #1 %2
このようにすると'(Note)'の部分はそのままに、'My Special Demo Note'の部分にだけ完全一致翻訳を試みることができます。


以下は取り込みパターンの一例です。
基本的な考え方はいずれも変わりません。文字の横に、その文字が何回繰り返されるかを決める量指定子を書くだけです。

(.*): ドットすべての種類の文字を取り込みます。 は直前の文字列が0回以上繰り返されている箇所を取り込む量指定子です。
([a-zA-Z]+): [a-zA-Z]はaからz、AからZまでのすべてのアルファベットを取り込みます(大文字と小文字を区別)。 は量指定子であり、この場合は[a-zA-Z]が1回以上繰り返されている箇所を取り込みます。
([0-9]{3}): 三個連続した数字を取り込みます。

この他にもさまざまな応用が可能です。最初に紹介した解説サイトなどを参考に、色々と試してみてください。


Fallout4の Better Item SortingValdacil's Item Sorting (またスカイリムの Better Item SortingValdacils Item Sorting) といったModは
アイテム名の先頭にタグ文字列を入れることでアイテム一覧の並び替えを楽にしてくれるModです。

xTranslatorの正規表現ツールを用いることで、こうしたModをきわめて簡単に自動翻訳することができます。(この項目ではFallout4用のModを例として扱いますが、基本的な考え方はどんなModでも同じです)

正規表現ツールの起動方法:
-xTranslatorを開く
-翻訳先言語を正しく設定していることを確認(英→日の場合はen ->ja)
-[ファイル(F)]→[Esp/Esmファイルを開く]からアイテムソートModのEspを開く
-タグの入っている行を選択(選択した行は正規表現のプレビュー対象となります)
-[ツール]→[正規表現ツール]

アイテムソートModの原文の大半は以下のような形式です。

(Note) My Special Demo Note
{Tag} My Special Demo Tag
[Chem] My Special Demo Chem
[Perk:Mag] My Special Demo Mag issue #1

自動翻訳を行うには、先頭のタグと本文を分けて処理しなければなりません。下記の正規表現を用いることで簡単に分けて処理することができます。

^([\[\(\{\|].+?[\|\]\}\)]) (.+)

^ は行頭を指定するメタ文字です。メタ文字は通常の文字とは異なる、特別な働きをもった文字です。
\ は []、()、+* といったメタ文字を通常の文字として検索するためのエスケープ文字です。
([\[\(\{\|].+?[\|\]\}\)]) : () {} [] ||記号の内側にあるすべての文字を取り込み、マッチした前後の括弧記号と共に後方参照1へと出力します。
(.+) : 行末までの文字を後方参照2へと出力します。

以下は置換文です。

#1 %2

#1 は後方参照1をそのまま置換文として利用します。
%2 は後方参照2を完全一致翻訳してから置換文として利用します。

上記のパターンを入力してOKをクリックすると、大半のアイテムが翻訳されるはずです。


場合によってはさらに手を加える必要があるかもしれません。(製作者の方によってタグ外の名前部分に変更が加えられているケースもありますので)
正規表現を用いれば、さまざまな事が可能になります。不可能は無いと言っても良いかもしれません。
今回、おそらく番号のせいで翻訳されなかったマガジンがあるはずです。以下のパターンでそちらも翻訳してみましょう。

[Perk:Mag] My Special Demo Mag issue #1
^([\[\(\{\|].+?[\|\]\}\)]) (.+) (#\d+)

後ろの(#\d+)は行末の数値を後方参照3に渡すパターンです。

#1 %2 #3

タグの翻訳にはバッチによる検索と置換が利用できます(DEF_INVでは英語タグが最新式のため非推奨)。
同梱されているバッチファイルを参考にして各タグを置換する項目を追加すれば、将来的なアップデートに対応することも可能です。


バージョン1.0.0 Beta 9より、xTranslatorではFuzファイルの再生がサポートされています。
Fuzファイルとは会話シーンで再生される音声ファイルのことで、それぞれが個々のダイアログ行(Record INFO, Subrecord: NAM1)と結びついています。
これらはbsa/bsa2アーカイブ内の sounds\voices\ 以下に置かれるファイルですが、アーカイブ内ではなくDataフォルダ以下に置かれていることもあります。


使用手順:

1) Dataフォルダのパスを設定
  -メニュー -> オプション -> 高度なオプション
  -[Fuzファイル参照先] をクリックし、bsa/bsa2が置かれているDataフォルダを指定。
  -Fuz Mapは読み込みだけを行うため、bsa/bsa2ファイルのバックアップを取る必要はありません。また、Dataフォルダ以下に正しい構成で置かれたルーズファイルも読み込まれます。

2) fuzファイルを再生
  -ダイアログが含まれているEsp/Esmを開きます。
  -右端のILSTRINGSタブを開きます。すべてのダイアログ(INFO:NAM1)がここに表示されます。
  -INFO:NAM1の編集画面を開くと、デフォルトでは自動的にダイアログ & トピックタブに移動します。
  -タブ中段、トピック一覧の右下にあるスピーカーアイコンをクリックします。
  -数秒ほど待ちましょう(PC環境によって前後します)。
  -fuzリファレンスが表示され、音声再生が可能になります。トピックの中には複数の音声が用意されているものがあり、スピーカーアイコン左のリストから再生する音声を選ぶことができます。
  -一部のトピックに警告アイコンが表示されている場合、fuzファイルが見つからなかったことを意味しています。すべてのトピックに必ず音声が用意されているとは限りません。ゲーム内で使用されていないトピックかもしれません。
  -ただし、どんなトピックにも警告アイコンが表示されてしまう場合は、おそらく関連するbsa/ba2アーカイブが見つかっていません。(1)の手順に戻ってDataフォルダを正しく設定し直し、プログラムを再起動してからEsp/Esmを読み直してください。


NewDialog (そして英語版として知られる Full Dialogue Interface) は簡略化された選択肢を置き換え、プレイヤーの発言と同じ完全な選択肢を表示させるModです。
このModは一部のインターフェイス用ファイルを改変することで動作しますが、同時にSTRINGS(ゲームで使用されるテキスト)を更新し、簡略化された文章を完全な文章に置き換えなくてはなりません。
これは12000以上ものリファレンスを変更する必要があることを意味します。

幸いにもxTranslatorがあれば、このプロセスを自動で行うことができます。それだけでなく、接頭語を付加するなどの自由な整形も可能です。


1) バックアップ: (fallout4 1.7以降ではSTRINGSファイルがba2アーカイブ内に格納されているため不要です)
まずSTRINGSファイルのバックアップを取りましょう。
-\Steam\steamapps\common\Fallout 4\Data\Stringsフォルダを開く
-Fallout4_ja.STRINGSをコピーしてバックアップ。ilStrings(Fallout4_ja.ILSTRINGS)、dlstrings(Fallout4_ja.DLSTRINGS)はバックアップを取らなくても大丈夫です。

実行する前に 1:
旧Fallout4Translator1.0beta15bより、関連のあるEsp/Esmを同時に開くことでマスターファイルのDNAMリファレンス文字列の読み込みが可能となりました。
たとえばNuka World、Far Harbor、UFO4P(あるいはその他のMod)向けのNew Dialog/FullDialog Interface用STRINGSファイルを生成するには、一部のリファレンスをマスターファイルから引き出さなくてはなりません。
そのため、NukaWorld.esmであればFallout4.esmというように、マスターファイルのデータを利用するEspはマスターファイルも一緒に開く必要があります。
一緒に開くことでNukaWorldとFallout4のリファレンスを併せ持った文字列を生成でき、DLCに残っている簡略化された文字列の数を大きく減らすことが可能です。

実行する前に 2:
各DLC、およびFallout4 1.7以降のSTRINGSファイルはba2アーカイブ内に保存されているためバックアップ不要です。xTranslatorはSTRINGSファイルを自動的に抜き出し、以下の処理後はルーズファイルとしてstringsフォルダに保存します。


2) オプション:
-xTranslatorを起動(要バージョン 0.7以上)
-オプション画面(メニュー -> オプション -> オプション)を開き、翻訳元言語 ① と翻訳先言語 ② を同じ言語(日本語環境用に作るなら両方ja)に設定。メニューのオプション -> 言語プリセットを使用すれば現在の言語設定を保存可能です。

旧作選択肢ツールには不要ですが、xTranslatorでModを翻訳する予定なら、stringsフォルダのパス ③ が正しく設定されているか確認することをお勧めします。
パスが間違っている場合は設定し直すといいでしょう。設定が合っていれば中央の表示 ④ が緑色になります。※間違っていると赤色のまま※



3) Esmの読み込み:
-メニューからFallout4.esmを開く。DLCの選択肢を修正する場合はDLCRobot.esm、DLCCoast.esmなども開きます。
-関連する文字列とともにEsmが読み込まれます(Esmがローカライズ仕様というメッセージが表示されますが正常です。このメッセージは文字列がEsmではなくSTRINGSファイルに保存されていることを意味します)
読み込みが終わると、ゲーム内の全レコードと名称・本文が各タブに表示されます。

4) 選択肢の自動改変:
メニュー -> ツール -> 旧作スタイルの選択肢を開きます。注意:言語設定が正しくないと[OK]を押すことができません。この場合は(2)の手順をやり直してから再起動してください。

ツールのオプション:



a) 左のテキストボックスには一行ずつフレーズが入力されています。「皮肉を言う」「取引」など、簡略化された汎用選択肢をこのリストに接頭語として登録することで、フル表示させた該当選択肢の先頭に付加することができます。
例1: 取引 -> 品物を見せてほしい
例2: 取引 -> [取引] 品物を見せてほしい (「接頭語を付加」にチェックを入れた場合)

リストの接頭語を追加・変更するには、現在の言語でのプレイ中に表示される正確なフレーズを記入する必要があります。フレーズに誤りがあると検索時にマッチしなくなります。
また、たとえば「皮肉を言う」だけを残して「嘘をつく」や「ロマンス」を外すには、「皮肉を言う」以外の接頭語をリストから削除するといいでしょう。
日本語の場合はあまり関係ありませんが、接頭語の検索時には大文字と小文字が区別されるため注意してください。

b) 「接頭語を付加」にチェックを入れると有効化されます。その下の欄では書式を設定することができます。デフォルトでは” [接頭語] 本文 ”です。

c) <Alias/Global>変数が含まれている選択肢も置換します。
一部の選択肢では、変数を参照した情報(たとえば商品の価格など)が表示されます。しかし完全な選択肢に変換するとこうした変数情報が省略されますので、このオプションで元の簡略化された選択肢のままにするかどうかを設定します。
こうしたタイプの選択肢はゲーム全体で約50ほど存在します(選択肢そのものの総数は13000超)。

d) 元の言い換え文、つまり簡略化された選択肢を本文にコピーします。


0.9.9以降では二つの機能が追加されています。

1) 検索語と置換語を別々に設定:
=を用いることで検索するフレーズと置換するフレーズを別々に設定することができます。
例:
皮肉を言う=皮肉
この場合は「皮肉を言う」という接頭語を検索し、「皮肉」に置き換えます(必須の機能ではありません。検索と置換を同時に行いたい場合のみ使用してください)。

2) 出力文字列に置換前の全フレーズを付加(接頭語と同じ置換パターンを使用):
「接頭語を付加」と同時に使用すると若干重複する箇所が生じますのでご注意ください。この機能を使うことで、DialogueMenu EnhancedなどのModで使用される文字列を簡単に生成することができます。

豆知識: ①接頭語のリストは言語ごとに別々に保存されます。②一時的に外したい接頭語がある場合は、好きな文字を一文字足すだけで外すことができます(例: 皮肉を言う*)。


e) オプション(二つ目のタブ)

a) 文字列操作オプションです。画面に表示しきれない文字列を短くするかどうかを設定します。Newdialogの0.3以降では複数行の選択肢に対応したため不要です。
デフォルトの[文字列を縮小させない]のままにするといいでしょう。

b) こちらは高度なオプションです。指定した種類の文字列のみに変更を適用させます。基本的にデフォルトの[すべての関連する文字列]にするといいでしょう。

c)「バッチ間の変更を維持」は一部のオプションを使用して文字列を置換するための高度なオプションです。

----------------------------------------------------

すべての設定が完了したらOKを押してください。
2~3秒ほどすると処理が完了します。

実際にSTRINGSファイルを出力するまでは、何度でも置換を試すことができます。フィルターを青の「確認済み翻訳」のみに切り替えることで、置換した文字列だけを確認することができます。
!アイコンがついている文字列は繰り返し変更を加えられたことを意味しています。




最後にメニュー -> [STRINGSファイルを別名で出力]でファイルを保存しましょう。
これで味気ない選択肢とオサラバできます。

STRINGSファイルを保存し、xTranslatorを終了したあとで内容を変更したくなった場合、特に接頭語を変えたり、<Alias/Global>入りの文字列を復元したい場合は
オリジナルのSTRINGSファイルに入れ替えてからxTranslatorを再起動する必要があります。

文字列を関連付けるためにxTranslatorでは以下のデータが使用されます。

-FormID: (通常はゲーム内で使用される基数)XMLのロード時にはEDID名が代わりに使用されます。
-Field Header: FULLやDESCなど
-Field Index: 関連があった場合、列挙されたフィールド(ITXT、NAM1など)の序数がIndexに保存されます。これらのフィールドはEspにID抜きで直接保存され、バージョンが異なると順番が変化することがあります。
-Source String: 原文です。

XMLロード時のオプション:
1)FormIDリファレンス: FormID(またはEDID)、Field HeaderとField Indexコントロールをチェック(Indexコントロールがマッチしなかったときはエラーを表示)。この方式はEsp比較ツールでも用いられます。

2)FormID(厳密)+原文: 4つのすべてのデータ、すなわちFormID、Field Header、Field Index、原文をチェック。Indexコントロールが正しくマッチしなかった場合は関連付けに失敗します。

3)FormID(ルーズ)+原文: FormID、Field Header、原文をチェック。ただしField IndexをコントロールするField Index(field index control field Index)はチェックしない。
TES5 EditでEspに更新をかけた場合は最良の結果をもたらします(いかなる理由か、編集によってField Indexが頻繁に混ざってしまうため)。

4)原文をチェック(完全に文字列同士の比較のみ)。旧バージョンのTESVTranslatorと同じ方式です。

コピー+ペーストと数値の訂正機能を組み合わせることで、書籍やメモのような連続した番号が続く名詞をまとめて翻訳することができます。

1) - 類似した文字列が並んでいる箇所を表示
2) - 一行目の文字列を翻訳し選択
3) - 翻訳した文字列をコピー(Ctrl+C または右クリックメニューからコピー)
4) - コピーした文字列を貼り付ける行を選択(Ctrl+クリックまたはShift+クリックで選択)
5) - 文字列を貼り付け(Ctrl+Vまたは右クリックメニューから貼り付け)
6) - 選択した文字列が全て同じ文字列に
7) - 数値を訂正を実行(Ctrl+Nまたは右クリックメニュから実行)。数値が原文と同じものに
8) - 完成

この方法はヒューリスティック翻訳とも問題なく併用可能です。


english (英語) = 1252
french (フランス語) = 1252
polish (ポーランド語) = 1250
czech (チェコ語) = 1250
danish (デンマーク語) = 1252
finnish (フィンランド語) = 1252
german (ドイツ語) = 1252
greek (ギリシャ語) = 1253
italian (イタリア語) = 1252
japanese (日本語) = utf8(または932)
norwegian (ノルウェー語) = 1252
portuguese (ポルトガル語) = 1252
spanish (スペイン語) = 1252
swedish (スウェーデン語) = 1252
turkish (トルコ語) = 1254
russian (ロシア語) = 1251
chinese (中国語 - 簡体字) = utf8(または936)
chinese (中国語 - 繁体字) = utf8(または950)
korean (韓国語) = utf8
hungarian (ハンガリー語) = 1250
arabic (アラビア語) = 1256