如何让Google Place Autocomplete返回输入语言的响应结果?
Fix: Force Google Place Autocomplete to Return Results in the Selected Language (Arabic Example)
我之前也踩过这个坑!Google Places Autocomplete默认会跟着设备系统语言返回地点名称,哪怕你选的是阿拉伯语的建议项,系统语言是英语的话就自动转成Cairo,确实挺闹心的。不过好在通过API参数就能轻松解决这个问题,下面是具体的解决方法:
1. 明确指定language参数为目标语言
在初始化Autocomplete的时候,直接把language参数设置为阿拉伯语代码ar。这样不管你的系统语言是什么,API都会优先返回阿拉伯语的地点信息。
Android 示例代码:
// 初始化Autocomplete Intent时指定语言 val autocompleteIntentBuilder = Autocomplete.IntentBuilder( AutocompleteActivityMode.OVERLAY, listOf(Place.Field.NAME, Place.Field.ID) ).setLanguage("ar") // 强制返回阿拉伯语结果 startActivityForResult( autocompleteIntentBuilder.build(this), AUTOCOMPLETE_REQUEST_CODE )
Web 示例代码:
// 初始化Autocomplete组件时设置语言 const autocomplete = new google.maps.places.Autocomplete( document.getElementById('location-input'), { language: 'ar', types: ['(cities)'] // 可选:限制结果类型 } );
2. 同步Place Details请求的语言设置
如果选完建议后,你还需要调用Place Details API获取更详细的信息,一定要记得给这个请求也加上相同的language参数,否则还是会被系统语言覆盖。
Android Place Details 请求示例:
val placeDetailsRequest = Places.GeoDataApi.getPlaceDetails( googleApiClient, selectedPlaceId ).setLanguage("ar") // 同样指定阿拉伯语 placeDetailsRequest.addOnSuccessListener { response -> val place = response.place // 这里拿到的place.name就是阿拉伯语的名称了 }
3. 进阶:根据输入语言动态切换参数
如果你的应用支持多语言输入,可以检测用户输入文本的语言,动态设置language参数。比如判断输入的是阿拉伯语字符,就自动切换到ar,其他语言对应调整,这样体验会更流畅。
这样设置之后,不管你的手机系统是英语还是其他语言,选择阿拉伯语的地点建议后,返回的结果都会和你选择的建议语言保持一致(比如显示القاهرة而不是Cairo),亲测有效!
内容的提问来源于stack exchange,提问作者Islam Ahmed
相关产品推荐
相关产品推荐

