OSDN Git Service

タグを打ち忘れていたついでに、html版ドキュメントを追加しました。
[ring-lang-081/ring.git] / docs / build / html / _sources / multilanguage.txt
1 .. index:: 
2      single: 多国語アプリケーション; はじめに
3
4 ======================
5 多国語アプリケーション
6 ======================
7
8 多国語 Ring アプリケーションを実現する方法は色々あります!
9
10 String2Constant ツールの用法を学びます。
11
12 .. index:: 
13      pair: 多国語アプリケーション; String2Constant の用法
14
15 String2Constant の用法
16 ======================
17
18 Ring 1.8 より String2Constant アプリケーションがあります。
19
20 このツールは ring/samples/tools/string2constant フォルダにあります。
21
22 このツールは文字列リテラルではなく、定数を用いたソースコードへ変換します。
23
24 これにより、定数を様々な言語を翻訳して言語ごとにソースコードのファイルへ格納できます。
25
26 Arabic.ring, English.ring, Japanese.ring など言語ごとに特殊なファイルを扱うことができます。
27
28 このツールの採用事例としては、アラビア語へ翻訳したフォームデザイナーがあります。
29
30 .. image:: string2constant.png
31         :alt: String2Constant 
32
33 .. index:: 
34      pair: 多国語アプリケーション; フォームデザイナーの翻訳
35
36 フォームデザイナーの翻訳
37 ========================
38
39 フォームデザイナーのアプリケーションは ring/applications/formdesigner フォルダにあります。
40
41 翻訳用のファイルは ring/applications/formdesinger/translation フォルダにあります。
42
43 三種類のファイルがあります。
44
45 * Arabic.ring
46 * English.ring
47 * Japanese.ring
48
49 定数定義の考えかたを理解するには前述のファイルを確認します。
50
51 これは Japanese.ring ファイルからの引用です。
52
53 .. code-block:: ring
54
55         T_LANGUAGE = "english"
56         T_LAYOUTDIRECTION = 0                   # 左から右へ
57
58         T_FORMDESIGNER_FORMDESIGNER     = "フォームデザイナー"
59         T_FORMDESIGNER_FORMTITLE                = "Form1"
60
61         T_FORMDESIGNER_FILE                     = "ファイル(&F)"
62         T_FORMDESIGNER_NEW                              = "新規作成(&N)"
63         T_FORMDESIGNER_OPEN                     = "開く(&O)"
64         T_FORMDESIGNER_SAVE                     = "保存(&S)"
65         T_FORMDESIGNER_SAVEAS                   = "名前を付けて保存(&A)"
66         T_FORMDESIGNER_CLOSE                    = "閉じる(&C)"
67
68 フォームデザイナーのソースコードのファイルでは、文字列リテラル型ではなく定数を使用しています。
69
70 これは formdesigner/mainwindow/formdesignerview.ring ファイルからの引用です。
71
72 .. code-block:: ring
73
74                 # メインウィンドウの作成と MDI 領域の使用
75                         win = new qMainwindow() {
76                                 setWindowTitle(T_FORMDESIGNER_FORMDESIGNER) # "Form Designer"
77                                 setcentralWidget(this.oArea)
78                                 setLayoutDirection(T_LAYOUTDIRECTION)
79                         }
80
81 * コメントで文字列リテラルを記述すると、コードの可読性向上になります。
82
83 * setLayoutDirection() メソッドで、ウィンドウの方向を左から右へ設定できます。
84
85 * 使用する翻訳ファイルをLoad 命令で指定します。
86
87 .. index:: 
88      pair: 多国語アプリケーション; フォームの翻訳
89
90 フォームの翻訳
91 ==============
92
93 フォームデザイナーでフォームを作成した後に View クラスが生成されます。
94
95 View クラスの修正は行わずに Controller クラスから翻訳を追加します。
96
97 例えば、このようなフォームファイルがあります : ring/formdesigner/selobjects/selobjects.rform
98
99 .. image:: formtranslation1.png
100         :alt: フォームの翻訳
101
102
103 このコードを使って Controller クラスから翻訳を追加します。
104
105 そして、定数は Arabic.ring, English.ring と Japanese.ring で定義します。
106
107 .. code-block:: ring 
108
109         class selobjectsController from windowsControllerParent
110
111                 oView = new selobjectsView  {
112                         ListObjects.setselectionmode(QAbstractItemView_MultiSelection)
113                         win.setwindowmodality(2)
114                         # 翻訳
115                                 win.setWindowTitle(T_FORMDESIGNER_SELOBJECTS_TITLE)
116                                 win.setLayoutDirection(T_LAYOUTDIRECTION)
117                                 labelobjects.setText(T_FORMDESIGNER_SELOBJECTS_OBJECTS)
118                                 btnSelect.setText(T_FORMDESIGNER_SELOBJECTS_SELECT)
119                                 btnClose.setText(T_FORMDESIGNER_SELOBJECTS_CLOSE)
120                 }
121
122