$$シンボル(外部リソース定数)

 

 

$$で始まるシンボルは、外部リソース定数として識別されます。外部リソース定数は、CRSファイルと同じディレクトリに置かれているXML形式のファイルで以下のように記述します。このファイルをリソースファイルと言います。

 

<?xml version="1.0"?>
<resource>
      <symbol_1>String Text 1</symbol_1>
      <cust>
              <name>顧客名</name>
              <addr>顧客住所</addr>
      </cust>
      :
</resource>

 

 

シンボルには、英数字とアンダーバー ( _ )だけから成るXMLのノード名として指定可能な任意の名前が利用できます。String Text 1は$$symbol_1を置き換える文字列です。

 

Button1.Title = $$symbol_1;

 

と記述すると、ボタンには"String Text 1"と表示されます。

深い階層になるエレメントを取り出すためには、ピリオド ( . ) でノード名を接続します。例えば、$$cust.addrは"顧客住所"に置き換えられます。

 

$$シンボルは、文字列定数として置き換えられます。式や別の型の定数として置き換える事はできないので、必要に応じてCRSスクリプトによる変換を併用します。

 

Form1. BgColor = val( $$color ); /* 数値変換例 */

 

シンボルに該当するノードがリソースファイルに見つからない場合、定数の置き換えは行われず、通常の変数名として処理されます。エラーとはなりません。

 

参照するリソースファイルは、実行時の言語環境によって下記のようになります。

 

言語

リソースファイル名

英語

resource.en.xml

日本語

resource.ja.xml

中国語簡体

Android版、iOS版
resource.zh.xml

Windows版
resource.en.xml

上記以外

resource.en.xml

言語に対応するリソースファイルが
存在しない場合

Android版、iOS版
resource.xml
(Android版 v.1.5.4、iOS版 v1.5.7からの機能です。それより前のバージョンでは文字列は空になります。)

 

参照するリソースファイルが存在しない場合、文字列は空になります。

この仕組みにより、異なる言語をサポートするCRSスクリプトは、文字列定数部分を$$シンボルを利用して記述することでリソースファイルを翻訳するだけで複数の言語に対応する事が可能です。

 

リソースファイルは、最初に$$シンボルをCRSコンパイラが検出したときに1回だけダウンロードされ、メモリ上に維持されます。同じディレクトリにある複数のCRSファイルを連続して実行する場合でも、ダウンロードは1回だけとなります。また、リソースファイルもCRSファイルと同じルールでキャッシュされます。

 

このダウンロードと置き換えはコンパイル時に行われるため、キャッシュに格納される中間コードには置き換えられた後の文字列が格納されます。従って、最初の実行時には、CRSファイルのほかにリソースファイルもダウンロードされるため、直接CRSファイルに"String Text 1"と記述したときよりも、多くの通信時間、多くの実行時間、多くのメモリを必要としますが、2回目以降にキャッシュから実行される場合にはオーバーヘッドはまったく発生しません。

 



「オンラインマニュアル」一覧へ戻る
「Bizの宝箱」TOPへ戻る