Liste des pays avec codes ISO 3166-1

Les listes de codes de l’ISO 3166-1

Propose une boucle « pays » qui s’utilise comme suit (exemple) :

<B_p>#PAGINATION
<table class="spip" width="100%">
	<thead>
	<tr class="row_first">
		<th><:pays:id_pays:></th>
		<th><:pays:code:></th>
		<th><:pays:nom:></th>
	</tr>
	</thead>
	<tbody>
	<BOUCLE_p(pays){par nom}{pagination 20}>
	<tr[ class="(#COMPTEUR_BOUCLE|alterner{'row_odd','row_even'})"]>
		<td>#ID_PAYS</td>
		<td>#CODE</td>
		<td>#NOM</td>
	</tr>
	</BOUCLE_p>
	</tbody>
</table>
</B_p>

Le plugin installe une nouvelle table « pays » qui reprend la liste des pays issus de spip_geographie (mais seulement les pays) en l’enrichissant des codes à deux caractères établis pas l’Organisation Internationale de Normalisation (ISO). Des correspondances peuvent ainsi êtres faites avec d’autres bases de données donnant ce champ comme clé d’index.

Ce plugin est par exemple utilisé dans les plugins Coordonnées et Contacts et Organisations (C&O) pour générer la liste des pays dans une adresse postale, et dans une appli développée pour un service export.

Comme indiqué sur le site de l’ISO : « Les noms de pays (forme courte) de l’ISO 3166-1 et les codes alpha-2 sont mis à disposition par l’ISO gratuitement pour un usage interne et à des fins non commerciales. »

Ce plugin est accompagné d’un court exemple d’utilisation de la boucle pays. Pour afficher l’exemple, une fois le plugin installé affichez la page [1] : spip.php?page=demo/pays. Vous obtiendrez une liste des pays du monde similaire à celle-ci :

Mise à jour 3.1

Le plugin Pays permet désormais de lier un Pays à n’importe quel objet SPIP. La liste des objets qui peuvent être liés à des pays est paramétrable sur la page de configuration du plugin (?exec=admin_plugin ou menu Configuration > Gestion des plugins) :

Ensuite, sur ces objets une nouveau bloc permet d’effecter un ou plusieurs pays à l’objet :

Notes

