--- /dev/null
+.. index::
+ single: 多国語アプリケーション; はじめに
+
+======================
+多国語アプリケーション
+======================
+
+多国語 Ring アプリケーションを実現する方法は色々あります!
+
+String2Constant ツールの用法を学びます。
+
+.. index::
+ pair: 多国語アプリケーション; String2Constant の用法
+
+String2Constant の用法
+======================
+
+Ring 1.8 より String2Constant アプリケーションがあります。
+
+このツールは ring/samples/tools/string2constant フォルダにあります。
+
+このツールは文字列リテラルではなく、定数を用いたソースコードへ変換します。
+
+これにより、定数を様々な言語を翻訳して言語ごとにソースコードのファイルへ格納できます。
+
+Arabic.ring, English.ring, Japanese.ring など言語ごとに特殊なファイルを扱うことができます。
+
+このツールの採用事例としては、アラビア語へ翻訳したフォームデザイナーがあります。
+
+.. image:: string2constant.png
+ :alt: String2Constant
+
+.. index::
+ pair: 多国語アプリケーション; フォームデザイナーの翻訳
+
+フォームデザイナーの翻訳
+========================
+
+フォームデザイナーのアプリケーションは ring/applications/formdesigner フォルダにあります。
+
+翻訳用のファイルは ring/applications/formdesinger/translation フォルダにあります。
+
+三種類のファイルがあります。
+
+* Arabic.ring
+* English.ring
+* Japanese.ring
+
+定数定義の考えかたを理解するには前述のファイルを確認します。
+
+これは Japanese.ring ファイルからの引用です。
+
+.. code-block:: ring
+
+ T_LANGUAGE = "english"
+ T_LAYOUTDIRECTION = 0 # 左から右へ
+
+ T_FORMDESIGNER_FORMDESIGNER = "フォームデザイナー"
+ T_FORMDESIGNER_FORMTITLE = "Form1"
+
+ T_FORMDESIGNER_FILE = "ファイル(&F)"
+ T_FORMDESIGNER_NEW = "新規作成(&N)"
+ T_FORMDESIGNER_OPEN = "開く(&O)"
+ T_FORMDESIGNER_SAVE = "保存(&S)"
+ T_FORMDESIGNER_SAVEAS = "名前を付けて保存(&A)"
+ T_FORMDESIGNER_CLOSE = "閉じる(&C)"
+
+フォームデザイナーのソースコードのファイルでは、文字列リテラル型ではなく定数を使用しています。
+
+これは formdesigner/mainwindow/formdesignerview.ring ファイルからの引用です。
+
+.. code-block:: ring
+
+ # メインウィンドウの作成と MDI 領域の使用
+ win = new qMainwindow() {
+ setWindowTitle(T_FORMDESIGNER_FORMDESIGNER) # "Form Designer"
+ setcentralWidget(this.oArea)
+ setLayoutDirection(T_LAYOUTDIRECTION)
+ }
+
+* コメントで文字列リテラルを記述すると、コードの可読性向上になります。
+
+* setLayoutDirection() メソッドで、ウィンドウの方向を左から右へ設定できます。
+
+* 使用する翻訳ファイルをLoad 命令で指定します。
+
+.. index::
+ pair: 多国語アプリケーション; フォームの翻訳
+
+フォームの翻訳
+==============
+
+フォームデザイナーでフォームを作成した後に View クラスが生成されます。
+
+View クラスの修正は行わずに Controller クラスから翻訳を追加します。
+
+例えば、このようなフォームファイルがあります : ring/formdesigner/selobjects/selobjects.rform
+
+.. image:: formtranslation1.png
+ :alt: フォームの翻訳
+
+
+このコードを使って Controller クラスから翻訳を追加します。
+
+そして、定数は Arabic.ring, English.ring と Japanese.ring で定義します。
+
+.. code-block:: ring
+
+ class selobjectsController from windowsControllerParent
+
+ oView = new selobjectsView {
+ ListObjects.setselectionmode(QAbstractItemView_MultiSelection)
+ win.setwindowmodality(2)
+ # 翻訳
+ win.setWindowTitle(T_FORMDESIGNER_SELOBJECTS_TITLE)
+ win.setLayoutDirection(T_LAYOUTDIRECTION)
+ labelobjects.setText(T_FORMDESIGNER_SELOBJECTS_OBJECTS)
+ btnSelect.setText(T_FORMDESIGNER_SELOBJECTS_SELECT)
+ btnClose.setText(T_FORMDESIGNER_SELOBJECTS_CLOSE)
+ }
+
+