Browse Source

On transfère le code idoine du plugin code_langue dans un nouveau plugin isocode qui ne contiendra lui que la base des codes ISO ou autres et les services pour y accéder.

On verra ensuite ce qu'on fera du premier plugin.
svn/root/trunk
eric@smellup.net 5 years ago
parent
commit
2ccfc27415
  1. 1
      .gitattributes
  2. 226
      base/isocode_declarations.php
  3. 33
      demo/isocode.html
  4. 167
      inc/isocode_outils.php
  5. 92
      isocode_administrations.php
  6. 227
      isocode_fonctions.php
  7. BIN
      isocode_logo-64.png
  8. 15
      lang/paquet-isocode_fr.php
  9. 20
      paquet.xml
  10. 45
      services/iana/iana_api.php
  11. 183
      services/iso/iso15924scripts.txt
  12. 250
      services/iso/iso3166countries.txt
  13. 7848
      services/iso/iso639codes.tab
  14. 116
      services/iso/iso639families.tab
  15. 449
      services/iso/iso639macros.tab
  16. 8134
      services/iso/iso639names.tab
  17. 310
      services/iso/iso639retirements.tab
  18. 244
      services/iso/iso_api.php

1
.gitattributes

@ -1 +1,2 @@
* text=auto !eol
/isocode_logo-64.png -text

226
base/isocode_declarations.php

@ -0,0 +1,226 @@
<?php
/**
* Ce fichier contient les modifications de la base de données requises
* par le plugin.
*
* @package SPIP\ISOCODE\ADMINISTRATION
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Déclaration des nouvelles tables de la base de données propres au plugin.
*
* Le plugin déclare 5 nouvelles tables ISO-639 issues de 2 bases de données (SIL et Library of Congress
* uniquemet pour les familles de langues) :
*
* - `spip_iso639codes`, qui contient les codes ISO-639-3, 2 et 1,
* - `spip_iso639names`, qui contient les noms de langue,
* - `spip_iso639macros`, qui contient le mapping des macrolangues,
* - `spip_iso639retirements`, qui contient les langues retirées de la liste officielle,
* - `spip_iso639families`, qui contient les familles et groupes de langues ISO-639-5,
*
* une table `spip_iso15924scripts` qui contient les codets d'écriture à 4 lettres et leur définition en
* français et en anglais.
*
* et une table `spip_iana5646subtags` qui contient les codes des sous-étiquettes des étiquettes de langue
* construites selon la RFC 5646.
*
* @pipeline declarer_tables_principales
*
* @param array $tables_principales
* Tableau global décrivant la structure des tables de la base de données
*
* @return array
* Tableau fourni en entrée et mis à jour avec les nouvelles déclarations
*/
function isocode_declarer_tables_principales($tables_principales) {
// -------------------------------------------------
// Table principale des codes ISO : spip_iso639codes
$table_codes = array(
'code_639_3' => "char(3) DEFAULT '' NOT NULL", // The three-letter 639-3 identifier
'code_639_2b' => 'char(3)', // Equivalent 639-2 identifier of the bibliographic applications code set, if there is one
'code_639_2t' => 'char(3)', // Equivalent 639-2 identifier of the terminology applications code set, if there is one
'code_639_1' => 'char(2)', // Equivalent 639-1 identifier, if there is one
'scope' => "char(1) DEFAULT '' NOT NULL", // I(ndividual), M(acrolanguage), S(pecial)
'type' => "char(1) DEFAULT '' NOT NULL", // A(ncient), C(onstructed), E(xtinct), H(istorical), L(iving), S(pecial)
'ref_name' => "varchar(150) DEFAULT '' NOT NULL", // Reference language name
'comment' => 'varchar(150)', // Comment relating to one or more of the columns
'maj' => 'timestamp'
);
$table_codes_key = array(
'PRIMARY KEY' => 'code_639_3'
);
$tables_principales['spip_iso639codes'] =
array('field' => &$table_codes, 'key' => &$table_codes_key);
// --------------------------------------------
// Tables des noms de langue : spip_iso639names
$table_names = array(
'code_639_3' => "char(3) DEFAULT '' NOT NULL", // The three-letter 639-3 identifier
'print_name' => "varchar(75) DEFAULT '' NOT NULL", // One of the names associated with this identifier
'inverted_name' => "varchar(75) DEFAULT '' NOT NULL", // The inverted form of this Print_Name form
'maj' => 'timestamp'
);
$table_names_key = array(
'PRIMARY KEY' => 'code_639_3, print_name'
);
$tables_principales['spip_iso639names'] =
array('field' => &$table_names, 'key' => &$table_names_key);
// -------------------------------------------
// Tables des macrolangues : spip_iso639macros
$table_macros = array(
'macro_639_3' => "char(3) DEFAULT '' NOT NULL", // The identifier for a macrolanguage
'code_639_3' => "char(3) DEFAULT '' NOT NULL", // The identifier for an individual language that is a member of the macrolanguage
'status' => "char(1) DEFAULT '' NOT NULL", // A (active) or R (retired) indicating the status of the individual code element
'maj' => 'timestamp'
);
$table_macros_key = array(
'PRIMARY KEY' => 'macro_639_3, code_639_3'
);
$tables_principales['spip_iso639macros'] =
array('field' => &$table_macros, 'key' => &$table_macros_key);
// ------------------------------------------------------
// Tables des langues supprimées : spip_iso639retirements
$table_rets = array(
'code_639_3' => "char(3) DEFAULT '' NOT NULL", // The three-letter 639-3 identifier
'ref_name' => "varchar(150) DEFAULT '' NOT NULL", // Reference language name
'ret_reason' => "char(1) DEFAULT '' NOT NULL", // code for retirement: C (change), D (duplicate), N (non-existent), S (split), M (merge)
'change_to' => 'char(3)', // in the cases of C, D, and M, the identifier to which all instances of this Id should be changed
'ret_remedy' => 'varchar(300)', // The instructions for updating an instance of the retired (split) identifier
'effective_date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // The date the retirement became effective
'maj' => 'timestamp'
);
$table_rets_key = array(
'PRIMARY KEY' => 'code_639_3'
);
$tables_principales['spip_iso639retirements'] =
array('field' => &$table_rets, 'key' => &$table_rets_key);
// ---------------------------------------------------------------------------
// Tables des familles et groupes de langues (ISO-639-5) : spip_iso639families
$table_families = array(
'code_639_5' => "char(3) DEFAULT '' NOT NULL", // The three-letter 639-5 identifier
'uri' => "varchar(150) DEFAULT '' NOT NULL", // Description page
'label_en' => "text DEFAULT '' NOT NULL", // English label for the family
'label_fr' => "text DEFAULT '' NOT NULL", // French label for the family
'code_639_1' => 'char(2)', // Equivalent 639-1 identifier, if there is one
'scope' => "char(1) DEFAULT '' NOT NULL", // C(ollective) always
'code_set' => "varchar(32) DEFAULT '' NOT NULL", // Any combinaison of 639-5 and 639-2 separed by comma
'hierarchy' => "varchar(32) DEFAULT '' NOT NULL", // List of 639-5 identifiers separated by comma
'parent' => "char(3) DEFAULT '' NOT NULL", // The parent three-letter 639-5 identifier
'maj' => 'timestamp'
);
$table_families_key = array(
'PRIMARY KEY' => 'code_639_5'
);
$tables_principales['spip_iso639families'] =
array('field' => &$table_families, 'key' => &$table_families_key);
// -------------------------------------------------
// Table des indicatifs d'écritures (ISO 15924) : spip_iso15924scripts
$table_scripts = array(
'code_15924' => "char(4) DEFAULT '' NOT NULL", // The four-letter identifier
'label_en' => "varchar(255) DEFAULT '' NOT NULL", // English script name
'label_fr' => "varchar(255) DEFAULT '' NOT NULL", // french script name
'code_num' => "char(3) DEFAULT '' NOT NULL", // Numeric identifier
'alias_en' => "varchar(32) DEFAULT '' NOT NULL", // Unicode alias showing how ISO 15924 code relate to script names defined in Unicode.
'date_ref' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // The reference date to follow changes
'maj' => 'timestamp'
);
$table_scripts_key = array(
'PRIMARY KEY' => 'code_15924'
);
$tables_principales['spip_iso15924scripts'] =
array('field' => &$table_scripts, 'key' => &$table_scripts_key);
// -------------------------------------------------
// Table principale des codes ISO : spip_iso3166countries
$table_countries = array(
'code_alpha2' => "char(2) DEFAULT '' NOT NULL", // The two-letter identifier
'code_alpha3' => "char(2) DEFAULT '' NOT NULL", // The three-letter identifier
'code_num' => "char(3) DEFAULT '' NOT NULL", // Numeric identifier
'label_en' => "varchar(255) DEFAULT '' NOT NULL", // English name
'label_fr' => "varchar(255) DEFAULT '' NOT NULL", // french name
'maj' => 'timestamp'
);
$table_countries_key = array(
'PRIMARY KEY' => 'code_alpha2'
);
$tables_principales['spip_iso3166countries'] =
array('field' => &$table_countries, 'key' => &$table_countries_key);
// ------------------------------------------------------------
// Table reproduisant le registre IANA des sous-étiquettes de langues : spip_iana5646subtags
$table_subtags = array(
'type' => "varchar(16) DEFAULT '' NOT NULL", // Subtag type as language, variant, extlang, region, script...
'subtag' => "varchar(32) DEFAULT '' NOT NULL", // Subtag value
'description' => "text DEFAULT '' NOT NULL" , // Descriptions of subtags separated by comma
'date_ref' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // Subtag creation date
'no_script' => "char(4) DEFAULT '' NOT NULL", // The four letter script identifier not to be used for the subtag
'macro_language' => "char(3) DEFAULT '' NOT NULL", // Macrolanguage to which subtag is refering to
'deprecated' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // Deprecated date if any
'preferred_tag' => "char(3) DEFAULT '' NOT NULL", // Preferred tag to be used instead the current subtag
'prefix' => "char(3) DEFAULT '' NOT NULL", // Prefix to be used thos the subtag except is a preferred tag exists
'comments' => "text DEFAULT '' NOT NULL", // Comments on subtag
'maj' => 'timestamp'
);
$table_subtags_key = array(
'PRIMARY KEY' => 'type, subtag'
);
$tables_principales['spip_iana5646subtags'] =
array('field' => &$table_subtags, 'key' => &$table_subtags_key);
return $tables_principales;
}
/**
* Déclaration des informations tierces (alias, traitements, jointures, etc)
* sur les tables de la base de données modifiées ou ajoutées par le plugin.
*
* Le plugin se contente de déclarer les alias des tables qu'il ajoute.
*
* @pipeline declarer_tables_interfaces
*
* @param array $interfaces
* Tableau global des informations tierces sur les tables de la base de données
*
* @return array
* Tableau fourni en entrée et mis à jour avec les nouvelles informations
*/
function isocode_declarer_tables_interfaces($interfaces) {
// Les tables
$interfaces['table_des_tables']['iso639codes'] = 'iso639codes';
$interfaces['table_des_tables']['iso639names'] = 'iso639names';
$interfaces['table_des_tables']['iso639macros'] = 'iso639macros';
$interfaces['table_des_tables']['iso639retirements'] = 'iso639retirements';
$interfaces['table_des_tables']['iso639families'] = 'iso639families';
$interfaces['table_des_tables']['iso15924scripts'] = 'iso15924scripts';
$interfaces['table_des_tables']['iso3166countries'] = 'iso3166countries';
$interfaces['table_des_tables']['iana5646subtags'] = 'iana5646subtags';
// Les traitements
return $interfaces;
}