[1Vous devez être webmestre du site pour voir cette page

l’icône du globe terrestre provient du site tutsps.com

Discussion

19 discussions

  • 1

    Pour information l’ensemble des codes iso sont disponibles en xml traduits via le projet Debian.

    Il peut être intéressant de voir si ça ne serait pas plus simple de se rallier à ce travail pour mutualiser les ressources :

    http://anonscm.debian.org/gitweb/?p=iso-codes/iso-codes.git;a=tree

    Comme quoi ça a parfois du bon de lire les logs de ses serveurs :p

    • brain_damage

      je suis d’accord, nottament pour les traductions et les monnaies relatives au pays :)

    Répondre à ce message

  • 3

    Bonjour,
    En v3.09, j’ai un soucis, il me manque les 50 derniers pays. J’ai désactivé , supprimé réactivé, etc... rien n’y fait , la base spip_pays reste à 200 enregistrements !

    • Pareil chez moi : le peuplement de la base s’arrête au 200e pays, les Samoa...

      Je ne sais pas si l’auteur verra ce commentaire, donc si le plugin n’est pas mis à jour dans l’immédiat, il faut télécharger le plugin et retirer la ligne 260 du fichier v3.0.9/base/peupler_base.php

      (il y a deux lignes identiques, on retrouve bien un pb dans les logs à l’insertion en base du dernier paquet de 50 pays, d’où l’arrêt au 200e)

      Je ferais bien remonter sur une plateforme de dev mais je ne sais plus trop où ça se passe... si qqun sait je ferai suivre.

      Merci pour ce plugin en tout cas :-)

    • Bonjour,

      Je n’avais pas vu vos messages. J’ai corrigé ces 2 erreurs :
      -  z83531 -> http://zone.spip.org/trac/spip-zone/changeset/83531
      -  z83532 -> http://zone.spip.org/trac/spip-zone/changeset/83532

    • merci Teddy !

    Répondre à ce message

  • J’ai ajouté (version 2.1.1 - http://zone.spip.org/trac/spip-zone/changeset/60302) un script pour migrer une colonne d’une table SQL qui a des pays écrits en dur (en français) vers un id_pays. On remplace le texte par un id donc. Ça s’utilise comme ça :

    Dans un squelettes/mig.html :

    #CACHE{0}
    <?php
    include_spip('outils/migration_nom_pays');
    // pour une colonne 'pays' dans 'spip_mots'
    // migre et affiche un resultat des operations
    migrer_pays_table_et_bilan('spip_mots', 'pays');
    ?>

    Puis :
    / ?page=mig sur votre site. Et hop.

    Il est possible qu’il y ait des erreurs (pays absents), auquel cas, il faudra corriger ceux là à la main :)

    Répondre à ce message

  • 1

    les noms des pays sont stockés dans un champ texte de la base, sous la forme d’une balise SPIP <multi> ; ces noms sont disponibles en [fr],[en],[de],[es],[it],[nl] et [pt] ; les titres de balise pour l’interface du plugin sont stockés dans 2 fichiers de langue, seulement dispo en [fr] et [en].

    Selon le contexte de la page (variable ?lang=xx dans l’url) l’affichage des noms de pays change.

    • outre la traduction affichée, il peut être intéressant d’avoir le nom officiel dans la langue officielle (qui peut ne pas être l’anglais ou le français et donc différer de l’appellation officielle de l’ONU...)

      il y a un nouvel état africain qui vient de naitre... il faudra penser à mettre à jour dès que son code sera disponible.

    Répondre à ce message

  • 3

    Est ce possible de les reprendre dans le plugin forms et tables afin de proposer dans un formulaire une liste de pays ?

    • Bonjour,

      Livrée avec le plugin, il y a une « saisie » qui s’appelle « pays.html ». Elle génère directement une liste déroulante avec tous les pays, que l’on peut appeler ensuite dans les formulaires SPIP.

      Voici un exemple d’appel de la saisie depuis un formulaire SPIP :

      [(#SAISIE{pays, pays, label=<:cop:label_pays:>,defaut=70})]

      L’instruction defaut =70 indique que le pays N°70 (la France) apparait sélectionnée dans la liste.

      Prenons l’exemple du plugin « coordonnées » qui utilise le plugin « pays ». Dans le formulaire qui permet de saisir une adresse postale, le champ « pays » est listé par cette saisie. Voici un extrait du code du formulaire en question :

      <form method='post' action='[(#ENV{action})]'><div>
      	#ACTION_FORMULAIRE{#ENV{action}}
      	<input type='hidden' name='id_adresse' value='#ENV{id_adresse}' />
      	<input type='hidden' name='objet' value='#ENV{objet}' />
      	<input type='hidden' name='id_objet' value='#ENV{id_objet}' />
      	<ul>
      		[(#SAISIE{input, voie, label=<:cop:label_voie:>})]
      		[(#SAISIE{input, complement, label=<:cop:label_complement:>})]
      		[(#SAISIE{input, boite_postale, label=<:cop:label_boite_postale:>})]
      		[(#SAISIE{input, code_postal, label=<:cop:label_code_postal:>})]
      		[(#SAISIE{input, ville, label=<:cop:label_ville:>})]
      		[(#SAISIE{pays, pays, label=<:cop:label_pays:>,defaut=70})]
      		[(#SAISIE{input, type_adresse,
      			label=<:cop:label_type_adresse:>,
      			explication=<:cop:explication_type_adresse:>})]
      	</ul>
      	[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
      	<!--extra-->
      	<p class='boutons'>
      		<input type='submit' name='enregistrer' value='<:bouton_enregistrer:>' />
      	</p>
      	
      </div></form>

      En espérant que cela te soit utile,

      — 
      Cyril

    • Merci beaucoup. Par contre dans forms et tables doit voir comment faire, car les types de champs ajoutables sont déjà définis et aucun ne permet l’ajout d’un fichier, puis idéalement faudrait aussi que ca gère le multilinguisme.

    • pays n°70 ? pourquoi ne pas utiliser directement les code ISO-2 qui sont pourtant non-ambigus ? :(
      pourrait-on reprendre le même exemple montrant l’usage de ces codes ?

    Répondre à ce message

  • arriverait on à créer un groupe de mots clés « pays » qui créerait automatiquement un mot clé par pays en attribuant le code iso dans le descriptif du mot clé par ex ?

    Répondre à ce message

  • Bonjour,

    J’ai juste un petit soucis d’activation, lorsque je veux l’activer sur la version 1.0.6 - stable, et Spip 2.1.10 [17657], j’ai :

    Impossible d'activer le plugin ../plugins/auto/pays
    
        * Nécessite SPIP en version [2.0.9;3.0.*] minimum.

    Je peux l’activer en modifiant manuellement par

    	<necessite id="SPIP" version="[2.0.9;]" />

    Mais je suis persuadé que ce n’est pas la bonne façon :)

    Répondre à ce message

  • 1

    le plugin est excellent.
    Le seul petit bémol c’est que je vois pas certain pays dans la liste des pays de ce plugin.
    Pour l’instant c’est tout ce que j’ai noté.
    Bon travail !

    • il y avait un doublon dans la liste des codes alphabétiques qui empêchait le peuplement complet de la base (227 pays chargés au lieu de 244) ; merci d’avoir remonté le bug ;-) corrigé en version 1.0.4 (révision [40033]) ;

    Répondre à ce message

  • Comment se passe le multilinguisme ?

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom