[Spice-devel] [PATCH spice-gtk v3] Make error messages translatable

Victor Toso victortoso at redhat.com
Thu Jul 13 10:19:16 UTC 2017


Hi,

In my comments below, I assume that if we are using a message for debug
purposes, we don't need to translate it. That is, if we GError* will not
be exported to the application.

Let me know if my assumption is wrong.

On Tue, Jul 11, 2017 at 03:43:41PM +0200, Pavel Grunt wrote:
> Signed-off-by: Victor Toso <victortoso at redhat.com>
> Signed-off-by: Pavel Grunt <pgrunt at redhat.com>
> ---
>  po/POTFILES.in                         | 13 +++++++++++++
>  src/channel-main.c                     | 15 ++++++++++-----
>  src/channel-port.c                     |  4 +++-
>  src/channel-usbredir.c                 |  8 ++++----
>  src/giopipe.c                          |  7 +++++--
>  src/smartcard-manager.c                |  5 +++--
>  src/spice-channel.c                    |  2 +-
>  src/spice-client-glib-usb-acl-helper.c |  2 +-
>  src/spice-file-transfer-task.c         |  6 ++++--
>  src/spice-pulse.c                      |  8 +++++---
>  src/spice-session.c                    |  2 +-
>  src/spice-uri.c                        | 17 ++++++++++-------
>  src/spice-widget-egl.c                 | 23 ++++++++++++-----------
>  src/usb-acl-helper.c                   |  9 +++++----
>  src/usb-device-manager.c               |  6 +++---
>  src/vmcstream.c                        |  3 ++-
>  src/win-usb-dev.c                      |  8 ++++----
>  src/wocky-http-proxy.c                 | 11 ++++++-----
>  18 files changed, 92 insertions(+), 57 deletions(-)
> 
> diff --git a/po/POTFILES.in b/po/POTFILES.in
> index d1033f9..7a744af 100644
> --- a/po/POTFILES.in
> +++ b/po/POTFILES.in
> @@ -1,9 +1,22 @@
>  src/channel-main.c
> +src/channel-port.c
>  src/channel-usbredir.c
>  src/desktop-integration.c
> +src/giopipe.c
> +src/smartcard-manager.c
>  src/spice-channel.c
> +src/spice-client-glib-usb-acl-helper.c
> +src/spice-file-transfer-task.c
>  src/spice-option.c
> +src/spice-pulse.c
> +src/spice-session.c
> +src/spice-uri.c
> +src/spice-widget-egl.c
> +src/usb-acl-helper.c
>  src/usb-device-manager.c
>  src/usb-device-widget.c
>  src/usbutil.c
> +src/vmcstream.c
> +src/win-usb-dev.c
> +src/wocky-http-proxy.c
>  tools/spice-cmdline.c
> diff --git a/src/channel-main.c b/src/channel-main.c
> index 4edd575..c035ce1 100644
> --- a/src/channel-main.c
> +++ b/src/channel-main.c
> @@ -17,6 +17,7 @@
>  */
>  #include "config.h"
>  
> +#include <libintl.h>
>  #include <math.h>
>  #include <spice/vd_agent.h>
>  #include <glib/gstdio.h>
> @@ -1900,7 +1901,7 @@ static void main_agent_handle_xfer_status(SpiceMainChannel *channel,
>      default:
>          g_warn_if_reached();
>          error = g_error_new(SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "unhandled status type: %u", msg->result);
> +                            _("unhandled status type: %u"), msg->result);
>          break;
>      }
>  
> @@ -2906,12 +2907,16 @@ failed:
>  
>  static void file_transfer_operation_free(FileTransferOperation *xfer_op)
>  {
> +    const char *error_summary_fmt;
>      g_return_if_fail(xfer_op != NULL);
>  
> +    error_summary_fmt = ngettext(_("Transferring %u file: %u succeed, %u cancelled, %u failed"),
> +                                 _("Transferring %u files: %u succeed, %u cancelled, %u failed"),
> +                                 xfer_op->stats.num_files);
>      if (xfer_op->stats.failed != 0) {
>          GError *error = g_error_new(SPICE_CLIENT_ERROR,
>                                      SPICE_CLIENT_ERROR_FAILED,
> -                                    "Transferring %u files: %u succeed, %u cancelled, %u failed",
> +                                    error_summary_fmt,
>                                      xfer_op->stats.num_files,
>                                      xfer_op->stats.succeed,
>                                      xfer_op->stats.cancelled,
> @@ -2921,7 +2926,7 @@ static void file_transfer_operation_free(FileTransferOperation *xfer_op)
>      } else if (xfer_op->stats.cancelled != 0 && xfer_op->stats.succeed == 0) {
>          GError *error = g_error_new(G_IO_ERROR,
>                                      G_IO_ERROR_CANCELLED,
> -                                    "Transferring %u files: %u succeed, %u cancelled, %u failed",
> +                                    error_summary_fmt,
>                                      xfer_op->stats.num_files,
>                                      xfer_op->stats.succeed,
>                                      xfer_op->stats.cancelled,
> @@ -2962,7 +2967,7 @@ static void spice_main_channel_reset_all_xfer_operations(SpiceMainChannel *chann
>          }
>  
>          error = g_error_new(SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "Agent connection closed");
> +                            _("Agent connection closed"));
>          spice_file_transfer_task_completed(xfer_task, error);
>      }
>      g_list_free(keys);
> @@ -3119,7 +3124,7 @@ void spice_main_file_copy_async(SpiceMainChannel *channel,
>                                  spice_main_file_copy_async,
>                                  SPICE_CLIENT_ERROR,
>                                  SPICE_CLIENT_ERROR_FAILED,
> -                                "The agent is not connected");
> +                                _("The agent is not connected"));
>          return;
>      }
>  
> diff --git a/src/channel-port.c b/src/channel-port.c
> index d922e4b..9fb7f05 100644
> --- a/src/channel-port.c
> +++ b/src/channel-port.c
> @@ -17,6 +17,8 @@
>  */
>  #include "config.h"
>  
> +#include <glib/gi18n-lib.h>
> +
>  #include "spice-client.h"
>  #include "spice-common.h"
>  #include "spice-channel-priv.h"
> @@ -294,7 +296,7 @@ void spice_port_write_async(SpicePortChannel *self,
>          g_task_report_new_error(self, callback,
>              user_data, spice_port_write_async,
>              SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -            "The port is not opened");
> +            _("The port is not opened"));
>          return;
>      }
>  
> diff --git a/src/channel-usbredir.c b/src/channel-usbredir.c
> index fef62ce..615b959 100644
> --- a/src/channel-usbredir.c
> +++ b/src/channel-usbredir.c
> @@ -304,7 +304,7 @@ static gboolean spice_usbredir_channel_open_device(
>      rc = libusb_open(priv->device, &handle);
>      if (rc != 0) {
>          g_set_error(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                    "Could not open usb device: %s [%i]",
> +                    _("Could not open usb device: %s [%i]"),
>                      spice_usbutil_libusb_strerror(rc), rc);
>          return FALSE;
>      }
> @@ -348,7 +348,7 @@ static void spice_usbredir_channel_open_acl_cb(
>      spice_usb_acl_helper_open_acl_finish(acl_helper, acl_res, &err);
>      if (!err && priv->state == STATE_DISCONNECTING) {
>          err = g_error_new_literal(G_IO_ERROR, G_IO_ERROR_CANCELLED,
> -                                  "USB redirection channel connect cancelled");
> +                                  _("USB redirection channel connect cancelled"));
>      }
>      if (!err) {
>          spice_usbredir_channel_open_device(channel, &err);
> @@ -425,14 +425,14 @@ void spice_usbredir_channel_connect_device_async(
>      if (!priv->host) {
>          g_task_return_new_error(task,
>                              SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "Error libusb context not set");
> +                            _("Error libusb context not set"));
>          goto done;
>      }
>  
>      if (priv->state != STATE_DISCONNECTED) {
>          g_task_return_new_error(task,
>                              SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "Error channel is busy");
> +                            _("Error channel is busy"));
>          goto done;
>      }
>  
> diff --git a/src/giopipe.c b/src/giopipe.c
> index 08aea9a..e9d4abe 100644
> --- a/src/giopipe.c
> +++ b/src/giopipe.c
> @@ -16,6 +16,9 @@
>    License along with this library; if not, see <http://www.gnu.org/licenses/>.
>  */
>  
> +#include "config.h"
> +
> +#include <glib/gi18n-lib.h>
>  #include <string.h>
>  #include <errno.h>
>  
> @@ -100,7 +103,7 @@ pipe_input_stream_read (GInputStream  *stream,
>  
>      if (g_input_stream_is_closed (stream) || self->peer_closed) {
>          g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_CLOSED,
> -                             "Stream is already closed");
> +                             _("Stream is already closed"));
>          return -1;
>      }
>  
> @@ -288,7 +291,7 @@ pipe_output_stream_write (GOutputStream  *stream,
>      //g_debug("write %p :%"G_GSIZE_FORMAT, stream, count);
>      if (g_output_stream_is_closed (stream) || self->peer_closed) {
>          g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_CLOSED,
> -                             "Stream is already closed");
> +                             _("Stream is already closed"));
>          return -1;
>      }
>  
> diff --git a/src/smartcard-manager.c b/src/smartcard-manager.c
> index 708f976..05e113d 100644
> --- a/src/smartcard-manager.c
> +++ b/src/smartcard-manager.c
> @@ -18,6 +18,7 @@
>  #include "config.h"
>  
>  #include <glib-object.h>
> +#include <glib/gi18n-lib.h>
>  #include <string.h>
>  
>  #ifdef USE_SMARTCARD_012
> @@ -439,7 +440,7 @@ static gboolean smartcard_manager_init(SmartcardManagerInitArgs *args)
>      if (options == NULL) {
>          args->err = g_error_new(SPICE_CLIENT_ERROR,
>                                  SPICE_CLIENT_ERROR_FAILED,
> -                                "vcard_emul_options() failed!");
> +                                _("vcard_emul_options() failed!"));

