(57)【要約】【課題】ローカライゼーションプラットフォームを提供する。【解決手段】ローカライゼーションプラットフォーム２００は、リソースマネージャ２０６、レイアウトエンジン２０８、翻訳メモリマッチャー２１０、ダウンロードマネージャ２１２、翻訳メモリデータサービス２１４、機械翻訳システム２１６、フィルタ２１８、証明書システム２２０および異なる複数のデータストアを含む。データストアは、アプリケーション規則データストア２２２、ローカルおよび専用ストア２２４、２２６、用語ベースデータストア２２８および用語ベース翻訳データストア２３０、オントロジーストア２３２、翻訳メモリ２３４ならびに共通ＵＩ要素データストア２３６を含む。アプリケーション規則は、リソース中で、アプリケーションに関連するリッチデータを指定するのに用いられる。【選択図】図２
2006260558.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションのリソースをメモリコンポーネントにロードし、リクエストされたリソースを前記アプリケーションに返すことによって、前記アプリケーションからのリソースリクエストに応答するように構成されたリソースマネージャと、
照合コンポーネントと、
複数のローカライゼーションコンテンツコンポーネントと
を含むローカライゼーションプラットフォームを備えるオペレーティングシステムであって、前記照合コンポーネントは、前記リソースマネージャからローカライゼーションリクエストを受け取り、複数の前記ローカライゼーションコンテンツコンポーネントを照会し、前記ローカライゼーションリクエストに対応する、ローカライズされたコンテンツを、前記複数のローカライゼーションコンテンツコンポーネントの１つまたは複数から取得するように構成されていることを特徴とするオペレーティングシステム。
【請求項２】
前記ローカライゼーションプラットフォームは、
複数の入力ソースからローカライゼーションコンテンツを受け取り、前記ローカライゼーションコンテンツを前記ローカライゼーションコンテンツコンポーネントに格納するように構成されたデータ収集コンポーネントを備えることを特徴とする請求項１に記載のオペレーティングシステム。
【請求項３】
前記データ収集コンポーネントは、前記ローカライゼーションコンテンツに対応するメタデータおよびコンテキスト情報の少なくとも１つを、前記ローカライゼーションコンテンツコンポーネントに格納するように構成されていることを特徴とする請求項２に記載のオペレーティングシステム。
【請求項４】
前記ローカライゼーションコンテンツコンポーネントは、
前記リソースマネージャにとってローカルなローカルデータストアと、
前記リソースマネージャからリモートであるリモートデータストアとを備えることを特徴とする請求項２に記載のオペレーティングシステム。
【請求項５】
前記ローカライゼーションコンテンツコンポーネントは、
前記照合コンポーネントおよび複数のローカライゼーションコンテンツデータストアに動作可能に結合された翻訳メモリデータサービスであって、前記ローカライゼーションコンテンツを求めて前記ローカライゼーションコンテンツデータストアを検索するように構成された翻訳メモリデータサービスを備えることを特徴とする請求項１に記載のオペレーティングシステム。
【請求項６】
前記ローカライゼーションコンテンツデータストアは、用語ベース、および用語または共通ＵＩ要素あるいはその両方の翻訳を格納する１つまたは複数の翻訳メモリのうちの少なくとも１つを含むことを特徴とする請求項５に記載のオペレーティングシステム。
【請求項７】
前記ローカライゼーションコンテンツコンポーネントは、
前記照合コンポーネントによるリクエストに応答して翻訳を提供する機械翻訳システムを備えることを特徴とする請求項１に記載のオペレーティングシステム。
【請求項８】
前記データ収集コンポーネントは、前記複数の入力ソースから、ウェブページインターフェースまたはウェブサービスを介してローカライゼーションコンテンツを受け取るように構成されていることを特徴とする請求項２に記載のオペレーティングシステム。
【請求項９】
前記データ収集コンポーネントは、入力ソースが、その入力ソースによって前記データ収集コンポーネントを介して提供されるローカライゼーションコンテンツのみを修正することを可能にするように構成されていることを特徴とする請求項２に記載のオペレーティングシステム。
【請求項１０】
前記データ収集コンポーネントは、前記ローカライゼーションプラットフォームによるローカライゼーションのために、前記入力ソースからアプリケーションを受け取るように構成されていることを特徴とする請求項２に記載のオペレーティングシステム。
【請求項１１】
前記ローカライゼーションプラットフォームは、バックグラウンド動作において、前記アプリケーションの少なくともいくつかの部分をローカライズするように構成されていることを特徴とする請求項１に記載のオペレーティングシステム。
【請求項１２】
前記ローカライゼーションプラットフォームは、アプリケーションのセットアップまたは設定中に、前記アプリケーションの少なくともいくつかの部分をローカライズするように構成されていることを特徴とする請求項１に記載のオペレーティングシステム。
【請求項１３】
前記ローカライゼーションプラットフォームは、ランタイム時に、前記アプリケーションの少なくともいくつかの部分をローカライズするように構成されていることを特徴とする請求項１に記載のオペレーティングシステム。
【請求項１４】
１つまたは複数の別個の市場にローカライズされるデータを提供するように構成された複数のローカライゼーションコンポーネントと、
所定の市場にローカライズされるべき入力データを受け取り、前記複数のローカライゼーションコンポーネントにアクセスし、前記複数のローカライゼーションコンポーネントへのアクセスに基づいて、前記入力データに対応する、ローカライズされたデータを返すように構成されたマッチャーコンポーネントと
を備えることを特徴とするローカライゼーションプラットフォーム。
【請求項１５】
前記複数のローカライゼーションコンポーネントおよび前記マッチャーコンポーネントは、オペレーティングシステム中に統合されることを特徴とする請求項１４に記載のローカライゼーションプラットフォーム。
【請求項１６】
前記複数のローカライゼーションコンポーネントおよび前記マッチャーコンポーネントは、アプリケーションおよびオペレーティングシステムの一方を備える外部コンポーネントからのコールに応答して、前記ローカライズされたデータをサービスとして提供するように構成されていることを特徴とする請求項１４に記載のローカライゼーションプラットフォーム。
【請求項１７】
異なる複数の入力ソースから、１つまたは複数の市場にローカライズされる前記データを受け取り、前記データを前記ローカライゼーションコンポーネントに提供するように構成されたデータ収集コンポーネントをさらに備えることを特徴とする請求項１４に記載のローカライゼーションプラットフォーム。
【請求項１８】
前記ローカライゼーションコンポーネントは、
前記マッチャーコンポーネントによってアクセス可能なデータサービスコンポーネントと、
前記データサービスコンポーネントによってアクセス可能であり、１つまたは複数の別個の市場にローカライズされる前記データを格納する複数のローカライゼーションデータストアと
を備えることを特徴とする請求項１４に記載のローカライゼーションプラットフォーム。
【請求項１９】
前記ローカライゼーションコンポーネントは、
前記マッチャーコンポーネントによってアクセス可能であり、前記データサービスコンポーネントにアクセスするように構成された少なくとも１つの機械翻訳システムを備えることを特徴とする請求項１８に記載のローカライゼーションプラットフォーム。
【請求項２０】
ローカライズされるべき前記データは、アプリケーションを含むことを特徴とする請求項１４に記載のローカライゼーションプラットフォーム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、データ処理に関し、より詳細には、製品及びサービスのローカライゼーションに関する。
【背景技術】
【０００２】
ローカライゼーションは、異なった市場における違いに対処するために、製品またはサービスを修正するプロセスである。ローカライゼーションのごく一般的な例は、アプリケーションがソース言語でオーサリングされ、元の言語とは異なるターゲット言語を使う市場に導入される際に生じる。例えば、アプリケーションは、英語でオーサリングされ、次いで、中国に導入された場合、アプリケーション中の様々な英語文字列およびＵＩ要素（メニュー、アイコンなど）、ソフトウェアコンポーネントならびにユーザ支援を中国語に翻訳することによってローカライズされる。ＵＩのレイアウトおよびスタイル（フォントタイプ、サイズ、制御位置などを含む）も、おそらく、ターゲット言語に合わせるように変更される。当然ながら、ローカライゼーションの概念は、単なる言語の修正よりも広い。同じ言語を使う市場が、他の理由で、異なるものである可能性がある。例えば、ソフトウェアアプリケーションを、異なる年齢グループ向けに「ローカライズする」ことができる。アプリケーションは、大人向けには１組の言語および外見を、子供または十代向けには別のものを有し得る。したがって、ローカライズは例示的に、別個の市場における多種多様な違いに適応する。
【０００３】
しかし、上述したように、ローカライゼーションは、文字列の単なる翻訳よりも、はるかに多くのことを伴う。ドキュメントの読解を容易にするためには、そのシナリオについての説明に集中することになる。同様に、実施例のほとんどは、ソフトウェアローカライゼーションの分野から取り上げられているが、本発明は、ソフトウェアのローカライゼーションに限定されない。同様に、本記述のほとんどが、製品のローカライゼーションに焦点を当てているが、本発明はそれに限定されず、サービスにも適用可能であり、したがって、その説明のために、「製品」という用語は「サービス」を含む。これまで、ローカライゼーションを提供するシステムレベルの試みがなく、個々の問題を解決するために、個々のコンポーネントを使ってローカライゼーションが実施されていた。例えば、ローカライザ（localizer）を、特定の機械翻訳技術を用いて、ローカライゼーション速度、正確さおよび一貫性を向上させるように増補することができる。しかし、異なるローカライザが、以前の翻訳を再利用することによってリサイクル率を上げ、ローカライザなしの場合よりも一貫性のある結果をより高速で提供するために、翻訳メモリを使うことができる。
【０００４】
また、このローカライゼーションはすべて、従来はオフラインで行われてきた。言い換えると、制作者は、アプリケーション全体またはあるコンポーネントの大部分を作成し、そのコンポーネントまたはアプリケーションが、ローカライゼーションのためにローカライザに与えられる。通常のプロセスは、制作者とのローカライザの対話が、最小限であるか、または存在しないようなものである。このプロセスでは、元のコンテンツに、そのローカライゼーションを簡単にすることになる変更を取り入れにくくなる。実際、多くのケースにおいて、製品全体が開発され、その製品を、異なる言語を使い、または別の面で区別される異なる市場に拡大するための戦略的マーケティング決定が行われてからしばらく経過しないと、ローカライゼーションは実施されない。こうしたケースすべてにおいて、一般に、アプリケーションを開発する際、ローカライゼーションを念頭において、もしくはローカライズ用に最適化するために行われる先行作業はごくわずかである。同様に、容易にローカライズ可能な製品またはサービスのオーサリングは、ローカライゼーションが容易でない製品またはサービスのオーサリングよりも難しくないのにも関わらず、開発／オーサリング段階における、ローカライゼーションが比較的容易であろうアプリケーションまたは他の製品／サービスの開発のサポートもごくわずかである。
【０００５】
したがって、製品、サービスおよびアプリケーションは従来、相異なる言語に翻訳され、あるいは複雑な、手作業による手間のかかるプロセスを介してローカライズされていた。このような、ソフトウェア製品のローカライゼーションコスト、および製品に関連するコンテンツの翻訳は、新たな市場に参入するために克服されなければならない深刻な障害を表している。これは、小規模から中規模の独立ソフトウェアベンダまたはコンテンツ制作者に特に当てはまる。
【０００６】
【特許文献１】米国特許第６２５３１７０号明細書
【特許文献２】米国特許第６０９８０３３号明細書
【非特許文献１】Gruber, A TRANSLATION APPROACH TO PORTABLE ONTOLOGIES, Knowledge Acquisition, 5 (2): 199-220 (1993)
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ローカライゼーションの問題は、ソフトウェアが開発される具体的な場所に応じても増大する。大規模な市場がある場所でソフトウェアをオーサリングしている開発者にとって、異なる（かつ、おそらくはより小規模な）市場向けのソフトウェアのローカライゼーションは、それほど必要性がない。しかし、開発者が、比較的小規模な市場がある場所で（かつ、そのような言語を使って）オーサリングする場合、製品の全体的な存続可能性は、その製品を、より大規模な市場で使われる言語にローカライズ可能であることに依存し得る。このローカライゼーションには、製造元がローカライゼーションに過度に大量のリソースを費やすことが要求される。この要求のため、しばしば、開発用に使用可能なリソースが損なわれる。
【０００８】
従来のローカライゼーションへの取組みに関連した別の問題は、他の様々なローカライゼーションソースの作業のよい利用法がなかったことである。例えば、多種多様なベンダが、自社製品を様々な市場向けにローカライズする。異なるベンダによって開発された同様のアプリケーションはおそらく、同じ市場向けには同じであるか、あるいはほぼ同じ文字列またはソフトウェアをローカライズしている可能性がある。しかし、現在、２つのアプリケーションが、互いの取組みを利用し、または共有するための好都合な方法はない。したがって、製品のローカライゼーションには、かなりの重複作業がある。
【０００９】
さらに、別個のタイプのリソースマネージャ、リソース形式およびデータストアを有する、異なる多くのプログラミングモデル（Ｗｉｎ３２、ＣＬＲおよびＷＥＢ記述など）がある。こうしたプログラミングモデルは、異なるパーサおよびツールセットがローカライゼーションを扱うことを要求するが、そうすると、複雑でコストのかかるプロセス、およびローカライゼーションの品質における不整合が生じる。
【課題を解決するための手段】
【００１０】
本発明は、ローカライゼーションプラットフォームを有するオペレーティングシステム、またはオペレーティングシステムと完全には統合されていないが、それと密接に動作可能なコンポーネントを有する統合型ローカライゼーションプラットフォームを提供する。本ローカライゼーションプラットフォームは、オペレーティングシステムによってリクエストされるサービスとして提供することもできる。本発明は、ローカライゼーションプラットフォームを使用して、コンテンツおよびソフトウェアをローカライズする。本発明は、製品またはサービスのより迅速でより効率的なローカライゼーションを可能にする実践形式（practices）を実行して、製品またはサービスの開発中に用いることもできる。主にローカライゼーションプロセス中の翻訳を参照して説明を進めるが、本発明はそれに限定されず、ローカライゼーションは、別個の市場のための多種多様な他の調整も含む。本発明をより詳細に説明する前に、本発明を利用することができる環境の一実施形態を説明する。
【発明を実施するための最良の形態】
【００１１】
図１は、本発明を実施することができる、適切なコンピューティングシステム環境１００の例を示す。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲に対するどのような限定を示唆することも意図していない。コンピューティング環境１００は、例示的な動作環境１００に示されるどのコンポーネントまたはその組合せに関するどのような依存も要件も有していると解釈されるべきではない。
【００１２】
本発明は、他の数多くの汎用または専用のコンピューティングシステム環境または構成でも動作する。本発明とともに使用するのに適切であり得る他の公知の計算システム、環境、および／または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、電話システム、上記のシステムまたはデバイスのいずれをも含む分散型コンピューティング環境などを含むが、それらに限定されない。
【００１３】
本発明は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的な文脈において説明することができる。概して、プログラムモジュールは、特定のタスクを実施しまたは特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明は、通信ネットワークを介してリンクされるリモート処理装置によってタスクが実施される分散型コンピューティング環境においても実施されるように設計される。分散型コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含むローカルおよびリモートコンピュータ記憶媒体の両方に置かれる。
【００１４】
図１を参照すると、本発明を実施する例示的なシステムは、汎用コンピューティングデバイスをコンピュータ１１０の形で含む。コンピュータ１１０のコンポーネントは、処理ユニット１２０と、システムメモリ１３０と、システムメモリなど様々なシステムコンポーネントを処理ユニット１２０に結合するシステムバス１２１とを含み得るが、それに限定されない。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスなど、いくつかのタイプのバス構造のいずれでもよい。限定ではなく例として、このようなアーキテクチャは、ＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（マイクロチャネルアーキテクチャ）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカルバス、およびメザニン（Mezzanine）バスとしても知られるＰＣＩ（Peripheral Component Interconnect）バスを含む。
【００１５】
コンピュータ１１０は通常、様々なコンピュータ読取り可能記憶媒体を含む。コンピュータ読取り可能記憶媒体は、コンピュータ１１０によってアクセスすることができるとともに揮発性媒体および不揮発性媒体の両方、および取外し可能な媒体および取外し不可能な媒体を含む、市販のどの媒体でもよい。限定ではなく例として、コンピュータ読取り可能記憶媒体は、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するためのどの方法でも技術でも実施される揮発性媒体および不揮発性媒体の両方、取外し可能な媒体および取外し不可能な媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（デジタル多用途ディスク）または他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは、所望の情報を格納するために使うことができるとともにコンピュータ１１０によってアクセスすることができる他のどの媒体も含むが、それに限定されない。通信媒体は一般に、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータを、例えば搬送波や他の移送機構などの被変調データ信号の形にし、どの情報配信媒体も含む。「被変調データ信号」という用語は、信号中の情報をエンコードするような方法で設定され、または変更される信号特性の１つまたは複数を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークや直接有線接続などの有線媒体、ならびに音響、ＲＦ（無線周波数）、赤外線、および他の無線媒体などの無線媒体を含む。上記のどの組合せも、やはりコンピュータ読取り可能記憶媒体の範囲に含めるべきである。
【００１６】
システムメモリ１３０は、コンピュータ記憶媒体を、ＲＯＭ（読出し専用メモリ）１３１およびＲＡＭ（ランダムアクセスメモリ）１３２など、揮発性および／または不揮発性メモリの形で含む。ＢＩＯＳ（基本入出力システム）１３３は、例えば起動中にコンピュータ１１０内部の要素の間で情報を転送するのを助ける基本ルーチンを含み、通常はＲＯＭ１３１に格納される。ＲＡＭ１３２は一般に、処理ユニット１２０に対してただちにアクセス可能な、かつ／または処理ユニット１２０によって現在操作されているデータおよび／またはプログラムモジュールを含む。限定ではなく例として、図１では、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００１７】
コンピュータ１１０は、その他の取外し可能／取外し不可能、揮発性／不揮発性コンピュータ記憶媒体も含み得る。単なる例として、図１では、取外し不可能な不揮発性磁気媒体に対して、読出しまたは書込みを行うハードディスクドライブ１４１、取外し可能な不揮発性磁気ディスク１５２に対して、読出しまたは書込みを行う磁気ディスクドライブ１５１、および、ＣＤ−ＲＯＭや他の光学媒体など、取外し可能な不揮発性光ディスク１５６に対して読出しまたは書込みを行う光ディスクドライブ１５５を示す。例示的な動作環境で使うことができる、その他の取外し可能／取外し不可能、揮発性／不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどを含むが、それに限定されない。ハードディスクドライブ１４１は通常、インターフェース１４０などの取外し不可能なメモリインターフェースによって、システムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は通常、インターフェース１５０などの取外し可能なメモリインターフェースによって、システムバス１２１に接続される。
【００１８】
上述し、かつ図１に示されているディスクドライブおよびそれに関連するコンピュータ読取り可能記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、およびコンピュータ１１０用のその他のデータの格納を可能にする。図１では、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして示してある。こうしたコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じでも、異なってもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７には、少なくとも異なるものであることを示すために、ここでは異なる番号を与えてある。
【００１９】
ユーザは、入力デバイス、例えばキーボード１６２、マイクロホン１６３、およびマウス、トラックボール、またはタッチパッドなどのポインティングデバイス１６１を介して、コマンドおよび情報をコンピュータ１１０に入力することができる。その他の入力デバイス（図示せず）は、ジョイスティック、ゲーム用パッド、衛星パラボラアンテナ、スキャナなどを含み得る。こうしたおよびその他の入力デバイスはしばしば、システムバスに結合されたユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されるが、その他のインターフェースおよびバス構造、例えばパラレルポート、ゲームポート、ＵＳＢ（ユニバーサルシリアルバス）によって接続することもできる。モニタ１９１またはその他のタイプの表示デバイスも、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタに加え、コンピュータは、出力周辺インターフェース１９５を介して接続することができるスピーカ１９７およびプリンタ１９６など、その他の周辺出力デバイスも含み得る。
【００２０】
コンピュータ１１０は、リモートコンピュータ１８０など、１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続された環境において操作される。リモートコンピュータ１８０は、パーソナルコンピュータ、ハンドヘルドデバイス、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の共通ネットワークノードでよく、通常、コンピュータ１１０に関連して上述した要素の多くまたはすべてを含む。図１に示す論理接続は、ＬＡＮ（ローカルエリアネットワーク）１７１およびＷＡＮ（ワイドエリアネットワーク）１７３を含むが、その他のネットワークも含み得る。このようなネットワーク環境は、会社、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいてよく見られる。
【００２１】
ＬＡＮネットワーク環境において使われる場合、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境において使われる場合、コンピュータ１１０は通常、モデム１７２、または、例えばインターネットなどのＷＡＮ１７３を介して通信を確立する他の手段を含む。モデム１７２は、内蔵でも外付けでもよく、ユーザ入力インターフェース１６０またはその他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク接続された環境では、コンピュータ１１０に関連して図示したプログラムモジュールまたはその一部は、リモートメモリ記憶デバイスに格納することができる。限定ではなく例として、図１では、リモートアプリケーションプログラム１８５を、リモートコンピュータ１８０に常駐するものとして示してある。図示したネットワーク接続は例示であり、コンピュータ間の通信リンクを確立するその他の手段も使用できることが理解されよう。
【００２２】
図２は、図１に示すオペレーティングシステム１３４に統合されたローカライゼーションプラットフォーム（またはシステム）２００を示す。ローカライゼーションプラットフォーム２００は、異なるいくつかのメモリストアとともに示してあり、こうしたメモリストアは、図１に示す多様な記憶デバイスのいずれの形でも、または異なる記憶デバイスの形でも実施できることが理解されよう。システム２００は、ローカライゼーションを受けるアプリケーション２０２およびデータ収集コンポーネント２０５を介して様々な翻訳をシステム２００内のデータストアに入力する様々な入力ソース２０４を有して、インタラクティブに示してある。
【００２３】
システム２００は、それ自体が、リソースマネージャ２０６、レイアウトエンジン２０８、翻訳メモリ（ＴＭ）マッチャー（matcher）２１０、ダウンロードマネージャ２１２、翻訳メモリ（ＴＭ）データサービス２１４、機械翻訳（ＭＴ）システム２１６、フィルタ２１８、証明書システム２２０および異なる複数のデータストアを含む。図２に示すデータストアは、アプリケーション規則データストア２２２、ローカルおよび専用ストア２２４、２２６、用語ベースデータストア２２８および用語ベース翻訳データストア２３０、オントロジーストア２３２、翻訳メモリ２３４ならびに共通ＵＩ要素データストア２３６を含む。概して、アプリケーション規則は、リソース中で、アプリケーションに関連するリッチデータを指定するのに用いられ、フィルタは、データに何らかの影響を与えるエンティティ（または入力ソース２０４）が、それ自体が与えたデータのみを修正することができ、追加されたすべてのデータが、一定の規則に基づいてフィルタリングされることを保障するために使われる。当然ながら、データストアは、所望のどのやり方でも、様々にグループ化し、マージし、または分割することができる。システム２００の詳細な動作については、本明細書において図２〜６を参照して後で説明する。図２に示すシステム２００および項目の動作の簡潔な説明をここで行う。
【００２４】
ランタイム中に、リソースマネージャ２０６は、アプリケーション２０２に関連付けられたリソースをキャッシュメモリ２０７にロードする（同様のシナリオを、コンテンツおよび他のタイプのローカライズ可能なデータについて見ることができる）。リソースマネージャ２０６はまた、アプリケーション２０２から、リソースを求めるコールを受け取る。リソースマネージャ２０６は、それに応答して、プラットフォーム２００によって現在選択されている地域に関連付けられた言語の文字列を最初にロードする。リソースマネージャ２０６は、リソースのどのバージョンをロードするかを、例えば可用性、信頼性レベル、ユーザ設定など、様々な基準に基づいて決定する。リソースマネージャ２０６は、ＴＭマッチャー２１０の呼出しを決定することができる。そうするために、リソースマネージャ２０６は、ＴＭマッチャー２１０をコールして、指定されたリソースの翻訳（すなわちローカライゼーション）を取得する。ＴＭマッチャー２１０は、リソースのローディングにおけるランタイム遅延を防止するために、予め投入されたリソースデータをもっていてもよい。予め投入されている情報は、その情報がＭＴシステム２１６からのものであるか、それともＴＭマッチャー２１０からのものであるか、その信頼ソースなど、適切な情報でタグ付けされる。これについては、後でより詳細に論じる。ＴＭマッチャー２１０が、リソースに関して一致（match）を返さない場合、リソースマネージャ２０６は、異なるフォールバック言語で翻訳を提供することができるように、リソースのフォールバックを介してカスケードする。これについても、後でより詳細に説明する。また、一実施形態では、リソースマネージャ２０６およびＴＭマッチャー２１０は両方とも、フォールバックを有する。両者は、お互いに異なっていてもよく、ＴＭマッチャー２１０の結果は、リソースマネージャ２０６に影響を与え得るが、リソースマネージャ２０６は、ＴＭマッチャー２１０をコールせずにフォールバックすることを決定することができる。
【００２５】
文字列に対するローカライゼーションによって行われる変更が、そうした文字列を含む表示項目に対する変更を強制することは珍しくない。一般的な例は、より多くの空間（より長い文字列）の必要性、ダイアログの流れに対する変更（右から左への言語に対して、左から右への言語）などを含む。調整プロセスは、ローカライゼーション時、レンダリング時またはその両方のときに起こり得る。最も一般的なケースは、ダイアログ中の項目の再編成およびサイズ変更が必要とされる場合であり、プロセスは、自動レイアウトと呼ばれる。オーサリングプロセス中に提供される情報の量および正確さは、ランタイム時に生じる結果に影響を与える。
【００２６】
ＴＭマッチャー２１０は、翻訳の様々なソースとリソースマネージャ２０６との間に置かれ、リソースマネージャは、コンテンツの照合（すなわち、別の言語への翻訳あるいはローカライズ）をリクエストする。ＴＭマッチャー２１０は、使用可能なソース（およびアプリケーション２０２によって信頼されるソース）を検索して、関連付けられた信頼性スコアが最高である翻訳を見つける。
【００２７】
ＴＭマッチャー２１０の動作のより詳細な記述は、図４を参照して後に示す。ただし、簡潔に述べると、ＴＭマッチャー２１０は、アプリケーションまたはコンテンツ２０２に関連付けられた、アプリケーション規則データストア２２２中の規則にアクセスして、リソースマネージャ２０６に戻されるどのローカライゼーションも、アプリケーション２０２を誤動作させないようにする。ＴＭマッチャー２１０は最初に、ローカルデータストア２２４および専用データストア２２６を検索して、ローカライゼーションが既に存在するかどうかを見る。ローカルデータストア２２４は、リソースマネージャ２０６によって行われたリクエストが、以前行われたものであるケースにおいて、既にローカライズされているリソースの翻訳または他のローカライズを保持する。
【００２８】
ＴＭマッチャー２１０は、ＴＭデータサービス２１４も呼び出す。ＴＭデータサービス２１４は、ストア２３６に格納された共通ユーザインターフェース（ＵＩ）要素、ならびに用語ベース２２８に格納された定義済みの用語などの、多種多様な異なるものの翻訳またはその他のローカライゼーションを含む翻訳メモリ２３４にアクセスし、オントロジーストア２３２は、アプリケーション２０２および関連付けられたドメインに、コンテキスト情報を提供する。
【００２９】
ローカライゼーションが、ストア２２４または２２６上にも、ストア２３４上にもまだ存在しない場合、ＴＭマッチャー２１０は、任意選択で使用可能な機械翻訳（ＭＴ）システム２１６（または使用可能な複数のＭＴシステムの１つ）にアクセスして、ローカライズされるべきコンテンツに対して機械翻訳を実施することができる。ＴＭマッチャー２１０による、ＭＴシステム２１６の呼出しの決定は、ユーザのお気に入り、翻訳の入手可能性、入手可能な翻訳およびＭＴが提供する翻訳の質などに基づくものでよい。機械翻訳システム２１６は、一実施形態では、市販されているいずれかのＭＴシステムであり、例示的には、他のメモリソース（ＴＭデータサービス２１４ならびにローカルおよび専用データストア２２４、２２６など）のいずれかに、より高い信頼性レベルと一致するものがない場合にのみ、翻訳に使用される。ＭＴシステム２１６が、ほぼどのＭＴシステムでもよく、あるいは異なるストア中のデータ（例えば、以前の翻訳）を使って翻訳を作り出すことができるどのシステムでもよいことにより、システムの拡張性が大いに高まる。というのは、新しいＭＴシステムも異なるＭＴシステムも、ＴＭマッチャー２１０によって容易に使用することができるからである。
【００３０】
当然ながら、ＭＴシステムの拡張性は、システムにおける唯一の拡張性ではなく、一例に過ぎない。システム拡張性の他のいくつかの例は、コンテンツオーサリングエディタ、言語パーサ、サードパーティ翻訳メモリ、コミュニティエディタ、開発オーサリング環境、ウェブサービスへの接続などを含む。こうした、およびその他の分野における拡張性は、プラットフォーム２００におけるＡＰＩによってサポートされる。
【００３１】
いずれのケースでも、ＴＭマッチャー２１０によって呼ばれる翻訳リソースはそれぞれ例示的に、ＴＭマッチャー２１０に、リクエストされたローカライゼーションに関連付けられた信頼性または再利用率を示す信頼性スコア（あるいは翻訳率、リサイクル率、または他の同様の測度）を提供する。ＴＭマッチャー２１０は次いで、最高スコアに関連付けられた翻訳を提供する、信頼できるソースからのローカライゼーションまたは翻訳を選択する。翻訳は次いで、ローカルストア２２４にまだ格納されていない場合、ダウンロードマネージャ２１２によってローカルストア２２４にダウンロードされる。
【００３２】
例示的な一実施形態では、多種多様の入力ソース２０４が、システム２００内の様々なメモリに翻訳入力を提供することができる。例えば、ローカライゼーションプラットフォーム２００を組み込んでいるオペレーティングシステムを開発するベンダまたはソフトウェア製造業者が、例示的に、信頼できる用語を様々なメモリに提供する。ただし、一実施形態では、入力ソース２０４は、一般社会および開発者コミュニティを含み得る。一般社会は、ローカライゼーションプラットフォーム２００を使ってローカライゼーションサービスを実施する誰にでも、コンテンツの断片の推奨されたローカライゼーションを、データ収集コンポーネント２０５を介して適切なメモリに提供させる。入力ソース２０４は、（一般社会とは反対に）公に開発者として認識された開発者によってのみ提供された翻訳を格納する、開発者コミュニティも含み得る。したがって、ローカライゼーションプラットフォーム２００は、ユーザの必要とするもの、および期待を満たすために、非常に大規模にコミュニティが関与するためにローカライゼーションプロセスを公開し、かつ微細なレベルで調整する（例えば、ユーザが、何を信頼し、何を信頼しないか決定する）ことが理解できよう。
【００３３】
さらに、データ収集コンポーネントは、動的に（セットアップ、ランタイム、設定などの間）、断続的に様々な入力ソース２０４から新しいデータを収集することができる。新しいデータは、当然ながら、新しいアプリケーション、新しいドメインをサポートし、実行中のオペレーティングシステムのセルフターニング（self-turning）を実施するための、新しいリソースデータならびに予めローカライズされたデータでも翻訳メモリデータでもよい。このことは、システムの適応性および正確さに等しい。
【００３４】
しかし、特定のアプリケーション開発者、システム管理者またはユーザは、特定のローカライゼーションコンテンツのみが信頼されることを望む場合がある。開発者は、例えば、一般社会または開発者コミュニティからのローカライゼーションコンテンツを信頼せず、ベンダおよびＯＳ製造元からのローカライゼーションコンテンツのみを信頼することを希望する場合がある。この結果、開発者またはユーザは、プラットフォーム２００がローカライゼーションタスクを異なるソースに公開する限度を設定することになる。この限度は、文字列単位で設定することもできる。
【００３５】
このような一実施形態において、プラットフォーム２００は、特定のソースによって与えられたコンテンツに証明書を添付する証明書システム２２０を含む。その事例では、アプリケーション２０２の開発者は、証明書を添付されたローカライゼーションコンテンツのみが信頼されることを望み得る。例えば、開発者およびその他の関与者は、自身のアプリケーションに関連して、自分が属す層に関連する、自身のコンテンツに署名する権利を取得することができよう。これは、アプリケーションの開発者の証明書によって、その開発者を、その具体的なアプリケーション用の開発者層に入れ、他のすべての関与者は、「その他のＩＳＶ」、コミュニティまたはユーザ層において一層下になることを意味する。証明書は、関与者の層に関連して信頼することができる。例えば、所与の製造業者が、常に最高層を有する可能性があるが、ユーザは、その層から最下層まで、信頼できる層を判定することができ、ある層内で、信頼できるソースを判定することができる。どのローカライゼーションコンテンツが信頼されるべきかに関する、所与のどのアプリケーション２０２またはどのユーザによる指示も、アプリケーション規則データストア２２２に格納することができる。証明書は、翻訳のための信頼システムを確立する助けとなる。
【００３６】
ユーザまたは開発者は、階層的な信頼できるソースを選ぶこともできる。例えば、ローカライゼーションコンテンツの発生元に基づいて、ユーザは、ＯＳ製造元のみを信頼するかどうかを判断することができ、何も入手可能でない場合は、独立ソフトウェアベンダの翻訳を信頼し、ソフトウェアベンダの翻訳が入手不可能な場合は、開発者コミュニティなどを信頼するしかない。例示的な一実施形態では、この階層は、デフォルトで確立されるが、ユーザは、これを個人設定で単に受諾し、または覆すだけでよい。このような設定は、各アプリケーションまたはこのアプリケーションを実行する個々のマシンに関連付けられたアプリケーション規則において実装することができる。
【００３７】
また、専用ストア２２６は、ユーザのデータストアに存在する点で、ローカルストア２２４と同様であることに留意されたい。ただし、ローカルストア２２４は例示的には、システム全体のストアであるが、専用ストア２２６は、ユーザによって自分専用に使用するために入れられるデータを含む、個々のユーザに対応する信頼できるローカライゼーションコンテンツを示すために使うことができるストアである。したがって、個々の各ユーザは、信頼できる様々なローカライゼーションコンテンツを識別することができる。そのコンテンツは、専用ストア２２６の中で、その特定のユーザのものと識別される。こうすることにより、個々のユーザは、ローカライゼーションプロセスを、個々のアプリケーションに関連付けられたものよりも、さらにカスタマイズできるようになる。例えば、ユーザは、アプリケーションによって必要とされ、許可されるように、自分自身のアプリケーションに変更を行うことができる。ユーザは、ローカルまたは専用ストアを、元のようにコミュニティと共有することもできる。
【００３８】
さらに、特定の翻訳を、修正されないようにロックすることができる。このロックは、悪意があるかもしれない翻訳を避けるために非常に重要であり得る。例えば、入力ソースの１つが、「自分のハードドライブをフォーマットするには、ここをクリックしてください」という用語を、「続けるには、ここをクリックしてください」と翻訳するような悪意のある翻訳を提供する可能性がある。
【００３９】
ＴＭマッチャー２１０は、リソースマネージャ２０６からのリクエストに対する所望のローカライゼーションを取得すると、フィルタ２１８およびストア２２２にあるアプリケーション規則を適用する。フィルタ２１８は例示的に、所与の任意の言語の、どのローカライゼーションコンテンツにもあるべきでない用語を定義する。例えば、一部のユーザが、非常識な用語またはその他の不愉快なコンテンツのフィルタリングも望む場合がある。したがって、フィルタ２１８は、リソースマネージャ２０６によってリクエストされる、ローカライズされたコンテンツの使用に先立って適用される。フィルタ（ならびにその他のあらゆるタイプの検証）の適用は、ローカライゼーションにおける１ステップであり、例えば編集、ダウンロード、使用などのプロセス中の多くのステップにおいて、適用することができることに留意されたい。
【００４０】
例えば、検証は概して、（例えば、不正な活動に対して）２つのコンポーネントが完全に互いを信頼し、通信するために使われるチャネルも信頼されていない限り、この２つのコンポーネントがデータを交換するときは常に生じる。したがって、例えば、リソースが、信頼できるソースからダウンロードされ、有効な署名を含む場合、他に検証（署名の検証以外）を行う必要はない。ソースは信頼されるが、ファイルに署名されていない場合、情報を移送するために使われるチャネルも、信頼されるかどうかの判定のために評価される。例えば、インターネットからダウンロードされた無署名ファイルは、同じコンピュータ内の別のフォルダからユーザがコピーした無署名ファイルよりも改竄される可能性が高い。いくつかの要因に応じて、迅速で機能的な検証への着手を決定することもでき、不快な単語の調査や、元のリソース中の用語が確実に目標リソースに存在するように（例えば、「メニュー」が「フォルダ」と翻訳されないように）するなど、何らかの追加コンテンツ検証を執り行うこともできる。
【００４１】
アプリケーションセットアップ／設定コンポーネント２４０は、セットアップ中およびセットアップ後の設定において使われる。セットアップ中に、アプリケーション２０２は、そのリソースをローカルリソースストア２２４に登録する。コンポーネント２４０は例示的に、ユーザに、アプリケーションがまだローカライズされていない場合、プラットフォームによってサポートされるターゲット言語にローカライズすることを可能にするユーザインターフェースを公開する。ユーザインターフェースは、ユーザに、ターゲット言語を明示的に選択させることができる。オンデマンドローカライゼーションコンポーネント２４１は、こうしたリクエストをリソースマネージャ２０６に、かつおそらくはＴＭマッチャー２１０にも渡す。
【００４２】
レガシーアプリケーション２４２は、過去に開発され、プラットフォーム２００を認識していないアプリケーションを表す。互換レイヤ２４３は、レガシーアプリケーション２４２によって使われる既存のリソースインターフェースをサポートし、コールをリソースマネージャ２０６にリダイレクトする。
【００４３】
図３は、本発明の一実施形態による、プラットフォーム２００の動作をより詳細に示すフロー図である。ランタイム中、ユーザは最初にアプリケーション２０２を選択し、または起動する。これは、図３のブロック３００で示してある。次に、本実施形態では、リソースマネージャ２０６が、アプリケーション２０２に関連付けられた、必要とされるリソースをキャッシュメモリ２０７（または別の記憶デバイスだが、このコンテキストではすべて「キャッシュ」と呼ぶ）にロードする。これは、ブロック３０２で示してある。
【００４４】
バックグラウンドで、オペレーティングシステム（具体的には、ローカライゼーションプラットフォーム２００）が、キャッシュ２０７中のリソースを、所望の言語に翻訳し始める。その際、プラットフォーム２００は、アプリケーション２０２に関連付けられたアプリケーション規則２２２、およびアプリケーション２０２またはユーザ（どちらでも、当てはまる方）に関連付けられた信頼モデル（すなわち、信頼できるローカライゼーションソース）を使用する。リソースマネージャ２０６は、キャッシュ２０７に格納されたリソースに対して、ＴＭマッチャー２１０を呼び出して、リソースのローカライズされた値を取得する。バックグラウンドでキャッシュ２０７にロードされるリソースのローカライゼーションを、図３のブロック３０４で示す。
【００４５】
アプリケーション向けの、ローカライズされたリソースの投入（populating）は、ランタイムまで待つ必要はないことにも留意されたい。それどころか、投入は、セットアップ中にも、別のときにも行うことができる。さらに、ローカライゼーションの一部は、ランタイム時に実行することができ、それ以外の部分は、セットアップ時または別のときに行うことができる。例えば、より計算コストが高い、または時間のかかるタスクのいくつかは、バックグラウンドで、セットアップ中または別のときに実施することができ、より速いタスクは、ランタイム時に実施することができる。さらに別の実施形態では、タスクは、特定のどの時間でも実施されるように（ユーザによって）割り当てることができ、こうしたタスクの状況も同様に表示することができる。
【００４６】
リソースがバックグラウンドでローカライズされると、ローカライズされた値は、キャッシュ２０７に格納されるだけでなく、ローカルストア２２４にも置かれる。したがって、アプリケーション２０２が次に起動されるとき、ローカライズされているリソース値がすべて、既にローカルストア２２４中に配置されているので、ローカライゼーションプロセスはより速くなる。したがって、ローカライゼーションはシステムによって記憶されるので、ＴＭマッチャー２１０は、ＴＭデータサービス２１４を検索する必要も、機械翻訳システム２１６を使って翻訳された値を持つ必要もない。ローカライゼーションは、単にローカルストア２２４から取り出せばよい。ローカルストア２２４への翻訳の格納を、図３のブロック３０６で示す。また、必要に応じて、全翻訳を、ダウンロードマネージャ２１２を使って、ローカルストア２２４にロードすることができる。
【００４７】
当然ながら、本システムは、アップデートも調べることができる。例えば、より優れた翻訳を見つけ出すことができないために、理想的でない翻訳が最初に選ばれる可能性がある。しかし、後からより優れた翻訳を、ソース２０４の１つによってメモリの１つにロードすることができる。リソースは次いで、この翻訳に適応するために、周期的にアップデートすることができる。
【００４８】
同様に、コードのアップデートにより、以前ローカライズされたリソースが妥当でなくなる可能性がある。したがって、一実施形態では、コード変更が、リソースの一部または全部の再ローカライゼーションをトリガする。
【００４９】
リソース翻訳が行われると、レイアウトエンジン２０８が、アプリケーション用の表示のレイアウトの修正を要求する特定の翻訳を識別する。さらに、アプリケーションにおいてソース言語で使われているフォントが、ターゲット言語でのフォントにマップされる。このマップは、レイアウトエンジン２０８または他のコンポーネントによって、ランタイム時またはそれ以前に行うことができる。レイアウトおよびフォントマッピングは、図３のブロック３０８で示す。
【００５０】
このようにして、オペレーティングシステム内のローカライゼーションプラットフォーム２００は、アプリケーション２０２に関連付けられ、キャッシュ２０７に格納されているリソースのローカライズを続ける。ただし、アプリケーションが、バックグラウンドでまだローカライズされていないリソースに対してリクエストを行うこともあり得る。このようなリクエストは、図３のブロック３１０で示す。リソースマネージャ２０６は最初に、リクエストされたリソースが既にローカライズされ、キャッシュ２０７に格納されているかどうか判定する。これは、図３のブロック３１２で示してある。ローカライズされ、格納されている場合、リクエストされたリソースのローカライゼーションは、単にキャッシュメモリ２０７からアプリケーション２０２に返される。これは、ブロック３１４で示してある。
【００５１】
ただし、リソースがまだバックグラウンドでローカライズされキャッシュ２０７に格納されていない場合、リソースマネージャ２０６は、ＴＭマッチャー２１０に対してリソースのローカライゼーションをリクエストする。ＴＭマッチャー２１０は次いで、アクセスできる様々なソースに対してリソースのローカライゼーションをリクエストし、リクエストされたリソースのローカライゼーションを返す。ＴＭマッチャー２１０の起動を、図３のブロック３１６で示す。ＴＭマッチャー２１０の動作については、後で図４を参照してより詳しく説明する。
【００５２】
キャッシュ２０７中のリソースをバックグラウンドでローカライズすることによって、ローカライゼーションプラットフォーム２００は、従来のシステムからは大幅に逸脱している。従来のシステムは、リソースを有するキャッシュをロードする。しかし、このローディングは、ローカライゼーションにおける深刻な欠点につながる。ローカライゼーションプラットフォームが、オンザフライでＭＴを起動することによって、アプリケーションがリソースをローカライズするためのリソースのリクエストを待つと、おそらくアプリケーション２０２の動作に望ましくない遅れが生じるか、または結果が、このような制限された環境で用いることができるアルゴリズムの組によって限定される（性能要件により正確さが制限される）。現在の機械翻訳技術は、一文を翻訳するのに約０．５秒を要する。オンザフライ翻訳および他のローカライゼーションが、本発明によって確かに企図されるが、リソースをすべて、機械翻訳システム２１６を使ってオンザフライで翻訳すると、おそらくアプリケーションの動作に過度の遅れを生じる。当然ながら、リソースの相当数が以前ローカライズされたことがあり、ローカルストア２２４または専用ストア２２６に格納されている場合、あるいは翻訳メモリ２３４に格納され、リソースの比較的ごく一部分のみがＭＴシステム２１６によって翻訳される必要があった場合、バックグラウンドでのキャッシュ２０７のローカライゼーションは、アプリケーション２０２の動作を危うくするのを避けることほど重要ではない。
【００５３】
いずれのケースでも、ＴＭマッチャー２１０は、バックグラウンドで、かつ／またはオンザフライで、キャッシュ２０７中の値をローカライズし続ける。ＴＭマッチャー２１０は、リソースがすべてローカライズされるまで続ける。
【００５４】
概して、ＴＭマッチャー２１０は、１つまたは複数のデータストアに対して働き得る。ＴＭマッチャー２１０は、任意選択で、他のリサイクルエンジン（ＴＭマッチャーやＭＴシステムなど）と統合することができる。ＴＭマッチャー２１０は、任意選択で、専門用語を、その翻訳および関係（オントロジー）とともに利用することができる。ＴＭマッチャー２１０は、メタデータを使って、ストア中のデータのどの断片が、検索空間（ドメインエリア、制作者、承認状況、または他のメタデータなど）を構成することになっているか決定することができる。ＴＭマッチャー２１０は、文字列自体に対する制約（アプリケーション規則／フィルタ）を見て、より一致するものまたはより簡単に検証される一致を生み出すために、制約を利用することができる。当然ながら、こうした特徴はすべて任意選択であり、より多くの特徴を追加することもでき、所望に応じて変更することも、ＴＭマッチャーの動作から削除することもできる。
【００５５】
図４は、ＴＭマッチャー２１０の動作の一実施形態を例示のためにのみ、より詳しく示すフロー図である。リソースマネージャ２０６は最初に、ＴＭマッチャー２１０にローカライゼーションを求めるリクエストを送る。これは、図４のブロック３５０で示してある。ＴＭマッチャー２１０は次いで、現在のコンテキスト用の信頼モデル情報を取得する。一実施形態では、信頼モデル情報は、データ自体とともに格納されるが、専用ストア２２６に格納しても、現在のコンテキストを与えられた場合、信頼できるローカライゼーションソースが判定されるべきコンテキストの他のいかなる項目を識別する他のどのソースに格納してもよい。信頼モデル情報は、どのソースが信頼されるかという指示、またはローカライズされた項目が有効であり検討されるために満たされなければならない要件のリストを含み得る。この情報は、アップデートシナリオも支援する。コードに対するアップデートは、リソースが満たさなければならない制約の組を変更し得る。こうした変更には、予め仮定された有効なリソースの再検証が要求される。これは、図４のブロック３５２で示してある。
【００５６】
ＴＭマッチャー２１０は次いで、例示的に、信頼できるすべてのローカライゼーションソースに対してリソースのローカライゼーションをリクエストするが、所与の順序でそうすることができる。チェックされるソースの順序および数は例示的には、状況（例えば、ローカライゼーションがランタイム、セットアップ時、バッチ処理中に起こっているかどうかなど）に応じて変わる。これは、ブロック３５４で示してある。言い換えると、一実施形態では、ＴＭマッチャー２１０は、信頼できないソースに対しては、翻訳をリクエストすることさえない。その事例では、ユーザが、入力ソース２０４において、一般社会から、または開発者コミュニティからの翻訳を信頼することを希望しないと仮定する。ＴＭマッチャー２１０は、信頼できるソースから発生したローカライゼーションコンテンツを求めるだけであり、そうすることによって、一般社会および開発者コミュニティによって与えられるローカライゼーションコンテンツをすべて排除する。当然ながら、ＴＭマッチャー２１０は、現在のコンテキストを与えられた場合、信頼できるソースに基づいてローカライゼーション結果がリクエストされたソースを修正する。
【００５７】
ＴＭマッチャー２１０からのリクエストに応答して、ローカライゼーションコンテンツをリクエストされた様々なソースが、ソースに関連付けられた信頼性スコアを返す。例えば、ソース言語での入力が与えられた場合に、翻訳が正しい可能性はどの程度かを示す、関連付けられた信頼性レベルを、翻訳結果が有することは非常に一般的である。本発明の目的にとって、翻訳または他のローカライゼーションに関連付けられた信頼性を示すために、どのような特定の測度が使われるかは重要ではない。説明のための実施形態では、すべてのソースからのスコアは、同じ測度か、または互いに相関するいくつかの測度を用いるので、ＴＭマッチャー２１０は、スコアの相対規模を判定することができる。翻訳（またはローカライゼーションコンテンツ）に関連付けられた信頼性スコアの戻しを、図４のブロック３５６で示す。
【００５８】
ＴＭマッチャー２１０は次いで、最高スコアの信頼できるソースから、ローカライズされたコンテンツ（例えば、翻訳）を取得する。これは、ブロック３５８で示してある。また、ＴＭマッチャー２１０は、ローカライズされたコンテンツを取得するために要求される時間、ローカライズされたコンテンツがターゲット市場にどれだけ近づいているか、検証基準または他の基準あるいはいくつかの基準の任意の組合せなど、他のまたは追加基準にも基づいて、ローカライズされたコンテンツを選択することができる。さらに、ＴＭマッチャーは、多数のソースからローカライゼーションコンテンツを取得し、組み合わせることができる。
【００５９】
翻訳が受け取られると、ＴＭマッチャー２１０は、フィルタ２１８および他の検証を適用して、アプリケーションおよびコンテキストならびにユーザによって所望されるどのフィルタまたは検証基準を与えられても、ローカライゼーションコンテンツ（または翻訳）が適切になるようにする。フィルタおよび他の検証の適用については、図４のブロック３６０で示す。ＴＭマッチャー２１０は、例示的には、所与のリソース向けに取り出されたローカライゼーションコンテンツがアプリケーションの動作を阻止することも、不適切な動作を引き起こすことも、アプリケーションをクラッシュさせることもないようなアプリケーション規則も適用する。フィルタリングおよび検証処理のいくつかは、プロセスにおけるこの時点で、必要なすべてのステップを実施するのを待つのではなく、予め計算できることにも留意されたい。
【００６０】
上記の処理が行われると、ＴＭマッチャー２１０は、リソースマネージャ２０６に結果を返す。これは、ブロック３６２で示してある。このプロセスは、ＴＭマッチャー２１０がリソースマネージャ２０６によって呼び出されるといつでも実施されることが理解されよう。したがって、上記プロセスは、キャッシュ２０７中のリソースがバックグラウンドでローカライズされているときに実施され、アプリケーション２０２が、依然としてローカライズされていないリソースに対するコールを行うときに実施される。
【００６１】
いずれのケースでも、ＴＭマッチャー２１０は、所望の言語で対応可能な翻訳がないか、または返された信頼性スコアが所与の閾値未満であるが、機械翻訳システム２１６を使って翻訳に着手しなければならないことを知ることができる。その時点で、一実施形態では、リソースマネージャ２０６は通知を受け、ＴＭマッチャー２１０に、フォールバック言語での翻訳を探すようリクエストすることができる。例えば、ターゲット言語がカタロニア語の場合、アプリケーション２０２は、リソースの翻訳をリクエストすることができるが、カタロニア語での翻訳が入手可能でない場合がある。しかし、リソースマネージャ２０６は、スペイン語がカタロニア語にとって第１のフォールバック言語であるように構成することができる。その場合、ＴＭマッチャー２１０は、カタロニア語での翻訳が入手可能でなく、このような翻訳を取得するためには機械翻訳システム２１６を呼び出さなければならないという指示をリソースマネージャ２０６に返す（あるいは、ＴＭマッチャー２１０による第１のコールにおいて、ＭＴシステム２１６をコールすることができる）。リソースマネージャ２０６は、オンザフライ機械翻訳に関連した実施上の不利益を受けるのではなく、単に、ＴＭマッチャー２１０に、リクエストされたリソースの翻訳をスペイン語で返すようリクエストすればよい。スペイン語での翻訳が入手可能な場合は、ＴＭマッチャー２１０によって返される。
【００６２】
当然ながら、上述したように、フォールバック地域／言語は、様々な地域が他の様々な地域にとってのフォールバックとなり、その最終的なフォールバックがソース言語となり得るように、所望のどの程度までも階層的にカスケードすることができる。したがって、最終的なフォールバックに到達すると、リクエストされたリソースの翻訳を提供するのではなく、リソースマネージャ２０６は、アプリケーション２０２に、プラットフォームによって保障される、リクエストされたリソースを最終的なフォールバックの形で単に返すので、アプリケーションは、クラッシュすることも、プラットフォームのせいでユーザとの対話点を失うこともない。
【００６３】
ユーザは例示的には、フォールバック階層がどのように作用するかを設定することもできる。例えば、ユーザは、リソース群を一緒に（例えば、ダイアログをいくつかの文字列とともに）表示することを、ダイアログのいくつかの部分をある言語で（または、ある市場にローカライズされる）、いくつかの部分を別の言語で（例えば、フォールバックで）見せることができるように指示することができる。他のユーザは、表示されたリソース群がすべて、１つの言語となる（または同じ市場にローカライズされる）ように指示することができる。
【００６４】
ユーザは、アプリケーションを、プラットフォーム２００によって翻訳させるように起動する必要がないことにも留意されたい。ユーザは、ローカライゼーション用のアプリケーションまたは他のソフトウェアコンポーネントを選択するだけでよく、プラットフォーム２００は、バックグラウンドでローカライズすることができる。例えば、一実施形態では、ユーザは、アプリケーションを右クリックし、メニューから、「ローカライズする」を選択する。プラットフォーム２００は次いで、アプリケーションのローカライズをバックグラウンドで開始し、ローカライズされたコンテンツをローカルストアに格納する。コンテンツは、バックグラウンドでローカライズすることもできる。一実施形態では、ユーザは、ファイルシステムまたはサーバに格納されているドキュメントを右クリックし、「ローカライズする」を選ぶ。ローカライゼーションプラットフォームは、ドキュメントをバックグラウンドでローカライズする。同じことが、インターネットからダウンロードされるドキュメントに当てはまる。
【００６５】
さらに、アプリケーションがインストールされるとき（またはそれより後で）、ユーザは、異なる複数の言語をインストール用に選択することができる。こうした言語は次いで、ローカルデータストア２２４にロードされる。翻訳は、コンパクトディスク、またはその他の記憶媒体に格納することができる。
【００６６】
図５は、開発のコンテキストにおけるプラットフォーム２００のコンポーネントを示すブロック図である。多数の項目は、図２に示すものと同じであり、同じように番号をつけてある。
【００６７】
図５は、支援プラットフォーム３８０および開発コンポーネント３８２を示す。開発コンポーネント３８２は、ワシントン州レドモンドのマイクロソフトコーポレーションから市販されているＶｉｓｕａｌ  Ｓｔｕｄｉｏや、オーサリングソフトウェア用の他のあらゆる所望の開発コンポーネントなど、望ましいどの開発コンポーネントでもよい。支援プラットフォーム３８０は、翻訳プラットフォーム３８１など、開発者にリサイクル率が高い製品を開発させるプラットフォーム２００の１つまたは複数のコンポーネントと対話することによって、コンテンツのオーサリングを支援し、異なる言語へのローカライゼーション用コストを大幅に削減する。開発コンポーネント３８２および支援プラットフォーム３８０は両方とも、プラットフォーム２００によって提供されるサービスを消費する。その際、開発コンポーネント３８２および支援プラットフォーム３８０は、他のコンポーネントとともに、特定の実践形式をフロントエンド開発／オーサリングプロセスに構築し、このプロセスは、おそらく、異なる様々な市場に参入するための製品のローカライズ可能性を大幅に高め、また、開発投資に対する収益を大幅に上げるだろう。
【００６８】
ビルドコンポーネント３８４は、ローカライゼーションプラットフォームおよび／または支援プラットフォーム３８０あるいはデータストア２２２中のＡＰＩおよびアプリケーション規則を介してローカライゼーションプラットフォームにアクセスすることができる他のどのコンテンツオーサリングツールによって提供される情報も利用し、アプリケーション２０２ならびにコンテンツドキュメントを構築する。
【００６９】
図５の記述は、概してアプリケーションを開発する開発者またはコンテンツをオーサリングする制作者に関連して進むことにも留意されたい。ただし、本システムは、開発者が開発し、または制作者がオーサリングしているコンテンツにもソフトウェアのタイプにも関わらず、様々なものに対して使うことができる。
【００７０】
本発明の一実施形態によると、開発者または制作者が、それぞれソフトウェアを開発するための開発コンポーネント３８２またはコンテンツを開発するための支援プラットフォーム３８０を使う２通りの方法がある。第１の方法は、プラットフォームのアプリケーションプログラミングインターフェース（ＡＰＩ）または他の同様の機構を介して、何らかの同様のコンテンツまたはソフトウェアが既に開発されているか、プラットフォーム２００内のメモリのいずれかに格納されているどうか判定する、自分のオーサリング／開発環境における特徴を用いるものである。第２の方法は、開発者が、ソフトウェアまたはコンテンツ（元の、またはそうでないもの）を単に開発するものである。後者のケースにおいて、プラットフォーム２００は、単に開発者にコンテンツ／ソフトウェアのリサイクル率（例えば、以前の翻訳を与えられた場合、プラットフォーム２００において、異なる言語に翻訳することができるコンテンツ／ソフトウェアの量）に関するフィードバックを提供し、リサイクル率を上げるであろう実施を推奨し、また、ローカライゼーション後にアプリケーションが誤動作するのを阻止する実践形式を推奨するように振る舞う。
【００７１】
第１の実施形態によると、コンテンツ制作者は、支援プラットフォーム３８０を介して入力を与え、支援プラットフォーム３８０は、リソースをオーサリングするためのＡＰＩまたは他の同様の機構をコールする。これは、図６のブロック５００で示してある。支援プラットフォーム３８０は次いで、ＴＭマッチャー２１０を呼び出して、ローカルストア２２４にアクセスし、既に翻訳されているすべてのタイプのリソースを返す。これは、図６のブロック５０２で示してある。例えば、開発者のプラットフォームは、コンテンツ開発者がリソースのオーサリングを希望していることを示すＡＰＩを呼び出すことができる。それに応答して、プラットフォーム３８０は、プラットフォーム２００に含まれ、異なる様々な言語に既に翻訳されているリソースの相異なるクラスすべての指示を返す。例えば、プラットフォームからの、開発者プラットフォームによってユーザに提示される結果は、「メニュー」および「エラーメッセージ」クラスであると仮定する。
【００７２】
ＡＰＩ中の公開されている機能を介して、開発者は、「エラーメッセージ」クラスを選ぶことができ、支援プラットフォーム３８０は、プラットフォーム２００のこの情報（どのメモリにも格納することができるということ）をリクエストし、次いで、プラットフォーム２００に含まれるエラーメッセージの相異なるクラスをすべて返す。開発者は次いで、エラーメッセージのクラスの１つを選択し、プラットフォーム３８０は、そのクラスに関連付けられた具体的なエラーメッセージをすべて返す。ユーザは次いで、既にオーサリングされているとともに、ローカライズが既に高効率である（例えば、異なる様々な言語に既に翻訳されているか、あるいはローカライズされているために）エラーメッセージの１つを単に選択するだけでよい。タイプ、クラスおよび具体的なリソースを、入手可能な場合に選択する開発者については、図６のブロック５０４で示す。
【００７３】
当然ながら、開発者がオーサリングすることを希望する具体的な、正確なメッセージが既に入手可能でない場合があることも理解されよう。その場合、ユーザは、非常に近いメッセージを選択し、修正することができる。修正されたメッセージはおそらく、その大多数が既にローカライゼーションプラットフォーム２００内に存在するので、多くのケースにおいて、かなり効率的にローカライズすることが可能である。いずれのケースでも、同一のメッセージではなく同様のものを選ぶと、信頼性において不利益が生じる。選んだリソースの修正を、図６のブロック５０６で示す。
【００７４】
このタイプのリサイクルは、制作者に、従来技術によるローカライザに比較して、開発後に起こる高度の柔軟性をもたらす。例えば、制作者は、ソフトウェア文字列上の配置物の数を変更することができるが、従来のローカライザは、より一層制約を受ける。また、制作者は、ソース文を全体的に置き換えることができる（主要な用語は維持されると仮定する）が、従来のローカライザは、そうすることができない。「ファイル｛０｝は存在しません」というエラーメッセージ用の文を検討する。制作者は、この文を、「ドライブ｛１｝上のファイル｛０｝は見つけることができませんでした。」と変更することができるが、従来のローカライザは、第１文の翻訳を、第２文用の翻訳として使うことができない。というのは、コードにアクセスせずには、従来のローカライザは、配置物の数に関する、コードの根底にある前提を変更することができないからである。リサイクルは、メッセージ中に見つかったテキストを参照して行うことができるだけでなく、データストア２３６中の共通ＵＩ要素を参照して行うこともできる。従来のＵＩ要素を再利用すると、製品のリサイクル率およびローカライゼーションも高まる。
【００７５】
開発中に、開発者は、オントロジー間関係ストア（ontology-to-ontology store）２３２の提供を希望する場合もある。オントロジーとは、概念化（conceptualization）の規格であり、コンテンツおよび文字列の意味的エンコードを可能にする、用語間の関係を記述する。オントロジーの一実施形態は、例えば特許文献１および特許文献２に示されている。オントロジーの別の説明が、例えば非特許文献１に示されている。
【００７６】
概して、単語は、文脈に応じて異なるように翻訳される。具体的には、単語または用語は、ソフトウェアのローカライゼーションにおけるアプリケーションコンテキストに応じて異なるように翻訳することができる。ローカライゼーションプラットフォーム２００は、用語間の関係を記述するオントロジーデータストア２３２の形の意味データにアクセスする。オントロジーは、単語または用語とともに意味情報を入れることによって、手作業でも、単語または用語の、他の単語または用語への近接によって意味的文脈を判断することが可能なアルゴリズムを適用することによって、自動的にも生成することができる。データストア２３２は例示的には、リソースフォーマットから導出された構造およびアプリケーションコンテキストによって投入を受ける。オントロジーストア２３２における意味的エンコードのタイプにより、プラットフォーム２００は、翻訳されるリソースに対するセマンティクスの多義性を排除することが可能になるとともに、クエリの多義性排除も可能になるので、強力な検索機能も提供する。翻訳プラットフォーム３８１は、図６のブロック５０８において、多義性排除が要求されるかどうか判定する。要求される場合、オントロジーストア２３２にアクセスして、多義性のある意味情報を取得することもでき、開発コンポーネント３８２が開発者に対して同じことを行い得るのと同じやり方で、支援プラットフォーム３８０が制作者に対して多義性のある意味情報をリクエストすることもできる。これは、図６のブロック５１０で示してある。
【００７７】
開発者が製品の開発を続ける際、オーサリングされたリソースはそれぞれ、プラットフォーム２００内の翻訳プラットフォーム３８１によるローカライゼーションレート推定値に従う。オーサリングされたリソースのローカライゼーションレートを推定する際、翻訳プラットフォーム３８１は、既に翻訳（あるいはローカライズ）されており、プラットフォーム２００上のどこかに存在するリソースの割合を識別する。翻訳プラットフォーム３８１は、システム２１６による機械翻訳をリソースに受けさせるための要件も明らかにし、プラットフォーム２００上にある翻訳それぞれに関連付けられた信頼性スコアも考慮に入れる。こうした項目は、オーサリングされる製品が、異なる言語で稼動する市場にローカライズするのがどれだけ容易であるかという測度であるリサイクル率を提供するように組み合わされる。実行される場合、全体的リサイクル率が、図６のブロック５１２において示される。
【００７８】
リサイクル率は、多種多様な異なるやり方で用いられることができることに留意されたい。例えば、開発者が、システム全体のあるコンポーネントを開発しているに過ぎない場合、コンポーネントは、チェックインされることが許可される前に、一定のリサイクル率閾値を満たすことが要求され得る。同様に、リサイクル率は、製品が他の市場に導入される可能性がどの程度あるかを問われた場合、製品の値を示し得るであろう。当然ながら、このリサイクル率は、多種多様な他のやり方でも用いられることができる。
【００７９】
システムは、プラットフォーム上で開発されないコードに対するリサイクル率を計算できることにも留意されたい。コードは、プラットフォーム２００に単に与えるだけでよく、ＴＭマッチャー２１０が、コードに対するリサイクル率を全体として計算し、所望に応じて返すことができる。この計算法は、製品を新たな市場に展開するかどうかの決定にも、製品における権利を購入するかどうかの決定にさえも使うことができる。
【００８０】
ここで、開発者が、既に存在するリソースを選んでいない実施形態を参照して、記述を進める。開発者は、予めオーサリングされたリソースからの選択を希望せず、元のリソースまたはコンテンツをオーサリングすることができると仮定する。これは、図６のブロック５１４で示してある。その場合、開発者は、コンテンツの部分を単にオーサリングし、支援プラットフォーム３８０が、ＴＭマッチャー２１０をコールして、オーサリングされたコンテンツに対するリサイクル率を判定する。これは、図６のブロック５１６で示してある。ＴＭマッチャー２１０は次いで、そのローカライゼーションソースにアクセスし、新たにオーサリングされたリソースまたはコンテンツに対するリサイクル率を返す。これは、図６のブロック５１８で示してある。
【００８１】
この時点で、プラットフォーム２００は、制作者が開発中の製品のリサイクル率を向上させるのを助け得る実践形式（practices）に関して、制作者に通知を行い、またはローカライズされるとアプリケーションを誤動作させる可能性がある特定の実践形式について制作者に警告するのに使うこともできる。こうしたヒントの戻しを、図６のブロック５２０で示す。一実施形態では、こうしたヒントは、製品のソースが再利用されている場合でさえも与えられる。ソースが再利用されているということは、当然ながら、チェックのいくつかが既に実施されていることを意味し得る。
【００８２】
リサイクル率またはアプリケーション機能に影響するかもしれない実践形式のいくつかの例は、例えば、長い文字列を書くことを含む。長い文字列は、理解しにくいだけでなく、翻訳するのがより難しい。さらに、ソフトウェアが、アプリケーションをクラッシュさせるであろうバッファのオーバーランという危険を提示する。リサイクル率またはアプリケーション機能に影響し得る他の実践形式は、特殊文字の使用または不適切な、すなわち正しくない文法の使用を含む。適切な文法構文を使用すると、テキストを翻訳する能力が大幅に向上する。ＴＭマッチャー２１０はしたがって、コードのリサイクル率および実践形式の助言に関してリアルタイムフィードバックを提供する。
【００８３】
また、プラットフォーム２００は、分析されているコンテンツにおけるこうした問題エリアの悪影響を削減するための特定のアクションをとり得る。こうしたアクションは、アプリケーションが、ローカライゼーションを受けた後でクラッシュする可能性を削減する。プラットフォーム２００は、こうした救済アクションがとられることをユーザに警告することができる。
【００８４】
本発明に関して、他のいくつかの項目にも留意されたい。第１に、本発明は、例示的にはホットキーの自動化（hot key automation）を提供する。翻訳プラットフォーム３８１は例示的には、２つの機能が所与の１つのＵＩにおいて同じホットキーを割り当てられるのを避けるために、所与のどのＵＩでも表示されるホットキーを追跡する。翻訳プラットフォーム３８１は、ホットキーを自動的に選択するように呼び出すこともでき、所与の１つのＵＩにおいてホットキーの重複が企てられないよう確認するために単に呼び出すこともできる。ホットキーを選択し、またはユーザに推奨できるようにするためには、プラットフォームは、どの項目をユーザが同時に利用できるかということに関する情報を必要とし、それによって繰返しを避けることができる。その情報は、ユーザのコンピュータに情報を提供するために必要とされるものに密接に関連する。
【００８５】
本発明は、ランタイム環境の検証およびシミュレーションも提供することができる。開発者は、コンポーネントをオーサリングすると、開発プラットフォーム３８２においてＡＰＩを呼び出すことができ、プラットフォーム２００は、ローカライゼーションが要求されるランタイム環境をシミュレートする。ランタイムシミュレーションにより、開発者は、ローカライズされた後の、表示画面上の表示を物理的に見ることができる。こうすることにより、開発者は、バグをチェックし、表示の美観を評価して、所望に応じて変更を行うことができる。
【００８６】
本発明はこのようにして、開発者が、既に開発されたコンテンツを再利用する能力を高める。こうすることにより、製品のリサイクル率およびローカライゼーションが大幅に高まる。
【００８７】
さらに、本発明は、オペレーティングシステム、アプリケーション、コミュニティおよびサードパーティ、さらに機械翻訳からの、ローカライズされたコンテンツを知的に組み合わせるシステムを提供する。リソースマネージャは、様々なソースまたはデータストア（ローカライゼーションコンテンツコンポーネントとも呼ばれる）から、必要とされる言語あるいは他の文化的または市場基準に従ってリクエストされたリソースを返すことによって、アプリケーションのリソースをロードする。
【００８８】
さらに、ローカライゼーションプラットフォームは、ローカライズされたデータを、多種多様なリクエスト側エンティティ、例えばアプリケーション、ブラウザ、検索エンジン、リソースローダ、オーサリングツールなどに提供するために使うことができる。
【００８９】
また、コミュニティおよび一般社会にローカライゼーションの代替案を推奨させることによって、本発明は、コミュニティの標準ローカライゼーションを定義させ、ときには、いくつかの非常に小規模な市場へのローカライゼーションを可能にする。例えば、本発明は、ユーザに、英語のアプリケーションをスワヒリ語向けにローカライズさせる。ユーザは、このローカライゼーションを、アプリケーションにおいて様々なリソースの推奨された翻訳としてプラットフォーム２００に戻すことができる。他の南アフリカのユーザは、このローカライズされたコンテンツを信頼し、スワヒリ語でダウンロードすることも、自分たちでローカライズし、またはローカライゼーションを修正し、独自のローカライゼーションをプラットフォーム２００に戻すことを選ぶこともできる。このようにして、アプリケーションはローカライズされ、見直されることができ、小規模な市場規模のためにそれ以外のやり方では不可能だった市場で流通させることができる。
【００９０】
一実施形態では、入力ソース２０４がデータを提供すると、データ収集コンポーネント２０５も、例えば発生元、使用、コンテキスト情報（リソースのバージョン付けなど）、信頼性レベル、属性、機械翻訳ヒントなどのメタデータを記録する。同様に、他のデータを集め、格納することもできる。また、一実施形態では、データを提供した入力ソース２０４のみが、そのデータを変更することができる。
【００９１】
本発明は、コミュニティからの翻訳のダウンローディングだけでなく、翻訳のアップローディングも提供する。さらに、ソース文字列も、同様にしてアップロード／ダウンロードすることができる。
【００９２】
サードパーティ企業およびコミュニティが、プラットフォーム２００に新しいソースおよび翻訳メモリを追加できることにも留意されたい。例示的な一実施形態では、プラットフォーム２００が、新しいソース用語およびそのメタデータの追加を可能にするウェブページまたはウェブサービスを提供する。ユーザは例示的には、新たに追加された各アイテムのソースをプラットフォーム２００が判定し得るような認証を受ける。
【００９３】
さらに、プラットフォーム２００は例示的には、ユーザにいくつかの文字列を一度にアップロードさせることを可能にする、公表されたスキーマ（ＸＭＬスキーマなど）に従って動作する。この場合もやはり、すべての動作が認証を要求し得るので、各文字列のソースが知られている。このようなソース文字列は例示的には、１つまたは複数の翻訳とともに追加することができる。プラットフォーム２００は、用語データベース中の用語を参照して同様に動作する。
【００９４】
また、一実施形態によると、コミュニティは、プラットフォーム２００におけるソース文字列に翻訳を提供することができる。翻訳を編集する場合、ソース中に存在するメタデータは例示的には、「翻訳者」にとって利用可能であり、メタデータは、翻訳の受諾に先立って強制される。これは、シンプルなウェブインターフェースで行うことができる。こうした翻訳は、ユーザが自分の翻訳をコミュニティと共有することを選んだ場合、他の人々によって使うことができる。
【００９５】
本発明は例示的には、コミュニティが、プラットフォーム２００に既に存在する翻訳を見直すことも可能にする。こうすることにより、翻訳のソースに、自分の翻訳が他のユーザによって何回選ばれたか判定させることができる。こうすることにより、コミュニティにおける入力ソースが、作業の質に基づいて、それ自体の名前を構築することが可能になり、入力ソースがコミュニティにおいてより価値が高くなるように、入力ソースに、より優れたジョブを行わせる。
【００９６】
本発明のさらに別の実施形態によると、開発者は、翻訳用のアプリケーションをアップロードする場合、エンドユーザが製品の独自にローカライズされたバージョンをダウンロードすることを可能にするための機会が与えられる。この選択肢が可能にされた場合、ユーザは、プラットフォーム２００にログインし、製品の個人的なバージョンを生成するために、どの言語、エンジンおよび翻訳を使うかを選ぶことができる。
【００９７】
例えば、ユーザは、コミュニティ（または具体的なユーザ）が承認した翻訳メモリを使って翻訳エンジンの正確な一致のみを指定しながら、製品の「ｘｙｚ」バージョンを所望することができる。このプロセスは、より高い割合のリソース翻訳を取得するために、定期的に繰り返すことができる。プラットフォーム２００は、新たな翻訳が利用可能になると、メールまたは他の警告サービスを介してユーザに通知を提供することもできる。
【００９８】
別の実施形態によると、サードパーティが、プラットフォーム２００に新たなソース検証（または翻訳）エンジンを追加することができる。上述したように、開発者は、プラットフォーム２００にアプリケーションを提出して、アプリケーションが十分にローカライズ可能かどうか判定することができる。サードパーティは、この判定をサポートするための新しいエンジンを書くことができる。サードパーティが、ソース検証を実施するための基準を満たすエンジンを開発する（例えば、所望のインターフェースを実装する）と、サードパーティは、プラットフォーム２００にアップロードし、ユーザにエンジンのダウンロードを託すことができる。本発明に関連して説明したプロセスの他の部分と同様に、署名および認証は例示的には、エンジンのソースが周知であり、ユーザは、そのソースを信頼すると判断していることを確認するために用いられる。
【００９９】
翻訳エンジンを同様にして追加することができるが、例示的には、翻訳エンジンは、既に存在するどの翻訳データも破壊しないようにするためにとられるステップを、プラットフォーム２００に実装しているサーバ上で実行することができる。さらに、本発明は、開発者を支援するためのグローバリゼーションおよび言語的チェックを実施する。本発明は、コミュニティが、開発者を助けることも可能にする。例えば、コミュニティに、ソース文字列を容易にローカライズすることができる特定のドメイン内で、ダイアログボックス上のソース文字列を所望することができる。これは、開発者が十分にローカライズ可能なコンテンツのオーサリングに着手するのを支援する。
【０１００】
説明した実施形態では、特定の機能が特定のコンポーネントに割り当てられるが、これが該当しなくてもよいことにも留意されたい。こうした機能は、異なるコンポーネントによって実施することも、いくつかのコンポーネントを削除し、修正し、または追加することもでき、そのすべてが本発明の範囲内である。
【０１０１】
したがって、本発明は、多種多様な製品および多種多様な入力ソースの過去のローカライゼーションからのローカライゼーション用のデータを統一することが理解できよう。各アプリケーションまたは製品が、他の製品によってアクセス可能でない、翻訳の独自メモリを有するのではなく、プラットフォーム２００は、この情報を、所望に応じて開発者またはユーザによって、異なる製品の以降のローカライゼーションに利用可能にする。プラットフォーム２００は、エンドユーザが、自分のコンピュータ経験をカスタマイズする（ローカライズする）ためのより広範囲の選択肢にアクセスするようなローカライゼーションプロセスも変更する。プラットフォーム２００は、プロセスへのコミュニティの参加も可能にする。その結果、ローカライゼーションタスク自体が製品に依存しなくなり、アプリケーションコンテキストを介して製品にリンクされるだけとなる。他のアプリケーションは、信頼モデルおよびアプリケーションコンテキストが認めた場合、ローカライズされた文字列にいつでもアクセスすることができる。
【０１０２】
特定の実施形態を参照して本発明を説明したが、本発明の趣旨および範囲から逸脱することなく、形体および細部において修正を行うことができることは当業者には理解されよう。
【図面の簡単な説明】
【０１０３】
【図１】本発明を実施することができる環境の例示的な一実施形態を示すブロック図である。
【図２】本発明の態様を実施するランタイム環境を示す、より詳細なブロック図である。
【図３】翻訳が入手可能でない、図２に示すプラットフォーム（またはシステム）の動作全体を示すフロー図である。
【図４】図２に示す照合コンポーネントの動作を示すフロー図である。
【図５】アプリケーションまたは他のコンテンツの開発中に使われる、図２に示すローカライゼーションプラットフォーム（またはシステム）のより詳細なブロック図である。
【図６】本発明の一実施形態による、以降のローカライゼーションを支援する技術を実装する製品をどのようにして開発することができるかを示すフロー図である。
【図１】
2006260558.tif 000003
【図２】
2006260558.tif 000004
【図３】
2006260558.tif 000005
【図４】
2006260558.tif 000006
【図５】
2006260558.tif 000007
【図６】
2006260558.tif 000008
【外国語明細書】
2006260558000001.pdf