Browse Source

Add article on webapp localization

Phyks (Lucas Verney) 3 years ago
parent
commit
bd8beadb0e

+ 31
- 2
blog/2015/12/index.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>
@@ -49,6 +49,35 @@
49 49
 		<p class="month">Décembre</p>
50 50
 	</aside>
51 51
 	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=26122015-2317
56
+    @title=Localizing a webapp with webL10n.js
57
+    @tags=Localization,Webapp,JavaScript
58
+-->
59
+
60
+<p>I am currently working on a <a href="https://github.com/hackEns/VelibFxos">Velib webapp</a>. With <a href="http://blog.exppad.com/">Élie</a>, we modularized everything so that the backend API can be edited easily, and adapted to any other bike sharing system, hence we wanted it to be easily localizable and looked for solutions compatible with as much browsers as possible. We finally chose <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>. Here are some explanations about it and how to use it.</p>
61
+<h2>Why webL10n.js?</h2>
62
+<p>First thing is: why choosing webL10n.js instead of anything else? We found basically four solutions: <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>, <a href="https://github.com/l20n/l20n.js">L20n.js</a>, <a href="https://github.com/SlexAxton/Jed">Jed</a> and <a href="https://github.com/mozilla-b2g/gaia/blob/master/shared/js/l10n.js">a modified version of webL10n.js</a> used in Gaia.</p>
63
+<p>Jed takes a really different approach and, especially as we are not really familiar with localizing content, we found it more difficult to use and integrate.</p>
64
+<p>The three others take a really simple approach. They use extra <code>data-*</code> attribute on any tag to replace on the fly the <code>textContent</code> of the node by a translation found in a formatted file. It is really easy to integrate, use and tweak. They support advanced features such as pluralization, HTML modifications, responsive localization (to use a different localization file on small screens), etc.</p>
65
+<p>WebL10n.js and the modified version in Gaia are basically the same, except that the one in Gaia dropped hacks to add support in some old browsers such as IE6. Plus webL10n is in a separate git repo which is easy to track, so I'd rather go with this one. But the documentation is not really complete and <a href="https://developer.mozilla.org/en-US/Apps/Build/Localization/Getting_started_with_app_localization#Add_l10n.js">the associated MDN wiki page</a> is outdated. Hence this blog post&nbsp;:) Don't worry about the lack of recent commits on webL10n.js, it is stable and usable (and still maintained and supported by <a href="http://www.fabiencazenave.org/">kaze</a>).</p>
66
+<p>L20n.js is the latest Mozilla project aiming at replacing webL10n.js. I had many problems with it, because the API keeps moving, and no doc is in sync with the code. Downloadable version exposes a totally different API than the one in the git repo, and the doc is not really helpful concerning which version should be considered stable. Plus the <code>l20n</code> file format is really weird and I'd rather not reinvent the wheel and go with standard <code>properties</code> file to ease translation for contributors.</p>
67
+<h2>Demo and extra infos</h2>
68
+<p>For more informations, you can refer to the <a href="https://github.com/fabi1cazenave/webL10n/blob/master/README.md">README</a>.</p>
69
+<p>For an app using it, you can have a look at <a href="https://github.com/hackEns/VelibFxos">our VelibFxos webapp</a>, espcially <a href="https://github.com/hackEns/VelibFxos/blob/v2/l10n/">this folder</a>. You can also see it in your browser at <a href="https://velib.phyks.me/">https://velib.phyks.me/</a> (under heavy work in progress, so might break from time to time).</p>
70
+<p><em>Note</em>: Note that there is a bug when mixing pluralization and <code>innerHTML</code>, which can be worked around. See <a href="https://github.com/fabi1cazenave/webL10n/issues/75">this Github issue</a>. </p>
71
+		<footer><p class="date">Le 26/12/2015 à 23:17</p>
72
+		<p class="tags">Tags : <a href="//phyks.me/tags/Localization.html">Localization</a>, <a href="//phyks.me/tags/Webapp.html">Webapp</a>, <a href="//phyks.me/tags/JavaScript.html">JavaScript</a></p></footer>
73
+	</div>
74
+</article>
75
+<article>
76
+	<aside>
77
+		<p class="day">26</p>
78
+		<p class="month">Décembre</p>
79
+	</aside>
80
+	<div class="article">
52 81
 		<header><h1 class="article_title"><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></h1></header>
53 82
 		<!-- 
54 83
     @author=Phyks

+ 81
- 0
blog/2015/12/localizing_webapp.html View File

@@ -0,0 +1,81 @@
1
+<!DOCTYPE html>
2
+<html lang="fr">
3
+    <head>
4
+        <meta charset="utf-8">
5
+        <title>Phyks' blog - Localizing a webapp with webL10n.js</title>
6
+		<link rel="stylesheet" href="//phyks.me/design.css"/>
7
+        <link type="text/plain" rel="author" href="//phyks.me/humans.txt"/>
8
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
+        <link rel="alternate" type="application/rss+xml" title="RSS" href="//phyks.me/rss.xml" />
10
+    </head>
11
+    <body>
12
+        <div id="wrapper">
13
+            <!-- Sidebar -->
14
+                <aside id="sidebar-wrapper">
15
+                    <header><h1><a href="//phyks.me">~Phyks</a></h1></header>
16
+
17
+                    <h2>Catégories</h2>
18
+                        <nav id="sidebar-tags">
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20
+                        </nav>
21
+
22
+                    <h2>Derniers articles</h2>
23
+                        <ul id="sidebar-articles">
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25
+                        </ul>
26
+
27
+                    <h2>Liens</h2>
28
+                        <ul id="sidebar-links">
29
+                            <li><a href="//phyks.me/contact.html" title="Contact">Me contacter</a></li>
30
+                            <li class="monospace"><a href="//links.phyks.me" title="Mon Shaarli">find ~phyks -type l</a></li>
31
+                            <li><a href="https://github.com/phyks/" rel="me" title="Github">Mon Github</a></li>
32
+                            <li><a href="//phyks.me/divers.html" title="Divers">Divers</a></li>
33
+                        </ul>
34
+                </aside>
35
+
36
+            <!-- Page content -->
37
+                <header id="header">
38
+                    <h1><a href="//phyks.me">~Phyks</a></h1>
39
+                </header>
40
+
41
+                <div id="note_responsive">
42
+                    <p><em>Note</em> : Cliquez sur la bande bleue à gauche pour faire apparaître le menu.</p>
43
+                </div>
44
+
45
+                <div id="articles">
46
+<article>
47
+	<aside>
48
+		<p class="day">26</p>
49
+		<p class="month">Décembre</p>
50
+	</aside>
51
+	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=26122015-2317
56
+    @title=Localizing a webapp with webL10n.js
57
+    @tags=Localization,Webapp,JavaScript
58
+-->
59
+
60
+<p>I am currently working on a <a href="https://github.com/hackEns/VelibFxos">Velib webapp</a>. With <a href="http://blog.exppad.com/">Élie</a>, we modularized everything so that the backend API can be edited easily, and adapted to any other bike sharing system, hence we wanted it to be easily localizable and looked for solutions compatible with as much browsers as possible. We finally chose <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>. Here are some explanations about it and how to use it.</p>
61
+<h2>Why webL10n.js?</h2>
62
+<p>First thing is: why choosing webL10n.js instead of anything else? We found basically four solutions: <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>, <a href="https://github.com/l20n/l20n.js">L20n.js</a>, <a href="https://github.com/SlexAxton/Jed">Jed</a> and <a href="https://github.com/mozilla-b2g/gaia/blob/master/shared/js/l10n.js">a modified version of webL10n.js</a> used in Gaia.</p>
63
+<p>Jed takes a really different approach and, especially as we are not really familiar with localizing content, we found it more difficult to use and integrate.</p>
64
+<p>The three others take a really simple approach. They use extra <code>data-*</code> attribute on any tag to replace on the fly the <code>textContent</code> of the node by a translation found in a formatted file. It is really easy to integrate, use and tweak. They support advanced features such as pluralization, HTML modifications, responsive localization (to use a different localization file on small screens), etc.</p>
65
+<p>WebL10n.js and the modified version in Gaia are basically the same, except that the one in Gaia dropped hacks to add support in some old browsers such as IE6. Plus webL10n is in a separate git repo which is easy to track, so I'd rather go with this one. But the documentation is not really complete and <a href="https://developer.mozilla.org/en-US/Apps/Build/Localization/Getting_started_with_app_localization#Add_l10n.js">the associated MDN wiki page</a> is outdated. Hence this blog post&nbsp;:) Don't worry about the lack of recent commits on webL10n.js, it is stable and usable (and still maintained and supported by <a href="http://www.fabiencazenave.org/">kaze</a>).</p>
66
+<p>L20n.js is the latest Mozilla project aiming at replacing webL10n.js. I had many problems with it, because the API keeps moving, and no doc is in sync with the code. Downloadable version exposes a totally different API than the one in the git repo, and the doc is not really helpful concerning which version should be considered stable. Plus the <code>l20n</code> file format is really weird and I'd rather not reinvent the wheel and go with standard <code>properties</code> file to ease translation for contributors.</p>
67
+<h2>Demo and extra infos</h2>
68
+<p>For more informations, you can refer to the <a href="https://github.com/fabi1cazenave/webL10n/blob/master/README.md">README</a>.</p>
69
+<p>For an app using it, you can have a look at <a href="https://github.com/hackEns/VelibFxos">our VelibFxos webapp</a>, espcially <a href="https://github.com/hackEns/VelibFxos/blob/v2/l10n/">this folder</a>. You can also see it in your browser at <a href="https://velib.phyks.me/">https://velib.phyks.me/</a> (under heavy work in progress, so might break from time to time).</p>
70
+<p><em>Note</em>: Note that there is a bug when mixing pluralization and <code>innerHTML</code>, which can be worked around. See <a href="https://github.com/fabi1cazenave/webL10n/issues/75">this Github issue</a>. </p>
71
+		<footer><p class="date">Le 26/12/2015 à 23:17</p>
72
+		<p class="tags">Tags : <a href="//phyks.me/tags/Localization.html">Localization</a>, <a href="//phyks.me/tags/Webapp.html">Webapp</a>, <a href="//phyks.me/tags/JavaScript.html">JavaScript</a></p></footer>
73
+	</div>
74
+</article>
75
+            </div>
76
+            <footer id="rss">
77
+                <p><a href="//phyks.me/rss.xml"><img src="//phyks.me/img/rss.png" alt="RSS"/></a></p>
78
+            </footer>
79
+        </div>
80
+    </body>
81
+</html>

