<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.sorcellerieweb.net/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Sorcellerie Web - Tag - i18n</title>
  <link>http://blog.sorcellerieweb.net/</link>
  <description>Bienvenue dans l'antre d'un sorcier du web. Ici vous seront dévoilées les formules les plus secrètes, les potions les plus goutues, les sorts les plus faramineux pour en mettre plein la vue à vos collègues nerds avec votre sorcellerie web niveau 36. Ou au moins à mettre en ligne un gif animé.</description>
  <language>fr</language>
  <pubDate>Thu, 28 Aug 2008 11:22:26 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Détecter les préférences du navigateur</title>
    <link>http://blog.sorcellerieweb.net/post/2007/12/03/Detecter-les-preferences-du-navigateur</link>
    <guid isPermaLink="false">urn:md5:510611bfcda35e6c51595ad2ad8b719d</guid>
    <pubDate>Mon, 03 Dec 2007 19:34:00 +0100</pubDate>
    <dc:creator>J.Ducastel</dc:creator>
        <category>Formules</category>
        <category>ergonomie</category><category>http</category><category>i18n</category><category>php</category>    
    <description>&lt;p&gt;Il bien plus agréable pour l'internaute de disposer directement du contenu
qui le concerne (langue, navigateur, OS...) plutot que de devoir fouiller le
site web pour l'obtenir. Cela améliore son expérience de navigation, et donc
l'attrait pour votre site.&lt;/p&gt;    &lt;p&gt;Beaucoup d'entre nous se sont habitués à chercher, en arrivant sur un site,
s'il n'en existait pas une version dans sa propre langue. On cherche alors où
sont les petits drapeaux, les micro-liens avec code de langue sur deux
caractères, etc. Et beaucoup d'utilisateurs ne les trouvent pas, et quittent le
site immédiatement, faute de pratiquer la langue affichée. Pourtant, quand le
contenu d'un site est traduit, le plus gros du travail est fait; pourquoi ne
pas l'afficher directement dans la langue spécifiée par l'internaute pour son
navigateur ?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.sorcellerieweb.net/public/img/bookmarklets_delicious_oper.png&quot; alt=&quot;bookmarklets_delicious_oper.png&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; /&gt;Ceci est également valable pour d'autres
préférences. La &lt;a href=&quot;http://www.mozilla-europe.org/fr/products/firefox/&quot;&gt;page de téléchargement de
Firefox&lt;/a&gt; par exemple est non seulement traduite dans la langue de
l'internaute, mais la version proposée au téléchargement est celle
correspondant à son système d'exploitation. Tout aussi efficace, la &lt;a href=&quot;http://del.icio.us/help/buttons&quot;&gt;page de &lt;em lang=&quot;en&quot;&gt;bookmarklets&lt;/em&gt;&lt;/a&gt; pour &lt;a href=&quot;http://del.icio.us&quot;&gt;Del.icio.us&lt;/a&gt;
est automatiquement adaptée au navigateur en cours. Ceci est possible grâce aux
données de préférences et d'environnement utilisateur transmises par le
navigateur au serveur web via les en-têtes HTTP.&lt;/p&gt;
&lt;p&gt;Outre les préférences de langue, et les particularités eventuelles de
l'environnement système d'exploitation/navigateur, il peut être souhaitable de
détecter le support de javascript, surtout pour les sites utilisant ajax pour
certaines de leurs fonctionnalités. Tout comme le support de flash. La liste
est longue, car les possibilités d'HTTP sont encore largement
sous-utilisées.&lt;/p&gt;
&lt;p&gt;Bien evidemment, il faut garder à l'esprit que ces données ne sont pas
fiables, et ne doivent être utilisées que pour définir la version du contenu
par défaut, et toujours permettre à l'utilisateur de modifier ces réglages si
possible via des liens et des contrôles manuels.&lt;/p&gt;
&lt;p&gt;Pour ce qui est de PHP, vous pouvez utiliser un de mes bouts de script (
&lt;a href=&quot;http://blog.sorcellerieweb.net/post/2005/09/13/Getting-browser-language-settings-with-PHP&quot; hreflang=&quot;en&quot;&gt;getting browser language settings with php&lt;/a&gt;), ou la &lt;a href=&quot;http://phpsniff.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;classe phpsniff&lt;/a&gt; qui semble
bien plus complete (pas encore utilisée, je viens de tomber dessus).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.sorcellerieweb.net/post/2007/12/03/#&quot; title=&quot;Additious&quot;&gt;&lt;img src=&quot;http://www.additious.com/images/additious_boutons/additious_orange.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.sorcellerieweb.net/post/2007/12/03/Detecter-les-preferences-du-navigateur#comment-form</comments>
      <wfw:comment>http://blog.sorcellerieweb.net/post/2007/12/03/Detecter-les-preferences-du-navigateur#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.sorcellerieweb.net/feed/rss2/comments/181418</wfw:commentRss>
      </item>
    
  <item>
    <title>Getting browser language settings with PHP</title>
    <link>http://blog.sorcellerieweb.net/post/2005/09/13/Getting-browser-language-settings-with-PHP</link>
    <guid isPermaLink="false">urn:md5:63cca60a8c3d5fe20056ad823047f59b</guid>
    <pubDate>Tue, 13 Sep 2005 20:02:00 +0200</pubDate>
    <dc:creator>J.Ducastel</dc:creator>
        <category>Formules</category>
        <category>code-source</category><category>http</category><category>i18n</category><category>php</category>    
    <description>&lt;p&gt;So, you run a multilingual web site with &lt;acronym title=&quot;Hypertext PreProcessor&quot;&gt;PHP&lt;/acronym&gt; and you want to serve the reader's
choice language if available. No problem, &lt;acronym title=&quot;HyperText Transfert Protocol&quot;&gt;HTTP&lt;/acronym&gt; carries user's browser language
settings within &lt;q&gt;Accept-Language&lt;/q&gt; instruction, you just have to parse it.
Here is a sample function.&lt;/p&gt;    &lt;pre&gt;
&lt;code&gt;function parseHttpAcceptLanguage($str=NULL) {
        // getting http instruction if not provided
        $str=$str?$str:$_SERVER['HTTP_ACCEPT_LANGUAGE'];
        // exploding accepted languages 
        $langs=explode(',',$str);
        // creating output list
        $accepted=array();
        foreach ($langs as $lang) {
                // parsing language preference instructions
                // 2_digit_code[-longer_code][;q=coefficient]
                ereg('([a-z]{1,2})(-([a-z0-9]+))?(;q=([0-9\.]+))?',$lang,$found);
                // 2 digit lang code
                $code=$found[1];
                // lang code complement
                $morecode=$found[3];
                // full lang code
                $fullcode=$morecode?$code.'-'.$morecode:$code;
                // coefficient
                $coef=sprintf('%3.1f',$found[5]?$found[5]:'1');
                // for sorting by coefficient
                $key=$coef.'-'.$code;
                // adding 
                $accepted[$key]=array('code'=&amp;gt;$code,'coef'=&amp;gt;$coef,'morecode'=&amp;gt;$morecode,'fullcode'=&amp;gt;$fullcode);
        }
        // sorting the list by coefficient desc
        krsort($accepted);
        return $accepted;
}&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;This function will parse a given HTTP &lt;q&gt;Accepted language&lt;/q&gt; instruction
(or retrieve it from &lt;var&gt;$_SERVER&lt;/var&gt; if not provided) and will return a
sorted array. For example, it will parse &lt;q&gt;fr;en-us;q=0.8&lt;/q&gt; to :&lt;/p&gt;
&lt;code&gt;[1.0-fr]=&amp;gt;([code]=&amp;gt;'fr','morecode'=&amp;gt;'fr',[coef]=&amp;gt;'1.0',[fullcode]=&amp;gt;'fr')
,[0.8-en]=&amp;gt;([code]=&amp;gt;'en','morecode'=&amp;gt;'us',[coef]=&amp;gt;'0.8',[fullcode]=&amp;gt;'en-us')&lt;/code&gt;
&lt;p&gt;The next thing will be to find and serve the first available version amongst
user's accepted languages. Easy.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.sorcellerieweb.net/post/2005/09/13/Getting-browser-language-settings-with-PHP#comment-form</comments>
      <wfw:comment>http://blog.sorcellerieweb.net/post/2005/09/13/Getting-browser-language-settings-with-PHP#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.sorcellerieweb.net/feed/rss2/comments/178156</wfw:commentRss>
      </item>
    
</channel>
</rss>