33
demo/isocode.html

@ -0,0 +1,33 @@
#CACHE{0}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" lang="#LANG" dir="#LANG_DIR">
<body dir="#LANG_DIR">
<div id="container">
<?php
?>
<h1>SERVICE SPIP</h1>
<h2>Verifier les codes</h2>
<?php
include_spip('services/iso/iso_api');
$fields = iso639families_complete(array('code_639_5' => 'eng'), $GLOBALS['iso_service']['fields']['iso639families']);
var_dump($fields);
$fields = iso639families_complete(array('code_639_5' => 'bih'), $GLOBALS['iso_service']['fields']['iso639families']);
var_dump($fields);
$fields = iso639families_complete(array('code_639_5' => 'aav'), $GLOBALS['iso_service']['fields']['iso639families']);
var_dump($fields);
die();
$codes = isocode_verifier_codes_spip();
if (isset($codes['ok']['iso6395'])) var_dump('SPIP 5', count($codes['ok']['iso6395']), $codes['ok']['iso6395']);
if (isset($codes['nok']['iso6391'])) var_dump('SPIP 1', count($codes['nok']['iso6391']), $codes['nok']['iso6391']);
if (isset($codes['nok']['iso6393'])) var_dump('SPIP 3', count($codes['nok']['iso6393']), $codes['nok']['iso6393']);
if (isset($codes['nok']['spip'])) var_dump('SPIP 0', count($codes['nok']['spip']), $codes['nok']['spip']);
?>
</div>
</body>
</html>

167
inc/isocode_outils.php

@ -0,0 +1,167 @@
<?php
/**
* Ce fichier contient l'ensemble des fonctions implémentant l'API du plugin Codes de Langues.
*
* @package SPIP\ISOCODE\OUTILS
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Compare le sha passé en argument pour la table concernée avec le sha stocké dans la meta
* pour cette même table.
*
* @api
*
* @param string $sha
* @param string $table
*
* @return bool
*/
function isocode_comparer_sha($sha, $table) {
$sha_identique = false;
// On récupère le sha de la table dans les metas si il existe (ie. la table a été chargée)
include_spip('inc/config');
$sha_stocke = lire_config("isocode/tables/${table}/sha", '');
if ($sha_stocke and ($sha == $sha_stocke)) {
$sha_identique = true;
}
return $sha_identique;
}
/**
* @param string $service
* @param string $table
*
* @api
*
* @return array
*/
function isocode_read_file_csv($service, $table) {
// Initialisations
$records = array();
$sha_file = '';
$f_complete_record = "${table}_complete_by_record";
$f_complete_table = "${table}_complete_by_table";
// Inclusion des configurations et des fonctions spécifiques au service qui fournit les données
// de la table à remplir.
include_spip("services/${service}/${service}_api");
// Initialisations des données de configuration propre au service et à la table
$file_extension = $GLOBALS['isocode'][$service]['tables'][$table]['extension'];
$delimiter = $GLOBALS['isocode'][$service]['tables'][$table]['delimiter'];
$fields_config = $GLOBALS['isocode'][$service]['tables'][$table]['basic_fields'];
// Ouvrir le fichier des enregistrements de la table spécifiée.
$file = find_in_path("services/${service}/${table}${file_extension}");
if (file_exists($file) and ($sha_file = sha1_file($file))) {
// Lecture du fichier au format CSV comme un fichier texte sachant :
// - que le délimiteur de colonne est configuré pour chaque table
// - et qu'il n'y a jamais de caractère d'enclosure dans ces fichiers csv
$lines = file($file);
if ($lines) {
$headers = array();
foreach ($lines as $_number => $_line) {
$values = explode($delimiter, trim($_line, "\r\n"));
if ($_number == 0) {
// Stockage des noms de colonnes car la première ligne contient toujours le header
$headers = $values;
} else {
// Création de chaque enregistrement de la table
$fields = array();
foreach ($headers as $_cle => $_header) {
$fields[$fields_config[trim($_header)]] = isset($values[$_cle]) ? trim($values[$_cle]) : '';
}
// Si besoin on appelle une fonction pour chaque enregistrement afin de le compléter
if (function_exists($f_complete_record)) {
$fields = $f_complete_record($fields);
}
$records[] = $fields;
}
}
// Si besoin on appelle une fonction pour toute la table
if (function_exists($f_complete_table)) {
$records = $f_complete_table($records);
}
}
}
return array($records, $sha_file);
}
/**
* @param string $service
* @param string $table
* @param string $url
* @param string $record_delimiter
* @param string $field_regexp
* @param array $fields_config
*
* @return array
*/
function isocode_read_page_text($service, $table) {
// Initialisations
$records = array();
$sha_file = false;
$f_complete_record = "${table}_complete_by_record";
$f_complete_table = "${table}_complete_by_table";
// Inclusion des configurations et des fonctions spécifiques au service qui fournit les données
// de la table à remplir.
include_spip("services/${service}/${service}_api");
// Initialisations des données de configuration propre au service et à la table
$url = $GLOBALS['isocode'][$service]['tables'][$table]['url'];
$parsing_config = $GLOBALS['isocode'][$service]['tables'][$table]['parsing'];
$fields_config = $GLOBALS['isocode'][$service]['tables'][$table]['basic_fields'];
// Acquisition de la page sur le site de l'IANA
include_spip('inc/distant');
$options = array();
$flux = recuperer_url($url, $options);
if (!empty($flux['page'])) {
$elements = array();
// Chaque élément est identifié soit par un délimiteur, soit par une regexp suivant la méthode configurée.
if ($parsing_config['element']['method'] == 'explode') {
// On récupére donc un tableau des éléments à lire en utilisant la fonction explode
$elements = explode($parsing_config['element']['delimiter'], $flux['page']);
} else {
}
// Chaque champ est identifié par une regexp qui permet d'extraire le nom du champ et sa valeur dans deux tableaux
// distincts indexés de façon concomittante.
// C'est pour l'instant la seule méthode permise sur un élément.
foreach ($elements as $_element) {
if (preg_match_all($_element, $parsing_config['fields']['regexp'], $matches)) {
$fields = array();
foreach ($matches[1] as $_cle => $_header) {
$fields[$fields_config[trim($_header)]] = isset($matches[2][$_cle]) ? $matches[2][$_cle] : '';
}
// Si besoin on appelle une fonction pour chaque enregistrement afin de le compléter
if (function_exists($f_complete_record)) {
$fields = $f_complete_record($fields);
}
$records[] = $fields;
}
}
// Si besoin on appelle une fonction pour toute la table
if (function_exists($f_complete_table)) {
$records = $f_complete_table($records);
}
}
return array($records, $sha_file);
}

92
isocode_administrations.php

@ -0,0 +1,92 @@
<?php
/**
* Fichier gérant l'installation et la désinstallation du plugin Code de Langues
*
* @package SPIP\ISOCODE\ADMINISTRATION
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Fonction d'installation et de mise à jour du plugin.
* Le schéma du plugin est composé des tables `spip_iso639xxxx` et d'une configuration.
*
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
* @param string $version_cible
* Version du schéma de données (déclaré dans paquet.xml)
*
* @return void
**/
function isocode_upgrade($nom_meta_base_version, $version_cible) {
$maj = array();
// $config_defaut = configurer_isocode();
$maj['create'] = array(
array(
'maj_tables',
array(
'spip_iso639codes',
'spip_iso639names',
'spip_iso639macros',
'spip_iso639retirements',
'spip_iso639families',
'spip_iso15924scripts',
'spip_iso3166countries',
'spip_iana5646subtags'
)
),
// array('ecrire_config', 'isocode', $config_defaut)
);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
// Ajout systématique des données iso dans la base de données, quelque soit l'action en cours.
// Ces données n'étant pas modifiables, il n'y a pas de risque à recharger ces tables.
include_spip('isocode_fonctions');
// isocode_charger_tables();
}
/**
* Fonction de désinstallation du plugin.
*
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP.
*
* @return void
**/
function isocode_vider_tables($nom_meta_base_version) {
// Supprimer les tables ISO créées par le plugin
sql_drop_table('spip_iso639codes');
sql_drop_table('spip_iso639names');
sql_drop_table('spip_iso639macros');
sql_drop_table('spip_iso639retirements');
sql_drop_table('spip_iso639families');
sql_drop_table('spip_iso15924scripts');
sql_drop_table('spip_iso3166countries');
sql_drop_table('spip_iana5646subtags');
// Effacer la meta de configuration et de stockage du plugin
effacer_meta('isocode');
// Effacer la meta du schéma de la base
effacer_meta($nom_meta_base_version);
}
/**
* Initialise la configuration du plugin.
*
* @return array
* Le tableau de la configuration par défaut qui servira à initialiser la meta `isocode`.
*/
function configurer_isocode() {
$config = array();
return $config;
}

