在android中,很容易翻译strings.xml文件中的字符串。有没有其他方法可以在java中翻译字符串?例如,我需要从服务器检索字符串,然后翻译它,这不能用strings.xml文件完成。
有关于此的官方文件吗?
答案 0 :(得分:3)
您正在寻找的是随需应变的翻译。 afaik 没有任何免费解决方案。
最好的方法是在服务器端进行翻译并检索设备的正确string
。
您可以使用
在Android应用程序上调用活动的语言Locale.getDefault().getDisplayLanguage();
您可以将此值作为参数传递给您的服务器。
在这里,使用switch
,if
或任何其他方法,您可以返回字符串的翻译值。
希望这有帮助
修改强>
让我们假设您使用与
类似的东西从服务器调用字符串现在您可以为您的调用添加输入参数,例如
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,但这会增加延迟和成本。如果您知道在请求之前需要翻译哪些字符串,那么您就不需要它了。