[Spice-devel] [PATCH spice-gtk] spice-option: translate entries

2019-04-17 Thread Jakub Janků
Translation strings for spice options are already present
in the respective PO files.

g_option_group_set_translation_domain() call needs to be made,
so that the strings marked with N_() actually get translated at runtime.

Signed-off-by: Jakub Janků 
---
 src/spice-option.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/spice-option.c b/src/spice-option.c
index 7df093d..c2b059e 100644
--- a/src/spice-option.c
+++ b/src/spice-option.c
@@ -207,6 +207,7 @@ GOptionGroup* spice_get_option_group(void)
 
 grp = g_option_group_new("spice", _("Spice Options:"), _("Show Spice 
Options"), NULL, NULL);
 g_option_group_add_entries(grp, entries);
+g_option_group_set_translation_domain(grp, GETTEXT_PACKAGE);
 
 return grp;
 }
-- 
2.20.1

___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

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

2019-04-17 Thread Jakub Janků
_() 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ů 
---
 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", _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("%s", str);
 gtk_label_set_markup(GTK_LABEL (priv->label), markup_str);
-- 
2.20.1

___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

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

2019-04-17 Thread Jakub Janku
On Wed, Apr 17, 2019 at 6:24 PM Frediano Ziglio  wrote:
>
> >
> > _() 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.
> >
> > Fix ngettext usage in usb-device-widget.c and
> > update the PO files accordingly.
> >
> > Signed-off-by: Jakub Janků 
> > ---
> >  po/de.po|  9 +++--
> >  po/fr.po| 11 ---
> >  po/it.po| 12 +---
> >  src/usb-device-widget.c |  4 ++--
> >  4 files changed, 14 insertions(+), 22 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)"
> >
>
> Applied the patch, set lang to it_IT.utf-8, most strings work, this
> no way! I did an strace to check the file used are correct, they are.
> I removed all .gmo and .mo, rebuilt, reinstalled, checked I'm using
> the new. Still not working. Probably I'm doing something really silly
> but I cannot understand what I'm doing wrong.
> I also checked if that specific string is inside virt-viewer strings,
> no.
>
> It seems this hunk solve the issue:
>
>
> @@ -390,7 +390,7 @@ 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", _channels, NULL);
> -free_channels_str = ngettext("Select USB devices to redirect (%d free 
> channel)",
> +free_channels_str = 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);

Ah, I see, so this is another mistake. Spice-gtk, as a library, should
be using the dngettext function instead of ngettext, otherwise the
translation string is searched in the "virt-viewer" domain and hence
not found.
I'll be sending v2.

Thanks,
Jakub
>
>
> >  #: 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..7979a2c 100644
> > --- a/src/usb-device-widget.c
> > +++ b/src/usb-device-widget.c
> > @@ -390,8 

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

2019-04-17 Thread Jakub Janku
On Wed, Apr 17, 2019 at 5:25 PM Frediano Ziglio  wrote:
>
> >
> > _() 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.
> >
> > Fix ngettext usage in usb-device-widget.c and
> > update the PO files accordingly.
> >
> > Signed-off-by: Jakub Janků 
>
> Sounds good, I'll have a small try before.
>
> Can you review David Jaša patch sent on Apr 12th?

Sure, I've already started looking at it, that's how I discovered this issue.

