[virt-tools-list] [virt-manager PATCH] localization: mark several strings as translatable

Cole Robinson crobinso at redhat.com
Fri Feb 5 15:40:02 UTC 2016


Comments inline

On 02/05/2016 10:23 AM, Pavel Hrdina wrote:
> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> ---
>  virtManager/addhardware.py     | 54 +++++++++++++++++-----------------
>  virtManager/connect.py         |  6 ++--
>  virtManager/connectauth.py     |  2 +-
>  virtManager/connection.py      |  2 +-
>  virtManager/console.py         |  4 +--
>  virtManager/createinterface.py | 24 +++++++--------
>  virtManager/details.py         | 14 ++++-----
>  virtManager/error.py           |  2 +-
>  virtManager/gfxdetails.py      |  4 +--
>  virtManager/host.py            | 14 ++++-----
>  virtManager/interface.py       |  4 +--
>  virtManager/libvirtobject.py   |  4 +--
>  virtManager/netlist.py         |  8 ++---
>  virtManager/preferences.py     |  4 +--
>  virtManager/storagelist.py     | 10 +++----
>  virtinst/cloner.py             | 66 +++++++++++++++++++++---------------------
>  virtinst/devicedisk.py         |  4 +--
>  virtinst/devicehostdev.py      |  2 +-
>  virtinst/devicerng.py          |  4 +--
>  virtinst/network.py            |  4 +--
>  virtinst/seclabel.py           |  4 +--
>  virtinst/support.py            |  2 +-
>  22 files changed, 121 insertions(+), 121 deletions(-)
> 
> diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
> index d3a69c3..45b0c03 100644
> --- a/virtManager/addhardware.py
> +++ b/virtManager/addhardware.py
> @@ -177,7 +177,7 @@ class vmmAddHardware(vmmGObjectUI):
>          hw_list = self.widget("hw-list")
>          hw_list.set_model(model)
>  
> -        hw_col = Gtk.TreeViewColumn("Hardware")
> +        hw_col = Gtk.TreeViewColumn(_("Hardware"))
>          hw_col.set_spacing(6)
>          hw_col.set_min_width(165)
>  
> @@ -347,32 +347,32 @@ class vmmAddHardware(vmmGObjectUI):
>          def add_hw_option(name, icon, page, sensitive, errortxt, devtype=None):
>              model.append([name, icon, page, sensitive, errortxt, devtype])
>  
> -        add_hw_option("Storage", "drive-harddisk", PAGE_DISK, have_storage,
> +        add_hw_option(_("Storage"), "drive-harddisk", PAGE_DISK, have_storage,
>                        have_storage and storage_tooltip or None)
> -        add_hw_option("Controller", "device_pci", PAGE_CONTROLLER, True, None)
> -        add_hw_option("Network", "network-idle", PAGE_NETWORK, True, None)
> -        add_hw_option("Input", "input-mouse", PAGE_INPUT, self.vm.is_hvm(),
> +        add_hw_option(_("Controller"), "device_pci", PAGE_CONTROLLER, True, None)
> +        add_hw_option(_("Network"), "network-idle", PAGE_NETWORK, True, None)
> +        add_hw_option(_("Input"), "input-mouse", PAGE_INPUT, self.vm.is_hvm(),
>                        _("Not supported for this guest type."))
> -        add_hw_option("Graphics", "video-display", PAGE_GRAPHICS,
> +        add_hw_option(_("Graphics"), "video-display", PAGE_GRAPHICS,
>                        True, None)
> -        add_hw_option("Sound", "audio-card", PAGE_SOUND,
> +        add_hw_option(_("Sound"), "audio-card", PAGE_SOUND,
>                        self.vm.is_hvm(),
>                        _("Not supported for this guest type."))
> -        add_hw_option("Serial", Gtk.STOCK_CONNECT, PAGE_CHAR,
> +        add_hw_option(_("Serial"), Gtk.STOCK_CONNECT, PAGE_CHAR,
>                        self.vm.is_hvm(),
>                        _("Not supported for this guest type."),
>                        "serial")
> -        add_hw_option("Parallel", Gtk.STOCK_CONNECT, PAGE_CHAR,
> +        add_hw_option(_("Parallel"), Gtk.STOCK_CONNECT, PAGE_CHAR,
>                        self.vm.is_hvm(),
>                        _("Not supported for this guest type."),
>                        "parallel")
> -        add_hw_option("Console", Gtk.STOCK_CONNECT, PAGE_CHAR,
> +        add_hw_option(_("Console"), Gtk.STOCK_CONNECT, PAGE_CHAR,
>                        True, None, "console")
> -        add_hw_option("Channel", Gtk.STOCK_CONNECT, PAGE_CHAR,
> +        add_hw_option(_("Channel"), Gtk.STOCK_CONNECT, PAGE_CHAR,
>                        self.vm.is_hvm(),
>                        _("Not supported for this guest type."),
>                        "channel")
> -        add_hw_option("USB Host Device", "system-run", PAGE_HOSTDEV,
> +        add_hw_option(_("USB Host Device"), "system-run", PAGE_HOSTDEV,
>                        self.conn.is_nodedev_capable(),
>                        _("Connection does not support host device enumeration"),
>                        "usb")
> @@ -383,28 +383,28 @@ class vmmAddHardware(vmmGObjectUI):
>          if self.vm.is_container():
>              nodedev_enabled = False
>              nodedev_errstr = _("Not supported for containers")
> -        add_hw_option("PCI Host Device", "system-run", PAGE_HOSTDEV,
> +        add_hw_option("PCI Host Device"), "system-run", PAGE_HOSTDEV,
>                        nodedev_enabled, nodedev_errstr, "pci")
>  
> -        add_hw_option("Video", "video-display", PAGE_VIDEO, True,
> +        add_hw_option(_("Video"), "video-display", PAGE_VIDEO, True,
>                        _("Libvirt version does not support video devices."))
> -        add_hw_option("Watchdog", "device_pci", PAGE_WATCHDOG,
> +        add_hw_option(_("Watchdog"), "device_pci", PAGE_WATCHDOG,
>                        self.vm.is_hvm(),
>                        _("Not supported for this guest type."))
> -        add_hw_option("Filesystem", "folder", PAGE_FILESYSTEM,
> +        add_hw_option(_("Filesystem"), "folder", PAGE_FILESYSTEM,
>                        self.conn.check_support(
>                          self.conn.SUPPORT_CONN_FILESYSTEM) and
>                        not self.vm.stable_defaults(),
>                        _("Not supported for this hypervisor/libvirt "
>                          "combination."))
> -        add_hw_option("Smartcard", "device_serial", PAGE_SMARTCARD,
> +        add_hw_option(_("Smartcard"), "device_serial", PAGE_SMARTCARD,
>                        True, None)
> -        add_hw_option("USB Redirection", "device_usb", PAGE_USBREDIR,
> +        add_hw_option(_("USB Redirection"), "device_usb", PAGE_USBREDIR,
>                        True, None)
> -        add_hw_option("TPM", "device_cpu", PAGE_TPM,
> +        add_hw_option(_("TPM"), "device_cpu", PAGE_TPM,
>                        True, None)
> -        add_hw_option("RNG", "system-run", PAGE_RNG, True, None)
> -        add_hw_option("Panic Notifier", "system-run", PAGE_PANIC,
> +        add_hw_option(_("RNG"), "system-run", PAGE_RNG, True, None)
> +        add_hw_option(_("Panic Notifier"), "system-run", PAGE_PANIC,
>              self.conn.check_support(self.conn.SUPPORT_CONN_PANIC_DEVICE),
>              _("Not supported for this hypervisor/libvirt combination."))
>  
> @@ -600,8 +600,8 @@ class vmmAddHardware(vmmGObjectUI):
>          model.clear()
>  
>          # [xml value, label]
> -        model.append(["passthrough", "Passthrough"])
> -        model.append(["host", "Host"])
> +        model.append(["passthrough", _("Passthrough")])
> +        model.append(["host", _("Host")])
>  
>      @staticmethod
>      def build_smartcard_mode_combo(vm, combo):
> @@ -628,8 +628,8 @@ class vmmAddHardware(vmmGObjectUI):
>          model.clear()
>  
>          # [xml value, label, conn details]
> -        model.append(["spicevmc", "Spice channel", False])
> -        model.append(["tcp", "TCP", True])
> +        model.append(["spicevmc", _("Spice channel"), False])
> +        model.append(["tcp", _("TCP"), True])
> 

TCP is an acronym and probably shouldn't be translated


>      @staticmethod
>      def build_redir_type_combo(vm, combo):
> @@ -714,7 +714,7 @@ class vmmAddHardware(vmmGObjectUI):
>              if not vm.get_xmlobj().os.is_q35():
>                  rows.append(["ide", "IDE"])
>              rows.append(["sata", "SATA"])
> -            rows.append(["fdc", "Floppy"])
> +            rows.append(["fdc", _("Floppy")])
>  
>              if not vm.stable_defaults():
>                  rows.append(["scsi", "SCSI"])
> @@ -1117,7 +1117,7 @@ class vmmAddHardware(vmmGObjectUI):
>  
>          if page == PAGE_CHAR:
>              char_class = self._get_char_class()
> -            return char_class.virtual_device_type.capitalize() + " Device"
> +            return char_class.virtual_device_type.capitalize() + _(" Device")

Better way to do this is to do

_("%s Device")

Incase translator needs to reorder the string

>          if page == PAGE_HOSTDEV:
>              row = self._get_hw_selection()
>              if row and row[5] == "pci":
> diff --git a/virtManager/connect.py b/virtManager/connect.py
> index 7878611..1b218e5 100644
> --- a/virtManager/connect.py
> +++ b/virtManager/connect.py
> @@ -165,9 +165,9 @@ class vmmConnect(vmmGObjectUI):
>                  model.append([rowid, label])
>  
>          _add_hv_row(HV_QEMU, "qemu", "QEMU/KVM")
> -        _add_hv_row(HV_QEMU_SESSION, "qemu", "QEMU/KVM user session")
> +        _add_hv_row(HV_QEMU_SESSION, "qemu", "QEMU/KVM " + _("user session"))
>          _add_hv_row(HV_XEN, "xen", "Xen")
> -        _add_hv_row(HV_LXC, "lxc", "LXC (Linux Containers)")
> +        _add_hv_row(HV_LXC, "lxc", "LXC (" + _("Linux Containers") + ")")
>          _add_hv_row(HV_BHYVE, "bhyve", "Bhyve")
>          combo.set_model(model)
>          uiutil.init_combo_text_column(combo, 1)
> @@ -176,7 +176,7 @@ class vmmConnect(vmmGObjectUI):
>          model = Gtk.ListStore(str)
>          model.append(["SSH"])
>          model.append(["TCP (SASL, Kerberos)"])
> -        model.append(["SSL/TLS with certificates"])
> +        model.append(["SSL/TLS " + _("with certificates)"])
>          combo.set_model(model)
>          uiutil.init_combo_text_column(combo, 0)
>  
> diff --git a/virtManager/connectauth.py b/virtManager/connectauth.py
> index 03cd067..635fce7 100644
> --- a/virtManager/connectauth.py
> +++ b/virtManager/connectauth.py
> @@ -81,7 +81,7 @@ def _creds_dialog_main(conn, creds):
>      """
>      from gi.repository import Gtk
>  
> -    dialog = Gtk.Dialog("Authentication required", None, 0,
> +    dialog = Gtk.Dialog(_("Authentication required"), None, 0,
>                          (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
>                           Gtk.STOCK_OK, Gtk.ResponseType.OK))
>      label = []
> diff --git a/virtManager/connection.py b/virtManager/connection.py
> index bd604b9..8f4def2 100644
> --- a/virtManager/connection.py
> +++ b/virtManager/connection.py
> @@ -414,7 +414,7 @@ class vmmConnection(vmmGObject):
>          ret = hv
>  
>          if is_session:
> -            ret += " User session"
> +            ret += _(" User session")

I would remove the leading space from the translation, so " " + _(...)

>          elif (path and path != "/system" and os.path.basename(path)):
>              # Used by test URIs to report what XML file they are using
>              ret += " %s" % os.path.basename(path)
> diff --git a/virtManager/console.py b/virtManager/console.py
> index 217df3d..3a1338e 100644
> --- a/virtManager/console.py
> +++ b/virtManager/console.py
> @@ -871,9 +871,9 @@ class vmmConsolePages(vmmGObjectUI):
>  
>          for dev in devs:
>              if dev.virtual_device_type == "console":
> -                label = "Text Console %d" % (dev.vmmindex + 1)
> +                label = _("Text Console %d") % (dev.vmmindex + 1)
>              else:
> -                label = "Serial %d" % (dev.vmmindex + 1)
> +                label = _("Serial %d") % (dev.vmmindex + 1)
>  
>              tooltip = vmmSerialConsole.can_connect(self.vm, dev)
>              sensitive = not bool(tooltip)
> diff --git a/virtManager/createinterface.py b/virtManager/createinterface.py
> index 7be5800..a0aa4ff 100644
> --- a/virtManager/createinterface.py
> +++ b/virtManager/createinterface.py
> @@ -294,16 +294,16 @@ class vmmCreateInterface(vmmGObjectUI):
>          ip_mode.set_model(ip_model)
>          uiutil.init_combo_text_column(ip_mode, 0)
>          ip_model.insert(IP_DHCP, ["DHCP"])
> -        ip_model.insert(IP_STATIC, ["Static"])
> -        ip_model.insert(IP_NONE, ["No configuration"])
> +        ip_model.insert(IP_STATIC, [_("Static")])
> +        ip_model.insert(IP_NONE, [_("No configuration")])
>  
>          ip_mode = self.widget("ipv6-mode")
>          ip_model = Gtk.ListStore(str)
>          ip_mode.set_model(ip_model)
>          uiutil.init_combo_text_column(ip_mode, 0)
>          ip_model.insert(IP_DHCP, ["DHCP"])
> -        ip_model.insert(IP_STATIC, ["Static"])
> -        ip_model.insert(IP_NONE, ["No configuration"])
> +        ip_model.insert(IP_STATIC, [_("Static")])
> +        ip_model.insert(IP_NONE, [_("No configuration")])
>  
>          v6_addr = self.widget("ipv6-address-list")
>          addr_model = Gtk.ListStore(str)
> @@ -432,9 +432,9 @@ class vmmCreateInterface(vmmGObjectUI):
>              # We only want configured (aka interface API) interfaces with
>              # actually present <protocol> info
>              if not is_defined or not iface_obj:
> -                label += " (Not configured)"
> +                label += " (" + _("Not configured") + ")"
>              elif not iface_obj.get_protocol_xml():
> -                label += " (No IP configuration)"
> +                label += " (" + _("No IP configuration") + ")"
>              else:
>                  sensitive = True
>  
> @@ -449,7 +449,7 @@ class vmmCreateInterface(vmmGObjectUI):
>              copy_model.append(row)
>  
>          if len(copy_model) == 0:
> -            copy_model.append(["No child interfaces selected.", None, False])
> +            copy_model.append([_("No child interfaces selected."), None, False])
>  
>          if not enable_copy:
>              copy_model.clear()
> @@ -721,7 +721,7 @@ class vmmCreateInterface(vmmGObjectUI):
>  
>          if is_manual:
>              if ipv4:
> -                label += "IPv4: %s" % (ipv4.dhcp and "DHCP" or "Static")
> +                label += "IPv4: %s" % (ipv4.dhcp and "DHCP" or _("Static"))
>  
>              if ipv6:
>                  if label:
> @@ -730,22 +730,22 @@ class vmmCreateInterface(vmmGObjectUI):
>  
>                  mode_label = ""
>                  if ipv6.autoconf and ipv6.dhcp:
> -                    mode_label += "Autoconf "
> +                    mode_label += _("Autoconf") + " "
>  
>                  if ipv6.dhcp:
>                      mode_label += "DHCP"
>  
>                  if not mode_label:
> -                    mode_label = "Static"
> +                    mode_label = _("Static")
>  
>                  label += mode_label
>  
>          else:
>              if name:
> -                label = "Copy configuration from '%s'" % name
> +                label = _("Copy configuration from '%s'") % name
>  
>          if not label:
> -            label = "No configuration"
> +            label = _("No configuration")
>  
>          self.widget("ip-config-label").set_text(label)
>  
> diff --git a/virtManager/details.py b/virtManager/details.py
> index 3dbd82f..58c8f68 100644
> --- a/virtManager/details.py
> +++ b/virtManager/details.py
> @@ -751,7 +751,7 @@ class vmmDetails(vmmGObjectUI):
>          hw_list_model = Gtk.ListStore(str, str, int, int, object)
>          self.widget("hw-list").set_model(hw_list_model)
>  
> -        hwCol = Gtk.TreeViewColumn("Hardware")
> +        hwCol = Gtk.TreeViewColumn(_("Hardware"))
>          hwCol.set_spacing(6)
>          hwCol.set_min_width(165)
>          hw_txt = Gtk.CellRendererText()
> @@ -1496,7 +1496,7 @@ class vmmDetails(vmmGObjectUI):
>  
>          path = self.err.browse_local(
>              self.vm.conn, _("Save Virtual Machine Screenshot"),
> -            _type=("png", "PNG files"),
> +            _type=("png", _("PNG files")),
>              dialog_type=Gtk.FileChooserAction.SAVE,
>              browse_reason=self.config.CONFIG_DIR_SCREENSHOT,
>              default_name=default)
> @@ -2884,7 +2884,7 @@ class vmmDetails(vmmGObjectUI):
>          uiutil.set_grid_row_visible(
>              self.widget("hostdev-rombar"), hostdev.type == "pci")
>  
> -        devlabel = "<b>Physical %s Device</b>" % hostdev.type.upper()
> +        devlabel = "<b>" + _("Physical %s Device") + "</b>" % hostdev.type.upper()
>          self.widget("hostdev-title").set_markup(devlabel)
>          self.widget("hostdev-source").set_text(pretty_name)
>          self.widget("hostdev-rombar").set_active(rom_bar)
> @@ -3148,10 +3148,10 @@ class vmmDetails(vmmGObjectUI):
>      def _make_boot_rows(self):
>          if not self.vm.can_use_device_boot_order():
>              return [
> -                ["hd", "Hard Disk", "drive-harddisk", False, True],
> -                ["cdrom", "CDROM", "media-optical", False, True],
> -                ["network", "Network (PXE)", "network-idle", False, True],
> -                ["fd", "Floppy", "media-floppy", False, True],
> +                ["hd", _("Hard Disk"), "drive-harddisk", False, True],
> +                ["cdrom", _("CDROM"), "media-optical", False, True],
> +                ["network", _("Network (PXE)"), "network-idle", False, True],
> +                ["fd", _("Floppy"), "media-floppy", False, True],
>              ]
>  
>          ret = []
> diff --git a/virtManager/error.py b/virtManager/error.py
> index 5a838f7..af235be 100644
> --- a/virtManager/error.py
> +++ b/virtManager/error.py
> @@ -134,7 +134,7 @@ class vmmErrorDialog(vmmGObject):
>                                modal=modal)
>  
>      def val_err(self, text1, text2=None, title=_("Input Error"), modal=True):
> -        logtext = "Validation Error: %s" % text1
> +        logtext = _("Validation Error: %s") % text1
>          if text2:
>              logtext += " %s" % text2
>  
> diff --git a/virtManager/gfxdetails.py b/virtManager/gfxdetails.py
> index 702c822..0ae76c9 100644
> --- a/virtManager/gfxdetails.py
> +++ b/virtManager/gfxdetails.py
> @@ -91,9 +91,9 @@ class vmmGraphicsDetails(vmmGObjectUI):
>          combo.set_model(model)
>          uiutil.init_combo_text_column(combo, 1)
>  
> -        model.append(["auto", "Auto"])
> +        model.append(["auto", _("Auto")])
>          model.append([virtinst.VirtualGraphics.KEYMAP_LOCAL,
> -                      "Copy local keymap"])
> +                      _("Copy local keymap")])
>          for k in virtinst.VirtualGraphics.valid_keymaps():
>              model.append([k, k])
>  
> diff --git a/virtManager/host.py b/virtManager/host.py
> index 3c4a1bd..00ba4d8 100644
> --- a/virtManager/host.py
> +++ b/virtManager/host.py
> @@ -154,7 +154,7 @@ class vmmHost(vmmGObjectUI):
>          sel = self.widget("net-list").get_selection()
>          sel.set_select_function((lambda *x: self.confirm_changes()), None)
>  
> -        netCol = Gtk.TreeViewColumn("Networks")
> +        netCol = Gtk.TreeViewColumn(_("Networks"))
>          netCol.set_spacing(6)
>          net_txt = Gtk.CellRendererText()
>          net_img = Gtk.CellRendererPixbuf()
> @@ -182,7 +182,7 @@ class vmmHost(vmmGObjectUI):
>          sel = self.widget("interface-list").get_selection()
>          sel.set_select_function((lambda *x: self.confirm_changes()), None)
>  
> -        interfaceCol = Gtk.TreeViewColumn("Interfaces")
> +        interfaceCol = Gtk.TreeViewColumn(_("Interfaces"))
>          interfaceCol.set_spacing(6)
>          interface_txt = Gtk.CellRendererText()
>          interface_img = Gtk.CellRendererPixbuf()
> @@ -204,14 +204,14 @@ class vmmHost(vmmGObjectUI):
>          childList = self.widget("interface-child-list")
>          childList.set_model(childListModel)
>  
> -        childNameCol = Gtk.TreeViewColumn("Name")
> +        childNameCol = Gtk.TreeViewColumn(_("Name"))
>          child_txt1 = Gtk.CellRendererText()
>          childNameCol.pack_start(child_txt1, True)
>          childNameCol.add_attribute(child_txt1, 'text', 0)
>          childNameCol.set_sort_column_id(0)
>          childList.append_column(childNameCol)
>  
> -        childTypeCol = Gtk.TreeViewColumn("Interface Type")
> +        childTypeCol = Gtk.TreeViewColumn(_("Interface Type"))
>          child_txt2 = Gtk.CellRendererText()
>          childTypeCol.pack_start(child_txt2, True)
>          childTypeCol.add_attribute(child_txt2, 'text', 1)
> @@ -874,7 +874,7 @@ class vmmHost(vmmGObjectUI):
>          self.widget("interface-ipv6-expander").set_visible(bool(ipv6))
>  
>          if ipv4:
> -            mode = ipv4[0] and "DHCP" or "Static"
> +            mode = ipv4[0] and "DHCP" or _("Static")
>              addr = ipv4[1] or "-"
>              self.widget("interface-ipv4-mode").set_text(mode)
>              self.widget("interface-ipv4-address").set_text(addr)
> @@ -882,12 +882,12 @@ class vmmHost(vmmGObjectUI):
>          if ipv6:
>              mode = ""
>              if ipv6[1]:
> -                mode = "Autoconf "
> +                mode = _("Autoconf") + " "
>  
>              if ipv6[0]:
>                  mode += "DHCP"
>              else:
> -                mode = "Static"
> +                mode = _("Static")
>  
>              addrstr = "-"
>              if ipv6[2]:
> diff --git a/virtManager/interface.py b/virtManager/interface.py
> index dc6f4da..3af5974 100644
> --- a/virtManager/interface.py
> +++ b/virtManager/interface.py
> @@ -98,7 +98,7 @@ class vmmInterface(vmmLibvirtObject):
>          elif itype:
>              return str(itype).capitalize()
>          else:
> -            return "Interface"
> +            return _("Interface")
>  
>      def get_startmode(self):
>          return self.get_xmlobj(inactive=True).start_mode or "none"
> @@ -109,7 +109,7 @@ class vmmInterface(vmmLibvirtObject):
>          self._redefine_xmlobj(xmlobj)
>  
>      def get_slaves(self):
> -        return [[obj.name, obj.type or "Unknown"] for obj in
> +        return [[obj.name, obj.type or _("Unknown")] for obj in
>                  self.get_xmlobj().interfaces]
>  
>      def get_slave_names(self):
> diff --git a/virtManager/libvirtobject.py b/virtManager/libvirtobject.py
> index 8df1239..933a61f 100644
> --- a/virtManager/libvirtobject.py
> +++ b/virtManager/libvirtobject.py
> @@ -211,8 +211,8 @@ class vmmLibvirtObject(vmmGObject):
>  
>      def run_status(self):
>          if self.is_active():
> -            return "Active"
> -        return "Inactive"
> +            return _("Active")
> +        return _("Inactive")
>  
>      def _refresh_status(self, newstatus=None, cansignal=True):
>          """
> diff --git a/virtManager/netlist.py b/virtManager/netlist.py
> index 013ee4e..58f3c9a 100644
> --- a/virtManager/netlist.py
> +++ b/virtManager/netlist.py
> @@ -90,10 +90,10 @@ class vmmNetworkList(vmmGObjectUI):
>          combo.set_model(model)
>          uiutil.init_combo_text_column(combo, 1)
>  
> -        model.append(["bridge", "Bridge"])
> -        model.append(["vepa", "VEPA"])
> -        model.append(["private", "Private"])
> -        model.append(["passthrough", "Passthrough"])
> +        model.append(["bridge", _("Bridge")])
> +        model.append(["vepa", _("VEPA")])

Another acronym

> +        model.append(["private", _("Private")])
> +        model.append(["passthrough", _("Passthrough")])
>          combo.set_active(0)
>  
>          combo = self.widget("net-portgroup")
> diff --git a/virtManager/preferences.py b/virtManager/preferences.py
> index db20a8b..2f77e86 100644
> --- a/virtManager/preferences.py
> +++ b/virtManager/preferences.py
> @@ -131,7 +131,7 @@ class vmmPreferences(vmmGObjectUI):
>          model = Gtk.ListStore(str, str)
>          for row in [["system", _("System default (%s)") %
>                       self.config.default_graphics_from_config],
> -                    ["vnc", "VNC"], ["spice", "Spice"]]:
> +                    ["vnc", _("VNC")], ["spice", _("Spice")]]:

VNC shouldn't be translated I wouldn't think, maybe not spice either since
it's likely to be mis-translated

>              model.append(row)
>          combo.set_model(model)
>          uiutil.init_combo_text_column(combo, 1)
> @@ -141,7 +141,7 @@ class vmmPreferences(vmmGObjectUI):
>          model = Gtk.ListStore(str, str)
>          for row in [["system", _("System default (%s)") %
>                       self.config.default_add_spice_usbredir],
> -                    ["yes", "Yes"], ["no", "No"]]:
> +                    ["yes", _("Yes")], ["no", _("No")]]:
>              model.append(row)
>          combo.set_model(model)
>          uiutil.init_combo_text_column(combo, 1)
> diff --git a/virtManager/storagelist.py b/virtManager/storagelist.py
> index f21926e..8a34e7f 100644
> --- a/virtManager/storagelist.py
> +++ b/virtManager/storagelist.py
> @@ -178,7 +178,7 @@ class vmmStorageList(vmmGObjectUI):
>          volListModel = Gtk.ListStore(str, str, str, str, str, str, bool)
>          self.widget("vol-list").set_model(volListModel)
>  
> -        volCol = Gtk.TreeViewColumn("Volumes")
> +        volCol = Gtk.TreeViewColumn(_("Volumes"))
>          vol_txt1 = Gtk.CellRendererText()
>          volCol.pack_start(vol_txt1, True)
>          volCol.add_attribute(vol_txt1, 'text', VOL_COLUMN_NAME)
> @@ -186,7 +186,7 @@ class vmmStorageList(vmmGObjectUI):
>          volCol.set_sort_column_id(VOL_COLUMN_NAME)
>          self.widget("vol-list").append_column(volCol)
>  
> -        volSizeCol = Gtk.TreeViewColumn("Size")
> +        volSizeCol = Gtk.TreeViewColumn(_("Size"))
>          vol_txt2 = Gtk.CellRendererText()
>          volSizeCol.pack_start(vol_txt2, False)
>          volSizeCol.add_attribute(vol_txt2, 'text', VOL_COLUMN_SIZESTR)
> @@ -195,7 +195,7 @@ class vmmStorageList(vmmGObjectUI):
>          self.widget("vol-list").append_column(volSizeCol)
>          volListModel.set_sort_func(VOL_COLUMN_CAPACITY, self._cap_sort_func)
>  
> -        volFormatCol = Gtk.TreeViewColumn("Format")
> +        volFormatCol = Gtk.TreeViewColumn(_("Format"))
>          vol_txt3 = Gtk.CellRendererText()
>          volFormatCol.pack_start(vol_txt3, False)
>          volFormatCol.add_attribute(vol_txt3, 'text', VOL_COLUMN_FORMAT)
> @@ -203,7 +203,7 @@ class vmmStorageList(vmmGObjectUI):
>          volFormatCol.set_sort_column_id(VOL_COLUMN_FORMAT)
>          self.widget("vol-list").append_column(volFormatCol)
>  
> -        volUseCol = Gtk.TreeViewColumn("Used By")
> +        volUseCol = Gtk.TreeViewColumn(_("Used By"))
>          vol_txt4 = Gtk.CellRendererText()
>          volUseCol.pack_start(vol_txt4, False)
>          volUseCol.add_attribute(vol_txt4, 'text', VOL_COLUMN_INUSEBY)
> @@ -220,7 +220,7 @@ class vmmStorageList(vmmGObjectUI):
>          poolListModel = Gtk.ListStore(str, str, bool, str)
>          pool_list.set_model(poolListModel)
>  
> -        poolCol = Gtk.TreeViewColumn("Storage Pools")
> +        poolCol = Gtk.TreeViewColumn(_("Storage Pools"))
>          pool_txt = Gtk.CellRendererText()
>          pool_per = Gtk.CellRendererText()
>          poolCol.pack_start(pool_per, False)
> diff --git a/virtinst/cloner.py b/virtinst/cloner.py
> index 764388a..c58521b 100644
> --- a/virtinst/cloner.py
> +++ b/virtinst/cloner.py
> @@ -83,7 +83,7 @@ class Cloner(object):
>          if self._lookup_vm(original_guest):
>              self._original_guest = original_guest
>      original_guest = property(get_original_guest, set_original_guest,
> -                              doc="Original guest name.")
> +                              doc=_("Original guest name."))
>  
>      def set_original_xml(self, val):
>          if type(val) is not str:
> @@ -94,7 +94,7 @@ class Cloner(object):
>      def get_original_xml(self):
>          return self._original_xml
>      original_xml = property(get_original_xml, set_original_xml,
> -                            doc="XML of the original guest.")
> +                            doc=_("XML of the original guest."))
>  
>      def get_clone_name(self):
>          return self._clone_name
> @@ -108,7 +108,7 @@ class Cloner(object):
>  
>          self._clone_name = name
>      clone_name = property(get_clone_name, set_clone_name,
> -                          doc="Name to use for the new guest clone.")
> +                          doc=_("Name to use for the new guest clone."))
>  
>      def set_clone_uuid(self, uuid):
>          try:
> @@ -123,7 +123,7 @@ class Cloner(object):
>      def get_clone_uuid(self):
>          return self._clone_uuid
>      clone_uuid = property(get_clone_uuid, set_clone_uuid,
> -                          doc="UUID to use for the new guest clone")
> +                          doc=_("UUID to use for the new guest clone"))
>  
>      def set_clone_paths(self, paths):
>          disklist = []
> @@ -154,13 +154,13 @@ class Cloner(object):
>      def get_clone_paths(self):
>          return [d.path for d in self.clone_disks]
>      clone_paths = property(get_clone_paths, set_clone_paths,
> -                             doc="Paths to use for the new disk locations.")
> +                             doc=_("Paths to use for the new disk locations."))
>  
>      def get_clone_disks(self):
>          return self._clone_disks
>      clone_disks = property(get_clone_disks,
> -                           doc="VirtualDisk instances for the new"
> -                               " disk paths")
> +                           doc=_("VirtualDisk instances for the new"
> +                                 " disk paths"))
>  
>      def set_clone_macs(self, mac):
>          maclist = util.listify(mac)
> @@ -173,43 +173,43 @@ class Cloner(object):
>      def get_clone_macs(self):
>          return self._clone_macs
>      clone_macs = property(get_clone_macs, set_clone_macs,
> -                          doc="MAC address for the new guest clone.")
> +                          doc=_("MAC address for the new guest clone."))
>  
>      def get_original_disks(self):
>          return self._original_disks
>      original_disks = property(get_original_disks,
> -                              doc="VirtualDisk instances of the "
> -                                  "original disks being cloned.")
> +                              doc=_("VirtualDisk instances of the "
> +                                    "original disks being cloned."))
>  
>      def get_clone_xml(self):
>          return self._clone_xml
>      def set_clone_xml(self, clone_xml):
>          self._clone_xml = clone_xml
>      clone_xml = property(get_clone_xml, set_clone_xml,
> -                         doc="Generated XML for the guest clone.")
> +                         doc=_("Generated XML for the guest clone."))
>  
>      def get_clone_sparse(self):
>          return self._clone_sparse
>      def set_clone_sparse(self, flg):
>          self._clone_sparse = flg
>      clone_sparse = property(get_clone_sparse, set_clone_sparse,
> -                            doc="Whether to attempt sparse allocation during "
> -                                "cloning.")
> +                            doc=_("Whether to attempt sparse allocation during "
> +                                  "cloning."))
>  
>      def get_preserve(self):
>          return self._preserve
>      def set_preserve(self, flg):
>          self._preserve = flg
>      preserve = property(get_preserve, set_preserve,
> -                        doc="If true, preserve ALL original disk devices.")
> +                        doc=_("If true, preserve ALL original disk devices."))
>  
>      def get_preserve_dest_disks(self):
>          return not self.preserve
>      preserve_dest_disks = property(get_preserve_dest_disks,
> -                           doc="If true, preserve ALL disk devices for the "
> -                               "NEW guest. This means no storage cloning. "
> -                               "This is a convenience access for "
> -                               "(not Cloner.preserve)")
> +                           doc=_("If true, preserve ALL disk devices for the "
> +                                 "NEW guest. This means no storage cloning. "
> +                                 "This is a convenience access for "
> +                                 "(not Cloner.preserve)"))
>  
>      def set_force_target(self, dev):
>          if type(dev) is list:
> @@ -219,8 +219,8 @@ class Cloner(object):
>      def get_force_target(self):
>          return self._force_target
>      force_target = property(get_force_target, set_force_target,
> -                            doc="List of disk targets that we force cloning "
> -                                "despite Cloner's recommendation.")
> +                            doc=_("List of disk targets that we force cloning "
> +                                  "despite Cloner's recommendation."))
>  
>      def set_skip_target(self, dev):
>          if type(dev) is list:
> @@ -230,9 +230,9 @@ class Cloner(object):
>      def get_skip_target(self):
>          return self._skip_target
>      skip_target = property(get_skip_target, set_skip_target,
> -                           doc="List of disk targets that we skip cloning "
> -                               "despite Cloner's recommendation. This "
> -                               "takes precedence over force_target.")
> +                           doc=_("List of disk targets that we skip cloning "
> +                                 "despite Cloner's recommendation. This "
> +                                 "takes precedence over force_target."))
>  
>      def set_clone_policy(self, policy_list):
>          if type(policy_list) != list:
> @@ -241,31 +241,31 @@ class Cloner(object):
>      def get_clone_policy(self):
>          return self._clone_policy
>      clone_policy = property(get_clone_policy, set_clone_policy,
> -                            doc="List of policy rules for determining which "
> -                                "vm disks to clone. See CLONE_POLICY_*")
> +                            doc=_("List of policy rules for determining which "
> +                                  "vm disks to clone. See CLONE_POLICY_*"))
>  
>      def get_clone_running(self):
>          return self._clone_running
>      def set_clone_running(self, val):
>          self._clone_running = bool(val)
>      clone_running = property(get_clone_running, set_clone_running,
> -                             doc="Allow cloning a running VM. If enabled, "
> -                                 "domain state is not checked before "
> -                                 "cloning.")
> +                             doc=_("Allow cloning a running VM. If enabled, "
> +                                   "domain state is not checked before "
> +                                   "cloning."))
>  
>      def _get_replace(self):
>          return self._replace
>      def _set_replace(self, val):
>          self._replace = bool(val)
>      replace = property(_get_replace, _set_replace,
> -                       doc="If enabled, don't check for clone name collision, "
> -                           "simply undefine any conflicting guest.")
> +                       doc=_("If enabled, don't check for clone name collision, "
> +                             "simply undefine any conflicting guest."))
>      def _get_reflink(self):
>          return self._reflink
>      def _set_reflink(self, reflink):
>          self._reflink = reflink
>      reflink = property(_get_reflink, _set_reflink,
> -            doc="If true, use COW lightweight copy")
> +            doc=_("If true, use COW lightweight copy"))
>  