Sounds like an warning message instead. I'd change the error message to
"Failed to initialize smartcard" instead. (in preparatory patch to this
one?)

>          goto end;
>      }
>  
> @@ -453,7 +454,7 @@ init:
>              && (emul_init_status != VCARD_EMUL_INIT_ALREADY_INITED)) {
>          args->err = g_error_new(SPICE_CLIENT_ERROR,
>                                  SPICE_CLIENT_ERROR_FAILED,
> -                                "Failed to initialize smartcard");
> +                                _("Failed to initialize smartcard"));
>          goto end;
>      }
>  
> diff --git a/src/spice-channel.c b/src/spice-channel.c
> index 4c3db9d..9d720ab 100644
> --- a/src/spice-channel.c
> +++ b/src/spice-channel.c
> @@ -3138,7 +3138,7 @@ void spice_channel_flush_async(SpiceChannel *self, GCancellable *cancellable,
>          g_task_report_new_error(self, callback, user_data,
>              spice_channel_flush_async,
>              SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -            "The channel is not ready yet");
> +            _("The channel is not ready yet"));
>          return;
>      }
>  
> diff --git a/src/spice-client-glib-usb-acl-helper.c b/src/spice-client-glib-usb-acl-helper.c
> index 80cdced..9f021da 100644
> --- a/src/spice-client-glib-usb-acl-helper.c
> +++ b/src/spice-client-glib-usb-acl-helper.c
> @@ -300,7 +300,7 @@ polkit_authority_get_sync (GCancellable *cancellable, GError **error)
>  
>      authority = polkit_authority_get ();
>      if (!authority)
> -        g_set_error (error, 0, 0, "failed to get the PolicyKit authority");
> +        g_set_error (error, 0, 0, _("failed to get the PolicyKit authority"));
>  
>      return authority;
>  }
> diff --git a/src/spice-file-transfer-task.c b/src/spice-file-transfer-task.c
> index d0170da..46165f7 100644
> --- a/src/spice-file-transfer-task.c
> +++ b/src/spice-file-transfer-task.c
> @@ -17,6 +17,8 @@
>  
>  #include "config.h"
>  
> +#include <glib/gi18n-lib.h>
> +
>  #include "spice-file-transfer-task-priv.h"
>  
>  /**
> @@ -310,7 +312,7 @@ void spice_file_transfer_task_completed(SpiceFileTransferTask *self,
>          if (self->error == NULL) {
>              self->error = g_error_new(SPICE_CLIENT_ERROR,
>                                        SPICE_CLIENT_ERROR_FAILED,
> -                                      "Cannot complete task in pending state");
> +                                      _("Cannot complete task in pending state"));
>          }
>          return;
>      }
> @@ -426,7 +428,7 @@ void spice_file_transfer_task_read_async(SpiceFileTransferTask *self,
>                                  spice_file_transfer_task_read_async,
>                                  SPICE_CLIENT_ERROR,
>                                  SPICE_CLIENT_ERROR_FAILED,
> -                                "Cannot read data in pending state");
> +                                _("Cannot read data in pending state"));
>          return;
>      }
>  
> diff --git a/src/spice-pulse.c b/src/spice-pulse.c
> index 5248bc3..1706b74 100644
> --- a/src/spice-pulse.c
> +++ b/src/spice-pulse.c
> @@ -17,6 +17,8 @@
>  */
>  #include "config.h"
>  
> +#include <glib/gi18n-lib.h>
> +
>  #include "spice-pulse.h"
>  #include "spice-common.h"
>  #include "spice-session-priv.h"
> @@ -972,7 +974,7 @@ static void complete_task(SpicePulse *pulse, struct async_task *task, const gcha
>          g_task_return_new_error(task->gtask,
>                                  SPICE_CLIENT_ERROR,
>                                  SPICE_CLIENT_ERROR_FAILED,
> -                                "restore-info failed: %s",
> +                                _("restore-info failed: %s"),

If I'm not mistaken, this is 100% internal usage for debugging purposes
so it does not need to be translated.

>                                  err_msg);
>      /* Volume-info does not change if stream is not found */
>      } else if ((task->is_playback == TRUE && p->playback.info_updated == FALSE) ||
> @@ -980,7 +982,7 @@ static void complete_task(SpicePulse *pulse, struct async_task *task, const gcha
>          g_task_return_new_error(task->gtask,
>                                  SPICE_CLIENT_ERROR,
>                                  SPICE_CLIENT_ERROR_FAILED,
> -                                "Stream not found by pulse");
> +                                _("Stream not found by pulse"));

Same

>      } else {
>          g_task_return_boolean(task->gtask, TRUE);
>      }
> @@ -1216,7 +1218,7 @@ fail:
>                                  pulse_stream_restore_info_async,
>                                  SPICE_CLIENT_ERROR,
>                                  SPICE_CLIENT_ERROR_FAILED,
> -                                "Volume-Info failed: %s",
> +                                _("Volume-Info failed: %s"),

