Commit 50c1c8a5 authored by Dietmar Maurer's avatar Dietmar Maurer

mark translateable strings with gettext

parent 660fe2ae
This diff is collapsed.
# French translations for pve-manager package. # French translations for pve-manager package.
# Copyright (C) 2011 Proxmox Server Solutions GmbH # Copyright (C) 20011 Proxmox Server Solutions GmbH
# This file is distributed under the same license as the pve-manager package. # This file is distributed under the same license as the pve-manager package.
# Proxmox Support Team <support@proxmox.com>, 2011. # Proxmox Support Team <support@proxmox.com>, 2011.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pve-manager 2\n" "Project-Id-Version: pve-manager 2.0\n"
"POT-Creation-Date: Mon Nov 21 12:40:32 2011\n" "Report-Msgid-Bugs-To: <support@proxmox.com>\n"
"PO-Revision-Date: 2011-11-21 12:22+0100\n" "POT-Creation-Date: Tue Nov 22 13:57:09 2011\n"
"PO-Revision-Date: 2011-11-22 09:15+0100\n"
"Last-Translator: Proxmox Support Team <support@proxmox.com>\n" "Last-Translator: Proxmox Support Team <support@proxmox.com>\n"
"Language-Team: French\n" "Language-Team: French\n"
"Language: fr\n" "Language: fr\n"
...@@ -16,6 +17,108 @@ msgstr "" ...@@ -16,6 +17,108 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: ../www/manager/Utils.js:60
msgid "Allowed characters"
msgstr ""
#: ../www/manager/qemu/Config.js:80 ../www/manager/openvz/Config.js:72
msgid ""
"Are you sure you want to remove VM {0}? This will permanently erase all VM "
"data."
msgstr ""
#: ../www/manager/dc/Config.js:49
msgid "Authentication"
msgstr ""
#: ../www/manager/dc/Config.js:24 ../www/manager/qemu/Config.js:131
#: ../www/manager/openvz/Config.js:140
msgid "Backup"
msgstr ""
#: ../www/manager/panel/StatusPanel.js:41
msgid "Cluster log"
msgstr ""
#: ../www/manager/qemu/CmdMenu.js:41 ../www/manager/button/Button.js:40
#: ../www/manager/VNCConsole.js:240 ../www/manager/VNCConsole.js:257
#: ../www/manager/VNCConsole.js:269 ../www/manager/VNCConsole.js:281
#: ../www/manager/VNCConsole.js:376 ../www/manager/VNCConsole.js:388
#: ../www/manager/openvz/CmdMenu.js:41
msgid "Confirm"
msgstr ""
#: ../www/manager/Utils.js:276 ../www/manager/Utils.js:327
#: ../www/manager/Utils.js:329 ../www/manager/Utils.js:331
#: ../www/manager/Utils.js:333
msgid "Connection error"
msgstr ""
#: ../www/manager/qemu/Config.js:94 ../www/manager/qemu/CmdMenu.js:51
#: ../www/manager/VNCConsole.js:310 ../www/manager/VNCConsole.js:411
#: ../www/manager/openvz/Config.js:86 ../www/manager/openvz/CmdMenu.js:51
msgid "Console"
msgstr ""
#: ../www/manager/openvz/Config.js:96
msgid "Container {0} on node {1}"
msgstr ""
#: ../www/manager/storage/Browser.js:30
msgid "Content"
msgstr ""
#: ../www/manager/Workspace.js:333
msgid "Create CT"
msgstr ""
#: ../www/manager/Workspace.js:322
msgid "Create VM"
msgstr ""
#: ../www/manager/tree/ResourceTree.js:185 ../www/manager/dc/Config.js:9
msgid "Datacenter"
msgstr ""
#: ../www/manager/Utils.js:546
msgid "Default"
msgstr ""
#: ../www/manager/node/Tasks.js:136 ../www/manager/dc/Tasks.js:91
msgid "Description"
msgstr ""
#: ../www/manager/qemu/Config.js:64 ../www/manager/VNCConsole.js:256
msgid "Do you really want to reset VM {0}?"
msgstr ""
#: ../www/manager/node/Config.js:32
msgid "Do you really want to restart node {0}?"
msgstr ""
#: ../www/manager/qemu/Config.js:72 ../www/manager/qemu/CmdMenu.js:40
#: ../www/manager/VNCConsole.js:268 ../www/manager/VNCConsole.js:387
#: ../www/manager/openvz/Config.js:52 ../www/manager/openvz/CmdMenu.js:40
msgid "Do you really want to shutdown VM {0}?"
msgstr ""
#: ../www/manager/node/Config.js:40
msgid "Do you really want to shutdown node {0}?"
msgstr ""
#: ../www/manager/qemu/Config.js:44 ../www/manager/VNCConsole.js:239
#: ../www/manager/VNCConsole.js:375 ../www/manager/openvz/Config.js:44
msgid "Do you really want to stop VM {0}?"
msgstr ""
#: ../www/manager/VNCConsole.js:280
msgid "Do you really want to suspend VM {0}?"
msgstr ""
#: ../www/manager/node/Tasks.js:118 ../www/manager/dc/Tasks.js:69
msgid "End Time"
msgstr ""
#: ../www/manager/window/LoginWindow.js:88 #: ../www/manager/window/LoginWindow.js:88
msgid "Enter your password" msgid "Enter your password"
msgstr "" msgstr ""
...@@ -24,6 +127,32 @@ msgstr "" ...@@ -24,6 +127,32 @@ msgstr ""
msgid "Enter your user name" msgid "Enter your user name"
msgstr "" msgstr ""
#: ../www/manager/Utils.js:33 ../www/manager/Utils.js:40
#: ../www/manager/Utils.js:65
msgid "Example"
msgstr ""
#: ../www/manager/form/ViewSelector.js:15
msgid "Folder View"
msgstr ""
#: ../www/manager/Utils.js:273
msgid "Form fields may not be submitted with invalid values"
msgstr ""
#: ../www/manager/Utils.js:45 ../www/manager/Utils.js:50
#: ../www/manager/Utils.js:55
msgid "Format"
msgstr ""
#: ../www/manager/dc/Config.js:34
msgid "Groups"
msgstr ""
#: ../www/manager/qemu/Config.js:116
msgid "Hardware"
msgstr ""
#: ../www/manager/window/LoginWindow.js:103 #: ../www/manager/window/LoginWindow.js:103
msgid "Language" msgid "Language"
msgstr "" msgstr ""
...@@ -32,18 +161,221 @@ msgstr "" ...@@ -32,18 +161,221 @@ msgstr ""
msgid "Login" msgid "Login"
msgstr "" msgstr ""
#: ../www/manager/Workspace.js:308
msgid "Logout"
msgstr ""
#: ../www/manager/dc/Log.js:76
msgid "Message"
msgstr ""
#: ../www/manager/qemu/Config.js:51 ../www/manager/openvz/Config.js:59
msgid "Migrate"
msgstr ""
#: ../www/manager/qemu/Config.js:126
msgid "Monitor"
msgstr ""
#: ../www/manager/node/Config.js:76 ../www/manager/openvz/Config.js:113
msgid "Network"
msgstr ""
#: ../www/manager/Utils.js:545
msgid "No"
msgstr ""
#: ../www/manager/node/Config.js:60 ../www/manager/node/Tasks.js:126
#: ../www/manager/dc/Tasks.js:81 ../www/manager/dc/Log.js:50
msgid "Node"
msgstr ""
#: ../www/manager/tree/ResourceTree.js:13
msgid "Node list"
msgstr ""
#: ../www/manager/node/Tasks.js:94
msgid "Only Errors"
msgstr ""
#: ../www/manager/tree/ResourceTree.js:25
msgid "OpenVZ containers"
msgstr ""
#: ../www/manager/dc/Config.js:14 ../www/manager/qemu/Config.js:121
#: ../www/manager/openvz/Config.js:123
msgid "Options"
msgstr ""
#: ../www/manager/window/LoginWindow.js:86 #: ../www/manager/window/LoginWindow.js:86
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: ../www/manager/dc/Config.js:39 ../www/manager/storage/Browser.js:34
#: ../www/manager/qemu/Config.js:136 ../www/manager/openvz/Config.js:145
msgid "Permissions"
msgstr ""
#: ../www/manager/Utils.js:294
msgid "Please wait..."
msgstr ""
#: ../www/manager/window/LoginWindow.js:44 #: ../www/manager/window/LoginWindow.js:44
msgid "Proxmox VE Login" msgid "Proxmox VE Login"
msgstr "" msgstr ""
#: ../www/manager/qemu/Config.js:71 #: ../www/manager/VNCConsole.js:297 ../www/manager/VNCConsole.js:398
#: ../www/manager/VNCConsole.js:448
msgid "Refresh"
msgstr ""
#: ../www/manager/VNCConsole.js:304 ../www/manager/VNCConsole.js:405
#: ../www/manager/VNCConsole.js:455
msgid "Reload"
msgstr ""
#: ../www/manager/qemu/Config.js:79 ../www/manager/openvz/Config.js:71
msgid "Remove"
msgstr ""
#: ../www/manager/qemu/Config.js:63 ../www/manager/VNCConsole.js:254
msgid "Reset"
msgstr ""
#: ../www/manager/openvz/Config.js:108
msgid "Resources"
msgstr ""
#: ../www/manager/node/Config.js:31
msgid "Restart"
msgstr ""
#: ../www/manager/VNCConsole.js:290
msgid "Resume"
msgstr ""
#: ../www/manager/dc/Config.js:44
msgid "Roles"
msgstr ""
#: ../www/manager/grid/ResourceGrid.js:177
#: ../www/manager/grid/ResourceGrid.js:181
msgid "Search"
msgstr ""
#: ../www/manager/form/ViewSelector.js:11
msgid "Server View"
msgstr ""
#: ../www/manager/dc/Log.js:55
msgid "Service"
msgstr ""
#: ../www/manager/node/Config.js:71
msgid "Services"
msgstr ""
#: ../www/manager/dc/Log.js:70
msgid "Severity"
msgstr ""
#: ../www/manager/node/Config.js:47 ../www/manager/VNCConsole.js:459
msgid "Shell"
msgstr ""
#: ../www/manager/node/Config.js:39 ../www/manager/qemu/Config.js:71
#: ../www/manager/qemu/CmdMenu.js:37 ../www/manager/VNCConsole.js:266
#: ../www/manager/VNCConsole.js:385 ../www/manager/openvz/Config.js:51
#: ../www/manager/openvz/CmdMenu.js:37
msgid "Shutdown" msgid "Shutdown"
msgstr "" msgstr ""
#: ../www/manager/qemu/Config.js:36 ../www/manager/qemu/CmdMenu.js:30
#: ../www/manager/VNCConsole.js:231 ../www/manager/VNCConsole.js:367
#: ../www/manager/openvz/Config.js:36 ../www/manager/openvz/CmdMenu.js:30
msgid "Start"
msgstr ""
#: ../www/manager/node/Tasks.js:110 ../www/manager/dc/Tasks.js:61
msgid "Start Time"
msgstr ""
#: ../www/manager/node/Tasks.js:142 ../www/manager/dc/Tasks.js:97
msgid "Status"
msgstr ""
#: ../www/manager/qemu/Config.js:43 ../www/manager/VNCConsole.js:237
#: ../www/manager/VNCConsole.js:373 ../www/manager/openvz/Config.js:43
msgid "Stop"
msgstr ""
#: ../www/manager/dc/Config.js:19
msgid "Storage"
msgstr ""
#: ../www/manager/form/ViewSelector.js:19
msgid "Storage View"
msgstr ""
#: ../www/manager/tree/ResourceTree.js:17
msgid "Storage list"
msgstr ""
#: ../www/manager/storage/Browser.js:19
msgid "Storage {0} on node {1}"
msgstr ""
#: ../www/manager/Utils.js:247
msgid "Successful"
msgstr ""
#: ../www/manager/node/Config.js:66 ../www/manager/storage/Browser.js:24
#: ../www/manager/qemu/Config.js:111 ../www/manager/openvz/Config.js:103
msgid "Summary"
msgstr ""
#: ../www/manager/VNCConsole.js:278
msgid "Suspend"
msgstr ""
#: ../www/manager/panel/StatusPanel.js:36
msgid "Tasks"
msgstr ""
#: ../www/manager/node/Config.js:86 ../www/manager/dc/Log.js:42
msgid "Time"
msgstr ""
#: ../www/manager/Utils.js:250
msgid "Unknown error"
msgstr ""
#: ../www/manager/node/Tasks.js:82 ../www/manager/node/Tasks.js:131
#: ../www/manager/dc/Tasks.js:86 ../www/manager/dc/Log.js:65
#: ../www/manager/window/LoginWindow.js:63 #: ../www/manager/window/LoginWindow.js:63
msgid "User name" msgid "User name"
msgstr "" msgstr ""
#: ../www/manager/dc/Config.js:29
msgid "Users"
msgstr ""
#: ../www/manager/node/Tasks.js:57
msgid "View"
msgstr ""
#: ../www/manager/qemu/Config.js:104
msgid "Virtual machine {0} on node {1}"
msgstr ""
#: ../www/manager/tree/ResourceTree.js:21
msgid "Virtual machines"
msgstr ""
#: ../www/manager/Utils.js:544
msgid "Yes"
msgstr ""
#: ../www/manager/Workspace.js:211
msgid "You are logged in as {0}"
msgstr ""
# SOME DESCRIPTIVE TITLE. # SOME DESCRIPTIVE TITLE.
# Copyright (C) 2011 Proxmox Server Solutions GmbH # Copyright (C) 20011 Proxmox Server Solutions GmbH
# This file is distributed under the same license as the pve-manager package. # This file is distributed under the same license as the pve-manager package.
# Proxmox Support Team <support@proxmox.com>, 2011. # Proxmox Support Team <support@proxmox.com>, 2011.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pve-manager 2\n" "Project-Id-Version: pve-manager 2.0\n"
"POT-Creation-Date: Mon Nov 21 12:40:32 2011\n" "Report-Msgid-Bugs-To: <support@proxmox.com>\n"
"POT-Creation-Date: Tue Nov 22 13:57:09 2011\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <support@proxmox.com>\n" "Language-Team: LANGUAGE <support@proxmox.com>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: ../www/manager/Utils.js:60
msgid "Allowed characters"
msgstr ""
#: ../www/manager/qemu/Config.js:80 ../www/manager/openvz/Config.js:72
msgid "Are you sure you want to remove VM {0}? This will permanently erase all VM data."
msgstr ""
#: ../www/manager/dc/Config.js:49
msgid "Authentication"
msgstr ""
#: ../www/manager/dc/Config.js:24 ../www/manager/qemu/Config.js:131 ../www/manager/openvz/Config.js:140
msgid "Backup"
msgstr ""
#: ../www/manager/panel/StatusPanel.js:41
msgid "Cluster log"
msgstr ""
#: ../www/manager/qemu/CmdMenu.js:41 ../www/manager/button/Button.js:40 ../www/manager/VNCConsole.js:240 ../www/manager/VNCConsole.js:257 ../www/manager/VNCConsole.js:269 ../www/manager/VNCConsole.js:281 ../www/manager/VNCConsole.js:376 ../www/manager/VNCConsole.js:388 ../www/manager/openvz/CmdMenu.js:41
msgid "Confirm"
msgstr ""
#: ../www/manager/Utils.js:276 ../www/manager/Utils.js:327 ../www/manager/Utils.js:329 ../www/manager/Utils.js:331 ../www/manager/Utils.js:333
msgid "Connection error"
msgstr ""
#: ../www/manager/qemu/Config.js:94 ../www/manager/qemu/CmdMenu.js:51 ../www/manager/VNCConsole.js:310 ../www/manager/VNCConsole.js:411 ../www/manager/openvz/Config.js:86 ../www/manager/openvz/CmdMenu.js:51
msgid "Console"
msgstr ""
#: ../www/manager/openvz/Config.js:96
msgid "Container {0} on node {1}"
msgstr ""
#: ../www/manager/storage/Browser.js:30
msgid "Content"
msgstr ""
#: ../www/manager/Workspace.js:333
msgid "Create CT"
msgstr ""
#: ../www/manager/Workspace.js:322
msgid "Create VM"
msgstr ""
#: ../www/manager/tree/ResourceTree.js:185 ../www/manager/dc/Config.js:9
msgid "Datacenter"
msgstr ""
#: ../www/manager/Utils.js:546
msgid "Default"
msgstr ""
#: ../www/manager/node/Tasks.js:136 ../www/manager/dc/Tasks.js:91
msgid "Description"
msgstr ""
#: ../www/manager/qemu/Config.js:64 ../www/manager/VNCConsole.js:256
msgid "Do you really want to reset VM {0}?"
msgstr ""
#: ../www/manager/node/Config.js:32
msgid "Do you really want to restart node {0}?"
msgstr ""
#: ../www/manager/qemu/Config.js:72 ../www/manager/qemu/CmdMenu.js:40 ../www/manager/VNCConsole.js:268 ../www/manager/VNCConsole.js:387 ../www/manager/openvz/Config.js:52 ../www/manager/openvz/CmdMenu.js:40
msgid "Do you really want to shutdown VM {0}?"
msgstr ""
#: ../www/manager/node/Config.js:40
msgid "Do you really want to shutdown node {0}?"
msgstr ""
#: ../www/manager/qemu/Config.js:44 ../www/manager/VNCConsole.js:239 ../www/manager/VNCConsole.js:375 ../www/manager/openvz/Config.js:44
msgid "Do you really want to stop VM {0}?"
msgstr ""
#: ../www/manager/VNCConsole.js:280
msgid "Do you really want to suspend VM {0}?"
msgstr ""
#: ../www/manager/node/Tasks.js:118 ../www/manager/dc/Tasks.js:69
msgid "End Time"
msgstr ""
#: ../www/manager/window/LoginWindow.js:88 #: ../www/manager/window/LoginWindow.js:88
msgid "Enter your password" msgid "Enter your password"
msgstr "" msgstr ""
...@@ -21,6 +112,30 @@ msgstr "" ...@@ -21,6 +112,30 @@ msgstr ""
msgid "Enter your user name" msgid "Enter your user name"
msgstr "" msgstr ""
#: ../www/manager/Utils.js:33 ../www/manager/Utils.js:40 ../www/manager/Utils.js:65
msgid "Example"
msgstr ""
#: ../www/manager/form/ViewSelector.js:15
msgid "Folder View"
msgstr ""
#: ../www/manager/Utils.js:273
msgid "Form fields may not be submitted with invalid values"
msgstr ""
#: ../www/manager/Utils.js:45 ../www/manager/Utils.js:50 ../www/manager/Utils.js:55
msgid "Format"
msgstr ""
#: ../www/manager/dc/Config.js:34
msgid "Groups"
msgstr ""
#: ../www/manager/qemu/Config.js:116
msgid "Hardware"
msgstr ""
#: ../www/manager/window/LoginWindow.js:103 #: ../www/manager/window/LoginWindow.js:103
msgid "Language" msgid "Language"
msgstr "" msgstr ""
...@@ -29,18 +144,207 @@ msgstr "" ...@@ -29,18 +144,207 @@ msgstr ""
msgid "Login" msgid "Login"
msgstr "" msgstr ""
#: ../www/manager/Workspace.js:308
msgid "Logout"
msgstr ""
#: ../www/manager/dc/Log.js:76
msgid "Message"
msgstr ""
#: ../www/manager/qemu/Config.js:51 ../www/manager/openvz/Config.js:59
msgid "Migrate"
msgstr ""
#: ../www/manager/qemu/Config.js:126
msgid "Monitor"
msgstr ""
#: ../www/manager/node/Config.js:76 ../www/manager/openvz/Config.js:113
msgid "Network"
msgstr ""
#: ../www/manager/Utils.js:545
msgid "No"
msgstr ""
#: ../www/manager/node/Config.js:60 ../www/manager/node/Tasks.js:126 ../www/manager/dc/Tasks.js:81 ../www/manager/dc/Log.js:50
msgid "Node"
msgstr ""
#: ../www/manager/tree/ResourceTree.js:13
msgid "Node list"
msgstr ""
#: ../www/manager/node/Tasks.js:94
msgid "Only Errors"
msgstr ""
#: ../www/manager/tree/ResourceTree.js:25
msgid "OpenVZ containers"
msgstr ""
#: ../www/manager/dc/Config.js:14 ../www/manager/qemu/Config.js:121 ../www/manager/openvz/Config.js:123
msgid "Options"
msgstr ""
#: ../www/manager/window/LoginWindow.js:86 #: ../www/manager/window/LoginWindow.js:86
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: ../www/manager/dc/Config.js:39 ../www/manager/storage/Browser.js:34 ../www/manager/qemu/Config.js:136 ../www/manager/openvz/Config.js:145
msgid "Permissions"
msgstr ""
#: ../www/manager/Utils.js:294
msgid "Please wait..."
msgstr ""
#: ../www/manager/window/LoginWindow.js:44 #: ../www/manager/window/LoginWindow.js:44
msgid "Proxmox VE Login" msgid "Proxmox VE Login"
msgstr "" msgstr ""
#: ../www/manager/qemu/Config.js:71 #: ../www/manager/VNCConsole.js:297 ../www/manager/VNCConsole.js:398 ../www/manager/VNCConsole.js:448
msgid "Refresh"
msgstr ""
#: ../www/manager/VNCConsole.js:304 ../www/manager/VNCConsole.js:405 ../www/manager/VNCConsole.js:455
msgid "Reload"
msgstr ""
#: ../www/manager/qemu/Config.js:79 ../www/manager/openvz/Config.js:71
msgid "Remove"
msgstr ""
#: ../www/manager/qemu/Config.js:63 ../www/manager/VNCConsole.js:254
msgid "Reset"
msgstr ""
#: ../www/manager/openvz/Config.js:108
msgid "Resources"
msgstr ""
#: ../www/manager/node/Config.js:31
msgid "Restart"
msgstr ""
#: ../www/manager/VNCConsole.js:290
msgid "Resume"
msgstr ""
#: ../www/manager/dc/Config.js:44
msgid "Roles"
msgstr ""
#: ../www/manager/grid/ResourceGrid.js:177 ../www/manager/grid/ResourceGrid.js:181
msgid "Search"
msgstr ""
#: ../www/manager/form/ViewSelector.js:11
msgid "Server View"
msgstr ""
#: ../www/manager/dc/Log.js:55
msgid "Service"
msgstr ""
#: ../www/manager/node/Config.js:71
msgid "Services"
msgstr ""
#: ../www/manager/dc/Log.js:70
msgid "Severity"
msgstr ""
#: ../www/manager/node/Config.js:47 ../www/manager/VNCConsole.js:459
msgid "Shell"
msgstr ""
#: ../www/manager/node/Config.js:39 ../www/manager/qemu/Config.js:71 ../www/manager/qemu/CmdMenu.js:37 ../www/manager/VNCConsole.js:266 ../www/manager/VNCConsole.js:385 ../www/manager/openvz/Config.js:51 ../www/manager/openvz/CmdMenu.js:37
msgid "Shutdown" msgid "Shutdown"
msgstr "" msgstr ""
#: ../www/manager/window/LoginWindow.js:63 #: ../www/manager/qemu/Config.js:36 ../www/manager/qemu/CmdMenu.js:30 ../www/manager/VNCConsole.js:231 ../www/manager/VNCConsole.js:367 ../www/manager/openvz/Config.js:36 ../www/manager/openvz/CmdMenu.js:30
msgid "Start"
msgstr ""
#: ../www/manager/node/Tasks.js:110 ../www/manager/dc/Tasks.js:61
msgid "Start Time"
msgstr ""
#: ../www/manager/node/Tasks.js:142 ../www/manager/dc/Tasks.js:97
msgid "Status"
msgstr ""
#: ../www/manager/qemu/Config.js:43 ../www/manager/VNCConsole.js:237 ../www/manager/VNCConsole.js:373 ../www/manager/openvz/Config.js:43
msgid "Stop"
msgstr ""
#: ../www/manager/dc/Config.js:19
msgid "Storage"
msgstr ""
#: ../www/manager/form/ViewSelector.js:19
msgid "Storage View"
msgstr ""
#: ../www/manager/tree/ResourceTree.js:17
msgid "Storage list"
msgstr ""
#: ../www/manager/storage/Browser.js:19
msgid "Storage {0} on node {1}"
msgstr ""
#: ../www/manager/Utils.js:247
msgid "Successful"
msgstr ""
#: ../www/manager/node/Config.js:66 ../www/manager/storage/Browser.js:24 ../www/manager/qemu/Config.js:111 ../www/manager/openvz/Config.js:103
msgid "Summary"
msgstr ""
#: ../www/manager/VNCConsole.js:278
msgid "Suspend"
msgstr ""
#: ../www/manager/panel/StatusPanel.js:36
msgid "Tasks"
msgstr ""
#: ../www/manager/node/Config.js:86 ../www/manager/dc/Log.js:42
msgid "Time"
msgstr ""
#: ../www/manager/Utils.js:250
msgid "Unknown error"
msgstr ""
#: ../www/manager/node/Tasks.js:82 ../www/manager/node/Tasks.js:131 ../www/manager/dc/Tasks.js:86 ../www/manager/dc/Log.js:65 ../www/manager/window/LoginWindow.js:63
msgid "User name" msgid "User name"
msgstr "" msgstr ""
#: ../www/manager/dc/Config.js:29
msgid "Users"
msgstr ""
#: ../www/manager/node/Tasks.js:57
msgid "View"
msgstr ""
#: ../www/manager/qemu/Config.js:104
msgid "Virtual machine {0} on node {1}"
msgstr ""
#: ../www/manager/tree/ResourceTree.js:21
msgid "Virtual machines"
msgstr ""
#: ../www/manager/Utils.js:544
msgid "Yes"
msgstr ""
#: ../www/manager/Workspace.js:211
msgid "You are logged in as {0}"
msgstr ""
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
use strict; use strict;
use Locale::PO; use Locale::PO;
use JSON; use JSON;
use Encode;
# current limits: # current limits:
# - we do not support plural. forms # - we do not support plural. forms
...@@ -29,18 +30,30 @@ sub fnv31a { ...@@ -29,18 +30,30 @@ sub fnv31a {
return $hval & 0x7fffffff; return $hval & 0x7fffffff;
} }
my $aref = Locale::PO->load_file_asarray($filename); my $href = Locale::PO->load_file_ashash($filename);
my $catalog; my $catalog;
foreach my $po (@$aref) { my $charset;
my $qmsgid = $po->msgid; my $hpo = $href->{'""'} || die "no header";
my $header = $hpo->dequote($hpo->msgstr);
if ($header =~ m|\\nContent-Type:\s+text/plain;\s+charset=(\S+)\\n|im) {
$charset = $1;
} else {
die "unable to get charset\n" if !$charset;
}
foreach my $k (keys %$href) {
my $po = $href->{$k};
my $qmsgid = decode($charset, $po->msgid);
my $msgid = $po->dequote($qmsgid); my $msgid = $po->dequote($qmsgid);
my $qmsgstr = decode($charset, $po->msgstr);
my $msgstr = $po->dequote($qmsgstr);
next if !length($msgid); # skip header next if !length($msgid); # skip header
my $qmsgstr = $po->msgstr;
my $msgstr = $po->dequote($qmsgstr);
my $digest = fnv31a($msgid); my $digest = fnv31a($msgid);
die "duplicate digest" if $catalog->{$digest}; die "duplicate digest" if $catalog->{$digest};
...@@ -49,6 +62,9 @@ foreach my $po (@$aref) { ...@@ -49,6 +62,9 @@ foreach my $po (@$aref) {
# later, we can add plural forms to the array # later, we can add plural forms to the array
} }
#use Data::Dumper;
#print STDERR Dumper(encode_json({test => decode('UTF-8', "müssen")}));
my $json = encode_json($catalog); my $json = encode_json($catalog);
print <<__EOD print <<__EOD
...@@ -74,7 +90,7 @@ function gettext(buf) { ...@@ -74,7 +90,7 @@ function gettext(buf) {
if (!data) { if (!data) {
return buf; return buf;
} }
return data[0]; return data[0] || buf;
} }
__EOD __EOD
......
...@@ -30,39 +30,39 @@ Ext.apply(Ext.form.field.VTypes, { ...@@ -30,39 +30,39 @@ Ext.apply(Ext.form.field.VTypes, {
IPAddress: function(v) { IPAddress: function(v) {
return (/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/).test(v); return (/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/).test(v);
}, },
IPAddressText: 'Must be a numeric IP address', IPAddressText: gettext('Example') + ': 192.168.1.1',
IPAddressMask: /[\d\.]/i, IPAddressMask: /[\d\.]/i,
MacAddress: function(v) { MacAddress: function(v) {
return (/^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$/).test(v); return (/^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$/).test(v);
}, },
MacAddressMask: /[a-fA-F0-9:]/, MacAddressMask: /[a-fA-F0-9:]/,
MacAddressText: 'Must be a valid MAC address (example: "01:23:45:67:89:ab")', MacAddressText: gettext('Example') + ': 01:23:45:67:89:ab',
BridgeName: function(v) { BridgeName: function(v) {
return (/^vmbr\d{1,4}$/).test(v); return (/^vmbr\d{1,4}$/).test(v);
}, },
BridgeNameText: 'Allowable bridge names: vmbr<b>N</b>, where 0 <= <b>N</b> <= 9999', BridgeNameText: gettext('Format') + ': vmbr<b>N</b>, where 0 <= <b>N</b> <= 9999',
BondName: function(v) { BondName: function(v) {
return (/^bond\d{1,4}$/).test(v); return (/^bond\d{1,4}$/).test(v);
}, },
BondNameText: 'Allowable bond names: bond<b>N</b>, where 0 <= <b>N</b> <= 9999', BondNameText: gettext('Format') + ': bond<b>N</b>, where 0 <= <b>N</b> <= 9999',
QemuStartDate: function(v) { QemuStartDate: function(v) {
return (/^(now|\d{4}-\d{1,2}-\d{1,2}(T\d{1,2}:\d{1,2}:\d{1,2})?)$/).test(v); return (/^(now|\d{4}-\d{1,2}-\d{1,2}(T\d{1,2}:\d{1,2}:\d{1,2})?)$/).test(v);
}, },
QemuStartDateText: 'Valid format for date are: "now" or "2006-06-17T16:01:21" or "2006-06-17"', QemuStartDateText: gettext('Format') + ': "now" or "2006-06-17T16:01:21" or "2006-06-17"',
StorageId: function(v) { StorageId: function(v) {
return (/^[a-z][a-z0-9\-\_\.]*[a-z0-9]$/i).test(v); return (/^[a-z][a-z0-9\-\_\.]*[a-z0-9]$/i).test(v);
}, },
StorageIdText: "ID contains illegal characters (allowed characters: 'a-z', '0-9', '-', '_' and '.')", StorageIdText: gettext("Allowed characters") + ": 'a-z', '0-9', '-', '_', '.'",
HttpProxy: function(v) { HttpProxy: function(v) {
return (/^http:\/\/.*$/).test(v); return (/^http:\/\/.*$/).test(v);
}, },
HttpProxyText: "Must confirm to schema 'http://.*' (example: 'http://username:password@host:port/')" HttpProxyText: gettext('Example') + ": http://username:password&#64;host:port/"
}); });
// we dont want that a displayfield set the form dirty flag! // we dont want that a displayfield set the form dirty flag!
...@@ -244,10 +244,10 @@ Ext.define('PVE.Utils', { statics: { ...@@ -244,10 +244,10 @@ Ext.define('PVE.Utils', { statics: {
}, },
extractRequestError: function(result, verbose) { extractRequestError: function(result, verbose) {
var msg = 'Successful'; var msg = gettext('Successful');
if (!result.success) { if (!result.success) {
msg = "Unknown error"; msg = gettext("Unknown error");
if (result.message) { if (result.message) {
msg = result.message; msg = result.message;
if (result.status) { if (result.status) {
...@@ -270,10 +270,10 @@ Ext.define('PVE.Utils', { statics: { ...@@ -270,10 +270,10 @@ Ext.define('PVE.Utils', { statics: {
var msg; var msg;
switch (action.failureType) { switch (action.failureType) {
case Ext.form.action.Action.CLIENT_INVALID: case Ext.form.action.Action.CLIENT_INVALID:
msg = 'Form fields may not be submitted with invalid values'; msg = gettext('Form fields may not be submitted with invalid values');
break; break;
case Ext.form.action.Action.CONNECT_FAILURE: case Ext.form.action.Action.CONNECT_FAILURE:
msg = 'Connect failure'; msg = gettext('Connection error');
var resp = action.response; var resp = action.response;
if (resp.status && resp.statusText) { if (resp.status && resp.statusText) {
msg += " " + resp.status + ": " + resp.statusText; msg += " " + resp.status + ": " + resp.statusText;
...@@ -291,7 +291,7 @@ Ext.define('PVE.Utils', { statics: { ...@@ -291,7 +291,7 @@ Ext.define('PVE.Utils', { statics: {
API2Request: function(reqOpts) { API2Request: function(reqOpts) {
var newopts = Ext.apply({ var newopts = Ext.apply({
waitMsg: 'Please wait...' waitMsg: gettext('Please wait...')
}, reqOpts); }, reqOpts);
if (!newopts.url.match(/^\/api2/)) { if (!newopts.url.match(/^\/api2/)) {
...@@ -324,13 +324,13 @@ Ext.define('PVE.Utils', { statics: { ...@@ -324,13 +324,13 @@ Ext.define('PVE.Utils', { statics: {
try { try {
response.result = Ext.decode(response.responseText); response.result = Ext.decode(response.responseText);
} catch(e) {} } catch(e) {}
var msg = "Connection error - server offline?"; var msg = gettext('Connection error') + ' - server offline?';
if (response.aborted) { if (response.aborted) {
msg = 'Transaction aborted.'; msg = gettext('Connection error') + ' - aborted.';
} else if (response.timedout) { } else if (response.timedout) {
msg = 'Communication failure: Timeout.'; msg = gettext('Connection error') + ' - Timeout.';
} else if (response.status && response.statusText) { } else if (response.status && response.statusText) {
msg = 'Connection error ' + response.status + ': ' + response.statusText; msg = gettext('Connection error') + ' ' + response.status + ': ' + response.statusText;
} }
response.htmlStatus = msg; response.htmlStatus = msg;
Ext.callback(callbackFn, options.scope, [options, false, response]); Ext.callback(callbackFn, options.scope, [options, false, response]);
...@@ -541,19 +541,23 @@ Ext.define('PVE.Utils', { statics: { ...@@ -541,19 +541,23 @@ Ext.define('PVE.Utils', { statics: {
} }
}, },
yesText: gettext('Yes'),
noText: gettext('No'),
defaultText: gettext('Default'),
format_boolean_with_default: function(value) { format_boolean_with_default: function(value) {
if (Ext.isDefined(value) && value !== '') { if (Ext.isDefined(value) && value !== '') {
return value ? 'Yes' : 'No'; return value ? PVE.Utils.yesText : PVE.Utils.noText;
} }
return 'Default'; return PVE.Utils.defaultText;
}, },
format_boolean: function(value) { format_boolean: function(value) {
return value ? 'Yes' : 'No'; return value ? PVE.Utils.yesText : PVE.Utils.noText;
}, },
format_neg_boolean: function(value) { format_neg_boolean: function(value) {
return !value ? 'Yes' : 'No'; return !value ? PVE.Utils.yesText : PVE.Utils.noText;
}, },
format_content_types: function(value) { format_content_types: function(value) {
......
...@@ -228,16 +228,16 @@ Ext.define('PVE.KVMConsole', { ...@@ -228,16 +228,16 @@ Ext.define('PVE.KVMConsole', {
var tbar = [ var tbar = [
{ {
text: 'Start', text: gettext('Start'),
handler: function() { handler: function() {
vm_command("start", {}, 1); vm_command("start", {}, 1);
} }
}, },
{ {
text: 'Stop', text: gettext('Stop'),
handler: function() { handler: function() {
var msg = "Do you really want to stop the VM?"; var msg = Ext.String.format(gettext("Do you really want to stop VM {0}?"), me.vmid);
Ext.Msg.confirm('Confirm', msg, function(btn) { Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
if (btn !== 'yes') { if (btn !== 'yes') {
return; return;
} }
...@@ -251,10 +251,10 @@ Ext.define('PVE.KVMConsole', { ...@@ -251,10 +251,10 @@ Ext.define('PVE.KVMConsole', {
vmid: me.vmid vmid: me.vmid
}, },
{ {
text: 'Reset', text: gettext('Reset'),
handler: function() { handler: function() {
var msg = "Do you really want to reset the VM?"; var msg = Ext.String.format(gettext("Do you really want to reset VM {0}?"), me.vmid);
Ext.Msg.confirm('Confirm', msg, function(btn) { Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
if (btn !== 'yes') { if (btn !== 'yes') {
return; return;
} }
...@@ -263,10 +263,10 @@ Ext.define('PVE.KVMConsole', { ...@@ -263,10 +263,10 @@ Ext.define('PVE.KVMConsole', {
} }
}, },
{ {
text: 'Shutdown', text: gettext('Shutdown'),
handler: function() { handler: function() {
var msg = "Do you really want to shutdown the VM?"; var msg = Ext.String.format(gettext("Do you really want to shutdown VM {0}?"), me.vmid);
Ext.Msg.confirm('Confirm', msg, function(btn) { Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
if (btn !== 'yes') { if (btn !== 'yes') {
return; return;
} }
...@@ -275,10 +275,10 @@ Ext.define('PVE.KVMConsole', { ...@@ -275,10 +275,10 @@ Ext.define('PVE.KVMConsole', {
} }
}, },
{ {
text: 'Suspend', text: gettext('Suspend'),
handler: function() { handler: function() {
var msg = "Do you really want to suspend the VM?"; var msg = Ext.String.format(gettext("Do you really want to suspend VM {0}?"), me.vmid);
Ext.Msg.confirm('Confirm', msg, function(btn) { Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
if (btn !== 'yes') { if (btn !== 'yes') {
return; return;
} }
...@@ -287,27 +287,27 @@ Ext.define('PVE.KVMConsole', { ...@@ -287,27 +287,27 @@ Ext.define('PVE.KVMConsole', {
} }
}, },
{ {
text: 'Resume', text: gettext('Resume'),
handler: function() { handler: function() {
vm_command("resume"); vm_command("resume");
} }
}, },
'->', '->',
{ {
text: 'Refresh', text: gettext('Refresh'),
handler: function() { handler: function() {
var applet = Ext.getDom(me.appletID); var applet = Ext.getDom(me.appletID);
applet.sendRefreshRequest(); applet.sendRefreshRequest();
} }
}, },
{ {
text: 'Reload', text: gettext('Reload'),
handler: function () { handler: function () {
me.reloadApplet(); me.reloadApplet();
} }
}, },
{ {
text: 'Console', text: gettext('Console'),
handler: function() { handler: function() {
var url = Ext.urlEncode({ var url = Ext.urlEncode({
console: 'kvm', console: 'kvm',
...@@ -364,16 +364,16 @@ Ext.define('PVE.OpenVZConsole', { ...@@ -364,16 +364,16 @@ Ext.define('PVE.OpenVZConsole', {
var tbar = [ var tbar = [
{ {
text: 'Start', text: gettext('Start'),
handler: function() { handler: function() {
vm_command("start", {}, 1); vm_command("start", {}, 1);
} }
}, },
{ {
text: 'Stop', text: gettext('Stop'),
handler: function() { handler: function() {
var msg = "Do you really want to stop the VM?"; var msg = Ext.String.format(gettext("Do you really want to stop VM {0}?"), me.vmid);
Ext.Msg.confirm('Confirm', msg, function(btn) { Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
if (btn !== 'yes') { if (btn !== 'yes') {
return; return;
} }
...@@ -382,10 +382,10 @@ Ext.define('PVE.OpenVZConsole', { ...@@ -382,10 +382,10 @@ Ext.define('PVE.OpenVZConsole', {
} }
}, },
{ {
text: 'Shutdown', text: gettext('Shutdown'),
handler: function() { handler: function() {
var msg = "Do you really want to shutdown the VM?"; var msg = Ext.String.format(gettext("Do you really want to shutdown VM {0}?"), me.vmid);
Ext.Msg.confirm('Confirm', msg, function(btn) { Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
if (btn !== 'yes') { if (btn !== 'yes') {
return; return;
} }
...@@ -395,20 +395,20 @@ Ext.define('PVE.OpenVZConsole', { ...@@ -395,20 +395,20 @@ Ext.define('PVE.OpenVZConsole', {
}, },
'->', '->',
{ {
text: 'Refresh', text: gettext('Refresh'),
handler: function() { handler: function() {
var applet = Ext.getDom(me.appletID); var applet = Ext.getDom(me.appletID);
applet.sendRefreshRequest(); applet.sendRefreshRequest();
} }
}, },
{ {
text: 'Reload', text: gettext('Reload'),
handler: function () { handler: function () {
me.reloadApplet(); me.reloadApplet();
} }
}, },
{ {
text: 'Console', text: gettext('Console'),
handler: function() { handler: function() {
var url = Ext.urlEncode({ var url = Ext.urlEncode({
console: 'openvz', console: 'openvz',
...@@ -445,18 +445,18 @@ Ext.define('PVE.Shell', { ...@@ -445,18 +445,18 @@ Ext.define('PVE.Shell', {
var tbar = [ var tbar = [
'->', '->',
{ {
text: 'Refresh', text: gettext('Refresh'),
handler: function() { handler: function() {
var applet = Ext.getDom(me.appletID); var applet = Ext.getDom(me.appletID);
applet.sendRefreshRequest(); applet.sendRefreshRequest();
} }
}, },
{ {
text: 'Reload', text: gettext('Reload'),
handler: function () { me.reloadApplet(); } handler: function () { me.reloadApplet(); }
}, },
{ {
text: 'Shell', text: gettext('Shell'),
handler: function() { handler: function() {
var url = Ext.urlEncode({ var url = Ext.urlEncode({
console: 'shell', console: 'shell',
......
...@@ -208,7 +208,8 @@ Ext.define('PVE.StdWorkspace', { ...@@ -208,7 +208,8 @@ Ext.define('PVE.StdWorkspace', {
var ui = me.query('#userinfo')[0]; var ui = me.query('#userinfo')[0];
if (PVE.UserName) { if (PVE.UserName) {
ui.update('<div class="x-unselectable" style="white-space:nowrap;">You are logged in as "' + PVE.UserName + '"</div>'); var msg = Ext.String.format(gettext("You are logged in as {0}"), "'" + PVE.UserName + "'");
ui.update('<div class="x-unselectable" style="white-space:nowrap;">' + msg + '</div>');
} else { } else {
ui.update(''); ui.update('');
} }
...@@ -304,7 +305,7 @@ Ext.define('PVE.StdWorkspace', { ...@@ -304,7 +305,7 @@ Ext.define('PVE.StdWorkspace', {
margins: '3 5 0 0', margins: '3 5 0 0',
xtype: 'button', xtype: 'button',
baseCls: 'x-btn', baseCls: 'x-btn',
text: "Logout", text: gettext("Logout"),
handler: function() { handler: function() {
PVE.data.ResourceStore.stopUpdate(); PVE.data.ResourceStore.stopUpdate();
me.showLogin(); me.showLogin();
...@@ -318,7 +319,7 @@ Ext.define('PVE.StdWorkspace', { ...@@ -318,7 +319,7 @@ Ext.define('PVE.StdWorkspace', {
margins: '3 5 0 0', margins: '3 5 0 0',
xtype: 'button', xtype: 'button',
baseCls: 'x-btn', baseCls: 'x-btn',
text: "Create VM", text: gettext("Create VM"),
handler: function() { handler: function() {
var wiz = Ext.create('PVE.qemu.CreateWizard', {}); var wiz = Ext.create('PVE.qemu.CreateWizard', {});
wiz.show(); wiz.show();
...@@ -329,7 +330,7 @@ Ext.define('PVE.StdWorkspace', { ...@@ -329,7 +330,7 @@ Ext.define('PVE.StdWorkspace', {
margins: '3 5 0 0', margins: '3 5 0 0',
xtype: 'button', xtype: 'button',
baseCls: 'x-btn', baseCls: 'x-btn',
text: "Create CT", text: gettext("Create CT"),
handler: function() { handler: function() {
var wiz = Ext.create('PVE.openvz.CreateWizard', {}); var wiz = Ext.create('PVE.openvz.CreateWizard', {});
wiz.show(); wiz.show();
......
...@@ -37,7 +37,7 @@ Ext.define('PVE.button.Button', { ...@@ -37,7 +37,7 @@ Ext.define('PVE.button.Button', {
if (Ext.isFunction(me.confirmMsg)) { if (Ext.isFunction(me.confirmMsg)) {
msg = me.confirmMsg(rec); msg = me.confirmMsg(rec);
} }
Ext.Msg.confirm('Confirmation', msg, function(btn) { Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
if (btn !== 'yes') { if (btn !== 'yes') {
return; return;
} }
......
...@@ -6,47 +6,47 @@ Ext.define('PVE.dc.Config', { ...@@ -6,47 +6,47 @@ Ext.define('PVE.dc.Config', {
var me = this; var me = this;
Ext.apply(me, { Ext.apply(me, {
title: "Datacenter", title: gettext("Datacenter"),
hstateid: 'dctab', hstateid: 'dctab',
items: [ items: [
{ {
xtype: 'pveDcOptionView', xtype: 'pveDcOptionView',
title: 'Options', title: gettext('Options'),
itemId: 'options' itemId: 'options'
}, },
{ {
xtype: 'pveStorageView', xtype: 'pveStorageView',
title: 'Storage', title: gettext('Storage'),
itemId: 'storage' itemId: 'storage'
}, },
{ {
xtype: 'pveDcBackupView', xtype: 'pveDcBackupView',
title: 'Backup', title: gettext('Backup'),
itemId: 'backup' itemId: 'backup'
}, },
{ {
xtype: 'pveUserView', xtype: 'pveUserView',
title: 'Users', title: gettext('Users'),
itemId: 'users' itemId: 'users'
}, },
{ {
xtype: 'pveGroupView', xtype: 'pveGroupView',
title: 'Groups', title: gettext('Groups'),
itemId: 'groups' itemId: 'groups'
}, },
{ {
xtype: 'pveACLView', xtype: 'pveACLView',
title: 'Permissions', title: gettext('Permissions'),
itemId: 'permissions' itemId: 'permissions'
}, },
{ {
xtype: 'pveRoleView', xtype: 'pveRoleView',
title: 'Roles', title: gettext('Roles'),
itemId: 'roles' itemId: 'roles'
}, },
{ {
xtype: 'pveAuthView', xtype: 'pveAuthView',
title: 'Authentication', title: gettext('Authentication'),
itemId: 'domains' itemId: 'domains'
} }
] ]
......
...@@ -39,7 +39,7 @@ Ext.define('PVE.dc.Log', { ...@@ -39,7 +39,7 @@ Ext.define('PVE.dc.Log', {
sortableColumns: false, sortableColumns: false,
columns: [ columns: [
{ {
header: "Start Time", header: gettext("Time"),
dataIndex: 'time', dataIndex: 'time',
width: 100, width: 100,
renderer: function(value) { renderer: function(value) {
...@@ -47,12 +47,12 @@ Ext.define('PVE.dc.Log', { ...@@ -47,12 +47,12 @@ Ext.define('PVE.dc.Log', {
} }
}, },
{ {
header: "Node", header: gettext("Node"),
dataIndex: 'node', dataIndex: 'node',
width: 100 width: 100
}, },
{ {
header: "Tag", header: gettext("Service"),
dataIndex: 'tag', dataIndex: 'tag',
width: 100 width: 100
}, },
...@@ -62,18 +62,18 @@ Ext.define('PVE.dc.Log', { ...@@ -62,18 +62,18 @@ Ext.define('PVE.dc.Log', {
width: 100 width: 100
}, },
{ {
header: "User", header: gettext("User name"),
dataIndex: 'user', dataIndex: 'user',
width: 150 width: 150
}, },
{ {
header: "Severity", header: gettext("Severity"),
dataIndex: 'pri', dataIndex: 'pri',
renderer: PVE.Utils.render_serverity, renderer: PVE.Utils.render_serverity,
width: 100 width: 100
}, },
{ {
header: "Message", header: gettext("Message"),
dataIndex: 'msg', dataIndex: 'msg',
flex: 1 flex: 1
} }
......
...@@ -58,7 +58,7 @@ Ext.define('PVE.dc.Tasks', { ...@@ -58,7 +58,7 @@ Ext.define('PVE.dc.Tasks', {
sortableColumns: false, sortableColumns: false,
columns: [ columns: [
{ {
header: "Start Time", header: gettext("Start Time"),
dataIndex: 'starttime', dataIndex: 'starttime',
width: 100, width: 100,
renderer: function(value) { renderer: function(value) {
...@@ -66,7 +66,7 @@ Ext.define('PVE.dc.Tasks', { ...@@ -66,7 +66,7 @@ Ext.define('PVE.dc.Tasks', {
} }
}, },
{ {
header: "End Time", header: gettext("End Time"),
dataIndex: 'endtime', dataIndex: 'endtime',
width: 100, width: 100,
renderer: function(value, metaData, record) { renderer: function(value, metaData, record) {
...@@ -78,23 +78,23 @@ Ext.define('PVE.dc.Tasks', { ...@@ -78,23 +78,23 @@ Ext.define('PVE.dc.Tasks', {
} }
}, },
{ {
header: "Node", header: gettext("Node"),
dataIndex: 'node', dataIndex: 'node',
width: 100 width: 100
}, },
{ {
header: "User", header: gettext("User name"),
dataIndex: 'user', dataIndex: 'user',
width: 150 width: 150
}, },
{ {
header: "Description", header: gettext("Description"),
dataIndex: 'upid', dataIndex: 'upid',
flex: 1, flex: 1,
renderer: PVE.Utils.render_upid renderer: PVE.Utils.render_upid
}, },
{ {
header: "Status", header: gettext("Status"),
dataIndex: 'status', dataIndex: 'status',
width: 200, width: 200,
renderer: function(value, metaData, record) { renderer: function(value, metaData, record) {
......
...@@ -8,15 +8,15 @@ Ext.define('PVE.form.ViewSelector', { ...@@ -8,15 +8,15 @@ Ext.define('PVE.form.ViewSelector', {
var default_views = { var default_views = {
server: { server: {
text: 'Server View', text: gettext('Server View'),
groups: ['node'] groups: ['node']
}, },
folder: { folder: {
text: 'Folder View', text: gettext('Folder View'),
groups: ['type'] groups: ['type']
}, },
storage: { storage: {
text: 'Storage View', text: gettext('Storage View'),
groups: ['node'], groups: ['node'],
filterfn: function(node) { filterfn: function(node) {
return node.data.type === 'storage'; return node.data.type === 'storage';
......
...@@ -174,11 +174,11 @@ Ext.define('PVE.grid.ResourceGrid', { ...@@ -174,11 +174,11 @@ Ext.define('PVE.grid.ResourceGrid', {
}; };
Ext.apply(me, { Ext.apply(me, {
title: 'Search', title: gettext('Search'),
store: store, store: store,
tbar: [ tbar: [
'->', '->',
'Search:', ' ', gettext('Search') + ':', ' ',
{ {
xtype: 'textfield', xtype: 'textfield',
width: 200, width: 200,
......
...@@ -12,14 +12,13 @@ use PVE::REST; ...@@ -12,14 +12,13 @@ use PVE::REST;
sub send_output { sub send_output {
my ($r, $data) = @_; my ($r, $data) = @_;
my $encdata = encode('UTF-8', $data);
$r->no_cache (1); $r->no_cache (1);
my $x = length ($encdata); my $x = length ($data);
$r->content_type ("text/html;charset=UTF-8"); $r->content_type ("text/html;charset=UTF-8");
$r->headers_out->set ("Content-length", "$x"); $r->headers_out->set ("Content-length", "$x");
$r->headers_out->set ("Pragma", "no-cache"); $r->headers_out->set ("Pragma", "no-cache");
$r->print ($encdata); $r->print ($data);
} }
# NOTE: Requests to this page are not authenticated # NOTE: Requests to this page are not authenticated
......
...@@ -27,24 +27,24 @@ Ext.define('PVE.node.Config', { ...@@ -27,24 +27,24 @@ Ext.define('PVE.node.Config', {
}); });
}; };
var rebootBtn = Ext.create('PVE.button.Button', { var restartBtn = Ext.create('PVE.button.Button', {
text: 'Reboot', text: gettext('Restart'),
confirmMsg: "Do you really want to reboot node '" + nodename + "'?", confirmMsg: Ext.String.format(gettext("Do you really want to restart node {0}?"), nodename),
handler: function() { handler: function() {
node_command('reboot'); node_command('reboot');
} }
}); });
var shutdownBtn = Ext.create('PVE.button.Button', { var shutdownBtn = Ext.create('PVE.button.Button', {
text: 'Shutdown', text: gettext('Shutdown'),
confirmMsg: "Do you really want to shutdown node '" + nodename + "'?", confirmMsg: Ext.String.format(gettext("Do you really want to shutdown node {0}?"), nodename),
handler: function() { handler: function() {
node_command('shutdown'); node_command('shutdown');
} }
}); });
var shellBtn = Ext.create('Ext.Button', { var shellBtn = Ext.create('Ext.Button', {
text: 'Shell', text: gettext('Shell'),
handler: function() { handler: function() {
var url = Ext.urlEncode({ var url = Ext.urlEncode({
console: 'shell', console: 'shell',
...@@ -57,23 +57,23 @@ Ext.define('PVE.node.Config', { ...@@ -57,23 +57,23 @@ Ext.define('PVE.node.Config', {
}); });
Ext.apply(me, { Ext.apply(me, {
title: "Node '" + nodename + "'", title: gettext('Node') + " '" + nodename + "'",
hstateid: 'nodetab', hstateid: 'nodetab',
defaults: { statusStore: me.statusStore }, defaults: { statusStore: me.statusStore },
tbar: [ rebootBtn, shutdownBtn, shellBtn ], tbar: [ restartBtn, shutdownBtn, shellBtn ],
items: [ items: [
{ {
title: 'Summary', title: gettext('Summary'),
itemId: 'summary', itemId: 'summary',
xtype: 'pveNodeSummary' xtype: 'pveNodeSummary'
}, },
{ {
title: 'Services', title: gettext('Services'),
itemId: 'services', itemId: 'services',
xtype: 'pveNodeServiceView' xtype: 'pveNodeServiceView'
}, },
{ {
title: 'Network', title: gettext('Network'),
itemId: 'network', itemId: 'network',
xtype: 'pveNodeNetworkView' xtype: 'pveNodeNetworkView'
}, },
...@@ -83,7 +83,7 @@ Ext.define('PVE.node.Config', { ...@@ -83,7 +83,7 @@ Ext.define('PVE.node.Config', {
xtype: 'pveNodeDNSView' xtype: 'pveNodeDNSView'
}, },
{ {
title: 'Time', title: gettext('Time'),
itemId: 'time', itemId: 'time',
xtype: 'pveNodeTimeView' xtype: 'pveNodeTimeView'
}, },
...@@ -112,7 +112,7 @@ Ext.define('PVE.node.Config', { ...@@ -112,7 +112,7 @@ Ext.define('PVE.node.Config', {
var uptimerec = s.data.get('uptime'); var uptimerec = s.data.get('uptime');
var uptime = uptimerec ? uptimerec.data.value : false; var uptime = uptimerec ? uptimerec.data.value : false;
rebootBtn.setDisabled(!uptime); restartBtn.setDisabled(!uptime);
shutdownBtn.setDisabled(!uptime); shutdownBtn.setDisabled(!uptime);
shellBtn.setDisabled(!uptime); shellBtn.setDisabled(!uptime);
}); });
......
...@@ -54,7 +54,7 @@ Ext.define('PVE.node.Tasks', { ...@@ -54,7 +54,7 @@ Ext.define('PVE.node.Tasks', {
}; };
var view_btn = new Ext.Button({ var view_btn = new Ext.Button({
text: 'View', text: gettext('View'),
disabled: true, disabled: true,
handler: run_task_viewer handler: run_task_viewer
}); });
...@@ -79,7 +79,7 @@ Ext.define('PVE.node.Tasks', { ...@@ -79,7 +79,7 @@ Ext.define('PVE.node.Tasks', {
} }
}, },
tbar: [ tbar: [
view_btn, '->', 'User:', ' ', view_btn, '->', gettext('User name') +':', ' ',
{ {
xtype: 'textfield', xtype: 'textfield',
width: 200, width: 200,
...@@ -91,7 +91,7 @@ Ext.define('PVE.node.Tasks', { ...@@ -91,7 +91,7 @@ Ext.define('PVE.node.Tasks', {
reload_task.delay(500); reload_task.delay(500);
} }
} }
}, ' ', 'Only Errors:', ' ', }, ' ', gettext('Only Errors') + ':', ' ',
{ {
xtype: 'checkbox', xtype: 'checkbox',
hideLabel: true, hideLabel: true,
...@@ -107,34 +107,40 @@ Ext.define('PVE.node.Tasks', { ...@@ -107,34 +107,40 @@ Ext.define('PVE.node.Tasks', {
sortableColumns: false, sortableColumns: false,
columns: [ columns: [
{ {
header: "Start Time", dataIndex: 'starttime', header: gettext("Start Time"),
dataIndex: 'starttime',
width: 100, width: 100,
renderer: function(value) { renderer: function(value) {
return Ext.Date.format(value, "M d H:i:s"); return Ext.Date.format(value, "M d H:i:s");
} }
}, },
{ {
header: "End Time", dataIndex: 'endtime', header: gettext("End Time"),
dataIndex: 'endtime',
width: 100, width: 100,
renderer: function(value, metaData, record) { renderer: function(value, metaData, record) {
return Ext.Date.format(value,"M d H:i:s"); return Ext.Date.format(value,"M d H:i:s");
} }
}, },
{ {
header: "Node", dataIndex: 'node', header: gettext("Node"),
dataIndex: 'node',
width: 100 width: 100
}, },
{ {
header: "User", dataIndex: 'user', header: gettext("User name"),
dataIndex: 'user',
width: 150 width: 150
}, },
{ {
header: "Description", dataIndex: 'upid', header: gettext("Description"),
dataIndex: 'upid',
flex: 1, flex: 1,
renderer: PVE.Utils.render_upid renderer: PVE.Utils.render_upid
}, },
{ {
header: "Status", dataIndex: 'status', header: gettext("Status"),
dataIndex: 'status',
width: 200, width: 200,
renderer: function(value, metaData, record) { renderer: function(value, metaData, record) {
if (value == 'OK') { if (value == 'OK') {
......
...@@ -27,18 +27,18 @@ Ext.define('PVE.openvz.CmdMenu', { ...@@ -27,18 +27,18 @@ Ext.define('PVE.openvz.CmdMenu', {
me.items = [ me.items = [
{ {
text: 'Start', text: gettext('Start'),
icon: '/pve2/images/start.png', icon: '/pve2/images/start.png',
handler: function() { handler: function() {
vm_command('start'); vm_command('start');
} }
}, },
{ {
text: 'Shutdown', text: gettext('Shutdown'),
icon: '/pve2/images/stop.png', icon: '/pve2/images/stop.png',
handler: function() { handler: function() {
var msg = "Do you really want to shutdown the VM?"; var msg = Ext.String.format(gettext("Do you really want to shutdown VM {0}?"), me.vmid);
Ext.Msg.confirm('Confirmation', msg, function(btn) { Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
if (btn !== 'yes') { if (btn !== 'yes') {
return; return;
} }
...@@ -48,7 +48,7 @@ Ext.define('PVE.openvz.CmdMenu', { ...@@ -48,7 +48,7 @@ Ext.define('PVE.openvz.CmdMenu', {
} }
}, },
{ {
text: 'Console', text: gettext('Console'),
icon: '/pve2/images/display.png', icon: '/pve2/images/display.png',
handler: function() { handler: function() {
PVE.Utils.openConoleWindow('openvz', me.vmid, me.nodename); PVE.Utils.openConoleWindow('openvz', me.vmid, me.nodename);
......
...@@ -33,30 +33,30 @@ Ext.define('PVE.openvz.Config', { ...@@ -33,30 +33,30 @@ Ext.define('PVE.openvz.Config', {
}; };
var startBtn = Ext.create('Ext.Button', { var startBtn = Ext.create('Ext.Button', {
text: 'Start', text: gettext('Start'),
handler: function() { handler: function() {
vm_command('start'); vm_command('start');
} }
}); });
var stopBtn = Ext.create('PVE.button.Button', { var stopBtn = Ext.create('PVE.button.Button', {
text: 'Stop', text: gettext('Stop'),
confirmMsg: "Do you really want to stop the VM?", confirmMsg: Ext.String.format(gettext("Do you really want to stop VM {0}?"), vmid),
handler: function() { handler: function() {
vm_command("stop", { fast: 1 }); vm_command("stop", { fast: 1 });
} }
}); });
var shutdownBtn = Ext.create('PVE.button.Button', { var shutdownBtn = Ext.create('PVE.button.Button', {
text: 'Shutdown', text: gettext('Shutdown'),
confirmMsg: "Do you really want to shutdown the VM?", confirmMsg: Ext.String.format(gettext("Do you really want to shutdown VM {0}?"), vmid),
handler: function() { handler: function() {
vm_command('stop'); vm_command('stop');
} }
}); });
var migrateBtn = Ext.create('Ext.Button', { var migrateBtn = Ext.create('Ext.Button', {
text: 'Migrate', text: gettext('Migrate'),
handler: function() { handler: function() {
var win = Ext.create('PVE.window.Migrate', { var win = Ext.create('PVE.window.Migrate', {
vmtype: 'openvz', vmtype: 'openvz',
...@@ -68,9 +68,8 @@ Ext.define('PVE.openvz.Config', { ...@@ -68,9 +68,8 @@ Ext.define('PVE.openvz.Config', {
}); });
var removeBtn = Ext.create('PVE.button.Button', { var removeBtn = Ext.create('PVE.button.Button', {
text: 'Remove', text: gettext('Remove'),
confirmMsg: 'Are you sure you want to remove VM ' + confirmMsg: Ext.String.format(gettext('Are you sure you want to remove VM {0}? This will permanently erase all VM data.'), vmid),
vmid + '? This will permanently erase all VM data.',
handler: function() { handler: function() {
PVE.Utils.API2Request({ PVE.Utils.API2Request({
url: '/nodes/' + nodename + '/openvz/' + vmid, url: '/nodes/' + nodename + '/openvz/' + vmid,
...@@ -84,34 +83,34 @@ Ext.define('PVE.openvz.Config', { ...@@ -84,34 +83,34 @@ Ext.define('PVE.openvz.Config', {
}); });
var consoleBtn = Ext.create('Ext.Button', { var consoleBtn = Ext.create('Ext.Button', {
text: 'Console', text: gettext('Console'),
handler: function() { handler: function() {
PVE.Utils.openConoleWindow('openvz', vmid, nodename); PVE.Utils.openConoleWindow('openvz', vmid, nodename);
} }
}); });
var vmname = me.pveSelNode.data.name; var vmname = me.pveSelNode.data.name;
var descr = vmname ? " '" + vmname + "'" : ''; var descr = vmid + " (" + (vmname ? "'" + vmname + "' " : "'CT " + vmid + "'") + ")";
Ext.apply(me, { Ext.apply(me, {
title: "OpenVZ container " + vmid + descr + title: Ext.String.format(gettext("Container {0} on node {1}"), descr, "'" + nodename + "'"),
" on node '" + nodename + "'",
hstateid: 'ovztab', hstateid: 'ovztab',
tbar: [ startBtn, stopBtn, shutdownBtn, migrateBtn, tbar: [ startBtn, stopBtn, shutdownBtn, migrateBtn,
removeBtn, consoleBtn ], removeBtn, consoleBtn ],
defaults: { statusStore: me.statusStore }, defaults: { statusStore: me.statusStore },
items: [ items: [
{ {
title: 'Summary', title: gettext('Summary'),
xtype: 'pveOpenVZSummary', xtype: 'pveOpenVZSummary',
itemId: 'summary' itemId: 'summary'
}, },
{ {
title: 'Ressources', title: gettext('Resources'),
itemId: 'ressources', itemId: 'resources',
xtype: 'pveOpenVZRessourceView' xtype: 'pveOpenVZRessourceView'
}, },
{ {
title: 'Network', title: gettext('Network'),
itemId: 'network', itemId: 'network',
xtype: 'pveOpenVZNetworkView' xtype: 'pveOpenVZNetworkView'
}, },
...@@ -121,7 +120,7 @@ Ext.define('PVE.openvz.Config', { ...@@ -121,7 +120,7 @@ Ext.define('PVE.openvz.Config', {
xtype: 'pveOpenVZDNS' xtype: 'pveOpenVZDNS'
}, },
{ {
title: 'Options', title: gettext('Options'),
itemId: 'options', itemId: 'options',
xtype: 'pveOpenVZOptions' xtype: 'pveOpenVZOptions'
}, },
...@@ -138,12 +137,12 @@ Ext.define('PVE.openvz.Config', { ...@@ -138,12 +137,12 @@ Ext.define('PVE.openvz.Config', {
url: '/api2/extjs/nodes/' + nodename + '/openvz/' + vmid + '/initlog' url: '/api2/extjs/nodes/' + nodename + '/openvz/' + vmid + '/initlog'
}, },
{ {
title: gettext('Backup'),
xtype: 'pveBackupView', xtype: 'pveBackupView',
title: 'Backup',
itemId: 'backup' itemId: 'backup'
}, },
{ {
title: 'Permissions', title: gettext('Permissions'),
itemId: 'permissions', itemId: 'permissions',
html: 'permissions ' + vmid html: 'permissions ' + vmid
} }
......
...@@ -33,12 +33,12 @@ Ext.define('PVE.panel.StatusPanel', { ...@@ -33,12 +33,12 @@ Ext.define('PVE.panel.StatusPanel', {
items: [ items: [
{ {
itemId: 'tasks', itemId: 'tasks',
title: 'Recent tasks', title: gettext('Tasks'),
xtype: 'pveClusterTasks' xtype: 'pveClusterTasks'
}, },
{ {
itemId: 'clog', itemId: 'clog',
title: 'Cluster log', title: gettext('Cluster log'),
xtype: 'pveClusterLog' xtype: 'pveClusterLog'
} }
] ]
......
...@@ -27,18 +27,18 @@ Ext.define('PVE.qemu.CmdMenu', { ...@@ -27,18 +27,18 @@ Ext.define('PVE.qemu.CmdMenu', {
me.items = [ me.items = [
{ {
text: 'Start', text: gettext('Start'),
icon: '/pve2/images/start.png', icon: '/pve2/images/start.png',
handler: function() { handler: function() {
vm_command('start'); vm_command('start');
} }
}, },
{ {
text: 'Shutdown', text: gettext('Shutdown'),
icon: '/pve2/images/stop.png', icon: '/pve2/images/stop.png',
handler: function() { handler: function() {
var msg = "Do you really want to shutdown the VM?"; var msg = Ext.String.format(gettext("Do you really want to shutdown VM {0}?"), me.vmid);
Ext.Msg.confirm('Confirmation', msg, function(btn) { Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
if (btn !== 'yes') { if (btn !== 'yes') {
return; return;
} }
...@@ -48,7 +48,7 @@ Ext.define('PVE.qemu.CmdMenu', { ...@@ -48,7 +48,7 @@ Ext.define('PVE.qemu.CmdMenu', {
} }
}, },
{ {
text: 'Console', text: gettext('Console'),
icon: '/pve2/images/display.png', icon: '/pve2/images/display.png',
handler: function() { handler: function() {
PVE.Utils.openConoleWindow('kvm', me.vmid, me.nodename); PVE.Utils.openConoleWindow('kvm', me.vmid, me.nodename);
......
...@@ -33,22 +33,22 @@ Ext.define('PVE.qemu.Config', { ...@@ -33,22 +33,22 @@ Ext.define('PVE.qemu.Config', {
}; };
var startBtn = Ext.create('Ext.Button', { var startBtn = Ext.create('Ext.Button', {
text: 'Start', text: gettext('Start'),
handler: function() { handler: function() {
vm_command('start'); vm_command('start');
} }
}); });
var stopBtn = Ext.create('PVE.button.Button', { var stopBtn = Ext.create('PVE.button.Button', {
text: 'Stop', text: gettext('Stop'),
confirmMsg: "Do you really want to stop the VM?", confirmMsg: Ext.String.format(gettext("Do you really want to stop VM {0}?"), vmid),
handler: function() { handler: function() {
vm_command("stop", { timeout: 30 }); vm_command("stop", { timeout: 30 });
} }
}); });
var migrateBtn = Ext.create('Ext.Button', { var migrateBtn = Ext.create('Ext.Button', {
text: 'Migrate', text: gettext('Migrate'),
handler: function() { handler: function() {
var win = Ext.create('PVE.window.Migrate', { var win = Ext.create('PVE.window.Migrate', {
vmtype: 'qemu', vmtype: 'qemu',
...@@ -60,8 +60,8 @@ Ext.define('PVE.qemu.Config', { ...@@ -60,8 +60,8 @@ Ext.define('PVE.qemu.Config', {
}); });
var resetBtn = Ext.create('PVE.button.Button', { var resetBtn = Ext.create('PVE.button.Button', {
text: 'Reset', text: gettext('Reset'),
confirmMsg: "Do you really want to reset the VM?", confirmMsg: Ext.String.format(gettext("Do you really want to reset VM {0}?"), vmid),
handler: function() { handler: function() {
vm_command("reset"); vm_command("reset");
} }
...@@ -69,16 +69,15 @@ Ext.define('PVE.qemu.Config', { ...@@ -69,16 +69,15 @@ Ext.define('PVE.qemu.Config', {
var shutdownBtn = Ext.create('PVE.button.Button', { var shutdownBtn = Ext.create('PVE.button.Button', {
text: gettext('Shutdown'), text: gettext('Shutdown'),
confirmMsg: "Do you really want to shutdown the VM?", confirmMsg: Ext.String.format(gettext("Do you really want to shutdown VM {0}?"), vmid),
handler: function() { handler: function() {
vm_command('shutdown', { timeout: 30 }); vm_command('shutdown', { timeout: 30 });
} }
}); });
var removeBtn = Ext.create('PVE.button.Button', { var removeBtn = Ext.create('PVE.button.Button', {
text: 'Remove', text: gettext('Remove'),
confirmMsg: 'Are you sure you want to remove VM ' + confirmMsg: Ext.String.format(gettext('Are you sure you want to remove VM {0}? This will permanently erase all VM data.'), vmid),
vmid + '? This will permanently erase all VM data.',
handler: function() { handler: function() {
PVE.Utils.API2Request({ PVE.Utils.API2Request({
url: '/nodes/' + nodename + '/qemu/' + vmid, url: '/nodes/' + nodename + '/qemu/' + vmid,
...@@ -92,49 +91,49 @@ Ext.define('PVE.qemu.Config', { ...@@ -92,49 +91,49 @@ Ext.define('PVE.qemu.Config', {
}); });
var consoleBtn = Ext.create('Ext.Button', { var consoleBtn = Ext.create('Ext.Button', {
text: 'Console', text: gettext('Console'),
handler: function() { handler: function() {
PVE.Utils.openConoleWindow('kvm', vmid, nodename); PVE.Utils.openConoleWindow('kvm', vmid, nodename);
} }
}); });
var vmname = me.pveSelNode.data.name; var vmname = me.pveSelNode.data.name;
var descr = vmname ? "'" + vmname + "' " : ''; var descr = vmid + " (" + (vmname ? "'" + vmname + "' " : "'VM " + vmid + "'") + ")";
Ext.apply(me, { Ext.apply(me, {
title: "Virtual machine " + descr + "'KVM " + vmid + title: Ext.String.format(gettext("Virtual machine {0} on node {1}"), descr, "'" + nodename + "'"),
"' on node '" + nodename + "'",
hstateid: 'kvmtab', hstateid: 'kvmtab',
tbar: [ startBtn, stopBtn, resetBtn, shutdownBtn, tbar: [ startBtn, stopBtn, resetBtn, shutdownBtn,
migrateBtn, removeBtn, consoleBtn ], migrateBtn, removeBtn, consoleBtn ],
defaults: { statusStore: me.statusStore }, defaults: { statusStore: me.statusStore },
items: [ items: [
{ {
title: 'Summary', title: gettext('Summary'),
xtype: 'pveQemuSummary', xtype: 'pveQemuSummary',
itemId: 'summary' itemId: 'summary'
}, },
{ {
title: 'Hardware', title: gettext('Hardware'),
itemId: 'hardware', itemId: 'hardware',
xtype: 'PVE.qemu.HardwareView' xtype: 'PVE.qemu.HardwareView'
}, },
{ {
title: 'Options', title: gettext('Options'),
itemId: 'options', itemId: 'options',
xtype: 'PVE.qemu.Options' xtype: 'PVE.qemu.Options'
}, },
{ {
title: 'Monitor', title: gettext('Monitor'),
itemId: 'monitor', itemId: 'monitor',
xtype: 'pveQemuMonitor' xtype: 'pveQemuMonitor'
}, },
{ {
title: gettext('Backup'),
xtype: 'pveBackupView', xtype: 'pveBackupView',
title: 'Backup',
itemId: 'backup' itemId: 'backup'
}, },
{ {
title: 'Permissions', title: gettext('Permissions'),
itemId: 'permissions', itemId: 'permissions',
html: 'permissions ' + vmid html: 'permissions ' + vmid
} }
......
...@@ -16,21 +16,22 @@ Ext.define('PVE.storage.Browser', { ...@@ -16,21 +16,22 @@ Ext.define('PVE.storage.Browser', {
} }
Ext.apply(me, { Ext.apply(me, {
title: "Storage '" + storeid + "'" + "' on node '" + nodename + "'", title: Ext.String.format(gettext("Storage {0} on node {1}"),
"'" + storeid + "'", "'" + nodename + "'"),
hstateid: 'storagetab', hstateid: 'storagetab',
items: [ items: [
{ {
title: 'Summary', title: gettext('Summary'),
xtype: 'pveStorageSummary', xtype: 'pveStorageSummary',
itemId: 'summary' itemId: 'summary'
}, },
{ {
xtype: 'pveStorageContentView', xtype: 'pveStorageContentView',
title: 'Content', title: gettext('Content'),
itemId: 'content' itemId: 'content'
}, },
{ {
title: 'Permissions', title: gettext('Permissions'),
itemId: 'permissions', itemId: 'permissions',
html: 'Permissions ' html: 'Permissions '
} }
......
...@@ -10,19 +10,19 @@ Ext.define('PVE.tree.ResourceTree', { ...@@ -10,19 +10,19 @@ Ext.define('PVE.tree.ResourceTree', {
typeDefaults: { typeDefaults: {
node: { node: {
iconCls: 'x-tree-node-server', iconCls: 'x-tree-node-server',
text: 'Node list' text: gettext('Node list')
}, },
storage: { storage: {
iconCls: 'x-tree-node-harddisk', iconCls: 'x-tree-node-harddisk',
text: 'Storage list' text: gettext('Storage list')
}, },
qemu: { qemu: {
iconCls: 'x-tree-node-computer', iconCls: 'x-tree-node-computer',
text: 'Virtual machines' text: gettext('Virtual machines')
}, },
openvz: { openvz: {
iconCls: 'x-tree-node-openvz', iconCls: 'x-tree-node-openvz',
text: 'OpenVZ containers' text: gettext('OpenVZ containers')
} }
} }
}, },
...@@ -182,7 +182,7 @@ Ext.define('PVE.tree.ResourceTree', { ...@@ -182,7 +182,7 @@ Ext.define('PVE.tree.ResourceTree', {
root: { root: {
expanded: true, expanded: true,
id: 'root', id: 'root',
text: "Datacenter" text: gettext('Datacenter')
} }
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment