summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/CMakeLists.txt2
-rw-r--r--app/src/main.cpp6
-rw-r--r--app/src/windows/main.cpp3
-rw-r--r--app/tests/windows/main.cpp31
4 files changed, 38 insertions, 4 deletions
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"
+
"$<$<CXX_COMPILER_ID:GNU,Clang>:-Wl,--whole-archive>"
"turns::res"
"$<$<CXX_COMPILER_ID:GNU,Clang>:-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 <adwaita.h>
+#include <glibmm/i18n.h>
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 <adwaita.h>
+#include <glibmm/i18n.h>
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<Gtk::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 <catch2/catch_test_macros.hpp>
+#include <catch2/generators/catch_generators.hpp>
#include <string>
#include <adwaita.h>
+#include <glibmm/i18n.h>
+#include <glibmm/ustring.h>
#include <gtkmm/builder.h>
#include <gtkmm/widget.h>
-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<main>(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<Gtk::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<Gtk::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<Gtk::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<Gtk::Widget>("title");
+ auto adw = ADW_WINDOW_TITLE(widget->gobj());
+ REQUIRE(adw_window_title_get_title(adw) == Glib::ustring{_("Turns")});
}
}