🍩Ring 1.12:docs

- News
- Download
- Get Help
- Contribute
- Resources
- Team
- Website
- Index

### ナビゲーション

- 次へ »
- » 前へ |
- プログラミング言語 Ring 1.12 取扱説明書 »
- 多国語アプリケーション

# 多国語アプリケーション

多国語 Ring アプリケーションを実現する方法は色々あります！

String2Constant ツールの用法を学びます。

## String2Constant の用法

Ring 1.8 より String2Constant アプリケーションがあります。

このツールは ring/samples/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)
            }