From 88d45641e8c06936635034cd83c8c7df1bd59439 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 12 Jul 2024 14:29:38 +0200 Subject: turns: add basic i18n --- app/CMakeLists.txt | 2 ++ app/src/main.cpp | 6 ++++++ app/src/windows/main.cpp | 3 ++- app/tests/windows/main.cpp | 31 ++++++++++++++++++++++++++++--- 4 files changed, 38 insertions(+), 4 deletions(-) (limited to 'app') diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 824e107..c25efe8 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -27,6 +27,8 @@ target_link_libraries("app" PUBLIC "PkgConfig::adwaita" "PkgConfig::gtkmm" + "turns::lang" + "$<$:-Wl,--whole-archive>" "turns::res" "$<$:-Wl,--no-whole-archive>" diff --git a/app/src/main.cpp b/app/src/main.cpp index dd23c82..d7fadc7 100644 --- a/app/src/main.cpp +++ b/app/src/main.cpp @@ -1,9 +1,15 @@ #include "turns/app/application.hpp" #include +#include auto main(int argc, char * argv[]) -> int { + setlocale(LC_ALL, ""); + bindtextdomain("turns", LOCALEDIR); + bind_textdomain_codeset("turns", "UTF-8"); + textdomain("turns"); + adw_init(); auto app = turns::app::application::create(); diff --git a/app/src/windows/main.cpp b/app/src/windows/main.cpp index f8437a6..0000f60 100644 --- a/app/src/windows/main.cpp +++ b/app/src/windows/main.cpp @@ -1,6 +1,7 @@ #include "turns/app/windows/main.hpp" #include +#include namespace turns::app::windows { @@ -10,7 +11,7 @@ namespace turns::app::windows , m_adw{ADW_APPLICATION_WINDOW(gobj())} , m_title(ADW_WINDOW_TITLE(builder->get_widget("title")->gobj())) { - adw_window_title_set_subtitle(m_title, "No active turn-order"); + adw_window_title_set_subtitle(m_title, _("No active turn-order")); } } // namespace turns::app::windows \ No newline at end of file diff --git a/app/tests/windows/main.cpp b/app/tests/windows/main.cpp index d2ad60e..53c9386 100644 --- a/app/tests/windows/main.cpp +++ b/app/tests/windows/main.cpp @@ -1,20 +1,24 @@ #include "turns/app/windows/main.hpp" #include +#include #include #include +#include +#include #include #include -using namespace std::string_literals; - namespace turns::app::windows::tests { TEST_CASE("Newly constructed main window", "[windows]") { + auto locale = GENERATE("en_US.UTF-8", "de_CH.UTF-8"); + setlocale(LC_ALL, locale); + auto builder = Gtk::Builder::create_from_resource("/turns/windows/main_window.ui"); auto instance = Gtk::Builder::get_widget_derived
(builder, "main_window"); @@ -23,11 +27,32 @@ namespace turns::app::windows::tests REQUIRE(instance); } + SECTION("the window sub-title is not empty") + { + auto widget = builder->get_widget("title"); + auto adw = ADW_WINDOW_TITLE(widget->gobj()); + REQUIRE(adw_window_title_get_subtitle(adw)); + } + + SECTION("the window sub-title is set according to the active language") + { + auto widget = builder->get_widget("title"); + auto adw = ADW_WINDOW_TITLE(widget->gobj()); + REQUIRE(adw_window_title_get_subtitle(adw) == Glib::ustring{_("No active turn-order")}); + } + SECTION("the window title is not empty") { auto widget = builder->get_widget("title"); auto adw = ADW_WINDOW_TITLE(widget->gobj()); - REQUIRE(adw_window_title_get_subtitle(adw) != ""s); + REQUIRE(adw_window_title_get_title(adw)); + } + + SECTION("the window title is set according to the active language") + { + auto widget = builder->get_widget("title"); + auto adw = ADW_WINDOW_TITLE(widget->gobj()); + REQUIRE(adw_window_title_get_title(adw) == Glib::ustring{_("Turns")}); } } -- cgit v1.2.3