(57)【要約】  １つ以上のデータ部を含む非構造化リソースを処理する方法及び装置が説明される。この方法は、非構造化リソースをメモリ内に読み込むステップと、該非構造化リソースに関連するデータ構造にアクセスするステップとを含む。該データ構造は１つ以上のエレメントを含み、各エレメントは該非構造化リソースにおけるデータ部の位置情報を含む。この位置情報を用いて、データ部は前記非構造化リソースから探索及び処理され、この探索及び処理のステップはデータ構造におけるエレメント毎に繰り返される。
2009534743.tif 000002
【特許請求の範囲】
【請求項１】
非構造化リソースを処理する方法であって、
１つ以上のデータ部を含む非構造化リソースを読み込むステップ（１０１）と、
前記非構造化リソースに関連するデータ構造にアクセスするステップ（１０２）であって、前記データ構造は１つ以上のエレメントを含み、各エレメントはデータ部に関連すると共に当該関連するデータ部の位置情報を含むステップと、
第１のエレメントを前記データ構造からメモリ内に読み込むステップ（１０３）であって、前記第１のエレメントは第１のデータ部の位置情報を含むステップと、
前記第１のデータ部を、前記第１のデータ部の位置情報を用いて、前記非構造化リソース内で探索するステップと、
前記第１のデータ部を処理するステップと、
前記エレメントを読み込むステップと、前記データ部を探索するステップと、前記データ部を処理するステップとを、前記データ構造における１つ以上のエレメント毎に繰り返すステップと
を含むことを特徴とする方法。
【請求項２】
前記方法は、置換データ部の記憶部にアクセスするステップを更に含み、
前記第１のデータ部を処理するステップは、
第１の置換データ部を前記置換データ部の記憶部から前記第１のエレメントに基づいて選択するステップと、
前記第１の置換データ部を前記非構造化リソース中に前記第１のデータ部の場所に挿入するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記非構造化リソースをメモリ内に読み込むステップ（１０１）は、ある非構造化リソースをある場所からメモリ内に読み込むステップを含み、
前記方法は、修正された非構造化リソースを前記ある場所に出力するステップを更に含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記第１の置換データ部を選択するステップに続いて、前記第１の置換データ部が所定の判定基準を充足するか否かについて判定し、もし充足しない場合には当該選択した置換データ部を挿入するステップを省略するステップを更に含むことを特徴とする請求項２又は３に記載の方法。
【請求項５】
前記所定の判定基準は、データ部長の判定基準、有効文字の判定基準、又は所定リソースリストを含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記所定の判定基準を、前記非構造化リソース、前記データ構造又は前記置換データ部の記憶部からメモリ内に読み込むステップを更に含むことを特徴とする請求項４又は５に記載の方法。
【請求項７】
前記非構造化リソースをメモリ内に読み込むステップ（１０１）に先立って、アプリケーションをロードし、前記アプリケーションに対する要求言語をチェックするステップを更に含み、
前記非構造化リソースは、前記アプリケーションに関連し、
前記方法は、修正された非構造化リソースを前記アプリケーションに受け渡すステップを更に含むことを特徴とする請求項２乃至６のうちの何れか１項に記載の方法。
【請求項８】
前記置換データ部の記憶部にアクセスするステップに先立って、前記置換データ部の記憶部を、前記アプリケーションの要求言語に基づいて識別するステップを更に含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記置換データ部の記憶部は、１つ以上の言語の翻訳されたデータ部のデータベースと辞書データベースとのうちの１つを含むことを特徴とする請求項２乃至８のうちの何れか１項に記載の方法。
【請求項１０】
前記データ部は、文字列、ホットキー、コーディネートセット、サイズ、修正可能データ、又は現地語化可能データを含むことを特徴とする請求項１乃至９のうちの何れか１項に記載の方法。
【請求項１１】
前記方法は、ルールデータベースにアクセスするステップを更に含み、
前記第１のデータ部を処理するステップは、前記第１のデータ部を前記ルールデータベースに従って修正して第１の修正化文字列を生成し、前記第１の修正化文字列を前記非構造化リソース内に前記第１のデータ部の場所に挿入するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記データ部は文字列を含み、前記ルールデータベースは、長さルールと、許可文字ルールと、許可ワードルールと、禁止ワードルールと、文法ルールと、スペルルールとのうちの１つ以上を含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記非構造化リソースの各データ部は第１の言語の文字列を含み、前記第１のデータ部を処理するステップは、ある第１のデータ部を抽出するステップを含み、
前記方法は、
第２の非構造化リソースをメモリ内に読み込むステップであって、前記第２の非構造化リソースは１つ以上のデータ部を含み、前記第２の非構造化リソースの各データ部は第２の言語の文字列を含むステップと、
前記第２の非構造化リソースに関連する第２のデータ構造にアクセスするステップであって、前記第２のデータ構造は１つ以上のエレメントを含み、各エレメントは前記第２のデータ構造内のデータ部に関連すると共に当該関連するデータ部の位置情報を含むステップと、
第１のエレメントを前記第２のデータ構造からメモリ内に読み込むステップであり、前記第１のエレメントは前記第２の非構造化リソース内の第１のデータ部の位置情報を含むステップと、
前記第１のデータ部を、前記第２の非構造化リソースから、前記第２の非構造化リソース内の前記第１のデータ部の位置情報を用いて抽出するステップと、
前記第２のデータ構造における１つ以上の各エレメント毎に、前記第１のエレメントを前記第２のデータ構造からメモリ内に読み込むステップと、前記第１のデータ部を前記第２の非構造化リソースから抽出するステップと、を繰り返すステップと、
前記第１及び第２の非構造化リソースの双方から全ての抽出されたデータ部を出力するステップと
を更に含むことを特徴とする請求項１に記載の方法。
【請求項１４】
前記非構造化リソースは、ＪａｖａＳｃｒｉｐｔと、ＣＳＳ（Cascading Style Sheet）と、ＩＮＩファイルと、レジストリファイルと、ＨＴＭＬファイルと、ＸＭＬファイルとのうちの１つを含むことを特徴とする請求項１乃至１３の何れか１項に記載の方法。
【請求項１５】
各エレメントはデータ部識別子をさらに含むことを特徴とする請求項１乃至１４の何れか１項に記載の方法。
【請求項１６】
前記位置情報は、データ部始端位置と、データ部長インジケータと、データ部終端位置と、のうちの少なくとも１つを含むことを特徴とする請求項１乃至１５の何れか１項に記載の方法。
【請求項１７】
前記データ構造は符号化情報を更に含むことを特徴とする請求項１乃至１６の何れか１項に記載の方法。
【請求項１８】
コンピュータ上でのプログラム実行時に、請求項１乃至１７の何れか１項に記載の全ての方法を実行するように適合されたコンピュータプログラムコードを含むコンピュータブログラム。
【請求項１９】
コンピュータ読み取り可能な記録媒体に記録されていることを特徴とする請求項１８に記載のコンピュータプログラム。
【請求項２０】
システムであって、
プロセッサ（１３０１）と、
前記プロセッサ（１３０１）に結合されてこれによって読取可能なメモリ（１３０２）であって、前記プロセッサ（１３０１）によって実行されたときに前記プロセッサ（１３０１）をして処理手順を実行せしめる一連の命令を含むメモリ（１３０２）と
を含み、
前記処理手順は、
１つ以上のデータ部を含む非構造化リソースを前記メモリに読み込むリソース読込ステップと、
前記非構造化リソースに関連するデータ構造にアクセスするアクセスステップであって、前記データ構造は１つ以上のエレメントを含み、各エレメントはデータ部に関連すると共に当該関連するデータ部の位置情報を含むステップと、
第１のエレメントを前記データ構造からメモリ内に読み込むエレメント読込ステップであって、前記第１のエレメントは第１のデータ部の位置情報を含むエレメント読込ステップと、
前記第１のデータ部を、前記第１のデータ部の位置情報を用いて、前記非構造化リソース内で探索するデータ部探索ステップと、
前記第１のデータ部を処理するデータ部処理ステップと、
前記エレメントを読み込むステップと、前記データ部を探索するステップと、前記データ部を処理するステップとを、前記データ構造における１つ以上のエレメント毎に繰り返すステップと
を含むことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非構造化リソースの構文解析方法に関する。
【背景技術】
【０００２】
アプリケーション及びオペレーティングシステムなどのソフトウェア製品はしばしば多くの異なる言語版にて提供される。ソフトウェア製品における初期言語から他言語への変換は「現地語化（ローカライゼーション）」技術として知られている。通常、現地語化は、当該製品のユーザインタフェース（ＵＩ）内の全ての文字列エレメントや他の何らかの言語特定パーツ（例えば、ホットキー、コーディネート、サイズ）を翻訳して当該製品を再構築し、その言語特有のバージョンを生産することによってなされる。この現地語化製品は大規模なテストを顧客出荷前に必要とする。これには多大な費用がかかり、現地語化バージョンのソフトウェアの発売遅延をもたらす。
【０００３】
異なる現地語化方法が開発されているが、そこではランタイム時に現地語化がなされる。この方法では、ベース製品（例えば、オリジナルな英語版）がロードされ、翻訳化リソースがリソースインターセプタによって挿入され、リソースインターセプタは言語特有の用語集ファイルからそれらを得る。これはアプリケーションが気づかない方法でなされる。この方法は、アプリケーションの全てを翻訳しなくてもよく、組み込み試験の必要性を除去することから、ソフトウェア製品のローカライゼーション技術において強力な省力化及び低廉化をもたらす。この方法はまた、サードパーティがソフト製品用途における新しい言語用語集（glossary）の作成を可能とし、多くの追加言語版への現地語化を可能としている。
【０００４】
【特許文献１】米国特許出願公開第２００６／０１５０１７３号明細書
【特許文献２】米国特許出願公開第２００６／０１１６８６４号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
リソースインターセプタがアプリケーション内のリソースを翻訳可能とするには、リソースインターセプタがリソース内で翻訳可能な文字列を識別できなければならない。これは、ＷＩＮ３２ダイアログボックス又はＷＩＮ３２文字列テーブルなどの構造化リソースにとっては些細なことであって、それらが（例えば標準によって）定義された構造を有するから、様々なリソースを見つけてそれらを修正／置換することは簡単である。しかし、全てのリソースが構造化されているわけではない。非構造化（又はストリーム）リソースは、所定の構造を有さず且つファイル又はストリーム内に格納されていないテキスト状のリソースである。通常、この種のリソースは、本件特許出願人のノートパッド（Notepad）などのテキスト編集プログラムを用いて目視及び編集可能である。非構造化リソースの例は、（文字列、タグ及び他の書式用文字から成る）ＨＴＭＬファイル、ＪａｖａＳｃｒｉｐｔ、ＩＮＩファイル、レジストリファイル、ＣＳＳ（Cascading Style Sheets）及びＸＭＬファイルを含む。これらの非構造化リソースを記述するのに用いられる非常に多くのスキーマがあり、正しいスキーマの知識が非構造化リソース内の翻訳可能な文字列を識別するのに要求される。特定のリソースタイプの範囲内でさえ、文字列及びその他の現地語化データ（例えば、ホットキー、サイズ及びコーディネート）が識別されるようにするには、多くの異なる方法があり、例えば以下のようである。
【０００６】
第１のＨＴＭＬサンプル：<P ID=HelIo>Hello</P>  ．
第２のＨＴＭＬサンプル：<P><!− ID=ID_Hello-->Hello<!− end--></P>
第１のＪａｖａＳｃｒｉｐｔサンプル：document.write(“Hello”)
第２のＪａｖａＳｃｒｉｐｔサンプル：L_Hello_Message = (“Hello”)
document. write(L_Hello_Message)
【０００７】
これらの各例において、リソースローダが翻訳可能文字列「Hello」を識別できるようにするには、翻訳可能文字列を各例において識別する方法をリソースローダが実際に知っていなければならない。定義された構造が無いことから、リソースローダがあり得る全てのスキーマ、フォーマット、外部構成データ及びルールを知ることはそれらが無限の数あるが故に実現性がない。リソースローダが特定スキーマ、フォーマット及び特定状況において使用されるルールを知っていた場合であっても構文解析はなお遅く、多くのアプリケーションにおいて（例えば、実行中のアプリケーションにおいてリソースロードの間に実行される場合）容認できるものではない。更に、ファイルサイズを最適化してアプリケーションロードをより効率化可能とするファイル（例えばＨＴＭＬファイル）が構築可能とするためには、識別子情報（上記２つのＨＴＭＬ例における「ID=HeIIo」と「<!− ID=ID_Hello-->...<!−end-->」）は除去されたかもしれない。代替的には（又は付加して）、識別子情報が機密性の理由で除去されるかもしれなく（例えば、ファイルの注釈が機密性を有する場合がある）、又は有効ファイル構造が作成されるかもしれない（例えば、フラグが除去されるまでＨＴＭＬが無効である場合がある）。これらの場合において、非構造化リソースは翻訳可能なリソースを識別する情報を何ら含んではいない場合があり、例えば以下のようである。
【０００８】
第３のＨＴＭＬサンプル：<P>Hello</P>
これは、リソースローダが非構造化リソース内の文字列を識別することは不可能であることを意味する。
【０００９】
非構造化リソース内で文字列の場所を識別することに加えて、他のデータに照らす（例えば用語集の翻訳と照らす）クロスリファレンスにおける使用のために文字列毎に独自の識別子を決定する必要がある場合もある。
【００１０】
本発明の目的は、周知の構文解析方法おける課題を解決すると共に改良された解析ツールを提供する非構造化リソース解析方法を提供することである。
【課題を解決するための手段】
【００１１】
以下の記載では、読者に基本的理解を与えるために，本開示の簡略化された概要を提供する。この概要は、本開示の完全な概観ではなく、本発明の要所／重要要素を識別するか又は本発明の範囲の輪郭を示すものでもない。その唯一の目的は、後述する詳細な説明の前置きとして、本明細書において開示される幾つかの概念を単純化された形式で示すものである。
【００１２】
１つ以上のデータ部を含む非構造化リソースを処理するシステム及び方法が記載されている。その方法は、非構造化リソースをメモリに読み込むステップと、非構造化リソースに関連するデータ構造にアクセスするステップと、を含む。このデータ構造は、幾つかのエレメントを含み、各エレメントは非構造化リソース内のデータ部の位置情報を含む。この位置情報を用いることによってデータ部が探索されて非構造化リソースから処理され、次いで、探索及び処理をなすステップはデータ構造のエレメント毎に繰り返される。
【００１３】
本実施例は非構造化リソースを処理する方法を提供する。該方法は、１つ以上のデータ部を含む非構造化リソースを読み込むステップと、前記非構造化リソースに関連するデータ構造にアクセスするステップであって、前記データ構造は１つ以上のエレメントを含み、各エレメントはデータ部に関連すると共に当該データ部の位置情報を含むステップと、第１のエレメントを前記データ構造からメモリ内に読み込むステップであって、前記第１のエレメントは第１のデータ部の位置情報を含むステップと、前記第１のデータ部を、前記第１のデータ部の位置情報を用いて、前記非構造化リソース内で探索するステップと、前記第１のデータ部を処理するステップと、を含み、前記エレメントを読み込むステップ、前記データ部を探索するステップ及び前記データ部を処理するステップとを、前記データ構造における１つ以上のエレメント毎に繰り返すことを特徴とする。
【００１４】
利点としては、これはより速く且つより効率的な方法であり、メモリ使用がより少なくて済む。利点としては、その方法は、文字列などのデータ部を、それが書かれた手法からは独立して、連続して処理され、編集又は翻訳される。ある状況において、この方法はデータ構造の使用なしには出来なかった非構造化リソースの処理を可能にする。
【００１５】
好ましくは、この方法は更に、置換データ部の記憶部にアクセスするステップを含み、上記第１のデータ部を処理するステップは、第１の置換データ部を置換データ部の記憶部から第１のエレメントに基づいて選択するステップと、第１の置換データ部を非構造化リソース中に第１のデータ部の代わりに挿入するステップとを含むことを特徴とする。
【００１６】
利点としては、この方法は、第１の言語での使用に適切なデータ部を、第２の言語での使用に適切なデータ部で置き換えることによるリソースの現地語化に用いられ得る。
【００１７】
好ましくは、非構造化リソースをメモリに読み込むステップは、非構造化リソースをある場所からメモリに読み込むステップを含み、更に、修正された非構造化リソースをその場所に出力するステップを含む。
【００１８】
好ましくは、この方法は更に、選択ステップに続いて、置換文字列が所定の判定基準を充足するか否かをチェックするステップと、もし充足していない場合に挿入ステップを省略するステップとを含む。もし置換データ部（例えば文字列）が問題を起こすと判定された場合に、それは挿入されず元のデータ部がそのリソース中に残される。
【００１９】
利点としては、この方法は、置換データ部（例えば置換文字列）がチェックされるのを可能とすることで、挿入されてユーザインタフェースにおいて表示されたときに問題を起こすことがないようにする。
【００２０】
好ましくは、所定の判定基準は、データ部長の基準、有効文字の基準又は所定のリソースリストを含む。
【００２１】
利点としては、この方法は、文字列などの置換データ部が、例えば、表示されたときにトランケート（truncate）されるか否か、置換文字列が正しい長さであるか否か、置換文字列が無効な文字を有するか否か、又は置換文字列がアプリケーション機能を損なうか若しくは機密性問題を導くように何らかの文字を含むか否か、などの判定のチェックがなされるのを可能とする。所定のリソースリストの使用は、データ部の変更有無の制御を可能とする点で好都合である。
【００２２】
好ましくは、この方法は更に、所定の判定基準を非構造化リソース、データ構造又は置換データ部の記憶部からメモリに読み込むステップを含む。
【００２３】
好ましくは、この方法は更に、非構造化リソースをメモリに読み込むのに先立って、アプリケーションをロードするステップと、アプリケーションに要求される言語をチェックするステップと、を含み、ここで非構造化リソースはアプリケーションに関連し、該方法は更に、修正された非構造化リソースをアプリケーションに受け渡すステップを含む。
【００２４】
利点としては、これは、リソースの翻訳又は変換などのリソース処理をアプリケーションがロードされる時点で行われるのを可能とする。
【００２５】
好ましくは、この方法は更に、置換データ部の記憶部にアクセスするのに先立って、アプリケーションに要求される言語に基づいて置換データ部の記憶部を識別するステップを含む。
【００２６】
好ましくは、置換データ部の記憶部は、１つ以上の言語のために翻訳されたデータ部のデータベースと辞書データベースとのうちの１つを含む。
【００２７】
データ部は、文字列、ホットキー、コーディネートセット（coordinate set）、現地語化可能又は修正可能なデータのサイズ又は部分を含んでもよい。
【００２８】
他の実施例において、この方法は、ルールデータベースにアクセスするステップを含み、第１のデータ部を処理するステップは、第１のデータ部をルールデータベースに従って修正して第１の修正化データ部を生成するステップと、第１の修正化データ部を非構造化リソースに第１のデータ部の代わりに挿入するステップとを含む。
【００２９】
好ましくは、データ部は、文字列と、長さルール、許可文字ルール、許可ワードルール、禁止ワードルール、文法ルール及びスペルルールのうちの１つ以上を含むルールデータベースとを含む。
【００３０】
他の実施例において、非構造化リソース内の各データ部は、第１の言語の文字列を含み、第１のデータ部を処理するステップは、第１のデータ部を抽出するステップを含み、この方法は更に、第２の非構造化リソースをメモリに読み込むステップであって、第２の非構造化リソースは１つ以上のデータ部を含み、第２の非構造化リソースの各データ部は第２の言語の文字列を含むステップと、第２の非構造化リソースに関連する第２のデータ構造にアクセスするステップであって、第２のデータ構造は１つ以上のエレメントを含み、各エレメントは、第２の非構造化リソース内のデータ部に関連すると共に当該データ部の位置情報を含むステップと、第１のエレメントを第２のデータ構造からメモリに読み込むステップであって、第１のエレメントは第２の非構造化リソース内の第１のデータ部の位置情報を含むステップと、第１のデータ部を第２の非構造化リソースから第２の非構造化リソース内の第１のデータ部の位置情報を用いて抽出するステップと、を含み、第２のデータ構造内の１つ以上のエレメント毎に読み込みのステップ及び抽出のステップを繰り返すステップと、抽出された全てのデータ部を両方の非構造化リソースから出力するステップを含む。
【００３１】
利点としては、これは多数の言語の用語集の自動生成を可能とする。
【００３２】
好ましくは、非構造化リソースは、ＪａｖａＳｃｒｉｐｔ、ＣＳＳ（Cascading Style Sheets）、ＩＮＩファイル、レジストリファイル、ＨＴＭＬファイル及びＸＭＬファイルのうちの１つを含む。変形例として、非構造化リソースは、現地語化可能な又は修正化可能な文字列又はデータを含み得る何らかのテキストフォーマットを含んでもよい。
【００３３】
好ましくは、各エレメントは更にデータ部識別子を含む。
【００３４】
好ましくは、位置情報は、データ部始端位置、データ部長さインジケータ及びデータ部末端位置のうちの少なくとも１つを含む。
【００３５】
好ましくは、データ構造はコード化情報（例えばユニコード、ＡＮＳＩ、その他）を更に含む。
【００３６】
第１のデータ部を処理するステップは、文字列などのデータエレメントを挿入するステップを含んでもよい。
【００３７】
他の実施例は、非構造化リソースを処理する方法を提供する。この方法は、非構造化リソースをメモリに読み込むステップであって、非構造化リソースは１つ以上のデータ部の場所を含むステップと、非構造化リソースに関連するデータ構造にアクセスするステップであって、データ構造は、１つ以上のエレメントから成り、各エレメントはデータ部と関連すると共に当該データ部の位置情報を含むステップと、第１のエレメントをデータ構造からメモリに読み込むステップであって、第１のエレメントは第１のデータ部の位置情報を含むステップと、第１のデータ部を第１のデータ部の位置情報を用いて挿入するステップと、データ構造内の１つ以上のエレメント毎に、読み込みのステップ及び挿入のステップを繰り返すステップを含む。
【００３８】
利点としては、これは非言語特有手法で書かれたリソースを現地語化する単純な方法を提供し、これによって、そのリソースは英語の文字列又はデータさえ含まない。そのリソースはサイズにおいて小さく低減されたメモリスペースしか必要とせず、迅速且つ効率的にロードされ得る。更に、これは翻訳（例えば文字列の記憶部）が第三者によって提供されるのを可能とする。
【００３９】
他の実施例は、コンピュータプログラムを提供し、これがコンピュータ上で実行されるときには、本発明の方法の何らかの全てのステップが実行されるように適合されたコンピュータプログラムコード手段を含む。
【００４０】
好ましくは、コンピュータプログラムはコンピュータ読み取り可能な記録媒体上に実現される。
【００４１】
更なる実施例はシステムを提供し、そのシステムは、プロセッサと、プロセッサに結合されてこれによって読取可能なメモリであり、プロセッサによって実行されたときにプロセッサをして処理手順を実行せしめる一連の命令を含むメモリとを含む。前記処理手順は、非構造化リソースをメモリに読み込むステップであって、非構造化リソースは１つ以上のデータ部を含むステップと、非構造化リソースに関連するデータ構造にアクセスするステップであって、データ構造は１つ以上のエレメントを含み、各エレメントはデータ部に関連し、関連するデータ部の位置情報を含むステップと、第１のエレメントをデータ構造からメモリに読み込むステップであって、第１のエレメントは第１のデータ部の位置情報を含むステップと、第１のデータ部を非構造化リソース内で第１のデータ部の位置情報を用いて探索するステップと、第１のデータ部を処理するステップと、を含み、データ構造の１つ以上のエレメント毎に、読込、探索及び処理の各ステップを繰り返すことを特徴とする。
【００４２】
本明細書で説明される方法は、記憶媒体上のマシン読取可能形式のソフトウェアによって実行される。ソフトウェアは、並列プロセッサ又は順列プロセッサ上の実行に適するものであってその方法ステップが何らかの適切な順番に又は同時に実行され得る。
【００４３】
これは、ソフトウェアが価値あって別々に取引可能な商品であり得ることを示す。「ダム（dumb）」すなわち標準のハードウェア上を走る又は制御して所望の機能を実現するソフトウェアを含むことが意図される。また、ＨＤＬ（ハードウェア記述言語）ソフトウェアなどのハードウェア構成を「記述する」すなわち定義し、シリコンチップを設計するのに用いられ、又は汎用プログラマブルチップを設計するなどして、所望の機能を実現するソフトウェアを含むことが意図される。
【００４４】
本発明の付随する多くの特徴は、以下の詳細な説明を添付の図面と共に参照することによってより良く理解される。また、本説明は、添付の図面と照らし合わせて以下の詳細な説明を読むことによってより良く理解される。なお、これら図面における同様の参照符号は同様の部分を示すように用いられている。
【発明を実施するための最良の形態】
【００４５】
添付の図面と共に下記に提供される詳細な説明は本実施例の説明として意図されるものであって、本実施例が構築され得る又は用いられ得る唯一の形態を示すものとは意図されない。この説明は、実施例の機能を記載すると共に実施例を構築し動作せしめるステップのシーケンスを記載する。しかし、同一又は等価な機能及びシーケンスが異なる実施例によって達成されてもよい。
【００４６】
図１は、非構造化リソースを構文解析する方法の実施例のフローチャートである。用語「構文解析」とは、本明細書においてストリーム（例えばデータのセンテンス又は部分）をその構成部分に分解することを意味するものとして用いられる。構文解析の例としては、本をチャプタ、パラグラフ、センテンス又はワードに分解する、電話帳を名前、アドレス及び番号に分解する、或いは売上高を分野に分解する等の例がある。この方法は、図２を参照して説明され、図２は非構造化データ記憶部（store）２００と称されるデータ構造を示し、以下を含むＸＭＬファイルを含む非構造化リソースの単純な例を示している。  
<P>Hello</P>
非構造化リソースは、メモリに読み込まれ（ステップ１０１）、非構造化リソースに関連する非構造化データ記憶部２００がアクセスされる（ステップ１０２）。非構造化データ記憶部２００は、非構造化リソースの分析を、当該リソースが元々どのようにして記述され解析され又は現地語化されたかに関わりなく実行するのに用いられ得るデータを提供する。示される実施例において、非構造化データ記憶部２００は、リソース内容（例えば、ウィンドウズ１２５２、ユニコード又はＵＴＦ−７）に用いられる文字のコードページ（Code Page）を詳述するコード化用情報２０１を含む。データ記憶部は、また、非構造化リソース内に各々が含まれる文字列に関する情報を提供する１つ以上のエレメント２０２を含む。示される実施例において、このエレメントは、リソース識別子としても参照される文字列識別子２０２ａ（例えば、「ID_Hello」）を含み、これはルール又は翻訳用語集等とのクロスリファレンスのために用いられてもよい。このエレメントは、また、文字列位置情報、例えば、文字列の始端位置２０２ｂ及び文字列の長さ２０２ｃを含む。示される実施例において、始端位置は、リソースファイルの始めから文字列内の最初の文字の始めの位置のオフセットであり、長さは文字列内に含まれる文字の数である。エレメント２０２が非構造化データ記憶部２００からメモリに読み込まれる（ステップ１０３）、次いで、このエレメントからの位置情報が用いられて非構造化リソースから文字列が探索されて抽出される（ステップ１０４）。図２に示される例示のデータ記憶部２００は１つのエレメント２０２を含むだけであるが、そこにおいて、データ記憶部が１つ以上のエレメントを含み、エレメントを読み込んで文字列を抽出するステップが繰り返され（ステップ１０３及び１０４）、付加的な文字列が非構造化リソースから抽出されてもよい。
【００４７】
文字列を抽出したなら（ステップ１０４）、その文字列は格納されてもよいし及び／又は更なる処理がなされてもよく、付加的処理ステップが以下に詳細に説明される。
【００４８】
図２に示されたデータ記憶部２００は、例示だけのものであって、他の例において記憶部は異なる情報を含んでもよい。１つの実施例において、文字列識別子がデータ記憶部内に含まれなくてもよく、他の実施例において、文字列の位置情報が異なるフォーマット（例えば、始端位置及び終端位置、詰めた（just）始端位置等）で提供されてもよい。更なる実施例において、コード化用情報２０１はデータ記憶部内に含まれていなくてもよい。データ記憶部２００は、言語特有なものであって元の文字列ストリームに依存する。しかし、かかるデータ記憶部がニュートラル言語（language neutral）であることから、以下に説明されるように、何らかの言語データを非構造化リソース内に出したままにしておくことも可能である。
【００４９】
データ記憶部２００などの、情報が周知のフォーマットに格納されるデータ記憶部を用いることによって、何らかの非構造化リソースを構文解析することが、リソースを構築する際に用いられたスキーマ、ルール等の何らかの知識も必要とすること無く、非常に容易になる。これは、単純な非構造化リソースの構文解析器及び非構造化リソースの効率的解析手法を与える。更に、データ記憶部は大きいメモリを要求せず、例えば、タイトルを備える４つのエレメント記憶部に対して１１３バイト（=3+(5×22)）だけが要求される。
【００５０】
データ記憶部は、非構造化リソースの構文解析においてアクセス可能な如何なる場所に格納されてもよく、データ記憶部は、例えば、非構造化リソース内に、オリジナルなリソースの傍ら（例えば、ダイナミックリンクライブラリ（ＤＬＬ）内）に、サーバー上に、インターネット上に、データベース上に、ＸＭＬファイルすなわちＷｅｂサービスによって提供されるデータ記憶部の如き場所に格納されてもよい。
【００５１】
非構造化データ記憶部２００は、幾つかのやり方のうちの１つによって作られてもよい。それは、好ましくは、特定のリソースを作成するのに用いられる構造、スキーマ及びルールを知見及び理解する誰か／何かによって作成されてもよく、この情報及び何らかの要求されるフラグがなお利用可能な何時において作られてもよい。例えば、それは当該リソースを書いた人／組織によるリソース出荷前に作られてもよい。それは、時間を労し且つ間違い易いとしても、人手によって作られてもよい。他の実施例において、構文解析用符号及び構文解析用ルールを用いてデータを取得して記述する自動化ルールによって作られてもよい。データ記憶部の作成を示しているブロック図が図３に示される。
【００５２】
コメント付き又は識別可能データ３０１を備える非構造化リソースが構文解析ルール３０２を用いてリソースを構文解析する構文解析器３００へ入力される。構文解析ルール３０２は構文解析器へ入力されてもよく、又は変形例として構文解析器は特定のリソースタイプに専用であってもよく、従ってその中に固有のルールを有してもよい。構文解析器３００は、ルール情報を使用して、リソース内の文字列の幾つか又は全てを識別し、識別された各文字列毎のエレメントを含む（図３に示される如き）非構造化リソースデータ記憶部３０３を出力する。構文解析器３００は、加えてコメント付きデータを伴わない非構造化リソース３０４の編集されたバージョンを出力してもよい。
【００５３】
１つの実施例において、非構造化リソース３０１は以下を含むＸＭＬファイルであってもよい。
<para its:translate=“yes”>Hello</para>
構文解析ルール３０２は、「www.w3.org/TR/its」に説明されているように、ＸＭＬ国際タグセット（XML International Tag Set(ITS)）ルールを含んでもよい。この実施例では、非構造化リソースは構文解析によって変更されなくてもよく（すなわちコメント付きデータを伴わない非構造化リソース３０４）、非構造化データ記憶部４００が、図４に示すように、ファイルの始めからの２７文字の始端位置４０１と、５文字の文字列長４０２を含む文字列位置情報を備えてもよい。第２の実施例において、非構造化リソース３０１は以下のようなＨＴＭＬファイルであってもよい。  
<P><!−ID=lD_Hello-->Hello<!−end--></P>
構文解析用ルールは、ＨＴＭＬ内のコメントが解析されてどの部分が抽出されるかを判定できるように定義してもよく、コメント付きデータを伴わないで出力される非構造化リソース３０４は以下のようである。
<P>Hello<P>
この出力されるリソースはオリジナルなリソースより小さく、使用メモリ量を減らし、より効率的にロードされ得るリソースを生成する。この実施例において、結果として得られる非構造化データ記憶部３０３が図３に示される。
【００５４】
図３に示される構文解析器３００は、多数の周知の構文解析器のうちの１つであってもよく、各構文解析器が１つ以上のスキーマ（例えば、上記説明の段落における第１の例のＨＴＭＬ構文解析器及び第２の例のＸＭＬ構文解析器）に専用のものである。構文解析ルールは、スキーマに関する情報に加えて又は代わりに外部情報を含むことによって、データ記憶部（例えば、＜ｂ＞及び＜／ｂ＞マーカー間の全ての情報又はヘッダ内の全てテキストが識別されるべき情報であると指定する情報）の生成を可能としてもよい。ルール及び外部情報の組合せは、リソース内のどの文字列がデータ記憶部内で識別されるべきかを実際に開発者に指示することを可能とする。他の実施例において、外部構成データが構文解析ルールの代わりに又は加えて使用されてもよい。
【００５５】
図５は、非構造化リソースを翻訳する、例えば、英語（ベース言語）から仏語（要求される言語）に翻訳する方法の例示的なフローチャートである。このフローチャートは、図１に示されたものの変形されたバージョンであって、以下に示すＸＭＬファイルを含む非構造化リソースの単純な同一例を参照して説明され得る。  
<P>Hello</P>
非構造化リソースがメモリに読み込まれ（ステップ１０１）、非構造化リソースに関連する（例えば図２に示される如き）非構造化データ記憶部がアクセスされる（ステップ１０２）。エレメントが非構造化データ記憶部からメモリに読み込まれ（ステップ１０３）、次いで、このエレメントからの位置情報が用いられて非構造化リソースから文字列が探索及び抽出される（ステップ１０４の例えば「Hello」）。要求される言語の用語集が（この実施例ではステップ５０１の仏語）アクセスされ、文字列の翻訳が用語集からメモリに読み込まれる（ステップ５０２）。文字列識別子（例えば「ID_Hello」）は、抽出された文字列に関して用語集内のどの翻訳が問題となるかを識別するのに、例えば以下のテーブルに示されるように用いられてもよい。
【００５６】
【表１】
2009534743.tif 000003
【００５７】
他の実施例において、文字列自身（例えばHello）が代わりに用いられて、使用されるべき用語集から翻訳を識別してもよい。用語集は、ＭＵＩ  ＤＬＬ（複数言語ユーザインタフェースダイナミックリンクライブラリ）ファイル、データベース及びウェブサービス等を含む。次いで、文字列（この例では「Bonjour」）の翻訳が抽出された文字列の代わりとしてリソースに挿入され（ステップ５０３）、次いで、結果的に得られた翻訳化リソースが以下のように出力される（ステップ５０４）。  
<P>Bonjour</P>
リソースが翻訳のための１つ以上の文字列を含む場合、データ記憶部は１つ以上のエレメントを含み、方法ステップ（例えば、ステップ１０３、１０４、５０１〜５０３）がエレメント毎に繰り返されてもよい。図５に示されるように、各文字列の翻訳が翻訳された文字列の挿入前にロードされてもよく（ステップ５０２からステップ１０３への戻りループ）、しかし他の実施例では、ステップ群が他の順序で反復されてもよく、例えば、翻訳された文字列が１つずつ挿入されてもよく（例えば、ステップ５０３からステップ１０３への戻りループ）、又は全ての文字列が翻訳に先立って抽出されてもよい（ステップ１０４からステップ１０３への戻りループ及びステップ５０３からステップ５０２への戻りループ）。
【００５８】
ある実施例において、抽出された文字列の識別された翻訳を、それを挿入するのに先立って（すなわち１つ以上のルール又は判定基準に照合するステップ５０３に先立って）チェックすることは有益かもしれない。これは、用語集が第三者によって生成される場合、そして現地語化されているアプリケーションのＵＩ内に収容され得る文字列長に制限がある場合には、特に有益かもしれない。かかる実施例において、（ステップ５０２においてロードされた如き）抽出された文字列の識別された翻訳のチェックが１組の翻訳ルールに照らして実行されてもよく、そのルールはデータ記憶部の一部として格納されてもよいし、非構造化リソースの一部として、又は他の場所に格納されてもよい。例えば、ルールは新規な文字列は２５文字の最大文字列長を有すると記述してもよい。最小文字列長ルールも適用されてもよい（例えば、２文字の最小長）。このチェック段階は、また、翻訳された文字列の他の態様（例えば、正して言語、無効文字がない、ｈｔｍｌタグ付け（tagging）がない等）がチェックされてもよい。
【００５９】
上記に説明された翻訳方法は、ランタイム時（run-time）（例えばアプリケーションがユーザによって起動される時）に実行されても、又は、例えば後に顧客に出荷される現地語化製品の生成プロセスの一部としてこれに先だって実行されてもよい。その方法がランタイム時に実行される場合、その方法は図６で示されるリソースローダ６０２によって実行されてもよい。アプリケーション６０１がコンピュータのオペレーティングシステムにロードされたとき、コールはリソースローダモジュール６０２に向けてなされる。リソースローダモジュール６０２は、どの言語がアプリケーション６０１によって呼び出されるかについて知るためにチェックを行い、次いで、適切なＭＵＩ  ＤＬＬ６０３がアクセスされ（ステップ５０１）、これから適切な翻訳が識別されてロードされ得る（ステップ５０２）。その翻訳は、次いで挿入され（ステップ５０３）、翻訳化リソースがアプリケーション６０１へ出力される（ステップ５０４）のを可能とする。
【００６０】
非構造化リソースを翻訳する第２の方法は、非構造化リソースの現地語化システム７００のブロック図を示す図７及び翻訳方法実施例のフローチャートを示す図８を参照して説明され得る。この方法は安全且つ機密性あるリソース編集を可能とする技術を用いるものであり、例えば、「アプリケーション現地語化のための安全且つ機密性あるリソース編集」と題する２００４年１２月１日付け米国特許出願第１１／００２，７７３号（特許文献１）と、「翻訳化リソースのためのアプリケーションユーザインタフェースの自動化調整を備えるアプリケーション現地語化のための安全且つ機密性あるリソース編集」と題する２００５年１月２４日付け仮出願第１１／０４２，４７０号（特許文献２）との２つの米国特許出願に説明される技術を用いる。
【００６１】
例えば、本件特許出願人のウィンドウズ（登録商標）又はオフィスの如きアプリケーション７０１がロードされるとき（ステップ８０１）、コールはリソースローダモジュール７０２に対してなされる（ステップ８０２）。リソースローダモジュール７０２は、どの言語がアプリケーション７０１（ステップ８０３）によってコールされるかをチェックして、適正な言語フォルダへ行く。このフォルダから、リソースローダモジュール７０２はコールされたリソースを例えばＭＵＩ  ＤＬＬ７０３から検索する（ステップ８０４）。この段階で、そのコールは、現地語化モジュール７０４の１部分を形成するコールインタセプトモジュール７０５によってインタセプトされる（ステップ８０５）。リソースロード用ファンクションをインタセプトするのに用いられ得る多くの周知の方法があり、例えば、メモリ内でファンクション自身の開始点を、例えば他のファンクションへのジャンプ（迂回する（detouring）の如き周知技術）で上書きする。
【００６２】
コールをインタセプトして、現地語化モジュール７０４はリソースをロードする（ステップ８０６）。文字列及び他の現地語化データをそれらのリソース識別子と一緒に探索するために、非構造化データ記憶部がデータ記憶部インタフェース７０８によってアクセスされる（ステップ８０７）。リソース再構築モジュール７０９と一緒のデータ記憶部インタフェース７０８が言語パックロードモジュール７０６の部分を形成する。この非構造化データ記憶部は、現地語化モジュールに、どの文字列が翻訳可能かについて示すが、それは文字列全てを翻訳することが可能でなくてもよい。言語パックロードモジュール７０６は、データ記憶部から何らかのエレメントを読み込んで（ステップ８０８）、どれが実際に修正され得るかを識別するリソースリストに照らして文字列が翻訳可能か否かを確認することによるチェックを行う（ステップ８０９）。このリソースリストは、修正され得ない又はインタフェースを備え得ないやり方、例えば、コード署名化ＤＬＬの如きやり方で記憶される（それは機密性ウェブサービス又はデータベースを介して提供されてもよいのではあるが）。リソースリストは、文字列識別子の手段（又は他の手段）によって、ランタイム時翻訳が許されるそれらの文字列を識別する。リストは、また、文字列の翻訳が格納されている場所に関する情報を提供してもよい。文字列が翻訳可能であると確認された場合、エレメントが文字列をリソースから抽出するのに用いられる（ステップ８１０）。要求言語のための翻訳を含む用語集７０７がアクセスされ（ステップ８１１）、文字列の翻訳がリソース再構築モジュール７０９によってロードされる（ステップ８１２）。翻訳された文字列は制限／又はルールに照らしてチェックされる（ステップ８１３）。これらの制限／ルールは、リソース毎にコード署名化ＤＬＬに保存されてもよく、構文解析及び検証をなすのに非常に迅速なフォーマットに格納されてもよい（それはリソースリストの部分又は他の所であり得る）。翻訳された文字列が制限／ルールに違反した場合、それは使われず、代わりにその文字列がオリジナルな言語に戻される。リソース内の全ての文字列を翻訳した後（ステップ８０８〜８１３を反復することによって）、リソース再構築モジュール７０９は、制限をパスした翻訳と制限に違反したオリジナルな文字列とを用いてリソースを再構築し（ステップ８１４）、この再構築されたリソースは、次いで、アプリケーション７０１にリソースローダ７０２を介して戻される（ステップ８１５）。先に説明したように、フローチャートに示された戻りループ（ステップ８１３からステップ８０９への）は例示のやり方で示されたものであって、反復プロセスは他のやり方で実行されてもよい。
【００６３】
上記に説明され且つ図８に示された実施例において、リソースリストが用いられて、どの文字列が翻訳可能であるか及びそうでないかが（例えば、ランタイム時に）画定される。これは、代わりに、データ構造内で翻訳され得るそれら文字列を識別するだけで実施されてもよい。他の実施例において、文字列単位よりはむしろリソース単位に翻訳可能文字列を識別するリストがアクセスされてもよい。かかるリストは、翻訳可能な文字列を含むそれらのリソース、又は変形例として翻訳不可能な文字列も含まないリソースを識別してもよい。
【００６４】
上記に説明した実施例において、非構造化リソースを構文解析する方法が用いられてリソースの翻訳を可能とする。しかし、これは本発明の方法の唯一の応用ではなく、抽出された文字列が何らかのやり方で用いられてもよく、制限するものではないが、図９−１１を参照して以下に説明されるように、文字列のリストを生成する、用語集を生成する、並びに文字列を編集若しくはチェックするのに用いられてもよい。更に、文字列は抽出される必要はないが、代わりにデータ構造を用いて探索されてもよく、そしてその文字列が何らかのやり方で処理されてもよい。処理の実施例では、これに限定されるものではないが、読み込むステップと、（例えばメモリに）コピーするステップと、修正するステップと、置換するステップと、挿入するステップと、抽出するステップとを含む。その処理は、１つ以上のステップを伴ってもよく、例えば、読み込んで修正するステップ、又は読み込んで置換するステップを伴ってもよい。
【００６５】
図９は、非構造化リソース内の文字列を編集する方法の例示的なフローチャートである。文字列は、図１を参照して上述されたように抽出され、次いで、抽出された文字列は編集のためにユーザに提示される（ステップ９０１）。一旦修正された文字列が入力されると、修正された文字列はリソース中に挿入され（ステップ９０２）、修正されたリソースはメモリに保存し、かつ／又はユーザに表示することによって出力される（ステップ９０３）。
【００６６】
図１０は、リソースをチェックする方法の例示的なフローチャートであり、例えば、非構造化リソース内の文字列のスペル又は文法をチェックする方法を示している。文字列は、図１を参照して上述されたように抽出され、次いで、各々の抽出された文字列はルールに照らしてチェックされる（ステップ１００１）。これらのルールは、辞書及び／または文法ルールを含んでもよい。他の実施例において、これらのルールが機能上のルール、例えば最大長又は最小長の如きルールを含んでもよい（例えば先に説明したように）。要求された場合、文字列はこれらのルールの結果として自動的に修正され（ステップ１００２）、又は文字列と提案選択肢とが１つを選択するにようにユーザに提示されてもよい。修正された文字列が次いでリソースに挿入され（ステップ９０２）、修正されたリソースが出力され得る（ステップ９０３）。この方法は文字列の何らかの態様をチェックするために用いられてもよく、スペル及び文法のチェックに限られない。例えば、文字列が、不適当なワード又はフレーズに対して、又は特定のキーワード、文字等に対してチェックされてもよい。他の実施例において、何ら修正がなされずレポートが生成されてもよい。
【００６７】
図１１は、１つ以上の言語の用語を含む用語集を生成する例示的なフローチャートである。図１を参照して説明されたように、文字列が第１の言語内の第１の非構造化リソースから最初に抽出される。また、このプロセスが１つ以上の付加的言語のために類似のやり方で実行される（ステップ１０１〜１０４）。次いで、抽出された文字列の全ての集合が結合されて１つの用語集を形成する（ステップ１１０１）。
【００６８】
上記の実施例において、非構造化データ記憶部が用いられて非構造化リソースから文字列を探索及び抽出する。しかし、他の実施例において、例えば本件特許出願人のウィンドウズのリソースローダにおいて、非構造化データが文字列の挿入のために用いられ得る。例えば、アプリケーション（例えば、本件特許出願人のワード）が言語独立（language independent）に書かれてもよく（後に翻訳されるベース言語を有するよりはむしろ）、次いで、リソースローダは、データ記憶部を用いて要求言語の文字列を正しい位置でリソース中に挿入するのを可能とする。英語を含む言語データが何ら無い非構造化リソースの例は以下のようである。  
<p></p><br><p></p>
かかるリソースは、以下のテーブルで示される２つのエレメントを含む非構造化データ記憶部を有してもよい。
【００６９】
【表２】
2009534743.tif 000004
【００７０】
このデータ記憶部は、非構造化リソースが何らかの言語特有エレメントも含まないことから、言語独立である。この例では、文字列位置情報は、単一片の情報、リソースの始端に対する文字列の始端位置を含む。各文字列が挿入されるにつれて、残りの文字列の始端オフセットが相応して調整される必要がある点が注記される。例えば、挿入される文字列は、以下のような複数の異なる言語の文字列を含むデータベース中に保持されてもよい。
【００７１】
【表３】
2009534743.tif 000005
【００７２】
このリソースをロードする方法は、図１２に示されるフローチャートを参照して説明される。非構造化リソース（例えば上記に示した例）がメモリに読み込まれ（ステップ１０１）、そのリソースのための非構造化データ記憶部がアクセスされる（ステップ１０２）。エレメント（例えば「ID_1(3)」）がデータ記憶部から読み込まれる（ステップ１０３）。リソース情報がアクセスされ（ステップ１２０１）、例えば、これは、特定のアプリケーションのための文字列データベースであってもよく、データ記憶部から読み込まれたその情報を用いて（ステップ１０３において）、ある文字列（例えばHello）がそのリソース情報から要求された特定言語のために読み込まれる（ステップ１２０２）。この文字列はリソース中に挿入され（ステップ１２０３）、その方法はさらなる文字列をリソース中に挿入するために反復される（ステップ１０３、１２０１〜１２０３）。全ての要求された文字列を挿入した後、改定された非構造化リソースは以下のように出力され得る（ステップ１２０４）。  
<p>HeIlo</p><br><p>Monday 13th March</p>
この例では、非構造化リソースは包含された（included）文字列を伴って記述されていてもよいが、これらの文字列は、（例えば、図３に示されるように）、アプリケーションが構築された時に除去されてしまってもよく、これによってより小さいリソースを生成する。この生成されたリソースは、言語独立であって、より少ない記憶スペースしか要求せず、より効率的にロードされ、現地語化が単純である。
【００７３】
非言語特有のやり方でリソースを記述して別々のデータベース（又は複数データベース）に文字列を記憶することによって、第三者が現地語化のための付加的リソースを、機密性ある何らかのコードへのアクセスを要求することなく、生成できてもよい。かかるケースにおいて、挿入に先立って、挿入のため識別された文字列を１つ以上のルールに照らして比較することは有益かもしれない（翻訳の方法に関連して上記で説明したように）。これらのルールは、以下に示されるように、データベース内又は非構造化データ記憶部内に含まれてもよい。
【００７４】
【表４】
2009534743.tif 000006
【００７５】
あるいは、ルールは別々に格納されてもよい。
【００７６】
図１３は、説明される何れかの方法を実行するシステム１３００のブロック図である。そのシステムは、プロセッサ１３０１及びメモリ１３０２を含む。メモリ１３０２は、要求される一連の命令を保存するのに用いられて、これらの命令がプロセッサによって実行される時に、そのプロセッサをして本発明の方法を実行せしめる。加えて、メモリ１３０２は文字列などの読み込まれたデータを格納するのに用いられる。
【００７７】
上記で提供される全ての実施例は、例示のためだけに、非構造化リソースの非常に単純な例（例えば、ＸＭＬ又はＨＴＭＬの単一行）を用いている。記載されている方法が、非常に多くのエレメントを含むデータ記憶部内に結果としてなってしまう、非常に多くの文字列を含む非常に大きい非構造化リソースのために用いられてもよい。例えば、非構造化リソースは、ＸＭＬ、ウェブページ等における大きい文書であってもよい。
【００７８】
上記に与えられた実施例において、非構造化リソース内の文字列は処理される。しかし、文字列の使用は例示だけのものであって、説明される方法及びシステムが、文字列、コーディネートセット、サイズ、ホットキー等を含む何らかのタイプのデータ部と共に用いられてもよい。
【００７９】
本発明に係る方法が主に非構造化リソースを対象にして説明されたが、本方法はそれらの構造化リソースを構文解析するために使用され得るものであって、その場合では、全体リソース（例えば、長さ制限の無い構造化リソース）に対して不都合な影響を与えることなく文字列編集を可能とする。本発明の方法はテキスト状又は非テキスト状のフォーマットに対して用いられてもよい。
【００８０】
上記の実施例において、本発明による方法は、ランタイム時、構築時、プレ・ランタイム時等にあって実行されるものとして説明されている。これらの用語は例示だけのために用いられ、本方法はどの時の使用にとっても適切化可能である。
【００８１】
上記では、データ記憶部が識別用識別子及び文字列の位置を識別するものとして説明されたが、データ記憶部は、変形例として、コーディネート、ホットキー、コメント及びその他の如き非構造化リソースの他の態様の位置を識別するのに用いられ得る。
【００８２】
当業者は、プログラム命令を格納するのに利用される記憶装置がネットワークにまたがって分散され得ることを理解する。例えば、リモートコンピュータがソフトウェアとして説明されたプロセス例を記憶してもよい。ローカル又はターミナルのコンピュータがリモートコンピュータにアクセスし、プログラムを走らせるソフトウェアの一部又は全部をダウンロードしてもよい。変形例として、ローカルコンピュータは、必要に応じてソフトウェアの部分をダウンロードしてもよいし、又はローカルターミナルにあるソフトウェア及びリモートコンピュータ（又はネットワークコンピュータ）にあるソフトウェア命令を実行してもよい。当業者は、また、当業者にとって周知の従来技術を利用することによって、ソフトウェア命令の全て又は一部が専用回路、例えば、ＤＳＰ、プログラム可能ゲートアレイ等によって実行されてもよいことを理解する。
【００８３】
用語「コンピュータ」は、本明細書において、命令を実行することができるような処理能力を備える何らかの装置を意味するものとして用いられている。当業者は、かかる処理能力が多くの異なる装置に組み込まれることを理解し、従って、用語「コンピュータ」はＰＣ、サーバー、携帯電話、パーソナル携帯情報機器及び多くの他の装置を含む。
【００８４】
本明細書において与えられる何らかの範囲又は装置の値は、当業者にとって明らかであるように、求められる効果を失うことなく拡張又は変更され得る。
【００８５】
本明細書において記載されている方法のステップは、何らかの適切な順序で又は同時に実行されてもよい。フローチャートに示される戻りループは、例示だけのものであって、異なるステップで始まってもよいし、及び／又は終わってもよい。
【００８６】
上記の好ましい実施例の詳細な説明は、例示だけのものであって、その様々な変形態様が当業者によってなされてもよいことが理解される。
【図面の簡単な説明】
【００８７】
【図１】非構造化リソースを構文解析する方法の例を示すフローチャートである。
【図２】非構造化データの記憶部の概略図である。
【図３】データ記憶部の生成を示す概略図である。
【図４】非構造化データの記憶部の第２の概略図である。
【図５】非構造化リソースを翻訳する方法の例を示すフローチャートである。
【図６】現地語化システムの概略図である。
【図７】非構造化リソースの現地語化システムの概略図である。
【図８】非構造化リソースを翻訳する第２の方法の例を示すフローチャートである。
【図９】非構造化リソース内の文字列を編集する方法の例を示すフローチャートである。
【図１０】リソースをチェックする方法の例を示すフローチャートである。
【図１１】１つ以上の言語における用語を含む用語集を生成する方法の例を示すフローチャートである。
【図１２】リソースをロードする方法の例を示すフローチャートである。
【図１３】説明された方法の何れかを実行するシステムの概略図である。
【図１】
2009534743.tif 000007
【図２】
2009534743.tif 000008
【図３】
2009534743.tif 000009
【図４】
2009534743.tif 000010
【図５】
2009534743.tif 000011
【図６】
2009534743.tif 000012
【図７】
2009534743.tif 000013
【図８】
2009534743.tif 000014
【図９】
2009534743.tif 000015
【図１０】
2009534743.tif 000016
【図１１】
2009534743.tif 000017
【図１２】
2009534743.tif 000018
【図１３】
2009534743.tif 000019
【国際調査報告】
2009534743.tif 000020
2009534743.tif 000021
2009534743.tif 000022