[pve-devel] [PATCH 768/768] Added translations

Damien PIQUET piqudam at gmail.com
Fri Aug 9 10:08:44 CEST 2013


---
 PVE/API2/OpenVZ.pm                      |    6 +
 po/messages.pot                         |  487 ++++++++++++++++++++++++++++++-
 www/manager/StateProvider.js            |    4 +-
 www/manager/Utils.js                    |   16 +-
 www/manager/Workspace.js                |    2 +-
 www/manager/data/ResourceStore.js       |   12 +-
 www/manager/dc/AuthEdit.js              |   10 +-
 www/manager/dc/AuthView.js              |    4 +-
 www/manager/dc/HAConfig.js              |    2 +-
 www/manager/dc/OptionView.js            |    6 +-
 www/manager/dc/StorageView.js           |    8 +-
 www/manager/dc/Support.js               |    6 +-
 www/manager/dc/UserEdit.js              |    2 +-
 www/manager/form/BackupModeSelector.js  |    6 +-
 www/manager/form/BridgeSelector.js      |    2 +-
 www/manager/form/CPUModelSelector.js    |    2 +-
 www/manager/form/CacheTypeSelector.js   |    6 +-
 www/manager/form/ControllerSelector.js  |    4 +-
 www/manager/form/DiskFormatSelector.js  |    6 +-
 www/manager/form/FileSelector.js        |    8 +-
 www/manager/form/GroupSelector.js       |    2 +-
 www/manager/form/NetworkCardSelector.js |    2 +-
 www/manager/form/NodeSelector.js        |    6 +-
 www/manager/form/PoolSelector.js        |    2 +-
 www/manager/form/RealmComboBox.js       |    4 +-
 www/manager/form/SnapshotSelector.js    |    2 +-
 www/manager/form/StorageSelector.js     |    8 +-
 www/manager/form/UserSelector.js        |    4 +-
 www/manager/form/VMIDSelector.js        |    4 +-
 www/manager/grid/ObjectGrid.js          |    4 +-
 www/manager/node/APT.js                 |    4 +-
 www/manager/node/Config.js              |    8 +-
 www/manager/node/DNSEdit.js             |    4 +-
 www/manager/node/NetworkEdit.js         |   10 +-
 www/manager/node/NetworkView.js         |   12 +-
 www/manager/node/ServiceView.js         |    2 +-
 www/manager/node/StatusView.js          |   28 +-
 www/manager/node/Subscription.js        |    6 +-
 www/manager/node/Summary.js             |   12 +-
 www/manager/openvz/BeanCounterGrid.js   |   12 +-
 www/manager/openvz/CmdMenu.js           |    2 +-
 www/manager/openvz/Config.js            |    4 +-
 www/manager/openvz/CreateWizard.js      |    8 +-
 www/manager/openvz/DNS.js               |   12 +-
 www/manager/openvz/Network.js           |   16 +-
 www/manager/openvz/Options.js           |   16 +-
 www/manager/openvz/RessourceEdit.js     |    4 +-
 www/manager/openvz/StatusView.js        |   16 +-
 www/manager/openvz/Summary.js           |   10 +-
 www/manager/panel/NotesView.js          |    2 +-
 www/manager/qemu/CDEdit.js              |    6 +-
 www/manager/qemu/Clone.js               |    8 +-
 www/manager/qemu/Config.js              |    2 +-
 www/manager/qemu/CreateWizard.js        |    6 +-
 www/manager/qemu/HDEdit.js              |    4 +-
 www/manager/qemu/HDMove.js              |    4 +-
 www/manager/qemu/HDResize.js            |    4 +-
 www/manager/qemu/NetworkEdit.js         |   18 +-
 www/manager/qemu/OSTypeEdit.js          |    2 +-
 www/manager/qemu/Options.js             |   40 +--
 www/manager/qemu/ProcessorEdit.js       |   10 +-
 www/manager/qemu/Snapshot.js            |    6 +-
 www/manager/qemu/SnapshotTree.js        |    2 +-
 www/manager/qemu/StatusView.js          |   10 +-
 www/manager/qemu/Summary.js             |   10 +-
 www/manager/qemu/TemplateMenu.js        |    2 +-
 www/manager/storage/ContentView.js      |   12 +-
 www/manager/storage/IScsiEdit.js        |    8 +-
 www/manager/storage/LVMEdit.js          |    4 +-
 www/manager/storage/NFSEdit.js          |    6 +-
 www/manager/storage/NexentaEdit.js      |    2 +-
 www/manager/storage/RBDEdit.js          |    2 +-
 www/manager/storage/SheepdogEdit.js     |    2 +-
 www/manager/storage/Summary.js          |    2 +-
 www/manager/window/Migrate.js           |   10 +-
 www/manager/window/Restore.js           |    6 +-
 www/manager/window/TaskViewer.js        |    8 +-
 77 files changed, 752 insertions(+), 269 deletions(-)