Same

>                                  pa_strerror(pa_context_errno(p->context)));
>          free_async_task(task);
>      }
> diff --git a/src/spice-session.c b/src/spice-session.c
> index 6f8cf5e..bf78aad 100644
> --- a/src/spice-session.c
> +++ b/src/spice-session.c
> @@ -2119,7 +2119,7 @@ static gboolean open_host_idle_cb(gpointer data)
>              address = G_SOCKET_CONNECTABLE(g_unix_socket_address_new(s->unix_path));
>  #else
>              g_set_error_literal(&open_host->error, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                                "Unix path unsupported on this platform");
> +                                _("Unix path unsupported on this platform"));
>  #endif
>          } else {
>              SPICE_DEBUG("open host %s:%d", s->host, open_host->port);
> diff --git a/src/spice-uri.c b/src/spice-uri.c
> index 0376cd8..ec33bc6 100644
> --- a/src/spice-uri.c
> +++ b/src/spice-uri.c
> @@ -17,6 +17,7 @@
>  */
>  #include "config.h"
>  
> +#include <glib/gi18n-lib.h>
>  #include <stdlib.h>
>  #include <string.h>
>  
> @@ -137,7 +138,7 @@ gboolean spice_uri_parse(SpiceURI *self, const gchar *_uri, GError **error)
>          spice_uri_set_port(self, 3129);
>      } else {
>          g_set_error(error, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                    "Invalid uri scheme for proxy: %s", spice_uri_get_scheme(self));
> +                    _("Invalid uri scheme for proxy: %s"), spice_uri_get_scheme(self));
>          goto end;
>      }
>      /* remove trailing slash */
> @@ -165,14 +166,14 @@ gboolean spice_uri_parse(SpiceURI *self, const gchar *_uri, GError **error)
>          uriv = g_strsplit(uri + 1, "]", 2);
>          if (uriv[1] == NULL) {
>              g_set_error(error, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                        "Missing ']' in ipv6 uri");
> +                        _("Missing ']' in ipv6 uri"));
>              goto end;
>          }
>          if (*uriv[1] == ':') {
>              uri_port = uriv[1] + 1;
>          } else if (strlen(uriv[1]) > 0) { /* invalid string after the hostname */
>              g_set_error(error, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                        "Invalid uri address");
> +                        _("Invalid uri address"));
>              goto end;
>          }
>      } else {
> @@ -184,7 +185,7 @@ gboolean spice_uri_parse(SpiceURI *self, const gchar *_uri, GError **error)
>  
>      if (uriv[0] == NULL || strlen(uriv[0]) == 0) {
>          g_set_error(error, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                    "Invalid hostname in uri address");
> +                    _("Invalid hostname in uri address"));
>          goto end;
>      }
>  
> @@ -195,14 +196,16 @@ gboolean spice_uri_parse(SpiceURI *self, const gchar *_uri, GError **error)
>          gint64 port = g_ascii_strtoll(uri_port, &endptr, 10);
>          if (*endptr != '\0') {
>              g_set_error(error, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                        "Invalid uri port: %s", uri_port);
> +                        _("Invalid uri port: %s"), uri_port);
>              goto end;
>          } else if (endptr == uri_port) {
> -            g_set_error(error, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED, "Missing uri port");
> +            g_set_error(error, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> +                        _("Missing uri port"));
>              goto end;
>          }
>          if (port <= 0 || port > 65535) {
> -            g_set_error(error, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED, "Port out of range");
> +            g_set_error(error, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> +                        _("Port out of range"));
>              goto end;
>          }
>          spice_uri_set_port(self, port);
> diff --git a/src/spice-widget-egl.c b/src/spice-widget-egl.c
> index b50641c..8250afc 100644
> --- a/src/spice-widget-egl.c
> +++ b/src/spice-widget-egl.c
> @@ -17,6 +17,7 @@
>  */
>  #include "config.h"
>  
> +#include <glib/gi18n-lib.h>
>  #include <math.h>
>  #include <gdk/gdk.h>
>  
> @@ -108,7 +109,7 @@ static gboolean spice_egl_init_shaders(SpiceDisplay *display, GError **err)
>      if (!status) {
>          glGetShaderInfoLog(fs, sizeof(log), &len, log);
>          g_set_error(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                    "failed to compile fragment shader: %s", log);
> +                    _("failed to compile fragment shader: %s"), log);
>          goto end;
>      }

