Carnet Wiki

Un plugin spip_(geo)localisation

Objectifs :

Avoir à disposition dans spip une liste de continent / pays / ville utilisable par les autres plugins facilement.

  • Une table Continent avec | id_continent | Nom | code ONU | latitude | longitude||
  • Une table Pays avec id_pays | id_continent | Nom | code ISO 3166-1 | latitude l longitude | Indicatif téléphonique (voire zone TVA, monnaie, langue officielle...)
  • Une table Région avec id_region | id_pays | id_continent | Nom | latitude l longitude | code ISO 3166-2
  • Une table Departement avec id_departement | id_region | id_pays | id_continent | Nom | latitude l longitude | code ISO 3166-2
  • Une table Ville avec id_ville | id_pays | id_continent | Nom | latitude l longitude | code postal
  • Une table arrondissement

Remarque : Région et Département ne sont pas applicables à d’autres pays. Peut-être plutôt reprendre l’idée de la norme ISO 3166-2 qui parle de subdivisions administratives d’un pays par exemple au Mexique ou aux États-Unis ce sont des états, en Suisse des cantons, en Allemagne des länder, etc.

Concrètement, on peut mettre les régions et départements dans une même table Régions (ou autre nom, par exemple Subdivision_geo), avec peut-être un champ supplémentaire qui décrive la nature de la division (état, région, département, canton, land), ou peut-être juste un id_parent pour permettre d’indiquer les imbrications, et par la même occasion permettre une profondeur d’imbrication aléatoire (1, 2, 3...).

Même remarque pour arrondissement, il faudrait voir comment le rendre générique.

PS : en fait, il « suffit » de reprendre l’organisation récursive #HIErARCHIE connue depuis longtemps en SPIP des... rubriques !
Pour faciliter l’usage, on pourrait rajouter uen table annexe paramétrant les appellations des niveaux de subdivision administrative, sur-indexée par le pays pour adapter les hiérarchies selon les pays.

Reprise d’un échange sur irc

[13:01] les pays je me demande comment faire
[13:02] j’ai le html des 282 pays en select
[13:02] <kent1> je me demande s’il faut pas une table...
[13:02] mais je pense qu’un plugin pays ca serait bien
[13:02] oué voila
[13:02] <kent1> oui
[13:02] <kent1> une table pays + indicatifs
[13:02] + zone de frais de ports
[13:02] <kent1> + continent
[13:02] + info de localisation
[13:02] <kent1> oui
[13:02] voila
[13:02] <kent1> cool
[13:03] mais ca doit forcement deja exister un truc comme ca
[13:03] <kent1> moi j’aime bien l’idée de travailler à partir de gribouille
[13:03] oué
[13:03] moi itou
[13:03] <kent1> je copy/paste dans un nouvel article

Mutualisation possible d’un tel plugin avec d’autres plugins

Par exemple avec :
-  Inscription2 et Association (utilisent actuellement une liste de pays pour les fiches des inscrits)
-  Forms & tables
-  Gis et les autres plugins cartographiques
-  Google Maps sur mots clés (utilise actuellement une liste de villes avec leurs coordonnées)
-  Paris-Beyrouth compteur de visites et /Google-Maps-et-Spip (complètent l’affichage des statistiques des visiteurs en indiquant leurs localisations, utilisent au moins une liste de pays)

réalisation

Début d’écriture ici, avec déjà 7 continents et toutes les contrées de la liste ISO 3166-1. J’y ai ajouté l’Amérique entière comme continent, mais n’hésitez pas à discuter la la liste actuelle, qui n’est pas définitive.

Puisque le plugin augmentera fortement de taille lorsque seront ajoutées les listes de régions, départements, communes, on pourrait faire une première version avec uniquementl les continents et pays, que nécessiterait les versions suivantes (un peu comme des poupées russe, ou comme la notion de niveaux dans W3C Variability in Specifications). De plus, cela permetrait de sortir une première version continents+pays rapidement.

Kent1 : A noter, seules les listes de continents et de pays seront à disposition dans le plugin sur spip-zone. Il faudra trouver une solution de sauvegarde externe pour le reste...

traduction des noms

-  Actuellement, la traduction des noms des continents est effectuée par une balise <multi>, et les noms des pays sont en français uniquement.
-  À part la ballise multi, la solution la plus simple au début est de faire une colonne par langue, nommée nom-fr, nom-en, nom-gl, etc.
-  Un solution plus complexe serait de faire un tableau (une table SQL) ayant pour colonnes type (continent/pays/etc.), id (identifiant), lang (code langue), nom (nom traduit), les trois premières formant une PRIMARY KEY de SQL.

Kent1 : La première solution me sembre trop spécifique à spip... d’ailleurs c’est intéressant si c’est en 2 ou 3 voir 4 langues... après cela devient très lourd à gérer à mon avis.... je pencherai pour la seconde pour commencer

Pour trouver des traductions des pays, il est possible (comme pour les langues de SPIP) de voir auprès du projet CLDR (dont la version 1.5 a été publiée le 2007-07-31), qui indique en plus les monnaies nationales.

Le plugin doit pouvoir indiquer le nom dans n’importe quelle langue, en donnant le nom en français par défaut. En pratique, il faut prendre en compte la langue en cours, regarder si il y a une traduction dans cette langue, et sinon prendre la version française.

Chercher quelles fonctions de SPIP de multilinguisme peuvent être utilisées.

Nom

Puisque le plugin ne contiendra que des noms de lieu, il est peut être imprécis de l’appeller spip-geo, qui suggère que c’est le plugin faisant TOUT pour la géo (api google map et café compris). Pourquoi pas :
-  listes-geo (imprécis ?)
-  listes-pays (trop limité ?)
-  données-geo (permet données-geo-pays pour la version continents+pays)
-  divisions-geo
-  
-  avec ou sans « spip » dans le nom ?
-  avec ou sans « geo » dans le nom ?
-  un nom attrayant ou rébarbatif ?

récoltes de données

Pour les pays, j’ai repris la liste ISO 3166-1, avec codes et nom français officiels (mais j’ai amendé les noms).

Une liste des régions, départements et villes de France, par Stéphane Bortzmeyer, via Sébastien Lardière est peut-être utilisable.

- Mise à jour :27 avril 2023 à 09h01min