如何翻译不同语言的城市名称

时间:2015-04-14 09:08:08

标签: java php translation icu

我有一个移动应用程序(iOS和Android),我需要用用户的语言翻译城市名称。我可以在移动设备或我的服务器上运行(运行php)。

截至目前,我设法翻译了国家/地区名称,这里是用所有可能语言翻译所有可能国家/地区的Java代码:

import java.util.Locale;

public class ListCountry {

public static void main(String[] args) {

ListCountry obj = new ListCountry();

obj.getListOfCountries();

}

public void getListOfCountries() {

String[] locales = Locale.getISOCountries();

for (String countryCode : locales) {

    Locale obj = new Locale("", countryCode);
    String[] lingue = Locale.getISOLanguages();

    for (String languageCode : lingue) {

        System.out.println("Country Code = " + obj.getCountry() 
        + ", Country Name = " + obj.getDisplayCountry(new Locale(languageCode)) + ", language = " + (new Locale(languageCode)).getDisplayLanguage());
    }
 }

}

}

我怎么能用城市名字做类似的事呢?我知道CLDRICU,但我真的无法弄清楚如何做到(或者甚至可能)。如果有一个很好的面向对象的库,那么它将比解析CLDR XML或其他源更好。

我更喜欢在本地(在我的服务器上,甚至在移动应用上),而不是调用Google API,例如:

http://maps.googleapis.com/maps/api/geocode/json?address=turin&language=ES
http://maps.googleapis.com/maps/api/geocode/json?address=turin&language=IT
http://maps.googleapis.com/maps/api/geocode/json?address=turin&language=EN

(问题是:我猜谷歌数据库的城市名称是公开的,它在哪里?它是否很好地包装在一些用户友好的跨平台库中?)

感谢您的帮助

1 个答案:

答案 0 :(得分:4)

我猜您正在寻找一个包含所有城市及其翻译的文件,而不是每个城市提取一次?

如果是这样,www.geonames.org拥有多种语言的不同类型(国家,管理员,城市)的地理数据。在他们的API调用旁边,您也可以直接下载他们的文件并自行解析:

在以下网址中,您会找到3个以“alternativeNames”为前缀的Zip文件 http://download.geonames.org/export/dump/

它们包含 - 希望 - 必要的数据。