非構造化リソースの構文解析方法
1つ以上のデータ部を含む非構造化リソースを処理する方法及び装置が説明される。この方法は、非構造化リソースをメモリ内に読み込むステップと、該非構造化リソースに関連するデータ構造にアクセスするステップとを含む。該データ構造は1つ以上のエレメントを含み、各エレメントは該非構造化リソースにおけるデータ部の位置情報を含む。この位置情報を用いて、データ部は前記非構造化リソースから探索及び処理され、この探索及び処理のステップはデータ構造におけるエレメント毎に繰り返される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、非構造化リソースの構文解析方法に関する。
【背景技術】
【0002】
アプリケーション及びオペレーティングシステムなどのソフトウェア製品はしばしば多くの異なる言語版にて提供される。ソフトウェア製品における初期言語から他言語への変換は「現地語化(ローカライゼーション)」技術として知られている。通常、現地語化は、当該製品のユーザインタフェース(UI)内の全ての文字列エレメントや他の何らかの言語特定パーツ(例えば、ホットキー、コーディネート、サイズ)を翻訳して当該製品を再構築し、その言語特有のバージョンを生産することによってなされる。この現地語化製品は大規模なテストを顧客出荷前に必要とする。これには多大な費用がかかり、現地語化バージョンのソフトウェアの発売遅延をもたらす。
【0003】
異なる現地語化方法が開発されているが、そこではランタイム時に現地語化がなされる。この方法では、ベース製品(例えば、オリジナルな英語版)がロードされ、翻訳化リソースがリソースインターセプタによって挿入され、リソースインターセプタは言語特有の用語集ファイルからそれらを得る。これはアプリケーションが気づかない方法でなされる。この方法は、アプリケーションの全てを翻訳しなくてもよく、組み込み試験の必要性を除去することから、ソフトウェア製品のローカライゼーション技術において強力な省力化及び低廉化をもたらす。この方法はまた、サードパーティがソフト製品用途における新しい言語用語集(glossary)の作成を可能とし、多くの追加言語版への現地語化を可能としている。
【0004】
【特許文献1】米国特許出願公開第2006/0150173号明細書
【特許文献2】米国特許出願公開第2006/0116864号明細書
【発明の開示】
【発明が解決しようとする課題】
【0005】
リソースインターセプタがアプリケーション内のリソースを翻訳可能とするには、リソースインターセプタがリソース内で翻訳可能な文字列を識別できなければならない。これは、WIN32ダイアログボックス又はWIN32文字列テーブルなどの構造化リソースにとっては些細なことであって、それらが(例えば標準によって)定義された構造を有するから、様々なリソースを見つけてそれらを修正/置換することは簡単である。しかし、全てのリソースが構造化されているわけではない。非構造化(又はストリーム)リソースは、所定の構造を有さず且つファイル又はストリーム内に格納されていないテキスト状のリソースである。通常、この種のリソースは、本件特許出願人のノートパッド(Notepad)などのテキスト編集プログラムを用いて目視及び編集可能である。非構造化リソースの例は、(文字列、タグ及び他の書式用文字から成る)HTMLファイル、JavaScript、INIファイル、レジストリファイル、CSS(Cascading Style Sheets)及びXMLファイルを含む。これらの非構造化リソースを記述するのに用いられる非常に多くのスキーマがあり、正しいスキーマの知識が非構造化リソース内の翻訳可能な文字列を識別するのに要求される。特定のリソースタイプの範囲内でさえ、文字列及びその他の現地語化データ(例えば、ホットキー、サイズ及びコーディネート)が識別されるようにするには、多くの異なる方法があり、例えば以下のようである。
【0006】
第1のHTMLサンプル:<P ID=HelIo>Hello</P> .
第2のHTMLサンプル:<P><!− ID=ID_Hello-->Hello<!− end--></P>
第1のJavaScriptサンプル:document.write(“Hello”)
第2のJavaScriptサンプル:L_Hello_Message = (“Hello”)
document. write(L_Hello_Message)
【0007】
これらの各例において、リソースローダが翻訳可能文字列「Hello」を識別できるようにするには、翻訳可能文字列を各例において識別する方法をリソースローダが実際に知っていなければならない。定義された構造が無いことから、リソースローダがあり得る全てのスキーマ、フォーマット、外部構成データ及びルールを知ることはそれらが無限の数あるが故に実現性がない。リソースローダが特定スキーマ、フォーマット及び特定状況において使用されるルールを知っていた場合であっても構文解析はなお遅く、多くのアプリケーションにおいて(例えば、実行中のアプリケーションにおいてリソースロードの間に実行される場合)容認できるものではない。更に、ファイルサイズを最適化してアプリケーションロードをより効率化可能とするファイル(例えばHTMLファイル)が構築可能とするためには、識別子情報(上記2つのHTML例における「ID=HeIIo」と「<!− ID=ID_Hello-->...<!−end-->」)は除去されたかもしれない。代替的には(又は付加して)、識別子情報が機密性の理由で除去されるかもしれなく(例えば、ファイルの注釈が機密性を有する場合がある)、又は有効ファイル構造が作成されるかもしれない(例えば、フラグが除去されるまでHTMLが無効である場合がある)。これらの場合において、非構造化リソースは翻訳可能なリソースを識別する情報を何ら含んではいない場合があり、例えば以下のようである。
【0008】
第3のHTMLサンプル:<P>Hello</P>
これは、リソースローダが非構造化リソース内の文字列を識別することは不可能であることを意味する。
【0009】
非構造化リソース内で文字列の場所を識別することに加えて、他のデータに照らす(例えば用語集の翻訳と照らす)クロスリファレンスにおける使用のために文字列毎に独自の識別子を決定する必要がある場合もある。
【0010】
本発明の目的は、周知の構文解析方法おける課題を解決すると共に改良された解析ツールを提供する非構造化リソース解析方法を提供することである。
【課題を解決するための手段】
【0011】
以下の記載では、読者に基本的理解を与えるために,本開示の簡略化された概要を提供する。この概要は、本開示の完全な概観ではなく、本発明の要所/重要要素を識別するか又は本発明の範囲の輪郭を示すものでもない。その唯一の目的は、後述する詳細な説明の前置きとして、本明細書において開示される幾つかの概念を単純化された形式で示すものである。
【0012】
1つ以上のデータ部を含む非構造化リソースを処理するシステム及び方法が記載されている。その方法は、非構造化リソースをメモリに読み込むステップと、非構造化リソースに関連するデータ構造にアクセスするステップと、を含む。このデータ構造は、幾つかのエレメントを含み、各エレメントは非構造化リソース内のデータ部の位置情報を含む。この位置情報を用いることによってデータ部が探索されて非構造化リソースから処理され、次いで、探索及び処理をなすステップはデータ構造のエレメント毎に繰り返される。
【0013】
本実施例は非構造化リソースを処理する方法を提供する。該方法は、1つ以上のデータ部を含む非構造化リソースを読み込むステップと、前記非構造化リソースに関連するデータ構造にアクセスするステップであって、前記データ構造は1つ以上のエレメントを含み、各エレメントはデータ部に関連すると共に当該データ部の位置情報を含むステップと、第1のエレメントを前記データ構造からメモリ内に読み込むステップであって、前記第1のエレメントは第1のデータ部の位置情報を含むステップと、前記第1のデータ部を、前記第1のデータ部の位置情報を用いて、前記非構造化リソース内で探索するステップと、前記第1のデータ部を処理するステップと、を含み、前記エレメントを読み込むステップ、前記データ部を探索するステップ及び前記データ部を処理するステップとを、前記データ構造における1つ以上のエレメント毎に繰り返すことを特徴とする。
【0014】
利点としては、これはより速く且つより効率的な方法であり、メモリ使用がより少なくて済む。利点としては、その方法は、文字列などのデータ部を、それが書かれた手法からは独立して、連続して処理され、編集又は翻訳される。ある状況において、この方法はデータ構造の使用なしには出来なかった非構造化リソースの処理を可能にする。
【0015】
好ましくは、この方法は更に、置換データ部の記憶部にアクセスするステップを含み、上記第1のデータ部を処理するステップは、第1の置換データ部を置換データ部の記憶部から第1のエレメントに基づいて選択するステップと、第1の置換データ部を非構造化リソース中に第1のデータ部の代わりに挿入するステップとを含むことを特徴とする。
【0016】
利点としては、この方法は、第1の言語での使用に適切なデータ部を、第2の言語での使用に適切なデータ部で置き換えることによるリソースの現地語化に用いられ得る。
【0017】
好ましくは、非構造化リソースをメモリに読み込むステップは、非構造化リソースをある場所からメモリに読み込むステップを含み、更に、修正された非構造化リソースをその場所に出力するステップを含む。
【0018】
好ましくは、この方法は更に、選択ステップに続いて、置換文字列が所定の判定基準を充足するか否かをチェックするステップと、もし充足していない場合に挿入ステップを省略するステップとを含む。もし置換データ部(例えば文字列)が問題を起こすと判定された場合に、それは挿入されず元のデータ部がそのリソース中に残される。
【0019】
利点としては、この方法は、置換データ部(例えば置換文字列)がチェックされるのを可能とすることで、挿入されてユーザインタフェースにおいて表示されたときに問題を起こすことがないようにする。
【0020】
好ましくは、所定の判定基準は、データ部長の基準、有効文字の基準又は所定のリソースリストを含む。
【0021】
利点としては、この方法は、文字列などの置換データ部が、例えば、表示されたときにトランケート(truncate)されるか否か、置換文字列が正しい長さであるか否か、置換文字列が無効な文字を有するか否か、又は置換文字列がアプリケーション機能を損なうか若しくは機密性問題を導くように何らかの文字を含むか否か、などの判定のチェックがなされるのを可能とする。所定のリソースリストの使用は、データ部の変更有無の制御を可能とする点で好都合である。
【0022】
好ましくは、この方法は更に、所定の判定基準を非構造化リソース、データ構造又は置換データ部の記憶部からメモリに読み込むステップを含む。
【0023】
好ましくは、この方法は更に、非構造化リソースをメモリに読み込むのに先立って、アプリケーションをロードするステップと、アプリケーションに要求される言語をチェックするステップと、を含み、ここで非構造化リソースはアプリケーションに関連し、該方法は更に、修正された非構造化リソースをアプリケーションに受け渡すステップを含む。
【0024】
利点としては、これは、リソースの翻訳又は変換などのリソース処理をアプリケーションがロードされる時点で行われるのを可能とする。
【0025】
好ましくは、この方法は更に、置換データ部の記憶部にアクセスするのに先立って、アプリケーションに要求される言語に基づいて置換データ部の記憶部を識別するステップを含む。
【0026】
好ましくは、置換データ部の記憶部は、1つ以上の言語のために翻訳されたデータ部のデータベースと辞書データベースとのうちの1つを含む。
【0027】
データ部は、文字列、ホットキー、コーディネートセット(coordinate set)、現地語化可能又は修正可能なデータのサイズ又は部分を含んでもよい。
【0028】
他の実施例において、この方法は、ルールデータベースにアクセスするステップを含み、第1のデータ部を処理するステップは、第1のデータ部をルールデータベースに従って修正して第1の修正化データ部を生成するステップと、第1の修正化データ部を非構造化リソースに第1のデータ部の代わりに挿入するステップとを含む。
【0029】
好ましくは、データ部は、文字列と、長さルール、許可文字ルール、許可ワードルール、禁止ワードルール、文法ルール及びスペルルールのうちの1つ以上を含むルールデータベースとを含む。
【0030】
他の実施例において、非構造化リソース内の各データ部は、第1の言語の文字列を含み、第1のデータ部を処理するステップは、第1のデータ部を抽出するステップを含み、この方法は更に、第2の非構造化リソースをメモリに読み込むステップであって、第2の非構造化リソースは1つ以上のデータ部を含み、第2の非構造化リソースの各データ部は第2の言語の文字列を含むステップと、第2の非構造化リソースに関連する第2のデータ構造にアクセスするステップであって、第2のデータ構造は1つ以上のエレメントを含み、各エレメントは、第2の非構造化リソース内のデータ部に関連すると共に当該データ部の位置情報を含むステップと、第1のエレメントを第2のデータ構造からメモリに読み込むステップであって、第1のエレメントは第2の非構造化リソース内の第1のデータ部の位置情報を含むステップと、第1のデータ部を第2の非構造化リソースから第2の非構造化リソース内の第1のデータ部の位置情報を用いて抽出するステップと、を含み、第2のデータ構造内の1つ以上のエレメント毎に読み込みのステップ及び抽出のステップを繰り返すステップと、抽出された全てのデータ部を両方の非構造化リソースから出力するステップを含む。
【0031】
利点としては、これは多数の言語の用語集の自動生成を可能とする。
【0032】
好ましくは、非構造化リソースは、JavaScript、CSS(Cascading Style Sheets)、INIファイル、レジストリファイル、HTMLファイル及びXMLファイルのうちの1つを含む。変形例として、非構造化リソースは、現地語化可能な又は修正化可能な文字列又はデータを含み得る何らかのテキストフォーマットを含んでもよい。
【0033】
好ましくは、各エレメントは更にデータ部識別子を含む。
【0034】
好ましくは、位置情報は、データ部始端位置、データ部長さインジケータ及びデータ部末端位置のうちの少なくとも1つを含む。
【0035】
好ましくは、データ構造はコード化情報(例えばユニコード、ANSI、その他)を更に含む。
【0036】
第1のデータ部を処理するステップは、文字列などのデータエレメントを挿入するステップを含んでもよい。
【0037】
他の実施例は、非構造化リソースを処理する方法を提供する。この方法は、非構造化リソースをメモリに読み込むステップであって、非構造化リソースは1つ以上のデータ部の場所を含むステップと、非構造化リソースに関連するデータ構造にアクセスするステップであって、データ構造は、1つ以上のエレメントから成り、各エレメントはデータ部と関連すると共に当該データ部の位置情報を含むステップと、第1のエレメントをデータ構造からメモリに読み込むステップであって、第1のエレメントは第1のデータ部の位置情報を含むステップと、第1のデータ部を第1のデータ部の位置情報を用いて挿入するステップと、データ構造内の1つ以上のエレメント毎に、読み込みのステップ及び挿入のステップを繰り返すステップを含む。
【0038】
利点としては、これは非言語特有手法で書かれたリソースを現地語化する単純な方法を提供し、これによって、そのリソースは英語の文字列又はデータさえ含まない。そのリソースはサイズにおいて小さく低減されたメモリスペースしか必要とせず、迅速且つ効率的にロードされ得る。更に、これは翻訳(例えば文字列の記憶部)が第三者によって提供されるのを可能とする。
【0039】
他の実施例は、コンピュータプログラムを提供し、これがコンピュータ上で実行されるときには、本発明の方法の何らかの全てのステップが実行されるように適合されたコンピュータプログラムコード手段を含む。
【0040】
好ましくは、コンピュータプログラムはコンピュータ読み取り可能な記録媒体上に実現される。
【0041】
更なる実施例はシステムを提供し、そのシステムは、プロセッサと、プロセッサに結合されてこれによって読取可能なメモリであり、プロセッサによって実行されたときにプロセッサをして処理手順を実行せしめる一連の命令を含むメモリとを含む。前記処理手順は、非構造化リソースをメモリに読み込むステップであって、非構造化リソースは1つ以上のデータ部を含むステップと、非構造化リソースに関連するデータ構造にアクセスするステップであって、データ構造は1つ以上のエレメントを含み、各エレメントはデータ部に関連し、関連するデータ部の位置情報を含むステップと、第1のエレメントをデータ構造からメモリに読み込むステップであって、第1のエレメントは第1のデータ部の位置情報を含むステップと、第1のデータ部を非構造化リソース内で第1のデータ部の位置情報を用いて探索するステップと、第1のデータ部を処理するステップと、を含み、データ構造の1つ以上のエレメント毎に、読込、探索及び処理の各ステップを繰り返すことを特徴とする。
【0042】
本明細書で説明される方法は、記憶媒体上のマシン読取可能形式のソフトウェアによって実行される。ソフトウェアは、並列プロセッサ又は順列プロセッサ上の実行に適するものであってその方法ステップが何らかの適切な順番に又は同時に実行され得る。
【0043】
これは、ソフトウェアが価値あって別々に取引可能な商品であり得ることを示す。「ダム(dumb)」すなわち標準のハードウェア上を走る又は制御して所望の機能を実現するソフトウェアを含むことが意図される。また、HDL(ハードウェア記述言語)ソフトウェアなどのハードウェア構成を「記述する」すなわち定義し、シリコンチップを設計するのに用いられ、又は汎用プログラマブルチップを設計するなどして、所望の機能を実現するソフトウェアを含むことが意図される。
【0044】
本発明の付随する多くの特徴は、以下の詳細な説明を添付の図面と共に参照することによってより良く理解される。また、本説明は、添付の図面と照らし合わせて以下の詳細な説明を読むことによってより良く理解される。なお、これら図面における同様の参照符号は同様の部分を示すように用いられている。
【発明を実施するための最良の形態】
【0045】
添付の図面と共に下記に提供される詳細な説明は本実施例の説明として意図されるものであって、本実施例が構築され得る又は用いられ得る唯一の形態を示すものとは意図されない。この説明は、実施例の機能を記載すると共に実施例を構築し動作せしめるステップのシーケンスを記載する。しかし、同一又は等価な機能及びシーケンスが異なる実施例によって達成されてもよい。
【0046】
図1は、非構造化リソースを構文解析する方法の実施例のフローチャートである。用語「構文解析」とは、本明細書においてストリーム(例えばデータのセンテンス又は部分)をその構成部分に分解することを意味するものとして用いられる。構文解析の例としては、本をチャプタ、パラグラフ、センテンス又はワードに分解する、電話帳を名前、アドレス及び番号に分解する、或いは売上高を分野に分解する等の例がある。この方法は、図2を参照して説明され、図2は非構造化データ記憶部(store)200と称されるデータ構造を示し、以下を含むXMLファイルを含む非構造化リソースの単純な例を示している。
<P>Hello</P>
非構造化リソースは、メモリに読み込まれ(ステップ101)、非構造化リソースに関連する非構造化データ記憶部200がアクセスされる(ステップ102)。非構造化データ記憶部200は、非構造化リソースの分析を、当該リソースが元々どのようにして記述され解析され又は現地語化されたかに関わりなく実行するのに用いられ得るデータを提供する。示される実施例において、非構造化データ記憶部200は、リソース内容(例えば、ウィンドウズ1252、ユニコード又はUTF−7)に用いられる文字のコードページ(Code Page)を詳述するコード化用情報201を含む。データ記憶部は、また、非構造化リソース内に各々が含まれる文字列に関する情報を提供する1つ以上のエレメント202を含む。示される実施例において、このエレメントは、リソース識別子としても参照される文字列識別子202a(例えば、「ID_Hello」)を含み、これはルール又は翻訳用語集等とのクロスリファレンスのために用いられてもよい。このエレメントは、また、文字列位置情報、例えば、文字列の始端位置202b及び文字列の長さ202cを含む。示される実施例において、始端位置は、リソースファイルの始めから文字列内の最初の文字の始めの位置のオフセットであり、長さは文字列内に含まれる文字の数である。エレメント202が非構造化データ記憶部200からメモリに読み込まれる(ステップ103)、次いで、このエレメントからの位置情報が用いられて非構造化リソースから文字列が探索されて抽出される(ステップ104)。図2に示される例示のデータ記憶部200は1つのエレメント202を含むだけであるが、そこにおいて、データ記憶部が1つ以上のエレメントを含み、エレメントを読み込んで文字列を抽出するステップが繰り返され(ステップ103及び104)、付加的な文字列が非構造化リソースから抽出されてもよい。
【0047】
文字列を抽出したなら(ステップ104)、その文字列は格納されてもよいし及び/又は更なる処理がなされてもよく、付加的処理ステップが以下に詳細に説明される。
【0048】
図2に示されたデータ記憶部200は、例示だけのものであって、他の例において記憶部は異なる情報を含んでもよい。1つの実施例において、文字列識別子がデータ記憶部内に含まれなくてもよく、他の実施例において、文字列の位置情報が異なるフォーマット(例えば、始端位置及び終端位置、詰めた(just)始端位置等)で提供されてもよい。更なる実施例において、コード化用情報201はデータ記憶部内に含まれていなくてもよい。データ記憶部200は、言語特有なものであって元の文字列ストリームに依存する。しかし、かかるデータ記憶部がニュートラル言語(language neutral)であることから、以下に説明されるように、何らかの言語データを非構造化リソース内に出したままにしておくことも可能である。
【0049】
データ記憶部200などの、情報が周知のフォーマットに格納されるデータ記憶部を用いることによって、何らかの非構造化リソースを構文解析することが、リソースを構築する際に用いられたスキーマ、ルール等の何らかの知識も必要とすること無く、非常に容易になる。これは、単純な非構造化リソースの構文解析器及び非構造化リソースの効率的解析手法を与える。更に、データ記憶部は大きいメモリを要求せず、例えば、タイトルを備える4つのエレメント記憶部に対して113バイト(=3+(5×22))だけが要求される。
【0050】
データ記憶部は、非構造化リソースの構文解析においてアクセス可能な如何なる場所に格納されてもよく、データ記憶部は、例えば、非構造化リソース内に、オリジナルなリソースの傍ら(例えば、ダイナミックリンクライブラリ(DLL)内)に、サーバー上に、インターネット上に、データベース上に、XMLファイルすなわちWebサービスによって提供されるデータ記憶部の如き場所に格納されてもよい。
【0051】
非構造化データ記憶部200は、幾つかのやり方のうちの1つによって作られてもよい。それは、好ましくは、特定のリソースを作成するのに用いられる構造、スキーマ及びルールを知見及び理解する誰か/何かによって作成されてもよく、この情報及び何らかの要求されるフラグがなお利用可能な何時において作られてもよい。例えば、それは当該リソースを書いた人/組織によるリソース出荷前に作られてもよい。それは、時間を労し且つ間違い易いとしても、人手によって作られてもよい。他の実施例において、構文解析用符号及び構文解析用ルールを用いてデータを取得して記述する自動化ルールによって作られてもよい。データ記憶部の作成を示しているブロック図が図3に示される。
【0052】
コメント付き又は識別可能データ301を備える非構造化リソースが構文解析ルール302を用いてリソースを構文解析する構文解析器300へ入力される。構文解析ルール302は構文解析器へ入力されてもよく、又は変形例として構文解析器は特定のリソースタイプに専用であってもよく、従ってその中に固有のルールを有してもよい。構文解析器300は、ルール情報を使用して、リソース内の文字列の幾つか又は全てを識別し、識別された各文字列毎のエレメントを含む(図3に示される如き)非構造化リソースデータ記憶部303を出力する。構文解析器300は、加えてコメント付きデータを伴わない非構造化リソース304の編集されたバージョンを出力してもよい。
【0053】
1つの実施例において、非構造化リソース301は以下を含むXMLファイルであってもよい。
<para its:translate=“yes”>Hello</para>
構文解析ルール302は、「www.w3.org/TR/its」に説明されているように、XML国際タグセット(XML International Tag Set(ITS))ルールを含んでもよい。この実施例では、非構造化リソースは構文解析によって変更されなくてもよく(すなわちコメント付きデータを伴わない非構造化リソース304)、非構造化データ記憶部400が、図4に示すように、ファイルの始めからの27文字の始端位置401と、5文字の文字列長402を含む文字列位置情報を備えてもよい。第2の実施例において、非構造化リソース301は以下のようなHTMLファイルであってもよい。
<P><!−ID=lD_Hello-->Hello<!−end--></P>
構文解析用ルールは、HTML内のコメントが解析されてどの部分が抽出されるかを判定できるように定義してもよく、コメント付きデータを伴わないで出力される非構造化リソース304は以下のようである。
<P>Hello<P>
この出力されるリソースはオリジナルなリソースより小さく、使用メモリ量を減らし、より効率的にロードされ得るリソースを生成する。この実施例において、結果として得られる非構造化データ記憶部303が図3に示される。
【0054】
図3に示される構文解析器300は、多数の周知の構文解析器のうちの1つであってもよく、各構文解析器が1つ以上のスキーマ(例えば、上記説明の段落における第1の例のHTML構文解析器及び第2の例のXML構文解析器)に専用のものである。構文解析ルールは、スキーマに関する情報に加えて又は代わりに外部情報を含むことによって、データ記憶部(例えば、<b>及び</b>マーカー間の全ての情報又はヘッダ内の全てテキストが識別されるべき情報であると指定する情報)の生成を可能としてもよい。ルール及び外部情報の組合せは、リソース内のどの文字列がデータ記憶部内で識別されるべきかを実際に開発者に指示することを可能とする。他の実施例において、外部構成データが構文解析ルールの代わりに又は加えて使用されてもよい。
【0055】
図5は、非構造化リソースを翻訳する、例えば、英語(ベース言語)から仏語(要求される言語)に翻訳する方法の例示的なフローチャートである。このフローチャートは、図1に示されたものの変形されたバージョンであって、以下に示すXMLファイルを含む非構造化リソースの単純な同一例を参照して説明され得る。
<P>Hello</P>
非構造化リソースがメモリに読み込まれ(ステップ101)、非構造化リソースに関連する(例えば図2に示される如き)非構造化データ記憶部がアクセスされる(ステップ102)。エレメントが非構造化データ記憶部からメモリに読み込まれ(ステップ103)、次いで、このエレメントからの位置情報が用いられて非構造化リソースから文字列が探索及び抽出される(ステップ104の例えば「Hello」)。要求される言語の用語集が(この実施例ではステップ501の仏語)アクセスされ、文字列の翻訳が用語集からメモリに読み込まれる(ステップ502)。文字列識別子(例えば「ID_Hello」)は、抽出された文字列に関して用語集内のどの翻訳が問題となるかを識別するのに、例えば以下のテーブルに示されるように用いられてもよい。
【0056】
【表1】
【0057】
他の実施例において、文字列自身(例えばHello)が代わりに用いられて、使用されるべき用語集から翻訳を識別してもよい。用語集は、MUI DLL(複数言語ユーザインタフェースダイナミックリンクライブラリ)ファイル、データベース及びウェブサービス等を含む。次いで、文字列(この例では「Bonjour」)の翻訳が抽出された文字列の代わりとしてリソースに挿入され(ステップ503)、次いで、結果的に得られた翻訳化リソースが以下のように出力される(ステップ504)。
<P>Bonjour</P>
リソースが翻訳のための1つ以上の文字列を含む場合、データ記憶部は1つ以上のエレメントを含み、方法ステップ(例えば、ステップ103、104、501〜503)がエレメント毎に繰り返されてもよい。図5に示されるように、各文字列の翻訳が翻訳された文字列の挿入前にロードされてもよく(ステップ502からステップ103への戻りループ)、しかし他の実施例では、ステップ群が他の順序で反復されてもよく、例えば、翻訳された文字列が1つずつ挿入されてもよく(例えば、ステップ503からステップ103への戻りループ)、又は全ての文字列が翻訳に先立って抽出されてもよい(ステップ104からステップ103への戻りループ及びステップ503からステップ502への戻りループ)。
【0058】
ある実施例において、抽出された文字列の識別された翻訳を、それを挿入するのに先立って(すなわち1つ以上のルール又は判定基準に照合するステップ503に先立って)チェックすることは有益かもしれない。これは、用語集が第三者によって生成される場合、そして現地語化されているアプリケーションのUI内に収容され得る文字列長に制限がある場合には、特に有益かもしれない。かかる実施例において、(ステップ502においてロードされた如き)抽出された文字列の識別された翻訳のチェックが1組の翻訳ルールに照らして実行されてもよく、そのルールはデータ記憶部の一部として格納されてもよいし、非構造化リソースの一部として、又は他の場所に格納されてもよい。例えば、ルールは新規な文字列は25文字の最大文字列長を有すると記述してもよい。最小文字列長ルールも適用されてもよい(例えば、2文字の最小長)。このチェック段階は、また、翻訳された文字列の他の態様(例えば、正して言語、無効文字がない、htmlタグ付け(tagging)がない等)がチェックされてもよい。
【0059】
上記に説明された翻訳方法は、ランタイム時(run-time)(例えばアプリケーションがユーザによって起動される時)に実行されても、又は、例えば後に顧客に出荷される現地語化製品の生成プロセスの一部としてこれに先だって実行されてもよい。その方法がランタイム時に実行される場合、その方法は図6で示されるリソースローダ602によって実行されてもよい。アプリケーション601がコンピュータのオペレーティングシステムにロードされたとき、コールはリソースローダモジュール602に向けてなされる。リソースローダモジュール602は、どの言語がアプリケーション601によって呼び出されるかについて知るためにチェックを行い、次いで、適切なMUI DLL603がアクセスされ(ステップ501)、これから適切な翻訳が識別されてロードされ得る(ステップ502)。その翻訳は、次いで挿入され(ステップ503)、翻訳化リソースがアプリケーション601へ出力される(ステップ504)のを可能とする。
【0060】
非構造化リソースを翻訳する第2の方法は、非構造化リソースの現地語化システム700のブロック図を示す図7及び翻訳方法実施例のフローチャートを示す図8を参照して説明され得る。この方法は安全且つ機密性あるリソース編集を可能とする技術を用いるものであり、例えば、「アプリケーション現地語化のための安全且つ機密性あるリソース編集」と題する2004年12月1日付け米国特許出願第11/002,773号(特許文献1)と、「翻訳化リソースのためのアプリケーションユーザインタフェースの自動化調整を備えるアプリケーション現地語化のための安全且つ機密性あるリソース編集」と題する2005年1月24日付け仮出願第11/042,470号(特許文献2)との2つの米国特許出願に説明される技術を用いる。
【0061】
例えば、本件特許出願人のウィンドウズ(登録商標)又はオフィスの如きアプリケーション701がロードされるとき(ステップ801)、コールはリソースローダモジュール702に対してなされる(ステップ802)。リソースローダモジュール702は、どの言語がアプリケーション701(ステップ803)によってコールされるかをチェックして、適正な言語フォルダへ行く。このフォルダから、リソースローダモジュール702はコールされたリソースを例えばMUI DLL703から検索する(ステップ804)。この段階で、そのコールは、現地語化モジュール704の1部分を形成するコールインタセプトモジュール705によってインタセプトされる(ステップ805)。リソースロード用ファンクションをインタセプトするのに用いられ得る多くの周知の方法があり、例えば、メモリ内でファンクション自身の開始点を、例えば他のファンクションへのジャンプ(迂回する(detouring)の如き周知技術)で上書きする。
【0062】
コールをインタセプトして、現地語化モジュール704はリソースをロードする(ステップ806)。文字列及び他の現地語化データをそれらのリソース識別子と一緒に探索するために、非構造化データ記憶部がデータ記憶部インタフェース708によってアクセスされる(ステップ807)。リソース再構築モジュール709と一緒のデータ記憶部インタフェース708が言語パックロードモジュール706の部分を形成する。この非構造化データ記憶部は、現地語化モジュールに、どの文字列が翻訳可能かについて示すが、それは文字列全てを翻訳することが可能でなくてもよい。言語パックロードモジュール706は、データ記憶部から何らかのエレメントを読み込んで(ステップ808)、どれが実際に修正され得るかを識別するリソースリストに照らして文字列が翻訳可能か否かを確認することによるチェックを行う(ステップ809)。このリソースリストは、修正され得ない又はインタフェースを備え得ないやり方、例えば、コード署名化DLLの如きやり方で記憶される(それは機密性ウェブサービス又はデータベースを介して提供されてもよいのではあるが)。リソースリストは、文字列識別子の手段(又は他の手段)によって、ランタイム時翻訳が許されるそれらの文字列を識別する。リストは、また、文字列の翻訳が格納されている場所に関する情報を提供してもよい。文字列が翻訳可能であると確認された場合、エレメントが文字列をリソースから抽出するのに用いられる(ステップ810)。要求言語のための翻訳を含む用語集707がアクセスされ(ステップ811)、文字列の翻訳がリソース再構築モジュール709によってロードされる(ステップ812)。翻訳された文字列は制限/又はルールに照らしてチェックされる(ステップ813)。これらの制限/ルールは、リソース毎にコード署名化DLLに保存されてもよく、構文解析及び検証をなすのに非常に迅速なフォーマットに格納されてもよい(それはリソースリストの部分又は他の所であり得る)。翻訳された文字列が制限/ルールに違反した場合、それは使われず、代わりにその文字列がオリジナルな言語に戻される。リソース内の全ての文字列を翻訳した後(ステップ808〜813を反復することによって)、リソース再構築モジュール709は、制限をパスした翻訳と制限に違反したオリジナルな文字列とを用いてリソースを再構築し(ステップ814)、この再構築されたリソースは、次いで、アプリケーション701にリソースローダ702を介して戻される(ステップ815)。先に説明したように、フローチャートに示された戻りループ(ステップ813からステップ809への)は例示のやり方で示されたものであって、反復プロセスは他のやり方で実行されてもよい。
【0063】
上記に説明され且つ図8に示された実施例において、リソースリストが用いられて、どの文字列が翻訳可能であるか及びそうでないかが(例えば、ランタイム時に)画定される。これは、代わりに、データ構造内で翻訳され得るそれら文字列を識別するだけで実施されてもよい。他の実施例において、文字列単位よりはむしろリソース単位に翻訳可能文字列を識別するリストがアクセスされてもよい。かかるリストは、翻訳可能な文字列を含むそれらのリソース、又は変形例として翻訳不可能な文字列も含まないリソースを識別してもよい。
【0064】
上記に説明した実施例において、非構造化リソースを構文解析する方法が用いられてリソースの翻訳を可能とする。しかし、これは本発明の方法の唯一の応用ではなく、抽出された文字列が何らかのやり方で用いられてもよく、制限するものではないが、図9−11を参照して以下に説明されるように、文字列のリストを生成する、用語集を生成する、並びに文字列を編集若しくはチェックするのに用いられてもよい。更に、文字列は抽出される必要はないが、代わりにデータ構造を用いて探索されてもよく、そしてその文字列が何らかのやり方で処理されてもよい。処理の実施例では、これに限定されるものではないが、読み込むステップと、(例えばメモリに)コピーするステップと、修正するステップと、置換するステップと、挿入するステップと、抽出するステップとを含む。その処理は、1つ以上のステップを伴ってもよく、例えば、読み込んで修正するステップ、又は読み込んで置換するステップを伴ってもよい。
【0065】
図9は、非構造化リソース内の文字列を編集する方法の例示的なフローチャートである。文字列は、図1を参照して上述されたように抽出され、次いで、抽出された文字列は編集のためにユーザに提示される(ステップ901)。一旦修正された文字列が入力されると、修正された文字列はリソース中に挿入され(ステップ902)、修正されたリソースはメモリに保存し、かつ/又はユーザに表示することによって出力される(ステップ903)。
【0066】
図10は、リソースをチェックする方法の例示的なフローチャートであり、例えば、非構造化リソース内の文字列のスペル又は文法をチェックする方法を示している。文字列は、図1を参照して上述されたように抽出され、次いで、各々の抽出された文字列はルールに照らしてチェックされる(ステップ1001)。これらのルールは、辞書及び/または文法ルールを含んでもよい。他の実施例において、これらのルールが機能上のルール、例えば最大長又は最小長の如きルールを含んでもよい(例えば先に説明したように)。要求された場合、文字列はこれらのルールの結果として自動的に修正され(ステップ1002)、又は文字列と提案選択肢とが1つを選択するにようにユーザに提示されてもよい。修正された文字列が次いでリソースに挿入され(ステップ902)、修正されたリソースが出力され得る(ステップ903)。この方法は文字列の何らかの態様をチェックするために用いられてもよく、スペル及び文法のチェックに限られない。例えば、文字列が、不適当なワード又はフレーズに対して、又は特定のキーワード、文字等に対してチェックされてもよい。他の実施例において、何ら修正がなされずレポートが生成されてもよい。
【0067】
図11は、1つ以上の言語の用語を含む用語集を生成する例示的なフローチャートである。図1を参照して説明されたように、文字列が第1の言語内の第1の非構造化リソースから最初に抽出される。また、このプロセスが1つ以上の付加的言語のために類似のやり方で実行される(ステップ101〜104)。次いで、抽出された文字列の全ての集合が結合されて1つの用語集を形成する(ステップ1101)。
【0068】
上記の実施例において、非構造化データ記憶部が用いられて非構造化リソースから文字列を探索及び抽出する。しかし、他の実施例において、例えば本件特許出願人のウィンドウズのリソースローダにおいて、非構造化データが文字列の挿入のために用いられ得る。例えば、アプリケーション(例えば、本件特許出願人のワード)が言語独立(language independent)に書かれてもよく(後に翻訳されるベース言語を有するよりはむしろ)、次いで、リソースローダは、データ記憶部を用いて要求言語の文字列を正しい位置でリソース中に挿入するのを可能とする。英語を含む言語データが何ら無い非構造化リソースの例は以下のようである。
<p></p><br><p></p>
かかるリソースは、以下のテーブルで示される2つのエレメントを含む非構造化データ記憶部を有してもよい。
【0069】
【表2】
【0070】
このデータ記憶部は、非構造化リソースが何らかの言語特有エレメントも含まないことから、言語独立である。この例では、文字列位置情報は、単一片の情報、リソースの始端に対する文字列の始端位置を含む。各文字列が挿入されるにつれて、残りの文字列の始端オフセットが相応して調整される必要がある点が注記される。例えば、挿入される文字列は、以下のような複数の異なる言語の文字列を含むデータベース中に保持されてもよい。
【0071】
【表3】
【0072】
このリソースをロードする方法は、図12に示されるフローチャートを参照して説明される。非構造化リソース(例えば上記に示した例)がメモリに読み込まれ(ステップ101)、そのリソースのための非構造化データ記憶部がアクセスされる(ステップ102)。エレメント(例えば「ID_1(3)」)がデータ記憶部から読み込まれる(ステップ103)。リソース情報がアクセスされ(ステップ1201)、例えば、これは、特定のアプリケーションのための文字列データベースであってもよく、データ記憶部から読み込まれたその情報を用いて(ステップ103において)、ある文字列(例えばHello)がそのリソース情報から要求された特定言語のために読み込まれる(ステップ1202)。この文字列はリソース中に挿入され(ステップ1203)、その方法はさらなる文字列をリソース中に挿入するために反復される(ステップ103、1201〜1203)。全ての要求された文字列を挿入した後、改定された非構造化リソースは以下のように出力され得る(ステップ1204)。
<p>HeIlo</p><br><p>Monday 13th March</p>
この例では、非構造化リソースは包含された(included)文字列を伴って記述されていてもよいが、これらの文字列は、(例えば、図3に示されるように)、アプリケーションが構築された時に除去されてしまってもよく、これによってより小さいリソースを生成する。この生成されたリソースは、言語独立であって、より少ない記憶スペースしか要求せず、より効率的にロードされ、現地語化が単純である。
【0073】
非言語特有のやり方でリソースを記述して別々のデータベース(又は複数データベース)に文字列を記憶することによって、第三者が現地語化のための付加的リソースを、機密性ある何らかのコードへのアクセスを要求することなく、生成できてもよい。かかるケースにおいて、挿入に先立って、挿入のため識別された文字列を1つ以上のルールに照らして比較することは有益かもしれない(翻訳の方法に関連して上記で説明したように)。これらのルールは、以下に示されるように、データベース内又は非構造化データ記憶部内に含まれてもよい。
【0074】
【表4】
【0075】
あるいは、ルールは別々に格納されてもよい。
【0076】
図13は、説明される何れかの方法を実行するシステム1300のブロック図である。そのシステムは、プロセッサ1301及びメモリ1302を含む。メモリ1302は、要求される一連の命令を保存するのに用いられて、これらの命令がプロセッサによって実行される時に、そのプロセッサをして本発明の方法を実行せしめる。加えて、メモリ1302は文字列などの読み込まれたデータを格納するのに用いられる。
【0077】
上記で提供される全ての実施例は、例示のためだけに、非構造化リソースの非常に単純な例(例えば、XML又はHTMLの単一行)を用いている。記載されている方法が、非常に多くのエレメントを含むデータ記憶部内に結果としてなってしまう、非常に多くの文字列を含む非常に大きい非構造化リソースのために用いられてもよい。例えば、非構造化リソースは、XML、ウェブページ等における大きい文書であってもよい。
【0078】
上記に与えられた実施例において、非構造化リソース内の文字列は処理される。しかし、文字列の使用は例示だけのものであって、説明される方法及びシステムが、文字列、コーディネートセット、サイズ、ホットキー等を含む何らかのタイプのデータ部と共に用いられてもよい。
【0079】
本発明に係る方法が主に非構造化リソースを対象にして説明されたが、本方法はそれらの構造化リソースを構文解析するために使用され得るものであって、その場合では、全体リソース(例えば、長さ制限の無い構造化リソース)に対して不都合な影響を与えることなく文字列編集を可能とする。本発明の方法はテキスト状又は非テキスト状のフォーマットに対して用いられてもよい。
【0080】
上記の実施例において、本発明による方法は、ランタイム時、構築時、プレ・ランタイム時等にあって実行されるものとして説明されている。これらの用語は例示だけのために用いられ、本方法はどの時の使用にとっても適切化可能である。
【0081】
上記では、データ記憶部が識別用識別子及び文字列の位置を識別するものとして説明されたが、データ記憶部は、変形例として、コーディネート、ホットキー、コメント及びその他の如き非構造化リソースの他の態様の位置を識別するのに用いられ得る。
【0082】
当業者は、プログラム命令を格納するのに利用される記憶装置がネットワークにまたがって分散され得ることを理解する。例えば、リモートコンピュータがソフトウェアとして説明されたプロセス例を記憶してもよい。ローカル又はターミナルのコンピュータがリモートコンピュータにアクセスし、プログラムを走らせるソフトウェアの一部又は全部をダウンロードしてもよい。変形例として、ローカルコンピュータは、必要に応じてソフトウェアの部分をダウンロードしてもよいし、又はローカルターミナルにあるソフトウェア及びリモートコンピュータ(又はネットワークコンピュータ)にあるソフトウェア命令を実行してもよい。当業者は、また、当業者にとって周知の従来技術を利用することによって、ソフトウェア命令の全て又は一部が専用回路、例えば、DSP、プログラム可能ゲートアレイ等によって実行されてもよいことを理解する。
【0083】
用語「コンピュータ」は、本明細書において、命令を実行することができるような処理能力を備える何らかの装置を意味するものとして用いられている。当業者は、かかる処理能力が多くの異なる装置に組み込まれることを理解し、従って、用語「コンピュータ」はPC、サーバー、携帯電話、パーソナル携帯情報機器及び多くの他の装置を含む。
【0084】
本明細書において与えられる何らかの範囲又は装置の値は、当業者にとって明らかであるように、求められる効果を失うことなく拡張又は変更され得る。
【0085】
本明細書において記載されている方法のステップは、何らかの適切な順序で又は同時に実行されてもよい。フローチャートに示される戻りループは、例示だけのものであって、異なるステップで始まってもよいし、及び/又は終わってもよい。
【0086】
上記の好ましい実施例の詳細な説明は、例示だけのものであって、その様々な変形態様が当業者によってなされてもよいことが理解される。
【図面の簡単な説明】
【0087】
【図1】非構造化リソースを構文解析する方法の例を示すフローチャートである。
【図2】非構造化データの記憶部の概略図である。
【図3】データ記憶部の生成を示す概略図である。
【図4】非構造化データの記憶部の第2の概略図である。
【図5】非構造化リソースを翻訳する方法の例を示すフローチャートである。
【図6】現地語化システムの概略図である。
【図7】非構造化リソースの現地語化システムの概略図である。
【図8】非構造化リソースを翻訳する第2の方法の例を示すフローチャートである。
【図9】非構造化リソース内の文字列を編集する方法の例を示すフローチャートである。
【図10】リソースをチェックする方法の例を示すフローチャートである。
【図11】1つ以上の言語における用語を含む用語集を生成する方法の例を示すフローチャートである。
【図12】リソースをロードする方法の例を示すフローチャートである。
【図13】説明された方法の何れかを実行するシステムの概略図である。
【技術分野】
【0001】
本発明は、非構造化リソースの構文解析方法に関する。
【背景技術】
【0002】
アプリケーション及びオペレーティングシステムなどのソフトウェア製品はしばしば多くの異なる言語版にて提供される。ソフトウェア製品における初期言語から他言語への変換は「現地語化(ローカライゼーション)」技術として知られている。通常、現地語化は、当該製品のユーザインタフェース(UI)内の全ての文字列エレメントや他の何らかの言語特定パーツ(例えば、ホットキー、コーディネート、サイズ)を翻訳して当該製品を再構築し、その言語特有のバージョンを生産することによってなされる。この現地語化製品は大規模なテストを顧客出荷前に必要とする。これには多大な費用がかかり、現地語化バージョンのソフトウェアの発売遅延をもたらす。
【0003】
異なる現地語化方法が開発されているが、そこではランタイム時に現地語化がなされる。この方法では、ベース製品(例えば、オリジナルな英語版)がロードされ、翻訳化リソースがリソースインターセプタによって挿入され、リソースインターセプタは言語特有の用語集ファイルからそれらを得る。これはアプリケーションが気づかない方法でなされる。この方法は、アプリケーションの全てを翻訳しなくてもよく、組み込み試験の必要性を除去することから、ソフトウェア製品のローカライゼーション技術において強力な省力化及び低廉化をもたらす。この方法はまた、サードパーティがソフト製品用途における新しい言語用語集(glossary)の作成を可能とし、多くの追加言語版への現地語化を可能としている。
【0004】
【特許文献1】米国特許出願公開第2006/0150173号明細書
【特許文献2】米国特許出願公開第2006/0116864号明細書
【発明の開示】
【発明が解決しようとする課題】
【0005】
リソースインターセプタがアプリケーション内のリソースを翻訳可能とするには、リソースインターセプタがリソース内で翻訳可能な文字列を識別できなければならない。これは、WIN32ダイアログボックス又はWIN32文字列テーブルなどの構造化リソースにとっては些細なことであって、それらが(例えば標準によって)定義された構造を有するから、様々なリソースを見つけてそれらを修正/置換することは簡単である。しかし、全てのリソースが構造化されているわけではない。非構造化(又はストリーム)リソースは、所定の構造を有さず且つファイル又はストリーム内に格納されていないテキスト状のリソースである。通常、この種のリソースは、本件特許出願人のノートパッド(Notepad)などのテキスト編集プログラムを用いて目視及び編集可能である。非構造化リソースの例は、(文字列、タグ及び他の書式用文字から成る)HTMLファイル、JavaScript、INIファイル、レジストリファイル、CSS(Cascading Style Sheets)及びXMLファイルを含む。これらの非構造化リソースを記述するのに用いられる非常に多くのスキーマがあり、正しいスキーマの知識が非構造化リソース内の翻訳可能な文字列を識別するのに要求される。特定のリソースタイプの範囲内でさえ、文字列及びその他の現地語化データ(例えば、ホットキー、サイズ及びコーディネート)が識別されるようにするには、多くの異なる方法があり、例えば以下のようである。
【0006】
第1のHTMLサンプル:<P ID=HelIo>Hello</P> .
第2のHTMLサンプル:<P><!− ID=ID_Hello-->Hello<!− end--></P>
第1のJavaScriptサンプル:document.write(“Hello”)
第2のJavaScriptサンプル:L_Hello_Message = (“Hello”)
document. write(L_Hello_Message)
【0007】
これらの各例において、リソースローダが翻訳可能文字列「Hello」を識別できるようにするには、翻訳可能文字列を各例において識別する方法をリソースローダが実際に知っていなければならない。定義された構造が無いことから、リソースローダがあり得る全てのスキーマ、フォーマット、外部構成データ及びルールを知ることはそれらが無限の数あるが故に実現性がない。リソースローダが特定スキーマ、フォーマット及び特定状況において使用されるルールを知っていた場合であっても構文解析はなお遅く、多くのアプリケーションにおいて(例えば、実行中のアプリケーションにおいてリソースロードの間に実行される場合)容認できるものではない。更に、ファイルサイズを最適化してアプリケーションロードをより効率化可能とするファイル(例えばHTMLファイル)が構築可能とするためには、識別子情報(上記2つのHTML例における「ID=HeIIo」と「<!− ID=ID_Hello-->...<!−end-->」)は除去されたかもしれない。代替的には(又は付加して)、識別子情報が機密性の理由で除去されるかもしれなく(例えば、ファイルの注釈が機密性を有する場合がある)、又は有効ファイル構造が作成されるかもしれない(例えば、フラグが除去されるまでHTMLが無効である場合がある)。これらの場合において、非構造化リソースは翻訳可能なリソースを識別する情報を何ら含んではいない場合があり、例えば以下のようである。
【0008】
第3のHTMLサンプル:<P>Hello</P>
これは、リソースローダが非構造化リソース内の文字列を識別することは不可能であることを意味する。
【0009】
非構造化リソース内で文字列の場所を識別することに加えて、他のデータに照らす(例えば用語集の翻訳と照らす)クロスリファレンスにおける使用のために文字列毎に独自の識別子を決定する必要がある場合もある。
【0010】
本発明の目的は、周知の構文解析方法おける課題を解決すると共に改良された解析ツールを提供する非構造化リソース解析方法を提供することである。
【課題を解決するための手段】
【0011】
以下の記載では、読者に基本的理解を与えるために,本開示の簡略化された概要を提供する。この概要は、本開示の完全な概観ではなく、本発明の要所/重要要素を識別するか又は本発明の範囲の輪郭を示すものでもない。その唯一の目的は、後述する詳細な説明の前置きとして、本明細書において開示される幾つかの概念を単純化された形式で示すものである。
【0012】
1つ以上のデータ部を含む非構造化リソースを処理するシステム及び方法が記載されている。その方法は、非構造化リソースをメモリに読み込むステップと、非構造化リソースに関連するデータ構造にアクセスするステップと、を含む。このデータ構造は、幾つかのエレメントを含み、各エレメントは非構造化リソース内のデータ部の位置情報を含む。この位置情報を用いることによってデータ部が探索されて非構造化リソースから処理され、次いで、探索及び処理をなすステップはデータ構造のエレメント毎に繰り返される。
【0013】
本実施例は非構造化リソースを処理する方法を提供する。該方法は、1つ以上のデータ部を含む非構造化リソースを読み込むステップと、前記非構造化リソースに関連するデータ構造にアクセスするステップであって、前記データ構造は1つ以上のエレメントを含み、各エレメントはデータ部に関連すると共に当該データ部の位置情報を含むステップと、第1のエレメントを前記データ構造からメモリ内に読み込むステップであって、前記第1のエレメントは第1のデータ部の位置情報を含むステップと、前記第1のデータ部を、前記第1のデータ部の位置情報を用いて、前記非構造化リソース内で探索するステップと、前記第1のデータ部を処理するステップと、を含み、前記エレメントを読み込むステップ、前記データ部を探索するステップ及び前記データ部を処理するステップとを、前記データ構造における1つ以上のエレメント毎に繰り返すことを特徴とする。
【0014】
利点としては、これはより速く且つより効率的な方法であり、メモリ使用がより少なくて済む。利点としては、その方法は、文字列などのデータ部を、それが書かれた手法からは独立して、連続して処理され、編集又は翻訳される。ある状況において、この方法はデータ構造の使用なしには出来なかった非構造化リソースの処理を可能にする。
【0015】
好ましくは、この方法は更に、置換データ部の記憶部にアクセスするステップを含み、上記第1のデータ部を処理するステップは、第1の置換データ部を置換データ部の記憶部から第1のエレメントに基づいて選択するステップと、第1の置換データ部を非構造化リソース中に第1のデータ部の代わりに挿入するステップとを含むことを特徴とする。
【0016】
利点としては、この方法は、第1の言語での使用に適切なデータ部を、第2の言語での使用に適切なデータ部で置き換えることによるリソースの現地語化に用いられ得る。
【0017】
好ましくは、非構造化リソースをメモリに読み込むステップは、非構造化リソースをある場所からメモリに読み込むステップを含み、更に、修正された非構造化リソースをその場所に出力するステップを含む。
【0018】
好ましくは、この方法は更に、選択ステップに続いて、置換文字列が所定の判定基準を充足するか否かをチェックするステップと、もし充足していない場合に挿入ステップを省略するステップとを含む。もし置換データ部(例えば文字列)が問題を起こすと判定された場合に、それは挿入されず元のデータ部がそのリソース中に残される。
【0019】
利点としては、この方法は、置換データ部(例えば置換文字列)がチェックされるのを可能とすることで、挿入されてユーザインタフェースにおいて表示されたときに問題を起こすことがないようにする。
【0020】
好ましくは、所定の判定基準は、データ部長の基準、有効文字の基準又は所定のリソースリストを含む。
【0021】
利点としては、この方法は、文字列などの置換データ部が、例えば、表示されたときにトランケート(truncate)されるか否か、置換文字列が正しい長さであるか否か、置換文字列が無効な文字を有するか否か、又は置換文字列がアプリケーション機能を損なうか若しくは機密性問題を導くように何らかの文字を含むか否か、などの判定のチェックがなされるのを可能とする。所定のリソースリストの使用は、データ部の変更有無の制御を可能とする点で好都合である。
【0022】
好ましくは、この方法は更に、所定の判定基準を非構造化リソース、データ構造又は置換データ部の記憶部からメモリに読み込むステップを含む。
【0023】
好ましくは、この方法は更に、非構造化リソースをメモリに読み込むのに先立って、アプリケーションをロードするステップと、アプリケーションに要求される言語をチェックするステップと、を含み、ここで非構造化リソースはアプリケーションに関連し、該方法は更に、修正された非構造化リソースをアプリケーションに受け渡すステップを含む。
【0024】
利点としては、これは、リソースの翻訳又は変換などのリソース処理をアプリケーションがロードされる時点で行われるのを可能とする。
【0025】
好ましくは、この方法は更に、置換データ部の記憶部にアクセスするのに先立って、アプリケーションに要求される言語に基づいて置換データ部の記憶部を識別するステップを含む。
【0026】
好ましくは、置換データ部の記憶部は、1つ以上の言語のために翻訳されたデータ部のデータベースと辞書データベースとのうちの1つを含む。
【0027】
データ部は、文字列、ホットキー、コーディネートセット(coordinate set)、現地語化可能又は修正可能なデータのサイズ又は部分を含んでもよい。
【0028】
他の実施例において、この方法は、ルールデータベースにアクセスするステップを含み、第1のデータ部を処理するステップは、第1のデータ部をルールデータベースに従って修正して第1の修正化データ部を生成するステップと、第1の修正化データ部を非構造化リソースに第1のデータ部の代わりに挿入するステップとを含む。
【0029】
好ましくは、データ部は、文字列と、長さルール、許可文字ルール、許可ワードルール、禁止ワードルール、文法ルール及びスペルルールのうちの1つ以上を含むルールデータベースとを含む。
【0030】
他の実施例において、非構造化リソース内の各データ部は、第1の言語の文字列を含み、第1のデータ部を処理するステップは、第1のデータ部を抽出するステップを含み、この方法は更に、第2の非構造化リソースをメモリに読み込むステップであって、第2の非構造化リソースは1つ以上のデータ部を含み、第2の非構造化リソースの各データ部は第2の言語の文字列を含むステップと、第2の非構造化リソースに関連する第2のデータ構造にアクセスするステップであって、第2のデータ構造は1つ以上のエレメントを含み、各エレメントは、第2の非構造化リソース内のデータ部に関連すると共に当該データ部の位置情報を含むステップと、第1のエレメントを第2のデータ構造からメモリに読み込むステップであって、第1のエレメントは第2の非構造化リソース内の第1のデータ部の位置情報を含むステップと、第1のデータ部を第2の非構造化リソースから第2の非構造化リソース内の第1のデータ部の位置情報を用いて抽出するステップと、を含み、第2のデータ構造内の1つ以上のエレメント毎に読み込みのステップ及び抽出のステップを繰り返すステップと、抽出された全てのデータ部を両方の非構造化リソースから出力するステップを含む。
【0031】
利点としては、これは多数の言語の用語集の自動生成を可能とする。
【0032】
好ましくは、非構造化リソースは、JavaScript、CSS(Cascading Style Sheets)、INIファイル、レジストリファイル、HTMLファイル及びXMLファイルのうちの1つを含む。変形例として、非構造化リソースは、現地語化可能な又は修正化可能な文字列又はデータを含み得る何らかのテキストフォーマットを含んでもよい。
【0033】
好ましくは、各エレメントは更にデータ部識別子を含む。
【0034】
好ましくは、位置情報は、データ部始端位置、データ部長さインジケータ及びデータ部末端位置のうちの少なくとも1つを含む。
【0035】
好ましくは、データ構造はコード化情報(例えばユニコード、ANSI、その他)を更に含む。
【0036】
第1のデータ部を処理するステップは、文字列などのデータエレメントを挿入するステップを含んでもよい。
【0037】
他の実施例は、非構造化リソースを処理する方法を提供する。この方法は、非構造化リソースをメモリに読み込むステップであって、非構造化リソースは1つ以上のデータ部の場所を含むステップと、非構造化リソースに関連するデータ構造にアクセスするステップであって、データ構造は、1つ以上のエレメントから成り、各エレメントはデータ部と関連すると共に当該データ部の位置情報を含むステップと、第1のエレメントをデータ構造からメモリに読み込むステップであって、第1のエレメントは第1のデータ部の位置情報を含むステップと、第1のデータ部を第1のデータ部の位置情報を用いて挿入するステップと、データ構造内の1つ以上のエレメント毎に、読み込みのステップ及び挿入のステップを繰り返すステップを含む。
【0038】
利点としては、これは非言語特有手法で書かれたリソースを現地語化する単純な方法を提供し、これによって、そのリソースは英語の文字列又はデータさえ含まない。そのリソースはサイズにおいて小さく低減されたメモリスペースしか必要とせず、迅速且つ効率的にロードされ得る。更に、これは翻訳(例えば文字列の記憶部)が第三者によって提供されるのを可能とする。
【0039】
他の実施例は、コンピュータプログラムを提供し、これがコンピュータ上で実行されるときには、本発明の方法の何らかの全てのステップが実行されるように適合されたコンピュータプログラムコード手段を含む。
【0040】
好ましくは、コンピュータプログラムはコンピュータ読み取り可能な記録媒体上に実現される。
【0041】
更なる実施例はシステムを提供し、そのシステムは、プロセッサと、プロセッサに結合されてこれによって読取可能なメモリであり、プロセッサによって実行されたときにプロセッサをして処理手順を実行せしめる一連の命令を含むメモリとを含む。前記処理手順は、非構造化リソースをメモリに読み込むステップであって、非構造化リソースは1つ以上のデータ部を含むステップと、非構造化リソースに関連するデータ構造にアクセスするステップであって、データ構造は1つ以上のエレメントを含み、各エレメントはデータ部に関連し、関連するデータ部の位置情報を含むステップと、第1のエレメントをデータ構造からメモリに読み込むステップであって、第1のエレメントは第1のデータ部の位置情報を含むステップと、第1のデータ部を非構造化リソース内で第1のデータ部の位置情報を用いて探索するステップと、第1のデータ部を処理するステップと、を含み、データ構造の1つ以上のエレメント毎に、読込、探索及び処理の各ステップを繰り返すことを特徴とする。
【0042】
本明細書で説明される方法は、記憶媒体上のマシン読取可能形式のソフトウェアによって実行される。ソフトウェアは、並列プロセッサ又は順列プロセッサ上の実行に適するものであってその方法ステップが何らかの適切な順番に又は同時に実行され得る。
【0043】
これは、ソフトウェアが価値あって別々に取引可能な商品であり得ることを示す。「ダム(dumb)」すなわち標準のハードウェア上を走る又は制御して所望の機能を実現するソフトウェアを含むことが意図される。また、HDL(ハードウェア記述言語)ソフトウェアなどのハードウェア構成を「記述する」すなわち定義し、シリコンチップを設計するのに用いられ、又は汎用プログラマブルチップを設計するなどして、所望の機能を実現するソフトウェアを含むことが意図される。
【0044】
本発明の付随する多くの特徴は、以下の詳細な説明を添付の図面と共に参照することによってより良く理解される。また、本説明は、添付の図面と照らし合わせて以下の詳細な説明を読むことによってより良く理解される。なお、これら図面における同様の参照符号は同様の部分を示すように用いられている。
【発明を実施するための最良の形態】
【0045】
添付の図面と共に下記に提供される詳細な説明は本実施例の説明として意図されるものであって、本実施例が構築され得る又は用いられ得る唯一の形態を示すものとは意図されない。この説明は、実施例の機能を記載すると共に実施例を構築し動作せしめるステップのシーケンスを記載する。しかし、同一又は等価な機能及びシーケンスが異なる実施例によって達成されてもよい。
【0046】
図1は、非構造化リソースを構文解析する方法の実施例のフローチャートである。用語「構文解析」とは、本明細書においてストリーム(例えばデータのセンテンス又は部分)をその構成部分に分解することを意味するものとして用いられる。構文解析の例としては、本をチャプタ、パラグラフ、センテンス又はワードに分解する、電話帳を名前、アドレス及び番号に分解する、或いは売上高を分野に分解する等の例がある。この方法は、図2を参照して説明され、図2は非構造化データ記憶部(store)200と称されるデータ構造を示し、以下を含むXMLファイルを含む非構造化リソースの単純な例を示している。
<P>Hello</P>
非構造化リソースは、メモリに読み込まれ(ステップ101)、非構造化リソースに関連する非構造化データ記憶部200がアクセスされる(ステップ102)。非構造化データ記憶部200は、非構造化リソースの分析を、当該リソースが元々どのようにして記述され解析され又は現地語化されたかに関わりなく実行するのに用いられ得るデータを提供する。示される実施例において、非構造化データ記憶部200は、リソース内容(例えば、ウィンドウズ1252、ユニコード又はUTF−7)に用いられる文字のコードページ(Code Page)を詳述するコード化用情報201を含む。データ記憶部は、また、非構造化リソース内に各々が含まれる文字列に関する情報を提供する1つ以上のエレメント202を含む。示される実施例において、このエレメントは、リソース識別子としても参照される文字列識別子202a(例えば、「ID_Hello」)を含み、これはルール又は翻訳用語集等とのクロスリファレンスのために用いられてもよい。このエレメントは、また、文字列位置情報、例えば、文字列の始端位置202b及び文字列の長さ202cを含む。示される実施例において、始端位置は、リソースファイルの始めから文字列内の最初の文字の始めの位置のオフセットであり、長さは文字列内に含まれる文字の数である。エレメント202が非構造化データ記憶部200からメモリに読み込まれる(ステップ103)、次いで、このエレメントからの位置情報が用いられて非構造化リソースから文字列が探索されて抽出される(ステップ104)。図2に示される例示のデータ記憶部200は1つのエレメント202を含むだけであるが、そこにおいて、データ記憶部が1つ以上のエレメントを含み、エレメントを読み込んで文字列を抽出するステップが繰り返され(ステップ103及び104)、付加的な文字列が非構造化リソースから抽出されてもよい。
【0047】
文字列を抽出したなら(ステップ104)、その文字列は格納されてもよいし及び/又は更なる処理がなされてもよく、付加的処理ステップが以下に詳細に説明される。
【0048】
図2に示されたデータ記憶部200は、例示だけのものであって、他の例において記憶部は異なる情報を含んでもよい。1つの実施例において、文字列識別子がデータ記憶部内に含まれなくてもよく、他の実施例において、文字列の位置情報が異なるフォーマット(例えば、始端位置及び終端位置、詰めた(just)始端位置等)で提供されてもよい。更なる実施例において、コード化用情報201はデータ記憶部内に含まれていなくてもよい。データ記憶部200は、言語特有なものであって元の文字列ストリームに依存する。しかし、かかるデータ記憶部がニュートラル言語(language neutral)であることから、以下に説明されるように、何らかの言語データを非構造化リソース内に出したままにしておくことも可能である。
【0049】
データ記憶部200などの、情報が周知のフォーマットに格納されるデータ記憶部を用いることによって、何らかの非構造化リソースを構文解析することが、リソースを構築する際に用いられたスキーマ、ルール等の何らかの知識も必要とすること無く、非常に容易になる。これは、単純な非構造化リソースの構文解析器及び非構造化リソースの効率的解析手法を与える。更に、データ記憶部は大きいメモリを要求せず、例えば、タイトルを備える4つのエレメント記憶部に対して113バイト(=3+(5×22))だけが要求される。
【0050】
データ記憶部は、非構造化リソースの構文解析においてアクセス可能な如何なる場所に格納されてもよく、データ記憶部は、例えば、非構造化リソース内に、オリジナルなリソースの傍ら(例えば、ダイナミックリンクライブラリ(DLL)内)に、サーバー上に、インターネット上に、データベース上に、XMLファイルすなわちWebサービスによって提供されるデータ記憶部の如き場所に格納されてもよい。
【0051】
非構造化データ記憶部200は、幾つかのやり方のうちの1つによって作られてもよい。それは、好ましくは、特定のリソースを作成するのに用いられる構造、スキーマ及びルールを知見及び理解する誰か/何かによって作成されてもよく、この情報及び何らかの要求されるフラグがなお利用可能な何時において作られてもよい。例えば、それは当該リソースを書いた人/組織によるリソース出荷前に作られてもよい。それは、時間を労し且つ間違い易いとしても、人手によって作られてもよい。他の実施例において、構文解析用符号及び構文解析用ルールを用いてデータを取得して記述する自動化ルールによって作られてもよい。データ記憶部の作成を示しているブロック図が図3に示される。
【0052】
コメント付き又は識別可能データ301を備える非構造化リソースが構文解析ルール302を用いてリソースを構文解析する構文解析器300へ入力される。構文解析ルール302は構文解析器へ入力されてもよく、又は変形例として構文解析器は特定のリソースタイプに専用であってもよく、従ってその中に固有のルールを有してもよい。構文解析器300は、ルール情報を使用して、リソース内の文字列の幾つか又は全てを識別し、識別された各文字列毎のエレメントを含む(図3に示される如き)非構造化リソースデータ記憶部303を出力する。構文解析器300は、加えてコメント付きデータを伴わない非構造化リソース304の編集されたバージョンを出力してもよい。
【0053】
1つの実施例において、非構造化リソース301は以下を含むXMLファイルであってもよい。
<para its:translate=“yes”>Hello</para>
構文解析ルール302は、「www.w3.org/TR/its」に説明されているように、XML国際タグセット(XML International Tag Set(ITS))ルールを含んでもよい。この実施例では、非構造化リソースは構文解析によって変更されなくてもよく(すなわちコメント付きデータを伴わない非構造化リソース304)、非構造化データ記憶部400が、図4に示すように、ファイルの始めからの27文字の始端位置401と、5文字の文字列長402を含む文字列位置情報を備えてもよい。第2の実施例において、非構造化リソース301は以下のようなHTMLファイルであってもよい。
<P><!−ID=lD_Hello-->Hello<!−end--></P>
構文解析用ルールは、HTML内のコメントが解析されてどの部分が抽出されるかを判定できるように定義してもよく、コメント付きデータを伴わないで出力される非構造化リソース304は以下のようである。
<P>Hello<P>
この出力されるリソースはオリジナルなリソースより小さく、使用メモリ量を減らし、より効率的にロードされ得るリソースを生成する。この実施例において、結果として得られる非構造化データ記憶部303が図3に示される。
【0054】
図3に示される構文解析器300は、多数の周知の構文解析器のうちの1つであってもよく、各構文解析器が1つ以上のスキーマ(例えば、上記説明の段落における第1の例のHTML構文解析器及び第2の例のXML構文解析器)に専用のものである。構文解析ルールは、スキーマに関する情報に加えて又は代わりに外部情報を含むことによって、データ記憶部(例えば、<b>及び</b>マーカー間の全ての情報又はヘッダ内の全てテキストが識別されるべき情報であると指定する情報)の生成を可能としてもよい。ルール及び外部情報の組合せは、リソース内のどの文字列がデータ記憶部内で識別されるべきかを実際に開発者に指示することを可能とする。他の実施例において、外部構成データが構文解析ルールの代わりに又は加えて使用されてもよい。
【0055】
図5は、非構造化リソースを翻訳する、例えば、英語(ベース言語)から仏語(要求される言語)に翻訳する方法の例示的なフローチャートである。このフローチャートは、図1に示されたものの変形されたバージョンであって、以下に示すXMLファイルを含む非構造化リソースの単純な同一例を参照して説明され得る。
<P>Hello</P>
非構造化リソースがメモリに読み込まれ(ステップ101)、非構造化リソースに関連する(例えば図2に示される如き)非構造化データ記憶部がアクセスされる(ステップ102)。エレメントが非構造化データ記憶部からメモリに読み込まれ(ステップ103)、次いで、このエレメントからの位置情報が用いられて非構造化リソースから文字列が探索及び抽出される(ステップ104の例えば「Hello」)。要求される言語の用語集が(この実施例ではステップ501の仏語)アクセスされ、文字列の翻訳が用語集からメモリに読み込まれる(ステップ502)。文字列識別子(例えば「ID_Hello」)は、抽出された文字列に関して用語集内のどの翻訳が問題となるかを識別するのに、例えば以下のテーブルに示されるように用いられてもよい。
【0056】
【表1】
【0057】
他の実施例において、文字列自身(例えばHello)が代わりに用いられて、使用されるべき用語集から翻訳を識別してもよい。用語集は、MUI DLL(複数言語ユーザインタフェースダイナミックリンクライブラリ)ファイル、データベース及びウェブサービス等を含む。次いで、文字列(この例では「Bonjour」)の翻訳が抽出された文字列の代わりとしてリソースに挿入され(ステップ503)、次いで、結果的に得られた翻訳化リソースが以下のように出力される(ステップ504)。
<P>Bonjour</P>
リソースが翻訳のための1つ以上の文字列を含む場合、データ記憶部は1つ以上のエレメントを含み、方法ステップ(例えば、ステップ103、104、501〜503)がエレメント毎に繰り返されてもよい。図5に示されるように、各文字列の翻訳が翻訳された文字列の挿入前にロードされてもよく(ステップ502からステップ103への戻りループ)、しかし他の実施例では、ステップ群が他の順序で反復されてもよく、例えば、翻訳された文字列が1つずつ挿入されてもよく(例えば、ステップ503からステップ103への戻りループ)、又は全ての文字列が翻訳に先立って抽出されてもよい(ステップ104からステップ103への戻りループ及びステップ503からステップ502への戻りループ)。
【0058】
ある実施例において、抽出された文字列の識別された翻訳を、それを挿入するのに先立って(すなわち1つ以上のルール又は判定基準に照合するステップ503に先立って)チェックすることは有益かもしれない。これは、用語集が第三者によって生成される場合、そして現地語化されているアプリケーションのUI内に収容され得る文字列長に制限がある場合には、特に有益かもしれない。かかる実施例において、(ステップ502においてロードされた如き)抽出された文字列の識別された翻訳のチェックが1組の翻訳ルールに照らして実行されてもよく、そのルールはデータ記憶部の一部として格納されてもよいし、非構造化リソースの一部として、又は他の場所に格納されてもよい。例えば、ルールは新規な文字列は25文字の最大文字列長を有すると記述してもよい。最小文字列長ルールも適用されてもよい(例えば、2文字の最小長)。このチェック段階は、また、翻訳された文字列の他の態様(例えば、正して言語、無効文字がない、htmlタグ付け(tagging)がない等)がチェックされてもよい。
【0059】
上記に説明された翻訳方法は、ランタイム時(run-time)(例えばアプリケーションがユーザによって起動される時)に実行されても、又は、例えば後に顧客に出荷される現地語化製品の生成プロセスの一部としてこれに先だって実行されてもよい。その方法がランタイム時に実行される場合、その方法は図6で示されるリソースローダ602によって実行されてもよい。アプリケーション601がコンピュータのオペレーティングシステムにロードされたとき、コールはリソースローダモジュール602に向けてなされる。リソースローダモジュール602は、どの言語がアプリケーション601によって呼び出されるかについて知るためにチェックを行い、次いで、適切なMUI DLL603がアクセスされ(ステップ501)、これから適切な翻訳が識別されてロードされ得る(ステップ502)。その翻訳は、次いで挿入され(ステップ503)、翻訳化リソースがアプリケーション601へ出力される(ステップ504)のを可能とする。
【0060】
非構造化リソースを翻訳する第2の方法は、非構造化リソースの現地語化システム700のブロック図を示す図7及び翻訳方法実施例のフローチャートを示す図8を参照して説明され得る。この方法は安全且つ機密性あるリソース編集を可能とする技術を用いるものであり、例えば、「アプリケーション現地語化のための安全且つ機密性あるリソース編集」と題する2004年12月1日付け米国特許出願第11/002,773号(特許文献1)と、「翻訳化リソースのためのアプリケーションユーザインタフェースの自動化調整を備えるアプリケーション現地語化のための安全且つ機密性あるリソース編集」と題する2005年1月24日付け仮出願第11/042,470号(特許文献2)との2つの米国特許出願に説明される技術を用いる。
【0061】
例えば、本件特許出願人のウィンドウズ(登録商標)又はオフィスの如きアプリケーション701がロードされるとき(ステップ801)、コールはリソースローダモジュール702に対してなされる(ステップ802)。リソースローダモジュール702は、どの言語がアプリケーション701(ステップ803)によってコールされるかをチェックして、適正な言語フォルダへ行く。このフォルダから、リソースローダモジュール702はコールされたリソースを例えばMUI DLL703から検索する(ステップ804)。この段階で、そのコールは、現地語化モジュール704の1部分を形成するコールインタセプトモジュール705によってインタセプトされる(ステップ805)。リソースロード用ファンクションをインタセプトするのに用いられ得る多くの周知の方法があり、例えば、メモリ内でファンクション自身の開始点を、例えば他のファンクションへのジャンプ(迂回する(detouring)の如き周知技術)で上書きする。
【0062】
コールをインタセプトして、現地語化モジュール704はリソースをロードする(ステップ806)。文字列及び他の現地語化データをそれらのリソース識別子と一緒に探索するために、非構造化データ記憶部がデータ記憶部インタフェース708によってアクセスされる(ステップ807)。リソース再構築モジュール709と一緒のデータ記憶部インタフェース708が言語パックロードモジュール706の部分を形成する。この非構造化データ記憶部は、現地語化モジュールに、どの文字列が翻訳可能かについて示すが、それは文字列全てを翻訳することが可能でなくてもよい。言語パックロードモジュール706は、データ記憶部から何らかのエレメントを読み込んで(ステップ808)、どれが実際に修正され得るかを識別するリソースリストに照らして文字列が翻訳可能か否かを確認することによるチェックを行う(ステップ809)。このリソースリストは、修正され得ない又はインタフェースを備え得ないやり方、例えば、コード署名化DLLの如きやり方で記憶される(それは機密性ウェブサービス又はデータベースを介して提供されてもよいのではあるが)。リソースリストは、文字列識別子の手段(又は他の手段)によって、ランタイム時翻訳が許されるそれらの文字列を識別する。リストは、また、文字列の翻訳が格納されている場所に関する情報を提供してもよい。文字列が翻訳可能であると確認された場合、エレメントが文字列をリソースから抽出するのに用いられる(ステップ810)。要求言語のための翻訳を含む用語集707がアクセスされ(ステップ811)、文字列の翻訳がリソース再構築モジュール709によってロードされる(ステップ812)。翻訳された文字列は制限/又はルールに照らしてチェックされる(ステップ813)。これらの制限/ルールは、リソース毎にコード署名化DLLに保存されてもよく、構文解析及び検証をなすのに非常に迅速なフォーマットに格納されてもよい(それはリソースリストの部分又は他の所であり得る)。翻訳された文字列が制限/ルールに違反した場合、それは使われず、代わりにその文字列がオリジナルな言語に戻される。リソース内の全ての文字列を翻訳した後(ステップ808〜813を反復することによって)、リソース再構築モジュール709は、制限をパスした翻訳と制限に違反したオリジナルな文字列とを用いてリソースを再構築し(ステップ814)、この再構築されたリソースは、次いで、アプリケーション701にリソースローダ702を介して戻される(ステップ815)。先に説明したように、フローチャートに示された戻りループ(ステップ813からステップ809への)は例示のやり方で示されたものであって、反復プロセスは他のやり方で実行されてもよい。
【0063】
上記に説明され且つ図8に示された実施例において、リソースリストが用いられて、どの文字列が翻訳可能であるか及びそうでないかが(例えば、ランタイム時に)画定される。これは、代わりに、データ構造内で翻訳され得るそれら文字列を識別するだけで実施されてもよい。他の実施例において、文字列単位よりはむしろリソース単位に翻訳可能文字列を識別するリストがアクセスされてもよい。かかるリストは、翻訳可能な文字列を含むそれらのリソース、又は変形例として翻訳不可能な文字列も含まないリソースを識別してもよい。
【0064】
上記に説明した実施例において、非構造化リソースを構文解析する方法が用いられてリソースの翻訳を可能とする。しかし、これは本発明の方法の唯一の応用ではなく、抽出された文字列が何らかのやり方で用いられてもよく、制限するものではないが、図9−11を参照して以下に説明されるように、文字列のリストを生成する、用語集を生成する、並びに文字列を編集若しくはチェックするのに用いられてもよい。更に、文字列は抽出される必要はないが、代わりにデータ構造を用いて探索されてもよく、そしてその文字列が何らかのやり方で処理されてもよい。処理の実施例では、これに限定されるものではないが、読み込むステップと、(例えばメモリに)コピーするステップと、修正するステップと、置換するステップと、挿入するステップと、抽出するステップとを含む。その処理は、1つ以上のステップを伴ってもよく、例えば、読み込んで修正するステップ、又は読み込んで置換するステップを伴ってもよい。
【0065】
図9は、非構造化リソース内の文字列を編集する方法の例示的なフローチャートである。文字列は、図1を参照して上述されたように抽出され、次いで、抽出された文字列は編集のためにユーザに提示される(ステップ901)。一旦修正された文字列が入力されると、修正された文字列はリソース中に挿入され(ステップ902)、修正されたリソースはメモリに保存し、かつ/又はユーザに表示することによって出力される(ステップ903)。
【0066】
図10は、リソースをチェックする方法の例示的なフローチャートであり、例えば、非構造化リソース内の文字列のスペル又は文法をチェックする方法を示している。文字列は、図1を参照して上述されたように抽出され、次いで、各々の抽出された文字列はルールに照らしてチェックされる(ステップ1001)。これらのルールは、辞書及び/または文法ルールを含んでもよい。他の実施例において、これらのルールが機能上のルール、例えば最大長又は最小長の如きルールを含んでもよい(例えば先に説明したように)。要求された場合、文字列はこれらのルールの結果として自動的に修正され(ステップ1002)、又は文字列と提案選択肢とが1つを選択するにようにユーザに提示されてもよい。修正された文字列が次いでリソースに挿入され(ステップ902)、修正されたリソースが出力され得る(ステップ903)。この方法は文字列の何らかの態様をチェックするために用いられてもよく、スペル及び文法のチェックに限られない。例えば、文字列が、不適当なワード又はフレーズに対して、又は特定のキーワード、文字等に対してチェックされてもよい。他の実施例において、何ら修正がなされずレポートが生成されてもよい。
【0067】
図11は、1つ以上の言語の用語を含む用語集を生成する例示的なフローチャートである。図1を参照して説明されたように、文字列が第1の言語内の第1の非構造化リソースから最初に抽出される。また、このプロセスが1つ以上の付加的言語のために類似のやり方で実行される(ステップ101〜104)。次いで、抽出された文字列の全ての集合が結合されて1つの用語集を形成する(ステップ1101)。
【0068】
上記の実施例において、非構造化データ記憶部が用いられて非構造化リソースから文字列を探索及び抽出する。しかし、他の実施例において、例えば本件特許出願人のウィンドウズのリソースローダにおいて、非構造化データが文字列の挿入のために用いられ得る。例えば、アプリケーション(例えば、本件特許出願人のワード)が言語独立(language independent)に書かれてもよく(後に翻訳されるベース言語を有するよりはむしろ)、次いで、リソースローダは、データ記憶部を用いて要求言語の文字列を正しい位置でリソース中に挿入するのを可能とする。英語を含む言語データが何ら無い非構造化リソースの例は以下のようである。
<p></p><br><p></p>
かかるリソースは、以下のテーブルで示される2つのエレメントを含む非構造化データ記憶部を有してもよい。
【0069】
【表2】
【0070】
このデータ記憶部は、非構造化リソースが何らかの言語特有エレメントも含まないことから、言語独立である。この例では、文字列位置情報は、単一片の情報、リソースの始端に対する文字列の始端位置を含む。各文字列が挿入されるにつれて、残りの文字列の始端オフセットが相応して調整される必要がある点が注記される。例えば、挿入される文字列は、以下のような複数の異なる言語の文字列を含むデータベース中に保持されてもよい。
【0071】
【表3】
【0072】
このリソースをロードする方法は、図12に示されるフローチャートを参照して説明される。非構造化リソース(例えば上記に示した例)がメモリに読み込まれ(ステップ101)、そのリソースのための非構造化データ記憶部がアクセスされる(ステップ102)。エレメント(例えば「ID_1(3)」)がデータ記憶部から読み込まれる(ステップ103)。リソース情報がアクセスされ(ステップ1201)、例えば、これは、特定のアプリケーションのための文字列データベースであってもよく、データ記憶部から読み込まれたその情報を用いて(ステップ103において)、ある文字列(例えばHello)がそのリソース情報から要求された特定言語のために読み込まれる(ステップ1202)。この文字列はリソース中に挿入され(ステップ1203)、その方法はさらなる文字列をリソース中に挿入するために反復される(ステップ103、1201〜1203)。全ての要求された文字列を挿入した後、改定された非構造化リソースは以下のように出力され得る(ステップ1204)。
<p>HeIlo</p><br><p>Monday 13th March</p>
この例では、非構造化リソースは包含された(included)文字列を伴って記述されていてもよいが、これらの文字列は、(例えば、図3に示されるように)、アプリケーションが構築された時に除去されてしまってもよく、これによってより小さいリソースを生成する。この生成されたリソースは、言語独立であって、より少ない記憶スペースしか要求せず、より効率的にロードされ、現地語化が単純である。
【0073】
非言語特有のやり方でリソースを記述して別々のデータベース(又は複数データベース)に文字列を記憶することによって、第三者が現地語化のための付加的リソースを、機密性ある何らかのコードへのアクセスを要求することなく、生成できてもよい。かかるケースにおいて、挿入に先立って、挿入のため識別された文字列を1つ以上のルールに照らして比較することは有益かもしれない(翻訳の方法に関連して上記で説明したように)。これらのルールは、以下に示されるように、データベース内又は非構造化データ記憶部内に含まれてもよい。
【0074】
【表4】
【0075】
あるいは、ルールは別々に格納されてもよい。
【0076】
図13は、説明される何れかの方法を実行するシステム1300のブロック図である。そのシステムは、プロセッサ1301及びメモリ1302を含む。メモリ1302は、要求される一連の命令を保存するのに用いられて、これらの命令がプロセッサによって実行される時に、そのプロセッサをして本発明の方法を実行せしめる。加えて、メモリ1302は文字列などの読み込まれたデータを格納するのに用いられる。
【0077】
上記で提供される全ての実施例は、例示のためだけに、非構造化リソースの非常に単純な例(例えば、XML又はHTMLの単一行)を用いている。記載されている方法が、非常に多くのエレメントを含むデータ記憶部内に結果としてなってしまう、非常に多くの文字列を含む非常に大きい非構造化リソースのために用いられてもよい。例えば、非構造化リソースは、XML、ウェブページ等における大きい文書であってもよい。
【0078】
上記に与えられた実施例において、非構造化リソース内の文字列は処理される。しかし、文字列の使用は例示だけのものであって、説明される方法及びシステムが、文字列、コーディネートセット、サイズ、ホットキー等を含む何らかのタイプのデータ部と共に用いられてもよい。
【0079】
本発明に係る方法が主に非構造化リソースを対象にして説明されたが、本方法はそれらの構造化リソースを構文解析するために使用され得るものであって、その場合では、全体リソース(例えば、長さ制限の無い構造化リソース)に対して不都合な影響を与えることなく文字列編集を可能とする。本発明の方法はテキスト状又は非テキスト状のフォーマットに対して用いられてもよい。
【0080】
上記の実施例において、本発明による方法は、ランタイム時、構築時、プレ・ランタイム時等にあって実行されるものとして説明されている。これらの用語は例示だけのために用いられ、本方法はどの時の使用にとっても適切化可能である。
【0081】
上記では、データ記憶部が識別用識別子及び文字列の位置を識別するものとして説明されたが、データ記憶部は、変形例として、コーディネート、ホットキー、コメント及びその他の如き非構造化リソースの他の態様の位置を識別するのに用いられ得る。
【0082】
当業者は、プログラム命令を格納するのに利用される記憶装置がネットワークにまたがって分散され得ることを理解する。例えば、リモートコンピュータがソフトウェアとして説明されたプロセス例を記憶してもよい。ローカル又はターミナルのコンピュータがリモートコンピュータにアクセスし、プログラムを走らせるソフトウェアの一部又は全部をダウンロードしてもよい。変形例として、ローカルコンピュータは、必要に応じてソフトウェアの部分をダウンロードしてもよいし、又はローカルターミナルにあるソフトウェア及びリモートコンピュータ(又はネットワークコンピュータ)にあるソフトウェア命令を実行してもよい。当業者は、また、当業者にとって周知の従来技術を利用することによって、ソフトウェア命令の全て又は一部が専用回路、例えば、DSP、プログラム可能ゲートアレイ等によって実行されてもよいことを理解する。
【0083】
用語「コンピュータ」は、本明細書において、命令を実行することができるような処理能力を備える何らかの装置を意味するものとして用いられている。当業者は、かかる処理能力が多くの異なる装置に組み込まれることを理解し、従って、用語「コンピュータ」はPC、サーバー、携帯電話、パーソナル携帯情報機器及び多くの他の装置を含む。
【0084】
本明細書において与えられる何らかの範囲又は装置の値は、当業者にとって明らかであるように、求められる効果を失うことなく拡張又は変更され得る。
【0085】
本明細書において記載されている方法のステップは、何らかの適切な順序で又は同時に実行されてもよい。フローチャートに示される戻りループは、例示だけのものであって、異なるステップで始まってもよいし、及び/又は終わってもよい。
【0086】
上記の好ましい実施例の詳細な説明は、例示だけのものであって、その様々な変形態様が当業者によってなされてもよいことが理解される。
【図面の簡単な説明】
【0087】
【図1】非構造化リソースを構文解析する方法の例を示すフローチャートである。
【図2】非構造化データの記憶部の概略図である。
【図3】データ記憶部の生成を示す概略図である。
【図4】非構造化データの記憶部の第2の概略図である。
【図5】非構造化リソースを翻訳する方法の例を示すフローチャートである。
【図6】現地語化システムの概略図である。
【図7】非構造化リソースの現地語化システムの概略図である。
【図8】非構造化リソースを翻訳する第2の方法の例を示すフローチャートである。
【図9】非構造化リソース内の文字列を編集する方法の例を示すフローチャートである。
【図10】リソースをチェックする方法の例を示すフローチャートである。
【図11】1つ以上の言語における用語を含む用語集を生成する方法の例を示すフローチャートである。
【図12】リソースをロードする方法の例を示すフローチャートである。
【図13】説明された方法の何れかを実行するシステムの概略図である。
【特許請求の範囲】
【請求項1】
非構造化リソースを処理する方法であって、
1つ以上のデータ部を含む非構造化リソースを読み込むステップ(101)と、
前記非構造化リソースに関連するデータ構造にアクセスするステップ(102)であって、前記データ構造は1つ以上のエレメントを含み、各エレメントはデータ部に関連すると共に当該関連するデータ部の位置情報を含むステップと、
第1のエレメントを前記データ構造からメモリ内に読み込むステップ(103)であって、前記第1のエレメントは第1のデータ部の位置情報を含むステップと、
前記第1のデータ部を、前記第1のデータ部の位置情報を用いて、前記非構造化リソース内で探索するステップと、
前記第1のデータ部を処理するステップと、
前記エレメントを読み込むステップと、前記データ部を探索するステップと、前記データ部を処理するステップとを、前記データ構造における1つ以上のエレメント毎に繰り返すステップと
を含むことを特徴とする方法。
【請求項2】
前記方法は、置換データ部の記憶部にアクセスするステップを更に含み、
前記第1のデータ部を処理するステップは、
第1の置換データ部を前記置換データ部の記憶部から前記第1のエレメントに基づいて選択するステップと、
前記第1の置換データ部を前記非構造化リソース中に前記第1のデータ部の場所に挿入するステップと
を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記非構造化リソースをメモリ内に読み込むステップ(101)は、ある非構造化リソースをある場所からメモリ内に読み込むステップを含み、
前記方法は、修正された非構造化リソースを前記ある場所に出力するステップを更に含むことを特徴とする請求項2に記載の方法。
【請求項4】
前記第1の置換データ部を選択するステップに続いて、前記第1の置換データ部が所定の判定基準を充足するか否かについて判定し、もし充足しない場合には当該選択した置換データ部を挿入するステップを省略するステップを更に含むことを特徴とする請求項2又は3に記載の方法。
【請求項5】
前記所定の判定基準は、データ部長の判定基準、有効文字の判定基準、又は所定リソースリストを含むことを特徴とする請求項4に記載の方法。
【請求項6】
前記所定の判定基準を、前記非構造化リソース、前記データ構造又は前記置換データ部の記憶部からメモリ内に読み込むステップを更に含むことを特徴とする請求項4又は5に記載の方法。
【請求項7】
前記非構造化リソースをメモリ内に読み込むステップ(101)に先立って、アプリケーションをロードし、前記アプリケーションに対する要求言語をチェックするステップを更に含み、
前記非構造化リソースは、前記アプリケーションに関連し、
前記方法は、修正された非構造化リソースを前記アプリケーションに受け渡すステップを更に含むことを特徴とする請求項2乃至6のうちの何れか1項に記載の方法。
【請求項8】
前記置換データ部の記憶部にアクセスするステップに先立って、前記置換データ部の記憶部を、前記アプリケーションの要求言語に基づいて識別するステップを更に含むことを特徴とする請求項7に記載の方法。
【請求項9】
前記置換データ部の記憶部は、1つ以上の言語の翻訳されたデータ部のデータベースと辞書データベースとのうちの1つを含むことを特徴とする請求項2乃至8のうちの何れか1項に記載の方法。
【請求項10】
前記データ部は、文字列、ホットキー、コーディネートセット、サイズ、修正可能データ、又は現地語化可能データを含むことを特徴とする請求項1乃至9のうちの何れか1項に記載の方法。
【請求項11】
前記方法は、ルールデータベースにアクセスするステップを更に含み、
前記第1のデータ部を処理するステップは、前記第1のデータ部を前記ルールデータベースに従って修正して第1の修正化文字列を生成し、前記第1の修正化文字列を前記非構造化リソース内に前記第1のデータ部の場所に挿入するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項12】
前記データ部は文字列を含み、前記ルールデータベースは、長さルールと、許可文字ルールと、許可ワードルールと、禁止ワードルールと、文法ルールと、スペルルールとのうちの1つ以上を含むことを特徴とする請求項11に記載の方法。
【請求項13】
前記非構造化リソースの各データ部は第1の言語の文字列を含み、前記第1のデータ部を処理するステップは、ある第1のデータ部を抽出するステップを含み、
前記方法は、
第2の非構造化リソースをメモリ内に読み込むステップであって、前記第2の非構造化リソースは1つ以上のデータ部を含み、前記第2の非構造化リソースの各データ部は第2の言語の文字列を含むステップと、
前記第2の非構造化リソースに関連する第2のデータ構造にアクセスするステップであって、前記第2のデータ構造は1つ以上のエレメントを含み、各エレメントは前記第2のデータ構造内のデータ部に関連すると共に当該関連するデータ部の位置情報を含むステップと、
第1のエレメントを前記第2のデータ構造からメモリ内に読み込むステップであり、前記第1のエレメントは前記第2の非構造化リソース内の第1のデータ部の位置情報を含むステップと、
前記第1のデータ部を、前記第2の非構造化リソースから、前記第2の非構造化リソース内の前記第1のデータ部の位置情報を用いて抽出するステップと、
前記第2のデータ構造における1つ以上の各エレメント毎に、前記第1のエレメントを前記第2のデータ構造からメモリ内に読み込むステップと、前記第1のデータ部を前記第2の非構造化リソースから抽出するステップと、を繰り返すステップと、
前記第1及び第2の非構造化リソースの双方から全ての抽出されたデータ部を出力するステップと
を更に含むことを特徴とする請求項1に記載の方法。
【請求項14】
前記非構造化リソースは、JavaScriptと、CSS(Cascading Style Sheet)と、INIファイルと、レジストリファイルと、HTMLファイルと、XMLファイルとのうちの1つを含むことを特徴とする請求項1乃至13の何れか1項に記載の方法。
【請求項15】
各エレメントはデータ部識別子をさらに含むことを特徴とする請求項1乃至14の何れか1項に記載の方法。
【請求項16】
前記位置情報は、データ部始端位置と、データ部長インジケータと、データ部終端位置と、のうちの少なくとも1つを含むことを特徴とする請求項1乃至15の何れか1項に記載の方法。
【請求項17】
前記データ構造は符号化情報を更に含むことを特徴とする請求項1乃至16の何れか1項に記載の方法。
【請求項18】
コンピュータ上でのプログラム実行時に、請求項1乃至17の何れか1項に記載の全ての方法を実行するように適合されたコンピュータプログラムコードを含むコンピュータブログラム。
【請求項19】
コンピュータ読み取り可能な記録媒体に記録されていることを特徴とする請求項18に記載のコンピュータプログラム。
【請求項20】
システムであって、
プロセッサ(1301)と、
前記プロセッサ(1301)に結合されてこれによって読取可能なメモリ(1302)であって、前記プロセッサ(1301)によって実行されたときに前記プロセッサ(1301)をして処理手順を実行せしめる一連の命令を含むメモリ(1302)と
を含み、
前記処理手順は、
1つ以上のデータ部を含む非構造化リソースを前記メモリに読み込むリソース読込ステップと、
前記非構造化リソースに関連するデータ構造にアクセスするアクセスステップであって、前記データ構造は1つ以上のエレメントを含み、各エレメントはデータ部に関連すると共に当該関連するデータ部の位置情報を含むステップと、
第1のエレメントを前記データ構造からメモリ内に読み込むエレメント読込ステップであって、前記第1のエレメントは第1のデータ部の位置情報を含むエレメント読込ステップと、
前記第1のデータ部を、前記第1のデータ部の位置情報を用いて、前記非構造化リソース内で探索するデータ部探索ステップと、
前記第1のデータ部を処理するデータ部処理ステップと、
前記エレメントを読み込むステップと、前記データ部を探索するステップと、前記データ部を処理するステップとを、前記データ構造における1つ以上のエレメント毎に繰り返すステップと
を含むことを特徴とするシステム。
【請求項1】
非構造化リソースを処理する方法であって、
1つ以上のデータ部を含む非構造化リソースを読み込むステップ(101)と、
前記非構造化リソースに関連するデータ構造にアクセスするステップ(102)であって、前記データ構造は1つ以上のエレメントを含み、各エレメントはデータ部に関連すると共に当該関連するデータ部の位置情報を含むステップと、
第1のエレメントを前記データ構造からメモリ内に読み込むステップ(103)であって、前記第1のエレメントは第1のデータ部の位置情報を含むステップと、
前記第1のデータ部を、前記第1のデータ部の位置情報を用いて、前記非構造化リソース内で探索するステップと、
前記第1のデータ部を処理するステップと、
前記エレメントを読み込むステップと、前記データ部を探索するステップと、前記データ部を処理するステップとを、前記データ構造における1つ以上のエレメント毎に繰り返すステップと
を含むことを特徴とする方法。
【請求項2】
前記方法は、置換データ部の記憶部にアクセスするステップを更に含み、
前記第1のデータ部を処理するステップは、
第1の置換データ部を前記置換データ部の記憶部から前記第1のエレメントに基づいて選択するステップと、
前記第1の置換データ部を前記非構造化リソース中に前記第1のデータ部の場所に挿入するステップと
を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記非構造化リソースをメモリ内に読み込むステップ(101)は、ある非構造化リソースをある場所からメモリ内に読み込むステップを含み、
前記方法は、修正された非構造化リソースを前記ある場所に出力するステップを更に含むことを特徴とする請求項2に記載の方法。
【請求項4】
前記第1の置換データ部を選択するステップに続いて、前記第1の置換データ部が所定の判定基準を充足するか否かについて判定し、もし充足しない場合には当該選択した置換データ部を挿入するステップを省略するステップを更に含むことを特徴とする請求項2又は3に記載の方法。
【請求項5】
前記所定の判定基準は、データ部長の判定基準、有効文字の判定基準、又は所定リソースリストを含むことを特徴とする請求項4に記載の方法。
【請求項6】
前記所定の判定基準を、前記非構造化リソース、前記データ構造又は前記置換データ部の記憶部からメモリ内に読み込むステップを更に含むことを特徴とする請求項4又は5に記載の方法。
【請求項7】
前記非構造化リソースをメモリ内に読み込むステップ(101)に先立って、アプリケーションをロードし、前記アプリケーションに対する要求言語をチェックするステップを更に含み、
前記非構造化リソースは、前記アプリケーションに関連し、
前記方法は、修正された非構造化リソースを前記アプリケーションに受け渡すステップを更に含むことを特徴とする請求項2乃至6のうちの何れか1項に記載の方法。
【請求項8】
前記置換データ部の記憶部にアクセスするステップに先立って、前記置換データ部の記憶部を、前記アプリケーションの要求言語に基づいて識別するステップを更に含むことを特徴とする請求項7に記載の方法。
【請求項9】
前記置換データ部の記憶部は、1つ以上の言語の翻訳されたデータ部のデータベースと辞書データベースとのうちの1つを含むことを特徴とする請求項2乃至8のうちの何れか1項に記載の方法。
【請求項10】
前記データ部は、文字列、ホットキー、コーディネートセット、サイズ、修正可能データ、又は現地語化可能データを含むことを特徴とする請求項1乃至9のうちの何れか1項に記載の方法。
【請求項11】
前記方法は、ルールデータベースにアクセスするステップを更に含み、
前記第1のデータ部を処理するステップは、前記第1のデータ部を前記ルールデータベースに従って修正して第1の修正化文字列を生成し、前記第1の修正化文字列を前記非構造化リソース内に前記第1のデータ部の場所に挿入するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項12】
前記データ部は文字列を含み、前記ルールデータベースは、長さルールと、許可文字ルールと、許可ワードルールと、禁止ワードルールと、文法ルールと、スペルルールとのうちの1つ以上を含むことを特徴とする請求項11に記載の方法。
【請求項13】
前記非構造化リソースの各データ部は第1の言語の文字列を含み、前記第1のデータ部を処理するステップは、ある第1のデータ部を抽出するステップを含み、
前記方法は、
第2の非構造化リソースをメモリ内に読み込むステップであって、前記第2の非構造化リソースは1つ以上のデータ部を含み、前記第2の非構造化リソースの各データ部は第2の言語の文字列を含むステップと、
前記第2の非構造化リソースに関連する第2のデータ構造にアクセスするステップであって、前記第2のデータ構造は1つ以上のエレメントを含み、各エレメントは前記第2のデータ構造内のデータ部に関連すると共に当該関連するデータ部の位置情報を含むステップと、
第1のエレメントを前記第2のデータ構造からメモリ内に読み込むステップであり、前記第1のエレメントは前記第2の非構造化リソース内の第1のデータ部の位置情報を含むステップと、
前記第1のデータ部を、前記第2の非構造化リソースから、前記第2の非構造化リソース内の前記第1のデータ部の位置情報を用いて抽出するステップと、
前記第2のデータ構造における1つ以上の各エレメント毎に、前記第1のエレメントを前記第2のデータ構造からメモリ内に読み込むステップと、前記第1のデータ部を前記第2の非構造化リソースから抽出するステップと、を繰り返すステップと、
前記第1及び第2の非構造化リソースの双方から全ての抽出されたデータ部を出力するステップと
を更に含むことを特徴とする請求項1に記載の方法。
【請求項14】
前記非構造化リソースは、JavaScriptと、CSS(Cascading Style Sheet)と、INIファイルと、レジストリファイルと、HTMLファイルと、XMLファイルとのうちの1つを含むことを特徴とする請求項1乃至13の何れか1項に記載の方法。
【請求項15】
各エレメントはデータ部識別子をさらに含むことを特徴とする請求項1乃至14の何れか1項に記載の方法。
【請求項16】
前記位置情報は、データ部始端位置と、データ部長インジケータと、データ部終端位置と、のうちの少なくとも1つを含むことを特徴とする請求項1乃至15の何れか1項に記載の方法。
【請求項17】
前記データ構造は符号化情報を更に含むことを特徴とする請求項1乃至16の何れか1項に記載の方法。
【請求項18】
コンピュータ上でのプログラム実行時に、請求項1乃至17の何れか1項に記載の全ての方法を実行するように適合されたコンピュータプログラムコードを含むコンピュータブログラム。
【請求項19】
コンピュータ読み取り可能な記録媒体に記録されていることを特徴とする請求項18に記載のコンピュータプログラム。
【請求項20】
システムであって、
プロセッサ(1301)と、
前記プロセッサ(1301)に結合されてこれによって読取可能なメモリ(1302)であって、前記プロセッサ(1301)によって実行されたときに前記プロセッサ(1301)をして処理手順を実行せしめる一連の命令を含むメモリ(1302)と
を含み、
前記処理手順は、
1つ以上のデータ部を含む非構造化リソースを前記メモリに読み込むリソース読込ステップと、
前記非構造化リソースに関連するデータ構造にアクセスするアクセスステップであって、前記データ構造は1つ以上のエレメントを含み、各エレメントはデータ部に関連すると共に当該関連するデータ部の位置情報を含むステップと、
第1のエレメントを前記データ構造からメモリ内に読み込むエレメント読込ステップであって、前記第1のエレメントは第1のデータ部の位置情報を含むエレメント読込ステップと、
前記第1のデータ部を、前記第1のデータ部の位置情報を用いて、前記非構造化リソース内で探索するデータ部探索ステップと、
前記第1のデータ部を処理するデータ部処理ステップと、
前記エレメントを読み込むステップと、前記データ部を探索するステップと、前記データ部を処理するステップとを、前記データ構造における1つ以上のエレメント毎に繰り返すステップと
を含むことを特徴とするシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公表番号】特表2009−534743(P2009−534743A)
【公表日】平成21年9月24日(2009.9.24)
【国際特許分類】
【出願番号】特願2009−506507(P2009−506507)
【出願日】平成19年4月5日(2007.4.5)
【国際出願番号】PCT/US2007/008677
【国際公開番号】WO2007/127037
【国際公開日】平成19年11月8日(2007.11.8)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
【公表日】平成21年9月24日(2009.9.24)
【国際特許分類】
【出願日】平成19年4月5日(2007.4.5)
【国際出願番号】PCT/US2007/008677
【国際公開番号】WO2007/127037
【国際公開日】平成19年11月8日(2007.11.8)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
[ Back to top ]