2015-09-26 81 views
0

我有英文文件夹中的strings.xml文件夹以及西班牙文中另一个string.xml文件夹中的values-es文件夹。我有一个从操作栏打开的片段来设置设置并将它们存储在SharedPreferences中,这在英语中工作正常。我有很多如果在应用程序中检查共享首选项上设置了什么,但用英语单词,现在在西班牙语strings.xml中我想要做这样的事情,以避免更改应用程序中的所有ifs。我试过这个,但它不起作用:英文/西班牙文App:如何在西班牙语中设置values-es/strings中的显示值,但在应用中保留ifs检查的英文值?

<string-array name="music"> 
     <item value="Yes">Si</item> 
     <item value="No">No</item> 
    </string-array> 

有什么办法可以做类似的事吗?基本上我想让用户在首选项微调器上选择“Si”,但是当我从微调器中获得数值时,我想让它检索“是”

回答

1

您应该使用常量来表示您需要保存在共享首选项中的值,这样它将独立于语言。

例如,如果你有2个单选按钮音乐命名和关闭你应该创建2个常数

public static final int ON = 1; 
public static final int OFF = 0; 

现在单选按钮,你应该检查单选按钮的ID和共享节省适当的常量的点击偏好:

case: R.id.radio_on 
//save ON in shared preferences 
break; 
case: R.id.radio_off 
    //save OFF in shared preferences 
    break; 

然后,您可以检查独立于任何语言的常量。

+0

这样做...感谢我的朋友 – JAF

1

基本上,我希望用户选择“SI”的喜好微调器 但是当我从微调框中的值我希望它检索“是“

如果您显示的是val在Splanish中的用户名和特定部分的代码可能是您要查找的方式。

Resources res = getResources(); 
Configuration conf = res.getConfiguration(); 
Locale savedLocale = conf.locale; // Save your current locale first (Splanish in your case) 
conf.locale = new Locale("es"); // Change the desired locale(English in your case) 
res.updateConfiguration(conf, null); 

// retrieve resources from desired locale 
String str = res.getString(id); 

// restore original locale 
conf.locale = savedLocale; 
res.updateConfiguration(conf, null); 

我希望这会有所帮助。

相关问题