0

Appaccelerator を使用して構築された iPhone/Android アプリがあります。すべてのテキストをロケール (i18n//strings.xml) に配置して翻訳し、スイッチも実装しました。

<label for="flip-1" class="username">Language:</label>
<select name="flip-1" id="flip-1" data-role="slider">
    <option value="off">EN</option>
    <option value="on">NL</option>
</select>

これは、Android と iPhone でかなりうまく機能します。

この select 要素を有効にしてアプリ内のアクティブな言語ロケールを更新するにはどうすればよいですか?これにより、アプリケーションの言語が変更されます。これは、アプリを再起動せずに可能ですか?

4

1 に答える 1

0

実行時に現在のロケールを変更する方法はありません。ロケールは携帯電話の現在の言語に依存しますが、それでもいくつかの回避策を実行できます。i18n ディレクトリに strings.xml ファイルを作成し、すべてのテキストを次のように配置します。

<resources>
    <string name="en_car">Car</string>
    <string name="de_car">Auto</string>
</resources>

L()独自の機能を実装できます。

Ti.App.defaultLang = "en"; // global variable with default language (set it in app.js)
function myL(str, lang) {
    if(lang && str) {
        return L(lang + '_' + str);
    } else {
        return L(Ti.App.defaultLang + '_' + str);
    }
} 

私はそれをテストしていません。対処するための例をいくつか示したいだけです。Ti ドキュメントのようなヒント オプションも渡すことができます: http://docs.appcelerator.com/titanium/2.1/index.html#!/api/Titanium.Locale-method-getString

于 2012-08-20T07:50:03.050 に答える