JP2009266229A - オペレーティングシステム用多言語ユーザインタフェース - Google Patents

オペレーティングシステム用多言語ユーザインタフェース Download PDF

Info

Publication number
JP2009266229A
JP2009266229A JP2009104318A JP2009104318A JP2009266229A JP 2009266229 A JP2009266229 A JP 2009266229A JP 2009104318 A JP2009104318 A JP 2009104318A JP 2009104318 A JP2009104318 A JP 2009104318A JP 2009266229 A JP2009266229 A JP 2009266229A
Authority
JP
Japan
Prior art keywords
data
binary file
resource
language
alternative
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009104318A
Other languages
English (en)
Other versions
JP4653229B2 (ja
Inventor
Bjorn C Rettig
ビョルン スィー. レティッグ、
Edward S Miller
エドワード エス. ミラー、
Gregory Wilson
グレゴリー ウィルソン、
Shan Xu
シャン クスー、
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009266229A publication Critical patent/JP2009266229A/ja
Application granted granted Critical
Publication of JP4653229B2 publication Critical patent/JP4653229B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation

Abstract

【課題】ユーザインタフェース言語を切り替えるための効率的な機構を提供する。
【解決手段】オペレーティングシステムにおいて、実行可能ファイル内でリソースをアドレス指定する機能は、選択されている言語を定めるユーザ設定に応えて、リソースに対する要求を言語に特殊なリソースにあて先変更するように修正される。この言語に特殊なリソースは、中央経路選択機構に修正を加えなくても代替言語ファイルスーツを拡張できるようにする動的アドレス指定方式を通して代替言語モジュールの中に入れられる。これにより、オペレーティングシステムは修正を加えなくても、既存のリソースおよび実行可能バイナリファイルを使用しながら多言語サポートを提供できるようになる。ユーザは、ユーザインタフェース用の言語を選択できるようになり、リソースローダは、リソースに対する要求を適切なリソースに自動的にあて先変更する。
【選択図】なし

Description

本発明は、概してオペレーティングシステムに関し、さらに特定すると、ユーザインタフェース言語を切り替えるための効率的な機構を提供するオペレーティングシステムに関する。
リソースは、例えばテキストファイルなどのバイナリデータまたは非バイナリデータである。Windows NT(登録商標)およびWindows(登録商標)ファミリのそれ以外のすべてのO/Sでは、リソースはバイナリデータである。リソースデータは、アプリケーションの実行可能ファイル内に常駐することができるため、実行可能ファイルはコードおよびリソースデータがその中にあるバイナリファイルである。コードによって定義されるプロセスは、専用のバイナリ実行ファイルまたはその他の実行ファイルでリソースを使用することができる。このようなプロセスによって使用されるリソースは、リソース専用ファイル、例えばリソース専用の動的リンクライブラリ(DLL)内に常駐することもできる。リソースは、標準またはユーザ定義のどちらかであってよい。標準リソース内のデータは、アイコン、カーソル、メニュー、ダイアログボックス、ビットマップ、機能拡張メタファイル、フォント、アクセレレータテーブル、メッセージテーブルエントリ、文字列テーブルエントリ、またはバージョンを記述する。
ユーザ定義リソースは、ある特定のアプリケーションによって必要とされる任意のデータを含む。オペレーティングシステムプロセスによって必要とされているリソースは、多様なさまざまなやり方で処理されてよい。これらのリソースの多くは、言語に特殊であるワード、記号、フォーマット化データ等を含む。通常、ある特定の言語は、ユーザによって選ばれるオペレーティングシステムインストールパッケージによって決定される。ソフトウェアの言語が英語である場合、英語に特殊なリソースだけがオペレーティングシステムとともにインストールされる。これは、すべての言語をカバーするためにハードディスク上にコピーされなければならないであろう大量の言語に特殊なリソースのために便利である。サポートするために、オペレーティングシステムに単一の言語を提供することも、それによって必要が生じた時に、メモリの中に、およびメモリの中からリソースを効率的にロードおよびアンロードすることができるため、便利である。すべてが常にメモリ内に常駐するにははるかに多すぎるリソースが存在する。これらのバイナリファイルが、リソースが不必要にメモリを占有しないようにリソースのロードおよびアンロードを管理するには、これらのバイナリファイルが、必要とされていない時にリソースが不必要にメモリを占有しないようにリソースのロードおよびアンロードを管理するために、このリソースおよびこのプロセスに特殊なこのリソースを必要とするプロセスを生成するこのコードが同じバイナリファイルに組み込まれてよい。プロセスが呼び出されると、このプロセスのためのこのコードを格納するバイナリファイルおよび添付リソースがメモリの中にロードされるか、あるいはそれ以外の場合、このプロセスによってアクセスできるようになってよい。このプロセスが終了すると、このリソースおよびこのようなファイルのコードセクションがメモリからアンロードされるか、あるいはそれ以外の場合アクセスできなくなる。これらのバイナリファイルは実行プログラム、動的リンクライブラリ(DLL)、デバイスドライバ等であってよい。それらにすべての代替言語リソースが詰め込まれる場合には、過剰な量のメモリが必要とされるであろう。
1つのオペレーティングシステムがこのようなリソースを処理するという例は以下の通りである。第1に、オペレーティングシステムの機能であるリソースファインダが利用され、指定されたリソースの情報ブロックに対するハンドルを作成する。リソースを必要とするプロセスが、このファインダにリソースモジュールハンドルおよびこのリソース名、タイプおよび、オプションで言語IDを送信する。後者は、このリソースモジュールハンドルで定められているこのリソース内の言語に特殊なリソースを指定する。このファインダは、この指定されたリソースの情報ブロックに対するハンドルを戻し、このプロセスはメモリにリソースを入れるためにリソースローダを呼び出すことができる。このプロセスは、このリソースハンドルおよびこのリソースモジュールハンドルを、リソースをメモリの中に格納し、このリソースを含むこのメモリブロックに対するハンドルを戻すこのリソースローダに与える。このプロセスはこのリソースを使用できる。このオペレーティングシステムは、それをメモリの中にロードするこのプロセスがもはやそれを必要としなくなり、終了された後に、あるいは他の状況がそれを必要とする場合に、このメモリを解放するために他のデバイスを使用してよい。前記は、例のオペレーティングシステム内のリソースアクセスファシリティの1つのタイプにすぎない。それ以外の機構は、テキストメッセージを出力バッファ内に格納し、単一関数呼出しのリソースデータに対するハンドルをただちにロードして戻すことによる等の他の方法でリソースを使用できるようにする。これらの機構の共通機能とは、それらがメモリの中またはディスクファイルまたはそれ以外の記憶装置システムの中のどちらかでリソースを検出し、このリソースを、それを要求するプロセスが使用できるようにすることである。これは、ディスクからファイルをメモリの中にロードする、あるいはハンドルまたはそれ以外の何らかのデバイスを提供することによって、単にリソースにアクセスを提供することを伴ってよい。このリソースを格納するこのファイル(、デバイス、またはチャネル)は、この要求側プロセスまたは別のファイルを定めるコードと同じファイルの中にあってよい。このそれ以外のファイルはコードを格納するか、あるいはリソース専用ファイルである場合がある。プロセスは、それがもはや必要としないリソースを明示的にアンロードする必要がない場合がある。
ディスク記憶装置のコストが低い場合、いくつかの例では、オペレーティングシステムの同じインストールが、ユーザにトランスペアレントに、多数の言語にとって適切なリソースを提供することが望ましい場合がある。これにより、多様な言語のユーザは、同じコンピュータを共用できるようになるであろう。ユーザは、ログオンし、所望の言語を選択し、このコンピュータを使用し、その後で選ばれた言語の中のすべてのリソースをベースにしたオペレーティングシステム機能を見るであろう。しかしながら、前記リソース管理体制の回りに構築されたオペレーティングシステムにとって、このオペレーティングシステムを修正し、選択可能な言語に対処するために使用できるオプションは、後述されるように極めて問題があると考えられる。
多言語サポートを提供するためには、あるオプションは、言語ごとにバイナリファイルの異なるセットを提供することである可能性がある。複雑なオペレーティングシステムに、言語に特殊なリソースを格納する約数千のバイナリファイルがある可能性があり、多くの異なる言語をサポートすることが所望される可能性があることを考えると、インストールされるバイナリファイルの数は実際に大きくなるであろう。ユーザによる言語の選択に備えるために必要とされる労力に加え、ファイルの結果的に生じる質量の冗長性は、すべての言語に特殊ではないリソースが、サポートされている言語ごとに重複されるためにはなはだしいものとなるであろう。言語に特殊ではないリソースが重複を必要とするだけではなく、すべてのコードセクションも必要とするであろう。
別のオプションは、異なる言語を必要とする新規ユーザがログオンするたびに、オペレーティングシステムバイナリファイルを新規にインストールすることである可能性がある。このオプションは、それがかなりの量の時間を要するため魅力的ではない。
依然として別のオプションは、各バイナリファイルに異なった言語に特殊なリソースを提供することである可能性がある。これは、各バイナリファイルが言語に特殊なリソースを追加するだけであるため、第1のオプションの冗長性を排除するであろう。しかしながら、このオプションは、各バイナリファイルの再コード化を必要とするであろうため、それはやはり精密で簡潔なオプションではない。これに類似したものが現在非常に限定的に実行されている。いくつかのバイナリファイルは、それぞれがユーザの言語または国に応じて好ましい代替リソースを格納する。これらのバイナリファイルのこのコードセクションは、リソースの好ましい言語に関する「推測」に基づいて異なったリソースをアドレス指定するプロセスを定義する。この「推測」は、例えば、日付フォーマットが選択されているシステムパラメータの設定値に基づいて行われる。したがって、例えば、ロシア様式の日付が選択されると、ロシア語としてタグが付けられたリソースがロードされる可能性がある。
現在、限られた根拠に基づいた言語選択を実現する少なくとも1つの種類のオペレーティングシステムがある。このオペレーティングシステムは、それぞれの言語に別個のテキストファイルを提供する。プロセスがある特定の言語でのテキストファイルリソースを必要とすると、オペレーティングシステムは適切なファイルをアドレス指定する。ユーザは、システム変数を通して選択の自分のデフォルト言語を選択することができる。簡略に言及されるように、少なくとも1つのカレントオペレーティングシステム(Windows(登録商標))は、例えばテキストメッセージなどの言語に特殊なライブラリの作成に何らかのサポートを提供する。オペレーティングシステムインストールの現地(locale)(システムの現地とは言語の設定値ではないことに注意する。現地とは、言語と場所の混合である)を示すシステム変数が定義され、この変数は、特にカレント言語用のフォーマットメッセージをフォーマットするために、オペレーティングシステム上で実行しているアプリケーションによって使用することができる。しかしながら、これには、プロセス(アプリケーション)が適切な言語リソースおよびそれがどこに位置しているのかを正確に特定することが必要となる。変換のためのモデルとして、それは広範囲な再コード化を伴うであろう。
従来の技術のオペレーティングシステム制度のどれも、非常に自動的にオペレーティングシステムによって多言語サポートを提供する方法を示唆するモデルを提供しない。また、誰も、同じファイル内にコードおよびリソースのセクションを持つバイナリファイルの固有の節約の工夫のいくつかを保存する手段を示唆していない。所望される機能性を提供するために前記に示唆された簡略な変換は、冗長なデータが必要とされるという点で不当に高価、および/またはかさばっていると考えられている。容易に実現できる変換は、従来の技術のシステムのどれかから著しく離れたシステムでなければならないであろう。
図1を参照すると、従来の技術のオペレーティングシステムでの共通動作において、バイナリファイル20がロードされる。このバイナリファイル20は、コードセクション10およびリソースセクション30を含み、オペレーティングシステムの任意のファイルユニットまたはサードパーティによって供給されるものであってよい。例えば、このバイナリファイル20は、実行可能バイナリ、動的ライブラリ(DLL)またはデバイスドライバであろう。このリソースセクション30は、このコードセクションによって使用されるリソース、特にこのコードセクション10によって生成されるプロセスの要件に特定であり、このコードセクション10に定められているプロセスがもはや必要とされない時にメモリからアンロードされてよいそれらのリソースのいくつかを含んでよい。言い換えると、このリソース30とは、このコードセクション10で符号化されるプロセスによって必要とされることのあるリソースであり、いったんそれらのプロセスが終了されると、メモリ内のリソースセクション30に格納されているこのリソースを維持する必要性はなくなる。例えば、バイナリファイル10は、コアリソースまたは剥奪されたテキストエディタなどのオペレーティングシステムが供給されるアプリケーションであろう。例えば、エディタにとっては、ユーザがエディタプログラムを終了すると、このテキストエディタによって必要とされるリソースはもはや必要とされないであろう。コード10およびリソース30を含むバイナリファイル20は、メモリから削除されるであろう。言うまでもなく、このコードセクション10は、他のファイルからその他のリソースを使用し、その他のプロセスも使用することができる。
図2を参照すると、リソース85およびそれを使用するコード55は、別個のそれぞれのファイル25と22に位置していてもよい。例えば、1個のコード50に定義されるアプリケーション55によってアドレス指定されるリソース85は、リソース専用DLLまたはコード70およびリソース60を含む別個のファイル25に含まれてよい。このアプリケーション55は、やはりリソース40を含むファイルに常駐してよい。リソースタイプおよび名前でファイルを検索するために、別のオペレーティングシステムデバイスが使用されてよい。リソースの管理(ロードおよびアンロード)は、リソースローダによって処理されてよい。
図3を参照すると、リソースは、リソースローダ130およびリソースファインダ135を使用してプロセス110によって指定されている。このリソースローダは、リソースモジュールハンドルおよびリソースハンドルを与えられるリソースデータ125へアクセスを提供するオペレーティングシステムファシリティである。リソース名で指定されるリソースデータがどこで検索できるのかを示すこのリソースモジュールハンドルは、このリソースファインダによって作成される。リソース名、タイプおよび言語(後者はオプション)が、リソースモジュールハンドルを返すリソースファインダ135に提供される。リソースが要求側プロセスを生成したモジュール以外のモジュール内にある場合には、そのモジュールのハンドルもこのリソースファインダに提供されなければならない。このリソースタイプは、例えば、ビットマップ、動画カーソル、フォントリソース、メニューリソース、文字列テーブルエントリ等を指定してよい。
このリソースローダは、指定されたリソースをメモリの中にロードする。それは、リソースモジュールハンドルおよびリソースハンドルを必要とする。このリソースモジュールハンドルは、その実行可能ファイルにリソースが入っているモジュールである。このリソースハンドルはロードされるリソースを識別する。このリソースローダ130は、ハンドルをこのリソースに関連するデータを含むこのメモリブロックに返す。図3に示されている説明は、図1または図2に図示されている状況のどちらかと一貫性がある。前記機能の例が、Windows(登録商標)API FindResourceおよびLoadResourceに関係する文書に定められていることに注意する。また、リソースが前述されたようにリソースに対する呼出しの一部だけではなく従来の動作においてもロードされてよいことにも注意する。例えば、Windows(登録商標)オペレーティングシステムでは、LoadLibraryに対する呼出しは、モジュールのメモリ内へのロードを生じさせるであろう。
図4を参照すると、リソースがオペレーティングシステム内でどのようにアドレス指定されてよいのかに関する一般化された概略が図示されている。リソースハンドラ230は、リソースデータ220へのアクセスを得るためにプロセス210によって使用される。このリソースハンドラ230は、例えば、図3に関して前述されたように、オペレーティングシステムによって提供される複数の異なるデバイスから成り立ってよい。このプロセスは、このハンドラ230に対して要求されたリソースを特定し、このハンドラに、ファイル名、モジュール250の識別子、または他の何らかの情報などのこのリソースがどこで検出できるのか教えることができる。このリソースハンドラ230は、おそらくモジュール250の中に含まれているリソース220を、メモリあるいはデータをアクセス可能にし240、プロセス210へのアクセスを提供するためのそれ以外の何らかの手段の中にロードする必要がある場合がある。外プロセス210には、リソース220にアクセスするためにハンドル、アドレス、ポインタ等が与えられる。図4によって記述されるプロセスの重要な特徴とは、プロセスが必要とされるリソースを特定し、オペレーティングシステムがプロセスにそのリソースに対するアクセスを提供することである。このリソースは、通信ポート、あるいはコンピュータ上のプロセスにデータを転送するための任意のそれ以外の機構を通して提供される、ネットワークによって接続される別のコンピュータ上のディスクに常駐してよい。オペレーティングシステムは、要求の一部として、さまざまな媒体、例えば、ディスクからメモリへ、プロセスによるリソースへのアクセスが可能になる前にリソースを転送してよい。
オペレーティングシステム方式は、リソースを要求するプロセスからあらゆる特定の命令を必要としないで、複数言語リソースを処理するための機能を提供するリソースハンドリング構成要素を提供する。これにより、オペレーティングシステムは、これらの要素を修正しなくても、既存のリソースおよび実行可能バイナリファイルを使用しながら多言語サポートを提供できるようになる。すなわち、ユーザは、ユーザインタフェース用の言語を選択できるようになり、リソースローダは、リソースに対する要求を自動的に適切なリソースにあて先変更するであろう。
以下の説明を通して、データをメモリにロードするという概念は、実際にデータをファイルから取り、それをメモリの中に入れるとして文字通り解釈されることは意図されていない。本発明によって熟慮されるオペレーティングシステムのコンテキストでは、データを物理メモリの中に実際にロードすることが、低レベルのオペレーティングシステム機能によって実行される。各プロセスは、実際の物理メモリと一致しない仮想メモリ空間を有してよい。以下の説明の中で、データをメモリの中からロードしたり、アンロードするというステップが語られる時、それはデータにプロセスがアクセスできるようにする任意のオペレーティングシステム機能として幅広く解釈されることが意図されている。
リソースを要求するプロセスという観点から、オペレーティングシステムデバイスとの対話は単一言語のリソースを処理するためと同じである。リソースを見つけ、それらを要求側プロセスに戻すためのオペレーティングシステムリソース処理構成要素は、代替言語リソースモジュールへの経路を動的に生成するために修正される。この経路のこの生成は、リソース識別子およびリソースを要求しているプロセスによって提供されるオプションのモジュールハンドルに応えて、およびユーザインタフェース用に選ばれた言語を指定するシステム全体で動作するユーザ設定に応えてでもあってよい。代替言語リソースへのこの経路は、あるのであれば、プロセスによって供給されるモジュールハンドルの代わりに使用される。
このモジュールハンドルを動的に生成することにより、このオペレーティングシステムは、基本モジュールハンドル(呼出し側プロセスによって使用されるハンドル)と代替言語リソースモジュールを相互に関連付けるために任意の恒久的なファシリティに修正を加えなくても拡張されてよい。ルックアップテーブルが動的に生成されるため、それはステップを節約する目的で自動的に作成され、決して時代遅れではない。新しいモジュールがオペレーティングシステムに追加されると、代替言語モジュールを追加し、アルゴリズムを使用し、中央付帯演算を行わずに代替モジュールハンドルを生成することができる。新しいモジュール名と既存のモジュール名の間に不調和がない限り、このモジュールおよびそれを使用している任意のコード、あるいはコードおよびリソースを格納している任意のバイナリファイルが、あらゆる集中化された変更を加えないでオペレーティングシステムに追加されてよい。システムは、必要に応じて、およびユーザおよびリソースを要求するプロセスにはトランスペアレントに、代替言語モジュールを自動的にロード、解放し、処理する。代替言語リソースはモジュール(好ましいインプリメンテーションにおいて、Windows(登録商標)用語で定められるように、動的リンクライブラリつまりDLL)内に常駐し、それぞれが、経路およびモジュール名によって以下のように一意に指定されている。
<module_path>\mui\<language_ID>\<module_name>
言い換えると、オペレーティングシステムは、元のモジュールのロード経路の言語に特殊なサブディレクトリから代替言語リソースモジュールをロードする。経路およびモジュール名は、要求側プロセスによって供給されている元のモジュール名と同じ名前を使用して動的に生成される。要素<language_ID>は、言語を表すコンパクトコードであってよい。例えば、それはISO 639言語規格省略語に、おそらく復言語指定子つまり一次構成要素および二次構成要素を含むWin32言語idを追加したものに基づくであろう。
代替言語は、変化する特異性の度合いに伴い要求されてよい。すなわち、ある人は特異性のあるレベルで(フランスの)フランス語、スイスのフランス語またはカナダのフランス語を要求するか、特性性の低い方のレベルでフランス語だけを要求してよい。堅牢であるために、代替言語リソースモジュールハンドルを生成するプロセスの場合、アルゴリズムは、それが、ユーザインタフェース言語に対するシステムレベルの要求を、ある特異性の度合い、および別の度合いの特性が与えられている代替言語リソースの可用性と調整が付くようにすることができるために複数のステップを含んでよい。例えば、ユーザがオペレーティングシステムにログした時にスイスのフランス語を要求すると仮定する。これは、準拠することができるすべてのプロセスに対し、そのスイスのフランス語のリソースが使用されることを命令するユーザ変数を指定する。代替言語リソースを生成するリソースローダ(つまりライブラリローダ)アルゴリズムは、要求された言語に対する近似だけが使用できる状況に対処することができなければならない。前記例において、特にスイスのフランス語だけではなく、フランス語および多様なそれ以外の一次代替言語だけが使用できると仮定する。アルゴリズムが、システムユーザ言語IDに示されているシステムレベル命令に近くない何らかのそれ以外のデフォルトの選択を行うよりむしろ、要求時にフランス語代替言語リソースをロードすることが望ましい。このようにして、例えば、以下のように、複数のレベルの近似がアルゴリズムに対して定められてよい。
第1に、このアルゴリズムは、「<module_path>\」によって指定されるモジュール経路内に、カレントユーザ言語IDに同等な識別子が付いた、つまり名前「\mui\<language_ID>\」が付いたサブディレクトリが存在しているかどうかを判断してよい。この第1試験が不合格となると、このアルゴリズムは、カレントユーザ言語IDに一致する一次言語IDに同等な識別子が付いた、つまり名前「\mui\<primary_language_ID>\」が付いた「<module_path>\」のサブディレクトリが存在するかどうかを判断してよい。システムユーザ言語IDが指定されない場合、このアルゴリズムはサブディレクトリを解決するために代用物、例えば、日付または通貨フォーマット規約に関する好みのようなユーザの場所(locality)を示唆する何らかの好みを使用することができる。代わりに、言語中立代替リソースモジュールが呼び出されてよい。所望の優先順位で設けられてよいそれ以外のステップは、デフォルト代替言語リソースサブディレクトリ、ユーザ言語IDによって指定されている言語が使用できないが、ありそうな現場で話されている公正な代替言語が使用できる代替言語の選択であろう。例えば、カナダのフランス語がユーザ言語IDで要求され、カナダのフランス語もフランス語も使用できないがカナダの英語が使用できる場合には、後者が使用されるであろう。好ましい代替リソースを優先システムに従って識別する前記プロセスによって、代替言語リソースの特異性を高めることができる。オペレーティングシステムに一次言語(例えば、英語であるが、英国英語、カナダ英語等ではない)だけが添付されている場合には、ユーザは、後にさらに多くの特定の言語を追加し、ユーザの選択はトランスペアレントかつ自動的に実現されてよい。
処理を加速するために、各代替モジュール経路を動的に生成することによって得られるマッピングがルックアップテーブルに保存される。要求側プロセスが同じリソースを呼び出すと、この代替リソースモジュールが、経路およびハンドルを動的に生成する代わりに、このルックアップテーブルから得られてよい。代替リソースモジュールIDの動的生成の結果を保存することによって、前述された堅牢なアルゴリズムのステップは、リソースに対する要求がなされるたびに反復される必要がない。
加えて、クリーンアップテーブルが生成され、修正されたリソースローダが、システム要件が許すようにメモリをロードし、解放するのを助ける。このクリーンアップテーブルは、ロード済みの代替リソースモジュールおよびそれらを要求したプロセスを一覧表示する。例えば、リソースを要求しているプロセスが終了されると、この終了したプロセスによって要求されていたリソースモジュールはメモリからアンロードされてよい。
オペレーティングシステムが、ローダデータテーブル内でエントリを生成することによってロードおよびアンロードされるリソースを追跡調査することに注意する。このローダデータテーブルは、このプロセスが終了した時、またはそれ以外のシステム要件が示す時、これらのモジュールをアンロードできるように、リソースモジュールのロードを必要としたプロセスを示す。例えば、Windows NT(登録商標)内でLoadLibraryEx機能を直接的に使用することによってロードされるモジュールの場合、このモジュールのアイデンティティは、前述されたリソースローダには「既知」でない場合がある。すなわち、ローダデータテーブルエントリは生成されない。この場合、リソースモジュール(例えば、LoadLibrary)をロードするファシリティは、代替言語リソースの存在に関して照会し、アプリケーションによって要求されたモジュールの代わりにそれをロードしてよい。アプリケーションまたはプロセスが、実際にローダデータテーブルエントリを生成するオペレーティングシステムファシリティを実際に使用する場合は、このモジュールは、アプリケーションまたはその他のプロセスによってリソースローダからリソースに対する要求がなされるまで、モジュールがロードされる必要はないであろう。
実施態様によると、本発明は、オペレーティングシステムによって実行される方法である。方法は、第1バイナリファイル内に常駐する第1データに対する要求側プロセスによる要求をあて先変更する。次に示すステップが実行される。つまり、(1)言語識別子および第1データまたは第1バイナリファイルのどちらかの識別子にも一致する第2バイナリファイルが存在する時に、オペレーティングユーザ設定内にこの要求側プロセスとは無関係に、言語識別子を記憶するステップと、(2)第1バイナリファイルを識別するプロセスモジュール識別子と、第2バイナリファイルを識別する代替モジュール識別子とを相互に関連付けるルックアップテーブルの中に経路を記憶するステップと、(3)第2バイナリファイル内の代替データを、第1データの代わりにこの要求側プロセスがアクセスできるようにするステップのことである。
別の実施態様によると、本発明は、オペレーティングシステムにより実行される方法でもある。方法は、この要求側プロセスを定義する実行可能コードとリソースデータの両方を格納する第1バイナリファイル内に常駐する第1リソースデータに対する要求側プロセスによる要求をあて先変更する。この要求側プロセスは、コード内で定義されている。この方法は、以下のステップを有する。つまり、言語識別子に、および変数の中に、この要求側プロセスとは無関係に言語識別子を記憶するステップと、第1リソースデータまたは第1バイナリファイルのどちらかにも一致する第2バイナリファイルが存在する時に、(1)言語識別子および第1リソースデータまたは第1バイナリファイルのどちらかに応じて第2バイナリファイルへの経路を動的に生成するステップと、(2)第1リソースデータの代わりに、第2バイナリファイル内の代替リソースデータにこの要求側プロセスがアクセスできるようにするステップである。
さらに別の実施態様によると、本発明は、実行可能バイナリファイル内の第1リソースデータをアドレス指定するために、多言語機能をオペレーティングシステムに追加する方法である。方法は、以下のステップを含む。つまり、選択された言語識別子を記憶するために選択可能なユーザ設定値を追加するステップと、それぞれが第1リソースデータのそれぞれ1つに対応するリソースデータを格納する少なくとも1つの代替言語リソースファイルを追加するステップと、選択された言語識別子内に記憶される選択された言語に応えて、代替言語リソースデータのそれぞれ1つへ、第1リソースデータのそれぞれに対する要求をあて先変更するためにリソースローダを修正するステップである。
実施態様によると、本発明は、オペレーティングシステムによって実行される方法である。方法は、第1データに対する要求側プロセスによる要求に応じてデータをアドレス指定する。方法は、以下のステップを有する。つまり、第1データに対応する代替言語ファイルの存在を判断するステップと、判断するステップの結果が、代替言語ファイルが存在するというしるしである時に、この呼出しプロセスに代替言語ファイルから少なくとも1つのデータを戻すステップと、判断するステップの結果が、代替言語ファイルが存在しないというしるしである時に、この呼出しプロセスに第1データを戻すステップである。
実施態様によると、本発明は、オペレーティングシステムによって実行される方法である。方法は、第1バイナリファイル内に常駐する第1データに対する要求側プロセスによる要求をあて先変更する。次に示すステップが実行される。つまり、オペレーティングシステム変数の中に、ユーザごとのこの要求側プロセスとは無関係に、言語識別子を記憶するステップと、言語識別子に対応する第2バイナリファイルの検出に応えて、および第1データまたは第1バイナリファイルのどちらかの識別子にも応えて(1)言語識別子および第1データまたは第1バイナリファイルのどちらかに応えて第2バイナリファイルへの経路を動的に生成するステップと、(2)第1バイナリファイルを識別するプロセスモジュール識別子と第2バイナリファイルを識別する代替モジュール識別子を相互関連するルックアップテーブルの中に経路を記憶するステップと、(3)第1データの代わりに、第2バイナリファイル内の代替データにこの要求側プロセスがアクセスできるようにするステップである。
同じバイナリファイルのリソースセクション内のリソースを要求するプロセスを定義するコードセクションを含むバイナリファイルの概略図である。 その内の一方が、コードを格納し、リソースを格納しても、格納しなくてもよく、その内の他方がリソースを格納し、コードを格納しても、格納しなくてもよい2つのバイナリファイルの、第1ファイルのコードが、第2ファイル内のリソースを要求するプロセスを定義する概略図である。 従来の技術の1つの実施態様に従ったリソースを検索するためにプロセスによって使用されているリソースローダおよびリソースファインダの概略図である。 コンピュータ上のプロセスによってリソースを検索するプロセスの一般化した説明の中のリソースハンドラの概略図である。 図3に図示されている従来のプロセスの修正の中のオペレーティングシステムを通して、リソースデータを呼び出すプロセスの概略図である。
図5を参照すると、図3に図示されている従来の技術によるプロセスの修正において、オペレーティングシステムを通してリソースデータを要求するプロセスが図示されている。図3に関して説明されているリソースローダ130およびリソースファインダ135内のプロセスが、図5に示されているようなプロセスを作成するために修正される。すべてを包含する用語では、図5のプロセスが、プロセスがプロセス用のデフォルトのリソースの代わりに、選択されたユーザインタフェース言語に対応するリソースを受け取るように、ある特定のリソースに対する要求を代替言語リソースにあて先変更する。実施態様においては、代替リソースのロードは、プロセスが、それがロードを希望する言語を指定しなかった場合に「動き出す」だけである。言い換えると、プロセスは、リソースをロードしようとし、どの言語かについては実際には気にしていない。従来のシステムにおいては、リソースローダは、モジュール自体のリソースセクション、またはプロセスがその中からリソースをロードするように指定される外部モジュールのどちらかからリソースを戻すであろう。多言語ユーザインタフェースシステムの現在の実施態様においては、リソースローダは、プロセスがある特定の言語またはリソースに対するそれ以外の特定の分類を指定しなかった場合には、代替リソースをロードするであろう。このプロセスは、まさに図3の従来の技術の実施態様でのように、リソースファインダ320からメモリハンドルを要求する。しかしながら、この場合、このハンドルは代替言語リソースを参照するハンドルである。リソースファインダは、選択されたユーザインタフェース言語ID335によって示されるリソースを識別しようとする。
選択されたユーザインタフェース言語ID335は、ユーザ設定値である。この選択されたユーザインタフェース言語ID335は、例えば、ユーザがログインし、オプションのリストから任意の言語を選択することによって確立できるであろう。それから、このユーザインタフェース言語ID335は、変更されるまで記憶されている。
プロセス310は、リソースファインダ320にリソース名およびタイプを送信することによってリソースのメモリハンドルを要求する。リソースが、この要求側プロセス310を定義するモジュール以外のモジュールの中にあると、リソースモジュールハンドルもリソースファインダ320に送信されるであろう。モジュールハンドルが送信されない場合、このモジュールはこのリソースを要求するプロセスを生成するモジュールと同じであるため、リソースファインダはすでにローダデータテーブルからモジュールハンドルに対するアクセスを得ている(背景の項に説明されたように、リソースファインダおよびリソースローダは、多くの場合、要求側プロセスを生成するコードと同じバイナリファイル内のリソースにアクセスするために使用される)。プロセスが、言語に特殊であるリソースを要求することも可能であり、このような要求を満たすプロセスは、本発明に関する、および従来の技術による方法によって満たされるステップの外にあってよい(例えば、http://www.microsoft.com.msdn/に説明されているLoadResourceの説明の例を参照すること)。後者の場合、言語IDはリソースファインダに渡されてよい。
オペレーティングシステムは、過去にリソースファインダ320に対する呼出しによって生成された、代替リソースモジュールハンドル323のテーブルを維持するために修正される。したがって、別のプロセスがすでに同じモジュールからリソースを要求しており、モジュールがすでに代替リソースモジュールに相互に関連付けられている場合には、この代替モジュールハンドルは代替リソースモジュールテーブル323から迅速に入手できる。このリソースに対しエントリがない場合には、オペレーティングシステムは代替モジュール経路を動的に生成する。
代替モジュール経路を動的に生成するために、アルゴリズム325が利用される。このアルゴリズム325は、リソースファイルの何らかの仮定された編成に基づいてよく、代替言語リソースファイルが指定されたリソースに存在するかどうかを示す。本実施態様においては、この代替言語リソースファイルは、要求されたモジュールの経路のサブディレクトリ内に位置し、それぞれが言語識別子に一意に相互関連付けられているファイル名で区別される。各言語のサブディレクトリ内には、それぞれが元のモジュールの名前を取って名前が指定された代替言語リソースファイルが記憶される。
<module_path>\mui\<language_ID>\<module_name>
言い換えると、オペレーティングシステムは、元のモジュールのロード経路の言語に特殊なサブディレクトリから代替言語リソースモジュールをロードする。この元のモジュールが、多言語イネーブルされていなかったシステムの場合に「<path 1>\<filename 1>」であった場合、代替言語モジュールに対する経路は、選択されたユーザインタフェース言語ID335で示されるが「言語ID1」であると仮定すると「<path 1>\mui\<language ID1>\<filename 1>」であろう。
代替言語リソースの編成は、多様な代替方法で実行できる。それらを、それぞれが通例のモジュール(通常、単一言語オペレーティングシステムで要求されるもの)に対応する言語に特殊なモジュールに分けると、それぞれのりソースモジュールごとに多様な言語のリソース単一モジュールに結合される場合に発生するように、追加メモリに対するニーズが回避される。
モジュールを記憶するために使用される経路構造を考えると、選択されたユーザインタフェース言語ID335および元の要求された経路とモジュールによって示される言語に対応する代替言語モジュール用の経路を構築することは率直である。この経路は、リソースハンドルを提供するためにリソースファインダ320によって使用される。リソースハンドルの作成は、従来の技術での同じように実行される。相違点は、この例のリソースハンドルがプロセスを、元のモジュール経路のサブディレクトリ内で識別されたリソースデータ350に向けるという点である。図5では、リソースデータ350は、選択されたユーザインタフェース言語IDが言語ID2であった「バイナリファイル2」用の代替リソースモジュール内にあった。
経路およびモジュール名は、呼出し側プロセスによって供給される元のモジュール名と同じ名前を使用して動的に生成される。要素<language_ID>は、言語を表すコンパクトコードであってよい。例えば、それは、ISO 639言語標準省力に副言語記述子または一次構成要素と二次構成要素を加えたものを含むWin32言語idに基づくことができるであろう。
本発明の好ましい実施態様においては、アルゴリズムは、それが、要求されたデータに対する代替言語リソースが存在すると仮定して、単に経路を構築する以上のことを行うという点で堅牢である。代替言語は、多様な特性の度合いで要求されてよい。また、代替言語リソースが使用可能ではない、あるいは代替リソースが使用可能であると考えられ、このリソースは言語以外の何らかの点と基本リソースと異なっている。このアルゴリズムおよび対応するプロセスは、図5に描かれている率直なシナリオだけではなくこれらの状況に対処し、利用するにも十分堅牢である。
選択されたユーザインタフェース言語は非常に特殊である。例えば、ユーザはフランス語、スイスのフランス語またはカナダのフランス語を要求することがある。このアルゴリズムは、それがユーザインタフェース言語に対するシステムレベル要求をある特異性の度合い、および別の特異性の度合いが与えられる代替言語リソースの可用性と調整をつけることができるようにするための複数のステップを含んでよい。ユーザが、オペレーティングシステムにログインした時にフランスのフランス語を要求すると、要求された言語に対する近似だけが使用可能となってよい。このような状況と対処するため、このアルゴリズムおよび関連するプロセスは、以下のように、ステップの内蔵された階層に従って動作してよい。
第1に、このアルゴリズムは、「<module_path>\mui\」によって指定されるモジュール経路の中に、カレントユーザ言語IDに同等な識別子が付いた、つまり名前「\<language_ID>\」が付いたサブディレクトリが存在するかどうかを判断してよい。この第1試験が不合格となると、このアルゴリズムは、カレントユーザ言語IDに対応する一次言語IDに同等な識別子の付いた、つまり名前「\primary_language_ID\」が付いた「<module_path>\mui\」のサブディレクトリが存在するかどうかを判断してよい。システムユーザ言語IDが指定されない場合、このアルゴリズムはサブディレクトリを解決するために代用物、例えば日付または通貨フォーマット規約に関する好みなどのユーザの場所を示唆する何らかの好みを使用することができてよい。代わりに、言語に中立な代替リソースモジュールが呼び出されてよい。所望の優先順位で設けられてよいそれ以外のステップは、例えばカナダのフランス語がユーザ言語IDで要求され、英語が使用できる場合など、デフォルトの代替言語リソースサブディレクトリ、ユーザ言語IDによって指定された言語が使用できないが、所定の代替言語が多くの場合、考えられる現地で話される代替言語の選択であろう。好ましい代替リソースを優先順位システムに従って識別する前記プロセスによって、代替言語リソースの特異性を高めることができる。オペレーティングシステムに一次言語(例えば、英語であるが、英国英語、カナダ英語等ではない)だけが添付される場合、ユーザは、後に、さらに多くの特定の言語を追加し、ユーザの選択はトランスペアレントかつ自動的に実現されてよい。
前記機能性が、Windows(登録商標)のFindResourceEx機能で行われるある特定の言語のリソースに対する通常の要求と干渉しないことに注意する。指定された言語IDは要求側プロセスによって提供され、前記代替言語リソース方式は要求を別のリソースモジュールに再送しないであろう。
経路を形成するアルゴリズム325がリソース経路上に落ち着いた後、バージョンチェックおよびそれ以外のあらゆる完全性チェックは、それに要求側プロセスがアクセスできるようにする前に実行することができる。図5に関して説明されるプロセスの結果として代替言語モジュール370がメモリ内に新規に格納された、あるいはそれ以外の場合、リソースファインダ320への呼出しによってアクセスできるようになった場合、新しいエントリが代替リソースモジュールテーブル323の中に入れられてよい。最後に、ハンドルは、このプロセスが要求されたリソースにアクセスできるようにするために要求側プロセスに戻されてよい。後者は、データをメモリの中にロードし、プロセスがデータにアクセスするために使用できるハンドルを提供するために、別の機能に対するステップ、リソースローダ330を必要とすることがある。
図5および付随する説明が、モジュールがメモリの中にロードされ、これがリソースファインダまたはリソースロードによっても明示的に実行される必要がないことに注意する。唯一の要件は、適切なデータをプロセスが使用できることである。オペレーティングシステムは、そのI/Oファシリティおよびメモリ管理ファシリティを通したデータの実際の移動を処理してよい。図5に関して前述されたことの重要性とは、その内容がさまざまな言語に関して異なるリソースに対するプロセスによる要求が、要求側プロセスにトランスペアレントに自動的にあて先変更させられるという点である。プロセスを定義するコードは、オペレーティングシステムが多言語イネーブルされるために修正される必要はない。図5および添付説明は、実行可能コードも格納するバイナリファイル内に組み込まれるリソースというコンテキストでデータに対する要求をあて先変更するプロセスを説明する。同じ基本的な公式は、リソース専用ファイル、例えばDLL内でデータのアクセスを包含するように拡張することができる。
プロセスがメモリの中にロードされるまたはメモリからアンロードされるデータを要求する前記説明においては、このようなステップは、プロセスのアドレス空間の中にマッピングされるというより広義に考えられる必要がある。これは、マッピングされたI/Oのためのオペレーティングシステムファシリティが、ディスクからメモリの中にデータをロードすることに関連する具体的な概念を不鮮明にするためである。言い換えると、カレントオペレーティングシステムは、この具体的なステップはオペレーティングシステムのI/Oシステムおよび仮想メモリ管理機能によってトランスペアレントに処理できるため、必ずしもデータをメモリの中にロードするという明示的なステップに含まれなくても、プロセスが、ステップに従ってディスク上のデータにアクセスできるようにすることを可能にする。
前記プロセスは、代替リソースモジュールを単一データファイルとしてこの要求側プロセスのアドレス空間の中にマッピングしてよい。このプロセスの基礎となる詳細は従来の技術で既知であり、例えばWindows(登録商標)においては、これはLoadLibraryと呼ばれるオペレーティングシステム機能を定義するコードによって実行される。

Claims (50)

  1. オペレーティングシステムにおいて、要求側プロセスによる第1バイナリファイル内に常駐する第1データに対する要求をあて先変更するための方法であって、
    前記要求側プロセスに無関係に、変数の中に言語識別子を記憶するステップと、
    前記言語識別子に対応し、および、前記第1データまたは前記第1バイナリファイルのどちらかの識別子に対応する第2バイナリファイルが検出される時に、 前記第1データまたは前記第1バイナリファイルの前記どちらか及び前記言語識別子に応えて、前記第2バイナリファイルへの経路を動的に生成するステップと、
    前記第1バイナリファイルを識別するプロセスモジュール識別子と前記第2バイナリファイルを識別する代替モジュール識別子を相互に関連付けるルックアップテーブル内に前記経路を記憶するステップと、
    前記第1データの代わりに、前記要求側プロセスにアクセス可能な前記第2バイナリファイル内に代替データを形成するステップとを有する前記方法。
  2. 前記形成するステップが、前記代替データを前記要求側プロセスのアドレス空間の中にマッピングすることを含む、請求項1に記載の方法。
  3. 前記要求側プロセスが、前記第1バイナリファイルのコード部分に定義される、請求項2に記載の方法。
  4. 前記動的に生成するステップが、言語に特殊なサブディレクトリを含む経路を生成することを含む、請求項2に記載の方法。
  5. 前記形成するステップが、前記代替データにアクセスする上で前記要求側プロセスによって使用するために前記代替データに対するハンドルを生成することを含む、請求項2に記載の方法。
  6. 前記第2バイナリファイルが、コードとリソースデータの両方を含み、 前記代替データが、前記リソースデータの少なくとも一部である、請求項2に記載の方法。
  7. 前記言語識別子に対応する、および、前記第1データまたは前記第1バイナリファイルのどちらかに対応する第2バイナリファイルが検出されない時に、
    前記要求側プロセスにアクセス可能な前記第1データを形成するステップをさらに有する、請求項2に記載の方法。
  8. 前記第1データが、アイコン、カーソル、メニュー、ダイアログボックス、ビットマップ、機能拡張済みメタファイル、フォント、アクセレレータテーブル、メッセージテーブルエントリ、文字列テーブルエントリ、または、バージョンを定義するデータの1つである、請求項2に記載の方法。
  9. 前記動的に生成するステップが、言語に特殊なサブディレクトリを含む経路を生成することを含む、請求項1に記載の方法。
  10. 前記形成するステップが、前記代替データにアクセスする上で前記要求側プロセスによって使用するために前記代替データに対するハンドルを生成することを含む、請求項9に記載の方法。
  11. 前記第2バイナリファイルが、コードとリソースデータの両方を含み、
    前記代替データが、前記リソースデータの少なくとも一部である、請求項9に記載の方法。
  12. 前記言語識別子に対応する、および、前記第1データまたは前記第1バイナリファイルのどちらかに対応する第2バイナリファイルが検出されない時に、
    前記要求側プロセスにアクセス可能な前記第1データを形成するステップをさらに有する、請求項9に記載の方法。
  13. 前記第1データが、アイコン、カーソル、メニュー、ダイアログボックス、ビットマップ、機能拡張済みメタファイル、フォント、アクセレレータテーブル、メッセージテーブルエントリ、文字列テーブルエントリ、または、バージョンを定義するデータの1つである、請求項9に記載の方法。
  14. 前記形成するステップが、前記代替データにアクセスする上で前記要求側プロセスによって使用するために前記代替データに対するハンドルを生成することを含む、請求項1に記載の方法。
  15. 前記第2バイナリファイルが、コードとリソースデータの両方を含み、
    前記代替データが、前記リソースデータの少なくとも一部である、請求項14に記載の方法。
  16. 前記言語識別子に対応する、および、前記第1データまたは前記第1バイナリファイルのどちらかに対応する第2バイナリファイルが検出されない時に、
    前記要求側プロセスにアクセス可能な前記第1データを形成するステップをさらに有する、請求項14に記載の方法。
  17. 前記第1データが、アイコン、カーソル、メニュー、ダイアログボックス、ビットマップ、機能拡張済みメタファイル、フォント、アクセレレータテーブル、メッセージテーブルエントリ、文字列テーブルエントリ、または、バージョンを定義するデータの1つである、請求項14に記載の方法。
  18. 前記第2バイナリファイルが、コードとリソースデータの両方を含み、
    前記代替データが、前記リソースデータの少なくとも一部である、請求項1に記載の方法。
  19. 前記言語識別子に対応する、および、前記第1データまたは前記第1バイナリファイルのどちらかに対応する第2バイナリファイルが検出されない時に、
    前記要求側プロセスにアクセス可能な前記第1データを形成するステップをさらに有する、請求項18に記載の方法。
  20. 前記第1データが、アイコン、カーソル、メニュー、ダイアログボックス、ビットマップ、機能拡張済みメタファイル、フォント、アクセレレータテーブル、メッセージテーブルエントリ、文字列テーブルエントリ、または、バージョンを定義するデータの1つである、請求項18に記載の方法。
  21. 前記言語識別子に対応せず、および、前記第1データまたは前記第1バイナリファイルのどちらかに対応しない第2バイナリファイルがある時に、
    前記要求側プロセスにアクセス可能な前記第1データを形成するステップをさらに有する、請求項1に記載の方法。
  22. 前記第1データが、アイコン、カーソル、メニュー、ダイアログボックス、ビットマップ、機能拡張済みメタファイル、フォント、アクセレレータテーブル、メッセージテーブルエントリ、文字列テーブルエントリ、または、バージョンを定義するデータの1つである、請求項21に記載の方法。
  23. 前記第1データが、アイコン、カーソル、メニュー、ダイアログボックス、ビットマップ、機能拡張済みメタファイル、フォント、アクセレレータテーブル、メッセージテーブルエントリ、文字列テーブルエントリ、または、バージョンを定義するデータの1つである、請求項1に記載の方法。
  24. 前記第1データがリソースデータである、請求項1に記載の方法。
  25. 前記要求側プロセスが、前記第1バイナリファイルのコード部分に定義される、請求項1に記載の方法。
  26. オペレーティングシステムにおいて、要求側プロセスを定義する実行可能コードと、リソースデータの両方を格納する第1バイナリファイル内に常駐する第1リソースデータに対する前記要求側プロセスによる要求をあて先変更するための方法であって、
    前記要求側プロセスは、前記コード内に定義されており、
    前記要求側プロセスに無関係に、変数の中に言語識別子を記憶するステップと、
    前記言語識別子に対応し、および、前記第1リソースデータまたは前記第1バイナリファイルのどちらかに対応する第2バイナリファイルが検出される時に、 前記第1リソースデータまたは前記第1バイナリファイルの前記どちらか及び前記言語識別子に応えて、前記第2バイナリファイルへの経路を動的に生成するステップと、 前記第1リソースデータの代わりに、前記要求側プロセスにアクセス可能な前記第2バイナリファイル内に代替リソースデータを形成するステップとを有する前記方法。
  27. 前記形成するステップが、前記代替リソースデータを前記要求側プロセスのアドレス空間の中にマッピングすることを含む、請求項26に記載の方法。
  28. 前記動的に生成するステップが、言語に特殊なサブディレクトリを含む経路を生成することを含む、請求項27に記載の方法。
  29. 前記形成するステップが、前記代替リソースデータにアクセスする上で、前記要求側プロセスによって使用するために前記代替リソースデータに対するハンドルを生成することを含む、請求項27に記載の方法。
  30. 前記第2バイナリファイルが、コードとリソースデータの両方を含む、請求項27に記載の方法。
  31. 前記言語識別子に対応する、および、前記第1リソースデータまたは前記第1バイナリファイルのどちらかに対応する第2バイナリファイルが検出されない時に、
    前記要求側プロセスにアクセス可能な前記第1リソースデータを形成するステップをさらに有する、請求項27に記載の方法。
  32. 前記第1リソースデータが、アイコン、カーソル、メニュー、ダイアログボックス、ビットマップ、機能拡張済みメタファイル、フォント、アクセレレータテーブル、メッセージテーブルエントリ、文字列テーブルエントリ、または、バージョンを定義するデータの1つである、請求項27に記載の方法。
  33. 前記動的に生成するステップが、言語に特殊なサブディレクトリを含む経路を生成することを含む、請求項26に記載の方法。
  34. 前記形成するステップが、前記代替リソースデータにアクセスする上で、前記要求側プロセスによって使用するために前記代替リソースデータに対するハンドルを生成することを含む、請求項33に記載の方法。
  35. 前記第2バイナリファイルが、コードとリソースデータの両方を含む、請求項33に記載の方法。
  36. 前記言語識別子に対応する、および、前記第1リソースデータまたは前記第1バイナリファイルのどちらかに対応する第2バイナリファイルが検出されない時に、
    前記要求側プロセスにアクセス可能な前記第1リソースデータを形成するステップをさらに有する、請求項33に記載の方法。
  37. 前記第1リソースデータが、アイコン、カーソル、メニュー、ダイアログボックス、ビットマップ、機能拡張済みメタファイル、フォント、アクセレレータテーブル、メッセージテーブルエントリ、文字列テーブルエントリ、または、バージョンを定義するデータの1つである、請求項33に記載の方法。
  38. 前記形成するステップが、前記代替リソースデータにアクセスする上で、前記要求側プロセスによって使用するために前記代替リソースデータに対するハンドルを生成することを含む、請求項26に記載の方法。
  39. 前記第2バイナリファイルが、コードとリソースデータの両方を含む、請求項38に記載の方法。
  40. 前記言語識別子に対応する、および、前記第1リソースデータまたは前記第1バイナリファイルのどちらかに対応する第2バイナリファイルが検出されない時に、
    前記要求側プロセスにアクセス可能な前記第1リソースデータを形成するステップをさらに有する、請求項38に記載の方法。
  41. 前記第1リソースデータが、アイコン、カーソル、メニュー、ダイアログボックス、ビットマップ、機能拡張済みメタファイル、フォント、アクセレレータテーブル、メッセージテーブルエントリ、文字列テーブルエントリ、または、バージョンを定義するデータの1つである、請求項38に記載の方法。
  42. 前記第2バイナリファイルが、コードとリソースデータの両方を含む、請求項26に記載の方法。
  43. 前記言語識別子に対応する、および、前記第1リソースデータまたは前記第1バイナリファイルのどちらかに対応する第2バイナリファイルが検出されない時に、
    前記要求側プロセスにアクセス可能な前記第1リソースデータを形成するステップをさらに有する、請求項42に記載の方法。
  44. 前記第1リソースデータが、アイコン、カーソル、メニュー、ダイアログボックス、ビットマップ、機能拡張済みメタファイル、フォント、アクセレレータテーブル、メッセージテーブルエントリ、文字列テーブルエントリ、または、バージョンを定義するデータの1つである、請求項42に記載の方法。
  45. 前記言語識別子に対応する、および、前記第1リソースデータまたは前記第1バイナリファイルのどちらかに対応する第2バイナリファイルが検出されない時に、
    前記要求側プロセスにアクセス可能な前記第1リソースデータを形成するステップをさらに有する、請求項26に記載の方法。
  46. 前記第1リソースデータが、アイコン、カーソル、メニュー、ダイアログボックス、ビットマップ、機能拡張済みメタファイル、フォント、アクセレレータテーブル、メッセージテーブルエントリ、文字列テーブルエントリ、または、バージョンを定義するデータの1つである、請求項45に記載の方法。
  47. 前記第1リソースデータが、アイコン、カーソル、メニュー、ダイアログボックス、ビットマップ、機能拡張済みメタファイル、フォント、アクセレレータテーブル、メッセージテーブルエントリ、文字列テーブルエントリ、または、バージョンを定義するデータの1つである、請求項26に記載の方法。
  48. 第1リソースデータを実行可能バイナリファイル内でアドレス指定するための機能を有するオペレーティングシステムに多言語機能を追加する方法であって、
    選択された言語識別子を記憶するために選択可能なユーザ設定値を追加するステップと、 それぞれが、前記第1リソースデータのそれぞれ1つに対応するリソースデータを格納する少なくとも1つの代替言語リソースファイルを追加するステップと、
    前記第1リソースデータのそれぞれに対する要求を、前記選択された言語識別子に記憶される選択された言語に応じて、前記代替言語リソースデータのそれぞれ1つにあて先変更するためにリソースローダを修正するステップとを有する前記方法。
  49. オペレーティングシステムにおいて、要求側プロセスによる第1データに対する要求に応えて、データをアドレス指定する方法であって、 前記第1データに対応する代替言語ファイルの存在を判断するステップと、
    前記判断するステップの結果が、前記代替言語ファイルが存在するというしるしである時に、前記代替言語ファイルから前記要求側プロセスに少なくとも1つのデータを戻すステップと、
    前記判断するステップの結果が、前記代替言語ファイルが存在しないというしるしである時に、前記要求側プロセスに前記第1データを戻すステップとを有する前記方法。
  50. オペレーティングシステムにおいて、要求側プロセスによる第1バイナリファイル内に常駐する第1データに対する要求をあて先変更するための方法であって、
    前記呼出しプロセスとは無関係に変数の中に言語識別子を記憶するステップと、
    前記言語識別子に、および前記第1データまたは前記第1バイナリファイルのどちらかの識別子のどちらかにも対応する第2バイナリファイルの検出に応えて、
    前記言語識別子に、および前記第1データまたは前記第1バイナリファイルの 前記どちらかに応えて前記第2バイナリファイルへの経路を動的に生成するステップと、
    前記第1バイナリファイルを識別するプロセスモジュール識別子と前記第2バイナリファイルを識別する代替モジュール識別子を相互に関連付けるルックアップテーブル内に前記経路を記憶するステップと、
    前記第1データの代わりに、前記第2バイナリファイル内の代替データに前記要求側プロセスがアクセスできるようにするステップとを有する前記方法。
JP2009104318A 1998-08-14 2009-04-22 リソースモジュールをアプリケーションに対してアクセス可能にする方法 Expired - Lifetime JP4653229B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/134,559 US6252589B1 (en) 1998-08-14 1998-08-14 Multilingual user interface for an operating system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2000565457A Division JP2002522842A (ja) 1998-08-14 1999-08-13 オペレーティングシステム用多言語ユーザインタフェース

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010031217A Division JP4799668B2 (ja) 1998-08-14 2010-02-16 リソースデータを要求側プロセスに対してアクセス可能にする方法

Publications (2)

Publication Number Publication Date
JP2009266229A true JP2009266229A (ja) 2009-11-12
JP4653229B2 JP4653229B2 (ja) 2011-03-16

Family

ID=22463901

Family Applications (5)

Application Number Title Priority Date Filing Date
JP2000565457A Pending JP2002522842A (ja) 1998-08-14 1999-08-13 オペレーティングシステム用多言語ユーザインタフェース
JP2009104318A Expired - Lifetime JP4653229B2 (ja) 1998-08-14 2009-04-22 リソースモジュールをアプリケーションに対してアクセス可能にする方法
JP2010031217A Expired - Lifetime JP4799668B2 (ja) 1998-08-14 2010-02-16 リソースデータを要求側プロセスに対してアクセス可能にする方法
JP2011132860A Expired - Lifetime JP5579662B2 (ja) 1998-08-14 2011-06-15 オペレーティングシステムに多言語機能を追加する方法
JP2012182007A Expired - Lifetime JP5437455B2 (ja) 1998-08-14 2012-08-21 代替リソースデータに動的にリダイレクトする方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2000565457A Pending JP2002522842A (ja) 1998-08-14 1999-08-13 オペレーティングシステム用多言語ユーザインタフェース

Family Applications After (3)

Application Number Title Priority Date Filing Date
JP2010031217A Expired - Lifetime JP4799668B2 (ja) 1998-08-14 2010-02-16 リソースデータを要求側プロセスに対してアクセス可能にする方法
JP2011132860A Expired - Lifetime JP5579662B2 (ja) 1998-08-14 2011-06-15 オペレーティングシステムに多言語機能を追加する方法
JP2012182007A Expired - Lifetime JP5437455B2 (ja) 1998-08-14 2012-08-21 代替リソースデータに動的にリダイレクトする方法

Country Status (6)

Country Link
US (1) US6252589B1 (ja)
EP (1) EP1104563B1 (ja)
JP (5) JP2002522842A (ja)
AT (1) ATE240547T1 (ja)
DE (1) DE69907919T2 (ja)
WO (1) WO2000010078A2 (ja)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6717588B1 (en) * 1998-08-14 2004-04-06 Microsoft Corporation Multilingual user interface for an operating system
US7099876B1 (en) 1998-12-15 2006-08-29 International Business Machines Corporation Method, system and computer program product for storing transliteration and/or phonetic spelling information in a text string class
US6748452B1 (en) * 1999-03-26 2004-06-08 International Business Machines Corporation Flexible interprocess communication via redirection
US6480867B1 (en) * 1999-07-06 2002-11-12 International Business Machines Corporation System and method for managing filesystem objects in a multilingual distributed environment
US7185333B1 (en) * 1999-10-28 2007-02-27 Yahoo! Inc. Method and system for managing the resources of a toolbar application program
US7552449B1 (en) * 2000-01-21 2009-06-23 Sun Microsystems, Inc. Method for enabling multiple concurrent subprocess handling on a system using a global process
US7043715B1 (en) * 2000-06-06 2006-05-09 Emc Corporation Method and apparatus for customizing software
DE60140644D1 (de) * 2000-06-13 2010-01-14 Microsoft Corp Mehrspachige Benutzerschnittstelle für ein Betriebssystem
EP1202168A3 (en) * 2000-10-30 2006-08-23 Microsoft Corporation System and method for dynamically veryfying the compatibility of a user interface resource
US6819338B2 (en) * 2000-11-14 2004-11-16 International Business Machines Corporation Defining variables used in a multi-lingual internet presentation
US7418390B1 (en) * 2000-11-20 2008-08-26 Yahoo! Inc. Multi-language system for online communications
WO2002061623A1 (en) * 2001-01-29 2002-08-08 Delaware Capital Formation, Inc National language database for operating systems
US7013260B2 (en) * 2001-01-30 2006-03-14 Sysmex Corporation Display device and sample analysis device equipped with the display device
US6671749B2 (en) * 2001-03-07 2003-12-30 Hewlett-Packard Development Company, L.P. Peripheral driver installation method and system
US7113904B2 (en) 2001-03-30 2006-09-26 Park City Group System and method for providing dynamic multiple language support for application programs
US20030009433A1 (en) * 2001-04-30 2003-01-09 Murren Brian T. Automatic identification of computer program attributes
WO2002089108A1 (en) * 2001-04-30 2002-11-07 Broadband Graphics, Llc Cell based eui methods and apparatuses
US20020162093A1 (en) * 2001-04-30 2002-10-31 Ming Zhou Internationalization compiler and process for localizing server applications
US20030078949A1 (en) * 2001-04-30 2003-04-24 Scholz Bernhard J. Automatic generation of forms with input validation
US7346921B2 (en) * 2001-04-30 2008-03-18 Ge Capital Corporation Definition of low-level security rules in terms of high-level security concepts
US7519546B2 (en) * 2001-04-30 2009-04-14 General Electric Company Maintaining synchronization of information published to multiple subscribers
US20020198931A1 (en) * 2001-04-30 2002-12-26 Murren Brian T. Architecture and process for presenting application content to clients
US7313765B2 (en) * 2001-04-30 2007-12-25 Broadband Graphics Llc Cell based EUI methods & apparatuses
US20060200779A1 (en) * 2001-04-30 2006-09-07 Taylor Steve D Cell based end user interface having action cells
US20020175937A1 (en) * 2001-05-24 2002-11-28 Blakely Jason Yi Multiple locale based display areas
US20030046605A1 (en) * 2001-09-03 2003-03-06 Farstone Technology Inc. Data protection system and method regarding the same
DE10162248A1 (de) * 2001-12-18 2003-07-03 Siemens Ag Spracherweiterungsmittel für eine Datenverarbeitungseinheit
US7856601B2 (en) * 2002-06-03 2010-12-21 Microsoft Corporation Dynamic service presentation
DE20300697U1 (de) * 2003-01-16 2003-03-20 Siemens Ag Antriebssteuerungs-Bedienterminal
US20040230416A1 (en) * 2003-05-12 2004-11-18 Microsoft Corporation Bifurcated operating system having a language neutral component
US7363586B1 (en) 2003-06-26 2008-04-22 Microsoft Corporation Component localization
US20050060378A1 (en) * 2003-09-16 2005-03-17 Girard Joann K. Method and apparatus for providing language modularization
US7516442B2 (en) * 2003-10-23 2009-04-07 Microsoft Corporation Resource manifest
US20050204332A1 (en) * 2004-03-15 2005-09-15 Ramco Systems Limited Method and system for developing large web-based multi-language applications
JP2006163651A (ja) * 2004-12-03 2006-06-22 Sony Computer Entertainment Inc 表示装置、表示装置の制御方法、プログラム及びフォントデータ
WO2006088295A1 (en) * 2005-02-16 2006-08-24 Samsung Electronics Co., Ltd. Multiple language support system and method for application
US7941484B2 (en) 2005-06-20 2011-05-10 Symantec Operating Corporation User interfaces for collaborative multi-locale context-aware systems management problem analysis
US20070078894A1 (en) * 2005-09-30 2007-04-05 Rothman Michael A System and method for unified SKU (stock keeping unit) enablement
US8645931B2 (en) * 2005-11-04 2014-02-04 International Business Machines Corporation Moving static elements between a document and an external resource file in a document editor
DE102006007661A1 (de) * 2006-02-17 2007-08-30 Technisat Digital Gmbh Verfahren zur Sprachauswahl für die akustische Zielführung eines Navigationssystems
US20080065446A1 (en) * 2006-08-25 2008-03-13 Microsoft Corporation Web collaboration in multiple languages
JP2008074023A (ja) * 2006-09-22 2008-04-03 Oki Data Corp 画像形成装置及び情報処理装置
US7742833B1 (en) 2006-09-28 2010-06-22 Rockwell Automation Technologies, Inc. Auto discovery of embedded historians in network
US7672740B1 (en) 2006-09-28 2010-03-02 Rockwell Automation Technologies, Inc. Conditional download of data from embedded historians
US7711440B1 (en) 2006-09-28 2010-05-04 Rockwell Automation Technologies, Inc. Browser based embedded historian
US8181157B2 (en) * 2006-09-29 2012-05-15 Rockwell Automation Technologies, Inc. Custom language support for project documentation and editing
US7913228B2 (en) * 2006-09-29 2011-03-22 Rockwell Automation Technologies, Inc. Translation viewer for project documentation and editing
US7933666B2 (en) * 2006-11-10 2011-04-26 Rockwell Automation Technologies, Inc. Adjustable data collection rate for embedded historians
US20080114474A1 (en) * 2006-11-10 2008-05-15 Rockwell Automation Technologies, Inc. Event triggered data capture via embedded historians
US7797349B2 (en) * 2007-03-06 2010-09-14 Kyocera Mita Corporation Device user interface XML string table manager
US7974937B2 (en) * 2007-05-17 2011-07-05 Rockwell Automation Technologies, Inc. Adaptive embedded historians with aggregator component
US7917857B2 (en) * 2007-09-26 2011-03-29 Rockwell Automation Technologies, Inc. Direct subscription to intelligent I/O module
US7930261B2 (en) * 2007-09-26 2011-04-19 Rockwell Automation Technologies, Inc. Historians embedded in industrial units
US7930639B2 (en) * 2007-09-26 2011-04-19 Rockwell Automation Technologies, Inc. Contextualization for historians in industrial systems
US7809656B2 (en) * 2007-09-27 2010-10-05 Rockwell Automation Technologies, Inc. Microhistorians as proxies for data transfer
US7882218B2 (en) * 2007-09-27 2011-02-01 Rockwell Automation Technologies, Inc. Platform independent historian
US7962440B2 (en) * 2007-09-27 2011-06-14 Rockwell Automation Technologies, Inc. Adaptive industrial systems via embedded historian data
US20090089671A1 (en) * 2007-09-28 2009-04-02 Rockwell Automation Technologies, Inc. Programmable controller programming with embedded macro capability
US8375379B2 (en) * 2008-01-31 2013-02-12 SAP France S.A. Importing language extension resources to support application execution
US8010339B2 (en) * 2008-02-14 2011-08-30 Microsoft Corporation Storage device that provides efficient, updatable national language support for a mobile device
US9460708B2 (en) 2008-09-19 2016-10-04 Microsoft Technology Licensing, Llc Automated data cleanup by substitution of words of the same pronunciation and different spelling in speech recognition
US8364487B2 (en) * 2008-10-21 2013-01-29 Microsoft Corporation Speech recognition system with display information
US10755287B2 (en) * 2008-11-25 2020-08-25 Microsoft Technology Licensing, Llc Selecting between client-side and server-side market detection
US10146514B1 (en) * 2009-09-30 2018-12-04 EMC IP Holding Company LLC Centralized support for application user interface elements
US9262398B2 (en) 2011-05-31 2016-02-16 Google Inc. Language set disambiguator
US9639676B2 (en) 2012-05-31 2017-05-02 Microsoft Technology Licensing, Llc Login interface selection for computing environment user login
US10657142B2 (en) * 2016-12-08 2020-05-19 Sap Se Computer input correction using space and time processes
US11307907B2 (en) * 2020-02-03 2022-04-19 Dell Products L.P. Information handling system and method to automatically synchronize operating system and boot firmware languages

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61157919A (ja) * 1984-12-29 1986-07-17 Canon Inc 電子機器
JPH0833806B2 (ja) 1989-03-13 1996-03-29 富士通株式会社 データ処理装置における多国語変換処理方式
US5416903A (en) * 1991-08-19 1995-05-16 International Business Machines Corporation System and method for supporting multilingual translations of a windowed user interface
US5434776A (en) * 1992-11-13 1995-07-18 Microsoft Corporation Method and system for creating multi-lingual computer programs by dynamically loading messages
CA2128828C (en) 1993-08-24 2001-01-02 David Michael Silver Multilingual standard resources
CA2138626A1 (en) 1993-12-23 1995-06-24 Timothy L. Smokoff Method and system for providing multilingual text in a electronic medical device
CA2145923C (en) * 1995-03-30 2001-05-08 Gary W. Miller Computer operating system providing means for formatting information in accordance with specified cultural preferences
US5974372A (en) 1996-02-12 1999-10-26 Dst Systems, Inc. Graphical user interface (GUI) language translator
US5917484A (en) * 1997-02-24 1999-06-29 Hewlett-Packard Company Multilingual system locale configuration
US5900871A (en) * 1997-03-10 1999-05-04 International Business Machines Corporation System and method for managing multiple cultural profiles in an information handling system
US6025836A (en) * 1997-07-23 2000-02-15 Novell, Inc. Method and apparatus for generating object oriented user interfaces

Also Published As

Publication number Publication date
JP2012226785A (ja) 2012-11-15
ATE240547T1 (de) 2003-05-15
JP2011204268A (ja) 2011-10-13
JP2010170560A (ja) 2010-08-05
JP4799668B2 (ja) 2011-10-26
US6252589B1 (en) 2001-06-26
JP5579662B2 (ja) 2014-08-27
WO2000010078A3 (en) 2000-08-31
EP1104563B1 (en) 2003-05-14
JP5437455B2 (ja) 2014-03-12
WO2000010078A2 (en) 2000-02-24
DE69907919T2 (de) 2004-03-04
JP2002522842A (ja) 2002-07-23
DE69907919D1 (de) 2003-06-18
JP4653229B2 (ja) 2011-03-16
EP1104563A2 (en) 2001-06-06

Similar Documents

Publication Publication Date Title
JP4653229B2 (ja) リソースモジュールをアプリケーションに対してアクセス可能にする方法
US6717588B1 (en) Multilingual user interface for an operating system
AU638138B2 (en) Methods and apparatus for implementing data bases to provide object-oriented invocation of applications
EP0578209B1 (en) Method and system for organizing internal structure of a file
EP0737919B1 (en) Method and system for providing interoperability among processes written to execute on different operating systems
US5440744A (en) Methods and apparatus for implementing server functions in a distributed heterogeneous environment
US5619710A (en) Method and apparatus for object-oriented invocation of a server application by a client application
US5341478A (en) Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
JP2002522842A5 (ja)
EP1186317B1 (en) Multilingual user interface for an operating system
US7313587B1 (en) Method and apparatus for localizing Web applications
US5781902A (en) Method, computer program product, and system for extending the capabilities of an existing process to store and display foreign data
US10114666B1 (en) Loading software components
KR20080027293A (ko) 데이터 언어에서 다수 언어들의 관리
CN108008983B (zh) 基于单进程的多接口数据处理方法
JP6902580B2 (ja) トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法
JP6902579B2 (ja) トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法
EP1249756B1 (en) Management of co-processor information by integrating non-program information with program information

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091020

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100119

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100511

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100810

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100813

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101105

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101130

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101216

R150 Certificate of patent or registration of utility model

Ref document number: 4653229

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131224

Year of fee payment: 3

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term