From f41bc2e2233357a52bf17986655e8bdc00b7ef63 Mon Sep 17 00:00:00 2001 From: Matias Vuorio Date: Thu, 2 Jul 2026 20:52:22 +0300 Subject: [PATCH 1/3] Add named languages to language switcher --- dev-config.edn | 1 + resources/config-defaults.edn | 1 + src/clj/rems/service/public.clj | 1 + src/cljs/rems/language_switcher.cljs | 25 ++++++++++++++++--------- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/dev-config.edn b/dev-config.edn index 70dfa76e0f..d1cf69680d 100644 --- a/dev-config.edn +++ b/dev-config.edn @@ -20,6 +20,7 @@ {:attribute "organizations"} {:attribute "groups" :name {:en "Groups" :fi "Ryhmät" :sv "Grupper" :da "Grupper"}}] :languages [:en :fi :sv] + :language-names {:en "English" :fi "Suomi" :sv "Svenska"} :public-url "http://localhost:3000/" :extra-pages [{:id "about" :translations {:fi {:title "Info" diff --git a/resources/config-defaults.edn b/resources/config-defaults.edn index 147c151818..914743e8ba 100644 --- a/resources/config-defaults.edn +++ b/resources/config-defaults.edn @@ -177,6 +177,7 @@ ;; List of supported languages. They will be selectable in the UI. :languages [:en :fi] + :language-names {:en "English" :fi "Suomi"} :default-language :en ;; Path to a directory with translations for additional languages. diff --git a/src/clj/rems/service/public.clj b/src/clj/rems/service/public.clj index 22a5a79fcb..546e0800e8 100644 --- a/src/clj/rems/service/public.clj +++ b/src/clj/rems/service/public.clj @@ -27,6 +27,7 @@ :entitlement-default-length-days :extra-pages :languages + :language-names :oidc-extra-attributes :enable-assign-external-id-ui :enable-doi diff --git a/src/cljs/rems/language_switcher.cljs b/src/cljs/rems/language_switcher.cljs index 0d95062d03..bd4c1221d6 100644 --- a/src/cljs/rems/language_switcher.cljs +++ b/src/cljs/rems/language_switcher.cljs @@ -1,6 +1,7 @@ (ns rems.language-switcher (:require [clojure.string :as str] [rems.config] + [rems.globals] [rems.guide-util :refer [component-info example]] [rems.text :refer [text-format]] [rems.user-settings])) @@ -10,6 +11,20 @@ "btn btn-link active" "btn btn-link")) +(defn get-language-name [language] + (or (get (@rems.globals/config :language-names) language) + (str/upper-case (name language)))) + +(defn language-button [language] + [:button {:type :button + :class (lang-link-classes @rems.config/current-language language) + :on-click #(rems.user-settings/save-user-language! language) + :aria-label (text-format :t.navigation/change-language + (get-language-name language)) + :data-toggle "collapse" + :data-target ".navbar-collapse.show"} + (get-language-name language)]) + (defn language-switcher "Language switcher widget" [] @@ -17,15 +32,7 @@ (when (> (count languages) 1) (into [:div.language-switcher] (for [language languages] - (let [lang-str (str/upper-case (name language))] - [:form.inline - [:button {:type :button - :class (lang-link-classes @rems.config/current-language language) - :on-click #(rems.user-settings/save-user-language! language) - :aria-label (text-format :t.navigation/change-language lang-str) - :data-toggle "collapse" - :data-target ".navbar-collapse.show"} - lang-str]])))))) + [:form.inline (language-button language)]))))) (defn guide [] [:div From c465fd1ce82ffab42dc7473efad657bed7705bc3 Mon Sep 17 00:00:00 2001 From: Matias Vuorio Date: Thu, 2 Jul 2026 21:33:35 +0300 Subject: [PATCH 2/3] Add named languages to language switcher --- src/clj/rems/api/public.clj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/clj/rems/api/public.clj b/src/clj/rems/api/public.clj index 9fdc769326..008f32a23e 100644 --- a/src/clj/rems/api/public.clj +++ b/src/clj/rems/api/public.clj @@ -33,6 +33,7 @@ :attachment-max-size (s/maybe s/Int) :entitlement-default-length-days (s/maybe s/Int) :languages [s/Keyword] + :language-names {s/Keyword s/Str} :default-language s/Keyword :oidc-extra-attributes [{:attribute s/Str s/Keyword s/Any}] From 5fd1118b2cc7c066e358bddcd627f7ce808efc33 Mon Sep 17 00:00:00 2001 From: Matias Vuorio Date: Fri, 10 Jul 2026 15:20:58 +0300 Subject: [PATCH 3/3] Add named languages to language switcher --- src/clj/rems/user_simulator.clj | 4 ++-- test/clj/rems/test_browser.clj | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/clj/rems/user_simulator.clj b/src/clj/rems/user_simulator.clj index d3dfcb1b72..86a8b8d30a 100644 --- a/src/clj/rems/user_simulator.clj +++ b/src/clj/rems/user_simulator.clj @@ -5,7 +5,7 @@ interface (CLI). Various user scenarios are implemented as functions in this namespace, enabling flexible testing of different workflows. Multiple simulations can run concurrently to test system performance and user load. - + User simulator can be started from CLI with e.g. Leiningen: - `lein run user-simulator` (uses default values), or - `lein run user-simulator http://localhost:3000/ alice,elsa,frank` when replacing default values" @@ -64,7 +64,7 @@ (et/delete-cookies (btu/get-driver)) (btu/go (btu/get-server-url)) (et/refresh (btu/get-driver)) - (btu/scroll-and-click [{:css ".language-switcher"} {:fn/text "EN"}]) ; make sure language is stable + (btu/scroll-and-click [{:css ".language-switcher"} {:fn/text "English"}]) ; make sure language is stable (action))))) (catch InterruptedException e diff --git a/test/clj/rems/test_browser.clj b/test/clj/rems/test_browser.clj index 9da4f0e90d..32eec3632a 100644 --- a/test/clj/rems/test_browser.clj +++ b/test/clj/rems/test_browser.clj @@ -3626,7 +3626,7 @@ (btu/wait-invisible :small-navbar) ; menu should be hidden (wait-page-title "Applications – REMS") (btu/scroll-and-click {:css ".navbar-toggler"}) - (btu/scroll-and-click [:small-navbar {:tag :button :fn/text "FI"}]) + (btu/scroll-and-click [:small-navbar {:tag :button :fn/text "Suomi"}]) (btu/wait-invisible :small-navbar) ; menu should be hidden (wait-page-title "Hakemukset – REMS") (rems.db.user-settings/delete-user-settings! "alice"))) ; clear language settings