如何在Android Studio应用中将Geocoder获取的英文城市名转为阿拉伯语显示
解决方案
方案1:直接指定Geocoder返回阿拉伯语结果(优先推荐)
不需要额外调用翻译接口,Android的Geocoder本身支持指定返回结果的语言区域,只需要把初始化Geocoder时传入的Locale修改为阿拉伯语即可,这是准确率最高、成本最低的实现方式。
修改后的getAddress方法代码:
public String getAddress(double LATITUDE, double LONGITUDE) { String city = ""; try { // 把默认Locale替换为阿拉伯语Locale Geocoder geocoder = new Geocoder(this, new Locale("ar")); List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1); if (addresses != null && addresses.size() > 0) { String address = addresses.get(0).getAddressLine(0); city = addresses.get(0).getLocality(); String state = addresses.get(0).getAdminArea(); String country = addresses.get(0).getCountryName(); String postalCode = addresses.get(0).getPostalCode(); String knownName = addresses.get(0).getFeatureName(); } } catch (IOException e) { e.printStackTrace(); } return city; }
注意:如果需要适配系统语言切换,也可以判断系统当前语言如果是阿拉伯语就传入ar参数即可;如果部分设备返回结果仍为英文,说明设备内置的Geocoder服务不支持阿拉伯语返回,可再考虑使用翻译方案。
方案2:调用谷歌翻译API实现翻译(不优先推荐)
如果确实存在需要先拿到英文地址再翻译的场景,可以用谷歌翻译API实现,步骤如下:
- 在谷歌云平台开通翻译API服务,获取专属API密钥
- 封装网络请求,把要翻译的英文城市名、源语言
en、目标语言ar、API密钥作为参数请求翻译接口 - 解析接口返回的阿拉伯语结果后设置到TextView即可
注意:该方案需要联网,且有免费配额限制,超额会产生费用,同时翻译结果可能存在地名翻译错误的问题,优先级低于方案1
内容的提问来源于stack exchange,提问作者John Sall
相关产品推荐
相关产品推荐

