summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lang/CMakeLists.txt19
-rw-r--r--lang/include/turns/lang/messages.hpp9
-rw-r--r--lang/po/buttons/de.po2
-rw-r--r--lang/po/buttons/de_CH.po2
-rw-r--r--lang/po/buttons/en_US.po2
-rw-r--r--lang/po/de_CH.po9
-rw-r--r--lang/po/labels/de.po12
-rw-r--r--lang/po/labels/en_US.po14
-rw-r--r--lang/tests/buttons.cpp29
-rw-r--r--lang/tests/labels.cpp4
-rw-r--r--res/windows/create_participant.ui10
-rw-r--r--res/windows/windows.cmb10
12 files changed, 98 insertions, 24 deletions
diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt
index ac045a8..ed234e6 100644
--- a/lang/CMakeLists.txt
+++ b/lang/CMakeLists.txt
@@ -1,15 +1,13 @@
set(TRANSLATIONS
"de"
+ "de_CH"
"en_US"
)
foreach(LANG IN LISTS TRANSLATIONS)
- 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")
-
+ file(GLOB_RECURSE PARTS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/*/${LANG}.po")
+
list(APPEND TRANSLATION_BINARIES "${BINARY_FILE}")
add_custom_command(OUTPUT "${BINARY_FILE}"
@@ -17,16 +15,10 @@ foreach(LANG IN LISTS TRANSLATIONS)
ARGS
"-o"
"${BINARY_FILE}"
- "${BASE_SOURCE_FILE}"
- "${LABELS_SOURCE_FILE}"
- "${MENU_ITEMS_SOURCE_FILE}"
- "${TOOLTIPS_SOURCE_FILE}"
+ ${PARTS}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
DEPENDS
- "${BASE_SOURCE_FILE}"
- "${LABELS_SOURCE_FILE}"
- "${MENU_ITEMS_SOURCE_FILE}"
- "${TOOLTIPS_SOURCE_FILE}"
+ ${PARTS}
COMMENT "Processing translation ${LANG}"
)
@@ -60,6 +52,7 @@ add_dependencies("lang" "mofiles")
# Tests
add_executable("lang-tests"
+ "tests/buttons.cpp"
"tests/labels.cpp"
"tests/menu_items.cpp"
"tests/tooltips.cpp"
diff --git a/lang/include/turns/lang/messages.hpp b/lang/include/turns/lang/messages.hpp
index 0b16648..ea76565 100644
--- a/lang/include/turns/lang/messages.hpp
+++ b/lang/include/turns/lang/messages.hpp
@@ -3,6 +3,11 @@
namespace turns::lang
{
+ namespace buttons
+ {
+ auto constexpr static finish = "Finish";
+ }
+
namespace menu_items
{
auto constexpr static quit = "_Quit";
@@ -10,7 +15,11 @@ namespace turns::lang
namespace labels
{
+ auto constexpr static add_participant = "Add participant";
+ auto constexpr static disposition = "Disposition";
+ auto constexpr static name = "Name";
auto constexpr static no_active_turn_order = "No active turn order";
+ auto constexpr static order = "Order";
auto constexpr static turns = "Turns";
} // namespace labels
diff --git a/lang/po/buttons/de.po b/lang/po/buttons/de.po
new file mode 100644
index 0000000..afbf89e
--- /dev/null
+++ b/lang/po/buttons/de.po
@@ -0,0 +1,2 @@
+msgid "Finish"
+msgstr "Abschließen"
diff --git a/lang/po/buttons/de_CH.po b/lang/po/buttons/de_CH.po
new file mode 100644
index 0000000..dba2a58
--- /dev/null
+++ b/lang/po/buttons/de_CH.po
@@ -0,0 +1,2 @@
+msgid "Finish"
+msgstr "Abschliessen"
diff --git a/lang/po/buttons/en_US.po b/lang/po/buttons/en_US.po
new file mode 100644
index 0000000..a38c78d
--- /dev/null
+++ b/lang/po/buttons/en_US.po
@@ -0,0 +1,2 @@
+msgid "Finish"
+msgstr "Finish"
diff --git a/lang/po/de_CH.po b/lang/po/de_CH.po
new file mode 100644
index 0000000..c775800
--- /dev/null
+++ b/lang/po/de_CH.po
@@ -0,0 +1,9 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: turns 1.0.0\n"
+"Last-Translator: Felix Morgner\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
diff --git a/lang/po/labels/de.po b/lang/po/labels/de.po
index 82fdc4a..3f6f7f9 100644
--- a/lang/po/labels/de.po
+++ b/lang/po/labels/de.po
@@ -1,5 +1,17 @@
+msgid "Add participant"
+msgstr "Teilnehmer hinzufügen"
+
+msgid "Disposition"
+msgstr "Gesinnung"
+
+msgid "Name"
+msgstr "Name"
+
msgid "No active turn order"
msgstr "Keine aktive Zugreihenfolge"
+msgid "Order"
+msgstr "Reihenfolge"
+
msgid "Turns"
msgstr "Züge"
diff --git a/lang/po/labels/en_US.po b/lang/po/labels/en_US.po
index 56d9ed5..88eed2e 100644
--- a/lang/po/labels/en_US.po
+++ b/lang/po/labels/en_US.po
@@ -1,5 +1,17 @@
+msgid "Add participant"
+msgstr "Add participant"
+
+msgid "Disposition"
+msgstr "Disposition"
+
+msgid "Name"
+msgstr "Name"
+
msgid "No active turn order"
msgstr "No active turn order"
+msgid "Order"
+msgstr "Order"
+
msgid "Turns"
-msgstr "Turns"
+msgstr "Turns" \ No newline at end of file
diff --git a/lang/tests/buttons.cpp b/lang/tests/buttons.cpp
new file mode 100644
index 0000000..b016ecf
--- /dev/null
+++ b/lang/tests/buttons.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("Button translations")
+ {
+ auto message = GENERATE(
+ buttons::finish
+ );
+
+ 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/labels.cpp b/lang/tests/labels.cpp
index 3ebdf42..6bdf8cc 100644
--- a/lang/tests/labels.cpp
+++ b/lang/tests/labels.cpp
@@ -14,7 +14,11 @@ namespace turns::lang::tests
TEST_CASE("Label translations")
{
auto message = GENERATE(
+ labels::add_participant,
+ labels::disposition,
+ // labels::name, // a better solution is required to support this one
labels::no_active_turn_order,
+ labels::order,
labels::turns
);
diff --git a/res/windows/create_participant.ui b/res/windows/create_participant.ui
index aa3d093..1e95f03 100644
--- a/res/windows/create_participant.ui
+++ b/res/windows/create_participant.ui
@@ -22,7 +22,7 @@
<object class="GtkListBox">
<child>
<object class="AdwEntryRow" id="name">
- <property name="title">Name</property>
+ <property name="title" translatable="yes">Name</property>
</object>
</child>
<child>
@@ -36,12 +36,12 @@
</property>
<property name="digits">1</property>
<property name="numeric">True</property>
- <property name="title">Order</property>
+ <property name="title" translatable="yes">Order</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="disposition">
- <property name="title">Disposition</property>
+ <property name="title" translatable="yes">Disposition</property>
</object>
</child>
<style>
@@ -52,7 +52,7 @@
<child>
<object class="GtkButton" id="finish">
<property name="hexpand">True</property>
- <property name="label">Finish</property>
+ <property name="label" translatable="yes">Finish</property>
<style>
<class name="pill"/>
<class name="suggested-action"/>
@@ -69,6 +69,6 @@
</object>
</property>
<property name="hexpand">True</property>
- <property name="title">Add Participant</property>
+ <property name="title" translatable="yes">Add participant</property>
</object>
</interface>
diff --git a/res/windows/windows.cmb b/res/windows/windows.cmb
index dc0a8f9..c1ee945 100644
--- a/res/windows/windows.cmb
+++ b/res/windows/windows.cmb
@@ -60,7 +60,7 @@
(1,12,"GtkListBox","selection-mode","none",None,None,None,None,None,None,None,None,None),
(2,1,"AdwDialog","child",None,None,None,None,None,2,None,None,None,None),
(2,1,"AdwDialog","default-widget",None,None,None,None,None,None,None,None,None,None),
- (2,1,"AdwDialog","title","Add Participant",None,None,None,None,None,None,None,None,None),
+ (2,1,"AdwDialog","title","Add participant",1,None,None,None,None,None,None,None,None),
(2,1,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
(2,2,"AdwToolbarView","content",None,None,None,None,None,4,None,None,None,None),
(2,4,"AdwClamp","child",None,None,None,None,None,5,None,None,None,None),
@@ -72,14 +72,14 @@
(2,5,"GtkWidget","margin-start","12",None,None,None,None,None,None,None,None,None),
(2,5,"GtkWidget","margin-top","18",None,None,None,None,None,None,None,None,None),
(2,5,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
- (2,7,"AdwPreferencesRow","title","Name",None,None,None,None,None,None,None,None,None),
- (2,9,"GtkButton","label","Finish",None,None,None,None,None,None,None,None,None),
+ (2,7,"AdwPreferencesRow","title","Name",1,None,None,None,None,None,None,None,None),
+ (2,9,"GtkButton","label","Finish",1,None,None,None,None,None,None,None,None),
(2,9,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
- (2,10,"AdwPreferencesRow","title","Order",None,None,None,None,None,None,None,None,None),
+ (2,10,"AdwPreferencesRow","title","Order",1,None,None,None,None,None,None,None,None),
(2,10,"AdwSpinRow","adjustment",None,None,None,None,None,12,None,None,None,None),
(2,10,"AdwSpinRow","digits","1",None,None,None,None,None,None,None,None,None),
(2,10,"AdwSpinRow","numeric","True",None,None,None,None,None,None,None,None,None),
- (2,11,"AdwPreferencesRow","title","Disposition",None,None,None,None,None,None,None,None,None),
+ (2,11,"AdwPreferencesRow","title","Disposition",1,None,None,None,None,None,None,None,None),
(2,12,"GtkAdjustment","lower","-1000.0",None,None,None,None,None,None,None,None,None),
(2,12,"GtkAdjustment","step-increment","1.0",None,None,None,None,None,None,None,None,None),
(2,12,"GtkAdjustment","upper","1000.0",None,None,None,None,None,None,None,None,None)