This is internal spice_egl_init() called from spice-widget. Don't see
the need to translate it

>
> @@ -119,7 +120,7 @@ static gboolean spice_egl_init_shaders(SpiceDisplay *display, GError **err)
>      if (!status) {
>          glGetShaderInfoLog(vs, sizeof(log), &len, log);
>          g_set_error(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                    "failed to compile vertex shader: %s", log);
> +                    _("failed to compile vertex shader: %s"), log);
>          goto end;
>      }

Same

>  
> @@ -131,7 +132,7 @@ static gboolean spice_egl_init_shaders(SpiceDisplay *display, GError **err)
>      if (!status) {
>          glGetProgramInfoLog(d->egl.prog, 1000, &len, log);
>          g_set_error(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                    "error linking shaders: %s", log);
> +                    _("error linking shaders: %s"), log);
>          goto end;
>      }

Same

>  
> @@ -222,13 +223,13 @@ gboolean spice_egl_init(SpiceDisplay *display, GError **err)
>      d->egl.display = eglGetDisplay(dpy);
>      if (d->egl.display == EGL_NO_DISPLAY) {
>          g_set_error_literal(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "failed to get EGL display");
> +                            _("failed to get EGL display"));
>          return FALSE;
>      }

Same

>  
>      if (!eglInitialize(d->egl.display, &major, &minor)) {
>          g_set_error_literal(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "failed to init EGL display");
> +                            _("failed to init EGL display"));
>          return FALSE;

