(57)【要約】【課題】ＰＩＩ文字列の変化をソフトウェア実行時の文脈で簡単に知る方法を提供すること。【解決手段】第１言語の新版と旧版、および第２言語の新版と旧版のＰＩＩファイルの集合から、第１言語と第２言語それぞれの新版と旧版に対応する４つのテキスト・ファイルを作成するステップと、４つのテキスト・ファイルから、第１言語の新版テキスト・ファイルに含まれるｋｅｙ名、ファイル名を検索キーとする、１つの中間ファイルを作成するステップと、この中間ファイルを参照し、第２言語の翻訳検証用のＰＩＩファイルを生成するステップを含む、翻訳検証のための方法を提供する。更に、中間ファイルには、第１の言語および第２言語の旧版と新版のテキスト・ファイルを比較して得られる変更の種類を表す変更属性ＩＤを付加するステップとを含み、この変更属性ＩＤに基づいてＧＵＩ画面に翻訳文字列を表示する方法を提供する。【選択図】図１
2008197814.tif 000002
【特許請求の範囲】
【請求項１】
検証対象の多言語対応ソフトウェアのリソース・ファイルにおける第１言語から第２言語への翻訳文字列を、検証用のツールプログラムを用いて検証するための方法であって、
前記ツールプログラムが、
前記検証対象のソフトウェアのバージョンアップに伴う、前記第１言語の新版と旧版、および前記第２言語の新版と旧版のＰＩＩファイルの集合から、前記第１言語と前記第２言語それぞれの新版と旧版に対応する４つのテキスト・ファイルを生成するステップと、
前記４つのテキスト・ファイルそれぞれから、翻訳対象の文字列と、前記文字列の識別子であるｋｅｙ名と、前記文字列を含む前記第１言語のＰＩＩファイルのディレクトリ名とファイル名とを、抽出するステップと、
前記文字列に対して、前記抽出したｋｅｙ名、前記ディレクトリ名、および前記ファイル名を検索キーとして付加したレコードを複数含む中間ファイルを生成するステップと、
前記中間ファイルの各レコードから、前記第２言語の翻訳検証用のＰＩＩファイルを生成するステップと、
を含む方法。
【請求項２】
前記ツールプログラムが、
前記検索キーを参照し、前記中間ファイルの各レコード中の前記第１言語の旧版と新版の文字列、および前記第２言語の旧版と新版の文字列を比較するステップと、
前記第１言語の旧版と新版の文字列が同じで、かつ前記第２言語の旧版と新版の文字列が同じ場合には、前記第２言語の新版の文字列を表示用文字列として抽出するステップと、
それ以外の場合は、前記第１言語の新版の文字列と前記第２言語の新版の文字列とを表示用文字列として抽出するステップと、
を更に含む、請求項１に記載の方法。
【請求項３】
前記ツールプログラムが、
前記検索キーを参照し、前記中間ファイルの各レコード中の前記第１言語の旧版と新版の文字列、および前記第２言語の旧版と新版の文字列を比較するステップと、
前記比較の結果得られる前記文字列の変更の種類を表す変更属性ＩＤを、前記中間ファイルの各レコードに付加するステップと、
を更に含む、請求項１に記載の方法。
【請求項４】
前記検証対象のソフトウェアが実行時に表示するＧＵＩ画面に、前記表示用文字列を表示するステップを更に含む、請求項２に記載の方法。
【請求項５】
前記検証対象のソフトウェアが実行時に表示するＧＵＩ画面に、前記変更属性ＩＤと前記比較された文字列を表示するステップを更に含む、請求項３に記載の方法。
【請求項６】
前記表示するステップにおいて、表示すべき前記変更属性ＩＤを前記ツールプログラムのユーザーに指定させる、請求項５に記載の方法。
【請求項７】
前記表示するステップにおいて、前記変更属性ＩＤが前記第１言語と前記第２言語のそれぞれの新版と旧版の文字列を比較して、少なくともそれらの一つで変化があったことを示す場合に、前記第１言語の文字列を前記第２言語の文字列と共に前記ＧＵＩ画面に表示する、請求項５に記載の方法。
【請求項８】
前記変更属性ＩＤは、前記第１言語と前記第２言語の旧版ＰＩＩファイルのそれぞれが「有」、「無」の場合と、前記第１言語と前記第２言語の新版ＰＩＩファイルのそれぞれが、「有・同じ」、「有・更新」、「有・生」、「無・同じ」、「無・消滅」の場合に基づいて分類される、請求項３に記載の方法。
【請求項９】
前記中間ファイルのレコードにおいて、前記ｋｅｙ名と、前記ディレクトリ名とファイル名と、前記文字列とを分離して識別するための分離記号を用いる、請求項１に記載の方法。
【請求項１０】
前記分離記号は、「＝」である、請求項９に記載の方法。
【請求項１１】
前記レコードは、１つのテキスト行からなる、請求項９に記載の方法。
【請求項１２】
検証対象の多言語対応ソフトウェアのリソース・ファイルにおける第１言語から第２言語への翻訳文字列を、検証用のツールプログラムを用いて検証するためのコンピュータ・プログラムであって、
コンピュータに、
前記検証対象のソフトウェアのバージョンアップに伴う、前記第１言語の新版と旧版、および前記第２言語の新版と旧版のＰＩＩファイルの集合から、前記第１言語と前記第２言語それぞれの新版と旧版に対応する４つのテキスト・ファイルを生成するステップと、
前記４つのテキスト・ファイルそれぞれから、翻訳対象の文字列と、前記文字列の識別子であるｋｅｙ名と、前記文字列を含む前記第１言語のＰＩＩファイルのディレクトリ名とファイル名とを、抽出するステップと、
前記文字列に対して、前記抽出したｋｅｙ名、前記ディレクトリ名、および前記ファイル名を検索キーとして付加したレコードを複数含む中間ファイルを生成するステップと、
前記中間ファイルの各レコードから、前記第２言語の翻訳検証用のＰＩＩファイルを生成するステップと、
を実行させるコンピュータ・プログラム。
【請求項１３】
前記コンピュータ・プログラムは、
前記検索キーを参照し、前記中間ファイルの各レコード中の前記第１言語の旧版と新版の文字列、および前記第２言語の旧版と新版の文字列を比較するステップと、
前記第１言語の旧版と新版の文字列が同じで、かつ前記第２言語の旧版と新版の文字列が同じ場合には、前記第２言語の新版の文字列を表示用文字列として抽出するステップと、
それ以外の場合は、前記第１言語の新版の文字列と前記第２言語の新版の文字列とを表示用文字列として抽出するステップと、
を更にコンピュータに実行させる、請求項１２に記載のコンピュータ・プログラム。
【請求項１４】
前記コンピュータ・プログラムは、
前記検索キーを参照し、前記中間ファイルの各レコード中の前記第１言語の旧版と新版の文字列、および前記第２言語の旧版と新版の文字列を比較するステップと、
前記比較の結果得られる前記文字列の変更の種類を表す変更属性ＩＤを、前記中間ファイルの各レコードに付加するステップと、
を更にコンピュータに実行させる、請求項１２に記載のコンピュータ・プログラム。
【請求項１５】
検証対象の多言語対応ソフトウェアのリソース・ファイルにおける、第１言語から第２言語への翻訳文字列を、検証するための装置であって、
制御部と、前記検証対象のソフトウェアのバージョンアップに伴う、前記第１言語の新版と旧版、および前記第２言語の新版と旧版のＰＩＩファイルの集合を入力として受け付けるＰＩＩファイル入力部とを備え、
前記制御部は、
前記ＰＩＩファイル入力部から入力された、前記第１言語の新版と旧版、および前記第２言語の新版と旧版のＰＩＩファイルの集合から、前記第１言語と前記第２言語それぞれの新版と旧版に対応する４つのテキスト・ファイルを生成する手段と、
前記４つのテキスト・ファイルそれぞれから、翻訳対象の文字列と、前記文字列の識別子であるｋｅｙ名と、前記文字列を含む前記第１言語のＰＩＩファイルのディレクトリ名とファイル名とを、抽出する手段と、
前記文字列に対して、前記抽出したｋｅｙ名、前記ディレクトリ名、および前記ファイル名を検索キーとして付加したレコードを複数含む中間ファイルを生成する手段と、
前記中間ファイルの各レコードから、前記第２言語の翻訳検証用のＰＩＩファイルを生成する手段と、
を備えた装置。
【請求項１６】
前記制御部は、前記検索キーを参照し、前記中間ファイルの各レコード中の前記第１言語の旧版と新版の文字列、および前記第２言語の旧版と新版の文字列を比較する手段と、
前記第１言語の旧版と新版の文字列が同じで、かつ前記第２言語の旧版と新版の文字列が同じ場合には、前記第２言語の新版の文字列を表示用文字列として抽出する手段と、
それ以外の場合は、前記第１言語の新版の文字列と前記第２言語の新版の文字列とを表示用文字列として抽出する手段と、
を更に備えた、請求項１５に記載の装置。
【請求項１７】
前記制御部は、前記検索キーを参照し、前記中間ファイルの各レコード中の前記第１言語の旧版と新版の文字列、および前記第２言語の旧版と新版の文字列を比較する手段と、
前記比較の結果得られる前記文字列の変更の種類を表す変更属性ＩＤを、前記中間ファイルの各レコードに付加する手段と、
を更に備えた、請求項１５に記載の方法。
【請求項１８】
前記表示用文字列を、前記検証対象のソフトウェアが実行時に表示するＧＵＩ画面に表示する表示部を更に備えた、請求項１６に記載の方法。
【請求項１９】
前記変更ＩＤと前記比較された文字列を、前記検証対象のソフトウェアが実行時に表示するＧＵＩ画面に表示する表示部を更に備えた、請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアのリソース・ファイルの翻訳検証方法、装置、およびプログラムに関する。更に詳しくは、リソース・ファイルの１つであるＰＩＩファイルに含まれる文字列の翻訳検証を行なうための方法、装置、およびプログラムに関する。
【背景技術】
【０００２】
従来から、ソフトウェアの翻訳を自動化するシステムが多数知られている。例えば、特許文献１には、パッケージ・ソフトウェアのバージョンアップ時の新規追加分の訳語を自動的に移行できるような自動化システムが開示されている。また、特許文献２には、産業別／言語別データベースに母国語の業務専門用語群を登録し、更に各他言語の業務専門用語群を対応させて登録し、ソフトウェア実行時に、言語種別情報に基づいて実行言語を認識し、この業務専門用語群を取得するような多国語対応ソフトウェアを実現する方式が開示されている。
【０００３】
しかし、このようなシステムや方式は、翻訳そのもののツール、または多言語環境でのソフトウェア作成のツールではあっても、翻訳検証テスト（Ｔｒａｎｓｌａｔｉｏｎ  Ｖｅｒｉｆｉｃａｔｉｏｎ  Ｔｅｓｔ：以下、ＴＶＴと略す）時における、作成された翻訳の検証を効率化するものではない。ソフトウェアの多言語対応には、ＰＩＩ（Ｐｒｏｇｒａｍ  Ｉｎｔｅｇｒａｔｅｄ  Ｉｎｆｏｒｍａｔｉｏｎ）文字列と呼ばれる、ユーザーインターフェースやメッセージにおける文字列に対する翻訳が必要であるが、この翻訳を効率よく検証するためのシステムはあまり知られていない。
【特許文献１】特開２０００−２０７３９９号公報
【特許文献２】特開平１０−９１４１８号公報
【０００４】
ＰＩＩ文字列とは、プログラムのＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）上、例えば、タスクバーやメニューバに現れる文字列のことである。プログラムは、ＰＩＩ文字列でユーザーとのインターフェースをとる。国際化を必要とするプログラムは、通常このＰＩＩ文字列をプログラム中に埋め込まない。代わりにプログラム中にはｋｅｙ（文字列を識別するためのＩＤ）を埋め込み、そのｋｅｙに対応する文字列を外部のリソース・ファイル中に準備し、ｋｅｙによって参照した文字列をＧＵＩ上に表示する。このリソース・ファイルを、ＰＩＩテキスト・リソース・ファイル（略してＰＩＩファイル）と呼ぶ。このようにして多国語対応ソフトウェアは、国ごとにＰＩＩファイルを切り替えることで、色々な国の言語をサポートしている。ＰＩＩファイルも、ソフトウェアが使用するリソースを定義するリソース・ファイル（ＪＡＶＡ（登録商標）環境では、プロパティ・ファイルとも呼ばれる）の一種である。
【０００５】
ＰＩＩファイルは通常、１つ１つのデータはｋｅｙとそれに対応する文字列で構成している。次にその例として英語ＰＩＩファイル中の１行を示す。
ｋｅｙＰｒｏｆｉｌｅＬｏｃａｔｉｏｎ＝Ｃｏｐｙ  ｐｒｏｆｉｌｅ  ｔｏ
ここで、「ｋｅｙＰｒｏｆｉｌｅＬｏｃａｔｉｏｎ」がｋｅｙであり、「Ｃｏｐｙ  ｐｒｏｆｉｌｅ  ｔｏ」がｋｅｙに対応する文字列である。このようなデータのセットが何行にも渡って続き、ＰＩＩファイルを構成している。この行は日本語ＰＩＩファイル中では、
ｋｅｙＰｒｏｆｉｌｅＬｏｃａｔｉｏｎ＝プロファイルのコピー先
のようになる。
【０００６】
ＰＩＩ文字列の翻訳はＰＩＩファイル上で行なうため、翻訳者はそのＰＩＩ文字列を使用する文脈や実際の意味を分からずに翻訳を行なう。そこで、ＰＩＩ文字列の翻訳では、実際のテスト対象のソフトウェアを動作させ、ソフトウェアがＧＵＩ画面上に出力した文字列を、文字列を使う文脈の中で翻訳の検証を行う必要がある。また、従来の翻訳検証では、ＰＩＩが旧版（旧バージョン）にもあった翻訳検証済みのものか、新しく加わったものか、修正が入ったものか区別がつかなかった。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ＰＩＩ文字列の翻訳で重要なことの１つに、ＰＩＩ文字列の翻訳では、バージョン１．０、リリース１．０といった、全てが新規のＰＩＩファイルを翻訳することは、極めてまれであるということが揚げられる。そのようなケースは１０回中１回もないのが実状で、たとえバージョン１．０であっても、すでに存在するプログラムを組み合わせている場合も多い。そのため、最初の翻訳である確率は極めて低く、多くの場合、バージョンアップや、リリースアップに伴うＰＩＩ文字列の翻訳になっている。
【０００８】
全てが新規翻訳ではない場合（ほとんどのケースでそうであるが）、ＰＩＩ文字列を検証するテスター（テスト実行者）が、出力されたＰＩＩ文字列が、前回の翻訳の文字列なのか、新規の翻訳の文字列なのかを見分けることは困難である。そのため、すでに、前回のバージョンやリリースで翻訳検証済みのものも、そうでないものも同等に注意を払って翻訳を検証しているので翻訳検証の効率は極めて悪い。このようなバージョンの変化に伴う翻訳検証の効率化に関する解決策は従来存在しなかった。例えば、１つ１つのＰＩＩ文字列の変化を調べれば、新旧における日英の変化を確認できるが、現実的ではない。
【０００９】
また、たとえ不適切な日本語であるとわかっても、その原典の英語を参照するには、ファイルの参照等に手間がかかり、容易には英語を参照できない。また、不適切な翻訳であっても、日本語として自然であれば、誤訳の修正をすることすらできない。これに関する従来の対処方法は、英語のテスト環境を別途用意し、日本語と同じテスト操作を行い、日本語のテスト環境の結果といちいち比較する方法である。しかし、この方法では、１つのＰＩＩ文字列ごとに視線を移動する手間があり、極めて効率が悪い。
【００１０】
全体の１０分の１のＰＩＩが追加・更新しているならば、その全体の１０分の１のＰＩＩの文字列がどれかわかれば、その他の翻訳はすでに検証済みなので、翻訳検証の効率は１０倍といった単位で向上する。新旧の英語には変化がないにも関わらず、新旧の日本語のみ変化しているときには、大きな注意を払う必要がある。なぜなら、ＩＢＭ（登録商標）のＴｒａｎｓｌａｔｉｏｎ  Ｍａｎａｇｅｒ（登録商標）に代表される翻訳ツールを用いて、不適切な翻訳を与えてしまっている可能性があるからである。ＧＵＩ上で翻訳検証テストを行いながら、このような変化に気づくことは通常不可能である。従って、ＧＵＩ上で翻訳の変更の種類がわかり、そのようなＰＩＩ文字列に対する、原語を同時に参照できれば、翻訳検証テストの効率向上のみならず、翻訳品質の向上にもつながることになる。
【００１１】
本発明では、上記課題に鑑み、ＰＩＩ文字列の変化をＧＵＩ上の文脈で簡単に知る方法、およびそれを実現するプログラム、そのプログラムを組み込んだ装置を提供することにより、ＰＩＩ文字列の誤訳を効率よく発見することを目的とする。
【課題を解決するための手段】
【００１２】
本発明では、以下のような解決手段を提供する。
【００１３】
本発明の第一の態様では、検証対象の多言語対応ソフトウェアのリソース・ファイルにおける第１言語（ソース言語）から第２言語（ターゲット言語）への翻訳文字列を、検証用のツールプログラムを用いて検証するための方法であって、前記ツールプログラムによって、検証対象ソフトウェアのバージョンアップに伴う、第１言語の新版と旧版、および第２言語の新版と旧版のＰＩＩファイルの集合から、第１言語と第２言語それぞれの新版と旧版に対応する４つのテキスト・ファイルを生成する。次に、前記４つのテキスト・ファイルそれぞれから、翻訳対象の文字列と、文字列の識別子であるｋｅｙ名と、文字列を含む第１言語のＰＩＩファイルのディレクトリ名とファイル名とを、抽出する。更に、文字列に対して、抽出したｋｅｙ名、ディレクトリ名、およびファイル名を検索キーとして付加したレコードを複数含む中間ファイルを生成し、中間ファイルの各レコードから、第２言語の翻訳検証用のＰＩＩファイルを生成する。この生成された翻訳検証用ＰＩＩファイル（テスト用ＰＩＩファイル）を用いることで、バージョンアップにおける翻訳の変化が、ソフトウェアの実行時に判るので効率的な翻訳検証に役立つ。
【００１４】
本発明の第二の態様では、前記ツールプログラムが、前記検索キーを参照し、中間ファイルの各レコード中の第１言語の旧版と新版の文字列、および第２言語の旧版と新版の文字列を比較し、第１言語の旧版と新版の文字列が同じで、かつ第２言語の旧版と新版の文字列が同じ場合には、前記第２言語の新版の文字列を表示用文字列として抽出するステップ。それ以外の場合は、第１言語の新版の文字列と第２言語の新版の文字列とを表示用文字列として抽出するステップを更に含む。
【００１５】
本発明の第三の態様では、前記ツールプログラムが、前記検索キーを参照し、中間ファイルの各レコード中の第１言語の旧版と新版の文字列、および第２言語の旧版と新版の文字列を比較するステップと、前記比較の結果得られる文字列の変更の種類を表す変更属性ＩＤを、前記中間ファイルの各レコードに付加するステップとを、更に含む。
【００１６】
ここで、変更属性ＩＤ（ＣｈａｎｇｅＩＤとも呼ぶ）とは、後述するように、ソフトウェアのバージョンアップ（リリースアップを含む）に伴う、第１言語（ソース言語）の旧版と新版、第２言語（ターゲット言語）の旧版と新版のＰＩＩファイルに含まれる文字列の変更の種類（分類）を示すものである。更に、本発明では、ユーザー（ＴＶＴテスターまたは検証対象のソフトウェア開発者）にこの変更属性ＩＤを指定させ、指定された変更属性ＩＤを含んだ中間ファイルの各レコードから、翻訳されたターゲット言語の文字列と、翻訳前のソース言語の文字列とを分離記号で連結し、ソフトウェアの実行時に表示されるＧＵＩ画面にこれらの文字列を表示するようにする。ここで、変更属性ＩＤは、文字列と共に表示してもよいし、変更属性ＩＤそのものの表示は省略してもよい。また、変更属性ＩＤをユーザーに指定させなくとも、新版、旧版の文字列を比較して、変更のあった文字列のみを表示するようにしてもよい。本発明で生成された翻訳検証用のＰＩＩファイルを、ターゲット言語の新版ＰＩＩファイルと置き換え、検証対象ソフトウェア（ターゲット言語の新版）の実行時にＧＵＩ画面に表示にしてもよい。
【００１７】
また、上記のｋｅｙは、検索キーとして使用するために、ＰＩＩファイルのディレクトリ名とファイル名、およびｋｅｙ名を含む。ただし、ディレクトリ名はファイル名に含ませてもよい。中間ファイルは１つのテキスト行が１レコードで構成され、各レコードは、ＣＳＶ（Ｃｏｍｍａ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅ）ファイルのように、所定の分離記号を用いて、ディレクトリ名、ファイル名、ｋｅｙ、文字列、変更属性ＩＤを区切るようにしてもよい。後述する実施例では、分離記号として「＝」を用いている。これは、ＰＩＩファイルの中では、「ｋｅｙ＝“文字列”」の形式で表現されることが多く、「＝」を分離記号として用いたほうが別の分離記号を用いるより便利であることによる。
【００１８】
前記の変更属性ＩＤは、後述する種別表（図２）に分類され、ソース言語とターゲット言語の旧版ファイルそれぞれが、「有」るか、「無」いか、および、第１言語と第２言語の新版が、「有・同じ」（新版と旧版が同じ）、「有・更新」（新版が更新されている）、「有・生」（新版が新しく生まれた）、「無・同じ」（新版も旧版も無い）、「無・消滅」（新版が消滅した）の組み合わせに基づいて分類されるが、それ以外の「その他」（新版、旧版で変化はないか、もしくは無意味なものを示す）を含んでいてもよい。
【００１９】
また、本発明は、別の態様として、コンピュータに上記の方法の各ステップを実行させるコンピュータ・プログラム、あるいはそのコンピュータ・プログラムを実装した情報処理装置としても提供できる。
【００２０】
本発明の利点は以下のようになる。なお、これ以降の説明では、第１言語（ソース言語）を英語、第２言語（ターゲット言語）を日本語としている。
【００２１】
第一に、ＧＵＩ上に、新旧、日英に関するＰＩＩ文字列の変化を表示できる。バージョンアップ、あるいはリリースアップしたソフトウェアのＰＩＩ文字列の翻訳検証テスト（ＴＶＴ）では、新旧のバージョン間で、英語または日本語あるいはその組み合わせで、ＰＩＩ文字列の色々な変化がある。本発明では、それらの変化を、あるいは変化がなかったことを、ユーザーがＧＵＩ上で一目で見分けることを可能とする。このようにすることで、バージョンアップ時の翻訳検証では、旧版（旧バージョン）ですでに翻訳検証しているものではなく、新たに翻訳したか、翻訳に変更があったものを中心に翻訳検証ができる。本発明により，変化のあるところを集中して検証できるので、作業効率が飛躍的に向上する。また、変更部分の見落としがなくなり、品質も飛躍的に向上する。全体の１／１０のＰＩＩ文字列が追加または変更があったとすると、効率は１０倍といった単位で向上する。
【００２２】
第二に、変化のあるもののみ、ＧＵＩ上で日本語のみならず、英語（原典）も表示する。何も変化のないものは、日本語のみを表示する。表示するものはいずれも新版である。このようにすることで、ＧＵＩ上に英語（原典）が日本語に併記した状態で見ることができるので，直ちに翻訳の正誤を判断できる。そのため、検証の効率が飛躍的に向上する。
【発明の効果】
【００２３】
本発明によれば、ＰＩＩ文字列の変化をＧＵＩの操作中に簡単に知ることができるので、翻訳検証テストの効率が飛躍的に向上する。また、新版、旧版とで翻訳の変化のあるところに集中できるので、翻訳品質が向上する。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の１つの実施形態として、ＰＩＩファイル検証のための検証ツールプログラムについて、図を参照しながら説明する。
【００２５】
本検証ツールプログラムは、コンピュータを典型とする情報処理装置（図１１参照）上で動作し、Ｅｃｌｉｐｓｅ（インターネット＜ＵＲＬ  ｈｔｔｐ：／／ｗｗｗ．ｅｃｌｉｐｓｅ．ｏｒｇ＞  ２００６年１２月２０日検索  参照）のＰｌｕｇ−ｉｎのように、プログラム開発ツールの一部として供給する。ただし、検証対象のプログラム開発環境に、機能を含めることができなくともＪＡＶＡ（登録商標）やＣ言語といったそれぞれの言語で書いた検証対象のプログラムのＰＩＩファイルに対して，独立した検証ツールプログラムとして供給することもできる。
【００２６】
ユーザーが、本検証ツールプログラムを用いて、テスト用の日本語のＰＩＩテキスト・リソース・ファイル（単にＰＩＩファイルと呼ぶ）を作成する。ユーザーは、このテスト用のＰＩＩファイルを通常のＰＩＩファイルと交換して（あるいは、上書きして）テストを実行する。
【００２７】
本検証ツールプログラムに対するユーザーの指定する入力事項は以下のとおりである。なお、ＰＩＩファイルに対する、文字コードの“ｎａｔｉｖｅ  ｃｏｄｅ  ｔｏ  ａｓｃｉｉ”等の変換は行なう以前の状態を仮定している。
（１）日本語と英語の新と旧の４ディレクトリ（フォルダ）
（２）日本語ＴＶＴファイル用出力ディレクトリ（フォルダ）
（３）ＧＵＩ上に日英両方を表示する「変更属性」の種類（ここでは、後述するように８種類の変更属性を選ぶことができる。）
【００２８】
［検証ツールプログラムの処理の概要］
本検証ツールプログラムでは入力として日英新旧４種のＰＩＩのファイルから、１つの中間ファイルを作成する。中間ファイルをひとつのデータベースと考えて、このデータベースとして、通常のリレーショナル・データベースを用いてもよいが、ここでは、ＥｃｌｉｐｓｅのＰｌｕｇ−ｉｎ等として簡単に処理するために、テキストの１行を１データレコードとして、“＝”でデータを区切ったテキスト・ファイルを作成する。この中間ファイルから最終的には翻訳検証用のＰＩＩファイル（テスト用ＰＩＩファイル）を作成する。つまり、ユーザーには４種の入力ファイルとしてＰＩＩファイルの集合と、１つの出力ファイルとしてテスト用ＰＩＩファイルが見えることになる。
【００２９】
図１は、検証ツールプログラムの処理の概要を示す図である。図中のステップＳ１〜Ｓ４について順に説明する。
【００３０】
＜ステップＳ１＞
入力された日、英、新版、旧版のそれぞれ４種（英新、英旧、日新、日旧）のＰＩＩファイルの集合から、４つのテキスト・ファイルを作成する。以下、英語新版を「英新」、英語旧版を「英旧」、日本語新版を「日新」、日本語旧版を「日旧」と略すことにする。
【００３１】
このテキスト・ファイルは、記号「＝」で分離された文字列で構成されている。これは、ｋｅｙの後は、通常「＝」であるので、これを分離記号として用いると文字の比較等において便利だからである。このように、「＝」を分離記号として用いたテキスト・ファイルを本明細書では、「Ｅｑｕａｌ  Ｓｑｐａｒｅｔｅｄ  Ｖａｌｕｅ」と呼んでいる（もっとも、分離記号は、「＝」でなくても他の記号でもよい）。なお、データ中に「＝」が出現するときには「＆ｅｑｕａｌＮｌｓ．」のようにシンボルで置き換える。
【００３２】
以降、主にＣＡＴＩＡ（登録商標。以下同じ）のＰＩＩファイルである「ＣＡＴＮｌｓ」ファイルを例にとって説明する。Ｅｑｕａｌ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅは、以下のように１行が、１レコードのデータである。
Ｅ７ｂ１＝１＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝Ｔｉｔｌｅ＝“２ＤＶｉｅｗｅｒ”
【００３３】
この例では、先頭の“Ｅ７ｂ１”は、英語新版のファイルのＩＤであり、ここではＥｎｇｌｉｓｈ、ｖｅｒｓｉｏｎ７（新版）、ｂｕｉｌｄ  ｂ、ＰＩＩファイル番号１（ＰＩＩファイル全体での通し番号）、の意味を表す。ただし、このファイルＩＤは、必須ではない。また、“＝”は先に説明した分離記号であり、その後の“１”は、各ファイル中の行数、“２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ”は、ＰＩＩファイル名、“Ｔｉｔｌｅ”は、ｋｅｙ名、“２ＤＶｉｅｗｅｒ”は、英語新版文字列を示している。
【００３４】
＜ステップＳ２＞
次のステップでは、新版の英語のディレクトリ名とファイル名とｋｅｙ名とを検索キーにできるように、４つのテキスト・ファイルから１つの中間ファイルを作る。上記の例では、下記のような１行レコードになる。
【００３５】
Ｅ７ｂ１＝１＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝Ｔｉｔｌｅ＝“２ＤＶｉｅｗｅｒ”＝Ｊ７ｂ１＝１＝“２Ｄビューアー”＝Ｅ６ｃ１＝１＝“２ＤＶｉｅｗｅｒ”＝Ｊ６ｃ１＝１＝“２Ｄビューアー”
【００３６】
この例では、英語新版のファイルＩＤ、行番号、ファイル名、ｋｅｙ名、英語新版の文字列が順に連結され、次に“Ｊ７ｂ１”（日本語新版のファイルＩＤ：Ｊａｐａｎｅｓｅ、ｖｅｒｓｉｏｎ７、ｂｕｉｌｄ  ｂ、ＰＩＩファイル番号１を表す）、行番号、および日本語新版の文字列が続く。以降同様に、“Ｅ６ｃ１”（英語旧版のファイルＩＤ）、行番号、英語旧版の文字列、“Ｊ６ｃ１”（日本語旧版のファイルＩＤ）、行番号、日本語旧版の文字列が連結されている。
【００３７】
＜ステップＳ３＞
次に、ステップＳ２で作成したテキスト・ファイル内の英新、日新、英旧、日旧のデータを比較分析して、日英のデータを分類し、新版旧版の変更属性ＩＤ（ＣｈａｎｇｅＩＤ）を各レコードに追加する。上記の例では、下記のようになる。
【００３８】
Ｅ７ｂ１＝１＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝Ｔｉｔｌｅ＝“２ＤＶｉｅｗｅｒ”＝Ｊ７ｂ１＝１＝“２Ｄビューアー”＝Ｅ６ｃ１＝１＝“２ＤＶｉｅｗｅｒ”＝Ｊ６ｃ１＝１＝“２Ｄビューアー”＝０；
【００３９】
最後の“０”が、ＣｈａｎｇｅＩＤである。なお、上記の例はＣＡＴＩＡの場合を示しているが、ＪＡＶＡ（登録商標）では、以下のような表記になるが本質的には同様である。このように、本発明はプログラム言語の表記とは無関係なのでいかなるプログラム言語にも対応できる。
【００４０】
Ｅ７ｂ１＝１＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝Ｔｉｔｌｅ＝２ＤＶｉｅｗｅｒ＝Ｊ７ｂ１＝１＝２Ｄビューアー＝Ｅ６ｃ１＝１＝２ＤＶｉｅｗｅｒ＝Ｊ６ｃ１＝１＝２Ｄビューアー＝０
【００４１】
図２は、変更属性ＩＤを定義した種別表である。また、図３は、英日新版旧版の変更の種別を、それぞれの版につきファイルが有るか、無いかで、計２×２×２×２の１６種類に分類した表である。図２の変更属性ＩＤの種別表は、図３の表から、翻訳対象として意味のある５種類、（図３の説明欄の（Ａ），（Ｂ），（Ｃ），（Ｄ），（Ｅ）で示す）、を更に細かく分類して定義したものである。例えば、図３の（Ａ）は、図２のＩＤの１（Ａ）〜３（Ａ）に細分されている。ここで、図２中の「生」とは、新しくファイルが生まれることを意味している。英語の場合は、新しくｋｅｙを作成し、同時に文字列も作成する。日本語の場合は、翻訳対象にＰＩＩファイルが指定され、日本語翻訳ファイルが生まれたという意味になる。
【００４２】
＜ステップＳ４＞
最後に、ステップＳ３で処理した中間ファイルを参照して、翻訳検証用の日本語新版ＰＩＩファイル（テスト用ＰＩＩファイル）を作成する。このとき、また、このとき、ユーザーが指定した変更属性ＩＤに対して、日本語の文字列の後に、「＿ＩＤ＿英語新版の文字列」を追加する。
【００４３】
この検証ツールプログラムは、ユーザーの変更属性ＩＤの入力に基づいて、ＰＩＩファイルに次のいずれかを１行ずつ出力する。
新版の日本語のｋｅｙと日本語のＰＩＩ文字列（例：ｋｅｙ＝ファイルのコピー先）
新版の日本語のｋｅｙと日本語のＰＩＩ文字列＿ＣｈａｎｇｅＩＤ＿英語のＰＩＩ文字列（例：ｋｅｙ＝ファイルのコピー先＿２＿Ｃｏｐｙ  ファイル  ｔｏ）
【００４４】
ここで、作成したテスト用日本語ＰＩＩファイルで、アプリケーション実行時に用いられる通常の日本語ＰＩＩファイルを置き換える。なお、上記のカッコ内の例ではＣｈａｎｇｅＩＤのセパレータを“＿”にした。ここで、セパレータとは、表示用の区切り文字で、先の「分離記号」とは別の文字であってよい。また、ＣｈａｎｇｅＩＤの２は、図２の表で示すように、「日本語を旧版から修正（英語の変更はなし）」という意味である。
【００４５】
図４は、翻訳検証用の新版日本語ＰＩＩファイルを作成する流れを示したものである。この図では、旧版ＧＵＩ４１と旧版アプリケーション（ソフトウェア）４２（全言語対応）から、英語と日本語の旧版ＰＩＩファイル４３を取り出し、また、新版ＧＵＩ４４と新版アプリケーション（ソフトウェア）４５（全言語対応）から、英語と日本語の新版ＰＩＩファイル４６を取り出し、それらのＰＩＩファイルを比較する。その比較した結果から、日本語のテスト用ＰＩＩファイル４９を生成する。それによって、新版アプリケーション４８を用いて、テスト用のＧＵＩ４７が表示されることになる。なお、ＧＵＩ上の表示とｋｅｙの順は関係ないことに注意されたい。
【００４６】
上記の例はＣＡＴＩＡの場合を念頭においているが、ＪＡＶＡ（登録商標）の場合は、アプリケーションからＰＩＩファイルを取り出すときに文字コード（ｎａｔｉｖｅ  ｃｏｄｅ  ｔｏ  ａｓｃｉｉ等）の変換を行なう。逆に、ＰＩＩファイルをアプリケーションに組み込むときも同様である。
【００４７】
［代替方法］
図５は、上記のステップＳ３〜Ｓ４の代替ステップを示したものである。すなわち、この図では、変更属性ＩＤを用いず、より単純な方法を示している。まず、ステップＳ１０１とＳ１０２において、英旧文字列と英新文字列が同じかどうか、かつ日旧文字列と日新文字列が同じかどうかを判断する。ステップＳ１０１とＳ１０２の判断が共にＹｅｓの場合には、日新の文字列のみを抽出する（ステップＳ１０３）。ステップＳ１０１とＳ１０２の判断のいずれかがＮｏの場合は、日新文字列と英新文字列とを抽出する（ステップＳ１０４）。そして、この抽出した文字列を後のソフトウェア実行時のＧＵＩ画面に表示させるようにする（ステップＳ１０５）。ステップＳ１０５は、具体的には、この抽出した文字列を用いてテスト用ＰＩＩファイル生成し、ソフトウェアが通常実行時のＰＩＩファイルを、生成したテスト用ＰＩＩファイルで置き換えることで実現できる。このようにすることで、ユーザーに変更属性ＩＤを指定させる必要はなくなる。ただし、この方法では、変更の種類別にＧＵＩ上で翻訳文字列の表示を変えることはできない。
【００４８】
［検証ツールプログラムの詳細説明］
以下ＣＡＴＩＡのＣＡＴＮｌｓファイルの場合を例に、プログラムの実装を説明する。ここでは、高価な商用データベースを使わないで、小さなプログラムで簡単にデータを処理する方法を示している。特にＪＡＶＡ（登録商標）環境で、かつＥｃｌｉｐｓｅ等にＰｌｕｇ−ｉｎで入れるには、この方法は便利である。もちろん、商用データベース等を利用してもよい。
【００４９】
ここでは、図１のステップＳ１の部分を詳しく説明する。図６のステップＳ１１〜Ｓ１４は、ステップＳ１のより詳細を示したフローチャートである。
【００５０】
まず、ステップＳ１１では、ＰＩＩファイルを多数持つ１つのディレクトリ中の全ファイルのデータを読み出し、１つのデータファイルを作成する。
【００５１】
次にステップＳ１２では、ディレクトリの中にあるファイルのファイル名リスト（配列）を作成する。更に、ディレクトリがあるときは、ディレクトリ名もファイル名に加える。
【００５２】
そしてステップＳ１３では、ステップＳ１２で作成したファイル名を順番に取り出し、１つのｋｅｙごとにファイル名とｋｅｙ、ＰＩＩ文字列からなるＥｑｕａｌ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅのレコードを作成する。このとき、ファイルの管理を容易にするため、ファイルのＩＤとｋｅｙが出現する行数もレコードの先頭に入れる（例えば、ファイルＩＤと行数をＥ７ｂ１，１のように）。
【００５３】
以上のステップＳ１１〜Ｓ１３の処理を、英新、英旧、日新、日旧の４つのディレクトリについて完了するまで繰り返す（ステップＳ１４）。
【００５４】
ＣＡＴＩＡには約８０００のＰＩＩファイルが存在するが、実際にはＰＩＩファイルを１つのフォルダにまとめている。ＪＡＶＡ（登録商標）等では木構造のフォルダに分類する。ファイルがフォルダに分かれているときには、ファイル名の前にディレクトリ名を付加してファイル名とする。
【００５５】
例として、ＣＡＴＩＡの２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓのファイルの最初の６行を次に示す。通常はコメント等も入っている。
【００５６】
Ｔｉｔｌｅ＝“２ＤＶｉｅｗｅｒ”；
Ｖｉｓｉｂｉｌｉｔｙ．Ｔｉｔｌｅ＝“Ｖｉｓｉｂｉｌｉｔｙ”；
Ｖｉｓｉｂｉｌｉｔｙ．Ｈｅｌｐ＝“Ｔｈｅ  “Ｖｉｓｉｂｉｌｉｔｙ”  ｐｒｏｐｅｒｔｙ，  ｏｆ  ｔｙｐｅ  “ｂｏｏｌｅａｎ”．”；
ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ．Ｔｉｔｌｅ＝“ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ”；
ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ．Ｈｅｌｐ＝“Ｔｈｅ  “ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ”  ｐｒｏｐｅｒｔｙ，  ｏｆ  ｔｙｐｅ  “ｂｏｏｌｅａｎ”．”；
ＵＲＬ．Ｔｉｔｌｅ＝“ＵＲＬ”；
【００５７】
上記ファイルを次のようにファイルＩＤを振りながらテキスト・ファイルを作成する。すなわち、上記のＰＩＩファイルの約８０００個を１ファイルにする。下記に示す例はこのファイルの最初の数行を示したもので、各行の左から、このテキスト・ファイルのファイルＩＤ（Ｅ７ｂ１）、行数、ファイル名、ｋｅｙ、文字列である。ファイルはＥｑｕａｌ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅである。ただし、本発明では必ずしもこのＩＤを振る必要はない。
【００５８】
Ｅ７ｂ１＝１＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝Ｔｉｔｌｅ＝“２ＤＶｉｅｗｅｒ”
Ｅ７ｂ１＝２＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝Ｖｉｓｉｂｉｌｉｔｙ．Ｔｉｔｌｅ＝“Ｖｉｓｉｂｉｌｉｔｙ”
Ｅ７ｂ１＝３＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝Ｖｉｓｉｂｉｌｉｔｙ．Ｈｅｌｐ＝“Ｔｈｅ  “Ｖｉｓｉｂｉｌｉｔｙ”  ｐｒｏｐｅｒｔｙ，  ｏｆ  ｔｙｐｅ  “ｂｏｏｌｅａｎ”．”
Ｅ７ｂ１＝４＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ．Ｔｉｔｌｅ＝“ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ”
Ｅ７ｂ１＝５＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ．Ｈｅｌｐ＝“Ｔｈｅ  “ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ”  ｐｒｏｐｅｒｔｙ，  ｏｆ  ｔｙｐｅ  “ｂｏｏｌｅａｎ”．”
Ｅ７ｂ１＝６＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝ＵＲＬ．Ｔｉｔｌｅ＝“ＵＲＬ”
【００５９】
これらのテキスト・ファイルを、新旧英日の各ディレクトリ内にあるＰＩＩファイルについて４つ作成する。
【００６０】
図６のステップＳ２１〜Ｓ２２は、図１のステップＳ２の詳細を示したものである。
まず、ステップＳ２１では、英語新版（英新）のファイルのファイル名とｋｅｙ名で、入力ファイルの各レコードを検索し、４つのファイルから１つのレコードを作成する。このとき、データの有無に関わらず漏れなくデータをレコードに加える。文字列データがなければ、Ｎｕｌｌをデータに入れる。これは、レコード中に英語のデータはあるが、日本語のデータがないという場合があり得るからである。
【００６１】
次に、ステップＳ２２では、４つのファイルから、英語新版のファイル名とｋｅｙ名に従った、１つのファイルを作成する。
【００６２】
上記のステップでは、例として、次のような英語新版、日本語新版、英語旧版、日本語旧版の各レコードを連結したデータを作成する。そして、英語新版のｋｅｙを検索キーとする１つの中間ファイルにする。
【００６３】
Ｅ７ｂ１＝１＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝Ｔｉｔｌｅ＝“２ＤＶｉｅｗｅｒ”＝Ｊ７ｂ１＝１＝“２Ｄビューアー”＝Ｅ６ｃ１＝１＝“２ＤＶｉｅｗｅｒ”＝Ｊ６ｃ１＝１＝“２Ｄビューアー”
Ｅ７ｂ１＝２＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝Ｖｉｓｉｂｉｌｉｔｙ．Ｔｉｔｌｅ＝“Ｖｉｓｉｂｉｌｉｔｙ”＝Ｊ７ｂ１＝２＝“表示／非表示”＝Ｅ６ｃ１＝２＝“Ｖｉｓｉｂｉｌｉｔｙ”＝Ｊ６ｃ１＝２＝“表示／非表示”
Ｅ７ｂ１＝３＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝Ｖｉｓｉｂｉｌｉｔｙ．Ｈｅｌｐ＝“Ｔｈｅ  “Ｖｉｓｉｂｉｌｉｔｙ”  ｐｒｏｐｅｒｔｙ，  ｏｆ  ｔｙｐｅ  “ｂｏｏｌｅａｎ”．”＝Ｊ７ｂ１＝３＝“タイプ「ブール」の「表示／非表示」プロパティです。”＝Ｅ６ｃ１＝３＝“Ｔｈｅ  “Ｖｉｓｉｂｉｌｉｔｙ”  ｐｒｏｐｅｒｔｙ，  ｏｆ  ｔｙｐｅ  “ｂｏｏｌｅａｎ”．”＝Ｊ６ｃ１＝３＝“タイプ「ブール」の「表示／非表示」プロパティです。”
Ｅ７ｂ１＝４＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ．Ｔｉｔｌｅ＝“ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ”＝Ｊ７ｂ１＝４＝“非同期リフレッシュ可能”＝Ｅ６ｃ１＝４＝“ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ”＝Ｊ６ｃ１＝４＝“非同期リフレッシュ可能”
Ｅ７ｂ１＝５＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ．Ｈｅｌｐ＝“Ｔｈｅ  “ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ”  ｐｒｏｐｅｒｔｙ，  ｏｆ  ｔｙｐｅ  “ｂｏｏｌｅａｎ”．”＝Ｊ７ｂ１＝５＝“タイプ「ブール」の「非同期リフレッシュ可能」プロパティです。”＝Ｅ６ｃ１＝５＝“Ｔｈｅ  “ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ”  ｐｒｏｐｅｒｔｙ，  ｏｆ  ｔｙｐｅ  “ｂｏｏｌｅａｎ”．”＝Ｊ６ｃ１＝５＝“タイプ「ブール」の「非同期リフレッシュ可能」プロパティです。”
Ｅ７ｂ１＝６＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝ＵＲＬ．Ｔｉｔｌｅ＝“ＵＲＬ”＝Ｊ７ｂ１＝６＝“ＵＲＬ”＝Ｅ６ｃ１＝６＝“ＵＲＬ”＝Ｊ６ｃ１＝６＝“ＵＲＬ”
【００６４】
図７のフローチャートでステップＳ３１は、図１のステップＳ３の詳細を示したものである。レコード内のデータは順に、
１．英語新版ファイルＩＤ
２．英語新版ファイル内の行数
３．ファイル名
４．ｋｅｙ名
５．英語新版文字列
６．日本語新版ファイルＩＤ
７．日本語新版ファイル内の行数
８．日本語新版文字列
９．英語旧版ファイルＩＤ
１０．英語旧版ファイル内の行数
１１．英語旧版文字列
１２．日本語旧版ファイルＩＤ
１３．日本語旧版ファイル内の行数
１４．日本語旧版文字列
１５．英日新旧変更属性ＩＤ
で並んでいるとする。
【００６５】
その場合、入力の１レコードの、５、８、１１、１４番目のデータ順に、英語新版文字列、日本語新版文字列、英語旧版文字列、日本語新版文字列があるので、それらを比較して、レコードの最後に＝で分離した英日新旧変更属性ＩＤを追加する。
【００６６】
上記ステップでは、上記のデータに変更属性ＩＤ（ＣｈａｎｇｅＩＤ）を追加する。この結果の例を下記に示す。ＣｈａｎｇｅＩＤは、前述したように、図２の表の８種類（１−８）に分ける。正確には、８種類以外のＣｈａｎｇｅＩＤを、「その他」“０”とするので、全部で９種類に分類することになる。この例では全てがＣｈａｎｇｅＩＤ＝０となっている。「その他」は、新版、旧版で変化はないか、もしくは無意味なものを示す。上記のステップＳ３１の処理結果は以下のようになる。
【００６７】
Ｅ７ｂ１＝１＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝Ｔｉｔｌｅ＝“２ＤＶｉｅｗｅｒ”＝Ｊ７ｂ１＝１＝“２Ｄビューアー”＝Ｅ６ｃ１＝１＝“２ＤＶｉｅｗｅｒ”＝Ｊ６ｃ１＝１＝“２Ｄビューアー”＝０
Ｅ７ｂ１＝２＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝Ｖｉｓｉｂｉｌｉｔｙ．Ｔｉｔｌｅ＝“Ｖｉｓｉｂｉｌｉｔｙ”＝Ｊ７ｂ１＝２＝“表示／非表示”＝Ｅ６ｃ１＝２＝“Ｖｉｓｉｂｉｌｉｔｙ”＝Ｊ６ｃ１＝２＝“表示／非表示”＝０
Ｅ７ｂ１＝３＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝Ｖｉｓｉｂｉｌｉｔｙ．Ｈｅｌｐ＝“Ｔｈｅ  “Ｖｉｓｉｂｉｌｉｔｙ”  ｐｒｏｐｅｒｔｙ，  ｏｆ  ｔｙｐｅ  “ｂｏｏｌｅａｎ”．”＝Ｊ７ｂ１＝３＝“タイプ「ブール」の「表示／非表示」プロパティです。”＝Ｅ６ｃ１＝３＝“Ｔｈｅ  “Ｖｉｓｉｂｉｌｉｔｙ”  ｐｒｏｐｅｒｔｙ，  ｏｆ  ｔｙｐｅ  “ｂｏｏｌｅａｎ”．”＝Ｊ６ｃ１＝３＝“タイプ「ブール」の「表示／非表示」プロパティです。”＝０
Ｅ７ｂ１＝４＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ．Ｔｉｔｌｅ＝“ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ”＝Ｊ７ｂ１＝４＝“非同期リフレッシュ可能”＝Ｅ６ｃ１＝４＝“ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ”＝Ｊ６ｃ１＝４＝“非同期リフレッシュ可能”＝０
Ｅ７ｂ１＝５＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ．Ｈｅｌｐ＝“Ｔｈｅ  “ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ”  ｐｒｏｐｅｒｔｙ，  ｏｆ  ｔｙｐｅ  “ｂｏｏｌｅａｎ”．”＝Ｊ７ｂ１＝５＝“タイプ「ブール」の「非同期リフレッシュ可能」プロパティです。”＝Ｅ６ｃ１＝５＝“Ｔｈｅ  “ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ”  ｐｒｏｐｅｒｔｙ，  ｏｆ  ｔｙｐｅ  “ｂｏｏｌｅａｎ”．”＝Ｊ６ｃ１＝５＝“タイプ「ブール」の「非同期リフレッシュ可能」プロパティです。”＝０
Ｅ７ｂ１＝６＝２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓ＝ＵＲＬ．Ｔｉｔｌｅ＝“ＵＲＬ”＝Ｊ７ｂ１＝６＝“ＵＲＬ”＝Ｅ６ｃ１＝６＝“ＵＲＬ”＝Ｊ６ｃ１＝６＝“ＵＲＬ”＝０
【００６８】
また、ステップＳ３１の処理結果として、ＣｈａｎｇｅＩＤで０以外が付く例を次に示す。ここで、ファイルＩＤのＥ７ｂ１８０１は、Ｅｎｇｌｉｓｈ  Ｖｅｒｓｉｏｎ７を表し、同じくＪ７ｂ１１７５はＪａｐａｎｅｓｅ  Ｖｅｒｓｉｏｎ７を表している。
【００６９】
Ｅ７ｂ１８０１＝７５＝ＣＡＴＤｅｔａｉｌＤｉｔｔｏＣｍｄ．ＣＡＴＮｌｓ＝ＣＡＴＤｅｔａｉｌＤｉｔｔｏＣｍｄ．ＰｕｓｈＢＦｌｉｐＹ．Ｃｈｅｃｋ．ＳｈｏｒｔＨｅｌｐ＝“Ｆｌｉｐｓ  ｔｈｅ  ｃｏｍｐｏｎｅｎｔ  ａｒｏｕｎｄ  ｔｈｅ  Ｘ  ａｘｉｓ”＝Ｊ７ｂ１１７５＝７５＝“構成要素をＸ軸のまわりに反転します”＝＝＝＝＝＝１
Ｅ７ｂ１８０１＝７８＝ＣＡＴＤｅｔａｉｌＤｉｔｔｏＣｍｄ．ＣＡＴＮｌｓ＝ＣＡＴＤｅｔａｉｌＤｉｔｔｏＣｍｄ．ＬｉｎｋＰｒｏｐｅｒｔｙＡｇｅｎｔＲｅｓｏｕｒｃｅ．ＬｉｎｋＷｉｔｈ．ＳｈｏｒｔＨｅｌｐ＝“Ｌｉｎｋ  Ｗｉｔｈ  Ｄｅｔａｉｌ”＝Ｊ７ｂ１１７５＝７８＝“ディテール付きリンク”＝＝＝＝＝＝１
Ｅ７ｂ１８０１＝７９＝ＣＡＴＤｅｔａｉｌＤｉｔｔｏＣｍｄ．ＣＡＴＮｌｓ＝ＣＡＴＤｅｔａｉｌＤｉｔｔｏＣｍｄ．ＬｉｎｋＰｒｏｐｅｒｔｙＡｇｅｎｔＲｅｓｏｕｒｃｅ．ＬｉｎｋＷｉｔｈ．ＬｏｎｇＨｅｌｐ＝“Ｃｒｅａｔｅｓ  ａ  ２Ｄ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｓｔａｎｃｅ  ｈａｖｉｎｇ  Ｌｉｎｋ  Ｗｉｔｈ  Ｄｅｔａｉｌ  ｉｎ  ｄｅｔａｉｌ  ｓｈｅｅｔ”＝Ｊ７ｂ１１７５＝７９＝“ディテール  シートにディテール付きリンクのある２Ｄ構成要素インスタンスを作成します”＝＝＝＝＝＝１
【００７０】
図７のフローチャートでステップＳ４１〜Ｓ４３は、図１のステップＳ４の詳細を示したものである。
【００７１】
まず、ステップＳ４１では、ＧＵＩ上に翻訳文字列を表示するために、ユーザーが選択した英日新旧変更属性ＩＤ（ＣｈａｎｇｅＩＤ）の入力を受ける。次にステップＳ４２では、ステップＳ１３で生成した、日本語新版ファイル上にあるｋｅｙに基づいて、テスト用日本語新版ＰＩＩファイルを作成し、これをディレクトリ内の全てのファイルに対して処理する。このとき、ステップＳ４３では、ユーザーが選択した英日新旧変更属性ＩＤに該当するｋｅｙの場合は、日本語文字列の後に「＿英日新旧変更属性ＩＤ＿」を加え、ステップＳ３１で生成したデータを用いて英語新版文字列を追加する。指定したもの以外は、日本語新版文字列のみのファイルに書き込む。
【００７２】
ステップＳ４では、このようにステップＳ１で作成した日本語新版テキスト・ファイルから、翻訳検証用日本語ＰＩＩファイルを生成する。生成先は、ツールプログラムのユーザーが指定する任意の場所であってよい。このとき、ユーザーが変更属性ＩＤを指定しているものについては、日本語の後に、ＩＤと英語を追加する。指定しているＩＤ以外は、日本語のみでＩＤも英語も追加しない。また、全てのＣｈａｎｇｅＩＤを選んでいると、全てのＰＩＩが日本語とＣｈａｎｇｅＩＤと英語の表示になる。通常は、ＣｈａｎｇｅＩＤ＝その他“０”が選ばれることはないので、見たい変化のあるもののみＣｈａｎｇｅＩＤと英語を表示できる。
【００７３】
ステップ４の最終出力は、テスト用の日本語のＰＩＩファイルになる。ただし、コメント等の、テストために不必要な情報は入っていない。ユーザーがＣｈａｎｇｅＩＤを選択したものには、日本語にＣｈａｎｇｅＩＤと新版の英語が付加される。以下に、一例として、ＣｈａｎｇｅＩＤを１つだけ選んだときのテスト用日本語ＰＩＩファイルを示す。この例では、２ＤＶｉｅｗｅｒ．ＣＡＴＮｌｓのファイル内のデータは、結局、全て日本語のみとなっている。
【００７４】
Ｔｉｔｌｅ＝“２Ｄビューアー”；
Ｖｉｓｉｂｉｌｉｔｙ．Ｔｉｔｌｅ＝“表示／非表示”；
Ｖｉｓｉｂｉｌｉｔｙ．Ｈｅｌｐ＝“タイプ「ブール」の「表示／非表示」プロパティです。”；
ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ．Ｔｉｔｌｅ＝“非同期リフレッシュ可能”；
ＡｓｙｎｃＲｅｆｒｅｓｈａｂｌｅ．Ｈｅｌｐ＝“タイプ「ブール」の「非同期リフレッシュ可能」プロパティです。”；
ＵＲＬ．Ｔｉｔｌｅ＝“ＵＲＬ”；
【００７５】
また、ＣＡＴＩＡの別のＰＩＩファイルであるＣＡＴＤｅｔａｉｌＤｉｔｔｏＣｍｄ．ＣＡＴＮｌｓのファイル内のデータは、テスト用日本語ＰＩＩファイルでは以下のようになる。
【００７６】
ＣＡＴＤｅｔａｉｌＤｉｔｔｏＣｍｄ．ＰｕｓｈＢＦｌｉｐＹ．Ｃｈｅｃｋ．ＳｈｏｒｔＨｅｌｐ＝“構成要素をＸ軸のまわりに反転します＿１＿Ｆｌｉｐｓ  ｔｈｅ  ｃｏｍｐｏｎｅｎｔ  ａｒｏｕｎｄ  ｔｈｅ  Ｘ  ａｘｉｓ”；
ＣＡＴＤｅｔａｉｌＤｉｔｔｏＣｍｄ．ＬｉｎｋＰｒｏｐｅｒｔｙＡｇｅｎｔＲｅｓｏｕｒｃｅ．ＬｉｎｋＷｉｔｈ．ＳｈｏｒｔＨｅｌｐ＝“ディテール付きリンク＿１＿Ｌｉｎｋ  Ｗｉｔｈ  Ｄｅｔａｉｌ”；
ＣＡＴＤｅｔａｉｌＤｉｔｔｏＣｍｄ．ＬｉｎｋＰｒｏｐｅｒｔｙＡｇｅｎｔＲｅｓｏｕｒｃｅ．ＬｉｎｋＷｉｔｈ．ＬｏｎｇＨｅｌｐ＝“ディテール  シートにディテール付きリンクのある２Ｄ構成要素インスタンスを作成します＿１＿Ｃｒｅａｔｅｓ  ａ  ２Ｄ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｓｔａｎｃｅ  ｈａｖｉｎｇ  Ｌｉｎｋ  Ｗｉｔｈ  Ｄｅｔａｉｌ  ｉｎ  ｄｅｔａｉｌ  ｓｈｅｅｔ”；
【００７７】
このファイルでは、ＣｈａｎｇｅＩＤと英語文字列が出る画面上の表示は次のようになる。
ディテール付きリンク＿１＿Ｌｉｎｋ  Ｗｉｔｈ  Ｄｅｔａｉｌ
【００７８】
これにより、この「ディテール付きリンク」は英語が生まれたので、それに伴って日本語訳が今回のバージョンアップで与えられたとわかり、ユーザーは注意を払うことができる。ユーザーは、実際の画面の流れから、「ディテールにリンク」が適切な訳とわかり、ＴＶＴで修正を加える必要がある。もちろん、ＩＤと英語表示オプション選択を設ければ、ＩＤのみ、英語のみの表示にしたりすることもできる。
【００７９】
［画面例］
現在、この検証ツールプログラムは、図２の表で定義される８種類の変更全部に対して、６種類の変更のあったものに英語を付加して、ＴＶＴテストで使用している。そのためＩＤの番号は省略し、“＿”のみに単純化している。対象としているソフトウェアは、ＣＡＴＩＡである。上記の検証ツールプログラムの実装例とは少し異なるが、実際の見た目がわかる例として、図８に、検証ツールプログラムで作成したＰＩＩファイルでＣＡＴＩＡのＰＩＩファイルを置き換えたときのキャプチャ・イメージを示す。また、図１０に、検証ツールプログラムで作成したＰＩＩファイルでＣＡＴＩＡのＰＩＩファイルを置き換えた時の変更属性ＩＤを表示したキャプチャ・イメージを示す。図１０の例では、新版日本語文字列の後に変更属性ＩＤと英語新版文字列が表示されている。ここで、表示される文字列は、ユーザーが指定した変更属性ＩＤを持つもののみを表示させるようにしてもよい。
【００８０】
例えば、図８の最下行の「正面ビュー＿Ｆｒｏｎｔ  Ｖｉｅｗ．／ビュー＿Ｖｉｅｗｓ／注釈セット１．が選択されました」という行では、「正面ビュー」、「ビュー」、「注釈セット」、「選択されました」の４つのＰＩＩの組み合わせになっている。なお、「／」、「１．」は、検証ツールプログラムが便宜上付加した変数であるが、リソース・ファイルの対象外である。検証ツールプログラムは、１行内に色々なｋｅｙを使って作成するので、ＰＩＩは１行全部の文字列ではないことに注意されたい。また、「正面ビュー」と「ビュー」は、それぞれ変更属性ＩＤを持ち、翻訳検証で注意が必要であることがわかる。逆に、「注釈セット」、「選択されました」は、英語の部分がついていないので、以前のバージョンから変更がない、ということを意味している。
【００８１】
図９は、図８のポップアップメニューを拡大したものである。点線で囲まれる部分８１、８２、８３、８４が本発明の手法により表示された日英の文字列が＿で対になって示されている。なお、ここでもＣｈａｎｇｅＩＤの表示は省略されている。
【００８２】
図１１は、本発明の実施形態に係る情報処理装置（以下、ＰＩＩ検証装置１０と呼ぶ）の機能ブロックを示した図である。本装置は、ＰＣ等一般的なコンピュータであってよく、装置全体の制御を行う制御部１１（ＣＰＵ）、ＰＩＩファイルの入力を受け付けるＰＩＩファイル入力部１２、各種データを記憶する記憶部１３（ＲＡＭ、ＲＯＭ、ＨＤＤ、光ディスク、フレキシブルディスク、テープ等）、およびユーザー３２とのインターフェースを提供する表示部１４（ＣＲＴ、液晶表示装置等）と操作部１５（キーボード、マウス等）を備える。入力となるＰＩＩファイルは、英語旧版ＰＩＩファイル２１、日本語旧版ＰＩＩファイル２２、英語新版ＰＩＩファイル２３、および日本語新版ＰＩＩファイル２４の４種類である。また、特に図示していないが、外部装置との通信を行う通信部や、音声インターフェース（マイク、スピーカ等）部を備えてもよい。ただし、このような構成は一例を示したに過ぎず、機能的に同等であれば他の構成であってもよい。
【００８３】
記憶部１３には、上記４種類のＰＩＩファイルを１つのテキスト・ファイルと、中間ファイル１６、新旧ＰＩＩファイルの変更属性の種別を定義した変更属性種別表１８が格納される。更に、記憶部１３には本装置の出力として生成されたテスト用ＰＩＩファイル１７が格納される。実際には、入力となるＰＩＩファイルは多数あるので、日英新旧のそれぞれに対してテキスト・ファイルを作成した後、それを１つの中間ファイル１６にまとめる。
【００８４】
制御部１１は、検証対象の新版ソフトウェア１９を起動させ、ユーザー３２に対して翻訳文字列を含んだＧＵＩ画面３１を表示する。このとき、ユーザー３２は、操作部１５を介して、ＧＵＩ画面３１上に表示したい文字列に関する変更属性ＩＤを指定することができる。本装置は、前述した検証ツールプログラムを実装することによって、図１の各ステップを実現する手段を備える。各手段の詳細については、前述の検証ツールプログラムの説明で明らかであるのでここでは説明を省略する。
【００８５】
以上、本発明を実施形態に則して説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態または実施例に記載されたものに限定されるものではない。
【図面の簡単な説明】
【００８６】
【図１】本発明の１つの実施形態に係る検証ツールプログラムの処理の概要を示した図である。
【図２】英日新版旧版変更属性ＩＤの種別表である。
【図３】図２の基となる新版旧版の変更の種別表である。
【図４】翻訳検証用新版日本語ＰＩＩファイルを作成する流れを示した図である。
【図５】検証ツールプログラムがＧＵＩ画面に翻訳文字列を表示するための代替処理を示した図である。
【図６】ステップＳ１、Ｓ２の詳細を示したフローチャートである。
【図７】ステップＳ３、Ｓ４の詳細を示したフローチャートである。
【図８】検証ツールプログラムで作成したＰＩＩファイルでＣＡＴＩＡのＰＩＩファイルを置き換えた時のキャプチャ・イメージを示した図である。
【図９】図８のポップアップメニューを拡大した図である。
【図１０】検証ツールプログラムで作成したＰＩＩファイルでＣＡＴＩＡのＰＩＩファイルを置き換えた時の変更属性ＩＤを表示したキャプチャ・イメージを示した図である。
【図１１】本発明の実施形態に係るＰＩＩ検証装置１０の機能ブロックを示す図である。
【符号の説明】
【００８７】
１０  ＰＩＩ検証装置
１１  制御部
１２  ＰＩＩファイル入力部
１３  記憶部
１４  表示部
１５  操作部
１６  中間ファイル
１７  テスト用ＰＩＩファイル
１８  変更属性種別表
１９  検証対象新版ソフトウェア
２１  英語旧版ＰＩＩファイル
２２  日本語旧版ＰＩＩファイル
２３  英語新版ＰＩＩファイル
２４  日本語新版ＰＩＩファイル
３１  ＧＵＩ画面
３２  ユーザー
４１  旧版ＧＵＩ
４２  旧版アプリケーション
４３  旧版ＰＩＩファイル
４４  新版ＧＵＩ
４５、４８  新版アプリケーション
４６  新版ＰＩＩファイル
４７  テスト用ＧＵＩ
４９  テスト用ＰＩＩファイル
８１、８２、８３、８４  日英が対になって表示された文字列
【図１】
2008197814.tif 000003
【図２】
2008197814.tif 000004
【図３】
2008197814.tif 000005
【図４】
2008197814.tif 000006
【図５】
2008197814.tif 000007
【図６】
2008197814.tif 000008
【図７】
2008197814.tif 000009
【図８】
2008197814.tif 000010
【図９】
2008197814.tif 000011
【図１０】
2008197814.tif 000012
【図１１】
2008197814.tif 000013
【手続補正書】
【提出日】平成19年8月27日(2007.8.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１７
【補正方法】変更
【補正の内容】
【請求項１７】
前記制御部は、前記検索キーを参照し、前記中間ファイルの各レコード中の前記第１言語の旧版と新版の文字列、および前記第２言語の旧版と新版の文字列を比較する手段と、
前記比較の結果得られる前記文字列の変更の種類を表す変更属性ＩＤを、前記中間ファイルの各レコードに付加する手段と、
を更に備えた、請求項１５に記載の装置。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１８
【補正方法】変更
【補正の内容】
【請求項１８】
前記表示用文字列を、前記検証対象のソフトウェアが実行時に表示するＧＵＩ画面に表示する表示部を更に備えた、請求項１６に記載の装置。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１９
【補正方法】変更
【補正の内容】
【請求項１９】
前記変更ＩＤと前記比較された文字列を、前記検証対象のソフトウェアが実行時に表示するＧＵＩ画面に表示する表示部を更に備えた、請求項１７に記載の装置。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
＜ステップＳ３＞
次に、ステップＳ２で作成した中間ファイル内の英新、日新、英旧、日旧のデータを比較分析して、日英のデータを分類し、新版旧版の変更属性ＩＤ（ＣｈａｎｇｅＩＤ）を各レコードに追加する。上記の例では、下記のようになる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
この検証ツールプログラムは、ユーザーの変更属性ＩＤの入力に基づいて、ＰＩＩファイルに次のいずれかを１行ずつ出力する。
新版の日本語のｋｅｙと日本語のＰＩＩ文字列（例：ｋｅｙ＝ファイルのコピー先）
新版の日本語のｋｅｙと日本語のＰＩＩ文字列＿ＣｈａｎｇｅＩＤ＿英語のＰＩＩ文字列（例：ｋｅｙ＝ファイルのコピー先＿２＿Ｃｏｐｙ  ｆｉｌｅ  ｔｏ）
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
その場合、入力の１レコードの、５、８、１１、１４番目のデータ順に、英語新版文字列、日本語新版文字列、英語旧版文字列、日本語旧版文字列があるので、それらを比較して、レコードの最後に＝で分離した英日新旧変更属性ＩＤを追加する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００７２
【補正方法】変更
【補正の内容】
【００７２】
ステップＳ４では、このようにステップＳ１で作成した日本語新版テキスト・ファイルから、翻訳検証用日本語ＰＩＩファイルを生成する。生成先は、ツールプログラムのユーザーが指定する任意の場所であってよい。このとき、ユーザーが変更属性ＩＤを指定しているものについては、日本語の後に、ＩＤと英語を追加する。指定しているＩＤ以外は、日本語のみでＩＤも英語も追加しない。また、全ての変更属性ＩＤを選んでいると、全てのＰＩＩ文字列が日本語とＣｈａｎｇｅＩＤと英語の表示になる。通常は、ＣｈａｎｇｅＩＤ＝その他“０”が選ばれることはないので、見たい変化のあるもののみＣｈａｎｇｅＩＤと英語を表示できる。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００８０
【補正方法】変更
【補正の内容】
【００８０】
例えば、図８の最下行の「正面ビュー＿Ｆｒｏｎｔ  Ｖｉｅｗ．１／ビュー＿Ｖｉｅｗｓ／注釈セット１．が選択されました」という行では、「正面ビュー」、「ビュー」、「注釈セット」、「選択されました」の４つのＰＩＩの組み合わせになっている。なお、「／」、「１」は、ＣＡＴＩＡプログラム本体に埋め込まれた文字列で、ＰＩＩファイルとは直接的には関係ない。また、「正面ビュー」と「ビュー」は、それぞれ変更属性ＩＤを持ち、翻訳検証で注意が必要であることがわかる。逆に、「注釈セット」、「選択されました」は、英語の部分がついていないので、以前のバージョンから変更がない、ということを意味している。
【手続補正９】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2008197814.tif 000014
【手続補正１０】
【補正対象書類名】図面
【補正対象項目名】図３
【補正方法】変更
【補正の内容】
【図３】
2008197814.tif 000015