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 上运行良好。

如何启用此选择元素以更新应用程序中的活动语言区域设置,以便应用程序的语言会发生变化,这是否可以在不重新启动应用程序的情况下实现?

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 回答