Same

>      }
>  
> @@ -243,7 +244,7 @@ gboolean spice_egl_init(SpiceDisplay *display, GError **err)
>      b = eglBindAPI(EGL_OPENGL_API);
>      if (!b) {
>          g_set_error_literal(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "cannot bind OpenGL API");
> +                            _("cannot bind OpenGL API"));
>          return FALSE;

Same

>      }
>  
> @@ -252,7 +253,7 @@ gboolean spice_egl_init(SpiceDisplay *display, GError **err)
>  
>      if (!b || n != 1) {
>          g_set_error_literal(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "cannot find suitable EGL config");
> +                            _("cannot find suitable EGL config"));
>          return FALSE;

Same

>      }
>  
> @@ -262,7 +263,7 @@ gboolean spice_egl_init(SpiceDisplay *display, GError **err)
>                                    ctx_att);
>      if (!d->egl.ctx) {
>          g_set_error_literal(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "cannot create EGL context");
> +                            _("cannot create EGL context"));
>          return FALSE;

Same

>      }
>
> @@ -303,7 +304,7 @@ gl_make_current(SpiceDisplay *display, GError **err)
>          if (success != EGL_TRUE) {
>              g_set_error_literal(err, SPICE_CLIENT_ERROR,
>                                  SPICE_CLIENT_ERROR_FAILED,
> -                                "failed to activate context");
> +                                _("failed to activate context"));
>              return FALSE;