Cheers,
Jakub
>
> > ---
> >  po/de.po|  9 +++--
> >  po/fr.po| 11 ---
> >  po/it.po| 12 +---
> >  src/usb-device-widget.c |  4 ++--
> >  4 files changed, 14 insertions(+), 22 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..7979a2c 100644
> > --- a/src/usb-device-widget.c
> > +++ b/src/usb-device-widget.c
> > @@ -390,8 +390,8 @@ 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", _channels, NULL);
> > -free_channels_str = ngettext(_("Select USB devices to redirect (%d free
> > channel)"),
> > - _("Select USB devices to redirect (%d free
> > channels)"),
> > +free_channels_str = ngettext("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("%s", str);
>
> Frediano
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

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

2019-04-17 Thread Frediano Ziglio
> 
> _() 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.
> 
> Fix ngettext usage in usb-device-widget.c and
> update the PO files accordingly.
> 
> Signed-off-by: Jakub Janků 

Sounds good, I'll have a small try before.

Can you review David Jaša patch sent on Apr 12th?

> ---
>  po/de.po|  9 +++--
>  po/fr.po| 11 ---
>  po/it.po| 12 +---
>  src/usb-device-widget.c |  4 ++--
>  4 files changed, 14 insertions(+), 22 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..7979a2c 100644
> --- a/src/usb-device-widget.c
> +++ b/src/usb-device-widget.c
> @@ -390,8 +390,8 @@ 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", _channels, NULL);
> -free_channels_str = ngettext(_("Select USB devices to redirect (%d free
> channel)"),
> - _("Select USB devices to redirect (%d free
> channels)"),
> +free_channels_str = ngettext("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("%s", str);

Frediano
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

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

2019-04-17 Thread Jakub Janků
_() 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.

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

Signed-off-by: Jakub Janků 
---
 po/de.po|  9 +++--
 po/fr.po| 11 ---
 po/it.po| 12 +---
 src/usb-device-widget.c |  4 ++--
 4 files changed, 14 insertions(+), 22 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..7979a2c 100644
--- a/src/usb-device-widget.c
+++ b/src/usb-device-widget.c
@@ -390,8 +390,8 @@ 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", _channels, NULL);
-free_channels_str = ngettext(_("Select USB devices to redirect (%d free 
channel)"),
- _("Select USB devices to redirect (%d free 
channels)"),
+free_channels_str = ngettext("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("%s", str);
-- 
2.20.1

___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

Re: [Spice-devel] [PATCH spice-server v5 00/18] Port SPICE server to Windows

2019-04-17 Thread Frediano Ziglio
ping

> 
> Windows support is useful to use with Qemu under Windows as host or
> to implement servers like Xspice.
> Mainly SPICE server uses lot of libraries to expose a TCP protocol.
> As TCP is implemented with socket library which is quite portable was
> not that hard to port.
> Beside some minor feature (see REAME.Windows) all was ported.
> During porting was choosen to keep Unix as the main platform, if a
> change would require too much changes some Windows wrapper is
> preferred instead. Not too complicated stuff, the main "wrapper" is
> that Windows errors from socket are written back into errno to avoid
> to change lot of code handling errors.
> 
> Changes since v4:
> - fix use after free in reds_set_video_codecs_from_string;
> - rename conflicting identifiers instead of undefining them;
> - remove some preprocessor indentation;
> - improve Meson support;
> - improve some comments.
> 
> Changes since v3:
> - reduce compatibility layer size:
>   - do not change function name if not required;
>   - use int instead of a new socket_t.
> 
> Changes since v2:
> - better %m replacement;
> - many comments updates;
> - typo and grammar fixes;
> - use int to store socket descriptors/handles;
> - merge all v2 updates into a single series;
> - split formatting string patch.
> 
> Frediano Ziglio (18):
>   build: Detect Windows build and change some definitions
>   Avoids %m in formatting for Windows
>   windows: Do not use conflicting preprocessor macros
>   tests: Provide alarm replacement for Windows
>   sys-socket: Introduce some utility to make sockets more portable
>   sys-socket: Add socket_newpair utility
>   net-utils: Port to Windows
>   reds: Use socket compatibility layer (close -> socket_close)
>   red-stream: Use socket compatibility layer
>   dispatcher: Use socket compatibility layer
>   test-leaks: Use socket compatibility layer
>   test-channel: Use socket compatibility layer
>   windows: Disable code not working on Windows
>   dispatcher: Port to Windows
>   tests: Exclude tests that cannot work on Windows
>   red-stream: Fix SSL connection for Windows
>   Disable recording filtering for Windows
>   Add some notes for the Windows port
> 
>  README.Windows|  18 ++
>  configure.ac  |  20 ++-
>  meson.build   |  15 +-
>  server/Makefile.am|   2 +
>  server/dispatcher.c   |  28 ++-
>  server/meson.build|   2 +
>  server/net-utils.c|  11 ++
>  server/red-channel-client.c   |   2 +
>  server/red-common.h   |   1 +
>  server/red-qxl.c  |  52 +++---
>  server/red-record-qxl.c   |   7 +
>  server/red-stream.c   |  48 -
>  server/red-stream.h   |   2 +
>  server/red-worker.c   |   6 +
>  server/reds.c | 115 ++--
>  server/sound.c|   5 +-
>  server/stat-file.c|   2 +
>  server/sys-socket.c   | 287 ++
>  server/sys-socket.h   | 142 +++
>  server/tests/Makefile.am  |  11 +-
>  server/tests/basic-event-loop.c   |   2 +
>  server/tests/meson.build  |  16 +-
>  server/tests/replay.c |   2 +
>  server/tests/test-channel.c   |   9 +-
>  server/tests/test-leaks.c |   5 +-
>  server/tests/test-loop.c  |   1 +
>  server/tests/test-record.c|   7 +-
>  server/tests/test-stream-device.c |   1 +
>  server/tests/win-alarm.c  |  65 +++
>  server/tests/win-alarm.h  |  26 +++
>  tools/Makefile.am |   2 +
>  tools/meson.build |  10 +-
>  32 files changed, 805 insertions(+), 117 deletions(-)
>  create mode 100644 README.Windows
>  create mode 100644 server/sys-socket.c
>  create mode 100644 server/sys-socket.h
>  create mode 100644 server/tests/win-alarm.c
>  create mode 100644 server/tests/win-alarm.h
> 
> --
> 2.20.1
> 
> 
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

Re: [Spice-devel] [spice] Enable mm_time adjustments on startup

2019-04-17 Thread Snir Sheriber

Hi,


On 4/17/19 7:27 AM, Francois Gouget wrote:

On Thu, 11 Apr 2019, Victor Toso wrote:


Hi,

On Wed, Apr 10, 2019 at 11:25:17AM +0200, Francois Gouget wrote:

We send mm_time adjustments to the client whenever there is no audio
playback. There is no audio playback on startup. Therefore
mm_time_enabled must be true on startup. QED.

Signed-off-by: Francois Gouget 

But what are you trying to fix/improve exactly?

The goal is to reduce the video stream latency.

The reason for that is that while a minimum 400 ms latency is fine when
playing a YouTube video [1], it's very annoying when the whole desktop
is being streamed, either through the streaming agent or through the
future Virgl remote access, because then it translates into a 400 ms


Are you working on something like that (remote virgl)?

  
lag between every mouse click, keypress and the screen update.


This patch is the first step in that without it adjusting the latency is
impossible unless one has played some sound first.



Notice that currently there's small hacky patch on client to ignore 
latency when it's full

screen streaming and there is no audio playback.

(d047b2fb7f5d492d6c49f589ba5ff862c6b115da)



Other steps are:
* Reducing the default latency.



What will be the default? what will happen to late video frames?



* Increasing the latency when needed.



IIRC this latency is also considered when we match the video frames to
the audio playback, such adjustments wouldn't affect the video-audio
synchronization / stream flow?

what about playing both audio and video as fast as possible when it's 
streaming
case, have you considered it? (i was looking at this issue before and 
thought this

not too bad option :p)


Thanks, Snir.


* Reducing the latency after network hiccups.
* Ensuring latency adjustments don't interfere with the video stream bit
   rate control.


[1] Even in that case the 400 ms latency shows up as the hiccup you get
 when Spice switches from sending frames as regular screen updates to
 the streaming code.



___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel