2015-04-14 1 views
1

J'ai une application mobile (iOS et Android) et j'ai besoin de traduire le nom des villes dans la langue de l'utilisateur. Je peux faire la traduction sur un appareil mobile ou sur mon serveur (php en cours d'exécution).Comment traduire les noms de villes dans différentes langues

A partir de maintenant je réussi à traduire les noms de pays, ici le code Java qui se traduisent par tous les pays possibles dans toutes les langues possibles:

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()); 
    } 
} 

} 

} 

Comment puis-je faire quelque chose de semblable, mais avec des noms de ville? Je sais CLDR et ICU mais je ne peux vraiment pas comprendre comment le faire (ou même si c'est possible). S'il y a une belle bibliothèque orientée objet là-bas, ce sera mieux que d'analyser les XML de CLDR ou d'autres sources.

je préfère au lieu d'appeler API Google, par exemple le faire localement (sur mon serveur ou même sur l'application mobile):

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 

(question est: Je suppose que Google DB du nom de villes est public, où est-il? est-il bien enveloppé dans une bibliothèque facile à utiliser multi-plateforme?)

Merci pour votre aide

Répondre

4

Je suppose que vous êtes à la recherche d'un fichier contenant toutes les villes et ses traductions au lieu de les chercher une fois par ville?

Si oui, www.geonames.org a des géo-données de différents types (pays, adminzones, villes) en plusieurs langues. À côté de leur API vous appelez peuvent également télécharger leurs fichiers directement et analyser par vous-même:

à l'adresse suivante, vous trouverez 3 Zip-Files préfixé par « alternativeNames » http://download.geonames.org/export/dump/

Ils contiennent - je l'espère - les données nécessaires.

+0

Malheureusement, Geonames ne mappe pas "nom alternatif" à "langue", de sorte que vous ne trouverez pas le nom en russe ici; encore plus de problèmes avec l'alphabet latin; et "alternateNames.txt" contient le même code de pays et n'a pas de correspondance avec la langue: name = Harare, asciiname = Harare, noms alternatifs = Arare, Charare, Gorad Kharareh, HRE, Harare, Hararensis Urbs, Harareo, Harare, Kharare, Salisbury , ha le lei, halale, harare, harary, hrarh, hrary, Χαράρε, Горад Харарэ, Хараре, Հարարե, הארארה, هارارى, هراره, هراري, ھارارې, ھەرارێ, ہرارے, हरारे, ਹਰਾਰੇ, ହାରାରେ, ஹராரே, ฮาราเร, ཧ་, ཧ་ ར་ རི,, ჰარარე, ሀራሬ, ハ ラ レ, 哈拉雷, 하라레 –