From 1c958d9079b6a564a2f2e55520526b7bb5922bd7 Mon Sep 17 00:00:00 2001 From: Pierre Jarriges <pierre.jarriges@tutanota.com> Date: Fri, 17 Jun 2022 13:57:07 +0200 Subject: [PATCH] handle static article pages change language --- .../src/article-vew-components/game-article.js | 2 -- .../article-vew-components/software-article.js | 2 -- website/src/homepage.js | 2 -- website/src/lib/web-page.js | 3 +++ .../pages/education/components/edu-articles.js | 2 -- website/src/pages/education/education.js | 2 -- .../src/pages/games/components/game-articles.js | 1 - website/src/pages/games/games.js | 2 -- .../components/software-articles.js | 1 - .../software-development.js | 2 -- website/src/template/components/navbar.js | 17 ++++++++++------- website/src/template/template.js | 6 ++---- 12 files changed, 15 insertions(+), 27 deletions(-) diff --git a/website/src/article-vew-components/game-article.js b/website/src/article-vew-components/game-article.js index ac0e379..94cf298 100644 --- a/website/src/article-vew-components/game-article.js +++ b/website/src/article-vew-components/game-article.js @@ -4,9 +4,7 @@ const ImageCarousel = require("../generic-components/image-carousel"); const { getArticleBody } = require("../lib/article-utils"); const { fetch_json_or_error_text } = require("../lib/fetch"); const { MentaloEngine } = require("mentalo-engine"); -const translator = require("ks-cheap-translator"); const { images_url, data_url } = require("../../constants"); -const t = translator.trad.bind(translator); class GameArticle { diff --git a/website/src/article-vew-components/software-article.js b/website/src/article-vew-components/software-article.js index dab32ac..0170cba 100644 --- a/website/src/article-vew-components/software-article.js +++ b/website/src/article-vew-components/software-article.js @@ -1,10 +1,8 @@ "use strict"; const ImageCarousel = require("../generic-components/image-carousel"); -const translator = require("ks-cheap-translator"); const { images_url } = require("../../constants"); const { getArticleBody } = require("../lib/article-utils"); -const t = translator.trad.bind(translator); class SoftwareArticle { diff --git a/website/src/homepage.js b/website/src/homepage.js index fc03455..3aff680 100644 --- a/website/src/homepage.js +++ b/website/src/homepage.js @@ -3,8 +3,6 @@ const { images_url } = require("../constants"); const ThemeCard = require("./home-page-components/theme-card"); const WebPage = require("./lib/web-page"); -const translator = require("ks-cheap-translator"); -const t = translator.trad.bind(translator); class HomePage extends WebPage { constructor() { diff --git a/website/src/lib/web-page.js b/website/src/lib/web-page.js index 5324d20..b497126 100644 --- a/website/src/lib/web-page.js +++ b/website/src/lib/web-page.js @@ -12,6 +12,9 @@ class WebPage { this.translations_ready = false; + window.t = translator.trad.bind(translator); + window.translator = translator; + translator.init({ translations_url, supported_languages: ["fr", "en"], diff --git a/website/src/pages/education/components/edu-articles.js b/website/src/pages/education/components/edu-articles.js index c3b41b3..fcf9092 100644 --- a/website/src/pages/education/components/edu-articles.js +++ b/website/src/pages/education/components/edu-articles.js @@ -1,7 +1,5 @@ "use strict"; const { loadArticles, sortArticles, renderPlaceholders } = require("../../../lib/article-utils"); -const translator = require("ks-cheap-translator"); -const t = translator.trad.bind(translator); const EduArticle = require("./edu-article"); class EduArticles { diff --git a/website/src/pages/education/education.js b/website/src/pages/education/education.js index ea04c92..2f9f80a 100644 --- a/website/src/pages/education/education.js +++ b/website/src/pages/education/education.js @@ -2,9 +2,7 @@ const { images_url } = require("../../../constants"); const WebPage = require("../../lib/web-page"); -const translator = require("ks-cheap-translator"); const EduArticles = require("./components/edu-articles"); -const t = translator.trad.bind(translator); const EDU_THEMES = [ { diff --git a/website/src/pages/games/components/game-articles.js b/website/src/pages/games/components/game-articles.js index 4f4ced6..fa26733 100644 --- a/website/src/pages/games/components/game-articles.js +++ b/website/src/pages/games/components/game-articles.js @@ -6,7 +6,6 @@ const { renderPlaceholders } = require("../../../lib/article-utils"); const GameThumb = require("./game-thumb"); -const translator = require("ks-cheap-translator"); class GameArticles { constructor(props) { diff --git a/website/src/pages/games/games.js b/website/src/pages/games/games.js index ed627df..0efb4d5 100644 --- a/website/src/pages/games/games.js +++ b/website/src/pages/games/games.js @@ -3,8 +3,6 @@ const { images_url } = require("../../../constants"); const WebPage = require("../../lib/web-page"); const GameArticles = require("./components/game-articles"); -const translator = require("ks-cheap-translator"); -const t = translator.trad.bind(translator); class GamesPage extends WebPage { render() { diff --git a/website/src/pages/software-development/components/software-articles.js b/website/src/pages/software-development/components/software-articles.js index 36a5a04..43219c0 100644 --- a/website/src/pages/software-development/components/software-articles.js +++ b/website/src/pages/software-development/components/software-articles.js @@ -2,7 +2,6 @@ const { loadArticles, sortArticles, renderPlaceholders } = require("../../../lib/article-utils"); const SoftwareThumb = require("./software-thumb"); -const translator = require("ks-cheap-translator"); class SoftwareArticles { constructor(props) { diff --git a/website/src/pages/software-development/software-development.js b/website/src/pages/software-development/software-development.js index a74945d..f41a096 100644 --- a/website/src/pages/software-development/software-development.js +++ b/website/src/pages/software-development/software-development.js @@ -3,8 +3,6 @@ const { images_url } = require("../../../constants"); const WebPage = require("../../lib/web-page"); const SoftwareArticles = require("./components/software-articles"); -const translator = require("ks-cheap-translator"); -const t = translator.trad.bind(translator); class SoftwareDevelopment extends WebPage { render() { diff --git a/website/src/template/components/navbar.js b/website/src/template/components/navbar.js index 74c88f1..2f3bf62 100644 --- a/website/src/template/components/navbar.js +++ b/website/src/template/components/navbar.js @@ -1,8 +1,6 @@ "use strict"; const { images_url } = require("../../../constants"); -const translator = require("ks-cheap-translator"); -const t = translator.trad.bind(translator); const NAV_MENU_ITEMS = [ { url: "/games/", text: "Jeux" }, @@ -34,10 +32,15 @@ class NavBar { }); } - handle_chang_lang(lang) { - translator.update_translations(lang).then(() => { - obj2htm.renderCycle(); - }).catch(err => console.log(err)); + handle_change_lang(lang) { + const url_path_chunks = location.pathname.split("/"); + const location_contains_locale = translator.supported_languages.find(locale => url_path_chunks.includes(locale)); + const callback = location_contains_locale + ? function () { + location.pathname = url_path_chunks.map(chunk => chunk === location_contains_locale ? lang : chunk).join("/"); + } + : obj2htm.renderCycle.bind(obj2htm); + translator.update_translations(lang).then(callback).catch(err => console.log(err)); } renderHome() { @@ -92,7 +95,7 @@ class NavBar { return { tag: "img", src: `${images_url}/flag-${lang}.svg`, class: translator.locale === lang ? "selected" : "", - onclick: this.handle_chang_lang.bind(this, lang) + onclick: this.handle_change_lang.bind(this, lang) } }) }), diff --git a/website/src/template/template.js b/website/src/template/template.js index e1cee3c..cf3fbc1 100644 --- a/website/src/template/template.js +++ b/website/src/template/template.js @@ -3,8 +3,6 @@ const { in_construction } = require("../../config"); const { images_url } = require("../../constants"); const NavBar = require("./components/navbar"); -const translator = require("ks-cheap-translator"); -const t = translator.trad.bind(translator) class Template { constructor(props) { @@ -79,7 +77,7 @@ class Template { }, { tag: "a", - href: "https://www.linkedin.com/company/kuadrado-software", + href: "https://linkedin.com/company/kuadrado-software", target: "_blank", contents: "in", title: "Linkedin", @@ -105,7 +103,7 @@ class Template { { tag: "a", target: "_blank", style_rules: { fontWeight: "bold" }, - href: "https://gitlab.com/kuadrado-software/kuadrado-website/-/blob/master/README.md", + href: "https://lab.frogg.it/kuadrado-software/kuadrado-website/-/blob/master/README.md", contents: "OPEN SOURCE" } ] -- GitLab