Used in more functions, all internal (and only one really uses the err
argument)

>          }
>      }
> @@ -342,7 +343,7 @@ static gboolean spice_widget_init_egl_win(SpiceDisplay *display, GdkWindow *win,
>
>      if (!native) {
>          g_set_error_literal(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "this platform isn't supported");
> +                            _("this platform isn't supported"));
>          return FALSE;

It sounds something that application would like to have but that's still
internal here.

>      }
>
> @@ -352,7 +353,7 @@ static gboolean spice_widget_init_egl_win(SpiceDisplay *display, GdkWindow *win,
>  
>      if (!d->egl.surface) {
>          g_set_error_literal(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "failed to init egl surface");
> +                            _("failed to init egl surface"));
>          return FALSE;
>      }

Same

>  
> diff --git a/src/usb-acl-helper.c b/src/usb-acl-helper.c
> index fa845be..de2e60c 100644
> --- a/src/usb-acl-helper.c
> +++ b/src/usb-acl-helper.c
> @@ -21,6 +21,7 @@
>  
>  #include "config.h"
>  
> +#include <glib/gi18n-lib.h>
>  #include <errno.h>
>  #include <stdio.h>
>  #include <string.h>
> @@ -86,7 +87,7 @@ static void async_result_set_cancelled(GTask *task)
>  {
>      g_task_return_new_error(task,
>                  G_IO_ERROR, G_IO_ERROR_CANCELLED,
> -                "Setting USB device node ACL cancelled");
> +                _("Setting USB device node ACL cancelled"));

It can go all the way to
spice_usb_device_manager_connect_device_async(), looks good

