diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2024-07-14 12:31:24 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2024-07-14 12:31:24 +0200 |
| commit | 22affd3c791679f05ccde937a1804ecb3f5bf5e2 (patch) | |
| tree | 1053b86309f5c3f827cdfb5de9988eec28faf3c9 | |
| parent | f5e65adb5c348b5c1f3fe479fc71053183f66674 (diff) | |
| download | turns-22affd3c791679f05ccde937a1804ecb3f5bf5e2.tar.xz turns-22affd3c791679f05ccde937a1804ecb3f5bf5e2.zip | |
app/gui: add translations for create participant dialog
| -rw-r--r-- | lang/CMakeLists.txt | 19 | ||||
| -rw-r--r-- | lang/include/turns/lang/messages.hpp | 9 | ||||
| -rw-r--r-- | lang/po/buttons/de.po | 2 | ||||
| -rw-r--r-- | lang/po/buttons/de_CH.po | 2 | ||||
| -rw-r--r-- | lang/po/buttons/en_US.po | 2 | ||||
| -rw-r--r-- | lang/po/de_CH.po | 9 | ||||
| -rw-r--r-- | lang/po/labels/de.po | 12 | ||||
| -rw-r--r-- | lang/po/labels/en_US.po | 14 | ||||
| -rw-r--r-- | lang/tests/buttons.cpp | 29 | ||||
| -rw-r--r-- | lang/tests/labels.cpp | 4 | ||||
| -rw-r--r-- | res/windows/create_participant.ui | 10 | ||||
| -rw-r--r-- | res/windows/windows.cmb | 10 |
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) |
