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