diff --git a/website/package-lock.json b/website/package-lock.json
index bc7e2ff233afc6c933f65f9cbbb49d5a5babdaed..d89a97606988d27e36c61cc7fd6d098bb1bbf30a 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -11,7 +11,7 @@
             "dependencies": {
                 "ks-cheap-translator": "^0.1.0",
                 "mentalo-engine": "^0.2.2",
-                "object-to-html-renderer": "^1.1.1"
+                "object-to-html-renderer": "^1.3.0"
             },
             "devDependencies": {
                 "sass": "^1.32.0",
@@ -1295,9 +1295,9 @@
             }
         },
         "node_modules/object-to-html-renderer": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/object-to-html-renderer/-/object-to-html-renderer-1.1.3.tgz",
-            "integrity": "sha512-OWZd0lRBOQylycJEuFf9CfeYEOsylU5CUf44yFWN6JEE3MpVts1nSwLCIQpUCcASwHJ0qa33DpI3eNLwcXiDWA=="
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/object-to-html-renderer/-/object-to-html-renderer-1.3.0.tgz",
+            "integrity": "sha512-42I80O1u5VWJI1lLFt8XH2ig2sUwWuR8Mv1W6+7Fb4CJ8PF+TWfxDNd6e6XzfTGQPVDKuyrDl/V04QHi5Yfrgg=="
         },
         "node_modules/object.assign": {
             "version": "4.1.2",
@@ -3049,9 +3049,9 @@
             "dev": true
         },
         "object-to-html-renderer": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/object-to-html-renderer/-/object-to-html-renderer-1.1.3.tgz",
-            "integrity": "sha512-OWZd0lRBOQylycJEuFf9CfeYEOsylU5CUf44yFWN6JEE3MpVts1nSwLCIQpUCcASwHJ0qa33DpI3eNLwcXiDWA=="
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/object-to-html-renderer/-/object-to-html-renderer-1.3.0.tgz",
+            "integrity": "sha512-42I80O1u5VWJI1lLFt8XH2ig2sUwWuR8Mv1W6+7Fb4CJ8PF+TWfxDNd6e6XzfTGQPVDKuyrDl/V04QHi5Yfrgg=="
         },
         "object.assign": {
             "version": "4.1.2",
diff --git a/website/package.json b/website/package.json
index 1b7495af965cbb5d1c725223a223969918e768d3..df0623b988cd71b2798207d03d0ed8187755fdef 100644
--- a/website/package.json
+++ b/website/package.json
@@ -16,7 +16,7 @@
     "dependencies": {
         "ks-cheap-translator": "^0.1.0",
         "mentalo-engine": "^0.2.2",
-        "object-to-html-renderer": "^1.1.1"
+        "object-to-html-renderer": "^1.3.0"
     },
     "devDependencies": {
         "sass": "^1.32.0",
diff --git a/website/src/generic-components/image-carousel.js b/website/src/generic-components/image-carousel.js
index cd28b1b1c6cacc1ab910a1e767ea680328438905..a59315b5f122a5017a7db5b611809668e2de89c6 100644
--- a/website/src/generic-components/image-carousel.js
+++ b/website/src/generic-components/image-carousel.js
@@ -3,7 +3,7 @@
 class ImageCarousel {
     constructor(props) {
         this.props = props;
-        this.id = this.props.images.join("").replace(/\s\./g);
+        this.id = this.props.images.join("").replace(/[\s\./]/g, "");
         this.state = {
             showImageIndex: 0,
         };
@@ -12,12 +12,18 @@ class ImageCarousel {
     }
 
     run() {
-        this.runningInterval = setInterval(() => {
+        const runningInterval = setInterval(() => {
             let { showImageIndex } = this.state;
             const { images } = this.props;
             this.state.showImageIndex = showImageIndex < images.length - 1 ? ++showImageIndex : 0;
             this.refreshImage();
         }, this.RUN_INTERVAL);
+
+        obj2htm.registerAsyncSubscription(this.id, function () {
+            clearInterval(runningInterval)
+        });
+
+        this.runningInterval = runningInterval;
     }
 
     setImageIndex(i) {
@@ -27,6 +33,7 @@ class ImageCarousel {
     }
 
     refreshImage() {
+        console.log("refresh img", this.runningInterval, this.props.images)
         obj2htm.subRender(this.render(), document.getElementById(this.id), {
             mode: "replace",
         });
diff --git a/website/src/lib/web-page.js b/website/src/lib/web-page.js
index 39631cb3dd4f6c9ea1a0b0fc541ff05b13d02dcb..5324d202253cadfd2b7337ef5e1b496ce4ece5e3 100644
--- a/website/src/lib/web-page.js
+++ b/website/src/lib/web-page.js
@@ -10,6 +10,8 @@ class WebPage {
             this.id = "webpage-" + performance.now();
         }
 
+        this.translations_ready = false;
+
         translator.init({
             translations_url,
             supported_languages: ["fr", "en"],
@@ -17,11 +19,12 @@ class WebPage {
     }
 
     refresh() {
-        obj2htm.subRender(this.render(), document.getElementById(this.id), { mode: "replace" })
+        obj2htm.subRender(this.render(), document.getElementById(this.id), { mode: "replace" });
     }
 
     refresh_all() {
-        obj2htm.renderCycle()
+        this.translations_ready = true;
+        obj2htm.renderCycle();
     }
 }
 
diff --git a/website/src/pages/games/components/game-articles.js b/website/src/pages/games/components/game-articles.js
index 7ad6ad43703c7ab815a85cc786cba8de80e52249..b47b186c4531d0c238ff8dc89bc127c29893585f 100644
--- a/website/src/pages/games/components/game-articles.js
+++ b/website/src/pages/games/components/game-articles.js
@@ -11,7 +11,7 @@ class GameArticles {
             articles: [],
         };
         this.id = "game-articles-section";
-        this.loadArticles();
+        this.props.translations_ready && this.loadArticles();
     }
 
     loadArticles() {
diff --git a/website/src/pages/games/games.js b/website/src/pages/games/games.js
index 17ffd9371763a9b788fca0ffccd70564bdf7f97a..ed627df8c27bc71aa11d9cb06da9aecd39e5f100 100644
--- a/website/src/pages/games/games.js
+++ b/website/src/pages/games/games.js
@@ -40,7 +40,7 @@ class GamesPage extends WebPage {
                         },
                     ],
                 },
-                new GameArticles().render(),
+                new GameArticles({ translations_ready: this.translations_ready }).render(),
             ],
         };
     }