BlackBerryのプログラムに異なる言語のサポートを追加する

この記事では、前の記事で作成したプログラムにさまざまな言語のサポートを追加する方法を説明します。


このプロジェクトでは、「test.myfirstapp.lang」という名前の新しいパッケージを作成し、その中にファイルを作成します:Language.rrh

ファイルの「言語」という名前は、わかりやすくするために任意に選択されています。 .rrh拡張子は、ファイルが言語リソースのヘッダーであることを意味します。

Language.rrhを作成すると、Language.rrcファイルが自動的に作成されます。

Language.rrcには、メイン言語リソースの本体が含まれています。 リソースセットには、拡張子が.rrcのファイルがいくつか存在する場合があります。 サポートされる言語ごとに1つ。 リソース内のヘッダーファイル(.rrh)は1つのインスタンスにのみ存在します。

言語リソースは、プログラムインターフェイス、その名前、および説明を他の言語に翻訳するために使用されます。 アプリケーション記述子では、プログラムの名前とその説明を表示するために使用される言語リソースを指定できます。

アプリケーション記述子

プログラムに言語リソースが含まれている場合、デバイスのシステム言語を変更すると、プログラムに現在のシステム言語に対応するリソースがある場合、プログラム言語は自動的に変更されます。

ただし、プログラムにシステム言語に対応するリソースがない場合、メイン文字列リソース、いわゆる「ルートロケール」が使用されます。

微妙な点が1つあります。これは、BlackBerryの執筆を始めたばかりの頃に多くのエネルギーを費やしたことの識別です。

最初は、JDEスイートからサンプルを実行することさえできませんでした。 私はそれらに何も変更せず、JDEをインストールし、その中の例を開き、コンパイルを開始しました。 その後、プロジェクトのアセンブリに関するエラーメッセージを受け取りましたが、その理由を理解することはできませんでした。

ドキュメンテーションはこれについてどこにも何も述べていません。 私が振り返ったResearch In Motionの支援は、本当に驚いたことに私の質問に答えました。そして、すべてがうまくいくはずだと言われました。彼らは、私が彼らのサンプルプロジェクトさえも持たないということを心に留められません 要するに、彼らは私を助けることができませんでした。

その結果、試行錯誤を通じて、Unicode以外のプログラムのオペレーティングシステム設定で.rrhおよび.rrcファイルの形式で言語リソースを含むプロジェクトを正しくコンパイルするには、ロシア語以外の言語をインストールする必要があるという結論に達しました。 私の場合、オプションは英語とドイツ語で機能しました。

ただし、「ロシア語」が非Unicodeプログラムの言語として設定されている場合、.rrcおよび.rrhファイルをコンパイルすると、名前に誤った文字が含まれるファイルが生成され、プロジェクト検証エラーとビルドエラーが発生します。

その後、この問題はJava開発環境からEclipse JDEプラグインに移行し、現在もその場所に存在しています。 また、BlackBerryのプログラミングの初心者は、問題が何であるか、RIMの例でさえコンパイルされない理由は完全に不明です。

プログラムに戻りましょう。 「Language.rrh」ファイルを開き、右側のウィンドウで「キーの追加」ボタンをクリックして、3つのキーと値のペアを作成します。

NOTE_APP_TITLE-プログラム名
NOTE_APP_DESCRIPTION-プログラムの簡単な説明
NOTE_HELLO_WORLD-ウェルカムテキスト付き

これで、3つの文字列値を持つメイン言語リソースができました。

次に、言語リソースに追加のファイルを追加して、プログラムインターフェイスをロシア語で表示します。

この追加ファイルの名前は、メインファイルの名前と同じ方法で始まる必要がありますが、それに加えて、言語コードが割り当てられます。

この場合、このファイルの名前は「Language_ru.rrc」になります

その結果、言語リソースのコンテンツが表示されたウィンドウの一番下に、「ルート」タブの横に追加のタブ「ru」が表示されます。

タブ

これを開いたら、すべてのキーの値をロシア語で示します。

英語-ロシア語のリソース

プロジェクトをコンパイルすると、.rrcおよび.rrhファイルは通常のJavaインターフェイスに変わります。その名前は、メイン言語リソース(この場合は「Language」)の名前と「Resource」という単語から形成され、言語リソースを使用するクラスによって実装する必要があります。 この生成されたインターフェースは、プロジェクトでは明示的に表示されませんが、目に見えないように存在し、このインターフェース内で宣言された定数にアクセスするために実装する必要があります。

そのため、MyAppScreenクラスに変更を加えます。

package test.myfirstapp.view; import test.myfirstapp.lang.LanguageResource; import net.rim.device.api.i18n.ResourceBundle; import net.rim.device.api.ui.component.LabelField; import net.rim.device.api.ui.container.MainScreen; /** *   rrc  rrh    *  LanguageResource.java    - *  . * ,   ,   anti-pattern "Constant Interface", *  RIM     . */ public class MyAppScreen extends MainScreen implements LanguageResource { /** * BUNDLE_ID  BUNDLE_NAME -     - *    LanguageResource.java */ private static ResourceBundle resources = ResourceBundle.getBundle(BUNDLE_ID, BUNDLE_NAME); public MyAppScreen() { //   -,      //   -      //           super(DEFAULT_MENU | DEFAULT_CLOSE); //      setTitle(resources.getString(NOTE_APP_TITLE)); //      this.add(new LabelField(resources.getString(NOTE_HELLO_WORLD))); } //     public boolean onClose() { //       System.exit(0); // true ,    . return true; } } 


デフォルトでは、シミュレーターにはロシア語のサポートが含まれていません。 変更されたプログラムの動作を確認するためにこれを行います。

ロシア語のサポートをデバイスシミュレーター(この場合、Storm 9550およびAPI 5.0.0)に追加するには、Eclipse内部フォルダー「plugins \ net.rim.ejde.componentpack5.0.0_5.0.0.25 \ components \」の9550.xmlファイルを開きます。シミュレーター」に行を追加します。

< アプリケーション > net.rim.blackberry.lang.ru </ アプリケーション >

以下の図は、シミュレーター構成のxmlファイルの変更を示しています。

シミュレーター構成

これで、アプリケーションを実行することができます。

以下のアニメーションは、最初にシステム言語として英語を使用してプログラムを起動するプロセスを示しています。その後、設定で言語がロシア語に変更され、プログラムはシステム言語としてロシア語で既に開始されます。

デモンストレーション

シミュレータに他の言語を追加できます。 以下は、対応する言語のサポートを有効にするためにシミュレーター構成ファイルに追加する必要があるxml-expressionsのリストです。

フランス語< アプリケーション > net.rim.blackberry.lang.fr </ / アプリケーション >

ドイツ語< アプリケーション > net.rim.blackberry.lang.de </ アプリケーション >

イタリア語< アプリケーション > net.rim.blackberry.lang.it </ アプリケーション >

スペイン語< アプリケーション > net.rim.blackberry.lang.es </ / アプリケーション >

英語(英国)< アプリケーション > net.rim.blackberry.lang.en_GB </ アプリケーション >

英語(米国)< アプリケーション > net.rim.blackberry.lang.en_US </ アプリケーション >

英語(オランダ)< アプリケーション > net.rim.blackberry.lang.en_NL </ アプリケーション >

ポルトガル語(ブラジル)< アプリケーション > net.rim.blackberry.lang.pt_BR </ アプリケーション >

ポーランド語< アプリケーション > net.rim.blackberry.lang.pl </ / アプリケーション >

Source: https://habr.com/ru/post/J110939/


All Articles