+ 31
- 2
blog/2015/index.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>
@@ -49,6 +49,35 @@
49 49
 		<p class="month">Décembre</p>
50 50
 	</aside>
51 51
 	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=26122015-2317
56
+    @title=Localizing a webapp with webL10n.js
57
+    @tags=Localization,Webapp,JavaScript
58
+-->
59
+
60
+<p>I am currently working on a <a href="https://github.com/hackEns/VelibFxos">Velib webapp</a>. With <a href="http://blog.exppad.com/">Élie</a>, we modularized everything so that the backend API can be edited easily, and adapted to any other bike sharing system, hence we wanted it to be easily localizable and looked for solutions compatible with as much browsers as possible. We finally chose <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>. Here are some explanations about it and how to use it.</p>
61
+<h2>Why webL10n.js?</h2>
62
+<p>First thing is: why choosing webL10n.js instead of anything else? We found basically four solutions: <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>, <a href="https://github.com/l20n/l20n.js">L20n.js</a>, <a href="https://github.com/SlexAxton/Jed">Jed</a> and <a href="https://github.com/mozilla-b2g/gaia/blob/master/shared/js/l10n.js">a modified version of webL10n.js</a> used in Gaia.</p>
63
+<p>Jed takes a really different approach and, especially as we are not really familiar with localizing content, we found it more difficult to use and integrate.</p>
64
+<p>The three others take a really simple approach. They use extra <code>data-*</code> attribute on any tag to replace on the fly the <code>textContent</code> of the node by a translation found in a formatted file. It is really easy to integrate, use and tweak. They support advanced features such as pluralization, HTML modifications, responsive localization (to use a different localization file on small screens), etc.</p>
65
+<p>WebL10n.js and the modified version in Gaia are basically the same, except that the one in Gaia dropped hacks to add support in some old browsers such as IE6. Plus webL10n is in a separate git repo which is easy to track, so I'd rather go with this one. But the documentation is not really complete and <a href="https://developer.mozilla.org/en-US/Apps/Build/Localization/Getting_started_with_app_localization#Add_l10n.js">the associated MDN wiki page</a> is outdated. Hence this blog post&nbsp;:) Don't worry about the lack of recent commits on webL10n.js, it is stable and usable (and still maintained and supported by <a href="http://www.fabiencazenave.org/">kaze</a>).</p>
66
+<p>L20n.js is the latest Mozilla project aiming at replacing webL10n.js. I had many problems with it, because the API keeps moving, and no doc is in sync with the code. Downloadable version exposes a totally different API than the one in the git repo, and the doc is not really helpful concerning which version should be considered stable. Plus the <code>l20n</code> file format is really weird and I'd rather not reinvent the wheel and go with standard <code>properties</code> file to ease translation for contributors.</p>
67
+<h2>Demo and extra infos</h2>
68
+<p>For more informations, you can refer to the <a href="https://github.com/fabi1cazenave/webL10n/blob/master/README.md">README</a>.</p>
69
+<p>For an app using it, you can have a look at <a href="https://github.com/hackEns/VelibFxos">our VelibFxos webapp</a>, espcially <a href="https://github.com/hackEns/VelibFxos/blob/v2/l10n/">this folder</a>. You can also see it in your browser at <a href="https://velib.phyks.me/">https://velib.phyks.me/</a> (under heavy work in progress, so might break from time to time).</p>
70
+<p><em>Note</em>: Note that there is a bug when mixing pluralization and <code>innerHTML</code>, which can be worked around. See <a href="https://github.com/fabi1cazenave/webL10n/issues/75">this Github issue</a>. </p>
71
+		<footer><p class="date">Le 26/12/2015 à 23:17</p>
72
+		<p class="tags">Tags : <a href="//phyks.me/tags/Localization.html">Localization</a>, <a href="//phyks.me/tags/Webapp.html">Webapp</a>, <a href="//phyks.me/tags/JavaScript.html">JavaScript</a></p></footer>
73
+	</div>
74
+</article>
75
+<article>
76
+	<aside>
77
+		<p class="day">26</p>
78
+		<p class="month">Décembre</p>
79
+	</aside>
80
+	<div class="article">
52 81
 		<header><h1 class="article_title"><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></h1></header>
53 82
 		<!-- 
54 83
     @author=Phyks

+ 2
- 2
blog/archives.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 31
- 53
blog/index.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>
@@ -49,6 +49,35 @@
49 49
 		<p class="month">Décembre</p>
50 50
 	</aside>
51 51
 	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=26122015-2317
56
+    @title=Localizing a webapp with webL10n.js
57
+    @tags=Localization,Webapp,JavaScript
58
+-->
59
+
60
+<p>I am currently working on a <a href="https://github.com/hackEns/VelibFxos">Velib webapp</a>. With <a href="http://blog.exppad.com/">Élie</a>, we modularized everything so that the backend API can be edited easily, and adapted to any other bike sharing system, hence we wanted it to be easily localizable and looked for solutions compatible with as much browsers as possible. We finally chose <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>. Here are some explanations about it and how to use it.</p>
61
+<h2>Why webL10n.js?</h2>
62
+<p>First thing is: why choosing webL10n.js instead of anything else? We found basically four solutions: <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>, <a href="https://github.com/l20n/l20n.js">L20n.js</a>, <a href="https://github.com/SlexAxton/Jed">Jed</a> and <a href="https://github.com/mozilla-b2g/gaia/blob/master/shared/js/l10n.js">a modified version of webL10n.js</a> used in Gaia.</p>
63
+<p>Jed takes a really different approach and, especially as we are not really familiar with localizing content, we found it more difficult to use and integrate.</p>
64
+<p>The three others take a really simple approach. They use extra <code>data-*</code> attribute on any tag to replace on the fly the <code>textContent</code> of the node by a translation found in a formatted file. It is really easy to integrate, use and tweak. They support advanced features such as pluralization, HTML modifications, responsive localization (to use a different localization file on small screens), etc.</p>
65
+<p>WebL10n.js and the modified version in Gaia are basically the same, except that the one in Gaia dropped hacks to add support in some old browsers such as IE6. Plus webL10n is in a separate git repo which is easy to track, so I'd rather go with this one. But the documentation is not really complete and <a href="https://developer.mozilla.org/en-US/Apps/Build/Localization/Getting_started_with_app_localization#Add_l10n.js">the associated MDN wiki page</a> is outdated. Hence this blog post&nbsp;:) Don't worry about the lack of recent commits on webL10n.js, it is stable and usable (and still maintained and supported by <a href="http://www.fabiencazenave.org/">kaze</a>).</p>
66
+<p>L20n.js is the latest Mozilla project aiming at replacing webL10n.js. I had many problems with it, because the API keeps moving, and no doc is in sync with the code. Downloadable version exposes a totally different API than the one in the git repo, and the doc is not really helpful concerning which version should be considered stable. Plus the <code>l20n</code> file format is really weird and I'd rather not reinvent the wheel and go with standard <code>properties</code> file to ease translation for contributors.</p>
67
+<h2>Demo and extra infos</h2>
68
+<p>For more informations, you can refer to the <a href="https://github.com/fabi1cazenave/webL10n/blob/master/README.md">README</a>.</p>
69
+<p>For an app using it, you can have a look at <a href="https://github.com/hackEns/VelibFxos">our VelibFxos webapp</a>, espcially <a href="https://github.com/hackEns/VelibFxos/blob/v2/l10n/">this folder</a>. You can also see it in your browser at <a href="https://velib.phyks.me/">https://velib.phyks.me/</a> (under heavy work in progress, so might break from time to time).</p>
70
+<p><em>Note</em>: Note that there is a bug when mixing pluralization and <code>innerHTML</code>, which can be worked around. See <a href="https://github.com/fabi1cazenave/webL10n/issues/75">this Github issue</a>. </p>
71
+		<footer><p class="date">Le 26/12/2015 à 23:17</p>
72
+		<p class="tags">Tags : <a href="//phyks.me/tags/Localization.html">Localization</a>, <a href="//phyks.me/tags/Webapp.html">Webapp</a>, <a href="//phyks.me/tags/JavaScript.html">JavaScript</a></p></footer>
73
+	</div>
74
+</article>
75
+<article>
76
+	<aside>
77
+		<p class="day">26</p>
78
+		<p class="month">Décembre</p>
79
+	</aside>
80
+	<div class="article">
52 81
 		<header><h1 class="article_title"><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></h1></header>
