IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Geocode inversé - Trouble avec les traductions


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 26
    Points
    26
    Par défaut Geocode inversé - Trouble avec les traductions
    Bonjour,

    Je suis a l'intégration de Google Map / Places / Geocode sur mon site. Étant un site bilingue, je voudrais avoir les "traductions" dans le cas ou les règles de toponymie le permet.

    Voici 3 exemples :

    Ville de Québec = Quebec City
    Baie d'Hudson = Hudson Bay
    100, boulevard de Maisonneuve = 100 De Maisonneuve Boulevard

    Pour les adresses provenant des États-Unis, la traduction vers le français ce fait très bien, du moins j'ai pas remarqué aucune anomalie. Par contre, pour les places (rue,ville,etc.) du canada français, il ne traduit pas complètement vers l'anglais. À première vu, je ne crois pas etre la source de mon problème. J'ai vérifiés sur Google Map Maker et les alternatives désiré y sont, du moins pour ceux que j'ai vérifié.

    Voici ma function utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
     
    function google_place_lookup($string,$l){
     
       $array = array();
       $details_url = "https://maps.googleapis.com/maps/api/geocode/json?language=".$l."&address=".str_replace (" ", "+", urlencode($string))."&key=GOOGLE_KEY";
     
       $ch = curl_init();
       curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
       curl_setopt($ch, CURLOPT_VERBOSE, TRUE);	
       curl_setopt($ch, CURLOPT_URL, $details_url);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
       $response = json_decode(curl_exec($ch), true);
       curl_close($ch);
     
       if ($response['status'] != 'OK') { return null; }
     
    	$componentsSort = array('street_number' => array("short_name" => "street_number"),
    				'route' 	=> array("long_name" => "route"),
    				'neighborhood' 	=> array("long_name" => "neighborhood"),
    				'sublocality_level_1' => array("long_name" => "sublocality_level_1"),
    				'sublocality_level_2' => array("long_name" => "sublocality_level_2"),
    				'sublocality_level_3' => array("long_name" => "sublocality_level_3"),
    				'sublocality_level_4' => array("long_name" => "sublocality_level_4"),
    				'sublocality_level_5' => array("long_name" => "sublocality_level_5"),
    				'locality' 		=> array("long_name" => "locality"),
    			        'administrative_area_level_1' => array("long_name" => "admin_area_level_1_long",
    			        'administrative_area_level_2' => array("short_name" => "admin_area_level_2_short"),
    	                        'administrative_area_level_3' => array("short_name" => "admin_area_level_2_short", "short_name" => "admin_area_level_3_short"),
    		                'administrative_area_level_4' => array("short_name" => "admin_area_level_4_short"),
    			        'administrative_area_level_5' => array("short_name" => "admin_area_level_5_short"),
    				'country' 		=> array('long_name' => 'country_long','short_name' => 'country_short'),
    				'postal_code'		=> array("short_name" => "postal_code") 
     
    						 );
     
     
     	$components = $response['results'][0]['address_components'];
     
    	foreach($components as $k => $v) {
    		$types = $components[$k]['types'][0];
    		if(isset($componentsSort[$types]) && $componentsSort[$types]) {
    			foreach($componentsSort[$types] as $k2 => $v2) {
    				$array[$v2] = $components[$k][$k2];
    			}
    		}
    	}
     
     	$array['place_id']  			 = $response['results'][0]['place_id'];
     	$array['formatted_address']  = $response['results'][0]['formatted_address'];
    	$array['latitude']  = $response['results'][0]['geometry']['location']['lat'];
    	$array['longitude'] = $response['results'][0]['geometry']['location']['lng'];
     
        return $array;
     
    }

    Est-ce que je m'y prends de la mauvaise façon, j'en doute. Est-ce que vous savez si Google limite ces données au canada? J'ai vu, maintenant, qu'il y a des couts pour l'achat de leur BDD complète. Est-ce que je dois considérer cette option (https://developers.google.com/maps/p...d-plans/?hl=fr) ?

    J'ai besoin ''rapidement'' d'une solution efficace. Les usagers consulte, ajoute et recherche sur le site dans les 2 langues, je veux évité d'avoir des résultats différents selon la rechercher en français / anglais. Exemple une recherche dans la Ville de Québec, ne sortira pas ceux inscrit sur le nom anglais Quebec City.

    Par la suite, j'enregistre dans une table assez simple ( id, fr, en, lat, long ). Mes colonnes ''unique'' pour le fr/en, donc si un de mes usagers entre une ville en français, a l'enregistrement, je voudrais utilisé ma fonction pour récupérer l'équivalent en anglais. Par la suite, les usagers suivant aurons simplement a récuperer le meme id. Dans mes tests les plus récents, souvent, je me retrouve avec un id contenant 2 colonnes en francais et un autre id pour l'anglais.

    Merci d'avance!

    Référence sur la Toponymie :

    http://www.toponymie.gouv.qc.ca/ct/n...toponymes.html
    http://www.btb.termiumplus.gc.ca/tcd...fo0=10.14#zz10

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Es-tu sûr que c'est sur MapMaker qu'il faut vérifier? Sur Google Maps en anglais, ça me donne Boulevard de Maisonneuve et pas De Maisonneuve Boulevard. Est-ce que De Maisonneuve Boulevard est la traduction officielle?

    Regarde ici: http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=5046
    Au Québec, certains éléments de l’adresse doivent toujours s’écrire dans la langue dans laquelle ils sont officialisés par la Commission de toponymie, qui est généralement le français; il s’agit de la rue ou des autres génériques de voies de communication, du point cardinal qui leur est rattaché, de la ville et de la province. Ces éléments ne devraient pas se traduire en anglais.

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/02/2017, 15h19
  2. Réponses: 0
    Dernier message: 15/05/2014, 17h16
  3. [2.x] Problème sur les traductions avec GEDMO
    Par Sylvanocry dans le forum Symfony
    Réponses: 0
    Dernier message: 11/04/2014, 01h09
  4. Réponses: 6
    Dernier message: 10/02/2008, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo