summaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
Diffstat (limited to 'lang')
-rw-r--r--lang/CMakeLists.txt18
-rw-r--r--lang/include/turns/lang/messages.hpp23
-rw-r--r--lang/po/de.po12
-rw-r--r--lang/po/en_US.po12
-rw-r--r--lang/po/labels/de.po5
-rw-r--r--lang/po/labels/en_US.po5
-rw-r--r--lang/po/menu_items/de.po2
-rw-r--r--lang/po/menu_items/en_US.po2
-rw-r--r--lang/po/tooltips/de.po2
-rw-r--r--lang/po/tooltips/en_US.po2
-rw-r--r--lang/tests/labels.cpp30
-rw-r--r--lang/tests/menu_items.cpp29
-rw-r--r--lang/tests/tooltips.cpp (renamed from lang/tests/translations.cpp)14
13 files changed, 124 insertions, 32 deletions
diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt
index 9ba960b..61e0488 100644
--- a/lang/CMakeLists.txt
+++ b/lang/CMakeLists.txt
@@ -4,7 +4,10 @@ set(TRANSLATIONS
)
foreach(LANG IN LISTS TRANSLATIONS)
- set(SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/po/${LANG}.po")
+ set(BASE_SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/po/${LANG}.po")
+ set(LABELS_SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/po/labels/${LANG}.po")
+ set(MENU_ITEMS_SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/po/menu_items/${LANG}.po")
+ set(TOOLTIPS_SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/po/tooltips/${LANG}.po")
set(BINARY_FILE "${CMAKE_CURRENT_BINARY_DIR}/${LANG}/LC_MESSAGES/turns.mo")
list(APPEND TRANSLATION_BINARIES "${BINARY_FILE}")
@@ -14,7 +17,10 @@ foreach(LANG IN LISTS TRANSLATIONS)
ARGS
"-o"
"${BINARY_FILE}"
- "${SOURCE_FILE}"
+ "${BASE_SOURCE_FILE}"
+ "${LABELS_SOURCE_FILE}"
+ "${MENU_ITEMS_SOURCE_FILE}"
+ "${TOOLTIPS_SOURCE_FILE}"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
DEPENDS "${SOURCE_FILE}"
COMMENT "Processing translation ${LANG}"
@@ -35,12 +41,18 @@ target_compile_definitions("lang" INTERFACE
"LOCALEDIR=\"${CMAKE_INSTALL_FULL_LOCALEDIR}\""
)
+target_include_directories("lang" INTERFACE
+ "include"
+)
+
add_dependencies("lang" "mofiles")
# Tests
add_executable("lang-tests"
- "tests/translations.cpp"
+ "tests/labels.cpp"
+ "tests/menu_items.cpp"
+ "tests/tooltips.cpp"
)
target_link_libraries("lang-tests" PRIVATE
diff --git a/lang/include/turns/lang/messages.hpp b/lang/include/turns/lang/messages.hpp
new file mode 100644
index 0000000..a6ff5ee
--- /dev/null
+++ b/lang/include/turns/lang/messages.hpp
@@ -0,0 +1,23 @@
+#ifndef TURNS_LANG_MESSAGES_HPP
+#define TURNS_LANG_MESSAGES_HPP
+
+namespace turns::lang
+{
+ namespace menu_items
+ {
+ auto constexpr static quit = "_Quit";
+ } // namespace menu_items
+
+ namespace labels
+ {
+ auto constexpr static no_active_turn_order = "No active turn-order";
+ auto constexpr static turns = "Turns";
+ } // namespace labels
+
+ namespace tooltips
+ {
+ auto constexpr static add_a_participant = "Add a participant";
+ } // namespace tooltips
+} // namespace turns::lang
+
+#endif \ No newline at end of file
diff --git a/lang/po/de.po b/lang/po/de.po
index aca650c..c775800 100644
--- a/lang/po/de.po
+++ b/lang/po/de.po
@@ -7,15 +7,3 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Add a participant"
-msgstr "Teilnehmer hinzufügen"
-
-msgid "No active turn-order"
-msgstr "Keine aktive Zugreihenfolge"
-
-msgid "_Quit"
-msgstr "_Beenden"
-
-msgid "Turns"
-msgstr "Züge"
diff --git a/lang/po/en_US.po b/lang/po/en_US.po
index 31fa912..5ffcd74 100644
--- a/lang/po/en_US.po
+++ b/lang/po/en_US.po
@@ -7,15 +7,3 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Add a participant"
-msgstr "Add a participant"
-
-msgid "No active turn-order"
-msgstr "No active turn-order"
-
-msgid "_Quit"
-msgstr "_Quit"
-
-msgid "Turns"
-msgstr "Turns"
diff --git a/lang/po/labels/de.po b/lang/po/labels/de.po
new file mode 100644
index 0000000..d1cf410
--- /dev/null
+++ b/lang/po/labels/de.po
@@ -0,0 +1,5 @@
+msgid "No active turn-order"
+msgstr "Keine aktive Zugreihenfolge"
+
+msgid "Turns"
+msgstr "Züge"
diff --git a/lang/po/labels/en_US.po b/lang/po/labels/en_US.po
new file mode 100644
index 0000000..1761c41
--- /dev/null
+++ b/lang/po/labels/en_US.po
@@ -0,0 +1,5 @@
+msgid "No active turn-order"
+msgstr "No active turn-order"
+
+msgid "Turns"
+msgstr "Turns"
diff --git a/lang/po/menu_items/de.po b/lang/po/menu_items/de.po
new file mode 100644
index 0000000..4351945
--- /dev/null
+++ b/lang/po/menu_items/de.po
@@ -0,0 +1,2 @@
+msgid "_Quit"
+msgstr "_Beenden"
diff --git a/lang/po/menu_items/en_US.po b/lang/po/menu_items/en_US.po
new file mode 100644
index 0000000..7b59e50
--- /dev/null
+++ b/lang/po/menu_items/en_US.po
@@ -0,0 +1,2 @@
+msgid "_Quit"
+msgstr "_Quit"
diff --git a/lang/po/tooltips/de.po b/lang/po/tooltips/de.po
new file mode 100644
index 0000000..da788ae
--- /dev/null
+++ b/lang/po/tooltips/de.po
@@ -0,0 +1,2 @@
+msgid "Add a participant"
+msgstr "Teilnehmer hinzufügen"
diff --git a/lang/po/tooltips/en_US.po b/lang/po/tooltips/en_US.po
new file mode 100644
index 0000000..cd80911
--- /dev/null
+++ b/lang/po/tooltips/en_US.po
@@ -0,0 +1,2 @@
+msgid "Add a participant"
+msgstr "Add a participant"
diff --git a/lang/tests/labels.cpp b/lang/tests/labels.cpp
new file mode 100644
index 0000000..3ebdf42
--- /dev/null
+++ b/lang/tests/labels.cpp
@@ -0,0 +1,30 @@
+#include "turns/lang/messages.hpp"
+
+#include <catch2/catch_test_macros.hpp>
+#include <catch2/generators/catch_generators.hpp>
+
+#include <format>
+#include <string>
+
+#include <libintl.h>
+
+namespace turns::lang::tests
+{
+
+ TEST_CASE("Label translations")
+ {
+ auto message = GENERATE(
+ labels::no_active_turn_order,
+ labels::turns
+ );
+
+ auto locale = GENERATE("de_CH.UTF-8", "de_DE.UTF-8", "de_AT.UTF-8");
+
+ SECTION(std::format("'{}' has a translation in '{}'", message, locale))
+ {
+ setlocale(LC_ALL, locale);
+ REQUIRE(std::string{gettext(message)} != message);
+ }
+ }
+
+} // namespace turns::lang::tests \ No newline at end of file
diff --git a/lang/tests/menu_items.cpp b/lang/tests/menu_items.cpp
new file mode 100644
index 0000000..71fdef5
--- /dev/null
+++ b/lang/tests/menu_items.cpp
@@ -0,0 +1,29 @@
+#include "turns/lang/messages.hpp"
+
+#include <catch2/catch_test_macros.hpp>
+#include <catch2/generators/catch_generators.hpp>
+
+#include <format>
+#include <string>
+
+#include <libintl.h>
+
+namespace turns::lang::tests
+{
+
+ TEST_CASE("Menu item translations")
+ {
+ auto message = GENERATE(
+ menu_items::quit
+ );
+
+ auto locale = GENERATE("de_CH.UTF-8", "de_DE.UTF-8", "de_AT.UTF-8");
+
+ SECTION(std::format("'{}' has a translation in '{}'", message, locale))
+ {
+ setlocale(LC_ALL, locale);
+ REQUIRE(std::string{gettext(message)} != message);
+ }
+ }
+
+} // namespace turns::lang::tests \ No newline at end of file
diff --git a/lang/tests/translations.cpp b/lang/tests/tooltips.cpp
index 1bb78a5..66b6d72 100644
--- a/lang/tests/translations.cpp
+++ b/lang/tests/tooltips.cpp
@@ -1,3 +1,5 @@
+#include "turns/lang/messages.hpp"
+
#include <catch2/catch_test_macros.hpp>
#include <catch2/generators/catch_generators.hpp>
@@ -6,13 +8,13 @@
#include <format>
#include <string>
-TEST_CASE("All supported languages have translations")
+namespace turns::lang::tests
+{
+
+TEST_CASE("Tooltip translations")
{
auto message = GENERATE(
- "Turns",
- "Add a participant",
- "No active turn-order",
- "_Quit"
+ tooltips::add_a_participant
);
auto locale = GENERATE(
@@ -27,3 +29,5 @@ TEST_CASE("All supported languages have translations")
REQUIRE(std::string{gettext(message)} != message);
}
}
+
+} \ No newline at end of file