当我选择其他语言时,如何使用Web服务的英语本地化值

时间:2012-11-26 11:45:24

标签: android web-services localization

我正在开发一个以土耳其语语言工作的应用程序。当我用英语运行应用程序时,应用程序运行正常。现在,当我用土耳其语检查应用程序时,会收到错误结果。

我有一个阵列资源

 <string-array name="pensionArr">// English(values-en)
    <item>monthly</item>
    <item>yearly</item>
</string-array>

<string-array name="pensionArr"> // Turkish(values-tr)
    <item>aylık</item>
    <item>yıllık</item>
</string-array>

我在spinner中设置了这个数组。

adapterPension = ArrayAdapter.createFromResource(this, R.array.pensionArr, android.R.layout.simple_spinner_item);

现在我将此微调器中的选定值发送到Web服务。我在那里比较英语的价值。

nameValuePairs.add(new BasicNameValuePair("pension_type",_pensiontype));

当我尝试打印值_pensiontype时。在控制台中打印的值是这样的

yıllık//====> yearly in English.

因此该值不是在Web服务中进行比较。所以我的问题是如何使用英语值,即使我选择土耳其语。有没有办法解决这个问题。

修改:来自微调器的数据是

 _pensiontype=pensionTypeDrpgetSelectedItem().toString();

请帮助我......

3 个答案:

答案 0 :(得分:0)

问题在于文件夹的名称。主文件夹的名称为“值”(通常为英文)。文件夹的名称应为:“values-tr”。解决方案是: 1.在/ res文件夹中创建名为“values-tr”的文件夹。 2.在其中创建文件strings.xml 3.将常量放在新文件中

答案 1 :(得分:0)

请使用:

Spinner.getSelectedItemId() or
Spinner.getSelectedItemPosition()

获取所选项目的索引,并使用此索引选择要发送到服务器的英语字符串。 Spinner仍然可以填充本地化字符串,但服务器数据始终保持英文(或者您可以将索引作为数字发送,如果您愿意)

答案 2 :(得分:0)

这是非常棘手的情况。最后,我在许多网站上搜索并找到解决方案

将服务器端的阵列维护为

String[] arr = new String{"monthly","yearly"};

将资源数组设置为微调器后

adapterPension = ArrayAdapter.createFromResource(this, R.array.pensionArr, android.R.layout.simple_spinner_item);

现在我将所选项目的位置发送到服务器

nameValuePairs.add(new BasicNameValuePair("pension_type",Integer.toString(pensionDrp.getSelectedItemPosition())));

现在我在服务器端获得数组的位置。所以直接使用索引而不是值。

工作得很好..