227
isocode_fonctions.php

@ -0,0 +1,227 @@
<?php
/**
* Ce fichier contient l'ensemble des fonctions implémentant l'API du plugin.
*
* @package SPIP\ISOCODE\API
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Charge tout ou partie des tables de codes ISO dans la base de données.
* Les tables sont regroupées par service.
*
* @api
* @filtre
* @uses iso_read_table()
* @uses iana_read_table()
*
* @param array $tables
* Tableau, par service, des tables à charger. Si le tableau est vide ou si la liste des tables
* d'un service donné est vide, l'ensemble des tables du ou des services concernés seront chargées.
* Les tables doivent être libellées sans le préfixe `spip_`.
* Les services disponibles actuellement sont `iso` et `iana`.
*
* @return bool
* `true` si le chargement a réussi, `false` sinon
*/
function isocode_charger_tables($tables = array()) {
$retour = true;
// Suivant le tableau fourni en argument, on détermine la liste exacte des tables à charger.
// Le cas où le service existe mais que la liste de tables associées est vide est traité dans
// la boucle des services ci-après.
if (!$tables) {
// Le tableau est vide : il faut charger toutes les tables de tous les services supportés.
$tables_a_charger = isocode_lister_tables();
} elseif (is_string($tables)) {
// L'argument n'est pas un tableau mais une chaine, on considère que l'appelant a demandé
// le chargement de toutes les tables du service identifié par cette chaine.
$tables_a_charger = isocode_lister_tables($tables);
} elseif (is_array($tables)) {
$cles = array_keys($tables);
if (is_numeric($cles[0])) {
// On traite le cas où le tableau est de la forme ('iso', 'iana')
// au lieu de ('iso' => array(...), 'iana' => array(...)).
$tables_a_charger = isocode_lister_tables($tables);
} else {
$tables_a_charger = $tables;
}
} else {
$tables_a_charger = array();
}
// On charge, service par service, chacune des tables spécifiées pour chaque service concerné.
// -- Pour éviter d'avoir une mise à jour bancale, il faudrait inclure les requêtes SQL dans
// une transaction ce qui n'est pas possible avec spip aujourd'hui.
// De fait, on ne peut pas assurer que si une erreur se produit le résultat soit cohérent et
// on renvoie juste l'erreur --
if ($tables_a_charger) {
include_spip('inc/config');
include_spip('inc/isocode_outils');
foreach ($tables_a_charger as $_service => $_tables) {
// Si le service est bien disponible on charge les tables concernées.
if (isocode_service_disponible($_service)) {
// Vérification et finalisation de la liste des tables à charger
if (!$_tables) {
// La liste des tables est vide : il faut charger toutes les tables du service concerné.
$_tables = isocode_lister_tables($_service);
} elseif (is_string($_tables)) {
// La liste des tables n'est pas un tableau mais une chaine, on considère la chaine est
// le nom de table à charger.
$_tables = array($_tables);
} elseif (!is_array($_tables)) {
// La liste des tables n'est ni une chaine ni un tableau : c'est une erreur.
$_tables = array();
}
if ($_tables) {
include_spip("services/${_service}/${_service}_api");
foreach ($_tables as $_table) {
// Détermination de la fonction de lecture de la table et lecture des données contenues
// soit dans un fichier soit dans une page web.
$lire_table = "isocode_read_{$GLOBALS['isocode'][$_service]['tables'][$_table]['populating']}";
list($records, $sha) = $lire_table($_service, $_table);
if ($records) {
// Suppression des éléments éventuels déjà chargés.
sql_delete("spip_${_table}");
// Insertion dans la base de données des éléments extraits
sql_insertq_multi("spip_${_table}", $records);
// On stocke les informations de chargement de la table dans une meta.
$meta = array(
'sha' => $sha,
'nbr' => count($records),
'maj' => date('Y-m-d H:i:s'));
ecrire_config("isocode/tables/${_table}", $meta);
}
}
}
}
}
}
return $retour;
}
function isocode_lister_services() {
$services = array();
if ($dossiers = glob(_DIR_PLUGIN_ISOCODE . '/services/*', GLOB_ONLYDIR)) {
foreach ($dossiers as $_dossier) {
$services[] = strtolower(basename($_dossier));
}
}
return $services;
}
function isocode_service_disponible($service) {
$autorisation = false;
if ($service and in_array(strtolower($service), isocode_lister_services())) {
$autorisation = true;
}
return $autorisation;
}
function isocode_lister_tables($services = array()) {
$tables = array();
// Si le tableau des services est vide c'est que l'on veut toutes les tables de tous
// les services disponibles.
// On accepte tous les cas où l'argument est vide sans être un tableau.
if (!$services) {
$services = isocode_lister_services();
}
// Si l'argument est non vide et est une chaine on considère que c'est un service et on le
// transforme en un tableau à un élément.
// Sinon c'est une erreur.
if (!is_array($services)) {
$services = is_string($services) ? array($services) : array();
}
// On collecte pour chaque service, la liste des tables qu'il supporte.
foreach ($services as $_service) {
if (isocode_service_disponible($_service)) {
include_spip("services/${_service}/${_service}_api");
$tables[$_service] = array_keys($GLOBALS['isocode'][$_service]['tables']);
}
}
return $tables;
}
function isocode_verifier_codes_spip() {
$codes_verifies = array();
include_spip('inc/lang_liste');
if ($GLOBALS['codes_langues']) {
foreach ($GLOBALS['codes_langues'] as $_code => $_nom) {
$from = array('spip_iso639codes');
$select = array('*');
if (strlen($_code) == 2) {
// Si le code a une taille de 2 caractères on recherche de suite dans la table iso639codes
// un élément dont le code ISO639-1 est égal.
$where = array('code_639_1=' . sql_quote($_code));
$codes_iso = sql_allfetsel($select, $from, $where);
if ($codes_iso) {
$codes_verifies['ok']['iso6391'][$_code] = $codes_iso;
} else {
$codes_verifies['nok']['iso6391'][$_code] = array('nom_spip' => $_nom);
}
} elseif (strlen($_code) == 3) {
// Si le code a une taille de 3 caractères on recherche :
// - dans la table iso639codes un élément dont le code ISO639-3 est égal.
// - et sinon dans la table iso639families un élément dont le code ISO639-5 est égal.
$where = array('code_639_3=' . sql_quote($_code));
$codes_iso = sql_allfetsel($select, $from, $where);
if ($codes_iso) {
$codes_verifies['ok']['iso6393'][$_code] = $codes_iso;
} else {
$where = array('code_639_5=' . sql_quote($_code));
$code_famille = sql_fetsel($select, array('spip_iso639families'), $where);
if ($code_famille) {
$codes_verifies['ok']['iso6395'][$_code] = array('nom_spip' => $_nom);
} else {
$codes_verifies['nok']['iso6393'][$_code] = array('nom_spip' => $_nom);
}
}
} else {
$codes_verifies['nok']['spip'][$_code] = array('nom_spip' => $_nom);
}
}
}
return $codes_verifies;
}
function isocode_verifier_iso639_5() {
$codes_verifies = array();
$codes_639_5 = sql_allfetsel('*', 'spip_iso639families');
if ($codes_639_5) {
foreach($codes_639_5 as $_code) {
if (sql_countsel('spip_iso639macros', 'code_639_3=' . sql_quote($_code['code_639_5']))) {
$codes_verifies['ok'][] = $_code['code_639_5'];
} else {
$codes_verifies['nok'][] = $_code['code_639_5'];
}
}
}
return $codes_verifies;
}

BIN
isocode_logo-64.png

After

Width: 64  |  Height: 64  |  Size: 5.2 KiB

15
lang/paquet-isocode_fr.php

@ -0,0 +1,15 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// B
'isocode_description' => 'Ce plugin installe la base des divers codes de langue ISO-639 et permet via une API dédiée de consulter les codes d\'un système ISO et aussi de faire la correspondance avec les étiquettes SPIP et de quelques autres services web.',
'isocode_nom' => 'Codes et étiquettes de Langue',
'isocode_slogan' => 'Comprendre les codes ISO et les étiquettes de langue'
);
?>

20
paquet.xml

@ -0,0 +1,20 @@
<paquet
prefix="isocode"
categorie="outil"
version="0.1.0"
etat="dev"
compatibilite="[3.1.0;3.2.*]"
logo="isocode_logo-64.png"
schema="1"
>
<nom>Codes ISO</nom>
<!-- Codes ISO pour les langues, les pays et autres objets -->
<auteur lien="http://blog.smellup.net/">Eric Lupinacci</auteur>
<licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL</licence>
<pipeline nom="declarer_tables_interfaces" inclure="base/isocode_declarations.php" />
<pipeline nom="declarer_tables_principales" inclure="base/isocode_declarations.php" />
</paquet>

45
services/iana/iana_api.php

