如何在不使用strings.xml资源文件的情况下翻译字符串?

时间:2016-12-20 16:15:00

标签: java android android-studio

在android中,很容易翻译strings.xml文件中的字符串。有没有其他方法可以在java中翻译字符串?例如,我需要从服务器检索字符串,然后翻译它,这不能用strings.xml文件完成。

有关于此的官方文件吗?

2 个答案:

答案 0 :(得分:3)

您正在寻找的是随需应变的翻译。 afaik 没有任何免费解决方案。 最好的方法是在服务器端进行翻译并检索设备的正确string

您可以使用

在Android应用程序上调用活动的语言
Locale.getDefault().getDisplayLanguage();

您可以将此值作为参数传递给您的服务器。

在这里,使用switchif或任何其他方法,您可以返回字符串的翻译值。

希望这有帮助

修改

让我们假设您使用与

类似的东西从服务器调用字符串

http://myurl.com/getMyStrings

现在您可以为您的调用添加输入参数,例如

http://myurl.com/getMyString?lng=myLenguage

myLenguage应该是语言环境结果。

现在,在服务器端,您可以添加一些代码。例如:

switch(myLngParam){
  case "English":
       return "My english string";
  case "Italiano":
       return "La mia stringa in italiano";
  case "Español":
       return "something else";
  default:
       return "default";
}

这样,根据您的语言环境,您可以使用不同的字符串。

注意:显然这是一个例子,我不知道你是如何调用服务器的,但无论如何为了这个目标,你应该添加一个带有语言环境结果的参数

答案 1 :(得分:1)

我在服务器上实际执行的操作是在运行时创建一个散列映射,该散列映射使用外部字典文件初始化中构建的另一种语言(转换)中的值映射来自语言的键。

然后当客户端请求"服务器字符串"我让他传递了语言环境语言,然后在hashmap中查找相应的值,并将其返回给客户端。

另一种选择是将字符串传递给像Google翻译这样的外部翻译API,但这会增加延迟和成本。如果您知道在请求之前需要翻译哪些字符串,那么您就不需要它了。