1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5 <html xmlns="http://www.w3.org/1999/xhtml">
7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9 <title>多国語アプリケーション — プログラミング言語 Ring 1.12 取扱説明書</title>
11 <link rel="stylesheet" href="_static/bootstrap-astropy.css" type="text/css" />
12 <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
14 <script type="text/javascript">
15 var DOCUMENTATION_OPTIONS = {
18 COLLAPSE_INDEX: false,
23 <script type="text/javascript" src="_static/jquery.js"></script>
24 <script type="text/javascript" src="_static/underscore.js"></script>
25 <script type="text/javascript" src="_static/doctools.js"></script>
26 <script type="text/javascript" src="_static/translations.js"></script>
27 <link rel="top" title="プログラミング言語 Ring 1.12 取扱説明書" href="index.html" />
28 <link rel="next" title="Qt3D の用法" href="qt3d.html" />
29 <link rel="prev" title="フォームデザイナーの用法" href="formdesigner.html" />
30 <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,600' rel='stylesheet' type='text/css'/>
33 <body role="document">
35 <a class="brand" title="Documentation Home" href="index.html"><span id="logotext1">🍩Ring</span><span id="logotext2"> 1.12</span><span id="logotext3">:docs</span></a>
38 <li><a href="http://ring-lang.sourceforge.net/news.html">News</a></li>
39 <li><a href="http://ring-lang.sourceforge.net/download.html">Download</a></li>
40 <li><a href="https://groups.google.com/forum/#!forum/ring-lang">Get Help</a></li>
41 <li><a href="https://github.com/ring-lang/ring">Contribute</a></li>
42 <li><a href="http://ring-lang.sourceforge.net/resources.html">Resources</a></li>
43 <li><a href="http://ring-lang.sourceforge.net/team.html">Team</a></li>
45 <li><a title="Ring Homepage" href="http://ring-lang.net/">Website</a></li>
46 <li><a title="総合索引" href="genindex.html">Index</a></li>
50 <form action="search.html" method="get">
51 <input type="text" name="q" placeholder="Search" />
52 <input type="hidden" name="check_keywords" value="yes" />
53 <input type="hidden" name="area" value="default" />
64 <a href="qt3d.html" title="Qt3D の用法">
69 <a href="formdesigner.html" title="フォームデザイナーの用法">
75 <a href="index.html">プログラミング言語 Ring 1.12 取扱説明書</a>
84 <div class="document">
85 <div class="documentwrapper">
86 <div class="bodywrapper">
87 <div class="body" role="main">
89 <div class="section" id="index-0">
90 <span id="id1"></span><h1>多国語アプリケーション<a class="headerlink" href="#index-0" title="このヘッドラインへのパーマリンク">¶</a></h1>
91 <p>多国語 Ring アプリケーションを実現する方法は色々あります!</p>
92 <p>String2Constant ツールの用法を学びます。</p>
93 <div class="section" id="string2constant">
94 <span id="index-1"></span><h2>String2Constant の用法<a class="headerlink" href="#string2constant" title="このヘッドラインへのパーマリンク">¶</a></h2>
95 <p>Ring 1.8 より String2Constant アプリケーションがあります。</p>
96 <p>このツールは ring/samples/tools/string2constant フォルダにあります。</p>
97 <p>このツールは文字列リテラルではなく、定数を用いたソースコードへ変換します。</p>
98 <p>これにより、定数を様々な言語を翻訳して言語ごとにソースコードのファイルへ格納できます。</p>
99 <p>Arabic.ring, English.ring, Japanese.ring など言語ごとに特殊なファイルを扱うことができます。</p>
100 <p>このツールの採用事例としては、アラビア語へ翻訳したフォームデザイナーがあります。</p>
101 <img alt="String2Constant" src="_images/string2constant.png" />
103 <div class="section" id="index-2">
104 <span id="id2"></span><h2>フォームデザイナーの翻訳<a class="headerlink" href="#index-2" title="このヘッドラインへのパーマリンク">¶</a></h2>
105 <p>フォームデザイナーのアプリケーションは ring/applications/formdesigner フォルダにあります。</p>
106 <p>翻訳用のファイルは ring/applications/formdesinger/translation フォルダにあります。</p>
107 <p>三種類のファイルがあります。</p>
110 <li>English.ring</li>
111 <li>Japanese.ring</li>
113 <p>定数定義の考えかたを理解するには前述のファイルを確認します。</p>
114 <p>これは Japanese.ring ファイルからの引用です。</p>
115 <div class="highlight-ring"><div class="highlight"><pre><span class="n">T_LANGUAGE</span> <span class="o">=</span> <span class="s">"english"</span>
116 <span class="n">T_LAYOUTDIRECTION</span> <span class="o">=</span> <span class="mi">0</span> <span class="c"># 左から右へ</span>
118 <span class="n">T_FORMDESIGNER_FORMDESIGNER</span> <span class="o">=</span> <span class="s">"フォームデザイナー"</span>
119 <span class="n">T_FORMDESIGNER_FORMTITLE</span> <span class="o">=</span> <span class="s">"Form1"</span>
121 <span class="n">T_FORMDESIGNER_FILE</span> <span class="o">=</span> <span class="s">"ファイル(&F)"</span>
122 <span class="n">T_FORMDESIGNER_NEW</span> <span class="o">=</span> <span class="s">"新規作成(&N)"</span>
123 <span class="n">T_FORMDESIGNER_OPEN</span> <span class="o">=</span> <span class="s">"開く(&O)"</span>
124 <span class="n">T_FORMDESIGNER_SAVE</span> <span class="o">=</span> <span class="s">"保存(&S)"</span>
125 <span class="n">T_FORMDESIGNER_SAVEAS</span> <span class="o">=</span> <span class="s">"名前を付けて保存(&A)"</span>
126 <span class="n">T_FORMDESIGNER_CLOSE</span> <span class="o">=</span> <span class="s">"閉じる(&C)"</span>
129 <p>フォームデザイナーのソースコードのファイルでは、文字列リテラル型ではなく定数を使用しています。</p>
130 <p>これは formdesigner/mainwindow/formdesignerview.ring ファイルからの引用です。</p>
131 <div class="highlight-ring"><div class="highlight"><pre><span class="c"># メインウィンドウの作成と MDI 領域の使用</span>
132 <span class="n">win</span> <span class="o">=</span> <span class="k">new</span> <span class="n">qMainwindow</span><span class="p">()</span> <span class="p">{</span>
133 <span class="n">setWindowTitle</span><span class="p">(</span><span class="n">T_FORMDESIGNER_FORMDESIGNER</span><span class="p">)</span> <span class="c"># "Form Designer"</span>
134 <span class="n">setcentralWidget</span><span class="p">(</span><span class="n">this</span><span class="p">.</span><span class="n">oArea</span><span class="p">)</span>
135 <span class="n">setLayoutDirection</span><span class="p">(</span><span class="n">T_LAYOUTDIRECTION</span><span class="p">)</span>
136 <span class="p">}</span>
140 <li>コメントで文字列リテラルを記述すると、コードの可読性向上になります。</li>
141 <li>setLayoutDirection() メソッドで、ウィンドウの方向を左から右へ設定できます。</li>
142 <li>使用する翻訳ファイルをLoad 命令で指定します。</li>
145 <div class="section" id="index-3">
146 <span id="id3"></span><h2>フォームの翻訳<a class="headerlink" href="#index-3" title="このヘッドラインへのパーマリンク">¶</a></h2>
147 <p>フォームデザイナーでフォームを作成した後に View クラスが生成されます。</p>
148 <p>View クラスの修正は行わずに Controller クラスから翻訳を追加します。</p>
149 <p>例えば、このようなフォームファイルがあります : ring/formdesigner/selobjects/selobjects.rform</p>
150 <img alt="フォームの翻訳" src="_images/formtranslation1.png" />
151 <p>このコードを使って Controller クラスから翻訳を追加します。</p>
152 <p>そして、定数は Arabic.ring, English.ring と Japanese.ring で定義します。</p>
153 <div class="highlight-ring"><div class="highlight"><pre><span class="k">class</span> <span class="n">selobjectsController</span> <span class="k">from</span> <span class="n">windowsControllerParent</span>
155 <span class="n">oView</span> <span class="o">=</span> <span class="k">new</span> <span class="n">selobjectsView</span> <span class="p">{</span>
156 <span class="n">ListObjects</span><span class="p">.</span><span class="n">setselectionmode</span><span class="p">(</span><span class="n">QAbstractItemView_MultiSelection</span><span class="p">)</span>
157 <span class="n">win</span><span class="p">.</span><span class="n">setwindowmodality</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
158 <span class="c"># 翻訳</span>
159 <span class="n">win</span><span class="p">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="n">T_FORMDESIGNER_SELOBJECTS_TITLE</span><span class="p">)</span>
160 <span class="n">win</span><span class="p">.</span><span class="n">setLayoutDirection</span><span class="p">(</span><span class="n">T_LAYOUTDIRECTION</span><span class="p">)</span>
161 <span class="n">labelobjects</span><span class="p">.</span><span class="n">setText</span><span class="p">(</span><span class="n">T_FORMDESIGNER_SELOBJECTS_OBJECTS</span><span class="p">)</span>
162 <span class="n">btnSelect</span><span class="p">.</span><span class="n">setText</span><span class="p">(</span><span class="n">T_FORMDESIGNER_SELOBJECTS_SELECT</span><span class="p">)</span>
163 <span class="n">btnClose</span><span class="p">.</span><span class="n">setText</span><span class="p">(</span><span class="n">T_FORMDESIGNER_SELOBJECTS_CLOSE</span><span class="p">)</span>
164 <span class="p">}</span>
174 <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
175 <div class="sphinxsidebarwrapper"><h3>ページの内容</h3>
177 <li><a class="reference internal" href="#">多国語アプリケーション</a><ul>
178 <li><a class="reference internal" href="#string2constant">String2Constant の用法</a></li>
179 <li><a class="reference internal" href="#index-2">フォームデザイナーの翻訳</a></li>
180 <li><a class="reference internal" href="#index-3">フォームの翻訳</a></li>
187 <p class="topless"><a href="formdesigner.html"
188 title="前の章へ">フォームデザイナーの用法</a></p>
190 <p class="topless"><a href="qt3d.html"
191 title="次の章へ">Qt3D の用法</a></p>
192 <div role="note" aria-label="source link">
194 <ul class="this-page-menu">
195 <li><a href="_sources/multilanguage.txt"
196 rel="nofollow">ソースコードを表示</a></li>
200 <form action="search.html" method="get">
201 <input type="text" name="q" placeholder="Search" />
202 <input type="hidden" name="check_keywords" value="yes" />
203 <input type="hidden" name="area" value="default" />
208 <div class="clearer"></div>
210 <footer class="footer">
211 <p class="pull-right">
212 <a href="_sources/multilanguage.txt"
213 rel="nofollow">ソースコードを表示</a>
214 <a href="#">冒頭へ戻る</a></p>
216 © Copyright 2016-2020, Ring Team.<br/>
217 Created using <a href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> 1.3.6 / astropy-sphinx-theme 1.1 (isVowel)