Les ressources ISO pour les langues
Le plugin utilise des fichiers de code ISO dont l’extraction est faite à partir de ressources diverses sur internet. On détaille ci-après la méthode pour chaque fichier.
Les fichiers SIL des codes de langues ISO-639. ils sont téléchargeables sur la page http://www-01.sil.org/iso639-3/down.... Cette page explique le contenu de chaque fichier et donne le schéma de chacune des tables.
- iso639codes.tab : repérer le lien UTF-8 qui suit la phrase « Download ISO 639-3 code set » et faire enregistrer le lien sous. On obtient un fichier nommé iso-639-3.tab qu’il faut renommer en iso639codes.tab.
- iso639names.tab : repérer le lien UTF-8 qui suit la phrase « Download ISO 639-3 Language Names Index » et faire enregistrer le lien sous. On obtient un fichier nommé iso-639-3_Name_Index.tab qu’il faut renommer en iso639names.tab.
- iso639macros.tab : repérer le lien ISO 639-3 macrolanguage mappings qui suit la phrase « Download » et faire enregistrer le lien sous. On obtient un fichier nommé iso-639-3-macrolanguages.tab qu’il faut renommer en iso639macros.tab.
- iso639retirements.tab : repérer le lien UTF-8 qui suit la phrase « Download ISO 639-3 code retirement mappings » et faire enregistrer le lien sous. On obtient un fichier nommé iso-639-3_Retirements.tab qu’il faut renommer en iso639retirements.tab.
Le fichier iso639families.tab est construit en téléchargeant le lien sur la page http://id.loc.gov/vocabulary/iso639... de la Library of Congress. On obtient un fichier iso639-5.tsv qu’il faut renommer en iso639families.tab.
Le fichier iso3166countries.txt est construit à partir de la page du site officiel de l’ISO, https://www.iso.org/obp/ui/fr/#sear.... Afficher 300 résultats par page ce qui permet d’avoir toute la table sur une seule page. Ensuite, sélectionner et copier la table entière sans l’en-tête et la coller dans Excel : on obtient un tableau excel correctement formaté avec le bon charset où il faut juste faire attention que les valeurs numériques ont perdu les zéros qui débutent (005 devient 5). Il faudra donc les réintroduire en créant une colonne via la fonction Texte(valeur, « 00# »). Sélectionner le tableau entier et le copier, puis le coller dans un éditeur comme PHPStorms. Il faut alors recréer un fichier type csv en remettant chaque bloc de 5 lignes sur une seule ligne et séparé par un point virgule en remplaçant les tabulations par le point virgule.
Insérer pour finir la première ligne d’en-tête qui doit être : English name;French name;Alpha-2;Alpha-3;Numeric
Le fichier iso15924scripts.txt est construit en téléchargeant sur la page http://www.unicode.org/iso15924/iso... le fichier zip iso15924.txt.zip en suivant le lien Téléchargez le fichier. Dézipper le fichier pour récupérer le fichier texte et le renommer en iso15924scripts.txt. Comme le fichier ne contient pas d’en-tête il faut rajouter au début du fichier la ligne Code;N°;English Name;Nom français;PVA;Date
Les ressources IANA
Le site IANA fournit un certains nombre de ressources dont un ensemble de registre sur les protocoles informatiques. L’un d’entre eux est le registre des subtags 5646, c’est-à-dire la liste officielle des sous-étiquettes qui composent les étiquettes de langue utilisées dans les protocoles informatiques. La page est accessible à l’url http://www.iana.org/assignments/lan... ou en cherchant le lien « Language Subtag Registry » dans la page des protocoles http://www.iana.org/protocols.
Cette page est décryptée récupérée par la fonction SPIP idoine sans aucune modification de format ou autre.
Les ressources ISO pour les subdivisions
La norme ISO 3166-2 fournit une nomenclature pour certaines subdivisions administratives des pays mais pas pour toutes. Par exemple, pour la France, les régions et départements sont incluses dans l’ISO 3166-2 mais pas les arrondissements, communes et cantons.
L’ISO ne fournit pas gratuitement de fichier pour cette nomenclature, ni par pays ni globalement. Il faut utiliser les pages web de chaque pays pour construire un tel fichier manuellement. La page de base est : https://www.iso.org/obp/ui/fr/#iso:pub:PUB500001:en. Elle propose un tableau des pays (code ISO 3166-1 alpha2) dont seules les cellules en fond vert désigne une nomenclature complète et validée.
En cliquant sur une cellule on affiche une page dans la langue par défaut du navigateur (soit le français) qui présente dans un tableau la liste des subdivisions du pays avec le code ISO, la catégorie, la subdivision mère éventuelle et les traductions dans la langue ou les langues du pays (une ligne par traduction).
Afin d’éviter les accents pour la catégorie, on extrait la page anglaise (changer fr par en dans l’url) sachant que de toute façon les traductions sont dans la langue du pays. Dans certains cas, pays francophones, il faudra combiner la page française et anglaise. De même, pour les langues dont l’écriture n’est pas romane, la traduction est romanisée : on ne doit pas l’identifier avec le code de langue originelle mais comme du français. Par exemple, pour le Maroc il faut remplacer le code ar par fr car en SPIP ar désigne l’écriture arabe et pas romane.
Les ressources ISO des pays
Les codes ISO
La norme ISO 3166-1 fournit la nomenclature internationale des 249 pays mais comme d’habitude aucun fichier source gratuit. Il faut donc le construire à partir d’une page ISO, à savoir : https://www.iso.org/fr/publication/PUB500001.html, lien Liste complète des noms de pays. Le tableau présenté est paginé, il faut choisir 300 items par page de façon à l’afficher en entier. Le tableau affiche 5 colonnes, le nom court anglais, le nom court français et les 3 codes ISO 3166-1 alpha2, alpha3 et numérique.
On copie le tableau dans un fichier csv, en remplaçant les tabulations de séparation par un point virgule et on adapte le nom des colonnes. Enfin, on rajoute une colonne supplémentaire nommée « category » que l’on remplit avec la valeur « country » pour tous les pays.
Les traductions additionnelles
La base de données de terminologie de l’UN, UNTERM, permet d’exporter un fichier de traduction des pays dans les langues russe, chinoise, arabe et espagnole (les langues française et anglaise sont déjà connues). Le fichier excel d’export contient les nom court et long de chacune de ces langues. Nomenclatures n’utilise que les noms courts.
Le problème du fichier obtenu est qu’il ne fait aucune référence à un code ISO du pays. Il faut donc construire le fichier final en utilisant ajoutant un code ISO à pays (un pays = une ligne). En outre, il n’y a que 197 lignes alors qu’il existe 259 pays.
Pour ajouter les code ISO alpha2 on crée une feuille supplémentaire avec le tableau des codes ISO des pays qui contient la traduction française et anglaise. On crée dans la feuille des traductions deux colonnes, fr et en, avec une formule en RECHERCHEV qui permet de trouver le code ISO à partir des traductions en et fr.
De fait, on remarque que quelques traductions sont différentes :
- il existe des * dans les traductions UNTERM que l’on peut supprimer
- il existe des traductions dans le fichier ISO source qui ne sont pas identiques que celles de l’UNTERM, la différence se trouvant toujours dans les termes entre parenthèses. En général, celles de l’UNTERM sont meilleures car elle intègre les mots « république de » ou « ile » dans le nom et pas dans les parenthèses. Cela est particulièrement évident avec les deux Congos.
On crée donc deux fichiers csv séparés :
- celui des traductions UNTERM des pays dont le nom fr et en est identique à l’ISO ;
- celui des traductions UNTERM des pays dont le nom fr ou en est différent de l’ISO.
En outre, il existe des noms ISO qui ne possède pas de traduction UNTERM mais dont le nom ISO en ou fr pourrait suivre la même logique que l’UNTERM. On crée un troisième fichier pour ces nouvelles traductions en et fr.
Les ressources GEONAMES
Geonames est un organisme qui fournit des données géographiques soit par le biais de fichiers CSV intégrables dans une base de données soit par l’intermédiaire de services web REST.
Dans Isocode, on utilise Geonames pour compléter la table des pays - iso3166countries - avec les informations contenues dans le fichier Geonames countryInfo.txt
disponible à l’adresse http://download.geonames.org/export.... Ce fichier est au format texte de type CSV avec une tabulation comme délimiteur. Il suffit donc d’enregistrer la page précédemment citée et de retoucher le fichier en supprimant les commentaires repérés par un caractère #
sauf la ligne précédent le premier pays qui fera office d’en-tête après lui avoir supprimé le caractère #
.
Le fichier est in fine renommé en iso3166countries-geonames-info.tab
.
Les ressources GEOIP
GeoIP est une librairie PHP qui permet de connaitre les données géographiques associées à un IP. Elle permet en particulier de connaitre le continent désigné par un code à deux lettres.
Il existe une fichier json accessible à cette adresse : https://datahub.io/core/continent-c... qui contient le nom anglais et le code du continent. On le télécharge, on le complète avec le nom français, espagnol, russe, chinois et arabe que l’on récupère dans le fichier M49regions.csv
et on le nomme geoipcontinents.json
avant de le stocker dans le répertoire services/geoip/
du plugin.
Les ressources UN M49 des régions du monde
Le fichiers M49regions.csv et M49regions_countries.csv sont construits à partir des pages :
Fichier M49regions.csv
Pour le fichier M49regions.csv
, il faut récupérer chaque table pour les 6 traductions de la page https://unstats.un.org/unsd/methodology/m49/, menu Geographic Regions et, extraire uniquement les régions (laisser les pays que l’on repère par leur code alpha3). Après on construit à la main la liste avec le code M49 de la région (001, 002...) et chaque traduction dans une colonne (les langues sont en, fr, es, ru, ar et zh).
Il faut aussi déterminer le parent à partir de l’arborescence présentée dans la page du site. La catégorie est mise à zone_region
pour la plupart sauf les continents au sens GEOIP à qui ont affectent la catégorie continent
.
Pour les continents, à partir du moment où l’on choisi de retenir les codes GEOIP, cela revient à choisir le modèle à 7 continents. Ce n’est pas le modèle que l’on vient de saisir dans le fichier M49regions.csv
. Il faut donc le modifier comme le précise le renvoi en fin de tableau de la page des regions :
The continent of North America (numerical code 003) comprises Northern America (numerical code 021), Caribbean (numerical code 029), and Central America (numerical code 013
Il faut donc faire les opérations suivantes sur le fichier :
- ajouter la ligne de la région North America / Amérique du Nord qui a bien un code M49, le 003 et lui affecter la catégorie continent.
- lier cette région à son parent Amériques de code 019
- supprimer la région 419 qui ne va plus être utile
- lier la région Amérique du Sud 005 à son parent la région Amériques 019 étant donné que 419 a été supprimée et passer la catégorie à continent
- lier les régions Amérique Centrale 013, Caraïbes 029, Amérique Septentrionale 021 à son parent le continent Amérique du Nord 003
Les modifications de ce fichier sont assez rares et décrites dans la même page, menu Recent Changes. La dernière modification remonte à 2017.
Fichier M49regions_countries.csv
Ce fichier permet de faire le lien entre chaque pays de la liste ISO 3166 et les régions M49. Il suffit donc de garder deux colonnes, le code M49 du pays et le code M49 de sa région parent.
Le plus simple est d’exporter le fichier Excel français de la page https://unstats.un.org/unsd/methodology/m49/overview/ accessible par le menu Fullview.
On ouvre le fichier Excel et on supprime toutes le colonnes à droite de la colonne « M49 Code ». On crée un titre « parent » dans la colonne juste à droite et on y copie la valeur de la région rattachée : pour la déterminer il suffit de prendre la région la plus à droite parmi les 4 niveaux d’arborescence. Une fois fini, on peut supprimer les colonnes de région (8 colonnes) ainsi que la colonne du nom français du pays qui ne nous sert pas.
Pour obtenir 015 au lieu de 15, on duplique les colonnes M49 Code et Parent avec la formule TEXTE(cellule, « 000 ») que l’on recopie ensuite en copie valeur dans les colonnes M49 Code et Parent. On peut alors supprimer les colonnes de calcul et renommer la colonne « M49 Code » en « code_num ».
Enfin, il faut modifier le code_num du pays Antartique de 001 (monde) à 010 qui est le code du continent Antartique (on a donc deux territoires qui ont le même code mais pas utilisés en même temps).
Pour terminer on enregistre le fichier Excel en CSV avec un « ; » en guise de séparateur en le nommant M49regions_countries.csv
.
Ce fichier varie peu mais surement plus que celui des régions. Il est facile de le reconstruire si on constate une modification listée dans la page dédiée.
Il est aussi à noter que Taiwan n’apparait pas comme un pays UN M49.