[PATCH] bug fix: Make rpm failed
by ssdxiao
In centos, if I make rpm and not make install will failed
it's because dita-help.xsl and kimchi.css not in
dir rpm/BUILD/kimchi-1.2.0/ui/pages/help
Fix it by adding the two file in the Makefile.am
and add them in kimchi.spec.suse.in kimchi.spec.fedora.in
Signed-off-by: Ding Xiao <ssdxiao(a)163.com>
---
contrib/kimchi.spec.fedora.in | 2 ++
contrib/kimchi.spec.suse.in | 2 ++
ui/pages/help/Makefile.am | 4 ++++
3 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/contrib/kimchi.spec.fedora.in b/contrib/kimchi.spec.fedora.in
index 2d4699b..570f1a5 100644
--- a/contrib/kimchi.spec.fedora.in
+++ b/contrib/kimchi.spec.fedora.in
@@ -179,6 +179,8 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/kimchi/ui/libs/themes/base/jquery-ui.min.css
%{_datadir}/kimchi/ui/pages/*.html.tmpl
%{_datadir}/kimchi/ui/pages/help/*/*.html
+%{_datadir}/kimchi/ui/pages/help/kimchi.css
+%{_datadir}/kimchi/ui/pages/help/dita-help.xsl
%{_datadir}/kimchi/ui/pages/tabs/*.html.tmpl
%{_datadir}/kimchi/ui/pages/websockify/*.html
%{_sysconfdir}/kimchi/kimchi.conf
diff --git a/contrib/kimchi.spec.suse.in b/contrib/kimchi.spec.suse.in
index 165f566..4d1a46f 100644
--- a/contrib/kimchi.spec.suse.in
+++ b/contrib/kimchi.spec.suse.in
@@ -101,6 +101,8 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/kimchi/ui/libs/themes/base/jquery-ui.min.css
%{_datadir}/kimchi/ui/pages/*.html.tmpl
%{_datadir}/kimchi/ui/pages/help/*/*.html
+%{_datadir}/kimchi/ui/pages/help/kimchi.css
+%{_datadir}/kimchi/ui/pages/help/dita-help.xsl
%{_datadir}/kimchi/ui/pages/tabs/*.html.tmpl
%{_datadir}/kimchi/ui/pages/websockify/*.html
%{_sysconfdir}/kimchi/kimchi.conf
diff --git a/ui/pages/help/Makefile.am b/ui/pages/help/Makefile.am
index 1af984a..377c1a3 100644
--- a/ui/pages/help/Makefile.am
+++ b/ui/pages/help/Makefile.am
@@ -21,6 +21,10 @@ HTML_FILES = $(if $(DITA_HTML_FILES), $(DITA_HTML_FILES), $(wildcard */*.html))
DITA_XSL_FILE = dita-help.xsl
EXTRA_DIST = gen-index.py
+helpdir = $(datadir)/kimchi/ui/pages/help
+
+dist_help_DATA = dita-help.xsl \
+ kimchi.css
all: $(HTML_FILES) $(wildcard */*.dita)
@$(foreach dir, $(dir $(wildcard */)), $(shell pwd)/gen-index.py $(wildcard $(dir)*.dita) > $(dir)/index.html;)
--
1.7.1
10 years, 6 months
[PATCH] bug fix: Make rpm failed
by ssdxiao
In centos, if I make rpm and not make install will failed
it's because dita-help.xsl and kimchi.css not in
dir rpm/BUILD/kimchi-1.2.0/ui/pages/help
Fix it by adding the two file in the Makefile.am
and add them in kimchi.spec.suse.in kimchi.spec.fedora.in
Signed-off-by: Ding Xiao <ssdxiao(a)163.com>
---
contrib/kimchi.spec.fedora.in | 1 +
contrib/kimchi.spec.suse.in | 1 +
ui/pages/help/Makefile.am | 6 +++++-
3 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/contrib/kimchi.spec.fedora.in b/contrib/kimchi.spec.fedora.in
index 2d4699b..3ba81e5 100644
--- a/contrib/kimchi.spec.fedora.in
+++ b/contrib/kimchi.spec.fedora.in
@@ -179,6 +179,7 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/kimchi/ui/libs/themes/base/jquery-ui.min.css
%{_datadir}/kimchi/ui/pages/*.html.tmpl
%{_datadir}/kimchi/ui/pages/help/*/*.html
+%{_datadir}/kimchi/ui/pages/help/kimchi.css
%{_datadir}/kimchi/ui/pages/tabs/*.html.tmpl
%{_datadir}/kimchi/ui/pages/websockify/*.html
%{_sysconfdir}/kimchi/kimchi.conf
diff --git a/contrib/kimchi.spec.suse.in b/contrib/kimchi.spec.suse.in
index 165f566..661df7e 100644
--- a/contrib/kimchi.spec.suse.in
+++ b/contrib/kimchi.spec.suse.in
@@ -101,6 +101,7 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/kimchi/ui/libs/themes/base/jquery-ui.min.css
%{_datadir}/kimchi/ui/pages/*.html.tmpl
%{_datadir}/kimchi/ui/pages/help/*/*.html
+%{_datadir}/kimchi/ui/pages/help/kimchi.css
%{_datadir}/kimchi/ui/pages/tabs/*.html.tmpl
%{_datadir}/kimchi/ui/pages/websockify/*.html
%{_sysconfdir}/kimchi/kimchi.conf
diff --git a/ui/pages/help/Makefile.am b/ui/pages/help/Makefile.am
index 1af984a..fa9786b 100644
--- a/ui/pages/help/Makefile.am
+++ b/ui/pages/help/Makefile.am
@@ -20,7 +20,11 @@ DITA_HTML_FILES = $(patsubst %.dita,%.html,$(wildcard */*.dita))
HTML_FILES = $(if $(DITA_HTML_FILES), $(DITA_HTML_FILES), $(wildcard */*.html))
DITA_XSL_FILE = dita-help.xsl
-EXTRA_DIST = gen-index.py
+EXTRA_DIST = gen-index.py\
+ $(DITA_XSL_FILE)
+helpdir = $(datadir)/kimchi/ui/pages/help
+
+dist_help_DATA = kimchi.css
all: $(HTML_FILES) $(wildcard */*.dita)
@$(foreach dir, $(dir $(wildcard */)), $(shell pwd)/gen-index.py $(wildcard $(dir)*.dita) > $(dir)/index.html;)
--
1.7.1
10 years, 6 months
[PATCH] Update i18n package scripts(Chinese)
by Wen Wang
From: Wen Wang <wenwang(a)linux.vnet.ibm.com>
Finished English to Chinese translation
Signed-off-by: Wen Wang <wenwang(a)linux.vnet.ibm.com>
---
po/en_US.po | 192 +++++++++++++++++++++++++++--------------
po/kimchi.pot | 156 +++++++++++++++++++++------------
po/pt_BR.po | 215 ++++++++++++++++++++++++++++++----------------
po/zh_CN.po | 267 +++++++++++++++++++++++++++++++++++----------------------
4 files changed, 532 insertions(+), 298 deletions(-)
diff --git a/po/en_US.po b/po/en_US.po
index 1ede7dc..8321fd9 100644
--- a/po/en_US.po
+++ b/po/en_US.po
@@ -6,14 +6,14 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-04-24 13:01-0300\n"
+"POT-Creation-Date: 2014-06-17 17:21+0800\n"
"PO-Revision-Date: 2013-07-11 17:32-0400\n"
"Last-Translator: Crístian Viana <vianac(a)linux.vnet.ibm.com>\n"
"Language-Team: English\n"
-"Language: en_US\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: en_US\n"
"Generated-By: pygettext.py 1.5\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -43,6 +43,10 @@ msgstr ""
msgid "This API only supports JSON"
msgstr ""
+#, python-format
+msgid "Parameters does not match requirement in schema: %(err)s"
+msgstr ""
+
msgid "Datastore is not initiated in the model object."
msgstr ""
@@ -118,8 +122,8 @@ msgstr ""
msgid ""
"The hypervisor doesn't have permission to use this ISO %(filename)s. "
"Consider moving it under /var/lib/libvirt, or set the search permission to "
-"file access control lists for '%(user)s' user if possible, or add the "
-"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"file access control lists for '%(user)s' user if possible, or add the '%"
+"(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
"'path_to_iso'.Details: %(err)s"
msgstr ""
@@ -225,6 +229,11 @@ msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
msgstr ""
#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
msgstr ""
@@ -248,6 +257,9 @@ msgstr ""
msgid "Specify type and network to add a new virtual machine interface"
msgstr ""
+msgid "Specify type and network to update a virtual machine interface"
+msgstr ""
+
#, python-format
msgid "Template %(name)s already exists"
msgstr ""
@@ -324,6 +336,9 @@ msgstr ""
msgid "Unable to delete template due error: %(err)s"
msgstr ""
+msgid "Disk size must be greater than 1GB."
+msgstr ""
+
#, python-format
msgid "Storage pool %(name)s already exists"
msgstr ""
@@ -350,8 +365,8 @@ msgstr ""
#, python-format
msgid ""
-"Unable to get number of storage volumes in storage pool %(name)s. Details: "
-"%(err)s"
+"Unable to get number of storage volumes in storage pool %(name)s. Details: %"
+"(err)s"
msgstr ""
#, python-format
@@ -418,8 +433,8 @@ msgstr ""
#, python-format
msgid ""
-"%(disk)s is not a valid disk/partition. Could not add it to the pool "
-"%(pool)s."
+"%(disk)s is not a valid disk/partition. Could not add it to the pool %(pool)"
+"s."
msgstr ""
#, python-format
@@ -497,8 +512,8 @@ msgstr ""
#, python-format
msgid ""
-"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
-"%(err)s"
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: %"
+"(err)s"
msgstr ""
#, python-format
@@ -699,10 +714,10 @@ msgstr ""
msgid "Unable to choose a virutal machine name"
msgstr ""
-msgid "Invalid CDROM device name"
+msgid "Invalid vm storage device name"
msgstr ""
-msgid "Invalid storage type. Types supported: 'cdrom'"
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
msgstr ""
#, python-format
@@ -713,6 +728,12 @@ msgstr ""
msgid "Device name %(dev_name)s already exists in vm %(vm_name)s"
msgstr ""
+msgid "Invalid target device bus type, type supported: 'ide', 'scsi', 'virtio'"
+msgstr ""
+
+msgid "Just support cdrom path update"
+msgstr ""
+
#, python-format
msgid "The storage device %(dev_name)s does not exist in the guest %(vm_name)s"
msgstr ""
@@ -729,10 +750,12 @@ msgstr ""
msgid "Error while removing storage device: %(error)s"
msgstr ""
-msgid "Do not support guest CDROM hot plug attachment"
+msgid "Do not support ide device hot plug"
msgstr ""
-msgid "Specify type and path to add a new virtual machine disk"
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
msgstr ""
msgid "Specify path to update virtual machine disk"
@@ -742,6 +765,13 @@ msgstr ""
msgid "Controller type %(type)s limitation of %(limit)s devices reached"
msgstr ""
+#, python-format
+msgid "Cannot lookup disk path information by given pool/volume: %(error)s"
+msgstr ""
+
+msgid "Volume already been used by other vm"
+msgstr ""
+
msgid "YUM Repository ID must be one word only string."
msgstr ""
@@ -889,30 +919,6 @@ msgstr "Memory"
msgid "Create"
msgstr "Create"
-msgid "Replace a CDROM of VM"
-msgstr ""
-
-msgid "Device Name"
-msgstr ""
-
-msgid "The name used to identify the CDROM. Read-only."
-msgstr "The name used to identify the CDROM. Read-only."
-
-msgid "Device Type"
-msgstr ""
-
-msgid "The device type. Currently, only \"cdrom\" is supported."
-msgstr ""
-
-msgid "ISO File Path"
-msgstr "ISO File Path"
-
-msgid "The ISO file path in the server."
-msgstr ""
-
-msgid "Replace"
-msgstr ""
-
msgid "Edit Guest"
msgstr "Edit Guest"
@@ -937,9 +943,13 @@ msgstr "Memory (MB)"
msgid "Icon"
msgstr "Icon"
-msgid "Attach"
+msgid "Device"
msgstr ""
+#, fuzzy
+msgid "Path"
+msgstr "NFS Path"
+
msgid "Network"
msgstr "Network"
@@ -949,27 +959,14 @@ msgstr "Type"
msgid "Save"
msgstr "Save"
-msgid "Detach"
-msgstr ""
-
-msgid "Manage Media"
-msgstr ""
-
-msgid "Add a Storage Device to VM"
+msgid "Replace"
msgstr ""
-msgid ""
-"The name used to identify the device. If omitted, a name will be chosen "
-"automatically."
+msgid "Detach"
msgstr ""
-"The name used to identify the device. If omitted, a name will be chosen "
-"automatically."
-
-msgid "File Path"
-msgstr "File Path"
-msgid "The ISO file path in the server for CDROM."
-msgstr ""
+msgid "Cancel"
+msgstr "Cancel"
msgid "Start"
msgstr "Start"
@@ -986,6 +983,9 @@ msgstr "Actions"
msgid "Connect"
msgstr "Connect"
+msgid "Manage Media"
+msgstr ""
+
msgid "Edit"
msgstr "Edit"
@@ -995,6 +995,50 @@ msgstr "Shut Down"
msgid "Delete"
msgstr "Delete"
+msgid "Add a Storage Device to VM"
+msgstr ""
+
+msgid "Device Name"
+msgstr ""
+
+msgid ""
+"The name used to identify the device. If omitted, a name will be chosen "
+"automatically."
+msgstr ""
+"The name used to identify the device. If omitted, a name will be chosen "
+"automatically."
+
+msgid "Device Type"
+msgstr ""
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr ""
+
+msgid "Device Bus"
+msgstr ""
+
+msgid "Storage Pool"
+msgstr "Storage Pool"
+
+msgid "Storage pool which volume located in"
+msgstr ""
+
+#, fuzzy
+msgid "Storage Volume"
+msgstr "Storage Pool Name"
+
+msgid "Storage volume to be attached"
+msgstr ""
+
+msgid "File Path"
+msgstr "File Path"
+
+msgid "The ISO file path in the server for CDROM."
+msgstr ""
+
+msgid "Attach"
+msgstr ""
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr "The username or password you entered is incorrect. Please try again."
@@ -1045,9 +1089,6 @@ msgstr "Delete Confirmation"
msgid "OK"
msgstr "OK"
-msgid "Cancel"
-msgstr "Cancel"
-
msgid "Confirm"
msgstr "Confirm"
@@ -1208,6 +1249,10 @@ msgstr "Download"
msgid "Report name should contain only letters, digits and/or hyphen ('-')."
msgstr ""
+#, fuzzy
+msgid "Pending..."
+msgstr "Generating..."
+
msgid ""
"This will delete the virtual machine and its virtual disks. This operation "
"cannot be undone. Would you like to continue?"
@@ -1235,6 +1280,10 @@ msgstr "Shut Down Confirmation"
msgid "Note the guest OS may ignore this request. Would you like to continue?"
msgstr ""
+#, fuzzy
+msgid "VM Delete Confirmation"
+msgstr "Delete Confirmation"
+
msgid ""
"This CDROM will be detached permanently and you can re-attach it. Continue "
"to detach it?"
@@ -1346,8 +1395,8 @@ msgstr "Log out"
msgid "Version:"
msgstr "Version:"
-msgid "Log In"
-msgstr "Log In"
+msgid "Session timeout, please re-login."
+msgstr ""
msgid "User Name"
msgstr "User Name"
@@ -1355,6 +1404,9 @@ msgstr "User Name"
msgid "Password"
msgstr "Password"
+msgid "Log In"
+msgstr "Log In"
+
msgid "Generate a New Debug Report"
msgstr "Generate a New Debug Report"
@@ -1554,9 +1606,6 @@ msgstr "CDROM"
msgid "Graphics"
msgstr ""
-msgid "Storage Pool"
-msgstr "Storage Pool"
-
msgid "CPU"
msgstr "CPU"
@@ -1593,9 +1642,6 @@ msgstr "Processor"
msgid "System Statistics"
msgstr "System Statistics"
-msgid "Collecting data after leaving this page"
-msgstr "Collecting data after leaving this page"
-
msgid "Update Progress"
msgstr ""
@@ -1656,6 +1702,9 @@ msgstr "Deactivate"
msgid "Activate"
msgstr "Activate"
+msgid "Extend"
+msgstr ""
+
msgid "Undefine"
msgstr "Undefine"
@@ -1670,3 +1719,12 @@ msgstr "No templates found."
msgid "Clone"
msgstr ""
+
+#~ msgid "The name used to identify the CDROM. Read-only."
+#~ msgstr "The name used to identify the CDROM. Read-only."
+
+#~ msgid "ISO File Path"
+#~ msgstr "ISO File Path"
+
+#~ msgid "Collecting data after leaving this page"
+#~ msgstr "Collecting data after leaving this page"
diff --git a/po/kimchi.pot b/po/kimchi.pot
index 9e875f1..3eef581 100755
--- a/po/kimchi.pot
+++ b/po/kimchi.pot
@@ -8,11 +8,10 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-04-24 13:01-0300\n"
+"POT-Creation-Date: 2014-06-17 17:21+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
-"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -43,6 +42,10 @@ msgstr ""
msgid "This API only supports JSON"
msgstr ""
+#, python-format
+msgid "Parameters does not match requirement in schema: %(err)s"
+msgstr ""
+
msgid "Datastore is not initiated in the model object."
msgstr ""
@@ -118,8 +121,8 @@ msgstr ""
msgid ""
"The hypervisor doesn't have permission to use this ISO %(filename)s. "
"Consider moving it under /var/lib/libvirt, or set the search permission to "
-"file access control lists for '%(user)s' user if possible, or add the "
-"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"file access control lists for '%(user)s' user if possible, or add the '%"
+"(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
"'path_to_iso'.Details: %(err)s"
msgstr ""
@@ -225,6 +228,11 @@ msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
msgstr ""
#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
msgstr ""
@@ -248,6 +256,9 @@ msgstr ""
msgid "Specify type and network to add a new virtual machine interface"
msgstr ""
+msgid "Specify type and network to update a virtual machine interface"
+msgstr ""
+
#, python-format
msgid "Template %(name)s already exists"
msgstr ""
@@ -324,6 +335,9 @@ msgstr ""
msgid "Unable to delete template due error: %(err)s"
msgstr ""
+msgid "Disk size must be greater than 1GB."
+msgstr ""
+
#, python-format
msgid "Storage pool %(name)s already exists"
msgstr ""
@@ -350,8 +364,8 @@ msgstr ""
#, python-format
msgid ""
-"Unable to get number of storage volumes in storage pool %(name)s. Details: "
-"%(err)s"
+"Unable to get number of storage volumes in storage pool %(name)s. Details: %"
+"(err)s"
msgstr ""
#, python-format
@@ -418,8 +432,8 @@ msgstr ""
#, python-format
msgid ""
-"%(disk)s is not a valid disk/partition. Could not add it to the pool "
-"%(pool)s."
+"%(disk)s is not a valid disk/partition. Could not add it to the pool %(pool)"
+"s."
msgstr ""
#, python-format
@@ -497,8 +511,8 @@ msgstr ""
#, python-format
msgid ""
-"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
-"%(err)s"
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: %"
+"(err)s"
msgstr ""
#, python-format
@@ -699,10 +713,10 @@ msgstr ""
msgid "Unable to choose a virutal machine name"
msgstr ""
-msgid "Invalid CDROM device name"
+msgid "Invalid vm storage device name"
msgstr ""
-msgid "Invalid storage type. Types supported: 'cdrom'"
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
msgstr ""
#, python-format
@@ -713,6 +727,12 @@ msgstr ""
msgid "Device name %(dev_name)s already exists in vm %(vm_name)s"
msgstr ""
+msgid "Invalid target device bus type, type supported: 'ide', 'scsi', 'virtio'"
+msgstr ""
+
+msgid "Just support cdrom path update"
+msgstr ""
+
#, python-format
msgid "The storage device %(dev_name)s does not exist in the guest %(vm_name)s"
msgstr ""
@@ -729,10 +749,12 @@ msgstr ""
msgid "Error while removing storage device: %(error)s"
msgstr ""
-msgid "Do not support guest CDROM hot plug attachment"
+msgid "Do not support ide device hot plug"
msgstr ""
-msgid "Specify type and path to add a new virtual machine disk"
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
msgstr ""
msgid "Specify path to update virtual machine disk"
@@ -742,6 +764,13 @@ msgstr ""
msgid "Controller type %(type)s limitation of %(limit)s devices reached"
msgstr ""
+#, python-format
+msgid "Cannot lookup disk path information by given pool/volume: %(error)s"
+msgstr ""
+
+msgid "Volume already been used by other vm"
+msgstr ""
+
msgid "YUM Repository ID must be one word only string."
msgstr ""
@@ -889,108 +918,120 @@ msgstr ""
msgid "Create"
msgstr ""
-msgid "Replace a CDROM of VM"
+msgid "Edit Guest"
msgstr ""
-msgid "Device Name"
+msgid "General"
msgstr ""
-msgid "The name used to identify the CDROM. Read-only."
+msgid "Storage"
msgstr ""
-msgid "Device Type"
+msgid "Interface"
msgstr ""
-msgid "The device type. Currently, only \"cdrom\" is supported."
+msgid "Name"
msgstr ""
-msgid "ISO File Path"
+msgid "CPUs"
msgstr ""
-msgid "The ISO file path in the server."
+msgid "Memory (MB)"
msgstr ""
-msgid "Replace"
+msgid "Icon"
msgstr ""
-msgid "Edit Guest"
+msgid "Device"
msgstr ""
-msgid "General"
+msgid "Path"
msgstr ""
-msgid "Storage"
+msgid "Network"
msgstr ""
-msgid "Interface"
+msgid "Type"
msgstr ""
-msgid "Name"
+msgid "Save"
msgstr ""
-msgid "CPUs"
+msgid "Replace"
msgstr ""
-msgid "Memory (MB)"
+msgid "Detach"
msgstr ""
-msgid "Icon"
+msgid "Cancel"
msgstr ""
-msgid "Attach"
+msgid "Start"
msgstr ""
-msgid "Network"
+msgid "Reset"
msgstr ""
-msgid "Type"
+msgid "Power Off"
msgstr ""
-msgid "Save"
+msgid "Actions"
msgstr ""
-msgid "Detach"
+msgid "Connect"
msgstr ""
msgid "Manage Media"
msgstr ""
+msgid "Edit"
+msgstr ""
+
+msgid "Shut Down"
+msgstr ""
+
+msgid "Delete"
+msgstr ""
+
msgid "Add a Storage Device to VM"
msgstr ""
+msgid "Device Name"
+msgstr ""
+
msgid ""
"The name used to identify the device. If omitted, a name will be chosen "
"automatically."
msgstr ""
-msgid "File Path"
+msgid "Device Type"
msgstr ""
-msgid "The ISO file path in the server for CDROM."
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
msgstr ""
-msgid "Start"
+msgid "Device Bus"
msgstr ""
-msgid "Reset"
+msgid "Storage Pool"
msgstr ""
-msgid "Power Off"
+msgid "Storage pool which volume located in"
msgstr ""
-msgid "Actions"
+msgid "Storage Volume"
msgstr ""
-msgid "Connect"
+msgid "Storage volume to be attached"
msgstr ""
-msgid "Edit"
+msgid "File Path"
msgstr ""
-msgid "Shut Down"
+msgid "The ISO file path in the server for CDROM."
msgstr ""
-msgid "Delete"
+msgid "Attach"
msgstr ""
msgid "The username or password you entered is incorrect. Please try again."
@@ -1043,9 +1084,6 @@ msgstr ""
msgid "OK"
msgstr ""
-msgid "Cancel"
-msgstr ""
-
msgid "Confirm"
msgstr ""
@@ -1202,6 +1240,9 @@ msgstr ""
msgid "Report name should contain only letters, digits and/or hyphen ('-')."
msgstr ""
+msgid "Pending..."
+msgstr ""
+
msgid ""
"This will delete the virtual machine and its virtual disks. This operation "
"cannot be undone. Would you like to continue?"
@@ -1229,6 +1270,9 @@ msgstr ""
msgid "Note the guest OS may ignore this request. Would you like to continue?"
msgstr ""
+msgid "VM Delete Confirmation"
+msgstr ""
+
msgid ""
"This CDROM will be detached permanently and you can re-attach it. Continue "
"to detach it?"
@@ -1336,7 +1380,7 @@ msgstr ""
msgid "Version:"
msgstr ""
-msgid "Log In"
+msgid "Session timeout, please re-login."
msgstr ""
msgid "User Name"
@@ -1345,6 +1389,9 @@ msgstr ""
msgid "Password"
msgstr ""
+msgid "Log In"
+msgstr ""
+
msgid "Generate a New Debug Report"
msgstr ""
@@ -1377,7 +1424,7 @@ msgstr ""
msgid "URL to the repository. Supported protocols are http, ftp, and file."
msgstr ""
-msgid "Repository is a mirror."
+msgid "Repository is a mirror"
msgstr ""
msgid "Distribution"
@@ -1540,9 +1587,6 @@ msgstr ""
msgid "Graphics"
msgstr ""
-msgid "Storage Pool"
-msgstr ""
-
msgid "CPU"
msgstr ""
@@ -1579,9 +1623,6 @@ msgstr ""
msgid "System Statistics"
msgstr ""
-msgid "Collecting data after leaving this page"
-msgstr ""
-
msgid "Update Progress"
msgstr ""
@@ -1642,6 +1683,9 @@ msgstr ""
msgid "Activate"
msgstr ""
+msgid "Extend"
+msgstr ""
+
msgid "Undefine"
msgstr ""
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 5ff54e0..a1edaa4 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -20,14 +20,14 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-04-24 13:01-0300\n"
+"POT-Creation-Date: 2014-06-17 17:21+0800\n"
"PO-Revision-Date: 2013-06-27 10:48+0000\n"
"Last-Translator: Crístian Viana <vianac(a)linux.vnet.ibm.com>\n"
"Language-Team: Aline Manera <alinefm(a)br.ibm.com>\n"
-"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: pt_BR\n"
"Generated-By: pygettext.py 1.5\n"
"X-Poedit-Country: Brazil\n"
"X-Poedit-Language: Portuguese\n"
@@ -59,6 +59,10 @@ msgstr "Não é possível realizar a leitura da requisição do JSON"
msgid "This API only supports JSON"
msgstr "Essa API suporta apenas JSON"
+#, python-format
+msgid "Parameters does not match requirement in schema: %(err)s"
+msgstr ""
+
msgid "Datastore is not initiated in the model object."
msgstr "Datastore não é inicializado no objeto modelo."
@@ -138,8 +142,8 @@ msgstr "Mal formato na leitura de um descritor de volume na ISO %(filename)s"
msgid ""
"The hypervisor doesn't have permission to use this ISO %(filename)s. "
"Consider moving it under /var/lib/libvirt, or set the search permission to "
-"file access control lists for '%(user)s' user if possible, or add the "
-"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"file access control lists for '%(user)s' user if possible, or add the '%"
+"(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
"'path_to_iso'.Details: %(err)s"
msgstr ""
"O servidor não tem permissões para acessar a ISO %(filename)s. Considere "
@@ -253,6 +257,11 @@ msgstr ""
msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
msgstr ""
+#, fuzzy, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr "Não foi possível iniciar a máquina virtual %(name)s. Detalhes: %(err)s"
+
#, python-format
msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
msgstr "Interface %(iface)s não existe na máquina virtual %(name)s"
@@ -280,6 +289,12 @@ msgstr ""
"Especifique tipo e rede para adicionar a uma nova interface da máquina "
"virtual"
+#, fuzzy
+msgid "Specify type and network to update a virtual machine interface"
+msgstr ""
+"Especifique tipo e rede para adicionar a uma nova interface da máquina "
+"virtual"
+
#, python-format
msgid "Template %(name)s already exists"
msgstr "Modelo %(name)s já existe"
@@ -360,6 +375,9 @@ msgstr ""
msgid "Unable to delete template due error: %(err)s"
msgstr ""
+msgid "Disk size must be greater than 1GB."
+msgstr ""
+
#, python-format
msgid "Storage pool %(name)s already exists"
msgstr "Storage pool %(name)s já existe"
@@ -386,8 +404,8 @@ msgstr "Não é possível criar o storage pool %(name)s.Detalhes: %(err)s"
#, python-format
msgid ""
-"Unable to get number of storage volumes in storage pool %(name)s. Details: "
-"%(err)s"
+"Unable to get number of storage volumes in storage pool %(name)s. Details: %"
+"(err)s"
msgstr ""
"Não é possível saber o número de volumes no storage pool %(name)s. Detalhes: "
"%(err)s"
@@ -414,8 +432,8 @@ msgstr ""
#, python-format
msgid "Unable to create NFS Pool as export path %(path)s mount failed"
msgstr ""
-"Incapaz de criar NFS Pool uma vez que a montagem do caminho de exportação "
-"%(path)s falhou"
+"Incapaz de criar NFS Pool uma vez que a montagem do caminho de exportação %"
+"(path)s falhou"
#, python-format
msgid "Unsupported storage pool type: %(type)s"
@@ -463,8 +481,8 @@ msgstr "Para criar um storage pool, especifique nome e tipo"
#, python-format
msgid ""
-"%(disk)s is not a valid disk/partition. Could not add it to the pool "
-"%(pool)s."
+"%(disk)s is not a valid disk/partition. Could not add it to the pool %(pool)"
+"s."
msgstr ""
"%(disk)s não é um disco/partição válido. Não pode adicionar ao pool %(pool)s."
@@ -558,11 +576,11 @@ msgstr "Incapaz de listar volumes pois o storage pool %(pool)s não está ativo"
#, python-format
msgid ""
-"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
-"%(err)s"
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: %"
+"(err)s"
msgstr ""
-"Incapaz de criar o volume %(name)s no storage pool %(pool)s. Detalhes: "
-"%(err)s"
+"Incapaz de criar o volume %(name)s no storage pool %(pool)s. Detalhes: %(err)"
+"s"
#, python-format
msgid ""
@@ -777,10 +795,12 @@ msgstr ""
msgid "Unable to choose a virutal machine name"
msgstr "Incapaz de escolhre um nome para a máquina virtual"
-msgid "Invalid CDROM device name"
+#, fuzzy
+msgid "Invalid vm storage device name"
msgstr "Nome do dispositivo de CDROM inválido"
-msgid "Invalid storage type. Types supported: 'cdrom'"
+#, fuzzy
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
msgstr "Tipo de storage inválido. Tipos suportados: cdrom"
#, python-format
@@ -794,6 +814,13 @@ msgid "Device name %(dev_name)s already exists in vm %(vm_name)s"
msgstr ""
"Nome do dispositivo %(dev_name)s já existe na máquina virtual %(vm_name)s"
+#, fuzzy
+msgid "Invalid target device bus type, type supported: 'ide', 'scsi', 'virtio'"
+msgstr "Tipo de storage inválido. Tipos suportados: cdrom"
+
+msgid "Just support cdrom path update"
+msgstr ""
+
#, python-format
msgid "The storage device %(dev_name)s does not exist in the guest %(vm_name)s"
msgstr ""
@@ -811,10 +838,14 @@ msgstr "Erro ao atualizar dispositivo de storage: %(error)s"
msgid "Error while removing storage device: %(error)s"
msgstr "Erro ao remover dispositivo de storage: %(error)s"
-msgid "Do not support guest CDROM hot plug attachment"
-msgstr "Associação de CDROM à máquina virtual via hot plug não é suportada"
+#, fuzzy
+msgid "Do not support ide device hot plug"
+msgstr "Não suporte conexão hot plug na interface do guest"
-msgid "Specify type and path to add a new virtual machine disk"
+#, fuzzy
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
msgstr ""
"Especifique o tipo e caminho para adicionar um novo disco de máquina virtual"
@@ -825,6 +856,13 @@ msgstr "Especifique o caminho para atualizar o disco da máquina virtual"
msgid "Controller type %(type)s limitation of %(limit)s devices reached"
msgstr ""
+#, python-format
+msgid "Cannot lookup disk path information by given pool/volume: %(error)s"
+msgstr ""
+
+msgid "Volume already been used by other vm"
+msgstr ""
+
msgid "YUM Repository ID must be one word only string."
msgstr "ID do repositório YUM deve ser uma string com uma palavra."
@@ -894,8 +932,8 @@ msgstr "Não foi possível remover o repositório %(repo_id)s."
#, python-format
msgid "Could not write repository configuration file %(repo_file)s"
msgstr ""
-"Não foi possível escrever o arquivo de configuração do repositório "
-"%(repo_file)s"
+"Não foi possível escrever o arquivo de configuração do repositório %"
+"(repo_file)s"
msgid "Specify repository distribution in order to create a DEB repository."
msgstr ""
@@ -983,30 +1021,6 @@ msgstr "Memória"
msgid "Create"
msgstr "Criar"
-msgid "Replace a CDROM of VM"
-msgstr ""
-
-msgid "Device Name"
-msgstr ""
-
-msgid "The name used to identify the CDROM. Read-only."
-msgstr ""
-
-msgid "Device Type"
-msgstr ""
-
-msgid "The device type. Currently, only \"cdrom\" is supported."
-msgstr ""
-
-msgid "ISO File Path"
-msgstr ""
-
-msgid "The ISO file path in the server."
-msgstr ""
-
-msgid "Replace"
-msgstr "Trocar"
-
msgid "Edit Guest"
msgstr "Editar Máquinas Virtuais"
@@ -1031,8 +1045,13 @@ msgstr ""
msgid "Icon"
msgstr "Ícone"
-msgid "Attach"
-msgstr "Conectar"
+#, fuzzy
+msgid "Device"
+msgstr "Caminho do dispositivo"
+
+#, fuzzy
+msgid "Path"
+msgstr "Caminho do NFS"
msgid "Network"
msgstr "Redes"
@@ -1043,25 +1062,14 @@ msgstr "Tipo"
msgid "Save"
msgstr "Salvar"
+msgid "Replace"
+msgstr "Trocar"
+
msgid "Detach"
msgstr "Remover"
-msgid "Manage Media"
-msgstr "Gerenciar mídia"
-
-msgid "Add a Storage Device to VM"
-msgstr ""
-
-msgid ""
-"The name used to identify the device. If omitted, a name will be chosen "
-"automatically."
-msgstr ""
-
-msgid "File Path"
-msgstr ""
-
-msgid "The ISO file path in the server for CDROM."
-msgstr ""
+msgid "Cancel"
+msgstr "Cancelar"
msgid "Start"
msgstr "Iniciar"
@@ -1078,6 +1086,9 @@ msgstr "Ações"
msgid "Connect"
msgstr "Conectar"
+msgid "Manage Media"
+msgstr "Gerenciar mídia"
+
msgid "Edit"
msgstr "Editar"
@@ -1087,6 +1098,51 @@ msgstr "Desligar"
msgid "Delete"
msgstr "Remover"
+msgid "Add a Storage Device to VM"
+msgstr ""
+
+msgid "Device Name"
+msgstr ""
+
+msgid ""
+"The name used to identify the device. If omitted, a name will be chosen "
+"automatically."
+msgstr ""
+
+msgid "Device Type"
+msgstr ""
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr ""
+
+#, fuzzy
+msgid "Device Bus"
+msgstr "Caminho do dispositivo"
+
+msgid "Storage Pool"
+msgstr "Nome do Storage Pool"
+
+#, fuzzy
+msgid "Storage pool which volume located in"
+msgstr "Caminho para storage pool deve ser uma string"
+
+#, fuzzy
+msgid "Storage Volume"
+msgstr "Nome do Storage Pool"
+
+#, fuzzy
+msgid "Storage volume to be attached"
+msgstr "Nome do volume deve ser uma string"
+
+msgid "File Path"
+msgstr ""
+
+msgid "The ISO file path in the server for CDROM."
+msgstr ""
+
+msgid "Attach"
+msgstr "Conectar"
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr ""
"O usuário ou senha inseridos estão incorretos. Por favor, tente novamenteO "
@@ -1142,9 +1198,6 @@ msgstr "Confirmação de remoção"
msgid "OK"
msgstr "OK"
-msgid "Cancel"
-msgstr "Cancelar"
-
msgid "Confirm"
msgstr "Confirmar"
@@ -1307,6 +1360,10 @@ msgstr "Baixar"
msgid "Report name should contain only letters, digits and/or hyphen ('-')."
msgstr "Nome do relatório deve apenas conter letras, números e/ou hífen ('-')."
+#, fuzzy
+msgid "Pending..."
+msgstr "Carregando..."
+
msgid ""
"This will delete the virtual machine and its virtual disks. This operation "
"cannot be undone. Would you like to continue?"
@@ -1336,6 +1393,10 @@ msgstr ""
msgid "Note the guest OS may ignore this request. Would you like to continue?"
msgstr ""
+#, fuzzy
+msgid "VM Delete Confirmation"
+msgstr "Confirmação de remoção"
+
msgid ""
"This CDROM will be detached permanently and you can re-attach it. Continue "
"to detach it?"
@@ -1451,8 +1512,8 @@ msgstr "Sair"
msgid "Version:"
msgstr ""
-msgid "Log In"
-msgstr "Entrar"
+msgid "Session timeout, please re-login."
+msgstr ""
msgid "User Name"
msgstr "Usuário"
@@ -1460,6 +1521,9 @@ msgstr "Usuário"
msgid "Password"
msgstr "Senha"
+msgid "Log In"
+msgstr "Entrar"
+
msgid "Generate a New Debug Report"
msgstr "Gerar um novo relatório de depuração"
@@ -1660,9 +1724,6 @@ msgstr "CD-ROM"
msgid "Graphics"
msgstr "Gráficos"
-msgid "Storage Pool"
-msgstr "Nome do Storage Pool"
-
msgid "CPU"
msgstr "CPU"
@@ -1699,9 +1760,6 @@ msgstr "Processador"
msgid "System Statistics"
msgstr "Estatísticas do sistema"
-msgid "Collecting data after leaving this page"
-msgstr "Coletar dados após deixar essa página."
-
msgid "Update Progress"
msgstr "Progresso da atualização"
@@ -1763,6 +1821,9 @@ msgstr "Desativar"
msgid "Activate"
msgstr "Ativar"
+msgid "Extend"
+msgstr ""
+
msgid "Undefine"
msgstr "Indefinir"
@@ -1777,3 +1838,9 @@ msgstr "Nenhum modelo encontrado."
msgid "Clone"
msgstr ""
+
+#~ msgid "Do not support guest CDROM hot plug attachment"
+#~ msgstr "Associação de CDROM à máquina virtual via hot plug não é suportada"
+
+#~ msgid "Collecting data after leaving this page"
+#~ msgstr "Coletar dados após deixar essa página."
diff --git a/po/zh_CN.po b/po/zh_CN.po
index caef515..c3dba8e 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -20,14 +20,14 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-04-24 13:01-0300\n"
+"POT-Creation-Date: 2014-06-17 17:21+0800\n"
"PO-Revision-Date: 2013-06-27 10:48+0000\n"
"Last-Translator: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>\n"
"Language-Team: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>\n"
-"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: zh_CN\n"
"Generated-By: pygettext.py 1.5\n"
"X-Poedit-Country: CHINA\n"
"X-Poedit-Language: Chinese\n"
@@ -59,16 +59,20 @@ msgstr "无法解析JSON请求"
msgid "This API only supports JSON"
msgstr "这个API仅支持JSON"
+#, python-format
+msgid "Parameters does not match requirement in schema: %(err)s"
+msgstr "参数不符合格式要求:%(err)s"
+
msgid "Datastore is not initiated in the model object."
msgstr "尚未为model对象初始化数据存储。"
#, python-format
msgid "Unable to start task due error: %(err)s"
-msgstr ""
+msgstr "由于错误%(err)s任务启动失败"
#, python-format
msgid "Authentication failed for user '%(username)s'. [Error code: %(code)s]"
-msgstr ""
+msgstr "用户'%(username)s'身份验证失败.[错误代码:%(code)s]"
msgid "You are not authorized to access Kimchi"
msgstr "您没有被授权访问Kimchi"
@@ -134,8 +138,8 @@ msgstr "ISO文件%(filename)s的卷描述符格式错误"
msgid ""
"The hypervisor doesn't have permission to use this ISO %(filename)s. "
"Consider moving it under /var/lib/libvirt, or set the search permission to "
-"file access control lists for '%(user)s' user if possible, or add the "
-"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"file access control lists for '%(user)s' user if possible, or add the '%"
+"(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
"'path_to_iso'.Details: %(err)s"
msgstr ""
"hypervisor没有访问ISO文件%(filename)s的权限。可以将ISO移到/var/lib/libvirt目"
@@ -174,7 +178,7 @@ msgstr "不能创建虚拟机%(name)s。详情:%(err)s"
#, python-format
msgid "Unable to update virtual machine %(name)s. Details: %(err)s"
-msgstr ""
+msgstr "不能更新虚拟机%(name)s。详情:%(err)s"
#, python-format
msgid "Unable to retrieve virtual machine %(name)s. Details: %(err)s"
@@ -210,39 +214,44 @@ msgstr "不能启动虚拟机 %(name)s. 详情:%(err)s"
#, python-format
msgid "Unable to power off virtual machine %(name)s. Details: %(err)s"
-msgstr ""
+msgstr "不能关闭虚拟机%(name)s。详情:%(err)s"
#, python-format
msgid "Unable to delete virtual machine %(name)s. Details: %(err)s"
-msgstr "不能删除虚拟机 %(name)s. 详情:%(err)s"
+msgstr "不能删除虚拟机 %(name)s。详情:%(err)s"
#, python-format
msgid "Unable to reset virtual machine %(name)s. Details: %(err)s"
-msgstr ""
+msgstr "未能重置虚拟机%(name)s。详情:%(err)s"
msgid "User names list must be an array"
-msgstr ""
+msgstr "用户名列表必须是一个数组"
msgid "User name must be a string"
-msgstr ""
+msgstr "用户名必须是一个字符串"
msgid "Group names list must be an array"
-msgstr ""
+msgstr "用户组名称列表必须是一个数组"
msgid "Group name must be a string"
-msgstr ""
+msgstr "用户组名称必须是一个字符串"
#, python-format
msgid "User(s) '%(users)s' do not exist"
-msgstr ""
+msgstr "用户'%(users)s'不存在"
#, python-format
msgid "Group(s) '%(groups)s' do not exist"
-msgstr ""
+msgstr "用户组'%(groups)s'不存在"
#, python-format
msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
-msgstr ""
+msgstr "未能关闭虚拟机%(name)s。详情:%(err)s"
+
+#, fuzzy, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr "不能启动虚拟机 %(name)s. 详情:%(err)s"
#, python-format
msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
@@ -268,6 +277,10 @@ msgstr "虚拟机接口指定的网络模型卡无效"
msgid "Specify type and network to add a new virtual machine interface"
msgstr "为新的虚拟机接口指定类型和网络"
+#, fuzzy
+msgid "Specify type and network to update a virtual machine interface"
+msgstr "为新的虚拟机接口指定类型和网络"
+
#, python-format
msgid "Template %(name)s already exists"
msgstr "模板 %(name)s 已经存在"
@@ -311,7 +324,7 @@ msgid "Template distribution version must be a string"
msgstr "模板的发行版版本号必须是一个字符串"
msgid "The number of CPUs must be an integer greater than 0"
-msgstr ""
+msgstr "CPU数量必须为一个大于0的整数"
msgid "Amount of memory (MB) must be an integer greater than 512"
msgstr "总内存数(MB为单位)必须是一个大于512的整数"
@@ -338,11 +351,14 @@ msgstr "存储池%(pool)s中没有存储卷%(volume)s"
#, python-format
msgid "Unable to create template due error: %(err)s"
-msgstr ""
+msgstr "由于错误:%(err)s,未能创建模板"
#, python-format
msgid "Unable to delete template due error: %(err)s"
-msgstr ""
+msgstr "由于错误:%(err)s,未能删除模板"
+
+msgid "Disk size must be greater than 1GB."
+msgstr "磁盘空间必须大于1GB"
#, python-format
msgid "Storage pool %(name)s already exists"
@@ -370,8 +386,8 @@ msgstr "不能创建存储池 %(name)s。详情: %(err)s"
#, python-format
msgid ""
-"Unable to get number of storage volumes in storage pool %(name)s. Details: "
-"%(err)s"
+"Unable to get number of storage volumes in storage pool %(name)s. Details: %"
+"(err)s"
msgstr "不能获取储存池%(name)s中卷的数目。详情: %(err)s"
#, python-format
@@ -438,8 +454,8 @@ msgstr "为新存储池指定名字和类型"
#, python-format
msgid ""
-"%(disk)s is not a valid disk/partition. Could not add it to the pool "
-"%(pool)s."
+"%(disk)s is not a valid disk/partition. Could not add it to the pool %(pool)"
+"s."
msgstr "%(disk)s 不是有效的磁盘/分区。不能被添加到存储池%(pool)s中"
#, python-format
@@ -484,7 +500,7 @@ msgstr "卷组'%(name)s'已经存在,请选择其它的名字来创建逻辑
#, python-format
msgid "Unable to update database with deep scan information due error: %(err)s"
-msgstr ""
+msgstr "由于错误:%(err)s,未能使用深度检索信息进行数据库更新"
#, python-format
msgid "Storage volume %(name)s already exists"
@@ -517,8 +533,8 @@ msgstr "不能列出存储卷,因为存储池%(pool)s没有激活"
#, python-format
msgid ""
-"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
-"%(err)s"
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: %"
+"(err)s"
msgstr "不能在存储池%(pool)s中创建存储卷%(name)s。详情:%(err)s"
#, python-format
@@ -557,7 +573,7 @@ msgstr "存储卷需要名字"
#, python-format
msgid ""
"Unable to update database with storage volume information due error: %(err)s"
-msgstr ""
+msgstr "由于错误%(err)s,未能使用存储卷信息进行数据库更新"
#, python-format
msgid "Interface %(name)s does not exist"
@@ -634,13 +650,13 @@ msgstr "不能以桥设备%(name)s作为VLAN的trunk设备。"
#, python-format
msgid "Failed to activate interface %(iface)s: %(err)s."
-msgstr ""
+msgstr "网络接口启动失败 %(iface)s:%(err)s。"
#, python-format
msgid ""
"Failed to activate interface %(iface)s. Please check the physical link "
"status."
-msgstr ""
+msgstr "网络接口%(err)s启动失败,请检查网络连接情况。"
#, python-format
msgid "Debug report %(name)s does not exist"
@@ -719,10 +735,12 @@ msgstr "命令'%(cmd)s'运行%(seconds)s秒后超时。"
msgid "Unable to choose a virutal machine name"
msgstr "不能选择虚拟机名字"
-msgid "Invalid CDROM device name"
+#, fuzzy
+msgid "Invalid vm storage device name"
msgstr "无效的CDROM设备名字"
-msgid "Invalid storage type. Types supported: 'cdrom'"
+#, fuzzy
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
msgstr "无效的存储类型。支持的类型:'cdrom'"
#, python-format
@@ -733,6 +751,13 @@ msgstr "设备路径'%(value)s'不是一个有效的本地/远程路径"
msgid "Device name %(dev_name)s already exists in vm %(vm_name)s"
msgstr "设备%(dev_name)s在vm%(vm_name)s上已存在"
+#, fuzzy
+msgid "Invalid target device bus type, type supported: 'ide', 'scsi', 'virtio'"
+msgstr "无效的存储类型。支持的类型:'cdrom'"
+
+msgid "Just support cdrom path update"
+msgstr "仅支持cdrom路径更新"
+
#, python-format
msgid "The storage device %(dev_name)s does not exist in the guest %(vm_name)s"
msgstr "存储设备%(dev_name)s在客户机%(vm_name)s上不存在。"
@@ -749,10 +774,14 @@ msgstr "更新存储设备时出错:%(error)s"
msgid "Error while removing storage device: %(error)s"
msgstr "移除存储设备时出错:%(error)s"
-msgid "Do not support guest CDROM hot plug attachment"
-msgstr "不支持客户机热插拔CDROM"
+#, fuzzy
+msgid "Do not support ide device hot plug"
+msgstr "不支持客户机接口的热插拔"
-msgid "Specify type and path to add a new virtual machine disk"
+#, fuzzy
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
msgstr "为新虚拟机磁盘指定类型和路径"
msgid "Specify path to update virtual machine disk"
@@ -760,7 +789,14 @@ msgstr "指定更新虚拟机磁盘的路径"
#, python-format
msgid "Controller type %(type)s limitation of %(limit)s devices reached"
-msgstr ""
+msgstr "控制器类型为%(type)s的设备达到上限%(limit)s"
+
+#, python-format
+msgid "Cannot lookup disk path information by given pool/volume: %(error)s"
+msgstr "未能使用所提供的存储池/存储卷搜寻磁盘路径信息:%(error)s"
+
+msgid "Volume already been used by other vm"
+msgstr "存储卷已经被其他虚拟机使用"
msgid "YUM Repository ID must be one word only string."
msgstr "YUM软件仓库ID必须是只包含一个单词的字符串"
@@ -909,30 +945,6 @@ msgstr "内存"
msgid "Create"
msgstr "创建"
-msgid "Replace a CDROM of VM"
-msgstr ""
-
-msgid "Device Name"
-msgstr ""
-
-msgid "The name used to identify the CDROM. Read-only."
-msgstr ""
-
-msgid "Device Type"
-msgstr ""
-
-msgid "The device type. Currently, only \"cdrom\" is supported."
-msgstr ""
-
-msgid "ISO File Path"
-msgstr ""
-
-msgid "The ISO file path in the server."
-msgstr ""
-
-msgid "Replace"
-msgstr "替换"
-
msgid "Edit Guest"
msgstr "修改客户机"
@@ -952,13 +964,18 @@ msgid "CPUs"
msgstr "中央处理器"
msgid "Memory (MB)"
-msgstr ""
+msgstr "内存(MB)"
msgid "Icon"
msgstr "图标"
-msgid "Attach"
-msgstr "装载"
+#, fuzzy
+msgid "Device"
+msgstr "设备路径"
+
+#, fuzzy
+msgid "Path"
+msgstr "NFS 路径"
msgid "Network"
msgstr "网络"
@@ -969,25 +986,14 @@ msgstr "类型"
msgid "Save"
msgstr "保存"
+msgid "Replace"
+msgstr "替换"
+
msgid "Detach"
msgstr "卸载"
-msgid "Manage Media"
-msgstr "管理光盘介质"
-
-msgid "Add a Storage Device to VM"
-msgstr ""
-
-msgid ""
-"The name used to identify the device. If omitted, a name will be chosen "
-"automatically."
-msgstr ""
-
-msgid "File Path"
-msgstr ""
-
-msgid "The ISO file path in the server for CDROM."
-msgstr ""
+msgid "Cancel"
+msgstr "取消"
msgid "Start"
msgstr "启用"
@@ -996,7 +1002,7 @@ msgid "Reset"
msgstr "重置"
msgid "Power Off"
-msgstr ""
+msgstr "关闭电源"
msgid "Actions"
msgstr "操作"
@@ -1004,15 +1010,63 @@ msgstr "操作"
msgid "Connect"
msgstr "连接到"
+msgid "Manage Media"
+msgstr "管理光盘介质"
+
msgid "Edit"
msgstr "编辑"
msgid "Shut Down"
-msgstr ""
+msgstr "关机"
msgid "Delete"
msgstr "删除"
+msgid "Add a Storage Device to VM"
+msgstr "为虚拟机添加一个存储设备"
+
+msgid "Device Name"
+msgstr "设备名称"
+
+msgid ""
+"The name used to identify the device. If omitted, a name will be chosen "
+"automatically."
+msgstr "这个名称曾经被一个设备占用,如果不能使用,系统会自动生成一个名称"
+
+msgid "Device Type"
+msgstr "设备类型"
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr "设备类型。目前可支持的设备类型: \"cdrom\" and \"disk\""
+
+#, fuzzy
+msgid "Device Bus"
+msgstr "设备路径"
+
+msgid "Storage Pool"
+msgstr "存储池"
+
+#, fuzzy
+msgid "Storage pool which volume located in"
+msgstr "存储池路径必须是字符串"
+
+#, fuzzy
+msgid "Storage Volume"
+msgstr "存储池名称"
+
+#, fuzzy
+msgid "Storage volume to be attached"
+msgstr "存储卷的名字必须是字符串"
+
+msgid "File Path"
+msgstr "文件路径"
+
+msgid "The ISO file path in the server for CDROM."
+msgstr "服务器端CDROM所使用的ISO文件路径"
+
+msgid "Attach"
+msgstr "装载"
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr "用户名或密码错误,请重新输入。"
@@ -1064,9 +1118,6 @@ msgstr "删除确认"
msgid "OK"
msgstr "确定"
-msgid "Cancel"
-msgstr "取消"
-
msgid "Confirm"
msgstr "确认"
@@ -1223,32 +1274,40 @@ msgstr "下载"
msgid "Report name should contain only letters, digits and/or hyphen ('-')."
msgstr "报告名字中只能包含字母、数字或连字符(-)。"
+#, fuzzy
+msgid "Pending..."
+msgstr "正在加载..."
+
msgid ""
"This will delete the virtual machine and its virtual disks. This operation "
"cannot be undone. Would you like to continue?"
msgstr "这将删除虚拟机和它的虚拟磁盘。该操作不能撤销,继续吗?"
msgid "Power off Confirmation"
-msgstr ""
+msgstr "关闭电源确认"
msgid ""
"This action may produce undesirable results, for example unflushed disk "
"cache in the guest. Would you like to continue?"
-msgstr ""
+msgstr "这样做可能导致不良后果,比如客户机磁盘缓存未刷新,确认要继续吗?"
msgid "Reset Confirmation"
-msgstr ""
+msgstr "重置确认"
msgid ""
"There is a risk of data loss caused by reset without the guest OS shutdown. "
"Would you like to continue?"
-msgstr ""
+msgstr "在客户机操作系统未关闭的情况下重置有风险导致数据丢失,确认要继续吗?"
msgid "Shut Down Confirmation"
-msgstr ""
+msgstr "关机确认"
msgid "Note the guest OS may ignore this request. Would you like to continue?"
-msgstr ""
+msgstr "注意,客户机操作系统可能会忽略这个请求,确认要继续吗?"
+
+#, fuzzy
+msgid "VM Delete Confirmation"
+msgstr "删除确认"
msgid ""
"This CDROM will be detached permanently and you can re-attach it. Continue "
@@ -1349,16 +1408,16 @@ msgid "Help"
msgstr "帮助"
msgid "About"
-msgstr ""
+msgstr "关于"
msgid "Log out"
msgstr "登出"
msgid "Version:"
-msgstr ""
+msgstr "版本:"
-msgid "Log In"
-msgstr "登录"
+msgid "Session timeout, please re-login."
+msgstr "登录超时,请重新登录"
msgid "User Name"
msgstr "用户名"
@@ -1366,6 +1425,9 @@ msgstr "用户名"
msgid "Password"
msgstr "密码"
+msgid "Log In"
+msgstr "登录"
+
msgid "Generate a New Debug Report"
msgstr "产生一个新的诊断报告"
@@ -1563,9 +1625,6 @@ msgstr "光驱"
msgid "Graphics"
msgstr "图形"
-msgid "Storage Pool"
-msgstr "存储池"
-
msgid "CPU"
msgstr "处理器"
@@ -1602,9 +1661,6 @@ msgstr "处理器"
msgid "System Statistics"
msgstr "系统统计信息"
-msgid "Collecting data after leaving this page"
-msgstr "离开该页面仍继续收集数据"
-
msgid "Update Progress"
msgstr "更新进度"
@@ -1665,6 +1721,9 @@ msgstr "停用"
msgid "Activate"
msgstr "激活"
+msgid "Extend"
+msgstr "扩展"
+
msgid "Undefine"
msgstr "取消定义"
@@ -1678,4 +1737,10 @@ msgid "No templates found."
msgstr "没有发现模板"
msgid "Clone"
-msgstr ""
+msgstr "复制"
+
+#~ msgid "Do not support guest CDROM hot plug attachment"
+#~ msgstr "不支持客户机热插拔CDROM"
+
+#~ msgid "Collecting data after leaving this page"
+#~ msgstr "离开该页面仍继续收集数据"
--
1.7.1
10 years, 6 months
[PATCH v2] Create pool UI: making 'Create' button disable when forms not filled.
by Daniel Barboza
From: Daniel Henrique Barboza <danielhb(a)linux.vnet.ibm.com>
Making the 'Create' button in storagepool_add enable only when
all form fields are filled, just like other kimchi forms.
Signed-off-by: Daniel Henrique Barboza <danielhb(a)linux.vnet.ibm.com>
---
ui/js/src/kimchi.storagepool_add_main.js | 60 +++++++++++++++++++++-----------
ui/pages/storagepool-add.html.tmpl | 2 +-
2 files changed, 40 insertions(+), 22 deletions(-)
diff --git a/ui/js/src/kimchi.storagepool_add_main.js b/ui/js/src/kimchi.storagepool_add_main.js
index 0f3df32..23c8b27 100644
--- a/ui/js/src/kimchi.storagepool_add_main.js
+++ b/ui/js/src/kimchi.storagepool_add_main.js
@@ -20,6 +20,18 @@ kimchi.storagepool_add_main = function() {
kimchi.initStorageAddPage();
$('#form-pool-add').on('submit', kimchi.addPool);
$('#pool-doAdd').on('click', kimchi.addPool);
+ // 'pool-doAdd' button starts as disabled.
+ $("#pool-doAdd").button();
+ $("#pool-doAdd").button("disable");
+ // Make any change in the form fields enables the
+ // 'pool-doAdd' button if all the visible form
+ // fields are filled, disables it otherwise.
+ $('#form-pool-add').on('input change propertychange', function() {
+ if (!kimchi.inputsNotBlank())
+ $("#pool-doAdd").button("disable");
+ else
+ $("#pool-doAdd").button("enable");
+ });
};
kimchi.initStorageAddPage = function() {
@@ -75,7 +87,7 @@ kimchi.initStorageAddPage = function() {
value : "scsi"
} ];
$('#poolTypeId').selectMenu("setData", options);
-
+
kimchi.getStorageServers('netfs', function(data) {
var serverContent = [];
if (data.length > 0) {
@@ -147,13 +159,35 @@ kimchi.initStorageAddPage = function() {
});
};
+/* Returns 'true' if all form fields were filled, 'false' if
+ * any field is left blank. The function takes into account
+ * the current poolType selected.
+ *
+ * Any 'field is blank' verification that were done in other
+ * validate functions were deleted, since we're doing it here
+ * already.
+ */
+kimchi.inputsNotBlank = function() {
+ if (!$('#poolId').val()) return false;
+ var poolType = $("#poolTypeInputId").val();
+ if (poolType === "dir") {
+ if (!$('#pathId').val()) return false;
+ } else if (poolType === "netfs") {
+ if (!$('#nfspathId').val()) return false;
+ if (!$('#nfsserverId').val()) return false;
+ } else if (poolType === "iscsi") {
+ if (!$('#iscsiserverId').val()) return false;
+ if (!$('#iscsiTargetId').val()) return false;
+ } else if (poolType === "logical") {
+ if ($("input[name=devices]:checked").length === 0)
+ return false;
+ }
+ return true;
+};
+
kimchi.validateForm = function() {
var name = $('#poolId').val();
var poolType = $("#poolTypeInputId").val();
- if ('' === name) {
- kimchi.message.error.code('KCHPOOL6001E');
- return false;
- }
if (name.indexOf("/")!=-1) {
kimchi.message.error.code('KCHPOOL6004E');
return false;
@@ -173,10 +207,6 @@ kimchi.validateForm = function() {
kimchi.validateDirForm = function () {
var path = $('#pathId').val();
- if ('' === path) {
- kimchi.message.error.code('KCHPOOL6002E');
- return false;
- }
if (!/(^\/.*)$/.test(path)) {
kimchi.message.error.code('KCHAPI6003E');
return false;
@@ -190,10 +220,6 @@ kimchi.validateNfsForm = function () {
if (!kimchi.validateServer(nfsserver)) {
return false;
}
- if ('' === nfspath) {
- kimchi.message.error.code('KCHPOOL6003E');
- return false;
- }
if (!/((\/([0-9a-zA-Z-_\.]+)))$/.test(nfspath)) {
kimchi.message.error.code('KCHPOOL6005E');
return false;
@@ -207,18 +233,10 @@ kimchi.validateIscsiForm = function() {
if (!kimchi.validateServer(iscsiServer)) {
return false;
}
- if ('' === iscsiTarget) {
- kimchi.message.error.code('KCHPOOL6007E');
- return false;
- }
return true;
};
kimchi.validateServer = function(serverField) {
- if ('' === serverField) {
- kimchi.message.error.code('KCHPOOL6008E');
- return false;
- }
if(!kimchi.isServer(serverField)) {
kimchi.message.error.code('KCHPOOL6009E');
return false;
diff --git a/ui/pages/storagepool-add.html.tmpl b/ui/pages/storagepool-add.html.tmpl
index e6b1fd6..2ddc088 100644
--- a/ui/pages/storagepool-add.html.tmpl
+++ b/ui/pages/storagepool-add.html.tmpl
@@ -152,7 +152,7 @@
</div>
<footer>
<div class="btn-group">
- <button id="pool-doAdd" class="btn-normal">
+ <button id="pool-doAdd" class="btn-normal ui-button-primary">
<span class="text">$_("Create")</span>
</button>
</div>
--
1.8.3.1
10 years, 6 months
[PATCH V3] Issue#361:Bugfix disable the action button content when creating network
by Wen Wang
From: Hongliang Wang <hlwang(a)linux.vnet.ibm.com>
V2 -> V3
Eliminate menu drop down when click "Action" -> "User"(Hongliang Wang)
V1 -> V2
Accroding to Hongliang Wang, fix the bug that tabs keep shown when there
exists more than one network.
Bugfix that disabled the content display of the action button for an
exsiting
network when creating a new network.
Signed-off-by: Hongliang Wang <hlwang(a)linux.vnet.ibm.com>
Signed-off-by: Wen Wang <wenwang(a)linux.vnet.ibm.com>
---
ui/css/theme-default/network.css | 4 +
ui/css/theme-default/popover.css | 3 -
ui/js/src/kimchi.network.js | 118 +++++++++++++++++++-------------------
ui/js/src/kimchi.popable.js | 25 ++++-----
ui/pages/tabs/network.html.tmpl | 14 +++--
5 files changed, 81 insertions(+), 83 deletions(-)
diff --git a/ui/css/theme-default/network.css b/ui/css/theme-default/network.css
index ec999e2..df66b75 100644
--- a/ui/css/theme-default/network.css
+++ b/ui/css/theme-default/network.css
@@ -303,3 +303,7 @@
padding: 10px;
width: 100%;
}
+
+.ui-state-default a {
+ color: #212121;
+}
\ No newline at end of file
diff --git a/ui/css/theme-default/popover.css b/ui/css/theme-default/popover.css
index 945a5c2..a2ad39d 100644
--- a/ui/css/theme-default/popover.css
+++ b/ui/css/theme-default/popover.css
@@ -65,9 +65,6 @@
left: auto;
right: 22px;
}
-.open>.popover {
- display: block;
-}
/* Generated at http://colorzilla.com/gradient-editor/ */
.actionsheet {
diff --git a/ui/js/src/kimchi.network.js b/ui/js/src/kimchi.network.js
index 54a6594..16b9ca6 100644
--- a/ui/js/src/kimchi.network.js
+++ b/ui/js/src/kimchi.network.js
@@ -100,78 +100,76 @@ kimchi.stopNetwork = function(network,menu) {
}
kimchi.addNetworkActions = function(network) {
- $(".menu-container", "#" + network.name).menu({
- position : {
- my : "left top",
- at : "left bottom",
- of : "#" + network.name
- },
- select : function(evt, ui) {
- $(".menu-container", "#" + network.name).toggle(false);
- var menu = $(evt.currentTarget).parent();
- if ($(evt.currentTarget).attr("nwAct") === "start") {
- $(".network-state", $("#" + network.name)).switchClass("down", "nw-loading");
- $("[nwAct='start']", menu).addClass("ui-state-disabled");
- $("[nwAct='delete']", menu).addClass("ui-state-disabled");
- $(":first-child", $("[nwAct='delete']", menu)).attr("disabled", true);
- kimchi.toggleNetwork(network.name, true, function() {
- $("[nwAct='start']", menu).addClass("hide-action-item");
- $("[nwAct='start']", menu).removeClass("ui-state-disabled");
- $("[nwAct='stop']", menu).removeClass("hide-action-item");
- if (network.in_use) {
- $("[nwAct='stop']", menu).addClass("ui-state-disabled");
- }
- $(".network-state", $("#" + network.name)).switchClass("nw-loading", "up");
- }, function(err) {
- $(".network-state", $("#" + network.name)).switchClass("nw-loading","down");
- $("[nwAct='start']", menu).removeClass("ui-state-disabled");
- if (!network.in_use) {
- $("[nwAct='delete']", menu).removeClass("ui-state-disabled");
- }
- $(":first-child", $("[nwAct='delete']", menu)).removeAttr("disabled");
- kimchi.message.error(err.responseJSON.reason);
- });
- } else if ($(evt.currentTarget).attr("nwAct") === "stop") {
- if (!network.persistent) {
- var settings = {
- title : i18n['KCHAPI6001M'],
- content : i18n['KCHNET6004M'],
- confirm : i18n['KCHAPI6002M'],
- cancel : i18n['KCHAPI6003M']
- };
- kimchi.confirm(settings, function() {
- kimchi.stopNetwork(network, menu);
- $(evt.currentTarget).parents(".item").remove();
- }, null);
+ $(".menu-container", "#" + network.name).menu();
+
+ $('#' + network.name).on('click', '.menu-container li', function(evt) {
+ var menu = $(evt.currentTarget).parent();
+ if ($(evt.currentTarget).attr("nwAct") === "start") {
+ $(".network-state", $("#" + network.name)).switchClass("down", "nw-loading");
+ $("[nwAct='start']", menu).addClass("ui-state-disabled");
+ $("[nwAct='delete']", menu).addClass("ui-state-disabled");
+ $(":first-child", $("[nwAct='delete']", menu)).attr("disabled", true);
+ kimchi.toggleNetwork(network.name, true, function() {
+ $("[nwAct='start']", menu).addClass("hide-action-item");
+ $("[nwAct='start']", menu).removeClass("ui-state-disabled");
+ $("[nwAct='stop']", menu).removeClass("hide-action-item");
+ network.state = "up";
+ if (network.in_use) {
+ $("[nwAct='stop']", menu).addClass("ui-state-disabled");
}
- else {
- kimchi.stopNetwork(network, menu);
+ $(".network-state", $("#" + network.name)).switchClass("nw-loading", "up");
+ }, function(err) {
+ $(".network-state", $("#" + network.name)).switchClass("nw-loading","down");
+ $("[nwAct='start']", menu).removeClass("ui-state-disabled");
+ if (!network.in_use) {
+ $("[nwAct='delete']", menu).removeClass("ui-state-disabled");
}
- } else if ($(evt.currentTarget).attr("nwAct") === "delete") {
- kimchi.confirm({
- title : i18n['KCHAPI6006M'],
- content : i18n['KCHNET6002M'],
+ $(":first-child", $("[nwAct='delete']", menu)).removeAttr("disabled");
+ kimchi.message.error(err.responseJSON.reason);
+ });
+ } else if ($(evt.currentTarget).attr("nwAct") === "stop") {
+ if (network.in_use) {
+ return false;
+ }
+ if (!network.persistent) {
+ var settings = {
+ title : i18n['KCHAPI6001M'],
+ content : i18n['KCHNET6004M'],
confirm : i18n['KCHAPI6002M'],
cancel : i18n['KCHAPI6003M']
- }, function() {
- kimchi.deleteNetwork(network.name, function() {
- $(evt.currentTarget).parents(".item").remove();
- });
+ };
+ kimchi.confirm(settings, function() {
+ kimchi.stopNetwork(network, menu);
+ $(evt.currentTarget).parents(".item").remove();
}, null);
}
+ else {
+ kimchi.stopNetwork(network, menu);
+ network.state = "down";
+ }
+ } else if ($(evt.currentTarget).attr("nwAct") === "delete") {
+ if (network.state === "up") {
+ return false;
+ }
+ kimchi.confirm({
+ title : i18n['KCHAPI6006M'],
+ content : i18n['KCHNET6002M'],
+ confirm : i18n['KCHAPI6002M'],
+ cancel : i18n['KCHAPI6003M']
+ }, function() {
+ kimchi.deleteNetwork(network.name, function() {
+ $(evt.currentTarget).parents(".item").remove();
+ });
+ }, null);
}
});
- $(".column-action", "#" + network.name).children(":first").button({
+
+ $("#networkBody .column-action .popable").button({
icons : {
secondary : "action-button-icon"
}
- }).click(function() {
- $(".menu-container", "#" + network.name).toggle();
- window.scrollBy(0, 150);
- });
- $(".menu-container", "#" + network.name).mouseleave(function() {
- $(".menu-container", "#" + network.name).toggle(false);
});
+
};
kimchi.initNetworkCreation = function() {
diff --git a/ui/js/src/kimchi.popable.js b/ui/js/src/kimchi.popable.js
index 295eaed..a171b9f 100644
--- a/ui/js/src/kimchi.popable.js
+++ b/ui/js/src/kimchi.popable.js
@@ -17,21 +17,18 @@
*/
kimchi.popable = function() {
$(document).click(function(e) {
- $('.popable').removeClass('open');
- });
- $(document).on("click", ".popable", function(e) {
- var isOpen = $(this).hasClass('open');
- $(".popable").removeClass('open');
- if (!isOpen && $(this).find('ul').html() !== '') {
- $(this).addClass('open');
- }
+ $('.popable').each(function(i, n) {
+ n === e.target || $.contains(n, e.target) ||
+ $('.popover', n).toggle(false);
+ });
+ });
+ $(document).on('click', '.popable', function(e) {
+ var popup = $('.popover', this)[0];
+ $(popup).toggle();
// Scroll the popup menu into viewport if invisible.
- var popMenu = $('.popover', this).get(0);
- false === kimchi.isElementInViewport(popMenu) &&
- popMenu.scrollIntoView();
-
- e.preventDefault();
- e.stopPropagation();
+ $(popup).is(':visible') ||
+ kimchi.isElementInViewport(popup) ||
+ popup.scrollIntoView();
});
};
diff --git a/ui/pages/tabs/network.html.tmpl b/ui/pages/tabs/network.html.tmpl
index 35380f4..e477efb 100644
--- a/ui/pages/tabs/network.html.tmpl
+++ b/ui/pages/tabs/network.html.tmpl
@@ -105,12 +105,14 @@
--><span class='column column-interface cell'>{interface}</span><!--
--><span class='column column-space cell'>{addrSpace}</span><!--
--><span class='column-action'>
- <span class="ui-button-secondary dropdown action-button">$_("Actions")</span>
- <ul class='popover actionsheet right-side menu-container'>
- <li nwAct="start" class='{startClass}'><a>$_("Start")</a></li>
- <li nwAct="stop" class='{stopClass}'><a {deleteDisabled}>$_("Stop")</a></li>
- <li nwAct="delete" class='{deleteClass}'><a {deleteDisabled} class='red'>$_("Delete")</a></li>
- </ul>
+ <span class="ui-button-secondary dropdown popable action-button">
+ $_("Actions")
+ <ul class='popover actionsheet right-side menu-container'>
+ <li nwAct="start" class='{startClass}'><a class='button-big'>$_("Start")</a></li>
+ <li nwAct="stop" class='{stopClass}'><a {stopDisabled} class='button-big'>$_("Stop")</a></li>
+ <li nwAct="delete" class='{deleteClass}'><a {deleteDisabled} class='red'>$_("Delete")</a></li>
+ </ul>
+ </span>
</span>
</div>
</script>
--
1.7.1
10 years, 6 months
[PATCH V10 00/10] Issue #342: load i18n.html of the plugin
by shaohef@linux.vnet.ibm.com
From: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>
V9 -> V10:
update ui/pages/Makefile.am to let i18n.json.tmpl be added to the package.
hack the auth by utils.patch_auth for some protected http API request
V8 -> V9:
rebase.
fix some commit message.
V7 -> V8:
improve the commit message.
improve the test case skip conditional expression, remove parenthesis
V5 -> V6:
skip test, when disable plugin.
V4 -> V5:
let autoconf generate sample.conf
V3 -> V4:
rebase
V2 -> V3:
change "enable-plugins" to "enable-sample"
remove nls
improve the Portuguese translation.
V1 -> V2:
The improvement concept here is to directly generate JSON on the server
and assign it to the i18n variable, rather than inserting nodes into the DOM.
Plugins would use a plugin1.i18n= structure to keep plugin strings from
colliding with each other, or with the kimchi variables.
ShaoHe Feng (9):
Update root.py to make Cheetah render the JSON template.
Update the i18n tmpl to produce JSON
Add JS API for fetching i18n JSON
Issue #342: load i18n.html of the plugin
add an option to toggle the sample plugin
generate the translation files for plugins/sample
skip plugins test, when sample plugin is not enabled
add some sample plugin generated files to .gitignore
update ui/pages/Makefile.am to let i18n.json.tmpl be added to the
package.
Zhou Zheng Sheng (1):
Add Minimal UI Page for the Sample Plugin
.gitignore | 2 +
configure.ac | 19 ++++
plugins/sample/Makefile.am | 11 +-
plugins/sample/__init__.py | 3 +-
plugins/sample/config.status | 1 +
plugins/sample/po/LINGUAS | 1 +
plugins/sample/po/Makefile.in.in | 1 +
plugins/sample/po/Makevars | 41 ++++++++
plugins/sample/po/POTFILES.in | 2 +
plugins/sample/po/en_US.po | 21 ++++
plugins/sample/po/gen-pot | 9 ++
plugins/sample/po/pt_BR.po | 24 +++++
plugins/sample/po/sample.pot | 21 ++++
plugins/sample/po/zh_CN.po | 24 +++++
plugins/sample/sample.conf | 7 --
plugins/sample/sample.conf.in | 24 +++++
plugins/sample/ui/Makefile.am | 2 +-
plugins/sample/ui/config/tab-ext.xml | 8 +-
plugins/sample/ui/js/Makefile.am | 21 ++++
plugins/sample/ui/js/util.js | 33 ++++++
plugins/sample/ui/pages/Makefile.am | 21 ++++
plugins/sample/ui/pages/i18n.json.tmpl | 9 ++
plugins/sample/ui/pages/tab.html.tmpl | 30 ++++++
src/kimchi/root.py | 5 +
src/kimchi/template.py | 34 ++++---
tests/test_plugin.py | 5 +
ui/js/src/kimchi.api.js | 18 +++-
ui/js/src/kimchi.main.js | 24 ++++-
ui/pages/Makefile.am | 2 +-
ui/pages/i18n.html.tmpl | 179 ---------------------------------
ui/pages/i18n.json.tmpl | 166 ++++++++++++++++++++++++++++++
31 files changed, 552 insertions(+), 216 deletions(-)
create mode 120000 plugins/sample/config.status
create mode 120000 plugins/sample/po/LINGUAS
create mode 120000 plugins/sample/po/Makefile.in.in
create mode 100644 plugins/sample/po/Makevars
create mode 100644 plugins/sample/po/POTFILES.in
create mode 100644 plugins/sample/po/en_US.po
create mode 100755 plugins/sample/po/gen-pot
create mode 100644 plugins/sample/po/pt_BR.po
create mode 100644 plugins/sample/po/sample.pot
create mode 100644 plugins/sample/po/zh_CN.po
delete mode 100644 plugins/sample/sample.conf
create mode 100644 plugins/sample/sample.conf.in
create mode 100644 plugins/sample/ui/js/Makefile.am
create mode 100644 plugins/sample/ui/js/util.js
create mode 100644 plugins/sample/ui/pages/Makefile.am
create mode 100644 plugins/sample/ui/pages/i18n.json.tmpl
create mode 100644 plugins/sample/ui/pages/tab.html.tmpl
delete mode 100644 ui/pages/i18n.html.tmpl
create mode 100644 ui/pages/i18n.json.tmpl
--
1.9.3
10 years, 6 months
Call for translations!
by Aline Manera
Hi team,
Kimchi 1.2.1 will be release next Friday!
So I'd like to ask your help to complete the translation for Portuguese
and Chinese
to the new messages added for this release.
Thanks a lot,
Aline Manera
10 years, 6 months
[PATCH] Create pool UI: making 'Create' button disable when forms not filled.
by Daniel Barboza
From: Daniel Henrique Barboza <danielhb(a)linux.vnet.ibm.com>
Making the 'Create' button in storagepool_add enable only when
all form fields are filled, just like other kimchi forms.
Signed-off-by: Daniel Henrique Barboza <danielhb(a)linux.vnet.ibm.com>
---
ui/js/src/kimchi.storagepool_add_main.js | 60 +++++++++++++++++++++-----------
1 file changed, 39 insertions(+), 21 deletions(-)
diff --git a/ui/js/src/kimchi.storagepool_add_main.js b/ui/js/src/kimchi.storagepool_add_main.js
index 0f3df32..23c8b27 100644
--- a/ui/js/src/kimchi.storagepool_add_main.js
+++ b/ui/js/src/kimchi.storagepool_add_main.js
@@ -20,6 +20,18 @@ kimchi.storagepool_add_main = function() {
kimchi.initStorageAddPage();
$('#form-pool-add').on('submit', kimchi.addPool);
$('#pool-doAdd').on('click', kimchi.addPool);
+ // 'pool-doAdd' button starts as disabled.
+ $("#pool-doAdd").button();
+ $("#pool-doAdd").button("disable");
+ // Make any change in the form fields enables the
+ // 'pool-doAdd' button if all the visible form
+ // fields are filled, disables it otherwise.
+ $('#form-pool-add').on('input change propertychange', function() {
+ if (!kimchi.inputsNotBlank())
+ $("#pool-doAdd").button("disable");
+ else
+ $("#pool-doAdd").button("enable");
+ });
};
kimchi.initStorageAddPage = function() {
@@ -75,7 +87,7 @@ kimchi.initStorageAddPage = function() {
value : "scsi"
} ];
$('#poolTypeId').selectMenu("setData", options);
-
+
kimchi.getStorageServers('netfs', function(data) {
var serverContent = [];
if (data.length > 0) {
@@ -147,13 +159,35 @@ kimchi.initStorageAddPage = function() {
});
};
+/* Returns 'true' if all form fields were filled, 'false' if
+ * any field is left blank. The function takes into account
+ * the current poolType selected.
+ *
+ * Any 'field is blank' verification that were done in other
+ * validate functions were deleted, since we're doing it here
+ * already.
+ */
+kimchi.inputsNotBlank = function() {
+ if (!$('#poolId').val()) return false;
+ var poolType = $("#poolTypeInputId").val();
+ if (poolType === "dir") {
+ if (!$('#pathId').val()) return false;
+ } else if (poolType === "netfs") {
+ if (!$('#nfspathId').val()) return false;
+ if (!$('#nfsserverId').val()) return false;
+ } else if (poolType === "iscsi") {
+ if (!$('#iscsiserverId').val()) return false;
+ if (!$('#iscsiTargetId').val()) return false;
+ } else if (poolType === "logical") {
+ if ($("input[name=devices]:checked").length === 0)
+ return false;
+ }
+ return true;
+};
+
kimchi.validateForm = function() {
var name = $('#poolId').val();
var poolType = $("#poolTypeInputId").val();
- if ('' === name) {
- kimchi.message.error.code('KCHPOOL6001E');
- return false;
- }
if (name.indexOf("/")!=-1) {
kimchi.message.error.code('KCHPOOL6004E');
return false;
@@ -173,10 +207,6 @@ kimchi.validateForm = function() {
kimchi.validateDirForm = function () {
var path = $('#pathId').val();
- if ('' === path) {
- kimchi.message.error.code('KCHPOOL6002E');
- return false;
- }
if (!/(^\/.*)$/.test(path)) {
kimchi.message.error.code('KCHAPI6003E');
return false;
@@ -190,10 +220,6 @@ kimchi.validateNfsForm = function () {
if (!kimchi.validateServer(nfsserver)) {
return false;
}
- if ('' === nfspath) {
- kimchi.message.error.code('KCHPOOL6003E');
- return false;
- }
if (!/((\/([0-9a-zA-Z-_\.]+)))$/.test(nfspath)) {
kimchi.message.error.code('KCHPOOL6005E');
return false;
@@ -207,18 +233,10 @@ kimchi.validateIscsiForm = function() {
if (!kimchi.validateServer(iscsiServer)) {
return false;
}
- if ('' === iscsiTarget) {
- kimchi.message.error.code('KCHPOOL6007E');
- return false;
- }
return true;
};
kimchi.validateServer = function(serverField) {
- if ('' === serverField) {
- kimchi.message.error.code('KCHPOOL6008E');
- return false;
- }
if(!kimchi.isServer(serverField)) {
kimchi.message.error.code('KCHPOOL6009E');
return false;
--
1.8.3.1
10 years, 6 months
[PATCH] bug fix: accept '-' & '_' for network name.
by shaohef@linux.vnet.ibm.com
From: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>
Both '-' and '_' are allowed by libvirt, so we should not put extra
restrictions.
Signed-off-by: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>
---
ui/js/src/kimchi.network.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ui/js/src/kimchi.network.js b/ui/js/src/kimchi.network.js
index 23930cd..c6e828d 100644
--- a/ui/js/src/kimchi.network.js
+++ b/ui/js/src/kimchi.network.js
@@ -321,7 +321,7 @@ kimchi.cleanNetworkDialog = function() {
kimchi.setupNetworkFormEvent = function() {
$("#networkName").on("keyup", function(event) {
- $("#networkName").toggleClass("invalid-field", !$("#networkName").val().match(/^[a-zA-Z0-9_]+$/));
+ $("#networkName").toggleClass("invalid-field", !$("#networkName").val().match(/^[\-\w]+$/));
kimchi.updateNetworkFormButton();
});
$("#networkTypeIso").on("click", function(event) {
--
1.9.3
10 years, 6 months
[PATCH V9 0/9] Issue #342: load i18n.html of the plugin
by shaohef@linux.vnet.ibm.com
From: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>
V7 -> V8:
improve the commit message.
improve the test case skip conditional expression, remove parenthesis
V5 -> V6:
skip test, when disable plugin.
V4 -> V5:
let autoconf generate sample.conf
V3 -> V4:
rebase
V2 -> V3:
change "enable-plugins" to "enable-sample"
remove nls
improve the Portuguese translation.
V1 -> V2:
The improvement concept here is to directly generate JSON on the server
and assign it to the i18n variable, rather than inserting nodes into the DOM.
Plugins would use a plugin1.i18n= structure to keep plugin strings from
colliding with each other, or with the kimchi variables.
ShaoHe Feng (8):
Update root.py to make Cheetah render the JSON template.
Update the i18n tmpl to produce JSON
Add JS API for fetching i18n JSON
Issue #342: load i18n.html of the plugin
add an option to toggle the sample plugin
generate the translation files for plugins/sample
skip plugins test, when sample plugin is not enabled
add some sample plugin generated files to .gitignore
Zhou Zheng Sheng (1):
Add Minimal UI Page for the Sample Plugin
.gitignore | 2 +
configure.ac | 19 ++++
plugins/sample/Makefile.am | 11 +-
plugins/sample/__init__.py | 3 +-
plugins/sample/config.status | 1 +
plugins/sample/po/LINGUAS | 1 +
plugins/sample/po/Makefile.in.in | 1 +
plugins/sample/po/Makevars | 41 ++++++++
plugins/sample/po/POTFILES.in | 2 +
plugins/sample/po/en_US.po | 21 ++++
plugins/sample/po/gen-pot | 9 ++
plugins/sample/po/pt_BR.po | 24 +++++
plugins/sample/po/sample.pot | 21 ++++
plugins/sample/po/zh_CN.po | 24 +++++
plugins/sample/sample.conf | 7 --
plugins/sample/sample.conf.in | 24 +++++
plugins/sample/ui/Makefile.am | 2 +-
plugins/sample/ui/config/tab-ext.xml | 8 +-
plugins/sample/ui/js/Makefile.am | 21 ++++
plugins/sample/ui/js/util.js | 33 ++++++
plugins/sample/ui/pages/Makefile.am | 21 ++++
plugins/sample/ui/pages/i18n.json.tmpl | 9 ++
plugins/sample/ui/pages/tab.html.tmpl | 30 ++++++
src/kimchi/root.py | 5 +
src/kimchi/template.py | 34 ++++---
tests/test_plugin.py | 4 +
ui/js/src/kimchi.api.js | 18 +++-
ui/js/src/kimchi.main.js | 24 ++++-
ui/pages/i18n.html.tmpl | 179 ---------------------------------
ui/pages/i18n.json.tmpl | 166 ++++++++++++++++++++++++++++++
30 files changed, 550 insertions(+), 215 deletions(-)
create mode 120000 plugins/sample/config.status
create mode 120000 plugins/sample/po/LINGUAS
create mode 120000 plugins/sample/po/Makefile.in.in
create mode 100644 plugins/sample/po/Makevars
create mode 100644 plugins/sample/po/POTFILES.in
create mode 100644 plugins/sample/po/en_US.po
create mode 100755 plugins/sample/po/gen-pot
create mode 100644 plugins/sample/po/pt_BR.po
create mode 100644 plugins/sample/po/sample.pot
create mode 100644 plugins/sample/po/zh_CN.po
delete mode 100644 plugins/sample/sample.conf
create mode 100644 plugins/sample/sample.conf.in
create mode 100644 plugins/sample/ui/js/Makefile.am
create mode 100644 plugins/sample/ui/js/util.js
create mode 100644 plugins/sample/ui/pages/Makefile.am
create mode 100644 plugins/sample/ui/pages/i18n.json.tmpl
create mode 100644 plugins/sample/ui/pages/tab.html.tmpl
delete mode 100644 ui/pages/i18n.html.tmpl
create mode 100644 ui/pages/i18n.json.tmpl
--
1.9.3
10 years, 6 months