[spip-dev] liste des langues dans ecrire/inc_lang.php3

Ajouts.

J'ai comparé la liste des codes de init_codes_langues()
(dans ecrire/inc_lang.php3)
avec la liste des codes ISO 639-1 de http://www.loc.gov/standards/iso639-2/.
SPIP en a 42 en moins (manquants), y compris ht pour lequel SPIP utilise cpf_hat
et oc (étrange), plus jv que l'éditeur de ISO 639 avait par erreur
indiqué jw (cf. http://www.loc.gov/standards/iso639-2/codechanges.html).

Il n'est pas obligatoire que la liste contienne tous les codes ISO 639-1
(ni tous les codes ISO 639), mais (corriger) jv et (ajouter) oc me
semblent une bonne idée.

Il est amusant de emarquer que http://www.google.fr/advanced_search
contient lang_iw comme code de l'hébreu, alors que cela fait quinze (15)
ans que iw est obsolète au profit de he.

La liste contient en commentaires certains noms des langues (en
français : gallois, peul; pour distinguer « Slovakia/Slovenia »).
Si des personnes ont des dificultés à reconnaitre les langues
correspondantes aux codes, ont peut (pourrait) carrément ajouter en
commentaire l'adresses
http://www.loc.gov/standards/iso639-2/langcodes.html qui contient les
noms en anglais et en français de tous les codes ISO 639-1 et 639-2.
Je peux aussi signaler http://www.w3.org/International/questions/qa-navigation-select
ppour le cas où c'est dans interfaces web que cela gène (il est aussi
possible dl'ajouter le code, comme dans trad-lang).

Je peut faire et fournir le diff pour tout cela, mais pour la modification jw
dans la base de données je préfèrerais que ce soit fait par une
personne connaissant plus la structure de la base de données de SPIP cvs actuel.

Traductions.

Ci dessous du code php pour comparer la liste ave cles noms de
CLDR http://www.unicode.org/cldr/ .

<?php
set_time_limit(200);
$time_start = microtime(true);// http://www.php.net/manual/en/function.microtime.php#55061
header('Content-Type: text/html; charset=utf-8');
//inclure function init_codes_langues() de ecrire/inc_lang.php3
function init_codes_langues()
//(...)

init_codes_langues();
$i = 0;
$xml = "";
$lang = "";
//$result = "";
echo '<!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="fr" lang="fr">
  <head>
    <title>nom des langues</title>
  </head>
<body>
<table border="1">
<tr><th>code de langue</th><th>nom actuel de la langue pour SPIP</th><th>nom de la langue d&nbsp;apres CLDR</th></tr>
';
foreach($GLOBALS['codes_langues'] as $key => $value)
{
// if ($i < -1) //pour limiter le nombre de noms verifies
// {
    $xml = @simplexml_load_file("http://www.unicode.org/cldr/data/common/main/$key.xml");
// } else {
// $xml = false;
// }
  if ((bool)$xml == false)
  {
    $lang= "erreur";
  } else {
    $result = $xml->xpath("/ldml/localeDisplayNames/languages/language[@type='$key']");
    $lang = $result[0];
  }
  echo "<tr><td>$key</td><td>$value</td><td>$lang</td></tr>\n";
  $i++;
}
echo "</table>\n";
$gen_time = microtime(true) - $time_start; // http://www.php.net/manual/en/function.microtime.php#55061
echo "<p>temps d'execution : $gen_time secondes</p>\n</body>\n</html>";
?>

À vue d'oeuil voici les langues pour lesquelles le noms CLDR sont
différents (des noms de la liste de SPIP) :
aa Qafar
am &#4768;&#4635;&#4653;&#4763;
as &#2437;&#2488;&#2478;&#2496;&#2527;&#2494;
bn &#2476;&#2494;&#2434;&#2482;&#2494;
dz &#3938;&#4011;&#3964;&#3908;&#3851;&#3905;
gu &#2711;&#2753;&#2716;&#2736;&#2750;&#2724;&#2752;
hy &#1344;&#1377;&#1397;&#1381;&#1408;&#1383;&#1398;
iu &#5123;&#5316;&#5251;&#5198;&#5200;&#5222; &#5198;&#5198;&#5451;&#5125;&#5359;&#5509;
kl kalaallisut
km &#6039;&#6070;&#6047;&#6070;&#6017;&#6098;&#6040;&#6082;&#6042;
kn &#3221;&#3240;&#3277;&#3240;&#3233;
ky &#1050;&#1099;&#1088;&#1075;&#1099;&#1079;
lo &#3749;&#3762;&#3751;
ml &#3374;&#3378;&#3375;&#3390;&#3379;&#3330;
mn &#1052;&#1086;&#1085;&#1075;&#1086;&#1083; &#1093;&#1101;&#1083;
mt Malti
or &#2835;&#2908;&#2879;&#2822;
pa &#2602;&#2672;&#2588;&#2622;&#2604;&#2624;
ps &#1662;&#1690;&#1578;&#1608;
so Soomaali
te &#3108;&#3142;&#3122;&#3137;&#3095;&#3137;
uz &#1038;&#1079;&#1073;&#1077;&#1082;

Attention au noms écrits de droite à gauche comme ps (pachtoune).
Il doit être possible d'ajouter le filtre de convcersion en codes xml &#00;.
Voir de faire faire la comparaison avec les noms de SPIP par php.
Et ajouter une indication si le nom cldr a draft="true".