[Spice-devel] [PATCH spice-gtk v2] gettext: fix ngettext usage

Jakub Janků jjanku at redhat.com
Wed Apr 17 21:46:57 UTC 2019


_() should not be used in conjunction with ngettext(),
otherwise it's impossible to properly translate the message into
languages that have multiple plural forms, such as Czech.

Additionally, spice-gtk must use dngettext instead of ngettext,
otherwise the translation strings are searched within a wrong domain.

Fix ngettext usage in usb-device-widget.c and
update the PO files accordingly.

Signed-off-by: Jakub Janků <jjanku at redhat.com>
---
 po/de.po                |  9 +++------
 po/fr.po                | 11 ++++-------
 po/it.po                | 12 +++++-------
 src/usb-device-widget.c |  7 ++++---
 4 files changed, 16 insertions(+), 23 deletions(-)

diff --git a/po/de.po b/po/de.po
index eb24de7..3ae6ae0 100644
--- a/po/de.po
+++ b/po/de.po
@@ -288,12 +288,9 @@ msgstr "Auswahl des USB-Geräts zum Weiterleiten"
 #: src/usb-device-widget.c:393
 #, c-format
 msgid "Select USB devices to redirect (%d free channel)"
-msgstr "Auswahl des USB-Geräts zum Weiterleiten (%d freier Kanal)"
-
-#: src/usb-device-widget.c:394
-#, c-format
-msgid "Select USB devices to redirect (%d free channels)"
-msgstr "Auswahl des USB-Geräts zum Weiterleiten (%d freie Kanäle)"
+msgid_plural "Select USB devices to redirect (%d free channels)"
+msgstr[0] "Auswahl des USB-Geräts zum Weiterleiten (%d freier Kanal)"
+msgstr[1] "Auswahl des USB-Geräts zum Weiterleiten (%d freie Kanäle)"
 
 #: src/usb-device-widget.c:411
 msgid "Redirecting USB Device..."
diff --git a/po/fr.po b/po/fr.po
index e2dd3ad..6120ee0 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -271,15 +271,12 @@ msgstr ""
 msgid "Select USB devices to redirect"
 msgstr ""
 
-#: src/usb-device-widget.c:420
+#: src/usb-device-widget.c:393
 #, c-format
 msgid "Select USB devices to redirect (%d free channel)"
-msgstr ""
-
-#: src/usb-device-widget.c:421
-#, c-format
-msgid "Select USB devices to redirect (%d free channels)"
-msgstr ""
+msgid_plural "Select USB devices to redirect (%d free channels)"
+msgstr[0] ""
+msgstr[1] ""
 
 #: src/usb-device-widget.c:439
 msgid "Redirecting USB Device..."
diff --git a/po/it.po b/po/it.po
index a4e40e9..b7899a8 100644
--- a/po/it.po
+++ b/po/it.po
@@ -16,6 +16,7 @@ msgstr ""
 "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"
 "X-Generator: Poedit 1.8.8\n"
 
 #: src/channel-main.c:1868
@@ -286,15 +287,12 @@ msgstr "%s %s %s a %d-%d"
 msgid "Select USB devices to redirect"
 msgstr "Selezionare dispositivo USB da redirigere"
 
-#: src/usb-device-widget.c:420
+#: src/usb-device-widget.c:393
 #, c-format
 msgid "Select USB devices to redirect (%d free channel)"
-msgstr "Selezionare dispositivo USB da redirigere (%d canale libero)"
-
-#: src/usb-device-widget.c:421
-#, c-format
-msgid "Select USB devices to redirect (%d free channels)"
-msgstr "Selezionare dispositivo USB da redirigere (%d canali liberi)"
+msgid_plural "Select USB devices to redirect (%d free channels)"
+msgstr[0] "Selezionare dispositivo USB da redirigere (%d canale libero)"
+msgstr[1] "Selezionare dispositivo USB da redirigere (%d canali liberi)"
 
 #: src/usb-device-widget.c:439
 msgid "Redirecting USB Device..."
diff --git a/src/usb-device-widget.c b/src/usb-device-widget.c
index de62564..55a9687 100644
--- a/src/usb-device-widget.c
+++ b/src/usb-device-widget.c
@@ -390,9 +390,10 @@ static gboolean spice_usb_device_widget_update_status(gpointer user_data)
     redirecting = spice_usb_device_manager_is_redirecting(priv->manager);
 
     g_object_get(priv->manager, "free-channels", &free_channels, NULL);
-    free_channels_str = ngettext(_("Select USB devices to redirect (%d free channel)"),
-                                 _("Select USB devices to redirect (%d free channels)"),
-                                 free_channels);
+    free_channels_str = g_dngettext(GETTEXT_PACKAGE,
+                                    "Select USB devices to redirect (%d free channel)",
+                                    "Select USB devices to redirect (%d free channels)",
+                                    free_channels);
     str = g_strdup_printf(free_channels_str, free_channels);
     markup_str = g_strdup_printf("<b>%s</b>", str);
     gtk_label_set_markup(GTK_LABEL (priv->label), markup_str);
-- 
2.20.1



More information about the Spice-devel mailing list