多国語アプリケーション¶
多国語 Ring アプリケーションの実装方法は多種多様です!
String2Constant ツールの用法です。
String2Constant の用法¶
Ring 1.8 より String2Constant アプリケーションがあります。
このツールは ring/tools/string2constant フォルダにあります。
このツールは文字列リテラルではなく、定数を用いたソースコードへ変換します。
これにより、定数を様々な言語を翻訳して言語ごとにソースコードのファイルへ格納できます。
Arabic.ring, English.ring, Japanese.ring など言語ごとに特殊なファイルを扱うことができます。
このツールの採用事例としては、アラビア語へ翻訳したフォームデザイナーがあります。

フォームデザイナーの翻訳¶
フォームデザイナーのアプリケーションは ring/applications/formdesigner フォルダにあります。
翻訳用のファイルは ring/applications/formdesinger/translation フォルダにあります。
三種類のファイルがあります。
Arabic.ring
English.ring
Japanese.ring
定数定義の考えかたを理解するには前述のファイルを確認します。
これは Japanese.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 ファイルからの引用です。
# メインウィンドウの作成と MDI 領域の使用
win = new qMainwindow() {
setWindowTitle(T_FORMDESIGNER_FORMDESIGNER) # "Form Designer"
setcentralWidget(this.oArea)
setLayoutDirection(T_LAYOUTDIRECTION)
}
コメントで文字列リテラルを記述すると、コードの可読性向上になります。
setLayoutDirection() メソッドで、ウィンドウの方向を左から右へ設定できます。
使用する翻訳ファイルをLoad 命令で指定します。
フォームの翻訳¶
フォームデザイナーでフォームを作成した後に View クラスが生成されます。
View クラスの修正は行わずに Controller クラスから翻訳を追加します。
例えば、このようなフォームファイルがあります : ring/formdesigner/selobjects/selobjects.rform

このコードを使って Controller クラスから翻訳を追加します。
そして、定数は Arabic.ring, English.ring と Japanese.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)
}