(57)【要約】  ソフトウェアプログラムに含まれるデータのローカリゼーションのための方法、装置、およびコンピュータ可読構成要素を含むコンピュータ可読媒体について記載される。コンピュータ可読構成要素は、ソフトウェア・データ・スキーマによって定義されるデータ要素、データ要素についての複数のデータプロパティを格納するプロパティ・レポジトリ・データ要素、およびソフトウェアプログラムに含まれるデータのローカリゼーション、および所有のコメントデータ要素の作成、アクセス、および操作を行う権限を有する所有者についての情報を含む所有のコメントデータ要素を含む。【選択図】図３
2009508268.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアプログラムに含まれるデータのローカリゼーションのためのコンピュータ可読構成要素を有するコンピュータ可読媒体であって、前記コンピュータ可読構成要素が、
ソフトウェア・データ・スキーマによって定義されるデータ要素と、
前記データ要素についての複数のデータプロパティを格納するプロパティ・レポジトリ・データ要素と、
ソフトウェアプログラムに含まれている前記データの前記ローカリゼーション、および所有のコメントデータ要素の作成、アクセス、および操作を行う権限を有する所有者についての情報を含む所有のコメントデータ要素と
を含むコンピュータ可読媒体。
【請求項２】
前記ソフトウェア・データ・スキーマが拡張可能マークアップ言語（「ＸＭＬ」）スキーマである請求項１に記載のコンピュータ可読媒体。
【請求項３】
前記データ要素のうちの少なくとも２つが階層として配置されており、親データ要素が前記階層において子データ要素より高く配置されている請求項１に記載のコンピュータ可読媒体。
【請求項４】
前記親および子データ要素のそれぞれがプロパティ・レポジトリ・データ要素を含む請求項３に記載のコンピュータ可読媒体。
【請求項５】
前記所有のコメントデータ要素が、ソフトウェアローカリゼーションツールおよび人間のオペレータのうちの少なくとも一方のための、前記ソフトウェアプログラムに含まれるデータの前記ローカリゼーションに関連する指示を含む請求項１に記載のコンピュータ可読媒体。
【請求項６】
前記所有のコメントデータ要素が、前記所有のコメントデータ要素の説明および前記所有のコメントデータ要素の所有権についての情報を含む請求項１に記載のコンピュータ可読媒体。
【請求項７】
ソフトウェアプログラムに含まれるデータのローカリゼーションのためのコンピュータ可読構成要素の集合を有するコンピュータ可読媒体であって、前記コンピュータ可読構成要素の集合が、
ソフトウェア・データ・スキーマに基づいて定義されるデータ要素と、
前記データ要素についての複数のデータプロパティを格納するプロパティ・レポジトリ・データ要素と、
前記コンピュータ可読構成要素の集合を複数の部分集合に分割し、前記複数の部分集合におけるデータ要素を別々に操作し、前記複数の部分集合をコンピュータ可読構成要素の単一の集合にマージし直すのに使用可能なローカリゼーションデータ要素の線形リストと、
ソフトウェアプログラムに含まれている前記データの前記ローカリゼーション、および所有のコメントデータ要素の作成、アクセス、および操作を行う権限を有する所有者についての情報を含む所有のコメントデータ要素と
を含むコンピュータ可読媒体。
【請求項８】
前記ソフトウェア・データ・スキーマが拡張可能マークアップ言語（「ＸＭＬ」）スキーマである請求項７に記載のコンピュータ可読媒体。
【請求項９】
前記データ要素のうちの少なくとも２つが階層として配置されており、親データ要素が前記階層において子データ要素より高く配置されている請求項７に記載のコンピュータ可読媒体。
【請求項１０】
前記親および子データ要素のそれぞれがプロパティ・レポジトリ・データ要素を含む請求項９に記載のコンピュータ可読媒体。
【請求項１１】
前記所有のコメントデータ要素が、ソフトウェアローカリゼーションツールおよび人間のオペレータのうちの少なくとも一方のための、前記ソフトウェアプログラムに含まれるデータの前記ローカリゼーションに関連する指示を含む請求項７に記載のコンピュータ可読媒体。
【請求項１２】
前記所有のコメントデータ要素が、前記所有のコメントデータ要素の説明および前記所有のコメントデータ要素の所有権についての情報を含む請求項７に記載のコンピュータ可読媒体。
【請求項１３】
前記所有のコメントデータ要素が、少なくとも１つの名前および対応する値データ対を含む情報を含む請求項７に記載のコンピュータ可読媒体。
【請求項１４】
ソフトウェアプログラムのローカリゼーションのためのソフトウェアオブジェクトの集合を格納するコンピュータ可読媒体であって、前記ソフトウェアオブジェクトの集合が、
ａ）各ソフトウェアオブジェクトに含まれるデータおよび命令と、
ｂ）ローカリゼーションデータ、および
（ｉ）他のローカリゼーション項目オブジェクトのリストを含むローカリゼーション項目リストオブジェクトと、
（ｉｉ）ソフトウェアプログラムの前記ローカリゼーションについての情報を含むコメントオブジェクトと、
（ｉｉｉ）コンピュータテキスト情報を格納する文字列データオブジェクトと、
（ｉｖ）バイナリ情報を格納するバイナリデータオブジェクトと
のうちの少なくとも１つを含むローカリゼーション項目オブジェクトと
を含み、各ソフトウェアオブジェクトが、ソフトウェア・データ・スキーマによって定義されるデータ構造に対応し、各ソフトウェアオブジェクトが、前記ソフトウェア・データ・スキーマによって定義される前記対応するデータ構造に格納されるデータにアクセスし、それを操作するために使用される
コンピュータ可読媒体。
【請求項１５】
前記ソフトウェアオブジェクトのそれぞれが、オブジェクト指向コンピュータ言語のソフトウェアクラスを含む請求項１４に記載のコンピュータ可読媒体。
【請求項１６】
前記ソフトウェア・データ・スキーマが拡張可能マークアップ言語（「ＸＭＬ」）スキーマである請求項１４に記載のコンピュータ可読媒体。
【請求項１７】
前記ソフトウェアオブジェクトのうちの少なくとも１つが、前記対応するデータ構造に格納されている事前に選択されたデータを読み出す請求項１４に記載のコンピュータ可読媒体。
【請求項１８】
前記ソフトウェアオブジェクトのうちの少なくとも１つが、前記対応するデータ構造に事前に選択されたデータを格納する請求項１４に記載のコンピュータ可読媒体。
【請求項１９】
前記ソフトウェアオブジェクトのうちの少なくとも２つが、親と子として互いに関連し、前記子オブジェクトが前記親オブジェクトに含まれる、または前記親オブジェクトから導出される、のうちの少なくとも一方である請求項１４に記載のコンピュータ可読媒体。
【請求項２０】
前記子オブジェクトが前記親オブジェクトへのバックポインタを含む請求項１９に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
近年、ソフトウェア市場は、ますます国際的になってきた。今や、文書処理、表計算、電子メールなどのどこにでもあるソフトウェア・アプリケーション・プログラム（「ソフトウェアアプリケーション」）は、様々な国で使用できる。ソフトウェアアプリケーションを様々な国で使用できるようにすることは、対応するユーザインターフェイス、および例えばエラーメッセージなど他の人間可読テキストが様々な地域の人間の言語（コンピュータ言語ではなく）で表されるソフトウェアアプリケーションの作成を必要とすることが多い。こうしたローカライズされたソフトウェアアプリケーションの市場占有率および市場価格を増加させるために、こうしたアプリケーションの作成が必要である。現地語を組み込むことは、主に、コマンドインターフェイス、メニュー、メッセージ、ステータス情報、ラベル、計算結果など、ソフトウェアアプリケーションのユーザインターフェイスにおいて重要である。様々な現地語のソフトウェアアプリケーションの必要性は、中でも、コンピュータが次第に毎日の業務や生活の一部として使用されつつある、様々な言語を有する国の増加、技術記号での対話（ｔｅｃｈｎｉｃａｌ  ｓｙｍｂｏｌ  ｉｎｔｅｒａｃｔｉｏｎ）、すなわち会計記号や数学記号を使用した対話ではなく、文書処理などのオフィス・ソフトウェア・アプリケーションなど、自然言語対話を必要とするユーザインターフェイスを有するソフトウェアアプリケーションを使用する非技術領域数の増加、および各自の現地語でソフトウェアアプリケーションと対話したいというユーザの要求など、多くの要因によって後押しされる。異なる現地語のソフトウェアアプリケーションを作成するプロセスの識別に使用される技術の共通語は、「ローカリゼーション」である。
【０００２】
人間可読テキストに加えて、アイコン、色、形状などの人間の目に見えるグラフィック構成要素、および人間の耳に聞こえる音も、文化的感受性（ｃｕｌｔｕｒａｌ  ｓｅｎｓｉｔｉｖｉｔｉｅｓ）および文化的背景に対処するために、ローカライズする必要がある場合がある。例えば、一部のアジア文化では、赤は、幸運および繁栄を表すが、ほとんどの西洋文化では、赤は、危険や警告を表す。そのため、グラフィカル・ユーザ・インターフェイス（「ＧＵＩ」）のダイアログボックスの記号または背景が赤色で表示されている場合、異なる文化のユーザにとって異なる紛らわしい意味が含まれている場合がある。したがって、ローカリゼーションのプロセスは、単にテキストを異なる言語に翻訳することを越え、他の記号、色、および音のローカリゼーションも含む。
【０００３】
ローカライズされたソフトウェアアプリケーションの必要性は、ソフトウェアアプリケーションの開発および保守の間にいくつかの問題を作り出す。ローカライズされたソフトウェアアプリケーションの開発および保守は、様々な人間可読の、および人間の目に見えるソフトウェア構成要素の処理およびローカリゼーションに適切な開発ツールおよび開発環境を必要とする。さらに、ソフトウェアアプリケーションのローカリゼーションは、それぞれ複数の部から成り、各部がローカリゼーションのプロセスの異なる部分を行う複数の組織によって行われ得る。現在使用可能な開発環境および組織環境の主な欠点の１つは、開発ツールおよび開発環境によって使用されるデータモデルの拡張性および柔軟性が限られていることである。例えば、開発ツールおよび開発環境によって使用されるデータの一部は、バイナリ形式であり、これは、どうひいき目にみてもデータの読み取り、編集、共有および操作を難しくする。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
データフォーマットは、異なる組織および開発ツールにわたって一貫性、拡張性、および柔軟性を提供することが望まれる。さらに、こうしたデータにアクセスし、それを操作するには、標準の機能方法およびデータインターフェイス方法が望ましい。
【課題を解決するための手段】
【０００５】
この「課題を解決するための手段」は、「発明を実施するための最良の形態」でさらに後述される概念の選択を簡単な形で紹介するために提供される。この「課題を解決するための手段」は、クレームに記載された主題の鍵となる特徴を識別するためのものではなく、クレームに記載された主題の範囲を画定する手助けとして使用されるものでもない。
【０００６】
ソフトウェアプログラムに含まれるデータのローカリゼーションのための方法、システム、およびコンピュータ可読構成要素を含むコンピュータ可読媒体について記載される。コンピュータ可読構成要素は、ソフトウェア・データ・スキーマによって定義されるデータ要素、データ要素についての複数のデータプロパティを格納するプロパティ・レポジトリ・データ要素、およびソフトウェアプログラムに含まれるデータのローカリゼーション、および所有のコメントデータ要素の作成、アクセス、および操作を行う権限を有する所有者についての情報を含む所有のコメントデータ要素を含む。
【０００７】
ソフトウェアプログラムに含まれるデータのローカリゼーションのための方法、システム、およびコンピュータ可読構成要素の集合を含むコンピュータ可読媒体についても記載される。コンピュータ可読構成要素の集合は、ソフトウェア・データ・スキーマによって定義されるデータ要素、データ要素についての複数のデータプロパティを格納するプロパティ・レポジトリ・データ要素、コンピュータ可読構成要素の集合を複数の部分集合に分割し、複数の部分集合におけるデータ要素を別々に操作し、複数の部分集合をコンピュータ可読構成要素の単一の集合にマージし直すのに使用可能なローカリゼーションデータ要素の線形リスト、およびソフトウェアプログラムに含まれるデータのローカリゼーション、および所有のコメントデータ要素の作成、アクセス、および操作を行う権限を有する所有者についての情報を含む所有のコメントデータ要素を含む。
【０００８】
さらに、ソフトウェアプログラムのローカリゼーションのための方法、システム、およびそこに格納されるソフトウェアオブジェクトの集合を含むコンピュータ可読媒体について記載される。ソフトウェアオブジェクトの集合は、各ソフトウェアオブジェクトに含まれるデータおよび命令、ならびに、ローカリゼーションデータと、他のローカリゼーション項目オブジェクトのリストを含むローカリゼーション項目リストオブジェクト、ソフトウェアプログラムのローカリゼーションについての情報を含む少なくとも１つのコメントオブジェクト、コンピュータテキスト情報を格納する文字列データオブジェクト、およびバイナリ情報を格納するバイナリデータオブジェクトのうちの少なくとも１つとを含むローカリゼーション項目オブジェクトを含み、各ソフトウェアオブジェクトは、ソフトウェア・データ・スキーマによって定義されたデータ構造に対応し、各ソフトウェアオブジェクトは、ソフトウェア・データ・スキーマによって定義された対応するデータ構造に格納されるデータにアクセスし、それを操作するために使用される。
【０００９】
本発明の上記の態様および付随する利点の多くは、以下の詳細な説明を添付の図面と併せ読むことによって、より容易に、かつより良く理解されよう。
【発明を実施するための最良の形態】
【００１０】
標準のおよび拡張可能なローカリゼーションデータ、およびこうしたデータへのアクセスおよびその操作のためのオブジェクトモデルを定義するシステムおよび方法が記載される。このシステムおよび方法は、ローカリゼーションプロセスでの使用に適していることが理想であるが、同じ基礎を成すデータを共有する複数の開発ツールおよび組織が関与する他のソフトウェア環境で使用することができる。したがって、本発明を、用途が本明細書に記載された実施形態例に限定されるものと解釈すべきではなく、こうした実施形態例を、限定的なものと解釈すべきではないことを理解されたい。
【００１１】
図１は、ローカリゼーションプロセス例１００の図（ｐｉｃｔｏｒｉａｌ  ｄｉａｇｒａｍ）である。ローカリゼーションプロセス例は、いくつかの別個のステージを含む動作サイクルを含む。ステージは、開発ステージ１０２、ローカリゼーションステージ１０４、翻訳ステージ１０６、およびビルドステージ１０８を含む。動作サイクルのステージは、この実施形態例に記載されているより少ないまたは多いステージを含むことができることを当業者は理解されよう。例えば、ステージの一部を統合してステージをより少なくしたり、さらに分解してステージをより多くしたりしてもよい。開発ステージ１０２で、ソフトウェア・アプリケーション・プログラム（「ソフトウェアアプリケーション」）の開発技術者は、ソフトウェアコードおよびユーザインターフェイス（「ＵＩ」）を開発する。ＵＩは、テキスト構成要素、視覚的構成要素、および音声構成要素を含み得る。例えば、開発技術者は、ソフトウェアアプリケーション用のコードを書き、コンパイルする。コードは、Ｃ、Ｃ＋＋、Ｃ＃など、いくつかの使用可能なプログラミング言語のいずれかで書くことができ、ソースコードファイル、ヘッダーファイル、およびリソースファイルを含み得る。リソースファイルは、一般に、視覚的要素および他のＵＩ要素、例えばビットマップなどを含む。開発技術者は、例えばリソースファイルなど、これらのファイルの一部にコメントを含めることもできる。コメントは、コードまたはＵＩ要素についての注釈、およびローカライズされたソフトウェアアプリケーションの開発中に使用される様々なソフトウェアコンパイラ、管理ツール、ビルドツールなどのソフトウェアツールへの指示を含む。開発技術者は、コンパイルされたコードおよびリソースファイルを含むファイルの集合をローカリゼーションステージ１０４に渡し、そこでローカリゼーション技術者は、ローカリゼーションプロセスを続ける。ローカリゼーション技術者は、すべてのターゲット言語および文化に当てはまるより多くのコメントをファイルに追加する。次に、ファイルは、翻訳ステージ１０６に渡され、そこで固有の各言語についてのソフトウェア・アプリケーション・ファイルに対して翻訳が行われる。最後に、ファイルは、ビルドステージ１０８に渡され、そこでファイルは、複数の言語のそれぞれについての実行可能ソフトウェア・アプリケーション・ファイルを生成するためにビルドされる。
【００１２】
図２は、開発ステージ１０２からローカリゼーションステージ１０４までのローカリゼーションデータフロー例２００の図である。ローカリゼーション構文解析ツール２１０は、ソースバイナリファイル２０４、コメントファイル２０６、および設定ファイル２０８を含むいくつかのファイルを統合し、出力ローカリゼーションデータファイル２１２を生成するために使用される。ソースバイナリファイル２０４は、開発技術者およびソフトウェアビルドラボ２０２から来る。ローカリゼーションファイル２１２は、ローカリゼーションステージ１０４においてローカリゼーションエンジニアリング２１４に渡されるファイルである。一実施形態例では、ローカリゼーションデータファイル２１２は、設定ファイル２０８からの設定、コメントファイル２０６からのコメント、およびソースバイナリファイル２０４からのソースバイナリデータを含む。ソフトウェアビルドラボ２０２によって提供されたソースバイナリファイル２０４は、英語など元の言語でのソフトウェア・アプリケーション・ソース・ファイルの構築から生じるバイナリデータを含む。
【００１３】
コメントファイル２０６、ソースバイナリファイル２０４、および設定ファイル２０８に組み込まれたコメントは、所有者およびコメントのソースを示すためにタグ付けされる。例えば、開発技術者から来たコメントは、こうしたタグによって示されるコメントのソースを示すために「ＤＥＶ」と記したタグが付けられ得る。コメント抽出ツールなど、ローカリゼーションプロセスで使用される様々なソフトウェアツールでも、ソフトウェア・アプリケーション・ファイルにコメントを追加することができる。例えば、コメント抽出ツールは、コメント抽出ツールによって所有されるコメントに、「ＲＣＣＸ」と記したタグを付けることができる。コメント抽出ツールは、コメント抽出ツールが操作する入力ファイルにコメントがない場合、出力ファイルを生成しない場合がある。コメントは、小文字および大文字が別個の単語を定義するケースセンシティブである、またはコメントはケースセンシティブではない。また、コメントは、使用可能または使用不可とすることもできる。例えば、ローカリゼーション管理ツールは、コメントに「ＬＣＩ」と記したタグを付けることができ、他のＤＥＶおよびＲＣＣＸコメントを使用不可にするために使用することができる。ソフトウェア・アプリケーション・ビルド・ツールは、ビルドツールプロセスを類別するｄｅｖやＲＣＣＸなどの特定のタグによって識別されたいくつかのタイプのコメントのうちの１つまたは複数を所有する。一実施形態例では、ソフトウェアビルドツールなどのツールの挙動は、構成ファイルで設定されたパラメータによって制御される。
【００１４】
異なる２つのタイプのファイルは、コメントタグによって定義されている１つまたは複数の同じタイプのコメントの所有権を含み、主張する。複数のファイルによる同じタイプのコメントの所有権の主張は、競合を作り出す。所有権の競合は、例えば、最近のファイルに所有権を割り当てることによって解決され得る、または、競合は、ファイルに事前に割り当てられた所有権の優先順位に基づいて解決され得る。したがって、優先順位がより高いファイルは、所有権の競合の対象となるタイプのコメントに対する権利が勝る。他のタイプの競合の解決を使用することもできる。したがって、これらの例は、例示的なものと解釈されるべきであり、限定的なものと解釈されるべきではない。
【００１５】
異なるタイプのコメントを含む複数のファイルがマージされるとき、所有権の競合が生じると、ワーニングメッセージまたはエラーメッセージが発行され得る。コメントのマージ操作中、意図的な変更に遭遇した場合、そのように示す情報メッセージが発行される。例えば、コメントを所有するファイルの最近のバージョンが使用可能であるため、コメントが無視されたときに情報メッセージが発行され得る。コメントを使用不可にできない場合、ワーニングメッセージが生成される。同様に、ファイルまたはツールによって所有されていないコメントが使用不可である場合、ワーニングメッセージが発行される。一実施形態例では、コメントタイプの所有権は、既存の所有者から新しい所有者に再割当される。例えば、ＤＥＶタイプのコメントの所有権は、構文解析ツールからビルドツールに委譲される。一実施形態例では、各所有者は、所有者が所有するコメントのタイプの所有権リストを有する。所有者の所有権リストにない新しいタイプのコメントが所有者に割り当てられる場合、所有者は、その所有権を保持し、ワーニングメッセージを発行する。一実施形態例では、２つのファイルが同じコメントの所有権を主張した場合、エラーメッセージが発行される。こうした所有権の競合は、ローカリゼーションプロセスの、ビルドステージ１０８など後のステージで解決され得る。一実施形態例で、リソースファイルが所有するコメントタイプを含まないリソースは、空の使用可能なコメントを有するとみなされ、コメントマージ操作中、そういうものとして扱われる。
【００１６】
上述したように、ローカリゼーションプロセス中、ローカリゼーションプロセスにおけるその後のステップのための情報および指示を提供するために、コメントがソフトウェアソースコードおよびローカリゼーションファイルに追加される。コメントは、ソフトウェアのローカライザが品質を改良し、ローカリゼーションのコストを削減するのを助ける。コメントを提供するメリットには、情報の共有、擬似ビルドの作成の支援、および翻訳の完全性の確認などがある。一実施形態において、情報の共有は、文字列リソースについての標準ローカライザビリティ指示（ｓｔａｎｄａｒｄ  ｌｏｃａｌｉｚａｂｉｌｉｔｙ  ｉｎｓｔｒｕｃｔｉｏｎ）を提供することを含み、これは、こうした文字列リソースの不正確なローカリゼーションによって生成されるバグを低減する。文字列リソースは、ソフトウェアのユーザに提示されるワーニングなどのテキストメッセージを含む。擬似ビルドは、製品開発サイクルにおいて早期にローカライザビリティ・バグ（ｌｏｃａｌｉｚａｂｉｌｉｔｙ  ｂｕｇ）を見つけ、ローカライズされた実際のビルドのテストを計画し、ローカライズされたビルドの全コストを低減するためにテストチームによって使用されるソフトウェアの一時的なテストビルド（すなわちソフトウェアコードのコンパイル）である。翻訳の完全性は、ローカライザビリティ指示およびコメントを使用して確認される。翻訳の完全性は、ローカライザによって提供された翻訳をローカリゼーションのための規制の組と照合することによって確認される。規制の組は、ソフトウェアの元の言語と、ソフトウェアがローカライズされているターゲット言語との間での単語や句などの情報の整合を含む。
【００１７】
一実施形態例では、コメント抽出ツールが使用される。上述したように、コメント抽出ツールは、コメントを含むファイル上で稼働して、ローカリゼーションデータファイルなどの出力ファイルに、こうしたコメントを抽出し、書き込むローカリゼーションツールである。別の実施形態例では、ローカリゼーションプロセスで使用される各ツールは、コメントを生成し、ツールをコメントのソースとして識別するために、こうしたコメントにタグ付けすることができる。ツールは、異なるソースを示すソースタグ付きのコメントを生成することができる。例えば、コメント抽出ツールは、「ＤＥＶ」コメントを生成することができる。こうした場合、同じタグ付きの、しかし異なるソースからの２つのコメントの間にクラッシュが起きる場合がある。一実施形態例では、クラッシュしているコメントを使用不可にするために、コメント・オーバーライド・モデル（ｃｏｍｍｅｎｔ  ｏｖｅｒｒｉｄｅ  ｍｏｄｅｌ）が使用される。使用不可のコメントは、処理中、無視される。
【００１８】
図３は、ローカリゼーションステージ１０４および翻訳ステージ１０６からビルドステージ１０８までの別のローカリゼーションデータフロー例３００の図である。この例では、ローカリゼーションビルダ３１２は、ソースバイナリファイル２０４、ローカリゼーションデータファイル２１２、およびローカライズ済み言語ファイル３１０に含まれるデータを処理して、出力ファイルターゲットバイナリ３１４を生成する。図２を参照して上述したように、ローカリゼーションデータファイル２１２は、別のファイルのデータから統合された設定、コメント、およびソースデータを含む。ローカライズ済み言語ファイル３１０は、ローカリゼーションエンジニアリング２１４によって加えられた設定、コメント、ソースデータ、および翻訳データを含む。ローカリゼーション・ビルド・ツール３１２は、ソースバイナリファイル２０４、ローカリゼーションデータファイル２１２、およびローカライズ済み言語ファイル３１０を入力ファイルとして使用し、ターゲット言語でターゲットバイナリファイル３１４を生成する。ターゲットバイナリファイル３１４の作成は、最終のローカライズ済みソフトウェアアプリケーション製品であり、ローカリゼーションプロセスの主な目的である。
【００１９】
上述したツールおよびプロセスは、共通の、一貫性のあるデータフォーマットに依存し、ツールは、それに基づいて標準化された方法でデータを統合し、処理することができる。一実施形態例では、上述した様々なローカリゼーションツールおよび関連のファイルによる使用のために、一貫性のあるデータフォーマットを定義するのに、ローカリゼーション拡張可能マークアップ言語（「ＸＭＬ」）スキーマが使用される。ローカリゼーションＸＭＬスキーマは、異なるグループおよび組織が特定のタスクを処理するためにソフトウェアツールを開発することができるようにする拡張可能ＸＭＬフォーマットを提供する。また、ローカリゼーションＸＭＬスキーマは、複数の組織によって共有可能なツールおよびデータの開発も可能にし、それによってグループ間のコラボレーションを可能にする。例えば、ローカリゼーション構文解析ツール２１０、ローカリゼーション・ビルド・ツール３１２、およびローカリゼーション管理ツールは、ローカリゼーションプロセスを通して、異なるファイルに同じデータフォーマットを使用し、共有することができる。一実施形態例では、ローカリゼーションＸＭＬスキーマも拡張可能とすることができる。ローカリゼーションＸＭＬスキーマの拡張性によって、他のパーティは、データフォーマットの変更なく、新しい特徴を有する新しいツールを開発することができる。
【００２０】
図４は、拡張可能ローカリゼーションＸＭＬスキーマに基づく、ローカリゼーションＸＭＬデータファイル４０４に対するファイル分割操作４００およびファイルマージ操作４０２（コメントマージ操作とは異なる）の例をそれぞれ示す図である。この実施形態例では、ローカリゼーションＸＭＬデータファイル４０４は、ファイル分割操作４００を使用して複数の部分データファイル４０６に分割される。部分データファイル４０６は、複数の組織によって、または他の部分データファイル４０６とは関係なく各部分データファイル４０６を処理する並列処理ソフトウェアツールによって並列に使用することができる。例えば、それぞれ複数のソフトウェアツールのデータファイルを開発する複数のサードパーティのそれぞれは、複数のサードパーティのそれぞれによって開発されるソフトウェアツールに関係する１つの部分データファイルを使用することができる。別の例として、同じソフトウェアアプリケーションを複数の言語に翻訳する複数の組織は、ファイル分割操作４００によって作成された適切な部分データファイル４０６を使用して、翻訳済みバージョンのソフトウェアアプリケーションリソースを作成することができる。複数の組織が部分データファイル４０６の処理を完了すると、部分データファイル４０６は、ファイルマージ操作４０２を使用して単一のローカリゼーションＸＭＬデータファイル４０８にマージされる。
【００２１】
ローカリゼーションＸＭＬデータファイル４０４は、ローカリゼーション情報を指定するＸＭＬ要素を含む。ローカリゼーションＸＭＬデータファイル４０４に含まれる要素の１つは、プロパティバッグである。図５Ａ〜５Ｅは、プロパティバッグおよび対応するＸＭＬ要素の実施形態例を示す。図５Ａは、プロパティバッグのデータ構造例５００の図である。プロパティバッグ５０２は、任意の数のプロパティを格納するデータコンテナである。一実施形態例では、各複合データ型は、少なくとも１つのプロパティバッグに関連付けられている。複合データ型は、他のデータ型を含むデータ型である。例えば、他のＸＭＬ要素を含むＸＭＬ要素は、複合データ型である。一実施形態例では、「名前」属性を使用して定義された一意の名前、および値がプロパティに割り当てられる。値は、ローカリゼーションＸＭＬスキーマによってサポートされるデータ型のものでなければならない。ローカリゼーションＸＭＬスキーマで定義された各複合データ型は、ローカリゼーションＸＭＬスキーマの消費者によって必要とされる任意の量のデータを格納するためのプロパティバッグ要素を含む。図５Ａに示されるプロパティバッグ例５０２は、ブールデータ型５０４、整数データ型５０６、文字列データ型５０８、およびＸＭＬデータ型５１０を含む。
【００２２】
図５Ｂは、ブールＸＭＬ要素例５２２の図である。ブールＸＭＬ要素５２２は、属性リスト５２４を含む。ＸＭＬのデータ型の属性は、データ型の名前および値など、データ型についての情報を表すために使用される。属性リスト５２４に含まれる属性の１つは、名前５２６である。一実施形態例では、名前属性５２６は、英数字文字列である。値５２８は、ブールＸＭＬ要素５２２の別の属性である。値５２８は、ブールＸＭＬ要素５２２の論理値を表す。論理値は、当分野で知られているように、ＴＲＵＥおよびＦＡＬＳＥの２つの論理状態値を含む。
【００２３】
図５Ｃは、整数ＸＭＬ要素例５４２の図である。整数ＸＭＬ要素５４２は、属性リスト５４４を含む。属性リスト５４４に含まれる属性の１つは、名前５４６である。一実施形態例では、名前属性５４６は、英数字文字列である。値５４８は、整数ＸＭＬ要素５４２の別の属性である。値５４８は、整数ＸＭＬ要素５４２の整数値を表す。
【００２４】
図５Ｄは、文字列ＸＭＬ要素例５６２の図である。文字列ＸＭＬ要素５６２は、属性リスト５６４を含む。属性リスト５６４に含まれる属性の１つは、名前５６６である。一実施形態例では、名前属性５６６は、英数字文字列である。値５６８は、文字列ＸＭＬ要素５６２の別の属性である。値５６８は、文字列ＸＭＬ要素５６２によって表される、英数字および他の文字を含む、文字の文字列を含む。
【００２５】
図５Ｅは、ＸＭＬ文字列ＸＭＬ要素例５８２の図である。ＸＭＬ文字列ＸＭＬ要素５８２は、任意の有効なＸＭＬステートメントを表す。ＸＭＬ要素５８２は、属性リスト５８４を含む。属性リスト５８４は、名前属性５８６を含む。一実施形態例では、名前属性５８６は、英数字文字列である。属性リスト５８４は、任意の有効なＸＭＬステートメントを含む、任意のＸＭＬステートメント属性５８８も含む。
【００２６】
プロパティバッグ要素５０２の他の変形が可能であることを当業者であれば理解されよう。例えば、プロパティバッグ要素５０２は、「任意の」要素（上記の図には示されていない）など、データ要素の一種を含んでいてよく、任意の要素は、名前属性、型属性、および値属性を含む。こうした実施形態例では、型属性は、値属性がどのように解釈されるべきであるかを指定する。例えば、型は、「Ｕｎｓｉｇｎｅｄ＿Ｉｎｔｅｇｅｒ」に等しく、値は、「１５」に等しくてもよい。
【００２７】
図６は、ソース属性を備えるコメントデータフォーマット例６００の図である。一実施形態例では、コメント要素６０２は、人間のオペレータのためのローカリゼーションプロセスについての情報を提供する自然言語テキスト、およびコメントファイル２０６およびローカリゼーションＸＭＬデータファイル４０８を処理する人間のオペレータおよびソフトウェアツールへの指示として提供されたあらかじめ定義されたテキスト文字列を含む。図６に示されたコメント要素６０２は、属性リスト６０４を含む。一実施形態例では、属性リスト６０４は、名前属性６０６、使用可能属性６０８、およびＳＲＣ（「ソース」用）属性６１０を含む。名前属性６０６は、コメントを名前で参照するために使用される。使用可能属性６０８は、コメント６０２が使用可能か使用不可かを示すインジケータとして働く。ＳＲＣ属性６１０は、コメントのソースを示す。すなわち、ＳＲＣ属性６１０は、コメントの所有者およびソースを識別するためのタグである。図２を参照して上述したように、異なるタイプのコメントが異なる所有者によって所有されている。コメントの所有者は、コメントの所有者の責任範囲に関連する、ローカリゼーションプロセスについての指示および他の情報を含み得る。例えば、ソフトウェア開発者は、一般の情報および指示をコメントの形で提供することができる。特定の所有者によって加えられたコメントは、コメントの所有者を識別するために、タグ付けされる。一実施形態例では、各所有者によって加えられたコメントは、コメントが属する所有者によってのみ操作され得る。別の実施形態例では、コメントの所有権は、ある所有者から別の所有者に委譲され得る。例えば、「ＤＥＶ」（すなわち上述したように、開発者）とラベル付けされたコメントを、通常は「ＲＣＣＸ」とタグ付けされたコメントのみを所有するコメント抽出ツールによって所有できるようにすることができる。一実施形態例では、コメント名およびコメントは、ケースセンシティブとすることができる。また、コメントは、使用可能および使用不可とすることもできる。上述したように、使用不可のコメントは、処理中、無視される。
【００２８】
図７は、コメントを備えるローカリゼーション項目データフォーマット例７００のブロック図である。一実施形態例では、ローカリゼーション項目７０２は、属性７０４を含む。属性７０４は、ｉｔｅｍＴｙｐｅ７０６およびｉｔｅｍＩＤ７０８を含む。ローカリゼーション項目７０２は、文字列要素７１０、バイナリ要素７１２、およびコメント７１４をさらに含む。ローカリゼーション項目７０２は、翻訳され得る、そうでない場合は現地の文化および言語に適合され得る、ローカライズされるソフトウェアにおける任意の部分またはリソースである。例えば、テキストメッセージまたはアイコンは、ローカリゼーション項目７０２である。ＩｔｅｍＴｙｐｅ７０６は、ローカリゼーション項目７０２のタイプを指定する属性である。例えば、ｉｔｅｍＴｙｐｅ７０６は、特定のローカリゼーション項目７０２がテキストメッセージまたは色であることを示し得る。ＩｔｅｍＩＤ７０８は、ローカリゼーション項目７０２の識別子として使用される。ローカリゼーション項目７０２は、ｉｔｅｍＴｙｐｅ７０６に応じて、任意選択で、文字列７１０、バイナリデータ７１２、およびコメント７１４を含んでいてもよい。例えば、ローカリゼーション項目７０２がテキスト文字列であることをｉｔｅｍＴｙｐｅ７０６が示す場合、ローカリゼーション項目７０２は、ローカリゼーションで使用されるべきデフォルトのフォントを指定するプロパティ要素（図示せず）など別の要素を含み得る。一実施形態例では、いくつかのタイプの文字列７１０およびバイナリデータ７１２がローカリゼーション項目７０２に含まれる。例えば、ソース言語、ターゲット言語、および他の参照言語の文字列およびバイナリデータは、ローカリゼーション項目７０２に含まれ得る。参照言語は、ソース言語からターゲット言語へのローカリゼーション項目７０２の翻訳のための追加の情報を提供するために使用され得る。一実施形態例では、親ローカリゼーション項目７０２は、ローカリゼーション項目７０２の階層構造を集合的に構築するゼロ以上の他の子ローカリゼーション項目７０２（図示せず）を含む。子ローカリゼーション項目７０２は、ポインタまたは同等のソフトウェア技術を用いて、親ローカリゼーション項目７０２に含まれる。
【００２９】
図８は、所有のコメントデータフォーマット例８０６の図である。示されている所有のコメント要素例８０２は、複数のコメント要素６０２を含み、それぞれ属性８０４を含む。属性８０４は、名前属性８０６を含む。
【００３０】
図９Ａ〜９Ｄは、設定要素９０２および対応するＸＭＬ要素の実施形態例を示す。図９Ａは、設定データフォーマット例の図である。設定要素９０２は、名前９０６を含む属性９０４を含む。設定要素９０２は、複数の設定９０８項目をさらに含む。設定例１は、属性９１０を含む。属性９１０は、設定１の名前９１２を含む。設定例１は、ブール要素９１４、整数要素９１６、列挙型要素９１８、文字列要素９２０、リスト要素９２２、およびピックリスト要素９２４をさらに含む。設定９０８の要素のそれぞれについては、以下でさらに説明する。設定要素９０２は、ローカリゼーションデータファイルの現在の設定を指定する。
【００３１】
図９Ｂは、列挙型要素例９４２の図である。列挙型要素例９４２は、名前９４６および値９４８を含む属性９４４を含む。名前属性９４６は、名前によって列挙型要素９４２を識別する。値属性９４８は、列挙９４２によって表される列挙の値を含む。
【００３２】
図９Ｃは、リスト要素例９６２の図である。リスト要素例９６２は、名前９６６を含む属性９６４、および複数の項目要素９６８を含む。名前属性９６６は、名前によってリスト要素９６２を識別する。項目要素９６８はそれぞれ、リスト９６２の１つの入力を表し、項目識別子、シーケンス番号、ソースファイル名など、多くの属性（この図には示されていない）を含み得る。さらに、項目９６８は、文字列要素、バイナリ要素、コメント要素など、他の要素（この図には示されていない）を含み得る。
【００３３】
図９Ｄは、ピックリスト要素例９８２の図である。ピックリスト要素例９８２は、名前９８６および値属性９８８を含む属性９８４を含む。ピックリスト要素例９８２は、複数の項目要素９９０をさらに含む。名前属性９８６は、名前によってピックリスト要素９８２を識別する。項目要素９９０はそれぞれ、ピックリスト９８２の１つの入力を表し、項目識別子、シーケンス番号、ソースファイル名など、多くの属性（この図には示されていない）を含み得る。さらに、項目９９０は、文字列要素、バイナリ要素、コメント要素など、他の要素（この図には示されていない）を含み得る。
【００３４】
データ要素の他の変形が可能であることを当業者であれば理解されよう。例えば、データ要素は、「任意の」要素（上記の図には示されていない）など、データ要素の一種を含んでいてよく、任意の要素は、名前属性、タイプ属性、および値属性を含む。こうした実施形態例では、型属性は、値属性がどのように解釈されるべきであるかを指定する。例えば、型は、「Ｕｎｓｉｇｎｅｄ＿Ｉｎｔｅｇｅｒ」に等しく、値は、「１５」に等しくてもよい。
【００３５】
図１０は、ローカリゼーションＸＭＬデータフォーマット例１００２の図である。ローカリゼーションＸＭＬデータフォーマットは、ローカリゼーションプロセスで使用されるローカリゼーションデータの全フォーマットを定義するために使用される。ローカリゼーションＸＭＬデータ要素例１００２は、属性１００４、および上述されている設定１０１６、プロパティバッグ１０１８、所有のコメント１０２０、およびローカリゼーション項目１０２２などのオプションの要素を含む。属性１００４は、名前属性１００６、および他のオプションの属性、パーサＩＤ１０１０、説明１０１２、ソース１０１２、およびターゲット１０１４を含む。図７を参照して上述されているように、ローカリゼーション項目１０２２は、ローカリゼーション項目７０２の階層構造を集合的に構築するゼロ以上の他の子ローカリゼーション項目１０２２（図示せず）を含み得る。
【００３６】
図１１Ａは、ＣＤＡＴＡ  ＸＭＬ要素１１０２に含まれるテキストデータの図の例である。ＣＤＡＴＡ  ＸＭＬ要素１１０２は、当分野でよく知られているように、文字列に似た、ローカリゼーションデータファイルのフリーテキスト１１０４を表すために使用される。ＣＤＡＴＡ  ＸＭＬ要素１１０２に含まれているフリーテキスト１１０４は、最後のフリーテキスト１１０４文字の末尾のすぐ後に二重閉じ括弧１１０６を使用して区切られる。すなわち、二重閉じ括弧１１０６は、フリーテキスト１１０４の最後の文字と二重閉じ括弧１１０６との間に空白やタブなど任意の余白文字無しにフリーテキスト１１０４の末尾に挿入される。図１１Ｂは、ＣＤＡＴＡ  ＸＭＬ要素１１０２ａに含まれる角括弧文字１１１０を含むテキストデータの図例である。フリーテキスト１１０４ａが角括弧「］」文字１１１０を含む場合、フリーテキスト１１０４ａの範囲は、曖昧なところなく決定することができない。文字の意味が曖昧であるとき、すなわち、文字を何通りかに解釈できるとき、拡張文字を使用して、文字の解釈を制限することができる。文字の曖昧性を無くすために、他の技術に加えて、拡張文字を使用してもよい。一実施形態例で、角括弧「］」の曖昧性の除去は、角括弧１１１０を、二重閉じ括弧１１０６ａの一部ではなく、フリーテキスト１１０４ａの一部として識別するために、角括弧文字１１１０の前に空白やタブ文字などの余白文字１１０８を挿入することを含む。他の実施形態例では、他の特種文字も同様に使用することができる。
【００３７】
図１２は、ローカリゼーションＸＭＬスキーマ１２０２および対応するオブジェクトモデル１２０８の関係例１２００のブロック図である。オブジェクトモデル１２０８は、いくつかのクラス１２０６を含み、各クラス１２０６は、オブジェクトモデルにおけるソフトウェアオブジェクトの設計を指定する。当業者が理解するように、クラスは、Ｃ＋＋（Ｃプラスプラス）、Ｃ＃（Ｃシャープ）、Ｊａｖａなどオブジェクト指向コンピュータ言語でソフトウェアオブジェクトを定義するために使用される抽象オブジェクトである。さらに、クラスをインスタンス化することによって、すなわち、対応するクラスによって指定されたフォーマットに基づいて、メモリで物理的なオブジェクトを作成するためにメモリを割り当てることによって、ソフトウェアオブジェクトがコンピュータメモリで作成されることを当業者は理解されよう。オブジェクトモデル１２０８は、実質的にローカリゼーションＸＭＬスキーマ１２０２内の要素１２０４ごとに１つのクラス１２０６を定義する。オブジェクトモデル１２０８を使用して、ローカリゼーションＸＭＬスキーマがソフトウェアアプリケーションおよびツール１２１０に実装される。上述したように、要素１２０４は、ローカリゼーションデータフォーマット１２１２を定義する。ローカリゼーションデータのデータフォーマットを、要素１２０４によってもともと定義されているように指定するデータインターフェイス１２１４は、オブジェクトモデル１２０８におけるクラス１２０６によって指定される。ソフトウェアアプリケーションおよびツール１２１０は、データインターフェイス１２１４を使用して、データごとに正しいフォーマットを使用して、ローカリゼーションデータに正しくアクセスし、それを正しく操作する。また、ソフトウェアアプリケーションおよびツール１２１０は、関数インターフェイス１２１６を使用して、ローカリゼーションタスクを構成し、実行するために、ローカリゼーションデータにアクセスし、それを操作する。
【００３８】
図１３Ａは、バックポインタを備える親オブジェクトおよび子オブジェクトの例のブロック図である。親オブジェクト１３０２は、第１クラスからインスタンス化されたソフトウェアオブジェクトである。子オブジェクト１３０４は、第１および第２のクラスの設計時に第１クラスから導出された第２クラスからインスタンス化されたソフトウェアオブジェクトである。Ｃ＋＋、Ｃ＃、Ｊａｖａなどのオブジェクト指向コンピュータ言語で、第２クラスが第１クラスから導出（すなわち指定）され得ることを当業者であれば理解されよう。第２クラスは、第１クラスに含まれるメンバーを継承すると言われている。クラスのメンバーは、関数、変数、ポインタ、および他のクラスを含む。第２クラスは、第１クラスで定義されていない新しい追加のメンバーを定義することができる。第２クラスによって第１クラスのメンバーを得る関係は、当業者には継承として知られている。継承は、一般に、ランタイム（すなわち、ソフトウェアの実行中）にではなく、ソフトウェアの開発中、設計時に行われるプロセスである。当業者によく知られているオブジェクト指向言語の別の特性は、包含として知られており、これは集約としても知られている。第１クラスは、第２クラスのメンバーであるとき、第２クラスに含まれると言われている。包含は、継承と異なるオブジェクト間の関係である。２つのオブジェクト間の包含関係は、ポインタの再割当によって、実行時に作成され、または破棄され得る。継承および包含の関係において、「親」という用語を使用して第１クラスを表し、「子」という用語を使用して第２クラスを表すことは、当分野では慣例である。したがって、以下の説明では、親／子の専門用語が使用される。図１３Ａに示されている例では、オブジェクトモデル１２０８（図１２）内の子オブジェクト１３０４は、対応する親オブジェクト１３０２を指すバックポインタ１３０６を含む。バックポインタ１３０６は、親オブジェクト１３０２と子オブジェクト１３０４との間に直接リンクを提供し、オブジェクトモデル１２０８においてオブジェクトの関係を通過させることによって、システム性能を向上させる。すべてのオブジェクトは、バックポインタ１３０６を使用して、それぞれの親オブジェクトへの参照を維持する。親オブジェクト１３０２と子オブジェクト１３０４との間で関係が確立されるとき、バックポインタ１３０６は、親オブジェクト１３０２によって設定される。親オブジェクト１３０２と子オブジェクト１３０４との間の関係が切断されるとき、子オブジェクト１３０２は、別の親オブジェクトを指すように設定される。
【００３９】
図１３Ｂは、バックポインタおよびファイルポインタを備える親および子オブジェクトの例のブロック図である。上述したように、親オブジェクト１３２２と子オブジェクト１３２４との間で関係が確立されるとき、親オブジェクト１３２２は、バックポインタ１３２６を設定する。親オブジェクト１３２２と子オブジェクト１３２４との間の関係が切断されるとき、子オブジェクト１３２２は、別の親オブジェクトを指すように設定される。子オブジェクト１３２４がリソースオブジェクトであるとき、ファイルポインタ１３２８は、リソースファイルを指すために、子オブジェクト１３２４によって使用される。リソースは、当業者に知られているように、一般に、アイコン、メニュー、ビットマップなどのグラフィカル構成要素を表すラフィカルデータオブジェクトである。リソースデータは、リソースコンパイラを使用してスクリプトされたリソース仕様（ｓｃｒｉｐｔｅｄ  ｒｅｓｏｕｒｃｅ  ｓｐｅｃｉｆｉｃａｔｉｏｎ）から作成されたリソースファイル１３３０に含まれる。
【００４０】
図１４は、外部習慣文化情報（ｅｘｔｅｒｎａｌ  ｃｕｓｔｏｍ  ｃｕｌｔｕｒｅ  ｉｎｆｏｒｍａｔｉｏｎ）を備えるオブジェクトモデル例１４０２の図である。オブジェクトモデル１４０２は、デフォルトでは、よく知られている習慣文化１４０４を含む。デフォルトでオブジェクトモデル１４０２に含まれていない言語および文化へのローカリゼーションの場合、オブジェクトモデル１４０２は、外部ファイル１４０６からの習慣文化情報１４０８で増補される。一実施形態例では、外部ファイル１４０６は、ローカルシステム上に存在する。別の実施形態例では、外部ファイル１４０６は、リモートシステム上にある。一実施形態例では、習慣文化情報１４０６は、手動で更新される。別の実施形態例では、習慣文化情報１４０６は、ローカリゼーションアプリケーションソフトウェアによってファイル１４０６に書き込むことができる。
【００４１】
図１５は、データの部分ロードの方法例１５００の機能フロー図である。ブロック１５１０で、クライアントソフトウェアアプリケーションは、ローカリゼーションデータファイルを開く。上述したように、ローカリゼーションデータファイルは、クライアントソフトウェアアプリケーションとしても知られる、ソフトウェアアプリケーションツールによってローカリゼーションの過程で使用されるローカリゼーションデータを含む。一実施形態で、ローカリゼーションデータファイルは、ＸＭＬ要素を含む。他の方法およびフォーマットを使用して、ソフトウェアアプリケーションのデータを表すことができ、したがって本明細書におけるＸＭＬ要素例についての説明は、限定的ではなく例示的なものと解釈されるものとすることを当業者であれば理解されよう。クライアントソフトウェアアプリケーションは、どのＸＭＬ要素を処理のためにメモリにロードすべきかを決定する内部ロジックを有する。例えば、ローカリゼーションのためのテキスト情報を処理するだけのクライアントソフトウェアアプリケーションは、テキスト文字のフォントやサイズなど、テキスト関連の情報をロードするだけでよい。ブロック１５２０で、次のＸＭＬ要素は、メモリにロードし、処理するために、ローカリゼーションデータファイルから取得される。次に、ブロック１５３０で、クライアントソフトウェアアプリケーションは、現在のＸＭＬ要素をロードすべきかどうかを決定する。現在のＸＭＬ要素がロードされるように選択された場合、ブロック１５４０で、現在のＸＭＬ要素がロードされ、方法１５００は、ブロック１５５０に進む。現在のＸＭＬ要素がロードされるように選択されなかった場合、方法１５００は、ブロック１５５０に進み、方法１５００は、ローカリゼーションデータファイルにおいて、さらにＸＭＬ要素を入手できるかどうかを決定する。ローカリゼーションデータファイルにおいて、さらにＸＭＬ要素を入手できる場合、方法１５００は、ブロック１５２０に戻って、次のＸＭＬ要素を取得する。ローカリゼーションデータファイルにおいて、さらにＸＭＬ要素を入手できない場合、方法１５００は終了する。一実施形態例で、クライアントソフトウェアアプリケーションは、データの一般の型をロードするように選択し、データの別の一般の型をロードしないように選択する。例えば、テキストを処理するクライアントは、文字列データのみをロードし、任意のバイナリデータをロードしないためのフラグを立てる。こうした場合、データの選択は、総レベルで、選択されるデータの一般の型に基づいてロード用のデータ型を区別し、行われる。
【００４２】
図１６は、コールバック関数によるデータの粒度ロード（ｇｒａｎｕｌａｒ  ｌｏａｄｉｎｇ）の方法例１６００の機能フロー図である。一実施形態で、クライアントソフトウェアアプリケーションは、文字列データおよびバイナリデータなど、すべてのデータ型を含めて、細粒レベル（ｆｉｎｅ  ｇｒａｎｕｌａｒ  ｌｅｖｅｌ）でロードすべきデータを指定する。データ型の総レベルで動作する、図１５を参照して上述したデータの部分ロードに比べて、データの粒度ロードは、すべてのデータ型内で細かいレベルで行われる。粒度ロードでは、クライアントソフトウェアアプリケーションは、特定の基準を提供し、各データ要素がそれに従ってロードされる。一実施形態例では、クライアントソフトウェアアプリケーションは、オブジェクトモデル１２０８の関数インターフェイスにコールバック関数を提供し、それによって、ローカリゼーションデータをローカリゼーションデータファイルから取り出すオブジェクトは、各データ要素をロードすべきかどうかを決定する。コールバック関数は、クライアントソフトウェアアプリケーションによって定義されるデータの選択の基準を使用する。ブロック１６１０で、クライアントソフトウェアアプリケーションは、ローカリゼーションデータファイルを開く。方法１６００は、ブロック１６２０に進み、クライアントソフトウェアアプリケーションによって、ローカリゼーションデータファイルにアクセスするオブジェクトモデル１２０８からオブジェクトに、コールバック関数が提供される。ブロック１６３０で、ＸＭＬデータ要素が取得される。オブジェクトは、クライアントソフトウェアアプリケーションによって提供されたコールバック関数を使用して、ロードについてＸＭＬデータ要素を評価する。ブロック１６５０で、方法１６００は、コールバック関数からの結果に基づいて、現在のＸＭＬデータ要素をロードすべきかどうかを決定する。現在のＸＭＬデータ要素がロードするように選択された場合、方法１６００は、ブロック１６６０に進み、ＸＭＬデータ要素がメモリにロードされ、方法がブロック１６７０に進む。現在のＸＭＬがロードするように選択されなかった場合、方法１６００は、ブロック１６７０に進む。ブロック１６７０で、方法１６００は、ローカリゼーションデータファイルにおいて、さらにＸＭＬデータ要素を入手できるかどうかを決定する。さらにＸＭＬデータ要素を入手できる場合、方法１６００は、ブロック１６３０に戻って、次のＸＭＬデータ要素を取得する。そうでない場合、方法１６００は終了する。
【００４３】
図１７Ａは、データの部分保存の方法例１７００の機能フロー図である。部分保存方法１７００は、部分ロード方法１５００の補完的役割を果たすものである。データファイルに保存される用意ができているローカリゼーションデータをメモリに有するクライアントソフトウェアアプリケーションは、データの一部のみを保存することが求められる場合がある。部分保存方法１７００によって、クライアントソフトウェアアプリケーションは、どのデータをデータファイルに保存すべきかを指定することができる。例えば、クライアントソフトウェアアプリケーションは、文字列データのみを保存することが求められる場合がある。クライアントソフトウェアアプリケーションは、文字列データのみをデータファイルに保存することを指定することができる。ブロック１７１０で、クライアントソフトウェアアプリケーションは、データファイルに保存すべきデータの型を指定する。ブロック１７２０で、クライアントソフトウェアアプリケーションによって指定された型のデータがデータファイルに保存される。ブロック１７３０で、データファイルが閉じられ、方法１７００が終了する。
【００４４】
図１７Ｂは、データの保存時マージの方法例１７５０を示す機能フロー図である。上述したデータの部分ロードまたは粒度ロードのいずれを介するかに関わらず、クライアントソフトウェアアプリケーションは、データの一部のみをメモリにロードする。クライアントソフトウェアアプリケーションのメモリ内のデータがそのままで保存される場合、最初にメモリにロードされなかったすべてのデータは、失われ、出力データファイルに記録されない。データの損失を防ぐために、方法１７５０は、クライアントソフトウェアアプリケーションのメモリ内のデータを、クライアントソフトウェアアプリケーションのメモリに最初にロードされなかったデータファイルからのデータとマージする。クライアントソフトウェアアプリケーションによってロードされたデータに加えられた変更を保存するには、データファイルとクライアントソフトウェアアプリケーションのメモリの両方に共通のデータのメモリコピーが保存される。ブロック１７６０で、ローカリゼーションデータがクライアントソフトウェアアプリケーションによってそこからロードされた元のデータファイルが開かれる。ブロック１７７０で、次の入手可能なＸＭＬ要素がデータファイルから取得される。ブロック１７８０で、方法１７５０は、データファイルから取得された現在のＸＭＬ要素が、クライアントソフトウェアアプリケーションのメモリ内にも存在しているかどうかを決定する。現在のＸＭＬ要素がメモリに存在している場合、ブロック１７８５で、ＸＭＬ要素のメモリコピーがデータファイルに保存される。次に、方法１７５０は、ブロック１７９０に進む。ブロック１７８０で、現在のＸＭＬ要素がメモリに存在していない場合、現在のＸＭＬ要素は、最初にロードされておらず、変更されておらず、したがって、データファイルに再度保存される必要がない。この場合、方法１７５０は、ブロック１７９０に進む。ブロック１７９０で、方法１７５０は、データファイルにさらにＸＭＬ要素が残っているかどうかを決定する。さらにＸＭＬ要素が残っている場合、方法１７５０は、ブロック１７７０に進んで、次のＸＭＬ要素を取得する。そうでない場合、方法１７５０は終了する。
【００４５】
図１８は、データの粒度保存（ｇｒａｎｕｌａｒ  ｓａｖｉｎｇ）の方法例１８００を示す機能フロー図である。粒度保存方法１８００は、粒度ロード方法１６００の補完的役割を果たすものである。粒度ロード方法１６００と同様に、粒度保存方法１８００は、各データ要素を保存すべきかどうかを指定する。一実施形態で、クライアントソフトウェアアプリケーションは、文字列データおよびバイナリデータなど、すべてのデータ型を含めて、細粒レベルで保存すべきデータを指定する。データ型の総レベルで動作する、図１７Ａを参照して上述したデータの部分保存に比べて、データの粒度保存は、すべてのデータ型内で細かいレベルで行われる。粒度保存では、クライアントソフトウェアアプリケーションは、特定の基準を提供し、各データ要素がそれに従って保存される。一実施形態例では、クライアントソフトウェアアプリケーションは、オブジェクトモデル１２０８の関数インターフェイスにコールバック関数を提供し、それによって、ローカリゼーションデータをローカリゼーションデータファイルに保存するオブジェクトは、各データ要素を保存すべきかどうかを決定する。コールバック関数は、クライアントソフトウェアアプリケーションによって定義されるデータの選択の基準を使用する。方法１８００は、ブロック１８１０に進み、クライアントソフトウェアアプリケーションによって、ローカリゼーションデータファイルにアクセスするオブジェクトモデル１２０８からオブジェクトに、コールバック関数が提供される。ブロック１８２０で、ＸＭＬデータ要素が、クライアントソフトウェアアプリケーションのメモリから取得される。ブロック１８３０で、オブジェクトは、クライアントソフトウェアアプリケーションによって提供されたコールバック関数を使用して、保存についてＸＭＬデータ要素を評価する。ブロック１８４０で、方法１８００は、コールバック関数からの結果に基づいて、現在のＸＭＬデータ要素を保存すべきかどうかを決定する。現在のＸＭＬデータ要素が保存するように選択された場合、方法１８００は、ブロック１８５０に進み、ＸＭＬデータ要素がデータファイルに保存され、方法がブロック１８６０に進む。現在のＸＭＬが保存するように選択されなかった場合、方法１８００は、ブロック１８６０に進む。ブロック１８６０で、方法１８００は、メモリにおいて、さらにＸＭＬデータ要素を入手できるかどうかを決定する。さらにＸＭＬデータ要素を入手できる場合、方法１８００は、ブロック１８２０に戻って、次のＸＭＬデータ要素を取得する。そうでない場合、方法１８００は終了する。
【００４６】
図１９は、ローカリゼーションオブジェクトモデル例１９００の図である。上述したように、オブジェクトモデルは、ソフトウェアシステムにおける異なるオブジェクト型、またはクラスの関係の抽象表現（オブジェクトの抽象表現）であることを当業者であれば理解されよう。オブジェクトモデルは、オブジェクト間の継承関係および包含関係を表すために使用され得る。オブジェクトモデル１９００は、ローカリゼーションＸＭＬスキーマ１２０２に基づいて作成されたローカリゼーションデータファイルにおけるデータに関する基本的な入力および出力機能を可能にするオブジェクトの型および関係の仕様を提供する。上述したように、オブジェクトモデル１９００は、他のデータ型スキーマに適用でき、ローカリゼーションＸＭＬスキーマ例の説明は、本発明を限定するものと解釈されるべきではないことを当業者であれば理解されよう。オブジェクトモデル１９００によって、ローカリゼーションデータファイルの分割およびマージが可能になる。さらに、オブジェクトモデル１９００によって、コメントのソースおよび説明についての情報の追加が可能になる。オブジェクトモデル１９００によって、さらに、参照された翻訳の包含がローカリゼーションプロセスにおける助けを提供することができる。図１２を参照して上述したように、オブジェクトモデル１９００は、ローカリゼーションＸＭＬスキーマ１２０２に密接に対応する。すなわち、オブジェクトモデル１９００内の各クラスは、ローカリゼーションＸＭＬスキーマ１２０２内の１つの要素に対応する。したがって、ローカリゼーションファイル１９０２は、ローカリゼーションＸＭＬスキーマ１２０２に基づいてローカリゼーションデータファイルを表すクラスである。ローカリゼーションファイルクラス１９０２は、文化クラス１９０４およびローカリゼーション項目リストクラス１９０６を含む。ローカリゼーション項目リストクラス１９０６は、ローカリゼーション項目クラス１９０８に含まれる。一実施形態では、ローカリゼーション項目リストクラス１９０６は、階層構造ではなく、線形リストであり、ローカリゼーションデータファイル４０４を部分データファイル４０６に容易に分割することができ、部分データファイル４０６をローカリゼーションデータファイル４０８にマージし直す。ローカリゼーション項目クラス１９０８は、オブジェクトモデル１９００の他のほとんどのクラスが関連付けられるオブジェクトモデル１９００の中心的なクラスである。一実施形態で、ローカリゼーション項目クラス１９０８は、親リソース、ローカリゼーションファイル、リソースＩＤ、子ローカリゼーション項目のローカリゼーション項目リスト（後述）、文字列データクラス（後述）、バイナリデータクラス（後述）、およびコメントのコメントリスト（後述）を含む。
【００４７】
ローカリゼーション項目クラス１９０８は、コメントクラス１９１０をさらに含む。一実施形態では、コメントクラス１９１０は、コメントリストクラスの一部分である。ローカリゼーション項目クラス１９０８は、文字列データクラス１９１２およびバイナリデータクラス１９１４も含む。文字列データクラス１９１２は、文字列ソースクラス１９１６および文字列ターゲットクラス１９１８を含む。文字列ソースデータクラス１９１６は、生文字列および他の文字列プロパティを提供する。文字列ターゲットクラス１９１８は、文字列のためのローカリゼーション情報を含む。バイナリデータクラス１９１４は、バイナリソースクラス１９２０およびバイナリターゲット１９２２を含む。バイナリソースクラス１９２０は、生バイナリバイトの配列および他のバイナリプロパティを示す。バイナリターゲットクラス１９２２は、バイナリステータス情報を提供する。別の実施形態では、オブジェクトモデル１９００は、表示情報クラスやローカリゼーション項目クラス１９０８に含まれるリソースＩＤクラスなどの他のクラスを含み得る。一実施形態例では、文字列データクラス１９１２およびバイナリデータクラス１９１４は、文字列参照クラスおよびバイナリ参照クラス（図示せず）を含む。参照クラスは、ソース言語からターゲット言語への文字列データおよびバイナリデータの翻訳のための追加情報を提供するために使用され得る参照言語についての情報を提供する。
【００４８】
図２０は、ローカリゼーションデータファイルの作成およびプロビジョニングの方法例２０００の機能フロー図である。ブロック２０１０で、新しいローカリゼーションデータファイルが作成される。ブロック２０２０で、ローカリゼーション項目がローカリゼーションデータファイルに追加される。ブロック２０４０で、方法２０００は、ローカリゼーションデータファイルに追加すべきローカリゼーション項目がさらに残っているかどうかを決定する。ローカリゼーション項目がさらに残っている場合、方法２０００は、ブロック２０２０に進み、ローカリゼーション項目がローカリゼーションデータファイルに追加される。そうでない場合、方法２０００は、ブロック２０６０に進み、ローカリゼーションデータファイルが保存される。
【００４９】
図２１は、ローカリゼーション項目にコメントを追加する方法例２１００の機能フロー図である。コメントが追加されるべきローカリゼーション項目を識別するために、方法２１００は、クライアントソフトウェアアプリケーションからの入力情報が必要である。上述したように、ローカリゼーションの指示は、ローカリゼーション項目に関連付けられているコメントで具体化され得る。ブロック２１１０で、ローカリゼーションデータファイルが開かれる。ブロック２１２０で、方法２１００は、ローカリゼーション項目にコメントを追加しようと試みているクライアントソフトウェアアプリケーションのコメント所有権を確認する。クライアントソフトウェアアプリケーションが、ローカリゼーション項目に追加されるコメントタイプを所有してない場合、方法２１００は、ブロック２１７０に進み、ローカリゼーションデータファイルが閉じられる。クライアントソフトウェアアプリケーションがそのコメントタイプを所有している場合、方法２１００は、ブロック２１３０に進み、新しいコメントが作成される。ブロック２１４０で、コメントの名前属性および値属性が所望の値に設定される。ブロック２１５０で、コメントがローカリゼーション項目に追加される。方法２１００は、ブロック２１６０に進み、ファイルが保存される。ブロック２１７０で、ファイルが閉じられ、方法２１００が終了する。
【００５０】
図２２は、ファイル除去の方法例２２００の機能フロー図である。ローカリゼーションデータファイルに保存される必要がないすべてのファイルは、データを保存する前に、クライアントソフトウェアアプリケーションのメモリから削除される。一実施形態で、方法２２００は、コメントを含まないすべてのローカリゼーション項目を削除する。バイナリ情報および文字列は、すべての他のローカリゼーション項目から削除される。一実施形態で、子ローカリゼーション項目を入力として含む、再帰的メソッドが使用される。再帰的メソッドは、すべてのバイナリおよび文字列情報を、子ローカリゼーション項目から除去する。再帰的メソッドへの呼出からの戻り値がＦＡＬＳＥであることは、再帰的メソッドに入力として提供された子ローカリゼーション項目、および子ローカリゼーション項目のすべての子がコメントを有しておらず、子ローカリゼーション項目および子ローカリゼーション項目のすべての子が削除されることを含意する。ブロック２２１０で、子ローカリゼーション項目がアクセスされる。ブロック２２２０で、方法２２００は、子がコメントを含むかどうかを決定する。子がコメントを有している場合、方法２２００は、ブロック２２３０に進み、子ローカリゼーション項目のバイナリデータおよび文字列データが破棄される。子がコメントを有していない場合、ブロック２２４０で、子が削除される。ブロック２２３０で、方法２２００は、ブロック２２５０に進む。ブロック２２４０で、方法２２００は、ブロック２２５０に進み、子ローカリゼーション項目がさらに残っているかどうかが決定される。子ローカリゼーション項目がさらに残っている場合、方法２２００は、ブロック２２１０に進み、次の子ローカリゼーション項目が評価のためにアクセスされる。そうでない場合、方法２２００は終了する。
【００５１】
本発明の現在好ましい実施形態が示され、説明されたが、本発明の精神および範囲から逸脱することなく、様々な変更を加えることができることを当業者であれば理解されたい。例えば、上述したシステムおよび方法は、ＸＭＬスキーマを使用したローカリゼーションデータを対象にしているが、他のデータフォーマット仕様が使用されてもよい。したがって、本発明を、上述した実施形態例に限定されるものと解釈すべきではない。
【００５２】
排他的権利または権利が請求される本発明の実施形態は、特許請求の範囲で定義したとおりである。
【図面の簡単な説明】
【００５３】
【図１】ローカリゼーションプロセス例の図である。
【図２】ローカリゼーションデータフロー例の図である。
【図３】別のローカリゼーションデータフロー例の図である。
【図４】ＸＭＬデータファイルに対するファイル分割操作およびファイルマージ操作の例の図である。
【図５Ａ】プロパティバッグ例の図である。
【図５Ｂ】ブールＸＭＬ要素例の図である。
【図５Ｃ】整数ＸＭＬ要素例の図である。
【図５Ｄ】文字列ＸＭＬ要素例の図である。
【図５Ｅ】ＸＭＬ文字列ＸＭＬ要素例の図である。
【図６】ソース属性を備えるコメントデータフォーマット例の図である。
【図７】コメントを備えるローカリゼーション項目データフォーマット例のブロック図である。
【図８】所有のコメントデータフォーマット例の図である。
【図９Ａ】設定データフォーマット例の図である。
【図９Ｂ】列挙型要素例の図である。
【図９Ｃ】リスト要素例の図である。
【図９Ｄ】ピックリスト要素例の図である。
【図１０】ローカリゼーションＸＭＬデータフォーマット例の図である。
【図１１Ａ】ＣＤＡＴＡ  ＸＭＬ要素に含まれるテキストデータの図の例である。
【図１１Ｂ】ＣＤＡＴＡ  ＸＭＬ要素に含まれる括弧文字を含むテキストデータの図の例である。
【図１２】ローカリゼーションスキーマおよび対応するオブジェクトモデルの関係例のブロック図である。
【図１３Ａ】バックポインタを備える親オブジェクトおよび子オブジェクトの例のブロック図である。
【図１３Ｂ】バックポインタおよびファイルポインタを備える親および子オブジェクトの例のブロック図である。
【図１４】外部習慣文化情報を備えるオブジェクトモデル例の図である。
【図１５】データの部分ロードの方法例の機能フロー図である。
【図１６】コールバック関数によるデータの粒度ロードの方法例の機能フロー図である。
【図１７Ａ】データの部分保存の方法例の機能フロー図である。
【図１７Ｂ】データの保存時マージの方法例の機能フロー図である。
【図１８】データの粒度保存の方法例の機能フロー図である。
【図１９】ローカリゼーションオブジェクトモデル例の図である。
【図２０】ローカリゼーションデータファイルの作成およびプロビジョニングの方法例の機能フロー図である。
【図２１】ローカリゼーション項目にコメントを追加する方法例の機能フロー図である。
【図２２】ファイル除去の方法例の機能フロー図である。
【図１】
2009508268.tif 000003
【図２】
2009508268.tif 000004
【図３】
2009508268.tif 000005
【図４】
2009508268.tif 000006
【図５Ａ】
2009508268.tif 000007
【図５Ｂ】
2009508268.tif 000008
【図５Ｃ】
2009508268.tif 000009
【図５Ｄ】
2009508268.tif 000010
【図５Ｅ】
2009508268.tif 000011
【図６】
2009508268.tif 000012
【図７】
2009508268.tif 000013
【図８】
2009508268.tif 000014
【図９Ａ】
2009508268.tif 000015
【図９Ｂ】
2009508268.tif 000016
【図９Ｃ】
2009508268.tif 000017
【図９Ｄ】
2009508268.tif 000018
【図１０】
2009508268.tif 000019
【図１１Ａ】
2009508268.tif 000020
【図１１Ｂ】
2009508268.tif 000021
【図１２】
2009508268.tif 000022
【図１３Ａ】
2009508268.tif 000023
【図１３Ｂ】
2009508268.tif 000024
【図１４】
2009508268.tif 000025
【図１５】
2009508268.tif 000026
【図１６】
2009508268.tif 000027
【図１７Ａ】
2009508268.tif 000028
【図１７Ｂ】
2009508268.tif 000029
【図１８】
2009508268.tif 000030
【図１９】
2009508268.tif 000031
【図２０】
2009508268.tif 000032
【図２１】
2009508268.tif 000033
【図２２】
2009508268.tif 000034
【国際調査報告】
2009508268.tif 000035
2009508268.tif 000036