>  }
>  
>  static gboolean cb_out_watch(GIOChannel    *channel,
> @@ -119,7 +120,7 @@ static gboolean cb_out_watch(GIOChannel    *channel,
>              } else {
>                  g_task_return_new_error(priv->task,
>                              SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "Error setting USB device node ACL: '%s'",
> +                            _("Error setting USB device node ACL: '%s'"),
>                              string);
>              }
>              g_free(string);
> @@ -130,7 +131,7 @@ static gboolean cb_out_watch(GIOChannel    *channel,
>          case G_IO_STATUS_EOF:
>              g_task_return_new_error(priv->task,
>                          SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                        "Unexpected EOF reading from acl helper stdout");
> +                        _("Unexpected EOF reading from acl helper stdout"));
>              break;
>          case G_IO_STATUS_AGAIN:
>              return TRUE; /* Wait for more input */
> @@ -202,7 +203,7 @@ void spice_usb_acl_helper_open_acl_async(SpiceUsbAclHelper *self,
>      if (priv->out_ch) {
>          g_task_return_new_error(task,
>                              SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "Error acl-helper already has an acl open");
> +                            _("Error acl-helper already has an acl open"));
>          goto done;
>      }
>  
> diff --git a/src/usb-device-manager.c b/src/usb-device-manager.c
> index 29f2846..8252f58 100644
> --- a/src/usb-device-manager.c
> +++ b/src/usb-device-manager.c
> @@ -304,7 +304,7 @@ static gboolean spice_usb_device_manager_initable_init(GInitable  *initable,
>          const char *desc = spice_usbutil_libusb_strerror(rc);
>          g_warning("Error initializing USB support: %s [%i]", desc, rc);
>          g_set_error(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                    "Error initializing USB support: %s [%i]", desc, rc);
> +                    _("Error initializing USB support: %s [%i]"), desc, rc);
>          return FALSE;
>      }
>  
> @@ -337,7 +337,7 @@ static gboolean spice_usb_device_manager_initable_init(GInitable  *initable,
>          const char *desc = spice_usbutil_libusb_strerror(rc);
>          g_warning("Error initializing USB hotplug support: %s [%i]", desc, rc);
>          g_set_error(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                  "Error initializing USB hotplug support: %s [%i]", desc, rc);
> +                    _("Error initializing USB hotplug support: %s [%i]"), desc, rc);
>          return FALSE;
>      }
>      spice_usb_device_manager_start_event_listening(self, NULL);
> @@ -1406,7 +1406,7 @@ _spice_usb_device_manager_connect_device_async(SpiceUsbDeviceManager *self,
>      if (spice_usb_device_manager_is_device_connected(self, device)) {
>          g_task_return_new_error(task,
>                              SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> -                            "Cannot connect an already connected usb device");
> +                            _("Cannot connect an already connected usb device"));
>          goto done;
>      }
>  
> diff --git a/src/vmcstream.c b/src/vmcstream.c
> index 0634bce..893df53 100644
> --- a/src/vmcstream.c
> +++ b/src/vmcstream.c
> @@ -17,6 +17,7 @@
>  */
>  #include "config.h"
>  
> +#include <glib/gi18n-lib.h>
>  #include <string.h>
>  
>  #include "vmcstream.h"
> @@ -180,7 +181,7 @@ read_cancelled(GCancellable *cancellable,
>      SPICE_DEBUG("read cancelled, %p", self->task);
>      g_task_return_new_error(self->task,
>                              G_IO_ERROR, G_IO_ERROR_CANCELLED,
> -                            "read cancelled");
> +                            _("read cancelled"));

Don't see a need to translate that

