2015-10-16 42 views
0

我的应用程序通过本地化支持一些语言。当用户选择任何语言时,应用程序就是为该特定语言设置的。从特定的strings.xml文件中获取数据

应用程序与服务器交互。问题是,当用户使用除英语以外的其他语言时,该语言数据将发送到服务器。

因此,无论用户选择何种语言,总是要将英语语言数据发送到服务器。

请让我知道我该怎么做。

示例:

我有一个字符串数组存储在所有语言的strings.xml中。当我通过微调器从数组中选择任何项目时,它会给我特定的语言字符串项目。我想要的是,不管用户选择哪种语言,都可以获得英文字符串。

回答

0

您可以使用values文件夹:其中包含的字符串始终在默认情况下使用。

然后,您只需删除不想在其各自文件夹中的strings文件中使用的其他语言的字符串。然后,您的应用程序将采用values文件夹中的英文文件夹。

希望它有帮助。

+0

我如何使用值的文件夹? – Braj

+0

它的工作原理与您的其他值文件夹(如values-en,values-fr ...)完全相同,但默认情况下使用此文件夹。在其中创建你的文件strings.xml,并添加你想使用的任何语言的字符串。 – Virthuss

+0

当我说'getString(R.id.my_string);'它总是返回相应的语言字符串。我想要的是,不管用户选择哪种语言,都可以获得英文字符串。 – Braj

0

通常,xml资源应该可以帮助您修改应用的UI。 如果您必须使用某种常量与您的服务器交谈,那么,也许它不是关于strings.xml文件。

您可以用其他方式和位置存储那些服务器值

编辑响应: 我现在明白了。您可以创建一个特定string.xml文件您微调器(或任何你想要的),也许名为strings_for_spinner了,里面你进入那些无处已定义的值。这样,系统被迫使用这些字符串(在你的情况下,用英语)。

+0

它们不是服务器相关的常量。对于ex来说,对于所有语言,我都有一个存储在strings.xml中的字符串数组。当我通过微调器从数组中选择任何项目时,它会给我特定的语言字符串项目。我想要的是,不管用户选择哪种语言,都可以获得英文字符串。 – Braj

1

我认为这将是一个解决方案: Load language specific string from resource? 但它的测试,似乎并没有工作。一个天真的解决方案是添加你要发送到服务器以英语所有string.xml文件中的所有语言,然后调用这些字符串时,你需要将它们与英文字符串发送到服务器,或者仅仅是常量字符串您的代码:

public static final String STRING_TO_SEND_TO_SERVER = "your_string_in_English"; // Use this string to send to server and the strings from the strings.xml file for your UI. 
+0

这看起来很有希望。唯一的问题是,需要在获取我的字符串后将Locale更改回选择的用户。 – Braj

+0

服务器应将字符串转换为必要的语言。如果您想在运行时知道响应应该转换为哪种语言,请将一些标识符作为字符串放入每个string.xml文件中,并在运行时获取该字符串。这甚至可以是数字标识(英语 - “1”,西班牙语 - “2”,...)。然后将其转发到服务器,以便在服务器端知道要转换哪种语言。 – logcat

+0

请注意,将字符串保存为常量要比在string.xml文件中使用更多的字符串要好,因为如果您确实使用了xml文件,那么每次添加对新语言的支持时,都必须记住添加字符串以及每次你想改变字符串,你必须通过所有的XML文件并全部改变它们。在你的Java文件中有一个常量是非常整洁的。 – logcat