AviGNU - Mot-clé - XPathGroupe d'utilisateurs de logiciels libres du Grand Avignon2024-01-02T17:40:01+01:00Administrateururn:md5:8ed776652564792dba453bac492a5a6cDotclearDéterminer le nom du pays à partir de la locale du systèmeurn:md5:067ac711f9a89fd1ff8ae5c912dedcbd2014-01-03T17:08:00+01:002014-01-03T17:30:01+01:00Olivier DuchateauProgrammationCGIOGLiblibxml2XPath <p>En ce moment je travaille sur le <em>portage</em> d'une application pour <a href="http://www.freebsd.org/">FreeBSD</a>. Comme elle fait appel à des fonctions qui ne sont pas disponibles sous ce système, je passe par l'analyse des fichiers <a href="http://pkg-isocodes.alioth.debian.org/">iso-codes</a> <sup>[<a href="http://avignu.tuxfamily.org/index.php?post/2014/01/03/D%C3%A9terminer-le-nom-du-pays-%C3%A0-partir-de-la-locale-du-syst%C3%A8me#pnote-91-1" id="rev-pnote-91-1">1</a>]</sup> mis à notre disposition par <a href="http://www.debian.org/index.fr.html">Debian</a>.</p>
<p>Il s'agit de mon premier programme en C, donc soyez indulgent.</p>
<p>J'utilise les bibliothèques suivantes :</p>
<ul>
<li><a href="https://developer.gnome.org/glib/stable/">GLib</a></li>
<li><a href="https://developer.gnome.org/gio/stable/">GIO</a></li>
<li><a href="http://www.xmlsoft.org/">libxml2</a></li>
</ul>
<p>Pour le compiler, il faut définir une variable (par exemple <code>ISO_CODES_PREFIX</code>), qui va nous servir de macro <sup>[<a href="http://avignu.tuxfamily.org/index.php?post/2014/01/03/D%C3%A9terminer-le-nom-du-pays-%C3%A0-partir-de-la-locale-du-syst%C3%A8me#pnote-91-2" id="rev-pnote-91-2">2</a>]</sup>.</p>
<pre>
ISO_CODES_PREFIX=`pkgconf --variable=prefix iso-codes`
gcc -Wall -DISO_CODES_PREFIX=\"$ISO_CODES_PREFIX\" `pkgconf --cflags --libs glib-2.0 gio-2.0 libxml-2.0` locales.c -o locales
</pre>
<p><strong>Note :</strong> Si <em>pkgconf</em> n'est pas disponible, essayez <em>pkg-config</em>.</p>
<p>Après compilation, on obtient une liste avec la locale suivi du nom du pays. Cela me sert pour renforcer les tests pour mon <em>patch</em>.</p>
<pre>
[...]
eu_ES.ISO8859-1 Spain
eu_ES.ISO8859-15 Spain
eu_ES.UTF-8 Spain
fi_FI.ISO8859-1 Finland
fi_FI.ISO8859-15 Finland
fi_FI.UTF-8 Finland
fr_BE.ISO8859-1 Belgium
fr_BE.ISO8859-15 Belgium
fr_BE.UTF-8 Belgium
fr_CA.ISO8859-1 Canada
fr_CA.ISO8859-15 Canada
fr_CA.UTF-8 Canada
fr_CH.ISO8859-1 Switzerland
fr_CH.ISO8859-15 Switzerland
fr_CH.UTF-8 Switzerland
fr_FR.ISO8859-1 France
fr_FR.ISO8859-15 France
fr_FR.UTF-8 France
he_IL.UTF-8 Israel
hi_IN.ISCII-DEV India
[...]
</pre>
<div class="footnotes"><h4 class="footnotes-title">Notes</h4>
<p>[<a href="http://avignu.tuxfamily.org/index.php?post/2014/01/03/D%C3%A9terminer-le-nom-du-pays-%C3%A0-partir-de-la-locale-du-syst%C3%A8me#rev-pnote-91-1" id="pnote-91-1">1</a>] Certains logiciels du projet <a href="http://www.gnome.org/">GNOME</a> utilisent le même procédé.</p>
<p>[<a href="http://avignu.tuxfamily.org/index.php?post/2014/01/03/D%C3%A9terminer-le-nom-du-pays-%C3%A0-partir-de-la-locale-du-syst%C3%A8me#rev-pnote-91-2" id="pnote-91-2">2</a>] Reportez-vous à cette page du <a href="http://avignu.wiki.tuxfamily.org/doku.php?id=snippet:c">wiki</a> pour plus de détail.</p></div>