>
>      /* With GTask, we don't need to disconnect GCancellable when task is
>       * cancelled within cancellable callback as it could lead to deadlocks
> diff --git a/src/win-usb-dev.c b/src/win-usb-dev.c
> index ec3dd91..8d8a704 100644
> --- a/src/win-usb-dev.c
> +++ b/src/win-usb-dev.c
> @@ -143,7 +143,7 @@ g_udev_client_list_devices(GUdevClient *self, GList **devs,
>          const char *errstr = spice_usbutil_libusb_strerror(rc);
>          g_warning("%s: libusb_get_device_list failed - %s", name, errstr);
>          g_set_error(err, G_UDEV_CLIENT_ERROR, G_UDEV_CLIENT_LIBUSB_FAILED,
> -                    "%s: Error getting device list from libusb: %s [%"G_GSSIZE_FORMAT"]",
> +                    _("%s: Error getting device list from libusb: %s [%"G_GSSIZE_FORMAT"]"),
>                      name, errstr, rc);
>          return -4;
>      }
> @@ -195,7 +195,7 @@ g_udev_client_initable_init(GInitable *initable, GCancellable *cancellable,
>          const char *errstr = spice_usbutil_libusb_strerror(rc);
>          g_warning("Error initializing USB support: %s [%i]", errstr, rc);
>          g_set_error(err, G_UDEV_CLIENT_ERROR, G_UDEV_CLIENT_LIBUSB_FAILED,
> -                    "Error initializing USB support: %s [%i]", errstr, rc);
> +                    _("Error initializing USB support: %s [%i]"), errstr, rc);
>          return FALSE;
>      }
>  
> @@ -214,7 +214,7 @@ g_udev_client_initable_init(GInitable *initable, GCancellable *cancellable,
>          DWORD e = GetLastError();
>          g_warning("RegisterClass failed , %ld", (long)e);
>          g_set_error(err, G_UDEV_CLIENT_ERROR, G_UDEV_CLIENT_WINAPI_FAILED,
> -                    "RegisterClass failed: %ld", (long)e);
> +                    _("RegisterClass failed: %ld"), (long)e);
>          goto g_udev_client_init_failed;
>      }
>      priv->hwnd = CreateWindow(G_UDEV_CLIENT_WINCLASS_NAME,
> @@ -223,7 +223,7 @@ g_udev_client_initable_init(GInitable *initable, GCancellable *cancellable,
>          DWORD e = GetLastError();
>          g_warning("CreateWindow failed: %ld", (long)e);
>          g_set_error(err, G_UDEV_CLIENT_ERROR, G_UDEV_CLIENT_LIBUSB_FAILED,
> -                    "CreateWindow failed: %ld", (long)e);
> +                    _("CreateWindow failed: %ld"), (long)e);
>          goto g_udev_client_init_failed_unreg;
>      }
>  
> diff --git a/src/wocky-http-proxy.c b/src/wocky-http-proxy.c
> index 8120a55..7dcb5a1 100644
> --- a/src/wocky-http-proxy.c
> +++ b/src/wocky-http-proxy.c
> @@ -24,6 +24,7 @@
>  
>  #include "wocky-http-proxy.h"
>  
> +#include <glib/gi18n-lib.h>
>  #include <string.h>
>  #include <stdlib.h>
>  
> @@ -120,7 +121,7 @@ check_reply (const gchar *buffer, gboolean has_cred, GError **error)
>        || (*ptr != '0' && *ptr != '1'))
>      {
>        g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_PROXY_FAILED,
> -          "Bad HTTP proxy reply");
> +          _("Bad HTTP proxy reply"));
>        return FALSE;
>      }
>
> @@ -153,17 +154,17 @@ check_reply (const gchar *buffer, gboolean has_cred, GError **error)
>          {
>            if (has_cred)
>              g_set_error (error, G_IO_ERROR, G_IO_ERROR_PROXY_AUTH_FAILED,
> -                "HTTP proxy authentication failed");
> +                _("HTTP proxy authentication failed"));
>            else
>              g_set_error (error, G_IO_ERROR, G_IO_ERROR_PROXY_NEED_AUTH,
> -                "HTTP proxy authentication required");
> +                _("HTTP proxy authentication required"));
>          }
>        else if (msg[0] == '\0')
>          g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_PROXY_FAILED,
> -            "Connection failed due to broken HTTP reply");
> +            _("Connection failed due to broken HTTP reply"));
>        else
>          g_set_error (error, G_IO_ERROR, G_IO_ERROR_PROXY_FAILED,
> -            "HTTP proxy connection failed: %i %s",
> +            _("HTTP proxy connection failed: %i %s"),
>              err_code, msg);

Not sure how the proxy works nor if this translations are useful, I'd
guess it is.

Reviewed-by: Victor Toso <victortoso at redhat.com>

>  
>        g_free (msg);
> -- 
> 2.13.0
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20170713/76494a3f/attachment-0001.sig>


More information about the Spice-devel mailing list