53 82
 		<!-- 
54 83
     @author=Phyks
@@ -934,57 +963,6 @@ grunt server:dist
934 963
 		<p class="tags">Tags : <a href="//phyks.me/tags/Phyks.html">Phyks</a></p></footer>
935 964
 	</div>
936 965
 </article>
937
-<article>
938
-	<aside>
939
-		<p class="day">08</p>
940
-		<p class="month">Novembre</p>
941
-	</aside>
942
-	<div class="article">
943
-		<header><h1 class="article_title"><a href="//phyks.me/2014/11/bloomysearch.html">Proof-of-concept: BloomySearch, a (JavaScript) client-side search engine for static websites</a></h1></header>
944
-		<!-- 
945
-    @author=Phyks
946
-    @date=08112014-1845
947
-    @title=Proof-of-concept: BloomySearch, a (JavaScript) client-side search engine for static websites
948
-    @tags=Dev, Web
949
--->
950
-
951
-<h2>Overview</h2>
952
-<p>Many websites and blogs are statically generated and the webserver only serves static files. It is the case of many doc websites and more and more blogs, starting from this one, as <a href="http://jekyllrb.com/">Jekyll</a>&nbsp;/ <a href="http://blog.getpelican.com/">Pelican</a> develops.</p>
953
-<p>This is really useful to reduce the complexity of the website and the load on the webserver. All the complex logic is done at the generation.</p>
954
-<p>However, this also means you do not have dynamic pages on your website to handle search queries. Then, you are left with two (or three) choices&nbsp;:</p>
955
-<ol>
956
-<li>Use an external search engine, such as an embedded Google search box. This raises some privacy concerns and make you depends on an external service. </li>
957
-<li>(Use a JS search engine such as the <a href="http://www.airpair.com/angularjs#/10-filters-core-">filters</a> provided by Angular.JS. This only works on the displayed content, and is not a real solution). </li>
958
-<li>Stop worrying about search engine on your website and let the users <code>wget</code>-ing and <code>grep</code>-ing your website on their computers. This is not the most user-friendly solution…</li>
959
-</ol>
960
-<p>There are a couple of solutions around, mostly based on <a href="http://lunrjs.com/">Lunr.js</a> which generates an index from the articles available, and use this index for fulltext search. This is the best solution I found so far but it is still not perfect. Although there is a stemmer and an index generation to reduce the amount of data to be transferred, the data is not stored in a very efficient way, and the full index is sent as JSON. An example implementation for Jekyll is available through <a href="https://github.com/slashdotdash/jekyll-lunr-js-search">the jekyll-lunr-js-search plugin</a>.</p>
961
-<p>I had the idea of a client side search engine in mind for a while, but was facing the same problem as Lunr.js: how not to send a full (very large) index over the network to every single client&nbsp;? Not having an optimized data structure would basically mean sending twice the content of the website to the client. It may not be a practical problem nowadays, as transfer speed is not always the limiting resource, but it is still not to be considered as a good practice, in my opinion, especially if your website might be accessed from mobile devices.</p>
962
-<p>I came accross <a href="http://www.stavros.io/posts/bloom-filter-search-engine/?print">this article</a> from Stavros Korokithakis and thought something similar could be achieved directly in the browser. Instead of using a standard dictionary to store the index, this article proposes to use a Bloom filter per article. Bloom filters are very interesting probabilistic structures which can store whether an element is or not in a set, with a fixed number of bits. It can return false positives: if an element is in the set, it always returns <code>True</code>, but if an element is not in the set, it may say it is actually in, with a small probability. <a href="https://en.wikipedia.org/wiki/Bloom_filter">Wikipedia page</a> on the subject has all the necessary stuff to understand these data structures.</p>
963
-<p>I wrote it in the context of my blog, which means a Python script to generate the index at pages generation, and a client side search engine in JavaScript, running in browser.</p>
964
-<p>A demo is available <a href="https://phyks.github.io/BloomySearch/">here</a>. It contains all the articles of my blog, as of writing this article, totalizing 160k characters, and only 7kB of index, allowing 10% of false positives, which may be a bit too much for a really reliable search engine. Reducing the error rate will lead to an increase in the index size (11kB for 1% of false positives and the same amount of characters).</p>
965
-<h2>Details of the implementation</h2>
966
-<p>As JavaScript is not the easier language to use for hashing and binary data manipulation, I started by implementing the client side search engine. Then, it would be easier to adapt the Python code to the JS lib than doing the contrary. Actually, I found <a href="https://github.com/jasondavies/bloomfilter.js">this bloomfilters.js library</a> from Jason Davies which was doing most of the job and did not need many modifications. I edited it a bit to support a construction with a <code>capacity</code> and an <code>error_rate</code>, instead of an explicit number of bits and times to apply the hashing function. This forked version is available <a href="https://github.com/Phyks/bloomfilter.js/blob/master/bloomfilter.js">here</a>.</p>
967
-<p>Then, I reimplemented this library in Python, to generate readable Bloom filters for the JavaScript script.</p>
968
-<h3>Server side</h3>
969
-<p>The generation script takes every articles in a given directory and for each of them:</p>
970
-<ol>
971
-<li>It gets a set of all the words in this article, ignoring too short words. </li>
972
-<li>It applies <a href="http://tartarus.org/martin/PorterStemmer/">Porter Stemming Algorithm</a> to reduce drastically the number of words to keep. </li>
973
-<li>It generates a Bloom filters containing all of these words.</li>
974
-</ol>
975
-<p>Finally, it concatenates all the per article Bloom filters in a binary file, to be sent to the client. It also generates a JSON index mapping the id of the Bloom filter in the binary file to the corresponding URL and title for each article.</p>
976
-<h3>Client side</h3>
977
-<p>Upon loading, the JavaScript script downloads the binary file (see <a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data">this MDN doc</a> for more details) containing the Bloom filters and the JSON index, and regenerate BloomFilters on the client side.</p>
978
-<p>When the client searches for something, the JavaScript script splits the query in words and iterate over the Bloom filters to search for the words. That's it =)</p>
979
-<h2>(Fun) facts found while reimplementing the Bloom filters library in Python</h2>
980
-<p>First problem I had to deal with&nbsp;: the difference between JavaScript <code>Number</code> type and Python <code>int</code>. JavaScript has only one type for all numbers (<code>int</code> or <code>floats</code>) and it is <code>Number</code> (see <a href="https://stackoverflow.com/questions/307179/what-is-javascripts-highest-integer-value-that-a-number-can-go-to-without-losin">this SO thread</a>). They are 64-bit floating point values, with a magnitude no greater than 2<sup>53</sup>. However, when doing bitwise operations, they are casted to 32 bits before doing the operation. This is something to take care of, because Python's <code>int</code> can be 64 bits (<a href="http://legacy.python.org/dev/peps/pep-0237/">http://legacy.python.org/dev/peps/pep-0237/</a>). Then, when a bitwise operation overflows in JavaScript, it may not overflow the same way in Python.</p>
981
-<p>The solution to this problem was to use <code>ctypes.c_int</code> in Python for bitwise operations, as proposed <a href="https://stackoverflow.com/questions/1694507/difference-between-operator-in-js-and-python">here</a>.</p>
982
-<p>Another problem was the difference between modulo behaviour with negative numbers in Python and in JavaScript. Unlike C, C++ and JavaScript, Python's modulo operator (%) always return a number having the same sign as the divisor (<a href="https://stackoverflow.com/questions/3883004/negative-numbers-modulo-in-python">Source</a>). Then, we have to reimplement the C behaviour in a modulo function in Python.</p>
983
-<p>Finally, there was no “shift right adding zeros” (logical right shift) in Python, contrary to JS, see <a href="https://stackoverflow.com/questions/5832982/how-to-get-the-logical-right-binary-shift-in-python">this SO thread</a>. </p>
984
-		<footer><p class="date">Le 08/11/2014 à 18:45</p>
985
-		<p class="tags">Tags : <a href="//phyks.me/tags/Dev.html">Dev</a>, <a href="//phyks.me/tags/Web.html">Web</a></p></footer>
986
-	</div>
987
-</article>
988 966
 <p class="archives"><a href="//phyks.me/archives.html">Archives</a></p>            </div>
989 967
             <footer id="rss">
990 968
                 <p><a href="//phyks.me/rss.xml"><img src="//phyks.me/img/rss.png" alt="RSS"/></a></p>

+ 38
- 60
blog/rss.xml View File

@@ -7,7 +7,44 @@
7 7
 		<language>fr</language>
8 8
 		<copyright>CC BY</copyright>
9 9
 		<webMaster>webmaster@phyks.me (Phyks)</webMaster>
10
-		<lastBuildDate>Sat, 26 Dec 2015 16:52:59 -0000</lastBuildDate>
10
+		<lastBuildDate>Sat, 26 Dec 2015 21:18:05 -0000</lastBuildDate>
11
+		<item>
12
+			<title>Localizing a webapp with webL10n.js</title>
13
+			<link>http://phyks.me/2015/12/localizing_webapp.html</link>
14
+			<guid isPermaLink="true">http://phyks.me/2015/12/localizing_webapp.html</guid>
15
+			<description>
16
+
17
+
18
+
19
+I am currently working on a Velib webapp. With Élie, we modularized everything so that the backend API can be edited easily, and adapted to any other bike sharing system, hence we wanted it to be easily localizable and looked for solutions compatible with as much browsers as possibl…</description>
20
+			<content:encoded><![CDATA[<div class="article">
21
+<header></header>
22
+<!-- 
23
+    @author=Phyks
24
+    @date=26122015-2317
25
+    @title=Localizing a webapp with webL10n.js
26
+    @tags=Localization,Webapp,JavaScript
27
+-->
28
+<p>I am currently working on a <a href="https://github.com/hackEns/VelibFxos">Velib webapp</a>. With <a href="http://blog.exppad.com/">Élie</a>, we modularized everything so that the backend API can be edited easily, and adapted to any other bike sharing system, hence we wanted it to be easily localizable and looked for solutions compatible with as much browsers as possible. We finally chose <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>. Here are some explanations about it and how to use it.</p>
29
+<h2>Why webL10n.js?</h2>
30
+<p>First thing is: why choosing webL10n.js instead of anything else? We found basically four solutions: <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>, <a href="https://github.com/l20n/l20n.js">L20n.js</a>, <a href="https://github.com/SlexAxton/Jed">Jed</a> and <a href="https://github.com/mozilla-b2g/gaia/blob/master/shared/js/l10n.js">a modified version of webL10n.js</a> used in Gaia.</p>
31
+<p>Jed takes a really different approach and, especially as we are not really familiar with localizing content, we found it more difficult to use and integrate.</p>
32
+<p>The three others take a really simple approach. They use extra <code>data-*</code> attribute on any tag to replace on the fly the <code>textContent</code> of the node by a translation found in a formatted file. It is really easy to integrate, use and tweak. They support advanced features such as pluralization, HTML modifications, responsive localization (to use a different localization file on small screens), etc.</p>
33
+<p>WebL10n.js and the modified version in Gaia are basically the same, except that the one in Gaia dropped hacks to add support in some old browsers such as IE6. Plus webL10n is in a separate git repo which is easy to track, so I'd rather go with this one. But the documentation is not really complete and <a href="https://developer.mozilla.org/en-US/Apps/Build/Localization/Getting_started_with_app_localization#Add_l10n.js">the associated MDN wiki page</a> is outdated. Hence this blog post :) Don't worry about the lack of recent commits on webL10n.js, it is stable and usable (and still maintained and supported by <a href="http://www.fabiencazenave.org/">kaze</a>).</p>
34
+<p>L20n.js is the latest Mozilla project aiming at replacing webL10n.js. I had many problems with it, because the API keeps moving, and no doc is in sync with the code. Downloadable version exposes a totally different API than the one in the git repo, and the doc is not really helpful concerning which version should be considered stable. Plus the <code>l20n</code> file format is really weird and I'd rather not reinvent the wheel and go with standard <code>properties</code> file to ease translation for contributors.</p>
35
+<h2>Demo and extra infos</h2>
36
+<p>For more informations, you can refer to the <a href="https://github.com/fabi1cazenave/webL10n/blob/master/README.md">README</a>.</p>
37
+<p>For an app using it, you can have a look at <a href="https://github.com/hackEns/VelibFxos">our VelibFxos webapp</a>, espcially <a href="https://github.com/hackEns/VelibFxos/blob/v2/l10n/">this folder</a>. You can also see it in your browser at <a href="https://velib.phyks.me/">https://velib.phyks.me/</a> (under heavy work in progress, so might break from time to time).</p>
38
+<p><em>Note</em>: Note that there is a bug when mixing pluralization and <code>innerHTML</code>, which can be worked around. See <a href="https://github.com/fabi1cazenave/webL10n/issues/75">this Github issue</a>. </p>
39
+<footer>
40
+<p class="tags">Tags : <a href="http://phyks.me/tags/Localization.html">Localization</a>, <a href="http://phyks.me/tags/Webapp.html">Webapp</a>, <a href="http://phyks.me/tags/JavaScript.html">JavaScript</a></p></footer>
41
+</div>]]></content:encoded>
42
+			<pubDate>Sat, 26 Dec 2015 21:17:00 -0000</pubDate>
43
+			<category>Localization</category>
44
+			<category>Webapp</category>
45
+			<category>JavaScript</category>
46
+			<author>webmaster@phyks.me (Phyks)</author>
47
+		</item>
11 48
 		<item>
12 49
 			<title>Let's add some metadata on arXiv!</title>
13 50
 			<link>http://phyks.me/2015/12/putting_metadata_on_arxiv.html</link>
@@ -1008,64 +1045,5 @@ Starting from yesterday, my server (phyks.me) should be available using ipv6. Th
1008 1045
 			<category>Phyks</category>
1009 1046
 			<author>webmaster@phyks.me (Phyks)</author>
1010 1047
 		</item>
1011
-		<item>
1012
-			<title>Proof-of-concept: BloomySearch, a (JavaScript) client-side search engine for static websites</title>
1013
-			<link>http://phyks.me/2014/11/bloomysearch.html</link>
1014
-			<guid isPermaLink="true">http://phyks.me/2014/11/bloomysearch.html</guid>
1015
-			<description>
1016
-
1017
-
1018
-
1019
-Overview
1020
-Many websites and blogs are statically generated and the webserver only serves static file…</description>
1021
-			<content:encoded><![CDATA[<div class="article">
1022
-<header></header>
1023
-<!-- 
1024
-    @author=Phyks
1025
-    @date=08112014-1845
1026
-    @title=Proof-of-concept: BloomySearch, a (JavaScript) client-side search engine for static websites
1027
-    @tags=Dev, Web
1028
--->
1029
-<h2>Overview</h2>
1030
-<p>Many websites and blogs are statically generated and the webserver only serves static files. It is the case of many doc websites and more and more blogs, starting from this one, as <a href="http://jekyllrb.com/">Jekyll</a> / <a href="http://blog.getpelican.com/">Pelican</a> develops.</p>
1031
-<p>This is really useful to reduce the complexity of the website and the load on the webserver. All the complex logic is done at the generation.</p>
1032
-<p>However, this also means you do not have dynamic pages on your website to handle search queries. Then, you are left with two (or three) choices :</p>
1033
-<ol>
1034
-<li>Use an external search engine, such as an embedded Google search box. This raises some privacy concerns and make you depends on an external service. </li>
1035
-<li>(Use a JS search engine such as the <a href="http://www.airpair.com/angularjs#/10-filters-core-">filters</a> provided by Angular.JS. This only works on the displayed content, and is not a real solution). </li>
1036
-<li>Stop worrying about search engine on your website and let the users <code>wget</code>-ing and <code>grep</code>-ing your website on their computers. This is not the most user-friendly solution…</li>
1037
-</ol>
1038
-<p>There are a couple of solutions around, mostly based on <a href="http://lunrjs.com/">Lunr.js</a> which generates an index from the articles available, and use this index for fulltext search. This is the best solution I found so far but it is still not perfect. Although there is a stemmer and an index generation to reduce the amount of data to be transferred, the data is not stored in a very efficient way, and the full index is sent as JSON. An example implementation for Jekyll is available through <a href="https://github.com/slashdotdash/jekyll-lunr-js-search">the jekyll-lunr-js-search plugin</a>.</p>
1039
-<p>I had the idea of a client side search engine in mind for a while, but was facing the same problem as Lunr.js: how not to send a full (very large) index over the network to every single client ? Not having an optimized data structure would basically mean sending twice the content of the website to the client. It may not be a practical problem nowadays, as transfer speed is not always the limiting resource, but it is still not to be considered as a good practice, in my opinion, especially if your website might be accessed from mobile devices.</p>
1040
-<p>I came accross <a href="http://www.stavros.io/posts/bloom-filter-search-engine/?print">this article</a> from Stavros Korokithakis and thought something similar could be achieved directly in the browser. Instead of using a standard dictionary to store the index, this article proposes to use a Bloom filter per article. Bloom filters are very interesting probabilistic structures which can store whether an element is or not in a set, with a fixed number of bits. It can return false positives: if an element is in the set, it always returns <code>True</code>, but if an element is not in the set, it may say it is actually in, with a small probability. <a href="https://en.wikipedia.org/wiki/Bloom_filter">Wikipedia page</a> on the subject has all the necessary stuff to understand these data structures.</p>
1041
-<p>I wrote it in the context of my blog, which means a Python script to generate the index at pages generation, and a client side search engine in JavaScript, running in browser.</p>
1042
-<p>A demo is available <a href="https://phyks.github.io/BloomySearch/">here</a>. It contains all the articles of my blog, as of writing this article, totalizing 160k characters, and only 7kB of index, allowing 10% of false positives, which may be a bit too much for a really reliable search engine. Reducing the error rate will lead to an increase in the index size (11kB for 1% of false positives and the same amount of characters).</p>
1043
-<h2>Details of the implementation</h2>
1044
-<p>As JavaScript is not the easier language to use for hashing and binary data manipulation, I started by implementing the client side search engine. Then, it would be easier to adapt the Python code to the JS lib than doing the contrary. Actually, I found <a href="https://github.com/jasondavies/bloomfilter.js">this bloomfilters.js library</a> from Jason Davies which was doing most of the job and did not need many modifications. I edited it a bit to support a construction with a <code>capacity</code> and an <code>error_rate</code>, instead of an explicit number of bits and times to apply the hashing function. This forked version is available <a href="https://github.com/Phyks/bloomfilter.js/blob/master/bloomfilter.js">here</a>.</p>
1045
-<p>Then, I reimplemented this library in Python, to generate readable Bloom filters for the JavaScript script.</p>
1046
-<h3>Server side</h3>
1047
-<p>The generation script takes every articles in a given directory and for each of them:</p>
1048
-<ol>
1049
-<li>It gets a set of all the words in this article, ignoring too short words. </li>
1050
-<li>It applies <a href="http://tartarus.org/martin/PorterStemmer/">Porter Stemming Algorithm</a> to reduce drastically the number of words to keep. </li>
1051
-<li>It generates a Bloom filters containing all of these words.</li>
1052
-</ol>
1053
-<p>Finally, it concatenates all the per article Bloom filters in a binary file, to be sent to the client. It also generates a JSON index mapping the id of the Bloom filter in the binary file to the corresponding URL and title for each article.</p>
1054
-<h3>Client side</h3>
1055
-<p>Upon loading, the JavaScript script downloads the binary file (see <a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data">this MDN doc</a> for more details) containing the Bloom filters and the JSON index, and regenerate BloomFilters on the client side.</p>
1056
-<p>When the client searches for something, the JavaScript script splits the query in words and iterate over the Bloom filters to search for the words. That's it =)</p>
1057
-<h2>(Fun) facts found while reimplementing the Bloom filters library in Python</h2>
1058
-<p>First problem I had to deal with : the difference between JavaScript <code>Number</code> type and Python <code>int</code>. JavaScript has only one type for all numbers (<code>int</code> or <code>floats</code>) and it is <code>Number</code> (see <a href="https://stackoverflow.com/questions/307179/what-is-javascripts-highest-integer-value-that-a-number-can-go-to-without-losin">this SO thread</a>). They are 64-bit floating point values, with a magnitude no greater than 2<sup>53</sup>. However, when doing bitwise operations, they are casted to 32 bits before doing the operation. This is something to take care of, because Python's <code>int</code> can be 64 bits (<a href="http://legacy.python.org/dev/peps/pep-0237/">http://legacy.python.org/dev/peps/pep-0237/</a>). Then, when a bitwise operation overflows in JavaScript, it may not overflow the same way in Python.</p>
1059
-<p>The solution to this problem was to use <code>ctypes.c_int</code> in Python for bitwise operations, as proposed <a href="https://stackoverflow.com/questions/1694507/difference-between-operator-in-js-and-python">here</a>.</p>
1060
-<p>Another problem was the difference between modulo behaviour with negative numbers in Python and in JavaScript. Unlike C, C++ and JavaScript, Python's modulo operator (%) always return a number having the same sign as the divisor (<a href="https://stackoverflow.com/questions/3883004/negative-numbers-modulo-in-python">Source</a>). Then, we have to reimplement the C behaviour in a modulo function in Python.</p>
1061
-<p>Finally, there was no “shift right adding zeros” (logical right shift) in Python, contrary to JS, see <a href="https://stackoverflow.com/questions/5832982/how-to-get-the-logical-right-binary-shift-in-python">this SO thread</a>. </p>
1062
-<footer>
1063
-<p class="tags">Tags : <a href="http://phyks.me/tags/Dev.html">Dev</a>, <a href="http://phyks.me/tags/Web.html">Web</a></p></footer>
1064
-</div>]]></content:encoded>
1065
-			<pubDate>Sat, 08 Nov 2014 16:45:00 -0000</pubDate>
1066
-			<category>Dev</category>
1067
-			<category>Web</category>
1068
-			<author>webmaster@phyks.me (Phyks)</author>
1069
-		</item>
1070 1048
 	</channel>
1071 1049
 </rss>

+ 2
- 2
blog/tags/Arch.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Autohébergement.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/CoffeeShops.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/DIY.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Dev.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Development.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Devops.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Game Engine.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/GeoData.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 31
- 2
blog/tags/JavaScript.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>
@@ -45,6 +45,35 @@
45 45
                 <div id="articles">
46 46
 <article>
47 47
 	<aside>
48
+		<p class="day">26</p>
49
+		<p class="month">Décembre</p>
50
+	</aside>
51
+	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=26122015-2317
56
+    @title=Localizing a webapp with webL10n.js
57
+    @tags=Localization,Webapp,JavaScript
58
+-->
59
+
60
+<p>I am currently working on a <a href="https://github.com/hackEns/VelibFxos">Velib webapp</a>. With <a href="http://blog.exppad.com/">Élie</a>, we modularized everything so that the backend API can be edited easily, and adapted to any other bike sharing system, hence we wanted it to be easily localizable and looked for solutions compatible with as much browsers as possible. We finally chose <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>. Here are some explanations about it and how to use it.</p>
61
+<h2>Why webL10n.js?</h2>
62
+<p>First thing is: why choosing webL10n.js instead of anything else? We found basically four solutions: <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>, <a href="https://github.com/l20n/l20n.js">L20n.js</a>, <a href="https://github.com/SlexAxton/Jed">Jed</a> and <a href="https://github.com/mozilla-b2g/gaia/blob/master/shared/js/l10n.js">a modified version of webL10n.js</a> used in Gaia.</p>
63
+<p>Jed takes a really different approach and, especially as we are not really familiar with localizing content, we found it more difficult to use and integrate.</p>
64
+<p>The three others take a really simple approach. They use extra <code>data-*</code> attribute on any tag to replace on the fly the <code>textContent</code> of the node by a translation found in a formatted file. It is really easy to integrate, use and tweak. They support advanced features such as pluralization, HTML modifications, responsive localization (to use a different localization file on small screens), etc.</p>
65
+<p>WebL10n.js and the modified version in Gaia are basically the same, except that the one in Gaia dropped hacks to add support in some old browsers such as IE6. Plus webL10n is in a separate git repo which is easy to track, so I'd rather go with this one. But the documentation is not really complete and <a href="https://developer.mozilla.org/en-US/Apps/Build/Localization/Getting_started_with_app_localization#Add_l10n.js">the associated MDN wiki page</a> is outdated. Hence this blog post&nbsp;:) Don't worry about the lack of recent commits on webL10n.js, it is stable and usable (and still maintained and supported by <a href="http://www.fabiencazenave.org/">kaze</a>).</p>
66
+<p>L20n.js is the latest Mozilla project aiming at replacing webL10n.js. I had many problems with it, because the API keeps moving, and no doc is in sync with the code. Downloadable version exposes a totally different API than the one in the git repo, and the doc is not really helpful concerning which version should be considered stable. Plus the <code>l20n</code> file format is really weird and I'd rather not reinvent the wheel and go with standard <code>properties</code> file to ease translation for contributors.</p>
67
+<h2>Demo and extra infos</h2>
68
+<p>For more informations, you can refer to the <a href="https://github.com/fabi1cazenave/webL10n/blob/master/README.md">README</a>.</p>
69
+<p>For an app using it, you can have a look at <a href="https://github.com/hackEns/VelibFxos">our VelibFxos webapp</a>, espcially <a href="https://github.com/hackEns/VelibFxos/blob/v2/l10n/">this folder</a>. You can also see it in your browser at <a href="https://velib.phyks.me/">https://velib.phyks.me/</a> (under heavy work in progress, so might break from time to time).</p>
70
+<p><em>Note</em>: Note that there is a bug when mixing pluralization and <code>innerHTML</code>, which can be worked around. See <a href="https://github.com/fabi1cazenave/webL10n/issues/75">this Github issue</a>. </p>
71
+		<footer><p class="date">Le 26/12/2015 à 23:17</p>
72
+		<p class="tags">Tags : <a href="//phyks.me/tags/Localization.html">Localization</a>, <a href="//phyks.me/tags/Webapp.html">Webapp</a>, <a href="//phyks.me/tags/JavaScript.html">JavaScript</a></p></footer>
73
+	</div>
74
+</article>
75
+<article>
76
+	<aside>
48 77
 		<p class="day">14</p>
49 78
 		<p class="month">Avril</p>
50 79
 	</aside>

+ 2
- 2
blog/tags/Known.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Libre.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Linux.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 81
- 0
blog/tags/Localization.html View File

@@ -0,0 +1,81 @@
1
+<!DOCTYPE html>
2
+<html lang="fr">
3
+    <head>
4
+        <meta charset="utf-8">
5
+        <title>Phyks' blog - tags/Localization</title>
6
+		<link rel="stylesheet" href="//phyks.me/design.css"/>
7
+        <link type="text/plain" rel="author" href="//phyks.me/humans.txt"/>
8
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
+        <link rel="alternate" type="application/rss+xml" title="RSS" href="//phyks.me/rss.xml" />
10
+    </head>
11
+    <body>
12
+        <div id="wrapper">
13
+            <!-- Sidebar -->
14
+                <aside id="sidebar-wrapper">
15
+                    <header><h1><a href="//phyks.me">~Phyks</a></h1></header>
16
+
17
+                    <h2>Catégories</h2>
18
+                        <nav id="sidebar-tags">
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20
+                        </nav>
21
+
22
+                    <h2>Derniers articles</h2>
23
+                        <ul id="sidebar-articles">
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25
+                        </ul>
26
+
27
+                    <h2>Liens</h2>
28
+                        <ul id="sidebar-links">
29
+                            <li><a href="//phyks.me/contact.html" title="Contact">Me contacter</a></li>
30
+                            <li class="monospace"><a href="//links.phyks.me" title="Mon Shaarli">find ~phyks -type l</a></li>
31
+                            <li><a href="https://github.com/phyks/" rel="me" title="Github">Mon Github</a></li>
32
+                            <li><a href="//phyks.me/divers.html" title="Divers">Divers</a></li>
33
+                        </ul>
34
+                </aside>
35
+
36
+            <!-- Page content -->
37
+                <header id="header">
38
+                    <h1><a href="//phyks.me">~Phyks</a></h1>
39
+                </header>
40
+
41
+                <div id="note_responsive">
42
+                    <p><em>Note</em> : Cliquez sur la bande bleue à gauche pour faire apparaître le menu.</p>
43
+                </div>
44
+
45
+                <div id="articles">
46
+<article>
47
+	<aside>
48
+		<p class="day">26</p>
49
+		<p class="month">Décembre</p>
50
+	</aside>
51
+	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=26122015-2317
56
+    @title=Localizing a webapp with webL10n.js
57
+    @tags=Localization,Webapp,JavaScript
58
+-->
59
+
60
+<p>I am currently working on a <a href="https://github.com/hackEns/VelibFxos">Velib webapp</a>. With <a href="http://blog.exppad.com/">Élie</a>, we modularized everything so that the backend API can be edited easily, and adapted to any other bike sharing system, hence we wanted it to be easily localizable and looked for solutions compatible with as much browsers as possible. We finally chose <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>. Here are some explanations about it and how to use it.</p>
61
+<h2>Why webL10n.js?</h2>
62
+<p>First thing is: why choosing webL10n.js instead of anything else? We found basically four solutions: <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>, <a href="https://github.com/l20n/l20n.js">L20n.js</a>, <a href="https://github.com/SlexAxton/Jed">Jed</a> and <a href="https://github.com/mozilla-b2g/gaia/blob/master/shared/js/l10n.js">a modified version of webL10n.js</a> used in Gaia.</p>
63
+<p>Jed takes a really different approach and, especially as we are not really familiar with localizing content, we found it more difficult to use and integrate.</p>
64
+<p>The three others take a really simple approach. They use extra <code>data-*</code> attribute on any tag to replace on the fly the <code>textContent</code> of the node by a translation found in a formatted file. It is really easy to integrate, use and tweak. They support advanced features such as pluralization, HTML modifications, responsive localization (to use a different localization file on small screens), etc.</p>
65
+<p>WebL10n.js and the modified version in Gaia are basically the same, except that the one in Gaia dropped hacks to add support in some old browsers such as IE6. Plus webL10n is in a separate git repo which is easy to track, so I'd rather go with this one. But the documentation is not really complete and <a href="https://developer.mozilla.org/en-US/Apps/Build/Localization/Getting_started_with_app_localization#Add_l10n.js">the associated MDN wiki page</a> is outdated. Hence this blog post&nbsp;:) Don't worry about the lack of recent commits on webL10n.js, it is stable and usable (and still maintained and supported by <a href="http://www.fabiencazenave.org/">kaze</a>).</p>
66
+<p>L20n.js is the latest Mozilla project aiming at replacing webL10n.js. I had many problems with it, because the API keeps moving, and no doc is in sync with the code. Downloadable version exposes a totally different API than the one in the git repo, and the doc is not really helpful concerning which version should be considered stable. Plus the <code>l20n</code> file format is really weird and I'd rather not reinvent the wheel and go with standard <code>properties</code> file to ease translation for contributors.</p>
67
+<h2>Demo and extra infos</h2>
68
+<p>For more informations, you can refer to the <a href="https://github.com/fabi1cazenave/webL10n/blob/master/README.md">README</a>.</p>
69
+<p>For an app using it, you can have a look at <a href="https://github.com/hackEns/VelibFxos">our VelibFxos webapp</a>, espcially <a href="https://github.com/hackEns/VelibFxos/blob/v2/l10n/">this folder</a>. You can also see it in your browser at <a href="https://velib.phyks.me/">https://velib.phyks.me/</a> (under heavy work in progress, so might break from time to time).</p>
70
+<p><em>Note</em>: Note that there is a bug when mixing pluralization and <code>innerHTML</code>, which can be worked around. See <a href="https://github.com/fabi1cazenave/webL10n/issues/75">this Github issue</a>. </p>
71
+		<footer><p class="date">Le 26/12/2015 à 23:17</p>
72
+		<p class="tags">Tags : <a href="//phyks.me/tags/Localization.html">Localization</a>, <a href="//phyks.me/tags/Webapp.html">Webapp</a>, <a href="//phyks.me/tags/JavaScript.html">JavaScript</a></p></footer>
73
+	</div>
74
+</article>
75
+            </div>
76
+            <footer id="rss">
77
+                <p><a href="//phyks.me/rss.xml"><img src="//phyks.me/img/rss.png" alt="RSS"/></a></p>
78
+            </footer>
79
+        </div>
80
+    </body>
81
+</html>

+ 2
- 2
blog/tags/Mobile.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/OpenAccess.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Phyks.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/RaspberryPi.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Science.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Selfhost.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Smartphone.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/TupperVim.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Vim.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Web.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 81
- 0
blog/tags/Webapp.html View File

@@ -0,0 +1,81 @@
1
+<!DOCTYPE html>
2
+<html lang="fr">
3
+    <head>
4
+        <meta charset="utf-8">
5
+        <title>Phyks' blog - tags/Webapp</title>
6
+		<link rel="stylesheet" href="//phyks.me/design.css"/>
7
+        <link type="text/plain" rel="author" href="//phyks.me/humans.txt"/>
8
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
+        <link rel="alternate" type="application/rss+xml" title="RSS" href="//phyks.me/rss.xml" />
10
+    </head>
11
+    <body>
12
+        <div id="wrapper">
13
+            <!-- Sidebar -->
14
+                <aside id="sidebar-wrapper">
15
+                    <header><h1><a href="//phyks.me">~Phyks</a></h1></header>
16
+
17
+                    <h2>Catégories</h2>
18
+                        <nav id="sidebar-tags">
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20
+                        </nav>
21
+
22
+                    <h2>Derniers articles</h2>
23
+                        <ul id="sidebar-articles">
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25
+                        </ul>
26
+
27
+                    <h2>Liens</h2>
28
+                        <ul id="sidebar-links">
29
+                            <li><a href="//phyks.me/contact.html" title="Contact">Me contacter</a></li>
30
+                            <li class="monospace"><a href="//links.phyks.me" title="Mon Shaarli">find ~phyks -type l</a></li>
31
+                            <li><a href="https://github.com/phyks/" rel="me" title="Github">Mon Github</a></li>
32
+                            <li><a href="//phyks.me/divers.html" title="Divers">Divers</a></li>
33
+                        </ul>
34
+                </aside>
35
+
36
+            <!-- Page content -->
37
+                <header id="header">
38
+                    <h1><a href="//phyks.me">~Phyks</a></h1>
39
+                </header>
40
+
41
+                <div id="note_responsive">
42
+                    <p><em>Note</em> : Cliquez sur la bande bleue à gauche pour faire apparaître le menu.</p>
43
+                </div>
44
+
45
+                <div id="articles">
46
+<article>
47
+	<aside>
48
+		<p class="day">26</p>
49
+		<p class="month">Décembre</p>
50
+	</aside>
51
+	<div class="article">
52
+		<header><h1 class="article_title"><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></h1></header>
53
+		<!-- 
54
+    @author=Phyks
55
+    @date=26122015-2317
56
+    @title=Localizing a webapp with webL10n.js
57
+    @tags=Localization,Webapp,JavaScript
58
+-->
59
+
60
+<p>I am currently working on a <a href="https://github.com/hackEns/VelibFxos">Velib webapp</a>. With <a href="http://blog.exppad.com/">Élie</a>, we modularized everything so that the backend API can be edited easily, and adapted to any other bike sharing system, hence we wanted it to be easily localizable and looked for solutions compatible with as much browsers as possible. We finally chose <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>. Here are some explanations about it and how to use it.</p>
61
+<h2>Why webL10n.js?</h2>
62
+<p>First thing is: why choosing webL10n.js instead of anything else? We found basically four solutions: <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>, <a href="https://github.com/l20n/l20n.js">L20n.js</a>, <a href="https://github.com/SlexAxton/Jed">Jed</a> and <a href="https://github.com/mozilla-b2g/gaia/blob/master/shared/js/l10n.js">a modified version of webL10n.js</a> used in Gaia.</p>
63
+<p>Jed takes a really different approach and, especially as we are not really familiar with localizing content, we found it more difficult to use and integrate.</p>
64
+<p>The three others take a really simple approach. They use extra <code>data-*</code> attribute on any tag to replace on the fly the <code>textContent</code> of the node by a translation found in a formatted file. It is really easy to integrate, use and tweak. They support advanced features such as pluralization, HTML modifications, responsive localization (to use a different localization file on small screens), etc.</p>
65
+<p>WebL10n.js and the modified version in Gaia are basically the same, except that the one in Gaia dropped hacks to add support in some old browsers such as IE6. Plus webL10n is in a separate git repo which is easy to track, so I'd rather go with this one. But the documentation is not really complete and <a href="https://developer.mozilla.org/en-US/Apps/Build/Localization/Getting_started_with_app_localization#Add_l10n.js">the associated MDN wiki page</a> is outdated. Hence this blog post&nbsp;:) Don't worry about the lack of recent commits on webL10n.js, it is stable and usable (and still maintained and supported by <a href="http://www.fabiencazenave.org/">kaze</a>).</p>
66
+<p>L20n.js is the latest Mozilla project aiming at replacing webL10n.js. I had many problems with it, because the API keeps moving, and no doc is in sync with the code. Downloadable version exposes a totally different API than the one in the git repo, and the doc is not really helpful concerning which version should be considered stable. Plus the <code>l20n</code> file format is really weird and I'd rather not reinvent the wheel and go with standard <code>properties</code> file to ease translation for contributors.</p>
67
+<h2>Demo and extra infos</h2>
68
+<p>For more informations, you can refer to the <a href="https://github.com/fabi1cazenave/webL10n/blob/master/README.md">README</a>.</p>
69
+<p>For an app using it, you can have a look at <a href="https://github.com/hackEns/VelibFxos">our VelibFxos webapp</a>, espcially <a href="https://github.com/hackEns/VelibFxos/blob/v2/l10n/">this folder</a>. You can also see it in your browser at <a href="https://velib.phyks.me/">https://velib.phyks.me/</a> (under heavy work in progress, so might break from time to time).</p>
70
+<p><em>Note</em>: Note that there is a bug when mixing pluralization and <code>innerHTML</code>, which can be worked around. See <a href="https://github.com/fabi1cazenave/webL10n/issues/75">this Github issue</a>. </p>
71
+		<footer><p class="date">Le 26/12/2015 à 23:17</p>
72
+		<p class="tags">Tags : <a href="//phyks.me/tags/Localization.html">Localization</a>, <a href="//phyks.me/tags/Webapp.html">Webapp</a>, <a href="//phyks.me/tags/JavaScript.html">JavaScript</a></p></footer>
73
+	</div>
74
+</article>
75
+            </div>
76
+            <footer id="rss">
77
+                <p><a href="//phyks.me/rss.xml"><img src="//phyks.me/img/rss.png" alt="RSS"/></a></p>
78
+            </footer>
79
+        </div>
80
+    </body>
81
+</html>

+ 2
- 2
blog/tags/Weechat.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/aNimble.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/workstation.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 2
- 2
blog/tags/Électronique.html View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 29
- 0
gen/2015/12/localizing_webapp.gen View File

@@ -0,0 +1,29 @@
1
+<article>
2
+	<aside>
3
+		<p class="day">26</p>
4
+		<p class="month">Décembre</p>
5
+	</aside>
6
+	<div class="article">
7
+		<header><h1 class="article_title"><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></h1></header>
8
+		<!-- 
9
+    @author=Phyks
10
+    @date=26122015-2317
11
+    @title=Localizing a webapp with webL10n.js
12
+    @tags=Localization,Webapp,JavaScript
13
+-->
14
+
15
+<p>I am currently working on a <a href="https://github.com/hackEns/VelibFxos">Velib webapp</a>. With <a href="http://blog.exppad.com/">Élie</a>, we modularized everything so that the backend API can be edited easily, and adapted to any other bike sharing system, hence we wanted it to be easily localizable and looked for solutions compatible with as much browsers as possible. We finally chose <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>. Here are some explanations about it and how to use it.</p>
16
+<h2>Why webL10n.js?</h2>
17
+<p>First thing is: why choosing webL10n.js instead of anything else? We found basically four solutions: <a href="https://github.com/fabi1cazenave/webL10n">webL10n.js</a>, <a href="https://github.com/l20n/l20n.js">L20n.js</a>, <a href="https://github.com/SlexAxton/Jed">Jed</a> and <a href="https://github.com/mozilla-b2g/gaia/blob/master/shared/js/l10n.js">a modified version of webL10n.js</a> used in Gaia.</p>
18
+<p>Jed takes a really different approach and, especially as we are not really familiar with localizing content, we found it more difficult to use and integrate.</p>
19
+<p>The three others take a really simple approach. They use extra <code>data-*</code> attribute on any tag to replace on the fly the <code>textContent</code> of the node by a translation found in a formatted file. It is really easy to integrate, use and tweak. They support advanced features such as pluralization, HTML modifications, responsive localization (to use a different localization file on small screens), etc.</p>
20
+<p>WebL10n.js and the modified version in Gaia are basically the same, except that the one in Gaia dropped hacks to add support in some old browsers such as IE6. Plus webL10n is in a separate git repo which is easy to track, so I'd rather go with this one. But the documentation is not really complete and <a href="https://developer.mozilla.org/en-US/Apps/Build/Localization/Getting_started_with_app_localization#Add_l10n.js">the associated MDN wiki page</a> is outdated. Hence this blog post&nbsp;:) Don't worry about the lack of recent commits on webL10n.js, it is stable and usable (and still maintained and supported by <a href="http://www.fabiencazenave.org/">kaze</a>).</p>
21
+<p>L20n.js is the latest Mozilla project aiming at replacing webL10n.js. I had many problems with it, because the API keeps moving, and no doc is in sync with the code. Downloadable version exposes a totally different API than the one in the git repo, and the doc is not really helpful concerning which version should be considered stable. Plus the <code>l20n</code> file format is really weird and I'd rather not reinvent the wheel and go with standard <code>properties</code> file to ease translation for contributors.</p>
22
+<h2>Demo and extra infos</h2>
23
+<p>For more informations, you can refer to the <a href="https://github.com/fabi1cazenave/webL10n/blob/master/README.md">README</a>.</p>
24
+<p>For an app using it, you can have a look at <a href="https://github.com/hackEns/VelibFxos">our VelibFxos webapp</a>, espcially <a href="https://github.com/hackEns/VelibFxos/blob/v2/l10n/">this folder</a>. You can also see it in your browser at <a href="https://velib.phyks.me/">https://velib.phyks.me/</a> (under heavy work in progress, so might break from time to time).</p>
25
+<p><em>Note</em>: Note that there is a bug when mixing pluralization and <code>innerHTML</code>, which can be worked around. See <a href="https://github.com/fabi1cazenave/webL10n/issues/75">this Github issue</a>. </p>
26
+		<footer><p class="date">Le 26/12/2015 à 23:17</p>
27
+		<p class="tags">Tags : <a href="//phyks.me/tags/Localization.html">Localization</a>, <a href="//phyks.me/tags/Webapp.html">Webapp</a>, <a href="//phyks.me/tags/JavaScript.html">JavaScript</a></p></footer>
28
+	</div>
29
+</article>

+ 2
- 2
gen/header.gen View File

@@ -16,12 +16,12 @@
16 16
 
17 17
                     <h2>Catégories</h2>
18 18
                         <nav id="sidebar-tags">
19
-                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
19
+                            <div class="tag"><a href="//phyks.me/tags/aNimble.html">/aNimble (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Arch.html">/Arch (48)</a> </div><div class="tag"><a href="//phyks.me/tags/Autohébergement.html">/Autohébergement (48)</a> </div><div class="tag"><a href="//phyks.me/tags/CoffeeShops.html">/CoffeeShops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Development.html">/Development (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Devops.html">/Devops (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Dev.html">/Dev (128)</a> </div><div class="tag"><a href="//phyks.me/tags/DIY.html">/DIY (33)</a> </div><div class="tag"><a href="//phyks.me/tags/Électronique.html">/Électronique (32)</a> </div><div class="tag"><a href="//phyks.me/tags/Game Engine.html">/Game Engine (1)</a> </div><div class="tag"><a href="//phyks.me/tags/GeoData.html">/GeoData (1)</a> </div><div class="tag"><a href="//phyks.me/tags/JavaScript.html">/JavaScript (2)</a> </div><div class="tag"><a href="//phyks.me/tags/Known.html">/Known (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Libre.html">/Libre (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Linux.html">/Linux (96)</a> </div><div class="tag"><a href="//phyks.me/tags/Localization.html">/Localization (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Mobile.html">/Mobile (1)</a> </div><div class="tag"><a href="//phyks.me/tags/OpenAccess.html">/OpenAccess (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Phyks.html">/Phyks (3)</a> </div><div class="tag"><a href="//phyks.me/tags/RaspberryPi.html">/RaspberryPi (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Science.html">/Science (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Selfhost.html">/Selfhost (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Smartphone.html">/Smartphone (32)</a> </div><div class="tag"><a href="//phyks.me/tags/TupperVim.html">/TupperVim (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Vim.html">/Vim (17)</a> </div><div class="tag"><a href="//phyks.me/tags/Webapp.html">/Webapp (1)</a> </div><div class="tag"><a href="//phyks.me/tags/Web.html">/Web (112)</a> </div><div class="tag"><a href="//phyks.me/tags/Weechat.html">/Weechat (32)</a> </div><div class="tag"><a href="//phyks.me/tags/workstation.html">/workstation (1)</a> </div>
20 20
                         </nav>
21 21
 
22 22
                     <h2>Derniers articles</h2>
23 23
                         <ul id="sidebar-articles">
24
-                            <li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/2015/04/partial_js.html">Blocking JavaScript on a per API basis</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
24
+                            <li><a href="//phyks.me/2015/12/localizing_webapp.html">Localizing a webapp with webL10n.js</a></li><li><a href="//phyks.me/2015/12/putting_metadata_on_arxiv.html">Let's add some metadata on arXiv!</a></li><li><a href="//phyks.me/2015/10/low_cost_telepresence.html">Doing low cost telepresence (for under $200)</a></li><li><a href="//phyks.me/2015/10/working_in_paris.html">Working on the go in Paris</a></li><li><a href="//phyks.me/2015/05/servos_rpi.html">Controlling servomotors on a Raspberry Pi</a></li><li><a href="//phyks.me/archives.html">Archives</a></li>
25 25
                         </ul>
26 26
 
27 27
                     <h2>Liens</h2>

+ 1
- 0
gen/tags/JavaScript.tmp View File

@@ -1 +1,2 @@
1 1
 2015/04/partial_js.md
2
+2015/12/localizing_webapp.md

+ 1
- 0
gen/tags/Localization.tmp View File

@@ -0,0 +1 @@
1
+2015/12/localizing_webapp.md

+ 1
- 0
gen/tags/Webapp.tmp View File

@@ -0,0 +1 @@
1
+2015/12/localizing_webapp.md

+ 30
- 0
raw/2015/12/localizing_webapp.md View File

@@ -0,0 +1,30 @@
1
+<!--
2
+	@author=Phyks
3
+	@date=26122015-2317
4
+	@title=Localizing a webapp with webL10n.js
5
+	@tags=Localization,Webapp,JavaScript
6
+-->
7
+
8
+I am currently working on a [Velib webapp](https://github.com/hackEns/VelibFxos). With [Élie](http://blog.exppad.com/), we modularized everything so that the backend API can be edited easily, and adapted to any other bike sharing system, hence we wanted it to be easily localizable and looked for solutions compatible with as much browsers as possible. We finally chose [webL10n.js](https://github.com/fabi1cazenave/webL10n). Here are some explanations about it and how to use it.
9
+
10
+## Why webL10n.js?
11
+
12
+First thing is: why choosing webL10n.js instead of anything else? We found basically four solutions: [webL10n.js](https://github.com/fabi1cazenave/webL10n), [L20n.js](https://github.com/l20n/l20n.js), [Jed](https://github.com/SlexAxton/Jed) and [a modified version of webL10n.js](https://github.com/mozilla-b2g/gaia/blob/master/shared/js/l10n.js) used in Gaia.
13
+
14
+Jed takes a really different approach and, especially as we are not really familiar with localizing content, we found it more difficult to use and integrate.
15
+
16
+The three others take a really simple approach. They use extra `data-*` attribute on any tag to replace on the fly the `textContent` of the node by a translation found in a formatted file. It is really easy to integrate, use and tweak. They support advanced features such as pluralization, HTML modifications, responsive localization (to use a different localization file on small screens), etc.
17
+
18
+WebL10n.js and the modified version in Gaia are basically the same, except that the one in Gaia dropped hacks to add support in some old browsers such as IE6. Plus webL10n is in a separate git repo which is easy to track, so I'd rather go with this one. But the documentation is not really complete and [the associated MDN wiki page](https://developer.mozilla.org/en-US/Apps/Build/Localization/Getting_started_with_app_localization#Add_l10n.js) is outdated. Hence this blog post :) Don't worry about the lack of recent commits on webL10n.js, it is stable and usable (and still maintained and supported by [kaze](http://www.fabiencazenave.org/)).
19
+
20
+L20n.js is the latest Mozilla project aiming at replacing webL10n.js. I had many problems with it, because the API keeps moving, and no doc is in sync with the code. Downloadable version exposes a totally different API than the one in the git repo, and the doc is not really helpful concerning which version should be considered stable. Plus the `l20n` file format is really weird and I'd rather not reinvent the wheel and go with standard `properties` file to ease translation for contributors.
21
+
22
+
23
+## Demo and extra infos
24
+
25
+For more informations, you can refer to the [README](https://github.com/fabi1cazenave/webL10n/blob/master/README.md).
26
+
27
+For an app using it, you can have a look at [our VelibFxos webapp](https://github.com/hackEns/VelibFxos), espcially [this folder](https://github.com/hackEns/VelibFxos/blob/v2/l10n/). You can also see it in your browser at [https://velib.phyks.me/](https://velib.phyks.me/) (under heavy work in progress, so might break from time to time).
28
+
29
+
30
+_Note_: Note that there is a bug when mixing pluralization and `innerHTML`, which can be worked around. See [this Github issue](https://github.com/fabi1cazenave/webL10n/issues/75).