None of these doc strings should be translated. In fact they should be pulled
out of the propery() definition and just made regular python doc comments

>      # Functional methods
>  
> @@ -544,7 +544,7 @@ class Cloner(object):
>                  newd.target = disk.target
>                  if validate:
>                      if newd.wants_storage_creation():
> -                        raise ValueError("Disk path '%s' does not exist." %
> +                        raise ValueError(_("Disk path '%s' does not exist.") %
>                                           newd.path)
>              except Exception, e:
>                  logging.debug("Exception creating clone disk objects",
> @@ -560,7 +560,7 @@ class Cloner(object):
>      # Cloning policy based on 'clone_policy', 'force_target' and 'skip_target'
>      def _do_we_clone_device(self, disk):
>          if not disk.target:
> -            raise ValueError("XML has no 'dev' attribute in disk target")
> +            raise ValueError(_("XML has no 'dev' attribute in disk target"))
>  
>          if disk.target in self.skip_target:
>              return False
> diff --git a/virtinst/devicedisk.py b/virtinst/devicedisk.py
> index 591c93b..c7cd04d 100644
> --- a/virtinst/devicedisk.py
> +++ b/virtinst/devicedisk.py
> @@ -489,8 +489,8 @@ class VirtualDisk(VirtualDevice):
>      def _set_path(self, newpath):
>          if (self._storage_backend and
>              self._storage_backend.will_create_storage()):
> -            raise ValueError("Can't change disk path if storage creation info "
> -                             "has been set.")
> +            raise ValueError(_("Can't change disk path if storage creation info "
> +                               "has been set."))
>  
>          # User explicitly changed 'path', so try to lookup its storage
>          # object since we may need it
> diff --git a/virtinst/devicehostdev.py b/virtinst/devicehostdev.py
> index 8a4c881..34c00b0 100644
> --- a/virtinst/devicehostdev.py
> +++ b/virtinst/devicehostdev.py
> @@ -79,7 +79,7 @@ class VirtualHostDevice(VirtualDevice):
>              self.managed = False
>  
>          else:
> -            raise ValueError("Unknown node device type %s" % nodedev)
> +            raise ValueError(_("Unknown node device type %s") % nodedev)
>  
>      def pretty_name(self):
>          def dehex(val):
> diff --git a/virtinst/devicerng.py b/virtinst/devicerng.py
> index 7ed66b7..974735f 100644
> --- a/virtinst/devicerng.py
> +++ b/virtinst/devicerng.py
> @@ -52,8 +52,8 @@ class VirtualRNGDevice(VirtualDevice):
>  
>      @staticmethod
>      def get_pretty_mode(mode):
> -        return {"bind" : "Bind",
> -                "connect": "Connect"}.get(mode) or mode
> +        return {"bind" : _("Bind"),
> +                "connect": _("Connect")}.get(mode) or mode
>  
>      def supports_property(self, propname):
>          """
> diff --git a/virtinst/network.py b/virtinst/network.py
> index a008f94..1a2db5e 100644
> --- a/virtinst/network.py
> +++ b/virtinst/network.py
> @@ -160,9 +160,9 @@ class Network(XMLBuilder):
>                      desc = _("Routed network")
>              else:
>                  if dev:
> -                    desc = "%s to %s" % (mode, dev)
> +                    desc = _("%s to %s") % (mode, dev)

This is untranslatable. You'll have to use the %(READABLE-NAME)s format so the
translator has some context

>                  else:
> -                    desc = "%s network" % mode.capitalize()
> +                    desc = _("%s network") % mode.capitalize()
>          else:
>              desc = _("Isolated network, internal and host routing only")
>  
> diff --git a/virtinst/seclabel.py b/virtinst/seclabel.py
> index 99a22d6..10bf4e8 100644
> --- a/virtinst/seclabel.py
> +++ b/virtinst/seclabel.py
> @@ -62,7 +62,7 @@ class Seclabel(XMLBuilder):
>          if imagelabel:
>              imglab_len = min(3, len(imagelabel.split(':')))
>          if lab_len and imglab_len and lab_len != imglab_len:
> -            raise ValueError("Label and Imagelabel are incompatible")
> +            raise ValueError(_("Label and Imagelabel are incompatible"))
>  
>          lab_len = lab_len or imglab_len
>          if lab_len == 3:
> @@ -70,7 +70,7 @@ class Seclabel(XMLBuilder):
>          elif lab_len == 2:
>              return self.MODEL_DAC
>          else:
> -            raise ValueError("Unknown model type for label '%s'" % self.label)
> +            raise ValueError(_("Unknown model type for label '%s'") % self.label)
>      def _get_default_model(self):
>          if self.type is None or self.type == self.TYPE_DEFAULT:
>              return None
> diff --git a/virtinst/support.py b/virtinst/support.py
> index 4b3a945..6baba15 100644
> --- a/virtinst/support.py
> +++ b/virtinst/support.py
> @@ -107,7 +107,7 @@ def _check_function(function, flag, run_args, data):
>          classobj = _get_command(object_name)
>          if not isinstance(data, classobj):
>              raise ValueError(
> -                "Passed obj %s with args must be of type %s, was %s" %
> +                _("Passed obj %s with args must be of type %s, was %s") %
>                  (data, str(classobj), type(data)))
> 

This is really a coding error so I don't think is worth translating.

>      cmd = _get_command(function_name, obj=data)
> 

Thanks,
Cole




More information about the virt-tools-list mailing list