RPG tools

e-Tools日本語化スクリプト

はじめに

e-Toolsは,Code Monkey Publishingが販売している,D&D 3.0および3.5対応のキャラクタージェネレータです。検索するとYahoo! ジオシティーズのeToolsばっかりひっかかりますが。

e-Toolsはわりと高機能で重宝するのですが,いまのところ利用できるのは英語版のみなので,日本語版ルールブックのみでプレイしている方にはいまいち魅力的ではありません。そこで,e-Toolsの日本語化をほんの少しだけお手伝いしよう,というのがこのページの目的です。決して,プログラムをダウンロードしたらインストーラが起動してあっというまにGUIまで日本語になっちゃいました,みたいなものが置いてあるわけではありません。期待しすぎないでください。

背景

e-Toolsは,D&Dのルールに関するありとあらゆるデータを,拡張子がmdbのファイルに保存しています。この*.mdbというファイルはMicrosoft Accessのデータフォーマットとして利用されています。ですから,e-Toolsのデータを日本語にするいちばんわかりやすい方法は,Microsoft Accessを買ってきてファイルを開いて編集して保存することです。しかしこの方法には問題があります(なかったらこんなページ作りませんね)。

金がかかる
言うまでもないですね。Accessは3万円ぐらいします。日本語版3.5の基本ルール3冊にFRCSでもおつりがきます。ちょびっとですが。mdbを編集できるフリーのツールを探してみてもいいでしょうが,自信をもっておすすめできるものは見つかりませんでした(空白を含むテーブル名を認識できなかったり)。
(2005年12月追記:OpenOffice.orgのBaseを使えばタダで編集できました。いい時代です。SQLを書いてこいつで走らせるのが正攻法な気がします)
共有できない
e-Toolsには,Data Setという名の追加データが用意されています。Data Setひとつがサプリメントひとつをカバーしており,価格は$6ぐらいです。全部のData Setを買えるほどお金持ちでなければ,通常は自分のクラスに関係があったり個人的に使いたいサプリメントのData Setだけを購入するでしょう。つまり,あるグループ内ではプレイヤーごとにmdbファイルの中身は異なっているのがふつうです。だれか1人が買ったものをコピーして配っているとかそういうことでない限り。ですので,誰かが日本語化したデータをそのまま自分のデータに上書きすると,買ってもいない追加データが増えたり,せっかく買った追加データがなくなったりします。

ということで,このページでご紹介するのは簡単に言うと「日本語-英語変換表を用意しておけば,e-Toolsのmdbファイルのうち変換表にある部分だけを書き換えるプログラム」です。mdbファイルの実態はJetという形式のデータベースであり,昨今のWindows OSなら標準でアクセス手段が提供されています。今回は,他に余計なものをインストールしないですむという理由から,Windowsでサポートされるスクリプト言語のひとつ,JScriptを利用しました(あと私はC++プログラマなのでVBScriptより楽だというのも大きな理由です)。処理の流れは次の通り。

  1. データベース内のテーブルをすべてテキストに書き出す。
  2. そこから変換の必要なフィールドだけを抜き出して,日本語と並べて変換表みたいなものを作る。
  3. 変換表をたよりにデータベースを書き換える。

では詳しく説明しますから,スクリプトをダウンロードして解凍し,テキストエディタで眺めてみてください。なお(お約束ですが)このスクリプトがもとで生じたいかなる損害についても私は責任を負いかねますので,テキストエディタってなに? とかそういう方はこのページのことは忘れてしまったほうが幸せです。たぶん。

やってみよう

目標

最終目標は,データベースを更新するための変換表を作ることです。この変換表は,[テーブル名.tbj]という名前で

[field 1 name][tabx2][field 2 name][tabx2]...[field N name][tab]
[field 1 in EN][tab][field 1 in JP][tab]...[field N in EN][tab][field N in JP]

というフォーマットでなければならないことにしてしまいました。

データベースを閲覧できるアプリケーションがあれば,各テーブルを眺めて手入力で変換表を作ることも可能です。ですがあまりにもそれは手間がかかるので,以下のような処理で少し楽にします。

データベース内のテーブルを調べる
データベースを閲覧できるのであればこの作業は不要です。そうでなければ,printdb.jsというスクリプトを実行してみてください。スクリプト内で指定したフォルダにデータベースの全テーブルを[テーブル名].txtという名前のテキストファイルとして出力します。
テーブルから変換の必要なフィールドだけを抜き出す
データベースを出力しただけのテキストファイルには,プログラム用の識別子,つまり人間には意味のないデータが含まれています。そのようなものを省いたデータを作って作業をやりやすくします。どのフィールドが人間にとって意味があるかはコンピュータには判断できないので自分でやるしかありません。そしてこれはわりとめんどくさくて面白くない作業なので,私の判断結果をtblfld30.txtというファイルに書いておきました。extractefields.jsというスクリプトが,このtblfld30.txtを手がかりに,各テーブルから翻訳が必要なフィールドのみを抜き出して[テーブル名].tbeというテキストファイルに出力します。tbeはTaBle in Englighのつもりです。ファイルの1行目には,要翻訳なフィールドの名前がタブで区切られて出力されます。2行目以降には,要翻訳なフィールドが,同様にタブで区切られて出力されます。なおtblfld30.txtはその名のとおり3.0用ですので,3.5用のデータベースではまた別のファイルが必要になるかもしれません。
変換表を作る
上で出力したtbeファイルをもとにがんばって翻訳してtbjという拡張子の変換表ファイルを作ります。TaBle in Japanseseですね。フォーマットは前述の通り。表計算ソフトなどを使うと編集しやすいかもしれません。サンプル(info Feat.tbj)をつけておきます。
データベース書き換え
updatedb.jsを実行すると,指定したフォルダにある*.tbjファイルを読み取ってe-Toolsのデータベースを更新します。データベースには含まれるが*.tbjファイルに含まれないフィールドがあった場合updatedb.logに出力します。Featだけ日本語化してみた結果が下の画像です

e-Toolsキャラクターシート日本語スタイル(3.5対応版)

e-ToolsのキャラクターデータはXMLで記述されていて,印刷するときにはXSLTでHTMLに変換されます。なので,XSLTだけ書き換えてやれば,データそのもの以外の部分(データの中身でなく名前とか)は日本語になります。適当にサンプルを作ってみました。アーカイブをeTools\XML\Characterフォルダに展開してください。