diff --git a/PVE/API2/OpenVZ.pm b/PVE/API2/OpenVZ.pm
index 11b4a9d..fc0d3e9 100644
--- a/PVE/API2/OpenVZ.pm
+++ b/PVE/API2/OpenVZ.pm
@@ -801,9 +801,15 @@ __PACKAGE__->register_method({
 	my $realcmd = sub {
 	    my $cmd = ['vzctl', 'destroy', $vmid ];
 
+            my $rrdpath = '/var/lib/rrdcached/' . $param->{node} . '/' . $vmid;
+
+            my $cmd2 = ['rm', 'f', $rrdpath];
+
 	    run_command($cmd);
 
 	    PVE::AccessControl::remove_vm_from_pool($vmid);
+
+            run_command($cmd2);
 	};
 
 	return $rpcenv->fork_worker('vzdestroy', $vmid, $authuser, $realcmd);
diff --git a/po/messages.pot b/po/messages.pot
index 96963e3..84566d3 100644
--- a/po/messages.pot
+++ b/po/messages.pot
@@ -28,6 +28,14 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
+#: ../www/manager/dc/AuthEdit.js
+msgid "Active Directory server"
+msgstr ""
+
+#: ../www/manager/qemu/Options.js:125
+msgid "ACPI support"
+msgstr ""
+
 #: ../www/manager/window/Edit.js:173 ../www/manager/grid/PoolMembers.js:144 ../www/manager/Utils.js:809 ../www/manager/openvz/Network.js:346 ../www/manager/qemu/HardwareView.js:311 ../www/manager/dc/StorageView.js:99 ../www/manager/dc/AuthView.js:81 ../www/manager/dc/UserView.js:148 ../www/manager/dc/ACLView.js:190 ../www/manager/dc/Backup.js:379 ../www/manager/dc/HAConfig.js:166
 msgid "Add"
 msgstr ""
@@ -48,6 +56,9 @@ msgstr ""
 msgid "Are you sure you want to activate your changes"
 msgstr ""
 
+msgid "Are you sure you want to navigate away from this page?"
+msgstr ""
+
 #: ../www/manager/openvz/Config.js:89 ../www/manager/qemu/Config.js:98
 msgid "Are you sure you want to remove VM {0}? This will permanently erase all VM data."
 msgstr ""
@@ -80,6 +91,10 @@ msgstr ""
 msgid "Automatically allocate memory within this range"
 msgstr ""
 
+#: ../www/manager/node/NetworkEdit.js:36
+msgid "Autostart"
+msgstr ""
+
 #: ../www/manager/storage/StatusView.js:60
 msgid "Avail"
 msgstr ""
@@ -100,6 +115,14 @@ msgstr ""
 msgid "Backup now"
 msgstr ""
 
+#: ../www/manager/openvz/BeanCounterGrid.js
+msgid "Barrier"
+msgstr ""
+
+#: ../www/manager/dc/AuthEdit.js
+msgid "Base Domain Name"
+msgstr ""
+
 #: ../www/manager/storage/LVMEdit.js:157
 msgid "Base storage"
 msgstr ""
@@ -124,10 +147,41 @@ msgstr ""
 msgid "Boot order"
 msgstr ""
 
+#: ../www/manager/qemu/NetworkEdit.js:64
+msgid "Bridge"
+msgstr ""
+
+#: ../www/manager/qemu/NetworkEdit.js:77
+msgid "Bridged mode"
+msgstr ""
+
+#: ../www/manager/node/NetworkEdit.js:46
+msgid "Bridged ports"
+msgstr ""
+
+#: ../www/manager/form/
+msgid "Bus/Device"
+msgstr ""
+
+#: ../www/manager/qemu/CreateWizard.js:20
+msgid "CD/DVD"
+msgstr ""
+
 #: ../www/manager/qemu/HardwareView.js:114 ../www/manager/qemu/HardwareView.js:125 ../www/manager/qemu/HardwareView.js:136 ../www/manager/qemu/HardwareView.js:147 ../www/manager/qemu/HardwareView.js:328
 msgid "CD/DVD Drive"
 msgstr ""
 
+#: ../www/manager/qemu/HDEdit.js:232
+msgid "Cache"
+msgstr ""
+
+msgid "Capacity"
+msgstr ""
+
+#: ../www/manager/qemu/CreateWizard.js:104
+msgid "CPU"
+msgstr ""
+
 #: ../www/manager/data/ResourceStore.js:122
 msgid "CPU usage"
 msgstr ""
@@ -140,6 +194,10 @@ msgstr ""
 msgid "Clone"
 msgstr ""
 
+#: ../www/manager/qemu/Clone.js 146
+msgid "Clone mode"
+msgstr ""
+
 #: ../www/manager/panel/StatusPanel.js:36
 msgid "Cluster log"
 msgstr ""
@@ -160,6 +218,9 @@ msgstr ""
 msgid "Confirm"
 msgstr ""
 
+msgid "Confirmation"
+msgstr ""
+
 #: ../www/manager/openvz/CreateWizard.js:129 ../www/manager/dc/UserEdit.js:36 ../www/manager/dc/UserView.js:23
 msgid "Confirm password"
 msgstr ""
@@ -188,6 +249,30 @@ msgstr ""
 msgid "Copy data"
 msgstr ""
 
+#: ../www/manager/qemu/ProcessorEdit.js:31
+msgid "Cores"
+msgstr ""
+
+#: ../www/manager/node/StatusView.js:42
+msgid "CPUs"
+msgstr ""
+
+#: ../www/manager/qemu/ProcessorEdit.js:49
+msgid "CPU type"
+msgstr ""
+
+#: ../www/manager/qemu/Options.js:167
+msgid "CPU units"
+msgstr ""
+
+#: ../www/manager/node/StatusView.js:43
+msgid "CPU usage"
+msgstr ""
+
+#: ../www/manager/qemu/Summary.js:62
+msgid "CPU usage %"
+msgstr ""
+
 #: ../www/manager/Utils.js:438 ../www/manager/Utils.js:450 ../www/manager/Utils.js:811 ../www/manager/node/NetworkView.js:121 ../www/manager/dc/GroupView.js:68 ../www/manager/dc/PoolView.js:68
 msgid "Create"
 msgstr ""
@@ -200,6 +285,14 @@ msgstr ""
 msgid "Create VM"
 msgstr ""
 
+#: ../www/manager/node/Config.js:91
+msgid "DNS"
+msgstr ""
+
+#: ../www/manager/openvz/CreateWizard.js
+msgid "DNS domain"
+msgstr ""
+
 #: ../www/manager/openvz/CreateWizard.js:241 ../www/manager/openvz/CreateWizard.js:250 ../www/manager/openvz/DNS.js:55 ../www/manager/openvz/DNS.js:59 ../www/manager/openvz/DNS.js:63 ../www/manager/node/DNSEdit.js:22 ../www/manager/node/DNSEdit.js:29 ../www/manager/node/DNSEdit.js:36 ../www/manager/node/DNSView.js:26 ../www/manager/node/DNSView.js:27 ../www/manager/node/DNSView.js:28
 msgid "DNS server"
 msgstr ""
@@ -232,10 +325,18 @@ msgstr ""
 msgid "Directory"
 msgstr ""
 
+#: ../www/manager/qemu/HDMove.js:56
+msgid "Disk"
+msgstr ""
+
 #: ../www/manager/qemu/HDEdit.js:137 ../www/manager/qemu/HDEdit.js:158 ../www/manager/qemu/HDEdit.js:223
 msgid "Disk image"
 msgstr ""
 
+#: ../www/manager/qemu/Summary.js:83
+msgid "Disk IO"
+msgstr ""
+
 #: ../www/manager/data/ResourceStore.js:99 ../www/manager/openvz/RessourceEdit.js:46 ../www/manager/openvz/RessourceView.js:51 ../www/manager/qemu/HDEdit.js:170
 msgid "Disk size"
 msgstr ""
@@ -248,10 +349,18 @@ msgstr ""
 msgid "Display"
 msgstr ""
 
+#: ../www/manager/qemu/CDEdit.js:137
+msgid "Do not use any media"
+msgstr ""
+
 #: ../www/manager/dc/OptionView.js:13 ../www/manager/dc/OptionView.js:52
 msgid "Do not use any proxy"
 msgstr ""
 
+#: ../www/manager/dc/AuthEdit.js
+msgid "Domain"
+msgstr ""
+
 #: ../www/manager/qemu/CmdMenu.js:95
 msgid "Do you really want to convert VM {0} into a template?"
 msgstr ""
@@ -288,6 +397,10 @@ msgstr ""
 msgid "Edit"
 msgstr ""
 
+#: ../www/manager/dc/UserEdit.js
+msgid "E-Mail"
+msgstr ""
+
 #: ../www/manager/storage/NexentaEdit.js:86 ../www/manager/storage/RBDEdit.js:67 ../www/manager/storage/SheepdogEdit.js:51 ../www/manager/storage/LVMEdit.js:203 ../www/manager/storage/DirEdit.js:57 ../www/manager/storage/IScsiEdit.js:143 ../www/manager/storage/NFSEdit.js:151 ../www/manager/dc/StorageView.js:215
 msgid "Enable"
 msgstr ""
@@ -336,6 +449,13 @@ msgstr ""
 msgid "Expire"
 msgstr ""
 
+msgid "Export"
+msgstr ""
+
+#: ../www/manager/openvz/BeanCounterGrid
+msgid "Failcnt"
+msgstr ""
+
 #: ../www/manager/dc/HAConfig.js:179
 msgid "Failover Domain"
 msgstr ""
@@ -364,7 +484,11 @@ msgstr ""
 msgid "Format"
 msgstr ""
 
-#: ../www/manager/storage/SheepdogEdit.js:40
+#: ../www/manager/qemu/Options.js:184
+msgid "Freeze CPU at startup"
+msgstr ""
+
+#: ../www/manager/storage/SheepdogEdit.js:40 ../www/manager/storage/NetworkEdit.js:120
 msgid "Gateway"
 msgstr ""
 
@@ -404,6 +528,34 @@ msgstr ""
 msgid "Hardware"
 msgstr ""
 
+#: ../www/manager/node/StatusView.js:48
+msgid "HD space (root)"
+msgstr ""
+
+#: ../www/manager/openvz/BeancounterGrid.js
+msgid "Held"
+msgstr ""
+
+#: ../www/manager/openvz/Network.js
+msgid "Host device name"
+msgstr ""
+
+#: ../www/manager/openvz/Network.js
+msgid "Host ifname"
+msgstr ""
+
+#: ../www/manager/openvz/Network.js
+msgid "Host MAC address"
+msgstr ""
+
+#: ../www/manager/openvz/CreateWizard.js
+msgid "Hostname"
+msgstr ""
+
+#: ../www/manager/dc/OptionView.js
+msgid "HTTP proxy"
+msgstr ""
+
 #: ../www/manager/openvz/Network.js:137 ../www/manager/openvz/Network.js:143 ../www/manager/openvz/Network.js:160 ../www/manager/openvz/Network.js:350 ../www/manager/openvz/Network.js:393 ../www/manager/openvz/CreateWizard.js:182 ../www/manager/node/NetworkView.js:223 ../www/manager/node/NetworkEdit.js:88
 msgid "IP address"
 msgstr ""
@@ -416,14 +568,42 @@ msgstr ""
 msgid "Include selected VMs"
 msgstr ""
 
+#: ../www/manager/node/StatusView.js:44
+msgid "IO delay"
+msgstr ""
+
+#: ../www/manager/dc/StorageView.js
+msgid "iSCSI target"
+msgstr ""
+
+#: ../www/manager/qemu/CDEdit.js:103
+msgid "ISO Image"
+msgstr ""
+
+#: ../www/manager/node/StatusView.js:50
+msgid "Kernel version"
+msgstr ""
+
 #: ../www/manager/qemu/HardwareView.js:80 ../www/manager/qemu/KeyboardEdit.js:8 ../www/manager/qemu/KeyboardEdit.js:13 ../www/manager/dc/OptionView.js:33 ../www/manager/dc/OptionView.js:38 ../www/manager/dc/OptionView.js:63
 msgid "Keyboard Layout"
 msgstr ""
 
+#: ../www/manager/node/StatusView.js:47
+msgid "KSM sharing"
+msgstr ""
+
+#: ../www/manager/qemu/Options.js:149
+msgid "KVM hardware virtualization"
+msgstr ""
+
 #: ../www/manager/window/LoginWindow.js:104
 msgid "Language"
 msgstr ""
 
+#: ../www/manager/node/Subscription.js:75
+msgid "Last checked"
+msgstr ""
+
 #: ../www/manager/dc/UserEdit.js:114
 msgid "Last Name"
 msgstr ""
@@ -436,6 +616,18 @@ msgstr ""
 msgid "Last transition"
 msgstr ""
 
+#: ../www/manager/dc/AuthEdit.js
+msgid "LDAP Server"
+msgstr ""
+
+#: ../www/manager/openvz/BeanCounterGrid.js
+msgid "Limit"
+msgstr ""
+
+#: ../www/manager/node/StatusView.js:41
+msgid "Load average"
+msgstr ""
+
 #: ../www/manager/Utils.js:841
 msgid "Loading..."
 msgstr ""
@@ -452,10 +644,30 @@ msgstr ""
 msgid "Logout"
 msgstr ""
 
+#: ../www/manager/dc/StorageView.js
+msgid "LVM group"
+msgstr ""
+
+#: ../www/manager/qemu/NetworkEdit.js:132
+msgid "MAC address"
+msgstr ""
+
+#: ../www/manager/qemu/StatusView.js:50
+msgid "Managed by HA"
+msgstr ""
+
 #: ../www/manager/storage/DirEdit.js:67 ../www/manager/storage/NFSEdit.js:155
 msgid "Max Backups"
 msgstr ""
 
+#: ../www/manager/data/ResourceStore.js
+msgid "maxcpu"
+msgstr ""
+
+#: ../www/manager/openvz/BeanCounterGrid.js
+msgid "Maxheld"
+msgstr ""
+
 #: ../www/manager/qemu/MemoryEdit.js:89
 msgid "Maximum memory"
 msgstr ""
@@ -472,7 +684,7 @@ msgstr ""
 msgid "Memory size"
 msgstr ""
 
-#: ../www/manager/data/ResourceStore.js:107
+#: ../www/manager/data/ResourceStore.js:107 ../www/manager/qemu/Summary.js:69
 msgid "Memory usage"
 msgstr ""
 
@@ -484,6 +696,9 @@ msgstr ""
 msgid "Migrate"
 msgstr ""
 
+msgid "Migrate VM"
+msgstr ""
+
 #: ../www/manager/qemu/MemoryEdit.js:112
 msgid "Minimum memory"
 msgstr ""
@@ -492,6 +707,10 @@ msgstr ""
 msgid "Mode"
 msgstr ""
 
+#: ../www/manager/qemu/NetworkEdit.js:125
+msgid "Model"
+msgstr ""
+
 #: ../www/manager/qemu/Config.js:156
 msgid "Monitor"
 msgstr ""
@@ -508,6 +727,10 @@ msgstr ""
 msgid "Name"
 msgstr ""
 
+#: ../www/manager/qemu/NetworkEdit.js:107
+msgid "Nat mode"
+msgstr ""
+
 #: ../www/manager/openvz/Network.js:161 ../www/manager/openvz/Config.js:132 ../www/manager/openvz/CreateWizard.js:159 ../www/manager/node/Config.js:86 ../www/manager/qemu/CreateWizard.js:35 ../www/manager/qemu/BootOrderEdit.js:74
 msgid "Network"
 msgstr ""
@@ -516,10 +739,21 @@ msgstr ""
 msgid "Network Device"
 msgstr ""
 
+#: ../www/manager/node/Summary.js:126 ../www/manager/qemu/Summary.js:76
+msgid "Network traffic"
+msgstr ""
+
+msgid "Nexenta Storage"
+msgstr ""
+
 #: ../www/manager/window/Wizard.js:90
 msgid "Next"
 msgstr ""
 
+#: ../www/manager/dc/StorageView.js
+msgid "NFS share"
+msgstr ""
+
 #: ../www/manager/form/Boolean.js:12 ../www/manager/Utils.js:613
 msgid "No"
 msgstr ""
@@ -528,6 +762,9 @@ msgstr ""
 msgid "No backup"
 msgstr ""
 
+msgid "No cache"
+msgstr ""
+
 #: ../www/manager/node/NetworkView.js:41 ../www/manager/node/NetworkView.js:255
 msgid "No changes"
 msgstr ""
@@ -536,6 +773,9 @@ msgstr ""
 msgid "No restrictions"
 msgstr ""
 
+msgid "No such console type"
+msgstr ""
+
 #: ../www/manager/data/ResourceStore.js:182 ../www/manager/window/TaskViewer.js:113 ../www/manager/openvz/CreateWizard.js:65 ../www/manager/node/Config.js:67 ../www/manager/node/Tasks.js:137 ../www/manager/qemu/CreateWizard.js:50 ../www/manager/dc/Log.js:50 ../www/manager/dc/Backup.js:85 ../www/manager/dc/Backup.js:113 ../www/manager/dc/Backup.js:391 ../www/manager/dc/Tasks.js:85
 msgid "Node"
 msgstr ""
@@ -548,10 +788,17 @@ msgstr ""
 msgid "Nodes"
 msgstr ""
 
+#: ../www/manager/qemu/NetworkEdit.js:117
+msgid "No network device"
+msgstr ""
+
 #: ../www/manager/window/NotesEdit.js:8 ../www/manager/panel/NotesView.js:45
 msgid "Notes"
 msgstr ""
 
+msgid "No valid subscription"
+msgstr ""
+
 #: ../www/manager/data/ResourceStore.js:36 ../www/manager/dc/Summary.js:42
 msgid "Online"
 msgstr ""
@@ -564,10 +811,25 @@ msgstr ""
 msgid "OpenVZ Container"
 msgstr ""
 
+msgid "OpenVZ template"
+msgstr ""
+
 #: ../www/manager/openvz/Config.js:142 ../www/manager/qemu/Config.js:141 ../www/manager/dc/Config.js:26
 msgid "Options"
 msgstr ""
 
+#: ../www/manager/qemu/CreateWizard.js:97
+msgid "OS"
+msgstr ""
+
+#: ../www/manager/qemu/Options.js:65
+msgid "OS Type"
+msgstr ""
+
+#: ../www/manager/qemu/
+msgid "Other"
+msgstr ""
+
 #: ../www/manager/Utils.js:111 ../www/manager/Utils.js:123
 msgid "Other OS types"
 msgstr ""
@@ -584,6 +846,9 @@ msgstr ""
 msgid "Package"
 msgstr ""
 
+msgid "paravirtualized"
+msgstr ""
+
 #: ../www/manager/window/LoginWindow.js:87 ../www/manager/storage/NexentaEdit.js:75 ../www/manager/openvz/CreateWizard.js:114 ../www/manager/dc/UserEdit.js:46 ../www/manager/dc/UserView.js:31 ../www/manager/dc/UserView.js:38 ../www/manager/dc/UserView.js:134
 msgid "Password"
 msgstr ""
@@ -628,6 +893,10 @@ msgstr ""
 msgid "Portal"
 msgstr ""
 
+#: ../www/manager/node/NetworkView.js
+msgid "Ports/Slaves"
+msgstr ""
+
 #: ../www/manager/Utils.js:107
 msgid "Premium"
 msgstr ""
@@ -636,6 +905,9 @@ msgstr ""
 msgid "Privileges"
 msgstr ""
 
+msgid "Process ID"
+msgstr ""
+
 #: ../www/manager/openvz/RessourceView.js:45 ../www/manager/qemu/HardwareView.js:58 ../www/manager/qemu/ProcessorEdit.js:71
 msgid "Processors"
 msgstr ""
@@ -648,6 +920,47 @@ msgstr ""
 msgid "Proxmox VE Login"
 msgstr ""
 
+#: ../www/manager/node/StatusView.js:49
+msgid "PVE Manager version"
+msgstr ""
+
+msgid "QEMU image format"
+msgstr ""
+
+#: ../www/manager/node/Options.js
+msgid "Quota Grace period"
+msgstr ""
+
+#: ../www/manager/openvz/Options.js
+msgid "Quota Grace period (seconds)"
+msgstr ""
+
+#: ../www/manager/openvz/Options.js
+msgid "Quota UGID limit"
+msgstr ""
+
+#: ../www/manager/openvz/Options.js
+msgid "Quota UGID limit (0 to disable user quotas)"
+msgstr ""
+
+#: ../www/manager/qemu/SnapshotTree.js:249
+msgid "RAM"
+msgstr ""
+
+#: ../www/manager/node/StatusView.js:45
+msgid "RAM usage"
+msgstr ""
+
+#: ../www/manager/qemu/NetworkEdit.js:140
+msgid "Rate limit (MB/s)"
+msgstr ""
+
+msgid "Raw disk image"
+msgstr ""
+
+msgid "RBD Storage"
+msgstr ""
+
 #: ../www/manager/qemu/HDEdit.js:249 ../www/manager/qemu/HDEdit.js:269
 msgid "Read limit"
 msgstr ""
@@ -680,6 +993,10 @@ msgstr ""
 msgid "Resource Pool"
 msgstr ""
 
+#: ../www/manager/openvz/BeanCounterGrid.js
+msgid "Resource"
+msgstr ""
+
 #: ../www/manager/openvz/RessourceEdit.js:73 ../www/manager/openvz/Config.js:127 ../www/manager/openvz/CreateWizard.js:155
 msgid "Resources"
 msgstr ""
@@ -696,6 +1013,12 @@ msgstr ""
 msgid "Restore"
 msgstr ""
 
+msgid "Restore CT"
+msgstr ""
+
+msgid "Restore VM"
+msgstr ""
+
 #: ../www/manager/Utils.js:449 ../www/manager/qemu/Config.js:38 ../www/manager/VNCConsole.js:290
 msgid "Resume"
 msgstr ""
@@ -716,6 +1039,13 @@ msgstr ""
 msgid "Rollback"
 msgstr ""
 
+#: ../www/manager/qemu/Options.js:220
+msgid "RTC start date"
+msgstr ""
+
+msgid "Scanning..."
+msgstr ""
+
 #: ../www/manager/qemu/ScsiHwEdit.js:8
 msgid "SCSI Controller Type"
 msgstr ""
@@ -724,6 +1054,10 @@ msgstr ""
 msgid "Search"
 msgstr ""
 
+#: ../www/manager/node/DNSEdit.js:16
+msgid "Search domain"
+msgstr ""
+
 #: ../www/manager/storage/ContentView.js:199
 msgid "Select File..."
 msgstr ""
@@ -740,6 +1074,9 @@ msgstr ""
 msgid "Send email to"
 msgstr ""
 
+msgid "Serial terminal"
+msgstr ""
+
 #: ../www/manager/storage/NFSEdit.js:106 ../www/manager/dc/AuthEdit.js:87
 msgid "Server"
 msgstr ""
@@ -752,6 +1089,10 @@ msgstr ""
 msgid "Server ID"
 msgstr ""
 
+#:../www/manager/node/Summary.js:114
+msgid "Server load"
+msgstr ""
+
 #: ../www/manager/form/ViewSelector.js:10
 msgid "Server View"
 msgstr ""
@@ -784,6 +1125,9 @@ msgstr ""
 msgid "Shares"
 msgstr ""
 
+msgid "Sheepdog Storage"
+msgstr ""
+
 #: ../www/manager/Utils.js:434 ../www/manager/node/Config.js:51 ../www/manager/VNCConsole.js:441
 msgid "Shell"
 msgstr ""
@@ -804,6 +1148,10 @@ msgstr ""
 msgid "Size Increment"
 msgstr ""
 
+#: ../www/manager/node/NetworkEdit.js:52
+msgid "Slaves"
+msgstr ""
+
 #: ../www/manager/Utils.js:435
 msgid "Snapshot"
 msgstr ""
@@ -812,6 +1160,14 @@ msgstr ""
 msgid "Snapshots"
 msgstr ""
 
+#: ../www/manager/node/StatusView.js:16
+msgid "Socket"
+msgstr ""
+
+#: ../www/manager/node/StatusView.js:16 ../www/manager/qemu/ProcessorEdit.js
+msgid "Sockets"
+msgstr ""
+
 #: ../www/manager/window/Restore.js:41
 msgid "Source"
 msgstr ""
@@ -824,6 +1180,9 @@ msgstr ""
 msgid "Standard"
 msgstr ""
 
+msgid "Standard VGA"
+msgstr ""
+
 #: ../www/manager/Utils.js:444 ../www/manager/Utils.js:454 ../www/manager/Utils.js:460 ../www/manager/Utils.js:462 ../www/manager/openvz/Config.js:38 ../www/manager/openvz/CmdMenu.js:34 ../www/manager/node/ServiceView.js:49 ../www/manager/qemu/Config.js:47 ../www/manager/qemu/CmdMenu.js:34 ../www/manager/VNCConsole.js:231 ../www/manager/VNCConsole.js:361
 msgid "Start"
 msgstr ""
@@ -848,7 +1207,7 @@ msgstr ""
 msgid "Startup delay"
 msgstr ""
 
-#: ../www/manager/pool/StatusView.js:21 ../www/manager/window/TaskViewer.js:89 ../www/manager/window/TaskViewer.js:162 ../www/manager/storage/StatusView.js:67 ../www/manager/openvz/StatusView.js:59 ../www/manager/node/ServiceView.js:124 ../www/manager/node/Subscription.js:62 ../www/manager/node/Tasks.js:153 ../www/manager/qemu/StatusView.js:44 ../www/manager/qemu/SnapshotTree.js:261 ../www/manager/dc/Backup.js:89 ../www/manager/dc/Tasks.js:101 ../www/manager/dc/Summary.js:160
+#: ../www/manager/pool/StatusView.js:21 ../www/manager/window/TaskViewer.js:89 ../www/manager/window/TaskViewer.js:162 ../www/manager/storage/StatusView.js:67 ../www/manager/openvz/StatusView.js:59 ../www/manager/node/ServiceView.js:124 ../www/manager/node/Subscription.js:62 ../www/manager/node/Tasks.js:153 ../www/manager/qemu/StatusView.js:44 ../www/manager/qemu/SnapshotTree.js:261 ../www/manager/dc/Backup.js:89 ../www/manager/dc/Tasks.js:101 ../www/manager/dc/Summary.js:160 ../www/manager/qemu/Summary.js:29
 msgid "Status"
 msgstr ""
 
@@ -880,6 +1239,10 @@ msgstr ""
 msgid "Subnet mask"
 msgstr ""
 
+#: ../www/manager/node/Config.js:143
+msgid "Subscription"
+msgstr ""
+
 #: ../www/manager/node/Subscription.js:14 ../www/manager/node/Subscription.js:59
 msgid "Subscription Key"
 msgstr ""
@@ -904,6 +1267,10 @@ msgstr ""
 msgid "Swap"
 msgstr ""
 
+#: ../www/manager/node/StatusView.js:46
+msgid "SWAP usage"
+msgstr ""
+
 #: ../www/manager/qemu/Snapshot.js:142 ../www/manager/qemu/Snapshot.js:144 ../www/manager/qemu/SnapshotTree.js:212
 msgid "Take Snapshot"
 msgstr ""
@@ -912,10 +1279,25 @@ msgstr ""
 msgid "Target"
 msgstr ""
 
+#: ../www.manager/qemu/Clone.js:132
+msgid "Target node"
+msgstr ""
+
+#: ../www/manager/qemu/HDMove.js:65
+msgid "Target Storage"
+msgstr ""
+
 #: ../www/manager/panel/StatusPanel.js:31
 msgid "Tasks"
 msgstr ""
 
+#: ../www/manager/qemu/Config.js:163
+msgid "Task History"
+msgstr ""
+
+msgid "Task type"
+msgstr ""
+
 #: ../www/manager/openvz/CreateWizard.js:29 ../www/manager/openvz/CreateWizard.js:150 ../www/manager/openvz/Options.js:40
 msgid "Template"
 msgstr ""
@@ -928,6 +1310,12 @@ msgstr ""
 msgid "This is not a valid DNS name"
 msgstr ""
 
+msgid "This VM ID does not exists"
+msgstr ""
+
+msgid "This VM ID is already in use"
+msgstr ""
+
 #: ../www/manager/grid/BackupView.js:123 ../www/manager/qemu/HardwareView.js:274
 msgid "This will permanently erase all image data."
 msgstr ""
@@ -948,10 +1336,53 @@ msgstr ""
 msgid "Timestamp"
 msgstr ""
 
+#: ../www/manager/node/StatusView.js:34
+msgid "Total"
+msgstr ""
+
+#: ../www/manager/qemu/ProcessorEdit.js:53
+msgid "Total cores"
+msgstr ""
+
+#: ../www/manager/data/ResourceStore.js
+msgid "Total Disk Read"
+msgstr ""
+
+#: ../www/manager/data/ResourceStore.js
+msgid "Total Disk Write"
+msgstr ""
+
+#: ../www/manager/data/ResourceStore.js
+msgid "Total NetIn"
+msgstr ""
+
+#: ../www/manager/data/ResourceStore.js
+msgid "Total NetOut"
+msgstr ""
+
 #: ../www/manager/data/ResourceStore.js:21 ../www/manager/storage/ContentView.js:45 ../www/manager/storage/StatusView.js:35 ../www/manager/openvz/Network.js:387 ../www/manager/node/Subscription.js:56 ../www/manager/qemu/ScsiHwEdit.js:13 ../www/manager/dc/StorageView.js:182 ../www/manager/dc/AuthView.js:126 ../www/manager/dc/Backup.js:105
 msgid "Type"
 msgstr ""
 
+#: ../www/manager/openvz/Options.js
+msgid "UGID limit"
+msgstr ""
+
+#: ../www/manager/dc/Support.js
+msgid "Unable to load subscription status"
+msgstr ""
+
+#: ../www/manager/qemu/HDEdit.js
+msgid "Unable to parse drive options"
+msgstr ""
+
+#: ../www/manager/qemu/NetworkEdit.js
+msgid "Unable to parse network options"
+msgstr ""
+
+msgid "Unique task ID"
+msgstr ""
+
 #: ../www/manager/Utils.js:615
 msgid "Unknown"
 msgstr ""
@@ -964,6 +1395,9 @@ msgstr ""
 msgid "Unmount"
 msgstr ""
 
+msgid "unsafe"
+msgstr ""
+
 #: ../www/manager/qemu/HDEdit.js:315 ../www/manager/qemu/HardwareView.js:165
 msgid "Unused Disk"
 msgstr ""
@@ -984,10 +1418,21 @@ msgstr ""
 msgid "Uploading file..."
 msgstr ""
 
-#: ../www/manager/data/ResourceStore.js:175 ../www/manager/openvz/StatusView.js:67 ../www/manager/qemu/StatusView.js:49
+#: ../www/manager/data/ResourceStore.js:175 ../www/manager/openvz/StatusView.js:67 ../www/manager/qemu/StatusView.js:49 ../www/manager/node/StatusView.js:40    
 msgid "Uptime"
 msgstr ""
 
+msgid "Usage"
+msgstr ""
+
+#: ../www/manager/qemu/CDEdit.js:85
+msgid "Use CD/DVD disc image file (iso)"
+msgstr ""
+
+#: ../www/manager/qemu/Options.js:202
+msgid "Use local time for RTC"
+msgstr "" 
+
 #: ../www/manager/storage/IScsiEdit.js:149
 msgid "Use LUNs directly"
 msgstr ""
@@ -996,14 +1441,22 @@ msgstr ""
 msgid "Use fixed size memory"
 msgstr ""
 
-#: ../www/manager/storage/StatusView.js:50
+#: ../www/manager/storage/StatusView.js:50 ../www/manager/node/StatusView.js:34
 msgid "Used"
 msgstr ""
 
+#: ../www/manager/qemu/CDEdit.js:130
+msgid "Use physical CD/DVD Drive"
+msgstr ""
+
 #: ../www/manager/form/UserSelector.js:28 ../www/manager/dc/UserEdit.js:169 ../www/manager/dc/ACLView.js:33 ../www/manager/dc/ACLView.js:113
 msgid "User"
 msgstr ""
 
+#: ../www/manager/dc/AuthEdit.js
+msgid "User Attribute Name"
+msgstr ""
+
 #: ../www/manager/dc/ACLView.js:29 ../www/manager/dc/ACLView.js:205
 msgid "User Permission"
 msgstr ""
@@ -1016,6 +1469,13 @@ msgstr ""
 msgid "Users"
 msgstr ""
 
+#: ../www/manager/qemu/Options.js:107
+msgid "Use tablet for pointer"
+msgstr ""
+
+msgid "Value"
+msgstr ""
+
 #: ../www/manager/storage/ContentView.js:55 ../www/manager/Workspace.js:248
 msgid "Version"
 msgstr ""
@@ -1032,10 +1492,27 @@ msgstr ""
 msgid "Virtual Machine {0} on node {1}"
 msgstr ""
 
+#: ../www/manager/qemu/NetworkEdit.js:98
+msgid "VLAN Tag"
+msgstr ""
+
+msgid "VMWare compatible"
+msgstr ""
+
+msgid "VMware image format"
+msgstr ""
+
 #: ../www/manager/storage/LVMEdit.js:133 ../www/manager/storage/LVMEdit.js:140
 msgid "Volume group"
 msgstr ""
 
+#: ../www/manager/openvz/StatusView.js
+msgid "VSwap usage"
+msgstr ""
+
+msgid "VZDump backup file"
+msgstr ""
+
 #: ../www/manager/qemu/HDEdit.js:259 ../www/manager/qemu/HDEdit.js:279
 msgid "Write limit"
 msgstr ""
diff --git a/www/manager/StateProvider.js b/www/manager/StateProvider.js
index b63c04e..a93c803 100644
--- a/www/manager/StateProvider.js
+++ b/www/manager/StateProvider.js
@@ -158,7 +158,7 @@ Ext.define('PVE.StateProvider', {
 	var history_change_cb = function(token) {
 	    //console.log("HC " + token);
 	    if (!token) {
-		var res = window.confirm('Are you sure you want to navigate away from this page?');
+		var res = window.confirm(gettext('Are you sure you want to navigate away from this page?'));
 		if (res){
 		    // process text value and close...
 		    Ext.History.back();
@@ -230,4 +230,4 @@ Ext.define('PVE.StateProvider', {
 	    me.callParent(arguments);
 	}
     }
-});
\ No newline at end of file
+});
diff --git a/www/manager/Utils.js b/www/manager/Utils.js
index 5f5a04c..ccd0728 100644
--- a/www/manager/Utils.js
+++ b/www/manager/Utils.js
@@ -184,14 +184,14 @@ Ext.define('PVE.Utils', { statics: {
     },
 
     kvm_vga_drivers: {
-	std: 'Standard VGA',
-	vmware: 'VMWare compatible',
+	std: gettext('Standard VGA'),
+	vmware: gettext('VMWare compatible'),
 	cirrus: 'Cirrus Logic GD5446',
 	qxl: 'SPICE',
-	serial0: 'Serial terminal 0',
-	serial1: 'Serial terminal 1',
-	serial2: 'Serial terminal 2',
-	serial3: 'Serial terminal 3'
+	serial0: gettext('Serial terminal') + ' 0',
+	serial1: gettext('Serial terminal') + ' 1',
+	serial2: gettext('Serial terminal') + ' 2',
+	serial3: gettext('Serial terminal') + ' 3'
     },
 
     render_kvm_language: function (value) {
@@ -442,14 +442,14 @@ Ext.define('PVE.Utils', { statics: {
 	    method: 'GET',
 	    //waitMsgTarget: me,
 	    failure: function(response, opts) {
-		Ext.Msg.alert('Error', response.htmlStatus);
+		Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 	    },
 	    success: function(response, opts) {
 		var data = response.result.data;
 
 		if (data.status !== 'Active') {
 		    Ext.Msg.show({
-			title: 'No valid subscription',
+			title: gettext('No valid subscription'),
 			icon: Ext.Msg.WARNING,
 			msg: PVE.Utils.noSubKeyHtml,
 			buttons: Ext.Msg.OK,
diff --git a/www/manager/Workspace.js b/www/manager/Workspace.js
index 0b95b83..a97d9f8 100644
--- a/www/manager/Workspace.js
+++ b/www/manager/Workspace.js
@@ -159,7 +159,7 @@ Ext.define('PVE.ConsoleWorkspace', {
 	    content = {
 		border: false,
 		bodyPadding: 10,
-		html: 'Error: No such console type' 
+		html: gettext('Error') + ':' + gettext('No such console type') 
 	    };
 	}
 
diff --git a/www/manager/data/ResourceStore.js b/www/manager/data/ResourceStore.js
index 07b029c..d50d9a7 100644
--- a/www/manager/data/ResourceStore.js
+++ b/www/manager/data/ResourceStore.js
@@ -126,14 +126,14 @@ Ext.define('PVE.data.ResourceStore', {
 		width: 100
 	    },
 	    maxcpu: {
-		header: 'maxcpu',
+		header: gettext('maxcpu'),
 		type: 'integer',
 		hidden: true,
 		sortable: true,
 		width: 60
 	    },
 	    diskread: {
-		header: 'Total Disk Read',
+		header: gettext('Total Disk Read'),
 		type: 'integer',
 		hidden: true,
 		sortable: true,
@@ -141,7 +141,7 @@ Ext.define('PVE.data.ResourceStore', {
 		width: 100
 	    },
 	    diskwrite: {
-		header: 'Total Disk Write',
+		header: gettext('Total Disk Write'),
 		type: 'integer',
 		hidden: true,
 		sortable: true,
@@ -149,7 +149,7 @@ Ext.define('PVE.data.ResourceStore', {
 		width: 100
 	    },
 	    netin: {
-		header: 'Total NetIn',
+		header: gettext('Total NetIn'),
 		type: 'integer',
 		hidden: true,
 		sortable: true,
@@ -157,7 +157,7 @@ Ext.define('PVE.data.ResourceStore', {
 		width: 100
 	    },
 	    netout: {
-		header: 'Total NetOut',
+		header: gettext('Total NetOut'),
 		type: 'integer',
 		hidden: true,
 		sortable: true,
@@ -165,7 +165,7 @@ Ext.define('PVE.data.ResourceStore', {
 		width: 100
 	    },
 	    template: {
-		header: 'template',
+		header: gettext('Template'),
 		type: 'integer',
 		hidden: true,
 		sortable: true,
diff --git a/www/manager/dc/AuthEdit.js b/www/manager/dc/AuthEdit.js
index c40c265..68f0062 100644
--- a/www/manager/dc/AuthEdit.js
+++ b/www/manager/dc/AuthEdit.js
@@ -34,24 +34,24 @@ Ext.define('PVE.dc.AuthEdit', {
 
 	if (me.authType === 'ad') {
 
-	    me.subject = 'Active Directory Server';
+	    me.subject = gettext('Active Directory Server');
 
             column1.push({
                 xtype: 'textfield',
                 name: 'domain',
-                fieldLabel: 'Domain',
+                fieldLabel: gettext('Domain'),
                 emptyText: 'company.net',
                 allowBlank: false
             });
 
 	} else if (me.authType === 'ldap') {
 
-	    me.subject = 'LDAP Server';
+	    me.subject = gettext('LDAP Server');
 
             column1.push({
                 xtype: 'textfield',
                 name: 'base_dn',
-                fieldLabel: 'Base Domain Name',
+                fieldLabel: gettext('Base Domain Name'),
 		emptyText: 'CN=Users,DC=Company,DC=net',
                 allowBlank: false
             });
@@ -60,7 +60,7 @@ Ext.define('PVE.dc.AuthEdit', {
                 xtype: 'textfield',
                 name: 'user_attr',
                 emptyText: 'uid / sAMAccountName',
-                fieldLabel: 'User Attribute Name',
+                fieldLabel: gettext('User Attribute Name'),
                 allowBlank: false
             });
 
diff --git a/www/manager/dc/AuthView.js b/www/manager/dc/AuthView.js
index 08830ac..68564f7 100644
--- a/www/manager/dc/AuthView.js
+++ b/www/manager/dc/AuthView.js
@@ -82,7 +82,7 @@ Ext.define('PVE.dc.AuthView', {
 		menu: new Ext.menu.Menu({
 		    items: [
 			{
-			    text: 'Active Directory Server',
+			    text: gettext('Active Directory server'),
 			    handler: function() {
 				var win = Ext.create('PVE.dc.AuthEdit', {
 				    authType: 'ad'
@@ -92,7 +92,7 @@ Ext.define('PVE.dc.AuthView', {
 			    }
 			},
 			{
-			    text: 'LDAP Server',
+			    text: gettext('LDAP Server'),
 			    handler: function() {
 				var win = Ext.create('PVE.dc.AuthEdit',{
 				    authType: 'ldap'
diff --git a/www/manager/dc/HAConfig.js b/www/manager/dc/HAConfig.js
index 82e06d4..c0f8492 100644
--- a/www/manager/dc/HAConfig.js
+++ b/www/manager/dc/HAConfig.js
@@ -32,7 +32,7 @@ Ext.define('PVE.dc.vmHAServiceEdit', {
 		    xtype: 'pvecheckbox',
 		    name: 'autostart',
 		    checked: true,
-		    fieldLabel: 'autostart'
+		    fieldLabel: gettext('Autostart')
 		}
 	    ]
 	});
diff --git a/www/manager/dc/OptionView.js b/www/manager/dc/OptionView.js
index cdde27f..1f99265 100644
--- a/www/manager/dc/OptionView.js
+++ b/www/manager/dc/OptionView.js
@@ -5,7 +5,7 @@ Ext.define('PVE.dc.HttpProxyEdit', {
 	var me = this;
 
 	Ext.applyIf(me, {
-	    subject: 'HTTP proxy',
+	    subject: gettext('HTTP proxy'),
 	    items: {
 		xtype: 'pvetextfield',
 		name: 'http_proxy',
@@ -13,7 +13,7 @@ Ext.define('PVE.dc.HttpProxyEdit', {
 		emptyText: gettext('Do not use any proxy'),
 		deleteEmpty: true,
 		value: '',
-		fieldLabel: 'HTTP proxy'
+		fieldLabel: gettext('HTTP proxy')
 	    }
 	});
 
@@ -66,7 +66,7 @@ Ext.define('PVE.dc.OptionView', {
 		required: true 
 	    },
 	    http_proxy: { 
-		header: 'HTTP proxy',
+		header: gettext('HTTP proxy'),
 		editor: 'PVE.dc.HttpProxyEdit', 
 		required: true,
 		renderer: function(value) {
diff --git a/www/manager/dc/StorageView.js b/www/manager/dc/StorageView.js
index 2c81c0b..f8331a1 100644
--- a/www/manager/dc/StorageView.js
+++ b/www/manager/dc/StorageView.js
@@ -100,7 +100,7 @@ Ext.define('PVE.dc.StorageView', {
 		    menu: new Ext.menu.Menu({
 			items: [
 			    {
-				text: 'Directory',
+				text: gettext('Directory'),
 				iconCls: 'pve-itype-icon-itype',
 				handler: function() {
 				    var win = Ext.create('PVE.storage.DirEdit', {});
@@ -110,7 +110,7 @@ Ext.define('PVE.dc.StorageView', {
 
 			    },
 			    {
-				text: 'LVM group',
+				text: gettext('LVM group'),
 				handler: function() {
 				    var win = Ext.create('PVE.storage.LVMEdit', {});
 				    win.on('destroy', reload);
@@ -118,7 +118,7 @@ Ext.define('PVE.dc.StorageView', {
 				}
 			    },
 			    {
-				text: 'NFS share',
+				text: gettext('NFS share'),
 				iconCls: 'pve-itype-icon-node',
 				handler: function() {
 				    var win = Ext.create('PVE.storage.NFSEdit', {});
@@ -127,7 +127,7 @@ Ext.define('PVE.dc.StorageView', {
 				}
 			    },
 			    {
-				text: 'iSCSI target',
+				text: gettext('iSCSI target'),
 				iconCls: 'pve-itype-icon-node',
 				handler: function() {
 				    var win = Ext.create('PVE.storage.IScsiEdit', {});
diff --git a/www/manager/dc/Support.js b/www/manager/dc/Support.js
index bcdae79..1ed32d4 100644
--- a/www/manager/dc/Support.js
+++ b/www/manager/dc/Support.js
@@ -46,8 +46,8 @@ Ext.define('PVE.dc.Support', {
 		method: 'GET',
 		waitMsgTarget: me,
 		failure: function(response, opts) {
-		    Ext.Msg.alert('Error', response.htmlStatus);
-		    me.update("Unable to load subscription status: " + response.htmlStatus);
+		    Ext.Msg.alert(gettext('Error'), response.htmlStatus);
+		    me.update(gettext('Unable to load subscription status') + ": " + response.htmlStatus);
 		},
 		success: function(response, opts) {
 		    var data = response.result.data;
@@ -75,4 +75,4 @@ Ext.define('PVE.dc.Support', {
 
 	me.callParent();
     }
-});
\ No newline at end of file
+});
diff --git a/www/manager/dc/UserEdit.js b/www/manager/dc/UserEdit.js
index 22df94c..7b8c51d 100644
--- a/www/manager/dc/UserEdit.js
+++ b/www/manager/dc/UserEdit.js
@@ -116,7 +116,7 @@ Ext.define('PVE.dc.UserEdit', {
 	    {
 		xtype: 'textfield',
 		name: 'email',
-		fieldLabel: 'E-Mail',
+		fieldLabel: gettext('E-Mail'),
 		vtype: 'email'
 	    },
 	    {
diff --git a/www/manager/form/BackupModeSelector.js b/www/manager/form/BackupModeSelector.js
index 8e42bd7..715d9eb 100644
--- a/www/manager/form/BackupModeSelector.js
+++ b/www/manager/form/BackupModeSelector.js
@@ -6,9 +6,9 @@ Ext.define('PVE.form.BackupModeSelector', {
 	var me = this;
 
 	me.data = [
-	    ['snapshot', 'Snapshot'],
-	    ['suspend', 'Suspend'],
-	    ['stop', 'Stop']
+	    ['snapshot', gettext('Snapshot')],
+	    ['suspend', gettext('Suspend')],
+	    ['stop', gettext('Stop')]
 	];
 
 	me.callParent();
diff --git a/www/manager/form/BridgeSelector.js b/www/manager/form/BridgeSelector.js
index cae1d6d..1628ef2 100644
--- a/www/manager/form/BridgeSelector.js
+++ b/www/manager/form/BridgeSelector.js
@@ -43,7 +43,7 @@ Ext.define('PVE.form.BridgeSelector', {
             listConfig: {
 		columns: [
 		    {
-			header: 'Bridge',
+			header: gettext('Bridge'),
 			dataIndex: 'iface',
 			hideable: false,
 			flex: 1
diff --git a/www/manager/form/CPUModelSelector.js b/www/manager/form/CPUModelSelector.js
index 946c4cb..61b0267 100644
--- a/www/manager/form/CPUModelSelector.js
+++ b/www/manager/form/CPUModelSelector.js
@@ -6,7 +6,7 @@ Ext.define('PVE.form.CPUModelSelector', {
 	var me = this;
 
         me.data = [ 
-	    ['', 'Default (kvm64)'],
+	    ['', gettext('Default') + ' (kvm64)'],
 	    ['486', '486'],
 	    ['athlon', 'athlon'],
 	    ['core2duo', 'core2duo'],
diff --git a/www/manager/form/CacheTypeSelector.js b/www/manager/form/CacheTypeSelector.js
index 5e4d229..4d461ec 100644
--- a/www/manager/form/CacheTypeSelector.js
+++ b/www/manager/form/CacheTypeSelector.js
@@ -6,12 +6,12 @@ Ext.define('PVE.form.CacheTypeSelector', {
 	var me = this;
 
 	me.data = [
-	    ['', 'Default (No cache)'],
+	    ['', gettext('Default') + " (" + gettext('No cache') + ")"],
 	    ['directsync', 'Direct sync'],
 	    ['writethrough', 'Write through'],
 	    ['writeback', 'Write back'],
-	    ['unsafe', 'Write back (unsafe)'],
-	    ['none', 'No cache']
+	    ['unsafe', 'Write back (' + gettext('unsafe') + ')'],
+	    ['none', gettext('No cache')]
 	];
 
 	me.callParent();
diff --git a/www/manager/form/ControllerSelector.js b/www/manager/form/ControllerSelector.js
index 5c63c57..dfff96b 100644
--- a/www/manager/form/ControllerSelector.js
+++ b/www/manager/form/ControllerSelector.js
@@ -57,7 +57,7 @@ Ext.define('PVE.form.ControllerSelector', {
 	var me = this;
 
 	Ext.apply(me, {
-	    fieldLabel: 'Bus/Device',
+	    fieldLabel: gettext('Bus/Device'),
 	    layout: 'hbox',
 	    height: 22, // hack: set to same height as other fields
 	    defaults: {
@@ -108,4 +108,4 @@ Ext.define('PVE.form.ControllerSelector', {
 
 	me.callParent();
     }
-});   
\ No newline at end of file
+});
diff --git a/www/manager/form/DiskFormatSelector.js b/www/manager/form/DiskFormatSelector.js
index ce6c2d7..3e68c51 100644
--- a/www/manager/form/DiskFormatSelector.js
+++ b/www/manager/form/DiskFormatSelector.js
@@ -6,9 +6,9 @@ Ext.define('PVE.form.DiskFormatSelector', {
 	var me = this;
 
         me.data = [ 
-	    ['raw', 'Raw disk image (raw)'], 
-	    ['qcow2', 'QEMU image format (qcow2)'],
-	    ['vmdk', 'VMware image format (vmdk)']
+	    ['raw', gettext('Raw disk image') + ' (raw)')], 
+	    ['qcow2', gettext('QEMU image format') + ' (qcow2)'],
+	    ['vmdk', gettext('VMware image format') + ' (vmdk)']
 	];
 
 	me.callParent();
diff --git a/www/manager/form/FileSelector.js b/www/manager/form/FileSelector.js
index d0d7deb..50f9442 100644
--- a/www/manager/form/FileSelector.js
+++ b/www/manager/form/FileSelector.js
@@ -49,18 +49,18 @@ Ext.define('PVE.form.FileSelector', {
             listConfig: {
 		columns: [
 		    {
-			header: 'Name',
+			header: gettext('Name'),
 			dataIndex: 'text',
 			hideable: false,
 			flex: 1
 		    },
 		    {
-			header: 'Format',  
+			header: gettext('Format'),
 			width: 60, 
 			dataIndex: 'format'
 		    },
 		    {
-			header: 'Size',  
+			header: gettext('Size'),
 			width: 60, 
 			dataIndex: 'size', 
 			renderer: PVE.Utils.format_size 
@@ -73,4 +73,4 @@ Ext.define('PVE.form.FileSelector', {
 
 	me.setStorage(me.storage, me.nodename);
     }
-});
\ No newline at end of file
+});
diff --git a/www/manager/form/GroupSelector.js b/www/manager/form/GroupSelector.js
index 89830de..f4e4b63 100644
--- a/www/manager/form/GroupSelector.js
+++ b/www/manager/form/GroupSelector.js
@@ -26,7 +26,7 @@ Ext.define('PVE.form.GroupSelector', {
 		    },
 		    {
 			id: 'comment',
-			header: 'Comment',
+			header: gettext('Comment'),
 			sortable: false,
 			dataIndex: 'comment',
 			flex: 1
diff --git a/www/manager/form/NetworkCardSelector.js b/www/manager/form/NetworkCardSelector.js
index 1ed36e0..ef9ba07 100644
--- a/www/manager/form/NetworkCardSelector.js
+++ b/www/manager/form/NetworkCardSelector.js
@@ -7,7 +7,7 @@ Ext.define('PVE.form.NetworkCardSelector', {
 
         me.data = [ 
 	    ['e1000', 'Intel E1000'],
-	    ['virtio', 'VirtIO (paravirtualized)'],
+	    ['virtio', 'VirtIO (' + gettext('paravirtualized') + ')'],
 	    ['rtl8139', 'Realtec RTL8139']
 	];
  
diff --git a/www/manager/form/NodeSelector.js b/www/manager/form/NodeSelector.js
index f943f3b..bb152ad 100644
--- a/www/manager/form/NodeSelector.js
+++ b/www/manager/form/NodeSelector.js
@@ -40,21 +40,21 @@ Ext.define('PVE.form.NodeSelector', {
             listConfig: {
 		columns: [
 		    {
-			header: 'Node',
+			header: gettext('Node'),
 			dataIndex: 'node',
 			sortable: true,
 			hideable: false,
 			flex: 1
 		    },
 		    {
-			header: 'Memory usage',			
+			header: gettext('Memory usage'),			
 			renderer: PVE.Utils.render_mem_usage,
 			sortable: true,
 			width: 100,
 			dataIndex: 'mem'
 		    },
 		    {
-			header: 'CPU usage',
+			header: gettext('CPU usage'),
 			renderer: PVE.Utils.render_cpu,
 			sortable: true,
 			width: 100,
diff --git a/www/manager/form/PoolSelector.js b/www/manager/form/PoolSelector.js
index 267ffd3..a607589 100644
--- a/www/manager/form/PoolSelector.js
+++ b/www/manager/form/PoolSelector.js
@@ -26,7 +26,7 @@ Ext.define('PVE.form.PoolSelector', {
 		    },
 		    {
 			id: 'comment',
-			header: 'Comment',
+			header: gettext('Comment'),
 			sortable: false,
 			dataIndex: 'comment',
 			flex: 1
diff --git a/www/manager/form/RealmComboBox.js b/www/manager/form/RealmComboBox.js
index 8b165d5..a18afaa 100644
--- a/www/manager/form/RealmComboBox.js
+++ b/www/manager/form/RealmComboBox.js
@@ -13,7 +13,7 @@ Ext.define('PVE.form.RealmComboBox', {
 	});
 
 	Ext.apply(me, {
-	    fieldLabel: 'Realm',
+	    fieldLabel: gettext('Realm'),
 	    name: 'realm',
 	    store: realmstore,
 	    queryMode: 'local',
@@ -58,4 +58,4 @@ Ext.define('PVE.form.RealmComboBox', {
 	    }
 	});
     }
-});
\ No newline at end of file
+});
diff --git a/www/manager/form/SnapshotSelector.js b/www/manager/form/SnapshotSelector.js
index 8dfd33c..074e405 100644
--- a/www/manager/form/SnapshotSelector.js
+++ b/www/manager/form/SnapshotSelector.js
@@ -48,7 +48,7 @@ Ext.define('PVE.form.SnapshotSelector', {
             listConfig: {
 		columns: [
 		    {
-			header: 'Snapshot',
+			header: gettext('Snapshot'),
 			dataIndex: 'name',
 			hideable: false,
 			flex: 1
diff --git a/www/manager/form/StorageSelector.js b/www/manager/form/StorageSelector.js
index 922657d..28b60ef 100644
--- a/www/manager/form/StorageSelector.js
+++ b/www/manager/form/StorageSelector.js
@@ -73,24 +73,24 @@ Ext.define('PVE.form.StorageSelector', {
             listConfig: {
 		columns: [
 		    {
-			header: 'Name',
+			header: gettext('Name'),
 			dataIndex: 'storage',
 			hideable: false,
 			flex: 1
 		    },
 		    {
-			header: 'Type',  
+			header: gettext('Type'),
 			width: 60, 
 			dataIndex: 'type'
 		    },
 		    {
-			header: 'Avail',  
+			header: gettext('Avail'),
 			width: 80, 
 			dataIndex: 'avail', 
 			renderer: PVE.Utils.format_size 
 		    },
 		    {
-			header: 'Capacity',  
+			header: gettext('Capacity'),
 			width: 80, 
 			dataIndex: 'total', 
 			renderer: PVE.Utils.format_size 
diff --git a/www/manager/form/UserSelector.js b/www/manager/form/UserSelector.js
index dd244c7..3ba4d1b 100644
--- a/www/manager/form/UserSelector.js
+++ b/www/manager/form/UserSelector.js
@@ -31,7 +31,7 @@ Ext.define('PVE.form.UserSelector', {
 			flex: 1
 		    },
 		    {
-			header: 'Name',
+			header: gettext('Name'),
 			sortable: true,
 			renderer: render_full_name,
 			dataIndex: 'firstname',
@@ -39,7 +39,7 @@ Ext.define('PVE.form.UserSelector', {
 		    },
 		    {
 			id: 'comment',
-			header: 'Comment',
+			header: gettext('Comment'),
 			sortable: false,
 			dataIndex: 'comment',
 			flex: 1
diff --git a/www/manager/form/VMIDSelector.js b/www/manager/form/VMIDSelector.js
index e2de229..92a1781 100644
--- a/www/manager/form/VMIDSelector.js
+++ b/www/manager/form/VMIDSelector.js
@@ -28,12 +28,12 @@ Ext.define('PVE.form.VMIDSelector', {
 			method: 'GET',
 			success: function(response, opts) {
 			    if (me.validateExists === true) {
-				me.markInvalid("This VM ID does not exists.");
+				me.markInvalid(gettext('This VM ID does not exists'));
 			    }
 			},
 			failure: function(response, opts) {
 			    if (me.validateExists === false) {
-				me.markInvalid("This VM ID is already in use.");
+				me.markInvalid(gettext('This VM ID is already in use'));
 			    }
 			}
 		    });
diff --git a/www/manager/grid/ObjectGrid.js b/www/manager/grid/ObjectGrid.js
index 96962bd..cd135a1 100644
--- a/www/manager/grid/ObjectGrid.js
+++ b/www/manager/grid/ObjectGrid.js
@@ -90,14 +90,14 @@ Ext.define('PVE.grid.ObjectGrid', {
 	    stateful: false,
 	    columns: [
 		{
-		    header: 'Name',
+		    header: gettext('Name'),
 		    width: me.cwidth1 || 100,
 		    dataIndex: 'key',
 		    renderer: me.renderKey
 		},
 		{
 		    flex: 1,
-		    header: 'Value',
+		    header: gettext('Value'),
 		    dataIndex: 'value',
 		    renderer: me.renderValue
 		}
diff --git a/www/manager/node/APT.js b/www/manager/node/APT.js
index 172519d..242c725 100644
--- a/www/manager/node/APT.js
+++ b/www/manager/node/APT.js
@@ -55,7 +55,7 @@ Ext.define('PVE.node.APT', {
 		url: "/nodes/" + nodename + "/apt/" + cmd,
 		method: 'POST',
 		failure: function(response, opts) {
-		    Ext.Msg.alert('Error', response.htmlStatus);
+		    Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 		},
 		success: function(response, opts) {
 		    var upid = response.result.data;
@@ -129,7 +129,7 @@ Ext.define('PVE.node.APT', {
 		method: 'GET',
 		failure: function(response, opts) {
 		    win.close();
-		    Ext.Msg.alert('Error', response.htmlStatus);
+		    Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 		},
 		success: function(response, opts) {
 		    win.show();
diff --git a/www/manager/node/Config.js b/www/manager/node/Config.js
index 8051f9b..d80c725 100644
--- a/www/manager/node/Config.js
+++ b/www/manager/node/Config.js
@@ -24,7 +24,7 @@ Ext.define('PVE.node.Config', {
 		method: 'POST',
 		waitMsgTarget: me,
 		failure: function(response, opts) {
-		    Ext.Msg.alert('Error', response.htmlStatus);
+		    Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 		}
 	    });
 	};
@@ -88,7 +88,7 @@ Ext.define('PVE.node.Config', {
 		    xtype: 'pveNodeNetworkView'
 		},
 		{
-		    title: 'DNS',
+		    title: gettext('DNS'),
 		    itemId: 'dns',
 		    xtype: 'pveNodeDNSView'
 		},
@@ -121,7 +121,7 @@ Ext.define('PVE.node.Config', {
 
 	me.items.push([
 	    {
-		title: 'Task History',
+		title: gettext('Task History'),
 		itemId: 'tasks',
 		xtype: 'pveNodeTasks'
 	    }
@@ -140,7 +140,7 @@ Ext.define('PVE.node.Config', {
 	
 	me.items.push([
 	    {
-		title: 'Subscription',
+		title: gettext('Subscription'),
 		itemId: 'support',
 		xtype: 'pveNodeSubscription',
 		nodename: nodename
diff --git a/www/manager/node/DNSEdit.js b/www/manager/node/DNSEdit.js
index d402ef5..2fd5027 100644
--- a/www/manager/node/DNSEdit.js
+++ b/www/manager/node/DNSEdit.js
@@ -13,7 +13,7 @@ Ext.define('PVE.node.DNSEdit', {
 	me.items = [
 	    {
 		xtype: 'textfield',
-                fieldLabel: 'Search domain',
+                fieldLabel: gettext('Search domain'),
                 name: 'search',
                 allowBlank: false
 	    },
@@ -41,7 +41,7 @@ Ext.define('PVE.node.DNSEdit', {
 	];
 
 	Ext.applyIf(me, {
-	    subject: 'DNS',
+	    subject: gettext('DNS'),
 	    url: "/api2/extjs/nodes/" + nodename + "/dns",
 	    fieldDefaults: {
 		labelWidth: 120
diff --git a/www/manager/node/NetworkEdit.js b/www/manager/node/NetworkEdit.js
index 0c7a65a..374dcd6 100644
--- a/www/manager/node/NetworkEdit.js
+++ b/www/manager/node/NetworkEdit.js
@@ -33,7 +33,7 @@ Ext.define('PVE.node.NetworkEdit', {
 	var column2 = [
 	    {
 		xtype: 'pvecheckbox',
-		fieldLabel: 'Autostart',
+		fieldLabel: gettext('Autostart'),
 		name: 'autostart',
 		uncheckedValue: 0,
 		checked: me.create ? true : undefined
@@ -43,18 +43,18 @@ Ext.define('PVE.node.NetworkEdit', {
 	if (me.iftype === 'bridge') {
 	    column2.push({
 		xtype: 'textfield',
-		fieldLabel: 'Bridge ports',
+		fieldLabel: gettext('Bridge ports'),
 		name: 'bridge_ports'
 	    });	  
 	} else if (me.iftype === 'bond') {
 	    column2.push({
 		xtype: 'textfield',
-		fieldLabel: 'Slaves',
+		fieldLabel: gettext('Slaves'),
 		name: 'slaves'
 	    });
 	    column2.push({
 		xtype: 'bondModeSelector',
-		fieldLabel: 'Mode',
+		fieldLabel: gettext('Mode'),
 		name: 'bond_mode',
 		value: me.create ? 'balance-rr' : undefined,
 		allowBlank: false
@@ -117,7 +117,7 @@ Ext.define('PVE.node.NetworkEdit', {
 	    {
 		xtype: 'pvetextfield',
 		deleteEmpty: !me.create,
-		fieldLabel: 'Gateway',
+		fieldLabel: gettext('Gateway'),
 		vtype: 'IPAddress',
 		name: 'gateway'
 	    }
diff --git a/www/manager/node/NetworkView.js b/www/manager/node/NetworkView.js
index 07c527f..d8b0ddd 100644
--- a/www/manager/node/NetworkView.js
+++ b/www/manager/node/NetworkView.js
@@ -30,7 +30,7 @@ Ext.define('PVE.node.NetworkView', {
 	    PVE.Utils.API2Request({
 		url: '/nodes/' + nodename + '/network',
 		failure: function(response, opts) {
-		    changeitem.update('Error: ' + response.htmlStatus);
+		    changeitem.update(gettext('Error') + ': ' + response.htmlStatus);
 		    store.loadData({});
 		},
 		success: function(response, opts) {
@@ -89,7 +89,7 @@ Ext.define('PVE.node.NetworkView', {
 			reload();
 		    },
 		    failure: function(response, opts) {
-			Ext.Msg.alert('Error', response.htmlStatus);
+			Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 		    }
 		});
 	    }
@@ -206,7 +206,7 @@ Ext.define('PVE.node.NetworkView', {
 			},
 			{
 			    xtype: 'booleancolumn', 
-			    header: 'Autostart',
+			    header: gettext('Autostart'),
 			    width: 80,
 			    sortable: true,
 			    dataIndex: 'autostart',
@@ -215,7 +215,7 @@ Ext.define('PVE.node.NetworkView', {
 			    undefinedText: 'No'
 			},
 			{
-			    header: 'Ports/Slaves',
+			    header: gettext('Ports/Slaves'),
 			    dataIndex: 'type',
 			    renderer: render_ports
 			},
@@ -230,7 +230,7 @@ Ext.define('PVE.node.NetworkView', {
 			    dataIndex: 'netmask'
 			},
 			{
-			    header: 'Gateway',
+			    header: gettext('Gateway'),
 			    sortable: true,
 			    dataIndex: 'gateway'
 			}
@@ -275,4 +275,4 @@ Ext.define('PVE.node.NetworkView', {
     });
 
 });
-    
\ No newline at end of file
+    
diff --git a/www/manager/node/ServiceView.js b/www/manager/node/ServiceView.js
index b7f7eab..e091a5b 100644
--- a/www/manager/node/ServiceView.js
+++ b/www/manager/node/ServiceView.js
@@ -30,7 +30,7 @@ Ext.define('PVE.node.ServiceView', {
 		url: "/nodes/" + nodename + "/services/" + rec.data.service + "/" + cmd,
 		method: 'POST',
 		failure: function(response, opts) {
-		    Ext.Msg.alert('Error', response.htmlStatus);
+		    Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 		    me.loading = true;
 		},
 		success: function(response, opts) {
diff --git a/www/manager/node/StatusView.js b/www/manager/node/StatusView.js
index 666f437..43f7a7a 100644
--- a/www/manager/node/StatusView.js
+++ b/www/manager/node/StatusView.js
@@ -13,7 +13,7 @@ Ext.define('PVE.node.StatusView', {
 	var render_cpuinfo = function(value) {
 	    return value.cpus + " x " + value.model + " (" + 
 		value.sockets.toString() + " " + 
-		(value.sockets > 1 ? "Sockets" : "Socket") + ")";
+		(value.sockets > 1 ? gettext('Sockets') : gettext('Socket')) + ")";
 	};
 
 	var render_loadavg = function(value) {
@@ -31,23 +31,23 @@ Ext.define('PVE.node.StatusView', {
 
 	var render_meminfo = function(value) {
 	    var per = (value.used / value.total)*100;
-	    var text = "<div>Total: " + PVE.Utils.format_size(value.total) + "</div>" + 
-		"<div>Used: " + PVE.Utils.format_size(value.used) + "</div>";
+	    var text = "<div>" + gettext('Total') + ": " + PVE.Utils.format_size(value.total) + "</div>" + 
+		"<div>" + gettext('Used') + ": " + PVE.Utils.format_size(value.used) + "</div>";
 	    return text;
 	};
 
 	var rows = {
-	    uptime: { header: 'Uptime', required: true, renderer: PVE.Utils.format_duration_long },
-	    loadavg: { header: 'Load average', required: true, renderer: render_loadavg },
-	    cpuinfo: { header: 'CPUs', required: true, renderer: render_cpuinfo },
-	    cpu: { header: 'CPU usage',required: true,  renderer: render_cpu },
-	    wait: { header: 'IO delay', required: true, renderer: render_cpu },
-	    memory: { header: 'RAM usage', required: true, renderer: render_meminfo },
-	    swap: { header: 'SWAP usage', required: true, renderer: render_meminfo },
-	    ksm: { header: 'KSM sharing', required: true, renderer: render_ksm },
-	    rootfs: { header: 'HD space (root)', required: true, renderer: render_meminfo },
-	    pveversion: { header: 'PVE Manager version', required: true },
-	    kversion: { header: 'Kernel version', required: true }
+	    uptime: { header: gettext('Uptime'), required: true, renderer: PVE.Utils.format_duration_long },
+	    loadavg: { header: gettext('Load average'), required: true, renderer: render_loadavg },
+	    cpuinfo: { header: gettext('CPUs'), required: true, renderer: render_cpuinfo },
+	    cpu: { header: gettext('CPU usage'),required: true,  renderer: render_cpu },
+	    wait: { header: gettext('IO delay'), required: true, renderer: render_cpu },
+	    memory: { header: gettext('RAM usage'), required: true, renderer: render_meminfo },
+	    swap: { header: gettext('SWAP usage'), required: true, renderer: render_meminfo },
+	    ksm: { header: gettext('KSM sharing'), required: true, renderer: render_ksm },
+	    rootfs: { header: gettext('HD space (root)'), required: true, renderer: render_meminfo },
+	    pveversion: { header: gettext('PVE Manager version'), required: true },
+	    kversion: { header: gettext('Kernel version'), required: true }
 	};
 
 	Ext.applyIf(me, {
diff --git a/www/manager/node/Subscription.js b/www/manager/node/Subscription.js
index 150af41..ff8c866 100644
--- a/www/manager/node/Subscription.js
+++ b/www/manager/node/Subscription.js
@@ -69,10 +69,10 @@ Ext.define('PVE.node.Subscription', {
 		header: gettext('Server ID')
 	    },
 	    sockets: {
-		header: 'Sockets'
+		header: gettext('Sockets')
 	    },
 	    checktime: {
-		header: 'Last checked',
+		header: gettext('Last checked'),
 		renderer: PVE.Utils.render_timestamp
 	    }	    
 	};
@@ -100,7 +100,7 @@ Ext.define('PVE.node.Subscription', {
 			    method: 'POST',
 			    waitMsgTarget: me,
 			    failure: function(response, opts) {
-				Ext.Msg.alert('Error', response.htmlStatus);
+				Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 			    },
 			    callback: reload
 			});
diff --git a/www/manager/node/Summary.js b/www/manager/node/Summary.js
index 2f4ede1..86b71cc 100644
--- a/www/manager/node/Summary.js
+++ b/www/manager/node/Summary.js
@@ -35,7 +35,7 @@ Ext.define('PVE.node.Summary', {
 	    method: 'GET',
 	    failure: function(response, opts) {
 		win.close();
-		Ext.Msg.alert('Error', response.htmlStatus);
+		Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 	    },
 	    success: function(response, opts) {
 		win.show();
@@ -78,7 +78,7 @@ Ext.define('PVE.node.Summary', {
 	var rstore = me.statusStore;
 
 	var statusview = Ext.create('PVE.node.StatusView', {
-	    title: 'Status',
+	    title: gettext('Status'),
 	    pveSelNode: me.pveSelNode,
 	    style: 'padding-top:0px',
 	    rstore: rstore
@@ -105,25 +105,25 @@ Ext.define('PVE.node.Summary', {
 		statusview,
 		{
 		    xtype: 'pveRRDView',
-		    title: "CPU usage %",
+		    title: gettext('CPU usage'),
 		    datasource: 'cpu,iowait',
 		    rrdurl: rrdurl
 		},
 		{
 		    xtype: 'pveRRDView',
-		    title: "Server load",
+		    title: gettext('Server load'),
 		    datasource: 'loadavg',
 		    rrdurl: rrdurl
 		},
 		{
 		    xtype: 'pveRRDView',
-		    title: "Memory usage",
+		    title: gettext('Memory usage'),
 		    datasource: 'memtotal,memused',
 		    rrdurl: rrdurl
 		},
 		{
 		    xtype: 'pveRRDView',
-		    title: "Network traffic",
+		    title: gettext('Network traffic'),
 		    datasource: 'netin,netout',
 		    rrdurl: rrdurl
 		}
diff --git a/www/manager/openvz/BeanCounterGrid.js b/www/manager/openvz/BeanCounterGrid.js
index a1baa37..bf07c12 100644
--- a/www/manager/openvz/BeanCounterGrid.js
+++ b/www/manager/openvz/BeanCounterGrid.js
@@ -49,36 +49,36 @@ Ext.define('PVE.openvz.BeanCounterGrid', {
 	    stateful: false,
 	    columns: [
 		{
-		    header: 'Ressource',
+		    header: gettext('Resource'),
 		    width: 100,
 		    dataIndex: 'id'
 		},
 		{
-		    header: 'held',
+		    header: gettext('Held'),
 		    width: 100,
 		    renderer: me.renderUbc,
 		    dataIndex: 'held'
 		},
 		{
-		    header: 'maxheld',
+		    header: gettext('Maxheld'),
 		    width: 100,
 		    renderer: me.renderUbc,
 		    dataIndex: 'maxheld'
 		},
 		{
-		    header: 'barrier',
+		    header: gettext('Barrier'),
 		    width: 100,
 		    renderer: me.renderUbc,
 		    dataIndex: 'bar'
 		},
 		{
-		    header: 'limit',
+		    header: gettext('Limit'),
 		    width: 100,
 		    renderer: me.renderUbc,
 		    dataIndex: 'lim'
 		},
 		{
-		    header: 'failcnt',
+		    header: gettext('Failcnt'),
 		    width: 100,
 		    dataIndex: 'failcnt'
 		}
diff --git a/www/manager/openvz/CmdMenu.js b/www/manager/openvz/CmdMenu.js
index 4bda16c..853a644 100644
--- a/www/manager/openvz/CmdMenu.js
+++ b/www/manager/openvz/CmdMenu.js
@@ -22,7 +22,7 @@ Ext.define('PVE.openvz.CmdMenu', {
 		url: '/nodes/' + nodename + '/openvz/' + vmid + "/status/" + cmd,
 		method: 'POST',
 		failure: function(response, opts) {
-		    Ext.Msg.alert('Error', response.htmlStatus);
+		    Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 		}
 	    });
 	};
diff --git a/www/manager/openvz/Config.js b/www/manager/openvz/Config.js
index 6aa1bb6..8c3581c 100644
--- a/www/manager/openvz/Config.js
+++ b/www/manager/openvz/Config.js
@@ -134,7 +134,7 @@ Ext.define('PVE.openvz.Config', {
 		    xtype: 'pveOpenVZNetworkView'
 		},
 		{
-		    title: 'DNS',
+		    title: gettext('DNS'),
 		    itemId: 'dns',
 		    xtype: 'pveOpenVZDNS'
 		},
@@ -144,7 +144,7 @@ Ext.define('PVE.openvz.Config', {
 		    xtype: 'pveOpenVZOptions'
 		},
 		{
-		    title: 'Task History',
+		    title: gettext('Task History'),
 		    itemId: 'tasks',
 		    xtype: 'pveNodeTasks',
 		    vmidFilter: vmid
diff --git a/www/manager/openvz/CreateWizard.js b/www/manager/openvz/CreateWizard.js
index c34a2e0..2ebdcbd 100644
--- a/www/manager/openvz/CreateWizard.js
+++ b/www/manager/openvz/CreateWizard.js
@@ -45,7 +45,7 @@ Ext.define('PVE.openvz.CreateWizard', {
 
 	var bridgesel = Ext.create('PVE.form.BridgeSelector', {
 	    name: 'bridge',
-	    fieldLabel: 'Bridge',
+	    fieldLabel: gettext('Bridge'),
 	    labelAlign: 'right',
 	    autoSelect: true,
 	    disabled: true,
@@ -86,7 +86,7 @@ Ext.define('PVE.openvz.CreateWizard', {
 			    name: 'hostname',
 			    vtype: 'DnsName',
 			    value: '',
-			    fieldLabel: 'Hostname',
+			    fieldLabel: gettext('Hostname'),
 			    skipEmptyText: true,
 			    allowBlank: true
 			}
@@ -183,7 +183,7 @@ Ext.define('PVE.openvz.CreateWizard', {
 			    xtype: 'radiofield',
 			    name: 'networkmode',
 			    inputValue: 'bridge',
-			    boxLabel: 'Bridged mode',
+			    boxLabel: gettext('Bridged mode'),
 			    checked: false,
 			    listeners: {
 				change: function(f, value) {
@@ -213,7 +213,7 @@ Ext.define('PVE.openvz.CreateWizard', {
 			    xtype: 'pvetextfield',
 			    name: 'searchdomain',
 			    skipEmptyText: true,
-			    fieldLabel: 'DNS domain',
+			    fieldLabel: gettext('DNS domain'),
 			    emptyText: 'use host settings',
 			    allowBlank: true,
 			    listeners: {
diff --git a/www/manager/openvz/DNS.js b/www/manager/openvz/DNS.js
index f6d1152..de6b4ac 100644
--- a/www/manager/openvz/DNS.js
+++ b/www/manager/openvz/DNS.js
@@ -23,31 +23,31 @@ Ext.define('PVE.openvz.DNS', {
 	    hostname: {
 		required: true,
 		defaultValue: me.pveSelNode.data.name,
-		header: 'Hostname',
+		header: gettext('Hostname'),
 		editor: caps.vms['VM.Config.Network'] ? {
 		    xtype: 'pveWindowEdit',
-		    subject: 'Hostname',
+		    subject: gettext('Hostname'),
 		    items: {
 			xtype: 'textfield',
 			name: 'hostname',
 			vtype: 'DnsName',
 			value: '',
-			fieldLabel: 'Hostname',
+			fieldLabel: gettext('Hostname'),
 			allowBlank: true,
 			emptyText: me.pveSelNode.data.name
 		    }
 		} : undefined
 	    },
 	    searchdomain: {
-		header: 'DNS domain',
+		header: gettext('DNS domain'),
 		defaultValue: '',
 		editor: caps.vms['VM.Config.Network'] ? {
 		    xtype: 'pveWindowEdit',
-		    subject: 'DNS domain',
+		    subject: gettext('DNS domain'),
 		    items: {
 			xtype: 'pvetextfield',
 			name: 'searchdomain',
-			fieldLabel: 'DNS domain',
+			fieldLabel: gettext('DNS domain'),
 			allowBlank: false
 		    }
 		} : undefined
diff --git a/www/manager/openvz/Network.js b/www/manager/openvz/Network.js
index db13688..6d03d01 100644
--- a/www/manager/openvz/Network.js
+++ b/www/manager/openvz/Network.js
@@ -68,7 +68,7 @@ Ext.define('PVE.OpenVZ.NetIfEdit', {
 		{
 		    xtype: 'textfield',
 		    name: 'mac',
-		    fieldLabel: 'MAC',
+		    fieldLabel: gettext('MAC address'),
 		    vtype: 'MacAddress',
 		    value: cdata.mac,
 		    allowBlank: me.create,
@@ -78,14 +78,14 @@ Ext.define('PVE.OpenVZ.NetIfEdit', {
 		    xtype: 'PVE.form.BridgeSelector',
 		    name: 'bridge',
 		    nodename: me.nodename,
-		    fieldLabel: 'Bridge',
+		    fieldLabel: gettext('Bridge'),
 		    value: cdata.bridge,
 		    allowBlank: false
 		},
 		{
 		    xtype: 'textfield',
 		    name: 'host_ifname',
-		    fieldLabel: 'Host device name',
+		    fieldLabel: gettext('Host device name'),
 		    value: cdata.host_ifname,
 		    allowBlank: true,
 		    emptyText: 'auto'
@@ -93,7 +93,7 @@ Ext.define('PVE.OpenVZ.NetIfEdit', {
 		{
 		    xtype: 'textfield',
 		    name: 'host_mac',
-		    fieldLabel: 'Host MAC address',
+		    fieldLabel: gettext('Host MAC address'),
 		    vtype: 'MacAddress',
 		    value: cdata.host_mac,
 		    allowBlank: true,
@@ -395,22 +395,22 @@ Ext.define('PVE.openvz.NetworkView', {
 		    renderer: me.renderValue
 		},
 		{
-		    header: 'Bridge',
+		    header: gettext('Bridge'),
 		    width: 110,
 		    dataIndex: 'bridge'
 		},
 		{
-		    header: 'MAC',
+		    header: gettext('MAC address'),
 		    width: 110,
 		    dataIndex: 'mac'
 		},
 		{
-		    header: 'Host ifname',
+		    header: gettext('Host ifname'),
 		    width: 110,
 		    dataIndex: 'host_ifname'
 		},
 		{
-		    header: 'Host MAC',
+		    header: gettext('Host MAC address'),
 		    width: 110,
 		    dataIndex: 'host_mac'
 		}
diff --git a/www/manager/openvz/Options.js b/www/manager/openvz/Options.js
index 64c5829..d1039cc 100644
--- a/www/manager/openvz/Options.js
+++ b/www/manager/openvz/Options.js
@@ -45,15 +45,15 @@ Ext.define('PVE.openvz.Options', {
 		defaultValue: 'no set'
 	    },
 	    cpuunits: {
-		header: 'CPU units',
+		header: gettext('CPU units'),
 		defaultValue: '1000',
 		editor: caps.vms['VM.Config.CPU'] ? {
 		    xtype: 'pveWindowEdit',
-		    subject: 'CPU units',
+		    subject: gettext('CPU units'),
 		    items: {
 			xtype: 'numberfield',
 			name: 'cpuunits',
-			fieldLabel: 'CPU units',
+			fieldLabel: gettext('CPU units'),
 			minValue: 8,
 			maxValue: 500000,
 			allowBlank: false
@@ -61,7 +61,7 @@ Ext.define('PVE.openvz.Options', {
 		} : undefined
 	    },
 	    quotaugidlimit: {
-		header: 'Quota UGID limit',
+		header: gettext('Quota UGID limit'),
 		defaultValue: '0',
 		renderer: function(value) {
 		    if (value == 0) {
@@ -71,22 +71,22 @@ Ext.define('PVE.openvz.Options', {
 		},
 		editor: caps.vms['VM.Config.Disk'] ? {
 		    xtype: 'pveWindowEdit',
-		    subject: 'Quota UGID limit (0 to disable user quotas)',
+		    subject: gettext('Quota UGID limit (0 to disable user quotas)'),
 		    items: {
 			xtype: 'numberfield',
 			name: 'quotaugidlimit',
-			fieldLabel: 'UGID limit',
+			fieldLabel: gettext('UGID limit'),
 			minValue: 0,
 			allowBlank: false
 		    }
 		} : undefined
 	    },
 	    quotatime: {
-		header: 'Quota Grace period',
+		header: gettext('Quota Grace period'),
 		defaultValue: '0',
 		editor: caps.vms['VM.Config.Disk'] ? {
 		    xtype: 'pveWindowEdit',
-		    subject: 'Quota Grace period (seconds)',
+		    subject: gettext('Quota Grace period (seconds)'),
 		    items: {
 			xtype: 'numberfield',
 			name: 'quotatime',
diff --git a/www/manager/openvz/RessourceEdit.js b/www/manager/openvz/RessourceEdit.js
index 4d3321d..c2e2d50 100644
--- a/www/manager/openvz/RessourceEdit.js
+++ b/www/manager/openvz/RessourceEdit.js
@@ -53,7 +53,7 @@ Ext.define('PVE.openvz.RessourceInputPanel', {
 		minValue: 1,
 		value: '1',
 		step: 1,
-		fieldLabel: 'CPUs',
+		fieldLabel: gettext('CPUs'),
 		labelWidth: labelWidth,
 		allowBlank: false
 	    }
@@ -78,4 +78,4 @@ Ext.define('PVE.openvz.RessourceEdit', {
 
 	me.load();
     }
-});
\ No newline at end of file
+});
diff --git a/www/manager/openvz/StatusView.js b/www/manager/openvz/StatusView.js
index 3a5029f..d2f79a0 100644
--- a/www/manager/openvz/StatusView.js
+++ b/www/manager/openvz/StatusView.js
@@ -33,16 +33,16 @@ Ext.define('PVE.openvz.StatusView', {
 	var render_mem = function(value, metaData, record, rowIndex, colIndex, store) {
 	    var maxmem = me.getObjectValue('maxmem', 0);
 	    var per = (value / maxmem)*100;
-	    var text = "<div>Total: " + PVE.Utils.format_size(maxmem) + "</div>" + 
-		"<div>Used: " + PVE.Utils.format_size(value) + "</div>";
+	    var text = "<div>" + gettext('Total') + ": " + PVE.Utils.format_size(maxmem) + "</div>" + 
+		"<div>" + gettext('Used') + ": " + PVE.Utils.format_size(value) + "</div>";
 	    return text;
 	};
 
 	var render_swap = function(value, metaData, record, rowIndex, colIndex, store) {
 	    var maxswap = me.getObjectValue('maxswap', 0);
 	    var per = (value / maxswap)*100;
-	    var text = "<div>Total: " + PVE.Utils.format_size(maxswap) + "</div>" + 
-		"<div>Used: " + PVE.Utils.format_size(value) + "</div>";
+	    var text = "<div>" + gettext('Total') + ": " + PVE.Utils.format_size(maxswap) + "</div>" + 
+		"<div>" + gettext('Used') + ": " + PVE.Utils.format_size(value) + "</div>";
 	    return text;
 	};
 
@@ -58,14 +58,14 @@ Ext.define('PVE.openvz.StatusView', {
 	    name: { header: gettext('Name'), defaultValue: 'no name specified' },
 	    status: { header: gettext('Status'), defaultValue: 'unknown', renderer: render_status },
 	    failcnt: { visible: false },
-	    cpu: { header: 'CPU usage', required: true,  renderer: render_cpu },
+	    cpu: { header: gettext('CPU usage'), required: true,  renderer: render_cpu },
 	    cpus: { visible: false },
-	    mem: { header: 'Memory usage', required: true,  renderer: render_mem },
+	    mem: { header: gettext('Memory usage'), required: true,  renderer: render_mem },
 	    maxmem: { visible: false },
-	    swap: { header: 'VSwap usage', required: true,  renderer: render_swap },
+	    swap: { header: gettext('VSwap usage'), required: true,  renderer: render_swap },
 	    maxswap: { visible: false },
 	    uptime: { header: gettext('Uptime'), required: true, renderer: PVE.Utils.render_uptime },
-	    ha: { header: 'Managed by HA', required: true, renderer: PVE.Utils.format_boolean }
+	    ha: { header: gettext('Managed by HA'), required: true, renderer: PVE.Utils.format_boolean }
 	};
 
 	Ext.applyIf(me, {
diff --git a/www/manager/openvz/Summary.js b/www/manager/openvz/Summary.js
index 692e8a3..19ebd34 100644
--- a/www/manager/openvz/Summary.js
+++ b/www/manager/openvz/Summary.js
@@ -26,7 +26,7 @@ Ext.define('PVE.openvz.Summary', {
 	var rstore = me.statusStore;
 
 	var statusview = Ext.create('PVE.openvz.StatusView', {
-	    title: 'Status',
+	    title: gettext('Status'),
 	    pveSelNode: me.pveSelNode,
 	    width: 400,
 	    rstore: rstore
@@ -64,28 +64,28 @@ Ext.define('PVE.openvz.Summary', {
 		},
 		{
 		    xtype: 'pveRRDView',
-		    title: "CPU usage %",
+		    title: gettext('CPU usage %'),
 		    pveSelNode: me.pveSelNode,
 		    datasource: 'cpu',
 		    rrdurl: rrdurl
 		},
 		{
 		    xtype: 'pveRRDView',
-		    title: "Memory usage",
+		    title: gettext('Memory usage'),
 		    pveSelNode: me.pveSelNode,
 		    datasource: 'mem,maxmem',
 		    rrdurl: rrdurl
 		},
 		{
 		    xtype: 'pveRRDView',
-		    title: "Network traffic",
+		    title: gettext('Network traffic'),
 		    pveSelNode: me.pveSelNode,
 		    datasource: 'netin,netout',
 		    rrdurl: rrdurl
 		},
 		{
 		    xtype: 'pveRRDView',
-		    title: "Disk IO",
+		    title: gettext('Disk IO'),
 		    pveSelNode: me.pveSelNode,
 		    datasource: 'diskread,diskwrite',
 		    rrdurl: rrdurl
diff --git a/www/manager/panel/NotesView.js b/www/manager/panel/NotesView.js
index be77316..077a50e 100644
--- a/www/manager/panel/NotesView.js
+++ b/www/manager/panel/NotesView.js
@@ -8,7 +8,7 @@ Ext.define('PVE.panel.NotesView', {
 	    url: me.url,
 	    waitMsgTarget: me,
 	    failure: function(response, opts) {
-		me.update("Error " + response.htmlStatus);
+		me.update(gettext('Error') + " " + response.htmlStatus);
 	    },
 	    success: function(response, opts) {
 		var data = response.result.data.description || '';
diff --git a/www/manager/qemu/CDEdit.js b/www/manager/qemu/CDEdit.js
index 1590028..42e189c 100644
--- a/www/manager/qemu/CDEdit.js
+++ b/www/manager/qemu/CDEdit.js
@@ -82,7 +82,7 @@ Ext.define('PVE.qemu.CDInputPanel', {
 	    xtype: 'radiofield',
 	    name: 'mediaType',
 	    inputValue: 'iso',
-	    boxLabel: 'Use CD/DVD disc image file (iso)',
+	    boxLabel: gettext('Use CD/DVD disc image file (iso)'),
 	    checked: true,
 	    listeners: {
 		change: function(f, value) {
@@ -100,7 +100,7 @@ Ext.define('PVE.qemu.CDInputPanel', {
 	    name: 'cdimage',
 	    nodename: me.nodename,
 	    storageContent: 'iso',
-	    fieldLabel: 'ISO Image',
+	    fieldLabel: gettext('ISO Image'),
 	    labelAlign: 'right',
 	    allowBlank: false
 	});
@@ -127,7 +127,7 @@ Ext.define('PVE.qemu.CDInputPanel', {
 	    xtype: 'radiofield',
 	    name: 'mediaType',
 	    inputValue: 'cdrom',
-	    boxLabel: 'Use physical CD/DVD Drive'
+	    boxLabel: gettext('Use physical CD/DVD Drive')
 	});
 
 	items.push({
diff --git a/www/manager/qemu/Clone.js b/www/manager/qemu/Clone.js
index 337bdc4..efd91ce 100644
--- a/www/manager/qemu/Clone.js
+++ b/www/manager/qemu/Clone.js
@@ -129,7 +129,7 @@ Ext.define('PVE.window.Clone', {
 
 	me.targetSel = Ext.create('PVE.form.NodeSelector', {
 	    name: 'target',
-	    fieldLabel: 'Target node',
+	    fieldLabel: gettext('Target node'),
 	    selectCurNode: true,
 	    allowBlank: false,
 	    onlineValidator: true
@@ -143,7 +143,7 @@ Ext.define('PVE.window.Clone', {
 	}
 
         me.kv1 = Ext.create('PVE.form.KVComboBox', {
-            fieldLabel: 'Clone Mode',
+            fieldLabel: gettext('Clone Mode'),
             name: 'clonemode',
             allowBlank: false,
 	    value: me.isTemplate ? 'clone' : 'copy',
@@ -159,7 +159,7 @@ Ext.define('PVE.window.Clone', {
 
 	me.snapshotSel = Ext.create('PVE.form.SnapshotSelector', {
 	    name: 'snapname',
-	    fieldLabel: 'Snapshot',
+	    fieldLabel: gettext('Snapshot'),
             nodename: me.nodename,
             vmid: me.vmid,
 	    hidden: me.isTemplate ? true : false,
@@ -194,7 +194,7 @@ Ext.define('PVE.window.Clone', {
         me.hdstoragesel = Ext.create('PVE.form.StorageSelector', {
                 name: 'storage',
                 nodename: me.nodename,
-                fieldLabel: 'Target Storage',
+                fieldLabel: gettext('Target Storage'),
                 storageContent: 'images',
                 autoSelect: me.insideWizard,
                 allowBlank: true,
diff --git a/www/manager/qemu/Config.js b/www/manager/qemu/Config.js
index a5068a7..e340609 100644
--- a/www/manager/qemu/Config.js
+++ b/www/manager/qemu/Config.js
@@ -160,7 +160,7 @@ Ext.define('PVE.qemu.Config', {
 		    xtype: 'PVE.qemu.Options'
 		},
 		{
-		    title: 'Task History',
+		    title: gettext('Task History'),
 		    itemId: 'tasks',
 		    xtype: 'pveNodeTasks',
 		    vmidFilter: vmid
diff --git a/www/manager/qemu/CreateWizard.js b/www/manager/qemu/CreateWizard.js
index dd0d58e..e7068e4 100644
--- a/www/manager/qemu/CreateWizard.js
+++ b/www/manager/qemu/CreateWizard.js
@@ -17,7 +17,7 @@ Ext.define('PVE.qemu.CreateWizard', {
 	});
 
 	var cdpanel = Ext.create('PVE.qemu.CDInputPanel', {
-	    title: 'CD/DVD',
+	    title: gettext('CD/DVD'),
 	    confid: 'ide2',
 	    fieldDefaults: {
 		labelWidth: 160
@@ -94,14 +94,14 @@ Ext.define('PVE.qemu.CreateWizard', {
 		    }
 		},
 		{
-		    title: 'OS',
+		    title: gettext('OS'),
 		    xtype: 'PVE.qemu.OSTypeInputPanel'
 		},
 		cdpanel,
 		hdpanel,
 		{
 		    xtype: 'PVE.qemu.ProcessorInputPanel',
-		    title: 'CPU'
+		    title: gettext('CPU')
 		},
 		{
 		    xtype: 'PVE.qemu.MemoryInputPanel',
diff --git a/www/manager/qemu/HDEdit.js b/www/manager/qemu/HDEdit.js
index 66a823c..311b67e 100644
--- a/www/manager/qemu/HDEdit.js
+++ b/www/manager/qemu/HDEdit.js
@@ -229,7 +229,7 @@ Ext.define('PVE.qemu.HDInputPanel', {
 	    xtype: 'CacheTypeSelector',
 	    name: 'cache',
 	    value: '',
-	    fieldLabel: 'Cache'
+	    fieldLabel: gettext('Cache')
 	});
 
 	if (!me.insideWizard) {
@@ -330,7 +330,7 @@ Ext.define('PVE.qemu.HDEdit', {
 		    var value = response.result.data[me.confid];
 		    var drive = PVE.Parser.parseQemuDrive(me.confid, value);
 		    if (!drive) {
-			Ext.Msg.alert('Error', 'Unable to parse drive options');
+			Ext.Msg.alert(gettext('Error'), gettext('Unable to parse drive options'));
 			me.close();
 			return;
 		    }
diff --git a/www/manager/qemu/HDMove.js b/www/manager/qemu/HDMove.js
index 2951cc9..d4baf22 100644
--- a/www/manager/qemu/HDMove.js
+++ b/www/manager/qemu/HDMove.js
@@ -53,7 +53,7 @@ Ext.define('PVE.window.HDMove', {
                 xtype: 'displayfield',
                 name: 'disk',
                 value: me.disk,
-                fieldLabel: 'Disk',
+                fieldLabel: gettext('Disk'),
                 vtype: 'StorageId',
                 allowBlank: false
             }
@@ -62,7 +62,7 @@ Ext.define('PVE.window.HDMove', {
         me.hdstoragesel = Ext.create('PVE.form.StorageSelector', {
                 name: 'hdstorage',
                 nodename: me.nodename,
-                fieldLabel: 'Target Storage',
+                fieldLabel: gettext('Target Storage'),
                 storageContent: 'images',
                 autoSelect: me.insideWizard,
                 allowBlank: true,
diff --git a/www/manager/qemu/HDResize.js b/www/manager/qemu/HDResize.js
index a018089..70ec6bd 100644
--- a/www/manager/qemu/HDResize.js
+++ b/www/manager/qemu/HDResize.js
@@ -13,7 +13,7 @@ Ext.define('PVE.window.HDResize', {
 	    waitMsgTarget: me,
 	    method: 'PUT',
 	    failure: function(response, opts) {
-		Ext.Msg.alert('Error', response.htmlStatus);
+		Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 	    },
 	    success: function(response, options) {
 		me.close();
@@ -37,7 +37,7 @@ Ext.define('PVE.window.HDResize', {
 		xtype: 'displayfield',
 		name: 'disk',
 		value: me.disk,
-		fieldLabel: 'Disk',
+		fieldLabel: gettext('Disk'),
 		vtype: 'StorageId',
 		allowBlank: false
 	    }
diff --git a/www/manager/qemu/NetworkEdit.js b/www/manager/qemu/NetworkEdit.js
index 1405680..df1edf2 100644
--- a/www/manager/qemu/NetworkEdit.js
+++ b/www/manager/qemu/NetworkEdit.js
@@ -61,7 +61,7 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
 
 	me.bridgesel = Ext.create('PVE.form.BridgeSelector', {
 	    name: 'bridge',
-	    fieldLabel: 'Bridge',
+	    fieldLabel: gettext('Bridge'),
 	    nodename: me.nodename,
 	    labelAlign: 'right',
 	    autoSelect: true,
@@ -74,7 +74,7 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
 		name: 'networkmode',
 		height: 22, // hack: set same height as text fields
 		inputValue: 'bridge',
-		boxLabel: 'Bridged mode',
+		boxLabel: gettext('Bridged mode'),
 		checked: true,
 		listeners: {
 		    change: function(f, value) {
@@ -95,7 +95,7 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
 		maxValue: 4094,
 		value: '',
 		emptyText: 'no VLAN',
-		fieldLabel: 'VLAN Tag',
+		fieldLabel: gettext('VLAN Tag'),
 		labelAlign: 'right',
 		allowBlank: true
 	    },
@@ -104,7 +104,7 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
 		name: 'networkmode',
 		height: 22, // hack: set same height as text fields
 		inputValue: 'nat',
-		boxLabel: 'NAT mode'
+		boxLabel: gettext('NAT mode')
 	    }
 	];
 
@@ -114,7 +114,7 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
 		name: 'networkmode',
 		height: 22, // hack: set same height as text fields
 		inputValue: 'none',
-		boxLabel: 'No network device'
+		boxLabel: gettext('No network device')
 	    });
 	}
 
@@ -122,14 +122,14 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
 	    {
 		xtype: 'PVE.form.NetworkCardSelector',
 		name: 'model',
-		fieldLabel: 'Model',
+		fieldLabel: gettext('Model'),
 		value: 'e1000',
 		allowBlank: false
 	    },
 	    {
 		xtype: 'textfield',
 		name: 'macaddr',
-		fieldLabel: 'MAC address',
+		fieldLabel: gettext('MAC address'),
 		vtype: 'MacAddress',
 		allowBlank: true,
 		emptyText: 'auto'
@@ -137,7 +137,7 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
 	    {
 		xtype: 'numberfield',
 		name: 'rate',
-		fieldLabel: 'Rate limit (MB/s)',
+		fieldLabel: gettext('Rate limit (MB/s)'),
 		minValue: 0,
 		maxValue: 10*1024,
 		value: '',
@@ -187,7 +187,7 @@ Ext.define('PVE.qemu.NetworkEdit', {
 		    var value = me.vmconfig[me.confid];
 		    var network = PVE.Parser.parseQemuNetwork(me.confid, value);
 		    if (!network) {
-			Ext.Msg.alert('Error', 'Unable to parse network options');
+			Ext.Msg.alert(gettext('Error'), gettext('Unable to parse network options'));
 			me.close();
 			return;
 		    }
diff --git a/www/manager/qemu/OSTypeEdit.js b/www/manager/qemu/OSTypeEdit.js
index d29ea1e..4150d6f 100644
--- a/www/manager/qemu/OSTypeEdit.js
+++ b/www/manager/qemu/OSTypeEdit.js
@@ -41,7 +41,7 @@ Ext.define('PVE.qemu.OSTypeInputPanel', {
 	me.column2 = [
 	    {
 		xtype: 'component', 
-		html: 'Linux/Other', 
+		html: 'Linux/' + gettext('Other'), 
 		cls:'x-form-check-group-label'
 	    },
 	    {
diff --git a/www/manager/qemu/Options.js b/www/manager/qemu/Options.js
index 197d11a..4132ecc 100644
--- a/www/manager/qemu/Options.js
+++ b/www/manager/qemu/Options.js
@@ -62,7 +62,7 @@ Ext.define('PVE.qemu.Options', {
 		    'PVE.qemu.StartupEdit' : undefined
 	    },
 	    ostype: {
-		header: 'OS Type',
+		header: gettext('OS Type'),
 		editor: caps.vms['VM.Config.Options'] ? 'PVE.qemu.OSTypeEdit' : undefined,
 		renderer: PVE.Utils.render_kvm_ostype,
 		defaultValue: 'other'
@@ -104,12 +104,12 @@ Ext.define('PVE.qemu.Options', {
 		}
 	    },
 	    tablet: {
-		header: 'Use tablet for pointer',
+		header: gettext('Use tablet for pointer'),
 		defaultValue: true,
 		renderer: PVE.Utils.format_boolean,
 		editor: caps.vms['VM.Config.HWType'] ? {
 		    xtype: 'pveWindowEdit',
-		    subject: 'Use tablet for pointer',
+		    subject: gettext('Use tablet for pointer'),
 		    items: {
 			xtype: 'pvecheckbox',
 			name: 'tablet',
@@ -122,12 +122,12 @@ Ext.define('PVE.qemu.Options', {
 		} : undefined
 	    },
 	    acpi: {
-		header: 'ACPI support',
+		header: gettext('ACPI support'),
 		defaultValue: true,
 		renderer: PVE.Utils.format_boolean,
 		editor: caps.vms['VM.Config.HWType'] ? {
 		    xtype: 'pveWindowEdit',
-		    subject: 'ACPI support',
+		    subject: gettext('ACPI support'),
 		    items: {
 			xtype: 'pvecheckbox',
 			name: 'acpi',
@@ -140,18 +140,18 @@ Ext.define('PVE.qemu.Options', {
 		} : undefined
 	    },
 	    scsihw: {
-		header: 'SCSI Controller Type',
+		header: gettext('SCSI Controller Type'),
 		editor: caps.vms['VM.Config.Options'] ? 'PVE.qemu.ScsiHwEdit' : undefined,
 		renderer: PVE.Utils.render_scsihw,
 		defaultValue: ''
 	    },
 	    kvm: {
-		header: 'KVM hardware virtualization',
+		header: gettext('KVM hardware virtualization'),
 		defaultValue: true,
 		renderer: PVE.Utils.format_boolean,
 		editor: caps.vms['VM.Config.HWType'] ? {
 		    xtype: 'pveWindowEdit',
-		    subject: 'KVM hardware virtualization',
+		    subject: gettext('KVM hardware virtualization'),
 		    items: {
 			xtype: 'pvecheckbox',
 			name: 'kvm',
@@ -164,15 +164,15 @@ Ext.define('PVE.qemu.Options', {
 		} : undefined
 	    },
 	    cpuunits: {
-		header: 'CPU units',
+		header: gettext('CPU units'),
 		defaultValue: '1000',
 		editor: caps.vms['VM.Config.CPU'] ? {
 		    xtype: 'pveWindowEdit',
-		    subject: 'CPU units',
+		    subject: gettext('CPU units'),
 		    items: {
 			xtype: 'numberfield',
 			name: 'cpuunits',
-			fieldLabel: 'CPU units',
+			fieldLabel: gettext('CPU units'),
 			minValue: 8,
 			maxValue: 500000,
 			defaultValue: 1000,
@@ -181,12 +181,12 @@ Ext.define('PVE.qemu.Options', {
 		} : undefined
 	    },
 	    freeze: {
-		header: 'Freeze CPU at startup',
+		header: gettext('Freeze CPU at startup'),
 		defaultValue: false,
 		renderer: PVE.Utils.format_boolean,
 		editor: caps.vms['VM.PowerMgmt'] ? {
 		    xtype: 'pveWindowEdit',
-		    subject: 'Freeze CPU at startup',
+		    subject: gettext('Freeze CPU at startup'),
 		    items: {
 			xtype: 'pvecheckbox',
 			name: 'freeze',
@@ -194,17 +194,17 @@ Ext.define('PVE.qemu.Options', {
 			defaultValue: 0,
 			deleteDefaultValue: true,
 			labelWidth: 140,
-			fieldLabel: 'Freeze CPU at startup'
+			fieldLabel: gettext('Freeze CPU at startup')
 		    }
 		} : undefined
 	    },
 	    localtime: {
-		header: 'Use local time for RTC',
+		header: gettext('Use local time for RTC'),
 		defaultValue: false,
 		renderer: PVE.Utils.format_boolean,
 		editor: caps.vms['VM.Config.Options'] ? {
 		    xtype: 'pveWindowEdit',
-		    subject: 'Use local time for RTC',
+		    subject: gettext('Use local time for RTC'),
 		    items: {
 			xtype: 'pvecheckbox',
 			name: 'localtime',
@@ -212,22 +212,22 @@ Ext.define('PVE.qemu.Options', {
 			defaultValue: 0,
 			deleteDefaultValue: true,
 			labelWidth: 140,
-			fieldLabel: 'Use local time for RTC'
+			fieldLabel: gettext('Use local time for RTC')
 		    }
 		} : undefined
 	    },
 	    startdate: {
-		header: 'RTC start date',
+		header: gettext('RTC start date'),
 		defaultValue: 'now',
 		editor: caps.vms['VM.Config.Options'] ? {
 		    xtype: 'pveWindowEdit',
-		    subject: 'RTC start date',
+		    subject: gettext('RTC start date'),
 		    items: {
 			xtype: 'pvetextfield',
 			name: 'startdate',
 			deleteEmpty: true,
 			value: 'now',
-			fieldLabel: 'RTC start date',
+			fieldLabel: gettext('RTC start date'),
 			vtype: 'QemuStartDate',
 			allowBlank: true
 		    }
diff --git a/www/manager/qemu/ProcessorEdit.js b/www/manager/qemu/ProcessorEdit.js
index ad116f7..3bb8f07 100644
--- a/www/manager/qemu/ProcessorEdit.js
+++ b/www/manager/qemu/ProcessorEdit.js
@@ -12,7 +12,7 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
 		minValue: 1,
 		maxValue: 4,
 		value: '1',
-		fieldLabel: 'Sockets',
+		fieldLabel: gettext('Sockets'),
 		allowBlank: false,
 		listeners: {
 		    change: function(f, value) {
@@ -28,7 +28,7 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
 		minValue: 1,
 		maxValue: 32,
 		value: '1',
-		fieldLabel: 'Cores',
+		fieldLabel: gettext('Cores'),
 		allowBlank: false,
 		listeners: {
 		    change: function(f, value) {
@@ -46,11 +46,11 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
 		xtype: 'CPUModelSelector',
 		name: 'cpu',
 		value: '',
-		fieldLabel: 'CPU type'
+		fieldLabel: gettext('CPU type')
 	    },
 	    {
 		xtype: 'displayfield',
-		fieldLabel: 'Total cores',
+		fieldLabel: gettext('Total cores'),
 		name: 'totalcores',
 		value: '1'
 	    }
@@ -76,4 +76,4 @@ Ext.define('PVE.qemu.ProcessorEdit', {
 
 	me.load();
     }
-});
\ No newline at end of file
+});
diff --git a/www/manager/qemu/Snapshot.js b/www/manager/qemu/Snapshot.js
index 97bd4a4..f8d1d37 100644
--- a/www/manager/qemu/Snapshot.js
+++ b/www/manager/qemu/Snapshot.js
@@ -16,7 +16,7 @@ Ext.define('PVE.window.Snapshot', {
 	    waitMsgTarget: me,
 	    method: 'POST',
 	    failure: function(response, opts) {
-		Ext.Msg.alert('Error', response.htmlStatus);
+		Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 	    },
 	    success: function(response, options) {
 		var upid = response.result.data;
@@ -36,7 +36,7 @@ Ext.define('PVE.window.Snapshot', {
 	    waitMsgTarget: me,
 	    method: 'PUT',
 	    failure: function(response, opts) {
-		Ext.Msg.alert('Error', response.htmlStatus);
+		Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 	    },
 	    success: function(response, options) {
 		me.close();
@@ -180,7 +180,7 @@ Ext.define('PVE.window.Snapshot', {
 	    waitMsgTarget: me,
 	    method: 'GET',
 	    failure: function(response, opts) {
-		Ext.Msg.alert('Error', response.htmlStatus);
+		Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 		me.close();
 	    },
 	    success: function(response, options) {
diff --git a/www/manager/qemu/SnapshotTree.js b/www/manager/qemu/SnapshotTree.js
index 11713d0..6f377a2 100644
--- a/www/manager/qemu/SnapshotTree.js
+++ b/www/manager/qemu/SnapshotTree.js
@@ -246,7 +246,7 @@ Ext.define('PVE.qemu.SnapshotTree', {
 		    }
 		},
 		{
-		    text: 'RAM',
+		    text: gettext('RAM'),
 		    align: 'center',
 		    resizable: false,
 		    dataIndex: 'vmstate',
diff --git a/www/manager/qemu/StatusView.js b/www/manager/qemu/StatusView.js
index bacda2a..572b311 100644
--- a/www/manager/qemu/StatusView.js
+++ b/www/manager/qemu/StatusView.js
@@ -34,20 +34,20 @@ Ext.define('PVE.qemu.StatusView', {
 	var render_mem = function(value, metaData, record, rowIndex, colIndex, store) {
 	    var maxmem = me.getObjectValue('maxmem', 0);
 	    var per = (value / maxmem)*100;
-	    var text = "<div>Total: " + PVE.Utils.format_size(maxmem) + "</div>" + 
-		"<div>Used: " + PVE.Utils.format_size(value) + "</div>";
+	    var text = "<div>" + gettext('Total') + ": " + PVE.Utils.format_size(maxmem) + "</div>" + 
+		"<div>" + gettext('Used') + ": " + PVE.Utils.format_size(value) + "</div>";
 	    return text;
 	};
 
 	var rows = {
 	    name: { header: gettext('Name'), defaultValue: 'no name specified' },
 	    qmpstatus: { header: gettext('Status'), defaultValue: 'unknown' },
-	    cpu: { header: 'CPU usage', required: true,  renderer: render_cpu },
+	    cpu: { header: gettext('CPU usage'), required: true,  renderer: render_cpu },
 	    cpus: { visible: false },
-	    mem: { header: 'Memory usage', required: true,  renderer: render_mem },
+	    mem: { header: gettext('Memory usage'), required: true,  renderer: render_mem },
 	    maxmem: { visible: false },
 	    uptime: { header: gettext('Uptime'), required: true, renderer: PVE.Utils.render_uptime },
-	    ha: { header: 'Managed by HA', required: true, renderer: PVE.Utils.format_boolean }
+	    ha: { header: gettext('Managed by HA'), required: true, renderer: PVE.Utils.format_boolean }
 	};
 
 	Ext.applyIf(me, {
diff --git a/www/manager/qemu/Summary.js b/www/manager/qemu/Summary.js
index d0de526..9d61c7b 100644
--- a/www/manager/qemu/Summary.js
+++ b/www/manager/qemu/Summary.js
@@ -26,7 +26,7 @@ Ext.define('PVE.qemu.Summary', {
 	var rstore = me.statusStore;
 
 	var statusview = Ext.create('PVE.qemu.StatusView', {
-	    title: 'Status',
+	    title: gettext('Status'),
 	    pveSelNode: me.pveSelNode,
 	    width: 400,
 	    rstore: rstore
@@ -59,28 +59,28 @@ Ext.define('PVE.qemu.Summary', {
 		},
 		{
 		    xtype: 'pveRRDView',
-		    title: "CPU usage %",
+		    title: gettext('CPU usage %'),
 		    pveSelNode: me.pveSelNode,
 		    datasource: 'cpu',
 		    rrdurl: rrdurl
 		},
 		{
 		    xtype: 'pveRRDView',
-		    title: "Memory usage",
+		    title: gettext('Memory usage'),
 		    pveSelNode: me.pveSelNode,
 		    datasource: 'mem,maxmem',
 		    rrdurl: rrdurl
 		},
 		{
 		    xtype: 'pveRRDView',
-		    title: "Network traffic",
+		    title: gettext('Network traffic'),
 		    pveSelNode: me.pveSelNode,
 		    datasource: 'netin,netout',
 		    rrdurl: rrdurl
 		},
 		{
 		    xtype: 'pveRRDView',
-		    title: "Disk IO",
+		    title: gettext('Disk IO'),
 		    pveSelNode: me.pveSelNode,
 		    datasource: 'diskread,diskwrite',
 		    rrdurl: rrdurl
diff --git a/www/manager/qemu/TemplateMenu.js b/www/manager/qemu/TemplateMenu.js
index a603d49..8c9be92 100644
--- a/www/manager/qemu/TemplateMenu.js
+++ b/www/manager/qemu/TemplateMenu.js
@@ -24,7 +24,7 @@ Ext.define('PVE.qemu.TemplateMenu', {
 		url: '/nodes/' + nodename + '/qemu/' + vmid + "/status/" + cmd,
 		method: 'POST',
 		failure: function(response, opts) {
-		    Ext.Msg.alert('Error', response.htmlStatus);
+		    Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 		}
 	    });
 	};
diff --git a/www/manager/storage/ContentView.js b/www/manager/storage/ContentView.js
index 71864f3..066f125 100644
--- a/www/manager/storage/ContentView.js
+++ b/www/manager/storage/ContentView.js
@@ -114,7 +114,7 @@ Ext.define('PVE.storage.TemplateDownload', {
 		    },
 		    method: 'POST',
 		    failure: function (response, opts) {
-			Ext.Msg.alert('Error', response.htmlStatus);
+			Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 		    },
 		    success: function(response, options) {
 			var upid = response.result.data;
@@ -185,9 +185,9 @@ Ext.define('PVE.storage.Upload', {
 		{
 		    xtype: 'pveKVComboBox',
 		    data: [
-			['iso', 'ISO image'],
-			['backup', 'VZDump backup file'],
-			['vztmpl', 'OpenVZ template']
+			['iso', gettext('ISO image')],
+			['backup', gettext('VZDump backup file')],
+			['vztmpl', gettext('OpenVZ template')]
 		    ],
 		    fieldLabel: gettext('Content'),
 		    name: 'content',
@@ -268,7 +268,7 @@ Ext.define('PVE.storage.Upload', {
 		    if (xhr.status == 200) {
 			me.close();
 		    } else {  
-			var msg = "Error " + xhr.status.toString() + ": " + Ext.htmlEncode(xhr.statusText);
+			var msg = gettext('Error') + " " + xhr.status.toString() + ": " + Ext.htmlEncode(xhr.statusText);
 			var result = Ext.decode(xhr.responseText);
 			result.message = msg;
 			var htmlStatus = PVE.Utils.extractRequestError(result, true);
@@ -496,4 +496,4 @@ Ext.define('PVE.storage.ContentView', {
 	idProperty: 'volid'
     });
 
-});
\ No newline at end of file
+});
diff --git a/www/manager/storage/IScsiEdit.js b/www/manager/storage/IScsiEdit.js
index bf72fcc..f3f50bb 100644
--- a/www/manager/storage/IScsiEdit.js
+++ b/www/manager/storage/IScsiEdit.js
@@ -46,7 +46,7 @@ Ext.define('PVE.storage.IScsiScan', {
 	    displayField: 'target',
 	    matchFieldWidth: false,
 	    listConfig: {
-		loadingText: 'Scanning...',
+		loadingText: gettext('Scanning...'),
 		listeners: {
 		    // hack: call setHeight to show scroll bars correctly
 		    refresh: function(list) {
@@ -103,7 +103,7 @@ Ext.define('PVE.storage.IScsiInputPanel', {
 		height: 22, // hack: set same height as text fields
 		name: 'portal',
 		value: '',
-		fieldLabel: 'Portal',
+		fieldLabel: gettext('Portal'),
 		allowBlank: false,
 		listeners: {
 		    change: function(f, value) {
@@ -120,7 +120,7 @@ Ext.define('PVE.storage.IScsiInputPanel', {
 		xtype: me.create ? 'pveIScsiScan' : 'displayfield',
 		name: 'target',
 		value: '',
-		fieldLabel: 'Target',
+		fieldLabel: gettext('Target'),
 		allowBlank: false
 	    }
 	];
@@ -176,7 +176,7 @@ Ext.define('PVE.storage.IScsiEdit', {
 	});
 	
 	Ext.apply(me, {
-            subject: 'iSCSI target',
+            subject: gettext('iSCSI target'),
 	    isAdd: true,
 	    items: [ ipanel ]
 	});
diff --git a/www/manager/storage/LVMEdit.js b/www/manager/storage/LVMEdit.js
index 5c26cbc..7cdf785 100644
--- a/www/manager/storage/LVMEdit.js
+++ b/www/manager/storage/LVMEdit.js
@@ -25,7 +25,7 @@ Ext.define('PVE.storage.VgSelector', {
 	    queryMode: 'local',
 	    editable: false,
 	    listConfig: {
-		loadingText: 'Scanning...',
+		loadingText: gettext('Scanning...'),
 		listeners: {
 		    // hack: call setHeight to show scroll bars correctly
 		    refresh: function(list) {
@@ -236,7 +236,7 @@ Ext.define('PVE.storage.LVMEdit', {
 	});
 	
 	Ext.apply(me, {
-            subject: 'LVM group',
+            subject: gettext('LVM group'),
 	    isAdd: true,
 	    items: [ ipanel ]
 	});
diff --git a/www/manager/storage/NFSEdit.js b/www/manager/storage/NFSEdit.js
index 9ff1997..4e122c7 100644
--- a/www/manager/storage/NFSEdit.js
+++ b/www/manager/storage/NFSEdit.js
@@ -46,7 +46,7 @@ Ext.define('PVE.storage.NFSScan', {
 	    displayField: 'path',
 	    matchFieldWidth: false,
 	    listConfig: {
-		loadingText: 'Scanning...',
+		loadingText: gettext('Scanning...'),
 		listeners: {
 		    // hack: call setHeight to show scroll bars correctly
 		    refresh: function(list) {
@@ -120,7 +120,7 @@ Ext.define('PVE.storage.NFSInputPanel', {
 		height: 22, // hack: set same height as text fields
 		name: 'export',
 		value: '',
-		fieldLabel: 'Export',
+		fieldLabel: gettext('Export'),
 		allowBlank: false
 	    },
 	    {
@@ -187,7 +187,7 @@ Ext.define('PVE.storage.NFSEdit', {
 	});
 	
 	Ext.apply(me, {
-            subject: 'NFS share',
+            subject: gettext('NFS share'),
 	    isAdd: true,
 	    items: [ ipanel ]
 	});
diff --git a/www/manager/storage/NexentaEdit.js b/www/manager/storage/NexentaEdit.js
index 3c89bd3..aa1bc0b 100644
--- a/www/manager/storage/NexentaEdit.js
+++ b/www/manager/storage/NexentaEdit.js
@@ -140,7 +140,7 @@ Ext.define('PVE.storage.NexentaEdit', {
 	});
 
 	Ext.apply(me, {
-            subject: 'Nexenta Storage',
+            subject: gettext('Nexenta Storage'),
 	    isAdd: true,
 	    items: [ ipanel ]
 	});
diff --git a/www/manager/storage/RBDEdit.js b/www/manager/storage/RBDEdit.js
index c2d20da..dd85655 100644
--- a/www/manager/storage/RBDEdit.js
+++ b/www/manager/storage/RBDEdit.js
@@ -106,7 +106,7 @@ Ext.define('PVE.storage.RBDEdit', {
 	});
 
 	Ext.apply(me, {
-            subject: 'RBD Storage',
+            subject: gettext('RBD Storage'),
 	    isAdd: true,
 	    items: [ ipanel ]
 	});
diff --git a/www/manager/storage/SheepdogEdit.js b/www/manager/storage/SheepdogEdit.js
index cca5a87..35f0df1 100644
--- a/www/manager/storage/SheepdogEdit.js
+++ b/www/manager/storage/SheepdogEdit.js
@@ -90,7 +90,7 @@ Ext.define('PVE.storage.SheepdogEdit', {
 	});
 
 	Ext.apply(me, {
-            subject: 'Sheepdog Storage',
+            subject: gettext('Sheepdog Storage'),
 	    isAdd: true,
 	    items: [ ipanel ]
 	});
diff --git a/www/manager/storage/Summary.js b/www/manager/storage/Summary.js
index 855fd61..ca093a8 100644
--- a/www/manager/storage/Summary.js
+++ b/www/manager/storage/Summary.js
@@ -41,7 +41,7 @@ Ext.define('PVE.storage.Summary', {
 		statusview,
 		{
 		    xtype: 'pveRRDView',
-		    title: "Usage",
+		    title: gettext('Usage'),
 		    pveSelNode: me.pveSelNode,
 		    datasource: 'total,used',
 		    rrdurl: rrdurl
diff --git a/www/manager/window/Migrate.js b/www/manager/window/Migrate.js
index c2795a7..40f464c 100644
--- a/www/manager/window/Migrate.js
+++ b/www/manager/window/Migrate.js
@@ -11,7 +11,7 @@ Ext.define('PVE.window.Migrate', {
 	    waitMsgTarget: me,
 	    method: 'POST',
 	    failure: function(response, opts) {
-		Ext.Msg.alert('Error', response.htmlStatus);
+		Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 	    },
 	    success: function(response, options) {
 		var upid = response.result.data;
@@ -58,7 +58,7 @@ Ext.define('PVE.window.Migrate', {
 		{
 		    xtype: 'PVE.form.NodeSelector',
 		    name: 'target',
-		    fieldLabel: 'Target node',
+		    fieldLabel: gettext('Target node'),
 		    allowBlank: false,
 		    onlineValidator: true
 		},
@@ -68,7 +68,7 @@ Ext.define('PVE.window.Migrate', {
 		    uncheckedValue: 0,
 		    defaultValue: 0,
 		    checked: running,
-		    fieldLabel: 'Online'
+		    fieldLabel: gettext('Online')
 		}
 	    ]
 	});
@@ -76,7 +76,7 @@ Ext.define('PVE.window.Migrate', {
 	var form = me.formPanel.getForm();
 
 	var submitBtn = Ext.create('Ext.Button', {
-	    text: 'Migrate',
+	    text: gettext('Migrate'),
 	    handler: function() {
 		var values = form.getValues();
 		me.migrate(values.target, values.online);
@@ -84,7 +84,7 @@ Ext.define('PVE.window.Migrate', {
 	});
 
 	Ext.apply(me, {
-	    title: "Migrate VM " + me.vmid,
+	    title: gettext('Migrate VM') + " " + me.vmid,
 	    width: 350,
 	    modal: true,
 	    layout: 'auto',
diff --git a/www/manager/window/Restore.js b/www/manager/window/Restore.js
index da5a259..77a8bb6 100644
--- a/www/manager/window/Restore.js
+++ b/www/manager/window/Restore.js
@@ -61,7 +61,7 @@ Ext.define('PVE.window.Restore', {
 		method: 'POST',
 		waitMsgTarget: me,
 		failure: function (response, opts) {
-		    Ext.Msg.alert('Error', response.htmlStatus);
+		    Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 		},
 		success: function(response, options) {
 		    var upid = response.result.data;
@@ -102,7 +102,7 @@ Ext.define('PVE.window.Restore', {
 		if (me.vmid) {
 		    var msg = gettext('Are you sure you want to restore this VM?') + ' ' +
 			gettext('This will permanently erase current VM data.');
-		    Ext.Msg.confirm('Confirmation', msg, function(btn) {
+		    Ext.Msg.confirm(gettext('Confirmation'), msg, function(btn) {
 			if (btn !== 'yes') {
 			    return;
 			}
@@ -118,7 +118,7 @@ Ext.define('PVE.window.Restore', {
 	    submitBtn.setDisabled(!valid);
 	});
 
-	var title = (me.vmtype === 'openvz') ? "Restore CT" : "Restore VM";
+	var title = (me.vmtype === 'openvz') ? gettext('Restore CT') : gettext('Restore VM');
 
 	Ext.apply(me, {
 	    title: title,
diff --git a/www/manager/window/TaskViewer.js b/www/manager/window/TaskViewer.js
index b048b8a..43b3cf7 100644
--- a/www/manager/window/TaskViewer.js
+++ b/www/manager/window/TaskViewer.js
@@ -114,7 +114,7 @@ Ext.define('PVE.window.TaskViewer', {
 		visible: false
 	    },
 	    type: {
-		header: 'Task type',
+		header: gettext('Task type'),
 		required: true
 	    },
 	    user: {
@@ -126,7 +126,7 @@ Ext.define('PVE.window.TaskViewer', {
 		required: true 
 	    },
 	    pid: {
-		header: 'Process ID',
+		header: gettext('Process ID'),
 		required: true
 	    },
 	    starttime: {
@@ -135,7 +135,7 @@ Ext.define('PVE.window.TaskViewer', {
 		renderer: PVE.Utils.render_timestamp
 	    },
 	    upid: {
-		header: 'Unique task ID'
+		header: gettext('Unique task ID')
 	    }
 	};
 
@@ -153,7 +153,7 @@ Ext.define('PVE.window.TaskViewer', {
 		waitMsgTarget: me,
 		method: 'DELETE',
 		failure: function(response, opts) {
-		    Ext.Msg.alert('Error', response.htmlStatus);
+		    Ext.Msg.alert(gettext('Error'), response.htmlStatus);
 		}
 	    });
 	};
-- 
1.7.9.5




More information about the pve-devel mailing list