android - 如何使用 appcelerator 在运行时更改语言应用程序

标签 android ios appcelerator

我正在使用 AppCelerator 为 iOS 和 Android 构建一个应用。

所以我在i18n下创建了两个文件夹

i18n
--en
----string.xml
--it
----string.xml

我在 string.xml 中插入了一些资源。

现在如何在运行时更改应用程序的语言???

我尝试这样做但没有成功:

Ti.App.Properties.setString('SETTING_LANUAGE','it');

最佳答案

有很多方法可以在运行时更改应用程序语言,但它只会更改应用程序的语言,而不会更改整个设备的语言。所以我希望这就是您想要实现的目标。

我知道的简单解决方案是:

  • 例如使用 L("appTitle") 方法更改语言。

这是使用上述方法的简短代码 fragment :

zh -> strings.xml

<string name="en_home">Home</string>
<string name="en_cl">Change Language</string>

它 -> strings.xml

<string name="it_home">Casa</string>
<string name="it_cl">Cambia lingua</string>

alloy.js

// you can set this to any language at default or you can save the last applied language in the app
Alloy.Globals.Lang = "en_";

index.js

var win = Ti.UI.createWindow({
    backgroundColor : "#aaaaaa"
});
var lang = Alloy.Globals.Lang;

var label = Ti.UI.createLabel({
    text : L(lang + "home")
});

var btn = Ti.UI.createButton({
    title : L(lang + "cl"),
    bottom : 50,
    color : 'white',
    backgroundColor : "#0aa"
});
btn.addEventListener('click', changeLanguageItalian);

win.add(label);
win.add(btn);

win.open();

function changeLanguageItalian() {
  Alloy.Globals.Lang = "it_";
  lang =  Alloy.Globals.Lang;
  btn.title = L(lang+"cl");
  label.text = L(lang+"home");
}

请注意,这只是对如何在运行时更改语言的简单说明。你可以根据你的应用程序尝试任何你觉得合适的东西。祝你好运!

关于android - 如何使用 appcelerator 在运行时更改语言应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37792095/

相关文章:

java - 将 Android 模拟器连接到本地端口

android - 当应用程序处于后台时,在 Firebase 服务中编辑 SharedPreferences 后,值将会更改

ios - 使用自动布局设置动态 UIView 以匹配容器 View

ios - 我的两个词应用程序名称显示为一个词

ios - UIButton 不响应触摸

来自数组值的 Javascript 动态变量名称 (Appcelerator Titanium)

使用 sqlite db 进行 Android 应用本地化

c# - 如何从 Xamarin.Forms 中的 AndroidManifest.xml 访问元数据

javascript - 如何在appcelerator中按日期对一组数据进行排序

ios - 未安装 Apple 的全局开发者关系 (WWDR) 中间证书