@ -0,0 +1,45 @@
<?php
/**
* Ce fichier contient l'ensemble des constantes et fonctions implémentant les services IANA.
*
* @package SPIP\ISOCODE\SERVICES\IANA
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS['isocode']['iana']['tables'] = array(
'iana5646subtags' => array(
'basic_fields' => array(
'Type' => 'type',
'Subtag' => 'subtag',
'Description' => 'description',
'Added' => 'date_ref',
'Suppress-Script' => 'no_script',
'Scope' => 'scope',
'Macrolanguage' => 'macro_language',
'Deprecated' => 'deprecated',
'Preferred-Value' => 'preferred_tag',
'Prefix' => 'prefix',
'Comments' => 'comments',
),
'populating' => 'page_text',
'url' => 'http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry',
'parsing' => array(
'element' => array(
'method' => 'explode',
'delimiter' => '%%'
),
'field' => array(
'method' => 'regexp',
'regexp' => '%(\w+):\s+(.*)%i'
)
)
)
);
// ----------------------------------------------------------------------------
// ----------------- API du service ISO - Actions principales -----------------
// ----------------------------------------------------------------------------

183
services/iso/iso15924scripts.txt

@ -0,0 +1,183 @@
Code;N°;English Name;Nom français;PVA;Date
Adlm;166;Adlam;adlam;;2014-11-15
Afak;439;Afaka;afaka;;2010-12-21
Aghb;239;Caucasian Albanian;aghbanien;Caucasian_Albanian;2014-11-15
Ahom;338;Ahom, Tai Ahom;âhom;Ahom;2015-07-07
Arab;160;Arabic;arabe;Arabic;2004-05-01
Aran;161;Arabic (Nastaliq variant);arabe (variante nastalique);;2014-11-15
Armi;124;Imperial Aramaic;araméen impérial;Imperial_Aramaic;2009-06-01
Armn;230;Armenian;arménien;Armenian;2004-05-01
Avst;134;Avestan;avestique;Avestan;2009-06-01
Bali;360;Balinese;balinais;Balinese;2006-10-10
Bamu;435;Bamum;bamoum;Bamum;2009-06-01
Bass;259;Bassa Vah;bassa;Bassa_Vah;2014-11-15
Batk;365;Batak;batik;Batak;2010-07-23
Beng;325;Bengali;bengalî;Bengali;2004-05-01
Bhks;334;Bhaiksuki;bhaïksukî;;2015-07-15
Blis;550;Blissymbols;symboles Bliss;;2004-05-01
Bopo;285;Bopomofo;bopomofo;Bopomofo;2004-05-01
Brah;300;Brahmi;brahma;Brahmi;2010-07-23
Brai;570;Braille;braille;Braille;2004-05-01
Bugi;367;Buginese;bouguis;Buginese;2006-06-21
Buhd;372;Buhid;bouhide;Buhid;2004-05-01
Cakm;349;Chakma;chakma;Chakma;2012-02-06
Cans;440;Unified Canadian Aboriginal Syllabics;syllabaire autochtone canadien unifié;Canadian_Aboriginal;2004-05-29
Cari;201;Carian;carien;Carian;2007-07-02
Cham;358;Cham;cham (čam, tcham);Cham;2009-11-11
Cher;445;Cherokee;tchérokî;Cherokee;2004-05-01
Cirt;291;Cirth;cirth;;2004-05-01
Copt;204;Coptic;copte;Coptic;2006-06-21
Cprt;403;Cypriot;syllabaire chypriote;Cypriot;2004-05-01
Cyrl;220;Cyrillic;cyrillique;Cyrillic;2004-05-01
Cyrs;221;Cyrillic (Old Church Slavonic variant);cyrillique (variante slavonne);;2004-05-01
Deva;315;Devanagari (Nagari);dévanâgarî;Devanagari;2004-05-01
Dsrt;250;Deseret (Mormon);déseret (mormon);Deseret;2004-05-01
Dupl;755;Duployan shorthand, Duployan stenography;sténographie Duployé;Duployan;2014-11-15
Egyd;070;Egyptian demotic;démotique égyptien;;2004-05-01
Egyh;060;Egyptian hieratic;hiératique égyptien;;2004-05-01
Egyp;050;Egyptian hieroglyphs;hiéroglyphes égyptiens;Egyptian_Hieroglyphs;2009-06-01
Elba;226;Elbasan;elbasan;Elbasan;2014-11-15
Ethi;430;Ethiopic (Geʻez);éthiopien (geʻez, guèze);Ethiopic;2004-10-25
Geok;241;Khutsuri (Asomtavruli and Nuskhuri);khoutsouri (assomtavrouli et nouskhouri);Georgian;2012-10-16
Geor;240;Georgian (Mkhedruli);géorgien (mkhédrouli);Georgian;2004-05-29
Glag;225;Glagolitic;glagolitique;Glagolitic;2006-06-21
Goth;206;Gothic;gotique;Gothic;2004-05-01
Gran;343;Grantha;grantha;Grantha;2014-11-15
Grek;200;Greek;grec;Greek;2004-05-01
Gujr;320;Gujarati;goudjarâtî (gujrâtî);Gujarati;2004-05-01
Guru;310;Gurmukhi;gourmoukhî;Gurmukhi;2004-05-01
Hanb;503;Han with Bopomofo (alias for Han + Bopomofo);han avec bopomofo (alias pour han + bopomofo);;2016-01-19
Hang;286;Hangul (Hangŭl, Hangeul);hangûl (hangŭl, hangeul);Hangul;2004-05-29
Hani;500;Han (Hanzi, Kanji, Hanja);idéogrammes han (sinogrammes);Han;2009-02-23
Hano;371;Hanunoo (Hanunóo);hanounóo;Hanunoo;2004-05-29
Hans;501;Han (Simplified variant);idéogrammes han (variante simplifiée);;2004-05-29
Hant;502;Han (Traditional variant);idéogrammes han (variante traditionnelle);;2004-05-29
Hatr;127;Hatran;hatrénien;Hatran;2015-07-07
Hebr;125;Hebrew;hébreu;Hebrew;2004-05-01
Hira;410;Hiragana;hiragana;Hiragana;2004-05-01
Hluw;080;Anatolian Hieroglyphs (Luwian Hieroglyphs, Hittite Hieroglyphs);hiéroglyphes anatoliens (hiéroglyphes louvites, hiéroglyphes hittites);Anatolian_Hieroglyphs;2015-07-07
Hmng;450;Pahawh Hmong;pahawh hmong;Pahawh_Hmong;2014-11-15
Hrkt;412;Japanese syllabaries (alias for Hiragana + Katakana);syllabaires japonais (alias pour hiragana + katakana);Katakana_Or_Hiragana;2011-06-21
Hung;176;Old Hungarian (Hungarian Runic);runes hongroises (ancien hongrois);Old_Hungarian;2015-07-07
Inds;610;Indus (Harappan);indus;;2004-05-01
Ital;210;Old Italic (Etruscan, Oscan, etc.);ancien italique (étrusque, osque, etc.);Old_Italic;2004-05-29
Jamo;284;Jamo (alias for Jamo subset of Hangul);jamo (alias pour le sous-ensemble jamo du hangûl);;2016-01-19
Java;361;Javanese;javanais;Javanese;2009-06-01
Jpan;413;Japanese (alias for Han + Hiragana + Katakana);japonais (alias pour han + hiragana + katakana);;2006-06-21
Jurc;510;Jurchen;jurchen;;2010-12-21
Kali;357;Kayah Li;kayah li;Kayah_Li;2007-07-02
Kana;411;Katakana;katakana;Katakana;2004-05-01
Khar;305;Kharoshthi;kharochthî;Kharoshthi;2006-06-21
Khmr;355;Khmer;khmer;Khmer;2004-05-29
Khoj;322;Khojki;khojkî;Khojki;2014-11-15
Kitl;505;Khitan large script;grande écriture khitan;;2015-07-15
Kits;288;Khitan small script;petite écriture khitan;;2015-07-15
Knda;345;Kannada;kannara (canara);Kannada;2004-05-29
Kore;287;Korean (alias for Hangul + Han);coréen (alias pour hangûl + han);;2007-06-13
Kpel;436;Kpelle;kpèllé;;2010-03-26
Kthi;317;Kaithi;kaithî;Kaithi;2009-06-01
Lana;351;Tai Tham (Lanna);taï tham (lanna);Tai_Tham;2009-06-01
Laoo;356;Lao;laotien;Lao;2004-05-01
Latf;217;Latin (Fraktur variant);latin (variante brisée);;2004-05-01
Latg;216;Latin (Gaelic variant);latin (variante gaélique);;2004-05-01
Latn;215;Latin;latin;Latin;2004-05-01
Leke;364;Leke;léké;;2015-07-07
Lepc;335;Lepcha (Róng);lepcha (róng);Lepcha;2007-07-02
Limb;336;Limbu;limbou;Limbu;2004-05-29
Lina;400;Linear A;linéaire A;Linear_A;2014-11-15
Linb;401;Linear B;linéaire B;Linear_B;2004-05-29
Lisu;399;Lisu (Fraser);lisu (Fraser);Lisu;2009-06-01
Loma;437;Loma;loma;;2010-03-26
Lyci;202;Lycian;lycien;Lycian;2007-07-02
Lydi;116;Lydian;lydien;Lydian;2007-07-02
Mahj;314;Mahajani;mahâjanî;Mahajani;2014-11-15
Mand;140;Mandaic, Mandaean;mandéen;Mandaic;2010-07-23
Mani;139;Manichaean;manichéen;Manichaean;2014-11-15
Marc;332;Marchen;marchen;;2014-11-15
Maya;090;Mayan hieroglyphs;hiéroglyphes mayas;;2004-05-01
Mend;438;Mende Kikakui;mendé kikakui;Mende_Kikakui;2014-11-15
Merc;101;Meroitic Cursive;cursif méroïtique;Meroitic_Cursive;2012-02-06
Mero;100;Meroitic Hieroglyphs;hiéroglyphes méroïtiques;Meroitic_Hieroglyphs;2012-02-06
Mlym;347;Malayalam;malayâlam;Malayalam;2004-05-01
Modi;324;Modi, Moḍī;modî;Modi;2014-11-15
Mong;145;Mongolian;mongol;Mongolian;2004-05-01
Moon;218;Moon (Moon code, Moon script, Moon type);écriture Moon;;2006-12-11
Mroo;199;Mro, Mru;mro;Mro;2014-11-15
Mtei;337;Meitei Mayek (Meithei, Meetei);meitei mayek;Meetei_Mayek;2009-06-01
Mult;323;Multani;multanî;Multani;2015-07-07
Mymr;350;Myanmar (Burmese);birman;Myanmar;2004-05-01
Narb;106;Old North Arabian (Ancient North Arabian);nord-arabique;Old_North_Arabian;2014-11-15
Nbat;159;Nabataean;nabatéen;Nabataean;2014-11-15
Newa;333;Newa, Newar, Newari, Nepāla lipi;néwa, néwar, néwari, nepāla lipi;;2015-12-16
Nkgb;420;Nakhi Geba ('Na-'Khi ²Ggŏ-¹baw, Naxi Geba);nakhi géba;;2009-02-23
Nkoo;165;N’Ko;n’ko;Nko;2006-10-10
Nshu;499;Nüshu;nüshu;;2010-12-21
Ogam;212;Ogham;ogam;Ogham;2004-05-01
Olck;261;Ol Chiki (Ol Cemet’, Ol, Santali);ol tchiki;Ol_Chiki;2007-07-02
Orkh;175;Old Turkic, Orkhon Runic;orkhon;Old_Turkic;2009-06-01
Orya;327;Oriya;oriyâ;Oriya;2004-05-01
Osge;219;Osage;osage;;2014-11-15
Osma;260;Osmanya;osmanais;Osmanya;2004-05-01
Palm;126;Palmyrene;palmyrénien;Palmyrene;2014-11-15
Pauc;263;Pau Cin Hau;paou chin haou;Pau_Cin_Hau;2014-11-15
Perm;227;Old Permic;ancien permien;Old_Permic;2014-11-15
Phag;331;Phags-pa;’phags pa;Phags_Pa;2006-10-10
Phli;131;Inscriptional Pahlavi;pehlevi des inscriptions;Inscriptional_Pahlavi;2009-06-01
Phlp;132;Psalter Pahlavi;pehlevi des psautiers;Psalter_Pahlavi;2014-11-15
Phlv;133;Book Pahlavi;pehlevi des livres;;2007-07-15
Phnx;115;Phoenician;phénicien;Phoenician;2006-10-10
Plrd;282;Miao (Pollard);miao (Pollard);Miao;2012-02-06
Piqd;293;Klingon (KLI pIqaD);klingon (pIqaD du KLI);;2015-12-16
Prti;130;Inscriptional Parthian;parthe des inscriptions;Inscriptional_Parthian;2009-06-01
Qaaa;900;Reserved for private use (start);réservé à l’usage privé (début);;2004-05-29
Qabx;949;Reserved for private use (end);réservé à l’usage privé (fin);;2004-05-29
Rjng;363;Rejang (Redjang, Kaganga);redjang (kaganga);Rejang;2009-02-23
Roro;620;Rongorongo;rongorongo;;2004-05-01
Runr;211;Runic;runique;Runic;2004-05-01
Samr;123;Samaritan;samaritain;Samaritan;2009-06-01
Sara;292;Sarati;sarati;;2004-05-29
Sarb;105;Old South Arabian;sud-arabique, himyarite;Old_South_Arabian;2009-06-01
Saur;344;Saurashtra;saurachtra;Saurashtra;2007-07-02
Sgnw;095;SignWriting;SignÉcriture, SignWriting;SignWriting;2015-07-07
Shaw;281;Shavian (Shaw);shavien (Shaw);Shavian;2004-05-01
Shrd;319;Sharada, Śāradā;charada, shard;Sharada;2012-02-06
Sidd;302;Siddham, Siddhaṃ, Siddhamātṛkā;siddham;Siddham;2014-11-15
Sind;318;Khudawadi, Sindhi;khoudawadî, sindhî;Khudawadi;2014-11-15
Sinh;348;Sinhala;singhalais;Sinhala;2004-05-01
Sora;398;Sora Sompeng;sora sompeng;Sora_Sompeng;2012-02-06
Sund;362;Sundanese;sundanais;Sundanese;2007-07-02
Sylo;316;Syloti Nagri;sylotî nâgrî;Syloti_Nagri;2006-06-21
Syrc;135;Syriac;syriaque;Syriac;2004-05-01
Syre;138;Syriac (Estrangelo variant);syriaque (variante estranghélo);;2004-05-01
Syrj;137;Syriac (Western variant);syriaque (variante occidentale);;2004-05-01
Syrn;136;Syriac (Eastern variant);syriaque (variante orientale);;2004-05-01
Tagb;373;Tagbanwa;tagbanoua;Tagbanwa;2004-05-01
Takr;321;Takri, Ṭākrī, Ṭāṅkrī;tâkrî;Takri;2012-02-06
Tale;353;Tai Le;taï-le;Tai_Le;2004-10-25
Talu;354;New Tai Lue;nouveau taï-lue;New_Tai_Lue;2006-06-21
Taml;346;Tamil;tamoul;Tamil;2004-05-01
Tang;520;Tangut;tangoute;;2010-12-21
Tavt;359;Tai Viet;taï viêt;Tai_Viet;2009-06-01
Telu;340;Telugu;télougou;Telugu;2004-05-01
Teng;290;Tengwar;tengwar;;2004-05-01
Tfng;120;Tifinagh (Berber);tifinagh (berbère);Tifinagh;2006-06-21
Tglg;370;Tagalog (Baybayin, Alibata);tagal (baybayin, alibata);Tagalog;2009-02-23
Thaa;170;Thaana;thâna;Thaana;2004-05-01
Thai;352;Thai;thaï;Thai;2004-05-01
Tibt;330;Tibetan;tibétain;Tibetan;2004-05-01
Tirh;326;Tirhuta;tirhouta;Tirhuta;2014-11-15
Ugar;040;Ugaritic;ougaritique;Ugaritic;2004-05-01
Vaii;470;Vai;vaï;Vai;2007-07-02
Visp;280;Visible Speech;parole visible;;2004-05-01
Wara;262;Warang Citi (Varang Kshiti);warang citi;Warang_Citi;2014-11-15
Wole;480;Woleai;woléaï;;2010-12-21
Xpeo;030;Old Persian;cunéiforme persépolitain;Old_Persian;2006-06-21
Xsux;020;Cuneiform, Sumero-Akkadian;cunéiforme suméro-akkadien;Cuneiform;2006-10-10
Yiii;460;Yi;yi;Yi;2004-05-01
Zinh;994;Code for inherited script;codet pour écriture héritée;Inherited;2009-02-23
Zmth;995;Mathematical notation;notation mathématique;;2007-11-26
Zsye;993;Symbols (Emoji variant);symboles (variante émoji);;2015-12-16
Zsym;996;Symbols;symboles;;2007-11-26
Zxxx;997;Code for unwritten documents;codet pour les documents non écrits;;2011-06-21
Zyyy;998;Code for undetermined script;codet pour écriture indéterminée;Common;2004-05-29
Zzzz;999;Code for uncoded script;codet pour écriture non codée;Unknown;2006-10-10

250
services/iso/iso3166countries.txt

@ -0,0 +1,250 @@
English name;French name;Alpha-2;Alpha-3;Numeric
Afghanistan;Afghanistan (l');AF;AFG;004
Åland Islands;Åland(les Îles);AX;ALA;248
Albania;Albanie (l');AL;ALB;008
Algeria;Algérie (l');DZ;DZA;012
American Samoa;Samoa américaines (les);AS;ASM;016
Andorra;Andorre (l');AD;AND;020
Angola;Angola (l');AO;AGO;024
Anguilla;Anguilla;AI;AIA;660
Antarctica;Antarctique (l');AQ;ATA;010
Antigua and Barbuda;Antigua-et-Barbuda;AG;ATG;028
Argentina;Argentine (l');AR;ARG;032
Armenia;Arménie (l');AM;ARM;051
Aruba;Aruba;AW;ABW;533
Australia;Australie (l');AU;AUS;036
Austria;Autriche (l');AT;AUT;040
Azerbaijan;Azerbaïdjan (l');AZ;AZE;031
Bahamas (the);Bahamas (les);BS;BHS;044
Bahrain;Bahreïn;BH;BHR;048
Bangladesh;Bangladesh (le);BD;BGD;050
Barbados;Barbade (la);BB;BRB;052
Belarus;Bélarus (le);BY;BLR;112
Belgium;Belgique (la);BE;BEL;056
Belize;Belize (le);BZ;BLZ;084
Benin;Bénin (le);BJ;BEN;204
Bermuda;Bermudes (les);BM;BMU;060
Bhutan;Bhoutan (le);BT;BTN;064
Bolivia (Plurinational State of);Bolivie (État plurinational de);BO;BOL;068
Bonaire, Sint Eustatius and Saba;Bonaire, Saint-Eustache et Saba;BQ;BES;535
Bosnia and Herzegovina;Bosnie-Herzégovine (la);BA;BIH;070
Botswana;Botswana (le);BW;BWA;072
Bouvet Island;Bouvet (l'Île);BV;BVT;074
Brazil;Brésil (le);BR;BRA;076
British Indian Ocean Territory (the);Indien (le Territoire britannique de l'océan);IO;IOT;086
Brunei Darussalam;Brunéi Darussalam (le);BN;BRN;096
Bulgaria;Bulgarie (la);BG;BGR;100
Burkina Faso;Burkina Faso (le);BF;BFA;854
Burundi;Burundi (le);BI;BDI;108
Cabo Verde;Cabo Verde;CV;CPV;132
Cambodia;Cambodge (le);KH;KHM;116
Cameroon;Cameroun (le);CM;CMR;120
Canada;Canada (le);CA;CAN;124
Cayman Islands (the);Caïmans (les Îles);KY;CYM;136
Central African Republic (the);République centrafricaine (la);CF;CAF;140
Chad;Tchad (le);TD;TCD;148
Chile;Chili (le);CL;CHL;152
China;Chine (la);CN;CHN;156
Christmas Island;Christmas (l'Île);CX;CXR;162
Cocos (Keeling) Islands (the);Cocos (les Îles)/ Keeling (les Îles);CC;CCK;166
Colombia;Colombie (la);CO;COL;170
Comoros (the);Comores (les);KM;COM;174
Congo (the Democratic Republic of the);Congo (la République démocratique du);CD;COD;180
Congo (the);Congo (le);CG;COG;178
Cook Islands (the);Cook (les Îles);CK;COK;184
Costa Rica;Costa Rica (le);CR;CRI;188
Côte d'Ivoire;Côte d'Ivoire (la);CI;CIV;384
Croatia;Croatie (la);HR;HRV;191
Cuba;Cuba;CU;CUB;192
Curaçao;Curaçao;CW;CUW;531
Cyprus;Chypre;CY;CYP;196
Czech Republic (the);tchèque (la République);CZ;CZE;203
Denmark;Danemark (le);DK;DNK;208
Djibouti;Djibouti;DJ;DJI;262
Dominica;Dominique (la);DM;DMA;212
Dominican Republic (the);dominicaine (la République);DO;DOM;214
Ecuador;Équateur (l');EC;ECU;218
Egypt;Égypte (l');EG;EGY;818
El Salvador;El Salvador;SV;SLV;222
Equatorial Guinea;Guinée équatoriale (la);GQ;GNQ;226
Eritrea;Érythrée (l');ER;ERI;232
Estonia;Estonie (l');EE;EST;233
Ethiopia;Éthiopie (l');ET;ETH;231
Falkland Islands (the) [Malvinas];Falkland (les Îles)/Malouines (les Îles);FK;FLK;238
Faroe Islands (the);Féroé (les Îles);FO;FRO;234
Fiji;Fidji (les);FJ;FJI;242
Finland;Finlande (la);FI;FIN;246
France;France (la);FR;FRA;250
French Guiana;Guyane française (la );GF;GUF;254
French Polynesia;Polynésie française (la);PF;PYF;258
French Southern Territories (the);Terres australes françaises (les);TF;ATF;260
Gabon;Gabon (le);GA;GAB;266
Gambia (the);Gambie (la);GM;GMB;270
Georgia;Géorgie (la);GE;GEO;268
Germany;Allemagne (l');DE;DEU;276
Ghana;Ghana (le);GH;GHA;288
Gibraltar;Gibraltar;GI;GIB;292
Greece;Grèce (la);GR;GRC;300
Greenland;Groenland (le);GL;GRL;304
Grenada;Grenade (la);GD;GRD;308
Guadeloupe;Guadeloupe (la);GP;GLP;312
Guam;Guam;GU;GUM;316
Guatemala;Guatemala (le);GT;GTM;320
Guernsey;Guernesey;GG;GGY;831
Guinea;Guinée (la);GN;GIN;324
Guinea-Bissau;Guinée-Bissau (la);GW;GNB;624
Guyana;Guyana (le);GY;GUY;328
Haiti;Haïti;HT;HTI;332
Heard Island and McDonald Islands;Heard-et-Îles MacDonald (l'Île);HM;HMD;334
Holy See (the);Saint-Siège (le);VA;VAT;336
Honduras;Honduras (le);HN;HND;340
Hong Kong;Hong Kong;HK;HKG;344
Hungary;Hongrie (la);HU;HUN;348
Iceland;Islande (l');IS;ISL;352
India;Inde (l');IN;IND;356
Indonesia;Indonésie (l');ID;IDN;360
Iran (Islamic Republic of);Iran (République Islamique d');IR;IRN;364
Iraq;Iraq (l');IQ;IRQ;368
Ireland;Irlande (l');IE;IRL;372
Isle of Man;Île de Man;IM;IMN;833
Israel;Israël;IL;ISR;376
Italy;Italie (l');IT;ITA;380
Jamaica;Jamaïque (la);JM;JAM;388
Japan;Japon (le);JP;JPN;392
Jersey;Jersey;JE;JEY;832
Jordan;Jordanie (la);JO;JOR;400
Kazakhstan;Kazakhstan (le);KZ;KAZ;398
Kenya;Kenya (le);KE;KEN;404
Kiribati;Kiribati;KI;KIR;296
Korea (the Democratic People's Republic of);Corée (la République populaire démocratique de);KP;PRK;408
Korea (the Republic of);Corée (la République de);KR;KOR;410
Kuwait;Koweït (le);KW;KWT;414
Kyrgyzstan;Kirghizistan (le);KG;KGZ;417
Lao People's Democratic Republic (the);Lao, République démocratique populaire;LA;LAO;418
Latvia;Lettonie (la);LV;LVA;428
Lebanon;Liban (le);LB;LBN;422
Lesotho;Lesotho (le);LS;LSO;426
Liberia;Libéria (le);LR;LBR;430
Libya;Libye (la);LY;LBY;434
Liechtenstein;Liechtenstein (le);LI;LIE;438
Lithuania;Lituanie (la);LT;LTU;440
Luxembourg;Luxembourg (le);LU;LUX;442
Macao;Macao;MO;MAC;446
Macedonia (the former Yugoslav Republic of);Macédoine (l'ex‑République yougoslave de);MK;MKD;807
Madagascar;Madagascar;MG;MDG;450
Malawi;Malawi (le);MW;MWI;454
Malaysia;Malaisie (la);MY;MYS;458
Maldives;Maldives (les);MV;MDV;462
Mali;Mali (le);ML;MLI;466
Malta;Malte;MT;MLT;470
Marshall Islands (the);Marshall (Îles);MH;MHL;584
Martinique;Martinique (la);MQ;MTQ;474
Mauritania;Mauritanie (la);MR;MRT;478
Mauritius;Maurice;MU;MUS;480
Mayotte;Mayotte;YT;MYT;175
Mexico;Mexique (le);MX;MEX;484
Micronesia (Federated States of);Micronésie (États fédérés de);FM;FSM;583
Moldova (the Republic of);Moldova , République de;MD;MDA;498
Monaco;Monaco;MC;MCO;492
Mongolia;Mongolie (la);MN;MNG;496
Montenegro;Monténégro (le);ME;MNE;499
Montserrat;Montserrat;MS;MSR;500
Morocco;Maroc (le);MA;MAR;504
Mozambique;Mozambique (le);MZ;MOZ;508
Myanmar;Myanmar (le);MM;MMR;104
Namibia;Namibie (la);NA;NAM;516
Nauru;Nauru;NR;NRU;520
Nepal;Népal (le);NP;NPL;524
Netherlands (the);Pays-Bas (les);NL;NLD;528
New Caledonia;Nouvelle-Calédonie (la);NC;NCL;540
New Zealand;Nouvelle-Zélande (la);NZ;NZL;554
Nicaragua;Nicaragua (le);NI;NIC;558
Niger (the);Niger (le);NE;NER;562
Nigeria;Nigéria (le);NG;NGA;566
Niue;Niue;NU;NIU;570
Norfolk Island;Norfolk (l'Île);NF;NFK;574
Northern Mariana Islands (the);Mariannes du Nord (les Îles);MP;MNP;580
Norway;Norvège (la);NO;NOR;578
Oman;Oman;OM;OMN;512
Pakistan;Pakistan (le);PK;PAK;586
Palau;Palaos (les);PW;PLW;585
Palestine, State of;Palestine, État de;PS;PSE;275
Panama;Panama (le);PA;PAN;591
Papua New Guinea;Papouasie-Nouvelle-Guinée (la);PG;PNG;598
Paraguay;Paraguay (le);PY;PRY;600
Peru;Pérou (le);PE;PER;604
Philippines (the);Philippines (les);PH;PHL;608
Pitcairn;Pitcairn;PN;PCN;612
Poland;Pologne (la);PL;POL;616
Portugal;Portugal (le);PT;PRT;620
Puerto Rico;Porto Rico;PR;PRI;630
Qatar;Qatar (le);QA;QAT;634
Réunion;Réunion (La);RE;REU;638
Romania;Roumanie (la);RO;ROU;642
Russian Federation (the);Russie (la Fédération de);RU;RUS;643
Rwanda;Rwanda (le);RW;RWA;646
Saint Barthélemy;Saint-Barthélemy;BL;BLM;652
Saint Helena, Ascension and Tristan da Cunha;Sainte-Hélène, Ascension et Tristan da Cunha;SH;SHN;654
Saint Kitts and Nevis;Saint-Kitts-et-Nevis;KN;KNA;659
Saint Lucia;Sainte-Lucie;LC;LCA;662
Saint Martin (French part);Saint-Martin (partie française);MF;MAF;663
Saint Pierre and Miquelon;Saint-Pierre-et-Miquelon;PM;SPM;666
Saint Vincent and the Grenadines;Saint-Vincent-et-les Grenadines;VC;VCT;670
Samoa;Samoa (le);WS;WSM;882
San Marino;Saint-Marin;SM;SMR;674
Sao Tome and Principe;Sao Tomé-et-Principe;ST;STP;678
Saudi Arabia;Arabie saoudite (l');SA;SAU;682
Senegal;Sénégal (le);SN;SEN;686
Serbia;Serbie (la);RS;SRB;688
Seychelles;Seychelles (les);SC;SYC;690
Sierra Leone;Sierra Leone (la);SL;SLE;694
Singapore;Singapour;SG;SGP;702
Sint Maarten (Dutch part);Saint-Martin (partie néerlandaise);SX;SXM;534
Slovakia;Slovaquie (la);SK;SVK;703
Slovenia;Slovénie (la);SI;SVN;705
Solomon Islands;Salomon (Îles);SB;SLB;090
Somalia;Somalie (la);SO;SOM;706
South Africa;Afrique du Sud (l');ZA;ZAF;710
South Georgia and the South Sandwich Islands;Géorgie du Sud-et-les Îles Sandwich du Sud (la);GS;SGS;239
South Sudan;Soudan du Sud (le);SS;SSD;728
Spain;Espagne (l');ES;ESP;724
Sri Lanka;Sri Lanka;LK;LKA;144
Sudan (the);Soudan (le);SD;SDN;729
Suriname;Suriname (le);SR;SUR;740
Svalbard and Jan Mayen;Svalbard et l'Île Jan Mayen (le);SJ;SJM;744
Swaziland;Swaziland (le);SZ;SWZ;748
Sweden;Suède (la);SE;SWE;752
Switzerland;Suisse (la);CH;CHE;756
Syrian Arab Republic;République arabe syrienne (la);SY;SYR;760
Taiwan (Province of China);Taïwan (Province de Chine);TW;TWN;158
Tajikistan;Tadjikistan (le);TJ;TJK;762
Tanzania, United Republic of;Tanzanie, République-Unie de;TZ;TZA;834
Thailand;Thaïlande (la);TH;THA;764
Timor-Leste;Timor-Leste (le);TL;TLS;626
Togo;Togo (le);TG;TGO;768
Tokelau;Tokelau (les);TK;TKL;772
Tonga;Tonga (les);TO;TON;776
Trinidad and Tobago;Trinité-et-Tobago (la);TT;TTO;780
Tunisia;Tunisie (la);TN;TUN;788
Turkey;Turquie (la);TR;TUR;792
Turkmenistan;Turkménistan (le);TM;TKM;795
Turks and Caicos Islands (the);Turks-et-Caïcos (les Îles);TC;TCA;796
Tuvalu;Tuvalu (les);TV;TUV;798
Uganda;Ouganda (l');UG;UGA;800
Ukraine;Ukraine (l');UA;UKR;804
United Arab Emirates (the);Émirats arabes unis (les);AE;ARE;784
United Kingdom of Great Britain and Northern Ireland (the);Royaume-Uni de Grande-Bretagne et d'Irlande du Nord (le);GB;GBR;826
United States Minor Outlying Islands (the);Îles mineures éloignées des États-Unis (les);UM;UMI;581
United States of America (the);États-Unis d'Amérique (les);US;USA;840
Uruguay;Uruguay (l');UY;URY;858
Uzbekistan;Ouzbékistan (l');UZ;UZB;860
Vanuatu;Vanuatu (le);VU;VUT;548
Venezuela (Bolivarian Republic of);Venezuela (République bolivarienne du);VE;VEN;862
Viet Nam;Viet Nam (le);VN;VNM;704
Virgin Islands (British);Vierges britanniques (les Îles);VG;VGB;092
Virgin Islands (U.S.);Vierges des États-Unis (les Îles);VI;VIR;850
Wallis and Futuna;Wallis-et-Futuna;WF;WLF;876
Western Sahara*;Sahara occidental (le)*;EH;ESH;732
Yemen;Yémen (le);YE;YEM;887
Zambia;Zambie (la);ZM;ZMB;894
Zimbabwe;Zimbabwe (le);ZW;ZWE;716

7848
services/iso/iso639codes.tab
File diff suppressed because it is too large
View File

116
services/iso/iso639families.tab

@ -0,0 +1,116 @@
URI code Label (English) Label (French)
http://id.loc.gov/vocabulary/iso639-5/aav aav Austro-Asiatic languages austro-asiatiques, langues
http://id.loc.gov/vocabulary/iso639-5/afa afa Afro-Asiatic languages afro-asiatiques, langues
http://id.loc.gov/vocabulary/iso639-5/alg alg Algonquian languages algonquines, langues
http://id.loc.gov/vocabulary/iso639-5/alv alv Atlantic-Congo languages atlantique-congo, langues
http://id.loc.gov/vocabulary/iso639-5/apa apa Apache languages apaches, langues
http://id.loc.gov/vocabulary/iso639-5/aqa aqa Alacalufan languages alacalufanes, langues
http://id.loc.gov/vocabulary/iso639-5/aql aql Algic languages algiques, langues
http://id.loc.gov/vocabulary/iso639-5/art art Artificial languages artificielles, langues
http://id.loc.gov/vocabulary/iso639-5/ath ath Athapascan languages athapascanes, langues
http://id.loc.gov/vocabulary/iso639-5/auf auf Arauan languages arauanes, langues
http://id.loc.gov/vocabulary/iso639-5/aus aus Australian languages australiennes, langues
http://id.loc.gov/vocabulary/iso639-5/awd awd Arawakan languages arawak, langues
http://id.loc.gov/vocabulary/iso639-5/azc azc Uto-Aztecan languages uto-aztèques, langues
http://id.loc.gov/vocabulary/iso639-5/bad bad Banda languages banda, langues
http://id.loc.gov/vocabulary/iso639-5/bai bai Bamileke languages bamiléké, langues
http://id.loc.gov/vocabulary/iso639-5/bat bat Baltic languages baltes, langues
http://id.loc.gov/vocabulary/iso639-5/ber ber Berber languages berbères, langues
http://id.loc.gov/vocabulary/iso639-5/bih bih Bihari languages langues biharis
http://id.loc.gov/vocabulary/iso639-5/bnt bnt Bantu languages bantou, langues
http://id.loc.gov/vocabulary/iso639-5/btk btk Batak languages batak, langues
http://id.loc.gov/vocabulary/iso639-5/cai cai Central American Indian languages amérindiennes de l'Amérique centrale, langues
http://id.loc.gov/vocabulary/iso639-5/cau cau Caucasian languages caucasiennes, langues
http://id.loc.gov/vocabulary/iso639-5/cba cba Chibchan languages chibcha, langues
http://id.loc.gov/vocabulary/iso639-5/ccn ccn North Caucasian languages caucasiennes du Nord, langues
http://id.loc.gov/vocabulary/iso639-5/ccs ccs South Caucasian languages caucasiennes du Sud, langues
http://id.loc.gov/vocabulary/iso639-5/cdc cdc Chadic languages tchadiques, langues
http://id.loc.gov/vocabulary/iso639-5/cdd cdd Caddoan languages caddoanes, langues
http://id.loc.gov/vocabulary/iso639-5/cel cel Celtic languages celtiques, langues; celtes, langues
http://id.loc.gov/vocabulary/iso639-5/cmc cmc Chamic languages chames, langues
http://id.loc.gov/vocabulary/iso639-5/cpe cpe Creoles and pidgins, English‑based créoles et pidgins basés sur l'anglais
http://id.loc.gov/vocabulary/iso639-5/cpf cpf Creoles and pidgins, French‑based créoles et pidgins basés sur le français
http://id.loc.gov/vocabulary/iso639-5/cpp cpp Creoles and pidgins, Portuguese-based créoles et pidgins basés sur le portugais
http://id.loc.gov/vocabulary/iso639-5/crp crp Creoles and pidgins créoles et pidgins
http://id.loc.gov/vocabulary/iso639-5/csu csu Central Sudanic languages soudaniques centrales, langues
http://id.loc.gov/vocabulary/iso639-5/cus cus Cushitic languages couchitiques, langues
http://id.loc.gov/vocabulary/iso639-5/day day Land Dayak languages dayak, langues
http://id.loc.gov/vocabulary/iso639-5/dmn dmn Mande languages mandé, langues
http://id.loc.gov/vocabulary/iso639-5/dra dra Dravidian languages dravidiennes, langues
http://id.loc.gov/vocabulary/iso639-5/egx egx Egyptian languages égyptiennes, langues
http://id.loc.gov/vocabulary/iso639-5/esx esx Eskimo-Aleut languages esquimaudes-aléoutiennes, langues
http://id.loc.gov/vocabulary/iso639-5/euq euq Basque (family) basque (famille)
http://id.loc.gov/vocabulary/iso639-5/fiu fiu Finno-Ugrian languages finno-ougriennes, langues
http://id.loc.gov/vocabulary/iso639-5/fox fox Formosan languages formosanes, langues
http://id.loc.gov/vocabulary/iso639-5/gem gem Germanic languages germaniques, langues
http://id.loc.gov/vocabulary/iso639-5/gme gme East Germanic languages germaniques orientales, langues
http://id.loc.gov/vocabulary/iso639-5/gmq gmq North Germanic languages germaniques septentrionales, langues
http://id.loc.gov/vocabulary/iso639-5/gmw gmw West Germanic languages germaniques occidentales, langues
http://id.loc.gov/vocabulary/iso639-5/grk grk Greek languages grecques, langues
http://id.loc.gov/vocabulary/iso639-5/hmx hmx Hmong-Mien languages hmong-mien, langues
http://id.loc.gov/vocabulary/iso639-5/hok hok Hokan languages hoka, langues
http://id.loc.gov/vocabulary/iso639-5/hyx hyx Armenian (family) arménien (famille)
http://id.loc.gov/vocabulary/iso639-5/iir iir Indo-Iranian languages indo-iraniennes, langues
http://id.loc.gov/vocabulary/iso639-5/ijo ijo Ijo languages ijo, langues
http://id.loc.gov/vocabulary/iso639-5/inc inc Indic languages indo-aryennes, langues
http://id.loc.gov/vocabulary/iso639-5/ine ine Indo-European languages indo-européennes, langues
http://id.loc.gov/vocabulary/iso639-5/ira ira Iranian languages iraniennes, langues
http://id.loc.gov/vocabulary/iso639-5/iro iro Iroquoian languages iroquoises, langues
http://id.loc.gov/vocabulary/iso639-5/itc itc Italic languages italiques, langues
http://id.loc.gov/vocabulary/iso639-5/jpx jpx Japanese (family) japonais (famille)
http://id.loc.gov/vocabulary/iso639-5/kar kar Karen languages karen, langues
http://id.loc.gov/vocabulary/iso639-5/kdo kdo Kordofanian languages kordofaniennes, langues
http://id.loc.gov/vocabulary/iso639-5/khi khi Khoisan languages khoïsan, langues
http://id.loc.gov/vocabulary/iso639-5/kro kro Kru languages krou, langues
http://id.loc.gov/vocabulary/iso639-5/map map Austronesian languages austronésiennes, langues
http://id.loc.gov/vocabulary/iso639-5/mkh mkh Mon-Khmer languages môn-khmer, langues
http://id.loc.gov/vocabulary/iso639-5/mno mno Manobo languages manobo, langues
http://id.loc.gov/vocabulary/iso639-5/mun mun Munda languages mounda, langues
http://id.loc.gov/vocabulary/iso639-5/myn myn Mayan languages maya, langues
http://id.loc.gov/vocabulary/iso639-5/nah nah Nahuatl languages nahuatl, langues
http://id.loc.gov/vocabulary/iso639-5/nai nai North American Indian languages nord-amérindiennes, langues
http://id.loc.gov/vocabulary/iso639-5/ngf ngf Trans-New Guinea languages trans-nouvelle-guinée, langues
http://id.loc.gov/vocabulary/iso639-5/nic nic Niger-Kordofanian languages nigéro-kordofaniennes, langues
http://id.loc.gov/vocabulary/iso639-5/nub nub Nubian languages nubiennes, langues
http://id.loc.gov/vocabulary/iso639-5/omq omq Oto-Manguean languages otomangue, langues
http://id.loc.gov/vocabulary/iso639-5/omv omv Omotic languages omotiques, langues
http://id.loc.gov/vocabulary/iso639-5/oto oto Otomian languages otomi, langues
http://id.loc.gov/vocabulary/iso639-5/paa paa Papuan languages papoues, langues
http://id.loc.gov/vocabulary/iso639-5/phi phi Philippine languages philippines, langues
http://id.loc.gov/vocabulary/iso639-5/plf plf Central Malayo-Polynesian languages malayo-polynésiennes centrales, langues
http://id.loc.gov/vocabulary/iso639-5/poz poz Malayo-Polynesian languages malayo-polynésiennes, langues
http://id.loc.gov/vocabulary/iso639-5/pqe pqe Eastern Malayo-Polynesian languages malayo-polynésiennes orientales, langues
http://id.loc.gov/vocabulary/iso639-5/pqw pqw Western Malayo-Polynesian languages malayo-polynésiennes occidentales, langues
http://id.loc.gov/vocabulary/iso639-5/pra pra Prakrit languages prâkrit, langues
http://id.loc.gov/vocabulary/iso639-5/qwe qwe Quechuan (family) quechua (famille)
http://id.loc.gov/vocabulary/iso639-5/roa roa Romance languages romanes, langues
http://id.loc.gov/vocabulary/iso639-5/sai sai South American Indian languages sud-amérindiennes, langues
http://id.loc.gov/vocabulary/iso639-5/sal sal Salishan languages salishennes, langues
http://id.loc.gov/vocabulary/iso639-5/sdv sdv Eastern Sudanic languages soudaniques orientales, langues
http://id.loc.gov/vocabulary/iso639-5/sem sem Semitic languages sémitiques, langues
http://id.loc.gov/vocabulary/iso639-5/sgn sgn sign languages langues des signes
http://id.loc.gov/vocabulary/iso639-5/sio sio Siouan languages sioux, langues
http://id.loc.gov/vocabulary/iso639-5/sit sit Sino-Tibetan languages sino-tibétaines, langues
http://id.loc.gov/vocabulary/iso639-5/sla sla Slavic languages slaves, langues
http://id.loc.gov/vocabulary/iso639-5/smi smi Sami languages sames, langues
http://id.loc.gov/vocabulary/iso639-5/son son Songhai languages songhai, langues
http://id.loc.gov/vocabulary/iso639-5/sqj sqj Albanian languages albanaises, langues
http://id.loc.gov/vocabulary/iso639-5/ssa ssa Nilo-Saharan languages nilo-sahariennes, langues
http://id.loc.gov/vocabulary/iso639-5/syd syd Samoyedic languages samoyèdes, langues
http://id.loc.gov/vocabulary/iso639-5/tai tai Tai languages tai, langues
http://id.loc.gov/vocabulary/iso639-5/tbq tbq Tibeto-Burman languages tibéto-birmanes, langues
http://id.loc.gov/vocabulary/iso639-5/trk trk Turkic languages turques, langues
http://id.loc.gov/vocabulary/iso639-5/tup tup Tupi languages tupi, langues
http://id.loc.gov/vocabulary/iso639-5/tut tut Altaic languages altaïques, langues
http://id.loc.gov/vocabulary/iso639-5/tuw tuw Tungus languages toungouses, langues
http://id.loc.gov/vocabulary/iso639-5/urj urj Uralic languages ouraliennes, langues
http://id.loc.gov/vocabulary/iso639-5/wak wak Wakashan languages wakashanes, langues
http://id.loc.gov/vocabulary/iso639-5/wen wen Sorbian languages sorabes, langues
http://id.loc.gov/vocabulary/iso639-5/xgn xgn Mongolian languages mongoles, langues
http://id.loc.gov/vocabulary/iso639-5/xnd xnd Na-Dene languages na-déné, langues
http://id.loc.gov/vocabulary/iso639-5/ypk ypk Yupik languages yupik, langues
http://id.loc.gov/vocabulary/iso639-5/zhx zhx Chinese (family) chinois (famille)
http://id.loc.gov/vocabulary/iso639-5/zle zle East Slavic languages slaves orientales, langues
http://id.loc.gov/vocabulary/iso639-5/zls zls South Slavic languages slaves méridionales, langues
http://id.loc.gov/vocabulary/iso639-5/zlw zlw West Slavic languages slaves occidentales, langues
http://id.loc.gov/vocabulary/iso639-5/znd znd Zande languages zandé, langues

449
services/iso/iso639macros.tab

@ -0,0 +1,449 @@
M_Id I_Id I_Status
aka fat A
aka twi A
ara aao A
ara abh A
ara abv A
ara acm A
ara acq A
ara acw A
ara acx A
ara acy A
ara adf A
ara aeb A
ara aec A
ara afb A
ara ajp A
ara apc A
ara apd A
ara arb A
ara arq A
ara ars A
ara ary A
ara arz A
ara auz A
ara avl A
ara ayh A
ara ayl A
ara ayn A
ara ayp A
ara bbz A
ara pga A
ara shu A
ara ssh A
aym ayc A
aym ayr A
aze azb A
aze azj A
bal bcc A
bal bgn A
bal bgp A
bik bcl A
bik bhk R
bik bln A
bik bto A
bik cts A
bik fbl A
bik lbl A
bik rbl A
bik ubl A
bnc ebk A
bnc lbk A
bnc obk A
bnc rbk A
bnc vbk A
bua bxm A
bua bxr A
bua bxu A
chm mhr A
chm mrj A
cre crj A
cre crk A
cre crl A
cre crm A
cre csw A
cre cwd A
del umu A
del unm A
den scs A
den xsl A
din dib A
din dik A
din dip A
din diw A
din dks A
doi dgo A
doi xnr A
est ekk A
est vro A
fas pes A
fas prs A
ful ffm A
ful fub A
ful fuc A
ful fue A
ful fuf A
ful fuh A
ful fui A
ful fuq A
ful fuv A
gba bdt A
gba gbp A
gba gbq A
gba gmm A
gba gso A
gba gya A
gba mdo R
gon ggo R
gon gno A
grb gbo A
grb gec A
grb grj A
grb grv A
grb gry A
grn gnw A
grn gug A
grn gui A
grn gun A
grn nhd A
hai hax A
hai hdn A
hbs bos A
hbs hrv A
hbs srp A
hmn blu R
hmn cqd A
hmn hea A
hmn hma A
hmn hmc A
hmn hmd A
hmn hme A
hmn hmg A
hmn hmh A
hmn hmi A
hmn hmj A
hmn hml A
hmn hmm A
hmn hmp A
hmn hmq A
hmn hms A
hmn hmw A
hmn hmy A
hmn hmz A
hmn hnj A
hmn hrm A
hmn huj A
hmn mmr A
hmn muq A
hmn mww A
hmn sfm A
iku ike A
iku ikt A
ipk esi A
ipk esk A
jrb ajt A
jrb aju A
jrb jye A
jrb yhd A
jrb yud A
kau kby A
kau knc A
kau krt A
kln enb A
kln eyo A
kln niq A
kln oki A
kln pko A
kln sgc A
kln spy A
kln tec A
kln tuy A
kok gom A
kok knn A
kom koi A
kom kpv A
kon kng A
kon kwy A
kon ldi A
kpe gkp A
kpe xpe A
kur ckb A
kur kmr A
kur sdh A
lah hnd A
lah hno A
lah jat A
lah phr A
lah pmu R
lah pnb A
lah skr A
lah xhe A
lav ltg A
lav lvs A
luy bxk A
luy ida A
luy lkb A
luy lko A
luy lks A
luy lri A
luy lrm A
luy lsm A
luy lto A
luy lts A
luy lwg A
luy nle A
luy nyd A
luy rag A
man emk A
man mku A
man mlq A
man mnk A
man msc A
man mwk A
man myq R
mlg bhr A
mlg bjq R
mlg bmm A
mlg bzc A
mlg msh A
mlg plt A
mlg skg A
mlg tdx A
mlg tkg A
mlg txy A
mlg xmv A
mlg xmw A
mon khk A
mon mvf A
msa bjn A
msa btj A
msa bve A
msa bvu A
msa coa A
msa dup A
msa hji A
msa ind A
msa jak A
msa jax A
msa kvb A
msa kvr A
msa kxd A
msa lce A
msa lcf A
msa liw A
msa max A
msa meo A
msa mfa A
msa mfb A
msa min A
msa mly R
msa mqg A
msa msi A
msa mui A
msa orn A
msa ors A
msa pel A
msa pse A
msa tmw A
msa urk A
msa vkk A
msa vkt A
msa xmm A
msa zlm A
msa zmi A
msa zsm A
mwr dhd A
mwr mtr A
mwr mve A
mwr rwr A
mwr swv A
mwr wry A
nep dty A
nep npi A
nor nno A
nor nob A
oji ciw A
oji ojb A
oji ojc A
oji ojg A
oji ojs A
oji ojw A
oji otw A
ori ory A
ori spv A
orm gax A
orm gaz A
orm hae A
orm orc A
pus pbt A
pus pbu A
pus pst A
que cqu R
que qub A
que qud A
que quf A
que qug A
que quh A
que quk A
que qul A
que qup A
que qur A
que qus A
que quw A
que qux A
que quy A
que quz A
que qva A
que qvc A
que qve A
que qvh A
que qvi A
que qvj A
que qvl A
que qvm A
que qvn A
que qvo A
que qvp A
que qvs A
que qvw A
que qvz A
que qwa A
que qwc A
que qwh A
que qws A
que qxa A
que qxc A
que qxh A
que qxl A
que qxn A
que qxo A
que qxp A
que qxr A
que qxt A
que qxu A
que qxw A
raj bgq A
raj gda A
raj gju A
raj hoj A
raj mup A
raj wbr A
rom rmc A
rom rmf A
rom rml A
rom rmn A
rom rmo A
rom rmw A
rom rmy A
sqi aae A
sqi aat A
sqi aln A
sqi als A
srd sdc A
srd sdn A
srd src A
srd sro A
swa swc A
swa swh A
syr aii A
syr cld A
tmh taq A
tmh thv A
tmh thz A
tmh ttq A
uzb uzn A
uzb uzs A
yid ydd A
yid yih A
zap zaa A
zap zab A
zap zac A
zap zad A
zap zae A
zap zaf A
zap zai A
zap zam A
zap zao A
zap zaq A
zap zar A
zap zas A
zap zat A
zap zav A
zap zaw A
zap zax A
zap zca A
zap zoo A
zap zpa A
zap zpb A
zap zpc A