(57)【要約】【課題】  アプリケーションに関するインストール、アンインストール、またはアップグレードインストールなどの操作に際して、アプリケーションの動作を正常に保ちつつ、ユーザが求める適切な表示言語を決定するための手法が求められている。【解決手段】  情報処理装置であって、アプリケーションと、該アプリケーションで利用するための言語リソースモジュールとのインストールを制御する第１の制御手段と、言語リソースモジュールを追加でのインストールを制御する第２の制御手段と、前記アプリケーションで利用する表示言語を決定する決定手段と、を有し、前記決定手段は、前記第２の制御手段により１つの言語に対応する言語リソースモジュールだけが追加でインストールされた場合には、当該追加でインストールされた言語リソースモジュールに対応する言語を表示言語に決定することを特徴とする。【選択図】  図２
2014063472.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションがインストールされる情報処理装置であって、
アプリケーションと、該アプリケーションで利用するための言語リソースモジュールとのインストールを制御する第１の制御手段と、
言語リソースモジュールを追加でのインストールを制御する第２の制御手段と、
前記アプリケーションで利用する表示言語を決定する決定手段と、を有し、
前記決定手段は、前記第２の制御手段により１つの言語に対応する言語リソースモジュールだけが追加でインストールされた場合には、当該追加でインストールされた言語リソースモジュールに対応する言語を表示言語に決定することを特徴とする情報処理装置。
【請求項２】
前記決定手段は、前記第２の制御手段により複数の言語に対応する言語リソースモジュールが追加でインストールされた場合には、前記アプリケーションが提供する選択画面を介して選択された言語を表示言語に決定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記決定手段は、前記アプリケーションが提供する選択画面を介して言語が既に選択されている際には、前記第２の制御手段により１つの言語に対応する言語リソースモジュールだけが追加でインストールされた場合であっても、前記選択画面を介して選択された言語を表示言語に決定することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記アプリケーションが提供する選択画面では、前記第１の制御手段及び前記第２の制御手段によりインストールされた複数の言語リソースモジュールに対応する言語の中から、ユーザに表示言語として用いるべき言語を選択させる画面であることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記アプリケーションが提供する選択画面は、当該アプリケーションの初回の起動時に表示されることを特徴とする請求項３または４に記載の情報処理装置。
【請求項６】
前記アプリケーションが提供する選択画面により選択された言語を当該アプリケーションの表示言語として反映する際に、前記情報処理装置のオペレーティングシステムの再起動が行われたことを判定するために、前記選択画面により選択が行われた時刻情報を保持しておくことを特徴とする請求項３乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記決定手段は、前記アプリケーションの表示言語に対応する前記第２の制御手段によりインストールされた言語リソースモジュールがアンインストールされた場合に、前記第１の制御手段によりインストールされた言語リソースモジュールに対応する言語を表示言語に決定することを特徴とする請求項１乃至６の何れか１項に記載の情報処理装置。
【請求項８】
前記アプリケーションのアップグレードインストールを行う第３の制御手段をさらに有し、
前記第３の制御手段は、アップグレードインストールに際して、アップグレードする前のアプリケーションに設定されていた表示言語に対応する言語リソースモジュールのインストールを制御することを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記第３の制御手段は、アップグレードインストールに際して、アップグレードする前のアプリケーションに設定されていた表示言語に対応する言語リソースモジュールを持っていない場合には、その他の言語リソースモジュールのインストールを制御することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
アプリケーションがインストールされる情報処理装置であって、
アプリケーションと、該アプリケーションで利用するための１つ以上の言語リソースモジュールのインストールを制御する第１の制御手段と、
前記アプリケーションで利用する表示言語を決定する決定手段と、を有し、
前記第１の制御手段は、アップグレードインストールに際して、アップグレードする前のアプリケーションにインストールされた１つ以上の言語を基づき、アップグレードした後のアプリケーションで利用するための１つ以上の言語を選択するための選択画面の表示を制御することを特徴とすることを特徴とする情報処理装置。
【請求項１１】
アプリケーションがインストールされる情報処理装置における方法であって、
アプリケーションと、該アプリケーションで利用するための言語リソースモジュールとのインストールを制御する第１の制御工程と、
言語リソースモジュールを追加でのインストールを制御する第２の制御工程と、
前記アプリケーションで利用する表示言語を決定する決定工程と、を有し、
前記決定工程では、前記第２の制御工程で１つの言語に対応する言語リソースモジュールだけが追加でインストールされた場合には、当該追加でインストールされた言語リソースモジュールに対応する言語を表示言語に決定することを特徴とする方法。
【請求項１２】
請求項１乃至１０のいずれか１項に記載の手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置にインストールされたアプリケーションで用いる言語リソースの管理技術に関する。
【背景技術】
【０００２】
オペレーティングシステム（以降、ＯＳと記述する）で動作するアプリケーションにおいて、１つのインストーラの中にＵＩなどの表示言語の異なるアプリケーションを複数用意し、ユーザの求める表示言語を指定してインストールできるものがある。しかしながら、表示言語の異なるアプリケーションを用意することにより、製品管理などが煩雑となる課題があった。そこで、アプリケーションのプログラムロジックと表示する言語情報（以降、言語リソースモジュールと記述する）を分ける構成にし、言語リソースモジュールのみを切り替えることで、ユーザが求める表示言語とする方法がある（たとえば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００８−５３３５５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
アプリケーションは、ユーザの指示により、インストール、アンインストール、またはアップグレードインストールなどの操作が行われ、また言語リソースモジュールの追加や削除など操作も適宜、行われる。この際に、例えば、アプリケーションのアップグレードを行うと以前の言語リソースモジュールが利用できなくなったり、言語リソースモジュールが不足してアプリケーションが正常に動作できなくなったりすることが起こる可能性がある。
【０００５】
従って、アプリケーションに関するそれら操作に際して、アプリケーションの動作を正常に保ちつつ、ユーザが求める適切な表示言語を決定するための手法が求められる。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明におけるアプリケーションがインストールされる情報処理装置は、アプリケーションと、該アプリケーションで利用するための言語リソースモジュールとのインストールを制御する第１の制御手段と、言語リソースモジュールを追加でのインストールを制御する第２の制御手段と、前記アプリケーションで利用する表示言語を決定する決定手段と、を有し、前記決定手段は、前記第２の制御手段により１つの言語に対応する言語リソースモジュールだけが追加でインストールされた場合には、当該追加でインストールされた言語リソースモジュールに対応する言語を表示言語に決定することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、アプリケーションに関する様々な操作に際して、アプリケーションの動作を正常に保ちつつ、ユーザが求める適切な表示言語を決定することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置の構成を示すブロック図の一例である。
【図２】情報処理装置のソフトウェア構成である。
【図３】情報処理装置のソフトウェア構成である。
【図４】インストーラの処理フローチャートである。
【図５】情報処理装置のレジストリ構成である。
【図６】言語パックインストーラの処理を説明するためのフローチャートである。
【図７】情報処理装置のレジストリ構成である。
【図８】インストーラのＵＩ画面の一例である。
【図９】言語パックインストーラのＵＩ画面の一例である。
【図１０】アプリケーションの起動処理を説明するためのフローチャートである。
【図１１】アプリケーションの起動処理を説明するためのフローチャートである。
【図１２】アプリケーションの言語リソースモジュールの取得処理を説明するためのフローチャートである。
【図１３】アプリケーションの表示言語の選択画面の表示制御処理を説明するためのフローチャートである。
【図１４】情報処理装置のレジストリ構成である。
【図１５】アプリケーションの表示言語の選択画面の一例である。
【図１６】アプリケーションの言語選択後の処理を説明するためのフローチャートである。
【図１７】アプリケーションの言語リソースモジュールを取得する処理を説明するためのフローチャートである。
【図１８】情報処理装置のレジストリ構成である。
【図１９】アップグレードインストーラの構成である。
【図２０】アップグレードインストーラの処理を説明するためのフローチャートである。
【図２１】情報処理装置のレジストリ構成である。
【図２２】アプリケーションの起動処理を説明するためのフローチャートである。
【図２３】アプリケーションの起動時の表示言語の選択画面の一例である。
【図２４】アプリケーションの言語選択後の再起動を促すＵＩ画面の一例である。
【図２５】ユーザ操作に従うレジストリの構成を示す例である。
【図２６】アンインストール操作を含むユーザ操作に従うレジストリの構成を示すである。
【図２７】実施例６における情報処理装置のレジストリ構成である。
【図２８】アプリケーションの言語選択後の処理を説明するためのフローチャートである。
【図２９】実施例６における情報処理装置のレジストリ構成である。
【図３０】アプリケーションの起動時の処理を説明するためのフローチャートである。
【図３１】インストーラの言語選択画面の一例である。
【図３２】インストーラの言語選択画面の一例である。
【図３３】実施例７における情報処理装置のレジストリ構成である。
【図３４】インストーラの処理を説明するためのフローチャートである。
【図３５】インストーラの言語選択画面の処理を説明するためのフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００１０】
本発明の情報処理装置は、文字や記号を表示する（グラフィック）ユーザインタフェースを持ち、言語によって表示する文字や記号が変わるアプリケーションを動作させることができる。
【００１１】
図１は本実施例に適応可能な情報処理装置の構成を示すブロック図である。
【００１２】
図１において、ＣＰＵ１０１は、ＲＯＭ１０３またはハードディスク１１１からＲＡＭ１０２にロードされたオペレーティングシステムや一般アプリケーションなどのプログラムを実行し、後述するフローチャートを実現する。ＲＡＭ１０２は、ＣＰＵ１０１の主メモリ、ワークエリア等として機能する。キーボードコントローラＫＢＣ１０５は、キーボード１０９や不図示のポインティングデバイスからのキー入力を制御する。ＣＲＴコントローラ（ＣＲＴＣ）１０６は、ＣＲＴディスプレイ１１０の表示を制御する。ディスクコントローラ（ＤＫＣ）１０７は、ブートプログラム、種々のアプリケーション、フォントデータ、ユーザファイル、後述する編集ファイル等を記憶するハードディスク（ＨＤ）１１１やフロッピー（登録商標）ディスク（ＦＤ）（不図示）、ＣＤ−ＲＯＭ（不図示）等とのアクセスを制御する。ＰＲＴＣ１０８は、接続されたプリンタ１０７との間の信号の交換を制御する。ＮＣ１１２はネットワークに接続されて、ネットワークに接続された他の機器との通信制御処理を実行する。
【００１３】
図２は本実施例に適応可能な情報処理装置のソフトウェア構成である。
【００１４】
２０１は、図１の情報処理装置である。情報処理装置２０１は、ＯＳ２０２と、インストーラ２０３と、言語パックインストーラ２０９とレジストリ２１３を有する。
【００１５】
ＯＳ２０２は一般的なＯＳであり、メモリ管理、リソース管理、ドライバ管理等の機能を有する。
【００１６】
インストーラ２０３はＯＳ２０２にアプリケーションのインストールを実行するための各種のユーザインタフェースを備え、情報処理装置２０１のデスクトップ上でユーザからの要求を受け付けて、各機能処理の実行を総括的に管理している。また、インストーラ２０３は、アプリケーション２０６を実行可能な状態にするための処理（ハードディスク１１１への配置等）を行う。以下これをインストールと呼ぶ。また、アプリケーション２０６を削除する処理をアンインストールと呼ぶ。インストーラ２０３は、ＨＤ１１１に保持され、プログラム実行をＣＰＵ１０１で行い、実行情報や一時データをＲＡＭ１０２に記憶する。
【００１７】
インストーラＵＩ部２０４は、インストーラ２０３において、ユーザインタフェースの構築やユーザからの各種入力操作の受け付けを処理する。インストーラ実行部２０５は、インストーラ２０３において、アプリケーションのインストールを制御する。インストーラ実行部２０５はアプリケーションのアンインストールも制御するように設計することも可能である。またインストール後のアプリケーションを動作させるために必要な情報を、ＯＳ２０１を介し、レジストリ２１３に読み書きすることができる。アプリケーション２０６は、インストーラ２０３がインストールするアプリケーションである。アプリケーション２０６はどのような機能を持つものでもかまわない。
【００１８】
言語リソースモジュール２０７、２０８は、インストーラ２０３がインストールすることができる言語リソースモジュールである。言語リソースモジュールは、インストールが完了したアプリケーション２０６が、ＯＳ２０２より起動指示を受けた際に、アプリケーション２０６により利用される。ここで、言語リソースモジュールとは、アプリケーション２０６が表示する文字列やアイコンなどをまとめたモジュールで、英語や日本語といった言語によって表示する内容が変わる。ここでは、言語リソースモジュール２０７は「英語」用の言語リソースモジュールである。同様に言語リソースモジュール２０８は「日本語」用の言語リソースモジュールである。このようにインストーラ２０３は、アプリケーション２０６が使用できる言語リソースモジュールを１つ以上同梱している。
【００１９】
言語パックインストーラ２０９は、情報処理装置２０１に言語リソースモジュール２１２を追加でインストールする。インストールされたリソースモジュール２１２はアプリケーション２０６が利用できるようになる。言語パックインストーラ２０９は、ＨＤ１１１に保持され、プログラム実行をＣＰＵ１０１で行い、実行情報や一時データをＲＡＭ１０２に記憶する。インストーラＵＩ部２１０は、言語パックインストーラ２０９において、ユーザインタフェースの構築やユーザからの各種入力操作の受け付けを処理する。インストーラ実行部２１１は、言語パックインストーラ２０９において、言語リソースモジュールのインストール、アンインストールを制御する。またインストール後の必要な情報を、ＯＳ２０１を介し、レジストリ２１３に読み書きすることができる。言語リソースモジュール２１２は、言語リソースモジュール２０７、２０８と同じ構成のものであり、インストールが完了したアプリケーション２０６が、ＯＳ２０２より起動指示を受けた際に、利用可能となる。ここでは、言語リソースモジュール２１２は「ドイツ語」用の言語リソースモジュールである。
【００２０】
このように言語パックインストーラ２０９は、アプリケーション２０６が使用する言語リソースモジュールを追加できるインストーラである。また図示していないが、言語パックインストーラ２０９は、言語リソースモジュール２１２を複数持つ構成をとることもでき、ドイツ語、スペイン語、フランス語等の複数の言語リソースモジュールを一括でインストールすることができる。
【００２１】
レジストリ２１３は、ＯＳ２０２におけるシステムプログラムやハードウェア、ユーザプログラムなどのシステム情報が格納されているデータベースで、ＯＳ２０２を介し、インストーラ２０３、言語パックインストーラ２０９、アプリケーション２０６が使用することができる。インストーラ２０３、言語パックインストーラ２０９は、レジストリ２１３を参照しインストールに必要な情報を収集し、インストールが終わった後にインストーラ２０３、言語パックインストーラ２０９、アプリケーション２０６が必要になる情報を書き込む。
【００２２】
図３は、インストーラ２０３によりアプリケーション３０３がインストールされた後の情報処理装置のソフトウェア構成を示す。加えて、言語パックインストーラ２０９によって言語リソースモジュール３０８がインストールされている。
【００２３】
３０１は、２０１と同じ情報処理装置である。ここで、情報処理装置２０１は、インストーラ２０３、言語パックインストーラ２０９によって、アプリケーション２０６、言語パックモジュール２０７、２０８、２１２がインストールされる前の状態である。一方、情報処理装置３０１は、アプリケーション２０６に加え、言語パックモジュール２０７、２０８、２１２の少なくともいずれかがインストールされた後の状態である。ただし、言語パックモジュール２１２は、アプリケーション２０６がインストールされた環境でないと追加でインストールすることができない。
【００２４】
アプリケーション３０３は、図２のインストーラ２０３によってインストールされたアプリケーション２０６である。アプリケーション３０３はアプリケーション２０６の内部構成をより詳しく説明したものである。アプリケーション３０３は、ユーザにより起動されるとインストーラ２０３によってインストールされた言語リソースモジュール３０７を使用し、文字列やアイコンを表示し、機能提供することができる。また、ここでは、情報処理装置３０１には、言語パックインストーラ２０９より追加でインストールされた追加言語リソースモジュール３０８がある場合を想定する。アプリケーション３０３は、この追加言語リソースモジュール３０８も使用することができる。アプリケーション３０３には、３つのモジュールがある。１つは３０４のモジュールＡ、１つは３０５のモジュールＢ、１つは共通モジュール３０６である。モジュールＡ３０４とモジュールＢ３０５は、それぞれが別の用途を持ちユーザによって使用されるタイミングも異なる。モジュールＡ３０４とモジュールＢ３０５はＵＩを持ち、その際に表示する文字列などは言語リソースモジュール３０７または追加言語リソースモジュール３０８を使用する。このように、モジュールＡ３０４とモジュールＢ３０５は、別用途のモジュールであるが、双方に共通する処理が必要になる。そのような共通する処理を行うのが、共通モジュール３０６である。モジュールＡ３０４とモジュールＢ３０５がいずれの言語リソースモジュールを使用するか選定する場合、共通モジュール３０６に用意されたＡＰＩなどを使用することで、１つのアプリケーションとして、表示についての整合性を合わせることができる。
【００２５】
本実施例では、アプリケーション３０３内に、モジュールＡ３０４とモジュールＢ３０５があり、さらに言語リソースモジュールの選定を行う共通モジュール３０６が存在するが、これらが１つのモジュールである場合や、共通モジュールを持たない構成においても、本実施例の処理は適応可能である。また本実施例では、ＵＩを保持する実行ファイルであるモジュールＡ３０４とモジュールＢ３０５で説明するが、アプリケーションの構成として限定するものではない。
【００２６】
以上が本実施例に適応可能な、アプリケーションと言語リソースモジュールの関係である。次に本実施例の特徴である、インストーラと言語パックインストーラの処理を説明する。
【００２７】
図４は、情報処理装置におけるインストーラ２０３のアプリケーションインストール処理を説明するためのフローチャートである。情報処理装置は、本処理を実現するソフトウェアのプログラムコードを記憶媒体に記憶する。システムあるいは装置のＣＰＵ１０１が、ＲＡＭ１０２やハードディスク（ＨＤ）１１１に格納されたプログラムコードを読み出し、フローチャートに記載の各ステップを実行する。
【００２８】
後述されるフローチャートを用いて説明される処理についても、本処理と同様にＣＰＵ１０１などがインストーラまたはインストールされたアプリケーションといったプログラムを実行することで実現されるものとする。
【００２９】
まず、Ｓ４０１において、インストーラ２０３は図８で示すようなユーザにアプリケーションを使用する言語を指定させるＵＩ画面８０１を表示し、選択指示を受け付ける。これはインストーラ２０３のように、言語リソースモジュール２０７と言語リソースモジュール２０８の複数の言語リソースモジュールを持つ場合に、インストーラＵＩ部２０４が提供する画面である。言語リソースモジュールが１種類しかなく選択の余地がない場合は言語を指定させるＵＩの表示を省略してもよい。
【００３０】
Ｓ４０２において、インストーラ２０３は、アプリケーション２０６のインストール制御を行う。次に、Ｓ４０３において、インストーラ２０３はＳ４０１で選択された言語の言語リソースモジュールをインストールする。ここでは、ＵＩ画面８０１で示すように「Ｊａｐａｎｅｓｅ」が選択されたとして、言語リソースモジュール２０８のインストールを行ったとする。次に、Ｓ４０４において、インストーラ２０３はレジストリ２１３にインストール情報を書き込む。レジストリ２１３の構成および、書き込んだ情報については図５で説明する。
【００３１】
以上、図４で示す処理によって、図３で前述したようにＯＳ２０２にアプリケーション３０３と言語リソースモジュール３０７がインストールされ、レジストリ２１３に必要な情報が作成された状態となる。
【００３２】
図５は、レジストリ２１３の構成を示す。
【００３３】
レジストリ情報５０１は、前述したＳ４０４において、インストーラ２０３によって書き込まれた情報である。キー５０２は、アプリケーション２０６が書き込んだと判別できるよう、アプリケーション名などの名称を付けたキーである。本実施例ではこれを「本体キー」と表現する。本体キー５０２には、３つの項目に対応する値５０３、５０４、５０５が存在する。値５０３はアプリケーション２０６のバージョン情報を、値５０４はアプリケーション２０６を一意に判別するための文字列である。値５０５は、どの言語の言語リソースモジュールをインストールしたかを示す情報である。
【００３４】
ここで、値５０５は、前述のＳ４０３で、言語リソースモジュール２０８がインストールされた状態であるので、「Ｊａｐａｎｅｓｅ」のロケールに相当する「ｊａ」が書き込まれることになる。レジストリ情報５０１は、アプリケーション２０６がアンインストールされると削除される。
【００３５】
次に、図６で示すフローチャートを用いて、言語パックインストーラ２０９の処理について説明する。
【００３６】
本処理では、言語パックインストーラ２０９を使い、アプリケーション２０６用の言語リソースモジュールをインストールする処理である。言語パックインストーラ２０９によるインストール処理時には、後述するように図９で示す画面表示が行われる。
【００３７】
まず、Ｓ６０１において、言語パックインストーラ２０９はユーザに追加する言語を指定させるための図９で示すＵＩ画面を表示し、どの言語の言語リソースモジュールをインストールするかの指示を受け付ける。
【００３８】
ここで、言語パックインストーラ２０９のように、言語リソースモジュールがひとつしかない場合には、図９（ａ）で示す画面表示が行われる。言語を選択するためのＵＩ画面９０１は、言語パックインストーラ２０９のインストーラＵＩ部２１０の持つＵＩである。ＵＩ画面９０１は、インストール済み言語を表示する領域９０２と、インストールする言語を選択させる領域９０３を持つ。インストール済み言語を表示する領域９０２は、Ｓ４０３において言語リソースモジュール２０８がインストールされたので日本語が表示されている。インストールする言語を選択させる領域９０３には、言語パックインストーラ２０９が言語リソースモジュール（ドイツ語）２１２しか持っていないので、ドイツ語の選択肢しか表示されない。
【００３９】
次に、一方で、言語パックインストーラに言語リソースモジュールが複数組み込まれている場合には、ユーザに１つ以上の言語を指定可能な、図９（ｂ）で示す画面表示が行われる。ＵＩ画面９０４では、ンストール済み言語を表示する領域と、インストールする言語を選択させる領域を持つ。インストールする言語を選択させる領域では、言語パックインストーラが所持している複数の言語リソースモジュールに対応する選択肢が複数表示され、選択可能となっているのがわかる。
【００４０】
言語パックインストーラは、言語リソースモジュールをインストールした後に、どの言語リソースモジュールをインストールしたかを判別するために、レジストリ２１３に言語情報を作成する。この作成された情報は、アプリケーション３０３が表示言語を選定する際や、再度言語パックインストーラで言語リソースモジュールをインストールする際に必要になる。
【００４１】
次に、Ｓ６０２において、言語パックインストーラは指示された言語リソースモジュール２１２のインストールを行う。次に、Ｓ６０３において、言語パックインストーラはレジストリ２１３にインストール情報（「言語別キー」）を書き込む。レジストリ２１３の構成および、書き込んだ情報については図７で説明する。Ｓ６０４において、言語パックインストーラは、Ｓ６０１で指示された全ての言語の言語リソースモジュールのインストールが終わったかの判定を行う。全て終わっていた場合にはＳ６０５に進み、全て終わっていない場合にはＳ６０２に戻り、残りの言語の言語リソースモジュールのインストールを行う。
【００４２】
Ｓ６０５において、言語パックインストーラはレジストリ２１３にＳ６０２でインストールされた言語を判別するキーを作成する。本実施例では、これを「言語パックキー」と表現する。この時には、作成されたキーに対応する値は作成しない。キーだけ作成されたレジストリの値については、ＯＳ２０２の仕様に従う扱いとなるが、本実施例では便宜上「ＮＵＬＬ」になるものとする。
【００４３】
次に、Ｓ６０６において、インストールしたモジュールが１言語のみであるかを判定する。１言語のみであった場合にはＳ６０７に進み、複数言語のインストールが行われていた場合にはＳ６０８に進む。
【００４４】
Ｓ６０７では、言語パックインストーラはレジストリ２１３の「言語パックキー」に対応する値として、インストールした言語リソースモジュールに係る情報を書き込む。具体的には、言語パックインストーラ２０９のように言語リソースモジュール（ドイツ語）２１２しか持っていない場合には、「言語パックキー」に対応する値として、ドイツ語のロケールに相当する「ｄｅ」が書き込まれる。
【００４５】
次に、Ｓ６０８において、言語パックインストーラはレジストリ２１３にユーザによる選択言語を示すユーザ選択キーがあるかどうかの判定を行う。ユーザ選択キーは、言語リソースモジュールのインストール後に、アプリケーション３０３からユ−ザが表示言語を１つ選択した際に、その言語を保持しておくためのレジストリの領域である。Ｓ６０８において、ユーザ選択キーがない場合はＳ６０９に進み、存在する場合には本処理を終了する。Ｓ６０９において、言語パックインストーラはレジストリ２１３にユーザ選択キーを作成する。この時には、対応する値は作成しない。
【００４６】
ここで、アプリケーション３０３のインストール時に、使用できる言語がひとつしかない場合にはレジストリに該当するキーが用意されない。よって、言語パックインストーラで言語リソースモジュールが追加されたタイミング（Ｓ６０９）で、「ユーザ選択キー」が初めてレジストリ２１３に作成される。Ｓ６０８の判定において、ユーザ選択キーが既にある場合とは、言語パックインストーラルを複数回使用して、言語リソースモジュールの追加インストールを行った場合などに起こり得る。
【００４７】
図７は、図６で示す処理を行った後の、レジストリ２１３の構成を示している。レジストリ情報７０１は、前述したレジストリ情報５０１の情報を包含している。
【００４８】
言語別キー７０６は、言語パックインストーラ２０９が図６のＳ６０３で作成したインストール情報を示す。言語別キー７０６は、言語パックインストーラでインストールされた言語リソースモジュールの数だけ作成される。
【００４９】
言語パックインストーラ２０９の場合には、言語リソースモジュール２１２のひとつしか持っていないので言語別キーはひとつしか作成されない。本実施例では、複数の「言語別キー」が作成される場合を想定し、「言語別キー」がユニークとするため、言語コードなどユニークとなるような値を、キー名称に付加する。たとえば、言語別キー７０６で示すように、ドイツ語の言語リソースモジュール２１２をインストールした場合にはドイツ語の言語コードである「０４０７」を使用し、「ＡｐｐｌｉｃａｔｉｏｎＸＸ￥ＬａｎｇＰａｃｋ￥０４０７」というデータが言語別キーの名称として、書き込まれている。
【００５０】
値７０７は、インストールされた言語リソースモジュールの言語を示す情報である。ここでは、ドイツ語のロケールに相当する「ｄｅ」がデータとして書き込まれる。
【００５１】
言語パックキー７０８は、図６のＳ６０５で言語パックインストーラ２０９が作成するインストール情報である。言語パックキー７０８に対応する値７０９には、言語パックインストーラ２０９によるインストール処理が行われた際に、前述したＳ６０７でドイツ語のロケールに相当する「ｄｅ」が書き込まれる。
【００５２】
ユーザ選択キー７１０は、図６のＳ６０９で言語パックインストーラ２０９が作成するインストール情報である。Ｓ６０９で「ユーザ選択キー」が作成された時には、値が書き込まれない。
【００５３】
言語別キー７０６及び言語パックキー７０８は、言語パックアンインストーラにより、全ての追加言語リソースモジュールがアンインストールされると削除される。
【００５４】
次に、図１０に示すフローチャートを用いて、インストールされたアプリケーション３０３の起動時の処理を説明する。アプリケーション３０３がモジュールＡ３０４、モジュールＢ３０５のように、いくつかのモジュールを持っており、モジュールＡ３０４またはモジュールＢ３０５が起動する場合でも良い。
【００５５】
まず、Ｓ１１０１において、アプリケーション３０３は、レジストリ２１３の言語情報の更新処理（図１７）を行う。次に、Ｓ１１０２において、アプリケーション３０３は、起動の際の言語の選定を行い、該当する言語リソースモジュールを取得する処理（図１１）を行う。
【００５６】
処理順序はＳ１１０１を行い、次にＳ１１０２を行うが、本実施例ではＳ１１０２から説明する。本実施例ではＳ１１０１およびＳ１１０２はアプリケーション３０３内の共通モジュール３０６が行う処理とする。共通モジュール３０６を持たない構成の場合は、アプリケーション３０３が行えばよい。
【００５７】
図１１は、図１０のＳ１１０２の処理の詳細を説明するためのフローチャートである。具体的には、ここでは図７のレジストリの情報を用いて、アプリケーションが起動時に行う表示する言語を選定して、対応する言語リソースモジュールを取得する処理について説明する。
【００５８】
まず、Ｓ１２０１において、共通モジュール３０６は、レジストリ情報７０１の本体キー５０１を参照する。そして、アプリケーション３０３のインストール時に作成された言語情報である値５０５を取得する。図７では、値５０５である、日本語のロケールに対応する「ｊａ」という値が取得される。
【００５９】
次にＳ１２０２において、共通モジュール３０６はインストーラ２０３がインストールした言語リソースモジュール３０７の中から「ｊａ」に対応する言語リソースモジュールを取得する。言語リソースモジュール３０７は情報処理装置３０１内に保持されている。この保持されている場所（フォルダパスまたはファイルパス）については、インストーラ２０３と言語パックインストーラ２０９とが、それぞれ別の場所に言語リソースモジュールをインストールする。そのため、共通モジュール３０６は、インストーラ２０３がインストールした言語リソースモジュールの保持されている場所を一意に特定することができる。例えば、本体キー５０１から取得した言語の言語リソースモジュールは、アプリケーション３０３のインストールパス直下を参照するなどのルールである。こうしてＳ１２０２においては、共通モジュール３０６は、リソースファイルのファイル名を指定し、「ｊａ」に該当する言語リソースモジュールを取得することができる。言語リソースモジュールの構成やファイルフォーマットはどのようなものでもよい。本実施例ではＸＭＬのような構造化形式を持つファイルに、使用する文字列を記述しておくものとする。
【００６０】
次に、Ｓ１２０３において、共通モジュール３０６はレジストリ情報７０１のユーザ選択キー７１０を参照し、ユーザ選択キー７１０に有効な値７１１が存在するかどうかを判定する。ユーザ選択キー７１０がない場合、または値７１１がＮＵＬＬである場合は、Ｓ１２０７に進む。ユーザ選択キー７１０の値７１１が存在した場合には、Ｓ１２０４に進む。前述の図７の例では、後述する図１５で示すアプリケーション３０３が提供するシステム設定のＵＩ画面を開き、ユーザが表示言語を選択する前であるため、ユーザ選択キー７１０の値７１１はＮＵＬＬとなっている。
【００６１】
Ｓ１２０４において、共通モジュール３０６は、本体キー５０１の値５０５と、ユーザ選択キー７１０の値７１１とが同じ言語を示す値であるか判定する。同じ値であった場合には図１１で示す本処理は終了となる。このように、本体キー５０１とユーザ選択キー７１０の値が同じ言語であった場合、Ｓ１２０２で取得した言語リソースモジュール３０７がアプリケーション３０３の表示言語となる。Ｓ１２０４において、本体キー５０１の値５０５と、ユーザ選択キー７１０の値７１１とが同じではない場合にはＳ１２０５に進む。
【００６２】
Ｓ１２０５において、共通モジュール３０６は、インストールされている言語リソースモジュールの中から、ユーザ選択キー７１０の値７１１に対応する言語リソースモジュールが存在するかどうかを判定する。該当する言語リソースモジュールが見つかった場合にはＳ１２１１に進み、見つからなかった場合にはＳ１２０６に進む。
【００６３】
Ｓ１２１１に進んだ場合、共通モジュール３０６は、ユーザ選択キー７１０の値７１１に対応する言語を、アプリケーション３０３の表示言語と決定する。また、Ｓ１２０６において、共通モジュール３０６は、ユーザ選択キー７１０の値７１１をＮＵＬＬに変更し、Ｓ１２０７に進む。ユーザ選択キー７１０の値７１１に該当する言語リソースモジュール３０８が存在しないので、次回の本処理における判定処理を一部省略するためのステップである。
【００６４】
Ｓ１２０３の判断処理は、ユーザ選択キー７１０の値７１１が書き込まれた後に該当する言語リソースモジュールがアンインストールされた場合に、言語リソースモジュールが見つからないためにアプリケーション３０３が起動できないといった障害を防止するためのステップである。
【００６５】
次に、Ｓ１２０７において、共通モジュール３０６はレジストリ情報７０１の言語パックキー７０８を参照し、言語パックキー７０８に有効な値７０９が存在するかどうかを判定する。言語パックキー７０８がない場合、または値７０９がＮＵＬＬである場合には図１１で示す本処理は終了となる。この場合、共通モジュール３０６が取得した言語リソースモジュールは、Ｓ１２０２で取得した「本体キー」に該当するものである。アプリケーション３０３のモジュールＡ３０４やモジュールＢ３０５は、この言語リソースモジュールを使用することになる。Ｓ１２０７において、言語パックキー７０８の値７０９が存在した場合には、Ｓ１２０８に進む。図７で示すレジストリ情報７０１の例の場合、言語パックキー７０８の値７０９が存在するので、Ｓ１２０８に進むことになる。
【００６６】
Ｓ１２０８において、共通モジュール３０６は、本体キー５０１の値５０５と、言語パックキー７０８の値７０９が同じ言語に対応する値であるか判定する。同じ値であった場合には図１１で示す本処理は終了となる。この場合、共通モジュール３０６が取得した言語リソースモジュールはＳ１２０２で取得した「本体キー」に該当するものである。アプリケーション３０３のモジュールＡ３０４やモジュールＢ３０５は、この言語リソースモジュールを使用することになる。
【００６７】
Ｓ１２０８において、本体キー５０１の値５０５と、言語パックキー７０８の値７０９が同じではなかった場合は、Ｓ１２０９に進む。図７で示すレジストリ情報７０１の例の場合、本体キー５０１の値５０５は日本語を表す「ｊａ」であり、言語パックキー７０８の値７０９はドイツ語を表す「ｄｅ」であり、Ｓ１２０９に進むことになる。
【００６８】
Ｓ１２０９において、共通モジュール３０６は言語パックキー７０８の値７０９に対応する言語を、アプリケーション３０３の表示言語と決定して、Ｓ１２１０に進む。これは、図７で示すレジストリ情報７０１の例のように、ユーザが言語パックインストーラ２０９で１言語のみ追加した場合などに起こりやすい。
【００６９】
Ｓ１２１０において、共通モジュール３０６は、Ｓ１２０９またはＳ１２１１で表示言語と決定された言語リソースモジュールの取得処理を行う。この処理に関しては、図１２を用いた詳細な説明を後述する。
【００７０】
以上のように、図１１で示す処理により、アプリケーション３０３ないしは、モジュールＡ３０４、モジュールＢ３０５が使用する表示言語に関する言語リソースモジュールが取得される。
【００７１】
なお、図１１では、ユーザ選択キーが見つからなかった場合にＳ１２０７に進み、言語パックキー７０８に該当する言語リソースモジュール３０８を探索している。しかしながら、この変形例として、ユーザ選択キーが見つからなかった場合には、言語パックキー７０８の値を使用せず、Ｓ１２０２で取得した本体キー５０１の言語リソースモジュール３０７を利用するものとしてもよい。
【００７２】
図１２で示すフローチャートは、図１１のＳ１２１０の処理の詳細であって、表示言語と決定された言語リソースモジュールの取得処理を説明するためのものである。
【００７３】
まず、Ｓ１３０１において、共通モジュール３０６は言語パックインストーラ２０９がインストールした言語リソースモジュール３０８の保持されているファイルパスを取得する。この保持されている場所（フォルダなどのパス）については、前述したように、例えば言語パックインストーラが使用するインストールパス直下を参照するなどのルールがある。
【００７４】
次に、Ｓ１３０２において、共通モジュール３０６はＳ１２０９またはＳ１２０６で表示言語と決定された言語リソースモジュールに対応するフォルダを探す。図７の例では、値７０９が「ｄｅ」であるので、「ｄｅ」（ドイツ語用の）フォルダがあるかどうかの探索が行われる。探索の結果、フォルダが見つからない場合には図１２の処理を終了し、見つかった場合にはＳ１３０３に進む。
【００７５】
次に１３０３において、共通モジュール３０６は言語リソースモジュールのあるフォルダ内に、アプリケーション３０３が使用するリソースファイルがあるかどうかを探索する。リソースファイルが見つかった場合はＳ１３０４に進み、見つからなかった場合には図１２で示す処理を終了する。ここで、見つからなかった場合とは、アプリケーション３０３のバージョンアップなどにより、言語パックインストーラ２０９で追加した言語リソースモジュールに係るリソースファイルが不足した場合などが該当する。
【００７６】
Ｓ１３０４において、共通モジュール３０６は言語パックインストーラ２０９によりインストールされた言語リソースモジュールを取得し、Ｓ１２０２で指定して取得したリソースファイルを上書き、図１２で示す処理を終了する。
【００７７】
次に、図１３で示すフローチャートを用いて、アプリケーション３０３ないしは、モジュールＡ３０４、モジュールＢ３０５が起動した後に、ユーザの指示に従い、アプリケーション３０３の表示言語を切り替える処理を説明する。本処理では、図１５で示すアプリケーションの言語選択のＵＩ画面も用いて説明を行う。
【００７８】
まず、Ｓ１４０１において、アプリケーション３０３は、レジストリ情報７０１から、言語別キー７０６があるかどうかを判断する。言語別キー７０６がひとつも無い場合はＳ１４０４に進み、言語別キー７０６がひとつ以上ある場合はＳ１４０２に進む。
【００７９】
Ｓ１４０２において、言語別キー７０６の値７０７を取得して、取得した値に対応する言語を含むような言語リストを作成する。図７のレジストリ情報７０１の例は、言語パックインストーラ２０９により言語リソースモジュール３０８がひとつだけインストールした例なので、言語別キー７０６はひとつしかない。ここで、言語パックインストーラにより複数の言語リソースモジュールのインストールが行われた場合には、後述する図１４で示すようなレジストリ情報となる。Ｓ１４０３において、アプリケーション３０３は、Ｓ１４０２で作成した言語リストに該当する言語リソースモジュール３０８を探す。探索の結果、該当する言語リソースモジュールが存在しない言語については、言語リストから除外する。言語リソースモジュールがアンインストールされた場合などに、言語別キー７０６の値７０７に対応する言語リソースモジュールが存在しないことが起こるからである。
【００８０】
次に、Ｓ１４０４において、アプリケーション３０３は、レジストリ情報から本体キー５０１の値５０５を取得する。Ｓ１４０５において、アプリケーション３０３は、本体キー５０１の値５０５に対応する言語を含む言語リストを作成する。図７で示すレジストリ情報７０１の場合には、「ｊａ」「ｄｅ」の２つの言語（日本語とドイツ語）を含む言語リストが完成する。ここで、もし重複する言語があった場合は、リストから除外する。
【００８１】
次に、Ｓ１４０６において、作成した言語リストが１言語のみであるかを判定する。１言語のみである場合にはＳ１４０７に進み、複数であった場合にはＳ１４０８に進む。
【００８２】
Ｓ１４０７では、Ｓ１４０５で作成した言語リストをユーザに表示する際に、図１５（ｂ）で示すように、表示言語の編集および選択などが不可の状態で表示する。
【００８３】
図１５（ｂ）で示す選択画面１６０３は、アプリケーション３０３が提供するＵＩのひとつであり、ひとつの言語リソースモジュールしかインストールされていない場合の例である。選択欄１６０４では、該当するひとつの言語のみ表示し、ユーザが変更することはできないように、グレーアウト制御などを行うものとする。
【００８４】
Ｓ１４０８では、アプリケーション３０３は共通モジュール３０６より、現在の表示言語を取得する。Ｓ１４０９において、言語リストの先頭に現在の表示言語になるように並び替える。Ｓ１４１０に進み、図１５（ａ）で示すような画面を介して、言語リストを表示する。
【００８５】
図１５（ａ）で示す選択画面１６０１は、アプリケーション３０３が提供するＵＩのひとつであり、図１４で示すレジストリ情報１５０１の場合に表示される画面の例である。ここに表示される言語リストに基づく選択欄１６０２には、現在の表示言語（日本語）をリストの先頭とし、以下にその他の言語が並んでいる。ユーザは、この選択欄１６０２から任意の言語を選択することで、アプリケーション３０３の表示言語の切り替え指示を行うことができる。
【００８６】
図１４は、言語パックインストーラで複数言語をインストールしたレジストリの構成である。レジストリ情報１５０１は、基本的にレジストリ情報７０１と形式は同じである。
【００８７】
ここで、レジストリ情報１５０１は、言語別キーが２つあり、それぞれ言語別キー１５０２、言語別キー１５０３である。言語別キーは言語パックインストーラ２０９によって言語リソースモジュールをインストーするごとに追加される。よって、レジストリ情報１５０１は、言語パックインストーラ２０９によって言語リソースモジュール３０８が２つインストールされた状態である。具体的には、レジストリ情報１５０１は、インストーラ２０３によって日本語の言語リソースモジュールがインストールされ、言語パックインストーラ２０９によってドイツ語の言語リソースモジュールと、フランス語の言語リソースモジュールとがインストールされた場合の情報である。図１５（ａ）は、図１４のレジストリ情報１５０１に対応する表示言語の選択のためのＵＩ画面となる。
【００８８】
次に、図１６で示すフローチャートを用いて、図１５（ａ）で示す選択画面により、アプリケーションの表示言語の選択が行われた場合の処理を説明する。
【００８９】
まず、Ｓ１８０１において、共通モジュール３０６は前述の言語リストに基づく選択欄１６０２を介した、表示言語の切り替えの指示を受け付ける。
【００９０】
次に、Ｓ１８０２において、共通モジュール３０６は切り替えるべき表示言語を設定ファイルに書きだす。このファイルは共通モジュール３０６が参照できるファイル形式であればどのようなものでも良い。本実施例ではＸＭＬファイルとする。このＸＭＬファイルを読み込むことで、共通モジュール３０６は、以降の処理で、切り替えるべき表示言語が何であるかを把握することができる。
【００９１】
次に、Ｓ１８０３において、共通モジュール３０６は、ＯＳ２０２の再起動を判断するためのファイルを作成する。この再起動を判断するためのファイルは、ファイルを作成する際に、再起動後に消去されるという属性を持たせたファイルである。再起動判定処理については図１７のＳ１９０１で後述する。以上で、共通モジュール３０６の表示言語の切り替えの指示を受け取った際の処理が完了する。
【００９２】
なお、この再起動判定ファイルと、設定ファイルを使用した方法は、共通モジュール３０６がファイルを作成したフォルダへのアクセス権があるという前提で成り立つ。共通モジュール３０６がフォルダへのアクセス権がない場合に同様の機能を実現させる方法は実施例６で後述する。
【００９３】
図１６で示す処理により、本実施例のように、アプリケーション３０３が、モジュールＡ３０４、モジュールＢ３０５といった複数のモジュールから成る場合でも、言語リソースモジュールの切り替えのタイミングを統一することができる。
【００９４】
次に、図１７のフローチャートを用いて、図１０のＳ１１０１の処理の詳細について説明する。具体的には、本処理はレジストリの言語情報の更新を行うための処理である。
【００９５】
まず、Ｓ１９０１において、共通モジュール３０６は、再起動を判断するためのファイルの探索を行う。この再起動を判断するためのファイルは図１６のＳ１８０３で作成されたものである。ファイルが見つかった場合は、図１７のフローを終了する。これはＯＳ２０２の再起動で消去されるファイルがまだ存在していることから、ＯＳ２０２の再起動が行われていないことを示す。図１６のように、表示言語の切り替え指示があった場合には、ＯＳ２０２の再起動後に本処理が行われることになる。一方、Ｓ１９０１において、再起動を判断するためのファイルが見つからなかった場合はＳ１９０２に進む。
【００９６】
Ｓ１９０２において、共通モジュール３０６は設定ファイルの探索を行う。この設定ファイルは、図１６のＳ１８０２において切り替えるべき言語が記述された設定ファイルである。設定ファイルが存在する場合はＳ１９０３に進み、設定ファイルが存在しなかった場合には図１７で示す処理を終了する。
【００９７】
Ｓ１９０３において、共通モジュール３０６は設定ファイルに記述されている言語を読み込む。Ｓ１９０４において、共通モジュール３０６は、レジストリ情報７０１のユーザ選択キー７１０の値７１１に読み取った言語に対応する値を書き込む。この処理によって今まで「ＮＵＬＬ」であった値７１１に言語が設定される。次に、Ｓ１９０５において、共通モジュール３０６は設定ファイルを削除する。
【００９８】
以上、実施例１では、インストーラ２０３及び言語パックインストーラ２０９から、異なる言語の言語リソースモジュールをインストールした際の、アプリケーション３０３ないしは、モジュール３０４、３０５における表示言語の決定処理などを説明した。これら処理により、アプリケーションの動作を正常に保ちつつ、ユーザ所望の表示言語に対応する言語リソースモジュールをアプリケーションが適切に利用することが可能となる。
【００９９】
［実施例２］
実施例２では、既にアプリケーション３０３と言語リソースモジュール３０７、３０８がインストールされている状態で、アプリケーション３０３をアップグレードする際の処理について説明する。ここで、アップグレードとは、アップグレードインストーラを用いて、既にインストールされているアプリケーション３０３をアンインストールし、バージョンアップ版のアプリケーションをインストールすることである。
【０１００】
本実施例において、システム構成やアプリケーション３０３のインストールなど、実施例１と同様の説明は割愛する。
【０１０１】
本実施例では、まず、前提について説明する。まず、情報処理装置に対して、アプリケーション３０３と日本語の言語リソースモジュール３０７がインストールされた後に、言語パックインストーラ２０９によりドイツ語とフランス語の言語リソースモジュール３０８がインストールされる。さらに、ユーザがシステム設定のＵＩ画面１６０１でドイツ語を選択したことを想定している。図１８は、この前提となる環境におけるレジストリの構成を示している。
【０１０２】
図１８で示すレジストリ情報２００１には、本体キー２００２、言語別キー２００３、２００４、言語パックキー２００５、ユーザ選択キー２００６がある。図示する通り、言語パックインストーラ２０９により追加されたドイツ語の言語リソースモジュールに対応する言語別キー２００３、フランス語の言語リソースモジュールに対応する言語別キー２００４が作成されている。また、ユーザ選択キー２００６には、ユーザにより選択されたドイツ語を示す値「ｄｅ」が書き込まれている。
【０１０３】
図１９は、アップグレードインストーラ２１０１の構成を説明するための図である。
【０１０４】
アップグレードインストーラ２１０１は、インストーラ２０３のアプリケーションをインストールする機能に加え、アプリケーションをアップグレードすることができるインストーラである。インストーラＵＩ部２１０４、インストール実行部２１０５、インストールするアプリケーション２１０６、言語リソースモジュール２１０７、２１０８については、図２のインストーラの同名のモジュールと同様の機能であるので説明を割愛する。
【０１０５】
２１０２は、アンインストール実行部である。本実施例では、インストールを制御するインストール実行部２１０５とアンインストールを制御するアンインストール実行部２１０２を分けて構成されたアップグレードインストーラ２１０１を想定している。
【０１０６】
言語リソースモジュール２１０３は、インストーラ２０３がインストールすることができるドイツ語に対応する言語リソースモジュールである。アップグレードインストーラ２１０１は、前述したインストーラ２０３より新しいバージョンのアプリケーション２１０６のためのもので、同梱する言語リソースモジュールが増えている。
【０１０７】
図２０は、アップグレードインストーラ２１０１による処理を説明するためのフローチャートである。
【０１０８】
まず、Ｓ２２０１において、アップグレードインストーラ２１０１はレジストリ２１３のレジストリ情報２００１の本体キー２００２の中から「ＵｐｇｒａｄｅＣｏｄｅ」の値を読み出し、アップグレードインストーラ２１０１が保持しているものと一致するかどうかの判定を行う。アップグレードインストーラは、アップグレードの対象となるアプリケーションを特定するために、「ＵｐｇｒａｄｅＣｏｄｅ」の値を保持している。ここでは、「ＵｐｇｒａｄｅＣｏｄｅ」の値が一致しない場合には通常のインストールとみなし、Ｓ２２０２に進む。一方、「ＵｐｇｒａｄｅＣｏｄｅ」の値が一致した場合にはＳ２２０５に進む。
【０１０９】
Ｓ２２０２、Ｓ２２０３、Ｓ２２０４、Ｓ２２１５での通常のインストールの処理は、前述した図４のＳ４０１〜Ｓ４０４と同様の処理となるのでその説明を割愛する。
【０１１０】
Ｓ２２０５において、アップグレードインストーラ２１０１は既にインストールされていたアプリケーション３０３のアンインストールを行う。次に、２２０６において、アップグレードインストーラ２１０１は本体キー２００２の中から言語情報を読み取り、その値を保持する。次に、Ｓ２２０７において、アップグレードインストーラ２１０１は、本体キー２００２の言語情報に対応する言語リソースモジュールをアンインストールする。そして、Ｓ２２０８において、アップグレードインストーラ２１０１は本体キー２００２とその値を全て削除する。
【０１１１】
Ｓ２２０９において、アップグレードインストーラ２１０１はアプリケーション２１０６のインストールを行う。
【０１１２】
Ｓ２２１０において、アップグレードインストーラ２１０１は、レジストリ情報２００１のユーザ選択キー２００６を参照し、ユーザ選択キー２００６の値に対応する言語リソースモジュールを持っているかどうか判定する。持っている場合にはＳ２２１１に進み、持っていない場合にはＳ２２１２に進む。また、レジストリ情報にユーザ選択キーが存在しない、またはユーザ選択キーの値がＮＵＬＬである場合にもＳ２２１２に進む。
【０１１３】
Ｓ２２１１において、アップグレードインストーラ２１０１は、ユーザ選択キー２００６の値に対応する言語リソースモジュールをインストールする。前述した図１８のレジストリ情報２００１の場合には、ユーザ選択キー２００６の値が「ｄｅ」であり、すなわちドイツ語を示す。よって、アップグレードインストーラ２１０１は、ドイツ語の言語リソースモジュール２１０３をインストールする。
【０１１４】
Ｓ２２１２において、アップグレードインストーラ２１０１は、言語パックキー２００５の値を参照し、対応する言語リソースモジュールを持っているかどうか判定する。持っている場合にはＳ２２１３に進み、持っていない場合にはＳ２２１４に進む。また、レジストリ情報に言語パックキーが存在しない、またはその値がＮＵＬＬである場合にはＳ２２１４に進む。
【０１１５】
Ｓ２２１３において、アップグレードインストーラ２１０１は、言語パックキー２００５の値に対応する言語リソースモジュールをインストールする。Ｓ２２１４においてアップグレードインストーラ２１０１は、Ｓ２２０６で保持していた値に対応する言語リソースモジュールをインストールする。
【０１１６】
最後に、Ｓ２２１５において、アップグレードインストーラ２１０１は、レジストリ２００１にインストール情報を書き込み、本処理を終了する。
【０１１７】
図２１は、Ｓ２２１５における書き込み処理が行われた場合のレジストリの構成の例を示している。レジストリ情報２３０１は、アップグレードインストーラ２１０１を用いて、図１８に示すレジストリ情報２００１に対して、さらに書き込まれた情報である。
【０１１８】
レジストリ情報２３０１は、レジストリ情報２００１に比べ、本体キー２３０２が更新されている。これは、図２０のＳ２２１１において、ドイツ語の言語リソースモジュール２１０３をインストールした後に、Ｓ２２１５でその結果をレジストリ２１３に書き込んだためである。本体キー２３０２では、アップグレードされたアプリケーションのバージョンを示すＰｒｏｄｕｃｔＶｅｒｓｉｏｎの値が「１．１．０」に更新されている。また、本体キー２３０２の言語情報を示すＬｏｃａｌｅＳｔｒｉｎｇの値が「ｄｅ」に更新されている。
【０１１９】
例えば、このレジストリ情報２３０１で、図１０、図１１を用いて説明した処理が実行され、インストールしたアプリケーション２１０６が起動されると、アプリケーション２１０６はドイツ語の言語リソースモジュール２１０３で起動されることになる。
【０１２０】
例えば、アプリケーションのアップグレードの前に、ユーザにより言語パックインストーラによりドイツ語の言語リソースモジュールが追加され、表示言語として選択されていたことを想定する。実施例２により、アップグレードインストーラがドイツ語の言語リソースモジュールを持っている場合は、アプリケーションのアップグレードによって、ドイツ語の言語リソースモジュールを用いてアップグレードされたアプリケーションが起動されるようになる。
【０１２１】
［実施例３］
実施例１、２では、言語リソースモジュールの追加や表示言語の変更が行われた際には、ＯＳ２０２を再起動した後に反映させることを想定している。実施例３では、表示言語の変更に係る別の解決手段を説明する。なお、本実施例では、前述した実施例とは異なる部分についてのみ、説明を行うものとする。
【０１２２】
図２２で示すフローチャートを用いて、実施例３におけるアプリケーション３０３ないしは、モジュール３０４、３０５の起動処理について説明を行う。具体的には、本実施例では、実施例１の図１０とは異なり、ユーザからのアプリケーション３０３ないしは、モジュール３０４、３０５の起動指示の後に、Ｓ１１０１、Ｓ１１０２の処理に先立って、前処理をいくつか行っている。
【０１２３】
また、本処理は実施例２によりアップグレードされたアプリケーション２１０６においても同様に適用可能である。
【０１２４】
まず、Ｓ２４０１において、アプリケーション３０３はレジストリ２１３のレジストリ情報のユーザ選択キーを参照する。ユーザ選択キーが存在しない、またはその値がＮＵＬＬである場合にはＳ２４０２に進み、ユーザ選択キーが存在する場合にはＳ２４０５に進む。Ｓ２４０２において、アプリケーション３０３はレジストリ情報を参照し、複数の言語リソースモジュールについての情報が記述されているかを判断する。レジストリ情報に複数の言語情報が記述されている場合にはＳ２４０３に進み、記述されていない場合にはＳ２４０５に進む。
【０１２５】
Ｓ２４０３において、アプリケーション３０３は表示言語を選択するためのＵＩ画面（図２３）を表示する。選択画面２５０１は、アプリケーション３０３の起動時に表示される表示言語の選択のためのＵＩ画面である。レジストリ情報７０１では、日本語（「ｊａ」）とドイツ語（「ｄｅ」）に対応する言語リソースモジュールがインストールされていることがわかるので、選択肢としてはその２言語が表示されている。ユーザの言語選択と、開始ボタンの押下により、Ｓ２４０４へと処理が進む。Ｓ２４０４において、アプリケーション３０３は、選択画面２６０１を用いてユーザが選択した言語の情報を、ユーザ選択キーの値として書き込む。
【０１２６】
Ｓ２４０５とＳ２４０６は、前述したＳ１１０１、Ｓ１１０２と同様の処理なので、その説明を割愛する。
【０１２７】
なお、上記した処理では、図２３で示す選択画面２５０１は、ユーザ選択キーの有無で表示の要否の判定を行っていた。しかしながら、本実施例の変形例として、例えば、アプリケーションの初回起動時のみ表示する、言語リソースモジュールの追加または削除があった後のアプリケーションの起動時に表示する、といったように制御することも可能である。
【０１２８】
［実施例４］
実施例４では、アプリケーションのシステム設定に関する表示言語を選択するためのＵＩ画面１６０１を介して、表示言語が変更された際の処理について説明する。
【０１２９】
実施例１において、図１５で示すＵＩ画面１６０１を用いて、アプリケーションの表示言語が切り替え可能であることを説明した。実施例１では、図１６、図１７の処理で、表示言語の切り替え指示後のＯＳ２０２の再起動により、この言語切り換えが実際に反映された。これに対して、本実施例は、アプリケーション３０３が明示的にＯＳ２０２の再起動をうながす制御を行う点が異なる。
【０１３０】
図２４は、アプリケーションの表示言語の切り替え指示が行われた後に表示される再起動を促すＵＩ画面２６０１を示している。ＵＩ画面２６０１は、アプリケーション３０３が提供するＵＩのひとつであり、ユーザがＵＩ画面１６０１で言語選択を行い、ＯＫボタンを押下した場合に表示される。この画面を介して、ユーザがＯＫボタンを押下した場合には、アプリケーション３０３はＯＳ２０２に対して再起動の指示を行う。再起動後に、アプリケーション３０３を起動すると、図１０で示した起動処理が実行され、選択された表示言語に切り替わる。
【０１３１】
また、ＯＳ２０２の再起動を行わずに、ＵＩ画面１６０１の切り替え指示を即座にアプリケーションの表示に反映させてもよい。その場合には、図３のモジュールＡ３０４、モジュールＢ３０５のように、２つの独立したプログラムが動作している際は、アプリケーション３０３がプログラムを監視し、表示言語を切りかえる際に警告ＵＩを表示したり、プログラムの終了を行ってもよい。
【０１３２】
［実施例５］
上述した実施例においては、アプリケーションのインストールなどの処理が行われた場合の表示言語の決定方法を、それぞれ例を挙げて説明した。しかしながら、アプリケーションのインストールとアンインストール、言語パックのインストールとアンインストール、それに表示言語を切り替えるタイミングなどによっては、まだ説明されていない表示言語の決定に係る処理例が存在する。
【０１３３】
実施例５では、実施例１〜３で説明していない具体例について、さらにいくつか説明する。なお、本実施例のインストーラ２０３、言語パックインストーラ２０９、アップグレードインストーラ２１０１、アプリケーション３０３，２１０６ないしは、モジュール３０４、３０５などの構成や処理内容は実施例１〜３と同様である。本実施例ではモジュールＡ３０４、モジュールＢ３０５とアプリケーション３０３を区別せず、アプリケーション３０３内で行われる操作は、全てアプリケーション３０３の主体による処理として説明する。
【０１３４】
図２５は、ユーザの指示などに従う操作と、各操作によるレジストリの構成を説明するための図である。図２５では、レジストリ２１３で示すキー（「本体キー」、「言語別キー」、「言語パックキー」、「ユーザ選択キー」）と、その言語情報を示す「ＬｏｃａｌｅＳｔｒｉｎｇ」の値と、アプリケーションの表示言語が何れかになっているかを示している。
【０１３５】
図２５（ａ）の例について説明する。
【０１３６】
状態２７０１は、インストーラ２０３で、アプリケーション３０３とともに、日本語の言語リソースモジュール３０７をインストールした状態である。レジストリ２１３には、本体キーのみが存在し、その値は「ｊａ」となる。また、アプリケーション３０３の表示言語は日本語（「ｊａ」）となる。
【０１３７】
状態２７０２は、言語パックインストーラ２０９により、ドイツ語とスペイン語に対応する言語リソースモジュールが２つインストールされている状態である。レジストリ２１３には、本体キーとその値「ｊａ」、２つの言語別キーとその値「ｄｅ」「ｅｓ」、言語パックキーとその値「ＮＵＬＬ」が存在する。また、アプリケーション３０３の表示言語には変更がない。
【０１３８】
状態２７０３は、アプリケーション３０３の言語選択のためのＵＩ画面１６０１を介して、ドイツ語に表示言語が切り換えられた場合の状態を示している。レジストリ２１３において、アプリケーション３０３の表示言語が、ユーザ選択キーの値「ｄｅ」に対応するドイツ語に変更されている。
【０１３９】
状態２７０４は、アップグレードインストーラ２１０１を使い、アプリケーション３０３をアップグレードした場合の状態である。本例では、アップグレードインストーラ２１０１がドイツ語の言語リソースモジュールを持っているとする。レジストリ２１３において、本体キーの値が「ｊａ」から「ｄｅ」に変更されている。これは、アップグレードインストーラ２１０１の処理（図２０のＳ２２１１）によるものである。アプリケーション２１０６の表示言語も、本体キーの値「ｄｅ」に対応するドイツ語に変更されている。
【０１４０】
次に、図２５（ｂ）の例について説明する。状態２７０５と状態２７０６は、状態２７０１と状態２７０２と同様なので説明を割愛する。
【０１４１】
状態２７０７は、アプリケーション３０３の言語選択のためのＵＩ画面１６０１を介して、スペイン語に表示言語が切り換えられた場合の状態を示している。レジストリ２１３において、アプリケーション３０３の表示言語が、ユーザ選択キーの値「ｅｓ」に対応するスペイン語に変更されている。
【０１４２】
状態２７０８は、アップグレードインストーラ２１０１を使い、アプリケーション３０３をアップグレードした場合の状態である。本例では、アップグレードインストーラ２１０１がスペイン語の言語リソースモジュールを持っていないとする。レジストリ２１３では、本体キー、言語別キー、言語パックキー、及びユーザ選択キーと、それらの値については変更がない。また、アップグレードインストーラ２１０１がスペイン語の言語リソースモジュールを持っていないので、アプリケーション２１０６の表示言語についても、ユーザ選択キーの値「ｅｓ」に対応するスペイン語のままである。
【０１４３】
次に、図２５（ｃ）の例について説明する。状態２７０９は、状態２７０１と同様なので説明を割愛する。
【０１４４】
状態２７１０は、言語パックインストーラ２０９により、ルーマニア語に対応するリソースモジュールが１つインストールされている状態である。レジストリ２１３には、本体キーとその値「ｊａ」、言語別キーとその値「ｒｏ」、言語パックキーとその値「ｒｏ」が存在する。これは、言語パックインストーラ２０９で、１つの言語リソースモジュールのみをインストールしたためである。アプリケーション３０３の表示言語としては、前述したＳ１２０９の処理により、言語パックキーの値「ｒｏ」に対応するルーマニア語が設定される。
【０１４５】
状態２７１１は、アップグレードインストーラ２１０１を使い、アプリケーション３０３をアップグレードした場合の状態である。本例では、アップグレードインストーラ２１０１がルーマニア語に対応する言語リソースモジュールを持っていないとする。この場合にはレジストリ２１３には変更が行われない。
【０１４６】
次に、図２５（ｄ）の例について説明する。状態２７１２は、状態２７０１と同様なので説明を割愛する。
【０１４７】
状態２７１３は、言語パックインストーラ２０９を動作させ、ドイツ語に対応する言語リソースモジュールが１つインストールされている状態である。レジストリ２１３には、本体キーとその値「ｊａ」、言語別キーとその値「ｄｅ」、言語パックキーとその値「ｄｅ」が存在する。これは、言語パックインストーラ２０９で１つの言語リソースモジュールのみをインストールしたためである。また、アプリケーション３０３の表示言語としては、前述したＳ１２０９の処理により、言語パックキーの値「ｄｅ」に対応するルーマニア語が設定される。
【０１４８】
状態２７１４は、言語パックインストーラ２０９を再度動作させ、さらにルーマニア語に対応する言語リソースモジュールを追加した状態である。レジストリ２１３には、本体キーとその値「ｊａ」、２つの言語別キーとそれらの値「ｄｅ」「ｒｏ」、言語パックキーとその値「ｒｏ」が存在する。アプリケーション３０３の表示言語としては、前述したＳ１２０９の処理により、言語パックキーの値「ｒｏ」に対応するルーマニア語が設定される。
【０１４９】
状態２７１５は、アップグレードインストーラ２１０１を使い、アプリケーション３０３をアップグレードした場合の状態である。本例では、アップグレードインストーラ２１０１がルーマニア語に対応する言語リソースモジュールを持っていないとする。この場合にはレジストリ２１３には変更が行われない。
【０１５０】
図２６は、図２５と同様に、ユーザの指示などに従う操作と、各操作によるレジストリの構成を説明するための図である。言語パックのアンインストール操作が行われた場合について、特に説明する。
【０１５１】
まず、図２６（ａ）の例について説明する。状態２８０１と状態２８０２は、状態２７１２と状態２７１３と同様なので、その説明を割愛する。
【０１５２】
状態２８０３は、言語パックインストーラ２０９でドイツ語に対応する言語リソースモジュールのアンインストールを行い、アプリケーション３０３を起動した際の状態である。レジストリ２１３には、本体キーのみが存在し、その値は「ｊａ」となる。また、アプリケーション３０３の表示言語は、本体キーの値「ｊａ」に対応する日本語が設定される。
【０１５３】
状態２８０４は、アップグレードインストーラ２１０１を使い、アプリケーション３０３をアップグレードした場合の状態である。レジストリ２１３には、本体キーのみが存在し、その値は「ｊａ」になる。これは、図２０のＳ２２１４及びＳ２２１５の処理に基づくものである。アプリケーション２１０６の表示言語は日本語のままである。
【０１５４】
次に、図２６（ｂ）の例について説明する。状態２８０５と状態２８０６は、状態２７０５と状態２７０６と同様なので、その説明を割愛する。
【０１５５】
状態２８０７は、言語パックインストーラ２０９でドイツ語に対応する言語リソースモジュールのアンインストールを行い、アプリケーション３０３を起動した際の状態である。レジストリ２１３には、本体キーとその値「ｊａ」と、言語別キーをその値「ｅｓ」と、言語パックキーとその値「ＮＵＬＬ」とが存在する。また、アプリケーション３０３の表示言語は、本体キーの値「ｊａ」に対応する日本語が設定されたままである。
【０１５６】
状態２８０８は、アップグレードインストーラ２１０１を使い、アプリケーション３０３をアップグレードした場合の状態である。本例では、アップグレードインストーラ２１０１がスペイン語に対応する言語リソースモジュールを持っていないとする。図２０の処理により、レジストリ２１３の本体キーの値は「ｊａ」になる。ほかのキーと値、表示言語は変わらない。
【０１５７】
［実施例６］
実施例６は、共通モジュール３０６が、ＵＩ画面１６０１を介してユーザにより切り換え指示された表示言語を記載する設定ファイルを格納するフォルダへアクセスできない場合（アクセス権が無いなど）を考慮した処理について説明を行う。本実施例では、図１〜６、図８〜１４など、上述した実施例と同様な部分に関しては、その説明を割愛する。
【０１５８】
図２７は、本実施例における、レジストリの構成の例を示す。
【０１５９】
レジストリ情報３００１には、本体キー３００２、２つの言語別キー３００３、３００４、言語パックキー３００５、ユーザ選択キー３００６が存在する。本体キー３００２には、言語情報として日本語に対応する値「ｊａ」が書き込まれている。２つの言語別キー３００３、３００４には、それぞれドイツ語に対応する値「ｄｅ」、フランス語に対応する値「ｆｒ」が書き込まれている。言語パックキー３００５とユーザ選択キー３００６については、言語情報の設定がないことを示す値「ＮＵＬＬ」となっている。
【０１６０】
本実施例では、ユーザが表示言語を選択するためのＵＩ画面１６０１を介して、表示言語を日本語からドイツ語に変更した際の処理を説明する。
【０１６１】
図２８で示すフローチャートを用いて、アプリケーションの言語選択後の処理を説明する。この処理は、前述した図１６の変形例といえる。
【０１６２】
まず、Ｓ３１０１において、共通モジュール３０６は、表示言語の切り替え指示を受け付ける。ここでは、日本語からドイツ語に切り替える指示である。次に、Ｓ３１０２において、共通モジュール３０６はレジストリ情報３００１のユーザ選択キー３０１１に、選択された言語（ドイツ語）に対応する値と、切り替え指示が行われた時刻（現在時刻）を示す値とを書き込み、本処理を終了する。
【０１６３】
図２９は、Ｓ３１０２の処理が行われた際のレジストリの構成を示している。レジストリ情報３２０１には、レジストリ情報３００１のユーザ選択キーに対して情報が追加されている。
【０１６４】
具体的には、ユーザ選択キーには、ユーザの選択した言語情報を「ＴｅｍｐｏｒａｒｙＬｏｃａｌ」の値３２１３として、時刻情報を「ＴｉｍｅＳｔａｍｐ」の値３２１４として保持する。
この２つの値とデータは、共通モジュール３０６がＳ３１０２の処理を行うことで、レジストリ情報３２０１に作成される。
【０１６５】
次に、図３０で示すフローチャートを用いて、アプリケーション３０３を起動し、表示言語を切り替える処理について説明する。この処理は、前述した図１７の変形例といえる。なお、本処理は、表示言語を日本語からドイツ語に切り換え指示した後に、ＯＳ２０２を再起動させ、アプリケーション３０３を起動した場合の処理である。
【０１６６】
まず、Ｓ３３０１において、共通モジュール３０６はレジストリ３２０１のユーザ選択キー３２１１にテンポラリ言語（「ＴｅｍｐｏｒａｒｙＬｏｃａｌ」）の値３２１３があるかどうかを判定する。存在した場合にはＳ３３０２に進み、存在しなかった場合には本処理を終了する。
【０１６７】
Ｓ３３０２において、共通モジュール３０６はＯＳ２０２が起動した時刻を取得する。本実施例では、この処理に先立ちＯＳ２０２が再起動した際の時刻の情報が取得されることになる。ＯＳの起動時刻を取得する手段はどのようなものでもよいが、一般的にはＯＳの起動時刻を取得するＡＰＩがＯＳにより提供されている。
【０１６８】
Ｓ３３０３において、共通モジュール３０６は、ＯＳの起動時刻と、レジストリ３２０１のユーザ選択キー３２１１の時刻情報（「ＴｉｍｅＳｔａｍｐ」の値３２１４）とを比較する。比較した結果、ユーザ選択キー３２１１の時刻情報がＯＳの起動時刻より前であった場合にはＳ３３０４に進む。そうでない場合には、まだＯＳ２０２の再起動が行われていないとみなせるので、本処理を終了する。ＯＳ２０２の再起動が行われていないということは、モジュールＡ３０４、モジュールＢ３０５のように複数モジュールが実行されている可能性がある。よって、このＳ３３０３の判断処理によって、モジュールごとに不整合が起きてしまうのを防ぐことができる。
【０１６９】
Ｓ３３０４において、共通モジュール３０６は、テンポラリ言語（「ＴｅｍｐｏｒａｒｙＬｏｃａｌ」）の値３２１３で、ユーザ選択キー３２１１の言語情報（ＬｏｃａｌｅＳｔｒｉｎｇ）３０１２を更新する。今、テンポラリ言語として保持していたドイツ語に対応する値「ｄｅ」を用いて、「ＬｏｃａｌｅＳｔｒｉｎｇ」とその値「ｄｅ」が書き込まれる。次に、Ｓ３３０５において、「ＴｅｍｐｏｒａｒｙＬｏｃａｌ」の値３２１３と「ＴｉｍｅＳｔａｍｐ」の値３２１４とを削除して、本処理を終了する。
【０１７０】
以上の処理によって、ユーザが言語選択のためのＵＩ画面１６０１で表示言語を切り替えた際に、ＯＳ２０２再起動の有無に応じて、アプリケーションの表示言語の制御を行うことができる。
【０１７１】
［実施例７］
前述した実施例では、インストーラ２０３が一つの言語リソースモジュールをインストールする手法について説明を行った。実施例７では、インストーラ２０３が言語パックインストーラ２０９と同様に、アプリケーション２０６が使用する言語リソースモジュールを複数追加する手法について説明を行う。
【０１７２】
本実施例では、図１〜５、図１０〜１４など、上述した実施例と同様な部分に関しては、その説明を割愛する。
【０１７３】
まず、本実施例で示す図３１、図３２について説明する。
【０１７４】
図３１は、アプリケーション３０３の表示言語を決定するためのＵＩ画面３４０１で、インストーラ２０３の表示言語、および、アプリケーション３０３の表示言語はＵＩ画面３４０１で選択指示を受けた言語となる。また、ＵＩ画面３４０１は、インストール可能な言語、および、インストール済みを表示し、１つの言語のみを選択する事が可能である。
【０１７５】
図３２は、アプリケーション３０３のＵＩ画面３４０１で選択した言語の他に追加言語をインストールするためのＵＩ画面３５０１である。インストーラ２０３は、インストール言語リスト３５０２にインストール可能な言語、および、インストール済みの言語を表示する。インストール言語リスト３５０２に表示されている各種言語３５０３は、それぞれがチェックボックスを有し、複数の言語を同時に選択する事が可能である。また、ＵＩ画面３４０１で選択指示を受けた言語をインストーラ２０３が保持していない場合、前記言語の他にインストーラが保持している言語を追加選択しない限り、ＵＩ画面３５０１から次の処理に遷移することは出来ない。
【０１７６】
次に、図３４で示すフローチャートを用いて、複数の言語リソースモジュールをインストールする処理について説明する。この処理は、前述した図６の変形例といえる。
【０１７７】
Ｓ３７０１において、インストーラ２０３は図３１で示すようなユーザにアプリケーションの表示言語を指定させるＵＩ画面３４０１を表示し、選択指示を受け付ける。これはインストーラ２０３のように、言語リソースモジュール２０７と言語リソースモジュール２０８の複数の言語リソースモジュールを持つ場合に、インストーラＵＩ部２０４が提供する画面である。言語パックインストーラ２０９で予めインストール済みの言語リソースモジュールをインストーラ２０３が保持していない場合、言語の一覧として対象の言語をＵＩに表示する。また、言語リソースモジュールが１種類しかなく選択の余地がない場合、言語を指定させるＵＩの表示を省略してもよい。
【０１７８】
Ｓ３７０２において、インストーラ２０３は図３２で示すようなユーザにアプリケーションの表示言語を追加で指定させるためのＵＩ３５０１の初期設定を行う。（後述）
Ｓ３７０３において、インストーラ２０３は図３２で示すようなユーザにアプリケーションの表示言語を追加で指定させるＵＩ画面３５０１を表示し、選択指示を受け付ける。ＵＩ画面３５０１は、ＵＩ画面３４０１で表示していた言語が引き続き表示される。ここで、対象の言語をインストールするか否かを決定するためのチェックボックス３５０３がＯＮの言語がインストールする言語の対象となる。チェックボックスのＯＮ・ＯＦＦの初期状態、および、操作可能なチェックボックスか否かどうかはＳ３７０２において取得した情報を基に決定する。ここで、チェックボックスがＯＮの言語は、本フローチャートの処理が終了した時にＯＳ２０２にインストールされている言語に等しい。
【０１７９】
Ｓ３７０４において、インストーラ２０３はＳ３７０３でインストール指示を受けた言語を言語リソースモジュール２０７として保持しているかどうかを判定する。存在した場合にはＳ３７０５に進み、存在しなかった場合にはＳ３７０９へ進む。
【０１８０】
Ｓ３７０５において、インストーラ２０３はＳ３７０３でインストール指示を受けた言語が言語パックインストーラ２０９でインストール済みかどうかを判定する。ここでは図３３で示すようなレジストリ情報３６００を例にとって、前記判定方法と判定方法に必要なレジストリ情報３６００について説明する。インストール済みかどうかの判定は、言語パックインストーラ２０９がレジストリ情報３６００に作成した言語別キー３６０１〜３６０３とインストール指示を受けた言語とを比較して行う。言語別キー３６０１〜３６０３はそれぞれ言語情報を示す「ＬｏｃａｌｅＳｔｒｉｎｇ」の値とインストール方法を示す「ＰｒｏｄｕｃｔＴｙｐｅ」を保持している。インストール方法はインストーラ２０３でインストールした場合「ＢａｓｅＲｅｓｏｕｒｃｅ」とし、言語パックインストーラ２０９でインストールした場合「ＬａｎｇＰａｃｋ」とする。まず、インストーラ２０３はインストール指示を受けた言語と同じ言語を言語情報３６１０〜３６１２から取得する。次に、インストーラ２０３は前記同じ言語と判断した言語のインストール方法３６２０〜３６２２から取得する。取得したインストール方法が「ＬａｎｇＰａｃｋ」、もしくは、「ＮＵＬＬ」である場合、言語パックインストーラ２０９でインストール済みの言語と判断しＳ３７０６へ進み、「ＢａｓｅＲｅｓｏｕｒｃｅ」である場合、Ｓ３７０６へ進む。
【０１８１】
Ｓ３７０６において、インストーラ２０３はＳ３７０５にて言語パックインストーラ２０９でインストールしたと判断した言語リソースモジュールをアンイストールする。
【０１８２】
Ｓ３７０７〜Ｓ３７１１、Ｓ３７１３、Ｓ３７１４はＳ６０２〜Ｓ６０６、Ｓ６０８、Ｓ６０９と同じであるため、その説明を割愛する。
【０１８３】
Ｓ３７１２では、インストーラ２０３はレジストリ２１３の「言語パックキー」に対応する値として、インストールした言語リソースモジュールに係る情報を書き込む。具体的には、インストーラ２０３のように言語リソースモジュール（英語・日本語）２０７、２０８を持っていない場合には、「言語パックキー」に対応する値として、英語と日本語のロケールに相当する「ｅｎ−ＧＢ」、「ｊａ」が書き込まれる。また、同時に「インストール方法」に対応する値として、インストーラ２０３でインストールした方法に相当する「ＢａｓｅＲｅｓｏｕｒｃｅ」が書き込まれる。本シーケンスはインストーラ２０３によるものだが、仮に言語パックインストーラ２０９でインストールした場合は、「ＬａｎｇＰａｃｋ」が書き込まれる。
【０１８４】
次にインストーラ２０３が図３２で示すようなユーザにアプリケーション３０３の表示言語を追加で指定させるためのＵＩ画面３５０１の初期設定を行うためのフローチャート（Ｓ３７０２）について説明する。
【０１８５】
Ｓ３８０１において、インストーラ２０３はレジストリ２１３の言語情報３６１０〜３６１２から言語情報３６１０〜３６１２、インストール方法３６２０〜３６２２と、インストーラ２０３が保持している言語リソースモジュール２０７、２０８の言語を取得する。
【０１８６】
Ｓ３８０２において、インストーラ２０３はＳ３８０１で取得したインストール方法３６２０〜３６１２に「ＢａｓｅＲｅｓｏｕｒｃｅ」が存在するかどうかを判定する。存在した場合、Ｓ３８０７へ進み、存在しない場合、Ｓ３８０３へ進む。
【０１８７】
Ｓ３８０３において、インストーラ２０３はＳ３８０１で取得したインストール方法３６２０〜３６１２に「ＬａｎｇＰａｃｋ」が存在し、かつ、インストーラ２０３が保持していない言語が存在するどうかを判定する。存在する場合、Ｓ３８０４へ進み、存在しなかった場合、Ｓ３８０６へ進む。
【０１８８】
Ｓ３８０４において、インストーラ２０３はＳ３８０３で存在すると判定した言語が図３１で示すようなアプリケーションの表示言語を決定するためのＵＩ画面３４０１で選択指示を受けた言語と同じ言語かどうかを判定する。同じ言語である場合、Ｓ３８０６へ進み、同じ言語でない場合、Ｓ３８０５へ進む。
【０１８９】
Ｓ３８０５において、インストーラ２０３はインストール言語リスト３５０２のチェックボックス３５０３をＯＦＦの状態にし、かつ、チェックボックス３５０３を操作可能な状態にする。
【０１９０】
Ｓ３８０６において、インストーラ２０３はインストール言語リスト３５０２のチェックボックス３５０３をＯＮの状態にし、かつ、チェックボックス３５０３を操作不可能な状態にする。
【０１９１】
Ｓ３８０８において、インストーラ２０３はＳ３０８１で言語情報３６１０〜３６１２と、インストーラ２０３が保持している言語リソースモジュール２０７、２０８の全ての言語の言語リソースモジュールのインストールが終わったかの判定を行う。全て終わっていた場合には本処理を終了する。全て終わっていない場合にはＳ３８０２に戻り、残りの言語のチェック処理を行う。
【０１９２】
以上、図３４、図３５で示す処理によって、ＯＳ２０２にアプリケーション３０３と言語リソースモジュール３０７がインストールされ、レジストリ２１３に必要な情報が作成された状態となる。
【０１９３】
（他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【０１９４】
さらに、本発明には、上述した実施形態の適宜組み合わせることにより構成されたシステムやその機能も含まれるものとする。
【図１】
2014063472.tif 000003
【図２】
2014063472.tif 000004
【図３】
2014063472.tif 000005
【図４】
2014063472.tif 000006
【図５】
2014063472.tif 000007
【図６】
2014063472.tif 000008
【図７】
2014063472.tif 000009
【図８】
2014063472.tif 000010
【図９】
2014063472.tif 000011
【図１０】
2014063472.tif 000012
【図１１】
2014063472.tif 000013
【図１２】
2014063472.tif 000014
【図１３】
2014063472.tif 000015
【図１４】
2014063472.tif 000016
【図１５】
2014063472.tif 000017
【図１６】
2014063472.tif 000018
【図１７】
2014063472.tif 000019
【図１８】
2014063472.tif 000020
【図１９】
2014063472.tif 000021
【図２０】
2014063472.tif 000022
【図２１】
2014063472.tif 000023
【図２２】
2014063472.tif 000024
【図２３】
2014063472.tif 000025
【図２４】
2014063472.tif 000026
【図２５】
2014063472.tif 000027
【図２６】
2014063472.tif 000028
【図２７】
2014063472.tif 000029
【図２８】
2014063472.tif 000030
【図２９】
2014063472.tif 000031
【図３０】
2014063472.tif 000032
【図３１】
2014063472.tif 000033
【図３２】
2014063472.tif 000034
【図３３】
2014063472.tif 000035
【図３４】
2014063472.tif 000036
【図３５】
2014063472.tif 000037