summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Geyer <debfx-pkg@fobos.de>2012-04-03 12:19:03 +0200
committerFelix Geyer <debfx-pkg@fobos.de>2012-04-03 12:19:03 +0200
commit6a1462fb0cb98679b90307e339e743ca8ab79c2e (patch)
tree0edcad457592806eefaec05eb7e9871bc8677003
parent3680e94d215e45bf5fe8b77e2ca766da040af0be (diff)
parent33be59505fa5b77991d31fa53cfcd2034366da62 (diff)
downloadvirtualbox-6a1462fb0cb98679b90307e339e743ca8ab79c2e.tar.gz
Merge tag 'upstream/4.1.12-dfsg'
Upstream version 4.1.12-dfsg
-rw-r--r--Config.kmk4
-rwxr-xr-xconfigure30
-rw-r--r--doc/manual/en_US/user_BasicConcepts.xml4
-rw-r--r--doc/manual/en_US/user_Frontends.xml2
-rw-r--r--doc/manual/en_US/user_Installation.xml2
-rw-r--r--doc/manual/en_US/user_Troubleshooting.xml69
-rw-r--r--doc/manual/en_US/user_VBoxManage.xml27
-rw-r--r--doc/manual/user_ChangeLogImpl.xml74
-rw-r--r--include/VBox/RemoteDesktop/VRDE.h14
-rw-r--r--include/VBox/VBoxCrHgsmi.h7
-rw-r--r--include/VBox/VBoxGuest.h5
-rw-r--r--include/VBox/VBoxGuestLib.h12
-rw-r--r--src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp20
-rw-r--r--src/VBox/Additions/common/VBoxGuestLib/HGCM.cpp15
-rw-r--r--src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk1
-rw-r--r--src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR0LibCrOgl.cpp118
-rw-r--r--src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR0LibCrOgl.h39
-rw-r--r--src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibGuestCtrl.cpp4
-rw-r--r--src/VBox/Additions/common/VBoxService/VBoxService.cpp2
-rw-r--r--src/VBox/Additions/common/VBoxService/VBoxServiceControl.cpp106
-rw-r--r--src/VBox/Additions/common/VBoxService/VBoxServiceControlThread.cpp216
-rw-r--r--src/VBox/Additions/common/VBoxService/VBoxServiceInternal.h5
-rw-r--r--src/VBox/Additions/common/VBoxService/VBoxServiceToolBox.cpp2
-rw-r--r--src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo-win.cpp21
-rw-r--r--src/VBox/Additions/common/crOpenGL/array/arrayspu.c17
-rw-r--r--src/VBox/Additions/common/crOpenGL/array/arrayspu_init.c31
-rw-r--r--src/VBox/Additions/common/crOpenGL/feedback/feedback_state_special2
-rw-r--r--src/VBox/Additions/common/crOpenGL/feedback/feedbackspu_init.c31
-rw-r--r--src/VBox/Additions/common/crOpenGL/load.c19
-rw-r--r--src/VBox/Additions/common/crOpenGL/pack/packspu_getshaders.c7
-rw-r--r--src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c20
-rw-r--r--src/VBox/Additions/common/crOpenGL/pack/packspu_special4
-rwxr-xr-xsrc/VBox/Additions/linux/installer/vboxadd-x11.sh2
-rw-r--r--src/VBox/Additions/linux/sharedfolders/vfsmod.c11
-rw-r--r--src/VBox/Devices/Audio/coreaudio.c37
-rw-r--r--src/VBox/Devices/Audio/noaudio.c9
-rw-r--r--src/VBox/Devices/Network/slirp/libalias/alias_db.c48
-rw-r--r--src/VBox/Devices/Network/slirp/socket.c7
-rw-r--r--src/VBox/Devices/Network/slirp/socket.h5
-rw-r--r--src/VBox/Devices/Network/slirp/tcp_subr.c1
-rw-r--r--src/VBox/Devices/VMMDev/VMMDevHGCM.cpp27
-rw-r--r--src/VBox/Frontends/VBoxBFE/MachineDebuggerImpl.cpp4
-rw-r--r--src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp4
-rw-r--r--src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp3
-rw-r--r--src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp79
-rw-r--r--src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp1
-rw-r--r--src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp39
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_ar.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_en.ts12
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts431
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts1096
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts239
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts1090
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts1057
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts9093
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts4
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/qt_hu.ts254
-rw-r--r--src/VBox/GuestHost/OpenGL/glapi_parser/APIspec.txt4
-rw-r--r--src/VBox/GuestHost/OpenGL/include/cr_glstate.h3
-rw-r--r--src/VBox/GuestHost/OpenGL/state_tracker/state_init.c10
-rw-r--r--src/VBox/GuestHost/OpenGL/util/vboxhgcm.c129
-rw-r--r--src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFltBow-solaris.c4
-rw-r--r--src/VBox/HostServices/GuestControl/service.cpp30
-rw-r--r--src/VBox/HostServices/GuestProperties/service.cpp12
-rw-r--r--src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp8
-rw-r--r--src/VBox/HostServices/SharedOpenGL/crserverlib/server_getshaders.c7
-rw-r--r--src/VBox/Installer/linux/Makefile.kmk8
-rw-r--r--src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec25
-rwxr-xr-xsrc/VBox/Installer/linux/rpm/rules128
-rw-r--r--src/VBox/Main/glue/glue-java.xsl12
-rw-r--r--src/VBox/Main/include/ConsoleImpl.h4
-rw-r--r--src/VBox/Main/include/GuestCtrlImplPrivate.h9
-rw-r--r--src/VBox/Main/include/GuestImpl.h42
-rw-r--r--src/VBox/Main/include/MachineImpl.h2
-rw-r--r--src/VBox/Main/include/VirtualBoxImpl.h13
-rw-r--r--src/VBox/Main/src-all/ExtPackManagerImpl.cpp5
-rw-r--r--src/VBox/Main/src-all/Global.cpp18
-rw-r--r--src/VBox/Main/src-client/ConsoleImpl.cpp121
-rw-r--r--src/VBox/Main/src-client/ConsoleVRDPServer.cpp41
-rw-r--r--src/VBox/Main/src-client/GuestCtrlImpl.cpp771
-rw-r--r--src/VBox/Main/src-client/GuestCtrlImplDir.cpp68
-rw-r--r--src/VBox/Main/src-client/GuestCtrlImplFile.cpp55
-rw-r--r--src/VBox/Main/src-client/GuestCtrlImplTasks.cpp258
-rw-r--r--src/VBox/Main/src-client/GuestImpl.cpp8
-rw-r--r--src/VBox/Main/src-server/HostImpl.cpp1
-rw-r--r--src/VBox/Main/src-server/MachineImpl.cpp14
-rw-r--r--src/VBox/Main/src-server/MachineImplCloneVM.cpp10
-rw-r--r--src/VBox/Main/src-server/MediumImpl.cpp123
-rw-r--r--src/VBox/Main/src-server/Performance.cpp33
-rw-r--r--src/VBox/Main/src-server/SnapshotImpl.cpp9
-rw-r--r--src/VBox/Main/src-server/VirtualBoxImpl.cpp305
-rw-r--r--src/VBox/Main/webservice/Makefile.kmk9
-rw-r--r--src/VBox/Runtime/testcase/tstRTR0SemMutexDriver.cpp4
-rw-r--r--src/VBox/Storage/VD.cpp9
-rw-r--r--src/VBox/Storage/VDI.cpp2
-rw-r--r--src/VBox/Storage/VMDK.cpp2
-rw-r--r--src/VBox/VMM/VMMAll/IOMAllMMIO.cpp9
-rw-r--r--src/VBox/VMM/VMMR0/HWVMXR0.cpp7
-rw-r--r--src/VBox/VMM/VMMR3/EM.cpp56
-rw-r--r--src/VBox/VMM/VMMR3/PDMAsyncCompletionFile.cpp11
125 files changed, 6298 insertions, 10688 deletions
diff --git a/Config.kmk b/Config.kmk
index 4fffdfaf4..21b375533 100644
--- a/Config.kmk
+++ b/Config.kmk
@@ -192,7 +192,7 @@ VBOX_VERSION_MINOR = 1
# This is the current build number. It should be increased every time we publish a
# new build. The define is available in every source file. Only even build numbers
# will be published, odd numbers are set during development.
-VBOX_VERSION_BUILD = 10
+VBOX_VERSION_BUILD = 12
# The raw version string. This *must not* contain any other information/fields than
# major, minor and build revision (as it is now) -- also will be used for host/guest version
# comparison.
@@ -4882,7 +4882,7 @@ endif
SVN ?= svn$(HOSTSUFF_EXE)
VBOX_SVN_REV_KMK = $(PATH_OUT)/revision.kmk
ifndef VBOX_SVN_REV
- VBOX_SVN_REV_FALLBACK := $(patsubst %:,, $Rev: 76795 $ )
+ VBOX_SVN_REV_FALLBACK := $(patsubst %:,, $Rev: 77218 $ )
VBOX_SVN_DEP := $(wildcard $(PATH_ROOT)/.svn/entries)
ifeq ($(which $(SVN)),)
VBOX_SVN_DEP :=
diff --git a/configure b/configure
index d8d47a9d9..b5295be9f 100755
--- a/configure
+++ b/configure
@@ -900,14 +900,14 @@ extern "C" int main()
for (; *v !='.' && *v != '\0'; v++) micro = micro*10 + *v-'0';
printf("found version %s", LIBVNCSERVER_PACKAGE_VERSION);
- if (major*10000 + minor*100 + micro >= 907)
+ if (major*10000 + minor*100 + micro >= 900)
{
printf(", OK.\n");
return 0;
}
else
{
- printf(", expected version 0.9.7 or higher\n");
+ printf(", expected version 0.9 or higher\n");
return 1;
}
}
@@ -1936,6 +1936,30 @@ setup_wine()
check_gsoap()
{
test_header "GSOAP compiler"
+ if [ -z "$GSOAP" -a -z "$GSOAP_IMPORT" ]; then
+ if which_wrapper pkg-config > /dev/null; then
+ GSOAP_CXX_LIBS=`pkg-config gsoapssl++ --libs 2>> $LOG`
+ if [ $? -eq 0 ]; then
+ GSOAP=`pkg-config gsoapssl++ --variable=exec_prefix`
+ GSOAP_IMPORT="$GSOAP/share/gsoap/import"
+ if [ ! -d "$GSOAP_IMPORT" -a -d "$GSOAP/include/gsoap" ]; then
+ GSOAP_IMPORT="$GSOAP/include/gsoap"
+ fi
+ cnf_append "VBOX_GSOAP_INSTALLED" "1"
+ cnf_append "VBOX_PATH_GSOAP" "$GSOAP"
+ cnf_append "VBOX_PATH_GSOAP_IMPORT" "$GSOAP_IMPORT"
+ if [ -f "$GSOAP/share/gsoap/stdsoap2.cpp" ]; then
+ cnf_append "VBOX_GSOAP_CXX_SOURCES" "$GSOAP/share/gsoap/stdsoap2.cpp"
+ else
+ cnf_append "VBOX_GSOAP_CXX_SOURCES" ""
+ fi
+ cnf_append "VBOX_GSOAP_CXX_LIBS" "`strip_l "$GSOAP_CXX_LIBS"`"
+ gsoap_version=`pkg-config gsoapssl++ --modversion`
+ log_success "found version $gsoap_version"
+ return
+ fi
+ fi
+ fi
if [ -z "$GSOAP" ]; then
GSOAP="/usr"
fi
@@ -1959,7 +1983,7 @@ check_gsoap()
else
cnf_append "VBOX_GSOAP_CXX_SOURCES" ""
fi
- cnf_append "VBOX_GSOAP_CXX_LIBS" "libgsoap++"
+ cnf_append "VBOX_GSOAP_CXX_LIBS" "libgsoapssl++"
log_success "found"
else
log_failure "stlvector.h not found -- disabling webservice"
diff --git a/doc/manual/en_US/user_BasicConcepts.xml b/doc/manual/en_US/user_BasicConcepts.xml
index 2550f6c8a..9bf1f3c43 100644
--- a/doc/manual/en_US/user_BasicConcepts.xml
+++ b/doc/manual/en_US/user_BasicConcepts.xml
@@ -78,7 +78,7 @@
higher for better performance.<note>
<para>Certain Linux kernel releases have bugs that prevent
them from executing in a virtual environment; please see <xref
- linkend="trouble-linux-buggy" /> for details.</para>
+ linkend="ts_linux-buggy" /> for details.</para>
</note></para>
</glossdef>
</glossentry>
@@ -1271,7 +1271,7 @@
The <computeroutput>Driver=</computeroutput> entry in
<computeroutput>/proc/bus/usb/devices</computeroutput> will show you
which devices are currently claimed. Please refer to <xref
- linkend="usb_linux" /> also for details about
+ linkend="ts_usb-linux" /> also for details about
<computeroutput>usbfs</computeroutput>.</para>
</sect2>
</sect1>
diff --git a/doc/manual/en_US/user_Frontends.xml b/doc/manual/en_US/user_Frontends.xml
index 98f7adf70..9045922c3 100644
--- a/doc/manual/en_US/user_Frontends.xml
+++ b/doc/manual/en_US/user_Frontends.xml
@@ -344,7 +344,7 @@
follows:<screen>rdesktop-vrdp -r usb -a 16 -N my.host.address</screen>Note
that <computeroutput>rdesktop-vrdp</computeroutput> can access USB
devices only through <computeroutput>/proc/bus/usb</computeroutput>.
- Please refer to <xref linkend="usb_linux" /> for further details on how
+ Please refer to <xref linkend="ts_usb-linux" /> for further details on how
to properly set up the permissions. Furthermore it is advisable to
disable automatic loading of any host driver on the remote host which
might work on USB devices to ensure that the devices are accessible by
diff --git a/doc/manual/en_US/user_Installation.xml b/doc/manual/en_US/user_Installation.xml
index c7f60064a..67a9fc394 100644
--- a/doc/manual/en_US/user_Installation.xml
+++ b/doc/manual/en_US/user_Installation.xml
@@ -414,7 +414,7 @@
<para>If a suitable kernel module was found in the package or the
module was successfully built, the installation script will attempt to
load that module. If this fails, please see <xref
- linkend="linuxkernelmodulefailstoload" /> for further
+ linkend="ts_linux-kernelmodule-fails-to-load" /> for further
information.</para>
<para>Once VirtualBox has been successfully installed and configured,
diff --git a/doc/manual/en_US/user_Troubleshooting.xml b/doc/manual/en_US/user_Troubleshooting.xml
index 052d92cf3..f72c2f1c0 100644
--- a/doc/manual/en_US/user_Troubleshooting.xml
+++ b/doc/manual/en_US/user_Troubleshooting.xml
@@ -155,7 +155,7 @@
</sect2>
<sect2>
- <title id="debugger">The built-in VM debugger</title>
+ <title id="ts_debugger">The built-in VM debugger</title>
<para>VirtualBox includes a built-in VM debugger, which advanced users
may find useful. This debugger allows for examining and, to some extent,
@@ -305,7 +305,7 @@
<listitem>
<para><computeroutput>writecore</computeroutput> -- writes a VM
- core file to disk, refer <xref linkend="guestcoreformat" /></para>
+ core file to disk, refer <xref linkend="ts_guest-core-format" /></para>
</listitem>
</itemizedlist></para>
@@ -405,7 +405,7 @@
provided can be invaluable.</para>
</sect2>
- <sect2 id="guestcoreformat">
+ <sect2 id="ts_guest-core-format">
<title>VM core format</title>
<para>VirtualBox uses the 64-bit ELF format for its VM core files
@@ -456,7 +456,7 @@
<sect1>
<title>General</title>
- <sect2 id="configPeriodicFlush">
+ <sect2 id="ts_config-periodic-flush">
<title>Guest shows IDE/SATA errors for file-based images on slow host
file system</title>
@@ -542,13 +542,13 @@
29.</para>
<para>Note that this doesn't affect the flushes performed according to
- the configuration described in <xref linkend="configPeriodicFlush"
+ the configuration described in <xref linkend="ts_config-periodic-flush"
xrefstyle="template: %n" />. Restoring the default of ignoring flush
commands is possible by setting the value to 1 or by removing the
key.</para>
</sect2>
- <sect2 id="hostPowerMgmt">
+ <sect2 id="ts_host-powermgmt">
<title>Poor performance caused by host power management</title>
<para>On some hardware platforms and operating systems, virtualization
@@ -568,7 +568,7 @@
considered.</para>
</sect2>
- <sect2 id="gui2D_grayedout">
+ <sect2 id="ts_gui-2d-grayed-out">
<title>GUI: 2D Video Acceleration option is grayed out</title>
<para>To use 2D Video Acceleration within VirtualBox, your host's video
@@ -744,15 +744,15 @@
<sect2>
<title>USB tablet coordinates wrong in Windows 98 guests</title>
- <para>If a Windows 98 VM is configured to use the emulated USB tablet
- (absolute pointing device), the coordinate translation may be incorrect
- and the pointer is restricted to the upper left quarter of the guest's
+ <para>If a Windows 98 VM is configured to use the emulated USB tablet
+ (absolute pointing device), the coordinate translation may be incorrect
+ and the pointer is restricted to the upper left quarter of the guest's
screen.
</para>
- <para>The USB HID (Human Interface Device) drivers in Windows 98 are very
- old and do not handle tablets the same way all more recent operating
- systems do (Windows 2000 and later, Mac OS X, Solaris). To
+ <para>The USB HID (Human Interface Device) drivers in Windows 98 are very
+ old and do not handle tablets the same way all more recent operating
+ systems do (Windows 2000 and later, Mac OS X, Solaris). To
work around the problem, issue the following command:
</para>
@@ -780,11 +780,42 @@
</para>
</sect2>
- <sect2>
+ <sect2 id="ts_d3d8-d3d9-restore">
<title>Restoring d3d8.dll and d3d9.dll</title>
- <para>Extracting d3d8 and d3d9.dll from Windows XP installation CD
- </para>
+ <para>VirtualBox Guest Additions for Windows prior to 4.1.8 did not properly
+ back up the original d3d8.dll and d3d9.dll system files when selecting
+ and installing the experimental Direct3D support. This process replaces
+ both system files with files from the VirtualBox Guest Additions so that
+ Direct3D calls can be handled correctly. Although this issue was fixed
+ with VirtualBox 4.1.8, there is no way the Windows Guest Additions
+ installer can repair these files.</para>
+
+ <para>Corruption of these files has no implications in case 3D acceleration
+ is enabled and basic Direct3D support is installed, that is, without WDDM
+ (on Windows Vista or higher) or on older Windows systems like Windows XP.
+ With the basic Direct3D support all Direct3D 8.0 and Direct3D 9.0
+ applications will utilize VirtualBox Direct3D files directly and thus
+ will run as expected.</para>
+
+ <para>For WDDM Direct3D support however, the originally shipped d3d8.dll and
+ d3d9.dll files are required in order to run Direct3D 8.0
+ and Direct3D 9.0 applications. As a result of the above mentioned system
+ files corruption these applications will not work anymore. See below for
+ a step-by-step guide for restoring the original d3d8.dll and d3d9.dll
+ system files in case the VirtualBox Guest Additions installer warned
+ about those incorrect files or when having trouble running Direct3D
+ applications.</para>
+
+ <note><para>Starting at Windows 7 the 3D desktop (aka Aero) uses DirectX 10
+ for rendering so that corrupted d3d8.dll and d3d9.dll system files will
+ have no effect on the actual rendering.</para></note>
+
+ <para>This is why such a detected file corruption is not considered as fatal
+ for the basic Direct3D installation on all supported Windows guests,
+ and for WDDM Direct3D installation on Windows 7 and later guests.</para>
+
+ <para>Extracting d3d8 and d3d9.dll from a Windows XP installation CD:</para>
<orderedlist>
<listitem>
@@ -887,7 +918,7 @@
linkend="settings-system" />).</para>
</sect2>
- <sect2 id="trouble-linux-buggy">
+ <sect2 id="ts_linux-buggy">
<title>Buggy Linux 2.6 kernel versions</title>
<para>The following bugs in Linux kernels prevent them from executing
@@ -1096,7 +1127,7 @@ VirtualBox</screen>
<sect1>
<title>Linux hosts</title>
- <sect2 id="linuxkernelmodulefailstoload">
+ <sect2 id="ts_linux-kernelmodule-fails-to-load">
<title>Linux kernel module refuses to load</title>
<para>If the VirtualBox kernel module
@@ -1238,7 +1269,7 @@ VirtualBox</screen>
directory.</para>
</sect2>
- <sect2 id="usb_linux">
+ <sect2 id="ts_usb-linux">
<title>USB not working</title>
<para>If USB is not working on your Linux host, make sure that the
diff --git a/doc/manual/en_US/user_VBoxManage.xml b/doc/manual/en_US/user_VBoxManage.xml
index f0ac4b098..1541b0129 100644
--- a/doc/manual/en_US/user_VBoxManage.xml
+++ b/doc/manual/en_US/user_VBoxManage.xml
@@ -1063,11 +1063,16 @@ Statistics update: disabled
&lt;password&gt;</computeroutput>: if this optional argument is
given, then the teleporting request will only succeed if the
source machine specifies the same password as the one given with
- this command.<note>
- <para>Currently, the password is stored without encryption
- (i.e. in clear text) in the XML machine configuration
- file.</para>
- </note></para>
+ this command.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--teleporterpasswordfile
+ &lt;password&gt;</computeroutput>: if this optional argument is
+ given, then the teleporting request will only succeed if the
+ source machine specifies the same password as the one specified
+ in the file give with this command. Use <computeroutput>stdin</computeroutput>
+ to read the password from stdin.</para>
</listitem>
<listitem>
@@ -2294,6 +2299,12 @@ VBoxManage setextradata SUSE10 installdate 2006.02.02</screen>
All rights reserved.
Value: 2006.01.01</screen>
+ <para>To remove a key, the <computeroutput>setextradata</computeroutput>
+ command must be run without specifying data (only the key), for example:
+ </para>
+
+ <screen>VBoxManage setextradata Fedora5 installdate</screen>
+
</sect1>
<sect1 id="vboxmanage-setproperty">
@@ -2716,7 +2727,7 @@ Value: 2006.01.01</screen>
appropriate error message.</para>
<para>To raise or lower the guest process execution limit, either the guest
- property <computerouptut>/VirtualBox/GuestAdd/VBoxService/--control-procs-max-kept</computerouptut>
+ property <computeroutput>/VirtualBox/GuestAdd/VBoxService/--control-procs-max-kept</computeroutput>
or VBoxService' command line by specifying <computeroutput>--control-procs-max-kept</computeroutput>
needs to be modified. A restart of the guest OS is required afterwards. To serve unlimited
guest processes, a value of <computeroutput>0</computeroutput> needs to be set (not recommended).</para>
@@ -3016,7 +3027,7 @@ Value: 2006.01.01</screen>
<para>The "debugvm" commands are for experts who want to tinker with the
exact details of virtual machine execution. Like the VM debugger described
- in <xref linkend="debugger" />, these commands are only useful if you are
+ in <xref linkend="ts_debugger" />, these commands are only useful if you are
very familiar with the details of the PC architecture and how to debug
software.</para>
@@ -3027,7 +3038,7 @@ Value: 2006.01.01</screen>
&lt;name&gt;</computeroutput>, you can create a system dump of the
running VM, which will be written into the given file. This file
will have the standard ELF core format (with custom sections); see
- <xref linkend="guestcoreformat" />.</para>
+ <xref linkend="ts_guest-core-format" />.</para>
<para>This corresponds to the
<computeroutput>writecore</computeroutput> command in the debugger.
diff --git a/doc/manual/user_ChangeLogImpl.xml b/doc/manual/user_ChangeLogImpl.xml
index cfb1d197f..d1bfc4050 100644
--- a/doc/manual/user_ChangeLogImpl.xml
+++ b/doc/manual/user_ChangeLogImpl.xml
@@ -1,6 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<sect1>
+ <title>Version 4.1.12 (2012-04-02)</title>
+
+ <para>This is a maintenance release. The following items were fixed and/or
+ added:</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM: fixed <emphasis>VERR_NOT_SUPPORTED</emphasis> and
+ <emphasis>VERR_RAW_MODE_INVALID_SMP</emphasis> guru meditation
+ due to an invalid reschedule to raw mode (bug #10370)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM: fixed <emphasis>PDMCritSectLeave</emphasis> guru meditation
+ under rare circumstances with SMP guests</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM: proper <emphasis>Math Fault</emphasis> handling with certain
+ legacy guests (bug #9042)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT: fixed a socket leak under certain conditions</para>
+ </listitem>
+
+ <listitem>
+ <para>Storage: better sanity check against reading beyond end-of-file</para>
+ </listitem>
+
+ <listitem>
+ <para>Audio: fixed a crash in the NUL audio backend (bug #10374;
+ 4.1.10 regression)</para>
+ </listitem>
+
+ <listitem>
+ <para>HGCM: fixed a crash during savestate under rare circumstances</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSVC: several locking fixes</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage: return the correct error code if
+ <emphasis>controlvm savestate</emphasis> failed (bug #10134)</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: VBoxService should not crash on exit (bug #10326;
+ 4.1.10 regression)</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows Additions: set the correct time stamp when a file is
+ closed (bug #6473)</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows Additions: better help if the DirectX backups are not
+ properly installed</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux Additions: Linux 3.4-rc1 compile fixes</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
<title>Version 4.1.10 (2012-03-13)</title>
<para>This is a maintenance release. The following items were fixed and/or
@@ -110,7 +182,7 @@
<listitem>
<para>Solaris hosts: fixed debug kernel panics while opening module CTF data
- (#9591)</para>
+ (bug #9651)</para>
</listitem>
<listitem>
diff --git a/include/VBox/RemoteDesktop/VRDE.h b/include/VBox/RemoteDesktop/VRDE.h
index 100246c2d..0f2f02d6a 100644
--- a/include/VBox/RemoteDesktop/VRDE.h
+++ b/include/VBox/RemoteDesktop/VRDE.h
@@ -1149,6 +1149,12 @@ typedef struct _VRDEENTRYPOINTS_3
* in VRDEEnableConnections to the actually used value.
* VRDEDestroy must set the port to 0xFFFFFFFF.
*/
+#define VRDE_SP_CLIENT_STATUS (VRDE_SP_BASE + 2) /* UTF8 string. The change of the generic client status:
+ * "ATTACH" - the client is attached;
+ * "DETACH" - the client is detached;
+ * "NAME=..." - the client name changes.
+ * Can be used for other notifications.
+ */
#pragma pack(1)
/* VRDE_QP_FEATURE data. */
@@ -1158,6 +1164,14 @@ typedef struct _VRDEFEATURE
char achInfo[1]; /* UTF8 property input name and output value. */
} VRDEFEATURE;
+/* VRDE_SP_CLIENT_STATUS data. */
+typedef struct VRDECLIENTSTATUS
+{
+ uint32_t u32ClientId;
+ uint32_t cbStatus;
+ char achStatus[1]; /* UTF8 status string. */
+} VRDECLIENTSTATUS;
+
/* A framebuffer description. */
typedef struct _VRDEFRAMEBUFFERINFO
{
diff --git a/include/VBox/VBoxCrHgsmi.h b/include/VBox/VBoxCrHgsmi.h
index 7892eb035..5ead7a12e 100644
--- a/include/VBox/VBoxCrHgsmi.h
+++ b/include/VBox/VBoxCrHgsmi.h
@@ -56,7 +56,7 @@ typedef struct VBOXCRHGSMI_CALLBACKS
VBOXCRHGSMI_DECL(int) VBoxCrHgsmiInit(PVBOXCRHGSMI_CALLBACKS pCallbacks);
VBOXCRHGSMI_DECL(HVBOXCRHGSMI_CLIENT) VBoxCrHgsmiQueryClient();
#else
-VBOXCRHGSMI_DECL(int) VBoxCrHgsmiInit(void);
+VBOXCRHGSMI_DECL(int) VBoxCrHgsmiInit(uint32_t crVersionMajor, uint32_t crVersionMinor);
VBOXCRHGSMI_DECL(PVBOXUHGSMI) VBoxCrHgsmiCreate(void);
VBOXCRHGSMI_DECL(void) VBoxCrHgsmiDestroy(PVBOXUHGSMI pHgsmi);
#endif
@@ -64,6 +64,11 @@ VBOXCRHGSMI_DECL(int) VBoxCrHgsmiTerm(void);
VBOXCRHGSMI_DECL(void) VBoxCrHgsmiLog(char * szString);
+VBOXCRHGSMI_DECL(int) VBoxCrHgsmiTerm(void);
+
+VBOXCRHGSMI_DECL(int) VBoxCrHgsmiCtlConGetClientID(PVBOXUHGSMI pHgsmi, uint32_t *pu32ClientID);
+VBOXCRHGSMI_DECL(int) VBoxCrHgsmiCtlConCall(PVBOXUHGSMI pHgsmi, struct VBoxGuestHGCMCallInfo *pCallInfo, int cbCallInfo);
+
RT_C_DECLS_END
#endif
diff --git a/include/VBox/VBoxGuest.h b/include/VBox/VBoxGuest.h
index 40a45720b..23381075d 100644
--- a/include/VBox/VBoxGuest.h
+++ b/include/VBox/VBoxGuest.h
@@ -338,6 +338,11 @@ AssertCompileSize(VBoxGuestWriteCoreDump, 4);
/** IOCTL to VBoxGuest to make a timed call to a HGCM service. */
# define VBOXGUEST_IOCTL_HGCM_CALL_TIMED(Size) VBOXGUEST_IOCTL_CODE(20, (Size))
+/** IOCTL to VBoxGuest passed from the Kernel Mode driver, but containing a user mode data in VBoxGuestHGCMCallInfo
+ * the driver received from the UM. Called in the context of the process passing the data.
+ * @see VBoxGuestHGCMCallInfo */
+# define VBOXGUEST_IOCTL_HGCM_CALL_USERDATA(Size) VBOXGUEST_IOCTL_CODE(21, (Size))
+
# ifdef RT_ARCH_AMD64
/** @name IOCTL numbers that 32-bit clients, like the Windows OpenGL guest
* driver, will use when taking to a 64-bit driver.
diff --git a/include/VBox/VBoxGuestLib.h b/include/VBox/VBoxGuestLib.h
index 036af72f1..4bf2aa46a 100644
--- a/include/VBox/VBoxGuestLib.h
+++ b/include/VBox/VBoxGuestLib.h
@@ -312,6 +312,18 @@ DECLVBGL(int) VbglHGCMDisconnect (VBGLHGCMHANDLE handle, VBoxGuestHGCMDisconnect
DECLVBGL(int) VbglHGCMCall (VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData, uint32_t cbData);
/**
+ * Call to a service with user-mode data received by the calling driver from the User-Mode process.
+ * The call must be done in the context of a calling process.
+ *
+ * @param handle Handle of the connection.
+ * @param pData Call request information structure, including function parameters.
+ * @param cbData Length in bytes of data.
+ *
+ * @return VBox status code.
+ */
+DECLVBGL(int) VbglHGCMCallUserData (VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData, uint32_t cbData);
+
+/**
* Call to a service with timeout.
*
* @param handle Handle of the connection.
diff --git a/src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp b/src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp
index 32f89802d..b4afba335 100644
--- a/src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp
+++ b/src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp
@@ -1889,7 +1889,7 @@ static int VBoxGuestCommonIOCtl_HGCMDisconnect(PVBOXGUESTDEVEXT pDevExt, PVBOXGU
static int VBoxGuestCommonIOCtl_HGCMCall(PVBOXGUESTDEVEXT pDevExt,
PVBOXGUESTSESSION pSession,
VBoxGuestHGCMCallInfo *pInfo,
- uint32_t cMillies, bool fInterruptible, bool f32bit,
+ uint32_t cMillies, bool fInterruptible, bool f32bit, bool fUserData,
size_t cbExtra, size_t cbData, size_t *pcbDataReturned)
{
const uint32_t u32ClientId = pInfo->u32ClientID;
@@ -1945,7 +1945,7 @@ static int VBoxGuestCommonIOCtl_HGCMCall(PVBOXGUESTDEVEXT pDevExt,
* be interruptible (should add a flag for this later I guess).
*/
Log(("VBoxGuestCommonIOCtl: HGCM_CALL: u32Client=%RX32\n", pInfo->u32ClientID));
- fFlags = pSession->R0Process == NIL_RTR0PROCESS ? VBGLR0_HGCMCALL_F_KERNEL : VBGLR0_HGCMCALL_F_USER;
+ fFlags = !fUserData && pSession->R0Process == NIL_RTR0PROCESS ? VBGLR0_HGCMCALL_F_KERNEL : VBGLR0_HGCMCALL_F_USER;
#ifdef RT_ARCH_AMD64
if (f32bit)
{
@@ -2445,7 +2445,7 @@ int VBoxGuestCommonIOCtl(unsigned iFunction, PVBOXGUESTDEVEXT pDevExt, PVBOXGUES
bool fInterruptible = pSession->R0Process != NIL_RTR0PROCESS;
CHECKRET_MIN_SIZE("HGCM_CALL", sizeof(VBoxGuestHGCMCallInfo));
rc = VBoxGuestCommonIOCtl_HGCMCall(pDevExt, pSession, (VBoxGuestHGCMCallInfo *)pvData, RT_INDEFINITE_WAIT,
- fInterruptible, false /*f32bit*/,
+ fInterruptible, false /*f32bit*/, false /* fUserData */,
0, cbData, pcbDataReturned);
}
else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL_TIMED(0)))
@@ -2454,16 +2454,24 @@ int VBoxGuestCommonIOCtl(unsigned iFunction, PVBOXGUESTDEVEXT pDevExt, PVBOXGUES
CHECKRET_MIN_SIZE("HGCM_CALL_TIMED", sizeof(VBoxGuestHGCMCallInfoTimed));
rc = VBoxGuestCommonIOCtl_HGCMCall(pDevExt, pSession, &pInfo->info, pInfo->u32Timeout,
!!pInfo->fInterruptible || pSession->R0Process != NIL_RTR0PROCESS,
- false /*f32bit*/,
+ false /*f32bit*/, false /* fUserData */,
RT_OFFSETOF(VBoxGuestHGCMCallInfoTimed, info), cbData, pcbDataReturned);
}
+ else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL_USERDATA(0)))
+ {
+ bool fInterruptible = true;
+ CHECKRET_MIN_SIZE("HGCM_CALL", sizeof(VBoxGuestHGCMCallInfo));
+ rc = VBoxGuestCommonIOCtl_HGCMCall(pDevExt, pSession, (VBoxGuestHGCMCallInfo *)pvData, RT_INDEFINITE_WAIT,
+ fInterruptible, false /*f32bit*/, true /* fUserData */,
+ 0, cbData, pcbDataReturned);
+ }
# ifdef RT_ARCH_AMD64
else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL_32(0)))
{
bool fInterruptible = pSession->R0Process != NIL_RTR0PROCESS;
CHECKRET_MIN_SIZE("HGCM_CALL", sizeof(VBoxGuestHGCMCallInfo));
rc = VBoxGuestCommonIOCtl_HGCMCall(pDevExt, pSession, (VBoxGuestHGCMCallInfo *)pvData, RT_INDEFINITE_WAIT,
- fInterruptible, true /*f32bit*/,
+ fInterruptible, true /*f32bit*/, false /* fUserData */,
0, cbData, pcbDataReturned);
}
else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL_TIMED_32(0)))
@@ -2472,7 +2480,7 @@ int VBoxGuestCommonIOCtl(unsigned iFunction, PVBOXGUESTDEVEXT pDevExt, PVBOXGUES
VBoxGuestHGCMCallInfoTimed *pInfo = (VBoxGuestHGCMCallInfoTimed *)pvData;
rc = VBoxGuestCommonIOCtl_HGCMCall(pDevExt, pSession, &pInfo->info, pInfo->u32Timeout,
!!pInfo->fInterruptible || pSession->R0Process != NIL_RTR0PROCESS,
- true /*f32bit*/,
+ true /*f32bit*/, false /* fUserData */,
RT_OFFSETOF(VBoxGuestHGCMCallInfoTimed, info), cbData, pcbDataReturned);
}
# endif
diff --git a/src/VBox/Additions/common/VBoxGuestLib/HGCM.cpp b/src/VBox/Additions/common/VBoxGuestLib/HGCM.cpp
index 7fef12879..3dcf74b18 100644
--- a/src/VBox/Additions/common/VBoxGuestLib/HGCM.cpp
+++ b/src/VBox/Additions/common/VBoxGuestLib/HGCM.cpp
@@ -1,4 +1,4 @@
-/* $Revision: 60692 $ */
+/* $Revision: 76864 $ */
/** @file
* VBoxGuestLib - Host-Guest Communication Manager.
*
@@ -197,6 +197,19 @@ DECLVBGL(int) VbglHGCMCall (VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData,
return rc;
}
+DECLVBGL(int) VbglHGCMCallUserData (VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData, uint32_t cbData)
+{
+ int rc = VINF_SUCCESS;
+
+ VBGL_HGCM_ASSERTMsg(cbData >= sizeof (VBoxGuestHGCMCallInfo) + pData->cParms * sizeof (HGCMFunctionParameter),
+ ("cbData = %d, cParms = %d (calculated size %d)\n", cbData, pData->cParms, sizeof (VBoxGuestHGCMCallInfo) + pData->cParms * sizeof (VBoxGuestHGCMCallInfo)));
+
+ rc = vbglDriverIOCtl (&handle->driver, VBOXGUEST_IOCTL_HGCM_CALL_USERDATA(cbData), pData, cbData);
+
+ return rc;
+}
+
+
DECLVBGL(int) VbglHGCMCallTimed (VBGLHGCMHANDLE handle,
VBoxGuestHGCMCallInfoTimed *pData, uint32_t cbData)
{
diff --git a/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk b/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk
index 2c2a27c9c..a033d725e 100644
--- a/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk
+++ b/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk
@@ -62,6 +62,7 @@ VBoxGuestR0Lib_SOURCES = \
VMMDev.cpp \
HGCM.cpp \
VBoxGuestR0LibSharedFolders.c \
+ VBoxGuestR0LibCrOgl.cpp \
VbglR0CanUsePhysPageList.cpp
#
diff --git a/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR0LibCrOgl.cpp b/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR0LibCrOgl.cpp
new file mode 100644
index 000000000..3fa03d204
--- /dev/null
+++ b/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR0LibCrOgl.cpp
@@ -0,0 +1,118 @@
+/** @file
+ * VBoxGuestLib - Central calls header.
+ */
+
+/*
+ * Copyright (C) 2012 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ *
+ * The contents of this file may alternatively be used under the terms
+ * of the Common Development and Distribution License Version 1.0
+ * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+ * VirtualBox OSE distribution, in which case the provisions of the
+ * CDDL are applicable instead of those of the GPL.
+ *
+ * You may elect to license modified versions of this file under the
+ * terms and conditions of either the GPL or the CDDL or both.
+ */
+
+/* Entire file is ifdef'ed with !VBGL_VBOXGUEST */
+#ifdef VBGL_VBOXGUEST
+# error "VBGL_VBOXGUEST should not be defined"
+#else
+#include "VBoxGuestR0LibCrOgl.h"
+
+#include <iprt/string.h>
+
+#include "VBGLInternal.h"
+
+struct VBGLHGCMHANDLEDATA *vbglHGCMHandleAlloc (void);
+void vbglHGCMHandleFree (struct VBGLHGCMHANDLEDATA *pHandle);
+
+DECLVBGL(int) vboxCrCtlCreate(HVBOXCRCTL *phCtl)
+{
+ int rc;
+ struct VBGLHGCMHANDLEDATA *pHandleData;
+
+ if (!phCtl)
+ return VERR_INVALID_PARAMETER;
+
+ pHandleData = vbglHGCMHandleAlloc ();
+
+ rc = VINF_SUCCESS;
+
+ if (!pHandleData)
+ {
+ rc = VERR_NO_MEMORY;
+ }
+ else
+ {
+ rc = vbglDriverOpen (&pHandleData->driver);
+
+ if (RT_SUCCESS(rc))
+ {
+ *phCtl = pHandleData;
+ return VINF_SUCCESS;
+ }
+
+ vbglHGCMHandleFree (pHandleData);
+ }
+
+ *phCtl = NULL;
+ return rc;
+}
+
+DECLVBGL(int) vboxCrCtlDestroy(HVBOXCRCTL hCtl)
+{
+ vbglDriverClose(&hCtl->driver);
+
+ vbglHGCMHandleFree(hCtl);
+
+ return VINF_SUCCESS;
+}
+
+DECLVBGL(int) vboxCrCtlConConnect(HVBOXCRCTL hCtl, uint32_t *pu32ClientID)
+{
+ VBoxGuestHGCMConnectInfo info;
+ int rc;
+
+ if (!hCtl || !pu32ClientID)
+ return VERR_INVALID_PARAMETER;
+
+ memset(&info, 0, sizeof (info));
+ info.Loc.type = VMMDevHGCMLoc_LocalHost_Existing;
+ RTStrCopy(info.Loc.u.host.achName, sizeof (info.Loc.u.host.achName), "VBoxSharedCrOpenGL");
+ rc = vbglDriverIOCtl (&hCtl->driver, VBOXGUEST_IOCTL_HGCM_CONNECT, &info, sizeof (info));
+ if (RT_SUCCESS(rc))
+ *pu32ClientID = info.u32ClientID;
+ else
+ *pu32ClientID = 0;
+ return rc;
+}
+
+DECLVBGL(int) vboxCrCtlConDisconnect(HVBOXCRCTL hCtl, uint32_t u32ClientID)
+{
+ VBoxGuestHGCMDisconnectInfo info;
+ memset (&info, 0, sizeof (info));
+ info.u32ClientID = u32ClientID;
+ return vbglDriverIOCtl (&hCtl->driver, VBOXGUEST_IOCTL_HGCM_DISCONNECT, &info, sizeof (info));
+}
+
+DECLVBGL(int) vboxCrCtlConCall(HVBOXCRCTL hCtl, struct VBoxGuestHGCMCallInfo *pCallInfo, int cbCallInfo)
+{
+ return vbglDriverIOCtl (&hCtl->driver, VBOXGUEST_IOCTL_HGCM_CALL(cbCallInfo), pCallInfo, cbCallInfo);
+}
+
+DECLVBGL(int) vboxCrCtlConCallUserData(HVBOXCRCTL hCtl, struct VBoxGuestHGCMCallInfo *pCallInfo, int cbCallInfo)
+{
+ return vbglDriverIOCtl (&hCtl->driver, VBOXGUEST_IOCTL_HGCM_CALL_USERDATA(cbCallInfo), pCallInfo, cbCallInfo);
+}
+
+#endif /* #ifndef VBGL_VBOXGUEST */
diff --git a/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR0LibCrOgl.h b/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR0LibCrOgl.h
new file mode 100644
index 000000000..ae0eac215
--- /dev/null
+++ b/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR0LibCrOgl.h
@@ -0,0 +1,39 @@
+/** @file
+ * VBoxGuestLib - Central calls header.
+ */
+
+/*
+ * Copyright (C) 2012 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ *
+ * The contents of this file may alternatively be used under the terms
+ * of the Common Development and Distribution License Version 1.0
+ * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+ * VirtualBox OSE distribution, in which case the provisions of the
+ * CDDL are applicable instead of those of the GPL.
+ *
+ * You may elect to license modified versions of this file under the
+ * terms and conditions of either the GPL or the CDDL or both.
+ */
+#ifndef ___VBoxGuestR0LibCrOgl_cpp__
+#define ___VBoxGuestR0LibCrOgl_cpp__
+
+#include <VBox/VBoxGuestLib.h>
+
+typedef VBGLHGCMHANDLE HVBOXCRCTL;
+
+DECLVBGL(int) vboxCrCtlCreate(HVBOXCRCTL *phCtl);
+DECLVBGL(int) vboxCrCtlDestroy(HVBOXCRCTL hCtl);
+DECLVBGL(int) vboxCrCtlConConnect(HVBOXCRCTL hCtl, uint32_t *pu32ClientID);
+DECLVBGL(int) vboxCrCtlConDisconnect(HVBOXCRCTL hCtl, uint32_t u32ClientID);
+DECLVBGL(int) vboxCrCtlConCall(HVBOXCRCTL hCtl, struct VBoxGuestHGCMCallInfo *pCallInfo, int cbCallInfo);
+DECLVBGL(int) vboxCrCtlConCallUserData(HVBOXCRCTL hCtl, struct VBoxGuestHGCMCallInfo *pCallInfo, int cbCallInfo);
+
+#endif /* #ifndef ___VBoxGuestR0LibCrOgl_cpp__ */
diff --git a/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibGuestCtrl.cpp b/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibGuestCtrl.cpp
index 09555c9f1..eee5912b8 100644
--- a/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibGuestCtrl.cpp
+++ b/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibGuestCtrl.cpp
@@ -103,8 +103,8 @@ VBGLR3DECL(int) VbglR3GuestCtrlDisconnect(uint32_t u32ClientId)
*/
VBGLR3DECL(int) VbglR3GuestCtrlWaitForHostMsg(uint32_t u32ClientId, uint32_t *puMsg, uint32_t *puNumParms)
{
- AssertPtrReturn(puMsg, VERR_INVALID_PARAMETER);
- AssertPtrReturn(puNumParms, VERR_INVALID_PARAMETER);
+ AssertPtrReturn(puMsg, VERR_INVALID_POINTER);
+ AssertPtrReturn(puNumParms, VERR_INVALID_POINTER);
VBoxGuestCtrlHGCMMsgType Msg;
diff --git a/src/VBox/Additions/common/VBoxService/VBoxService.cpp b/src/VBox/Additions/common/VBoxService/VBoxService.cpp
index ba92420f9..342a6c8bd 100644
--- a/src/VBox/Additions/common/VBoxService/VBoxService.cpp
+++ b/src/VBox/Additions/common/VBoxService/VBoxService.cpp
@@ -243,7 +243,7 @@ static int VBoxServiceLogCreate(const char *pszLogFile)
static void VBoxServiceLogDestroy(void)
{
- RTLogDestroy(g_pLoggerRelease);
+ RTLogDestroy(RTLogRelSetDefaultInstance(NULL));
}
diff --git a/src/VBox/Additions/common/VBoxService/VBoxServiceControl.cpp b/src/VBox/Additions/common/VBoxService/VBoxServiceControl.cpp
index 95a9abebd..5c8f62979 100644
--- a/src/VBox/Additions/common/VBoxService/VBoxServiceControl.cpp
+++ b/src/VBox/Additions/common/VBoxService/VBoxServiceControl.cpp
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2011 Oracle Corporation
+ * Copyright (C) 2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -117,11 +117,11 @@ static DECLCALLBACK(int) VBoxServiceControlPreInit(void)
{
if (rc == VERR_HGCM_SERVICE_NOT_FOUND) /* Host service is not available. */
{
- VBoxServiceVerbose(0, "Control: Guest property service is not available, skipping\n");
+ VBoxServiceVerbose(0, "Guest property service is not available, skipping\n");
rc = VINF_SUCCESS;
}
else
- VBoxServiceError("Control: Failed to connect to the guest property service! Error: %Rrc\n", rc);
+ VBoxServiceError("Failed to connect to the guest property service! Error: %Rrc\n", rc);
}
else
{
@@ -185,7 +185,7 @@ static DECLCALLBACK(int) VBoxServiceControlInit(void)
rc = VbglR3GuestCtrlConnect(&g_uControlSvcClientID);
if (RT_SUCCESS(rc))
{
- VBoxServiceVerbose(3, "Control: Service client ID: %#x\n", g_uControlSvcClientID);
+ VBoxServiceVerbose(3, "Service client ID: %#x\n", g_uControlSvcClientID);
/* Init thread lists. */
RTListInit(&g_lstControlThreadsActive);
@@ -201,11 +201,11 @@ static DECLCALLBACK(int) VBoxServiceControlInit(void)
causing VBoxService to fail. */
if (rc == VERR_HGCM_SERVICE_NOT_FOUND) /* Host service is not available. */
{
- VBoxServiceVerbose(0, "Control: Guest control service is not available\n");
+ VBoxServiceVerbose(0, "Guest control service is not available\n");
rc = VERR_SERVICE_DISABLED;
}
else
- VBoxServiceError("Control: Failed to connect to the guest control service! Error: %Rrc\n", rc);
+ VBoxServiceError("Failed to connect to the guest control service! Error: %Rrc\n", rc);
RTSemEventMultiDestroy(g_hControlEvent);
g_hControlEvent = NIL_RTSEMEVENTMULTI;
}
@@ -232,24 +232,24 @@ DECLCALLBACK(int) VBoxServiceControlWorker(bool volatile *pfShutdown)
*/
for (;;)
{
- VBoxServiceVerbose(3, "Control: Waiting for host msg ...\n");
- uint32_t uMsg;
- uint32_t cParms;
+ VBoxServiceVerbose(3, "Waiting for host msg ...\n");
+ uint32_t uMsg = 0;
+ uint32_t cParms = 0;
rc = VbglR3GuestCtrlWaitForHostMsg(g_uControlSvcClientID, &uMsg, &cParms);
if (rc == VERR_TOO_MUCH_DATA)
{
- VBoxServiceVerbose(4, "Control: Message requires %ld parameters, but only 2 supplied -- retrying request (no error!)...\n", cParms);
+ VBoxServiceVerbose(4, "Message requires %ld parameters, but only 2 supplied -- retrying request (no error!)...\n", cParms);
rc = VINF_SUCCESS; /* Try to get "real" message in next block below. */
}
else if (RT_FAILURE(rc))
- VBoxServiceVerbose(3, "Control: Getting host message failed with %Rrc\n", rc); /* VERR_GEN_IO_FAILURE seems to be normal if ran into timeout. */
+ VBoxServiceVerbose(3, "Getting host message failed with %Rrc\n", rc); /* VERR_GEN_IO_FAILURE seems to be normal if ran into timeout. */
if (RT_SUCCESS(rc))
{
- VBoxServiceVerbose(3, "Control: Msg=%u (%u parms) retrieved\n", uMsg, cParms);
+ VBoxServiceVerbose(3, "Msg=%u (%u parms) retrieved\n", uMsg, cParms);
switch (uMsg)
{
case HOST_CANCEL_PENDING_WAITS:
- VBoxServiceVerbose(3, "Control: Host asked us to quit ...\n");
+ VBoxServiceVerbose(3, "Host asked us to quit ...\n");
break;
case HOST_EXEC_CMD:
@@ -266,7 +266,7 @@ DECLCALLBACK(int) VBoxServiceControlWorker(bool volatile *pfShutdown)
break;
default:
- VBoxServiceVerbose(3, "Control: Unsupported message from host! Msg=%u\n", uMsg);
+ VBoxServiceVerbose(3, "Unsupported message from host! Msg=%u\n", uMsg);
/* Don't terminate here; just wait for the next message. */
break;
}
@@ -324,7 +324,7 @@ static int VBoxServiceControlHandleCmdStartProc(uint32_t uClientID, uint32_t cPa
&proc.uTimeLimitMS);
if (RT_SUCCESS(rc))
{
- VBoxServiceVerbose(3, "Control: Request to start process szCmd=%s, uFlags=0x%x, szArgs=%s, szEnv=%s, szUser=%s, uTimeout=%u\n",
+ VBoxServiceVerbose(3, "Request to start process szCmd=%s, uFlags=0x%x, szArgs=%s, szEnv=%s, szUser=%s, uTimeout=%u\n",
proc.szCmd, proc.uFlags,
proc.uNumArgs ? proc.szArgs : "<None>",
proc.uNumEnvVars ? proc.szEnv : "<None>",
@@ -332,7 +332,7 @@ static int VBoxServiceControlHandleCmdStartProc(uint32_t uClientID, uint32_t cPa
rc = VBoxServiceControlReapThreads();
if (RT_FAILURE(rc))
- VBoxServiceError("Control: Reaping stopped processes failed with rc=%Rrc\n", rc);
+ VBoxServiceError("Reaping stopped processes failed with rc=%Rrc\n", rc);
/* Keep going. */
rc = VBoxServiceControlStartAllowed(&fStartAllowed);
@@ -353,14 +353,18 @@ static int VBoxServiceControlHandleCmdStartProc(uint32_t uClientID, uint32_t cPa
/* In case of an error we need to notify the host to not wait forever for our response. */
if (RT_FAILURE(rc))
{
- VBoxServiceError("Control: Starting process failed with rc=%Rrc\n", rc);
+ VBoxServiceError("Starting process failed with rc=%Rrc\n", rc);
- int rc2 = VbglR3GuestCtrlExecReportStatus(uClientID, uContextID, 0 /* PID, invalid. */,
+ /*
+ * Note: The context ID can be 0 because we mabye weren't able to fetch the command
+ * from the host. The host in case has to deal with that!
+ */
+ int rc2 = VbglR3GuestCtrlExecReportStatus(uClientID, uContextID /* Might be 0 */, 0 /* PID, invalid */,
PROC_STS_ERROR, rc,
NULL /* pvData */, 0 /* cbData */);
if (RT_FAILURE(rc2))
{
- VBoxServiceError("Control: Error sending start process status to host, rc=%Rrc\n", rc2);
+ VBoxServiceError("Error sending start process status to host, rc=%Rrc\n", rc2);
if (RT_SUCCESS(rc))
rc = rc2;
}
@@ -444,8 +448,8 @@ int VBoxServiceControlListSet(VBOXSERVICECTRLTHREADLISTTYPE enmList,
int rc = RTCritSectEnter(&g_csControlThreads);
if (RT_SUCCESS(rc))
{
- VBoxServiceVerbose(3, "Control: Setting thread (PID %u) inactive\n",
- pThread->uPID);
+ VBoxServiceVerbose(3, "Setting thread (PID %u) to list %d\n",
+ pThread->uPID, enmList);
PRTLISTNODE pAnchor = NULL;
switch (enmList)
@@ -562,12 +566,12 @@ static int VBoxServiceControlHandleCmdSetInput(uint32_t idClient, uint32_t cParm
pabBuffer, cbMaxBufSize, &cbSize);
if (RT_FAILURE(rc))
{
- VBoxServiceError("Control: [PID %u]: Failed to retrieve exec input command! Error: %Rrc\n",
+ VBoxServiceError("[PID %u]: Failed to retrieve exec input command! Error: %Rrc\n",
uPID, rc);
}
else if (cbSize > cbMaxBufSize)
{
- VBoxServiceError("Control: [PID %u]: Too much input received! cbSize=%u, cbMaxBufSize=%u\n",
+ VBoxServiceError("[PID %u]: Too much input received! cbSize=%u, cbMaxBufSize=%u\n",
uPID, cbSize, cbMaxBufSize);
rc = VERR_INVALID_PARAMETER;
}
@@ -580,21 +584,18 @@ static int VBoxServiceControlHandleCmdSetInput(uint32_t idClient, uint32_t cParm
if (uFlags & INPUT_FLAG_EOF)
{
fPendingClose = true;
- VBoxServiceVerbose(4, "Control: [PID %u]: Got last input block of size %u ...\n",
+ VBoxServiceVerbose(4, "[PID %u]: Got last input block of size %u ...\n",
uPID, cbSize);
}
rc = VBoxServiceControlSetInput(uPID, uContextID, fPendingClose, pabBuffer,
cbSize, &cbWritten);
- VBoxServiceVerbose(4, "Control: [PID %u]: Written input, CID=%u, rc=%Rrc, uFlags=0x%x, fPendingClose=%d, cbSize=%u, cbWritten=%u\n",
+ VBoxServiceVerbose(4, "[PID %u]: Written input, CID=%u, rc=%Rrc, uFlags=0x%x, fPendingClose=%d, cbSize=%u, cbWritten=%u\n",
uPID, uContextID, rc, uFlags, fPendingClose, cbSize, cbWritten);
if (RT_SUCCESS(rc))
{
- if (cbWritten || !cbSize) /* Did we write something or was there anything to write at all? */
- {
- uStatus = INPUT_STS_WRITTEN;
- uFlags = 0;
- }
+ uStatus = INPUT_STS_WRITTEN;
+ uFlags = 0; /* No flags at the moment. */
}
else
{
@@ -618,7 +619,7 @@ static int VBoxServiceControlHandleCmdSetInput(uint32_t idClient, uint32_t cParm
}
Assert(uStatus > INPUT_STS_UNDEFINED);
- VBoxServiceVerbose(3, "Control: [PID %u]: Input processed, CID=%u, uStatus=%u, uFlags=0x%x, cbWritten=%u\n",
+ VBoxServiceVerbose(3, "[PID %u]: Input processed, CID=%u, uStatus=%u, uFlags=0x%x, cbWritten=%u\n",
uPID, uContextID, uStatus, uFlags, cbWritten);
/* Note: Since the context ID is unique the request *has* to be completed here,
@@ -628,7 +629,7 @@ static int VBoxServiceControlHandleCmdSetInput(uint32_t idClient, uint32_t cParm
uStatus, uFlags, (uint32_t)cbWritten);
if (RT_FAILURE(rc))
- VBoxServiceError("Control: [PID %u]: Failed to report input status! Error: %Rrc\n",
+ VBoxServiceError("[PID %u]: Failed to report input status! Error: %Rrc\n",
uPID, rc);
return rc;
}
@@ -658,7 +659,7 @@ static int VBoxServiceControlHandleCmdGetOutput(uint32_t idClient, uint32_t cPar
uint32_t cbRead = 0;
rc = VBoxServiceControlExecGetOutput(uPID, uContextID, uHandleID, RT_INDEFINITE_WAIT /* Timeout */,
pBuf, _64K /* cbSize */, &cbRead);
- VBoxServiceVerbose(3, "Control: [PID %u]: Got output, rc=%Rrc, CID=%u, cbRead=%u, uHandle=%u, uFlags=%u\n",
+ VBoxServiceVerbose(3, "[PID %u]: Got output, rc=%Rrc, CID=%u, cbRead=%u, uHandle=%u, uFlags=%u\n",
uPID, rc, uContextID, cbRead, uHandleID, uFlags);
#ifdef DEBUG
@@ -703,7 +704,7 @@ static int VBoxServiceControlHandleCmdGetOutput(uint32_t idClient, uint32_t cPar
}
if (RT_FAILURE(rc))
- VBoxServiceError("Control: [PID %u]: Error handling output command! Error: %Rrc\n",
+ VBoxServiceError("[PID %u]: Error handling output command! Error: %Rrc\n",
uPID, rc);
return rc;
}
@@ -712,7 +713,7 @@ static int VBoxServiceControlHandleCmdGetOutput(uint32_t idClient, uint32_t cPar
/** @copydoc VBOXSERVICE::pfnStop */
static DECLCALLBACK(void) VBoxServiceControlStop(void)
{
- VBoxServiceVerbose(3, "Control: Stopping ...\n");
+ VBoxServiceVerbose(3, "Stopping ...\n");
/** @todo Later, figure what to do if we're in RTProcWait(). It's a very
* annoying call since doesn't support timeouts in the posix world. */
@@ -725,12 +726,12 @@ static DECLCALLBACK(void) VBoxServiceControlStop(void)
*/
if (g_uControlSvcClientID)
{
- VBoxServiceVerbose(3, "Control: Cancelling pending waits (client ID=%u) ...\n",
+ VBoxServiceVerbose(3, "Cancelling pending waits (client ID=%u) ...\n",
g_uControlSvcClientID);
int rc = VbglR3GuestCtrlCancelPendingWaits(g_uControlSvcClientID);
if (RT_FAILURE(rc))
- VBoxServiceError("Control: Cancelling pending waits failed; rc=%Rrc\n", rc);
+ VBoxServiceError("Cancelling pending waits failed; rc=%Rrc\n", rc);
}
}
@@ -751,8 +752,8 @@ static int VBoxServiceControlReapThreads(void)
{
PVBOXSERVICECTRLTHREAD pNext = RTListNodeGetNext(&pThread->Node, VBOXSERVICECTRLTHREAD, Node);
bool fLast = RTListNodeIsLast(&g_lstControlThreadsInactive, &pThread->Node);
-
- int rc2 = VBoxServiceControlThreadWait(pThread, 30 * 1000 /* 30 seconds max. */);
+ int rc2 = VBoxServiceControlThreadWait(pThread, 30 * 1000 /* 30 seconds max. */,
+ NULL /* rc */);
if (RT_SUCCESS(rc2))
{
RTListNodeRemove(&pThread->Node);
@@ -760,13 +761,13 @@ static int VBoxServiceControlReapThreads(void)
rc2 = VBoxServiceControlThreadFree(pThread);
if (RT_FAILURE(rc2))
{
- VBoxServiceError("Control: Stopping guest process thread failed with rc=%Rrc\n", rc2);
+ VBoxServiceError("Freeing guest process thread failed with rc=%Rrc\n", rc2);
if (RT_SUCCESS(rc)) /* Keep original failure. */
rc = rc2;
}
}
else
- VBoxServiceError("Control: Waiting on guest process thread failed with rc=%Rrc\n", rc2);
+ VBoxServiceError("Waiting on guest process thread failed with rc=%Rrc\n", rc2);
/* Keep going. */
if (fLast)
@@ -780,7 +781,7 @@ static int VBoxServiceControlReapThreads(void)
rc = rc2;
}
- VBoxServiceVerbose(4, "Control: Reaping threads returned with rc=%Rrc\n", rc);
+ VBoxServiceVerbose(4, "Reaping threads returned with rc=%Rrc\n", rc);
return rc;
}
@@ -790,7 +791,7 @@ static int VBoxServiceControlReapThreads(void)
*/
static void VBoxServiceControlShutdown(void)
{
- VBoxServiceVerbose(2, "Control: Shutting down ...\n");
+ VBoxServiceVerbose(2, "Shutting down ...\n");
/* Signal all threads in the active list that we want to shutdown. */
PVBOXSERVICECTRLTHREAD pThread;
@@ -805,9 +806,10 @@ static void VBoxServiceControlShutdown(void)
bool fLast = RTListNodeIsLast(&g_lstControlThreadsActive, &pThread->Node);
int rc2 = VBoxServiceControlThreadWait(pThread,
- 30 * 1000 /* Wait 30 seconds max. */);
+ 30 * 1000 /* Wait 30 seconds max. */,
+ NULL /* rc */);
if (RT_FAILURE(rc2))
- VBoxServiceError("Control: Guest process thread failed to stop; rc=%Rrc\n", rc2);
+ VBoxServiceError("Guest process thread failed to stop; rc=%Rrc\n", rc2);
if (fLast)
break;
@@ -817,7 +819,7 @@ static void VBoxServiceControlShutdown(void)
int rc2 = VBoxServiceControlReapThreads();
if (RT_FAILURE(rc2))
- VBoxServiceError("Control: Reaping inactive threads failed with rc=%Rrc\n", rc2);
+ VBoxServiceError("Reaping inactive threads failed with rc=%Rrc\n", rc2);
AssertMsg(RTListIsEmpty(&g_lstControlThreadsActive),
("Guest process active thread list still contains entries when it should not\n"));
@@ -827,18 +829,18 @@ static void VBoxServiceControlShutdown(void)
/* Destroy critical section. */
RTCritSectDelete(&g_csControlThreads);
- VBoxServiceVerbose(2, "Control: Shutting down complete\n");
+ VBoxServiceVerbose(2, "Shutting down complete\n");
}
/** @copydoc VBOXSERVICE::pfnTerm */
static DECLCALLBACK(void) VBoxServiceControlTerm(void)
{
- VBoxServiceVerbose(3, "Control: Terminating ...\n");
+ VBoxServiceVerbose(3, "Terminating ...\n");
VBoxServiceControlShutdown();
- VBoxServiceVerbose(3, "Control: Disconnecting client ID=%u ...\n",
+ VBoxServiceVerbose(3, "Disconnecting client ID=%u ...\n",
g_uControlSvcClientID);
VbglR3GuestCtrlDisconnect(g_uControlSvcClientID);
g_uControlSvcClientID = 0;
@@ -878,13 +880,13 @@ static int VBoxServiceControlStartAllowed(bool *pbAllowed)
RTListForEach(&g_lstControlThreadsActive, pThread, VBOXSERVICECTRLTHREAD, Node)
uProcsRunning++;
- VBoxServiceVerbose(3, "Control: Maximum served guest processes set to %u, running=%u\n",
+ VBoxServiceVerbose(3, "Maximum served guest processes set to %u, running=%u\n",
g_uControlProcsMaxKept, uProcsRunning);
int32_t iProcsLeft = (g_uControlProcsMaxKept - uProcsRunning - 1);
if (iProcsLeft < 0)
{
- VBoxServiceVerbose(3, "Control: Maximum running guest processes reached (%u)\n",
+ VBoxServiceVerbose(3, "Maximum running guest processes reached (%u)\n",
g_uControlProcsMaxKept);
fLimitReached = true;
}
@@ -978,7 +980,7 @@ int VBoxServiceControlAssignPID(PVBOXSERVICECTRLTHREAD pThread, uint32_t uPID)
Assert(pThreadCur != pThread); /* can't happen */
uint32_t uTriedPID = uPID;
uPID += 391939;
- VBoxServiceVerbose(2, "ControlThread: PID %u was used before, trying again with %u ...\n",
+ VBoxServiceVerbose(2, "PID %u was used before, trying again with %u ...\n",
uTriedPID, uPID);
fTryAgain = true;
break;
diff --git a/src/VBox/Additions/common/VBoxService/VBoxServiceControlThread.cpp b/src/VBox/Additions/common/VBoxService/VBoxServiceControlThread.cpp
index 22a3bf549..62c6e5df0 100644
--- a/src/VBox/Additions/common/VBoxService/VBoxServiceControlThread.cpp
+++ b/src/VBox/Additions/common/VBoxService/VBoxServiceControlThread.cpp
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2011 Oracle Corporation
+ * Copyright (C) 2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -151,7 +151,7 @@ int VBoxServiceControlThreadFree(PVBOXSERVICECTRLTHREAD pThread)
{
AssertPtrReturn(pThread, VERR_INVALID_POINTER);
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Freeing ...\n",
+ VBoxServiceVerbose(3, "[PID %u]: Freeing ...\n",
pThread->uPID);
int rc = RTCritSectEnter(&pThread->CritSect);
@@ -169,7 +169,7 @@ int VBoxServiceControlThreadFree(PVBOXSERVICECTRLTHREAD pThread)
RTStrFree(pThread->pszUser);
RTStrFree(pThread->pszPassword);
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Setting stopped state\n",
+ VBoxServiceVerbose(3, "[PID %u]: Setting stopped state\n",
pThread->uPID);
rc = RTCritSectLeave(&pThread->CritSect);
@@ -203,12 +203,12 @@ int VBoxServiceControlThreadStop(const PVBOXSERVICECTRLTHREAD pThread)
{
AssertPtrReturn(pThread, VERR_INVALID_POINTER);
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Stopping ...\n",
+ VBoxServiceVerbose(3, "[PID %u]: Stopping ...\n",
pThread->uPID);
int rc = vboxServiceControlThreadRequestCancel(pThread->pRequest);
if (RT_FAILURE(rc))
- VBoxServiceError("ControlThread: [PID %u]: Signalling request event failed, rc=%Rrc\n",
+ VBoxServiceError("[PID %u]: Signalling request event failed, rc=%Rrc\n",
pThread->uPID, rc);
/* Do *not* set pThread->fShutdown or other stuff here!
@@ -220,7 +220,7 @@ int VBoxServiceControlThreadStop(const PVBOXSERVICECTRLTHREAD pThread)
{
rc = VBoxServiceControlThreadPerform(pThread->uPID, pRequest);
if (RT_FAILURE(rc))
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Sending quit request failed with rc=%Rrc\n",
+ VBoxServiceVerbose(3, "[PID %u]: Sending quit request failed with rc=%Rrc\n",
pThread->uPID, rc);
VBoxServiceControlThreadRequestFree(pRequest);
@@ -235,34 +235,35 @@ int VBoxServiceControlThreadStop(const PVBOXSERVICECTRLTHREAD pThread)
* @return IPRT status code.
* @param pThread Thread to wait shutting down for.
* @param RTMSINTERVAL Timeout in ms to wait for shutdown.
+ * @param prc Where to store the thread's return code. Optional.
*/
int VBoxServiceControlThreadWait(const PVBOXSERVICECTRLTHREAD pThread,
- RTMSINTERVAL msTimeout)
+ RTMSINTERVAL msTimeout, int *prc)
{
AssertPtrReturn(pThread, VERR_INVALID_POINTER);
+ /* prc is optional. */
+
int rc = VINF_SUCCESS;
if ( pThread->Thread != NIL_RTTHREAD
&& ASMAtomicReadBool(&pThread->fStarted))
{
- VBoxServiceVerbose(2, "ControlThread: [PID %u]: Waiting for shutdown ...\n",
- pThread->uPID);
+ VBoxServiceVerbose(2, "[PID %u]: Waiting for shutdown of pThread=0x%p = \"%s\"...\n",
+ pThread->uPID, pThread, pThread->pszCmd);
/* Wait a bit ... */
int rcThread;
rc = RTThreadWait(pThread->Thread, msTimeout, &rcThread);
if (RT_FAILURE(rc))
{
- VBoxServiceError("ControlThread: [PID %u]: Waiting for shutting down thread returned error rc=%Rrc\n",
+ VBoxServiceError("[PID %u]: Waiting for shutting down thread returned error rc=%Rrc\n",
pThread->uPID, rc);
}
else
{
- if (RT_FAILURE(rcThread))
- {
- VBoxServiceError("ControlThread: [PID %u]: Shutdown returned error rc=%Rrc\n",
- pThread->uPID, rcThread);
- rc = rcThread;
- }
+ VBoxServiceVerbose(3, "[PID %u]: Thread reported exit code=%Rrc\n",
+ pThread->uPID, rcThread);
+ if (prc)
+ *prc = rcThread;
}
}
return rc;
@@ -327,7 +328,7 @@ static int VBoxServiceControlThreadHandleOutputError(RTPOLLSET hPollSet, uint32_
AssertPtrReturn(phPipeR, VERR_INVALID_POINTER);
#ifdef DEBUG
- VBoxServiceVerbose(4, "ControlThread: VBoxServiceControlThreadHandleOutputError: fPollEvt=0x%x, idPollHnd=%u\n",
+ VBoxServiceVerbose(4, "VBoxServiceControlThreadHandleOutputError: fPollEvt=0x%x, idPollHnd=%u\n",
fPollEvt, idPollHnd);
#endif
@@ -343,7 +344,7 @@ static int VBoxServiceControlThreadHandleOutputError(RTPOLLSET hPollSet, uint32_
if ( RT_SUCCESS(rc2)
&& cbReadable)
{
- VBoxServiceVerbose(3, "ControlThread: VBoxServiceControlThreadHandleOutputError: idPollHnd=%u has %ld bytes left, vetoing close\n",
+ VBoxServiceVerbose(3, "VBoxServiceControlThreadHandleOutputError: idPollHnd=%u has %ld bytes left, vetoing close\n",
idPollHnd, cbReadable);
/* Veto closing the pipe yet because there's still stuff to read
@@ -352,7 +353,7 @@ static int VBoxServiceControlThreadHandleOutputError(RTPOLLSET hPollSet, uint32_
fClosePipe = false;
}
else
- VBoxServiceVerbose(3, "ControlThread: VBoxServiceControlThreadHandleOutputError: idPollHnd=%u will be closed\n",
+ VBoxServiceVerbose(3, "VBoxServiceControlThreadHandleOutputError: idPollHnd=%u will be closed\n",
idPollHnd);
if ( *phPipeR != NIL_RTPIPE
@@ -381,7 +382,7 @@ static int VBoxServiceControlThreadHandleOutputEvent(RTPOLLSET hPollSet, uint32_
PRTPIPE phPipeR, uint32_t idPollHnd)
{
#if 0
- VBoxServiceVerbose(4, "ControlThread: VBoxServiceControlThreadHandleOutputEvent: fPollEvt=0x%x, idPollHnd=%u\n",
+ VBoxServiceVerbose(4, "VBoxServiceControlThreadHandleOutputEvent: fPollEvt=0x%x, idPollHnd=%u\n",
fPollEvt, idPollHnd);
#endif
@@ -393,7 +394,7 @@ static int VBoxServiceControlThreadHandleOutputEvent(RTPOLLSET hPollSet, uint32_
if ( RT_SUCCESS(rc)
&& cbReadable)
{
- VBoxServiceVerbose(4, "ControlThread: VBoxServiceControlThreadHandleOutputEvent: cbReadable=%ld\n",
+ VBoxServiceVerbose(4, "VBoxServiceControlThreadHandleOutputEvent: cbReadable=%ld\n",
cbReadable);
}
#endif
@@ -405,7 +406,7 @@ static int VBoxServiceControlThreadHandleOutputEvent(RTPOLLSET hPollSet, uint32_
uint8_t byData[_64K];
rc = RTPipeRead(*phPipeR,
byData, sizeof(byData), &cbRead);
- VBoxServiceVerbose(4, "ControlThread: VBoxServiceControlThreadHandleOutputEvent cbRead=%u, rc=%Rrc\n",
+ VBoxServiceVerbose(4, "VBoxServiceControlThreadHandleOutputEvent cbRead=%u, rc=%Rrc\n",
cbRead, rc);
/* Make sure we go another poll round in case there was too much data
@@ -435,14 +436,14 @@ static int VBoxServiceControlThreadHandleRequest(RTPOLLSET hPollSet, uint32_t fP
size_t cbIgnore;
int rc = RTPipeRead(pThread->hNotificationPipeR, abBuf, sizeof(abBuf), &cbIgnore);
if (RT_FAILURE(rc))
- VBoxServiceError("ControlThread: Draining IPC notification pipe failed with rc=%Rrc\n", rc);
+ VBoxServiceError("Draining IPC notification pipe failed with rc=%Rrc\n", rc);
int rcReq = VINF_SUCCESS; /* Actual request result. */
PVBOXSERVICECTRLREQUEST pRequest = pThread->pRequest;
if (!pRequest)
{
- VBoxServiceError("ControlThread: IPC request is invalid\n");
+ VBoxServiceError("IPC request is invalid\n");
return VERR_INVALID_POINTER;
}
@@ -531,7 +532,7 @@ static int VBoxServiceControlThreadHandleRequest(RTPOLLSET hPollSet, uint32_t fP
pRequest->rc = RT_SUCCESS(rc)
? rcReq : rc;
- VBoxServiceVerbose(2, "ControlThread: [PID %u]: Handled req=%u, CID=%u, rc=%Rrc, cbData=%u\n",
+ VBoxServiceVerbose(2, "[PID %u]: Handled req=%u, CID=%u, rc=%Rrc, cbData=%u\n",
pThread->uPID, pRequest->enmType, pRequest->uCID, pRequest->rc, pRequest->cbData);
/* In any case, regardless of the result, we notify
@@ -588,7 +589,7 @@ static int VBoxServiceControlThreadProcLoop(PVBOXSERVICECTRLTHREAD pThread,
rc = VBoxServiceControlAssignPID(pThread, hProcess);
if (RT_FAILURE(rc))
{
- VBoxServiceError("ControlThread: Unable to assign PID=%u, to new thread, rc=%Rrc\n",
+ VBoxServiceError("Unable to assign PID=%u, to new thread, rc=%Rrc\n",
hProcess, rc);
return rc;
}
@@ -597,7 +598,7 @@ static int VBoxServiceControlThreadProcLoop(PVBOXSERVICECTRLTHREAD pThread,
* Before entering the loop, tell the host that we've started the guest
* and that it's now OK to send input to the process.
*/
- VBoxServiceVerbose(2, "ControlThread: [PID %u]: Process \"%s\" started, CID=%u, User=%s\n",
+ VBoxServiceVerbose(2, "[PID %u]: Process \"%s\" started, CID=%u, User=%s\n",
pThread->uPID, pThread->pszCmd, pThread->uContextID, pThread->pszUser);
rc = VbglR3GuestCtrlExecReportStatus(pThread->uClientID, pThread->uContextID,
pThread->uPID, PROC_STS_STARTED, 0 /* u32Flags */,
@@ -622,7 +623,7 @@ static int VBoxServiceControlThreadProcLoop(PVBOXSERVICECTRLTHREAD pThread,
if (RT_SUCCESS(rc2))
{
- /*VBoxServiceVerbose(4, "ControlThread: [PID %u}: RTPollNoResume idPollHnd=%u\n",
+ /*VBoxServiceVerbose(4, "[PID %u}: RTPollNoResume idPollHnd=%u\n",
pThread->uPID, idPollHnd);*/
switch (idPollHnd)
{
@@ -656,7 +657,7 @@ static int VBoxServiceControlThreadProcLoop(PVBOXSERVICECTRLTHREAD pThread,
}
#if 0
- VBoxServiceVerbose(4, "ControlThread: [PID %u]: Polling done, pollRC=%Rrc, pollCnt=%u, rc=%Rrc, fShutdown=%RTbool\n",
+ VBoxServiceVerbose(4, "[PID %u]: Polling done, pollRC=%Rrc, pollCnt=%u, rc=%Rrc, fShutdown=%RTbool\n",
pThread->uPID, rc2, RTPollSetGetCount(hPollSet), rc, pThread->fShutdown);
#endif
/*
@@ -702,7 +703,7 @@ static int VBoxServiceControlThreadProcLoop(PVBOXSERVICECTRLTHREAD pThread,
uint64_t cMsElapsed = u64Now - MsStart;
if (cMsElapsed >= cMsTimeout)
{
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Timed out (%ums elapsed > %ums timeout), killing ...",
+ VBoxServiceVerbose(3, "[PID %u]: Timed out (%ums elapsed > %ums timeout), killing ...",
pThread->uPID, cMsElapsed, cMsTimeout);
fProcessTimedOut = true;
@@ -751,7 +752,7 @@ static int VBoxServiceControlThreadProcLoop(PVBOXSERVICECTRLTHREAD pThread,
{
if (MsProcessKilled == UINT64_MAX)
{
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Is still alive and not killed yet\n",
+ VBoxServiceVerbose(3, "[PID %u]: Is still alive and not killed yet\n",
pThread->uPID);
MsProcessKilled = RTTimeMilliTS();
@@ -761,19 +762,19 @@ static int VBoxServiceControlThreadProcLoop(PVBOXSERVICECTRLTHREAD pThread,
for (size_t i = 0; i < 10; i++)
{
- VBoxServiceVerbose(4, "ControlThread: [PID %u]: Kill attempt %d/10: Waiting to exit ...\n",
+ VBoxServiceVerbose(4, "[PID %u]: Kill attempt %d/10: Waiting to exit ...\n",
pThread->uPID, i + 1);
rc2 = RTProcWait(hProcess, RTPROCWAIT_FLAGS_NOBLOCK, &ProcessStatus);
if (RT_SUCCESS(rc2))
{
- VBoxServiceVerbose(4, "ControlThread: [PID %u]: Kill attempt %d/10: Exited\n",
+ VBoxServiceVerbose(4, "[PID %u]: Kill attempt %d/10: Exited\n",
pThread->uPID, i + 1);
fProcessAlive = false;
break;
}
if (i >= 5)
{
- VBoxServiceVerbose(4, "ControlThread: [PID %u]: Kill attempt %d/10: Trying to terminate ...\n",
+ VBoxServiceVerbose(4, "[PID %u]: Kill attempt %d/10: Trying to terminate ...\n",
pThread->uPID, i + 1);
RTProcTerminate(hProcess);
}
@@ -781,7 +782,7 @@ static int VBoxServiceControlThreadProcLoop(PVBOXSERVICECTRLTHREAD pThread,
}
if (fProcessAlive)
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Could not be killed\n", pThread->uPID);
+ VBoxServiceVerbose(3, "[PID %u]: Could not be killed\n", pThread->uPID);
}
/*
@@ -795,36 +796,36 @@ static int VBoxServiceControlThreadProcLoop(PVBOXSERVICECTRLTHREAD pThread,
if ( fProcessTimedOut && !fProcessAlive && MsProcessKilled != UINT64_MAX)
{
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Timed out and got killed\n",
+ VBoxServiceVerbose(3, "[PID %u]: Timed out and got killed\n",
pThread->uPID);
uStatus = PROC_STS_TOK;
}
else if (fProcessTimedOut && fProcessAlive && MsProcessKilled != UINT64_MAX)
{
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Timed out and did *not* get killed\n",
+ VBoxServiceVerbose(3, "[PID %u]: Timed out and did *not* get killed\n",
pThread->uPID);
uStatus = PROC_STS_TOA;
}
else if (pThread->fShutdown && (fProcessAlive || MsProcessKilled != UINT64_MAX))
{
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Got terminated because system/service is about to shutdown\n",
+ VBoxServiceVerbose(3, "[PID %u]: Got terminated because system/service is about to shutdown\n",
pThread->uPID);
uStatus = PROC_STS_DWN; /* Service is stopping, process was killed. */
uFlags = pThread->uFlags; /* Return handed-in execution flags back to the host. */
}
else if (fProcessAlive)
{
- VBoxServiceError("ControlThread: [PID %u]: Is alive when it should not!\n",
+ VBoxServiceError("[PID %u]: Is alive when it should not!\n",
pThread->uPID);
}
else if (MsProcessKilled != UINT64_MAX)
{
- VBoxServiceError("ControlThread: [PID %u]: Has been killed when it should not!\n",
+ VBoxServiceError("[PID %u]: Has been killed when it should not!\n",
pThread->uPID);
}
else if (ProcessStatus.enmReason == RTPROCEXITREASON_NORMAL)
{
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Ended with RTPROCEXITREASON_NORMAL (Exit code: %u)\n",
+ VBoxServiceVerbose(3, "[PID %u]: Ended with RTPROCEXITREASON_NORMAL (Exit code: %u)\n",
pThread->uPID, ProcessStatus.iStatus);
uStatus = PROC_STS_TEN;
@@ -832,7 +833,7 @@ static int VBoxServiceControlThreadProcLoop(PVBOXSERVICECTRLTHREAD pThread,
}
else if (ProcessStatus.enmReason == RTPROCEXITREASON_SIGNAL)
{
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Ended with RTPROCEXITREASON_SIGNAL (Signal: %u)\n",
+ VBoxServiceVerbose(3, "[PID %u]: Ended with RTPROCEXITREASON_SIGNAL (Signal: %u)\n",
pThread->uPID, ProcessStatus.iStatus);
uStatus = PROC_STS_TES;
@@ -841,30 +842,30 @@ static int VBoxServiceControlThreadProcLoop(PVBOXSERVICECTRLTHREAD pThread,
else if (ProcessStatus.enmReason == RTPROCEXITREASON_ABEND)
{
/* ProcessStatus.iStatus will be undefined. */
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Ended with RTPROCEXITREASON_ABEND\n",
+ VBoxServiceVerbose(3, "[PID %u]: Ended with RTPROCEXITREASON_ABEND\n",
pThread->uPID);
uStatus = PROC_STS_TEA;
uFlags = ProcessStatus.iStatus;
}
else
- VBoxServiceVerbose(1, "ControlThread: [PID %u]: Handling process status %u not implemented\n",
+ VBoxServiceVerbose(1, "[PID %u]: Handling process status %u not implemented\n",
pThread->uPID, ProcessStatus.enmReason);
- VBoxServiceVerbose(2, "ControlThread: [PID %u]: Ended, ClientID=%u, CID=%u, Status=%u, Flags=0x%x\n",
+ VBoxServiceVerbose(2, "[PID %u]: Ended, ClientID=%u, CID=%u, Status=%u, Flags=0x%x\n",
pThread->uPID, pThread->uClientID, pThread->uContextID, uStatus, uFlags);
rc = VbglR3GuestCtrlExecReportStatus(pThread->uClientID, pThread->uContextID,
pThread->uPID, uStatus, uFlags,
NULL /* pvData */, 0 /* cbData */);
if (RT_FAILURE(rc))
- VBoxServiceError("ControlThread: [PID %u]: Error reporting final status to host; rc=%Rrc\n",
+ VBoxServiceError("[PID %u]: Error reporting final status to host; rc=%Rrc\n",
pThread->uPID, rc);
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Process loop ended with rc=%Rrc\n",
+ VBoxServiceVerbose(3, "[PID %u]: Process loop ended with rc=%Rrc\n",
pThread->uPID, rc);
}
else
- VBoxServiceError("ControlThread: [PID %u]: Loop failed with rc=%Rrc\n",
+ VBoxServiceError("[PID %u]: Loop failed with rc=%Rrc\n",
pThread->uPID, rc);
return rc;
}
@@ -969,7 +970,7 @@ static int vboxServiceControlThreadRequestCancel(PVBOXSERVICECTRLREQUEST pReq)
if (!pReq) /* Silently skip non-initialized requests. */
return VINF_SUCCESS;
- VBoxServiceVerbose(4, "ControlThread: Cancelling request=0x%p\n", pReq);
+ VBoxServiceVerbose(4, "Cancelling request=0x%p\n", pReq);
return RTSemEventMultiSignal(pReq->Event);
}
@@ -985,7 +986,7 @@ void VBoxServiceControlThreadRequestFree(PVBOXSERVICECTRLREQUEST pReq)
{
AssertPtrReturnVoid(pReq);
- VBoxServiceVerbose(4, "ControlThread: Freeing request=0x%p (event=%RTsem)\n",
+ VBoxServiceVerbose(4, "Freeing request=0x%p (event=%RTsem)\n",
pReq, &pReq->Event);
int rc = RTSemEventMultiDestroy(pReq->Event);
@@ -1010,14 +1011,14 @@ int VBoxServiceControlThreadRequestWait(PVBOXSERVICECTRLREQUEST pReq)
int rc = RTSemEventMultiWait(pReq->Event, RT_INDEFINITE_WAIT);
if (RT_SUCCESS(rc))
{
- VBoxServiceVerbose(4, "ControlThread: Performed request with rc=%Rrc, cbData=%u\n",
+ VBoxServiceVerbose(4, "Performed request with rc=%Rrc, cbData=%u\n",
pReq->rc, pReq->cbData);
/* Give back overall request result. */
rc = pReq->rc;
}
else
- VBoxServiceError("ControlThread: Waiting for request failed, rc=%Rrc\n", rc);
+ VBoxServiceError("Waiting for request failed, rc=%Rrc\n", rc);
return rc;
}
@@ -1117,7 +1118,7 @@ static int VBoxServiceControlThreadMakeFullPath(const char *pszPath, char *pszEx
rc = RTStrCopy(pszExpanded, cbExpanded, pszPath);
#endif
#ifdef DEBUG
- VBoxServiceVerbose(3, "ControlThread: VBoxServiceControlExecMakeFullPath: %s -> %s\n",
+ VBoxServiceVerbose(3, "VBoxServiceControlExecMakeFullPath: %s -> %s\n",
pszPath, pszExpanded);
#endif
return rc;
@@ -1126,40 +1127,48 @@ static int VBoxServiceControlThreadMakeFullPath(const char *pszPath, char *pszEx
/**
* Resolves the full path of a specified executable name. This function also
- * resolves internal VBoxService tools to its appropriate executable path + name.
+ * resolves internal VBoxService tools to its appropriate executable path + name if
+ * VBOXSERVICE_NAME is specified as pszFileName.
*
* @return IPRT status code.
- * @param pszFileName File name to resovle.
+ * @param pszFileName File name to resolve.
* @param pszResolved Pointer to a string where the resolved file name will be stored.
* @param cbResolved Size (in bytes) of resolved file name string.
*/
static int VBoxServiceControlThreadResolveExecutable(const char *pszFileName,
char *pszResolved, size_t cbResolved)
{
+ AssertPtrReturn(pszFileName, VERR_INVALID_POINTER);
+ AssertPtrReturn(pszResolved, VERR_INVALID_POINTER);
+ AssertReturn(cbResolved, VERR_INVALID_PARAMETER);
+
int rc = VINF_SUCCESS;
- /* Search the path of our executable. */
- char szVBoxService[RTPATH_MAX];
- if (RTProcGetExecutablePath(szVBoxService, sizeof(szVBoxService)))
+ char szPathToResolve[RTPATH_MAX];
+ if ( (g_pszProgName && (RTStrICmp(pszFileName, g_pszProgName) == 0))
+ || !RTStrICmp(pszFileName, VBOXSERVICE_NAME))
{
- char *pszExecResolved = NULL;
- if ( (g_pszProgName && RTStrICmp(pszFileName, g_pszProgName) == 0)
- || !RTStrICmp(pszFileName, VBOXSERVICE_NAME))
- {
- /* We just want to execute VBoxService (no toolbox). */
- pszExecResolved = RTStrDup(szVBoxService);
- }
- else /* Nothing to resolve, copy original. */
- pszExecResolved = RTStrDup(pszFileName);
- AssertPtr(pszExecResolved);
+ /* Resolve executable name of this process. */
+ if (!RTProcGetExecutablePath(szPathToResolve, sizeof(szPathToResolve)))
+ rc = VERR_FILE_NOT_FOUND;
+ }
+ else
+ {
+ /* Take the raw argument to resolve. */
+ rc = RTStrCopy(szPathToResolve, sizeof(szPathToResolve), pszFileName);
+ }
- rc = VBoxServiceControlThreadMakeFullPath(pszExecResolved, pszResolved, cbResolved);
-#ifdef DEBUG
- VBoxServiceVerbose(3, "ControlThread: VBoxServiceControlExecResolveExecutable: %s -> %s\n",
- pszFileName, pszResolved);
-#endif
- RTStrFree(pszExecResolved);
+ if (RT_SUCCESS(rc))
+ {
+ rc = VBoxServiceControlThreadMakeFullPath(szPathToResolve, pszResolved, cbResolved);
+ if (RT_SUCCESS(rc))
+ VBoxServiceVerbose(3, "Looked up executable: %s -> %s\n",
+ pszFileName, pszResolved);
}
+
+ if (RT_FAILURE(rc))
+ VBoxServiceError("Failed to lookup executable \"%s\" with rc=%Rrc\n",
+ pszFileName, rc);
return rc;
}
@@ -1169,7 +1178,7 @@ static int VBoxServiceControlThreadResolveExecutable(const char *pszFileName,
* and relative paths.
*
* @return IPRT status code.
- * @param pszArgv0 First argument (argv0), either original or modified version.
+ * @param pszArgv0 First argument (argv0), either original or modified version. Optional.
* @param papszArgs Original argv command line from the host, starting at argv[1].
* @param ppapszArgv Pointer to a pointer with the new argv command line.
* Needs to be freed with RTGetOptArgvFree.
@@ -1208,6 +1217,11 @@ static int VBoxServiceControlThreadPrepareArgv(const char *pszArgv0,
pszNewArgs ? pszNewArgs : "", NULL /* Use standard separators. */);
}
+#ifdef DEBUG
+ VBoxServiceVerbose(3, "Arguments argv0=%s, new arguments=%s\n",
+ pszArgv0 ? pszArgv0 : "<NULL>", pszNewArgs);
+#endif
+
if (pszNewArgs)
RTStrFree(pszNewArgs);
return rc;
@@ -1246,7 +1260,7 @@ static int VBoxServiceControlThreadCreateProcess(const char *pszExec, const char
* (usually, if started by SCM) has administrator rights. Because of that a UI
* won't be shown (doesn't have a desktop).
*/
- if (RTStrICmp(pszExec, "sysprep") == 0)
+ if (!RTStrICmp(pszExec, "sysprep"))
{
/* Use a predefined sysprep path as default. */
char szSysprepCmd[RTPATH_MAX] = "C:\\sysprep\\sysprep.exe";
@@ -1279,6 +1293,10 @@ static int VBoxServiceControlThreadCreateProcess(const char *pszExec, const char
RTGetOptArgvFree(papszArgsExp);
}
}
+
+ if (RT_FAILURE(rc))
+ VBoxServiceVerbose(3, "Starting sysprep returned rc=%Rrc\n", rc);
+
return rc;
}
#endif /* RT_OS_WINDOWS */
@@ -1305,7 +1323,12 @@ static int VBoxServiceControlThreadCreateProcess(const char *pszExec, const char
char **papszArgsExp;
rc = VBoxServiceControlThreadPrepareArgv(pszExec /* Always use the unmodified executable name as argv0. */,
papszArgs /* Append the rest of the argument vector (if any). */, &papszArgsExp);
- if (RT_SUCCESS(rc))
+ if (RT_FAILURE(rc))
+ {
+ /* Don't print any arguments -- may contain passwords or other sensible data! */
+ VBoxServiceError("Could not prepare arguments, rc=%Rrc\n", rc);
+ }
+ else
{
uint32_t uProcFlags = 0;
if (fFlags)
@@ -1325,16 +1348,22 @@ static int VBoxServiceControlThreadCreateProcess(const char *pszExec, const char
if (*pszAsUser)
uProcFlags |= RTPROC_FLAGS_SERVICE;
#ifdef DEBUG
- VBoxServiceVerbose(3, "ControlThread: Command: %s\n", szExecExp);
+ VBoxServiceVerbose(3, "Command: %s\n", szExecExp);
for (size_t i = 0; papszArgsExp[i]; i++)
- VBoxServiceVerbose(3, "ControlThread:\targv[%ld]: %s\n", i, papszArgsExp[i]);
+ VBoxServiceVerbose(3, "\targv[%ld]: %s\n", i, papszArgsExp[i]);
#endif
+ VBoxServiceVerbose(3, "Starting process \"%s\" ...\n", szExecExp);
+
/* Do normal execution. */
rc = RTProcCreateEx(szExecExp, papszArgsExp, hEnv, uProcFlags,
phStdIn, phStdOut, phStdErr,
*pszAsUser ? pszAsUser : NULL,
*pszPassword ? pszPassword : NULL,
phProcess);
+
+ VBoxServiceVerbose(3, "Starting process \"%s\" returned rc=%Rrc\n",
+ szExecExp, rc);
+
RTGetOptArgvFree(papszArgsExp);
}
}
@@ -1350,7 +1379,8 @@ static int VBoxServiceControlThreadCreateProcess(const char *pszExec, const char
static int VBoxServiceControlThreadProcessWorker(PVBOXSERVICECTRLTHREAD pThread)
{
AssertPtrReturn(pThread, VERR_INVALID_POINTER);
- VBoxServiceVerbose(3, "ControlThread: Thread of process \"%s\" started\n", pThread->pszCmd);
+ VBoxServiceVerbose(3, "Thread of process pThread=0x%p = \"%s\" started\n",
+ pThread, pThread->pszCmd);
int rc = VBoxServiceControlListSet(VBOXSERVICECTRLTHREADLIST_RUNNING, pThread);
AssertRC(rc);
@@ -1358,11 +1388,11 @@ static int VBoxServiceControlThreadProcessWorker(PVBOXSERVICECTRLTHREAD pThread)
rc = VbglR3GuestCtrlConnect(&pThread->uClientID);
if (RT_FAILURE(rc))
{
- VBoxServiceError("ControlThread: Thread failed to connect to the guest control service, aborted! Error: %Rrc\n", rc);
+ VBoxServiceError("Thread failed to connect to the guest control service, aborted! Error: %Rrc\n", rc);
RTThreadUserSignal(RTThreadSelf());
return rc;
}
- VBoxServiceVerbose(3, "ControlThread: Guest process \"%s\" got client ID=%u, flags=0x%x\n",
+ VBoxServiceVerbose(3, "Guest process \"%s\" got client ID=%u, flags=0x%x\n",
pThread->pszCmd, pThread->uClientID, pThread->uFlags);
bool fSignalled = false; /* Indicator whether we signalled the thread user event already. */
@@ -1447,7 +1477,7 @@ static int VBoxServiceControlThreadProcessWorker(PVBOXSERVICECTRLTHREAD pThread)
pThread->pszUser, pThread->pszPassword,
&hProcess);
if (RT_FAILURE(rc))
- VBoxServiceError("ControlThread: Error starting process, rc=%Rrc\n", rc);
+ VBoxServiceError("Error starting process, rc=%Rrc\n", rc);
/*
* Tell the control thread that it can continue
* spawning services. This needs to be done after the new
@@ -1534,29 +1564,29 @@ static int VBoxServiceControlThreadProcessWorker(PVBOXSERVICECTRLTHREAD pThread)
PROC_STS_ERROR, rc,
NULL /* pvData */, 0 /* cbData */);
if (RT_FAILURE(rc2))
- VBoxServiceError("ControlThread: Could not report process failure error; rc=%Rrc (process error %Rrc)\n",
+ VBoxServiceError("Could not report process failure error; rc=%Rrc (process error %Rrc)\n",
rc2, rc);
}
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Cancelling pending host requests (client ID=%u)\n",
+ VBoxServiceVerbose(3, "[PID %u]: Cancelling pending host requests (client ID=%u)\n",
pThread->uPID, pThread->uClientID);
rc2 = VbglR3GuestCtrlCancelPendingWaits(pThread->uClientID);
if (RT_FAILURE(rc2))
{
- VBoxServiceError("ControlThread: [PID %u]: Cancelling pending host requests failed; rc=%Rrc\n",
+ VBoxServiceError("[PID %u]: Cancelling pending host requests failed; rc=%Rrc\n",
pThread->uPID, rc2);
if (RT_SUCCESS(rc))
rc = rc2;
}
/* Disconnect from guest control service. */
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Disconnecting (client ID=%u) ...\n",
+ VBoxServiceVerbose(3, "[PID %u]: Disconnecting (client ID=%u) ...\n",
pThread->uPID, pThread->uClientID);
VbglR3GuestCtrlDisconnect(pThread->uClientID);
pThread->uClientID = 0;
}
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Thread of process \"%s\" ended with rc=%Rrc\n",
+ VBoxServiceVerbose(3, "[PID %u]: Thread of process \"%s\" ended with rc=%Rrc\n",
pThread->uPID, pThread->pszCmd, rc);
/* Update started/stopped status. */
@@ -1621,12 +1651,12 @@ int VBoxServiceControlThreadStart(uint32_t uContextID,
RTTHREADTYPE_DEFAULT, RTTHREADFLAGS_WAITABLE, "gctl%u", s_uCtrlExecThread);
if (RT_FAILURE(rc))
{
- VBoxServiceError("ControlThread: RTThreadCreate failed, rc=%Rrc\n, pThread=%p\n",
+ VBoxServiceError("RTThreadCreate failed, rc=%Rrc\n, pThread=%p\n",
rc, pThread);
}
else
{
- VBoxServiceVerbose(4, "ControlThread: Waiting for thread to initialize ...\n");
+ VBoxServiceVerbose(4, "Waiting for thread to initialize ...\n");
/* Wait for the thread to initialize. */
rc = RTThreadUserWait(pThread->Thread, 60 * 1000 /* 60 seconds max. */);
@@ -1634,7 +1664,7 @@ int VBoxServiceControlThreadStart(uint32_t uContextID,
if ( ASMAtomicReadBool(&pThread->fShutdown)
|| RT_FAILURE(rc))
{
- VBoxServiceError("ControlThread: Thread for process \"%s\" failed to start, rc=%Rrc\n",
+ VBoxServiceError("Thread for process \"%s\" failed to start, rc=%Rrc\n",
pProcess->szCmd, rc);
}
else
@@ -1690,7 +1720,7 @@ int VBoxServiceControlThreadPerform(uint32_t uPID, PVBOXSERVICECTRLREQUEST pRequ
if ( RT_SUCCESS(rc)
&& cbWritten)
{
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Waiting for response on enmType=%u, pvData=0x%p, cbData=%u\n",
+ VBoxServiceVerbose(3, "[PID %u]: Waiting for response on enmType=%u, pvData=0x%p, cbData=%u\n",
uPID, pRequest->enmType, pRequest->pvData, pRequest->cbData);
rc = VBoxServiceControlThreadRequestWait(pRequest);
@@ -1702,7 +1732,7 @@ int VBoxServiceControlThreadPerform(uint32_t uPID, PVBOXSERVICECTRLREQUEST pRequ
else /* PID not found! */
rc = VERR_NOT_FOUND;
- VBoxServiceVerbose(3, "ControlThread: [PID %u]: Performed enmType=%u, uCID=%u, pvData=0x%p, cbData=%u, rc=%Rrc\n",
+ VBoxServiceVerbose(3, "[PID %u]: Performed enmType=%u, uCID=%u, pvData=0x%p, cbData=%u, rc=%Rrc\n",
uPID, pRequest->enmType, pRequest->uCID, pRequest->pvData, pRequest->cbData, rc);
return rc;
}
diff --git a/src/VBox/Additions/common/VBoxService/VBoxServiceInternal.h b/src/VBox/Additions/common/VBoxService/VBoxServiceInternal.h
index 4ce09b681..30ab0c5db 100644
--- a/src/VBox/Additions/common/VBoxService/VBoxServiceInternal.h
+++ b/src/VBox/Additions/common/VBoxService/VBoxServiceInternal.h
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2007-2011 Oracle Corporation
+ * Copyright (C) 2007-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -396,7 +396,8 @@ extern int VBoxServiceControlThreadStart(uint32_t uContext,
PVBOXSERVICECTRLPROCESS pProcess);
extern int VBoxServiceControlThreadPerform(uint32_t uPID, PVBOXSERVICECTRLREQUEST pRequest);
extern int VBoxServiceControlThreadStop(const PVBOXSERVICECTRLTHREAD pThread);
-extern int VBoxServiceControlThreadWait(const PVBOXSERVICECTRLTHREAD pThread, RTMSINTERVAL msTimeout);
+extern int VBoxServiceControlThreadWait(const PVBOXSERVICECTRLTHREAD pThread,
+ RTMSINTERVAL msTimeout, int *prc);
extern int VBoxServiceControlThreadFree(PVBOXSERVICECTRLTHREAD pThread);
/* Request handling. */
extern int VBoxServiceControlThreadRequestAlloc(PVBOXSERVICECTRLREQUEST *ppReq,
diff --git a/src/VBox/Additions/common/VBoxService/VBoxServiceToolBox.cpp b/src/VBox/Additions/common/VBoxService/VBoxServiceToolBox.cpp
index 060a030c5..9860f1d72 100644
--- a/src/VBox/Additions/common/VBoxService/VBoxServiceToolBox.cpp
+++ b/src/VBox/Additions/common/VBoxService/VBoxServiceToolBox.cpp
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2011 Oracle Corporation
+ * Copyright (C) 2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo-win.cpp b/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo-win.cpp
index 21dd401fd..a23128a58 100644
--- a/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo-win.cpp
+++ b/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo-win.cpp
@@ -586,6 +586,12 @@ bool VBoxServiceVMInfoWinIsLoggedIn(PVBOXSERVICEVMINFOUSER pUserInfo, PLUID pSes
return false;
}
+ VBoxServiceVerbose(3, "Session data: Name=%ls, Session=%u, LogonID=%ld,%ld, LogonType=%ld\n",
+ pSessionData->UserName.Buffer,
+ pSessionData->Session,
+ pSessionData->LogonId.HighPart, pSessionData->LogonId.LowPart,
+ pSessionData->LogonType);
+
/*
* Only handle users which can login interactively or logged in
* remotely over native RDP.
@@ -594,12 +600,12 @@ bool VBoxServiceVMInfoWinIsLoggedIn(PVBOXSERVICEVMINFOUSER pUserInfo, PLUID pSes
DWORD dwErr = NO_ERROR;
if ( IsValidSid(pSessionData->Sid)
&& ( (SECURITY_LOGON_TYPE)pSessionData->LogonType == Interactive
- || (SECURITY_LOGON_TYPE)pSessionData->LogonType == RemoteInteractive))
+ || (SECURITY_LOGON_TYPE)pSessionData->LogonType == RemoteInteractive
+ /* Note: We also need CachedInteractive in case Windows cached the credentials
+ * or just wants to reuse them! */
+ || (SECURITY_LOGON_TYPE)pSessionData->LogonType == CachedInteractive))
{
- VBoxServiceVerbose(3, "Session data: Name=%ls, Session=%u, LogonID=%ld,%ld, LogonType=%ld\n",
- pSessionData->UserName.Buffer,
- pSessionData->Session,
- pSessionData->LogonId.HighPart, pSessionData->LogonId.LowPart,
+ VBoxServiceVerbose(3, "Session LogonType=%ld is supported -- looking up SID + type ...\n",
pSessionData->LogonType);
/*
@@ -696,6 +702,9 @@ bool VBoxServiceVMInfoWinIsLoggedIn(PVBOXSERVICEVMINFOUSER pUserInfo, PLUID pSes
fFoundUser = true;
}
}
+ else
+ VBoxServiceVerbose(3, "SID owner type=%d not handled, skipping\n",
+ enmOwnerType);
}
VBoxServiceVerbose(3, "Account User=%ls %s logged in\n",
@@ -770,6 +779,8 @@ int VBoxServiceVMInfoWinWriteUsers(char **ppszUserList, uint32_t *pcUsersInList)
ULONG cUniqueUsers = 0;
for (ULONG i = 0; i < cSessions; i++)
{
+ VBoxServiceVerbose(3, "Handling session %u\n", i);
+
VBOXSERVICEVMINFOUSER UserInfo;
if (VBoxServiceVMInfoWinIsLoggedIn(&UserInfo, &paSessions[i]))
{
diff --git a/src/VBox/Additions/common/crOpenGL/array/arrayspu.c b/src/VBox/Additions/common/crOpenGL/array/arrayspu.c
index 247adedf2..5352307a8 100644
--- a/src/VBox/Additions/common/crOpenGL/array/arrayspu.c
+++ b/src/VBox/Additions/common/crOpenGL/array/arrayspu.c
@@ -880,6 +880,21 @@ arrayspu_DestroyContext( GLint ctx )
#endif
}
+static void ARRAYSPU_APIENTRY
+arrayspu_VBoxAttachThread()
+{
+ crStateVBoxAttachThread();
+ array_spu.child.VBoxAttachThread();
+}
+
+static void ARRAYSPU_APIENTRY
+arrayspu_VBoxDetachThread()
+{
+ crStateVBoxDetachThread();
+ array_spu.child.VBoxDetachThread();
+}
+
+
SPUNamedFunctionTable _cr_array_table[] = {
{ "ArrayElement", (SPUGenericFunction) arrayspu_ArrayElement },
{ "DrawArrays", (SPUGenericFunction) arrayspu_DrawArrays},
@@ -923,5 +938,7 @@ SPUNamedFunctionTable _cr_array_table[] = {
{ "MakeCurrent", (SPUGenericFunction) arrayspu_MakeCurrent},
{ "DestroyContext", (SPUGenericFunction) arrayspu_DestroyContext},
{ "UseProgram", (SPUGenericFunction) arrayspu_UseProgram},
+ { "VBoxAttachThread", (SPUGenericFunction) arrayspu_VBoxAttachThread},
+ { "VBoxDetachThread", (SPUGenericFunction) arrayspu_VBoxDetachThread},
{ NULL, NULL }
};
diff --git a/src/VBox/Additions/common/crOpenGL/array/arrayspu_init.c b/src/VBox/Additions/common/crOpenGL/array/arrayspu_init.c
index baeec06a0..f05ee5b70 100644
--- a/src/VBox/Additions/common/crOpenGL/array/arrayspu_init.c
+++ b/src/VBox/Additions/common/crOpenGL/array/arrayspu_init.c
@@ -84,34 +84,3 @@ int SPULoad( char **name, char **super, SPUInitFuncPtr *init,
return 1;
}
-
-#ifdef RT_OS_WINDOWS
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-BOOL WINAPI DllMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
-{
- (void) lpvReserved;
-
- switch (fdwReason)
- {
- case DLL_THREAD_ATTACH:
- {
- crStateOnThreadAttachDetach(GL_TRUE);
- break;
- }
-
- case DLL_THREAD_DETACH:
- {
- crStateOnThreadAttachDetach(GL_FALSE);
- break;
- }
-
- case DLL_PROCESS_ATTACH:
- case DLL_PROCESS_DETACH:
- default:
- break;
- }
-
- return TRUE;
-}
-#endif
diff --git a/src/VBox/Additions/common/crOpenGL/feedback/feedback_state_special b/src/VBox/Additions/common/crOpenGL/feedback/feedback_state_special
index 4e7faefd6..e378d58bf 100644
--- a/src/VBox/Additions/common/crOpenGL/feedback/feedback_state_special
+++ b/src/VBox/Additions/common/crOpenGL/feedback/feedback_state_special
@@ -61,3 +61,5 @@ RasterPos4sv
CreateContext
MakeCurrent
DestroyContext
+VBoxAttachThread
+VBoxDetachThread
diff --git a/src/VBox/Additions/common/crOpenGL/feedback/feedbackspu_init.c b/src/VBox/Additions/common/crOpenGL/feedback/feedbackspu_init.c
index d2703fab1..97fc506c6 100644
--- a/src/VBox/Additions/common/crOpenGL/feedback/feedbackspu_init.c
+++ b/src/VBox/Additions/common/crOpenGL/feedback/feedbackspu_init.c
@@ -84,34 +84,3 @@ int SPULoad( char **name, char **super, SPUInitFuncPtr *init,
return 1;
}
-
-#ifdef RT_OS_WINDOWS
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-BOOL WINAPI DllMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
-{
- (void) lpvReserved;
-
- switch (fdwReason)
- {
- case DLL_THREAD_ATTACH:
- {
- crStateOnThreadAttachDetach(GL_TRUE);
- break;
- }
-
- case DLL_THREAD_DETACH:
- {
- crStateOnThreadAttachDetach(GL_FALSE);
- break;
- }
-
- case DLL_PROCESS_ATTACH:
- case DLL_PROCESS_DETACH:
- default:
- break;
- }
-
- return TRUE;
-}
-#endif
diff --git a/src/VBox/Additions/common/crOpenGL/load.c b/src/VBox/Additions/common/crOpenGL/load.c
index 34413b90f..477ebfbf0 100644
--- a/src/VBox/Additions/common/crOpenGL/load.c
+++ b/src/VBox/Additions/common/crOpenGL/load.c
@@ -1338,7 +1338,7 @@ stubInit(void)
#ifdef DEBUG_misha
/* debugging: this is to be able to catch first-chance notifications
* for exceptions other than EXCEPTION_BREAKPOINT in kernel debugger */
-# define VDBG_VEHANDLER
+//# define VDBG_VEHANDLER
#endif
#ifdef VDBG_VEHANDLER
@@ -1425,6 +1425,15 @@ BOOL WINAPI DllMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
case DLL_PROCESS_DETACH:
{
+ /* do exactly the same thing as for DLL_THREAD_DETACH since
+ * DLL_THREAD_DETACH is not called for the thread doing DLL_PROCESS_DETACH according to msdn docs */
+ stubSetCurrentContext(NULL);
+ if (stub_initialized)
+ {
+ CRASSERT(stub.spu);
+ stub.spu->dispatch_table.VBoxDetachThread();
+ }
+
stubSPUSafeTearDown();
#ifdef CHROMIUM_THREADSAFE
@@ -1439,26 +1448,22 @@ BOOL WINAPI DllMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
case DLL_THREAD_ATTACH:
{
-#if 0
if (stub_initialized)
{
CRASSERT(stub.spu);
- stub.spu->dispatch_table.VBoxPackAttachThread();
+ stub.spu->dispatch_table.VBoxAttachThread();
}
-#endif
break;
}
case DLL_THREAD_DETACH:
{
stubSetCurrentContext(NULL);
-#if 0
if (stub_initialized)
{
CRASSERT(stub.spu);
- stub.spu->dispatch_table.VBoxPackDetachThread();
+ stub.spu->dispatch_table.VBoxDetachThread();
}
-#endif
break;
}
diff --git a/src/VBox/Additions/common/crOpenGL/pack/packspu_getshaders.c b/src/VBox/Additions/common/crOpenGL/pack/packspu_getshaders.c
index 9165ea30b..3b77372f0 100644
--- a/src/VBox/Additions/common/crOpenGL/pack/packspu_getshaders.c
+++ b/src/VBox/Additions/common/crOpenGL/pack/packspu_getshaders.c
@@ -21,6 +21,7 @@
#include "cr_net.h"
#include "packspu_proto.h"
#include "cr_mem.h"
+#include <iprt/assert.h>
/*@todo combine with the one from server_getshaders.c*/
typedef struct _crGetActive_t
@@ -122,6 +123,8 @@ void PACKSPU_APIENTRY packspu_GetAttachedObjectsARB(GLhandleARB containerObj, GL
crFree(pLocal);
}
+AssertCompile(sizeof(GLsizei) == 4);
+
void PACKSPU_APIENTRY packspu_GetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog)
{
GET_THREAD(thread);
@@ -139,8 +142,10 @@ void PACKSPU_APIENTRY packspu_GetInfoLogARB(GLhandleARB obj, GLsizei maxLength,
while (writeback)
crNetRecv();
+ CRASSERT((pLocal[0]) <= maxLength);
+
if (length) *length=*pLocal;
- crMemcpy(infoLog, &pLocal[1], (*pLocal)+1);
+ crMemcpy(infoLog, &pLocal[1], (maxLength >= (pLocal[0])) ? pLocal[0] : maxLength);
crFree(pLocal);
}
diff --git a/src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c b/src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c
index 422ac5e1c..e5ad6358c 100644
--- a/src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c
+++ b/src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c
@@ -478,7 +478,7 @@ void PACKSPU_APIENTRY packspu_VBoxPackSetInjectID(GLuint id)
crUnlockMutex(&_PackMutex);
}
-void PACKSPU_APIENTRY packspu_VBoxPackAttachThread()
+void PACKSPU_APIENTRY packspu_VBoxAttachThread()
{
#if 0
int i;
@@ -494,9 +494,11 @@ void PACKSPU_APIENTRY packspu_VBoxPackAttachThread()
#endif
crSetTSD(&_PackTSD, NULL);
+
+ crStateVBoxAttachThread();
}
-void PACKSPU_APIENTRY packspu_VBoxPackDetachThread()
+void PACKSPU_APIENTRY packspu_VBoxDetachThread()
{
int i;
GET_THREAD(thread);
@@ -557,6 +559,8 @@ void PACKSPU_APIENTRY packspu_VBoxPackDetachThread()
crUnlockMutex(&_PackMutex);
}
+
+ crStateVBoxDetachThread();
}
#ifdef WINDOWS
@@ -582,19 +586,7 @@ BOOL WINAPI DllMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
}
case DLL_THREAD_ATTACH:
- {
- packspu_VBoxPackAttachThread();
- crStateOnThreadAttachDetach(GL_TRUE);
- break;
- }
-
case DLL_THREAD_DETACH:
- {
- packspu_VBoxPackDetachThread();
- crStateOnThreadAttachDetach(GL_FALSE);
- break;
- }
-
default:
break;
}
diff --git a/src/VBox/Additions/common/crOpenGL/pack/packspu_special b/src/VBox/Additions/common/crOpenGL/pack/packspu_special
index 2cea4da61..ab8682a1f 100644
--- a/src/VBox/Additions/common/crOpenGL/pack/packspu_special
+++ b/src/VBox/Additions/common/crOpenGL/pack/packspu_special
@@ -104,8 +104,8 @@ BindRenderbufferEXT
VBoxPackSetInjectThread
VBoxPackGetInjectID
VBoxPackSetInjectID
-VBoxPackAttachThread
-VBoxPackDetachThread
+VBoxAttachThread
+VBoxDetachThread
ChromiumParameteriCR
CompressedTexImage1DARB
CompressedTexImage2DARB
diff --git a/src/VBox/Additions/linux/installer/vboxadd-x11.sh b/src/VBox/Additions/linux/installer/vboxadd-x11.sh
index 50be32d39..e26e39dd0 100755
--- a/src/VBox/Additions/linux/installer/vboxadd-x11.sh
+++ b/src/VBox/Additions/linux/installer/vboxadd-x11.sh
@@ -1,6 +1,6 @@
#! /bin/sh
#
-# Linux Additions X11 setup init script ($Revision: 76664 $)
+# Linux Additions X11 setup init script ($Revision: 77057 $)
#
#
diff --git a/src/VBox/Additions/linux/sharedfolders/vfsmod.c b/src/VBox/Additions/linux/sharedfolders/vfsmod.c
index 0699756b0..c27040b83 100644
--- a/src/VBox/Additions/linux/sharedfolders/vfsmod.c
+++ b/src/VBox/Additions/linux/sharedfolders/vfsmod.c
@@ -198,6 +198,7 @@ static int sf_read_super_aux(struct super_block *sb, void *data, int flags)
struct sf_glob_info *sf_g;
SHFLFSOBJINFO fsinfo;
struct vbsf_mount_info_new *info;
+ bool fInodePut = true;
TRACE();
if (!data)
@@ -294,11 +295,18 @@ static int sf_read_super_aux(struct super_block *sb, void *data, int flags)
unlock_new_inode(iroot);
#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 4, 0)
+ droot = d_make_root(iroot);
+#else
droot = d_alloc_root(iroot);
+#endif
if (!droot)
{
err = -ENOMEM; /* XXX */
LogFunc(("d_alloc_root failed\n"));
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 4, 0)
+ fInodePut = false;
+#endif
goto fail5;
}
@@ -310,7 +318,8 @@ fail5:
sf_done_backing_dev(sf_g);
fail4:
- iput(iroot);
+ if (fInodePut)
+ iput(iroot);
fail3:
kfree(sf_i->path);
diff --git a/src/VBox/Devices/Audio/coreaudio.c b/src/VBox/Devices/Audio/coreaudio.c
index a9dbee6fd..da22fa573 100644
--- a/src/VBox/Devices/Audio/coreaudio.c
+++ b/src/VBox/Devices/Audio/coreaudio.c
@@ -370,9 +370,20 @@ DECL_FORCE_INLINE(bool) caIsRunning(AudioDeviceID deviceID)
static char* caCFStringToCString(const CFStringRef pCFString)
{
- const char *pszTmp = NULL;
char *pszResult = NULL;
CFIndex cLen;
+#if 0
+ /**
+ * CFStringGetCStringPtr doesn't reliably return requested string instead return depends on "many factors" (not clear which)
+ * ( please follow the link
+ * http://developer.apple.com/library/mac/#documentation/CoreFoundation/Reference/CFStringRef/Reference/reference.html
+ * for more details). Branch below allocates memory using mechanisms which hasn't got single method for memory free:
+ * RTStrDup - RTStrFree
+ * RTMemAllocZTag - RTMemFree
+ * which aren't compatible, opposite to CFStringGetCStringPtr CFStringGetCString has well defined
+ * behaviour and confident return value.
+ */
+ const char *pszTmp = NULL;
/* First try to get the pointer directly. */
pszTmp = CFStringGetCStringPtr(pCFString, kCFStringEncodingUTF8);
@@ -390,6 +401,16 @@ static char* caCFStringToCString(const CFStringRef pCFString)
pszResult = NULL;
}
}
+#else
+ /* If the pointer isn't available directly, we have to make a copy. */
+ cLen = CFStringGetLength(pCFString) + 1;
+ pszResult = RTMemAllocZTag(cLen * sizeof(char), RTSTR_TAG);
+ if (!CFStringGetCString(pCFString, pszResult, cLen, kCFStringEncodingUTF8))
+ {
+ RTStrFree(pszResult);
+ pszResult = NULL;
+ }
+#endif
return pszResult;
}
@@ -691,9 +712,9 @@ static int caInitOutput(HWVoiceOut *hw)
CFRelease(name);
if (pszName && pszUID)
LogRel(("CoreAudio: Using output device: %s (UID: %s)\n", pszName, pszUID));
- RTStrFree(pszUID);
+ RTMemFree(pszUID);
}
- RTStrFree(pszName);
+ RTMemFree(pszName);
}
else
LogRel(("CoreAudio: [Output] Unable to get output device name (%RI32)\n", err));
@@ -1463,8 +1484,8 @@ static int caInitInput(HWVoiceIn *hw)
UInt32 uSize = 0; /* temporary size of properties */
UInt32 uFlag = 0; /* for setting flags */
CFStringRef name; /* for the temporary device name fetching */
- char *pszName;
- char *pszUID;
+ char *pszName = NULL;
+ char *pszUID = NULL;
ComponentDescription cd; /* description for an audio component */
Component cp; /* an audio component */
AURenderCallbackStruct cb; /* holds the callback structure */
@@ -1515,9 +1536,11 @@ static int caInitInput(HWVoiceIn *hw)
CFRelease(name);
if (pszName && pszUID)
LogRel(("CoreAudio: Using input device: %s (UID: %s)\n", pszName, pszUID));
- RTStrFree(pszUID);
+ if (pszUID)
+ RTMemFree(pszUID);
}
- RTStrFree(pszName);
+ if (pszName)
+ RTMemFree(pszName);
}
else
LogRel(("CoreAudio: [Input] Unable to get input device name (%RI32)\n", err));
diff --git a/src/VBox/Devices/Audio/noaudio.c b/src/VBox/Devices/Audio/noaudio.c
index dbee48f34..d71f8e5dd 100644
--- a/src/VBox/Devices/Audio/noaudio.c
+++ b/src/VBox/Devices/Audio/noaudio.c
@@ -57,7 +57,14 @@ static int no_run_out (HWVoiceOut *hw)
ticks_per_second = audio_get_ticks_per_sec ();
/* Minimize the rounding error: samples = int((ticks * freq) / ticks_per_second + 0.5). */
- samples = (2 * ticks * hw->info.freq + ticks_per_second) / ticks_per_second / 2;
+ samples = (int)((2 * ticks * hw->info.freq + ticks_per_second) / ticks_per_second / 2);
+ /* Usually there is no integer overflow while calculating the 'samples' value.
+ * It can happen because this is the first invocation or because the function was not called for awhile.
+ * In this case simply claim that all samples has been played.
+ */
+ if (samples < 0) {
+ samples = live;
+ }
no->old_ticks = now;
decr = audio_MIN (live, samples);
diff --git a/src/VBox/Devices/Network/slirp/libalias/alias_db.c b/src/VBox/Devices/Network/slirp/libalias/alias_db.c
index 3ba9f22a2..186c7907f 100644
--- a/src/VBox/Devices/Network/slirp/libalias/alias_db.c
+++ b/src/VBox/Devices/Network/slirp/libalias/alias_db.c
@@ -344,6 +344,8 @@ struct alias_link { /* Main data structure */
* managment and deletion are in repsponsible of Slirp.
*/
int sockfd; /* socket descriptor */
+# else
+ struct socket *pSo;
# endif
#endif
LIST_ENTRY (alias_link) list_out; /* Linked list of
@@ -568,7 +570,11 @@ Port search:
/* Local prototypes */
static int GetNewPort(struct libalias *, struct alias_link *, int);
#ifndef NO_USE_SOCKETS
+# ifdef VBOX
+static u_short GetSocket(struct libalias *, u_short, struct alias_link*, int);
+# else
static u_short GetSocket(struct libalias *, u_short, int *, int);
+# endif
#endif
static void CleanupAliasData(struct libalias *);
@@ -686,7 +692,7 @@ GetNewPort(struct libalias *la, struct alias_link *lnk, int alias_port_param)
#ifndef VBOX
if (GetSocket(la, port_net, &lnk->sockfd, lnk->link_type)) {
#else
- if (GetSocket(la, port_net, NULL, lnk->link_type)) {
+ if (GetSocket(la, port_net, lnk, lnk->link_type)) {
#endif
lnk->alias_port = port_net;
return (0);
@@ -714,7 +720,11 @@ GetNewPort(struct libalias *la, struct alias_link *lnk, int alias_port_param)
#ifndef NO_USE_SOCKETS
static u_short
+# ifndef VBOX
GetSocket(struct libalias *la, u_short port_net, int *sockfd, int link_type)
+# else
+GetSocket(struct libalias *la, u_short port_net, struct alias_link *pLnk, int link_type)
+# endif
{
int err;
int sock;
@@ -801,6 +811,8 @@ GetSocket(struct libalias *la, u_short port_net, int *sockfd, int link_type)
else
Assert(!"Shouldn't be here");
LogFunc(("bind called for socket: %R[natsock]\n", so));
+ pLnk->pSo = so;
+ so->so_pvLnk = pLnk;
#else
*sockfd = sock;
#endif
@@ -955,10 +967,28 @@ IncrementalCleanup(struct libalias *la)
la->cleanupIndex = 0;
}
+#ifdef VBOX
+/**
+ * when slirp delete the link we need inform libalias about it.
+ */
+void slirpDeleteLinkSocket(void *pvLnk)
+{
+ struct alias_link *lnk = (struct alias_link *)pvLnk;
+ if ( lnk
+ && lnk->pSo)
+ {
+ struct libalias *la = lnk->la;
+ la->sockCount--;
+ lnk->pSo = NULL;
+ }
+}
+#endif /* !VBOX */
+
static void
DeleteLink(struct alias_link *lnk)
{
struct libalias *la = lnk->la;
+ LogFlowFunc(("ENTER: lnk->pSo:%R[natsock]\n", lnk->pSo));
LIBALIAS_LOCK_ASSERT(la);
/* Don't do anything if the link is marked permanent */
@@ -993,7 +1023,18 @@ DeleteLink(struct alias_link *lnk)
close(lnk->sockfd);
}
# else
- /* Slirp will close the socket in its own way */
+ if (lnk->pSo)
+ {
+ /* libalias's sockCount decremented in slirpDeleteLinkSocket,
+ * which called from sofree
+ */
+ /* la->sockCount--; */
+ /* should we be more smart, or it's enough to be
+ * narrow-minded and just do sofree here
+ */
+ sofree(la->pData, lnk->pSo);
+ lnk->pSo = NULL;
+ }
# endif
#endif
/* Link-type dependent cleanup */
@@ -1033,6 +1074,7 @@ DeleteLink(struct alias_link *lnk)
if (la->packetAliasMode & PKT_ALIAS_LOG) {
ShowAliasStats(la);
}
+ LogFlowFuncLeave();
}
@@ -1066,6 +1108,8 @@ AddLink(struct libalias *la, struct in_addr src_addr,
#ifndef NO_USE_SOCKETS
# ifndef VBOX
lnk->sockfd = -1;
+# else
+ lnk->pSo = NULL;
# endif
#endif
lnk->flags = 0;
diff --git a/src/VBox/Devices/Network/slirp/socket.c b/src/VBox/Devices/Network/slirp/socket.c
index 2e78bb225..f1bc0f13c 100644
--- a/src/VBox/Devices/Network/slirp/socket.c
+++ b/src/VBox/Devices/Network/slirp/socket.c
@@ -103,6 +103,9 @@ sofree(PNATState pData, struct socket *so)
tcp_last_so = &tcb;
else if (so == udp_last_so)
udp_last_so = &udb;
+ /* libalias notification */
+ if (so->so_pvLnk)
+ slirpDeleteLinkSocket(so->so_pvLnk);
/* check if mbuf haven't been already freed */
if (so->so_m != NULL)
@@ -1124,6 +1127,7 @@ soisfconnected(struct socket *so)
void
sofcantrcvmore(struct socket *so)
{
+ LogFlowFunc(("ENTER: so:%R[natsock]\n", so));
if ((so->so_state & SS_NOFDREF) == 0)
{
shutdown(so->s, 0);
@@ -1134,11 +1138,13 @@ sofcantrcvmore(struct socket *so)
/* XXX close() here as well? */
else
so->so_state |= SS_FCANTRCVMORE;
+ LogFlowFuncLeave();
}
void
sofcantsendmore(struct socket *so)
{
+ LogFlowFunc(("ENTER: so:%R[natsock]\n", so));
if ((so->so_state & SS_NOFDREF) == 0)
shutdown(so->s, 1); /* send FIN to fhost */
@@ -1147,6 +1153,7 @@ sofcantsendmore(struct socket *so)
so->so_state = SS_NOFDREF; /* as above */
else
so->so_state |= SS_FCANTSENDMORE;
+ LogFlowFuncLeave();
}
void
diff --git a/src/VBox/Devices/Network/slirp/socket.h b/src/VBox/Devices/Network/slirp/socket.h
index 15bea049f..1fa88ed0c 100644
--- a/src/VBox/Devices/Network/slirp/socket.h
+++ b/src/VBox/Devices/Network/slirp/socket.h
@@ -105,8 +105,13 @@ struct socket
#endif
/* required for port-forwarding */
struct libalias *so_la;
+ /* libalias might attach the socket and we want to notify libalias we're freeing it */
+ void *so_pvLnk;
};
+/* this function inform libalias about socket close */
+void slirpDeleteLinkSocket(void *pvLnk);
+
#ifdef VBOX_WITH_SLIRP_MT
# define SOCKET_LOCK(so) \
do { \
diff --git a/src/VBox/Devices/Network/slirp/tcp_subr.c b/src/VBox/Devices/Network/slirp/tcp_subr.c
index 6a389fe2e..419c91583 100644
--- a/src/VBox/Devices/Network/slirp/tcp_subr.c
+++ b/src/VBox/Devices/Network/slirp/tcp_subr.c
@@ -353,6 +353,7 @@ void
tcp_sockclosed(PNATState pData, struct tcpcb *tp)
{
LogFlowFunc(("ENTER: tp = %R[tcpcb793]\n", tp));
+ LogFunc(("tp->t_socket:%R[natsock]\n",tp->t_socket));
switch (tp->t_state)
{
diff --git a/src/VBox/Devices/VMMDev/VMMDevHGCM.cpp b/src/VBox/Devices/VMMDev/VMMDevHGCM.cpp
index e4230cddb..95a2b4db2 100644
--- a/src/VBox/Devices/VMMDev/VMMDevHGCM.cpp
+++ b/src/VBox/Devices/VMMDev/VMMDevHGCM.cpp
@@ -80,6 +80,12 @@ struct VBOXHGCMCMD
/* Whether the command was cancelled by the guest. */
bool fCancelled;
+ /* Whether the command is in the active commands list. */
+ bool fInList;
+
+ /* Whether the command was saved. */
+ bool fSaved;
+
/* GC physical address of the guest request. */
RTGCPHYS GCPhys;
@@ -137,6 +143,8 @@ static int vmmdevHGCMAddCommand (VMMDevState *pVMMDevState, PVBOXHGCMCMD pCmd, R
pVMMDevState->pHGCMCmdList = pCmd;
+ pCmd->fInList = true;
+
if (enmCmdType != VBOXHGCMCMDTYPE_LOADSTATE)
{
/* Loaded commands already have the right type. */
@@ -173,6 +181,13 @@ static int vmmdevHGCMRemoveCommand (VMMDevState *pVMMDevState, PVBOXHGCMCMD pCmd
{
LogFlowFunc(("%p\n", pCmd));
+ if (!pCmd->fInList)
+ {
+ LogFlowFunc(("%p not in the list\n", pCmd));
+ vmmdevHGCMCmdListUnlock (pVMMDevState);
+ return VINF_SUCCESS;
+ }
+
if (pCmd->pNext)
{
pCmd->pNext->pPrev = pCmd->pPrev;
@@ -191,6 +206,10 @@ static int vmmdevHGCMRemoveCommand (VMMDevState *pVMMDevState, PVBOXHGCMCMD pCmd
pVMMDevState->pHGCMCmdList = pCmd->pNext;
}
+ pCmd->pNext = NULL;
+ pCmd->pPrev = NULL;
+ pCmd->fInList = false;
+
vmmdevHGCMCmdListUnlock (pVMMDevState);
}
@@ -1773,9 +1792,9 @@ DECLCALLBACK(void) hgcmCompletedWorker (PPDMIHGCMPORT pInterface, int32_t result
VBOXDD_HGCMCALL_COMPLETED_EMT(pCmd, result);
vmmdevHGCMRemoveCommand (pVMMDevState, pCmd);
- if (pCmd->fCancelled)
+ if (pCmd->fCancelled || pCmd->fSaved)
{
- LogFlowFunc(("A cancelled command %p\n", pCmd));
+ LogFlowFunc(("A cancelled command %p: %d %d\n", pCmd, pCmd->fCancelled, pCmd->fSaved));
}
else
{
@@ -2307,6 +2326,10 @@ int vmmdevHGCMSaveState(VMMDevState *pVMMDevState, PSSMHANDLE pSSM)
rc = SSMR3PutU32(pSSM, 0);
AssertRCReturn(rc, rc);
+ /* Mark the command as saved to make sure that it will not be
+ * completed later by a still running host service.
+ */
+ pIter->fSaved = true;
vmmdevHGCMRemoveCommand (pVMMDevState, pIter);
pIter = pNext;
diff --git a/src/VBox/Frontends/VBoxBFE/MachineDebuggerImpl.cpp b/src/VBox/Frontends/VBoxBFE/MachineDebuggerImpl.cpp
index 5f0c6ff04..dc8309727 100644
--- a/src/VBox/Frontends/VBoxBFE/MachineDebuggerImpl.cpp
+++ b/src/VBox/Frontends/VBoxBFE/MachineDebuggerImpl.cpp
@@ -129,7 +129,7 @@ STDMETHODIMP MachineDebugger::COMSETTER(RecompileUser)(BOOL enable)
if (!gpVM)
return E_FAIL;
- int rcVBox = EMR3SetExecutionPolicy(gpVM, EMEXECPOLICY_RECOMPILE_RING3, enable);
+ int rcVBox = EMR3SetExecutionPolicy(gpVM, EMEXECPOLICY_RECOMPILE_RING3, !!enable);
AssertRCReturn(rcVBox, E_FAIL);
return S_OK;
}
@@ -174,7 +174,7 @@ STDMETHODIMP MachineDebugger::COMSETTER(RecompileSupervisor)(BOOL enable)
if (!gpVM)
return E_FAIL;
- int rcVBox = EMR3SetExecutionPolicy(gpVM, EMEXECPOLICY_RECOMPILE_RING0, enable);
+ int rcVBox = EMR3SetExecutionPolicy(gpVM, EMEXECPOLICY_RECOMPILE_RING0, !!enable);
AssertRCReturn(rcVBox, E_FAIL);
return S_OK;
}
diff --git a/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp b/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp
index f496295c3..4e41285b9 100644
--- a/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp
+++ b/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp
@@ -188,13 +188,15 @@ int handleControlVM(HandlerArg *a)
/* check if we are already paused */
MachineState_T machineState;
CHECK_ERROR_BREAK(console, COMGETTER(State)(&machineState));
+ /* the error code was lost by the previous instruction */
+ rc = VBOX_E_INVALID_VM_STATE;
if (machineState != MachineState_Paused)
{
RTMsgError("Machine in invalid state %d -- %s\n",
machineState, machineStateToName(machineState, false));
- break;
}
}
+ break;
}
ComPtr<IProgress> progress;
diff --git a/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp b/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp
index cd043169e..c95bb709f 100644
--- a/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp
+++ b/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2006-2011 Oracle Corporation
+ * Copyright (C) 2006-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -658,6 +658,7 @@ int handleCloneHardDisk(HandlerArg *a)
rc = createHardDisk(a, Utf8Str(format).c_str(), pszDst, dstDisk);
if (FAILED(rc))
break;
+ fDstUnknown = true;
}
ComPtr<IProgress> progress;
diff --git a/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp b/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp
index e45f2ae1c..f442a545c 100644
--- a/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp
+++ b/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp
@@ -400,21 +400,32 @@ static int ctrlPrintError(IUnknown *pObj, const GUID &aIID)
return ctrlPrintError(ErrInfo);
}
-static int ctrlPrintProgressError(ComPtr<IProgress> progress)
+static int ctrlPrintProgressError(ComPtr<IProgress> pProgress)
{
- int rc;
- BOOL fCanceled;
- if ( SUCCEEDED(progress->COMGETTER(Canceled(&fCanceled)))
- && fCanceled)
- {
- rc = VERR_CANCELLED;
- }
- else
+ int vrc = VINF_SUCCESS;
+ HRESULT rc;
+
+ do
{
- com::ProgressErrorInfo ErrInfo(progress);
- rc = ctrlPrintError(ErrInfo);
- }
- return rc;
+ BOOL fCanceled;
+ CHECK_ERROR_BREAK(pProgress, COMGETTER(Canceled)(&fCanceled));
+ if (!fCanceled)
+ {
+ LONG rcProc;
+ CHECK_ERROR_BREAK(pProgress, COMGETTER(ResultCode)(&rcProc));
+ if (FAILED(rcProc))
+ {
+ com::ProgressErrorInfo ErrInfo(pProgress);
+ vrc = ctrlPrintError(ErrInfo);
+ }
+ }
+
+ } while(0);
+
+ if (FAILED(rc))
+ AssertMsgStmt(NULL, ("Could not lookup progress information\n"), vrc = VERR_COM_UNEXPECTED);
+
+ return vrc;
}
/**
@@ -1106,8 +1117,8 @@ static int ctrlCopyDirCreate(PCOPYCONTEXT pContext, const char *pszDir)
AssertPtrReturn(pszDir, VERR_INVALID_POINTER);
bool fDirExists;
- int rc = ctrlCopyDirExists(pContext, pContext->fHostToGuest, pszDir, &fDirExists);
- if ( RT_SUCCESS(rc)
+ int vrc = ctrlCopyDirExists(pContext, pContext->fHostToGuest, pszDir, &fDirExists);
+ if ( RT_SUCCESS(vrc)
&& fDirExists)
{
if (pContext->fVerbose)
@@ -1115,6 +1126,11 @@ static int ctrlCopyDirCreate(PCOPYCONTEXT pContext, const char *pszDir)
return VINF_SUCCESS;
}
+ /* If querying for a directory existence fails there's no point of even trying
+ * to create such a directory. */
+ if (RT_FAILURE(vrc))
+ return vrc;
+
if (pContext->fVerbose)
RTPrintf("Creating directory \"%s\" ...\n", pszDir);
@@ -1123,19 +1139,19 @@ static int ctrlCopyDirCreate(PCOPYCONTEXT pContext, const char *pszDir)
if (pContext->fHostToGuest) /* We want to create directories on the guest. */
{
- HRESULT hrc = pContext->pGuest->DirectoryCreate(Bstr(pszDir).raw(),
- Bstr(pContext->pszUsername).raw(), Bstr(pContext->pszPassword).raw(),
- 0700, DirectoryCreateFlag_Parents);
- if (FAILED(hrc))
- rc = ctrlPrintError(pContext->pGuest, COM_IIDOF(IGuest));
+ HRESULT rc = pContext->pGuest->DirectoryCreate(Bstr(pszDir).raw(),
+ Bstr(pContext->pszUsername).raw(), Bstr(pContext->pszPassword).raw(),
+ 0700, DirectoryCreateFlag_Parents);
+ if (FAILED(rc))
+ vrc = ctrlPrintError(pContext->pGuest, COM_IIDOF(IGuest));
}
else /* ... or on the host. */
{
- rc = RTDirCreateFullPath(pszDir, 0700);
- if (rc == VERR_ALREADY_EXISTS)
- rc = VINF_SUCCESS;
+ vrc = RTDirCreateFullPath(pszDir, 0700);
+ if (vrc == VERR_ALREADY_EXISTS)
+ vrc = VINF_SUCCESS;
}
- return rc;
+ return vrc;
}
/**
@@ -2261,8 +2277,9 @@ static int handleCtrlStat(ComPtr<IGuest> guest, HandlerArg *pArg)
* drop out with exitcode 1. */
if (!fExists)
{
- RTPrintf("Cannot stat for element \"%s\": No such file or directory\n",
- it->first.c_str());
+ if (fVerbose)
+ RTPrintf("Cannot stat for element \"%s\": No such file or directory\n",
+ it->first.c_str());
rcExit = RTEXITCODE_FAILURE;
}
}
@@ -2361,20 +2378,20 @@ static int handleCtrlUpdateAdditions(ComPtr<IGuest> guest, HandlerArg *pArg)
RTPrintf("Using source: %s\n", Utf8Source.c_str());
HRESULT rc = S_OK;
- ComPtr<IProgress> progress;
+ ComPtr<IProgress> pProgress;
CHECK_ERROR(guest, UpdateGuestAdditions(Bstr(Utf8Source).raw(),
/* Wait for whole update process to complete. */
AdditionsUpdateFlag_None,
- progress.asOutParam()));
+ pProgress.asOutParam()));
if (FAILED(rc))
vrc = ctrlPrintError(guest, COM_IIDOF(IGuest));
else
{
rc = fVerbose
- ? showProgress(progress)
- : progress->WaitForCompletion(-1 /* No timeout */);
+ ? showProgress(pProgress)
+ : pProgress->WaitForCompletion(-1 /* No timeout */);
if (FAILED(rc))
- vrc = ctrlPrintProgressError(progress);
+ vrc = ctrlPrintProgressError(pProgress);
else if ( SUCCEEDED(rc)
&& fVerbose)
{
diff --git a/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp b/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
index 78817a611..abfde450d 100644
--- a/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
+++ b/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
@@ -316,6 +316,7 @@ void printUsage(USAGECATEGORY u64Cmd, PRTSTREAM pStrm)
" [--teleporterport <port>]\n"
" [--teleporteraddress <address|empty>\n"
" [--teleporterpassword <password>]\n"
+ " [--teleporterpasswordfile <file>|stdin]\n"
#if 0
" [--iocache on|off]\n"
" [--iocachesize <I/O cache size in MB>]\n"
diff --git a/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp b/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp
index ac9e0896f..d8165dde9 100644
--- a/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp
+++ b/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp
@@ -29,6 +29,8 @@
#endif /* !VBOX_ONLY_DOCS */
#include <iprt/cidr.h>
+#include <iprt/ctype.h>
+#include <iprt/file.h>
#include <iprt/param.h>
#include <iprt/path.h>
#include <iprt/stream.h>
@@ -159,6 +161,7 @@ enum
MODIFYVM_TELEPORTER_PORT,
MODIFYVM_TELEPORTER_ADDRESS,
MODIFYVM_TELEPORTER_PASSWORD,
+ MODIFYVM_TELEPORTER_PASSWORD_FILE,
MODIFYVM_HARDWARE_UUID,
MODIFYVM_HPET,
MODIFYVM_IOCACHE,
@@ -290,6 +293,7 @@ static const RTGETOPTDEF g_aModifyVMOptions[] =
{ "--teleporterport", MODIFYVM_TELEPORTER_PORT, RTGETOPT_REQ_UINT32 },
{ "--teleporteraddress", MODIFYVM_TELEPORTER_ADDRESS, RTGETOPT_REQ_STRING },
{ "--teleporterpassword", MODIFYVM_TELEPORTER_PASSWORD, RTGETOPT_REQ_STRING },
+ { "--teleporterpasswordfile", MODIFYVM_TELEPORTER_PASSWORD_FILE, RTGETOPT_REQ_STRING },
{ "--hardwareuuid", MODIFYVM_HARDWARE_UUID, RTGETOPT_REQ_STRING },
{ "--hpet", MODIFYVM_HPET, RTGETOPT_REQ_BOOL_ONOFF },
{ "--iocache", MODIFYVM_IOCACHE, RTGETOPT_REQ_BOOL_ONOFF },
@@ -2156,6 +2160,41 @@ int handleModifyVM(HandlerArg *a)
break;
}
+ case MODIFYVM_TELEPORTER_PASSWORD_FILE:
+ {
+ size_t cbFile;
+ char szPasswd[512];
+ int vrc = VINF_SUCCESS;
+ bool fStdIn = !strcmp(ValueUnion.psz, "stdin");
+ PRTSTREAM pStrm;
+ if (!fStdIn)
+ vrc = RTStrmOpen(ValueUnion.psz, "r", &pStrm);
+ else
+ pStrm = g_pStdIn;
+ if (RT_SUCCESS(vrc))
+ {
+ vrc = RTStrmReadEx(pStrm, szPasswd, sizeof(szPasswd)-1, &cbFile);
+ if (RT_SUCCESS(vrc))
+ {
+ if (cbFile >= sizeof(szPasswd)-1)
+ errorArgument("Provided password too long");
+ else
+ {
+ unsigned i;
+ for (i = 0; i < cbFile && !RT_C_IS_CNTRL(szPasswd[i]); i++)
+ ;
+ szPasswd[i] = '\0';
+ CHECK_ERROR(machine, COMSETTER(TeleporterPassword)(Bstr(szPasswd).raw()));
+ }
+ }
+ if (!fStdIn)
+ RTStrmClose(pStrm);
+ }
+ else
+ errorArgument("Cannot open password file '%s' (%Rrc)", ValueUnion.psz, vrc);
+ break;
+ }
+
case MODIFYVM_FAULT_TOLERANCE:
{
if (!strcmp(ValueUnion.psz, "master"))
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ar.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ar.ts
index 69457fa8d..e18bd8f1e 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ar.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ar.ts
@@ -2300,6 +2300,10 @@
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts
index 4f0bf2c3f..43a942246 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts
@@ -2894,6 +2894,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>Имате позволено 2D видео уÑкорение. Тъй като 2D видео уÑкорението Ñе поддържа Ñамо за виртуални машини Ñ Windows, тази Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ‰Ðµ бъде забранена.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts
index c890c1f42..b0d9a131f 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts
@@ -2966,6 +2966,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>l&apos;acceleració 2D està activada. Atès que l&apos;acceleració de vídeo 2D només és compatible amb clients Windows, es desactivarà aquesta característica.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts
index 7d4e5e1dc..6afcff776 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts
@@ -2966,6 +2966,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>l&apos;acceleració 2D està activada. Atès que l&apos;acceleració de vídeo 2D només és compatible amb clients Windows, es desactivarà esta característica.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts
index eb9ee9439..1027e0220 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts
@@ -2807,6 +2807,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>máte povolenu 2D akceleraci videa. Protože tato akcelerace je podporována pouze na virtuálních poÄítaÄích s Windows, bude tato vlastnost zákázána.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts
index 89ffef3c7..9cc5e401c 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts
@@ -2889,6 +2889,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>du har 2D-videoacceleration aktiveret. 2D-videoacceleration understøttes kun, når gæsteoperativsystemet er Windows og deaktiveres derfor.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts
index 026c29b05..5c05101d2 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts
@@ -2122,6 +2122,10 @@
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_en.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_en.ts
index 659495d16..9d45cdd0a 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_en.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_en.ts
@@ -15,7 +15,7 @@
<context>
<name>VBoxGlobal</name>
<message numerus="yes">
- <location filename="../src/globals/VBoxGlobal.h" line="222"/>
+ <location filename="../src/globals/VBoxGlobal.h" line="225"/>
<source>%n year(s)</source>
<translation>
<numerusform>%n year</numerusform>
@@ -23,7 +23,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../src/globals/VBoxGlobal.h" line="227"/>
+ <location filename="../src/globals/VBoxGlobal.h" line="230"/>
<source>%n month(s)</source>
<translation>
<numerusform>%n month</numerusform>
@@ -31,7 +31,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../src/globals/VBoxGlobal.h" line="232"/>
+ <location filename="../src/globals/VBoxGlobal.h" line="235"/>
<source>%n day(s)</source>
<translation>
<numerusform>%n day</numerusform>
@@ -39,7 +39,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../src/globals/VBoxGlobal.h" line="237"/>
+ <location filename="../src/globals/VBoxGlobal.h" line="240"/>
<source>%n hour(s)</source>
<translation>
<numerusform>%n hour</numerusform>
@@ -47,7 +47,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../src/globals/VBoxGlobal.h" line="247"/>
+ <location filename="../src/globals/VBoxGlobal.h" line="250"/>
<source>%n second(s)</source>
<translation>
<numerusform>%n second</numerusform>
@@ -55,7 +55,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../src/globals/VBoxGlobal.h" line="242"/>
+ <location filename="../src/globals/VBoxGlobal.h" line="245"/>
<source>%n minute(s)</source>
<translation>
<numerusform>%n minute</numerusform>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts
index fe5a1aa5f..b537c00b1 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts
@@ -3025,6 +3025,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>tiene la acelaración de vídeo 2D habilitada. Como la aceleración de vídeo solo está soportada para invitados Windows, esta característica será deshabilitada.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts
index 6aff0bc87..8b13960fd 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts
@@ -2525,6 +2525,10 @@
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts
index 53f4b0c50..ed71a2638 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts
@@ -2701,6 +2701,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts
index ba0ee653e..c4d05c396 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts
@@ -500,170 +500,170 @@
<message>
<source>&amp;File</source>
<comment>Mac OS X version</comment>
- <translation>&amp;Fichier</translation>
+ <translation type="obsolete">&amp;Fichier</translation>
</message>
<message>
<source>&amp;File</source>
<comment>Non Mac OS X version</comment>
- <translation>&amp;Fichier</translation>
+ <translation type="obsolete">&amp;Fichier</translation>
</message>
<message>
<source>&amp;Virtual Media Manager...</source>
- <translation>&amp;Gestionnaire de médias...</translation>
+ <translation type="obsolete">&amp;Gestionnaire de médias...</translation>
</message>
<message>
<source>Display the Virtual Media Manager dialog</source>
- <translation>Afficher la fenêtre du Gestionnaire de médias virtuels</translation>
+ <translation type="obsolete">Afficher la fenêtre du Gestionnaire de médias virtuels</translation>
</message>
<message>
<source>&amp;Import Appliance...</source>
- <translation>&amp;Importer application virtuelle...</translation>
+ <translation type="obsolete">&amp;Importer application virtuelle...</translation>
</message>
<message>
<source>Import an appliance into VirtualBox</source>
- <translation>Importer une application virtuelle (ensemble de machines pré-configurées) dans VirtualBox</translation>
+ <translation type="obsolete">Importer une application virtuelle (ensemble de machines pré-configurées) dans VirtualBox</translation>
</message>
<message>
<source>&amp;Export Appliance...</source>
- <translation>&amp;Exporter application virtuelle...</translation>
+ <translation type="obsolete">&amp;Exporter application virtuelle...</translation>
</message>
<message>
<source>Export one or more VirtualBox virtual machines as an appliance</source>
- <translation>Exporter une ou plusieurs machines de VirtualBox en tant qu&apos;application virtuelle</translation>
+ <translation type="obsolete">Exporter une ou plusieurs machines de VirtualBox en tant qu&apos;application virtuelle</translation>
</message>
<message>
<source>&amp;Preferences...</source>
<comment>global settings</comment>
<translatorcomment>In French &quot;(Global) Settings&quot; is &quot;Préférences&quot;, &quot;(Machine) Settings&quot; is &quot;Configuration&quot;</translatorcomment>
- <translation>&amp;Paramètres...</translation>
+ <translation type="obsolete">&amp;Paramètres...</translation>
</message>
<message>
<source>Display the global settings dialog</source>
- <translation>Afficher la fenêtre Préférences de VirtualBox</translation>
+ <translation type="obsolete">Afficher la fenêtre Préférences de VirtualBox</translation>
</message>
<message>
<source>E&amp;xit</source>
- <translation>&amp;Quitter</translation>
+ <translation type="obsolete">&amp;Quitter</translation>
</message>
<message>
<source>Close application</source>
- <translation>Fermer VirtualBox</translation>
+ <translation type="obsolete">Fermer VirtualBox</translation>
</message>
<message>
<source>&amp;New...</source>
- <translation>&amp;Créer...</translation>
+ <translation type="obsolete">&amp;Créer...</translation>
</message>
<message>
<source>Create a new virtual machine</source>
- <translation>Créer une nouvelle machine virtuelle</translation>
+ <translation type="obsolete">Créer une nouvelle machine virtuelle</translation>
</message>
<message>
<source>&amp;Add...</source>
- <translation>&amp;Ajouter...</translation>
+ <translation type="obsolete">&amp;Ajouter...</translation>
</message>
<message>
<source>Add an existing virtual machine</source>
- <translation>Ajouter une machine virtuelle existante</translation>
+ <translation type="obsolete">Ajouter une machine virtuelle existante</translation>
</message>
<message>
<source>Cl&amp;one...</source>
- <translation>Cl&amp;oner...</translation>
+ <translation type="obsolete">Cl&amp;oner...</translation>
</message>
<message>
<source>Clone the selected virtual machine</source>
- <translation>Cloner la machine virtuelle sélectionnée</translation>
+ <translation type="obsolete">Cloner la machine virtuelle sélectionnée</translation>
</message>
<message>
<source>&amp;Remove</source>
- <translation>&amp;Supprimer</translation>
+ <translation type="obsolete">&amp;Supprimer</translation>
</message>
<message>
<source>Remove the selected virtual machine</source>
- <translation>Supprimer la machine virtuelle sélectionnée</translation>
+ <translation type="obsolete">Supprimer la machine virtuelle sélectionnée</translation>
</message>
<message>
<source>S&amp;tart</source>
- <translation>&amp;Démarrer</translation>
+ <translation type="obsolete">&amp;Démarrer</translation>
</message>
<message>
<source>Start the selected virtual machine</source>
- <translation>Démarrer la machine virtuelle sélectionnée</translation>
+ <translation type="obsolete">Démarrer la machine virtuelle sélectionnée</translation>
</message>
<message>
<source>S&amp;how</source>
- <translation>A&amp;fficher</translation>
+ <translation type="obsolete">A&amp;fficher</translation>
</message>
<message>
<source>Switch to the window of the selected virtual machine</source>
- <translation>Montrer la fenêtre de la machine virtuelle sélectionnée</translation>
+ <translation type="obsolete">Montrer la fenêtre de la machine virtuelle sélectionnée</translation>
</message>
<message>
<source>Discard</source>
- <translation>Oublier</translation>
+ <translation type="obsolete">Oublier</translation>
</message>
<message>
<source>D&amp;iscard Saved State</source>
- <translation>Oub&amp;lier l&apos;état sauvegardé</translation>
+ <translation type="obsolete">Oub&amp;lier l&apos;état sauvegardé</translation>
</message>
<message>
<source>Discard the saved state of the selected virtual machine</source>
- <translation>Oublier l&apos;état sauvegardé de la machine virtuelle sélectionnée</translation>
+ <translation type="obsolete">Oublier l&apos;état sauvegardé de la machine virtuelle sélectionnée</translation>
</message>
<message>
<source>Re&amp;fresh</source>
- <translation>&amp;Actualiser</translation>
+ <translation type="obsolete">&amp;Actualiser</translation>
</message>
<message>
<source>Refresh the accessibility state of the selected virtual machine</source>
- <translation>Actualiser l&apos;état de la machine virtuelle sélectionnée</translation>
+ <translation type="obsolete">Actualiser l&apos;état de la machine virtuelle sélectionnée</translation>
</message>
<message>
<source>Show &amp;Log...</source>
- <translation>Afficher le &amp;journal...</translation>
+ <translation type="obsolete">Afficher le &amp;journal...</translation>
</message>
<message>
<source>Show the log files of the selected virtual machine</source>
- <translation>Afficher le journal de la machine virtuelle sélectionnée</translation>
+ <translation type="obsolete">Afficher le journal de la machine virtuelle sélectionnée</translation>
</message>
<message>
<source>Show in Finder</source>
- <translation>Afficher dans le Finder</translation>
+ <translation type="obsolete">Afficher dans le Finder</translation>
</message>
<message>
<source>Show the VirtualBox Machine Definition file in Finder.</source>
- <translation>Afficher le fichier de définition de la machine VirtualBox dans le Finder.</translation>
+ <translation type="obsolete">Afficher le fichier de définition de la machine VirtualBox dans le Finder.</translation>
</message>
<message>
<source>Show in Explorer</source>
- <translation>Afficher dans l&apos;explorateur</translation>
+ <translation type="obsolete">Afficher dans l&apos;explorateur</translation>
</message>
<message>
<source>Show the VirtualBox Machine Definition file in Explorer.</source>
- <translation>Afficher le fichier de définition de la machine virtuelle dans l&apos;explorateur.</translation>
+ <translation type="obsolete">Afficher le fichier de définition de la machine virtuelle dans l&apos;explorateur.</translation>
</message>
<message>
<source>Show in File Manager</source>
- <translation>Afficher dans le gestionnaire de fichier</translation>
+ <translation type="obsolete">Afficher dans le gestionnaire de fichier</translation>
</message>
<message>
<source>Show the VirtualBox Machine Definition file in the File Manager</source>
- <translation>Afficher le fichier de définition de la machine virtuelle dans le gestionnaire de fichier</translation>
+ <translation type="obsolete">Afficher le fichier de définition de la machine virtuelle dans le gestionnaire de fichier</translation>
</message>
<message>
<source>Create Alias on Desktop</source>
- <translation>Créer un alias sur le bureau</translation>
+ <translation type="obsolete">Créer un alias sur le bureau</translation>
</message>
<message>
<source>Creates an Alias file to the VirtualBox Machine Definition file on your Desktop.</source>
- <translation>Créé un alias du fichier de définition de la machine VirtualBox sur votre bureau.</translation>
+ <translation type="obsolete">Créé un alias du fichier de définition de la machine VirtualBox sur votre bureau.</translation>
</message>
<message>
<source>Create Shortcut on Desktop</source>
- <translation>Créer un raccourci sur le bureau</translation>
+ <translation type="obsolete">Créer un raccourci sur le bureau</translation>
</message>
<message>
<source>Creates an Shortcut file to the VirtualBox Machine Definition file on your Desktop.</source>
- <translation>Créé un raccourci vers le fichier de définition de la machine virtuelle sur votre bureau.</translation>
+ <translation type="obsolete">Créé un raccourci vers le fichier de définition de la machine virtuelle sur votre bureau.</translation>
</message>
</context>
<context>
@@ -2693,6 +2693,10 @@
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>Vous avez activé l&apos;accélération vidéo 2D. Comme l&apos;accélération 2D est supportée que pour des invités Windows, elle sera désactivée.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
@@ -6141,6 +6145,77 @@ And the size is not necessarily &quot;in megabytes&quot;, the slider chooses the
</message>
</context>
<context>
+ <name>UIVMLogViewer</name>
+ <message>
+ <source>Log Viewer</source>
+ <translation type="obsolete">Affichage des journaux</translation>
+ </message>
+ <message>
+ <source>&amp;Save</source>
+ <translation type="obsolete">&amp;Enregistrer</translation>
+ </message>
+ <message>
+ <source>&amp;Refresh</source>
+ <translation type="obsolete">Ac&amp;tualiser</translation>
+ </message>
+ <message>
+ <source>%1 - VirtualBox Log Viewer</source>
+ <translation type="obsolete">%1 - Journaux de VirtualBox</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;No log files found. Press the &lt;b&gt;Refresh&lt;/b&gt; button to rescan the log folder &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</source>
+ <translation type="obsolete">&lt;p&gt;Aucun journal trouvé. Cliquez sur &lt;b&gt;Actualiser&lt;/b&gt; pour recharger le dossier des journaux &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Save VirtualBox Log As</source>
+ <translation type="obsolete">Enregistrer le journal VirtualBox sous</translation>
+ </message>
+ <message>
+ <source>&amp;Find</source>
+ <translation type="obsolete">&amp;Rechercher</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation type="obsolete">Fermer</translation>
+ </message>
+ <message>
+ <source>Close the search panel</source>
+ <translation type="obsolete">Fermer le panneau de recherche</translation>
+ </message>
+ <message>
+ <source>Enter a search string here</source>
+ <translation type="obsolete">Entrez ici la chaîne de caractères à rechercher</translation>
+ </message>
+ <message>
+ <source>&amp;Previous</source>
+ <translation type="obsolete">&amp;Précédent</translation>
+ </message>
+ <message>
+ <source>Search for the previous occurrence of the string</source>
+ <translation type="obsolete">Rechercher l&apos;occurrence précédente de la chaîne de caractères</translation>
+ </message>
+ <message>
+ <source>&amp;Next</source>
+ <translation type="obsolete">&amp;Suivant</translation>
+ </message>
+ <message>
+ <source>Search for the next occurrence of the string</source>
+ <translation type="obsolete">Rechercher l&apos;occurrence suivante de la chaîne de caractères</translation>
+ </message>
+ <message>
+ <source>C&amp;ase Sensitive</source>
+ <translation type="obsolete">&amp;Respecter la casse</translation>
+ </message>
+ <message>
+ <source>Perform case sensitive search (when checked)</source>
+ <translation type="obsolete">Si cette case est cochée, la recherche tient compte des majuscules et des minuscules</translation>
+ </message>
+ <message>
+ <source>String not found</source>
+ <translation type="obsolete">Chaîne de caractères non trouvée</translation>
+ </message>
+</context>
+<context>
<name>UIVMPreviewWindow</name>
<message>
<source>Update Disabled</source>
@@ -7652,6 +7727,49 @@ And the size is not necessarily &quot;in megabytes&quot;, the slider chooses the
</message>
</context>
<context>
+ <name>VBoxLogSearchPanel</name>
+ <message>
+ <source>Close the search panel</source>
+ <translation type="unfinished">Fermer le panneau de recherche</translation>
+ </message>
+ <message>
+ <source>Find </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enter a search string here</source>
+ <translation type="unfinished">Entrez ici la chaîne de caractères à rechercher</translation>
+ </message>
+ <message>
+ <source>&amp;Previous</source>
+ <translation type="unfinished">&amp;Précédent</translation>
+ </message>
+ <message>
+ <source>Search for the previous occurrence of the string</source>
+ <translation type="unfinished">Rechercher l&apos;occurrence précédente de la chaîne de caractères</translation>
+ </message>
+ <message>
+ <source>&amp;Next</source>
+ <translation type="unfinished">&amp;Suivant</translation>
+ </message>
+ <message>
+ <source>Search for the next occurrence of the string</source>
+ <translation type="unfinished">Rechercher l&apos;occurrence suivante de la chaîne de caractères</translation>
+ </message>
+ <message>
+ <source>C&amp;ase Sensitive</source>
+ <translation type="unfinished">&amp;Respecter la casse</translation>
+ </message>
+ <message>
+ <source>Perform case sensitive search (when checked)</source>
+ <translation type="unfinished">Si cette case est cochée, la recherche tient compte des majuscules et des minuscules</translation>
+ </message>
+ <message>
+ <source>String not found</source>
+ <translation type="unfinished">Chaîne de caractères non trouvée</translation>
+ </message>
+</context>
+<context>
<name>VBoxMediaManagerDlg</name>
<message>
<source>&amp;Actions</source>
@@ -8025,6 +8143,173 @@ And the size is not necessarily &quot;in megabytes&quot;, the slider chooses the
<source>Show Statusbar</source>
<translation>Afficher la barre d&apos;état</translation>
</message>
+ <message>
+ <source>&amp;Virtual Media Manager...</source>
+ <translation type="unfinished">&amp;Gestionnaire de médias...</translation>
+ </message>
+ <message>
+ <source>Display the Virtual Media Manager dialog</source>
+ <translation type="unfinished">Afficher la fenêtre du Gestionnaire de médias virtuels</translation>
+ </message>
+ <message>
+ <source>&amp;Import Appliance...</source>
+ <translation type="unfinished">&amp;Importer application virtuelle...</translation>
+ </message>
+ <message>
+ <source>Import an appliance into VirtualBox</source>
+ <translation type="unfinished">Importer une application virtuelle (ensemble de machines pré-configurées) dans VirtualBox</translation>
+ </message>
+ <message>
+ <source>&amp;Export Appliance...</source>
+ <translation type="unfinished">&amp;Exporter application virtuelle...</translation>
+ </message>
+ <message>
+ <source>Export one or more VirtualBox virtual machines as an appliance</source>
+ <translation type="unfinished">Exporter une ou plusieurs machines de VirtualBox en tant qu&apos;application virtuelle</translation>
+ </message>
+ <message>
+ <source>&amp;Preferences...</source>
+ <comment>global settings</comment>
+ <translation type="unfinished">&amp;Paramètres...</translation>
+ </message>
+ <message>
+ <source>Display the global settings dialog</source>
+ <translation type="unfinished">Afficher la fenêtre Préférences de VirtualBox</translation>
+ </message>
+ <message>
+ <source>E&amp;xit</source>
+ <translation type="unfinished">&amp;Quitter</translation>
+ </message>
+ <message>
+ <source>Close application</source>
+ <translation type="unfinished">Fermer VirtualBox</translation>
+ </message>
+ <message>
+ <source>&amp;New...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Create a new virtual machine</source>
+ <translation type="unfinished">Créer une nouvelle machine virtuelle</translation>
+ </message>
+ <message>
+ <source>&amp;Add...</source>
+ <translation type="unfinished">&amp;Ajouter...</translation>
+ </message>
+ <message>
+ <source>Add an existing virtual machine</source>
+ <translation type="unfinished">Ajouter une machine virtuelle existante</translation>
+ </message>
+ <message>
+ <source>Cl&amp;one...</source>
+ <translation type="unfinished">Cl&amp;oner...</translation>
+ </message>
+ <message>
+ <source>Clone the selected virtual machine</source>
+ <translation type="unfinished">Cloner la machine virtuelle sélectionnée</translation>
+ </message>
+ <message>
+ <source>&amp;Remove</source>
+ <translation type="unfinished">&amp;Supprimer</translation>
+ </message>
+ <message>
+ <source>Remove the selected virtual machine</source>
+ <translation type="unfinished">Supprimer la machine virtuelle sélectionnée</translation>
+ </message>
+ <message>
+ <source>Discard</source>
+ <translation type="unfinished">Oublier</translation>
+ </message>
+ <message>
+ <source>D&amp;iscard Saved State</source>
+ <translation type="unfinished">Oub&amp;lier l&apos;état sauvegardé</translation>
+ </message>
+ <message>
+ <source>Discard the saved state of the selected virtual machine</source>
+ <translation type="unfinished">Oublier l&apos;état sauvegardé de la machine virtuelle sélectionnée</translation>
+ </message>
+ <message>
+ <source>Re&amp;fresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Refresh the accessibility state of the selected virtual machine</source>
+ <translation type="unfinished">Actualiser l&apos;état de la machine virtuelle sélectionnée</translation>
+ </message>
+ <message>
+ <source>Show &amp;Log...</source>
+ <translation type="unfinished">Afficher le &amp;journal...</translation>
+ </message>
+ <message>
+ <source>Show the log files of the selected virtual machine</source>
+ <translation type="unfinished">Afficher le journal de la machine virtuelle sélectionnée</translation>
+ </message>
+ <message>
+ <source>Show in Finder</source>
+ <translation type="unfinished">Afficher dans le Finder</translation>
+ </message>
+ <message>
+ <source>Show the VirtualBox Machine Definition file in Finder.</source>
+ <translation type="unfinished">Afficher le fichier de définition de la machine VirtualBox dans le Finder.</translation>
+ </message>
+ <message>
+ <source>Create Alias on Desktop</source>
+ <translation type="unfinished">Créer un alias sur le bureau</translation>
+ </message>
+ <message>
+ <source>Creates an Alias file to the VirtualBox Machine Definition file on your Desktop.</source>
+ <translation type="unfinished">Créé un alias du fichier de définition de la machine VirtualBox sur votre bureau.</translation>
+ </message>
+ <message>
+ <source>Show in Explorer</source>
+ <translation type="unfinished">Afficher dans l&apos;explorateur</translation>
+ </message>
+ <message>
+ <source>Show the VirtualBox Machine Definition file in Explorer.</source>
+ <translation type="unfinished">Afficher le fichier de définition de la machine virtuelle dans l&apos;explorateur.</translation>
+ </message>
+ <message>
+ <source>Create Shortcut on Desktop</source>
+ <translation type="unfinished">Créer un raccourci sur le bureau</translation>
+ </message>
+ <message>
+ <source>Creates an Shortcut file to the VirtualBox Machine Definition file on your Desktop.</source>
+ <translation type="unfinished">Créé un raccourci vers le fichier de définition de la machine virtuelle sur votre bureau.</translation>
+ </message>
+ <message>
+ <source>Show in File Manager</source>
+ <translation type="unfinished">Afficher dans le gestionnaire de fichier</translation>
+ </message>
+ <message>
+ <source>Show the VirtualBox Machine Definition file in the File Manager</source>
+ <translation type="unfinished">Afficher le fichier de définition de la machine virtuelle dans le gestionnaire de fichier</translation>
+ </message>
+ <message>
+ <source>&amp;File</source>
+ <comment>Mac OS X version</comment>
+ <translation type="unfinished">&amp;Fichier</translation>
+ </message>
+ <message>
+ <source>&amp;File</source>
+ <comment>Non Mac OS X version</comment>
+ <translation type="unfinished">&amp;Fichier</translation>
+ </message>
+ <message>
+ <source>S&amp;tart</source>
+ <translation type="unfinished">&amp;Démarrer</translation>
+ </message>
+ <message>
+ <source>Start the selected virtual machine</source>
+ <translation type="unfinished">Démarrer la machine virtuelle sélectionnée</translation>
+ </message>
+ <message>
+ <source>S&amp;how</source>
+ <translation type="unfinished">A&amp;fficher</translation>
+ </message>
+ <message>
+ <source>Switch to the window of the selected virtual machine</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>VBoxSettingsDialog</name>
@@ -8375,74 +8660,38 @@ And the size is not necessarily &quot;in megabytes&quot;, the slider chooses the
</message>
</context>
<context>
- <name>UIVMLogViewer</name>
+ <name>VBoxVMLogViewer</name>
<message>
<source>Log Viewer</source>
- <translation>Affichage des journaux</translation>
- </message>
- <message>
- <source>&amp;Save</source>
- <translation>&amp;Enregistrer</translation>
- </message>
- <message>
- <source>&amp;Refresh</source>
- <translation>Ac&amp;tualiser</translation>
- </message>
- <message>
- <source>%1 - VirtualBox Log Viewer</source>
- <translation>%1 - Journaux de VirtualBox</translation>
+ <translation type="unfinished">Affichage des journaux</translation>
</message>
<message>
<source>&lt;p&gt;No log files found. Press the &lt;b&gt;Refresh&lt;/b&gt; button to rescan the log folder &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Aucun journal trouvé. Cliquez sur &lt;b&gt;Actualiser&lt;/b&gt; pour recharger le dossier des journaux &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</translation>
+ <translation type="unfinished">&lt;p&gt;Aucun journal trouvé. Cliquez sur &lt;b&gt;Actualiser&lt;/b&gt; pour recharger le dossier des journaux &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</translation>
</message>
<message>
<source>Save VirtualBox Log As</source>
- <translation>Enregistrer le journal VirtualBox sous</translation>
- </message>
- <message>
- <source>&amp;Find</source>
- <translation>&amp;Rechercher</translation>
- </message>
- <message>
- <source>Close</source>
- <translation>Fermer</translation>
+ <translation type="unfinished">Enregistrer le journal VirtualBox sous</translation>
</message>
<message>
- <source>Close the search panel</source>
- <translation>Fermer le panneau de recherche</translation>
- </message>
- <message>
- <source>Enter a search string here</source>
- <translation>Entrez ici la chaîne de caractères à rechercher</translation>
- </message>
- <message>
- <source>&amp;Previous</source>
- <translation>&amp;Précédent</translation>
- </message>
- <message>
- <source>Search for the previous occurrence of the string</source>
- <translation>Rechercher l&apos;occurrence précédente de la chaîne de caractères</translation>
- </message>
- <message>
- <source>&amp;Next</source>
- <translation>&amp;Suivant</translation>
+ <source>%1 - VirtualBox Log Viewer</source>
+ <translation type="unfinished">%1 - Journaux de VirtualBox</translation>
</message>
<message>
- <source>Search for the next occurrence of the string</source>
- <translation>Rechercher l&apos;occurrence suivante de la chaîne de caractères</translation>
+ <source>&amp;Find</source>
+ <translation type="unfinished">&amp;Rechercher</translation>
</message>
<message>
- <source>C&amp;ase Sensitive</source>
- <translation>&amp;Respecter la casse</translation>
+ <source>&amp;Refresh</source>
+ <translation type="unfinished">Ac&amp;tualiser</translation>
</message>
<message>
- <source>Perform case sensitive search (when checked)</source>
- <translation>Si cette case est cochée, la recherche tient compte des majuscules et des minuscules</translation>
+ <source>&amp;Save</source>
+ <translation type="unfinished">&amp;Enregistrer</translation>
</message>
<message>
- <source>String not found</source>
- <translation>Chaîne de caractères non trouvée</translation>
+ <source>Close</source>
+ <translation type="unfinished">Fermer</translation>
</message>
</context>
<context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts
index 663858c66..76411fd1f 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts
@@ -2784,6 +2784,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts
index 00bb2678f..940074402 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts
@@ -2999,6 +2999,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>engedélyezted a 2D gyorsítást. Mivel ez a lehetőség jelenleg csak Windows-os vendéggépeken érhető el, ezért most letiltásra kerül.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts
index 383be4207..6e9a4a7a3 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts
@@ -2542,6 +2542,10 @@
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts
index 6decf0277..8a71257a9 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts
@@ -149,7 +149,7 @@
</message>
<message>
<source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root. If it is available in your distribution, you should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.</source>
- <translation type="unfinished"></translation>
+ <translation>Il driver del kernel Linux di VirtualBox (vboxdrv) potrebbe non essere caricato o potrebbe esserci un problema di permessi con /dev/vboxdrv. Installa nuovamente il modulo del kernel eseguendo &lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;come root. Se è disponibile nella tua distribuzione dovresti installare prima il pacchetto DKMS. Questo pacchetto tiene traccia delle modifiche del kernel e ricompila il modulo vboxdrv se necessario.</translation>
</message>
</context>
<context>
@@ -185,11 +185,11 @@
<name>QIHttp</name>
<message>
<source>Connection timed out</source>
- <translation>Connessione scaduta</translation>
+ <translation type="obsolete">Connessione scaduta</translation>
</message>
<message>
<source>Could not locate the file on the server (response: %1)</source>
- <translation>Impossibile trovare il file sul server (risposta: %1)</translation>
+ <translation type="obsolete">Impossibile trovare il file sul server (risposta: %1)</translation>
</message>
</context>
<context>
@@ -344,7 +344,7 @@
</message>
<message>
<source>&amp;Insert Ctrl-Alt-Backspace</source>
- <translation>&amp;Invia Ctrl-Alt-Backspace</translation>
+ <translation type="obsolete">&amp;Invia Ctrl-Alt-Backspace</translation>
</message>
<message>
<source>Send the Ctrl-Alt-Backspace sequence to the virtual machine</source>
@@ -352,7 +352,7 @@
</message>
<message>
<source>Take &amp;Snapshot...</source>
- <translation>Cattura i&amp;stantanea...</translation>
+ <translation type="obsolete">Cattura i&amp;stantanea...</translation>
</message>
<message>
<source>Take a snapshot of the virtual machine</source>
@@ -599,6 +599,211 @@
<source>Session I&amp;nformation...</source>
<translation>I&amp;nformazioni di sessione...</translation>
</message>
+ <message>
+ <source>&amp;File</source>
+ <comment>Mac OS X version</comment>
+ <translatorcomment>&amp;File</translatorcomment>
+ <translation>&amp;File</translation>
+ </message>
+ <message>
+ <source>&amp;File</source>
+ <comment>Non Mac OS X version</comment>
+ <translatorcomment>&amp;File</translatorcomment>
+ <translation>&amp;File</translation>
+ </message>
+ <message>
+ <source>&amp;Virtual Media Manager...</source>
+ <translation>Gestore supporti &amp;virtuali...</translation>
+ </message>
+ <message>
+ <source>Display the Virtual Media Manager dialog</source>
+ <translation>Visualizza la finestra del gestore supporti virtuali</translation>
+ </message>
+ <message>
+ <source>&amp;Import Appliance...</source>
+ <translation>&amp;Importa applicazione virtuale...</translation>
+ </message>
+ <message>
+ <source>Import an appliance into VirtualBox</source>
+ <translation>Importa un&apos;applicazione virtuale in VirtualBox</translation>
+ </message>
+ <message>
+ <source>&amp;Export Appliance...</source>
+ <translation>&amp;Esporta applicazione virtuale...</translation>
+ </message>
+ <message>
+ <source>Export one or more VirtualBox virtual machines as an appliance</source>
+ <translation>Esporta un&apos;applicazione virtuale da VirtualBox</translation>
+ </message>
+ <message>
+ <source>&amp;Preferences...</source>
+ <comment>global settings</comment>
+ <translation>Im&amp;postazioni...</translation>
+ </message>
+ <message>
+ <source>Display the global settings dialog</source>
+ <translation>Mostra la finestra delle impostazioni</translation>
+ </message>
+ <message>
+ <source>E&amp;xit</source>
+ <translation>&amp;Esci</translation>
+ </message>
+ <message>
+ <source>Close application</source>
+ <translation>Chiudi l&apos;applicazione</translation>
+ </message>
+ <message>
+ <source>&amp;New...</source>
+ <translation>&amp;Nuova...</translation>
+ </message>
+ <message>
+ <source>Create a new virtual machine</source>
+ <translation>Crea una nuova macchina virtuale</translation>
+ </message>
+ <message>
+ <source>&amp;Add...</source>
+ <translation>&amp;Aggiungi...</translation>
+ </message>
+ <message>
+ <source>Add an existing virtual machine</source>
+ <translation>Aggiungi una macchina virtuale esistente</translation>
+ </message>
+ <message>
+ <source>Cl&amp;one...</source>
+ <translation>Cl&amp;ona...</translation>
+ </message>
+ <message>
+ <source>Clone the selected virtual machine</source>
+ <translation>Clona la macchina virtuale selezionata</translation>
+ </message>
+ <message>
+ <source>&amp;Remove</source>
+ <translation>&amp;Rimuovi</translation>
+ </message>
+ <message>
+ <source>Remove the selected virtual machine</source>
+ <translation>Rimuovi la macchina virtuale selezionata</translation>
+ </message>
+ <message>
+ <source>S&amp;tart</source>
+ <translation>A&amp;vvia</translation>
+ </message>
+ <message>
+ <source>Start the selected virtual machine</source>
+ <translation>Avvia la macchina virtuale selezionata</translation>
+ </message>
+ <message>
+ <source>S&amp;how</source>
+ <translation>&amp;Mostra</translation>
+ </message>
+ <message>
+ <source>Switch to the window of the selected virtual machine</source>
+ <translation>Passa alla finestra della macchina virtuale selezionata</translation>
+ </message>
+ <message>
+ <source>Discard</source>
+ <translation>Scarta</translation>
+ </message>
+ <message>
+ <source>D&amp;iscard Saved State</source>
+ <translation>Scarta l&amp;o stato salvato</translation>
+ </message>
+ <message>
+ <source>Discard the saved state of the selected virtual machine</source>
+ <translation>Scarta lo stato salvato della macchina virtuale</translation>
+ </message>
+ <message>
+ <source>Re&amp;fresh</source>
+ <translation>A&amp;ggiorna</translation>
+ </message>
+ <message>
+ <source>Refresh the accessibility state of the selected virtual machine</source>
+ <translation>Aggiorna lo stato di accessibilità della macchina virtuale selezionata</translation>
+ </message>
+ <message>
+ <source>Show &amp;Log...</source>
+ <translation>Visualizza &amp;log...</translation>
+ </message>
+ <message>
+ <source>Show the log files of the selected virtual machine</source>
+ <translation>Visualizza il file di log della macchina virtuale selezionata</translation>
+ </message>
+ <message>
+ <source>Show in Finder</source>
+ <translation>Mostra in Finder</translation>
+ </message>
+ <message>
+ <source>Show the VirtualBox Machine Definition file in Finder.</source>
+ <translation>Mostra il file di definizione della macchina di VirtualBox in Finder.</translation>
+ </message>
+ <message>
+ <source>Show in Explorer</source>
+ <translation>Mostra in Explorer</translation>
+ </message>
+ <message>
+ <source>Show the VirtualBox Machine Definition file in Explorer.</source>
+ <translation>Mostra il file di definizione della macchina di VirtualBox in Explorer.</translation>
+ </message>
+ <message>
+ <source>Show in File Manager</source>
+ <translation>Mostra nel gestore file</translation>
+ </message>
+ <message>
+ <source>Show the VirtualBox Machine Definition file in the File Manager</source>
+ <translation>Mostra il file di definizione della macchina di VirtualBox nel gestore file</translation>
+ </message>
+ <message>
+ <source>Create Alias on Desktop</source>
+ <translation>Crea un alias sul desktop</translation>
+ </message>
+ <message>
+ <source>Creates an Alias file to the VirtualBox Machine Definition file on your Desktop.</source>
+ <translation>Crea un alias per il file di definizione della macchina virtuale di VirtualBox sul desktop.</translation>
+ </message>
+ <message>
+ <source>Create Shortcut on Desktop</source>
+ <translation>Crea una scorciatoria sul desktop</translation>
+ </message>
+ <message>
+ <source>Creates an Shortcut file to the VirtualBox Machine Definition file on your Desktop.</source>
+ <translation>Crea una scorciatoia al file di definizione della macchina virtuale di VirtualBox sul desktop.</translation>
+ </message>
+ <message>
+ <source>Take Sn&amp;apshot...</source>
+ <translation>Crea ist&amp;antanea...</translation>
+ </message>
+ <message>
+ <source>Take Screensh&amp;ot...</source>
+ <translation>Cattura sc&amp;hermata...</translation>
+ </message>
+ <message>
+ <source>Take a screenshot of the virtual machine</source>
+ <translation>Cattura una schermata della macchina virtuale</translation>
+ </message>
+ <message>
+ <source>Ins&amp;ert Ctrl-Alt-Backspace</source>
+ <translation>Invia Ctrl-Alt-D&amp;el</translation>
+ </message>
+ <message>
+ <source>Sort List</source>
+ <translation>Ordina elenco</translation>
+ </message>
+ <message>
+ <source>Sort the VM list alphabetically (Shift for descending order)</source>
+ <translation>Ordina alfabeticamente l&apos;elenco della MV (Maiusc per cambiare direzione)</translation>
+ </message>
+ <message>
+ <source>&amp;Close</source>
+ <translation>&amp;Chiudi</translation>
+ </message>
+ <message>
+ <source>Po&amp;wer Off</source>
+ <translation>Spe&amp;gni</translation>
+ </message>
+ <message>
+ <source>Power off the virtual machine</source>
+ <translation>Spegni la macchina virtuale</translation>
+ </message>
</context>
<context>
<name>UIApplianceEditorWidget</name>
@@ -878,7 +1083,7 @@
</message>
</context>
<context>
- <name>UIDetailsPagePrivate</name>
+ <name>UIDetailsBlock</name>
<message>
<source>Name</source>
<comment>details report</comment>
@@ -890,6 +1095,11 @@
<translation>Sistema operativo</translation>
</message>
<message>
+ <source>Information inaccessible</source>
+ <comment>details report</comment>
+ <translation>Informazioni non disponibile</translation>
+ </message>
+ <message>
<source>Base Memory</source>
<comment>details report</comment>
<translation>Memoria di base</translation>
@@ -910,6 +1120,16 @@
<translation>&lt;nobr&gt;%1&lt;/nobr&gt;</translation>
</message>
<message>
+ <source>Execution Cap</source>
+ <comment>details report</comment>
+ <translation>Execution Cap</translation>
+ </message>
+ <message>
+ <source>&lt;nobr&gt;%1%&lt;/nobr&gt;</source>
+ <comment>details report</comment>
+ <translation>&lt;nobr&gt;%1%&lt;/nobr&gt;</translation>
+ </message>
+ <message>
<source>Boot Order</source>
<comment>details report</comment>
<translation>Ordine di avvio</translation>
@@ -996,7 +1216,7 @@
<message>
<source>Host Driver</source>
<comment>details report (audio)</comment>
- <translation>Driver dell&apos;host</translation>
+ <translation>Driver host</translation>
</message>
<message>
<source>Controller</source>
@@ -1024,9 +1244,14 @@
<translation>Scheda solo host, &apos;%1&apos;</translation>
</message>
<message>
- <source>VDE network, &apos;%1&apos;</source>
+ <source>Generic driver, &apos;%1&apos;</source>
<comment>details report (network)</comment>
- <translation type="obsolete">Rete VDE. &apos;%1&apos;</translation>
+ <translation>Driver generico, &apos;%1&apos;</translation>
+ </message>
+ <message>
+ <source>Generic driver, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</source>
+ <comment>details report (network)</comment>
+ <translation>Driver generico, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</translation>
</message>
<message>
<source>Adapter %1</source>
@@ -1046,7 +1271,7 @@
<message>
<source>Disabled</source>
<comment>details report (serial ports)</comment>
- <translation>Disabilitata</translation>
+ <translation>Disabilitate</translation>
</message>
<message>
<source>Port %1</source>
@@ -1056,7 +1281,7 @@
<message>
<source>Disabled</source>
<comment>details report (parallel ports)</comment>
- <translation>Disabilitata</translation>
+ <translation>Disabilitate</translation>
</message>
<message>
<source>Device Filters</source>
@@ -1088,6 +1313,218 @@
<comment>details report (description)</comment>
<translation>Nessuna</translation>
</message>
+</context>
+<context>
+ <name>UIDetailsPagePrivate</name>
+ <message>
+ <source>Name</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Nome</translation>
+ </message>
+ <message>
+ <source>OS Type</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Sistema operativo</translation>
+ </message>
+ <message>
+ <source>Base Memory</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Memoria di base</translation>
+ </message>
+ <message>
+ <source>&lt;nobr&gt;%1 MB&lt;/nobr&gt;</source>
+ <comment>details report</comment>
+ <translation type="obsolete">&lt;nobr&gt;%1 MB&lt;/nobr&gt;</translation>
+ </message>
+ <message>
+ <source>Processors</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Processori</translation>
+ </message>
+ <message>
+ <source>&lt;nobr&gt;%1&lt;/nobr&gt;</source>
+ <comment>details report</comment>
+ <translation type="obsolete">&lt;nobr&gt;%1&lt;/nobr&gt;</translation>
+ </message>
+ <message>
+ <source>Boot Order</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Ordine di avvio</translation>
+ </message>
+ <message>
+ <source>ACPI</source>
+ <comment>details report</comment>
+ <translation type="obsolete">ACPI</translation>
+ </message>
+ <message>
+ <source>IO APIC</source>
+ <comment>details report</comment>
+ <translation type="obsolete">IO APIC</translation>
+ </message>
+ <message>
+ <source>BIOS</source>
+ <comment>details report</comment>
+ <translation type="obsolete">BIOS</translation>
+ </message>
+ <message>
+ <source>VT-x/AMD-V</source>
+ <comment>details report</comment>
+ <translation type="obsolete">VT-x/AMD-V</translation>
+ </message>
+ <message>
+ <source>Nested Paging</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Paginazione nidificata</translation>
+ </message>
+ <message>
+ <source>PAE/NX</source>
+ <comment>details report</comment>
+ <translation type="obsolete">PAE/NX</translation>
+ </message>
+ <message>
+ <source>Acceleration</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Accelerazione</translation>
+ </message>
+ <message>
+ <source>Video Memory</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Memoria video</translation>
+ </message>
+ <message>
+ <source>Screens</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Schermi</translation>
+ </message>
+ <message>
+ <source>2D Video</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Video 2D</translation>
+ </message>
+ <message>
+ <source>3D</source>
+ <comment>details report</comment>
+ <translation type="obsolete">3D</translation>
+ </message>
+ <message>
+ <source>Remote Desktop Server Port</source>
+ <comment>details report (VRDE Server)</comment>
+ <translation type="obsolete">Porta del server di desktop remoto</translation>
+ </message>
+ <message>
+ <source>Remote Desktop Server</source>
+ <comment>details report (VRDE Server)</comment>
+ <translation type="obsolete">Server di desktop remoto</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (VRDE Server)</comment>
+ <translation type="obsolete">Disabilitato</translation>
+ </message>
+ <message>
+ <source>(CD/DVD)</source>
+ <translation type="obsolete">(CD/DVD)</translation>
+ </message>
+ <message>
+ <source>Not Attached</source>
+ <comment>details report (Storage)</comment>
+ <translation type="obsolete">Non collegato</translation>
+ </message>
+ <message>
+ <source>Host Driver</source>
+ <comment>details report (audio)</comment>
+ <translation type="obsolete">Driver dell&apos;host</translation>
+ </message>
+ <message>
+ <source>Controller</source>
+ <comment>details report (audio)</comment>
+ <translation type="obsolete">Controller</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (audio)</comment>
+ <translation type="obsolete">Disabilitato</translation>
+ </message>
+ <message>
+ <source>Bridged adapter, %1</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Scheda con bridge, %1</translation>
+ </message>
+ <message>
+ <source>Internal network, &apos;%1&apos;</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Rete interna, &apos;%1&apos;</translation>
+ </message>
+ <message>
+ <source>Host-only adapter, &apos;%1&apos;</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Scheda solo host, &apos;%1&apos;</translation>
+ </message>
+ <message>
+ <source>VDE network, &apos;%1&apos;</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Rete VDE. &apos;%1&apos;</translation>
+ </message>
+ <message>
+ <source>Adapter %1</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Scheda %1</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Disabilitata</translation>
+ </message>
+ <message>
+ <source>Port %1</source>
+ <comment>details report (serial ports)</comment>
+ <translation type="obsolete">Porta %1</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (serial ports)</comment>
+ <translation type="obsolete">Disabilitata</translation>
+ </message>
+ <message>
+ <source>Port %1</source>
+ <comment>details report (parallel ports)</comment>
+ <translation type="obsolete">Porta %1</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (parallel ports)</comment>
+ <translation type="obsolete">Disabilitata</translation>
+ </message>
+ <message>
+ <source>Device Filters</source>
+ <comment>details report (USB)</comment>
+ <translation type="obsolete">Filtri dispositivi</translation>
+ </message>
+ <message>
+ <source>%1 (%2 active)</source>
+ <comment>details report (USB)</comment>
+ <translation type="obsolete">%1 (%2 attivo)</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (USB)</comment>
+ <translation type="obsolete">Disabilitato</translation>
+ </message>
+ <message>
+ <source>Shared Folders</source>
+ <comment>details report (shared folders)</comment>
+ <translation type="obsolete">Cartelle condivise</translation>
+ </message>
+ <message>
+ <source>None</source>
+ <comment>details report (shared folders)</comment>
+ <translation type="obsolete">Nessuna</translation>
+ </message>
+ <message>
+ <source>None</source>
+ <comment>details report (description)</comment>
+ <translation type="obsolete">Nessuna</translation>
+ </message>
<message>
<source>The selected virtual machine is &lt;i&gt;inaccessible&lt;/i&gt;. Please inspect the error message shown below and press the &lt;b&gt;Refresh&lt;/b&gt; button if you want to repeat the accessibility check:</source>
<translation>La macchina virtuale selezionata è &lt;i&gt;inaccessibile&lt;/i&gt;. Controlla il messaggio d&apos;errore sottostante e premi il pulsante &lt;b&gt;Aggiorna&lt;/b&gt; se vuoi ripetere il controllo di accessibilità:</translation>
@@ -1155,22 +1592,22 @@
<message>
<source>Execution Cap</source>
<comment>details report</comment>
- <translation>Execution Cap</translation>
+ <translation type="obsolete">Execution Cap</translation>
</message>
<message>
<source>&lt;nobr&gt;%1%&lt;/nobr&gt;</source>
<comment>details report</comment>
- <translation>&lt;nobr&gt;%1%&lt;/nobr&gt;</translation>
+ <translation type="obsolete">&lt;nobr&gt;%1%&lt;/nobr&gt;</translation>
</message>
<message>
<source>Generic driver, &apos;%1&apos;</source>
<comment>details report (network)</comment>
- <translation>Driver generico, &apos;%1&apos;</translation>
+ <translation type="obsolete">Driver generico, &apos;%1&apos;</translation>
</message>
<message>
<source>Generic driver, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</source>
<comment>details report (network)</comment>
- <translation>Driver generico, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</translation>
+ <translation type="obsolete">Driver generico, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</translation>
</message>
</context>
<context>
@@ -1223,6 +1660,14 @@
<source>The download process has been canceled by the user.</source>
<translation type="obsolete">Il processo di scaricamento è stato annullato dall&apos;utente.</translation>
</message>
+ <message>
+ <source>Looking for %1...</source>
+ <translation>Ricerca di %1 in corso...</translation>
+ </message>
+ <message>
+ <source>Downloading %1...</source>
+ <translation>Scaricamento di %1 in corso...</translation>
+ </message>
</context>
<context>
<name>UIDownloaderAdditions</name>
@@ -1246,6 +1691,10 @@
<source>Select folder to save Guest Additions image to</source>
<translation>Selezionare la cartella dove salvare l&apos;immagine di Guest Additions</translation>
</message>
+ <message>
+ <source>VirtualBox Guest Additions</source>
+ <translation></translation>
+ </message>
</context>
<context>
<name>UIDownloaderExtensionPack</name>
@@ -1253,6 +1702,10 @@
<source>Select folder to save %1 to</source>
<translation>Seleziona la cartella dove salvare %1</translation>
</message>
+ <message>
+ <source>VirtualBox Extension Pack</source>
+ <translation></translation>
+ </message>
</context>
<context>
<name>UIDownloaderUserManual</name>
@@ -1260,6 +1713,10 @@
<source>Select folder to save User Manual to</source>
<translation>Seleziona la cartella in cui salvare il manuale utente</translation>
</message>
+ <message>
+ <source>VirtualBox User Manual</source>
+ <translation>Manuale utente di VirtualBox</translation>
+ </message>
</context>
<context>
<name>UIExportApplianceWzd</name>
@@ -1811,6 +2268,56 @@ p, li { white-space: pre-wrap; }
</message>
</context>
<context>
+ <name>UIGlobalSettingsDisplay</name>
+ <message>
+ <source>Maximum Guest Screen &amp;Size:</source>
+ <translation>Dimen&amp;sione massima dello schermo &amp;Guest:</translation>
+ </message>
+ <message>
+ <source>&amp;Width:</source>
+ <translation>&amp;Larghezza:</translation>
+ </message>
+ <message>
+ <source>Specifies the maximum width which we would like the guest to use.</source>
+ <translation>Specifica la larghezza massima che vogliamo utilizzare per il guest.</translation>
+ </message>
+ <message>
+ <source>&amp;Height:</source>
+ <translation>&amp;Altezza:</translation>
+ </message>
+ <message>
+ <source>Specifies the maximum height which we would like the guest to use.</source>
+ <translation>Specifica l&apos;altezza massima che vogliamo utilizzare per il guest.</translation>
+ </message>
+ <message>
+ <source>Automatic</source>
+ <comment>Maximum Guest Screen Size</comment>
+ <translation>Automatica</translation>
+ </message>
+ <message>
+ <source>Suggest a reasonable maximum screen size to the guest. The guest will only see this suggestion when guest additions are installed.</source>
+ <translation>Suggerisci una dimensione massima dello schermo ragionevole al guest. Il guest vedrà questo suggerimento solo dopo l&apos;installazione delle Guest Additions.</translation>
+ </message>
+ <message>
+ <source>None</source>
+ <comment>Maximum Guest Screen Size</comment>
+ <translation>Nessuna</translation>
+ </message>
+ <message>
+ <source>Do not attempt to limit the size of the guest screen.</source>
+ <translation>Non provare a limitare la dimensione dello schermo del guest.</translation>
+ </message>
+ <message>
+ <source>Hint</source>
+ <comment>Maximum Guest Screen Size</comment>
+ <translation>Consigliata</translation>
+ </message>
+ <message>
+ <source>Suggest a maximum screen size to the guest. The guest will only see this suggestion when guest additions are installed.</source>
+ <translation>Suggerisci una dimensione massima dello schermo al guest. Il guest vedrà questo suggerimento solo dopo l&apos;installazione delle Guest Additions.</translation>
+ </message>
+</context>
+<context>
<name>UIGlobalSettingsExtension</name>
<message>
<source>&amp;Extension Packages:</source>
@@ -2838,6 +3345,10 @@ p, li { white-space: pre-wrap; }
<source>No supported devices connected to the host PC</source>
<translation></translation>
</message>
+ <message>
+ <source>Select a filename for the screenshot ...</source>
+ <translation>Seleziona il nome del file della schermata...</translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsAudio</name>
@@ -2988,6 +3499,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>hai l&apos;accelerazione video 2D abilitata. Poiché l&apos;accelerazione 2D è supportata dai soli guest Windows, questa funzionalità sarà disabilitata.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation>hai abilitato l&apos;accelerazione 3D. In ogni caso, l&apos;accelerazione 3D non funziona con la configurazione attuale dell&apos;host. Non potrai avviare la MV.</translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
@@ -5162,7 +5677,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&lt;p&gt;Failed to download the VirtualBox Guest Additions CD image from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</source>
- <translation>&lt;p&gt;Impossibile scaricare l&apos;immagine CD di VirtualBox Guest Additions da &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Impossibile scaricare l&apos;immagine CD di VirtualBox Guest Additions da &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Are you sure you want to download the VirtualBox Guest Additions CD image from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; (size %3 bytes)?&lt;/p&gt;</source>
@@ -5560,7 +6075,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&lt;p&gt;Unable to obtain the new version information due to the following error:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</source>
- <translation>&lt;p&gt;Impossibile ottenere informazioni sulla nuova versione a causa del seguente errore:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Impossibile ottenere informazioni sulla nuova versione a causa del seguente errore:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;One or more virtual hard disks, CD/DVD or floppy media are not currently accessible. As a result, you will not be able to operate virtual machines that use these media until they become accessible later.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;Check&lt;/b&gt; to open the Virtual Media Manager window and see what media are inaccessible, or press &lt;b&gt;Ignore&lt;/b&gt; to ignore this message.&lt;/p&gt;</source>
@@ -5919,7 +6434,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&lt;p&gt;Failed to download the VirtualBox User Manual from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</source>
- <translation>&lt;p&gt;Impossibile scaricare il manuale utente di VirtualBox da &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Impossibile scaricare il manuale utente di VirtualBox da &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;The VirtualBox User Manual has been successfully downloaded from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; and saved locally as &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;</source>
@@ -5939,11 +6454,11 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&lt;p&gt;You are about to remove the virtual machine &lt;b&gt;%1&lt;/b&gt; from the machine list.&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well?&lt;/p&gt;</source>
- <translation>&lt;p&gt;Stai per rimuovere la macchina virtuale &lt;b&gt;%1&lt;/b&gt; dall&apos;elenco.&lt;/p&gt;&lt;p&gt;Vuoi eliminare anche i file contenenti la macchina virtuale dal disco fisso?&lt;p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Stai per rimuovere la macchina virtuale &lt;b&gt;%1&lt;/b&gt; dall&apos;elenco.&lt;/p&gt;&lt;p&gt;Vuoi eliminare anche i file contenenti la macchina virtuale dal disco fisso?&lt;p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;You are about to remove the virtual machine &lt;b&gt;%1&lt;/b&gt; from the machine list.&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well? Doing this will also remove the files containing the machine&apos;s virtual hard disks if they are not in use by another machine.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Stai per rimuovere la macchina virtuale inaccessibile &lt;b&gt;%1&lt;/b&gt; dall&apos;elenco.&lt;/p&gt;&lt;p&gt;Vuoi eliminare anche i file contenenti la macchina virtuale dal disco fisso? Questa operazione rimuoverà anche i file che contengono i dischi fissi virtuali della macchina se non sono utilizzati da un&apos;altra macchina.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Stai per rimuovere la macchina virtuale inaccessibile &lt;b&gt;%1&lt;/b&gt; dall&apos;elenco.&lt;/p&gt;&lt;p&gt;Vuoi eliminare anche i file contenenti la macchina virtuale dal disco fisso? Questa operazione rimuoverà anche i file che contengono i dischi fissi virtuali della macchina se non sono utilizzati da un&apos;altra macchina.&lt;/p&gt;</translation>
</message>
<message>
<source>Delete all files</source>
@@ -5955,7 +6470,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>You are about to remove the inaccessible virtual machine &lt;b&gt;%1&lt;/b&gt; from the machine list. Do you wish to proceed?</source>
- <translation>Stai per rimuovere la macchina virtuale inaccessibile &lt;b&gt;%1&lt;/b&gt; dall&apos;elenco. Desideri procedere?</translation>
+ <translation type="obsolete">Stai per rimuovere la macchina virtuale inaccessibile &lt;b&gt;%1&lt;/b&gt; dall&apos;elenco. Desideri procedere?</translation>
</message>
<message>
<source>Remove</source>
@@ -6245,16 +6760,74 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&lt;p&gt;Failed to download the &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; from &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</source>
- <translation>&lt;p&gt;Scaricamento del &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; non riuscita da &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Scaricamento del &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; non riuscita da &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Network Operations Manager...</source>
+ <translation>Gestore delle operazioni di rete...</translation>
+ </message>
+ <message>
+ <source>Show Network Operations Manager</source>
+ <translation>Mostra il gestore delle operazioni di rete</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;You are about to remove following inaccessible virtual machines from the machine list:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Do you wish to proceed?&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Stai per rimuovere le seguenti macchine virtuali non accessibili dall&apos;elenco:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Vuoi continuare?&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;You are about to remove following virtual machines from the machine list:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well? Doing this will also remove the files containing the machine&apos;s virtual hard disks if they are not in use by another machine.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Stai per rimuovere le seguenti macchine virtuali dall&apos;elenco: &lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Vuoi eliminare anche i file contenenti la macchina virtuale dal disco fisso? Questa operazione rimuoverà anche i file che contengono i dischi fissi virtuali della macchina se non sono utilizzati da un&apos;altra macchina.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;You are about to remove following virtual machines from the machine list:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well?&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Stai per rimuovere la seguente macchina virtuale dall&apos;elenco:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Vuoi eliminare anche i file contenenti la macchina virtuale dal disco fisso?&lt;p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;You have version %1 of the &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; installed.&lt;/p&gt;&lt;p&gt;You should download and install version %3 of this extension pack from Oracle!&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;È installata la versione %1 di &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Dovresti scaricare e installare la versione %3 dell&apos;extension pack da Oracle!&lt;/p&gt;</translation>
</message>
<message>
<source>Ok</source>
<comment>extension pack</comment>
- <translation type="unfinished"></translation>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <source>Do you wish to cancel all current network operations?</source>
+ <translation>Vuoi annullare tutte le operazioni di rete correnti?</translation>
+ </message>
+ <message>
+ <source>Do you wish to cancel all current network operations or leave them running in the background?</source>
+ <translation>Vuoi annullare tutte le operazioni di rete correnti o lasciarle in esecuzione sullo sfondo?</translation>
+ </message>
+ <message>
+ <source>Cancel All</source>
+ <translation>Annulla tutto</translation>
+ </message>
+ <message>
+ <source>Leave in Background</source>
+ <translation>Esecuzione sullo sfondo</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;Do you really want to send an ACPI shutdown signal to the virtual machine?&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Vuoi davvero inviare un segnale ACPI di shutdown alla macchina virtuale?&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>ACPI Shutdown</source>
+ <comment>machine</comment>
+ <translation>Shutdown ACPI</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;Do you really want to power off the virtual machine?&lt;/p&gt;&lt;p&gt;This will cause any unsaved data in applications running inside it to be lost.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Vuoi davvero spegnere la macchina virtuale?&lt;/p&gt;&lt;p&gt;Tutti i dati non salvati di tutte le applicazioni in esecuzione saranno persi.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Power Off</source>
+ <comment>machine</comment>
+ <translation>Spegni</translation>
+ </message>
+ <message>
+ <source>Failed to drop data.</source>
+ <translation>Eliminazione dati non riuscita.</translation>
</message>
</context>
<context>
@@ -6325,6 +6898,41 @@ p, li { white-space: pre-wrap; }
</message>
</context>
<context>
+ <name>UINetworkManager</name>
+ <message>
+ <source>Network Operation</source>
+ <translation>Operazione di rete</translation>
+ </message>
+ <message>
+ <source>Restart network operation</source>
+ <translation>Riavvia l&apos;operazione di rete</translation>
+ </message>
+ <message>
+ <source>Cancel network operation</source>
+ <translation>Annulla l&apos;operazione di rete</translation>
+ </message>
+ <message>
+ <source>Error: %1.</source>
+ <translation>Errore: %1.</translation>
+ </message>
+ <message>
+ <source>Network Operations Manager</source>
+ <translation>Gestore delle operazioni di rete</translation>
+ </message>
+ <message>
+ <source>There are no active network operations.</source>
+ <translation>Non ci sono operazioni di rete attive.</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel All</source>
+ <translation>A&amp;nnulla tutto</translation>
+ </message>
+ <message>
+ <source>Cancel all active network operations</source>
+ <translation>Annulla tutte le operazioni di rete</translation>
+ </message>
+</context>
+<context>
<name>UINewHDWizard</name>
<message>
<source>Create New Virtual Disk</source>
@@ -6612,8 +7220,8 @@ alla velocità di scrittura del tuo disco rigido.&lt;/p&gt;</translation>
<translation>Scegli se il file del nuovo disco virtuale deve essere allocato al momento del suo utilizzo o se deve essere allocato completamente in fase di creazione.</translation>
</message>
<message>
- <source>&lt;p&gt;A &lt;b&gt;dynamically allocated&lt;/b&gt; virtual disk file will only use space on your physical hard disk as it fills up, although it will not shrink again automatically when space on it is freed.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Un disco virtuale &lt;b&gt;allocato dinamicamente&lt;/b&gt; utilizzerà solo lo spazio del disco fisico che si riempe, ma non si ridurrà automaticamente se lo spazio viene liberato.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;A &lt;b&gt;dynamically allocated&lt;/b&gt; virtual disk file will only use space on your physical hard disk as it fills up (up to a &lt;b&gt;fixed maximum size&lt;/b&gt;), although it will not shrink again automatically when space on it is freed.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Un disco virtuale &lt;b&gt;allocato dinamicamente&lt;/b&gt; utilizzerà solo lo spazio del disco fisico che si riempe (fino alla &lt;b&gt;dimensione massima specificata&lt;/b&gt;, ma non si ridurrà automaticamente se lo spazio su di esso viene liberato.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;A &lt;b&gt;fixed size&lt;/b&gt; virtual disk file may take longer to create on some systems but is often faster to use.&lt;/p&gt;</source>
@@ -7312,6 +7920,34 @@ questo passo e collegare hard disk più tardi tramite Impostazioni della MV.&lt;
</message>
</context>
<context>
+ <name>UISelectorWindow</name>
+ <message>
+ <source>Show Toolbar</source>
+ <translation>Mostra la barra degli strumenti</translation>
+ </message>
+ <message>
+ <source>Show Statusbar</source>
+ <translation>Mostra la barra di stato</translation>
+ </message>
+ <message>
+ <source>Select a virtual machine file</source>
+ <translation>Seleziona un file di macchina virtuale</translation>
+ </message>
+ <message>
+ <source>Virtual machine files (%1)</source>
+ <translation>File di macchina virtuale (%1)</translation>
+ </message>
+ <message>
+ <source>&lt;h3&gt;Welcome to VirtualBox!&lt;/h3&gt;&lt;p&gt;The left part of this window is a list of all virtual machines on your computer. The list is empty now because you haven&apos;t created any virtual machines yet.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;In order to create a new virtual machine, press the &lt;b&gt;New&lt;/b&gt; button in the main tool bar located at the top of the window.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;%1&lt;/b&gt; key to get instant help, or visit &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; for the latest information and news.&lt;/p&gt;</source>
+ <translation>&lt;h3&gt;Benvenuti in VirtualBox!&lt;/h3&gt;&lt;p&gt;La parte sinistra di questa finestra visualizza un elenco delle macchine virtuali sul tuo computer. L&apos;elenco al momento è vuoto perché non sono ancora state create macchine virtuali.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;Per creare una nuova macchina virtuale, premere il pulsante &lt;b&gt;Nuova&lt;/b&gt; nella barra degli strumenti principale posizionata nella parte alta della finestra.&lt;/p&gt;&lt;p&gt;Premere il tasto &lt;b&gt;%1&lt;/b&gt; per ottenere aiuto immediatamente, o visitare &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; per le ultime notizie e informazioni.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Manager</source>
+ <comment>Note: main window title which is pretended by the product name.</comment>
+ <translation>Gestore</translation>
+ </message>
+</context>
+<context>
<name>UISession</name>
<message>
<source>Install</source>
@@ -7379,6 +8015,10 @@ questo passo e collegare hard disk più tardi tramite Impostazioni della MV.&lt;
<source>Proxy</source>
<translation>Proxy</translation>
</message>
+ <message>
+ <source>Display</source>
+ <translation>Schermo</translation>
+ </message>
</context>
<context>
<name>UISettingsDialogMachine</name>
@@ -7570,6 +8210,13 @@ questo passo e collegare hard disk più tardi tramite Impostazioni della MV.&lt;
</message>
</context>
<context>
+ <name>UIUpdateStepVirtualBox</name>
+ <message>
+ <source>Checking for a new VirtualBox version...</source>
+ <translation>Verifica della disponibilità di una nuova versione di VirtualBox in corso...</translation>
+ </message>
+</context>
+<context>
<name>UIVMCloseDialog</name>
<message>
<source>Close Virtual Machine</source>
@@ -7677,6 +8324,105 @@ questo passo e collegare hard disk più tardi tramite Impostazioni della MV.&lt;
</message>
</context>
<context>
+ <name>UIVMLogViewer</name>
+ <message>
+ <source>Log Viewer</source>
+ <translation type="obsolete">Visualizzatore di log</translation>
+ </message>
+ <message>
+ <source>&amp;Save</source>
+ <translation>&amp;Salva</translation>
+ </message>
+ <message>
+ <source>Alt+S</source>
+ <translation type="obsolete">Alt+S</translation>
+ </message>
+ <message>
+ <source>&amp;Refresh</source>
+ <translation>Aggio&amp;rna</translation>
+ </message>
+ <message>
+ <source>Alt+R</source>
+ <translation type="obsolete">Alt+R</translation>
+ </message>
+ <message>
+ <source>&amp;Close</source>
+ <translation type="obsolete">&amp;Chiudi</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation type="obsolete">Alt+C</translation>
+ </message>
+ <message>
+ <source>%1 - VirtualBox Log Viewer</source>
+ <translation>%1 - Visualizzatore Log di VirtualBox</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;No log files found. Press the &lt;b&gt;Refresh&lt;/b&gt; button to rescan the log folder &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Nessun file di log trovato. Premi il pulsante &lt;b&gt;Aggiorna&lt;/b&gt; per analizzare nuovamente la cartella dei log &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Save VirtualBox Log As</source>
+ <translation>Salva log di VirtualBox come</translation>
+ </message>
+ <message>
+ <source>Help</source>
+ <translation type="obsolete">Aiuto</translation>
+ </message>
+ <message>
+ <source>F1</source>
+ <translation type="obsolete">F1</translation>
+ </message>
+ <message>
+ <source>&amp;Find</source>
+ <translation>&amp;Cerca</translation>
+ </message>
+ <message>
+ <source>Alt+F</source>
+ <translation type="obsolete">Alt+C</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Chiudi</translation>
+ </message>
+ <message>
+ <source>Close the search panel</source>
+ <translation>Chiudi il pannello di ricerca</translation>
+ </message>
+ <message>
+ <source>Enter a search string here</source>
+ <translation>Inserisci una parola da cercare</translation>
+ </message>
+ <message>
+ <source>&amp;Previous</source>
+ <translation>&amp;Precedente</translation>
+ </message>
+ <message>
+ <source>Search for the previous occurrence of the string</source>
+ <translation>Cerca l&apos;occorrenza precedente</translation>
+ </message>
+ <message>
+ <source>&amp;Next</source>
+ <translation>Segue&amp;nte</translation>
+ </message>
+ <message>
+ <source>Search for the next occurrence of the string</source>
+ <translation>Cerca l&apos;occorrenza successiva</translation>
+ </message>
+ <message>
+ <source>C&amp;ase Sensitive</source>
+ <translation>M&amp;aiuscole/minuscole</translation>
+ </message>
+ <message>
+ <source>Perform case sensitive search (when checked)</source>
+ <translation>Abilita la ricerca confrontando maiuscole e minuscole (se marcata)</translation>
+ </message>
+ <message>
+ <source>String not found</source>
+ <translation>Nessuna occorrenza</translation>
+ </message>
+</context>
+<context>
<name>UIVMPreviewWindow</name>
<message>
<source>Update Disabled</source>
@@ -11111,53 +11857,13 @@ la lingua a quella predefinita di sistema.&lt;/qt&gt;
<context>
<name>VBoxLogSearchPanel</name>
<message>
- <source>Close the search panel</source>
- <translation>Chiudi il pannello di ricerca</translation>
- </message>
- <message>
- <source>Find </source>
- <translation>Cerca </translation>
- </message>
- <message>
- <source>Enter a search string here</source>
- <translation>Inserisci una parola da cercare</translation>
- </message>
- <message>
- <source>&amp;Previous</source>
- <translation>&amp;Precedente</translation>
- </message>
- <message>
<source>Alt+P</source>
<translation type="obsolete">Alt+P</translation>
</message>
<message>
- <source>Search for the previous occurrence of the string</source>
- <translation>Cerca l&apos;occorrenza precedente</translation>
- </message>
- <message>
- <source>&amp;Next</source>
- <translation>Segue&amp;nte</translation>
- </message>
- <message>
<source>Alt+N</source>
<translation type="obsolete">Alt+N</translation>
</message>
- <message>
- <source>Search for the next occurrence of the string</source>
- <translation>Cerca l&apos;occorrenza successiva</translation>
- </message>
- <message>
- <source>C&amp;ase Sensitive</source>
- <translation>M&amp;aiuscole/minuscole</translation>
- </message>
- <message>
- <source>Perform case sensitive search (when checked)</source>
- <translation>Abilita la ricerca confrontando maiuscole e minuscole (se marcata)</translation>
- </message>
- <message>
- <source>String not found</source>
- <translation>Nessuna occorrenza</translation>
- </message>
</context>
<context>
<name>VBoxMediaComboBox</name>
@@ -11661,35 +12367,14 @@ la lingua a quella predefinita di sistema.&lt;/qt&gt;
<translation type="obsolete">Mostra la finestra del Gestore dischi virtuali</translation>
</message>
<message>
- <source>&amp;Preferences...</source>
- <comment>global settings</comment>
- <translation>Im&amp;postazioni...</translation>
- </message>
- <message>
<source>Ctrl+G</source>
<translation type="obsolete">Ctrl+G</translation>
</message>
<message>
- <source>Display the global settings dialog</source>
- <translation>Mostra la finestra delle impostazioni</translation>
- </message>
- <message>
- <source>E&amp;xit</source>
- <translation>&amp;Esci</translation>
- </message>
- <message>
<source>Ctrl+Q</source>
<translation type="obsolete">Ctrl+Q</translation>
</message>
<message>
- <source>Close application</source>
- <translation>Chiudi l&apos;applicazione</translation>
- </message>
- <message>
- <source>&amp;New...</source>
- <translation>&amp;Nuova...</translation>
- </message>
- <message>
<source>New</source>
<translation type="obsolete">Nuova</translation>
</message>
@@ -11698,12 +12383,8 @@ la lingua a quella predefinita di sistema.&lt;/qt&gt;
<translation type="obsolete">Ctrl+N</translation>
</message>
<message>
- <source>Create a new virtual machine</source>
- <translation>Crea una nuova macchina virtuale</translation>
- </message>
- <message>
<source>&amp;Settings...</source>
- <translation>Impo&amp;stazioni...</translation>
+ <translation type="obsolete">Impo&amp;stazioni...</translation>
</message>
<message>
<source>Settings</source>
@@ -11715,7 +12396,7 @@ la lingua a quella predefinita di sistema.&lt;/qt&gt;
</message>
<message>
<source>Configure the selected virtual machine</source>
- <translation>Configura la macchina virtuale selezionata</translation>
+ <translation type="obsolete">Configura la macchina virtuale selezionata</translation>
</message>
<message>
<source>&amp;Delete</source>
@@ -11734,14 +12415,6 @@ la lingua a quella predefinita di sistema.&lt;/qt&gt;
<translation type="obsolete">Scar&amp;ta</translation>
</message>
<message>
- <source>Discard</source>
- <translation>Scarta</translation>
- </message>
- <message>
- <source>Discard the saved state of the selected virtual machine</source>
- <translation>Scarta lo stato salvato della macchina virtuale</translation>
- </message>
- <message>
<source>&amp;Refresh</source>
<translation type="obsolete">&amp;Aggiorna</translation>
</message>
@@ -11754,10 +12427,6 @@ la lingua a quella predefinita di sistema.&lt;/qt&gt;
<translation type="obsolete">Ctrl+A</translation>
</message>
<message>
- <source>Refresh the accessibility state of the selected virtual machine</source>
- <translation>Aggiorna lo stato di accessibilità della macchina virtuale selezionata</translation>
- </message>
- <message>
<source>&amp;Contents...</source>
<translation type="obsolete">&amp;Contenuti...</translation>
</message>
@@ -11814,36 +12483,16 @@ la lingua a quella predefinita di sistema.&lt;/qt&gt;
<translation type="obsolete">D&amp;escrizione *</translation>
</message>
<message>
- <source>S&amp;how</source>
- <translation>&amp;Mostra</translation>
- </message>
- <message>
<source>Show</source>
<translation type="obsolete">Mostra</translation>
</message>
<message>
- <source>Switch to the window of the selected virtual machine</source>
- <translation>Passa alla finestra della macchina virtuale selezionata</translation>
- </message>
- <message>
- <source>S&amp;tart</source>
- <translation>A&amp;vvia</translation>
- </message>
- <message>
<source>Start</source>
<translation type="obsolete">Avvia</translation>
</message>
<message>
- <source>Start the selected virtual machine</source>
- <translation>Avvia la macchina virtuale selezionata</translation>
- </message>
- <message>
<source>&amp;Machine</source>
- <translation>&amp;Macchina</translation>
- </message>
- <message>
- <source>Show &amp;Log...</source>
- <translation>Visualizza &amp;log...</translation>
+ <translation type="obsolete">&amp;Macchina</translation>
</message>
<message>
<source>Show Log...</source>
@@ -11854,10 +12503,6 @@ la lingua a quella predefinita di sistema.&lt;/qt&gt;
<translation type="obsolete">Ctrl+L</translation>
</message>
<message>
- <source>Show the log files of the selected virtual machine</source>
- <translation>Visualizza il file di log della macchina virtuale selezionata</translation>
- </message>
- <message>
<source>R&amp;egister VirtualBox...</source>
<translation type="obsolete">R&amp;egistra VirtualBox...</translation>
</message>
@@ -11879,11 +12524,11 @@ la lingua a quella predefinita di sistema.&lt;/qt&gt;
</message>
<message>
<source>Resume the execution of the virtual machine</source>
- <translation>Riprendi l&apos;esecuzione della macchina virtuale</translation>
+ <translation type="obsolete">Riprendi l&apos;esecuzione della macchina virtuale</translation>
</message>
<message>
<source>&amp;Pause</source>
- <translation>&amp;Pausa</translation>
+ <translation type="obsolete">&amp;Pausa</translation>
</message>
<message>
<source>Pause</source>
@@ -11891,145 +12536,37 @@ la lingua a quella predefinita di sistema.&lt;/qt&gt;
</message>
<message>
<source>Suspend the execution of the virtual machine</source>
- <translation>Sospendi l&apos;esecuzione della macchina virtuale</translation>
+ <translation type="obsolete">Sospendi l&apos;esecuzione della macchina virtuale</translation>
</message>
<message>
<source>&lt;h3&gt;Welcome to VirtualBox!&lt;/h3&gt;&lt;p&gt;The left part of this window is a list of all virtual machines on your computer. The list is empty now because you haven&apos;t created any virtual machines yet.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;In order to create a new virtual machine, press the &lt;b&gt;New&lt;/b&gt; button in the main tool bar located at the top of the window.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;%1&lt;/b&gt; key to get instant help, or visit &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; for the latest information and news.&lt;/p&gt;</source>
- <translation>&lt;h3&gt;Benvenuti in VirtualBox!&lt;/h3&gt;&lt;p&gt;La parte sinistra di questa finestra visualizza un elenco delle macchine virtuali sul tuo computer. L&apos;elenco al momento è vuoto perché non sono ancora state create macchine virtuali.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;Per creare una nuova macchina virtuale, premere il pulsante &lt;b&gt;Nuova&lt;/b&gt; nella barra degli strumenti principale posizionata nella parte alta della finestra.&lt;/p&gt;&lt;p&gt;Premere il tasto &lt;b&gt;%1&lt;/b&gt; per ottenere aiuto immediatamente, o visitare &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; per le ultime notizie e informazioni.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;Virtual Media Manager...</source>
- <translation>Gestore supporti &amp;virtuali...</translation>
- </message>
- <message>
- <source>Display the Virtual Media Manager dialog</source>
- <translation>Visualizza la finestra del gestore supporti virtuali</translation>
+ <translation type="obsolete">&lt;h3&gt;Benvenuti in VirtualBox!&lt;/h3&gt;&lt;p&gt;La parte sinistra di questa finestra visualizza un elenco delle macchine virtuali sul tuo computer. L&apos;elenco al momento è vuoto perché non sono ancora state create macchine virtuali.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;Per creare una nuova macchina virtuale, premere il pulsante &lt;b&gt;Nuova&lt;/b&gt; nella barra degli strumenti principale posizionata nella parte alta della finestra.&lt;/p&gt;&lt;p&gt;Premere il tasto &lt;b&gt;%1&lt;/b&gt; per ottenere aiuto immediatamente, o visitare &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; per le ultime notizie e informazioni.&lt;/p&gt;</translation>
</message>
<message>
<source>Log</source>
<comment>icon text</comment>
- <translation>Registro</translation>
- </message>
- <message>
- <source>&amp;Import Appliance...</source>
- <translation>&amp;Importa applicazione virtuale...</translation>
- </message>
- <message>
- <source>Import an appliance into VirtualBox</source>
- <translation>Importa un&apos;applicazione virtuale in VirtualBox</translation>
- </message>
- <message>
- <source>&amp;Export Appliance...</source>
- <translation>&amp;Esporta applicazione virtuale...</translation>
- </message>
- <message>
- <source>Export one or more VirtualBox virtual machines as an appliance</source>
- <translation>Esporta un&apos;applicazione virtuale da VirtualBox</translation>
- </message>
- <message>
- <source>Re&amp;fresh</source>
- <translation>A&amp;ggiorna</translation>
- </message>
- <message>
- <source>&amp;File</source>
- <comment>Mac OS X version</comment>
- <translatorcomment>&amp;File</translatorcomment>
- <translation>&amp;File</translation>
- </message>
- <message>
- <source>&amp;File</source>
- <comment>Non Mac OS X version</comment>
- <translatorcomment>&amp;File</translatorcomment>
- <translation>&amp;File</translation>
+ <translation type="obsolete">Registro</translation>
</message>
<message>
<source>Select a virtual machine file</source>
- <translation>Seleziona un file di macchina virtuale</translation>
+ <translation type="obsolete">Seleziona un file di macchina virtuale</translation>
</message>
<message>
<source>Virtual machine files (%1)</source>
- <translation>File di macchina virtuale (%1)</translation>
+ <translation type="obsolete">File di macchina virtuale (%1)</translation>
</message>
<message>
<source>Manager</source>
<comment>Note: main window title which is pretended by the product name.</comment>
- <translation>Gestore</translation>
- </message>
- <message>
- <source>&amp;Add...</source>
- <translation>&amp;Aggiungi...</translation>
- </message>
- <message>
- <source>Add an existing virtual machine</source>
- <translation>Aggiungi una macchina virtuale esistente</translation>
- </message>
- <message>
- <source>&amp;Remove</source>
- <translation>&amp;Rimuovi</translation>
- </message>
- <message>
- <source>Remove the selected virtual machine</source>
- <translation>Rimuovi la macchina virtuale selezionata</translation>
- </message>
- <message>
- <source>Show in Finder</source>
- <translation>Mostra in Finder</translation>
- </message>
- <message>
- <source>Show the VirtualBox Machine Definition file in Finder.</source>
- <translation>Mostra il file di definizione della macchina di VirtualBox in Finder.</translation>
- </message>
- <message>
- <source>Create Alias on Desktop</source>
- <translation>Crea un alias sul desktop</translation>
- </message>
- <message>
- <source>Creates an Alias file to the VirtualBox Machine Definition file on your Desktop.</source>
- <translation>Crea un alias per il file di definizione della macchina virtuale di VirtualBox sul desktop.</translation>
- </message>
- <message>
- <source>Show in Explorer</source>
- <translation>Mostra in Explorer</translation>
- </message>
- <message>
- <source>Show the VirtualBox Machine Definition file in Explorer.</source>
- <translation>Mostra il file di definizione della macchina di VirtualBox in Explorer.</translation>
- </message>
- <message>
- <source>Create Shortcut on Desktop</source>
- <translation>Crea una scorciatoria sul desktop</translation>
- </message>
- <message>
- <source>Creates an Shortcut file to the VirtualBox Machine Definition file on your Desktop.</source>
- <translation>Crea una scorciatoia al file di definizione della macchina virtuale di VirtualBox sul desktop.</translation>
- </message>
- <message>
- <source>Show in File Manager</source>
- <translation>Mostra nel gestore file</translation>
- </message>
- <message>
- <source>Show the VirtualBox Machine Definition file in the File Manager</source>
- <translation>Mostra il file di definizione della macchina di VirtualBox nel gestore file</translation>
+ <translation type="obsolete">Gestore</translation>
</message>
<message>
<source>Show Toolbar</source>
- <translation>Mostra la barra degli strumenti</translation>
+ <translation type="obsolete">Mostra la barra degli strumenti</translation>
</message>
<message>
<source>Show Statusbar</source>
- <translation>Mostra la barra di stato</translation>
- </message>
- <message>
- <source>Cl&amp;one...</source>
- <translation>Cl&amp;ona...</translation>
- </message>
- <message>
- <source>Clone the selected virtual machine</source>
- <translation>Clona la macchina virtuale selezionata</translation>
- </message>
- <message>
- <source>D&amp;iscard Saved State</source>
- <translation>Scarta l&amp;o stato salvato</translation>
+ <translation type="obsolete">Mostra la barra di stato</translation>
</message>
</context>
<context>
@@ -12983,69 +13520,6 @@ qualsiasi valore.&lt;/qt&gt;</translation>
</message>
</context>
<context>
- <name>VBoxVMLogViewer</name>
- <message>
- <source>Log Viewer</source>
- <translation>Visualizzatore di log</translation>
- </message>
- <message>
- <source>&amp;Save</source>
- <translation>&amp;Salva</translation>
- </message>
- <message>
- <source>Alt+S</source>
- <translation type="obsolete">Alt+S</translation>
- </message>
- <message>
- <source>&amp;Refresh</source>
- <translation>Aggio&amp;rna</translation>
- </message>
- <message>
- <source>Alt+R</source>
- <translation type="obsolete">Alt+R</translation>
- </message>
- <message>
- <source>&amp;Close</source>
- <translation type="obsolete">&amp;Chiudi</translation>
- </message>
- <message>
- <source>Alt+C</source>
- <translation type="obsolete">Alt+C</translation>
- </message>
- <message>
- <source>%1 - VirtualBox Log Viewer</source>
- <translation>%1 - Visualizzatore Log di VirtualBox</translation>
- </message>
- <message>
- <source>&lt;p&gt;No log files found. Press the &lt;b&gt;Refresh&lt;/b&gt; button to rescan the log folder &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Nessun file di log trovato. Premi il pulsante &lt;b&gt;Aggiorna&lt;/b&gt; per analizzare nuovamente la cartella dei log &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Save VirtualBox Log As</source>
- <translation>Salva log di VirtualBox come</translation>
- </message>
- <message>
- <source>Help</source>
- <translation type="obsolete">Aiuto</translation>
- </message>
- <message>
- <source>F1</source>
- <translation type="obsolete">F1</translation>
- </message>
- <message>
- <source>&amp;Find</source>
- <translation>&amp;Cerca</translation>
- </message>
- <message>
- <source>Alt+F</source>
- <translation type="obsolete">Alt+C</translation>
- </message>
- <message>
- <source>Close</source>
- <translation>Chiudi</translation>
- </message>
-</context>
-<context>
<name>VBoxVMNetworkSettings</name>
<message>
<source>VBoxVMNetworkSettings</source>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts
index 9cd0fb374..cdc0ba39b 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts
@@ -989,17 +989,17 @@
<context>
<name>UIDescriptionPagePrivate</name>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="1318"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="1320"/>
<source>No description. Press the Edit button below to add it.</source>
<translation>説明ãŒã‚ã‚Šã¾ã›ã‚“。[編集]ボタンをクリックã—ã¦è¿½åŠ ã—ã¦ãã ã•ã„。</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="1320"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="1322"/>
<source>Edit</source>
<translation>編集</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="1322"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="1324"/>
<source>Edit (Ctrl+E)</source>
<translation>編集(Ctrl+E)</translation>
</message>
@@ -1007,200 +1007,200 @@
<context>
<name>UIDetailsPagePrivate</name>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="567"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="569"/>
<source>Name</source>
<comment>details report</comment>
<translation>åå‰</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="569"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="571"/>
<source>OS Type</source>
<comment>details report</comment>
<translation>OSタイプ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="588"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="590"/>
<source>Base Memory</source>
<comment>details report</comment>
<translation>メインメモリ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="589"/>
- <location filename="../src/selector/UIVMDesktop.cpp" line="677"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="591"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="679"/>
<source>&lt;nobr&gt;%1 MB&lt;/nobr&gt;</source>
<comment>details report</comment>
<translation>&lt;nobr&gt;%1 MB&lt;/nobr&gt;</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="594"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="596"/>
<source>Processors</source>
<comment>details report</comment>
<translation>プロセッサ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="595"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="597"/>
<source>&lt;nobr&gt;%1&lt;/nobr&gt;</source>
<comment>details report</comment>
<translation>&lt;nobr&gt;%1&lt;/nobr&gt;</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="600"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="602"/>
<source>Execution Cap</source>
<comment>details report</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="601"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="603"/>
<source>&lt;nobr&gt;%1%&lt;/nobr&gt;</source>
<comment>details report</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="616"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="618"/>
<source>Boot Order</source>
<comment>details report</comment>
<translation>èµ·å‹•é †åº</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="624"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="626"/>
<source>ACPI</source>
<comment>details report</comment>
<translation>ACPI</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="628"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="630"/>
<source>IO APIC</source>
<comment>details report</comment>
<translation>IO APIC</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="631"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="633"/>
<source>BIOS</source>
<comment>details report</comment>
<translation>BIOS</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="640"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="642"/>
<source>VT-x/AMD-V</source>
<comment>details report</comment>
<translation>VT-x/AMD-V</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="644"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="646"/>
<source>Nested Paging</source>
<comment>details report</comment>
<translation>ãƒã‚¹ãƒ†ãƒƒãƒ‰ãƒšãƒ¼ã‚¸ãƒ³ã‚°</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="649"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="651"/>
<source>PAE/NX</source>
<comment>details report</comment>
<translation>PAE/NX</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="652"/>
- <location filename="../src/selector/UIVMDesktop.cpp" line="697"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="654"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="699"/>
<source>Acceleration</source>
<comment>details report</comment>
<translation>アクセラレーション</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="676"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="678"/>
<source>Video Memory</source>
<comment>details report</comment>
<translation>ビデオメモリ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="684"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="686"/>
<source>Screens</source>
<comment>details report</comment>
<translation>スクリーン</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="691"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="693"/>
<source>2D Video</source>
<comment>details report</comment>
<translation>2D ビデオ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="694"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="696"/>
<source>3D</source>
<comment>details report</comment>
<translation>3D</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="705"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="707"/>
<source>Remote Desktop Server Port</source>
<comment>details report (VRDE Server)</comment>
<translation>リモートデスクトップ サーãƒãƒ¼ ãƒãƒ¼ãƒˆ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="709"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="711"/>
<source>Remote Desktop Server</source>
<comment>details report (VRDE Server)</comment>
<translation>リモートデスクトップ サーãƒãƒ¼</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="710"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="712"/>
<source>Disabled</source>
<comment>details report (VRDE Server)</comment>
<translation>無効</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="748"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="750"/>
<source>(CD/DVD)</source>
<translation>(CD/DVD)</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="779"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="781"/>
<source>Not Attached</source>
<comment>details report (Storage)</comment>
<translation>未割り当ã¦</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="802"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="804"/>
<source>Host Driver</source>
<comment>details report (audio)</comment>
<translation>ホスト ドライãƒ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="805"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="807"/>
<source>Controller</source>
<comment>details report (audio)</comment>
<translation>コントローラ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="809"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="811"/>
<source>Disabled</source>
<comment>details report (audio)</comment>
<translation>無効</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="841"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="843"/>
<source>Bridged adapter, %1</source>
<comment>details report (network)</comment>
<translation>ブリッジ アダプタ, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="844"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="846"/>
<source>Internal network, &apos;%1&apos;</source>
<comment>details report (network)</comment>
<translation>内部ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="847"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="849"/>
<source>Host-only adapter, &apos;%1&apos;</source>
<comment>details report (network)</comment>
<translation>ホストオンリー アダプタ, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="853"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="855"/>
<source>Generic driver, &apos;%1&apos;</source>
<comment>details report (network)</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="854"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="856"/>
<source>Generic driver, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</source>
<comment>details report (network)</comment>
<translation type="unfinished"></translation>
@@ -1211,150 +1211,150 @@
<translation type="obsolete">VDE ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="861"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="863"/>
<source>Adapter %1</source>
<comment>details report (network)</comment>
<translation>アダプタ %1</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="869"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="871"/>
<source>Disabled</source>
<comment>details report (network)</comment>
<translation>無効</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="908"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="910"/>
<source>Port %1</source>
<comment>details report (serial ports)</comment>
<translation>ãƒãƒ¼ãƒˆ %1</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="916"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="918"/>
<source>Disabled</source>
<comment>details report (serial ports)</comment>
<translation>無効</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="949"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="951"/>
<source>Port %1</source>
<comment>details report (parallel ports)</comment>
<translation>ãƒãƒ¼ãƒˆ %1</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="957"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="959"/>
<source>Disabled</source>
<comment>details report (parallel ports)</comment>
<translation>無効</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="994"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="996"/>
<source>Device Filters</source>
<comment>details report (USB)</comment>
<translation>デãƒã‚¤ã‚¹ フィルタ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="995"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="997"/>
<source>%1 (%2 active)</source>
<comment>details report (USB)</comment>
<translation>%1 (%2 アクティブ)</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="1000"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="1002"/>
<source>Disabled</source>
<comment>details report (USB)</comment>
<translation>無効</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="1029"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="1031"/>
<source>Shared Folders</source>
<comment>details report (shared folders)</comment>
<translation>共有フォルダ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="1034"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="1036"/>
<source>None</source>
<comment>details report (shared folders)</comment>
<translation>ãªã—</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="1058"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="1060"/>
<source>None</source>
<comment>details report (description)</comment>
<translation>ãªã—</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="471"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="473"/>
<source>The selected virtual machine is &lt;i&gt;inaccessible&lt;/i&gt;. Please inspect the error message shown below and press the &lt;b&gt;Refresh&lt;/b&gt; button if you want to repeat the accessibility check:</source>
<translation>é¸æŠžã—ãŸä»®æƒ³ãƒžã‚·ãƒ³ã«&lt;i&gt;アクセスã§ãã¾ã›ã‚“&lt;/i&gt;。アクセスå¯å¦ã‚’å†ç¢ºèªã™ã‚‹ã«ã¯ä»¥ä¸‹ã«ç¤ºã•ã‚ŒãŸã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’調査ã—ã¦&lt;b&gt;[最新ã®æƒ…å ±ã«æ›´æ–°]&lt;/b&gt;ボタンをクリックã—ã¦ãã ã•ã„:</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="486"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="488"/>
<source>General</source>
<comment>details report</comment>
<translation>一般</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="492"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="494"/>
<source>System</source>
<comment>details report</comment>
<translation>システム</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="498"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="500"/>
<source>Preview</source>
<comment>details report</comment>
<translation>プレビュー</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="504"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="506"/>
<source>Display</source>
<comment>details report</comment>
<translation>ディスプレイ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="510"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="512"/>
<source>Storage</source>
<comment>details report</comment>
<translation>ストレージ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="516"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="518"/>
<source>Audio</source>
<comment>details report</comment>
<translation>オーディオ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="522"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="524"/>
<source>Network</source>
<comment>details report</comment>
<translation>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="528"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="530"/>
<source>Serial Ports</source>
<comment>details report</comment>
<translation>シリアルãƒãƒ¼ãƒˆ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="535"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="537"/>
<source>Parallel Ports</source>
<comment>details report</comment>
<translation>パラレルãƒãƒ¼ãƒˆ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="542"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="544"/>
<source>USB</source>
<comment>details report</comment>
<translation>USB</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="548"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="550"/>
<source>Shared Folders</source>
<comment>details report</comment>
<translation>共有フォルダ</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="554"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="556"/>
<source>Description</source>
<comment>details report</comment>
<translation>説明</translation>
@@ -1426,7 +1426,7 @@
<context>
<name>UIDownloaderExtensionPack</name>
<message>
- <location filename="../src/net/UIDownloaderExtensionPack.cpp" line="135"/>
+ <location filename="../src/net/UIDownloaderExtensionPack.cpp" line="147"/>
<source>Select folder to save %1 to</source>
<translation type="unfinished"></translation>
</message>
@@ -2067,28 +2067,28 @@ p, li { white-space: pre-wrap; }
<translation>ãƒãƒ¼ã‚¸ãƒ§ãƒ³</translation>
</message>
<message>
- <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="206"/>
- <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="425"/>
+ <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="216"/>
+ <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="435"/>
<source>Extensions</source>
<translation>機能拡張</translation>
</message>
<message>
- <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="288"/>
+ <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="298"/>
<source>Add package</source>
<translation>パッケージを追加</translation>
</message>
<message>
- <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="289"/>
+ <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="299"/>
<source>Remove package</source>
<translation>パッケージを除去</translation>
</message>
<message>
- <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="332"/>
+ <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="342"/>
<source>Select an extension package file</source>
<translation>機能拡張パッケージをé¸æŠž</translation>
</message>
<message>
- <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="336"/>
+ <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="346"/>
<source>Extension package files (%1)</source>
<translation>機能拡張パッケージファイル(%1)</translation>
</message>
@@ -3290,7 +3290,7 @@ p, li { white-space: pre-wrap; }
<context>
<name>UIMachineSettingsDisplay</name>
<message>
- <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="335"/>
+ <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="343"/>
<source>you have assigned less than &lt;b&gt;%1&lt;/b&gt; of video memory which is the minimum amount required to switch the virtual machine to fullscreen or seamless mode.</source>
<translation>仮想マシンをフルスクリーンã¾ãŸã¯ã‚·ãƒ¼ãƒ ãƒ¬ã‚¹ãƒ¢ãƒ¼ãƒ‰ã«åˆ‡ã‚Šæ›ãˆã‚‹ãŸã‚ã«å¿…è¦ãªå€¤(%1)より少ãªã„ビデオメモリãŒä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚</translation>
</message>
@@ -3299,25 +3299,30 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">WDDMドライãƒã‚’使用ã™ã‚‹ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ã§3DアクセラレーションãŒæœ‰åŠ¹åŒ–ã•ã‚Œã¾ã—ãŸã€‚性能å‘上ã®ãŸã‚&lt;b&gt;%1&lt;/b&gt;以上ã®ãƒ“デオメモリを指定ã—ã¦ãã ã•ã„。</translation>
</message>
<message>
- <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="365"/>
+ <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="329"/>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="373"/>
<source>you have 3D Acceleration enabled for a operation system which uses the WDDM video driver. For maximal performance set the guest VRAM to at least &lt;b&gt;%1&lt;/b&gt;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="380"/>
+ <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="388"/>
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished">2D ビデオ アクセラレーションãŒæœ‰åŠ¹åŒ–ã•ã‚Œã¾ã—ãŸã€‚2D ビデオ アクセラレーションã¯Windowsゲストã§ã®ã¿ã‚µãƒãƒ¼ãƒˆã•ã‚Œã‚‹ãŸã‚ã€æœ¬æ©Ÿèƒ½ã¯ç„¡åŠ¹åŒ–ã•ã‚Œã¾ã™ã€‚</translation>
</message>
<message>
- <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="418"/>
- <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="419"/>
- <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="491"/>
+ <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="426"/>
+ <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="427"/>
+ <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="499"/>
<source>&lt;qt&gt;%1&amp;nbsp;MB&lt;/qt&gt;</source>
<translation>&lt;qt&gt;%1&amp;nbsp;MB&lt;/qt&gt;</translation>
</message>
<message>
- <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="420"/>
- <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="421"/>
+ <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="428"/>
+ <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="429"/>
<source>&lt;qt&gt;%1&lt;/qt&gt;</source>
<translation>&lt;qt&gt;%1&lt;/qt&gt;</translation>
</message>
@@ -3424,7 +3429,7 @@ p, li { white-space: pre-wrap; }
<translation>ゲストèªè¨¼ã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆå€¤ã‚’ミリ秒å˜ä½ã§æŒ‡å®šã—ã¾ã™ã€‚</translation>
</message>
<message>
- <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="348"/>
+ <location filename="../src/settings/machine/UIMachineSettingsDisplay.cpp" line="356"/>
<source>you have assigned less than &lt;b&gt;%1&lt;/b&gt; of video memory which is the minimum amount required for HD Video to be played efficiently.</source>
<translation>HD Videoを効率よãå†ç”Ÿã™ã‚‹ãŸã‚ã«å¿…è¦ãªå€¤(%1)より少ãªã„ビデオメモリãŒä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚</translation>
</message>
@@ -4720,31 +4725,31 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../src/settings/machine/UIMachineSettingsStorage.cpp" line="2293"/>
- <location filename="../src/wizards/newvm/UINewVMWzd.cpp" line="911"/>
+ <location filename="../src/wizards/newvm/UINewVMWzd.cpp" line="915"/>
<source>IDE Controller</source>
<translation>IDE コントローラ</translation>
</message>
<message>
<location filename="../src/settings/machine/UIMachineSettingsStorage.cpp" line="2298"/>
- <location filename="../src/wizards/newvm/UINewVMWzd.cpp" line="919"/>
+ <location filename="../src/wizards/newvm/UINewVMWzd.cpp" line="923"/>
<source>SATA Controller</source>
<translation>SATA コントローラ</translation>
</message>
<message>
<location filename="../src/settings/machine/UIMachineSettingsStorage.cpp" line="2303"/>
- <location filename="../src/wizards/newvm/UINewVMWzd.cpp" line="927"/>
+ <location filename="../src/wizards/newvm/UINewVMWzd.cpp" line="931"/>
<source>SCSI Controller</source>
<translation>SCSI コントローラ</translation>
</message>
<message>
<location filename="../src/settings/machine/UIMachineSettingsStorage.cpp" line="2308"/>
- <location filename="../src/wizards/newvm/UINewVMWzd.cpp" line="935"/>
+ <location filename="../src/wizards/newvm/UINewVMWzd.cpp" line="939"/>
<source>Floppy Controller</source>
<translation>フロッピー コントローラ</translation>
</message>
<message>
<location filename="../src/settings/machine/UIMachineSettingsStorage.cpp" line="2313"/>
- <location filename="../src/wizards/newvm/UINewVMWzd.cpp" line="943"/>
+ <location filename="../src/wizards/newvm/UINewVMWzd.cpp" line="947"/>
<source>SAS Controller</source>
<translation>SAS コントローラ</translation>
</message>
@@ -7352,12 +7357,12 @@ p, li { white-space: pre-wrap; }
<context>
<name>UIMiniProgressWidgetExtension</name>
<message>
- <location filename="../src/net/UIDownloaderExtensionPack.cpp" line="45"/>
+ <location filename="../src/net/UIDownloaderExtensionPack.cpp" line="46"/>
<source>Cancel the &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; download</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/net/UIDownloaderExtensionPack.cpp" line="46"/>
+ <location filename="../src/net/UIDownloaderExtensionPack.cpp" line="47"/>
<source>Downloading the &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; from &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;...&lt;/nobr&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -8809,12 +8814,12 @@ step and attach hard disks later using the VM Settings dialog.&lt;/p&gt;</source
<context>
<name>UIVMDesktop</name>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="1431"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="1433"/>
<source>&amp;Details</source>
<translation>詳細(&amp;D)</translation>
</message>
<message>
- <location filename="../src/selector/UIVMDesktop.cpp" line="1455"/>
+ <location filename="../src/selector/UIVMDesktop.cpp" line="1457"/>
<source>&amp;Snapshots</source>
<translation>スナップショット(&amp;S)</translation>
</message>
@@ -10300,7 +10305,7 @@ Version %1</source>
<translation>オーディオ</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="653"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="659"/>
<location filename="../src/globals/VBoxGlobal.cpp" line="1884"/>
<source>Adapter %1</source>
<comment>details report (network)</comment>
@@ -10791,7 +10796,7 @@ Version %1</source>
<translation type="obsolete">カスタム ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="492"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="498"/>
<location filename="../src/globals/VBoxGlobal.cpp" line="1682"/>
<location filename="../src/runtime/UIIndicatorsPool.cpp" line="577"/>
<source>VT-x/AMD-V</source>
@@ -10805,7 +10810,7 @@ Version %1</source>
<translation>PAE/NX</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="464"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="467"/>
<location filename="../src/globals/VBoxGlobal.cpp" line="1650"/>
<location filename="../src/runtime/UIIndicatorsPool.cpp" line="560"/>
<source>Enabled</source>
@@ -10813,7 +10818,7 @@ Version %1</source>
<translation>有効</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="465"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="468"/>
<location filename="../src/globals/VBoxGlobal.cpp" line="1651"/>
<location filename="../src/runtime/UIIndicatorsPool.cpp" line="561"/>
<source>Disabled</source>
@@ -10821,7 +10826,7 @@ Version %1</source>
<translation>無効</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="496"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="502"/>
<location filename="../src/globals/VBoxGlobal.cpp" line="1738"/>
<source>Remote Desktop Server Port</source>
<comment>details report (VRDE Server)</comment>
@@ -11149,21 +11154,21 @@ Version %1</source>
<translation>差分</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="493"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="499"/>
<location filename="../src/globals/VBoxGlobal.cpp" line="1683"/>
<source>Nested Paging</source>
<comment>details report</comment>
<translation>ãƒã‚¹ãƒ†ãƒƒãƒ‰ãƒšãƒ¼ã‚¸ãƒ³ã‚°</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="467"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="470"/>
<location filename="../src/globals/VBoxGlobal.cpp" line="1655"/>
<source>Enabled</source>
<comment>details report (Nested Paging)</comment>
<translation>有効</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="468"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="471"/>
<location filename="../src/globals/VBoxGlobal.cpp" line="1656"/>
<source>Disabled</source>
<comment>details report (Nested Paging)</comment>
@@ -11801,42 +11806,42 @@ Version %1</source>
<translation>ã“ã®ãƒ™ãƒ¼ã‚¹ ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã¯ä»¥ä¸‹ã®å·®åˆ†ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’使用ã—ã¦é–“接的ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™:</translation>
</message>
<message numerus="yes">
- <location filename="../src/globals/VBoxGlobal.h" line="222"/>
+ <location filename="../src/globals/VBoxGlobal.h" line="225"/>
<source>%n year(s)</source>
<translation>
<numerusform>%n å¹´</numerusform>
</translation>
</message>
<message numerus="yes">
- <location filename="../src/globals/VBoxGlobal.h" line="227"/>
+ <location filename="../src/globals/VBoxGlobal.h" line="230"/>
<source>%n month(s)</source>
<translation>
<numerusform>%n 月</numerusform>
</translation>
</message>
<message numerus="yes">
- <location filename="../src/globals/VBoxGlobal.h" line="232"/>
+ <location filename="../src/globals/VBoxGlobal.h" line="235"/>
<source>%n day(s)</source>
<translation>
<numerusform>%n æ—¥</numerusform>
</translation>
</message>
<message numerus="yes">
- <location filename="../src/globals/VBoxGlobal.h" line="237"/>
+ <location filename="../src/globals/VBoxGlobal.h" line="240"/>
<source>%n hour(s)</source>
<translation>
<numerusform>%n 時間</numerusform>
</translation>
</message>
<message numerus="yes">
- <location filename="../src/globals/VBoxGlobal.h" line="242"/>
+ <location filename="../src/globals/VBoxGlobal.h" line="245"/>
<source>%n minute(s)</source>
<translation>
<numerusform>%n 分</numerusform>
</translation>
</message>
<message numerus="yes">
- <location filename="../src/globals/VBoxGlobal.h" line="247"/>
+ <location filename="../src/globals/VBoxGlobal.h" line="250"/>
<source>%n second(s)</source>
<translation>
<numerusform>%n 秒</numerusform>
@@ -13828,12 +13833,12 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ &lt;tt&gt;net use x:¥¥vboxs
<context>
<name>VBoxSwitchMenu</name>
<message>
- <location filename="../src/globals/VBoxGlobal.cpp" line="5526"/>
+ <location filename="../src/globals/VBoxGlobal.cpp" line="5529"/>
<source>Disable</source>
<translation>無効</translation>
</message>
<message>
- <location filename="../src/globals/VBoxGlobal.cpp" line="5526"/>
+ <location filename="../src/globals/VBoxGlobal.cpp" line="5529"/>
<source>Enable</source>
<translation>有効</translation>
</message>
@@ -14051,13 +14056,13 @@ value.&lt;/qt&gt;</source>
<context>
<name>VBoxUSBMenu</name>
<message>
- <location filename="../src/globals/VBoxGlobal.cpp" line="5456"/>
+ <location filename="../src/globals/VBoxGlobal.cpp" line="5459"/>
<source>&lt;no devices available&gt;</source>
<comment>USB devices</comment>
<translation>&lt;利用ã§ãるデãƒã‚¤ã‚¹ãŒã‚ã‚Šã¾ã›ã‚“&gt;</translation>
</message>
<message>
- <location filename="../src/globals/VBoxGlobal.cpp" line="5458"/>
+ <location filename="../src/globals/VBoxGlobal.cpp" line="5461"/>
<source>No supported devices connected to the host PC</source>
<comment>USB device tooltip</comment>
<translation>ホストマシンã«æŽ¥ç¶šã•ã‚ŒãŸãƒ‡ãƒã‚¤ã‚¹ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“</translation>
@@ -14152,18 +14157,18 @@ value.&lt;/qt&gt;</source>
<translation>データå—ä¿¡</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="479"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="485"/>
<source>Not Available</source>
<comment>details report (VRDE server port)</comment>
<translation>利用ä¸å¯</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="490"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="496"/>
<source>Runtime Attributes</source>
<translation>ランタイム属性</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="491"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="497"/>
<source>Screen Resolution</source>
<translation>ç”»é¢è§£åƒåº¦</translation>
</message>
@@ -14181,24 +14186,24 @@ value.&lt;/qt&gt;</source>
<translation type="obsolete">ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %1.%2</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="471"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="476"/>
<source>Not Detected</source>
<comment>guest additions</comment>
<translation>未検出</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="474"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="479"/>
<source>Not Detected</source>
<comment>guest os type</comment>
<translation>未検出</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="494"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="500"/>
<source>Guest Additions</source>
<translation>Guest Additions</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="495"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="501"/>
<source>Guest OS Type</source>
<translation>ゲストOSã®ã‚¿ã‚¤ãƒ—</translation>
</message>
@@ -14211,7 +14216,7 @@ value.&lt;/qt&gt;</source>
<translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãªã—</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="602"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="608"/>
<source>No Network Adapters</source>
<translation>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタãªã—</translation>
</message>
@@ -14253,17 +14258,17 @@ value.&lt;/qt&gt;</source>
<translation type="obsolete">利用ä¸å¯</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="504"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="510"/>
<source>Storage Statistics</source>
<translation>ストレージ 統計</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="575"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="581"/>
<source>No Storage Devices</source>
<translation>ストレージ デãƒã‚¤ã‚¹ ãªã—</translation>
</message>
<message>
- <location filename="../src/VBoxVMInformationDlg.cpp" line="586"/>
+ <location filename="../src/VBoxVMInformationDlg.cpp" line="592"/>
<source>Network Statistics</source>
<translation>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ 統計</translation>
</message>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts
index 23cca3396..9c3e3c41b 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts
@@ -2818,6 +2818,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished">អ្នកបាន​បើក​បង្កើនល្បឿន​​វី​ដáŸáž¢áž¼â€‹â€‹áž‘្វáŸâ€‹â€‹áž˜áž¶ážáŸ’រ​ ។ បង្កើនល្បឿន​វីដáŸáž¢áž¼â€‹â€‹áž‘្វáŸâ€‹áž˜áž¶ážáŸ’រ​​ážáŸ’រូវ​បាន​គាំ​ទ្រ​សម្រាប់​​​ម៉ាស៊ីន​វីនដូ​ážáŸ‚​ប៉ុ​ណ្ណោះ​ លក្ážážŽáŸˆâ€‹áž–ិសáŸážŸáž“áŸáŸ‡â€‹â€‹áž“ឹង​​មិន​ážáŸ’រូវ​បាន​អនុញ្ញាážâ€‹ ។​</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts
index 7ff4afde2..c34669a0a 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts
@@ -2865,6 +2865,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>2ì°¨ì› ê°€ì†ì„ ì„ íƒí•˜ì˜€ìŠµë‹ˆë‹¤. 2ì°¨ì› ë¹„ë””ì˜¤ ê°€ì†ì€ Windows 게스트만 지ì›í•˜ë¯€ë¡œ ì´ ê¸°ëŠ¥ì€ ë¹„í™œì„±í™”ë  ê²ƒìž…ë‹ˆë‹¤.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts
index 7c2502118..ca4f8ef77 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts
@@ -2594,6 +2594,10 @@
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>įgalinote 2D vaizdo spartinimÄ…. Kadangi 2D vaizdo spartinimas palaikomas tik Windows sveÄiui, pastaroji savybÄ— bus uždrausta.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts
index 2be7c8a1e..596db0d98 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts
@@ -2883,6 +2883,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished">U hebt 2D video versnelling geactiveerd. Omdat 2D video versnelling alleen door Windows wordt ondersteund, wordt deze mogelijkheid gedeactiveerd.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts
index d3fec9d85..982e8fea2 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts
@@ -2987,6 +2987,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished">włączona jest akceleracja wideo 2D. Ponieważ akceleracja wideo 2D wspierana jest jedynie dla systemów gospodarza typu Windows, funkcja ta zostanie wyłączona.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts
index 72f0d43af..4b8f8e17c 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts
@@ -2628,6 +2628,10 @@
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished">tem a Aceleração 2D activada. Como a Acceleraão Vídeo 2D é suportada apenas para convidados Windows, esta opção será desactivada.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts
index a31c78114..2d2efadbc 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts
@@ -149,7 +149,7 @@
</message>
<message>
<source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root. If it is available in your distribution, you should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.</source>
- <translation type="unfinished"></translation>
+ <translation>O driver de kernel do VirtualBox (vboxdrv) não está carregado ou existe um problema de permissão no dispositivo /dev/vboxdrv. Reinstale o módulo de kernel executando o comando&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;como root. Se a sua distribuição dispuser do serviço DKMS, instale-o antes. O serviço DKMS detecta mudanças no kernel do Linux e recompila o módulo de kernel &apos;vboxdrv&apos; se necessário.</translation>
</message>
</context>
<context>
@@ -185,11 +185,11 @@
<name>QIHttp</name>
<message>
<source>Connection timed out</source>
- <translation>Tempo esgotado para a conexão</translation>
+ <translation type="obsolete">Tempo esgotado para a conexão</translation>
</message>
<message>
<source>Could not locate the file on the server (response: %1)</source>
- <translation>Não foi possível localizar o arquivo no servidor (resposta: %1)</translation>
+ <translation type="obsolete">Não foi possível localizar o arquivo no servidor (resposta: %1)</translation>
</message>
</context>
<context>
@@ -344,7 +344,7 @@
</message>
<message>
<source>&amp;Insert Ctrl-Alt-Backspace</source>
- <translation>&amp;Inserir Ctrl-Alt-Backspace</translation>
+ <translation type="obsolete">&amp;Inserir Ctrl-Alt-Backspace</translation>
</message>
<message>
<source>Send the Ctrl-Alt-Backspace sequence to the virtual machine</source>
@@ -352,7 +352,7 @@
</message>
<message>
<source>Take &amp;Snapshot...</source>
- <translation>Criar &amp;Snapshot...</translation>
+ <translation type="obsolete">Criar &amp;Snapshot...</translation>
</message>
<message>
<source>Take a snapshot of the virtual machine</source>
@@ -599,6 +599,209 @@
<source>Session I&amp;nformation...</source>
<translation>&amp;Informações sobre a sessão...</translation>
</message>
+ <message>
+ <source>&amp;File</source>
+ <comment>Mac OS X version</comment>
+ <translation>Arquivo (&amp;F)</translation>
+ </message>
+ <message>
+ <source>&amp;File</source>
+ <comment>Non Mac OS X version</comment>
+ <translation>Arquivo (&amp;F)</translation>
+ </message>
+ <message>
+ <source>&amp;Virtual Media Manager...</source>
+ <translation>Gerenciador de &amp;Discos Virtuais...</translation>
+ </message>
+ <message>
+ <source>Display the Virtual Media Manager dialog</source>
+ <translation>Exibir o Gerenciador de Mídias Virtuais</translation>
+ </message>
+ <message>
+ <source>&amp;Import Appliance...</source>
+ <translation>&amp;Importar Appliance...</translation>
+ </message>
+ <message>
+ <source>Import an appliance into VirtualBox</source>
+ <translation>Importa um &lt;i&gt;appliance&lt;/i&gt; no VirtualBox</translation>
+ </message>
+ <message>
+ <source>&amp;Export Appliance...</source>
+ <translation>&amp;Exportar Appliance...</translation>
+ </message>
+ <message>
+ <source>Export one or more VirtualBox virtual machines as an appliance</source>
+ <translation>Exporta um &lt;i&gt;appliance&lt;/i&gt; a partir de uma ou mais VMs do VirtualBox</translation>
+ </message>
+ <message>
+ <source>&amp;Preferences...</source>
+ <comment>global settings</comment>
+ <translation>&amp;Preferências...</translation>
+ </message>
+ <message>
+ <source>Display the global settings dialog</source>
+ <translation>Mostrar o diálogo de configurações globais</translation>
+ </message>
+ <message>
+ <source>E&amp;xit</source>
+ <translation>Sair (&amp;x)</translation>
+ </message>
+ <message>
+ <source>Close application</source>
+ <translation>Fechar a aplicação</translation>
+ </message>
+ <message>
+ <source>&amp;New...</source>
+ <translation>&amp;Novo...</translation>
+ </message>
+ <message>
+ <source>Create a new virtual machine</source>
+ <translation>Criar uma nova máquina virtual</translation>
+ </message>
+ <message>
+ <source>&amp;Add...</source>
+ <translation>&amp;Acrescentar...</translation>
+ </message>
+ <message>
+ <source>Add an existing virtual machine</source>
+ <translation>Acrescentar uma máquina virtual existente</translation>
+ </message>
+ <message>
+ <source>Cl&amp;one...</source>
+ <translation>Cl&amp;onar...</translation>
+ </message>
+ <message>
+ <source>Clone the selected virtual machine</source>
+ <translation>Clona a máquina virtual selecionada</translation>
+ </message>
+ <message>
+ <source>&amp;Remove</source>
+ <translation>&amp;Remover</translation>
+ </message>
+ <message>
+ <source>Remove the selected virtual machine</source>
+ <translation>Apaga a máquina virtual selecionada</translation>
+ </message>
+ <message>
+ <source>S&amp;tart</source>
+ <translation>Iniciar (&amp;T)</translation>
+ </message>
+ <message>
+ <source>Start the selected virtual machine</source>
+ <translation>Iniciar a máquina virtual selecionada</translation>
+ </message>
+ <message>
+ <source>S&amp;how</source>
+ <translation>Mostrar (&amp;h)</translation>
+ </message>
+ <message>
+ <source>Switch to the window of the selected virtual machine</source>
+ <translation>Alterna para a janela da máquina virtual selecionada</translation>
+ </message>
+ <message>
+ <source>Discard</source>
+ <translation>Descartar</translation>
+ </message>
+ <message>
+ <source>D&amp;iscard Saved State</source>
+ <translation>Descartar o Estado Salvo (&amp;I)</translation>
+ </message>
+ <message>
+ <source>Discard the saved state of the selected virtual machine</source>
+ <translation>Descartar o estado salvo da máquina virtual selecionada</translation>
+ </message>
+ <message>
+ <source>Re&amp;fresh</source>
+ <translation>Atualizar (&amp;F)</translation>
+ </message>
+ <message>
+ <source>Refresh the accessibility state of the selected virtual machine</source>
+ <translation>Atualizar o estado de acessibilidade da máquina virtual selecionada</translation>
+ </message>
+ <message>
+ <source>Show &amp;Log...</source>
+ <translation>Exibir &amp;Log...</translation>
+ </message>
+ <message>
+ <source>Show the log files of the selected virtual machine</source>
+ <translation>Exibe os arquivos de log para a máquina virtual selecionada</translation>
+ </message>
+ <message>
+ <source>Show in Finder</source>
+ <translation>Exibir no Finder</translation>
+ </message>
+ <message>
+ <source>Show the VirtualBox Machine Definition file in Finder.</source>
+ <translation>Exibe o arquivo de definição da máquina do VirtualBox no Finder.</translation>
+ </message>
+ <message>
+ <source>Show in Explorer</source>
+ <translation>Exibir no Explorer</translation>
+ </message>
+ <message>
+ <source>Show the VirtualBox Machine Definition file in Explorer.</source>
+ <translation>Exibe o arquivo de definição da máquina do VirtualBox no Explorer.</translation>
+ </message>
+ <message>
+ <source>Show in File Manager</source>
+ <translation>Exibir no Gerenciador de Arquivos</translation>
+ </message>
+ <message>
+ <source>Show the VirtualBox Machine Definition file in the File Manager</source>
+ <translation>Exibe o arquivo de definição da máquina do VirtualBox no Gerenciador de Arquivos</translation>
+ </message>
+ <message>
+ <source>Create Alias on Desktop</source>
+ <translation>Criar Alias no Desktop</translation>
+ </message>
+ <message>
+ <source>Creates an Alias file to the VirtualBox Machine Definition file on your Desktop.</source>
+ <translation>Cria um alias apontando para o arquivo de definição de máquina virtual do VirtualBox no seu Desktop.</translation>
+ </message>
+ <message>
+ <source>Create Shortcut on Desktop</source>
+ <translation>Criar Atalho na Ãrea de Trabalho</translation>
+ </message>
+ <message>
+ <source>Creates an Shortcut file to the VirtualBox Machine Definition file on your Desktop.</source>
+ <translation>Cria um atalho apontando para o arquivo de definição de máquina virtual do VirtualBox em sua Ãrea de Trabalho.</translation>
+ </message>
+ <message>
+ <source>Take Sn&amp;apshot...</source>
+ <translation>Criar &amp;Snapshot...</translation>
+ </message>
+ <message>
+ <source>Take Screensh&amp;ot...</source>
+ <translation>Capturar Tela (&amp;O)...</translation>
+ </message>
+ <message>
+ <source>Take a screenshot of the virtual machine</source>
+ <translation>Captura uma imagem da tela exibida na máquina virtual</translation>
+ </message>
+ <message>
+ <source>Ins&amp;ert Ctrl-Alt-Backspace</source>
+ <translation>&amp;Enviar Ctrl-Alt-Backspace</translation>
+ </message>
+ <message>
+ <source>Sort List</source>
+ <translation>Organizar Lista</translation>
+ </message>
+ <message>
+ <source>Sort the VM list alphabetically (Shift for descending order)</source>
+ <translation>Organiza a lista de VMs em ordem alfabética (segure Shift para ordem descendente)</translation>
+ </message>
+ <message>
+ <source>&amp;Close</source>
+ <translation>Fe&amp;char</translation>
+ </message>
+ <message>
+ <source>Po&amp;wer Off</source>
+ <translation>Desligar (&amp;W)</translation>
+ </message>
+ <message>
+ <source>Power off the virtual machine</source>
+ <translation>Desliga a máquina virtual</translation>
+ </message>
</context>
<context>
<name>UIApplianceEditorWidget</name>
@@ -890,7 +1093,7 @@
</message>
</context>
<context>
- <name>UIDetailsPagePrivate</name>
+ <name>UIDetailsBlock</name>
<message>
<source>Name</source>
<comment>details report</comment>
@@ -902,6 +1105,11 @@
<translation>Tipo de Sistema</translation>
</message>
<message>
+ <source>Information inaccessible</source>
+ <comment>details report</comment>
+ <translation>Informação indisponível</translation>
+ </message>
+ <message>
<source>Base Memory</source>
<comment>details report</comment>
<translation>Memória Principal</translation>
@@ -922,6 +1130,16 @@
<translation>&lt;nobr&gt;%1&lt;/nobr&gt;</translation>
</message>
<message>
+ <source>Execution Cap</source>
+ <comment>details report</comment>
+ <translation>Restrição de execução</translation>
+ </message>
+ <message>
+ <source>&lt;nobr&gt;%1%&lt;/nobr&gt;</source>
+ <comment>details report</comment>
+ <translation>&lt;nobr&gt;%1%&lt;/nobr&gt;</translation>
+ </message>
+ <message>
<source>Boot Order</source>
<comment>details report</comment>
<translation>Ordem de Boot</translation>
@@ -984,7 +1202,7 @@
<message>
<source>Remote Desktop Server Port</source>
<comment>details report (VRDE Server)</comment>
- <translation>Porta para Desktop Remoto</translation>
+ <translation>Porta para Servidor de Desktop Remoto</translation>
</message>
<message>
<source>Remote Desktop Server</source>
@@ -1036,9 +1254,14 @@
<translation>Placa de rede exclusiva de hospedeiro (host-only), &apos;%1&apos;</translation>
</message>
<message>
- <source>VDE network, &apos;%1&apos;</source>
+ <source>Generic driver, &apos;%1&apos;</source>
<comment>details report (network)</comment>
- <translation type="obsolete">Rede VDE, &apos;%1&apos;</translation>
+ <translation>Driver genérico, &apos;%1&apos;</translation>
+ </message>
+ <message>
+ <source>Generic driver, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</source>
+ <comment>details report (network)</comment>
+ <translation>Driver genérico, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</translation>
</message>
<message>
<source>Adapter %1</source>
@@ -1068,7 +1291,7 @@
<message>
<source>Disabled</source>
<comment>details report (parallel ports)</comment>
- <translation>Desabilitadas</translation>
+ <translation>Desabilitada</translation>
</message>
<message>
<source>Device Filters</source>
@@ -1100,6 +1323,218 @@
<comment>details report (description)</comment>
<translation>Nenhum</translation>
</message>
+</context>
+<context>
+ <name>UIDetailsPagePrivate</name>
+ <message>
+ <source>Name</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Nome</translation>
+ </message>
+ <message>
+ <source>OS Type</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Tipo de Sistema</translation>
+ </message>
+ <message>
+ <source>Base Memory</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Memória Principal</translation>
+ </message>
+ <message>
+ <source>&lt;nobr&gt;%1 MB&lt;/nobr&gt;</source>
+ <comment>details report</comment>
+ <translation type="obsolete">&lt;nobr&gt;%1 MB&lt;/nobr&gt;</translation>
+ </message>
+ <message>
+ <source>Processors</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Processadores</translation>
+ </message>
+ <message>
+ <source>&lt;nobr&gt;%1&lt;/nobr&gt;</source>
+ <comment>details report</comment>
+ <translation type="obsolete">&lt;nobr&gt;%1&lt;/nobr&gt;</translation>
+ </message>
+ <message>
+ <source>Boot Order</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Ordem de Boot</translation>
+ </message>
+ <message>
+ <source>ACPI</source>
+ <comment>details report</comment>
+ <translation type="obsolete">ACPI</translation>
+ </message>
+ <message>
+ <source>IO APIC</source>
+ <comment>details report</comment>
+ <translation type="obsolete">IO APIC</translation>
+ </message>
+ <message>
+ <source>BIOS</source>
+ <comment>details report</comment>
+ <translation type="obsolete">BIOS</translation>
+ </message>
+ <message>
+ <source>VT-x/AMD-V</source>
+ <comment>details report</comment>
+ <translation type="obsolete">VT-x/AMD-V</translation>
+ </message>
+ <message>
+ <source>Nested Paging</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Paginação Aninhada</translation>
+ </message>
+ <message>
+ <source>PAE/NX</source>
+ <comment>details report</comment>
+ <translation type="obsolete">PAE/NX</translation>
+ </message>
+ <message>
+ <source>Acceleration</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Aceleração</translation>
+ </message>
+ <message>
+ <source>Video Memory</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Memória de Vídeo</translation>
+ </message>
+ <message>
+ <source>Screens</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Telas</translation>
+ </message>
+ <message>
+ <source>2D Video</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Vídeo 2D</translation>
+ </message>
+ <message>
+ <source>3D</source>
+ <comment>details report</comment>
+ <translation type="obsolete">3D</translation>
+ </message>
+ <message>
+ <source>Remote Desktop Server Port</source>
+ <comment>details report (VRDE Server)</comment>
+ <translation type="obsolete">Porta para Desktop Remoto</translation>
+ </message>
+ <message>
+ <source>Remote Desktop Server</source>
+ <comment>details report (VRDE Server)</comment>
+ <translation type="obsolete">Servidor de Desktop Remoto</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (VRDE Server)</comment>
+ <translation type="obsolete">Desabilitado</translation>
+ </message>
+ <message>
+ <source>(CD/DVD)</source>
+ <translation type="obsolete">(CD/DVD)</translation>
+ </message>
+ <message>
+ <source>Not Attached</source>
+ <comment>details report (Storage)</comment>
+ <translation type="obsolete">Não Conectado</translation>
+ </message>
+ <message>
+ <source>Host Driver</source>
+ <comment>details report (audio)</comment>
+ <translation type="obsolete">Driver do Hospedeiro </translation>
+ </message>
+ <message>
+ <source>Controller</source>
+ <comment>details report (audio)</comment>
+ <translation type="obsolete">Controladora</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (audio)</comment>
+ <translation type="obsolete">Desabilitado</translation>
+ </message>
+ <message>
+ <source>Bridged adapter, %1</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Placa em modo Bridge, %1</translation>
+ </message>
+ <message>
+ <source>Internal network, &apos;%1&apos;</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Rede interna, &apos;%1&apos;</translation>
+ </message>
+ <message>
+ <source>Host-only adapter, &apos;%1&apos;</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Placa de rede exclusiva de hospedeiro (host-only), &apos;%1&apos;</translation>
+ </message>
+ <message>
+ <source>VDE network, &apos;%1&apos;</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Rede VDE, &apos;%1&apos;</translation>
+ </message>
+ <message>
+ <source>Adapter %1</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Adaptador %1</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Desabilitada</translation>
+ </message>
+ <message>
+ <source>Port %1</source>
+ <comment>details report (serial ports)</comment>
+ <translation type="obsolete">Porta %1</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (serial ports)</comment>
+ <translation type="obsolete">Desabilitadas</translation>
+ </message>
+ <message>
+ <source>Port %1</source>
+ <comment>details report (parallel ports)</comment>
+ <translation type="obsolete">Porta %1</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (parallel ports)</comment>
+ <translation type="obsolete">Desabilitadas</translation>
+ </message>
+ <message>
+ <source>Device Filters</source>
+ <comment>details report (USB)</comment>
+ <translation type="obsolete">Filtros de Dispositivo</translation>
+ </message>
+ <message>
+ <source>%1 (%2 active)</source>
+ <comment>details report (USB)</comment>
+ <translation type="obsolete">%1 (%2 ativos)</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (USB)</comment>
+ <translation type="obsolete">Desabilitado</translation>
+ </message>
+ <message>
+ <source>Shared Folders</source>
+ <comment>details report (shared folders)</comment>
+ <translation type="obsolete">Pastas Compartilhadas</translation>
+ </message>
+ <message>
+ <source>None</source>
+ <comment>details report (shared folders)</comment>
+ <translation type="obsolete">Nenhum</translation>
+ </message>
+ <message>
+ <source>None</source>
+ <comment>details report (description)</comment>
+ <translation type="obsolete">Nenhum</translation>
+ </message>
<message>
<source>The selected virtual machine is &lt;i&gt;inaccessible&lt;/i&gt;. Please inspect the error message shown below and press the &lt;b&gt;Refresh&lt;/b&gt; button if you want to repeat the accessibility check:</source>
<translation>A máquina virtual selecionada está &lt;i&gt;inacessível&lt;/i&gt;. Por favor verifique a mensagem de erro mostrada abaixo e pressione o botão &lt;b&gt;Atualizar&lt;/b&gt; se desejar repetir o teste de acessibilidade:</translation>
@@ -1167,22 +1602,22 @@
<message>
<source>Execution Cap</source>
<comment>details report</comment>
- <translation>Restrição de execução</translation>
+ <translation type="obsolete">Restrição de execução</translation>
</message>
<message>
<source>&lt;nobr&gt;%1%&lt;/nobr&gt;</source>
<comment>details report</comment>
- <translation>&lt;nobr&gt;%1%&lt;/nobr&gt;</translation>
+ <translation type="obsolete">&lt;nobr&gt;%1%&lt;/nobr&gt;</translation>
</message>
<message>
<source>Generic driver, &apos;%1&apos;</source>
<comment>details report (network)</comment>
- <translation>Driver genérico, &apos;%1&apos;</translation>
+ <translation type="obsolete">Driver genérico, &apos;%1&apos;</translation>
</message>
<message>
<source>Generic driver, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</source>
<comment>details report (network)</comment>
- <translation>Driver genérico, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</translation>
+ <translation type="obsolete">Driver genérico, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</translation>
</message>
</context>
<context>
@@ -1235,6 +1670,14 @@
<source>The download process has been canceled by the user.</source>
<translation type="obsolete">O processo de download foi cancelado pelo usuário.</translation>
</message>
+ <message>
+ <source>Looking for %1...</source>
+ <translation>Procurando por %1...</translation>
+ </message>
+ <message>
+ <source>Downloading %1...</source>
+ <translation>Baixando %1...</translation>
+ </message>
</context>
<context>
<name>UIDownloaderAdditions</name>
@@ -1258,6 +1701,10 @@
<source>Select folder to save Guest Additions image to</source>
<translation>Selecione a pasta onde a imagem dos Adicionais para Convidado será gravada</translation>
</message>
+ <message>
+ <source>VirtualBox Guest Additions</source>
+ <translation>Adicionais para Convidado do VirtualBox</translation>
+ </message>
</context>
<context>
<name>UIDownloaderExtensionPack</name>
@@ -1265,6 +1712,10 @@
<source>Select folder to save %1 to</source>
<translation>Selecione uma pasta para salvar %1</translation>
</message>
+ <message>
+ <source>VirtualBox Extension Pack</source>
+ <translation>Pacote de Extensões do VirtualBox</translation>
+ </message>
</context>
<context>
<name>UIDownloaderUserManual</name>
@@ -1272,6 +1723,10 @@
<source>Select folder to save User Manual to</source>
<translation>Selecione a pasta onde o Manual do Usuário será gravado</translation>
</message>
+ <message>
+ <source>VirtualBox User Manual</source>
+ <translation>Manual do Usuário do VirtualBox</translation>
+ </message>
</context>
<context>
<name>UIExportApplianceWzd</name>
@@ -1851,6 +2306,56 @@ p, li { white-space: pre-wrap; }
</message>
</context>
<context>
+ <name>UIGlobalSettingsDisplay</name>
+ <message>
+ <source>Maximum Guest Screen &amp;Size:</source>
+ <translation>Tamanho Máximo da Tela do &amp;Sistema Convidado:</translation>
+ </message>
+ <message>
+ <source>&amp;Width:</source>
+ <translation>Largura (&amp;W):</translation>
+ </message>
+ <message>
+ <source>Specifies the maximum width which we would like the guest to use.</source>
+ <translation>Especifica a largura máxima que a tela do sistema convidado poderá ter.</translation>
+ </message>
+ <message>
+ <source>&amp;Height:</source>
+ <translation>Altura (&amp;H):</translation>
+ </message>
+ <message>
+ <source>Specifies the maximum height which we would like the guest to use.</source>
+ <translation>Especifica a altura máxima que a tela do sistema convidado poderá ter.</translation>
+ </message>
+ <message>
+ <source>Automatic</source>
+ <comment>Maximum Guest Screen Size</comment>
+ <translation>Automático</translation>
+ </message>
+ <message>
+ <source>Suggest a reasonable maximum screen size to the guest. The guest will only see this suggestion when guest additions are installed.</source>
+ <translation>Sugerir um tamanho máximo de tela razoável para o sistema convidado. O sistema convidado somente saberá desta informação se os adicionais para convidado estiverem instalados.</translation>
+ </message>
+ <message>
+ <source>None</source>
+ <comment>Maximum Guest Screen Size</comment>
+ <translation>Nenhum</translation>
+ </message>
+ <message>
+ <source>Do not attempt to limit the size of the guest screen.</source>
+ <translation>Não tentar limitar o tamanho da tela do sistema convidado.</translation>
+ </message>
+ <message>
+ <source>Hint</source>
+ <comment>Maximum Guest Screen Size</comment>
+ <translation>Sugerir</translation>
+ </message>
+ <message>
+ <source>Suggest a maximum screen size to the guest. The guest will only see this suggestion when guest additions are installed.</source>
+ <translation>Sugere um tamanho máximo para a tela do sistema convidado. O sistema convidado irá ver esta informação quando os adicionais para convidado estiverem instalados.</translation>
+ </message>
+</context>
+<context>
<name>UIGlobalSettingsExtension</name>
<message>
<source>&amp;Extension Packages:</source>
@@ -2882,6 +3387,10 @@ p, li { white-space: pre-wrap; }
<source>No supported devices connected to the host PC</source>
<translation>Nenhum dispositivo suportado está conectado ao PC hospedeiro</translation>
</message>
+ <message>
+ <source>Select a filename for the screenshot ...</source>
+ <translation>Selecione um nome para a imagem capturada...</translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsAudio</name>
@@ -3032,6 +3541,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>você possui a Aceleração de Vídeo 2D habilitada. Como a Aceleração de Vídeo 2D somente é suportada em sistemas convidados Windows, este recurso será desabilitado.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation>você possui a Aceleração 3D habilitada. No entanto, como a aceleração 3D não está funcional no sistema hospedeiro, você não poderá iniciar esta VM.</translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
@@ -5213,7 +5726,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&lt;p&gt;Failed to download the VirtualBox Guest Additions CD image from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</source>
- <translation>&lt;p&gt;Falha ao tentar baixar a imagem de CD dos Adicionais para Convidado do VirtualBox a partir de &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Falha ao tentar baixar a imagem de CD dos Adicionais para Convidado do VirtualBox a partir de &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Are you sure you want to download the VirtualBox Guest Additions CD image from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; (size %3 bytes)?&lt;/p&gt;</source>
@@ -5615,7 +6128,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&lt;p&gt;Unable to obtain the new version information due to the following error:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</source>
- <translation>&lt;p&gt;Não foi possível obter informações de versão devido ao seguinte erro:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Não foi possível obter informações de versão devido ao seguinte erro:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;One or more virtual hard disks, CD/DVD or floppy media are not currently accessible. As a result, you will not be able to operate virtual machines that use these media until they become accessible later.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;Check&lt;/b&gt; to open the Virtual Media Manager window and see what media are inaccessible, or press &lt;b&gt;Ignore&lt;/b&gt; to ignore this message.&lt;/p&gt;</source>
@@ -5978,7 +6491,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&lt;p&gt;Failed to download the VirtualBox User Manual from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</source>
- <translation>&lt;p&gt;Falha ao tentar baixar o Manual do Usuário do VirtualBox a partir de &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Falha ao tentar baixar o Manual do Usuário do VirtualBox a partir de &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;The VirtualBox User Manual has been successfully downloaded from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; and saved locally as &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;</source>
@@ -5998,11 +6511,11 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&lt;p&gt;You are about to remove the virtual machine &lt;b&gt;%1&lt;/b&gt; from the machine list.&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well?&lt;/p&gt;</source>
- <translation>&lt;p&gt;Você está prestes a remover a máquina virtual &lt;b&gt;%1&lt;/b&gt; da lista de máquinas conhecidas.&lt;/p&gt;&lt;p&gt;Gostaria de remover também os arquivos físicos que contém esta máquina virtual em seu disco?&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Você está prestes a remover a máquina virtual &lt;b&gt;%1&lt;/b&gt; da lista de máquinas conhecidas.&lt;/p&gt;&lt;p&gt;Gostaria de remover também os arquivos físicos que contém esta máquina virtual em seu disco?&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;You are about to remove the virtual machine &lt;b&gt;%1&lt;/b&gt; from the machine list.&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well? Doing this will also remove the files containing the machine&apos;s virtual hard disks if they are not in use by another machine.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Você está prestes a remover a máquina virtual &lt;b&gt;%1&lt;/b&gt; da lista de máquinas conhecidas.&lt;/p&gt;&lt;p&gt;Você gostaria de apagar os arquivos que contém a máquina virtual selecionada de seu disco rígido? Ao fazer isto, os arquivos contendo os discos rígidos virtuais desta máquina virtual serão apagados, caso não estejam em uso por outra máquina virtual.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Você está prestes a remover a máquina virtual &lt;b&gt;%1&lt;/b&gt; da lista de máquinas conhecidas.&lt;/p&gt;&lt;p&gt;Você gostaria de apagar os arquivos que contém a máquina virtual selecionada de seu disco rígido? Ao fazer isto, os arquivos contendo os discos rígidos virtuais desta máquina virtual serão apagados, caso não estejam em uso por outra máquina virtual.&lt;/p&gt;</translation>
</message>
<message>
<source>Delete all files</source>
@@ -6014,7 +6527,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>You are about to remove the inaccessible virtual machine &lt;b&gt;%1&lt;/b&gt; from the machine list. Do you wish to proceed?</source>
- <translation>Você está prestes a remover a máquina virtual inacessível &lt;b&gt;%1&lt;/b&gt; da lista de máquinas conhecidas. Deseja continuar?</translation>
+ <translation type="obsolete">Você está prestes a remover a máquina virtual inacessível &lt;b&gt;%1&lt;/b&gt; da lista de máquinas conhecidas. Deseja continuar?</translation>
</message>
<message>
<source>Remove</source>
@@ -6300,16 +6813,74 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&lt;p&gt;Failed to download the &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; from &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</source>
- <translation>&lt;p&gt;Falha ao baixar o arquivo &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; de &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Falha ao baixar o arquivo &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; de &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Network Operations Manager...</source>
+ <translation>Gerenciador de Operações de Rede...</translation>
+ </message>
+ <message>
+ <source>Show Network Operations Manager</source>
+ <translation>Exibir o Gerenciador de Operações de Rede</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;You are about to remove following inaccessible virtual machines from the machine list:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Do you wish to proceed?&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Você está prestes a remover as seguintes máquinas virtuais inacessíveis da lista:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Deseja continuar?&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;You are about to remove following virtual machines from the machine list:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well? Doing this will also remove the files containing the machine&apos;s virtual hard disks if they are not in use by another machine.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Você está prestes a remover as seguintes máquinas virtuais da lista: &lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Você também gostaria de apagar os arquivos que contém as máquinas virtuais selecionadas de seu disco rígido? Ao fazer isto, os arquivos contendo os discos rígidos virtuais destas máquinas serão apagados, caso não estejam em uso por outra máquina virtual.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;You are about to remove following virtual machines from the machine list:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well?&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Você está prestes a remover as seguintes máquinas virtuais da lista: &lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Gostaria de remover também os arquivos físicos que contém as máquinas virtuais em seu disco?&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;You have version %1 of the &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; installed.&lt;/p&gt;&lt;p&gt;You should download and install version %3 of this extension pack from Oracle!&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Você possui a versão %1 de &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; instalada.&lt;/p&gt;&lt;p&gt;Recomendamos que você baixe e instale a versão %3 deste pacote de extensões direto da Oracle!&lt;/p&gt;</translation>
</message>
<message>
<source>Ok</source>
<comment>extension pack</comment>
- <translation type="unfinished"></translation>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <source>Do you wish to cancel all current network operations?</source>
+ <translation>Deseja cancelar todas as operações de rede atuais?</translation>
+ </message>
+ <message>
+ <source>Do you wish to cancel all current network operations or leave them running in the background?</source>
+ <translation>Deseja cancelar todas as operações de rede atuais ou quer deixá-las executando em background?</translation>
+ </message>
+ <message>
+ <source>Cancel All</source>
+ <translation>Cancelar Todas</translation>
+ </message>
+ <message>
+ <source>Leave in Background</source>
+ <translation>Deixar em Background</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;Do you really want to send an ACPI shutdown signal to the virtual machine?&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Você realmente deseja enviar um sinal de desligamento via ACPI para a máquina virtual?&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>ACPI Shutdown</source>
+ <comment>machine</comment>
+ <translation>Desligamento via ACPI</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;Do you really want to power off the virtual machine?&lt;/p&gt;&lt;p&gt;This will cause any unsaved data in applications running inside it to be lost.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Você realmente deseja desligar a máquina virtual?&lt;/p&gt;&lt;p&gt;Isto fará com que quaisquer dados não salvos nas aplicações em execução nesta VM sejam perdidos.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Power Off</source>
+ <comment>machine</comment>
+ <translation>Desligar</translation>
+ </message>
+ <message>
+ <source>Failed to drop data.</source>
+ <translation>Falha ao descartar dados.</translation>
</message>
</context>
<context>
@@ -6380,6 +6951,41 @@ p, li { white-space: pre-wrap; }
</message>
</context>
<context>
+ <name>UINetworkManager</name>
+ <message>
+ <source>Network Operation</source>
+ <translation>Operação de Rede</translation>
+ </message>
+ <message>
+ <source>Restart network operation</source>
+ <translation>Reiniciar operação de rede</translation>
+ </message>
+ <message>
+ <source>Cancel network operation</source>
+ <translation>Cancelar operação de rede</translation>
+ </message>
+ <message>
+ <source>Error: %1.</source>
+ <translation>Erro: %1.</translation>
+ </message>
+ <message>
+ <source>Network Operations Manager</source>
+ <translation>Gerenciador de Operações de Rede</translation>
+ </message>
+ <message>
+ <source>There are no active network operations.</source>
+ <translation>Não existem operações de rede ativas.</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel All</source>
+ <translation>&amp;Cancelar Todas</translation>
+ </message>
+ <message>
+ <source>Cancel all active network operations</source>
+ <translation>Cancela todas as operações de rede ativas</translation>
+ </message>
+</context>
+<context>
<name>UINewHDWizard</name>
<message>
<source>Create New Virtual Disk</source>
@@ -6685,8 +7291,8 @@ demorar bastante tempo, dependendo do tamanho escolhido e da velocidade de seu d
<translation>Escolha se o arquivo de disco virtual deverá ser alocado à medida em que for sendo utilizado ou se já deverá ser criado com o tamanho máximo.</translation>
</message>
<message>
- <source>&lt;p&gt;A &lt;b&gt;dynamically allocated&lt;/b&gt; virtual disk file will only use space on your physical hard disk as it fills up, although it will not shrink again automatically when space on it is freed.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Um arquivo de disco virtual &lt;b&gt;dinamicamente alocado&lt;/b&gt; irá utilizar espaço em seu disco rígido físico à medida em que for sendo utilizado, mas não irá encolher caso seja liberado espaço nele.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;A &lt;b&gt;dynamically allocated&lt;/b&gt; virtual disk file will only use space on your physical hard disk as it fills up (up to a &lt;b&gt;fixed maximum size&lt;/b&gt;), although it will not shrink again automatically when space on it is freed.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Um arquivo de disco virtual &lt;b&gt;dinamicamente alocado&lt;/b&gt; irá utilizar espaço em seu disco rígido físico à medida em que for sendo utilizado (até um &lt;b&gt;tamanho máximo pré-definido&lt;/b&gt;), mas não irá encolher caso seja liberado espaço nele.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;A &lt;b&gt;fixed size&lt;/b&gt; virtual disk file may take longer to create on some systems but is often faster to use.&lt;/p&gt;</source>
@@ -7405,6 +8011,34 @@ utilizando o diálogo de Configurações da MV.&lt;/p&gt;</translation>
</message>
</context>
<context>
+ <name>UISelectorWindow</name>
+ <message>
+ <source>Show Toolbar</source>
+ <translation>Exibir Barra de Ferramentas</translation>
+ </message>
+ <message>
+ <source>Show Statusbar</source>
+ <translation>Exibir Barra de Status</translation>
+ </message>
+ <message>
+ <source>Select a virtual machine file</source>
+ <translation>Selecione um arquivo de máquina virtual</translation>
+ </message>
+ <message>
+ <source>Virtual machine files (%1)</source>
+ <translation>Arquivos de máquina virtual (%1)</translation>
+ </message>
+ <message>
+ <source>&lt;h3&gt;Welcome to VirtualBox!&lt;/h3&gt;&lt;p&gt;The left part of this window is a list of all virtual machines on your computer. The list is empty now because you haven&apos;t created any virtual machines yet.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;In order to create a new virtual machine, press the &lt;b&gt;New&lt;/b&gt; button in the main tool bar located at the top of the window.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;%1&lt;/b&gt; key to get instant help, or visit &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; for the latest information and news.&lt;/p&gt;</source>
+ <translation>&lt;h3&gt;Bem-Vindo ao VirtualBox!&lt;/h3&gt;&lt;p&gt;A parte esquerda desta janela mostra uma lista de todas as máquinas virtuais disponíveis em seu computador. A lista está vazia agora porque você ainda não criou nenhuma máquina virtual ainda.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;Para criar uma nova máquina virtual, pressione o botão &lt;b&gt;Novo&lt;/b&gt; na barra de ferramentas principal, localizada no topo da janela.&lt;/p&gt;&lt;p&gt;Você pode pressionar &lt;b&gt;%1&lt;/b&gt; para obter ajuda instantânea, ou visitar &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; para obter informações e notícias sobre o VirtualBox.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Manager</source>
+ <comment>Note: main window title which is pretended by the product name.</comment>
+ <translation>Gerenciador</translation>
+ </message>
+</context>
+<context>
<name>UISession</name>
<message>
<source>Install</source>
@@ -7472,6 +8106,10 @@ utilizando o diálogo de Configurações da MV.&lt;/p&gt;</translation>
<source>Proxy</source>
<translation>Proxy</translation>
</message>
+ <message>
+ <source>Display</source>
+ <translation>Tela</translation>
+ </message>
</context>
<context>
<name>UISettingsDialogMachine</name>
@@ -7675,6 +8313,13 @@ utilizando o diálogo de Configurações da MV.&lt;/p&gt;</translation>
</message>
</context>
<context>
+ <name>UIUpdateStepVirtualBox</name>
+ <message>
+ <source>Checking for a new VirtualBox version...</source>
+ <translation>Verificando se existe uma nova versão do VirtualBox...</translation>
+ </message>
+</context>
+<context>
<name>UIVMCloseDialog</name>
<message>
<source>Close Virtual Machine</source>
@@ -7782,6 +8427,105 @@ utilizando o diálogo de Configurações da MV.&lt;/p&gt;</translation>
</message>
</context>
<context>
+ <name>UIVMLogViewer</name>
+ <message>
+ <source>Log Viewer</source>
+ <translation type="obsolete">Visualizador de Log</translation>
+ </message>
+ <message>
+ <source>&amp;Save</source>
+ <translation>&amp;Salvar</translation>
+ </message>
+ <message>
+ <source>Alt+S</source>
+ <translation type="obsolete">Alt+S</translation>
+ </message>
+ <message>
+ <source>&amp;Refresh</source>
+ <translation>Atualiza&amp;r</translation>
+ </message>
+ <message>
+ <source>Alt+R</source>
+ <translation type="obsolete">Alt+R</translation>
+ </message>
+ <message>
+ <source>&amp;Close</source>
+ <translation type="obsolete">Fe&amp;char</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation type="obsolete">Alt+C</translation>
+ </message>
+ <message>
+ <source>%1 - VirtualBox Log Viewer</source>
+ <translation>%1 - Visualizador de Log do VirtualBox</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;No log files found. Press the &lt;b&gt;Refresh&lt;/b&gt; button to rescan the log folder &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Nenhum arquivo de log encontrado. Pressione o botão &lt;b&gt;Atualizar&lt;/b&gt; para ler novamente a pasta de logs em &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Save VirtualBox Log As</source>
+ <translation>Salvar Log do VirtualBox Como</translation>
+ </message>
+ <message>
+ <source>Help</source>
+ <translation type="obsolete">Ajuda</translation>
+ </message>
+ <message>
+ <source>F1</source>
+ <translation type="obsolete">F1</translation>
+ </message>
+ <message>
+ <source>&amp;Find</source>
+ <translation>Procurar(&amp;F)</translation>
+ </message>
+ <message>
+ <source>Alt+F</source>
+ <translation type="obsolete">Alt+F</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Fechar</translation>
+ </message>
+ <message>
+ <source>Close the search panel</source>
+ <translation>Fecha o painel de busca</translation>
+ </message>
+ <message>
+ <source>Enter a search string here</source>
+ <translation>Entre o termo de busca aqui</translation>
+ </message>
+ <message>
+ <source>&amp;Previous</source>
+ <translation>Anterior(&amp;P)</translation>
+ </message>
+ <message>
+ <source>Search for the previous occurrence of the string</source>
+ <translation>Procura pela ocorrência anterior da frase</translation>
+ </message>
+ <message>
+ <source>&amp;Next</source>
+ <translation>Próximo(&amp;N)</translation>
+ </message>
+ <message>
+ <source>Search for the next occurrence of the string</source>
+ <translation>Procura pela próxima ocorrência da frase</translation>
+ </message>
+ <message>
+ <source>C&amp;ase Sensitive</source>
+ <translation>Sensível à C&amp;aixa</translation>
+ </message>
+ <message>
+ <source>Perform case sensitive search (when checked)</source>
+ <translation>Realiza uma busca sensível à caixa (quando marcado)</translation>
+ </message>
+ <message>
+ <source>String not found</source>
+ <translation>Frase não encontrada</translation>
+ </message>
+</context>
+<context>
<name>UIVMPreviewWindow</name>
<message>
<source>Update Disabled</source>
@@ -11270,53 +12014,13 @@ to the system default language.&lt;/qt&gt;
<context>
<name>VBoxLogSearchPanel</name>
<message>
- <source>Close the search panel</source>
- <translation>Fecha o painel de busca</translation>
- </message>
- <message>
- <source>Find </source>
- <translation>Procurar </translation>
- </message>
- <message>
- <source>Enter a search string here</source>
- <translation>Entre o termo de busca aqui</translation>
- </message>
- <message>
- <source>&amp;Previous</source>
- <translation>Anterior(&amp;P)</translation>
- </message>
- <message>
<source>Alt+P</source>
<translation type="obsolete">Alt+P</translation>
</message>
<message>
- <source>Search for the previous occurrence of the string</source>
- <translation>Procura pela ocorrência anterior da frase</translation>
- </message>
- <message>
- <source>&amp;Next</source>
- <translation>Próximo(&amp;N)</translation>
- </message>
- <message>
<source>Alt+N</source>
<translation type="obsolete">Alt+N</translation>
</message>
- <message>
- <source>Search for the next occurrence of the string</source>
- <translation>Procura pela próxima ocorrência da frase</translation>
- </message>
- <message>
- <source>C&amp;ase Sensitive</source>
- <translation>Sensível à C&amp;aixa</translation>
- </message>
- <message>
- <source>Perform case sensitive search (when checked)</source>
- <translation>Realiza uma busca sensível à caixa (quando marcado)</translation>
- </message>
- <message>
- <source>String not found</source>
- <translation>Frase não encontrada</translation>
- </message>
</context>
<context>
<name>VBoxMediaComboBox</name>
@@ -11820,35 +12524,14 @@ to the system default language.&lt;/qt&gt;
<translation type="obsolete">Mostrar o Gerenciador de Discos Virtuais</translation>
</message>
<message>
- <source>&amp;Preferences...</source>
- <comment>global settings</comment>
- <translation>&amp;Preferências...</translation>
- </message>
- <message>
<source>Ctrl+G</source>
<translation type="obsolete">Ctrl+G</translation>
</message>
<message>
- <source>Display the global settings dialog</source>
- <translation>Mostrar o diálogo de configurações globais</translation>
- </message>
- <message>
- <source>E&amp;xit</source>
- <translation>Sair (&amp;x)</translation>
- </message>
- <message>
<source>Ctrl+Q</source>
<translation type="obsolete">Ctrl+Q</translation>
</message>
<message>
- <source>Close application</source>
- <translation>Fechar a aplicação</translation>
- </message>
- <message>
- <source>&amp;New...</source>
- <translation>&amp;Novo...</translation>
- </message>
- <message>
<source>New</source>
<translation type="obsolete">Novo</translation>
</message>
@@ -11857,12 +12540,8 @@ to the system default language.&lt;/qt&gt;
<translation type="obsolete">Ctrl+N</translation>
</message>
<message>
- <source>Create a new virtual machine</source>
- <translation>Criar uma nova máquina virtual</translation>
- </message>
- <message>
<source>&amp;Settings...</source>
- <translation>Configuraçõe&amp;s...</translation>
+ <translation type="obsolete">Configuraçõe&amp;s...</translation>
</message>
<message>
<source>Settings</source>
@@ -11874,7 +12553,7 @@ to the system default language.&lt;/qt&gt;
</message>
<message>
<source>Configure the selected virtual machine</source>
- <translation>Configurar a máquina virtual selecionada</translation>
+ <translation type="obsolete">Configurar a máquina virtual selecionada</translation>
</message>
<message>
<source>&amp;Delete</source>
@@ -11893,14 +12572,6 @@ to the system default language.&lt;/qt&gt;
<translation type="obsolete">Descartar (&amp;I)</translation>
</message>
<message>
- <source>Discard</source>
- <translation>Descartar</translation>
- </message>
- <message>
- <source>Discard the saved state of the selected virtual machine</source>
- <translation>Descartar o estado salvo da máquina virtual selecionada</translation>
- </message>
- <message>
<source>&amp;Refresh</source>
<translation type="obsolete">Atualiza&amp;r</translation>
</message>
@@ -11913,10 +12584,6 @@ to the system default language.&lt;/qt&gt;
<translation type="obsolete">Ctrl+R</translation>
</message>
<message>
- <source>Refresh the accessibility state of the selected virtual machine</source>
- <translation>Atualizar o estado de acessibilidade da máquina virtual selecionada</translation>
- </message>
- <message>
<source>&amp;Contents...</source>
<translation type="obsolete">&amp;Conteúdo...</translation>
</message>
@@ -11973,36 +12640,16 @@ to the system default language.&lt;/qt&gt;
<translation type="obsolete">D&amp;escrição *</translation>
</message>
<message>
- <source>S&amp;how</source>
- <translation>Mostrar (&amp;h)</translation>
- </message>
- <message>
<source>Show</source>
<translation type="obsolete">Mostrar</translation>
</message>
<message>
- <source>Switch to the window of the selected virtual machine</source>
- <translation>Alterna para a janela da máquina virtual selecionada</translation>
- </message>
- <message>
- <source>S&amp;tart</source>
- <translation>Iniciar (&amp;T)</translation>
- </message>
- <message>
<source>Start</source>
<translation type="obsolete">Iniciar</translation>
</message>
<message>
- <source>Start the selected virtual machine</source>
- <translation>Iniciar a máquina virtual selecionada</translation>
- </message>
- <message>
<source>&amp;Machine</source>
- <translation>&amp;Máquina</translation>
- </message>
- <message>
- <source>Show &amp;Log...</source>
- <translation>Exibir &amp;Log...</translation>
+ <translation type="obsolete">&amp;Máquina</translation>
</message>
<message>
<source>Show Log...</source>
@@ -12013,10 +12660,6 @@ to the system default language.&lt;/qt&gt;
<translation type="obsolete">Ctrl+L</translation>
</message>
<message>
- <source>Show the log files of the selected virtual machine</source>
- <translation>Exibe os arquivos de log para a máquina virtual selecionada</translation>
- </message>
- <message>
<source>R&amp;egister VirtualBox...</source>
<translation type="obsolete">R&amp;egistrar o VirtualBox...</translation>
</message>
@@ -12038,11 +12681,11 @@ to the system default language.&lt;/qt&gt;
</message>
<message>
<source>Resume the execution of the virtual machine</source>
- <translation>Continuar a execução da máquina virtual</translation>
+ <translation type="obsolete">Continuar a execução da máquina virtual</translation>
</message>
<message>
<source>&amp;Pause</source>
- <translation>&amp;Pausar</translation>
+ <translation type="obsolete">&amp;Pausar</translation>
</message>
<message>
<source>Pause</source>
@@ -12050,147 +12693,41 @@ to the system default language.&lt;/qt&gt;
</message>
<message>
<source>Suspend the execution of the virtual machine</source>
- <translation>Suspender a execução da máquina virtual</translation>
+ <translation type="obsolete">Suspender a execução da máquina virtual</translation>
</message>
<message>
<source>&lt;h3&gt;Welcome to VirtualBox!&lt;/h3&gt;&lt;p&gt;The left part of this window is a list of all virtual machines on your computer. The list is empty now because you haven&apos;t created any virtual machines yet.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;In order to create a new virtual machine, press the &lt;b&gt;New&lt;/b&gt; button in the main tool bar located at the top of the window.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;%1&lt;/b&gt; key to get instant help, or visit &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; for the latest information and news.&lt;/p&gt;</source>
- <translation>&lt;h3&gt;Bem-Vindo ao VirtualBox!&lt;/h3&gt;&lt;p&gt;A parte esquerda desta janela mostra uma lista de todas as máquinas virtuais disponíveis em seu computador. A lista está vazia agora porque você ainda não criou nenhuma máquina virtual ainda.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;Para criar uma nova máquina virtual, pressione o botão &lt;b&gt;Novo&lt;/b&gt; na barra de ferramentas principal, localizada no topo da janela.&lt;/p&gt;&lt;p&gt;Você pode pressionar &lt;b&gt;%1&lt;/b&gt; para obter ajuda instantânea, ou visitar &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; para obter informações e notícias sobre o VirtualBox.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;Virtual Media Manager...</source>
- <translation>Gerenciador de &amp;Discos Virtuais...</translation>
- </message>
- <message>
- <source>Display the Virtual Media Manager dialog</source>
- <translation>Exibir o Gerenciador de Mídias Virtuais</translation>
+ <translation type="obsolete">&lt;h3&gt;Bem-Vindo ao VirtualBox!&lt;/h3&gt;&lt;p&gt;A parte esquerda desta janela mostra uma lista de todas as máquinas virtuais disponíveis em seu computador. A lista está vazia agora porque você ainda não criou nenhuma máquina virtual ainda.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;Para criar uma nova máquina virtual, pressione o botão &lt;b&gt;Novo&lt;/b&gt; na barra de ferramentas principal, localizada no topo da janela.&lt;/p&gt;&lt;p&gt;Você pode pressionar &lt;b&gt;%1&lt;/b&gt; para obter ajuda instantânea, ou visitar &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; para obter informações e notícias sobre o VirtualBox.&lt;/p&gt;</translation>
</message>
<message>
<source>Log</source>
<comment>icon text</comment>
- <translation>Log</translation>
+ <translation type="obsolete">Log</translation>
</message>
<message>
<source>Sun VirtualBox</source>
<translation type="obsolete">Sun VirtualBox</translation>
</message>
<message>
- <source>&amp;Import Appliance...</source>
- <translation>&amp;Importar Appliance...</translation>
- </message>
- <message>
- <source>Import an appliance into VirtualBox</source>
- <translation>Importa um &lt;i&gt;appliance&lt;/i&gt; no VirtualBox</translation>
- </message>
- <message>
- <source>&amp;Export Appliance...</source>
- <translation>&amp;Exportar Appliance...</translation>
- </message>
- <message>
- <source>Export one or more VirtualBox virtual machines as an appliance</source>
- <translation>Exporta um &lt;i&gt;appliance&lt;/i&gt; a partir de uma ou mais VMs do VirtualBox</translation>
- </message>
- <message>
- <source>Re&amp;fresh</source>
- <translation>Atualizar (&amp;F)</translation>
- </message>
- <message>
- <source>&amp;File</source>
- <comment>Mac OS X version</comment>
- <translation>Arquivo (&amp;F)</translation>
- </message>
- <message>
- <source>&amp;File</source>
- <comment>Non Mac OS X version</comment>
- <translation>Arquivo (&amp;F)</translation>
- </message>
- <message>
<source>Select a virtual machine file</source>
- <translation>Selecione um arquivo de máquina virtual</translation>
+ <translation type="obsolete">Selecione um arquivo de máquina virtual</translation>
</message>
<message>
<source>Virtual machine files (%1)</source>
- <translation>Arquivos de máquina virtual (%1)</translation>
+ <translation type="obsolete">Arquivos de máquina virtual (%1)</translation>
</message>
<message>
<source>Manager</source>
<comment>Note: main window title which is pretended by the product name.</comment>
- <translation>Gerenciador</translation>
- </message>
- <message>
- <source>&amp;Add...</source>
- <translation>&amp;Acrescentar...</translation>
- </message>
- <message>
- <source>Add an existing virtual machine</source>
- <translation>Acrescentar uma máquina virtual existente</translation>
- </message>
- <message>
- <source>&amp;Remove</source>
- <translation>&amp;Remover</translation>
- </message>
- <message>
- <source>Remove the selected virtual machine</source>
- <translation>Apaga a máquina virtual selecionada</translation>
- </message>
- <message>
- <source>Show in Finder</source>
- <translation>Exibir no Finder</translation>
- </message>
- <message>
- <source>Show the VirtualBox Machine Definition file in Finder.</source>
- <translation>Exibe o arquivo de definição da máquina do VirtualBox no Finder.</translation>
- </message>
- <message>
- <source>Create Alias on Desktop</source>
- <translation>Criar Alias no Desktop</translation>
- </message>
- <message>
- <source>Creates an Alias file to the VirtualBox Machine Definition file on your Desktop.</source>
- <translation>Cria um alias apontando para o arquivo de definição de máquina virtual do VirtualBox no seu Desktop.</translation>
- </message>
- <message>
- <source>Show in Explorer</source>
- <translation>Exibir no Explorer</translation>
- </message>
- <message>
- <source>Show the VirtualBox Machine Definition file in Explorer.</source>
- <translation>Exibe o arquivo de definição da máquina do VirtualBox no Explorer.</translation>
- </message>
- <message>
- <source>Create Shortcut on Desktop</source>
- <translation>Criar Atalho na Ãrea de Trabalho</translation>
- </message>
- <message>
- <source>Creates an Shortcut file to the VirtualBox Machine Definition file on your Desktop.</source>
- <translation>Cria um atalho apontando para o arquivo de definição de máquina virtual do VirtualBox em sua Ãrea de Trabalho.</translation>
- </message>
- <message>
- <source>Show in File Manager</source>
- <translation>Exibir no Gerenciador de Arquivos</translation>
- </message>
- <message>
- <source>Show the VirtualBox Machine Definition file in the File Manager</source>
- <translation>Exibe o arquivo de definição da máquina do VirtualBox no Gerenciador de Arquivos</translation>
+ <translation type="obsolete">Gerenciador</translation>
</message>
<message>
<source>Show Toolbar</source>
- <translation>Exibir Barra de Ferramentas</translation>
+ <translation type="obsolete">Exibir Barra de Ferramentas</translation>
</message>
<message>
<source>Show Statusbar</source>
- <translation>Exibir Barra de Status</translation>
- </message>
- <message>
- <source>Cl&amp;one...</source>
- <translation>Cl&amp;onar...</translation>
- </message>
- <message>
- <source>Clone the selected virtual machine</source>
- <translation>Clona a máquina virtual selecionada</translation>
- </message>
- <message>
- <source>D&amp;iscard Saved State</source>
- <translation>Descartar o Estado Salvo (&amp;I)</translation>
+ <translation type="obsolete">Exibir Barra de Status</translation>
</message>
</context>
<context>
@@ -13129,69 +13666,6 @@ qualquer valor.&lt;/qt&gt;</translation>
</message>
</context>
<context>
- <name>VBoxVMLogViewer</name>
- <message>
- <source>Log Viewer</source>
- <translation>Visualizador de Log</translation>
- </message>
- <message>
- <source>&amp;Save</source>
- <translation>&amp;Salvar</translation>
- </message>
- <message>
- <source>Alt+S</source>
- <translation type="obsolete">Alt+S</translation>
- </message>
- <message>
- <source>&amp;Refresh</source>
- <translation>Atualiza&amp;r</translation>
- </message>
- <message>
- <source>Alt+R</source>
- <translation type="obsolete">Alt+R</translation>
- </message>
- <message>
- <source>&amp;Close</source>
- <translation type="obsolete">Fe&amp;char</translation>
- </message>
- <message>
- <source>Alt+C</source>
- <translation type="obsolete">Alt+C</translation>
- </message>
- <message>
- <source>%1 - VirtualBox Log Viewer</source>
- <translation>%1 - Visualizador de Log do VirtualBox</translation>
- </message>
- <message>
- <source>&lt;p&gt;No log files found. Press the &lt;b&gt;Refresh&lt;/b&gt; button to rescan the log folder &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Nenhum arquivo de log encontrado. Pressione o botão &lt;b&gt;Atualizar&lt;/b&gt; para ler novamente a pasta de logs em &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Save VirtualBox Log As</source>
- <translation>Salvar Log do VirtualBox Como</translation>
- </message>
- <message>
- <source>Help</source>
- <translation type="obsolete">Ajuda</translation>
- </message>
- <message>
- <source>F1</source>
- <translation type="obsolete">F1</translation>
- </message>
- <message>
- <source>&amp;Find</source>
- <translation>Procurar(&amp;F)</translation>
- </message>
- <message>
- <source>Alt+F</source>
- <translation type="obsolete">Alt+F</translation>
- </message>
- <message>
- <source>Close</source>
- <translation>Fechar</translation>
- </message>
-</context>
-<context>
<name>VBoxVMNetworkSettings</name>
<message>
<source>VBoxVMNetworkSettings</source>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts
index be5c45ca7..bdcc7a764 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts
@@ -2850,6 +2850,10 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci cÃ
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts
index 9c6ab5329..20b223d2d 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts
@@ -2889,6 +2889,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>Ð´Ð»Ñ Ñтой машины выбрана Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ 2D-уÑÐºÐ¾Ñ€ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´ÐµÐ¾. ПоÑкольку Ð´Ð°Ð½Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ÑÑ Ð»Ð¸ÑˆÑŒ клаÑÑом гоÑтевых ÑиÑтем Windows, она будет отключена.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts
index 0928c38f6..78e576906 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts
@@ -2781,6 +2781,10 @@
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>povolili ste 2D akceleráciu videa. Pretože 2D akcelerácia videa je podporovaná iba pre hosťovské systémy s Windows, táto vlastnosť bude vypnutá.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts
index 61f86b09a..fdc2c4f3f 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts
@@ -2727,6 +2727,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>имате 2D видео убрзавање упаљено. Пошто је 2D видео убрзавање је подршана Ñамо Ñа тране Windows гоÑта, опција ће бити онемогућена.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts
index fd5780b13..b79ec76ca 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts
@@ -123,7 +123,7 @@
</message>
<message>
<source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root. If it is available in your distribution, you should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.</source>
- <translation type="unfinished"></translation>
+ <translation>Linux-kärndrivrutinen för VirtualBox (vboxdrv) är antingen inte inläst eller så finns det ett behörighetsproblem med /dev/vboxdrv. Installera om kärnmodulen genom att köra&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&quot;/etc/init.d/vboxdrv setup&quot;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt; som root. Om den finns tillgänglig för din distribution så bör du installera DKMS-paketet först. Detta paket håller koll på ändringar i Linux-kärnan och kompilerar om kärnmodulen vboxdrv om det behövs.</translation>
</message>
</context>
<context>
@@ -159,11 +159,11 @@
<name>QIHttp</name>
<message>
<source>Connection timed out</source>
- <translation>Tidsgränsen för anslutningen överstegs</translation>
+ <translation type="obsolete">Tidsgränsen för anslutningen överstegs</translation>
</message>
<message>
<source>Could not locate the file on the server (response: %1)</source>
- <translation>Kunde inte hitta filen på servern (svar: %1)</translation>
+ <translation type="obsolete">Kunde inte hitta filen på servern (svar: %1)</translation>
</message>
</context>
<context>
@@ -311,7 +311,7 @@
</message>
<message>
<source>&amp;Insert Ctrl-Alt-Backspace</source>
- <translation>&amp;Infoga Ctrl-Alt-Backsteg</translation>
+ <translation type="obsolete">&amp;Infoga Ctrl-Alt-Backsteg</translation>
</message>
<message>
<source>Send the Ctrl-Alt-Backspace sequence to the virtual machine</source>
@@ -319,7 +319,7 @@
</message>
<message>
<source>Take &amp;Snapshot...</source>
- <translation>Spara &amp;ögonblicksbild...</translation>
+ <translation type="obsolete">Spara &amp;ögonblicksbild...</translation>
</message>
<message>
<source>Take a snapshot of the virtual machine</source>
@@ -566,6 +566,209 @@
<source>Session I&amp;nformation...</source>
<translation>Sessionsi&amp;nformation...</translation>
</message>
+ <message>
+ <source>&amp;File</source>
+ <comment>Mac OS X version</comment>
+ <translation>&amp;Arkiv</translation>
+ </message>
+ <message>
+ <source>&amp;File</source>
+ <comment>Non Mac OS X version</comment>
+ <translation>&amp;Arkiv</translation>
+ </message>
+ <message>
+ <source>&amp;Virtual Media Manager...</source>
+ <translation>Hanterare för virtuella &amp;media...</translation>
+ </message>
+ <message>
+ <source>Display the Virtual Media Manager dialog</source>
+ <translation>Visa Hanterare för virtuella media</translation>
+ </message>
+ <message>
+ <source>&amp;Import Appliance...</source>
+ <translation>&amp;Importera appliance...</translation>
+ </message>
+ <message>
+ <source>Import an appliance into VirtualBox</source>
+ <translation>Importera en appliance till VirtualBox</translation>
+ </message>
+ <message>
+ <source>&amp;Export Appliance...</source>
+ <translation>&amp;Exportera appliance...</translation>
+ </message>
+ <message>
+ <source>Export one or more VirtualBox virtual machines as an appliance</source>
+ <translation>Exportera en appliance från virtuella maskiner från VirtualBox</translation>
+ </message>
+ <message>
+ <source>&amp;Preferences...</source>
+ <comment>global settings</comment>
+ <translation>&amp;Inställningar...</translation>
+ </message>
+ <message>
+ <source>Display the global settings dialog</source>
+ <translation>Visa allmänna inställningar</translation>
+ </message>
+ <message>
+ <source>E&amp;xit</source>
+ <translation>A&amp;vsluta</translation>
+ </message>
+ <message>
+ <source>Close application</source>
+ <translation>Stäng programmet</translation>
+ </message>
+ <message>
+ <source>&amp;New...</source>
+ <translation>&amp;Ny...</translation>
+ </message>
+ <message>
+ <source>Create a new virtual machine</source>
+ <translation>Skapa en ny virtuell maskin</translation>
+ </message>
+ <message>
+ <source>&amp;Add...</source>
+ <translation>&amp;Lägg till...</translation>
+ </message>
+ <message>
+ <source>Add an existing virtual machine</source>
+ <translation>Lägg till en befintlig virtuell maskin</translation>
+ </message>
+ <message>
+ <source>Cl&amp;one...</source>
+ <translation>Kl&amp;ona...</translation>
+ </message>
+ <message>
+ <source>Clone the selected virtual machine</source>
+ <translation>Klona den markerade virtuella maskinen</translation>
+ </message>
+ <message>
+ <source>&amp;Remove</source>
+ <translation>&amp;Ta bort</translation>
+ </message>
+ <message>
+ <source>Remove the selected virtual machine</source>
+ <translation>Ta bort markerad virtuell maskin</translation>
+ </message>
+ <message>
+ <source>S&amp;tart</source>
+ <translation>St&amp;arta</translation>
+ </message>
+ <message>
+ <source>Start the selected virtual machine</source>
+ <translation>Starta den markerade virtuella maskinen</translation>
+ </message>
+ <message>
+ <source>S&amp;how</source>
+ <translation>V&amp;isa</translation>
+ </message>
+ <message>
+ <source>Switch to the window of the selected virtual machine</source>
+ <translation>Växla till fönstret för den markerade virtuella maskinen</translation>
+ </message>
+ <message>
+ <source>Discard</source>
+ <translation>Förkasta</translation>
+ </message>
+ <message>
+ <source>D&amp;iscard Saved State</source>
+ <translation>För&amp;kasta sparat tillstånd</translation>
+ </message>
+ <message>
+ <source>Discard the saved state of the selected virtual machine</source>
+ <translation>Förkasta det sparade tillståndet för den markerade virtuella maskinen</translation>
+ </message>
+ <message>
+ <source>Re&amp;fresh</source>
+ <translation>&amp;Uppdatera</translation>
+ </message>
+ <message>
+ <source>Refresh the accessibility state of the selected virtual machine</source>
+ <translation>Uppdatera tillgänglighetstillståndet för den markerade virtuella maskinen</translation>
+ </message>
+ <message>
+ <source>Show &amp;Log...</source>
+ <translation>Visa lo&amp;gg...</translation>
+ </message>
+ <message>
+ <source>Show the log files of the selected virtual machine</source>
+ <translation>Visa loggfilerna för den markerade virtuella maskinen</translation>
+ </message>
+ <message>
+ <source>Show in Finder</source>
+ <translation>Visa i Finder</translation>
+ </message>
+ <message>
+ <source>Show the VirtualBox Machine Definition file in Finder.</source>
+ <translation>Visa VirtualBox Machine Definition-fil i Finder.</translation>
+ </message>
+ <message>
+ <source>Show in Explorer</source>
+ <translation>Visa i Utforskaren</translation>
+ </message>
+ <message>
+ <source>Show the VirtualBox Machine Definition file in Explorer.</source>
+ <translation>Visa VirtualBox Machine Definition-filen i Utforskaren.</translation>
+ </message>
+ <message>
+ <source>Show in File Manager</source>
+ <translation>Visa i filhanterare</translation>
+ </message>
+ <message>
+ <source>Show the VirtualBox Machine Definition file in the File Manager</source>
+ <translation>Visa VirtualBox Machine Definition-filen i filhanteraren</translation>
+ </message>
+ <message>
+ <source>Create Alias on Desktop</source>
+ <translation>Skapa alias på skrivbordet</translation>
+ </message>
+ <message>
+ <source>Creates an Alias file to the VirtualBox Machine Definition file on your Desktop.</source>
+ <translation>Skapar en aliasfil till VirtualBox Machine Definition-filen på ditt skrivbord.</translation>
+ </message>
+ <message>
+ <source>Create Shortcut on Desktop</source>
+ <translation>Skapa genväg på skrivbordet</translation>
+ </message>
+ <message>
+ <source>Creates an Shortcut file to the VirtualBox Machine Definition file on your Desktop.</source>
+ <translation>Skapar en genvägsfil till VirtualBox Machine Definition-filen på ditt skrivbord.</translation>
+ </message>
+ <message>
+ <source>Take Sn&amp;apshot...</source>
+ <translation>Ta ö&amp;gonblicksbild...</translation>
+ </message>
+ <message>
+ <source>Take Screensh&amp;ot...</source>
+ <translation>Ta skärmbil&amp;d...</translation>
+ </message>
+ <message>
+ <source>Take a screenshot of the virtual machine</source>
+ <translation>Ta en skärmbild av den virtuella maskinen</translation>
+ </message>
+ <message>
+ <source>Ins&amp;ert Ctrl-Alt-Backspace</source>
+ <translation>Info&amp;ga Ctrl-Alt-Backsteg</translation>
+ </message>
+ <message>
+ <source>Sort List</source>
+ <translation>Sortera lista</translation>
+ </message>
+ <message>
+ <source>Sort the VM list alphabetically (Shift for descending order)</source>
+ <translation>Sortera listan över virtuella maskiner alfabetiskt (Skift för fallande ordning)</translation>
+ </message>
+ <message>
+ <source>&amp;Close</source>
+ <translation>S&amp;täng</translation>
+ </message>
+ <message>
+ <source>Po&amp;wer Off</source>
+ <translation>Stäng a&amp;v</translation>
+ </message>
+ <message>
+ <source>Power off the virtual machine</source>
+ <translation>Stäng av den virtuella maskinen</translation>
+ </message>
</context>
<context>
<name>UIApplianceEditorWidget</name>
@@ -797,11 +1000,11 @@
</message>
<message>
<source>&lt;p&gt;Please select the type of the clone.&lt;/p&gt;&lt;p&gt;If you choose &lt;b&gt;Full Clone&lt;/b&gt; an exact copy (including all virtual disk images) of the original VM will be created. If you select &lt;b&gt;Linked Clone&lt;/b&gt;, a new VM will be created, but the virtual disk images will point to the virtual disk images of original VM.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Välj typ för klonen.&lt;/p&gt;&lt;p&gt;Om du väljer &lt;b&gt;Fullständig klon&lt;/b&gt; så kommer en exakt kopia (inklusive alla virtuella diskavbildningar) av den ursprungliga virtuella maskinen att skapas. Om du väljer &lt;b&gt;Länkad klon&lt;/b&gt; så kommer en ny virtuell maskin att skapas men de virtuella diskavbildningarna kommer att peka på de virtuella diskavbildningarna för den ursprungliga virtuella maskinen.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Note that a new snapshot within the source VM is created in case you select &lt;b&gt;Linked Clone&lt;/b&gt;.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Observera att en ny ögonblicksbild inom den ursprungliga virtuella maskinen skapas om du väljer &lt;b&gt;Länkad klon&lt;/b&gt;.&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -855,7 +1058,7 @@
</message>
</context>
<context>
- <name>UIDetailsPagePrivate</name>
+ <name>UIDetailsBlock</name>
<message>
<source>Name</source>
<comment>details report</comment>
@@ -864,7 +1067,12 @@
<message>
<source>OS Type</source>
<comment>details report</comment>
- <translation>Operativsystem</translation>
+ <translation>Typ av operativsystem</translation>
+ </message>
+ <message>
+ <source>Information inaccessible</source>
+ <comment>details report</comment>
+ <translation>Informationen är inte nåbar</translation>
</message>
<message>
<source>Base Memory</source>
@@ -887,6 +1095,16 @@
<translation>&lt;nobr&gt;%1&lt;/nobr&gt;</translation>
</message>
<message>
+ <source>Execution Cap</source>
+ <comment>details report</comment>
+ <translation>Exekveringsgräns</translation>
+ </message>
+ <message>
+ <source>&lt;nobr&gt;%1%&lt;/nobr&gt;</source>
+ <comment>details report</comment>
+ <translation>&lt;nobr&gt;%1%&lt;/nobr&gt;</translation>
+ </message>
+ <message>
<source>Boot Order</source>
<comment>details report</comment>
<translation>Uppstartsordning</translation>
@@ -939,7 +1157,7 @@
<message>
<source>2D Video</source>
<comment>details report</comment>
- <translation>2D-video</translation>
+ <translation>2D-grafik</translation>
</message>
<message>
<source>3D</source>
@@ -1001,9 +1219,14 @@
<translation>Endast värd-kort, &quot;%1&quot;</translation>
</message>
<message>
- <source>VDE network, &apos;%1&apos;</source>
+ <source>Generic driver, &apos;%1&apos;</source>
<comment>details report (network)</comment>
- <translation type="obsolete">VDE-nätverk, &quot;%1&quot;</translation>
+ <translation>Allmän drivrutin, &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <source>Generic driver, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</source>
+ <comment>details report (network)</comment>
+ <translation>Allmän drivrutin, &quot;%1&quot; {&amp;nbsp;%2&amp;nbsp;}</translation>
</message>
<message>
<source>Adapter %1</source>
@@ -1013,7 +1236,7 @@
<message>
<source>Disabled</source>
<comment>details report (network)</comment>
- <translation>Inaktiverat</translation>
+ <translation>Inaktiverad</translation>
</message>
<message>
<source>Port %1</source>
@@ -1058,13 +1281,225 @@
<message>
<source>None</source>
<comment>details report (shared folders)</comment>
- <translation>Inga</translation>
+ <translation>Ingen</translation>
</message>
<message>
<source>None</source>
<comment>details report (description)</comment>
<translation>Ingen</translation>
</message>
+</context>
+<context>
+ <name>UIDetailsPagePrivate</name>
+ <message>
+ <source>Name</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Namn</translation>
+ </message>
+ <message>
+ <source>OS Type</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Operativsystem</translation>
+ </message>
+ <message>
+ <source>Base Memory</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Basminne</translation>
+ </message>
+ <message>
+ <source>&lt;nobr&gt;%1 MB&lt;/nobr&gt;</source>
+ <comment>details report</comment>
+ <translation type="obsolete">&lt;nobr&gt;%1 MB&lt;/nobr&gt;</translation>
+ </message>
+ <message>
+ <source>Processors</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Processorer</translation>
+ </message>
+ <message>
+ <source>&lt;nobr&gt;%1&lt;/nobr&gt;</source>
+ <comment>details report</comment>
+ <translation type="obsolete">&lt;nobr&gt;%1&lt;/nobr&gt;</translation>
+ </message>
+ <message>
+ <source>Boot Order</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Uppstartsordning</translation>
+ </message>
+ <message>
+ <source>ACPI</source>
+ <comment>details report</comment>
+ <translation type="obsolete">ACPI</translation>
+ </message>
+ <message>
+ <source>IO APIC</source>
+ <comment>details report</comment>
+ <translation type="obsolete">IO APIC</translation>
+ </message>
+ <message>
+ <source>BIOS</source>
+ <comment>details report</comment>
+ <translation type="obsolete">BIOS</translation>
+ </message>
+ <message>
+ <source>VT-x/AMD-V</source>
+ <comment>details report</comment>
+ <translation type="obsolete">VT-x/AMD-V</translation>
+ </message>
+ <message>
+ <source>Nested Paging</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Nested Paging</translation>
+ </message>
+ <message>
+ <source>PAE/NX</source>
+ <comment>details report</comment>
+ <translation type="obsolete">PAE/NX</translation>
+ </message>
+ <message>
+ <source>Acceleration</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Acceleration</translation>
+ </message>
+ <message>
+ <source>Video Memory</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Grafikminne</translation>
+ </message>
+ <message>
+ <source>Screens</source>
+ <comment>details report</comment>
+ <translation type="obsolete">Skärmar</translation>
+ </message>
+ <message>
+ <source>2D Video</source>
+ <comment>details report</comment>
+ <translation type="obsolete">2D-video</translation>
+ </message>
+ <message>
+ <source>3D</source>
+ <comment>details report</comment>
+ <translation type="obsolete">3D</translation>
+ </message>
+ <message>
+ <source>Remote Desktop Server Port</source>
+ <comment>details report (VRDE Server)</comment>
+ <translation type="obsolete">Port för fjärrskrivbordsserver</translation>
+ </message>
+ <message>
+ <source>Remote Desktop Server</source>
+ <comment>details report (VRDE Server)</comment>
+ <translation type="obsolete">Fjärrskrivbordsserver</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (VRDE Server)</comment>
+ <translation type="obsolete">Inaktiverad</translation>
+ </message>
+ <message>
+ <source>(CD/DVD)</source>
+ <translation type="obsolete">(CD/DVD)</translation>
+ </message>
+ <message>
+ <source>Not Attached</source>
+ <comment>details report (Storage)</comment>
+ <translation type="obsolete">Inte ansluten</translation>
+ </message>
+ <message>
+ <source>Host Driver</source>
+ <comment>details report (audio)</comment>
+ <translation type="obsolete">Värddrivrutin</translation>
+ </message>
+ <message>
+ <source>Controller</source>
+ <comment>details report (audio)</comment>
+ <translation type="obsolete">Styrkort</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (audio)</comment>
+ <translation type="obsolete">Inaktiverad</translation>
+ </message>
+ <message>
+ <source>Bridged adapter, %1</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Bryggat kort, %1</translation>
+ </message>
+ <message>
+ <source>Internal network, &apos;%1&apos;</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Internt nätverk, &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <source>Host-only adapter, &apos;%1&apos;</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Endast värd-kort, &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <source>VDE network, &apos;%1&apos;</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">VDE-nätverk, &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <source>Adapter %1</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Adapter %1</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (network)</comment>
+ <translation type="obsolete">Inaktiverat</translation>
+ </message>
+ <message>
+ <source>Port %1</source>
+ <comment>details report (serial ports)</comment>
+ <translation type="obsolete">Port %1</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (serial ports)</comment>
+ <translation type="obsolete">Inaktiverad</translation>
+ </message>
+ <message>
+ <source>Port %1</source>
+ <comment>details report (parallel ports)</comment>
+ <translation type="obsolete">Port %1</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (parallel ports)</comment>
+ <translation type="obsolete">Inaktiverad</translation>
+ </message>
+ <message>
+ <source>Device Filters</source>
+ <comment>details report (USB)</comment>
+ <translation type="obsolete">Enhetsfilter</translation>
+ </message>
+ <message>
+ <source>%1 (%2 active)</source>
+ <comment>details report (USB)</comment>
+ <translation type="obsolete">%1 (%2 aktiv)</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <comment>details report (USB)</comment>
+ <translation type="obsolete">Inaktiverad</translation>
+ </message>
+ <message>
+ <source>Shared Folders</source>
+ <comment>details report (shared folders)</comment>
+ <translation type="obsolete">Delade mappar</translation>
+ </message>
+ <message>
+ <source>None</source>
+ <comment>details report (shared folders)</comment>
+ <translation type="obsolete">Inga</translation>
+ </message>
+ <message>
+ <source>None</source>
+ <comment>details report (description)</comment>
+ <translation type="obsolete">Ingen</translation>
+ </message>
<message>
<source>The selected virtual machine is &lt;i&gt;inaccessible&lt;/i&gt;. Please inspect the error message shown below and press the &lt;b&gt;Refresh&lt;/b&gt; button if you want to repeat the accessibility check:</source>
<translation>Den valda virtuella maskinen är &lt;i&gt;oåtkomlig&lt;/i&gt;. Undersök felmeddelandet som visas nedan och tryck på knappen &lt;b&gt;Uppdatera&lt;/b&gt; om du vill upprepa tillgänglighetskontrollen:</translation>
@@ -1132,22 +1567,22 @@
<message>
<source>Execution Cap</source>
<comment>details report</comment>
- <translation>Exekveringsgräns</translation>
+ <translation type="obsolete">Exekveringsgräns</translation>
</message>
<message>
<source>&lt;nobr&gt;%1%&lt;/nobr&gt;</source>
<comment>details report</comment>
- <translation>&lt;nobr&gt;%1%&lt;/nobr&gt;</translation>
+ <translation type="obsolete">&lt;nobr&gt;%1%&lt;/nobr&gt;</translation>
</message>
<message>
<source>Generic driver, &apos;%1&apos;</source>
<comment>details report (network)</comment>
- <translation>Allmän drivrutin, &quot;%1&quot;</translation>
+ <translation type="obsolete">Allmän drivrutin, &quot;%1&quot;</translation>
</message>
<message>
<source>Generic driver, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</source>
<comment>details report (network)</comment>
- <translation>Allmän drivrutin, &quot;%1&quot; {&amp;nbsp;%2&amp;nbsp;}</translation>
+ <translation type="obsolete">Allmän drivrutin, &quot;%1&quot; {&amp;nbsp;%2&amp;nbsp;}</translation>
</message>
</context>
<context>
@@ -1188,6 +1623,14 @@
<source>The download process has been canceled by the user.</source>
<translation type="obsolete">Hämtningsprocessen har avbrutits av användaren.</translation>
</message>
+ <message>
+ <source>Looking for %1...</source>
+ <translation>Letar efter %1...</translation>
+ </message>
+ <message>
+ <source>Downloading %1...</source>
+ <translation>Hämtar %1...</translation>
+ </message>
</context>
<context>
<name>UIDownloaderAdditions</name>
@@ -1211,6 +1654,10 @@
<source>Select folder to save Guest Additions image to</source>
<translation>Välj en mapp att spara avbildning för Gästtillägg till</translation>
</message>
+ <message>
+ <source>VirtualBox Guest Additions</source>
+ <translation>VirtualBox Gästtillägg</translation>
+ </message>
</context>
<context>
<name>UIDownloaderExtensionPack</name>
@@ -1218,6 +1665,10 @@
<source>Select folder to save %1 to</source>
<translation>Välj mapp att spara %1 till</translation>
</message>
+ <message>
+ <source>VirtualBox Extension Pack</source>
+ <translation>VirtualBox tilläggspaket</translation>
+ </message>
</context>
<context>
<name>UIDownloaderUserManual</name>
@@ -1225,6 +1676,10 @@
<source>Select folder to save User Manual to</source>
<translation>Välj en mapp att spara användarhandboken i</translation>
</message>
+ <message>
+ <source>VirtualBox User Manual</source>
+ <translation>Handbok för VirtualBox</translation>
+ </message>
</context>
<context>
<name>UIExportApplianceWzd</name>
@@ -1780,6 +2235,56 @@ p, li { white-space: pre-wrap; }
</message>
</context>
<context>
+ <name>UIGlobalSettingsDisplay</name>
+ <message>
+ <source>Maximum Guest Screen &amp;Size:</source>
+ <translation>Maximal storlek för gästs&amp;kärm:</translation>
+ </message>
+ <message>
+ <source>&amp;Width:</source>
+ <translation>&amp;Bredd:</translation>
+ </message>
+ <message>
+ <source>Specifies the maximum width which we would like the guest to use.</source>
+ <translation>Anger maximal bredd som vi vill använda för gästskärmen.</translation>
+ </message>
+ <message>
+ <source>&amp;Height:</source>
+ <translation>&amp;Höjd:</translation>
+ </message>
+ <message>
+ <source>Specifies the maximum height which we would like the guest to use.</source>
+ <translation>Anger maximal höjd som vi vill använda för gästskärmen.</translation>
+ </message>
+ <message>
+ <source>Automatic</source>
+ <comment>Maximum Guest Screen Size</comment>
+ <translation>Automatiskt</translation>
+ </message>
+ <message>
+ <source>Suggest a reasonable maximum screen size to the guest. The guest will only see this suggestion when guest additions are installed.</source>
+ <translation>Föreslå en rimlig maximal skärmstorlek för gästen. Gästen kommer endast att se detta förslag när gästtillägg har installerats.</translation>
+ </message>
+ <message>
+ <source>None</source>
+ <comment>Maximum Guest Screen Size</comment>
+ <translation>Ingen</translation>
+ </message>
+ <message>
+ <source>Do not attempt to limit the size of the guest screen.</source>
+ <translation>Försök inte att begränsa storleken för gästskärmen.</translation>
+ </message>
+ <message>
+ <source>Hint</source>
+ <comment>Maximum Guest Screen Size</comment>
+ <translation>Tips</translation>
+ </message>
+ <message>
+ <source>Suggest a maximum screen size to the guest. The guest will only see this suggestion when guest additions are installed.</source>
+ <translation>Föreslå en maximal skärmstorlek för gästen. Gästen kommer endast att se detta förslag när gästtillägg har installerats.</translation>
+ </message>
+</context>
+<context>
<name>UIGlobalSettingsExtension</name>
<message>
<source>&amp;Extension Packages:</source>
@@ -2815,6 +3320,10 @@ p, li { white-space: pre-wrap; }
<source>No supported devices connected to the host PC</source>
<translation>Inga enheter som stöds är anslutna till värdmaskinen</translation>
</message>
+ <message>
+ <source>Select a filename for the screenshot ...</source>
+ <translation>Välj ett filnamn för skärmbilden ...</translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsAudio</name>
@@ -2965,6 +3474,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>du har 2D-grafikacceleration aktiverat. Eftersom 2D-grafikacceleration endast stöds för Windows-gäster så kommer denna funktion att inaktiveras.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation>du har aktiverat 3D-acceleration. Dock fungerar inte 3D-acceleration på den aktuella värdkonfigurationen så du kommer inte kunna starta den virtuella maskinen.</translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
@@ -4327,15 +4840,15 @@ serial ports</comment>
</message>
<message>
<source>Selects the port count of the SATA storage controller currently selected in the Storage Tree. This must be at least one more than the highest port number you need to use.</source>
- <translation type="unfinished"></translation>
+ <translation>Väljer portantalet för SATA-lagringsstyrkortet som valts i lagringsträdet. Detta måste vara ett tal minst ett högre än det högsta portantalet som du behöver använda.</translation>
</message>
<message>
<source>When checked the virtual disk will not be removed when the guest system ejects it.</source>
- <translation type="unfinished"></translation>
+ <translation>När kryssad kommer den virtuella disken inte att tas bort när gästsystemet matar ut den.</translation>
</message>
<message>
<source>When checked the guest system will see the virtual disk as a solid state device.</source>
- <translation type="unfinished"></translation>
+ <translation>När kryssad kommer gästsystemet att se den virtuella disken som en Solid-State-enhet.</translation>
</message>
</context>
<context>
@@ -4555,7 +5068,7 @@ serial ports</comment>
</message>
<message>
<source>you have assigned ICH9 chipset type to this VM. It will not work properly unless the IO-APIC feature is also enabled. This will be done automatically when you accept the VM Settings by pressing the OK button.</source>
- <translation type="unfinished"></translation>
+ <translation>du har tilldelat chiptypen ICH9 till denna virtuella maskin. Det kommer inte att fungera korrekt såvida inte du även aktiverar IO-APIC-funktionen. Detta kommer att göras automatiskt när du accepterar inställningarna för den virtuella maskinen genom att trycka på OK-knappen.</translation>
</message>
</context>
<context>
@@ -5122,7 +5635,7 @@ serial ports</comment>
</message>
<message>
<source>&lt;p&gt;Failed to download the VirtualBox Guest Additions CD image from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</source>
- <translation>&lt;p&gt;Misslyckades med att hämta ner cd-avbildningen för VirtualBox Gästtillägg från &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Misslyckades med att hämta ner cd-avbildningen för VirtualBox Gästtillägg från &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Are you sure you want to download the VirtualBox Guest Additions CD image from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; (size %3 bytes)?&lt;/p&gt;</source>
@@ -5516,7 +6029,7 @@ serial ports</comment>
</message>
<message>
<source>&lt;p&gt;Unable to obtain the new version information due to the following error:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</source>
- <translation>&lt;p&gt;Kunde inte hämta information om ny version på grund av följande fel:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Kunde inte hämta information om ny version på grund av följande fel:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;One or more virtual hard disks, CD/DVD or floppy media are not currently accessible. As a result, you will not be able to operate virtual machines that use these media until they become accessible later.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;Check&lt;/b&gt; to open the Virtual Media Manager window and see what media are inaccessible, or press &lt;b&gt;Ignore&lt;/b&gt; to ignore this message.&lt;/p&gt;</source>
@@ -5879,7 +6392,7 @@ serial ports</comment>
</message>
<message>
<source>&lt;p&gt;Failed to download the VirtualBox User Manual from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</source>
- <translation>&lt;p&gt;Misslyckades med att hämta användarhandboken för VirtualBox från &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Misslyckades med att hämta användarhandboken för VirtualBox från &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;The VirtualBox User Manual has been successfully downloaded from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; and saved locally as &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;</source>
@@ -5899,11 +6412,11 @@ serial ports</comment>
</message>
<message>
<source>&lt;p&gt;You are about to remove the virtual machine &lt;b&gt;%1&lt;/b&gt; from the machine list.&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well?&lt;/p&gt;</source>
- <translation>&lt;p&gt;Du är på väg att ta bort den virtuella maskinen &lt;b&gt;%1&lt;/b&gt; från maskinlistan.&lt;/p&gt;&lt;p&gt;Vill du även ta bort filerna som innehåller den virtuella maskinen från din hårddisk?&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Du är på väg att ta bort den virtuella maskinen &lt;b&gt;%1&lt;/b&gt; från maskinlistan.&lt;/p&gt;&lt;p&gt;Vill du även ta bort filerna som innehåller den virtuella maskinen från din hårddisk?&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;You are about to remove the virtual machine &lt;b&gt;%1&lt;/b&gt; from the machine list.&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well? Doing this will also remove the files containing the machine&apos;s virtual hard disks if they are not in use by another machine.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Du är på väg att ta bort den virtuella maskinen &lt;b&gt;%1&lt;/b&gt; från maskinlistan.&lt;/p&gt;&lt;p&gt;Vill du även ta bort filerna som innehåller den virtuella maskinen från din hårddisk? Om du gör det så kommer även filerna som innehåller maskinens virtuella hårddiskar att tas bort såvida de inte används av någon annan maskin.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Du är på väg att ta bort den virtuella maskinen &lt;b&gt;%1&lt;/b&gt; från maskinlistan.&lt;/p&gt;&lt;p&gt;Vill du även ta bort filerna som innehåller den virtuella maskinen från din hårddisk? Om du gör det så kommer även filerna som innehåller maskinens virtuella hårddiskar att tas bort såvida de inte används av någon annan maskin.&lt;/p&gt;</translation>
</message>
<message>
<source>Delete all files</source>
@@ -5915,7 +6428,7 @@ serial ports</comment>
</message>
<message>
<source>You are about to remove the inaccessible virtual machine &lt;b&gt;%1&lt;/b&gt; from the machine list. Do you wish to proceed?</source>
- <translation>Du är på väg att ta bort den oåtkomliga virtuella maskinen &lt;b&gt;%1&lt;/b&gt; från maskinlistan. Vill du fortsätta?</translation>
+ <translation type="obsolete">Du är på väg att ta bort den oåtkomliga virtuella maskinen &lt;b&gt;%1&lt;/b&gt; från maskinlistan. Vill du fortsätta?</translation>
</message>
<message>
<source>Remove</source>
@@ -6163,7 +6676,7 @@ serial ports</comment>
</message>
<message>
<source>The virtual machine that you are changing has been started. Only certain settings can be changed while a machine is running. All other changes will be lost if you close this window now.</source>
- <translation type="unfinished"></translation>
+ <translation>Den virtuella maskinen som du ändrar har startats. Endast vissa inställningar kan ändras när en maskin är igång. Alla andra ändringar kommer att gå förlorade om du stänger detta fönster nu.</translation>
</message>
<message>
<source>Can&apos;t find snapshot named &lt;b&gt;%1&lt;/b&gt;.</source>
@@ -6197,20 +6710,74 @@ serial ports</comment>
</message>
<message>
<source>&lt;p&gt;The &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; has been successfully downloaded from &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; but can&apos;t be saved locally as &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;Please choose another location for that file.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;&lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; har hämtats från &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; men kan inte sparas lokalt som &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;Välj en annan plats för denna fil.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Network Operations Manager...</source>
+ <translation>Hanterare för nätverksåtgärder...</translation>
+ </message>
+ <message>
+ <source>Show Network Operations Manager</source>
+ <translation>Visa Hanterare för nätverksåtgärder</translation>
</message>
<message>
- <source>&lt;p&gt;Failed to download the &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; from &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <source>&lt;p&gt;You are about to remove following inaccessible virtual machines from the machine list:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Do you wish to proceed?&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Du är på väg att ta bort följande oåtkomliga virtuella maskiner från maskinlistan:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Vill du fortsätta?&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;You are about to remove following virtual machines from the machine list:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well? Doing this will also remove the files containing the machine&apos;s virtual hard disks if they are not in use by another machine.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Du är på väg att ta bort följande virtuella maskiner från maskinlistan:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Vill du även ta bort filerna som innehåller den virtuella maskinen från din hårddisk? Genom att göra det så tas även filerna bort som innehåller maskinens virtuella hårddiskar, om de inte används av en annan maskin.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;You are about to remove following virtual machines from the machine list:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well?&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Du är på väg att ta bort följande virtuella maskiner från maskinlistan:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Vill du även ta bort filerna som innehåller den virtuella maskinen från din hårddisk?&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;You have version %1 of the &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; installed.&lt;/p&gt;&lt;p&gt;You should download and install version %3 of this extension pack from Oracle!&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Du har version %1 av &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; installerat.&lt;/p&gt;&lt;p&gt;Du bör hämta och installera version %3 av detta tilläggspaket från Oracle!&lt;/p&gt;</translation>
</message>
<message>
<source>Ok</source>
<comment>extension pack</comment>
- <translation type="unfinished"></translation>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <source>Do you wish to cancel all current network operations?</source>
+ <translation>Vill du avbryta alla aktuella nätverksåtgärder?</translation>
+ </message>
+ <message>
+ <source>Do you wish to cancel all current network operations or leave them running in the background?</source>
+ <translation>Vill du avbryta alla aktuella nätverksåtgärder eller lämna dem körande i bakgrunden?</translation>
+ </message>
+ <message>
+ <source>Cancel All</source>
+ <translation>Avbryt alla</translation>
+ </message>
+ <message>
+ <source>Leave in Background</source>
+ <translation>Lämna i bakgrunden</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;Do you really want to send an ACPI shutdown signal to the virtual machine?&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Vill du verkligen skicka en ACPI Stäng av-signal till den virtuella maskinen?&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>ACPI Shutdown</source>
+ <comment>machine</comment>
+ <translation>ACPI Stäng av</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;Do you really want to power off the virtual machine?&lt;/p&gt;&lt;p&gt;This will cause any unsaved data in applications running inside it to be lost.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Vill du verkligen stänga av den virtuella maskinen?&lt;/p&gt;&lt;p&gt;Detta gör att allt osparat data i program som körs inuti den kommer att gå förlorat.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Power Off</source>
+ <comment>machine</comment>
+ <translation>Stäng av</translation>
+ </message>
+ <message>
+ <source>Failed to drop data.</source>
+ <translation>Misslyckades med att släppa data.</translation>
</message>
</context>
<context>
@@ -6281,6 +6848,41 @@ serial ports</comment>
</message>
</context>
<context>
+ <name>UINetworkManager</name>
+ <message>
+ <source>Network Operation</source>
+ <translation>Nätverksåtgärd</translation>
+ </message>
+ <message>
+ <source>Restart network operation</source>
+ <translation>Starta om nätverksåtgärd</translation>
+ </message>
+ <message>
+ <source>Cancel network operation</source>
+ <translation>Avbryt nätverksåtgärd</translation>
+ </message>
+ <message>
+ <source>Error: %1.</source>
+ <translation>Fel: %1.</translation>
+ </message>
+ <message>
+ <source>Network Operations Manager</source>
+ <translation>Hanterare för nätverksåtgärder</translation>
+ </message>
+ <message>
+ <source>There are no active network operations.</source>
+ <translation>Det finns inga aktiva nätverksåtgärder.</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel All</source>
+ <translation>A&amp;vbryt alla</translation>
+ </message>
+ <message>
+ <source>Cancel all active network operations</source>
+ <translation>Avbryt alla aktiva nätverksåtgärder</translation>
+ </message>
+</context>
+<context>
<name>UINewHDWizard</name>
<message>
<source>Create New Virtual Disk</source>
@@ -6512,8 +7114,8 @@ serial ports</comment>
<translation>Välj huruvida den nya virtuella diskfilen ska allokeras när den används eller om den ska skapas fullständigt allokerad.</translation>
</message>
<message>
- <source>&lt;p&gt;A &lt;b&gt;dynamically allocated&lt;/b&gt; virtual disk file will only use space on your physical hard disk as it fills up, although it will not shrink again automatically when space on it is freed.&lt;/p&gt;</source>
- <translation>&lt;p&gt;En &lt;b&gt;dynamiskt allokerad&lt;/b&gt; virtuell diskfil kommer endast att använda utrymme på din fysiska hårddisk när den fylls upp, dock kommer den inte att minska automatiskt när utrymme frigörs.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;A &lt;b&gt;dynamically allocated&lt;/b&gt; virtual disk file will only use space on your physical hard disk as it fills up (up to a &lt;b&gt;fixed maximum size&lt;/b&gt;), although it will not shrink again automatically when space on it is freed.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;En &lt;b&gt;dynamiskt allokerad&lt;/b&gt; virtuell diskfil kommer endast att använda utrymme på din fysiska hårddisk när den fylls upp (upp till en &lt;b&gt;fast maximal storlek&lt;/b&gt;), dock kommer den inte att minska automatiskt när utrymme frigörs.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;A &lt;b&gt;fixed size&lt;/b&gt; virtual disk file may take longer to create on some systems but is often faster to use.&lt;/p&gt;</source>
@@ -6984,7 +7586,7 @@ serial ports</comment>
</message>
<message>
<source>&lt;p&gt;If you wish you can now add a start-up disk to the new machine. You can either create a new virtual disk or select one from the list or from another location using the folder icon.&lt;/p&gt;&lt;p&gt;If you need a more complex virtual disk setup you can skip this step and make the changes to the machine settings once the machine is created.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Om du vill så kan du nu lägga till en uppstartsdisk till den nya maskinen. Du kan antingen skapa en ny virtuell disk, välja en från listan eller från en annan plats med hjälp av mappikonen.&lt;/p&gt;&lt;p&gt;Om du behöver en mer komplex konfiguration av din virtuella disk så kan du hoppa över detta steg och göra ändringar i maskinens inställningar när maskinen har skapats.&lt;/p&gt;</translation>
</message>
<message>
<source>Start-up &amp;Disk</source>
@@ -7153,6 +7755,34 @@ serial ports</comment>
</message>
</context>
<context>
+ <name>UISelectorWindow</name>
+ <message>
+ <source>Show Toolbar</source>
+ <translation>Visa verktygsrad</translation>
+ </message>
+ <message>
+ <source>Show Statusbar</source>
+ <translation>Visa statusrad</translation>
+ </message>
+ <message>
+ <source>Select a virtual machine file</source>
+ <translation>Välj en virtuell maskin-fil</translation>
+ </message>
+ <message>
+ <source>Virtual machine files (%1)</source>
+ <translation>Virtuella maskin-filer (%1)</translation>
+ </message>
+ <message>
+ <source>&lt;h3&gt;Welcome to VirtualBox!&lt;/h3&gt;&lt;p&gt;The left part of this window is a list of all virtual machines on your computer. The list is empty now because you haven&apos;t created any virtual machines yet.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;In order to create a new virtual machine, press the &lt;b&gt;New&lt;/b&gt; button in the main tool bar located at the top of the window.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;%1&lt;/b&gt; key to get instant help, or visit &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; for the latest information and news.&lt;/p&gt;</source>
+ <translation>&lt;h3&gt;Välkommen till VirtualBox!&lt;/h3&gt;&lt;p&gt;På den vänstra sidan av detta fönster finns en lista över alla virtuella maskiner på din dator. Listan är tom just nu därför att du inte har skapat några virtuella maskiner än.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;Tryck på knappen &lt;b&gt;Ny&lt;/b&gt; i huvudverktygsraden i överkanten av fönstret för att skapa en ny virtuell maskin.&lt;/p&gt;&lt;p&gt;Du kan trycka på tangenten &lt;b&gt;%1&lt;/b&gt; för att få hjälp eller besöka &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; för senaste information och nyheter.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Manager</source>
+ <comment>Note: main window title which is pretended by the product name.</comment>
+ <translation>Hanterare</translation>
+ </message>
+</context>
+<context>
<name>UISession</name>
<message>
<source>Install</source>
@@ -7220,6 +7850,10 @@ serial ports</comment>
<source>Proxy</source>
<translation>Proxy</translation>
</message>
+ <message>
+ <source>Display</source>
+ <translation>Skärm</translation>
+ </message>
</context>
<context>
<name>UISettingsDialogMachine</name>
@@ -7423,6 +8057,13 @@ serial ports</comment>
</message>
</context>
<context>
+ <name>UIUpdateStepVirtualBox</name>
+ <message>
+ <source>Checking for a new VirtualBox version...</source>
+ <translation>Letar efter en ny version av VirtualBox...</translation>
+ </message>
+</context>
+<context>
<name>UIVMCloseDialog</name>
<message>
<source>Close Virtual Machine</source>
@@ -7530,6 +8171,77 @@ serial ports</comment>
</message>
</context>
<context>
+ <name>UIVMLogViewer</name>
+ <message>
+ <source>Log Viewer</source>
+ <translation type="obsolete">Loggvisare</translation>
+ </message>
+ <message>
+ <source>&amp;Save</source>
+ <translation>S&amp;para</translation>
+ </message>
+ <message>
+ <source>&amp;Refresh</source>
+ <translation>&amp;Uppdatera</translation>
+ </message>
+ <message>
+ <source>%1 - VirtualBox Log Viewer</source>
+ <translation>%1 - VirtualBox loggvisare</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;No log files found. Press the &lt;b&gt;Refresh&lt;/b&gt; button to rescan the log folder &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Inga loggfiler hittades. Tryck på knappen &lt;b&gt;Uppdatera&lt;/b&gt; för att söka igenom loggmappen &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; igen.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Save VirtualBox Log As</source>
+ <translation>Spara VirtualBox-logg som</translation>
+ </message>
+ <message>
+ <source>&amp;Find</source>
+ <translation>&amp;Sök</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Stäng</translation>
+ </message>
+ <message>
+ <source>Close the search panel</source>
+ <translation>Stäng sökpanelen</translation>
+ </message>
+ <message>
+ <source>Enter a search string here</source>
+ <translation>Ange en söksträng här</translation>
+ </message>
+ <message>
+ <source>&amp;Previous</source>
+ <translation>&amp;Föregående</translation>
+ </message>
+ <message>
+ <source>Search for the previous occurrence of the string</source>
+ <translation>Sök efter föregående förekomst av strängen</translation>
+ </message>
+ <message>
+ <source>&amp;Next</source>
+ <translation>&amp;Nästa</translation>
+ </message>
+ <message>
+ <source>Search for the next occurrence of the string</source>
+ <translation>Sök efter nästa förekomst av strängen</translation>
+ </message>
+ <message>
+ <source>C&amp;ase Sensitive</source>
+ <translation>Skiftläges&amp;känslig</translation>
+ </message>
+ <message>
+ <source>Perform case sensitive search (when checked)</source>
+ <translation>Genomför skiftlägeskänslig sökning (om kryssad)</translation>
+ </message>
+ <message>
+ <source>String not found</source>
+ <translation>Strängen hittades inte</translation>
+ </message>
+</context>
+<context>
<name>UIVMPreviewWindow</name>
<message>
<source>Update Disabled</source>
@@ -10022,49 +10734,6 @@ Version %1</translation>
</message>
</context>
<context>
- <name>VBoxLogSearchPanel</name>
- <message>
- <source>Close the search panel</source>
- <translation>Stäng sökpanelen</translation>
- </message>
- <message>
- <source>Find </source>
- <translation>Sök </translation>
- </message>
- <message>
- <source>Enter a search string here</source>
- <translation>Ange en söksträng här</translation>
- </message>
- <message>
- <source>&amp;Previous</source>
- <translation>&amp;Föregående</translation>
- </message>
- <message>
- <source>Search for the previous occurrence of the string</source>
- <translation>Sök efter föregående förekomst av strängen</translation>
- </message>
- <message>
- <source>&amp;Next</source>
- <translation>&amp;Nästa</translation>
- </message>
- <message>
- <source>Search for the next occurrence of the string</source>
- <translation>Sök efter nästa förekomst av strängen</translation>
- </message>
- <message>
- <source>C&amp;ase Sensitive</source>
- <translation>Skiftläges&amp;känslig</translation>
- </message>
- <message>
- <source>Perform case sensitive search (when checked)</source>
- <translation>Genomför skiftlägeskänslig sökning (om kryssad)</translation>
- </message>
- <message>
- <source>String not found</source>
- <translation>Strängen hittades inte</translation>
- </message>
-</context>
-<context>
<name>VBoxMediaComboBox</name>
<message>
<source>&lt;no hard disk&gt;</source>
@@ -10530,37 +11199,12 @@ Version %1</translation>
<translation type="obsolete">Visa den virtuella diskhanteraren</translation>
</message>
<message>
- <source>&amp;Preferences...</source>
- <comment>global settings</comment>
- <translation>&amp;Inställningar...</translation>
- </message>
- <message>
- <source>Display the global settings dialog</source>
- <translation>Visa allmänna inställningar</translation>
- </message>
- <message>
- <source>E&amp;xit</source>
- <translation>A&amp;vsluta</translation>
- </message>
- <message>
- <source>Close application</source>
- <translation>Stäng programmet</translation>
- </message>
- <message>
- <source>&amp;New...</source>
- <translation>&amp;Ny...</translation>
- </message>
- <message>
- <source>Create a new virtual machine</source>
- <translation>Skapa en ny virtuell maskin</translation>
- </message>
- <message>
<source>&amp;Settings...</source>
- <translation>&amp;Inställningar...</translation>
+ <translation type="obsolete">&amp;Inställningar...</translation>
</message>
<message>
<source>Configure the selected virtual machine</source>
- <translation>Konfigurera den markerade virtuella maskinen</translation>
+ <translation type="obsolete">Konfigurera den markerade virtuella maskinen</translation>
</message>
<message>
<source>&amp;Delete</source>
@@ -10575,18 +11219,10 @@ Version %1</translation>
<translation type="obsolete">Fö&amp;rkasta</translation>
</message>
<message>
- <source>Discard the saved state of the selected virtual machine</source>
- <translation>Förkasta det sparade tillståndet för den markerade virtuella maskinen</translation>
- </message>
- <message>
<source>&amp;Refresh</source>
<translation type="obsolete">&amp;Uppdatera</translation>
</message>
<message>
- <source>Refresh the accessibility state of the selected virtual machine</source>
- <translation>Uppdatera tillgänglighetstillståndet för den markerade virtuella maskinen</translation>
- </message>
- <message>
<source>&amp;File</source>
<translation type="obsolete">&amp;Arkiv</translation>
</message>
@@ -10607,32 +11243,8 @@ Version %1</translation>
<translation type="obsolete">B&amp;eskrivning *</translation>
</message>
<message>
- <source>S&amp;how</source>
- <translation>V&amp;isa</translation>
- </message>
- <message>
- <source>Switch to the window of the selected virtual machine</source>
- <translation>Växla till fönstret för den markerade virtuella maskinen</translation>
- </message>
- <message>
- <source>S&amp;tart</source>
- <translation>St&amp;arta</translation>
- </message>
- <message>
- <source>Start the selected virtual machine</source>
- <translation>Starta den markerade virtuella maskinen</translation>
- </message>
- <message>
<source>&amp;Machine</source>
- <translation>&amp;Maskin</translation>
- </message>
- <message>
- <source>Show &amp;Log...</source>
- <translation>Visa lo&amp;gg...</translation>
- </message>
- <message>
- <source>Show the log files of the selected virtual machine</source>
- <translation>Visa loggfilerna för den markerade virtuella maskinen</translation>
+ <translation type="obsolete">&amp;Maskin</translation>
</message>
<message>
<source>R&amp;esume</source>
@@ -10640,159 +11252,49 @@ Version %1</translation>
</message>
<message>
<source>Resume the execution of the virtual machine</source>
- <translation>Återuppta körningen av den virtuella maskinen</translation>
+ <translation type="obsolete">Återuppta körningen av den virtuella maskinen</translation>
</message>
<message>
<source>&amp;Pause</source>
- <translation>Gör &amp;paus</translation>
+ <translation type="obsolete">Gör &amp;paus</translation>
</message>
<message>
<source>Suspend the execution of the virtual machine</source>
- <translation>Pausa körningen av den virtuella maskinen</translation>
+ <translation type="obsolete">Pausa körningen av den virtuella maskinen</translation>
</message>
<message>
<source>&lt;h3&gt;Welcome to VirtualBox!&lt;/h3&gt;&lt;p&gt;The left part of this window is a list of all virtual machines on your computer. The list is empty now because you haven&apos;t created any virtual machines yet.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;In order to create a new virtual machine, press the &lt;b&gt;New&lt;/b&gt; button in the main tool bar located at the top of the window.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;%1&lt;/b&gt; key to get instant help, or visit &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; for the latest information and news.&lt;/p&gt;</source>
- <translation>&lt;h3&gt;Välkommen till VirtualBox!&lt;/h3&gt;&lt;p&gt;Den vänstra sidan av detta fönster är tänkt att visa en lista över alla virtuella maskiner på din dator. Listan är tom just nu därför att du inte har skapat några virtuella maskiner än.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;Tryck på knappen &lt;b&gt;Ny&lt;/b&gt; i huvudverktygsraden i överkanten av fönstret för att skapa en ny virtuell maskin.&lt;/p&gt;&lt;p&gt;Du kan trycka på tangenten &lt;b&gt;%1&lt;/b&gt; för att få hjälp eller besöka &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; för senaste information och nyheter.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;Virtual Media Manager...</source>
- <translation>Hanterare för virtuella &amp;media...</translation>
- </message>
- <message>
- <source>Display the Virtual Media Manager dialog</source>
- <translation>Visa Hanterare för virtuella media</translation>
+ <translation type="obsolete">&lt;h3&gt;Välkommen till VirtualBox!&lt;/h3&gt;&lt;p&gt;Den vänstra sidan av detta fönster är tänkt att visa en lista över alla virtuella maskiner på din dator. Listan är tom just nu därför att du inte har skapat några virtuella maskiner än.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;Tryck på knappen &lt;b&gt;Ny&lt;/b&gt; i huvudverktygsraden i överkanten av fönstret för att skapa en ny virtuell maskin.&lt;/p&gt;&lt;p&gt;Du kan trycka på tangenten &lt;b&gt;%1&lt;/b&gt; för att få hjälp eller besöka &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; för senaste information och nyheter.&lt;/p&gt;</translation>
</message>
<message>
<source>Log</source>
<comment>icon text</comment>
- <translation>Logg</translation>
+ <translation type="obsolete">Logg</translation>
</message>
<message>
<source>Sun VirtualBox</source>
<translation type="obsolete">Sun VirtualBox</translation>
</message>
<message>
- <source>&amp;Import Appliance...</source>
- <translation>&amp;Importera appliance...</translation>
- </message>
- <message>
- <source>Import an appliance into VirtualBox</source>
- <translation>Importera en appliance till VirtualBox</translation>
- </message>
- <message>
- <source>&amp;Export Appliance...</source>
- <translation>&amp;Exportera appliance...</translation>
- </message>
- <message>
- <source>Export one or more VirtualBox virtual machines as an appliance</source>
- <translation>Exportera en appliance från virtuella maskiner från VirtualBox</translation>
- </message>
- <message>
- <source>Re&amp;fresh</source>
- <translation>&amp;Uppdatera</translation>
- </message>
- <message>
- <source>&amp;File</source>
- <comment>Mac OS X version</comment>
- <translation>&amp;Arkiv</translation>
- </message>
- <message>
- <source>&amp;File</source>
- <comment>Non Mac OS X version</comment>
- <translation>&amp;Arkiv</translation>
- </message>
- <message>
<source>Select a virtual machine file</source>
- <translation>Välj en virtuell maskin-fil</translation>
+ <translation type="obsolete">Välj en virtuell maskin-fil</translation>
</message>
<message>
<source>Virtual machine files (%1)</source>
- <translation>Virtuella maskin-filer (%1)</translation>
+ <translation type="obsolete">Virtuella maskin-filer (%1)</translation>
</message>
<message>
<source>Manager</source>
<comment>Note: main window title which is pretended by the product name.</comment>
- <translation>Hanterare</translation>
- </message>
- <message>
- <source>&amp;Add...</source>
- <translation>&amp;Lägg till...</translation>
- </message>
- <message>
- <source>Add an existing virtual machine</source>
- <translation>Lägg till en befintlig virtuell maskin</translation>
- </message>
- <message>
- <source>&amp;Remove</source>
- <translation>&amp;Ta bort</translation>
- </message>
- <message>
- <source>Remove the selected virtual machine</source>
- <translation>Ta bort markerad virtuell maskin</translation>
- </message>
- <message>
- <source>Show in Finder</source>
- <translation>Visa i Finder</translation>
- </message>
- <message>
- <source>Show the VirtualBox Machine Definition file in Finder.</source>
- <translation>Visa VirtualBox Machine Definition-fil i Finder.</translation>
- </message>
- <message>
- <source>Create Alias on Desktop</source>
- <translation>Skapa alias på skrivbordet</translation>
- </message>
- <message>
- <source>Creates an Alias file to the VirtualBox Machine Definition file on your Desktop.</source>
- <translation>Skapar en aliasfil till VirtualBox Machine Definition-filen på ditt skrivbord.</translation>
- </message>
- <message>
- <source>Show in Explorer</source>
- <translation>Visa i Utforskaren</translation>
- </message>
- <message>
- <source>Show the VirtualBox Machine Definition file in Explorer.</source>
- <translation>Visa VirtualBox Machine Definition-filen i Utforskaren.</translation>
- </message>
- <message>
- <source>Create Shortcut on Desktop</source>
- <translation>Skapa genväg på skrivbordet</translation>
- </message>
- <message>
- <source>Creates an Shortcut file to the VirtualBox Machine Definition file on your Desktop.</source>
- <translation>Skapar en genvägsfil till VirtualBox Machine Definition-filen på ditt skrivbord.</translation>
- </message>
- <message>
- <source>Show in File Manager</source>
- <translation>Visa i filhanterare</translation>
- </message>
- <message>
- <source>Show the VirtualBox Machine Definition file in the File Manager</source>
- <translation>Visa VirtualBox Machine Definition-filen i filhanteraren</translation>
+ <translation type="obsolete">Hanterare</translation>
</message>
<message>
<source>Show Toolbar</source>
- <translation>Visa verktygsrad</translation>
+ <translation type="obsolete">Visa verktygsrad</translation>
</message>
<message>
<source>Show Statusbar</source>
- <translation>Visa statusrad</translation>
- </message>
- <message>
- <source>Cl&amp;one...</source>
- <translation>Kl&amp;ona...</translation>
- </message>
- <message>
- <source>Clone the selected virtual machine</source>
- <translation>Klona den markerade virtuella maskinen</translation>
- </message>
- <message>
- <source>Discard</source>
- <translation>Förkasta</translation>
- </message>
- <message>
- <source>D&amp;iscard Saved State</source>
- <translation>För&amp;kasta sparat tillstånd</translation>
+ <translation type="obsolete">Visa statusrad</translation>
</message>
</context>
<context>
@@ -11264,41 +11766,6 @@ Version %1</translation>
</message>
</context>
<context>
- <name>VBoxVMLogViewer</name>
- <message>
- <source>Log Viewer</source>
- <translation>Loggvisare</translation>
- </message>
- <message>
- <source>&amp;Save</source>
- <translation>S&amp;para</translation>
- </message>
- <message>
- <source>&amp;Refresh</source>
- <translation>&amp;Uppdatera</translation>
- </message>
- <message>
- <source>%1 - VirtualBox Log Viewer</source>
- <translation>%1 - VirtualBox loggvisare</translation>
- </message>
- <message>
- <source>&lt;p&gt;No log files found. Press the &lt;b&gt;Refresh&lt;/b&gt; button to rescan the log folder &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Inga loggfiler hittades. Tryck på knappen &lt;b&gt;Uppdatera&lt;/b&gt; för att söka igenom loggmappen &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; igen.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Save VirtualBox Log As</source>
- <translation>Spara VirtualBox-logg som</translation>
- </message>
- <message>
- <source>&amp;Find</source>
- <translation>&amp;Sök</translation>
- </message>
- <message>
- <source>Close</source>
- <translation>Stäng</translation>
- </message>
-</context>
-<context>
<name>VBoxVMSettingsCD</name>
<message>
<source>Host CD/DVD drive is not selected</source>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
index 3eb486cf8..e82b982b1 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
@@ -2595,6 +2595,10 @@
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts
index 42c7e03e2..6a64ebfa8 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts
@@ -2897,6 +2897,10 @@ p, li { white-space: pre-wrap; }
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>ви увімкнули приÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð²Ð¾Ð²Ð¸Ð¼Ñ–Ñ€Ð½Ð¾Ð³Ð¾ відео. ОÑкільки приÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð²Ð¾Ð²Ð¸Ð¼Ñ–Ñ€Ð½Ð¾Ð³Ð¾ відео підтримуєтьÑÑ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ Ð³Ð¾Ñтьових Windows, цю влаÑтивіÑÑ‚ÑŒ буде вимкнено.</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts
index acc1e63ed..2b4503b29 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts
@@ -2122,6 +2122,10 @@
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts
index 35c7e7be6..fbd9e737a 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts
@@ -26,71 +26,7 @@
<message>
<source>Oracle Corporation</source>
<comment>Comma-separated list of translators</comment>
- <translation>Victor Wang</translation>
- </message>
-</context>
-<context>
- <name>AttachmentsModel</name>
- <message>
- <source>Double-click to add a new attachment</source>
- <translation type="obsolete">åŒå‡»åˆ†é…一个新的虚拟硬盘</translation>
- </message>
- <message>
- <source>Hard Disk</source>
- <translation type="obsolete">虚拟硬盘</translation>
- </message>
- <message>
- <source>Slot</source>
- <translation type="obsolete">æ’槽</translation>
- </message>
-</context>
-<context>
- <name>BootItemsList</name>
- <message>
- <source>Move the selected boot device up.</source>
- <translation type="obsolete">å‘上移动所选å¯åŠ¨è®¾å¤‡.</translation>
- </message>
- <message>
- <source>Move the selected boot device down.</source>
- <translation type="obsolete">å‘下移动所选å¯åŠ¨è®¾å¤‡.</translation>
- </message>
- <message>
- <source>Move Up (Ctrl-Up)</source>
- <translation type="obsolete">å‘上移动 (Ctrl-Up)</translation>
- </message>
- <message>
- <source>Move Down (Ctrl-Down)</source>
- <translation type="obsolete">å‘下移动 (Ctrl-Down)</translation>
- </message>
- <message>
- <source>Moves the selected boot device up.</source>
- <translation type="obsolete">å‘上移动所选å¯åŠ¨è®¾å¤‡.</translation>
- </message>
- <message>
- <source>Moves the selected boot device down.</source>
- <translation type="obsolete">å‘下移动所选å¯åŠ¨è®¾å¤‡.</translation>
- </message>
-</context>
-<context>
- <name>BootItemsTable</name>
- <message>
- <source>Defines the boot device order. Use the checkboxes on the left to enable or disable individual boot devices. Move items up and down to change the device order.</source>
- <translation type="obsolete">设置å¯åŠ¨é¡ºåºã€‚用选择框æ¥å¯ç”¨æˆ–ç¦ç”¨éœ€è¦æ”¯æŒçš„å¯åŠ¨è®¾å¤‡ã€‚使用上下键改å˜è®¾å¤‡å¯åŠ¨é¡ºåº.</translation>
- </message>
-</context>
-<context>
- <name>HDItemsModel</name>
- <message>
- <source>Double-click to add a new attachment</source>
- <translation type="obsolete">åŒå‡»åˆ†é…一个新的虚拟硬盘</translation>
- </message>
- <message>
- <source>Hard Disk</source>
- <translation type="obsolete">虚拟硬盘</translation>
- </message>
- <message>
- <source>Slot</source>
- <translation type="obsolete">æ’槽</translation>
+ <translation>æŽæŒ¯åŽ , å•è¾¾åµ˜ , Victor Wang</translation>
</message>
</context>
<context>
@@ -105,7 +41,7 @@
</message>
<message>
<source>VirtualBox - Error In %1</source>
- <translation>è™šæ‹Ÿç”µè„‘æŽ§åˆ¶å° - 在 %1 处出现错误</translation>
+ <translation>VirtualBox - 在 %1 处出现错误</translation>
</message>
<message>
<source>&lt;html&gt;&lt;b&gt;%1 (rc=%2)&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;</source>
@@ -113,33 +49,33 @@
</message>
<message>
<source>Please try reinstalling VirtualBox.</source>
- <translation>é‡æ–°å®‰è£…虚拟电脑控制å°å¯èƒ½è§£å†³è¯¥é—®é¢˜.</translation>
- </message>
- <message>
- <source>This error means that the kernel driver was either not able to allocate enough memory or that some mapping operation failed.&lt;br/&gt;&lt;br/&gt;There are known problems with Linux 2.6.29. If you are running such a kernel, please edit /usr/src/vboxdrv-*/Makefile and enable &lt;i&gt;VBOX_USE_INSERT_PAGE = 1&lt;/i&gt;. After that, re-compile the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root.</source>
- <translation type="obsolete">This error means that the kernel driver was either not able to allocate enough memory or that some mapping operation failed.&lt;br/&gt;&lt;br/&gt;There are known problems with Linux 2.6.29. If you are running such a kernel, please edit /usr/src/vboxdrv-*/Makefile and enable &lt;i&gt;VBOX_USE_INSERT_PAGE = 1&lt;/i&gt;. After that, re-compile the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root.</translation>
+ <translation>é‡æ–°å®‰è£…VirtualBoxå¯èƒ½è§£å†³è¯¥é—®é¢˜ã€‚</translation>
</message>
<message>
<source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root. Users of Ubuntu, Fedora or Mandriva should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.</source>
- <translation type="obsolete">The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root. Users of Ubuntu, Fedora or Mandriva should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.</translation>
+ <translation>VirtualBox Linux å†…æ ¸é©±åŠ¨ç¨‹åº (vboxdrv) 没有加载,或 /dev/vboxdrv 有æƒé™é—®é¢˜ã€‚请以 root æƒé™æ‰§è¡Œ&lt;br/&gt;&lt;br/&gt;&lt;font color=blue&gt;“/etc/init.d/vboxdrv setupâ€&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;,以便é‡æ–°å®‰è£…核心模å—。Ubuntuã€Fedora 或 Mandriva 的用户应该首先安装 DKMS 软件包。此程åºåŒ…跟踪 Linux 内核的更改,并在必è¦æ—¶é‡æ–°ç¼–译 vboxdrv 内核模å—。</translation>
</message>
<message>
<source>Make sure the kernel module has been loaded successfully.</source>
- <translation>Make sure the kernel module has been loaded successfully.</translation>
+ <translation>请确ä¿å·²æˆåŠŸåŠ è½½å†…核模å—。</translation>
</message>
<message>
<source>VirtualBox - Runtime Error</source>
- <translation>è™šæ‹Ÿç”µè„‘æŽ§åˆ¶å° - è¿è¡Œæ—¶é”™è¯¯</translation>
+ <translation>VirtualBox - è¿è¡Œæ—¶é”™è¯¯</translation>
</message>
<message>
<source>&lt;b&gt;Cannot access the kernel driver!&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;</source>
- <translation>&lt;b&gt;Cannot access the kernel driver!&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;</translation>
+ <translation>&lt;b&gt;无法访问内核驱动程åºï¼&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
<source>Unknown error %2 during initialization of the Runtime</source>
<translation>åˆå§‹åŒ–è¿è¡Œæ—¶å‡ºçŽ°æœªçŸ¥çš„ %2 错误</translation>
</message>
<message>
+ <source>Kernel driver not accessible</source>
+ <translation>内核驱动无法访问</translation>
+ </message>
+ <message>
<source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Please try completely uninstalling and reinstalling VirtualBox.</source>
<translation>现有的内核模å—与当å‰ç‰ˆæœ¬çš„VirtualBoxä¸åŒ¹é…。因此导致安装失败,请试ç€å®Œå…¨å¸è½½VirtualBoxåŽï¼Œå†é‡æ–°å®‰è£…一次.</translation>
</message>
@@ -148,17 +84,9 @@
<translation>现有的内核模å—与当å‰ç‰ˆæœ¬çš„VirtualBoxä¸åŒ¹é…。因此导致安装失败。å¯å°è¯•æ‰§è¡Œ &lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;以修å¤è¯¥é—®é¢˜ã€‚并确认你没有混åˆOSEå’ŒPUEL版本的VirtualBox.</translation>
</message>
<message>
- <source>Kernel driver not accessible</source>
- <translation>内核驱动无法访问</translation>
- </message>
- <message>
<source>This error means that the kernel driver was either not able to allocate enough memory or that some mapping operation failed.</source>
<translation>该错误æ„味ç€å½“å‰çš„内核驱动模å—无法分é…足够的内存或æŸäº›æ˜ å°„æ“作失败.</translation>
</message>
- <message>
- <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root. If it is available in your distribution, you should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QIArrowSplitter</name>
@@ -183,17 +111,10 @@
</message>
</context>
<context>
- <name>QIHelpButton</name>
- <message>
- <source>&amp;Help</source>
- <translation type="obsolete">帮助(&amp;H)</translation>
- </message>
-</context>
-<context>
<name>QIHttp</name>
<message>
<source>Connection timed out</source>
- <translation>连接超时.</translation>
+ <translation>连接超时</translation>
</message>
<message>
<source>Could not locate the file on the server (response: %1)</source>
@@ -208,13 +129,6 @@
</message>
</context>
<context>
- <name>QILabelPrivate</name>
- <message>
- <source>&amp;Copy</source>
- <translation type="obsolete">å¤åˆ¶(&amp;C)</translation>
- </message>
-</context>
-<context>
<name>QIMessageBox</name>
<message>
<source>OK</source>
@@ -246,18 +160,11 @@
</message>
<message>
<source>Copy all errors to the clipboard</source>
- <translation type="unfinished"></translation>
+ <translation>å¤åˆ¶å…¨éƒ¨é”™è¯¯ä¿¡æ¯åˆ°ç²˜è´´æ¿</translation>
</message>
<message>
<source>Copy</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>QIRichLabel</name>
- <message>
- <source>Copy to clipboard</source>
- <translation type="obsolete">å¤åˆ¶åˆ°ç²˜è´´æ¿</translation>
+ <translation>å¤åˆ¶</translation>
</message>
</context>
<context>
@@ -274,25 +181,18 @@
</message>
<message>
<source>&lt;qt&gt;The value of the &lt;b&gt;%1&lt;/b&gt; field on the &lt;b&gt;%2&lt;/b&gt; page is %3.&lt;/qt&gt;</source>
- <translation>&lt;qt&gt;The value of the &lt;b&gt;%1&lt;/b&gt; field on the &lt;b&gt;%2&lt;/b&gt; page is %3.&lt;/qt&gt;</translation>
+ <translation>&lt;qt&gt;在 &lt;b&gt;%2&lt;/b&gt; 页é¢ä¸Š &lt;b&gt;%1&lt;/b&gt; 字段的值为 %3。&lt;/qt&gt;</translation>
</message>
<message>
<source>&lt;qt&gt;One of the values on the &lt;b&gt;%1&lt;/b&gt; page is %2.&lt;/qt&gt;</source>
- <translation>&lt;qt&gt;One of the values on the &lt;b&gt;%1&lt;/b&gt; page is %2.&lt;/qt&gt;</translation>
+ <translation>&lt;qt&gt;&lt;b&gt;%1&lt;/b&gt; 页é¢ä¸Šçš„æŸä¸ªå€¼ä¸º %2。&lt;/qt&gt;</translation>
</message>
</context>
<context>
<name>QIWizardPage</name>
<message>
<source>Use the &lt;b&gt;%1&lt;/b&gt; button to go to the next page of the wizard and the &lt;b&gt;%2&lt;/b&gt; button to return to the previous page. You can also press &lt;b&gt;%3&lt;/b&gt; if you want to cancel the execution of this wizard.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>QListBox</name>
- <message>
- <source>Inaccessible</source>
- <translation type="obsolete">ä¸å¯ä½¿ç”¨</translation>
+ <translation>使用&lt;b&gt;%1&lt;/b&gt;按钮æ¥è½¬åˆ°å‘导的下一页é¢ï¼Œä½¿ç”¨&lt;b&gt;%2&lt;/b&gt;按钮æ¥è¿”回上一页é¢ã€‚如果您想è¦å–消本å‘导的执行,也å¯ä»¥æŒ‰&lt;b&gt;%3&lt;/b&gt;。&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -302,26 +202,6 @@
<translation>控制(&amp;M)</translation>
</message>
<message>
- <source>&amp;Fullscreen Mode</source>
- <translation type="obsolete">å…¨å±æ¨¡å¼(&amp;F)</translation>
- </message>
- <message>
- <source>Switch to fullscreen mode</source>
- <translation type="obsolete">切æ¢åˆ°å…¨å±æ¨¡å¼</translation>
- </message>
- <message>
- <source>Seam&amp;less Mode</source>
- <translation type="obsolete">æ— ç¼æ¨¡å¼(&amp;l)</translation>
- </message>
- <message>
- <source>Switch to seamless desktop integration mode</source>
- <translation type="obsolete">切æ¢åˆ°æ— ç¼æ¨¡å¼</translation>
- </message>
- <message>
- <source>Auto-resize &amp;Guest Display</source>
- <translation type="unfinished">自动调整显示尺寸(&amp;G)</translation>
- </message>
- <message>
<source>Automatically resize the guest display when the window is resized (requires Guest Additions)</source>
<translation>当窗å£å¤§å°å˜åŠ¨æ—¶è‡ªåŠ¨è°ƒæ•´è™šæ‹Ÿç”µè„‘内的显示尺寸(需è¦åœ¨è™šæ‹Ÿç”µè„‘上安装增强功能包)</translation>
</message>
@@ -342,14 +222,6 @@
<translation>临时ç¦æ­¢è‡ªåŠ¨ç‹¬å é¼ æ ‡</translation>
</message>
<message>
- <source>Enable &amp;Mouse Integration</source>
- <translation type="obsolete">å¯ç”¨è‡ªåŠ¨æ•èŽ·é¼ æ ‡(&amp;M)</translation>
- </message>
- <message>
- <source>Enable temporarily disabled host mouse pointer integration</source>
- <translation type="obsolete">å¯ä¸´æ—¶ç¦æ­¢è‡ªåŠ¨ç‹¬å é¼ æ ‡</translation>
- </message>
- <message>
<source>&amp;Insert Ctrl-Alt-Del</source>
<translation>å‘é€ Ctrl-Alt-Del (&amp;E)</translation>
</message>
@@ -374,10 +246,6 @@
<translation>为当å‰è™šæ‹Ÿç”µè„‘生æˆä¸€ä¸ªå¤‡ä»½</translation>
</message>
<message>
- <source>Session I&amp;nformation Dialog</source>
- <translation type="obsolete">è¿è¡ŒçŠ¶æ€(&amp;n)</translation>
- </message>
- <message>
<source>Show Session Information Dialog</source>
<translation>显示当å‰è¿è¡ŒçŠ¶æ€ä¿¡æ¯</translation>
</message>
@@ -390,10 +258,6 @@
<translation>将正在è¿è¡Œçš„虚拟电脑暂åœ</translation>
</message>
<message>
- <source>R&amp;esume</source>
- <translation type="obsolete">唤醒(&amp;e)</translation>
- </message>
- <message>
<source>&amp;Reset</source>
<translation>é‡å¯ (&amp;R)</translation>
</message>
@@ -403,15 +267,11 @@
</message>
<message>
<source>ACPI Sh&amp;utdown</source>
- <translation></translation>
- </message>
- <message>
- <source>ACPI S&amp;hutdown</source>
- <translation type="obsolete">正常关闭 (&amp;H)</translation>
+ <translation>正常关机(&amp;U)</translation>
</message>
<message>
<source>Send the ACPI Power Button press event to the virtual machine</source>
- <translation>å‘é€å…³é—­ä¿¡å·åˆ°è™šæ‹Ÿç”µè„‘</translation>
+ <translation>å‘é€ACPI电æºæŒ‰é’®å…³é—­ä¿¡å·åˆ°è™šæ‹Ÿç”µè„‘</translation>
</message>
<message>
<source>&amp;Close...</source>
@@ -423,7 +283,7 @@
</message>
<message>
<source>&amp;View</source>
- <translation></translation>
+ <translation>视图(&amp;V)</translation>
</message>
<message>
<source>&amp;Devices</source>
@@ -451,15 +311,11 @@
</message>
<message>
<source>&amp;Shared Folders...</source>
- <translation>分é…æ•°æ®ç©ºé—´(&amp;S)...</translation>
+ <translation>共享文件夹(&amp;S)...</translation>
</message>
<message>
<source>Create or modify shared folders</source>
- <translation>打开数æ®ç©ºé—´å¯¹è¯æ¡†</translation>
- </message>
- <message>
- <source>Enable or disable remote desktop (RDP) connections to this machine</source>
- <translation type="obsolete">å¯ç”¨æˆ–ç¦ç”¨åˆ°å½“å‰è™šæ‹Ÿç”µè„‘的远程桌é¢è¿žæŽ¥</translation>
+ <translation>打开共享文件夹对è¯æ¡†</translation>
</message>
<message>
<source>&amp;Install Guest Additions...</source>
@@ -471,7 +327,7 @@
</message>
<message>
<source>De&amp;bug</source>
- <translation>调试(&amp;b)</translation>
+ <translation>调试(&amp;B)</translation>
</message>
<message>
<source>&amp;Statistics...</source>
@@ -484,74 +340,73 @@
<translation>命令行(&amp;C)...</translation>
</message>
<message>
- <source>&amp;Logging...</source>
- <comment>debug action</comment>
- <translation type="obsolete">ä¿å­˜æ—¥å¿—(&amp;L)...</translation>
- </message>
- <message>
<source>&amp;Help</source>
<translation>帮助(&amp;H)</translation>
</message>
<message>
<source>Dock Icon</source>
- <translation></translation>
+ <translation>åœé å›¾æ ‡</translation>
</message>
<message>
<source>Show Monitor Preview</source>
- <translation></translation>
+ <translation>显示监视器预览</translation>
</message>
<message>
<source>Show Application Icon</source>
- <translation></translation>
+ <translation>显示应用程åºå›¾æ ‡</translation>
</message>
<message>
<source>Enable remote desktop (RDP) connections to this machine</source>
- <translation type="unfinished"></translation>
+ <translation>å¯ç”¨åˆ°å½“å‰è™šæ‹Ÿç”µè„‘的远程桌é¢(RDP)连接</translation>
</message>
<message>
<source>Enable &amp;Logging...</source>
<comment>debug action</comment>
- <translation type="unfinished"></translation>
+ <translation>å¯ç”¨æ—¥å¿—(&amp;L)...</translation>
</message>
<message>
<source>Switch to &amp;Fullscreen</source>
- <translation type="unfinished"></translation>
+ <translation>切æ¢åˆ°å…¨å±æ¨¡å¼(&amp;F)</translation>
</message>
<message>
<source>Switch between normal and fullscreen mode</source>
- <translation type="unfinished"></translation>
+ <translation>切æ¢æ­£å¸¸æˆ–å…¨å±æ¨¡å¼</translation>
</message>
<message>
<source>Switch to Seam&amp;less Mode</source>
- <translation type="unfinished"></translation>
+ <translation>切æ¢åˆ°æ— ç¼æ¨¡å¼(&amp;L)</translation>
</message>
<message>
<source>Switch between normal and seamless desktop integration mode</source>
- <translation type="unfinished"></translation>
+ <translation>切æ¢æ­£å¸¸æˆ–æ— ç¼æ¨¡å¼</translation>
</message>
<message>
<source>Switch to &amp;Scale Mode</source>
- <translation type="unfinished"></translation>
+ <translation>切æ¢åˆ°è‡ªåŠ¨ç¼©æ”¾æ¨¡å¼(&amp;S)</translation>
</message>
<message>
<source>Switch between normal and scale mode</source>
- <translation type="unfinished"></translation>
+ <translation>切æ¢æ­£å¸¸æˆ–自动缩放模å¼</translation>
+ </message>
+ <message>
+ <source>Auto-resize &amp;Guest Display</source>
+ <translation>自动调整显示尺寸(&amp;G)</translation>
</message>
<message>
<source>Enable R&amp;emote Display</source>
- <translation type="unfinished"></translation>
+ <translation>å¯ç”¨è¿œç¨‹æ¡Œé¢(&amp;E)</translation>
</message>
<message>
<source>&amp;Settings...</source>
- <translation type="unfinished">设置(&amp;S)...</translation>
+ <translation>设置(&amp;S)...</translation>
</message>
<message>
<source>Manage the virtual machine settings</source>
- <translation type="unfinished"></translation>
+ <translation>设置所选的虚拟电脑</translation>
</message>
<message>
<source>Session I&amp;nformation...</source>
- <translation type="unfinished"></translation>
+ <translation>è¿è¡ŒçŠ¶æ€(&amp;N)...</translation>
</message>
</context>
<context>
@@ -570,15 +425,15 @@
</message>
<message>
<source>Product-URL</source>
- <translation>Product-URL</translation>
+ <translation>äº§å“ URL</translation>
</message>
<message>
<source>Vendor</source>
- <translation>厂商</translation>
+ <translation>供应商</translation>
</message>
<message>
<source>Vendor-URL</source>
- <translation>Vendor-URL</translation>
+ <translation>供应商 URL</translation>
</message>
<message>
<source>Version</source>
@@ -590,7 +445,7 @@
</message>
<message>
<source>License</source>
- <translation>版æƒ</translation>
+ <translation>许å¯</translation>
</message>
<message>
<source>Guest OS Type</source>
@@ -598,7 +453,7 @@
</message>
<message>
<source>CPU</source>
- <translation>CPU</translation>
+ <translation>处ç†å™¨(CPU)</translation>
</message>
<message>
<source>RAM</source>
@@ -645,10 +500,6 @@
<translation>未知硬件项目</translation>
</message>
<message>
- <source>MB</source>
- <translation type="obsolete">MB</translation>
- </message>
- <message>
<source>&lt;b&gt;Original Value:&lt;/b&gt; %1</source>
<translation>&lt;b&gt;原值:&lt;/b&gt; %1</translation>
</message>
@@ -661,26 +512,16 @@
<translation>警告:</translation>
</message>
<message>
- <source>MB</source>
- <comment>size suffix MBytes=1024 KBytes</comment>
- <translation type="obsolete">MB</translation>
- </message>
- <message>
- <source>MB</source>
- <comment>size suffix MBytes=1024KBytes</comment>
- <translation type="obsolete">MB</translation>
- </message>
- <message>
<source>Hard Disk Controller (SAS)</source>
- <translation type="unfinished"></translation>
+ <translation>硬盘控制器 (SAS)</translation>
</message>
<message>
<source>When checked a new unique MAC address will assigned to all configured network cards.</source>
- <translation type="unfinished"></translation>
+ <translation>选中时,新的唯一的 MAC 地å€å°†åˆ†é…给所有已é…置的网å¡ã€‚</translation>
</message>
<message>
<source>&amp;Reinitialize the MAC address of all network cards</source>
- <translation type="unfinished"></translation>
+ <translation>é‡æ–°åˆå§‹åŒ–所有网å¡çš„ MAC 地å€(&amp;R)</translation>
</message>
</context>
<context>
@@ -698,115 +539,118 @@
<name>UICloneVMWizard</name>
<message>
<source>Clone a virtual machine</source>
- <translation type="unfinished"></translation>
+ <translation>å¤åˆ¶è™šæ‹Ÿç”µè„‘</translation>
</message>
<message>
<source>Clone</source>
- <translation type="unfinished"></translation>
+ <translation>å¤åˆ¶</translation>
</message>
<message>
<source>Linked Base for %1 and %2</source>
- <translation type="unfinished"></translation>
+ <translation>%1 和 %2 的链接基础</translation>
</message>
</context>
<context>
<name>UICloneVMWizardPage1</name>
<message>
<source>&lt;p&gt;This wizard will help you to create a clone of your virtual machine.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;本å‘导将帮助您å¤åˆ¶è™šæ‹Ÿç”µè„‘。&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Please choose a name for the new virtual machine:&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;请选择新虚拟电脑的å称:&lt;/p&gt;</translation>
</message>
<message>
<source>&amp;Reinitialize the MAC address of all network cards</source>
- <translation type="unfinished"></translation>
+ <translation>é‡æ–°åˆå§‹åŒ–所有网å¡çš„ MAC 地å€(&amp;R)</translation>
</message>
<message>
<source>Welcome to the virtual machine clone wizard</source>
- <translation type="unfinished"></translation>
+ <translation>欢迎使用虚拟电脑å¤åˆ¶å‘导</translation>
</message>
<message>
<source>%1 Clone</source>
- <translation type="unfinished"></translation>
+ <translation>%1 副本</translation>
</message>
<message>
<source>When checked a new unique MAC address will be assigned to all configured network cards.</source>
- <translation type="unfinished"></translation>
+ <translation>选中时,将把新的唯一的 MAC 地å€åˆ†é…给所有已é…置的网å¡ã€‚</translation>
</message>
</context>
<context>
<name>UICloneVMWizardPage2</name>
<message>
<source>Cloning Configuration</source>
- <translation type="unfinished"></translation>
+ <translation>é…ç½®å¤åˆ¶</translation>
</message>
<message>
<source>Full Clone</source>
- <translation type="unfinished"></translation>
+ <translation>完全å¤åˆ¶</translation>
</message>
<message>
<source>Linked Clone</source>
- <translation type="unfinished"></translation>
+ <translation>链接å¤åˆ¶</translation>
</message>
<message>
<source>&lt;p&gt;Please select the type of the clone.&lt;/p&gt;&lt;p&gt;If you choose &lt;b&gt;Full Clone&lt;/b&gt; an exact copy (including all virtual disk images) of the original VM will be created. If you select &lt;b&gt;Linked Clone&lt;/b&gt;, a new VM will be created, but the virtual disk images will point to the virtual disk images of original VM.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;请选择å¤åˆ¶çš„æ–¹å¼ã€‚&lt;/p&gt;&lt;p&gt;如果您选择&lt;b&gt;完全å¤åˆ¶&lt;/b&gt;,将会创建一个原虚拟电脑的精确副本(包括所有虚拟ç£ç›˜æ˜ åƒ)。如果您选择&lt;b&gt;链接å¤åˆ¶&lt;/b&gt;,将会创建一个新虚拟电脑,但虚拟ç£ç›˜æ˜ åƒå°†æŒ‡å‘原虚拟电脑的虚拟ç£ç›˜æ˜ åƒã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Note that a new snapshot within the source VM is created in case you select &lt;b&gt;Linked Clone&lt;/b&gt;.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>&lt;p&gt;注æ„,在您选择&lt;b&gt;链接å¤åˆ¶&lt;/b&gt;的情况下,将在原虚拟电脑中创建一个新的快照。&lt;/p&gt;</translation>
</message>
</context>
<context>
<name>UICloneVMWizardPage3</name>
<message>
<source>Current machine state</source>
- <translation type="unfinished"></translation>
+ <translation>当å‰è™šæ‹Ÿç”µè„‘状æ€</translation>
</message>
<message>
<source>Current machine and all child states</source>
- <translation type="unfinished"></translation>
+ <translation>当å‰è™šæ‹Ÿç”µè„‘和所有å­è™šæ‹Ÿç”µè„‘的状æ€</translation>
</message>
<message>
<source>All states</source>
- <translation type="unfinished"></translation>
+ <translation>所有状æ€</translation>
</message>
<message>
<source>Cloning Configuration</source>
- <translation type="unfinished"></translation>
+ <translation>é…ç½®å¤åˆ¶</translation>
</message>
<message>
<source>Please choose which parts of the virtual machine should be cloned.</source>
- <translation type="unfinished"></translation>
+ <translation>请选择虚拟电脑è¦å¤åˆ¶çš„部分。</translation>
</message>
<message>
<source>If you select &lt;b&gt;Current machine state&lt;/b&gt;, only the current state of the virtual machine is cloned.</source>
- <translation type="unfinished"></translation>
+ <translation>如果您选择了&lt;b&gt;当å‰è™šæ‹Ÿç”µè„‘状æ€&lt;/b&gt;,则åªæœ‰è™šæ‹Ÿç”µè„‘的当å‰çŠ¶æ€å¤åˆ¶ã€‚</translation>
</message>
<message>
<source>If you select &lt;b&gt;Current machine and all child states&lt;/b&gt; the current state of the virtual machine and any states of child snapshots are cloned.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>如果您选择了&lt;b&gt;当å‰è™šæ‹Ÿæœºå’Œæ‰€æœ‰å­å¿«ç…§çŠ¶æ€&lt;/b&gt;,则虚拟机和所有å­å¿«ç…§çš„当å‰çŠ¶æ€éƒ½ä¼šå¤åˆ¶ã€‚</translation>
</message>
<message>
<source>If you select &lt;b&gt;All states&lt;/b&gt;, the current machine state and all snapshots are cloned.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>如果您选择了&lt;b&gt;所有状æ€&lt;/b&gt;,则虚拟机状æ€å’Œæ‰€æœ‰å¿«ç…§éƒ½ä¼šå¤åˆ¶ã€‚</translation>
</message>
</context>
<context>
<name>UIDescriptionPagePrivate</name>
<message>
<source>No description. Press the Edit button below to add it.</source>
- <translation type="unfinished">没有任何说明信æ¯ï¼Œå•å‡»ä¸‹é¢çš„编辑按钮开始添加.</translation>
+ <translation>没有任何说明信æ¯ï¼Œå•å‡»ä¸‹é¢çš„编辑按钮开始添加.</translation>
</message>
<message>
<source>Edit</source>
- <translation type="unfinished">编辑</translation>
+ <translation>编辑</translation>
</message>
<message>
<source>Edit (Ctrl+E)</source>
- <translation type="unfinished">编辑 (Ctrl+E)</translation>
+ <translation>编辑 (Ctrl+E)</translation>
</message>
</context>
<context>
@@ -814,358 +658,296 @@
<message>
<source>Name</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>å称</translation>
</message>
<message>
<source>OS Type</source>
<comment>details report</comment>
- <translation type="unfinished">系统类型</translation>
+ <translation>系统类型</translation>
</message>
<message>
<source>Base Memory</source>
<comment>details report</comment>
- <translation type="unfinished">内存大å°</translation>
+ <translation>内存大å°</translation>
</message>
<message>
<source>&lt;nobr&gt;%1 MB&lt;/nobr&gt;</source>
<comment>details report</comment>
- <translation type="unfinished">&lt;nobr&gt;%1 MB&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;%1 MB&lt;/nobr&gt;</translation>
</message>
<message>
<source>Processors</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>处ç†å™¨</translation>
</message>
<message>
<source>&lt;nobr&gt;%1&lt;/nobr&gt;</source>
<comment>details report</comment>
- <translation type="unfinished">&lt;nobr&gt;%1&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;%1&lt;/nobr&gt;</translation>
</message>
<message>
<source>Boot Order</source>
<comment>details report</comment>
- <translation type="unfinished">å¯åŠ¨é¡ºåº</translation>
+ <translation>å¯åŠ¨é¡ºåº</translation>
</message>
<message>
<source>ACPI</source>
<comment>details report</comment>
- <translation type="unfinished">ACPI</translation>
+ <translation>ACPI</translation>
</message>
<message>
<source>IO APIC</source>
<comment>details report</comment>
- <translation type="unfinished">IO APIC</translation>
+ <translation>IO APIC</translation>
</message>
<message>
<source>BIOS</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>BIOS</translation>
</message>
<message>
<source>VT-x/AMD-V</source>
<comment>details report</comment>
- <translation type="unfinished">VT-x/AMD-V</translation>
+ <translation>VT-x/AMD-V</translation>
</message>
<message>
<source>Nested Paging</source>
<comment>details report</comment>
- <translation type="unfinished">Nested Paging</translation>
+ <translation>嵌套分页</translation>
</message>
<message>
<source>PAE/NX</source>
<comment>details report</comment>
- <translation type="unfinished">PAE/NX</translation>
+ <translation>PAE/NX</translation>
</message>
<message>
<source>Acceleration</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>硬件加速</translation>
</message>
<message>
<source>Video Memory</source>
<comment>details report</comment>
- <translation type="unfinished">显存大å°</translation>
+ <translation>显存大å°</translation>
</message>
<message>
<source>Screens</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>å±å¹•</translation>
</message>
<message>
<source>2D Video</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>2D 视频</translation>
</message>
<message>
<source>3D</source>
<comment>details report</comment>
- <translation type="unfinished">3D</translation>
+ <translation>3D</translation>
</message>
<message>
<source>Remote Desktop Server Port</source>
<comment>details report (VRDE Server)</comment>
- <translation type="unfinished"></translation>
+ <translation>远程桌é¢æœåŠ¡å™¨ç«¯å£</translation>
</message>
<message>
<source>Remote Desktop Server</source>
<comment>details report (VRDE Server)</comment>
- <translation type="unfinished"></translation>
+ <translation>远程桌é¢æœåŠ¡å™¨</translation>
</message>
<message>
<source>Disabled</source>
<comment>details report (VRDE Server)</comment>
- <translation type="unfinished">ç¦ç”¨</translation>
+ <translation>ç¦ç”¨</translation>
</message>
<message>
<source>(CD/DVD)</source>
- <translation type="unfinished">(光驱)</translation>
+ <translation>(光驱)</translation>
</message>
<message>
<source>Not Attached</source>
<comment>details report (Storage)</comment>
- <translation type="unfinished">未分é…</translation>
+ <translation>未分é…</translation>
</message>
<message>
<source>Host Driver</source>
<comment>details report (audio)</comment>
- <translation type="unfinished">声å¡ç±»åž‹</translation>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>主机音频驱动</translation>
</message>
<message>
<source>Controller</source>
<comment>details report (audio)</comment>
- <translation type="unfinished">控制芯片</translation>
+ <translation>控制芯片</translation>
</message>
<message>
<source>Disabled</source>
<comment>details report (audio)</comment>
- <translation type="unfinished">ç¦ç”¨</translation>
+ <translation>ç¦ç”¨</translation>
</message>
<message>
<source>Bridged adapter, %1</source>
<comment>details report (network)</comment>
- <translation type="unfinished">Bridged 网络, %1</translation>
+ <translation>桥接网络, %1</translation>
</message>
<message>
<source>Internal network, &apos;%1&apos;</source>
<comment>details report (network)</comment>
- <translation type="unfinished">Internal 网络, &apos;%1&apos;</translation>
+ <translation>内部网络,“%1â€</translation>
</message>
<message>
<source>Host-only adapter, &apos;%1&apos;</source>
<comment>details report (network)</comment>
- <translation type="unfinished">Host-only 网络, &apos;%1&apos;</translation>
+ <translation>仅主机 (Host-Only) 网络, &apos;%1&apos;</translation>
</message>
<message>
<source>Adapter %1</source>
<comment>details report (network)</comment>
- <translation type="unfinished"></translation>
+ <translation>ç½‘å¡ %1</translation>
</message>
<message>
<source>Disabled</source>
<comment>details report (network)</comment>
- <translation type="unfinished">ç¦ç”¨</translation>
+ <translation>ç¦ç”¨</translation>
</message>
<message>
<source>Port %1</source>
<comment>details report (serial ports)</comment>
- <translation type="unfinished">ç«¯å£ %1</translation>
+ <translation>ç«¯å£ %1</translation>
</message>
<message>
<source>Disabled</source>
<comment>details report (serial ports)</comment>
- <translation type="unfinished">ç¦ç”¨</translation>
+ <translation>ç¦ç”¨</translation>
</message>
<message>
<source>Port %1</source>
<comment>details report (parallel ports)</comment>
- <translation type="unfinished">ç«¯å£ %1</translation>
+ <translation>ç«¯å£ %1</translation>
</message>
<message>
<source>Disabled</source>
<comment>details report (parallel ports)</comment>
- <translation type="unfinished">ç¦ç”¨</translation>
+ <translation>ç¦ç”¨</translation>
</message>
<message>
<source>Device Filters</source>
<comment>details report (USB)</comment>
- <translation type="unfinished">设备筛选</translation>
+ <translation>设备筛选</translation>
</message>
<message>
<source>%1 (%2 active)</source>
<comment>details report (USB)</comment>
- <translation type="unfinished">%1 (%2 活动)</translation>
+ <translation>%1 (%2 活动)</translation>
</message>
<message>
<source>Disabled</source>
<comment>details report (USB)</comment>
- <translation type="unfinished">ç¦ç”¨</translation>
+ <translation>ç¦ç”¨</translation>
</message>
<message>
<source>Shared Folders</source>
<comment>details report (shared folders)</comment>
- <translation type="unfinished">æ•°æ®ç©ºé—´</translation>
+ <translation>共享文件夹</translation>
</message>
<message>
<source>None</source>
<comment>details report (shared folders)</comment>
- <translation type="unfinished">空</translation>
+ <translation>空</translation>
</message>
<message>
<source>None</source>
<comment>details report (description)</comment>
- <translation type="unfinished">空</translation>
+ <translation>空</translation>
</message>
<message>
<source>The selected virtual machine is &lt;i&gt;inaccessible&lt;/i&gt;. Please inspect the error message shown below and press the &lt;b&gt;Refresh&lt;/b&gt; button if you want to repeat the accessibility check:</source>
- <translation type="unfinished">所选的虚拟电脑&lt;i&gt;ä¸èƒ½æ­£å¸¸è®¿é—®&lt;/i&gt;. 请检查下é¢çš„错误信æ¯æˆ–者按一下&lt;b&gt;刷新&lt;/b&gt;按钮,如果你想é‡å¤å¯è®¿é—®æ€§æ£€æŸ¥:</translation>
+ <translation>所选的虚拟电脑&lt;i&gt;ä¸èƒ½æ­£å¸¸è®¿é—®&lt;/i&gt;. 请检查下é¢çš„错误信æ¯æˆ–者按一下&lt;b&gt;刷新&lt;/b&gt;按钮,如果你想é‡å¤å¯è®¿é—®æ€§æ£€æŸ¥:</translation>
</message>
<message>
<source>General</source>
<comment>details report</comment>
- <translation type="unfinished">常规</translation>
+ <translation>常规</translation>
</message>
<message>
<source>System</source>
<comment>details report</comment>
- <translation type="unfinished">系统</translation>
+ <translation>系统</translation>
</message>
<message>
<source>Preview</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>预览</translation>
</message>
<message>
<source>Display</source>
<comment>details report</comment>
- <translation type="unfinished">显示</translation>
+ <translation>显示</translation>
</message>
<message>
<source>Storage</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>存储</translation>
</message>
<message>
<source>Audio</source>
<comment>details report</comment>
- <translation type="unfinished">声音</translation>
+ <translation>声音</translation>
</message>
<message>
<source>Network</source>
<comment>details report</comment>
- <translation type="unfinished">网络</translation>
+ <translation>网络</translation>
</message>
<message>
<source>Serial Ports</source>
<comment>details report</comment>
- <translation type="unfinished">串å£</translation>
+ <translation>串å£</translation>
</message>
<message>
<source>Parallel Ports</source>
<comment>details report</comment>
- <translation type="unfinished">并å£</translation>
+ <translation>并å£</translation>
</message>
<message>
<source>USB</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>USB设备</translation>
</message>
<message>
<source>Shared Folders</source>
<comment>details report</comment>
- <translation type="unfinished">æ•°æ®ç©ºé—´</translation>
+ <translation>共享文件夹</translation>
</message>
<message>
<source>Description</source>
<comment>details report</comment>
- <translation type="unfinished">æè¿°</translation>
+ <translation>æè¿°</translation>
</message>
<message>
<source>Execution Cap</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>è¿è¡Œå³°å€¼</translation>
</message>
<message>
<source>&lt;nobr&gt;%1%&lt;/nobr&gt;</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>&lt;nobr&gt;%1%&lt;/nobr&gt;</translation>
</message>
<message>
<source>Generic driver, &apos;%1&apos;</source>
<comment>details report (network)</comment>
- <translation type="unfinished"></translation>
+ <translation>通用驱动,“%1â€</translation>
</message>
<message>
<source>Generic driver, &apos;%1&apos; {&amp;nbsp;%2&amp;nbsp;}</source>
<comment>details report (network)</comment>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>UIDownloader</name>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>Downloading the VirtualBox Guest Additions CD image from &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;...&lt;/nobr&gt;</source>
- <translation type="obsolete">下载增强功能包 &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;...&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>Cancel the VirtualBox Guest Additions CD image download</source>
- <translation type="obsolete">å–消下载增强功能包</translation>
- </message>
- <message>
- <source>Could not locate the file on the server (response: %1).</source>
- <translation type="obsolete">无法在æœåŠ¡å™¨ä¸Šæ‰¾åˆ°è¯¥æ–‡ä»¶ (回应: %1).</translation>
- </message>
- <message>
- <source>Could not determine the file size.</source>
- <translation type="obsolete">无法检测到文件大å°.</translation>
- </message>
- <message>
- <source>Could not connect to the server (%1).</source>
- <translation type="obsolete">无法连接到æœåŠ¡å™¨ (%1).</translation>
- </message>
- <message>
- <source>Could not download the file (%1).</source>
- <translation type="obsolete">无法下载该文件 (%1).</translation>
- </message>
- <message>
- <source>&lt;p&gt;Failed to save the downloaded file as &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;无法将下载的文件ä¿å­˜ä¸º &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Select folder to save Guest Additions image to</source>
- <translation type="obsolete">选择用于ä¿å­˜å¢žå¼ºåŠŸèƒ½åŒ…的文件夹</translation>
- </message>
- <message>
- <source>Connection timed out.</source>
- <translation type="obsolete">连接超时.</translation>
- </message>
- <message>
- <source>The download process has been cancelled by the user.</source>
- <translation type="obsolete">下载进程被用户å–消.</translation>
+ <translation>通用驱动,“%1â€{&amp;nbsp;%2&amp;nbsp;}</translation>
</message>
</context>
<context>
<name>UIDownloaderAdditions</name>
<message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>Downloading the VirtualBox Guest Additions CD image from &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;...&lt;/nobr&gt;</source>
- <translation type="obsolete">下载增强功能包,该功能包当å‰ä½äºŽ &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;...&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>Cancel the VirtualBox Guest Additions CD image download</source>
- <translation type="obsolete">å–消下载增强功能包</translation>
- </message>
- <message>
- <source>&lt;p&gt;Failed to save the downloaded file as &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;无法将下载的文件ä¿å­˜ä¸º &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;</translation>
- </message>
- <message>
<source>Select folder to save Guest Additions image to</source>
<translation>选择用于ä¿å­˜å¢žå¼ºåŠŸèƒ½åŒ…的文件夹</translation>
</message>
@@ -1174,359 +956,158 @@
<name>UIDownloaderExtensionPack</name>
<message>
<source>Select folder to save %1 to</source>
- <translation type="unfinished"></translation>
+ <translation>选择文件夹用于ä¿å­˜ %1</translation>
</message>
</context>
<context>
<name>UIDownloaderUserManual</name>
<message>
<source>Select folder to save User Manual to</source>
- <translation type="unfinished"></translation>
+ <translation>选择文件夹用于ä¿å­˜ç”¨æˆ·æ‰‹å†Œ</translation>
</message>
</context>
<context>
<name>UIExportApplianceWzd</name>
<message>
- <source>Select a file to export into</source>
- <translation type="obsolete">选择一个用于ä¿å­˜çš„文件</translation>
- </message>
- <message>
- <source>Open Virtualization Format (%1)</source>
- <translation type="obsolete">Open Virtualization Format (%1)</translation>
- </message>
- <message>
- <source>Appliance</source>
- <translation type="obsolete">虚拟电脑</translation>
- </message>
- <message>
- <source>Exporting Appliance ...</source>
- <translation type="obsolete">导出虚拟电脑 ...</translation>
- </message>
- <message>
<source>Appliance Export Wizard</source>
<translation>虚拟电脑导出å‘导</translation>
</message>
<message>
- <source>Welcome to the Appliance Export Wizard!</source>
- <translation type="obsolete">欢迎使用虚拟电脑导出å‘导!</translation>
- </message>
- <message>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;This wizard will you guide to the process of exporting an appliance. &lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Use the &lt;span style=&quot; font-weight:600;&quot;&gt;Next&lt;/span&gt; button to go the next page of the wizard and the &lt;span style=&quot; font-weight:600;&quot;&gt;Back&lt;/span&gt; button to return to the previous page.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Please select the virtual machines that you wish to the appliance. You can select more than one. Please note that these machines have to be turned off before they can be exported.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="obsolete">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;本å‘导将指引您如何导出一个虚拟电脑. &lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;按 &lt;span style=&quot; font-weight:600;&quot;&gt;下一步&lt;/span&gt; 按钮进入å‘导的下一个页é¢ï¼ŒæŒ‰ &lt;span style=&quot; font-weight:600;&quot;&gt;返回&lt;/span&gt; 按钮å¯é€€å›žå‘导的上一个页é¢.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;选择您è¦å¯¼å‡ºçš„虚拟电脑。您å¯åŒæ—¶é€‰æ‹©å¤šä¸ªè™šæ‹Ÿç”µè„‘一å—导出,请注æ„:è¦å¯¼å‡ºçš„虚拟电脑必须处于关闭状æ€ã€‚&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <source>&lt; &amp;Back</source>
- <translation type="obsolete">&lt; 返回(&amp;B)</translation>
- </message>
- <message>
- <source>&amp;Next &gt;</source>
- <translation type="obsolete">下一步(&amp;N) &gt;</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>Appliance Export Settings</source>
- <translation type="obsolete">虚拟电脑导出设置</translation>
- </message>
- <message>
- <source>Here you can change additional configuration values of the selected virtual machines. You can modify most of the properties shown by double-clicking on the items.</source>
- <translation type="obsolete">您å¯ä»¥åœ¨æ­¤æ›´æ”¹æ‰€é€‰è™šæ‹Ÿç”µè„‘的其它设置。通过åŒå‡»è¯¥é¡¹ç›®å³å¯ä¿®æ”¹å¤§éƒ¨åˆ†çš„显示属性.</translation>
- </message>
- <message>
<source>Restore Defaults</source>
<translation>æ¢å¤ä¸ºé»˜è®¤å€¼</translation>
</message>
<message>
- <source>Please specify a filename into which the appliance information will be written. Currently VirtualBox supports the Open Virtualization Format (OVF).</source>
- <translation type="obsolete">请指定一个用于ä¿å­˜è™šæ‹Ÿç”µè„‘ä¿¡æ¯çš„文件。当å‰åªæ”¯æŒå¼€æ”¾è™šæ‹Ÿæ ¼å¼(OVF).</translation>
- </message>
- <message>
- <source>&amp;Export &gt;</source>
- <translation type="obsolete">导出(&amp;E) &gt;</translation>
- </message>
- <message>
- <source>Please choose a filename to export the OVF to.</source>
- <translation type="obsolete">为è¦å¯¼å‡ºçš„虚拟电脑指定一个文件å.</translation>
- </message>
- <message>
- <source>Please complete the additional fields like the username, password and the bucket, and provide a filename for the OVF target.</source>
- <translation type="obsolete">请填写é¢å¤–的字段如用户å,密ç å’Œå­˜å‚¨æ¡¶ï¼Œå¹¶ä¸ºè¦å¯¼å‡ºçš„虚拟电脑指定一个文件å.</translation>
- </message>
- <message>
- <source>Please complete the additional fields like the username, password, hostname and the bucket, and provide a filename for the OVF target.</source>
- <translation type="obsolete">请填写é¢å¤–的字段如用户å,密ç ï¼Œä¸»æœºå和存储桶,并为è¦å¯¼å‡ºçš„虚拟电脑指定一个文件å.</translation>
- </message>
- <message>
- <source>Checking files ...</source>
- <translation type="obsolete">检测文件 ...</translation>
- </message>
- <message>
- <source>Removing files ...</source>
- <translation type="obsolete">删除文件 ...</translation>
- </message>
- <message>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;This wizard will guide you through the process of exporting an appliance. &lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Use the &lt;span style=&quot; font-weight:600;&quot;&gt;Next&lt;/span&gt; button to go the next page of the wizard and the &lt;span style=&quot; font-weight:600;&quot;&gt;Back&lt;/span&gt; button to return to the previous page.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Please select the virtual machines that you wish to the appliance. You can select more than one. Please note that these machines have to be turned off before they can be exported.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="obsolete">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;p, li { white-space: pre-wrap; }&lt;/style&gt;&lt;/head&gt;&lt;body&gt;&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;本å‘导将指引您如何导出一个虚拟电脑. &lt;/p&gt;&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Use the &lt;span style=&quot; font-weight:600;&quot;&gt;下一步&lt;/span&gt; 按钮进入å‘导的下一个页é¢ï¼ŒæŒ‰ &lt;span style=&quot; font-weight:600;&quot;&gt;返回&lt;/span&gt; 按钮å¯é€€å›žå‘导的上一个页é¢.&lt;/p&gt;&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;选择您è¦å¯¼å‡ºçš„虚拟电脑。您å¯åŒæ—¶é€‰æ‹©å¤šä¸ªè™šæ‹Ÿç”µè„‘一å—导出,请注æ„:è¦å¯¼å‡ºçš„虚拟电脑必须处于关闭状æ€ã€‚&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <source>Please specify the target for the OVF export. You can choose between a local file system export, uploading the OVF to the Sun Cloud service or an S3 storage server.</source>
- <translation type="obsolete">请为è¦å¯¼å‡ºçš„虚拟电脑指定一个存储ä½ç½®ã€‚您既å¯ä»¥é€‰æ‹©ä¸€ä¸ªæœ¬åœ°çš„文件系统,也å¯ä»¥é€‰æ‹©ä¸Šä¼ åˆ°Sun云æœåŠ¡æˆ–S3存储æœåŠ¡å™¨.</translation>
- </message>
- <message>
- <source>&amp;Local Filesystem </source>
- <translation type="obsolete">本地文件系统(&amp;L)</translation>
- </message>
- <message>
- <source>Sun &amp;Cloud</source>
- <translation type="obsolete">Sun 云æœåŠ¡(&amp;C)</translation>
- </message>
- <message>
- <source>&amp;Simple Storage System (S3)</source>
- <translation type="obsolete">(S3)简å•å­˜å‚¨ç³»ç»Ÿ(&amp;S)</translation>
- </message>
- <message>
- <source>&amp;Username:</source>
- <translation type="obsolete">用户å(&amp;U):</translation>
- </message>
- <message>
- <source>&amp;Password:</source>
- <translation type="obsolete">密ç (&amp;P):</translation>
- </message>
- <message>
- <source>&amp;File:</source>
- <translation type="obsolete">文件(&amp;F):</translation>
- </message>
- <message>
- <source>&amp;Bucket:</source>
- <translation type="obsolete">存储桶(&amp;B):</translation>
- </message>
- <message>
- <source>&amp;Hostname:</source>
- <translation type="obsolete">主机å(&amp;H):</translation>
- </message>
- <message>
- <source>Write in legacy OVF 0.9 format for compatibility with other virtualization products.</source>
- <translation type="obsolete">用传统的 OVF 0.9 æ ¼å¼ä¿å­˜ï¼Œä»¥å…¼å®¹å…¶å®ƒçš„虚拟电脑产å“.</translation>
- </message>
- <message>
- <source>&amp;Write legacy OVF 0.9</source>
- <translation type="obsolete">用传统的 OVF 0.9 æ ¼å¼ä¿å­˜(&amp;W)</translation>
- </message>
- <message>
<source>Export</source>
- <translation type="unfinished"></translation>
+ <translation>导出</translation>
</message>
</context>
<context>
<name>UIExportApplianceWzdPage1</name>
<message>
<source>Welcome to the Appliance Export Wizard!</source>
- <translation type="unfinished">欢迎使用虚拟电脑导出å‘导!</translation>
+ <translation>欢迎使用虚拟电脑导出å‘导!</translation>
</message>
<message>
<source>&lt;p&gt;This wizard will guide you through the process of exporting an appliance.&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;Please select the virtual machines that should be added to the appliance. You can select more than one. Please note that these machines have to be turned off before they can be exported.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>&lt;p&gt;本å‘导将引导您完æˆå¯¼å‡ºè™šæ‹Ÿç”µè„‘的过程。&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;请选择è¦è¢«æ·»åŠ åˆ°è™šæ‹Ÿç”µè„‘的虚拟机。您å¯ä»¥é€‰æ‹©å¤šä¸ªè™šæ‹Ÿæœºã€‚请注æ„,这些虚拟机在导出之å‰å¿…须关闭。&lt;/p&gt;</translation>
</message>
</context>
<context>
<name>UIExportApplianceWzdPage2</name>
<message>
- <source>Here you can change additional configuration values of the selected virtual machines. You can modify most of the properties shown by double-clicking on the items.</source>
- <translation type="obsolete">您å¯ä»¥åœ¨æ­¤æ›´æ”¹æ‰€é€‰è™šæ‹Ÿç”µè„‘的其它设置。通过åŒå‡»è¯¥é¡¹ç›®å³å¯ä¿®æ”¹å¤§éƒ¨åˆ†çš„显示属性.</translation>
- </message>
- <message>
<source>Appliance Export Settings</source>
- <translation type="unfinished">虚拟电脑导出设置</translation>
+ <translation>虚拟电脑导出设置</translation>
</message>
<message>
<source>Please specify the target for the OVF export. You can choose between a local file system export, uploading the OVF to the Sun Cloud service or an S3 storage server.</source>
- <translation type="unfinished">请为è¦å¯¼å‡ºçš„虚拟电脑指定一个存储ä½ç½®ã€‚您既å¯ä»¥é€‰æ‹©ä¸€ä¸ªæœ¬åœ°çš„文件系统,也å¯ä»¥é€‰æ‹©ä¸Šä¼ åˆ°Sun云æœåŠ¡æˆ–S3存储æœåŠ¡å™¨.</translation>
+ <translation>请为è¦å¯¼å‡ºçš„虚拟电脑(OVF)指定一个存储ä½ç½®ã€‚您既å¯ä»¥é€‰æ‹©ä¸€ä¸ªæœ¬åœ°çš„文件系统,也å¯ä»¥é€‰æ‹©ä¸Šä¼ åˆ°Sun云æœåŠ¡æˆ–S3存储æœåŠ¡å™¨ã€‚</translation>
</message>
<message>
<source>&amp;Local Filesystem </source>
- <translation type="unfinished">本地文件系统(&amp;L)</translation>
+ <translation>本地文件系统(&amp;L)</translation>
</message>
<message>
<source>Sun &amp;Cloud</source>
- <translation type="unfinished">Sun 云æœåŠ¡(&amp;C)</translation>
+ <translation>Sun 云æœåŠ¡(&amp;C)</translation>
</message>
<message>
<source>&amp;Simple Storage System (S3)</source>
- <translation type="unfinished">(S3)简å•å­˜å‚¨ç³»ç»Ÿ(&amp;S)</translation>
+ <translation>(S3)简å•å­˜å‚¨ç³»ç»Ÿ(&amp;S)</translation>
</message>
</context>
<context>
<name>UIExportApplianceWzdPage3</name>
<message>
- <source>Please specify the target for the OVF export. You can choose between a local file system export, uploading the OVF to the Sun Cloud service or an S3 storage server.</source>
- <translation type="obsolete">请为è¦å¯¼å‡ºçš„虚拟电脑指定一个存储ä½ç½®ã€‚您既å¯ä»¥é€‰æ‹©ä¸€ä¸ªæœ¬åœ°çš„文件系统,也å¯ä»¥é€‰æ‹©ä¸Šä¼ åˆ°Sun云æœåŠ¡æˆ–S3存储æœåŠ¡å™¨.</translation>
- </message>
- <message>
- <source>&amp;Local Filesystem </source>
- <translation type="obsolete">本地文件系统(&amp;L)</translation>
- </message>
- <message>
- <source>Sun &amp;Cloud</source>
- <translation type="obsolete">Sun 云æœåŠ¡(&amp;C)</translation>
- </message>
- <message>
- <source>&amp;Simple Storage System (S3)</source>
- <translation type="obsolete">(S3)简å•å­˜å‚¨ç³»ç»Ÿ(&amp;S)</translation>
- </message>
- <message>
<source>Appliance Export Settings</source>
- <translation type="unfinished">虚拟电脑导出设置</translation>
+ <translation>虚拟电脑导出设置</translation>
</message>
<message>
<source>&amp;Username:</source>
- <translation type="unfinished">用户å(&amp;U):</translation>
+ <translation>用户å(&amp;U):</translation>
</message>
<message>
<source>&amp;Password:</source>
- <translation type="unfinished"></translation>
+ <translation>密ç (&amp;P):</translation>
</message>
<message>
<source>&amp;Hostname:</source>
- <translation type="unfinished">主机å(&amp;H):</translation>
+ <translation>主机å(&amp;H):</translation>
</message>
<message>
<source>&amp;Bucket:</source>
- <translation type="unfinished">存储桶(&amp;B):</translation>
+ <translation>存储桶(&amp;B):</translation>
</message>
<message>
<source>&amp;File:</source>
- <translation type="unfinished">文件(&amp;F):</translation>
+ <translation>文件(&amp;F):</translation>
</message>
<message>
<source>Write in legacy OVF 0.9 format for compatibility with other virtualization products.</source>
- <translation type="unfinished">用传统的 OVF 0.9 æ ¼å¼ä¿å­˜ï¼Œä»¥å…¼å®¹å…¶å®ƒçš„虚拟电脑产å“.</translation>
+ <translation>用传统的 OVF 0.9 æ ¼å¼ä¿å­˜ï¼Œä»¥å…¼å®¹å…¶å®ƒçš„虚拟电脑产å“。</translation>
</message>
<message>
<source>&amp;Write legacy OVF 0.9</source>
- <translation type="unfinished">用传统的 OVF 0.9 æ ¼å¼ä¿å­˜(&amp;W)</translation>
+ <translation>用传统的 OVF 0.9 æ ¼å¼ä¿å­˜(&amp;W)</translation>
</message>
<message>
<source>Create a Manifest file for automatic data integrity checks on import.</source>
- <translation type="unfinished"></translation>
+ <translation>导入时创建 Manifest 文件,自动执行数æ®å®Œæ•´æ€§æ£€æŸ¥ã€‚</translation>
</message>
<message>
<source>Write &amp;Manifest file</source>
- <translation type="unfinished"></translation>
+ <translation>写入 Manifest 文件(&amp;M)</translation>
</message>
<message>
<source>Appliance</source>
- <translation type="unfinished">虚拟电脑</translation>
+ <translation>虚拟电脑</translation>
</message>
<message>
<source>Select a file to export into</source>
- <translation type="unfinished">选择一个用于ä¿å­˜çš„文件</translation>
+ <translation>选择一个用于ä¿å­˜çš„文件</translation>
</message>
<message>
<source>Open Virtualization Format Archive (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>开放å¼è™šæ‹ŸåŒ–æ ¼å¼åŒ… (%1)</translation>
</message>
<message>
<source>Open Virtualization Format (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>开放å¼è™šæ‹ŸåŒ–æ ¼å¼ (%1)</translation>
</message>
<message>
<source>Please choose a filename to export the OVF/OVA to. If you use an &lt;i&gt;ova&lt;/i&gt; file name extension, then all the files will be combined into one Open Virtualization Format Archive. If you use an &lt;i&gt;ovf&lt;/i&gt; extension, several files will be written separately. Other extensions are not allowed.</source>
- <translation type="unfinished"></translation>
+ <translation>请选择è¦å¯¼å‡º OVF/OVA 的文件å。如果您使用 &lt;i&gt;OVA&lt;/i&gt; 文件扩展å,那么所有文件都将åˆå¹¶ä¸ºä¸€ä¸ªâ€œå¼€æ”¾å¼è™šæ‹ŸåŒ–æ ¼å¼åŒ…â€ã€‚如果您使用 &lt;i&gt;OVF&lt;/i&gt; 扩展å,将分æˆè‹¥å¹²ç‹¬ç«‹çš„文件。ä¸å…许其他扩展å。</translation>
</message>
<message>
<source>Please complete the additional fields like the username, password and the bucket, and provide a filename for the OVF target.</source>
- <translation type="unfinished">请填写é¢å¤–的字段如用户å,密ç å’Œå­˜å‚¨æ¡¶ï¼Œå¹¶ä¸ºè¦å¯¼å‡ºçš„虚拟电脑指定一个文件å.</translation>
+ <translation>请填写é¢å¤–的字段如用户å,密ç å’Œå­˜å‚¨æ¡¶ï¼Œå¹¶ä¸ºè¦å¯¼å‡ºçš„虚拟电脑指定一个文件å。</translation>
</message>
<message>
<source>Please complete the additional fields like the username, password, hostname and the bucket, and provide a filename for the OVF target.</source>
- <translation type="unfinished">请填写é¢å¤–的字段如用户å,密ç ï¼Œä¸»æœºå和存储桶,并为è¦å¯¼å‡ºçš„虚拟电脑指定一个文件å.</translation>
+ <translation>请填写é¢å¤–的字段如用户å,密ç ï¼Œä¸»æœºå和存储桶,并为è¦å¯¼å‡ºçš„虚拟电脑指定一个文件å。</translation>
</message>
</context>
<context>
<name>UIExportApplianceWzdPage4</name>
<message>
- <source>&amp;Username:</source>
- <translation type="obsolete">用户å(&amp;U):</translation>
- </message>
- <message>
- <source>&amp;Hostname:</source>
- <translation type="obsolete">主机å(&amp;H):</translation>
- </message>
- <message>
- <source>&amp;Bucket:</source>
- <translation type="obsolete">存储桶(&amp;B):</translation>
- </message>
- <message>
- <source>&amp;File:</source>
- <translation type="obsolete">文件(&amp;F):</translation>
- </message>
- <message>
- <source>Write in legacy OVF 0.9 format for compatibility with other virtualization products.</source>
- <translation type="obsolete">用传统的 OVF 0.9 æ ¼å¼ä¿å­˜ï¼Œä»¥å…¼å®¹å…¶å®ƒçš„虚拟电脑产å“.</translation>
- </message>
- <message>
- <source>&amp;Write legacy OVF 0.9</source>
- <translation type="obsolete">用传统的 OVF 0.9 æ ¼å¼ä¿å­˜(&amp;W)</translation>
- </message>
- <message>
<source>Appliance Export Settings</source>
- <translation type="unfinished">虚拟电脑导出设置</translation>
- </message>
- <message>
- <source>Appliance</source>
- <translation type="obsolete">虚拟电脑</translation>
- </message>
- <message>
- <source>Select a file to export into</source>
- <translation type="obsolete">选择一个用于ä¿å­˜çš„文件</translation>
- </message>
- <message>
- <source>Please choose a filename to export the OVF to.</source>
- <translation type="obsolete">为è¦å¯¼å‡ºçš„虚拟电脑指定一个文件å.</translation>
- </message>
- <message>
- <source>Please complete the additional fields like the username, password and the bucket, and provide a filename for the OVF target.</source>
- <translation type="obsolete">请填写é¢å¤–的字段如用户å,密ç å’Œå­˜å‚¨æ¡¶ï¼Œå¹¶ä¸ºè¦å¯¼å‡ºçš„虚拟电脑指定一个文件å.</translation>
- </message>
- <message>
- <source>Please complete the additional fields like the username, password, hostname and the bucket, and provide a filename for the OVF target.</source>
- <translation type="obsolete">请填写é¢å¤–的字段如用户å,密ç ï¼Œä¸»æœºå和存储桶,并为è¦å¯¼å‡ºçš„虚拟电脑指定一个文件å.</translation>
+ <translation>虚拟电脑导出设置</translation>
</message>
<message>
<source>Checking files ...</source>
- <translation type="unfinished">检测文件 ...</translation>
+ <translation>检测文件 ...</translation>
</message>
<message>
<source>Removing files ...</source>
- <translation type="unfinished">删除文件 ...</translation>
+ <translation>删除文件 ...</translation>
</message>
<message>
<source>Exporting Appliance ...</source>
- <translation type="unfinished">导出虚拟电脑 ...</translation>
+ <translation>导出虚拟电脑 ...</translation>
</message>
<message>
<source>Here you can change additional configuration values of the selected virtual machines. You can modify most of the properties shown by double-clicking on the items.</source>
- <translation type="unfinished">您å¯ä»¥åœ¨æ­¤æ›´æ”¹æ‰€é€‰è™šæ‹Ÿç”µè„‘的其它设置。通过åŒå‡»è¯¥é¡¹ç›®å³å¯ä¿®æ”¹å¤§éƒ¨åˆ†çš„显示属性.</translation>
+ <translation>您å¯ä»¥åœ¨æ­¤æ›´æ”¹æ‰€é€‰è™šæ‹Ÿç”µè„‘的其它设置。通过åŒå‡»è¯¥é¡¹ç›®å³å¯ä¿®æ”¹å¤§éƒ¨åˆ†çš„显示属性。</translation>
</message>
</context>
<context>
@@ -1536,283 +1117,127 @@ p, li { white-space: pre-wrap; }
<translation>首次è¿è¡Œå‘导</translation>
</message>
<message>
- <source>&lt;p&gt;You have started a newly created virtual machine for the first time. This wizard will help you to perform the steps necessary for installing an operating system of your choice onto this virtual machine.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go to the next page of the wizard and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page. You can also press &lt;b&gt;Cancel&lt;/b&gt; if you want to cancel the execution of this wizard.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;这是您第一次å¯åŠ¨è¿™ä¸ªæ–°å»ºçš„虚拟电脑。本å‘导将å助您一步步把æ“作系统安装到该虚拟电脑上。&lt;/p&gt;&lt;p&gt;按 &lt;b&gt;下一步&lt;/b&gt; 按钮进入å‘导的下一页,按 &lt;b&gt;返回&lt;/b&gt; 按钮返回上一页,你也能按 &lt;b&gt;å–消&lt;/b&gt; 如果您ä¸æƒ³æ‰§è¡Œæœ¬å‘导.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Welcome to the First Run Wizard!</source>
- <translation type="obsolete">欢迎使用首次è¿è¡Œå‘导!</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select the type of media you would like to use for installation.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选择用于安装系统介质类型.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Media Type</source>
- <translation type="obsolete">介质类型</translation>
- </message>
- <message>
- <source>&amp;CD/DVD-ROM Device</source>
- <translation type="obsolete">光驱(&amp;C)</translation>
- </message>
- <message>
- <source>Alt+C</source>
- <translation type="obsolete">Alt+C</translation>
- </message>
- <message>
- <source>&amp;Floppy Device</source>
- <translation type="obsolete">软驱(&amp;F)</translation>
- </message>
- <message>
- <source>Alt+F</source>
- <translation type="obsolete">Alt+F</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select the media which contains the setup program of the operating system you want to install. This media must be bootable, otherwise the setup program will not be able to start.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选择å«æœ‰æ‚¨æ‰€è¦å®‰è£…çš„æ“作系统的安装程åºçš„介质。该介质必须是å¯å¼•å¯¼çš„,å¦åˆ™å®‰è£…程åºæ— æ³•å¯åŠ¨.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Media Source</source>
- <translation type="obsolete">介质ä½ç½®</translation>
- </message>
- <message>
- <source>&amp;Host Drive</source>
- <translation type="obsolete">物ç†ä»‹è´¨(&amp;H)</translation>
- </message>
- <message>
- <source>Alt+H</source>
- <translation type="obsolete">Alt+H</translation>
- </message>
- <message>
- <source>&amp;Image File</source>
- <translation type="obsolete">虚拟介质(&amp;I)</translation>
- </message>
- <message>
- <source>Alt+I</source>
- <translation type="obsolete">Alt+I</translation>
- </message>
- <message>
- <source>VDM</source>
- <translation type="obsolete">VDM</translation>
- </message>
- <message>
- <source>Select Installation Media</source>
- <translation type="obsolete">选择安装介质</translation>
- </message>
- <message>
- <source>&lt;p&gt;You have selected the following media to boot from:&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;您已ç»é€‰æ‹©å¦‚下介质用于引导:&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;If the above is correct, press the &lt;b&gt;Finish&lt;/b&gt; button. Once you press it, the selected media will be temporarily mounted on the virtual machine and the machine will start execution.&lt;/p&gt;&lt;p&gt;Please note that when you close the virtual machine, the specified media will be automatically unmounted and the boot device will be set back to the first hard disk.&lt;/p&gt;&lt;p&gt;Depending on the type of the setup program, you may need to manually unmount (eject) the media after the setup program reboots the virtual machine, to prevent the installation process from starting again. You can do this by selecting the corresponding &lt;b&gt;Unmount...&lt;/b&gt; action in the &lt;b&gt;Devices&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;如果以上的设置完全正确,请按 &lt;b&gt;完æˆ&lt;/b&gt; 按钮. 一旦您按下它,所选择的安装介质将被临时挂载到该虚拟电脑,然åŽè¯¥è™šæ‹Ÿç”µè„‘将被å¯åŠ¨.&lt;/p&gt;&lt;p&gt;请注æ„,当您关闭虚拟电脑åŽï¼Œè¯¥å®‰è£…介质将被自动å¸è½½ï¼Œè€Œå¯åŠ¨è®¾å¤‡å°†è¢«è®¾ç½®ä¸ºç¬¬ä¸€ä¸ªè™šæ‹Ÿç¡¬ç›˜.&lt;/p&gt;&lt;p&gt;æ ¹æ®å®‰è£…程åºçš„类型, 在安装程åºé‡å¯ç”µè„‘åŽï¼Œæ‚¨å¯èƒ½éœ€è¦æ‰‹åŠ¨å¸è½½è¯¥å®‰è£…介质, 为了防止安装程åºé‡æ–°æ‰§è¡Œä¸€é. 您å¯ä»¥åœ¨ &lt;b&gt;设备&lt;/b&gt; èœå• 中选择 &lt;b&gt;释放...&lt;/b&gt; 该介质.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Summary</source>
- <translation type="obsolete">摘è¦</translation>
- </message>
- <message>
- <source>CD/DVD-ROM Device</source>
- <translation type="obsolete">光驱</translation>
- </message>
- <message>
- <source>Floppy Device</source>
- <translation type="obsolete">软驱</translation>
- </message>
- <message>
- <source>Host Drive %1</source>
- <translation type="obsolete">物ç†è®¾å¤‡ %1</translation>
- </message>
- <message>
- <source>&lt;table&gt;&lt;tr&gt;&lt;td&gt;Type:&lt;/td&gt;&lt;td&gt;%1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Source:&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
- <translation type="obsolete">&lt;table&gt;&lt;tr&gt;&lt;td&gt;类型:&lt;/td&gt;&lt;td&gt;%1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ä½ç½®:&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;You have started a newly created virtual machine for the first time. This wizard will help you to perform the steps necessary for booting an operating system of your choice on the virtual machine.&lt;/p&gt;&lt;p&gt;Note that you will not be able to install an operating system into this virtual machine right now because you did not attach any hard disk to it. If this is not what you want, you can cancel the execution of this wizard, select &lt;b&gt;Settings&lt;/b&gt; from the &lt;b&gt;Machine&lt;/b&gt; menu of the main VirtualBox window to access the settings dialog of this machine and change the hard disk configuration.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go to the next page of the wizard and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page. You can also press &lt;b&gt;Cancel&lt;/b&gt; if you want to cancel the execution of this wizard.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;这是您第一次å¯åŠ¨è¿™ä¸ªæ–°å»ºçš„虚拟电脑。本å‘导将å助您一步步把æ“作系统安装到该虚拟电脑上。&lt;/p&gt;&lt;p&gt;请注æ„您现在还ä¸èƒ½æŠŠä¸€ä¸ªæ“作系统安装到该虚拟电脑上,因为您还没有给它分é…一个硬盘。因此您应先å–消本å‘导,然åŽåˆ°è¯¥è™šæ‹Ÿç”µè„‘的设置对è¯æ¡†ä¸­ä¸ºè¯¥è™šæ‹Ÿç”µè„‘分é…一个硬盘。&lt;/p&gt;&lt;p&gt;按 &lt;b&gt;下一步&lt;/b&gt; 按钮进入å‘导的下一页,按 &lt;b&gt;返回&lt;/b&gt; 按钮返回上一页。你也能按 &lt;b&gt;å–消&lt;/b&gt; 如果您ä¸æƒ³æ‰§è¡Œæœ¬å‘导.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select the type of media you would like to use for booting an operating system.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选择您è¦ç”¨äºŽå¼•å¯¼æ“作系统的介质类型.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select the media that contains the operating system you want to work with. This media must be bootable, otherwise the operating system will not be able to start.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选择å«æœ‰æ‚¨è¦ä½¿ç”¨çš„æ“作系统的介质。该介质必须是å¯å¼•å¯¼çš„,å¦åˆ™æ“作系统将无法被å¯åŠ¨.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;You have selected the following media to boot an operating system from:&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;您已选择从下é¢çš„介质中引导æ“作系统:&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;If the above is correct, press the &lt;b&gt;Finish&lt;/b&gt; button. Once you press it, the selected media will be mounted on the virtual machine and the machine will start execution.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;如果以上的设置完全正确,请按 &lt;b&gt;完æˆ&lt;/b&gt; 按钮。一旦您按下它,所选择的安装介质将被挂载到该虚拟电脑,然åŽè¯¥è™šæ‹Ÿç”µè„‘将被å¯åŠ¨.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt; &amp;Back</source>
- <translation type="obsolete">&lt; 返回(&amp;B)</translation>
- </message>
- <message>
- <source>&amp;Next &gt;</source>
- <translation type="obsolete">下一步(&amp;N) &gt;</translation>
- </message>
- <message>
- <source>&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;If the above is correct, press the &lt;span style=&quot; font-weight:600;&quot;&gt;Finish&lt;/span&gt; button. Once you press it, the selected media will be temporarily mounted on the virtual machine and the machine will start execution.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Please note that when you close the virtual machine, the specified media will be automatically unmounted and the boot device will be set back to the first hard disk.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Depending on the type of the setup program, you may need to manually unmount (eject) the media after the setup program reboots the virtual machine, to prevent the installation process from starting again. You can do this by selecting the corresponding &lt;span style=&quot; font-weight:600;&quot;&gt;Unmount...&lt;/span&gt; action in the &lt;span style=&quot; font-weight:600;&quot;&gt;Devices&lt;/span&gt; menu&lt;span style=&quot; font-weight:600;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="obsolete">&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;如果以上设置没有问题请按 &lt;span style=&quot; font-weight:600;&quot;&gt;完æˆ&lt;/span&gt; 按钮。 刚刚指定的介质将被临时分é…给该虚拟电脑,并开始å¯åŠ¨è¯¥è™šæ‹Ÿç”µè„‘&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;请注æ„:当该虚拟电脑关闭åŽï¼Œè¯¥ä»‹è´¨å°†è‡ªåŠ¨ä»Žè¯¥è™šæ‹Ÿç”µè„‘上释放,以便该虚拟电脑能从原æ¥çš„虚拟硬盘上å¯åŠ¨.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;æ ¹æ®æ“作系统安装程åºçš„ä¸åŒï¼Œå¯èƒ½éœ€è¦åœ¨å®‰è£…程åºé‡å¯åŽæ‰‹åŠ¨é‡Šæ”¾ï¼ˆæˆ–弹出)该介质,以é¿å…安装程åºå†æ¬¡å¯åŠ¨ï¼Œè¿™åªéœ€åœ¨ &lt;span style=&quot; font-weight:600;&quot;&gt;设备&lt;/span&gt; èœå•ä¸­æ‰§è¡Œç›¸åº”çš„ &lt;span style=&quot; font-weight:600;&quot;&gt;释放...&lt;/span&gt; æ“作å³å¯&lt;span style=&quot; font-weight:600;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <source>&amp;Finish</source>
- <translation type="obsolete">完æˆ(&amp;F)</translation>
- </message>
- <message>
- <source>Type</source>
- <comment>summary</comment>
- <translation type="obsolete">类型</translation>
- </message>
- <message>
- <source>Source</source>
- <comment>summary</comment>
- <translation type="obsolete">ä½ç½®</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
<source>Start</source>
- <translation type="unfinished">å¯åŠ¨</translation>
+ <translation>å¯åŠ¨</translation>
</message>
</context>
<context>
<name>UIFirstRunWzdPage1</name>
<message>
<source>Welcome to the First Run Wizard!</source>
- <translation type="unfinished">欢迎使用首次è¿è¡Œå‘导!</translation>
+ <translation>欢迎使用首次è¿è¡Œå‘导!</translation>
</message>
<message>
<source>&lt;p&gt;You have started a newly created virtual machine for the first time. This wizard will help you to perform the steps necessary for installing an operating system of your choice onto this virtual machine.&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;这是你首次å¯åŠ¨æ–°åˆ›å»ºçš„虚拟机。本å‘导将帮助你执行必è¦çš„步骤æ¥å°†ä½ é€‰æ‹©çš„æ“作系统安装到该虚拟机中。&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;You have started a newly created virtual machine for the first time. This wizard will help you to perform the steps necessary for booting an operating system of your choice on the virtual machine.&lt;/p&gt;&lt;p&gt;Note that you will not be able to install an operating system into this virtual machine right now because you did not attach any hard disk to it. If this is not what you want, you can cancel the execution of this wizard, select &lt;b&gt;Settings&lt;/b&gt; from the &lt;b&gt;Machine&lt;/b&gt; menu of the main VirtualBox window to access the settings dialog of this machine and change the hard disk configuration.&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;这是你首次å¯åŠ¨æ–°åˆ›å»ºçš„虚拟机。本å‘导将帮助您执行必è¦çš„步骤æ¥å°†æ‚¨é€‰æ‹©çš„æ“作系统引导到该虚拟机中。&lt;/p&gt;&lt;p&gt;注æ„,您将无法立å³å°†æ“作系统安装到该虚拟机中,因为您还没有添加虚拟硬盘。如果这ä¸æ˜¯æ‚¨å¸Œæœ›çš„,您å¯ä»¥å–消本å‘导,请从 VirtualBox 主窗å£çš„&lt;b&gt;虚拟机&lt;/b&gt;èœå•é€‰æ‹©&lt;b&gt;设置&lt;/b&gt;,æ¥è®¿é—®è¯¥è™šæ‹Ÿæœºçš„设置对è¯ä»¥åŠæ›´æ”¹ç¡¬ç›˜é…置。&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</translation>
</message>
</context>
<context>
<name>UIFirstRunWzdPage2</name>
<message>
<source>&lt;p&gt;Select the media which contains the setup program of the operating system you want to install. This media must be bootable, otherwise the setup program will not be able to start.&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;选择å«æœ‰æ‚¨æ‰€è¦å®‰è£…çš„æ“作系统的安装程åºçš„介质。该介质必须是å¯å¼•å¯¼çš„,å¦åˆ™å®‰è£…程åºæ— æ³•å¯åŠ¨.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;选择å«æœ‰æ‚¨æ‰€è¦å®‰è£…çš„æ“作系统的安装程åºçš„介质。该介质必须是å¯å¼•å¯¼çš„,å¦åˆ™å®‰è£…程åºæ— æ³•å¯åŠ¨ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Select the media that contains the operating system you want to work with. This media must be bootable, otherwise the operating system will not be able to start.&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;选择å«æœ‰æ‚¨è¦ä½¿ç”¨çš„æ“作系统的介质。该介质必须是å¯å¼•å¯¼çš„,å¦åˆ™æ“作系统将无法被å¯åŠ¨.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;选择å«æœ‰æ‚¨è¦ä½¿ç”¨çš„æ“作系统的介质。该介质必须是å¯å¼•å¯¼çš„,å¦åˆ™æ“作系统将无法被å¯åŠ¨ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>Media Source</source>
- <translation type="unfinished">介质ä½ç½®</translation>
+ <translation>介质ä½ç½®</translation>
</message>
<message>
<source>Select Installation Media</source>
- <translation type="unfinished">选择安装介质</translation>
+ <translation>选择安装介质</translation>
</message>
</context>
<context>
<name>UIFirstRunWzdPage3</name>
<message>
<source>&lt;p&gt;You have selected the following media to boot from:&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;您已ç»é€‰æ‹©å¦‚下介质用于引导:&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;您已ç»é€‰æ‹©å¦‚下介质用于引导:&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;You have selected the following media to boot an operating system from:&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;您已选择从下é¢çš„介质中引导æ“作系统:&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;您已选择从下é¢çš„介质中引导æ“作系统:&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;If the above is correct, press the &lt;b&gt;Finish&lt;/b&gt; button. Once you press it, the selected media will be temporarily mounted on the virtual machine and the machine will start execution.&lt;/p&gt;&lt;p&gt;Please note that when you close the virtual machine, the specified media will be automatically unmounted and the boot device will be set back to the first hard disk.&lt;/p&gt;&lt;p&gt;Depending on the type of the setup program, you may need to manually unmount (eject) the media after the setup program reboots the virtual machine, to prevent the installation process from starting again. You can do this by selecting the corresponding &lt;b&gt;Unmount...&lt;/b&gt; action in the &lt;b&gt;Devices&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;如果以上的设置完全正确,请按 &lt;b&gt;完æˆ&lt;/b&gt; 按钮. 一旦您按下它,所选择的安装介质将被临时挂载到该虚拟电脑,然åŽè¯¥è™šæ‹Ÿç”µè„‘将被å¯åŠ¨.&lt;/p&gt;&lt;p&gt;请注æ„,当您关闭虚拟电脑åŽï¼Œè¯¥å®‰è£…介质将被自动å¸è½½ï¼Œè€Œå¯åŠ¨è®¾å¤‡å°†è¢«è®¾ç½®ä¸ºç¬¬ä¸€ä¸ªè™šæ‹Ÿç¡¬ç›˜.&lt;/p&gt;&lt;p&gt;æ ¹æ®å®‰è£…程åºçš„类型, 在安装程åºé‡å¯ç”µè„‘åŽï¼Œæ‚¨å¯èƒ½éœ€è¦æ‰‹åŠ¨å¸è½½è¯¥å®‰è£…介质, 为了防止安装程åºé‡æ–°æ‰§è¡Œä¸€é. 您å¯ä»¥åœ¨ &lt;b&gt;设备&lt;/b&gt; èœå• 中选择 &lt;b&gt;释放...&lt;/b&gt; 该介质.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;如果以上的设置完全正确,请按 &lt;b&gt;完æˆ&lt;/b&gt; 按钮. 一旦您按下它,所选择的安装介质将被临时挂载到该虚拟电脑,然åŽè¯¥è™šæ‹Ÿç”µè„‘将被å¯åŠ¨.&lt;/p&gt;&lt;p&gt;请注æ„,当您关闭虚拟电脑åŽï¼Œè¯¥å®‰è£…介质将被自动å¸è½½ï¼Œè€Œå¯åŠ¨è®¾å¤‡å°†è¢«è®¾ç½®ä¸ºç¬¬ä¸€ä¸ªè™šæ‹Ÿç¡¬ç›˜.&lt;/p&gt;&lt;p&gt;æ ¹æ®å®‰è£…程åºçš„类型, 在安装程åºé‡å¯ç”µè„‘åŽï¼Œæ‚¨å¯èƒ½éœ€è¦æ‰‹åŠ¨å¸è½½è¯¥å®‰è£…介质, 为了防止安装程åºé‡æ–°æ‰§è¡Œä¸€é. 您å¯ä»¥åœ¨ &lt;b&gt;设备&lt;/b&gt; èœå• 中选择 &lt;b&gt;释放...&lt;/b&gt; 该介质.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;If the above is correct, press the &lt;b&gt;Finish&lt;/b&gt; button. Once you press it, the selected media will be mounted on the virtual machine and the machine will start execution.&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;如果以上的设置完全正确,请按 &lt;b&gt;完æˆ&lt;/b&gt; 按钮。一旦您按下它,所选择的安装介质将被挂载到该虚拟电脑,然åŽè¯¥è™šæ‹Ÿç”µè„‘将被å¯åŠ¨.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;如果以上的设置完全正确,请按 &lt;b&gt;完æˆ&lt;/b&gt; 按钮。一旦您按下它,所选择的安装介质将被挂载到该虚拟电脑,然åŽè¯¥è™šæ‹Ÿç”µè„‘将被å¯åŠ¨.&lt;/p&gt;</translation>
</message>
<message>
<source>Summary</source>
- <translation type="unfinished">摘è¦</translation>
+ <translation>摘è¦</translation>
</message>
<message>
<source>CD/DVD-ROM Device</source>
- <translation type="unfinished">光驱</translation>
+ <translation>光驱</translation>
</message>
<message>
<source>Type</source>
<comment>summary</comment>
- <translation type="unfinished">类型</translation>
+ <translation>类型</translation>
</message>
<message>
<source>Source</source>
<comment>summary</comment>
- <translation type="unfinished">ä½ç½®</translation>
+ <translation>ä½ç½®</translation>
</message>
</context>
<context>
<name>UIGlobalSettingsExtension</name>
<message>
<source>&amp;Extension Packages:</source>
- <translation type="unfinished"></translation>
+ <translation>扩展包(&amp;E):</translation>
</message>
<message>
<source>Lists all installed packages.</source>
- <translation type="unfinished"></translation>
+ <translation>列出所有已安装的包。</translation>
</message>
<message>
<source>Active</source>
- <translation type="unfinished"></translation>
+ <translation>活动</translation>
</message>
<message>
<source>Name</source>
- <translation type="unfinished"></translation>
+ <translation>å称</translation>
</message>
<message>
<source>Version</source>
- <translation type="unfinished">版本</translation>
+ <translation>版本</translation>
</message>
<message>
<source>Add package</source>
- <translation type="unfinished"></translation>
+ <translation>添加包</translation>
</message>
<message>
<source>Remove package</source>
- <translation type="unfinished"></translation>
+ <translation>移除包</translation>
</message>
<message>
<source>Select an extension package file</source>
- <translation type="unfinished"></translation>
+ <translation>选择一个扩展包文件</translation>
</message>
<message>
<source>Extension package files (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>扩展包文件 (%1)</translation>
</message>
<message>
<source>Extensions</source>
- <translation type="unfinished"></translation>
+ <translation>扩展</translation>
</message>
</context>
<context>
<name>UIGlobalSettingsGeneral</name>
<message>
- <source>Displays the path to the default VDI folder. This folder is used, if not explicitly specified otherwise, when adding existing or creating new virtual hard disks.</source>
- <translation type="obsolete">显示存放虚拟硬盘的默认文件夹。如果没有明确指定其它文件夹,当创建新的虚拟硬盘或注册已存在的虚拟硬盘时将默认使用此文件夹.</translation>
- </message>
- <message>
<source>Displays the path to the default virtual machine folder. This folder is used, if not explicitly specified otherwise, when creating new virtual machines.</source>
<translation>显示存放虚拟电脑的默认文件夹。如果没有明确指定其它文件夹,当创建新的虚拟电脑时将默认使用此文件夹.</translation>
</message>
@@ -1821,10 +1246,6 @@ p, li { white-space: pre-wrap; }
<translation>显示用于æ供远程桌é¢(VRDP)认è¯çš„库文件路径.</translation>
</message>
<message>
- <source>Default &amp;Hard Disk Folder:</source>
- <translation type="obsolete">默认虚拟硬盘ä½ç½®(&amp;H):</translation>
- </message>
- <message>
<source>Default &amp;Machine Folder:</source>
<translation>默认虚拟电脑ä½ç½®(&amp;M):</translation>
</message>
@@ -1833,10 +1254,6 @@ p, li { white-space: pre-wrap; }
<translation>VRDP认è¯åº“(&amp;R):</translation>
</message>
<message>
- <source>Displays the path to the default hard disk folder. This folder is used, if not explicitly specified otherwise, when adding existing or creating new virtual hard disks.</source>
- <translation type="obsolete">显示存放虚拟硬盘的默认文件夹。如果没有明确指定其它文件夹,当创建新的虚拟硬盘或注册已存在的虚拟硬盘时将默认使用此文件夹.</translation>
- </message>
- <message>
<source>When checked, the application will provide an icon with the context menu in the system tray.</source>
<translation>选中,系统托盘上将会出现一个å¯ç”¨äºŽå¿«é€Ÿæ“作本程åºçš„图标.</translation>
</message>
@@ -1845,51 +1262,43 @@ p, li { white-space: pre-wrap; }
<translation>å¯ç”¨ç³»ç»Ÿæ‰˜ç›˜(&amp;S)</translation>
</message>
<message>
- <source>When checked, the Dock Icon will reflect the VM window content in realtime.</source>
- <translation type="obsolete">选中,托盘图标将实时å应虚拟电脑窗å£çš„内容.</translation>
- </message>
- <message>
- <source>&amp;Dock Icon Realtime Preview</source>
- <translation type="obsolete">托盘图标实时预览(&amp;D)</translation>
- </message>
- <message>
<source>&amp;Auto show Dock and Menubar in fullscreen</source>
<translation>在全å±æ¨¡å¼è‡ªåŠ¨æ˜¾ç¤ºå°å·¥å…·æ (&amp;A)</translation>
</message>
<message>
<source>When checked, the host screen saver will be disabled whenever a virtual machine is running.</source>
- <translation type="unfinished"></translation>
+ <translation>选中时,如果虚拟机è¿è¡Œï¼Œä¸»æœºçš„å±å¹•ä¿æŠ¤ç¨‹åºå°†è¢«ç¦ç”¨ã€‚</translation>
</message>
<message>
<source>Disable Host &amp;ScreenSaver</source>
- <translation type="unfinished"></translation>
+ <translation>ç¦ç”¨ä¸»æœºçš„å±å¹•ä¿æŠ¤ç¨‹åº(&amp;S)</translation>
</message>
</context>
<context>
<name>UIGlobalSettingsInput</name>
<message>
<source>Host &amp;Key:</source>
- <translation type="unfinished">热键(&amp;K):</translation>
+ <translation>热键(&amp;K):</translation>
</message>
<message>
<source>Displays the key used as a Host Key in the VM window. Activate the entry field and press a new Host Key. Note that alphanumeric, cursor movement and editing keys cannot be used.</source>
- <translation type="unfinished"></translation>
+ <translation>显示在虚拟机窗å£ä¸­ç”¨ä½œä¸»æœºé”®çš„按键。请激活输入区域并按下新的主机键。请注æ„,ä¸èƒ½ä½¿ç”¨æ•°å­—和字æ¯ã€å…‰æ ‡ç§»åŠ¨å’Œç¼–辑键。</translation>
</message>
<message>
<source>When checked, the keyboard is automatically captured every time the VM window is activated. When the keyboard is captured, all keystrokes (including system ones like Alt-Tab) are directed to the VM.</source>
- <translation type="unfinished">选中åŽï¼Œå½“虚拟电脑窗å£å¤„于活动状æ€æ—¶å°†è‡ªåŠ¨æ•èŽ·é”®ç›˜è¾“入。当键盘被æ•èŽ·æ—¶ï¼Œæ‰€æœ‰çš„键盘输入(包括系统切æ¢é”®å¦‚ Alt-Tab) 都将被å‘é€åˆ°è™šæ‹Ÿç”µè„‘.</translation>
+ <translation>选中åŽï¼Œå½“虚拟电脑窗å£å¤„于活动状æ€æ—¶å°†è‡ªåŠ¨æ•èŽ·é”®ç›˜è¾“入。当键盘被æ•èŽ·æ—¶ï¼Œæ‰€æœ‰çš„键盘输入(包括系统切æ¢é”®å¦‚ Alt-Tab) 都将被å‘é€åˆ°è™šæ‹Ÿç”µè„‘。</translation>
</message>
<message>
<source>&amp;Auto Capture Keyboard</source>
- <translation type="unfinished">自动独å é”®ç›˜(&amp;A)</translation>
+ <translation>自动独å é”®ç›˜(&amp;A)</translation>
</message>
<message>
<source>Reset host combination</source>
- <translation type="unfinished"></translation>
+ <translation>é‡ç½®ä¸»æœºç»„åˆé”®</translation>
</message>
<message>
<source>Resets the key combination used as the host combination in the VM window.</source>
- <translation type="unfinished"></translation>
+ <translation>é‡ç½®åœ¨è™šæ‹Ÿæœºçª—å£ä¸­ç”¨ä½œä¸»æœºç»„åˆé”®çš„组åˆé”®ã€‚</translation>
</message>
</context>
<context>
@@ -1950,11 +1359,6 @@ p, li { white-space: pre-wrap; }
<context>
<name>UIGlobalSettingsNetwork</name>
<message>
- <source>%1 network</source>
- <comment>&lt;adapter name&gt; network</comment>
- <translation type="obsolete">%1 网络</translation>
- </message>
- <message>
<source>host IPv4 address of &lt;b&gt;%1&lt;/b&gt; is wrong</source>
<translation>主机 IPv4 åœ°å€ &lt;b&gt;%1&lt;/b&gt; 出错</translation>
</message>
@@ -2064,28 +1468,23 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&amp;Add host-only network</source>
- <translation>添加 host-only 网络(&amp;A)</translation>
+ <translation>添加仅主机(Host-Only)网络(&amp;A)</translation>
</message>
<message>
<source>&amp;Remove host-only network</source>
- <translation>删除 host-only 网络(&amp;R)</translation>
+ <translation>删除仅主机(Host-Only)网络(&amp;R)</translation>
</message>
<message>
<source>&amp;Edit host-only network</source>
- <translation>编辑 host-only 网络(&amp;E)</translation>
- </message>
- <message>
- <source>Performing</source>
- <comment>creating/removing host-only network</comment>
- <translation type="obsolete">执行中</translation>
+ <translation>编辑仅主机(Host-Only)网络(&amp;E)</translation>
</message>
<message>
<source>&amp;Host-only Networks:</source>
- <translation>Host-only 网络(&amp;H):</translation>
+ <translation>仅主机(Host-Only)网络(&amp;H):</translation>
</message>
<message>
<source>Lists all available host-only networks.</source>
- <translation>显示所有å¯ç”¨ host-only 网络.</translation>
+ <translation>显示所有å¯ç”¨ä»…主机(Host-Only)网络.</translation>
</message>
<message>
<source>Name</source>
@@ -2093,14 +1492,14 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Networking</source>
- <translation type="unfinished"></translation>
+ <translation>网络</translation>
</message>
</context>
<context>
<name>UIGlobalSettingsNetworkDetails</name>
<message>
<source>Host-only Network Details</source>
- <translation>Host-only 网络明细</translation>
+ <translation>仅主机(Host-Only)网络明细</translation>
</message>
<message>
<source>&amp;Adapter</source>
@@ -2112,7 +1511,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Use manual configuration for this host-only network adapter.</source>
- <translation>为该 host-only 网络连接使用手动é…ç½®.</translation>
+ <translation>为该仅主机(Host-Only)网络连接使用手动é…ç½®.</translation>
</message>
<message>
<source>&amp;IPv4 Address:</source>
@@ -2164,6 +1563,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Displays the address of the DHCP server servicing the network associated with this host-only adapter.</source>
+ <translatorcomment>TODO</translatorcomment>
<translation>显示 DHCP æœåŠ¡å™¨åœ°å€.</translation>
</message>
<message>
@@ -2195,156 +1595,136 @@ p, li { white-space: pre-wrap; }
<name>UIGlobalSettingsProxy</name>
<message>
<source>When checked, VirtualBox will use the proxy settings supplied for tasks like downloading Guest Additions from the network or checking for updates.</source>
- <translation type="unfinished"></translation>
+ <translation>选中时,VirtualBox 将使用æ供的代ç†è®¾ç½®è¿žæŽ¥ç½‘络,如从网络下载增强功能包,或检查更新。</translation>
</message>
<message>
<source>&amp;Enable proxy</source>
- <translation type="unfinished"></translation>
+ <translation>å¯ç”¨ä»£ç†(&amp;E)</translation>
</message>
<message>
<source>Ho&amp;st:</source>
- <translation type="unfinished"></translation>
+ <translation>主机(&amp;S):</translation>
</message>
<message>
<source>Changes the proxy host.</source>
- <translation type="unfinished"></translation>
+ <translation>更改代ç†ä¸»æœºã€‚</translation>
</message>
<message>
<source>&amp;Port:</source>
- <translation type="unfinished"></translation>
+ <translation>端å£(&amp;P):</translation>
</message>
<message>
<source>Changes the proxy port.</source>
- <translation type="unfinished"></translation>
+ <translation>更改代ç†ç«¯å£ã€‚</translation>
</message>
<message>
<source>When checked the authentication supplied will be used with the proxy server.</source>
- <translation type="unfinished"></translation>
+ <translation>选中时,æ供的身份验è¯å°†ç”¨äºŽä»£ç†æœåŠ¡å™¨ã€‚</translation>
</message>
<message>
<source>&amp;Use authentication</source>
- <translation type="unfinished"></translation>
+ <translation>使用身份验è¯(&amp;U)</translation>
</message>
<message>
<source>User &amp;name:</source>
- <translation type="unfinished"></translation>
+ <translation>用户å(&amp;N):</translation>
</message>
<message>
<source>Changes the user name used for authentication.</source>
- <translation type="unfinished"></translation>
+ <translation>更改身份验è¯æ‰€ä½¿ç”¨çš„用户å。</translation>
</message>
<message>
<source>Pass&amp;word:</source>
- <translation type="unfinished"></translation>
+ <translation>密ç (&amp;W):</translation>
</message>
<message>
<source>Changes the password used for authentication.</source>
- <translation type="unfinished"></translation>
+ <translation>更改身份验è¯æ‰€ä½¿ç”¨çš„密ç ã€‚</translation>
</message>
</context>
<context>
<name>UIGlobalSettingsUpdate</name>
<message>
<source>When checked, the application will periodically connect to the VirtualBox website and check whether a new VirtualBox version is available.</source>
- <translation>When checked, the application will periodically connect to the VirtualBox website and check whether a new VirtualBox version is available.</translation>
+ <translation>选中时,应用程åºå°†å®šæœŸè¿žæŽ¥åˆ° VirtualBox 网站,并检查是å¦æœ‰æ–°ç‰ˆæœ¬çš„ VirtualBox å¯ç”¨ã€‚</translation>
</message>
<message>
<source>&amp;Check for updates</source>
- <translation>&amp;Check for updates</translation>
+ <translation>检查更新(&amp;C)</translation>
</message>
<message>
<source>&amp;Once per:</source>
- <translation>&amp;Once per:</translation>
+ <translation>检查间隔(&amp;O):</translation>
</message>
<message>
<source>Specifies how often the new version check should be performed. Note that if you want to completely disable this check, just clear the above check box.</source>
- <translation>Specifies how often the new version check should be performed. Note that if you want to completely disable this check, just clear the above check box.</translation>
+ <translation>指定应执行新版本检查的频率。请注æ„,如果您è¦å®Œå…¨ç¦ç”¨æ­¤æ£€æŸ¥ï¼Œåªéœ€æ¸…除上é¢çš„å¤é€‰æ¡†ã€‚</translation>
</message>
<message>
<source>Next Check:</source>
- <translation>Next Check:</translation>
+ <translation>下一次检查:</translation>
</message>
<message>
<source>Check for:</source>
- <translation>Check for:</translation>
+ <translation>检查:</translation>
</message>
<message>
<source>&lt;p&gt;Choose this if you only wish to be notified about stable updates to VirtualBox.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Choose this if you only wish to be notified about stable updates to VirtualBox.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;如果您åªæƒ³ VirtualBox 有稳定更新时通知,则选择此项。&lt;/p&gt;</translation>
</message>
<message>
<source>&amp;Stable release versions</source>
- <translation>&amp;Stable release versions</translation>
+ <translation>稳定å‘行版本(&amp;S)</translation>
</message>
<message>
<source>&lt;p&gt;Choose this if you wish to be notified about all new VirtualBox releases.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Choose this if you wish to be notified about all new VirtualBox releases.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;如果您想è¦åœ¨æ‰€æœ‰ VirtualBox 新版本时通知,则选择此项。&lt;/p&gt;</translation>
</message>
<message>
<source>&amp;All new releases</source>
- <translation>&amp;All new releases</translation>
+ <translation>所有新å‘布的版本(&amp;A)</translation>
</message>
<message>
<source>&lt;p&gt;Choose this to be notified about all new VirtualBox releases and pre-release versions of VirtualBox.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Choose this to be notified about all new VirtualBox releases and pre-release versions of VirtualBox.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;è¦é€šçŸ¥æ‰€æœ‰ VirtualBox 新版本和预览版,则选择此项。&lt;/p&gt;</translation>
</message>
<message>
<source>All new releases and &amp;pre-releases</source>
- <translation>All new releases and &amp;pre-releases</translation>
+ <translation>所有新å‘布和预å‘布的版本(&amp;P)</translation>
</message>
</context>
<context>
<name>UIHelpButton</name>
<message>
<source>&amp;Help</source>
- <translation type="unfinished">帮助(&amp;H)</translation>
+ <translation>帮助(&amp;H)</translation>
</message>
</context>
<context>
<name>UIHotKeyEditor</name>
<message>
<source>Left </source>
- <translation>Left</translation>
+ <translation>å·¦ </translation>
</message>
<message>
<source>Right </source>
- <translation>Right</translation>
- </message>
- <message>
- <source>Left Shift</source>
- <translation type="unfinished">Left Shift</translation>
- </message>
- <message>
- <source>Right Shift</source>
- <translation type="unfinished">Right Shift</translation>
- </message>
- <message>
- <source>Left Ctrl</source>
- <translation type="unfinished">Left Ctrl</translation>
- </message>
- <message>
- <source>Right Ctrl</source>
- <translation type="unfinished">Right Ctrl</translation>
- </message>
- <message>
- <source>Left Alt</source>
- <translation type="unfinished">Left Alt</translation>
+ <translation>å³ </translation>
</message>
<message>
<source>Right Alt</source>
- <translation>Right Alt</translation>
+ <translation>å³ Alt</translation>
</message>
<message>
<source>Left WinKey</source>
- <translation>Left WinKey</translation>
+ <translation>å·¦ Win é”®</translation>
</message>
<message>
<source>Right WinKey</source>
- <translation>Right WinKey</translation>
+ <translation>å³ Win é”®</translation>
</message>
<message>
<source>Menu key</source>
- <translation>Menu key</translation>
+ <translation>èœå•é”®</translation>
</message>
<message>
<source>Alt Gr</source>
@@ -2352,220 +1732,84 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Caps Lock</source>
- <translation>Caps Lock</translation>
+ <translation>大写é”定键</translation>
</message>
<message>
<source>Scroll Lock</source>
- <translation>Scroll Lock</translation>
+ <translation>滚å±é”定键</translation>
</message>
<message>
<source>&lt;key_%1&gt;</source>
<translation>&lt;key_%1&gt;</translation>
</message>
<message>
- <source>Pause</source>
- <translation type="obsolete">Pause</translation>
- </message>
- <message>
- <source>Print Screen</source>
- <translation type="obsolete">Print Screen</translation>
- </message>
- <message>
- <source>F1</source>
- <translation type="obsolete">F1</translation>
- </message>
- <message>
- <source>F2</source>
- <translation type="obsolete">F2</translation>
- </message>
- <message>
- <source>F3</source>
- <translation type="obsolete">F3</translation>
- </message>
- <message>
- <source>F4</source>
- <translation type="obsolete">F4</translation>
- </message>
- <message>
- <source>F5</source>
- <translation type="obsolete">F5</translation>
- </message>
- <message>
- <source>F6</source>
- <translation type="obsolete">F6</translation>
- </message>
- <message>
- <source>F7</source>
- <translation type="obsolete">F7</translation>
- </message>
- <message>
- <source>F8</source>
- <translation type="obsolete">F8</translation>
- </message>
- <message>
- <source>F9</source>
- <translation type="obsolete">F9</translation>
- </message>
- <message>
- <source>F10</source>
- <translation type="obsolete">F10</translation>
- </message>
- <message>
- <source>F11</source>
- <translation type="obsolete">F11</translation>
- </message>
- <message>
- <source>F12</source>
- <translation type="obsolete">F12</translation>
- </message>
- <message>
- <source>F13</source>
- <translation type="obsolete">F13</translation>
- </message>
- <message>
- <source>F14</source>
- <translation type="obsolete">F14</translation>
- </message>
- <message>
- <source>F15</source>
- <translation type="obsolete">F15</translation>
- </message>
- <message>
- <source>F16</source>
- <translation type="obsolete">F16</translation>
- </message>
- <message>
- <source>F17</source>
- <translation type="obsolete">F17</translation>
- </message>
- <message>
- <source>F18</source>
- <translation type="obsolete">F18</translation>
- </message>
- <message>
- <source>F19</source>
- <translation type="obsolete">F19</translation>
- </message>
- <message>
- <source>F20</source>
- <translation type="obsolete">F20</translation>
+ <source>None</source>
+ <translation>空</translation>
</message>
<message>
- <source>F21</source>
- <translation type="obsolete">F21</translation>
+ <source>Left Shift</source>
+ <translation>å·¦ Shift</translation>
</message>
<message>
- <source>F22</source>
- <translation type="obsolete">F22</translation>
+ <source>Right Shift</source>
+ <translation>å³ Shift</translation>
</message>
<message>
- <source>F23</source>
- <translation type="obsolete">F23</translation>
+ <source>Left Ctrl</source>
+ <translation>å·¦ Ctrl</translation>
</message>
<message>
- <source>F24</source>
- <translation type="obsolete">F24</translation>
+ <source>Right Ctrl</source>
+ <translation>å³ Ctrl</translation>
</message>
<message>
- <source>None</source>
- <translation type="unfinished">空</translation>
+ <source>Left Alt</source>
+ <translation>å·¦ Alt</translation>
</message>
</context>
<context>
<name>UIImportApplianceWzd</name>
<message>
- <source>Select an appliance to import</source>
- <translation type="obsolete">选择一个è¦å¯¼å…¥çš„虚拟电脑</translation>
- </message>
- <message>
- <source>Open Virtualization Format (%1)</source>
- <translation type="obsolete">å¼€æ”¾è™šæ‹Ÿæ ¼å¼ (%1)</translation>
- </message>
- <message>
<source>Appliance Import Wizard</source>
<translation>虚拟电脑导入å‘导</translation>
</message>
<message>
- <source>Welcome to the Appliance Import Wizard!</source>
- <translation type="obsolete">欢迎使用虚拟电脑导入å‘导!</translation>
- </message>
- <message>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;This wizard will guide you through importing an appliance. &lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Use the &lt;span style=&quot; font-weight:600;&quot;&gt;Next&lt;/span&gt; button to go the next page of the wizard and the &lt;span style=&quot; font-weight:600;&quot;&gt;Back&lt;/span&gt; button to return to the previous page.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;VirtualBox currently supports importing appliances saved in the Open Virtualization Format (OVF). To continue, select the file to import below:&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="obsolete">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;本å‘导将指引您如何导入一个虚拟电脑. &lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;按 &lt;span style=&quot; font-weight:600;&quot;&gt;下一步&lt;/span&gt; 按钮进入å‘导的下一个页é¢ï¼ŒæŒ‰ &lt;span style=&quot; font-weight:600;&quot;&gt;返回&lt;/span&gt; 按钮å¯é€€å›žå‘导的上一个页é¢.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;为导入一个虚拟电脑,您需首先指定该虚拟电脑所在的文件。当å‰åªæ”¯æŒå¼€æ”¾è™šæ‹Ÿæ ¼å¼(OVF)的虚拟电脑的导入。请从下é¢é€‰æ‹©ä¸€ä¸ªæ‚¨è¦å¯¼å…¥çš„文件以继续:&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <source>&lt; &amp;Back</source>
- <translation type="obsolete">&lt; 返回(&amp;B)</translation>
- </message>
- <message>
- <source>&amp;Next &gt;</source>
- <translation type="obsolete">下一步(&amp;N) &gt;</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>Appliance Import Settings</source>
- <translation type="obsolete">虚拟电脑导入设置</translation>
- </message>
- <message>
- <source>These are the virtual machines contained in the appliance and the suggested settings of the imported VirtualBox machines. You can change many of the properties shown by double-clicking on the items and disable others using the check boxes below.</source>
- <translation type="obsolete">这是å³å°†å¯¼å…¥çš„虚拟电脑åŠå»ºè®®çš„映射关系。您å¯ä»¥é€šè¿‡åŒå‡»è¯¥é¡¹ç›®æ¥è°ƒæ•´å…¶è®¾ç½®ï¼Œæˆ–使用下é¢çš„选择框æ¥ç¦ç”¨å®ƒä»¬.</translation>
- </message>
- <message>
<source>Restore Defaults</source>
<translation>æ¢å¤ä¸ºé»˜è®¤å€¼</translation>
</message>
<message>
- <source>&amp;Import &gt;</source>
- <translation type="obsolete">导入(&amp;I) &gt;</translation>
- </message>
- <message>
<source>Import</source>
- <translation type="unfinished"></translation>
+ <translation>导入</translation>
</message>
</context>
<context>
<name>UIImportApplianceWzdPage1</name>
<message>
<source>Select an appliance to import</source>
- <translation type="unfinished">选择一个è¦å¯¼å…¥çš„虚拟电脑</translation>
+ <translation>选择一个è¦å¯¼å…¥çš„虚拟电脑</translation>
</message>
<message>
<source>Open Virtualization Format (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>开放å¼è™šæ‹ŸåŒ–æ ¼å¼ (%1)</translation>
</message>
<message>
<source>Welcome to the Appliance Import Wizard!</source>
- <translation type="unfinished">欢迎使用虚拟电脑导入å‘导!</translation>
+ <translation>欢迎使用虚拟电脑导入å‘导!</translation>
</message>
<message>
<source>&lt;p&gt;This wizard will guide you through importing an appliance.&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;VirtualBox currently supports importing appliances saved in the Open Virtualization Format (OVF). To continue, select the file to import below:&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;本å‘导将指导你完æˆå¯¼å…¥è™šæ‹Ÿç”µè„‘。&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;VirtualBox 当å‰æ”¯æŒå¯¼å…¥ä»¥å¼€æ”¾å¼è™šæ‹ŸåŒ–æ ¼å¼ (OVF) ä¿å­˜çš„虚拟电脑。若è¦ç»§ç»­ï¼Œè¯·åœ¨ä¸‹é¢é€‰æ‹©è¦å¯¼å…¥çš„文件:&lt;/p&gt;</translation>
</message>
</context>
<context>
<name>UIImportApplianceWzdPage2</name>
<message>
<source>These are the virtual machines contained in the appliance and the suggested settings of the imported VirtualBox machines. You can change many of the properties shown by double-clicking on the items and disable others using the check boxes below.</source>
- <translation type="unfinished">这是å³å°†å¯¼å…¥çš„虚拟电脑åŠå»ºè®®çš„映射关系。您å¯ä»¥é€šè¿‡åŒå‡»è¯¥é¡¹ç›®æ¥è°ƒæ•´å…¶è®¾ç½®ï¼Œæˆ–使用下é¢çš„选择框æ¥ç¦ç”¨å®ƒä»¬.</translation>
+ <translation>这是å³å°†å¯¼å…¥çš„虚拟电脑åŠå»ºè®®çš„映射关系。您å¯ä»¥é€šè¿‡åŒå‡»è¯¥é¡¹ç›®æ¥è°ƒæ•´å…¶è®¾ç½®ï¼Œæˆ–使用下é¢çš„选择框æ¥ç¦ç”¨å®ƒä»¬ã€‚</translation>
</message>
<message>
<source>Appliance Import Settings</source>
- <translation type="unfinished">虚拟电脑导入设置</translation>
+ <translation>虚拟电脑导入设置</translation>
</message>
</context>
<context>
@@ -2628,17 +1872,17 @@ p, li { white-space: pre-wrap; }
<message>
<source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Adapter %1 (%2)&lt;/b&gt;: %3 cable %4&lt;/nobr&gt;</source>
<comment>Network adapters tooltip</comment>
- <translation></translation>
+ <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;ç½‘å¡ %1 (%2)&lt;/b&gt;: %3 网线 %4&lt;/nobr&gt;</translation>
</message>
<message>
<source>connected</source>
<comment>Network adapters tooltip</comment>
- <translation></translation>
+ <translation>已连接</translation>
</message>
<message>
<source>disconnected</source>
<comment>Network adapters tooltip</comment>
- <translation></translation>
+ <translation>已断开</translation>
</message>
<message>
<source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;All network adapters are disabled&lt;/b&gt;&lt;/nobr&gt;</source>
@@ -2663,25 +1907,12 @@ p, li { white-space: pre-wrap; }
<message>
<source>&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;Indicates the activity of the machine&apos;s shared folders:&lt;/nobr&gt;%1&lt;/p&gt;</source>
<comment>Shared folders tooltip</comment>
- <translation>&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;指示数æ®ç©ºé—´æ´»åŠ¨çŠ¶æ€:&lt;/nobr&gt;%1&lt;/p&gt;</translation>
+ <translation>&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;指示共享文件夹活动状æ€:&lt;/nobr&gt;%1&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No shared folders&lt;/b&gt;&lt;/nobr&gt;</source>
<comment>Shared folders tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;未分é…æ•°æ®ç©ºé—´&lt;/b&gt;&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>Indicates whether the Remote Display (VRDP Server) is enabled (&lt;img src=:/vrdp_16px.png/&gt;) or not (&lt;img src=:/vrdp_disabled_16px.png/&gt;).</source>
- <translation type="obsolete">指示远程桌é¢æœåŠ¡ (VRDP Server) å·²å¯ç”¨ (&lt;img src=:/vrdp_16px.png/&gt;) 或被ç¦ç”¨ (&lt;img src=:/vrdp_disabled_16px.png/&gt;).</translation>
- </message>
- <message>
- <source>&lt;hr&gt;The VRDP Server is listening on port %1</source>
- <translation type="obsolete">&lt;hr&gt;VRDP æœåŠ¡å™¨ç›‘å¬ç«¯å£ %1</translation>
- </message>
- <message>
- <source>Indicates the status of the hardware virtualization features used by this virtual machine:&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%1:&lt;/b&gt;&amp;nbsp;%2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%3:&lt;/b&gt;&amp;nbsp;%4&lt;/nobr&gt;</source>
- <comment>Virtualization Stuff LED</comment>
- <translation type="obsolete">指示该虚拟电脑所用硬件虚拟指令的当å‰çŠ¶æ€:&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%1:&lt;/b&gt;&amp;nbsp;%2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%3:&lt;/b&gt;&amp;nbsp;%4&lt;/nobr&gt;</translation>
+ <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;没有共享文件夹&lt;/b&gt;&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%1:&lt;/b&gt;&amp;nbsp;%2&lt;/nobr&gt;</source>
@@ -2698,16 +1929,16 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Indicates whether the Remote Desktop Server is enabled (&lt;img src=:/vrdp_16px.png/&gt;) or not (&lt;img src=:/vrdp_disabled_16px.png/&gt;).</source>
- <translation type="unfinished"></translation>
+ <translation>指示是å¦è¦å¯ç”¨è¿œç¨‹æ¡Œé¢æœåŠ¡å™¨ï¼Œæ˜¯ (&lt;img src=:/vrdp_16px.png/&gt;)ï¼Œæˆ–å¦ (&lt;img src=:/vrdp_disabled_16px.png/&gt;)。</translation>
</message>
<message>
<source>&lt;hr&gt;The Remote Desktop Server is listening on port %1</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;hr&gt;远程桌é¢æœåŠ¡å™¨åœ¨ç«¯å£ %1 侦å¬</translation>
</message>
<message>
<source>Indicates the status of different features used by this virtual machine:&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%1:&lt;/b&gt;&amp;nbsp;%2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%3:&lt;/b&gt;&amp;nbsp;%4&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%5:&lt;/b&gt;&amp;nbsp;%6%&lt;/nobr&gt;</source>
<comment>Virtualization Stuff LED</comment>
- <translation type="unfinished"></translation>
+ <translation>指示由该虚拟电脑使用的ä¸åŒåŠŸèƒ½çš„状æ€:&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%1:&lt;/b&gt;&amp;nbsp;%2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%3:&lt;/b&gt;&amp;nbsp;%4&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%5:&lt;/b&gt;&amp;nbsp;%6%&lt;/nobr&gt;</translation>
</message>
</context>
<context>
@@ -2720,44 +1951,24 @@ p, li { white-space: pre-wrap; }
<context>
<name>UIMachineLogic</name>
<message>
- <source>VirtualBox OSE</source>
- <translation type="obsolete">VirtualBox OSE</translation>
- </message>
- <message>
<source> EXPERIMENTAL build %1r%2 - %3</source>
<translation> 实验性编译包 %1r%2 - %3</translation>
</message>
<message>
<source>Preview Monitor %1</source>
- <translation></translation>
+ <translation>预览监视器 %1</translation>
</message>
<message>
<source>Snapshot %1</source>
<translation>备份 %1</translation>
</message>
<message>
- <source>More CD/DVD Images...</source>
- <translation type="obsolete">更多虚拟光盘...</translation>
- </message>
- <message>
- <source>Unmount CD/DVD Device</source>
- <translation type="obsolete">释放光驱</translation>
- </message>
- <message>
- <source>More Floppy Images...</source>
- <translation type="obsolete">更多虚拟软盘...</translation>
- </message>
- <message>
- <source>Unmount Floppy Device</source>
- <translation type="obsolete">释放软驱</translation>
- </message>
- <message>
<source>No CD/DVD Devices Attached</source>
<translation>未分é…光驱</translation>
</message>
<message>
<source>No CD/DVD devices attached to that VM</source>
- <translation></translation>
+ <translation>未分é…光驱给虚拟电脑</translation>
</message>
<message>
<source>No Floppy Devices Attached</source>
@@ -2765,11 +1976,11 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>No floppy devices attached to that VM</source>
- <translation></translation>
+ <translation>未分é…软驱给虚拟电脑</translation>
</message>
<message>
<source>No USB Devices Connected</source>
- <translation></translation>
+ <translation>没有连接 USB 设备</translation>
</message>
<message>
<source>No supported devices connected to the host PC</source>
@@ -2788,11 +1999,11 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Host Audio &amp;Driver:</source>
- <translation>声å¡ç±»åž‹(&amp;D):</translation>
+ <translation>主机音频驱动(&amp;D):</translation>
</message>
<message>
<source>Controls the audio output driver. The &lt;b&gt;Null Audio Driver&lt;/b&gt; makes the guest see an audio card, however every access to it will be ignored.</source>
- <translation>选择声å¡ç±»åž‹ã€‚选项 &lt;b&gt;Null Audio Driver&lt;/b&gt; 让虚拟电脑拥有一张声å¡ï¼Œä½†å…¶è¾“出的声音将被忽略.</translation>
+ <translation>选择声å¡ç±»åž‹ã€‚选项 &lt;b&gt;虚空音频驱动&lt;/b&gt; 让虚拟电脑拥有一张声å¡ï¼Œä½†å…¶è¾“出的声音将被忽略。</translation>
</message>
<message>
<source>Audio &amp;Controller:</source>
@@ -2858,10 +2069,6 @@ p, li { white-space: pre-wrap; }
<translation>æœåŠ¡å™¨ç«¯å£å·(&amp;P):</translation>
</message>
<message>
- <source>Displays the VRDP Server port number. You may specify &lt;tt&gt;0&lt;/tt&gt; (zero) to reset the port to the default value.</source>
- <translation type="obsolete">显示 VRDP æœåŠ¡å™¨ç«¯å£å·. å¯ä»¥æŒ‡å®š &lt;tt&gt;0&lt;/tt&gt; (零) æ¥å°†ç«¯å£å·é‡è®¾ä¸ºé»˜è®¤å€¼.</translation>
- </message>
- <message>
<source>Authentication &amp;Method:</source>
<translation>æœåŠ¡è®¤è¯æ–¹å¼(&amp;M):</translation>
</message>
@@ -2895,40 +2102,37 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Mo&amp;nitor Count:</source>
- <translation type="unfinished"></translation>
+ <translation>监视器数é‡(&amp;N):</translation>
</message>
<message>
<source>Controls the amount of virtual monitors provided to the virtual machine.</source>
- <translation type="unfinished"></translation>
+ <translation>控制æ供给虚拟电脑的虚拟监视器的数é‡ã€‚</translation>
</message>
<message>
<source>&lt;qt&gt;%1&lt;/qt&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;qt&gt;%1&lt;/qt&gt;</translation>
</message>
<message>
<source>Specifies whether multiple simultaneous connections to the VM are permitted.</source>
- <translation type="unfinished"></translation>
+ <translation>指定是å¦å…许多个并å‘连接到虚拟电脑。</translation>
</message>
<message>
<source>&amp;Allow Multiple Connections</source>
- <translation type="unfinished"></translation>
+ <translation>å…许多个连接(&amp;A)</translation>
</message>
<message>
<source>you have 3D Acceleration enabled for a operation system which uses the WDDM video driver. For maximal performance set the guest VRAM to at least &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>对于使用 WDDM 视频驱动程åºçš„æ“作系统,您å¯ç”¨äº† 3D 加速。è¦å°†è™šæ‹Ÿæœº VRAM 设置为最大性能,至少为 &lt;b&gt;%1&lt;/b&gt;。</translation>
</message>
<message>
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
- <translation type="unfinished">您已å¯ç”¨äº†2D视频加速。但该功能目å‰åªèƒ½ç”¨äºŽè™šæ‹Ÿç”µè„‘内的windows系统,因此该特性将被ç¦ç”¨ã€‚</translation>
+ <translation>您已å¯ç”¨äº†2D视频加速。但该功能目å‰åªèƒ½ç”¨äºŽè™šæ‹Ÿç”µè„‘内的Windows系统,因此该特性将被ç¦ç”¨ã€‚</translation>
</message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
<message>
- <source>&lt;qt&gt;%1&amp;nbsp;MB&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;%1&amp;nbsp;MB&lt;/qt&gt;</translation>
- </message>
- <message>
<source>Displays the path where snapshots of this virtual machine will be stored. Be aware that snapshots can take quite a lot of disk space.</source>
<translation>指定用于存放备份的文件夹。需è¦æ³¨æ„的是备份会å ç”¨ä¸€å®šçš„ç£ç›˜ç©ºé—´.</translation>
</message>
@@ -2937,10 +2141,6 @@ p, li { white-space: pre-wrap; }
<translation>基本(&amp;B)</translation>
</message>
<message>
- <source>Identification</source>
- <translation type="obsolete">标识信æ¯</translation>
- </message>
- <message>
<source>&amp;Name:</source>
<translation>å称(&amp;N):</translation>
</message>
@@ -2949,110 +2149,10 @@ p, li { white-space: pre-wrap; }
<translation>显示虚拟电脑å称.</translation>
</message>
<message>
- <source>OS &amp;Type:</source>
- <translation type="obsolete">系统(&amp;T):</translation>
- </message>
- <message>
- <source>Displays the operating system type that you plan to install into this virtual machine (called a guest operating system).</source>
- <translation type="obsolete">显示你è¦å®‰è£…到虚拟电脑的系统类型.</translation>
- </message>
- <message>
- <source>Base &amp;Memory Size</source>
- <translation type="obsolete">内存大å°(&amp;M)</translation>
- </message>
- <message>
- <source>Controls the amount of memory provided to the virtual machine. If you assign too much, the machine might not start.</source>
- <translation type="obsolete">分é…给虚拟电脑的内存è¦æŽ§åˆ¶åœ¨åˆç†èŒƒå›´ï¼Œåˆ†é…太多会导致虚拟电脑ä¸èƒ½æ­£å¸¸å¯åŠ¨.</translation>
- </message>
- <message>
- <source>&lt;</source>
- <translation type="obsolete">&lt;</translation>
- </message>
- <message>
- <source>&gt;</source>
- <translation type="obsolete">&gt;</translation>
- </message>
- <message>
- <source>MB</source>
- <translation type="obsolete">MB</translation>
- </message>
- <message>
- <source>&amp;Video Memory Size</source>
- <translation type="obsolete">显存大å°(&amp;V)</translation>
- </message>
- <message>
- <source>Controls the amount of video memory provided to the virtual machine.</source>
- <translation type="obsolete">指定å¯ä»¥åˆ†é…给虚拟电脑的显存大å°.</translation>
- </message>
- <message>
<source>&amp;Advanced</source>
<translation>高级(&amp;A)</translation>
</message>
<message>
- <source>Boo&amp;t Order:</source>
- <translation type="obsolete">å¯åŠ¨é¡ºåº(&amp;t):</translation>
- </message>
- <message>
- <source>Defines the boot device order. Use the checkboxes on the left to enable or disable individual boot devices. Move items up and down to change the device order.</source>
- <translation type="obsolete">设置å¯åŠ¨é¡ºåºã€‚用选择框æ¥å¯ç”¨æˆ–ç¦ç”¨éœ€è¦æ”¯æŒçš„å¯åŠ¨è®¾å¤‡ã€‚使用上下键改å˜è®¾å¤‡å¯åŠ¨é¡ºåº.</translation>
- </message>
- <message>
- <source>[device]</source>
- <translation type="obsolete">[device]</translation>
- </message>
- <message>
- <source>Move Up (Ctrl-Up)</source>
- <translation type="obsolete">å‘上移动 (Ctrl-Up)</translation>
- </message>
- <message>
- <source>Moves the selected boot device up.</source>
- <translation type="obsolete">å‘上移动所选å¯åŠ¨è®¾å¤‡.</translation>
- </message>
- <message>
- <source>Move Down (Ctrl-Down)</source>
- <translation type="obsolete">å‘下移动 (Ctrl-Down)</translation>
- </message>
- <message>
- <source>Moves the selected boot device down.</source>
- <translation type="obsolete">å‘下移动所选å¯åŠ¨è®¾å¤‡.</translation>
- </message>
- <message>
- <source>Extended Features:</source>
- <translation type="obsolete">扩展特性(e):</translation>
- </message>
- <message>
- <source>When checked, the virtual machine will support the Advanced Configuration and Power Management Interface (ACPI). &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable this feature after having installed a Windows guest operating system!</source>
- <translation type="obsolete">选中,虚拟电脑将å¯ç”¨å¯¹é«˜çº§ç”µæºç®¡ç†ç•Œé¢(ACPI)的支æŒ. &lt;b&gt;请注æ„:&lt;/b&gt; 一旦在虚拟电脑中安装完Windowsæ“作系统,就ä¸åº”å†ç¦ç”¨æœ¬é€‰é¡¹! </translation>
- </message>
- <message>
- <source>Enable A&amp;CPI</source>
- <translation type="obsolete">å¯ç”¨ A&amp;CPI</translation>
- </message>
- <message>
- <source>When checked, the virtual machine will support the Input Output APIC (IO APIC), which may slightly decrease performance. &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable this feature after having installed a Windows guest operating system!</source>
- <translation type="obsolete">选中,虚拟电脑将å¯ç”¨å¯¹è¾“入输出 APIC (IO APIC)的支æŒã€‚这会轻微地é™ä½Žè™šæ‹Ÿç”µè„‘的性能。&lt;b&gt;请注æ„:&lt;/b&gt; 一旦在虚拟电脑中安装完Windowsæ“作系统,就ä¸åº”å†ç¦ç”¨æœ¬é€‰é¡¹! </translation>
- </message>
- <message>
- <source>Enable IO A&amp;PIC</source>
- <translation type="obsolete">å¯ç”¨ IO A&amp;PIC</translation>
- </message>
- <message>
- <source>When checked, the virtual machine will try to make use of the host CPU&apos;s hardware virtualization extensions such as Intel VT-x and AMD-V.</source>
- <translation type="obsolete">选中,虚拟电脑将å°è¯•ä½¿ç”¨CPU上的硬件加速扩展.</translation>
- </message>
- <message>
- <source>Enable &amp;VT-x/AMD-V</source>
- <translation type="obsolete">å¯ç”¨ &amp;VT-x/AMD-V</translation>
- </message>
- <message>
- <source>When checked, the Physical Address Extension (PAE) feature of the host CPU will be exposed to the virtual machine.</source>
- <translation type="obsolete">选中,电脑上的物ç†åœ°å€æ‰©å±•ï¼ˆPAE)特性将会传递给虚拟电脑.</translation>
- </message>
- <message>
- <source>Enable PA&amp;E/NX</source>
- <translation type="obsolete">å¯ç”¨ PA&amp;E/NX</translation>
- </message>
- <message>
<source>&amp;Shared Clipboard:</source>
<translation>共享粘贴æ¿(&amp;S):</translation>
</message>
@@ -3061,14 +2161,6 @@ p, li { white-space: pre-wrap; }
<translation>设定主系统和å­ç³»ç»Ÿé—´å…±äº«ç²˜è´´æ¿çš„模å¼ã€‚注æ„,è¦ä½¿ç”¨è¯¥åŠŸèƒ½éœ€è¦åœ¨è™šæ‹Ÿç”µè„‘内安装增强功能包.</translation>
</message>
<message>
- <source>Defines the type of the virtual IDE controller. Depending on this value, VirtualBox will provide different virtual IDE hardware devices to the guest OS.</source>
- <translation type="obsolete">指定 IDE 控制器类型。根æ®è¿™ä¸ªå€¼ï¼ŒVirtualBox 将为该虚拟电脑æä¾›ä¸åŒçš„ IDE 控制器.</translation>
- </message>
- <message>
- <source>&amp;IDE Controller Type:</source>
- <translation type="obsolete">硬盘控制器(&amp;I):</translation>
- </message>
- <message>
<source>S&amp;napshot Folder:</source>
<translation>备份的ä½ç½®(&amp;n):</translation>
</message>
@@ -3081,62 +2173,10 @@ p, li { white-space: pre-wrap; }
<translation>显示有关虚拟电脑的说明信æ¯ã€‚è¿™å¯ç”¨äºŽå¯¹è™šæ‹Ÿç”µè„‘上所装æ“作系统进行补充说明.</translation>
</message>
<message>
- <source>&amp;Other</source>
- <translation type="obsolete">其它(&amp;O)</translation>
- </message>
- <message>
<source>If checked, any change to mounted CD/DVD or Floppy media performed during machine execution will be saved in the settings file in order to preserve the configuration of mounted media between runs.</source>
<translation>选中åŽï¼Œåœ¨è™šæ‹Ÿç”µè„‘è¿è¡Œè¿‡ç¨‹ä¸­å¯¹ä»»ä½•ä»‹è´¨çš„分é…å˜åŠ¨éƒ½å°†è¢«ä¿å­˜åœ¨é…置文件中.</translation>
</message>
<message>
- <source>&amp;Remember Mounted Media</source>
- <translation type="obsolete">è®°ä½åœ¨è¿è¡Œè¿‡ç¨‹ä¸­åˆ†é…的介质(&amp;R)</translation>
- </message>
- <message>
- <source>Runtime:</source>
- <translation type="obsolete">è¿è¡Œæ—¶:</translation>
- </message>
- <message>
- <source>you have assigned more than &lt;b&gt;75%&lt;/b&gt; of your computer&apos;s memory (&lt;b&gt;%1&lt;/b&gt;) to the virtual machine. Not enough memory is left for your host operating system. Please select a smaller amount.</source>
- <translation type="obsolete">您已将当å‰è®¡ç®—机总内存(&lt;b&gt;%1&lt;/b&gt;)中超过 &lt;b&gt;75%&lt;/b&gt; 的部分分é…给了当å‰çš„虚拟电脑。这会导致主控系统上没有足够的内存æ¥ä¿è¯æ­£å¸¸è¿è¡Œã€‚因此请选择一个更å°çš„数目。</translation>
- </message>
- <message>
- <source>you have assigned more than &lt;b&gt;50%&lt;/b&gt; of your computer&apos;s memory (&lt;b&gt;%1&lt;/b&gt;) to the virtual machine. There might not be enough memory left for your host operating system. Continue at your own risk.</source>
- <translation type="obsolete">您已将当å‰è®¡ç®—机总内存(&lt;b&gt;%1&lt;/b&gt;)中超过 &lt;b&gt;50%&lt;/b&gt; 的部分分é…给了当å‰çš„虚拟电脑。这å¯èƒ½ä¼šå¯¼è‡´ä¸»æŽ§ç³»ç»Ÿä¸Šæ²¡æœ‰è¶³å¤Ÿçš„内存æ¥ä¿è¯æ­£å¸¸è¿è¡Œã€‚请您å†æ–Ÿé…Œæ˜¯å¦åº”选择一个更å°çš„数目。</translation>
- </message>
- <message>
- <source>you have assigned less than &lt;b&gt;%1&lt;/b&gt; of video memory which is the minimum amount required to switch the virtual machine to fullscreen or seamless mode.</source>
- <translation type="obsolete">您分é…了少于 &lt;b&gt;%1&lt;/b&gt; 的显存,这会导致虚拟电脑无法切æ¢åˆ°å…¨å±æ¨¡å¼æˆ–æ— ç¼æ¨¡å¼ã€‚</translation>
- </message>
- <message>
- <source>When checked, the virtual machine will be given access to the 3D graphics capabilities available on the host.</source>
- <translation type="obsolete">选中,虚拟电脑内将å¯ä½¿ç”¨æ¥è‡ªä¸»æŽ§ç³»ç»Ÿä¸Šçš„3D加速能力。</translation>
- </message>
- <message>
- <source>Enable &amp;3D Acceleration</source>
- <translation type="obsolete">å¯ç”¨3D加速(&amp;3)</translation>
- </message>
- <message>
- <source>you have assigned more than &lt;b&gt;%1%&lt;/b&gt; of your computer&apos;s memory (&lt;b&gt;%2&lt;/b&gt;) to the virtual machine. Not enough memory is left for your host operating system. Please select a smaller amount.</source>
- <translation type="obsolete">您已将当å‰è®¡ç®—机总内存(&lt;b&gt;%2&lt;/b&gt;)中超过 &lt;b&gt;%1%&lt;/b&gt; 的部分分é…给了当å‰çš„虚拟电脑。这会导致主控系统上没有足够的内存æ¥ä¿è¯æ­£å¸¸è¿è¡Œã€‚因此请选择一个更å°çš„æ•°ç›®.</translation>
- </message>
- <message>
- <source>you have assigned more than &lt;b&gt;%1%&lt;/b&gt; of your computer&apos;s memory (&lt;b&gt;%2&lt;/b&gt;) to the virtual machine. There might not be enough memory left for your host operating system. Continue at your own risk.</source>
- <translation type="obsolete">您已将当å‰è®¡ç®—机总内存(&lt;b&gt;%2&lt;/b&gt;)中超过 &lt;b&gt;%1%&lt;/b&gt; 的部分分é…给了当å‰çš„虚拟电脑。这å¯èƒ½ä¼šå¯¼è‡´ä¸»æŽ§ç³»ç»Ÿä¸Šæ²¡æœ‰è¶³å¤Ÿçš„内存æ¥ä¿è¯æ­£å¸¸è¿è¡Œã€‚请您å†æ–Ÿé…Œæ˜¯å¦åº”选择一个更å°çš„数目。</translation>
- </message>
- <message>
- <source>there is a 64 bits guest OS type assigned for this VM, which requires virtualization feature (VT-x/AMD-V) to be enabled too, else your guest will fail to detect a 64 bits CPU and will not be able to boot, so this feature will be enabled automatically when you&apos;ll accept VM Settings by pressing OK button.</source>
- <translation type="obsolete">您为本虚拟电脑指定了一个64ä½çš„æ“作系统,这需è¦ç¡¬ä»¶åŠ é€ŸæŠ€æœ¯(VT-x/AMD-V)也åŒæ—¶å¯ç”¨ï¼Œå¦åˆ™è™šæ‹Ÿç”µè„‘内的æ“作系统就无法检测到64ä½çš„CPU,åŒæ—¶ä¹Ÿå°±æ— æ³•å¯åŠ¨ã€‚因此该特性将被自动å¯ç”¨.</translation>
- </message>
- <message>
- <source>When checked, the virtual machine will try to make use of the nested paging extension of Intel VT-x and AMD-V.</source>
- <translation type="obsolete">选中,虚拟电脑将å°è¯•ä½¿ç”¨Intel VT-x或AMD-Vç­‰CPU上具备的 nested paging 扩展特性.</translation>
- </message>
- <message>
- <source>Enable Nested Pa&amp;ging</source>
- <translation type="obsolete">å¯ç”¨ Nested Pa&amp;ging</translation>
- </message>
- <message>
<source>Removable Media:</source>
<translation>光驱状æ€:</translation>
</message>
@@ -3162,24 +2202,16 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Show At &amp;Top Of Screen</source>
- <translation>在å±å¹•é¡¶éƒ¨æ˜¾ç¤º</translation>
+ <translation>在å±å¹•é¡¶éƒ¨æ˜¾ç¤º(&amp;T)</translation>
</message>
<message>
<source>you have selected a 64-bit guest OS type for this VM. As such guests require hardware virtualization (VT-x/AMD-V), this feature will be enabled automatically.</source>
- <translation type="unfinished">您已ç»ä¸ºè¯¥è™šæ‹Ÿç”µè„‘选择了一个64ä½çš„æ“作系统。该æ“作系统需è¦ç¡¬ä»¶è™šæ‹ŸæŒ‡ä»¤ (VT-x/AMD-V) 的支æŒæ–¹èƒ½è¿è¡Œï¼Œå› æ­¤è¯¥ç‰¹æ€§å°†è¢«è‡ªåŠ¨å¯ç”¨ã€‚</translation>
+ <translation>您已ç»ä¸ºè¯¥è™šæ‹Ÿç”µè„‘选择了一个64ä½çš„æ“作系统。该æ“作系统需è¦ç¡¬ä»¶è™šæ‹ŸæŒ‡ä»¤ (VT-x/AMD-V) 的支æŒæ–¹èƒ½è¿è¡Œï¼Œå› æ­¤è¯¥ç‰¹æ€§å°†è¢«è‡ªåŠ¨å¯ç”¨ã€‚</translation>
</message>
</context>
<context>
<name>UIMachineSettingsNetwork</name>
<message>
- <source>Select TAP setup application</source>
- <translation type="obsolete">Select TAP setup application</translation>
- </message>
- <message>
- <source>Select TAP terminate application</source>
- <translation type="obsolete">Select TAP terminate application</translation>
- </message>
- <message>
<source>When checked, plugs this virtual network adapter into the virtual machine.</source>
<translation>选中,将在虚拟电脑内å¯ç”¨è¯¥ç½‘络连接.</translation>
</message>
@@ -3188,10 +2220,6 @@ p, li { white-space: pre-wrap; }
<translation>å¯ç”¨ç½‘络连接(&amp;E)</translation>
</message>
<message>
- <source>A&amp;dapter Type:</source>
- <translation type="obsolete">控制芯片(&amp;d):</translation>
- </message>
- <message>
<source>Selects the type of the virtual network adapter. Depending on this value, VirtualBox will provide different network hardware to the virtual machine.</source>
<translation>选择网络连接芯片。根æ®è¯¥å€¼ä¸ºè¯¥è™šæ‹Ÿç”µè„‘æä¾›ä¸åŒçš„网络硬件.</translation>
</message>
@@ -3200,139 +2228,24 @@ p, li { white-space: pre-wrap; }
<translation>连接方å¼(&amp;A):</translation>
</message>
<message>
- <source>Controls the way how this virtual adapter is attached to the real network of the Host OS.</source>
- <translation type="obsolete">设置网络连接以何ç§æ–¹å¼æŽ¥å…¥åˆ°ä¸»æœºä¸Šçš„真实网络.</translation>
- </message>
- <message>
- <source>&amp;Network Name:</source>
- <translation type="obsolete">网络å称(&amp;N):</translation>
- </message>
- <message>
- <source>Displays the name of the internal network selected for this adapter.</source>
- <translation type="obsolete">显示为该网络连接选择的内部网络å称.</translation>
- </message>
- <message>
- <source>&amp;MAC Address:</source>
- <translation type="obsolete">MAC 地å€(&amp;M):</translation>
- </message>
- <message>
- <source>Displays the MAC address of this adapter. It contains exactly 12 characters chosen from {0-9,A-F}. Note that the second character must be an even digit.</source>
- <translation>显示这å—网å¡çš„ MAC 地å€ã€‚它包å«12ä½çš„字符信æ¯ï¼Œæ¯ä½å­—符å–自 {0-9,A-F} 。请注æ„:第二ä½å­—符必须为å¶æ•°.</translation>
- </message>
- <message>
- <source>Generates a new random MAC address.</source>
- <translation>生æˆä¸€ä¸ªæ–°çš„éšæœºMAC 地å€.</translation>
- </message>
- <message>
- <source>&amp;Generate</source>
- <translation type="obsolete">éšæœºç”Ÿæˆ(&amp;G)</translation>
- </message>
- <message>
- <source>Indicates whether the virtual network cable is plugged in on machine startup or not.</source>
- <translation>指示虚拟网线在å¯åŠ¨æ—¶æ˜¯å¦è¿žæŽ¥.</translation>
- </message>
- <message>
- <source>Ca&amp;ble Connected</source>
- <translation type="obsolete">接入网线(&amp;b)</translation>
- </message>
- <message>
- <source>&amp;Interface Name:</source>
- <translation type="obsolete">&amp;Interface Name:</translation>
- </message>
- <message>
- <source>Displays the TAP interface name.</source>
- <translation type="obsolete">Displays the TAP interface name.</translation>
- </message>
- <message>
- <source>&amp;Setup Application:</source>
- <translation type="obsolete">&amp;Setup Application:</translation>
- </message>
- <message>
- <source>Displays the command executed to set up the TAP interface.</source>
- <translation type="obsolete">Displays the command executed to set up the TAP interface.</translation>
- </message>
- <message>
- <source>Selects the setup application.</source>
- <translation type="obsolete">Selects the setup application.</translation>
- </message>
- <message>
- <source>&amp;Terminate Application:</source>
- <translation type="obsolete">&amp;Terminate Application:</translation>
- </message>
- <message>
- <source>Displays the command executed to terminate the TAP interface.</source>
- <translation type="obsolete">Displays the command executed to terminate the TAP interface.</translation>
- </message>
- <message>
- <source>Selects the terminate application.</source>
- <translation type="obsolete">Selects the terminate application.</translation>
- </message>
- <message>
- <source>Host Interface Settings</source>
- <translation type="obsolete">Host Interface Settings</translation>
- </message>
- <message>
- <source>Adapter</source>
- <comment>network</comment>
- <translation type="obsolete">主机虚拟网络界é¢</translation>
- </message>
- <message>
- <source>Not selected</source>
- <comment>adapter</comment>
- <translation type="obsolete">未指定</translation>
- </message>
- <message>
- <source>Network</source>
- <comment>internal</comment>
- <translation type="obsolete">网络</translation>
- </message>
- <message>
- <source>Not selected</source>
- <comment>network</comment>
- <translation type="obsolete">未指定</translation>
- </message>
- <message>
- <source>MAC Address</source>
- <translation type="obsolete">MAC 地å€</translation>
- </message>
- <message>
- <source>Not selected</source>
- <comment>address</comment>
- <translation type="obsolete">未指定</translation>
- </message>
- <message>
- <source>Cable</source>
- <translation type="obsolete">网络</translation>
- </message>
- <message>
- <source>Connected</source>
- <comment>cable</comment>
- <translation type="obsolete">已连接</translation>
- </message>
- <message>
- <source>Not connected</source>
- <comment>cable</comment>
- <translation type="obsolete">未连接</translation>
+ <source>Controls how this virtual adapter is attached to the real network of the Host OS.</source>
+ <translation>设置虚拟电脑内的网络连接以何ç§æ–¹å¼æŽ¥å…¥åˆ°ä¸»æœºä¸Šçš„真实网络.</translation>
</message>
<message>
<source>Adapter &amp;Type:</source>
<translation>控制芯片(&amp;T):</translation>
</message>
<message>
- <source>Open extended settings dialog for current attachment type.</source>
- <translation type="obsolete">打开当å‰è¿žæŽ¥æ–¹å¼çš„扩展特性对è¯æ¡†.</translation>
- </message>
- <message>
<source>no bridged network adapter is selected</source>
<translation>未指定è¦bridged的网络界é¢</translation>
</message>
<message>
<source>no internal network name is specified</source>
- <translation>未指定internal网络å称</translation>
+ <translation>未指定内部网络å称</translation>
</message>
<message>
<source>no host-only network adapter is selected</source>
- <translation>未指定è¦host-only的网络界é¢</translation>
+ <translation>未指定è¦ä»…主机(Host-Only)的网络界é¢</translation>
</message>
<message>
<source>Not selected</source>
@@ -3340,18 +2253,10 @@ p, li { white-space: pre-wrap; }
<translation>未指定</translation>
</message>
<message>
- <source>Controls how this virtual adapter is attached to the real network of the Host OS.</source>
- <translation>设置虚拟电脑内的网络连接以何ç§æ–¹å¼æŽ¥å…¥åˆ°ä¸»æœºä¸Šçš„真实网络.</translation>
- </message>
- <message>
<source>&amp;Name:</source>
<translation>ç•Œé¢å称(&amp;N):</translation>
</message>
<message>
- <source>Selects the name of the network adapter for &lt;b&gt;Bridged Adapter&lt;/b&gt; or &lt;b&gt;Host-only Adapter&lt;/b&gt; attachments and the name of the network &lt;b&gt;Internal Network&lt;/b&gt; attachments.</source>
- <translation type="obsolete">为 &lt;b&gt;Bridged Adapter&lt;/b&gt; å’Œ &lt;b&gt;Host-only Adapter&lt;/b&gt; 选择一个其所è¦è¿žæŽ¥çš„网络界é¢ï¼Œä»¥åŠä¸º &lt;b&gt;Internal Network&lt;/b&gt; 指定一个界é¢å称.</translation>
- </message>
- <message>
<source>A&amp;dvanced</source>
<translation>高级(&amp;d)</translation>
</message>
@@ -3364,150 +2269,67 @@ p, li { white-space: pre-wrap; }
<translation>MAC 地å€(&amp;M):</translation>
</message>
<message>
+ <source>Displays the MAC address of this adapter. It contains exactly 12 characters chosen from {0-9,A-F}. Note that the second character must be an even digit.</source>
+ <translation>显示这å—网å¡çš„ MAC 地å€ã€‚它包å«12ä½çš„字符信æ¯ï¼Œæ¯ä½å­—符å–自 {0-9,A-F} 。请注æ„:第二ä½å­—符必须为å¶æ•°.</translation>
+ </message>
+ <message>
+ <source>Generates a new random MAC address.</source>
+ <translation>生æˆä¸€ä¸ªæ–°çš„éšæœºMAC 地å€.</translation>
+ </message>
+ <message>
+ <source>Indicates whether the virtual network cable is plugged in on machine startup or not.</source>
+ <translation>指示虚拟网线在å¯åŠ¨æ—¶æ˜¯å¦è¿žæŽ¥.</translation>
+ </message>
+ <message>
<source>&amp;Cable connected</source>
<translation>接入网线(&amp;C)</translation>
</message>
<message>
<source>Opens dialog to manage port forwarding rules.</source>
- <translation type="unfinished"></translation>
+ <translation>打开管ç†ç«¯å£è½¬å‘规则的对è¯æ¡†ã€‚</translation>
</message>
<message>
<source>&amp;Port Forwarding</source>
- <translation type="unfinished"></translation>
+ <translation>端å£è½¬å‘(&amp;P)</translation>
</message>
<message>
<source>&amp;Promiscuous Mode:</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>æ··æ‚模å¼(&amp;P):</translation>
</message>
<message>
<source>Selects the promiscuous mode policy of the network adapter when attached to an internal network, host only network or a bridge.</source>
- <translation type="unfinished"></translation>
+ <translation>当附加到内部网络ã€ä»…主机(Host-Only)网络或桥接网络时,选择网å¡çš„æ··æ‚模å¼ç­–略。</translation>
</message>
<message>
<source>Generic Properties:</source>
- <translation type="unfinished"></translation>
+ <translation>通用属性:</translation>
</message>
<message>
<source>Enter any configuration settings here for the network attachment driver you will be using. The settings should be of the form &lt;b&gt;name=value&lt;/b&gt; and will depend on the driver. Use &lt;b&gt;shift-enter&lt;/b&gt; to add a new entry.</source>
- <translation type="unfinished"></translation>
+ <translation>在此输入将è¦ä½¿ç”¨çš„网络附件的任何é…置设置。设置项的格å¼ä¸º&lt;b&gt;å称=值&lt;/b&gt;,具体å–值å–决于驱动程åºã€‚使用 &lt;b&gt;shift-enter&lt;/b&gt; é”®æ¥æ·»åŠ æ–°é¡¹ç›®ã€‚</translation>
</message>
<message>
<source>no generic driver is selected</source>
- <translation type="unfinished"></translation>
+ <translation>没有选定通用驱动程åº</translation>
</message>
<message>
<source>Selects the network adapter on the host system that traffic to and from this network card will go through.</source>
- <translation type="unfinished"></translation>
+ <translation>选择主机中与此网å¡é€šè®¯çš„网å¡ã€‚</translation>
</message>
<message>
<source>Enter the name of the internal network that this network card will be connected to. You can create a new internal network by choosing a name which is not used by any other network cards in this virtual machine or others.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>输入该网å¡å°†è¿žæŽ¥çš„内部网络的å称。所创建的内部网络的å称ä¸åº”与现有所有虚拟电脑中的现有的内部网络的å称相åŒã€‚</translation>
</message>
<message>
<source>Selects the virtual network adapter on the host system that traffic to and from this network card will go through. You can create and remove adapters using the global network settings in the virtual machine manager window.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>选择主机中与该网å¡é€šè®¯çš„虚拟网å¡ã€‚您å¯ä»¥ä½¿ç”¨è™šæ‹Ÿæœºç®¡ç†çª—å£ä¸­çš„全局网络设置æ¥åˆ›å»ºå’Œç§»é™¤é€‚é…器。</translation>
</message>
<message>
<source>Selects the driver to be used with this network card.</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>UIMachineSettingsNetworkDetails</name>
- <message>
- <source>no bridged network adapter is selected</source>
- <translation type="obsolete">未指定è¦bridged的主机网络界é¢</translation>
- </message>
- <message>
- <source>no internal network name is specified</source>
- <translation type="obsolete">未指定internal网络å称</translation>
- </message>
- <message>
- <source>no host-only adapter is selected</source>
- <translation type="obsolete">未指定è¦host-only的主机虚拟网络界é¢</translation>
- </message>
- <message>
- <source>Basic Details</source>
- <translation type="obsolete">基本明细</translation>
- </message>
- <message>
- <source>Bridged Network Details</source>
- <translation type="obsolete">Bridged 网络明细</translation>
- </message>
- <message>
- <source>Internal Network Details</source>
- <translation type="obsolete">Internal 网络明细</translation>
- </message>
- <message>
- <source>Host-only Network Details</source>
- <translation type="obsolete">Host-only 网络明细</translation>
- </message>
- <message>
- <source>Not selected</source>
- <translation type="obsolete">未指定</translation>
- </message>
- <message>
- <source>Host Settings</source>
- <translation type="obsolete">主机端设置</translation>
- </message>
- <message>
- <source>&amp;Bridged Network Adapter:</source>
- <translation type="obsolete">Bridged 网络界é¢(&amp;B):</translation>
- </message>
- <message>
- <source>Displays the name of the host network adapter selected for bridged networking.</source>
- <translation type="obsolete">显示该 bridged 网络界é¢æ‰€å¯¹åº”的主机网络界é¢çš„å称.</translation>
- </message>
- <message>
- <source>Internal &amp;Network:</source>
- <translation type="obsolete">Internal 网络å称(&amp;N):</translation>
- </message>
- <message>
- <source>Displays the name of the internal network selected for this adapter.</source>
- <translation type="obsolete">显示该 internal 网络界é¢çš„å称.</translation>
- </message>
- <message>
- <source>Host-only &amp;Network Adapter:</source>
- <translation type="obsolete">Host-only 网络界é¢(&amp;N):</translation>
- </message>
- <message>
- <source>Displays the name of the VirtualBox network adapter selected for host-only networking.</source>
- <translation type="obsolete">显示该 host-only 网络界é¢æ‰€å¯¹åº”的主机虚拟网络界é¢çš„å称.</translation>
- </message>
- <message>
- <source>Guest Settings</source>
- <translation type="obsolete">虚拟端设置</translation>
- </message>
- <message>
- <source>Guest &amp;MAC Address:</source>
- <translation type="obsolete">MAC 地å€(&amp;M):</translation>
- </message>
- <message>
- <source>Displays the MAC address of this adapter. It contains exactly 12 characters chosen from {0-9,A-F}. Note that the second character must be an even digit.</source>
- <translation type="obsolete">显示这å—网å¡çš„ MAC 地å€ã€‚它包å«12ä½çš„字符信æ¯ï¼Œæ¯ä½å­—符å–自 {0-9,A-F} 。请注æ„:第二ä½å­—符必须为å¶æ•°.</translation>
- </message>
- <message>
- <source>Generates a new random MAC address.</source>
- <translation type="obsolete">生æˆä¸€ä¸ªæ–°çš„éšæœºMAC 地å€.</translation>
- </message>
- <message>
- <source>&amp;Cable connected</source>
- <translation type="obsolete">接入网线(&amp;C)</translation>
- </message>
- <message>
- <source>Indicates whether the virtual network cable is plugged in on machine startup or not.</source>
- <translation type="obsolete">指示虚拟网线在å¯åŠ¨æ—¶æ˜¯å¦ä¸Žä¸»æœºè¿žæŽ¥.</translation>
- </message>
-</context>
-<context>
- <name>UIMachineSettingsNetworkPage</name>
- <message>
- <source>No host network interface is selected</source>
- <translation type="obsolete">未指定host network interface</translation>
- </message>
- <message>
- <source>Internal network name is not set</source>
- <translation type="obsolete">Internal network å称未设定</translation>
+ <translation>选择è¦ç”¨äºŽè¯¥ç½‘å¡çš„驱动程åºã€‚</translation>
</message>
</context>
<context>
@@ -3538,18 +2360,10 @@ p, li { white-space: pre-wrap; }
<translation>&amp;IRQ:</translation>
</message>
<message>
- <source>Displays the IRQ number of this parallel port. Valid values are integer numbers in range from &lt;tt&gt;0&lt;/tt&gt; to &lt;tt&gt;255&lt;/tt&gt;. Values greater than &lt;tt&gt;15&lt;/tt&gt; may only be used if the &lt;b&gt;IO APIC&lt;/b&gt; is enabled for this virtual machine.</source>
- <translation type="obsolete">显示该并å£çš„ IRQå·ï¼Œæ­£ç¡®çš„数值为从 &lt;tt&gt;0&lt;/tt&gt; 到 &lt;tt&gt;255&lt;/tt&gt;çš„æ•´æ•°. åªæœ‰å½“虚拟电脑中å¯ç”¨ &lt;b&gt;IO APIC&lt;/b&gt; æ—¶æ‰èƒ½ä½¿ç”¨å¤§äºŽ &lt;tt&gt;15&lt;/tt&gt; 的值.</translation>
- </message>
- <message>
<source>I/O Po&amp;rt:</source>
<translation>I/O端å£(&amp;r):</translation>
</message>
<message>
- <source>Displays the base I/O port address of this parallel port. This should be a whole number between &lt;tt&gt;0&lt;/tt&gt; and &lt;tt&gt;0xFFFF&lt;/tt&gt;.</source>
- <translation type="obsolete">显示该并å£çš„ I/O 端å£åœ°å€ï¼Œæ­£ç¡®çš„数值为从 &lt;tt&gt;0&lt;/tt&gt; 到 &lt;tt&gt;0xFFFF&lt;/tt&gt;çš„æ•´æ•°.</translation>
- </message>
- <message>
<source>Port &amp;Path:</source>
<translation>端å£è·¯å¾„(&amp;P):</translation>
</message>
@@ -3585,58 +2399,46 @@ p, li { white-space: pre-wrap; }
<name>UIMachineSettingsPortForwardingDlg</name>
<message>
<source>Port Forwarding Rules</source>
- <translation type="unfinished"></translation>
+ <translation>端å£è½¬å‘规则</translation>
</message>
<message>
<source>This table contains a list of port forwarding rules.</source>
- <translation type="unfinished"></translation>
+ <translation>该表格包å«äº†ç«¯å£è½¬å‘规则的列表。</translation>
</message>
<message>
<source>Insert new rule</source>
- <translation type="unfinished"></translation>
+ <translation>æ’入新规则</translation>
</message>
<message>
<source>Copy selected rule</source>
- <translation type="unfinished"></translation>
+ <translation>å¤åˆ¶é€‰å®šçš„规则</translation>
</message>
<message>
<source>Delete selected rule</source>
- <translation type="unfinished"></translation>
+ <translation>删除选定的规则</translation>
</message>
<message>
<source>This button adds new port forwarding rule.</source>
- <translation type="unfinished"></translation>
+ <translation>该按钮添加新的端å£è½¬å‘规则。</translation>
</message>
<message>
<source>This button deletes selected port forwarding rule.</source>
- <translation type="unfinished"></translation>
+ <translation>该按钮删除选定的端å£è½¬å‘规则。</translation>
</message>
</context>
<context>
<name>UIMachineSettingsSF</name>
<message>
- <source>&amp;Add New Shared Folder</source>
- <translation type="obsolete">添加一个新的数æ®ç©ºé—´(&amp;A)</translation>
- </message>
- <message>
- <source>&amp;Edit Selected Shared Folder</source>
- <translation type="obsolete">编辑所选数æ®ç©ºé—´(&amp;E)</translation>
- </message>
- <message>
- <source>&amp;Remove Selected Shared Folder</source>
- <translation type="obsolete">删除所选数æ®ç©ºé—´(&amp;R)</translation>
- </message>
- <message>
<source>Adds a new shared folder definition.</source>
- <translation>添加一个新的数æ®ç©ºé—´.</translation>
+ <translation>添加一个新的共享文件夹定义。</translation>
</message>
<message>
<source>Edits the selected shared folder definition.</source>
- <translation>编辑所选数æ®ç©ºé—´çš„设置.</translation>
+ <translation>编辑选定的共享文件夹定义。</translation>
</message>
<message>
<source>Removes the selected shared folder definition.</source>
- <translation>删除所选数æ®ç©ºé—´.</translation>
+ <translation>移除选定的共享文件夹定义。</translation>
</message>
<message>
<source> Machine Folders</source>
@@ -3656,7 +2458,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Lists all shared folders accessible to this machine. Use &apos;net use x: \\vboxsvr\share&apos; to access a shared folder named &lt;i&gt;share&lt;/i&gt; from a DOS-like OS, or &apos;mount -t vboxsf share mount_point&apos; to access it from a Linux OS. This feature requires Guest Additions.</source>
- <translation>列出本虚拟电脑å¯è®¿é—®çš„所有数æ®ç©ºé—´ã€‚使用 &apos;net use x: \\vboxsvr\share&apos; 从DOS或Windows中访问å为: &lt;i&gt;share&lt;/i&gt; çš„æ•°æ®ç©ºé—´ï¼Œæˆ–使用 &apos;mount -t vboxsf share mount_point&apos; 从Linux类的æ“作系统中访问该文件夹。该功能需è¦åœ¨è™šæ‹Ÿç”µè„‘中安装增强功能包.</translation>
+ <translation>列出本虚拟电脑å¯è®¿é—®çš„所有共享文件夹。使用 &apos;net use x: \\vboxsvr\share&apos; 从DOS或Windows中访问å为: &lt;i&gt;share&lt;/i&gt; 的共享文件夹,或使用 &apos;mount -t vboxsf share mount_point&apos; 从Linux类的æ“作系统中访问该文件夹。该功能需è¦åœ¨è™šæ‹Ÿç”µè„‘中安装增强功能包。</translation>
</message>
<message>
<source>Name</source>
@@ -3671,43 +2473,39 @@ p, li { white-space: pre-wrap; }
<translation>访问æƒé™</translation>
</message>
<message>
- <source> Global Folders</source>
- <translation type="obsolete">全局数æ®ç©ºé—´</translation>
- </message>
- <message>
<source>&amp;Add Shared Folder</source>
- <translation>添加数æ®ç©ºé—´(&amp;A)</translation>
+ <translation>添加共享文件夹(&amp;A)</translation>
</message>
<message>
<source>&amp;Edit Shared Folder</source>
- <translation>编辑数æ®ç©ºé—´(&amp;E)</translation>
+ <translation>编辑共享文件夹(&amp;E)</translation>
</message>
<message>
<source>&amp;Remove Shared Folder</source>
- <translation>删除数æ®ç©ºé—´(&amp;R)</translation>
+ <translation>移除共享文件夹(&amp;R)</translation>
</message>
<message>
<source>&amp;Folders List</source>
- <translation>æ•°æ®ç©ºé—´åˆ—表(&amp;F)</translation>
+ <translation>共享文件夹列表(&amp;F)</translation>
</message>
<message>
<source>Auto-Mount</source>
- <translation type="unfinished"></translation>
+ <translation>自动挂载</translation>
</message>
<message>
<source>Yes</source>
- <translation type="unfinished">是</translation>
+ <translation>是</translation>
</message>
</context>
<context>
<name>UIMachineSettingsSFDetails</name>
<message>
<source>Add Share</source>
- <translation>添加数æ®ç©ºé—´</translation>
+ <translation>添加共享文件夹</translation>
</message>
<message>
<source>Edit Share</source>
- <translation>编辑数æ®ç©ºé—´</translation>
+ <translation>编辑共享文件夹</translation>
</message>
<message>
<source>Dialog</source>
@@ -3715,19 +2513,19 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Folder Path:</source>
- <translation>æ•°æ®ç©ºé—´ä½ç½®:</translation>
+ <translation>共享文件夹路径:</translation>
</message>
<message>
<source>Folder Name:</source>
- <translation>æ•°æ®ç©ºé—´å称:</translation>
+ <translation>共享文件夹å称:</translation>
</message>
<message>
<source>Displays the name of the shared folder (as it will be seen by the guest OS).</source>
- <translation>显示数æ®ç©ºé—´å称(虚拟电脑内的系统需通过该å称æ¥è®¿é—®æœ¬æ•°æ®ç©ºé—´).</translation>
+ <translation>显示共享文件夹å称(虚拟电脑内的系统需通过该å称æ¥è®¿é—®æœ¬å…±äº«æ–‡ä»¶å¤¹)。</translation>
</message>
<message>
<source>When checked, the guest OS will not be able to write to the specified shared folder.</source>
- <translation>选中,该数æ®ç©ºé—´åœ¨è™šæ‹Ÿç”µè„‘内就å˜ä¸ºåªè¯».</translation>
+ <translation>选中,该共享文件夹在虚拟电脑内就å˜ä¸ºåªè¯».</translation>
</message>
<message>
<source>&amp;Read-only</source>
@@ -3739,15 +2537,15 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>When checked, the guest OS will try to automatically mount the shared folder on startup.</source>
- <translation type="unfinished"></translation>
+ <translation>选中时,虚拟机æ“作系统将在å¯åŠ¨æ—¶å°è¯•è‡ªåŠ¨è£…载共享文件夹。</translation>
</message>
<message>
<source>&amp;Auto-mount</source>
- <translation type="unfinished"></translation>
+ <translation>自动挂载(&amp;A)</translation>
</message>
<message>
<source>If checked, this shared folder will be permanent.</source>
- <translation type="unfinished"></translation>
+ <translation>选中时,该共享文件夹将是永久性的。</translation>
</message>
</context>
<context>
@@ -3778,18 +2576,10 @@ p, li { white-space: pre-wrap; }
<translation>&amp;IRQ:</translation>
</message>
<message>
- <source>Displays the IRQ number of this serial port. Valid values are integer numbers in range from &lt;tt&gt;0&lt;/tt&gt; to &lt;tt&gt;255&lt;/tt&gt;. Values greater than &lt;tt&gt;15&lt;/tt&gt; may only be used if the &lt;b&gt;IO APIC&lt;/b&gt; is enabled for this virtual machine.</source>
- <translation type="obsolete">显示该串å£çš„ IRQå·ç ï¼Œæ­£ç¡®çš„数值为从 &lt;tt&gt;0&lt;/tt&gt; 到 &lt;tt&gt;255&lt;/tt&gt;çš„æ•´æ•°. åªæœ‰å½“虚拟电脑中å¯ç”¨ &lt;b&gt;IO APIC&lt;/b&gt; æ—¶æ‰èƒ½ä½¿ç”¨å¤§äºŽ &lt;tt&gt;15&lt;/tt&gt; 的值.</translation>
- </message>
- <message>
<source>I/O Po&amp;rt:</source>
<translation>I/O端å£(&amp;r):</translation>
</message>
<message>
- <source>Displays the base I/O port address of this serial port. This should be a whole number between &lt;tt&gt;0&lt;/tt&gt; and &lt;tt&gt;0xFFFF&lt;/tt&gt;.</source>
- <translation type="obsolete">显示该串å£çš„ I/O 端å£åœ°å€ï¼Œæ­£ç¡®çš„数值为从 &lt;tt&gt;0&lt;/tt&gt; 到 &lt;tt&gt;0xFFFF&lt;/tt&gt;çš„æ•´æ•°.</translation>
- </message>
- <message>
<source>Port &amp;Mode:</source>
<translation>端å£æ¨¡å¼(&amp;M):</translation>
</message>
@@ -3806,10 +2596,6 @@ p, li { white-space: pre-wrap; }
<translation>创建通é“(&amp;C)</translation>
</message>
<message>
- <source>Port &amp;Path:</source>
- <translation type="obsolete">端å£è·¯å¾„(&amp;P):</translation>
- </message>
- <message>
<source>Displays the path to the serial port&apos;s pipe on the host when the port is working in &lt;b&gt;Host Pipe&lt;/b&gt; mode, or the host serial device name when the port is working in &lt;b&gt;Host Device&lt;/b&gt; mode.</source>
<translation>当端å£å·¥ä½œåœ¨ &lt;b&gt;Host Pipe&lt;/b&gt; 模å¼æ—¶å°†æ˜¾ç¤ºè¯¥ä¸²å£é€šé“在主机上的路径,或者当端å£å·¥ä½œåœ¨ &lt;b&gt;Host Device&lt;/b&gt; 模å¼æ—¶å°†æ˜¾ç¤ºä¸»æœºä¸Šçš„串å£è®¾å¤‡å.</translation>
</message>
@@ -3844,78 +2630,6 @@ p, li { white-space: pre-wrap; }
<context>
<name>UIMachineSettingsStorage</name>
<message>
- <source>No hard disk is selected for &lt;i&gt;%1&lt;/i&gt;</source>
- <translation type="obsolete">没有为 &lt;i&gt;%1&lt;/i&gt;指定虚拟硬盘</translation>
- </message>
- <message>
- <source>&lt;i&gt;%1&lt;/i&gt; uses the hard disk that is already attached to &lt;i&gt;%2&lt;/i&gt;</source>
- <translation type="obsolete">&lt;i&gt;%1&lt;/i&gt; 使用的虚拟硬盘已ç»è¿žæŽ¥åˆ° &lt;i&gt;%2&lt;/i&gt;</translation>
- </message>
- <message>
- <source>&amp;Add Attachment</source>
- <translation type="obsolete">分é…虚拟硬盘(&amp;A)</translation>
- </message>
- <message>
- <source>&amp;Remove Attachment</source>
- <translation type="obsolete">删除虚拟硬盘(&amp;R)</translation>
- </message>
- <message>
- <source>&amp;Select Hard Disk</source>
- <translation type="obsolete">选择虚拟硬盘(&amp;S)</translation>
- </message>
- <message>
- <source>Adds a new hard disk attachment.</source>
- <translation type="obsolete">分é…一个新的虚拟硬盘.</translation>
- </message>
- <message>
- <source>Removes the highlighted hard disk attachment.</source>
- <translation type="obsolete">删除选中的虚拟硬盘.</translation>
- </message>
- <message>
- <source>Invokes the Virtual Disk Manager to select a hard disk to attach to the currently highlighted slot.</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨ï¼Œä¸ºå½“å‰æ’槽分é…一个虚拟硬盘.</translation>
- </message>
- <message>
- <source>When checked, enables the virtual SATA controller of this machine. Note that you cannot attach hard disks to SATA ports when the virtual SATA controller is disabled.</source>
- <translation type="obsolete">选中,将在该虚拟电脑内å¯ç”¨SATA控制器。注æ„:当该选项ç¦ç”¨æ—¶ï¼Œæ˜¯ä¸èƒ½æŠŠä¸€ä¸ªè™šæ‹Ÿç¡¬ç›˜åˆ†é…到SATA端å£çš„.</translation>
- </message>
- <message>
- <source>&amp;Enable SATA Controller</source>
- <translation type="obsolete">å¯ç”¨SATA控制器(&amp;E)</translation>
- </message>
- <message>
- <source>&amp;Attachments</source>
- <translation type="obsolete">虚拟硬盘列表(&amp;A)</translation>
- </message>
- <message>
- <source>Lists all hard disks attached to this machine. Use a mouse click or the &lt;tt&gt;Space&lt;/tt&gt; key on the highlighted item to activate the drop-down list and choose the desired value. Use the context menu or buttons to the right to add or remove hard disk attachments.</source>
- <translation type="obsolete">显示分é…到本虚拟电脑的虚拟硬盘列表。在选中的项目上用鼠标或 &lt;tt&gt;空格&lt;/tt&gt;键激活下拉列表选择相应的值。使用å³ä¾§çš„按钮分é…或删除一个虚拟硬盘.</translation>
- </message>
- <message>
- <source>Invokes the Virtual Media Manager to select a hard disk to attach to the currently highlighted slot.</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨ï¼Œä¸ºå½“å‰é€‰ä¸­çš„æ’槽分é…一个虚拟硬盘.</translation>
- </message>
- <message>
- <source>If checked, shows the differencing hard disks that are attached to slots rather than their base hard disks (shown for indirect attachments) and allows explicit attaching of differencing hard disks. Check this only if you need a complex hard disk setup.</source>
- <translation type="obsolete">If checked, shows the differencing hard disks that are attached to slots rather than their base hard disks (shown for indirect attachments) and allows explicit attaching of differencing hard disks. Check this only if you need a complex hard disk setup.</translation>
- </message>
- <message>
- <source>&amp;Show Differencing Hard Disks</source>
- <translation type="obsolete">&amp;Show Differencing Hard Disks</translation>
- </message>
- <message>
- <source>When checked, enables an additional virtual controller (either SATA or SCSI) of this machine.</source>
- <translation type="obsolete">选中,将在该虚拟电脑上å¯ç”¨é¢å¤–的硬盘控制器.</translation>
- </message>
- <message>
- <source>&amp;Enable Additional Controller</source>
- <translation type="obsolete">å¯ç”¨é¢å¤–控制器(&amp;E)</translation>
- </message>
- <message>
- <source>Defines the type of the virtual IDE controller. Depending on this value, VirtualBox will provide different virtual IDE hardware devices to the guest OS.</source>
- <translation type="obsolete">指定 IDE 控制器类型。根æ®è¿™ä¸ªå€¼ï¼ŒVirtualBox 将为该虚拟电脑æä¾›ä¸åŒçš„ IDE 控制器.</translation>
- </message>
- <message>
<source>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Bus:&amp;nbsp;&amp;nbsp;%2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Type:&amp;nbsp;&amp;nbsp;%3&lt;/nobr&gt;</source>
<translation>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;通é“:&amp;nbsp;&amp;nbsp;%2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;åž‹å·:&amp;nbsp;&amp;nbsp;%3&lt;/nobr&gt;</translation>
</message>
@@ -3936,10 +2650,6 @@ p, li { white-space: pre-wrap; }
<translation>&lt;nobr&gt;添加&amp;nbsp;虚拟&amp;nbsp;软驱&lt;/nobr&gt;</translation>
</message>
<message>
- <source>No hard disk is selected for &lt;i&gt;%1&lt;/i&gt;.</source>
- <translation type="obsolete">没有为 &lt;i&gt;%1&lt;/i&gt; 指定虚拟硬盘。</translation>
- </message>
- <message>
<source>&lt;i&gt;%1&lt;/i&gt; uses a medium that is already attached to &lt;i&gt;%2&lt;/i&gt;.</source>
<translation>&lt;i&gt;%1&lt;/i&gt; 使用的虚拟硬盘已ç»è¿žæŽ¥åˆ° &lt;i&gt;%2&lt;/i&gt; 。</translation>
</message>
@@ -4024,14 +2734,6 @@ p, li { white-space: pre-wrap; }
<translation>虚拟硬盘(&amp;D):</translation>
</message>
<message>
- <source>&amp;CD/DVD Device:</source>
- <translation type="obsolete">虚拟光驱(&amp;C):</translation>
- </message>
- <message>
- <source>&amp;Floppy Device:</source>
- <translation type="obsolete">虚拟软驱(&amp;F):</translation>
- </message>
- <message>
<source>&amp;Storage Tree</source>
<translation>存储树(&amp;S)</translation>
</message>
@@ -4068,36 +2770,16 @@ p, li { white-space: pre-wrap; }
<translation>选择当å‰é€‰ä¸­çš„存储树中的控制器的型å·ã€‚</translation>
</message>
<message>
- <source>S&amp;lot:</source>
- <translation type="obsolete">通é“(&amp;l):</translation>
- </message>
- <message>
<source>Selects the slot on the storage controller used by this attachment. The available slots depend on the type of the controller and other attachments on it.</source>
<translation>为该盘选择一个其所在控制器上的通é“。å¯ç”¨çš„通é“å–决于该控制器的类型和已分é…的情况。</translation>
</message>
<message>
- <source>Selects the virtual disk image or the host drive used by this attachment.</source>
- <translation type="obsolete">为该盘选择一个虚拟的介质或物ç†è®¾å¤‡ã€‚</translation>
- </message>
- <message>
- <source>Opens the Virtual Media Manager to select a virtual image for this attachment.</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨ä¸ºè¯¥ç›˜é€‰æ‹©ä¸€ä¸ªå¯ç”¨çš„虚拟介质。</translation>
- </message>
- <message>
- <source>Open Virtual Media Manager</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨</translation>
- </message>
- <message>
- <source>D&amp;ifferencing Disks</source>
- <translation type="obsolete">D&amp;ifferencing Disks</translation>
- </message>
- <message>
<source>When checked, allows the guest to send ATAPI commands directly to the host-drive which makes it possible to use CD/DVD writers connected to the host inside the VM. Note that writing audio CD inside the VM is not yet supported.</source>
<translation>选中åŽï¼Œå°±å¯åœ¨è¯¥è™šæ‹Ÿç”µè„‘中进行光盘的刻录. 请注æ„ç›®å‰å°šæœªæ供对音ä¹CD的写入支æŒ.</translation>
</message>
<message>
<source>&amp;Passthrough</source>
- <translation>&amp;Passthrough</translation>
+ <translation>直通(&amp;P)</translation>
</message>
<message>
<source>Virtual Size:</source>
@@ -4125,137 +2807,139 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Allows to use host I/O caching capabilities.</source>
- <translation type="unfinished"></translation>
+ <translation>å…许使用主机输入输出 (I/O) 缓存功能。</translation>
</message>
<message>
<source>Use host I/O cache</source>
- <translation type="unfinished"></translation>
+ <translation>使用主机输入输出 (I/O) 缓存</translation>
</message>
<message>
<source>Add SAS Controller</source>
- <translation type="unfinished"></translation>
+ <translation>添加SAS控制器</translation>
</message>
<message>
<source>SAS Controller</source>
- <translation type="unfinished"></translation>
+ <translation>SAS控制器</translation>
</message>
<message>
<source>Type:</source>
- <translation type="unfinished"></translation>
+ <translation>类型:</translation>
</message>
<message>
<source>Host Drive</source>
- <translation type="unfinished"></translation>
+ <translation>物ç†è®¾å¤‡</translation>
</message>
<message>
<source>Image</source>
- <translation type="unfinished"></translation>
+ <translation>映åƒ</translation>
</message>
<message>
<source>Choose or create a virtual hard disk file. The virtual machine will see the data in the file as the contents of the virtual hard disk.</source>
- <translation type="unfinished"></translation>
+ <translation>选择或创建一个虚拟硬盘文件。虚拟机将文件中的数æ®ä½œä¸ºè™šæ‹Ÿç¡¬ç›˜çš„æ•°æ®ã€‚</translation>
</message>
<message>
<source>Set up the virtual hard disk</source>
- <translation type="unfinished"></translation>
+ <translation>设置虚拟硬盘</translation>
</message>
<message>
<source>CD/DVD &amp;Drive:</source>
- <translation type="unfinished"></translation>
+ <translation>分é…光驱(&amp;D):</translation>
</message>
<message>
<source>Choose a virtual CD/DVD disk or a physical drive to use with the virtual drive. The virtual machine will see a disk inserted into the drive with the data in the file or on the disk in the physical drive as its contents.</source>
- <translation type="unfinished"></translation>
+ <translation>选择用于虚拟驱动器的虚拟光盘或物ç†å…‰é©±ã€‚虚拟机将会看到æ’入的光盘上的数æ®ã€‚</translation>
</message>
<message>
<source>Set up the virtual CD/DVD drive</source>
- <translation type="unfinished"></translation>
+ <translation>设置虚拟光盘</translation>
</message>
<message>
<source>Floppy &amp;Drive:</source>
- <translation type="unfinished"></translation>
+ <translation>分é…软驱(&amp;D):</translation>
</message>
<message>
<source>Choose a virtual floppy disk or a physical drive to use with the virtual drive. The virtual machine will see a disk inserted into the drive with the data in the file or on the disk in the physical drive as its contents.</source>
- <translation type="unfinished"></translation>
+ <translation>选择用于虚拟驱动器的虚拟软盘或物ç†è½¯é©±ã€‚虚拟机将会看到æ’入的ç£ç›˜ä¸Šçš„æ•°æ®ã€‚</translation>
</message>
<message>
<source>Set up the virtual floppy drive</source>
- <translation type="unfinished"></translation>
+ <translation>设置虚拟软盘</translation>
</message>
<message>
<source>Create a new hard disk...</source>
- <translation type="unfinished"></translation>
+ <translation>创建一个新的虚拟硬盘...</translation>
</message>
<message>
<source>Choose a virtual hard disk file...</source>
- <translation type="unfinished"></translation>
+ <translation>选择一个虚拟硬盘...</translation>
</message>
<message>
<source>Choose a virtual CD/DVD disk file...</source>
- <translation type="unfinished"></translation>
+ <translation>选择一个虚拟光盘...</translation>
</message>
<message>
<source>Remove disk from virtual drive</source>
- <translation type="unfinished"></translation>
+ <translation>移除虚拟盘</translation>
</message>
<message>
<source>Choose a virtual floppy disk file...</source>
- <translation type="unfinished"></translation>
+ <translation>选择一个虚拟软盘...</translation>
</message>
<message>
<source>When checked the virtual disk will not be removed when the guest system ejects it.</source>
- <translation type="unfinished"></translation>
+ <translation>选中时,虚拟机系统弹出光盘时将ä¸ä¼šç§»å‡ºè™šæ‹Ÿç›˜ã€‚</translation>
</message>
<message>
<source>&amp;Live CD/DVD</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>光盘上集æˆäº†æ“作系统,å¯ç›´æŽ¥å¯åŠ¨åˆ°æ­¤ç³»ç»Ÿï¼Œå¤šç”¨ä½œç³»ç»Ÿå±•ç¤º</translatorcomment>
+ <translation>演示(Live)光盘(&amp;L)</translation>
</message>
<message>
<source>When checked the guest system will see the virtual disk as a solid state device.</source>
- <translation type="unfinished"></translation>
+ <translation>选中时,虚拟机系统会将虚拟ç£ç›˜è§†ä¸ºå›ºæ€è®¾å¤‡ã€‚</translation>
</message>
<message>
<source>&amp;Solid-state drive</source>
- <translation type="unfinished"></translation>
+ <translation>固æ€é©±åŠ¨å™¨(&amp;S)</translation>
</message>
<message>
<source>Details:</source>
- <translation type="unfinished"></translation>
+ <translation>明细:</translation>
</message>
<message>
<source>no name specified for controller at position &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>ä½äºŽ &lt;b&gt;%1&lt;/b&gt; 中的控制器未指定å称。</translation>
</message>
<message>
<source>controller at position &lt;b&gt;%1&lt;/b&gt; uses the name that is already used by controller at position &lt;b&gt;%2&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>ä½äºŽ &lt;b&gt;%1&lt;/b&gt; 中的控制器使用的å称已ç»è¢«ä½äºŽ &lt;b&gt;%2&lt;/b&gt; 中的控制器所使用。</translation>
</message>
<message>
<source>no hard disk is selected for &lt;i&gt;%1&lt;/i&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;i&gt;%1&lt;/i&gt; 没有选定硬盘。</translation>
</message>
<message>
<source>at most one supported</source>
<comment>controller</comment>
- <translation type="unfinished"></translation>
+ <translation>最多支æŒä¸€ä¸ª</translation>
</message>
<message>
<source>up to %1 supported</source>
<comment>controllers</comment>
- <translation type="unfinished"></translation>
+ <translation>支æŒå¤šè¾¾ %1 个</translation>
</message>
<message>
<source>you are currently using more storage controllers than a %1 chipset supports. Please change the chipset type on the System settings page or reduce the number of the following storage controllers on the Storage settings page: %2.</source>
- <translation type="unfinished"></translation>
+ <translation>您当å‰ä½¿ç”¨çš„存储控制器比 %1 芯片组支æŒçš„多。请在系统设置页é¢æ›´æ”¹èŠ¯ç‰‡ç»„类型,或在存储设置页é¢å‡å°‘以下存储控制器的数é‡: %2。</translation>
</message>
<message>
<source>&amp;Port Count:</source>
- <translation type="unfinished"></translation>
+ <translation>端å£æ•°(&amp;P):</translation>
</message>
<message>
<source>Selects the port count of the SATA storage controller currently selected in the Storage Tree. This must be at least one more than the highest port number you need to use.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>TODO:æ„义å«æ··</translatorcomment>
+ <translation>选择存储树中当å‰é€‰å®šçš„ SATA 存储控制器的端å£æ•°ã€‚至少必须比所需è¦çš„最高端å£æ•°å¤šä¸€ä¸ªã€‚</translation>
</message>
</context>
<context>
@@ -4338,10 +3022,6 @@ p, li { white-space: pre-wrap; }
<translation>扩展特性:</translation>
</message>
<message>
- <source>When checked, the virtual machine will support the Advanced Configuration and Power Management Interface (ACPI). &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable this feature after having installed a Windows guest operating system!</source>
- <translation type="obsolete">选中,虚拟电脑将å¯ç”¨å¯¹é«˜çº§ç”µæºç®¡ç†ç•Œé¢(ACPI)的支æŒ. &lt;b&gt;请注æ„:&lt;/b&gt; 一旦在虚拟电脑中安装完Windowsæ“作系统,就ä¸åº”å†ç¦ç”¨æœ¬é€‰é¡¹! </translation>
- </message>
- <message>
<source>When checked, the virtual machine will support the Input Output APIC (IO APIC), which may slightly decrease performance. &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable this feature after having installed a Windows guest operating system!</source>
<translation>选中,虚拟电脑将å¯ç”¨å¯¹è¾“入输出 APIC (IO APIC)的支æŒã€‚这会轻微地é™ä½Žè™šæ‹Ÿç”µè„‘的性能。&lt;b&gt;请注æ„:&lt;/b&gt; 一旦在虚拟电脑中安装完Windowsæ“作系统,就ä¸åº”å†ç¦ç”¨æœ¬é€‰é¡¹! </translation>
</message>
@@ -4358,10 +3038,6 @@ p, li { white-space: pre-wrap; }
<translation>CPUæ•°é‡(&amp;P):</translation>
</message>
<message>
- <source>Controls the number of virtual CPUs in the virtual machine.</source>
- <translation type="obsolete">指定分é…给虚拟电脑的虚拟CPUæ•°é‡ã€‚</translation>
- </message>
- <message>
<source>When checked, the Physical Address Extension (PAE) feature of the host CPU will be exposed to the virtual machine.</source>
<translation>选中,电脑上的物ç†åœ°å€æ‰©å±•ï¼ˆPAE)特性将会传递给虚拟电脑.</translation>
</message>
@@ -4387,11 +3063,11 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>When checked, the virtual machine will try to make use of the nested paging extension of Intel VT-x and AMD-V.</source>
- <translation>选中,虚拟电脑将å°è¯•åˆ©ç”¨Intel VT-x或AMD-Vç­‰CPU上具备的 nested paging 扩展特性.</translation>
+ <translation>选中,虚拟电脑将å°è¯•åˆ©ç”¨Intel VT-x或AMD-Vç­‰CPU上具备的嵌套分页扩展特性。</translation>
</message>
<message>
<source>Enable Nested Pa&amp;ging</source>
- <translation>å¯ç”¨ Nested Pa&amp;ging</translation>
+ <translation>å¯ç”¨åµŒå¥—分页(&amp;G)</translation>
</message>
<message>
<source>&lt;qt&gt;%1&amp;nbsp;CPUs&lt;/qt&gt;</source>
@@ -4408,61 +3084,61 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>If checked, the RTC device will report the time in UTC, otherwise in local (host) time. Unix usually expects the hardware clock to be set to UTC.</source>
- <translation type="unfinished"></translation>
+ <translation>选中时,RTC时钟设备将使用国际标准时间(UTC),å¦åˆ™ä½¿ç”¨å½“地(本机)时间。Unix系统通常预计硬件时钟设置为国际标准时间(UTC)。</translation>
</message>
<message>
<source>Hardware clock in &amp;UTC time</source>
- <translation type="unfinished"></translation>
+ <translation>硬件时钟使用国际标准时间(&amp;UTC)</translation>
</message>
<message>
<source>Controls the number of virtual CPUs in the virtual machine. You need hardware virtualization support on your host system to use more than one virtual CPU.</source>
- <translation type="unfinished"></translation>
+ <translation>控制虚拟机中虚拟处ç†å™¨çš„æ•°é‡ã€‚需è¦ä¸»æœºæ”¯æŒç¡¬ä»¶è™šæ‹ŸåŒ–æ‰èƒ½ä½¿ç”¨å¤šä¸ªè™šæ‹Ÿå¤„ç†å™¨ã€‚</translation>
</message>
<message>
<source>If checked, an absolute pointing device (a USB tablet) will be supported. Otherwise, only a standard PS/2 mouse will be emulated.</source>
- <translation type="unfinished"></translation>
+ <translation>如果选中,将支æŒç»å¯¹æŒ‡ç‚¹è®¾å¤‡(USBå¹³æ¿)。å¦åˆ™ï¼Œå°†åªæ¨¡æ‹Ÿæ ‡å‡†çš„PS/2鼠标。</translation>
</message>
<message>
<source>Enable &amp;absolute pointing device</source>
- <translation type="unfinished"></translation>
+ <translation>å¯ç”¨ç»å¯¹æŒ‡ç‚¹è®¾å¤‡(&amp;A)</translation>
</message>
<message>
<source>&amp;Chipset:</source>
- <translation type="unfinished"></translation>
+ <translation>芯片组(&amp;C):</translation>
</message>
<message>
<source>Selects the chipset to be emulated in this virtual machine. Note that the ICH9 chipset emulation is experimental and not recommended except for guest systems (such as Mac OS X) which require it.</source>
- <translation type="unfinished"></translation>
+ <translation>选择è¦åœ¨è¯¥è™šæ‹Ÿæœºä¸­æ¨¡æ‹Ÿçš„芯片组。注æ„,ICH9 芯片组模拟正处于实验阶段,ä¸æŽ¨è使用,除éžè™šæ‹Ÿæœºç³»ç»Ÿéœ€è¦å®ƒ(如 Mac OS X)。</translation>
</message>
<message>
<source>&amp;Execution Cap:</source>
- <translation type="unfinished"></translation>
+ <translation>è¿è¡Œå³°å€¼(&amp;E):</translation>
</message>
<message>
<source>Limits the amount of time that each virtual CPU is allowed to run for. Each virtual CPU will be allowed to use up to this percentage of the processing time available on one physical CPU. The execution cap can be disabled by setting it to 100%. Setting the cap too low can make the machine feel slow to respond.</source>
- <translation type="unfinished"></translation>
+ <translation>é™åˆ¶æ¯ä¸ªè™šæ‹Ÿå¤„ç†å™¨å…许è¿è¡Œçš„时间长短。æ¯ä¸ªè™šæ‹Ÿå¤„ç†å™¨å°†èŽ·å‡†æœ€å¤šä½¿ç”¨ä¸€ä¸ªç‰©ç†å¤„ç†å™¨ä¸Šå¯ç”¨çš„处ç†æ—¶é—´ç™¾åˆ†æ¯”。将此百分比设置为 100% æ—¶å¯ä»¥ç¦ç”¨è¿è¡Œå³°å€¼ã€‚将峰值设置得太低å¯èƒ½ä¼šä½¿è™šæ‹Ÿæœºæ„Ÿè§‰å“应很慢。</translation>
</message>
<message>
<source>you have set the processor execution cap to a low value. This can make the machine feel slow to respond.</source>
- <translation type="unfinished"></translation>
+ <translation>您已将处ç†å™¨è¿è¡Œå³°å€¼è®¾ç½®ä¸ºä½Žå€¼ã€‚è¿™å¯èƒ½ä¼šä½¿è™šæ‹Ÿæœºæ„Ÿè§‰å“应很慢。</translation>
</message>
<message>
<source>you have enabled a USB HID (Human Interface Device). This will not work unless USB emulation is also enabled. This will be done automatically when you accept the VM Settings by pressing the OK button.</source>
- <translation type="unfinished"></translation>
+ <translation>您已å¯ç”¨äº† USB HID (人机接å£è®¾å¤‡)。这åªæœ‰åœ¨å¯ç”¨ USB 模拟时æ‰å¯æ­£å¸¸å·¥ä½œã€‚这将在您按“确定â€æŒ‰é’®è®¿é—®è™šæ‹Ÿæœºè®¾ç½®æ—¶è‡ªåŠ¨å®Œæˆã€‚</translation>
</message>
<message>
<source>&lt;qt&gt;%1%&lt;/qt&gt;</source>
<comment>Min CPU execution cap in %</comment>
- <translation type="unfinished"></translation>
+ <translation>&lt;qt&gt;%1%&lt;/qt&gt;</translation>
</message>
<message>
<source>&lt;qt&gt;%1%&lt;/qt&gt;</source>
<comment>Max CPU execution cap in %</comment>
- <translation type="unfinished"></translation>
+ <translation>&lt;qt&gt;%1%&lt;/qt&gt;</translation>
</message>
<message>
<source>you have assigned ICH9 chipset type to this VM. It will not work properly unless the IO-APIC feature is also enabled. This will be done automatically when you accept the VM Settings by pressing the OK button.</source>
- <translation type="unfinished"></translation>
+ <translation>您已为该虚拟机分é…了 ICH9 芯片组类型。åªæœ‰åŒæ—¶å¯ç”¨ IO-APIC 功能,æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚这将在您按“确定â€æŒ‰é’®è®¿é—®è™šæ‹Ÿæœºè®¾ç½®æ—¶è‡ªåŠ¨å®Œæˆã€‚</translation>
</message>
</context>
<context>
@@ -4551,46 +3227,47 @@ p, li { white-space: pre-wrap; }
<message>
<source>&lt;nobr&gt;Vendor ID: %1&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation type="unfinished">&lt;nobr&gt;Vendor ID: %1&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;厂家标识: %1&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;Product ID: %2&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation type="unfinished">&lt;nobr&gt;Product ID: %2&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;产å“标识: %2&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;Revision: %3&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation type="unfinished">&lt;nobr&gt;Revision: %3&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;修订版本: %3&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;Product: %4&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation type="unfinished">&lt;nobr&gt;Product: %4&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;产å“: %4&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;Manufacturer: %5&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation type="unfinished">&lt;nobr&gt;Manufacturer: %5&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;制造商: %5&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;Serial No.: %1&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation type="unfinished">&lt;nobr&gt;Serial No.: %1&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;åºå·.: %1&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;Port: %1&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation type="unfinished">&lt;nobr&gt;Port: %1&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;端å£: %1&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;State: %1&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation type="unfinished">&lt;nobr&gt;State: %1&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;状æ€: %1&lt;/nobr&gt;</translation>
</message>
<message>
<source>USB 2.0 is currently enabled for this virtual machine. However, this requires the &lt;b&gt;%1&lt;/b&gt; to be installed. Please install the Extension Pack from the VirtualBox download site. After this you will be able to re-enable USB 2.0. It will be disabled in the meantime unless you cancel the current settings changes.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>TODO:æ„义å«æ··</translatorcomment>
+ <translation>本虚拟机当å‰å·²å¯ç”¨ USB 2.0。然而,这需è¦å®‰è£… &lt;b&gt;%1&lt;/b&gt;。请从 VirtualBox 下载站中安装“扩展增强包â€ã€‚安装之åŽæ‚¨å°†å¯ä»¥é‡æ–°å¯ç”¨ USB 2.0。在此期间,除éžæ‚¨å–消当å‰è®¾ç½®æ›´æ”¹ï¼Œå¦åˆ™å°†ç¦ç”¨æ­¤åŠŸèƒ½ã€‚</translation>
</message>
</context>
<context>
@@ -4620,63 +3297,63 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&amp;Vendor ID:</source>
- <translation>&amp;Vendor ID:</translation>
+ <translation>供应商标识(&amp;V):</translation>
</message>
<message>
<source>Defines the vendor ID filter. The &lt;i&gt;exact match&lt;/i&gt; string format is &lt;tt&gt;XXXX&lt;/tt&gt; where &lt;tt&gt;X&lt;/tt&gt; is a hexadecimal digit. An empty string will match any value.</source>
- <translation>定义 vendor ID 筛选器。其中&lt;i&gt;精确匹é…&lt;/i&gt; 字符串的格å¼ä¸º &lt;tt&gt;XXXX&lt;/tt&gt; 其中&lt;tt&gt;X&lt;/tt&gt; 为å六进制字符, 空字符串会匹é…所有值.</translation>
+ <translation>定义供应商标识筛选器。其中&lt;i&gt;精确匹é…&lt;/i&gt; 字符串的格å¼ä¸º &lt;tt&gt;XXXX&lt;/tt&gt; 其中&lt;tt&gt;X&lt;/tt&gt; 为å六进制字符, 空字符串会匹é…所有值.</translation>
</message>
<message>
<source>&amp;Product ID:</source>
- <translation>&amp;Product ID:</translation>
+ <translation>产å“标识(&amp;P):</translation>
</message>
<message>
<source>Defines the product ID filter. The &lt;i&gt;exact match&lt;/i&gt; string format is &lt;tt&gt;XXXX&lt;/tt&gt; where &lt;tt&gt;X&lt;/tt&gt; is a hexadecimal digit. An empty string will match any value.</source>
- <translation>定义 produce ID 筛选器。其中&lt;i&gt;精确匹é…&lt;/i&gt; 字符串的格å¼ä¸º &lt;tt&gt;XXXX&lt;/tt&gt; 其中&lt;tt&gt;X&lt;/tt&gt; 为å六进制字符.,空字符串会匹é…所有值.</translation>
+ <translation>定义产å“标识筛选器。其中&lt;i&gt;精确匹é…&lt;/i&gt; 字符串的格å¼ä¸º &lt;tt&gt;XXXX&lt;/tt&gt; 其中&lt;tt&gt;X&lt;/tt&gt; 为å六进制字符.,空字符串会匹é…所有值.</translation>
</message>
<message>
<source>&amp;Revision:</source>
- <translation>&amp;Revision:</translation>
+ <translation>修订版本(&amp;R):</translation>
</message>
<message>
<source>Defines the revision number filter. The &lt;i&gt;exact match&lt;/i&gt; string format is &lt;tt&gt;IIFF&lt;/tt&gt; where &lt;tt&gt;I&lt;/tt&gt; is a decimal digit of the integer part and &lt;tt&gt;F&lt;/tt&gt; is a decimal digit of the fractional part. An empty string will match any value.</source>
- <translation>定义 revision number 筛选器。其中&lt;i&gt;精确匹é…&lt;/i&gt; 字符串的格å¼ä¸º &lt;tt&gt;IIFF&lt;/tt&gt; 其中&lt;tt&gt;I&lt;/tt&gt; 为整数部分的å进制字符,而 &lt;tt&gt;F&lt;/tt&gt;为å°æ•°éƒ¨åˆ†çš„å进制字符.,空字符串会匹é…所有值.</translation>
+ <translation>定义修订版本å·ç­›é€‰å™¨ã€‚其中&lt;i&gt;精确匹é…&lt;/i&gt; 字符串的格å¼ä¸º &lt;tt&gt;IIFF&lt;/tt&gt; ,其中&lt;tt&gt;I&lt;/tt&gt; 为整数部分的å进制字符,而 &lt;tt&gt;F&lt;/tt&gt;为å°æ•°éƒ¨åˆ†çš„å进制字符。空字符串会匹é…所有值。</translation>
</message>
<message>
<source>&amp;Manufacturer:</source>
- <translation>&amp;Manufacturer:</translation>
+ <translation>制造商(&amp;M):</translation>
</message>
<message>
<source>Defines the manufacturer filter as an &lt;i&gt;exact match&lt;/i&gt; string. An empty string will match any value.</source>
- <translation>定义 manufacturer 筛选器为一 &lt;i&gt;精确匹é…&lt;/i&gt; 字符串,空字符串会匹é…所有值.</translation>
+ <translation>定义制造商筛选器为一 &lt;i&gt;精确匹é…&lt;/i&gt; 字符串,空字符串会匹é…所有值。</translation>
</message>
<message>
<source>Pro&amp;duct:</source>
- <translation>Pro&amp;duct:</translation>
+ <translation>产å“(&amp;D):</translation>
</message>
<message>
<source>Defines the product name filter as an &lt;i&gt;exact match&lt;/i&gt; string. An empty string will match any value.</source>
- <translation>定义 product 筛选器为一 &lt;i&gt;精确匹é…&lt;/i&gt; 字符串,空字符串会匹é…所有值.</translation>
+ <translation>定义产å“筛选器为一 &lt;i&gt;精确匹é…&lt;/i&gt; 字符串,空字符串会匹é…所有值.</translation>
</message>
<message>
<source>&amp;Serial No.:</source>
- <translation>&amp;Serial No.:</translation>
+ <translation>åºåˆ—å·(&amp;S):</translation>
</message>
<message>
<source>Defines the serial number filter as an &lt;i&gt;exact match&lt;/i&gt; string. An empty string will match any value.</source>
- <translation>定义 serial number 筛选器为一 &lt;i&gt;精确匹é…&lt;/i&gt; 字符串,空字符串会匹é…所有值.</translation>
+ <translation>定义åºå·ç­›é€‰å™¨ä¸ºä¸€ &lt;i&gt;精确匹é…&lt;/i&gt; 字符串,空字符串会匹é…所有值.</translation>
</message>
<message>
<source>Por&amp;t:</source>
- <translation>Por&amp;t:</translation>
+ <translation>端å£(&amp;T):</translation>
</message>
<message>
<source>Defines the host USB port filter as an &lt;i&gt;exact match&lt;/i&gt; string. An empty string will match any value.</source>
- <translation>定义 host USB port 筛选器为一 &lt;i&gt;精确匹é…&lt;/i&gt; 字符串,空字符串会匹é…所有值.</translation>
+ <translation>定义主机 USB 端å£ç­›é€‰å™¨ä¸ºä¸€ &lt;i&gt;精确匹é…&lt;/i&gt; 字符串,空字符串会匹é…所有值.</translation>
</message>
<message>
<source>R&amp;emote:</source>
- <translation>R&amp;emote:</translation>
+ <translation>远程(&amp;E):</translation>
</message>
<message>
<source>Defines whether this filter applies to USB devices attached locally to the host computer (&lt;i&gt;No&lt;/i&gt;), to a VRDP client&apos;s computer (&lt;i&gt;Yes&lt;/i&gt;), or both (&lt;i&gt;Any&lt;/i&gt;).</source>
@@ -4706,15 +3383,15 @@ p, li { white-space: pre-wrap; }
<name>UIMediumTypeChangeDialog</name>
<message>
<source>Modify medium attributes</source>
- <translation type="unfinished"></translation>
+ <translation>修改介质属性</translation>
</message>
<message>
<source>&lt;p&gt;You are about to change the attributes of the virtual disk located in &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Please choose one of the following medium types and press &lt;b&gt;%2&lt;/b&gt; to proceed or &lt;b&gt;%3&lt;/b&gt; otherwise.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您将è¦æ›´æ”¹ä½äºŽ &lt;b&gt;%1&lt;/b&gt; 中虚拟盘的属性。&lt;/p&gt;&lt;p&gt;请选择以下介质类型之一,并按&lt;b&gt;%2&lt;/b&gt;继续进行,å之请按&lt;b&gt;%3&lt;/b&gt;。&lt;/p&gt;</translation>
</message>
<message>
<source>Choose medium type:</source>
- <translation type="unfinished"></translation>
+ <translation>选择介质类型:</translation>
</message>
</context>
<context>
@@ -4762,14 +3439,6 @@ p, li { white-space: pre-wrap; }
<translation>&lt;p&gt;创建 COM 对象失败.&lt;/p&gt;&lt;p&gt;应用程åºå°†è¢«ä¸­æ–­.&lt;/p&gt;</translation>
</message>
<message>
- <source>&lt;p&gt;Failed to load the global GUI configuration.&lt;/p&gt;&lt;p&gt;The application will now terminate.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;加载全局 GUI é…置失败.&lt;/p&gt;&lt;p&gt;应用程åºå°†è¢«ä¸­æ–­.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Failed to save the global GUI configuration.&lt;p&gt;</source>
- <translation type="obsolete">&lt;p&gt;ä¿å­˜å…¨å±€ GUI é…置失败.&lt;p&gt;</translation>
- </message>
- <message>
<source>Failed to set global VirtualBox properties.</source>
<translation>设置 虚拟电脑控制å°å…¨å±€å±žæ€§å¤±è´¥.</translation>
</message>
@@ -4790,14 +3459,6 @@ p, li { white-space: pre-wrap; }
<translation>应用设置到虚拟电脑 &lt;b&gt;%1&lt;/b&gt; 失败.</translation>
</message>
<message>
- <source>Failed to save the settings of the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="obsolete">ä¿å­˜è™šæ‹Ÿç”µè„‘ &lt;b&gt;%1&lt;/b&gt; 设置失败.</translation>
- </message>
- <message>
- <source>Failed to load the settings of the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="obsolete">加载虚拟电脑 &lt;b&gt;%1&lt;/b&gt; 设置失败.</translation>
- </message>
- <message>
<source>Failed to start the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
<translation>å¯åŠ¨è™šæ‹Ÿç”µè„‘ &lt;b&gt;%1&lt;/b&gt; 失败.</translation>
</message>
@@ -4823,113 +3484,29 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Failed to remove the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>删除虚拟电脑 &lt;b&gt;%1&lt;/b&gt; 失败.</translation>
+ <translation>移除虚拟电脑 &lt;b&gt;%1&lt;/b&gt; 失败.</translation>
</message>
<message>
<source>Failed to discard the saved state of the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
<translation>清除虚拟电脑 &lt;b&gt;%1&lt;/b&gt; çš„ä¿å­˜ 状æ€å¤±è´¥.</translation>
</message>
<message>
- <source>Failed to discard the snapshot &lt;b&gt;%1&lt;/b&gt; of the virtual machine &lt;b&gt;%2&lt;/b&gt;.</source>
- <translation type="obsolete">删除虚拟电脑 &lt;b&gt;%2&lt;/b&gt; 的备份 &lt;b&gt;%1&lt;/b&gt; 失败.</translation>
- </message>
- <message>
- <source>Failed to discard the current state of the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="obsolete">清除虚拟电脑 &lt;b&gt;%1&lt;/b&gt; 的当å‰çŠ¶æ€å¤±è´¥.</translation>
- </message>
- <message>
- <source>Failed to discard the current snapshot and the current state of the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="obsolete">删除虚拟电脑 &lt;b&gt;%1&lt;/b&gt; 的当å‰å¤‡ä»½å’ŒçŠ¶æ€å¤±è´¥.</translation>
- </message>
- <message>
<source>There is no virtual machine named &lt;b&gt;%1&lt;/b&gt;.</source>
<translation>找ä¸åˆ°å称为 &lt;b&gt;%1&lt;/b&gt; 的虚拟电脑.</translation>
</message>
<message>
- <source>&lt;p&gt;Are you sure you want to permanently delete the virtual machine &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;This operation cannot be undone.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;你确认è¦æ°¸ä¹…性地删除虚拟电脑 &lt;b&gt;%1&lt;/b&gt;å—?&lt;/p&gt;&lt;p&gt;这个æ“作一旦执行就无法被撤销.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Are you sure you want to unregister the inaccessible virtual machine &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;You will not be able to register it again from GUI.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;你是å¦ç¡®è®¤è¦å–消注册这个ä¸èƒ½æ­£å¸¸è®¿é—®çš„虚拟电脑 &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;一旦å–消,今åŽå°±ä¸èƒ½å†é€šè¿‡å›¾å½¢ç”¨æˆ·ç•Œé¢æ¥å†æ¬¡æ³¨å†Œå®ƒ.&lt;/p&gt;</translation>
- </message>
- <message>
<source>&lt;p&gt;Are you sure you want to discard the saved state of the virtual machine &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;This operation is equivalent to resetting or powering off the machine without doing a proper shutdown of the guest OS.&lt;/p&gt;</source>
<translation>&lt;p&gt;你是å¦è¦æ¸…除虚拟电脑 &lt;b&gt;%1&lt;/b&gt;的休眠状æ€?&lt;/p&gt;&lt;p&gt;该æ“作相当于对虚拟电脑内的æ“作系统进行一次硬é‡å¯æˆ–硬关机.&lt;/p&gt;</translation>
</message>
<message>
- <source>&lt;p&gt;Releasing this media image will detach it from the following virtual machine(s): &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Continue?&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;释放这个虚拟介质将会把它从这些虚拟电脑: &lt;b&gt;%1&lt;/b&gt;中分离.&lt;/p&gt;&lt;p&gt;是å¦è¦ç»§ç»­?&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;The image file &lt;b&gt;%1&lt;/b&gt; already exists. You cannot create a new virtual hard disk that uses this file, because it can be already used by another virtual hard disk.&lt;/p&gt;&lt;p&gt;Please specify a different image file name.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;映åƒæ–‡ä»¶ &lt;b&gt;%1&lt;/b&gt;å·²ç»å­˜åœ¨. ä½ ä¸èƒ½ç”¨è¿™ä¸ªæ–‡ä»¶å»ºç«‹ä¸€ä¸ªæ–°çš„虚拟硬盘, 因为它å¯èƒ½å·²è¢«å…¶å®ƒçš„虚拟硬盘所使用.&lt;/p&gt;&lt;p&gt;请指定一个其它映åƒæ–‡ä»¶å.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Do you want to delete this hard disk&apos;s image file &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;If you select &lt;b&gt;No&lt;/b&gt; then the virtual hard disk will be unregistered and removed from the collection, but the image file will be left on your physical disk.&lt;/p&gt;&lt;p&gt;If you select &lt;b&gt;Yes&lt;/b&gt; then the image file will be permanently deleted after unregistering the hard disk. This operation cannot be undone.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;你真的è¦åˆ é™¤è™šæ‹Ÿç¡¬ç›˜æ˜ åƒ &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;å—?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;如果你选择 &lt;b&gt;No&lt;/b&gt; å°†å–消该虚拟硬盘的注册并把它从下é¢åˆ—表中删除, 但该虚拟硬盘还会ä¿ç•™åœ¨ä½ çš„硬盘上.&lt;/p&gt;&lt;p&gt;如果你选择 &lt;b&gt;Yes&lt;/b&gt; ä¸ä½†ä¼šå–消该虚拟硬盘的注册,而且会将它永久性删除. 请注æ„这个æ“作是ä¸å¯æ’¤é”€çš„.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Failed to delete the virtual hard disk image &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="obsolete">删除虚拟硬盘 &lt;b&gt;%1&lt;/b&gt; 失败.</translation>
- </message>
- <message>
- <source>&lt;p&gt;Do you want to remove (unregister) the virtual hard disk &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;你真的想删除虚拟硬盘 &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;�&lt;/nobr&gt;&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Failed to create the virtual hard disk image &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;.&lt;/nobr&gt;</source>
- <translation type="obsolete">创建虚拟硬盘 &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt; 失败.&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>Failed to attach a hard disk image with UUID %1 to the device slot %2 of the controller %3 of the machine &lt;b&gt;%4&lt;/b&gt;.</source>
- <translation type="obsolete">åˆ†é… UUID å·ä¸º %1 的虚拟硬盘映åƒåˆ°è™šæ‹Ÿç”µè„‘ &lt;b&gt;%4&lt;/b&gt; 的第 %3 控制器的第 %2 个通é“失败.</translation>
- </message>
- <message>
- <source>Failed to detach a hard disk image from the device slot %1 of the controller %2 of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation type="obsolete">ä¸èƒ½å°†è™šæ‹Ÿç¡¬ç›˜æ˜ åƒä»Žè™šæ‹Ÿç”µè„‘ &lt;b&gt;%3&lt;/b&gt; 的第 %2 控制器的第 %1 个通é“分离.</translation>
- </message>
- <message>
- <source>hard disk</source>
- <translation type="obsolete">硬盘映åƒ</translation>
- </message>
- <message>
- <source>CD/DVD image</source>
- <translation type="obsolete">虚拟光盘</translation>
- </message>
- <message>
- <source>floppy image</source>
- <translation type="obsolete">虚拟软盘</translation>
- </message>
- <message>
- <source>Failed to register the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;.</source>
- <translation type="obsolete">注册 %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; 失败.</translation>
- </message>
- <message>
- <source>Failed to unregister the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;.</source>
- <translation type="obsolete">å–消注册 %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; 失败.</translation>
- </message>
- <message>
<source>Failed to create a new session.</source>
<translation>创建一个新任务失败.</translation>
</message>
<message>
- <source>Failed to open a session for a virtual machine with UUID &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="obsolete">ä¸èƒ½ä¸º UUID 为 &lt;b&gt;%1&lt;/b&gt; 的虚拟电脑打开一个新任务.</translation>
- </message>
- <message>
<source>Failed to open a session for the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
<translation>ä¸èƒ½ä¸ºè™šæ‹Ÿç”µè„‘ &lt;b&gt;%1&lt;/b&gt; 打开一个新任务.</translation>
</message>
<message>
- <source>Failed to determine the accessibility state of the media &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;. Some of the registered media may become inaccessible.</source>
- <translation type="obsolete">ä¸èƒ½èŽ·å–æ˜ åƒ &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; çš„å¯è®¿é—®çŠ¶æ€. 部分注册映åƒå¯èƒ½å·²ç»å˜æˆä¸å¯è®¿é—®.</translation>
- </message>
- <message>
- <source>Failed to create the host network interface &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="obsolete">ä¸èƒ½åˆ›å»ºä¸»æœºhost network interface &lt;b&gt;%1&lt;/b&gt;.</translation>
- </message>
- <message>
<source>Failed to remove the host network interface &lt;b&gt;%1&lt;/b&gt;.</source>
<translation>ä¸èƒ½åˆ é™¤host network interface &lt;b&gt;%1&lt;/b&gt;.</translation>
</message>
@@ -4943,11 +3520,11 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Failed to create the shared folder &lt;b&gt;%1&lt;/b&gt; (pointing to &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) for the virtual machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation>为虚拟电脑 &lt;b&gt;%3&lt;/b&gt; 指定数æ®ç©ºé—´ &lt;b&gt;%1&lt;/b&gt; (æŒ‡å‘ &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) 失败.</translation>
+ <translation>为虚拟电脑 &lt;b&gt;%3&lt;/b&gt; 指定共享文件夹 &lt;b&gt;%1&lt;/b&gt; (æŒ‡å‘ &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) 失败.</translation>
</message>
<message>
<source>Failed to remove the shared folder &lt;b&gt;%1&lt;/b&gt; (pointing to &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) from the virtual machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation>从虚拟电脑 &lt;b&gt;%3&lt;/b&gt; 删除数æ®ç©ºé—´ &lt;b&gt;%1&lt;/b&gt; (æŒ‡å‘ &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) 失败.</translation>
+ <translation>从虚拟电脑 &lt;b&gt;%3&lt;/b&gt; 删除共享文件夹 &lt;b&gt;%1&lt;/b&gt; (æŒ‡å‘ &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) 失败。</translation>
</message>
<message>
<source>&lt;p&gt;The Virtual Machine reports that the guest OS does not support &lt;b&gt;mouse pointer integration&lt;/b&gt; in the current video mode. You need to capture the mouse (by clicking over the VM display or pressing the host key) in order to use the mouse inside the guest OS.&lt;/p&gt;</source>
@@ -4958,14 +3535,6 @@ p, li { white-space: pre-wrap; }
<translation>&lt;p&gt;虚拟电脑当å‰æ­£å¤„于 &lt;b&gt;æš‚åœ&lt;/b&gt; 状æ€ï¼Œå› æ­¤ä¸æŽ¥å—任何鼠标或键盘输入. 如果想继续在虚拟电脑内工作, 你需è¦é€šè¿‡é€‰æ‹©èœå•æ å†…的相应项目æ¥é‡æ–°æ¿€æ´»å®ƒ.&lt;/p&gt;</translation>
</message>
<message>
- <source>&lt;p&gt;One or more of the registered virtual hard disks, CD/DVD or floppy media are not currently accessible. As a result, you will not be able to operate virtual machines that use these media until they become accessible later.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;OK&lt;/b&gt; to open the Virtual Disk Manager window and see what media are inaccessible, or press &lt;b&gt;Ignore&lt;/b&gt; to ignore this message.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;一个或多个注册的虚拟硬盘ã€å…‰ç›˜æˆ–软盘当å‰ä¸å¯è®¿é—®. 因此使用了它们的虚拟电脑当å‰å·²ä¸èƒ½å·¥ä½œï¼Œåªæœ‰ç­‰åˆ°å®ƒä»¬èƒ½å†æ¬¡è®¿é—®æ—¶æ‰èƒ½ç»§ç»­å·¥ä½œ.&lt;/p&gt;&lt;p&gt;按 &lt;b&gt;确定&lt;/b&gt; 打开虚拟介质管ç†å™¨çœ‹çœ‹æ˜¯å“ªäº›è™šæ‹Ÿä»‹è´¨ä¸èƒ½è®¿é—®, 或者按 &lt;b&gt;忽略&lt;/b&gt; 忽略这个信æ¯.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;The virtual machine window will be now switched to &lt;b&gt;fullscreen&lt;/b&gt; mode. You can go back to windowed mode at any time by pressing &lt;b&gt;%1&lt;/b&gt;. Note that the &lt;i&gt;Host&lt;/i&gt; key is currently defined as &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;虚拟电脑窗å£å°†ä¼šè¢«åˆ‡æ¢åˆ° &lt;b&gt;å…¨å±&lt;/b&gt; 模å¼. 在任何时候按 &lt;b&gt;%1&lt;/b&gt; 都能返回窗å£æ¨¡å¼. 注æ„ï¼šå½“å‰ &lt;i&gt;热键&lt;/i&gt; 已被定义为 &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;</translation>
- </message>
- <message>
<source>&lt;p&gt;Cannot run VirtualBox in &lt;i&gt;VM Selector&lt;/i&gt; mode due to local restrictions.&lt;/p&gt;&lt;p&gt;The application will now terminate.&lt;/p&gt;</source>
<translation>&lt;p&gt;虚拟电脑控制å°ä¸èƒ½è¿è¡Œåœ¨ &lt;i&gt;VM Selector&lt;/i&gt; 模å¼.&lt;/p&gt;&lt;p&gt;程åºå°†è¢«ä¸­æ–­.&lt;/p&gt;</translation>
</message>
@@ -5040,28 +3609,8 @@ p, li { white-space: pre-wrap; }
<translation>&lt;p&gt;ä¸èƒ½åŠ è½½ &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt;语言包. &lt;p&gt;ç•Œé¢è¯­è¨€å°†è¢«é‡ç½®ä¸ºè‹±æ–‡ (内嵌). 请到 &lt;b&gt;全局设定&lt;/b&gt; 对è¯æ¡†ä¸­æŒ‡å®šå¯ç”¨è¯­è¨€.&lt;/p&gt;</translation>
</message>
<message>
- <source>&lt;p&gt;The VirtualBox Guest Additions installed in the Guest OS are too old: the installed version is %1, the expected version is %2. Some features that require Guest Additions (mouse integration, guest display auto-resize) will most likely stop working properly.&lt;/p&gt;&lt;p&gt;Please update the Guest Additions to the current version by choosing &lt;b&gt;Install Guest Additions&lt;/b&gt; from the &lt;b&gt;Devices&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;虚拟电脑上所装的增强功能包版本太旧: 所装版本为 %1, 应装版本为 %2. å¯èƒ½ä¼šå¯¼è‡´æœ‰äº›ç‰¹æ€§å·¥ä½œä¸æ­£å¸¸.&lt;/p&gt;&lt;p&gt;请立å³å®‰è£…最新版的增强功能包.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;The VirtualBox Guest Additions installed in the Guest OS are outdated: the installed version is %1, the expected version is %2. Some features that require Guest Additions (mouse integration, guest display auto-resize) may not work as expected.&lt;/p&gt;&lt;p&gt;It is recommended to update the Guest Additions to the current version by choosing &lt;b&gt;Install Guest Additions&lt;/b&gt; from the &lt;b&gt;Devices&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;虚拟电脑上所装的增强功能包版本已过期: 所装版本为 %1, 应装版本为 %2. å¯èƒ½ä¼šå¯¼è‡´æœ‰äº›ç‰¹æ€§å·¥ä½œä¸æ­£å¸¸.&lt;/p&gt;&lt;p&gt;请立å³å®‰è£…最新版的增强功能包.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;The VirtualBox Guest Additions installed in the Guest OS are too recent for this version of VirtualBox: the installed version is %1, the expected version is %2.&lt;/p&gt;&lt;p&gt;Using a newer version of Additions with an older version of VirtualBox is not supported. Please install the current version of the Guest Additions by choosing &lt;b&gt;Install Guest Additions&lt;/b&gt; from the &lt;b&gt;Devices&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;虚拟电脑上所装的增强功能包版本太新: 所装版本为 %1, 应装版本为 %2. å¯èƒ½ä¼šå¯¼è‡´æœ‰äº›ç‰¹æ€§å·¥ä½œä¸æ­£å¸¸.&lt;/p&gt;&lt;p&gt;请立å³å®‰è£…相应版本的增强功能包.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Failed to change the snapshot folder path of the virtual machine &lt;b&gt;%1&lt;b&gt; to &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;.</source>
- <translation type="obsolete">更改虚拟电脑 &lt;b&gt;%1&lt;b&gt; 的备份ä½ç½®åˆ° &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;失败.</translation>
- </message>
- <message>
- <source>&lt;p&gt;Could not enter seamless mode due to insufficient guest video memory.&lt;/p&gt;&lt;p&gt;You should configure the VM to have at least &lt;b&gt;%1&lt;/b&gt; of video memory.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;无法进入桌é¢é›†æˆæ¨¡å¼ï¼Œå› ä¸ºæ²¡æœ‰è¶³å¤Ÿçš„显存.&lt;/p&gt;&lt;p&gt;æ‚¨åº”è¯¥è‡³å°‘ä¸ºè™šæ‹Ÿç”µè„‘åˆ†é… &lt;b&gt;%1&lt;/b&gt;的显存.&lt;/p&gt;</translation>
- </message>
- <message>
<source>&lt;p&gt;Failed to remove the shared folder &lt;b&gt;%1&lt;/b&gt; (pointing to &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) from the virtual machine &lt;b&gt;%3&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Please close all programs in the guest OS that may be using this shared folder and try again.&lt;/p&gt;</source>
- <translation>&lt;p&gt;无法从虚拟电脑 &lt;b&gt;%3&lt;/b&gt;删除数æ®ç©ºé—´ &lt;b&gt;%1&lt;/b&gt; (ä½äºŽ &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) .&lt;/p&gt;&lt;p&gt;请先关闭虚拟电脑中正在使用该文件夹的所有程åºï¼Œå†æ¥åˆ é™¤.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;无法从虚拟电脑 &lt;b&gt;%3&lt;/b&gt;删除共享文件夹 &lt;b&gt;%1&lt;/b&gt; (ä½äºŽ &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) .&lt;/p&gt;&lt;p&gt;请先关闭虚拟电脑中正在使用该文件夹的所有程åºï¼Œå†æ¥åˆ é™¤.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Could not find the VirtualBox Guest Additions CD image file &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; or &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;Do you wish to download this CD image from the Internet?&lt;/p&gt;</source>
@@ -5080,22 +3629,10 @@ p, li { white-space: pre-wrap; }
<translation>&lt;p&gt;增强功能包虚拟光盘已从 &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt;æˆåŠŸä¸‹è½½å¹¶ä¿å­˜åœ¨ &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;您是å¦è¦æ³¨å†Œè¯¥è™šæ‹Ÿå…‰ç›˜å¹¶æŠŠå®ƒç«‹å³æŒ‚载到该虚拟电脑上?&lt;/p&gt;</translation>
</message>
<message>
- <source>&lt;p&gt;The virtual machine window will be now switched to &lt;b&gt;fullscreen&lt;/b&gt; mode. You can go back to windowed mode at any time by pressing &lt;b&gt;%1&lt;/b&gt;. Note that the &lt;i&gt;Host&lt;/i&gt; key is currently defined as &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Note that the main menu bar is hidden in fullscreen mode. You can access it by pressing &lt;b&gt;Host+Home&lt;/b&gt;.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;虚拟电脑将被切æ¢åˆ° &lt;b&gt;å…¨å±&lt;/b&gt; 模å¼. 通过按 &lt;b&gt;%1&lt;/b&gt;您能éšæ—¶è¿”回到窗å£æ¨¡å¼. è¯·æ³¨æ„ &lt;i&gt;组åˆ&lt;/i&gt; 键当å‰å·²è¢«å®šä¹‰ä¸º &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;请注æ„在全å±æ¨¡å¼ä¸‹è™šæ‹Ÿç”µè„‘的主控èœå•å°†è¢«éšè—èµ·æ¥ï¼Œæ‚¨å¯ä»¥é€šè¿‡æŒ‰ &lt;b&gt;组åˆé”®+Home&lt;/b&gt;é”®æ¥æ¿€æ´»å®ƒ.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;The virtual machine window will be now switched to &lt;b&gt;Seamless&lt;/b&gt; mode. You can go back to windowed mode at any time by pressing &lt;b&gt;%1&lt;/b&gt;. Note that the &lt;i&gt;Host&lt;/i&gt; key is currently defined as &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Note that the main menu bar is hidden in seamless mode. You can access it by pressing &lt;b&gt;Host+Home&lt;/b&gt;.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;虚拟电脑将被切æ¢åˆ° &lt;b&gt;æ— ç¼&lt;/b&gt; 模å¼. 通过按 &lt;b&gt;%1&lt;/b&gt;您能éšæ—¶è¿”回到窗å£æ¨¡å¼. è¯·æ³¨æ„ &lt;i&gt;组åˆ&lt;/i&gt; 键当å‰å·²è¢«å®šä¹‰ä¸º &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;请注æ„在无ç¼æ¨¡å¼ä¸‹è™šæ‹Ÿç”µè„‘的主控èœå•å°†è¢«éšè—èµ·æ¥ï¼Œæ‚¨å¯ä»¥é€šè¿‡æŒ‰ &lt;b&gt;组åˆé”®+Home&lt;/b&gt;é”®æ¥æ¿€æ´»å®ƒ.&lt;/p&gt;</translation>
- </message>
- <message>
<source>&lt;p&gt;The virtual machine window is optimized to work in &lt;b&gt;%1&amp;nbsp;bit&lt;/b&gt; color mode but the virtual display is currently set to &lt;b&gt;%2&amp;nbsp;bit&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Please open the display properties dialog of the guest OS and select a &lt;b&gt;%3&amp;nbsp;bit&lt;/b&gt; color mode, if it is available, for best possible performance of the virtual video subsystem.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note&lt;/b&gt;. Some operating systems, like OS/2, may actually work in 32&amp;nbsp;bit mode but report it as 24&amp;nbsp;bit (16 million colors). You may try to select a different color mode to see if this message disappears or you can simply disable the message now if you are sure the required color mode (%4&amp;nbsp;bit) is not available in the guest OS.&lt;/p&gt;</source>
<translation>&lt;p&gt;虚拟电脑工作在 &lt;b&gt;%1&amp;nbsp;ä½&lt;/b&gt; 颜色模å¼æ—¶æ€§èƒ½æœ€ä¼˜ï¼Œ 但当å‰è™šæ‹Ÿç”µè„‘的颜色质é‡è¢«è®¾ç½®ä¸º &lt;b&gt;%2&amp;nbsp;ä½&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;请打开虚拟电脑系统上的显示属性对è¯æ¡†ï¼Œå¹¶é€‰æ‹© &lt;b&gt;%3&amp;nbsp;ä½&lt;/b&gt; 颜色模å¼.&lt;/p&gt;&lt;p&gt;&lt;b&gt;请注æ„&lt;/b&gt;. 有些æ“作系统, 象 OS/2, å¯ä»¥å·¥ä½œåœ¨ 32&amp;nbsp;ä½é¢œè‰²æ¨¡å¼ï¼Œ 但切报告为 24&amp;nbsp;ä½ (1600万色). 您å¯ä»¥é€šè¿‡é€‰æ‹©ä¸€ä¸ªä¸åŒçš„颜色质é‡æ¥çœ‹çœ‹è¯¥ä¿¡æ¯æ˜¯å¦ä¼šæ¶ˆå¤±ï¼Œæˆ–者您å¯ä»¥ç›´æŽ¥ç¦æ­¢è¯¥ä¿¡æ¯å¦‚果您能确定该æ“作系统ä¸æ”¯æŒæ‚¨æ‰€è¦æ±‚çš„é¢œè‰²è´¨é‡ (%4&amp;nbsp;ä½) .&lt;/p&gt;</translation>
</message>
<message>
- <source>&lt;p&gt;A critical error has occurred while running the virtual machine and the machine execution has been stopped.&lt;/p&gt;&lt;p&gt;For help, please see the Community section on &lt;a href=http://www.virtualbox.org&gt;http://www.virtualbox.org&lt;/a&gt; or your support contract. Please provide the contents of the log file &lt;tt&gt;VBox.log&lt;/tt&gt; and the image file &lt;tt&gt;VBox.png&lt;/tt&gt;, which you can find in the &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; directory, as well as a description of what you were doing when this error happened. Note that you can also access the above files by selecting &lt;b&gt;Show Log&lt;/b&gt; from the &lt;b&gt;Machine&lt;/b&gt; menu of the main VirualBox window.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;OK&lt;/b&gt; if you want to power off the machine or press &lt;b&gt;Ignore&lt;/b&gt; if you want to leave it as is for debugging. Please note that debugging requires special knowledge and tools, so it is recommended to press &lt;b&gt;OK&lt;/b&gt; now.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;虚拟电脑在è¿è¡Œä¸­å‘生一个严é‡é”™è¯¯ï¼ŒçŽ°åœ¨å°†è¢«å…³é—­.&lt;/p&gt;&lt;p&gt;请è”系您的供应商. 并æ供日志文件 &lt;tt&gt;VBox.log&lt;/tt&gt; 和映åƒæ–‡ä»¶ &lt;tt&gt;VBox.png&lt;/tt&gt;, 它们ä½äºŽ &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; 文件夹, åŒæ—¶å°±è¯¥é”™è¯¯æ˜¯å¦‚何å‘生的æ供一份详细说明. &lt;/p&gt;&lt;p&gt;按&lt;b&gt;确定&lt;/b&gt; 如果您想关闭该虚拟电脑,或者按 &lt;b&gt;忽略&lt;/b&gt; 如果您想调试它. 请注æ„调试需è¦ä¸“业的知识和工具, 因此建议您按 &lt;b&gt;确定&lt;/b&gt; .&lt;/p&gt;</translation>
- </message>
- <message>
<source>&lt;p&gt;You didn&apos;t attach a hard disk to the new virtual machine. The machine will not be able to boot unless you attach a hard disk with a guest operating system or some other bootable media to it later using the machine settings dialog or the First Run Wizard.&lt;/p&gt;&lt;p&gt;Do you wish to continue?&lt;/p&gt;</source>
<translation>&lt;p&gt;您还没有为新建的虚拟电脑分é…一个å¯ç”¨çš„虚拟硬盘。&lt;/p&gt;&lt;p&gt;您是å¦è¦ç»§ç»­&lt;/p&gt;</translation>
</message>
@@ -5112,22 +3649,10 @@ p, li { white-space: pre-wrap; }
<translation>å‘é€ACPI关闭信å·ç»™è™šæ‹Ÿç”µè„‘ &lt;b&gt;%1&lt;/b&gt;失败.</translation>
</message>
<message>
- <source>&lt;p&gt;Failed to connect to the VirtualBox online registration service.&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;ä¸èƒ½è¿žæŽ¥åœ¨çº¿æ³¨å†ŒæœåŠ¡&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</translation>
- </message>
- <message>
<source>&lt;p&gt;Congratulations! You have been successfully registered as a user of VirtualBox.&lt;/p&gt;&lt;p&gt;Thank you for finding time to fill out the registration form!&lt;/p&gt;</source>
<translation>&lt;p&gt;æ­å–œï¼ä½ å·²æˆåŠŸæ³¨å†Œä¸ºVirtualBox用户.&lt;/p&gt;&lt;p&gt;感谢你花费时间æ¥å¡«å†™è¡¨æ ¼!&lt;/p&gt;</translation>
</message>
<message>
- <source>&lt;p&gt;Failed to register the VirtualBox product&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;无法注册 VirtualBox 产å“&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Failed to save the global VirtualBox settings to &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt;.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;无法ä¿å­˜å…¨å±€ VirtualBox 设置到 &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt;.&lt;/p&gt;</translation>
- </message>
- <message>
<source>&lt;p&gt;Failed to load the global GUI configuration from &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;The application will now terminate.&lt;/p&gt;</source>
<translation>&lt;p&gt;无法从 &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt;加载全局GUI设置.&lt;/p&gt;&lt;p&gt;程åºå°†è¢«ä¸­æ–­.&lt;/p&gt;</translation>
</message>
@@ -5144,57 +3669,11 @@ p, li { white-space: pre-wrap; }
<translation>无法从 &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt;加载虚拟电脑 &lt;b&gt;%1&lt;/b&gt;的设置.</translation>
</message>
<message>
- <source>Delete</source>
- <comment>machine</comment>
- <translation type="obsolete">删除</translation>
- </message>
- <message>
- <source>Unregister</source>
- <comment>machine</comment>
- <translation type="obsolete">释放</translation>
- </message>
- <message>
<source>Discard</source>
<comment>saved state</comment>
<translation>清除</translation>
</message>
<message>
- <source>Continue</source>
- <comment>detach image</comment>
- <translation type="obsolete">继续</translation>
- </message>
- <message>
- <source>&lt;p&gt;Do you want to delete this hard disk&apos;s image file &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;If you select &lt;b&gt;Delete&lt;/b&gt; then the image file will be permanently deleted after unregistering the hard disk. This operation cannot be undone.&lt;/p&gt;&lt;p&gt;If you select &lt;b&gt;Unregister&lt;/b&gt; then the virtual hard disk will be unregistered and removed from the collection, but the image file will be left on your physical disk.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;你是å¦è¦åˆ é™¤è™šæ‹Ÿç¡¬ç›˜æ–‡ä»¶ &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;如果你选择 &lt;b&gt;删除&lt;/b&gt; 该硬盘文件将在释放åŽè¢«æ°¸ä¹…性删除. 这个æ“作是无法撤消的.&lt;/p&gt;&lt;p&gt;如果你选择 &lt;b&gt;释放&lt;/b&gt; 该硬盘文件将被释放并从列表中删除, 当该硬盘文件ä»ä¼šä¿ç•™åœ¨ä½ çš„硬盘上.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Delete</source>
- <comment>hard disk</comment>
- <translation type="obsolete">删除</translation>
- </message>
- <message>
- <source>Unregister</source>
- <comment>hard disk</comment>
- <translation type="obsolete">释放</translation>
- </message>
- <message>
- <source>&lt;p&gt;There are hard disks attached to SATA ports of this virtual machine. If you disable the SATA controller, all these hard disks will be automatically detached.&lt;/p&gt;&lt;p&gt;Are you sure that you want to disable the SATA controller?&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;有些虚拟硬盘连接到这个虚拟电脑的SATA端å£ï¼Œå¦‚果你ç¦ç”¨SATA控制器, 所有连接的硬盘将会被自动断开.&lt;/p&gt;&lt;p&gt;你是å¦ç¡®å®šè¦ç¦ç”¨SATA控制器?&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Disable</source>
- <comment>hard disk</comment>
- <translation type="obsolete">ç¦ç”¨</translation>
- </message>
- <message>
- <source>Failed to attach a hard disk image with UUID %1 to device slot %2 on channel %3 of the %4 bus of the machine &lt;b&gt;%5&lt;/b&gt;.</source>
- <translation type="obsolete">无法连接 UUID å·ä¸º %1 的虚拟硬盘到虚拟电脑 &lt;b&gt;%5&lt;/b&gt;上的总线 %4 ä¸Šçš„é€šé“ %3 上的æ’槽 %2.</translation>
- </message>
- <message>
- <source>Failed to detach a hard disk image from device slot %1 on channel %2 of the %3 bus of the machine &lt;b&gt;%4&lt;/b&gt;.</source>
- <translation type="obsolete">无法从虚拟电脑 &lt;b&gt;%4&lt;/b&gt;上的总线 %3 ä¸Šçš„é€šé“ %2 上的æ’槽 %1 上释放虚拟硬盘.</translation>
- </message>
- <message>
<source>Download</source>
<comment>additions</comment>
<translation>下载</translation>
@@ -5215,34 +3694,11 @@ p, li { white-space: pre-wrap; }
<translation>æ•èŽ·</translation>
</message>
<message>
- <source>&lt;p&gt;One or more of the registered virtual hard disks, CD/DVD or floppy media are not currently accessible. As a result, you will not be able to operate virtual machines that use these media until they become accessible later.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;Check&lt;/b&gt; to open the Virtual Disk Manager window and see what media are inaccessible, or press &lt;b&gt;Ignore&lt;/b&gt; to ignore this message.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;有一个或多个已注册的虚拟硬盘ã€å…‰ç›˜æˆ–软盘当å‰æ— æ³•è®¿é—®.。因此,你å¯èƒ½æ— æ³•æ‰“开那些è¦ä½¿ç”¨è¿™äº›ä»‹è´¨çš„虚拟电脑直到它å¯ä»¥å†æ¬¡è®¿é—®ä¸ºæ­¢.&lt;/p&gt;&lt;p&gt;按 &lt;b&gt;检测&lt;/b&gt; 打开虚拟介质管ç†å™¨å¯ä»¥æŸ¥çœ‹é‚£äº›æ— æ³•è®¿é—®çš„介质,或按 &lt;b&gt;忽略&lt;/b&gt; 忽略这个æ示.&lt;/p&gt;</translation>
- </message>
- <message>
<source>Check</source>
<comment>inaccessible media message box</comment>
<translation>检测</translation>
</message>
<message>
- <source>&lt;p&gt;The following VirtualBox settings files have been automatically converted to the new settings file format version &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;However, the results of the conversion were not saved back to disk yet. Please press:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Save&lt;/b&gt; to save all auto-converted files now (it will not be possible to use these settings files with an older version of VirtualBox in the future);&lt;/li&gt;&lt;li&gt;&lt;b&gt;Backup&lt;/b&gt; to create backup copies of the settings files in the old format before saving them in the new format;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Cancel&lt;/b&gt; to not save the auto-converted settings files now.&lt;li&gt;&lt;/ul&gt;&lt;p&gt;Note that if you select &lt;b&gt;Cancel&lt;/b&gt;, the auto-converted settings files will be implicitly saved in the new format anyway once you change a setting or start a virtual machine, but &lt;b&gt;no&lt;/b&gt; backup copies will be created in this case.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;下é¢çš„ VirtualBox 设置文件已ç»è¢«è‡ªåŠ¨è½¬åŒ–为新版本 &lt;b&gt;%1&lt;/b&gt;çš„æ ¼å¼æ–‡ä»¶.&lt;/p&gt;&lt;p&gt;然而,转化的结果尚未ä¿å­˜åˆ°ç¡¬ç›˜ã€‚按:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;ä¿å­˜&lt;/b&gt; 将立å³ä¿å­˜æ‰€æœ‰çš„转化文件 (å°†æ¥æ–°ç‰ˆçš„ VirtualBox å°†ä¸èƒ½ä½¿ç”¨æ—§ç‰ˆçš„设置文件);&lt;/li&gt;&lt;li&gt;&lt;b&gt;备份&lt;/b&gt; 在ä¿å­˜ä¸ºæ–°æ ¼å¼å‰ä¸ºæ—§æ ¼å¼è®¾ç½®æ–‡ä»¶å»ºç«‹å¤‡ä»½;&lt;/li&gt;&lt;li&gt;&lt;b&gt;å–消&lt;/b&gt; 现在ä¸ä¿å­˜è‡ªåŠ¨è½¬åŒ–çš„æ–°æ ¼å¼æ–‡ä»¶.&lt;li&gt;&lt;/ul&gt;&lt;p&gt;请注æ„:如果你选择 &lt;b&gt;å–消&lt;/b&gt;, 当你更改æŸé¡¹è®¾ç½®æˆ–打开一个虚拟电脑时自动转化的文件将会以新格å¼è¢«ä¿å­˜, 但是在这ç§æƒ…况下 &lt;b&gt;没有&lt;/b&gt; 任何备份文件会被建立.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;Save</source>
- <comment>warnAboutAutoConvertedSettings message box</comment>
- <translation type="obsolete">ä¿å­˜(&amp;S)</translation>
- </message>
- <message>
- <source>&amp;Backup</source>
- <comment>warnAboutAutoConvertedSettings message box</comment>
- <translation type="obsolete">备份(&amp;B)</translation>
- </message>
- <message>
- <source>Cancel</source>
- <comment>warnAboutAutoConvertedSettings message box</comment>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
<source>Switch</source>
<comment>fullscreen</comment>
<translation>切æ¢</translation>
@@ -5272,24 +3728,6 @@ p, li { white-space: pre-wrap; }
<translation>返回</translation>
</message>
<message>
- <source>Failed to copy file &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; to &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; (%3).</source>
- <translation type="obsolete">无法å¤åˆ¶æ–‡ä»¶ &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; 到 &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; (%3).</translation>
- </message>
- <message>
- <source>&lt;p&gt;There are no unused hard disks available for the newly created attachment.&lt;/p&gt;&lt;p&gt;Press the &lt;b&gt;Create&lt;/b&gt; button to start the &lt;i&gt;New Virtual Disk&lt;/i&gt; wizard and create a new hard disk, or press the &lt;b&gt;Select&lt;/b&gt; if you wish to open the &lt;i&gt;Virtual Disk Manager&lt;/i&gt;.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;没有å¯ç”¨çš„虚拟硬盘供新建的连接使用.&lt;/p&gt;&lt;p&gt;按 &lt;b&gt;新建&lt;/b&gt; 按钮å¯åŠ¨ &lt;i&gt;新建虚拟硬盘&lt;/i&gt; å‘导æ¥æ–°å»ºä¸€ä¸ªè™šæ‹Ÿç¡¬ç›˜ï¼Œæˆ–者按 &lt;b&gt;选择&lt;/b&gt; 按钮å¯åŠ¨ &lt;i&gt;虚拟介质管ç†å™¨&lt;/i&gt; æ¥é€‰æ‹©ç›¸åº”æ“作.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;Create</source>
- <comment>hard disk</comment>
- <translation type="obsolete">新建(&amp;C)</translation>
- </message>
- <message>
- <source>Select</source>
- <comment>hard disk</comment>
- <translation type="obsolete">选择</translation>
- </message>
- <message>
<source>&lt;p&gt;Could not enter seamless mode due to insufficient guest video memory.&lt;/p&gt;&lt;p&gt;You should configure the virtual machine to have at least &lt;b&gt;%1&lt;/b&gt; of video memory.&lt;/p&gt;</source>
<translation>&lt;p&gt;无法进入无ç¼æ¨¡å¼ï¼Œå› ä¸ºè™šæ‹Ÿç”µè„‘上没有足够的显存.&lt;/p&gt;&lt;p&gt;你应该é‡æ–°è®¾ç½®è™šæ‹Ÿç”µè„‘让它至少拥有 &lt;b&gt;%1&lt;/b&gt; 的显存.&lt;/p&gt;</translation>
</message>
@@ -5298,10 +3736,6 @@ p, li { white-space: pre-wrap; }
<translation>&lt;p&gt;无法切æ¢åˆ°å…¨å±æ¨¡å¼ï¼Œå› ä¸ºè™šæ‹Ÿç”µè„‘上没有足够的显存.&lt;/p&gt;&lt;p&gt;你应该é‡æ–°è®¾ç½®è™šæ‹Ÿç”µè„‘让它至少拥有 &lt;b&gt;%1&lt;/b&gt; 的显存.&lt;/p&gt;&lt;p&gt;按 &lt;b&gt;忽略&lt;/b&gt; 强制切æ¢åˆ°å…¨å±æ¨¡å¼æˆ–按 &lt;b&gt;å–消&lt;/b&gt; 撤消该æ“作.&lt;/p&gt;</translation>
</message>
<message>
- <source>&lt;p&gt;Unable to obtain the new version information due to the following network error:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;无法获å–新版本信æ¯ï¼Œå› ä¸ºå¦‚下的网络错误:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</translation>
- </message>
- <message>
<source>You are already running the most recent version of VirtualBox.</source>
<translation>当å‰ç‰ˆæœ¬å³ä¸ºæœ€æ–°ç‰ˆï¼Œè¯·ä»¥åŽå†æ¥æ£€æŸ¥.</translation>
</message>
@@ -5318,64 +3752,56 @@ p, li { white-space: pre-wrap; }
<translation>&lt;p&gt;虚拟电脑报告其内所安装的æ“ä½œç³»ç»Ÿæ”¯æŒ &lt;b&gt;鼠标自动切æ¢&lt;/b&gt;. è¿™æ„味ç€é¼ æ ‡ä¸éœ€è¦ä¸ºè¯¥è™šæ‹Ÿç”µè„‘ &lt;i&gt;独å &lt;/i&gt; 使用,当鼠标在虚拟电脑所在窗å£æ—¶ï¼Œåœ¨è¯¥é¼ æ ‡ä¸Šçš„所有æ“作将自动被å‘é€åˆ°è¯¥è™šæ‹Ÿç”µè„‘内的æ“作系统。&lt;/p&gt;&lt;p&gt;当状æ€æ çš„鼠标图标看起æ¥è±¡&amp;nbsp;&lt;img src=:/mouse_seamless_16px.png/&gt;&amp;nbsp;时表示该虚拟电脑内的æ“作系统支æŒé¼ æ ‡è‡ªåŠ¨åˆ‡æ¢ï¼Œå¹¶ä¸”该功能已å¯ç”¨ã€‚&lt;/p&gt;&lt;p&gt;&lt;b&gt;注æ„&lt;/b&gt;: 有些程åºåœ¨é¼ æ ‡è‡ªåŠ¨åˆ‡æ¢æ¨¡å¼ä¸‹æ— æ³•æ­£å¸¸å·¥ä½œã€‚ä½ å¯ä»¥é€šè¿‡æŽ§åˆ¶èœå•çš„相应æ¡ç›®æ¥ç¦ç”¨ï¼ˆæˆ–å¯ç”¨ï¼‰è¯¥åŠŸèƒ½.&lt;/p&gt;</translation>
</message>
<message>
- <source>&lt;p&gt;The virtual machine window will be now switched to &lt;b&gt;fullscreen&lt;/b&gt; mode. You can go back to windowed mode at any time by pressing &lt;b&gt;%1&lt;/b&gt;. Note that the &lt;i&gt;Host&lt;/i&gt; key is currently defined as &lt;b&gt;%2&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Note that the main menu bar is hidden in fullscreen mode. You can access it by pressing &lt;b&gt;Host+Home&lt;/b&gt;.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;虚拟电脑窗å£çŽ°åœ¨å°†è¢«åˆ‡æ¢åˆ° &lt;b&gt;å…¨å±&lt;/b&gt; 模å¼ã€‚在任何时候都å¯ä»¥é€šè¿‡æŒ‰ &lt;b&gt;%1&lt;/b&gt;æ¥é€€å‡ºè¯¥æ¨¡å¼ã€‚请注æ„:当å‰çš„ &lt;i&gt;热键&lt;/i&gt; 已被定义为 &lt;b&gt;%2&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;请注æ„:在全å±æ¨¡å¼ä¸‹æŽ§åˆ¶èœå•å°†è‡ªåŠ¨è¢«éšè—èµ·æ¥ï¼Œå¯ä»¥é€šè¿‡æŒ‰ &lt;b&gt;热键+Home&lt;/b&gt;æ¥æ˜¾ç¤ºå®ƒ.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;The virtual machine window will be now switched to &lt;b&gt;Seamless&lt;/b&gt; mode. You can go back to windowed mode at any time by pressing &lt;b&gt;%1&lt;/b&gt;. Note that the &lt;i&gt;Host&lt;/i&gt; key is currently defined as &lt;b&gt;%2&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Note that the main menu bar is hidden in seamless mode. You can access it by pressing &lt;b&gt;Host+Home&lt;/b&gt;.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;虚拟电脑窗å£çŽ°åœ¨å°†è¢«åˆ‡æ¢åˆ° &lt;b&gt;æ— ç¼&lt;/b&gt; 模å¼ã€‚在任何时候都å¯ä»¥é€šè¿‡æŒ‰ &lt;b&gt;%1&lt;/b&gt;æ¥é€€å‡ºè¯¥æ¨¡å¼ã€‚请注æ„:当å‰çš„ &lt;i&gt;热键&lt;/i&gt; 已被定义为 &lt;b&gt;%2&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;请注æ„:在无ç¼æ¨¡å¼ä¸‹æŽ§åˆ¶èœå•å°†è‡ªåŠ¨è¢«éšè—èµ·æ¥ï¼Œå¯ä»¥é€šè¿‡æŒ‰ &lt;b&gt;热键+Home&lt;/b&gt;æ¥æ˜¾ç¤ºå®ƒ.&lt;/p&gt;</translation>
- </message>
- <message>
<source>&amp;Contents...</source>
<translation>内容(&amp;C)...</translation>
</message>
<message>
<source>Show the online help contents</source>
- <translation>Show the online help contents</translation>
+ <translation>显示è”机帮助内容</translation>
</message>
<message>
<source>&amp;VirtualBox Web Site...</source>
- <translation>&amp;VirtualBox Web Site...</translation>
+ <translation>VirtualBox 网站(&amp;V)...</translation>
</message>
<message>
<source>Open the browser and go to the VirtualBox product web site</source>
- <translation>Open the browser and go to the VirtualBox product web site</translation>
+ <translation>打开æµè§ˆå™¨å¹¶è½¬åˆ° VirtualBox 产å“网站</translation>
</message>
<message>
<source>&amp;Reset All Warnings</source>
- <translation>&amp;Reset All Warnings</translation>
+ <translation>é‡ç½®æ‰€æœ‰è­¦å‘Š(&amp;R)</translation>
</message>
<message>
<source>Go back to showing all suppressed warnings and messages</source>
- <translation>Go back to showing all suppressed warnings and messages</translation>
+ <translation>返回显示所有已å–消的警告和消æ¯</translation>
</message>
<message>
<source>R&amp;egister VirtualBox...</source>
- <translation>R&amp;egister VirtualBox...</translation>
+ <translation>注册VirtualBox(&amp;E)...</translation>
</message>
<message>
<source>Open VirtualBox registration form</source>
- <translation>Open VirtualBox registration form</translation>
+ <translation>打开 VirtualBox 注册表å•</translation>
</message>
<message>
<source>C&amp;heck for Updates...</source>
- <translation>C&amp;heck for Updates...</translation>
+ <translation>检查更新(&amp;H)...</translation>
</message>
<message>
<source>Check for a new VirtualBox version</source>
- <translation></translation>
+ <translation>检查 VirtualBox 新版本</translation>
</message>
<message>
<source>&amp;About VirtualBox...</source>
- <translation>&amp;About VirtualBox...</translation>
+ <translation>关于 VirtualBox(&amp;A)...</translation>
</message>
<message>
<source>Show a dialog with product information</source>
- <translation>Show a dialog with product information</translation>
+ <translation>显示产å“ä¿¡æ¯çš„对è¯æ¡†</translation>
</message>
<message>
<source>&lt;p&gt;A new version of VirtualBox has been released! Version &lt;b&gt;%1&lt;/b&gt; is available at &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;virtualbox.org&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;You can download this version using the link:&lt;/p&gt;&lt;p&gt;&lt;a href=%2&gt;%3&lt;/a&gt;&lt;/p&gt;</source>
- <translation>&lt;p&gt;A new version of VirtualBox has been released! Version &lt;b&gt;%1&lt;/b&gt; is available at &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;virtualbox.org&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;You can download this version using the link:&lt;/p&gt;&lt;p&gt;&lt;a href=%2&gt;%3&lt;/a&gt;&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;VirtualBox 新版本已å‘布ï¼ç‰ˆæœ¬ &lt;b&gt;%1&lt;/b&gt; å¯åœ¨æ­¤äº†è§£ &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;virtualbox.org&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;您å¯ä»¥ä½¿ç”¨æ­¤é“¾æŽ¥ä¸‹è½½è¯¥ç‰ˆæœ¬:&lt;/p&gt;&lt;p&gt;&lt;a href=%2&gt;%3&lt;/a&gt;&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Are you sure you want to release the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;?&lt;/p&gt;&lt;p&gt;This will detach it from the following virtual machine(s): &lt;b&gt;%3&lt;/b&gt;.&lt;/p&gt;</source>
@@ -5399,13 +3825,9 @@ p, li { white-space: pre-wrap; }
<translation>下一个对è¯æ¡†å°†è®©æ‚¨é€‰æ‹©æ˜¯å¦è¦åˆ é™¤è¯¥è™šæ‹Ÿç¡¬ç›˜æˆ–æš‚æ—¶ä¿ç•™ä»¥ä¾¿ä»ŠåŽç»§ç»­ä½¿ç”¨.</translation>
</message>
<message>
- <source>&lt;p&gt;Note that the storage unit of this medium will not be deleted and that it will be possible to add it to the list later again.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;注æ„:该虚拟硬盘并没有被真正删除,因此今åŽæ‚¨è¿˜å¯å°†å…¶åŠ å…¥åˆ°æœ¬åˆ—表中.&lt;/p&gt;</translation>
- </message>
- <message>
<source>Remove</source>
<comment>medium</comment>
- <translation>删除</translation>
+ <translation>移除</translation>
</message>
<message>
<source>&lt;p&gt;The hard disk storage unit at location &lt;b&gt;%1&lt;/b&gt; already exists. You cannot create a new virtual hard disk that uses this location because it can be already used by another virtual hard disk.&lt;/p&gt;&lt;p&gt;Please specify a different location.&lt;/p&gt;</source>
@@ -5430,30 +3852,10 @@ p, li { white-space: pre-wrap; }
<translation>删除虚拟硬盘 &lt;b&gt;%1&lt;/b&gt; 失败.</translation>
</message>
<message>
- <source>&lt;p&gt;There are no unused hard disks available for the newly created attachment.&lt;/p&gt;&lt;p&gt;Press the &lt;b&gt;Create&lt;/b&gt; button to start the &lt;i&gt;New Virtual Disk&lt;/i&gt; wizard and create a new hard disk, or press the &lt;b&gt;Select&lt;/b&gt; if you wish to open the &lt;i&gt;Virtual Media Manager&lt;/i&gt;.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;没有å¯ç”¨çš„虚拟硬盘供新建的连接使用.&lt;/p&gt;&lt;p&gt;按 &lt;b&gt;新建&lt;/b&gt; 按钮å¯åŠ¨ &lt;i&gt;新建虚拟硬盘&lt;/i&gt; å‘导æ¥æ–°å»ºä¸€ä¸ªè™šæ‹Ÿç¡¬ç›˜ï¼Œæˆ–者按 &lt;b&gt;选择&lt;/b&gt; 按钮å¯åŠ¨ &lt;i&gt;虚拟介质管ç†å™¨&lt;/i&gt; æ¥é€‰æ‹©ç›¸åº”æ“作.&lt;/p&gt;</translation>
- </message>
- <message>
<source>Failed to create the hard disk storage &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;.&lt;/nobr&gt;</source>
<translation>创建虚拟硬盘 &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt; 失败.&lt;/nobr&gt;</translation>
</message>
<message>
- <source>Failed to attach the hard disk &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; to slot &lt;i&gt;%2&lt;/i&gt; of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation type="obsolete">分é…虚拟硬盘 &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; 到虚拟电脑 &lt;b&gt;%3&lt;/b&gt; 的第 %2 个æ’槽失败.</translation>
- </message>
- <message>
- <source>Failed to detach the hard disk &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; from slot &lt;i&gt;%2&lt;/i&gt; of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation type="obsolete">ä¸èƒ½å°†è™šæ‹Ÿç¡¬ç›˜ &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; 从虚拟电脑 &lt;b&gt;%3&lt;/b&gt; 的第 %2 个æ’槽中释放.</translation>
- </message>
- <message>
- <source>Failed to mount the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; on the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation type="obsolete">分é…介质 %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; 到虚拟电脑 &lt;b&gt;%3&lt;/b&gt; 失败.</translation>
- </message>
- <message>
- <source>Failed to unmount the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; from the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation type="obsolete">从虚拟电脑 &lt;b&gt;%3&lt;/b&gt; 释放介质 %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; 失败.</translation>
- </message>
- <message>
<source>Failed to open the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;.</source>
<translation>打开 %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; 失败.</translation>
</message>
@@ -5478,72 +3880,18 @@ p, li { white-space: pre-wrap; }
<translation>&lt;p&gt;有一个或多个虚拟硬盘ã€å…‰ç›˜æˆ–软盘当å‰æ— æ³•è®¿é—®.。因此,你å¯èƒ½æ— æ³•æ‰“开那些è¦ä½¿ç”¨è¿™äº›ä»‹è´¨çš„虚拟电脑直到它å¯ä»¥å†æ¬¡è®¿é—®ä¸ºæ­¢.&lt;/p&gt;&lt;p&gt;按 &lt;b&gt;检测&lt;/b&gt; 打开虚拟介质管ç†å™¨å¯ä»¥æŸ¥çœ‹é‚£äº›æ— æ³•è®¿é—®çš„介质,或按 &lt;b&gt;忽略&lt;/b&gt; 忽略这个æ示.&lt;/p&gt;</translation>
</message>
<message>
- <source>&lt;p&gt;Your existing VirtualBox settings files were automatically converted from the old format to a new format required by the new version of VirtualBox.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;OK&lt;/b&gt; to start VirtualBox now or press &lt;b&gt;More&lt;/b&gt; if you want to get more information about what files were converted and access additional actions.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;Exit&lt;/b&gt; to terminate the VirtualBox application without saving the results of the conversion to disk.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;作为虚拟电脑控制å°å‡çº§çš„一部分,您当å‰çš„虚拟电脑设置文件将被自动从旧版转æ¢ä¸ºæ–°ç‰ˆ.&lt;/p&gt;&lt;p&gt;按 &lt;b&gt;确定&lt;/b&gt; 接ç€ç»§ç»­è¿è¡Œè™šæ‹Ÿç”µè„‘控制å°ï¼Œæˆ–按 &lt;b&gt;更多&lt;/b&gt; 如果您想知é“具体哪些文件被转化以åŠæ‰§è¡Œå…¶å®ƒé™„加æ“作.&lt;/p&gt;&lt;p&gt;按 &lt;b&gt;退出&lt;/b&gt; ç«‹å³ä¸­æ–­è™šæ‹Ÿç”µè„‘控制å°çš„è¿è¡Œå¹¶ä¸”放弃ä¿å­˜è½¬æ¢çš„结果.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;More</source>
- <comment>warnAboutAutoConvertedSettings message box</comment>
- <translation type="obsolete">更多(&amp;M)</translation>
- </message>
- <message>
- <source>E&amp;xit</source>
- <comment>warnAboutAutoConvertedSettings message box</comment>
- <translation type="obsolete">退出(&amp;x)</translation>
- </message>
- <message>
- <source>&lt;p&gt;The following VirtualBox settings files have been automatically converted to the new settings file format version &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;However, the results of the conversion were not saved back to disk yet. Please press:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Backup&lt;/b&gt; to create backup copies of the settings files in the old format before saving them in the new format;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Overwrite&lt;/b&gt; to save all auto-converted files without creating backup copies (it will not be possible to use these settings files with an older version of VirtualBox afterwards);&lt;/li&gt;%2&lt;/ul&gt;&lt;p&gt;It is recommended to always select &lt;b&gt;Backup&lt;/b&gt; because in this case it will be possible to go back to the previous version of VirtualBox (if necessary) without losing your current settings. See the VirtualBox Manual for more information about downgrading.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;下é¢çš„虚拟电脑设置文件已ç»è¢«è‡ªåŠ¨è½¬æ¢æˆæ–°ç‰ˆæœ¬ &lt;b&gt;%1&lt;/b&gt; æ ¼å¼çš„文件.&lt;/p&gt;&lt;p&gt;然而,转化的结果尚未ä¿å­˜åˆ°ç¡¬ç›˜ã€‚按:&lt;/p&gt;&lt;ul&gt;&lt;li&gt; &lt;b&gt;备份&lt;/b&gt; 在ä¿å­˜ä¸ºæ–°æ ¼å¼å‰ä¸ºæ—§æ ¼å¼è®¾ç½®æ–‡ä»¶å»ºç«‹å¤‡ä»½;&lt;/li&gt;&lt;li&gt; &lt;b&gt;覆盖&lt;/b&gt; 将立å³ä¿å­˜è‡ªåŠ¨è½¬æ¢çš„设置文件,并且ä¸ä¸ºæ—§æ ¼å¼çš„设置文件建立备份(è¿™æ„味ç€ä»ŠåŽæ‚¨æ— æ³•å†è¿è¡Œæ—§ç‰ˆçš„虚拟电脑控制å°);&lt;/li&gt;%2&lt;/ul&gt;&lt;p&gt;建议您选择 &lt;b&gt;备份&lt;/b&gt; 这样当您å‘现新版的虚拟电脑控制å°å­˜åœ¨æŸäº›é—®é¢˜æ—¶ï¼Œæ‚¨å°±è¿˜å¯ä»¥ç»§ç»­ä½¿ç”¨æ—§ç‰ˆçš„设置文件æ¥è¿è¡Œæ—§ç‰ˆçš„虚拟电脑控制å°. 详情请查看手册以获å–更多信æ¯.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;li&gt;&lt;b&gt;Exit&lt;/b&gt; to terminate VirtualBox without saving the results of the conversion to disk.&lt;/li&gt;</source>
- <translation type="obsolete">&lt;li&gt;&lt;b&gt;退出&lt;/b&gt; 中断虚拟电脑控制å°çš„è¿è¡Œå¹¶ä¸”ä¸ä¿å­˜è½¬æ¢ç»“æžœ.&lt;/li&gt;</translation>
- </message>
- <message>
- <source>O&amp;verwrite</source>
- <comment>warnAboutAutoConvertedSettings message box</comment>
- <translation type="obsolete">覆盖(&amp;v)</translation>
- </message>
- <message>
<source>&lt;p&gt;A critical error has occurred while running the virtual machine and the machine execution has been stopped.&lt;/p&gt;&lt;p&gt;For help, please see the Community section on &lt;a href=http://www.virtualbox.org&gt;http://www.virtualbox.org&lt;/a&gt; or your support contract. Please provide the contents of the log file &lt;tt&gt;VBox.log&lt;/tt&gt; and the image file &lt;tt&gt;VBox.png&lt;/tt&gt;, which you can find in the &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; directory, as well as a description of what you were doing when this error happened. Note that you can also access the above files by selecting &lt;b&gt;Show Log&lt;/b&gt; from the &lt;b&gt;Machine&lt;/b&gt; menu of the main VirtualBox window.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;OK&lt;/b&gt; if you want to power off the machine or press &lt;b&gt;Ignore&lt;/b&gt; if you want to leave it as is for debugging. Please note that debugging requires special knowledge and tools, so it is recommended to press &lt;b&gt;OK&lt;/b&gt; now.&lt;/p&gt;</source>
<translation>&lt;p&gt;虚拟电脑在è¿è¡Œä¸­å‘生一个严é‡é”™è¯¯ï¼ŒçŽ°åœ¨å°†è¢«å…³é—­.&lt;/p&gt;&lt;p&gt;请è”系您的供应商. 并æ供日志文件 &lt;tt&gt;VBox.log&lt;/tt&gt; 和映åƒæ–‡ä»¶ &lt;tt&gt;VBox.png&lt;/tt&gt;, 它们ä½äºŽ &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; 文件夹, åŒæ—¶å°±è¯¥é”™è¯¯æ˜¯å¦‚何å‘生的æ供一份详细说明. &lt;/p&gt;&lt;p&gt;按&lt;b&gt;确定&lt;/b&gt; 如果您想关闭该虚拟电脑,或者按 &lt;b&gt;忽略&lt;/b&gt; 如果您想调试它. 请注æ„调试需è¦ä¸“业的知识和工具, 因此建议您按 &lt;b&gt;确定&lt;/b&gt; .&lt;/p&gt;</translation>
</message>
<message>
- <source>hard disk</source>
- <comment>failed to close ...</comment>
- <translation type="obsolete">虚拟硬盘</translation>
- </message>
- <message>
- <source>CD/DVD image</source>
- <comment>failed to close ...</comment>
- <translation type="obsolete">虚拟光盘</translation>
- </message>
- <message>
- <source>floppy image</source>
- <comment>failed to close ...</comment>
- <translation type="obsolete">虚拟软盘</translation>
- </message>
- <message>
- <source>A file named &lt;b&gt;%1&lt;/b&gt; already exists. Are you sure you want to replace it?&lt;br /&gt;&lt;br /&gt;The file already exists in &quot;%2&quot;. Replacing it will overwrite its contents.</source>
- <translation type="obsolete">一个å为 &lt;b&gt;%1&lt;/b&gt; 的文件已ç»å­˜åœ¨ã€‚您是å¦ç¡®å®šè¦æ›¿ä»£å®ƒï¼Ÿ&lt;br /&gt;&lt;br /&gt;该文件已ç»å­˜åœ¨äºŽ &quot;%2&quot;中。替代åŽå°†ä¼šè¦†ç›–它的所有内容.</translation>
- </message>
- <message>
<source>The following files already exist:&lt;br /&gt;&lt;br /&gt;%1&lt;br /&gt;&lt;br /&gt;Are you sure you want to replace them? Replacing them will overwrite their contents.</source>
<translation>下列文件: &lt;br /&gt;&lt;br /&gt;%1&lt;br /&gt;&lt;br /&gt;å·²ç»å­˜åœ¨ã€‚您是å¦ç¡®å®šè¦æ›¿ä»£å®ƒä»¬ï¼Ÿæ›¿ä»£åŽå°†ä¼šè¦†ç›–它们的所有内容.</translation>
</message>
<message>
- <source>Failed to remove the file &lt;b&gt;%1&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Please try to remove that file yourself &amp; try again.</source>
- <translation type="obsolete">删除文件 &lt;b&gt;%1&lt;/b&gt;失败.&lt;br /&gt;&lt;br /&gt;请您å°è¯•è‡ªå·±åˆ é™¤è¯¥æ–‡ä»¶ &amp; å†è¯•ä¸€æ¬¡.</translation>
- </message>
- <message>
<source>You are running a prerelease version of VirtualBox. This version is not suitable for production use.</source>
<translation>您现在è¿è¡Œçš„是预览版本。该版本ä¸é€‚åˆäºŽæ—¥å¸¸ä½¿ç”¨.</translation>
</message>
<message>
- <source>Could not access USB on the host system, because neither the USB file system (usbfs) nor the DBus and hal services are currently available. If you wish to use host USB devices inside guest systems, you must correct this and restart VirtualBox.</source>
- <translation type="obsolete">无法访问电脑上的USB设备,因为当å‰ä¸ç®¡æ˜¯USB文件系统(usbfs)或Dbuså’ŒhalæœåŠ¡éƒ½æ— æ³•ä½¿ç”¨ã€‚如果您想在虚拟电脑内使用USB设备,则必须先修å¤å®ƒä»¬ï¼Œç„¶åŽå†é‡å¯æœ¬ç¨‹åº.</translation>
- </message>
- <message>
<source>You are trying to shut down the guest with the ACPI power button. This is currently not possible because the guest does not support software shutdown.</source>
<translation>您正在å°è¯•ä½¿ç”¨ ACPI 关机信å·æ¥å…³é—­è™šæ‹Ÿç”µè„‘。但这是无效的,因为该虚拟电脑内的æ“作系统并ä¸æ”¯æŒ ACPI ä¿¡å·ç³»ç»Ÿ.</translation>
</message>
@@ -5560,37 +3908,12 @@ p, li { white-space: pre-wrap; }
<translation>继续</translation>
</message>
<message>
- <source>&lt;p&gt;Are you sure you wish to delete the selected snapshot and saved state?&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;请确认您是å¦çœŸçš„è¦åˆ é™¤æ‰€é€‰çš„备份和当å‰çŠ¶æ€?&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Discard</source>
- <translation type="obsolete">清除</translation>
- </message>
- <message>
<source>Cancel</source>
<translation>å–消</translation>
</message>
<message>
- <source>&lt;p&gt;There are hard disks attached to ports of the additional controller. If you disable the additional controller, all these hard disks will be automatically detached.&lt;/p&gt;&lt;p&gt;Are you sure you want to disable the additional controller?&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;已有虚拟硬盘连接到附加控制器的端å£ä¸Š. 如果您ç¦ç”¨è¯¥æŽ§åˆ¶å™¨, 所有连接到该控制器的虚拟硬盘将被自动释放.&lt;/p&gt;&lt;p&gt;您是å¦ç¡®è®¤è¦ç¦ç”¨è¯¥æŽ§åˆ¶å™¨?&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;There are hard disks attached to ports of the additional controller. If you change the additional controller, all these hard disks will be automatically detached.&lt;/p&gt;&lt;p&gt;Are you sure you want to change the additional controller?&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;已有虚拟硬盘连接到附加控制器的端å£ä¸Š. 如果您更改该控制器, 所有连接到该控制器的虚拟硬盘将被自动释放.&lt;/p&gt;&lt;p&gt;您是å¦ç¡®è®¤è¦æ›´æ”¹è¯¥æŽ§åˆ¶å™¨?&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Change</source>
- <comment>hard disk</comment>
- <translation type="obsolete">更改</translation>
- </message>
- <message>
- <source>&lt;p&gt;Do you want to remove the selected host network interface &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This interface may be in use by one or more network adapters of this or another VM. After it is removed, these adapters will no longer work until you correct their settings by either choosing a different interface name or a different adapter attachment type.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;你是å¦è¦åˆ é™¤æ‰€é€‰çš„host network interface&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;注æ„:&lt;/b&gt;该界é¢å¯èƒ½è¢«è¿™ä¸ªæˆ–其它个虚拟电脑的一个或多个网络连接所使用。 删除该界é¢åŽï¼Œè¿™äº›ç½‘络连接将ä¸èƒ½æ­£å¸¸å·¥ä½œï¼Œç›´åˆ°ä½ é€šè¿‡é€‰æ‹©å…¶å®ƒç½‘络界é¢æˆ–使用一个ä¸åŒçš„适é…器接入类型æ¥ä¿®æ­£å®ƒä»¬.&lt;/p&gt;</translation>
- </message>
- <message>
<source>Failed to create the host-only network interface.</source>
- <translation>ä¸èƒ½åˆ›å»º host-only 网络连接.</translation>
+ <translation>ä¸èƒ½åˆ›å»ºä»…主机(Host-Only)网络连接.</translation>
</message>
<message>
<source>&lt;p&gt;Your existing VirtualBox settings files will be automatically converted from the old format to a new format required by the new version of VirtualBox.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;OK&lt;/b&gt; to start VirtualBox now or press &lt;b&gt;Exit&lt;/b&gt; if you want to terminate the VirtualBox application without any further actions.&lt;/p&gt;</source>
@@ -5625,24 +3948,20 @@ p, li { white-space: pre-wrap; }
<translation>导出虚拟电脑 &lt;b&gt;%1&lt;/b&gt;失败.</translation>
</message>
<message>
- <source>A file named &lt;b&gt;%1&lt;/b&gt; already exists. Are you sure you want to replace it?&lt;br /&gt;&lt;br /&gt;Replacing it will overwrite its contents.</source>
- <translation>一个å为 &lt;b&gt;%1&lt;/b&gt; 的文件已ç»å­˜åœ¨ã€‚您是å¦ç¡®å®šè¦æ›¿ä»£å®ƒï¼Ÿ&lt;br /&gt;&lt;br /&gt;替代åŽå°†ä¼šè¦†ç›–它的所有内容.</translation>
+ <source>&lt;p&gt;Deleting this host-only network will remove the host-only interface this network is based on. Do you want to remove the (host-only network) interface &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; this interface may be in use by one or more virtual network adapters belonging to one of your VMs. After it is removed, these adapters will no longer be usable until you correct their settings by either choosing a different interface name or a different adapter attachment type.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;删除这个仅主机(Host-Only)网络将åŒæ—¶åˆ é™¤è¿žæŽ¥åˆ°è¯¥ç½‘络上的所有仅主机(Host-Only)连接。 您确定è¦åˆ é™¤ä»…主机(Host-Only)网络 &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;注æ„:&lt;/b&gt; 该网络å¯èƒ½æ­£è¢«ä¸€ä¸ªæˆ–多个虚拟电脑的网络连接所使用. 一旦删除,将导致这些网络连接无法使用,因此您应该到虚拟电脑的网络设置中进行相应的修正.&lt;/p&gt;</translation>
</message>
<message>
- <source>Failed to remove the file &lt;b&gt;%1&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Please try to remove the file yourself and try again.</source>
- <translation type="obsolete">删除文件 &lt;b&gt;%1&lt;/b&gt;失败.&lt;br /&gt;&lt;br /&gt;请您å°è¯•è‡ªå·±åˆ é™¤è¯¥æ–‡ä»¶ï¼Œç„¶åŽå†è¯•ä¸€æ¬¡.</translation>
+ <source>A file named &lt;b&gt;%1&lt;/b&gt; already exists. Are you sure you want to replace it?&lt;br /&gt;&lt;br /&gt;Replacing it will overwrite its contents.</source>
+ <translation>一个å为 &lt;b&gt;%1&lt;/b&gt; 的文件已ç»å­˜åœ¨ã€‚您是å¦ç¡®å®šè¦æ›¿ä»£å®ƒï¼Ÿ&lt;br /&gt;&lt;br /&gt;替代åŽå°†ä¼šè¦†ç›–它的所有内容.</translation>
</message>
<message>
<source>&lt;p&gt;VT-x/AMD-V hardware acceleration has been enabled, but is not operational. Certain guests (e.g. OS/2 and QNX) require this feature.&lt;/p&gt;&lt;p&gt;Please ensure that you have enabled VT-x/AMD-V properly in the BIOS of your host computer.&lt;/p&gt;</source>
<translation>&lt;p&gt;VT-x/AMD-V 硬件加速已被å¯ç”¨, 但当å‰å¤„于无效状æ€. 虚拟电脑内的æŸäº›æ“作系统(如OS/2或QNX)å¯èƒ½éœ€è¦è¯¥ç‰¹æ€§.&lt;/p&gt;&lt;p&gt;请确认在您电脑的BIOS中已å¯ç”¨ VT-x/AMD-V 支æŒ.&lt;/p&gt;</translation>
</message>
<message>
- <source>&lt;p&gt;Deleting this host-only network will remove the host-only interface this network is based on. Do you want to remove the (host-only network) interface &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; this interface may be in use by one or more virtual network adapters belonging to one of your VMs. After it is removed, these adapters will no longer be usable until you correct their settings by either choosing a different interface name or a different adapter attachment type.&lt;/p&gt;</source>
- <translation>&lt;p&gt;删除这个host-only网络将åŒæ—¶åˆ é™¤è¿žæŽ¥åˆ°è¯¥ç½‘络上的所有host-only连接。 您确定è¦åˆ é™¤host-only网络 &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;注æ„:&lt;/b&gt; 该网络å¯èƒ½æ­£è¢«ä¸€ä¸ªæˆ–多个虚拟电脑的网络连接所使用. 一旦删除,将导致这些网络连接无法使用,因此您应该到虚拟电脑的网络设置中进行相应的修正.&lt;/p&gt;</translation>
- </message>
- <message>
<source>&lt;p&gt;Invalid e-mail address or password specified.&lt;/p&gt;</source>
- <translation>&lt;p&gt;无效的e-mail地å€æˆ–密ç .&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;无效的电å­é‚®ä»¶åœ°å€æˆ–密ç .&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Failed to register the VirtualBox product.&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</source>
@@ -5654,19 +3973,15 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Failed to remove file.</source>
- <translation>删除文件失败.</translation>
+ <translation>移除文件失败.</translation>
</message>
<message>
<source>You seem to have the USBFS filesystem mounted at /sys/bus/usb/drivers. We strongly recommend that you change this, as it is a severe mis-configuration of your system which could cause USB devices to fail in unexpected ways.</source>
- <translation>You seem to have the USBFS filesystem mounted at /sys/bus/usb/drivers. We strongly recommend that you change this, as it is a severe mis-configuration of your system which could cause USB devices to fail in unexpected ways.</translation>
+ <translation>您似乎拥有 USBFS 文件系统,装载于 /sys/bus/usb/drivers。我们强烈建议您更改,因为这是一个很严é‡çš„系统错误é…置,å¯èƒ½ä¼šå¯¼è‡´ USB 设备以æ„外的方å¼å‘生故障。</translation>
</message>
<message>
<source>You are running an EXPERIMENTAL build of VirtualBox. This version is not suitable for production use.</source>
- <translation>You are running an EXPERIMENTAL build of VirtualBox. This version is not suitable for production use.</translation>
- </message>
- <message>
- <source>&lt;p&gt;Are you sure you want to restore snapshot &lt;b&gt;%1&lt;/b&gt;? This will cause you to lose your current machine state, which cannot be recovered.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;您确定è¦å°†è™šæ‹Ÿç”µè„‘æ¢å¤åˆ°ç”Ÿæˆå¤‡ä»½ &lt;b&gt;%1&lt;/b&gt; 时的状æ€? 这将导致从最近一次备份到现在虚拟电脑内的所有å˜åŒ–都被完全清空(存放在数æ®ç©ºé—´çš„内容除外), 请注æ„:该æ“作一旦执行就无法撤销.&lt;/p&gt;</translation>
+ <translation>您正在è¿è¡Œ VirtualBox 的实验版本。该版本ä¸é€‚åˆå·¥ä½œåº”用。</translation>
</message>
<message>
<source>Restore</source>
@@ -5689,32 +4004,6 @@ p, li { white-space: pre-wrap; }
<translation>删除存在虚拟电脑 &lt;b&gt;%2&lt;/b&gt; 中的备份 &lt;b&gt;%1&lt;/b&gt; 失败.</translation>
</message>
<message>
- <source>&lt;p&gt;There are no unused media available for the newly created attachment.&lt;/p&gt;&lt;p&gt;Press the &lt;b&gt;Create&lt;/b&gt; button to start the &lt;i&gt;New Virtual Disk&lt;/i&gt; wizard and create a new medium, or press the &lt;b&gt;Select&lt;/b&gt; if you wish to open the &lt;i&gt;Virtual Media Manager&lt;/i&gt;.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;没有å¯ç”¨çš„虚拟硬盘供新建的通é“使用.&lt;/p&gt;&lt;p&gt;按 &lt;b&gt;新建&lt;/b&gt; 按钮å¯åŠ¨ &lt;i&gt;新建虚拟硬盘&lt;/i&gt; å‘导æ¥æ–°å»ºä¸€ä¸ªè™šæ‹Ÿç¡¬ç›˜ï¼Œæˆ–者按 &lt;b&gt;选择&lt;/b&gt; 如果您想打开 &lt;i&gt;虚拟介质管ç†å™¨&lt;/i&gt;.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;Create</source>
- <comment>medium</comment>
- <translation type="obsolete">新建(&amp;C)</translation>
- </message>
- <message>
- <source>&amp;Select</source>
- <comment>medium</comment>
- <translation type="obsolete">选择(&amp;S)</translation>
- </message>
- <message>
- <source>&lt;p&gt;There are no unused media available for the newly created attachment.&lt;/p&gt;&lt;p&gt;Press the &lt;b&gt;Select&lt;/b&gt; if you wish to open the &lt;i&gt;Virtual Media Manager&lt;/i&gt;.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;没有å¯ç”¨çš„虚拟硬盘供新建的通é“使用.&lt;/p&gt;&lt;p&gt;按 &lt;b&gt;选择&lt;/b&gt; 如果您想打开 &lt;i&gt;虚拟介质管ç†å™¨&lt;/i&gt;.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Failed to attach the %1 to slot &lt;i&gt;%2&lt;/i&gt; of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation type="obsolete">åˆ†é… %1 到虚拟电脑 &lt;b&gt;%3&lt;/b&gt; ä¸­çš„é€šé“ &lt;i&gt;%2&lt;/i&gt; 失败.</translation>
- </message>
- <message>
- <source>Failed to detach the %1 from slot &lt;i&gt;%2&lt;/i&gt; of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation type="obsolete">从虚拟电脑 &lt;b&gt;%3&lt;/b&gt; ä¸­çš„é€šé“ &lt;i&gt;%2&lt;/i&gt; 释放 %1 失败.</translation>
- </message>
- <message>
<source>Unable to mount the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; on the machine &lt;b&gt;%3&lt;/b&gt;.</source>
<translation>分é…介质 %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; 到虚拟电脑 &lt;b&gt;%3&lt;/b&gt; 失败.</translation>
</message>
@@ -5735,10 +4024,6 @@ p, li { white-space: pre-wrap; }
<translation>强制释放</translation>
</message>
<message>
- <source>Failed to eject the disk from the virtual drive. The drive may be locked by the guest operating system. Please check this and try again.</source>
- <translation type="obsolete">无法弹出盘片。该驱动器å¯èƒ½è¢«æ“作系统é”定。请检查åŽå†é‡è¯•ã€‚</translation>
- </message>
- <message>
<source>&lt;p&gt;Could not insert the VirtualBox Guest Additions installer CD image into the virtual machine &lt;b&gt;%1&lt;/b&gt;, as the machine has no CD/DVD-ROM drives. Please add a drive using the storage page of the virtual machine settings dialog.&lt;/p&gt;</source>
<translation>&lt;p&gt;无法分é…存放增强功能包的虚拟光盘到虚拟电脑 &lt;b&gt;%1&lt;/b&gt;, 因为该虚拟电脑没有光驱. 请先到虚拟电脑设置对è¯æ¡†çš„存储页中添加一个光驱.&lt;/p&gt;</translation>
</message>
@@ -5777,21 +4062,6 @@ p, li { white-space: pre-wrap; }
<translation>虚拟软盘</translation>
</message>
<message>
- <source>hard disk</source>
- <comment>failed to attach ...</comment>
- <translation type="obsolete">虚拟硬盘</translation>
- </message>
- <message>
- <source>CD/DVD device</source>
- <comment>failed to attach ...</comment>
- <translation type="obsolete">光驱</translation>
- </message>
- <message>
- <source>floppy device</source>
- <comment>failed to close ...</comment>
- <translation type="obsolete">软驱</translation>
- </message>
- <message>
<source>&lt;p&gt;Are you sure you want to delete the CD/DVD-ROM device?&lt;/p&gt;&lt;p&gt;You will not be able to mount any CDs or ISO images or install the Guest Additions without it!&lt;/p&gt;</source>
<translation>&lt;p&gt;您确定è¦åˆ é™¤å…‰é©±?&lt;/p&gt;&lt;p&gt;您将无法使用任何光盘或虚拟光盘以åŠå­˜æ”¾å¢žå¼ºåŠŸèƒ½åŒ…的虚拟光盘!&lt;/p&gt;</translation>
</message>
@@ -5802,424 +4072,403 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&lt;p&gt;VT-x/AMD-V hardware acceleration is not available on your system. Your 64-bit guest will fail to detect a 64-bit CPU and will not be able to boot.</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;VT-x/AMD-V 硬件加速在您的系统中ä¸å¯ç”¨ã€‚您的 64-ä½è™šæ‹Ÿæœºå°†æ— æ³•æ£€æµ‹åˆ° 64-ä½ CPU,从而无法å¯åŠ¨ã€‚</translation>
</message>
<message>
<source>&lt;p&gt;VT-x/AMD-V hardware acceleration is not available on your system. Certain guests (e.g. OS/2 and QNX) require this feature and will fail to boot without it.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;VT-x/AMD-V 硬件加速在您的系统中ä¸å¯ç”¨ã€‚æŸäº›è™šæ‹Ÿæœº (如 OS/2 å’Œ QNX) 需è¦è¯¥åŠŸèƒ½ï¼Œå¹¶ä¸”没有它将无法å¯åŠ¨ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Deleting the snapshot %1 will temporarily need more disk space. In the worst case the size of image %2 will grow by %3, however on this filesystem there is only %4 free.&lt;/p&gt;&lt;p&gt;Running out of disk space during the merge operation can result in corruption of the image and the VM configuration, i.e. loss of the VM and its data.&lt;/p&gt;&lt;p&gt;You may continue with deleting the snapshot at your own risk.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;删除备份 %1 将临时需è¦å¾ˆå¤šç£ç›˜ç©ºé—´ã€‚最åçš„æ‰“ç®—ï¼Œæ˜ åƒ %2 将增长 %3,然而,在该文件系统中åªæœ‰ %4 çš„å¯ç”¨ç©ºé—´ã€‚&lt;/p&gt;&lt;p&gt;åˆå¹¶æ“作期间ç£ç›˜ç©ºé—´ä¸è¶³è€Œç»§ç»­è¿è¡Œï¼Œå¯èƒ½ä¼šå¯¼è‡´æ˜ åƒå’Œè™šæ‹Ÿæœºé…置的æŸå,如丢失虚拟机åŠå…¶æ•°æ®ã€‚&lt;/p&gt;&lt;p&gt;您å¯ä»¥ç»§ç»­åˆ é™¤å¿«ç…§ï¼Œä½†é£Žé™©è¯·è‡ªè´Ÿã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Could not change the guest screen to this host screen due to insufficient guest video memory.&lt;/p&gt;&lt;p&gt;You should configure the virtual machine to have at least &lt;b&gt;%1&lt;/b&gt; of video memory.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>&lt;p&gt;由于虚拟机显存ä¸è¶³ï¼Œæ— æ³•å°†è™šæ‹Ÿæœºå±å¹•æ›´æ”¹ä¸ºè¯¥ä¸»æœºå±å¹•ã€‚&lt;/p&gt;&lt;p&gt;您应该é…置虚拟机,为其分é…至少 &lt;b&gt;%1&lt;/b&gt; 的显存。&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Could not change the guest screen to this host screen due to insufficient guest video memory.&lt;/p&gt;&lt;p&gt;You should configure the virtual machine to have at least &lt;b&gt;%1&lt;/b&gt; of video memory.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;Ignore&lt;/b&gt; to switch the screen anyway or press &lt;b&gt;Cancel&lt;/b&gt; to cancel the operation.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;由于虚拟机显存ä¸è¶³ï¼Œæ— æ³•å°†è™šæ‹Ÿæœºå±å¹•æ›´æ”¹ä¸ºè¯¥ä¸»æœºå±å¹•ã€‚&lt;/p&gt;&lt;p&gt;您应该é…置虚拟机,使其拥有至少 &lt;b&gt;%1&lt;/b&gt; 的显存。&lt;/p&gt;&lt;p&gt;按&lt;b&gt;忽略&lt;/b&gt;强制切æ¢å±å¹•ï¼Œæˆ–按&lt;b&gt;å–消&lt;/b&gt;æ¥å–消æ“作。&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Can not switch the guest display to fullscreen mode. You have more virtual screens configured than physical screens are attached to your host.&lt;/p&gt;&lt;p&gt;Please either lower the virtual screens in your VM configuration or attach additional screens to your host.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;无法将虚拟机显示切æ¢ä¸ºå…¨å±æ¨¡å¼ã€‚您拥有的已é…置的虚拟å±å¹•ï¼Œæ¯”附加到主机的物ç†å±å¹•è¦å¤šã€‚&lt;/p&gt;&lt;p&gt;请å‡å°‘虚拟机中的虚拟å±å¹•ï¼Œæˆ–为主机å¦å¤–å†é™„加å±å¹•ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Can not switch the guest display to seamless mode. You have more virtual screens configured than physical screens are attached to your host.&lt;/p&gt;&lt;p&gt;Please either lower the virtual screens in your VM configuration or attach additional screens to your host.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;无法将虚拟机显示切æ¢ä¸ºæ— ç¼æ¨¡å¼ã€‚您拥有的已é…置的虚拟å±å¹•ï¼Œæ¯”附加到主机的物ç†å±å¹•è¦å¤šã€‚&lt;/p&gt;&lt;p&gt;请å‡å°‘虚拟机中的虚拟å±å¹•ï¼Œæˆ–为主机å¦å¤–å†é™„加å±å¹•ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Could not find the VirtualBox User Manual &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;Do you wish to download this file from the Internet?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;无法找到 VirtualBox 用户手册 &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;。&lt;/p&gt;&lt;p&gt;您是å¦è¦ä»Žç½‘上下载该文件?&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Are you sure you want to download the VirtualBox User Manual from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; (size %3 bytes)?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您是å¦çœŸè¦ä»Ž &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; 下载 VirtualBox 用户手册(大å°ä¸º %3 字节)?&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Failed to download the VirtualBox User Manual from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;从 &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; 下载 VirtualBox 用户手册失败。&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;The VirtualBox User Manual has been successfully downloaded from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; and saved locally as &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;VirtualBox 用户手册已æˆåŠŸä»Ž &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; 下载,已ä¿å­˜ä¸º &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;&lt;/nobr&gt;。&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;The VirtualBox User Manual has been successfully downloaded from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; but can&apos;t be saved locally as &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;Please choose another location for that file.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;VirtualBox 用户手册已æˆåŠŸä»Ž &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; 下载,但未能在本地ä¿å­˜ä¸º &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;&lt;/nobr&gt;。&lt;/p&gt;&lt;p&gt;请为文件选择å¦ä¸€ä¸ªä½ç½®ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>Failed to open virtual machine located in %1.</source>
- <translation type="unfinished"></translation>
+ <translation>未能打开ä½äºŽ %1 的虚拟电脑。</translation>
</message>
<message>
<source>Failed to add virtual machine &lt;b&gt;%1&lt;/b&gt; located in &lt;i&gt;%2&lt;/i&gt; because its already present.</source>
- <translation type="unfinished"></translation>
+ <translation>未能添加虚拟机 &lt;b&gt;%1&lt;/b&gt; 于 &lt;i&gt;%2&lt;/i&gt;,它已ç»å­˜åœ¨äº†ã€‚</translation>
</message>
<message>
<source>&lt;p&gt;You are about to remove the virtual machine &lt;b&gt;%1&lt;/b&gt; from the machine list.&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您正è¦ä»Žè™šæ‹Ÿæœºåˆ—表中移除虚拟机 &lt;b&gt;%1&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;您是å¦è¦åŒæ—¶ä»Žç¡¬ç›˜ä¸­åˆ é™¤åŒ…å«è™šæ‹Ÿæœºçš„文件?&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;You are about to remove the virtual machine &lt;b&gt;%1&lt;/b&gt; from the machine list.&lt;/p&gt;&lt;p&gt;Would you like to delete the files containing the virtual machine from your hard disk as well? Doing this will also remove the files containing the machine&apos;s virtual hard disks if they are not in use by another machine.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您正è¦ä»Žè™šæ‹Ÿæœºåˆ—表中移除虚拟机 &lt;b&gt;%1&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;您是å¦è¦åŒæ—¶ä»Žç¡¬ç›˜ä¸­åˆ é™¤åŒ…å«è™šæ‹Ÿæœºçš„文件?这么åšä¼šåŒæ—¶ç§»é™¤åŒ…å«è™šæ‹Ÿæœºçš„虚拟硬盘文件,åªè¦å®ƒä»¬ä¸è¢«å…¶ä»–虚拟机所使用。&lt;/p&gt;</translation>
</message>
<message>
<source>Delete all files</source>
- <translation type="unfinished"></translation>
+ <translation>删除所有文件</translation>
</message>
<message>
<source>Remove only</source>
- <translation type="unfinished"></translation>
+ <translation>åªæ˜¯ç§»é™¤</translation>
</message>
<message>
<source>You are about to remove the inaccessible virtual machine &lt;b&gt;%1&lt;/b&gt; from the machine list. Do you wish to proceed?</source>
- <translation type="unfinished"></translation>
+ <translation>您正è¦ä»Žè™šæ‹Ÿæœºåˆ—表中移除ä¸å¯è®¿é—®çš„虚拟机 &lt;b&gt;%1&lt;/b&gt;。您是å¦è¦ç»§ç»­?</translation>
</message>
<message>
<source>Remove</source>
- <translation type="unfinished">删除</translation>
+ <translation>删除</translation>
</message>
<message>
<source>&lt;p&gt;You are about to add a virtual hard disk to controller &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Would you like to create a new, empty file to hold the disk contents or select an existing one?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您将è¦æ·»åŠ è™šæ‹Ÿç¡¬ç›˜åˆ°æŽ§åˆ¶å™¨ &lt;b&gt;%1&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;您是å¦è¦åˆ›å»ºä¸€ä¸ªæ–°çš„空文件æ¥ä¿ç•™ç£ç›˜å†…容,或选择一个现有的文件?&lt;/p&gt;</translation>
</message>
<message>
<source>Create &amp;new disk</source>
<comment>add attachment routine</comment>
- <translation type="unfinished"></translation>
+ <translation>创建新的虚拟盘(&amp;N)</translation>
</message>
<message>
<source>&amp;Choose existing disk</source>
<comment>add attachment routine</comment>
- <translation type="unfinished"></translation>
+ <translation>使用现有的虚拟盘(&amp;C)</translation>
</message>
<message>
<source>&lt;p&gt;You are about to add a new CD/DVD drive to controller &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Would you like to choose a virtual CD/DVD disk to put in the drive or to leave it empty for now?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您将è¦æ·»åŠ æ–°å…‰é©±åˆ°æŽ§åˆ¶å™¨ &lt;b&gt;%1&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;您是å¦è¦é€‰æ‹©ä¸€ä¸ªè™šæ‹Ÿå…‰ç›˜æ¥æ”¾å…¥é©±åŠ¨å™¨ï¼Œæˆ–将其现在留空?&lt;/p&gt;</translation>
</message>
<message>
<source>&amp;Choose disk</source>
<comment>add attachment routine</comment>
- <translation type="unfinished"></translation>
+ <translation>选择ç£ç›˜(&amp;C)</translation>
</message>
<message>
<source>Leave &amp;empty</source>
<comment>add attachment routine</comment>
- <translation type="unfinished"></translation>
+ <translation>留空(&amp;E)</translation>
</message>
<message>
<source>&lt;p&gt;You are about to add a new floppy drive to controller &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Would you like to choose a virtual floppy disk to put in the drive or to leave it empty for now?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您将è¦æ·»åŠ æ–°è½¯é©±åˆ°æŽ§åˆ¶å™¨ &lt;b&gt;%1&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;您是å¦è¦é€‰æ‹©ä¸€ä¸ªè™šæ‹Ÿè½¯ç›˜æ¥æ”¾å…¥é©±åŠ¨å™¨ï¼Œæˆ–将其现在留空?&lt;/p&gt;</translation>
</message>
<message>
<source>Failed to detach the hard disk (&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;) from the slot &lt;i&gt;%2&lt;/i&gt; of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>从虚拟机 &lt;b&gt;%3&lt;/b&gt; çš„æ’槽 &lt;i&gt;%2&lt;/i&gt; 分离硬盘 (&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;) 失败。</translation>
</message>
<message>
<source>Failed to detach the CD/DVD device (&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;) from the slot &lt;i&gt;%2&lt;/i&gt; of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>从虚拟机 &lt;b&gt;%3&lt;/b&gt; çš„æ’槽 &lt;i&gt;%2&lt;/i&gt; 分离光驱 (&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;) 失败。</translation>
</message>
<message>
<source>Failed to detach the floppy device (&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;) from the slot &lt;i&gt;%2&lt;/i&gt; of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>从虚拟机 &lt;b&gt;%3&lt;/b&gt; çš„æ’槽 &lt;i&gt;%2&lt;/i&gt; 分离软驱 (&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;) 失败。</translation>
</message>
<message numerus="yes">
<source>&lt;p&gt;The virtual machine(s) &lt;b&gt;%1&lt;/b&gt; are currently in a saved state.&lt;/p&gt;&lt;p&gt;If you continue the runtime state of the exported machine(s) will be discarded. Note that the existing machine(s) are not changed.&lt;/p&gt;</source>
- <translation type="unfinished">
- <numerusform></numerusform>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>
+ <numerusform>&lt;p&gt;虚拟机 &lt;b&gt;%1&lt;/b&gt; 当å‰å¤„于ä¿å­˜çŠ¶æ€ã€‚&lt;/p&gt;&lt;p&gt;如果您继续,将放弃已导出虚拟机的è¿è¡Œæ—¶çŠ¶æ€ã€‚注æ„,现有的虚拟机ä¸ä¼šæ›´æ”¹ã€‚&lt;/p&gt;</numerusform>
</translation>
</message>
<message>
<source>Failed to update Guest Additions. The Guest Additions installation image will be mounted to provide a manual installation.</source>
- <translation type="unfinished"></translation>
+ <translation>更新增强功能包失败。将装载增强功能包安装映åƒæ‰‹åŠ¨å®‰è£…。</translation>
</message>
<message>
<source>Failed to install the Extension Pack &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>安装扩展包 &lt;b&gt;%1&lt;/b&gt; 失败。</translation>
</message>
<message>
<source>Failed to uninstall the Extension Pack &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>å¸è½½æ‰©å±•åŒ… &lt;b&gt;%1&lt;/b&gt; 失败。</translation>
</message>
<message>
<source>&amp;Remove</source>
- <translation type="unfinished">删除(&amp;R)</translation>
+ <translation>删除(&amp;R)</translation>
</message>
<message>
<source>The current port forwarding rules are not valid. None of the host or guest port values may be set to zero.</source>
- <translation type="unfinished"></translation>
+ <translation>当å‰ç«¯å£è½¬å‘规则无效。主机或虚拟机端å£ä¸èƒ½è®¾ç½®ä¸ºé›¶ã€‚</translation>
</message>
<message>
<source>&lt;p&gt;There are unsaved changes in the port forwarding configuration.&lt;/p&gt;&lt;p&gt;If you proceed your changes will be discarded.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;端å£è½¬å‘é…置中有未ä¿å­˜çš„更改。&lt;/p&gt;&lt;p&gt;如果您继续,您的更改将被放弃。&lt;/p&gt;</translation>
</message>
<message>
<source>Failed to attach the hard disk (&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;) to the slot &lt;i&gt;%2&lt;/i&gt; of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>从虚拟机 &lt;b&gt;%3&lt;/b&gt; çš„æ’槽 &lt;i&gt;%2&lt;/i&gt; 附加硬盘 (&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;) 失败。</translation>
</message>
<message>
<source>Failed to attach the CD/DVD device (&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;) to the slot &lt;i&gt;%2&lt;/i&gt; of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>从虚拟机 &lt;b&gt;%3&lt;/b&gt; çš„æ’槽 &lt;i&gt;%2&lt;/i&gt; 附加光驱 (&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;) 失败。</translation>
</message>
<message>
<source>Failed to attach the floppy device (&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;) to the slot &lt;i&gt;%2&lt;/i&gt; of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>从虚拟机 &lt;b&gt;%3&lt;/b&gt; çš„æ’槽 &lt;i&gt;%2&lt;/i&gt; 附加软驱 (&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;) 失败。</translation>
</message>
<message>
<source>&lt;p&gt;Note that the storage unit of this medium will not be deleted and that it will be possible to use it later again.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;注æ„,将ä¸ä¼šåˆ é™¤è¯¥ä»‹è´¨çš„存储文件,它å¯ä»¥åœ¨ä»¥åŽé‡æ–°ä½¿ç”¨ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;The VirtualBox Guest Additions do not appear to be available on this virtual machine, and shared folders cannot be used without them. To use shared folders inside the virtual machine, please install the Guest Additions if they are not installed, or re-install them if they are not working correctly, by selecting &lt;b&gt;Install Guest Additions&lt;/b&gt; from the &lt;b&gt;Devices&lt;/b&gt; menu. If they are installed but the machine is not yet fully started then shared folders will be available once it is.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;VirtualBox功能增强包似乎在该虚拟机中ä¸å¯ç”¨ï¼Œæ²¡æœ‰å®ƒä»¬ï¼Œå…±äº«æ–‡ä»¶å¤¹å°†æ— æ³•ä½¿ç”¨ã€‚è¦åœ¨è™šæ‹Ÿæœºå†…部使用共享文件夹,未安装功能增强包的è¯è¯·å®‰è£…,如果已安装而无法正常工作,请é‡æ–°å®‰è£…,è¦å®‰è£…请从&lt;b&gt;设备&lt;/b&gt;èœå•ä¸­é€‰æ‹©&lt;b&gt;安装功能增强&lt;/b&gt;。如果已安装而虚拟机尚未完全å¯åŠ¨ï¼Œé‚£ä¹ˆä¸€æ—¦å¯åŠ¨å®Œæ¯•ï¼Œå…±äº«æ–‡ä»¶å¤¹å°†å˜ä¸ºå¯ç”¨ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;The virtual machine window will be now switched to &lt;b&gt;fullscreen&lt;/b&gt; mode. You can go back to windowed mode at any time by pressing &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Note that the &lt;i&gt;Host&lt;/i&gt; key is currently defined as &lt;b&gt;%2&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Note that the main menu bar is hidden in fullscreen mode. You can access it by pressing &lt;b&gt;Host+Home&lt;/b&gt;.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;虚拟机窗å£çŽ°åœ¨å°†åˆ‡æ¢ä¸º&lt;b&gt;å…¨å±&lt;/b&gt;模å¼ã€‚您å¯ä»¥æŒ‰ &lt;b&gt;%1&lt;/b&gt; éšæ—¶è¿”回窗å£æ¨¡å¼ã€‚&lt;/p&gt;&lt;p&gt;注æ„,&lt;b&gt;主机(Host)&lt;/b&gt;键当å‰å®šä¹‰ä¸º &lt;b&gt;%2&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;注æ„,全å±æ¨¡å¼ä¸‹ä¸»èœå•æ æ˜¯éšè—的。您å¯ä»¥æŒ‰ &lt;b&gt;主机键+Home&lt;/b&gt; æ¥è®¿é—®ä¸»èœå•æ ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;The virtual machine window will be now switched to &lt;b&gt;Seamless&lt;/b&gt; mode. You can go back to windowed mode at any time by pressing &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Note that the &lt;i&gt;Host&lt;/i&gt; key is currently defined as &lt;b&gt;%2&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Note that the main menu bar is hidden in seamless mode. You can access it by pressing &lt;b&gt;Host+Home&lt;/b&gt;.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;虚拟机窗å£çŽ°åœ¨å°†åˆ‡æ¢ä¸º&lt;b&gt;æ— ç¼&lt;/b&gt;模å¼ã€‚您å¯ä»¥æŒ‰ &lt;b&gt;%1&lt;/b&gt; éšæ—¶è¿”回窗å£æ¨¡å¼ã€‚&lt;/p&gt;&lt;p&gt;注æ„,&lt;b&gt;主机(Host)&lt;/b&gt;键当å‰å®šä¹‰ä¸º &lt;b&gt;%2&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;注æ„,无ç¼æ¨¡å¼ä¸‹ä¸»èœå•æ æ˜¯éšè—的。您å¯ä»¥æŒ‰ &lt;b&gt;主机键+Home&lt;/b&gt; æ¥è®¿é—®ä¸»èœå•æ ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;The virtual machine window will be now switched to &lt;b&gt;Scale&lt;/b&gt; mode. You can go back to windowed mode at any time by pressing &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Note that the &lt;i&gt;Host&lt;/i&gt; key is currently defined as &lt;b&gt;%2&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Note that the main menu bar is hidden in scale mode. You can access it by pressing &lt;b&gt;Host+Home&lt;/b&gt;.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;虚拟机窗å£çŽ°åœ¨å°†åˆ‡æ¢ä¸º&lt;b&gt;缩放&lt;/b&gt;模å¼ã€‚您å¯ä»¥æŒ‰ &lt;b&gt;%1&lt;/b&gt; éšæ—¶è¿”回窗å£æ¨¡å¼ã€‚&lt;/p&gt;&lt;p&gt;注æ„,&lt;b&gt;主机(Host)&lt;/b&gt;键当å‰å®šä¹‰ä¸º &lt;b&gt;%2&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;注æ„,缩放模å¼ä¸‹ä¸»èœå•æ æ˜¯éšè—的。您å¯ä»¥æŒ‰ &lt;b&gt;主机键+Home&lt;/b&gt; æ¥è®¿é—®ä¸»èœå•æ ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>Switch</source>
<comment>scale</comment>
- <translation type="unfinished">切æ¢</translation>
+ <translation>切æ¢</translation>
</message>
<message>
<source>Failed to open the Extension Pack &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>打开扩展包 &lt;b&gt;%1&lt;/b&gt; 失败。</translation>
</message>
<message>
<source>&lt;p&gt;You are about to install a VirtualBox extension pack. Extension packs complement the functionality of VirtualBox and can contain system level software that could be potentially harmful to your system. Please review the description below and only proceed if you have obtained the extension pack from a trusted source.&lt;/p&gt;&lt;p&gt;&lt;table cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Name:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Version:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Description:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%3&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您将è¦å®‰è£… VirtualBox 扩展包。扩展包补充 VirtualBox 的功能,并且å¯èƒ½åŒ…å«å±å®³åˆ°æ‚¨ç³»ç»Ÿçš„系统级软件。请查看下é¢çš„说明,åªæœ‰åœ¨æ‚¨èŽ·å¾—æ¥è‡ªå—ä¿¡ä»»æºçš„扩展包时æ‰èƒ½è¿›è¡Œã€‚&lt;/p&gt;&lt;p&gt;&lt;table cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;å称:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;版本:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;æè¿°:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%3&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</translation>
</message>
<message>
<source>&amp;Install</source>
- <translation type="unfinished"></translation>
+ <translation>安装(&amp;I)</translation>
</message>
<message>
<source>Extension packs complement the functionality of VirtualBox and can contain system level software that could be potentially harmful to your system. Please review the description below and only proceed if you have obtained the extension pack from a trusted source.</source>
- <translation type="unfinished"></translation>
+ <translation>扩展包补充 VirtualBox 的功能,并且å¯èƒ½åŒ…å«å±å®³åˆ°æ‚¨ç³»ç»Ÿçš„系统级软件。请查看下é¢çš„说明,åªæœ‰åœ¨æ‚¨èŽ·å¾—æ¥è‡ªå—ä¿¡ä»»æºçš„扩展包时æ‰èƒ½è¿›è¡Œã€‚</translation>
</message>
<message>
<source>&lt;p&gt;An older version of the extension pack is already installed, would you like to upgrade? &lt;p&gt;%1&lt;/p&gt;&lt;p&gt;&lt;table cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Name:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;New Version:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Current Version:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Description:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%5&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;å·²ç»å®‰è£…了旧版本的扩展包,您是å¦è¦å‡çº§ï¼Ÿ&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;&lt;table cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;å称:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;新版本:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;当å‰ç‰ˆæœ¬:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;æè¿°:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%5&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</translation>
</message>
<message>
<source>&amp;Upgrade</source>
- <translation type="unfinished"></translation>
+ <translation>å‡çº§(&amp;U)</translation>
</message>
<message>
<source>&lt;p&gt;An newer version of the extension pack is already installed, would you like to downgrade? &lt;p&gt;%1&lt;/p&gt;&lt;p&gt;&lt;table cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Name:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;New Version:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Current Version:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Description:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%5&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;å·²ç»å®‰è£…了新版本的扩展包,您是å¦è¦é™çº§ï¼Ÿ&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;&lt;table cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;å称:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;新版本:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;当å‰ç‰ˆæœ¬:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;æè¿°:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%5&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</translation>
</message>
<message>
<source>&amp;Downgrade</source>
- <translation type="unfinished"></translation>
+ <translation>é™çº§(&amp;D)</translation>
</message>
<message>
<source>&lt;p&gt;The extension pack is already installed with the same version, would you like reinstall it? &lt;p&gt;%1&lt;/p&gt;&lt;p&gt;&lt;table cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Name:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Version:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Description:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%4&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;扩展包已安装了相åŒçš„版本,您是å¦è¦é‡æ–°å®‰è£…?&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;&lt;table cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;å称:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;版本:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;æè¿°:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%4&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</translation>
</message>
<message>
<source>&amp;Reinstall</source>
- <translation type="unfinished"></translation>
+ <translation>é‡æ–°å®‰è£…(&amp;R)</translation>
</message>
<message>
<source>&lt;p&gt;You are about to remove the VirtualBox extension pack &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Are you sure you want to proceed?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您将è¦ç§»é™¤ VirtualBox 扩展包 &lt;b&gt;%1&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;您是å¦çœŸè¦è¿›è¡Œï¼Ÿ&lt;/p&gt;</translation>
</message>
<message>
<source>The extension pack &lt;br&gt;&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;nobr&gt;&lt;br&gt; was installed successfully.</source>
- <translation type="unfinished"></translation>
+ <translation>扩展包 &lt;br&gt;&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;nobr&gt;&lt;br&gt; å·²æˆåŠŸå®‰è£…。</translation>
</message>
<message>
<source>&lt;p&gt;Cannot create the machine folder &lt;b&gt;%1&lt;/b&gt; in the parent folder &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;Please check that the parent really exists and that you have permissions to create the machine folder.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>&lt;p&gt;无法在父文件夹 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; 中创建虚拟机文件夹 &lt;b&gt;%1&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;请检查父文件夹是å¦çœŸçš„存在,而您是å¦æœ‰åˆ›å»ºè™šæ‹Ÿæœºæ–‡ä»¶å¤¹çš„æƒé™ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>Failed to register the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>注册虚拟机 &lt;b&gt;%1&lt;/b&gt; 失败。</translation>
</message>
<message>
<source>&lt;p&gt;The machine settings were changed while you were editing them. You currently have unsaved setting changes.&lt;/p&gt;&lt;p&gt;Would you like to reload the changed settings or to keep your own changes?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您编辑虚拟机设置时,设置被更改了。您当å‰æœ‰æœªä¿å­˜çš„设置更改。&lt;/p&gt;&lt;p&gt;您是è¦é‡æ–°è½½å…¥æ›´æ”¹çš„设置,还是ä¿ç•™æ‚¨è‡ªå·±çš„更改?&lt;/p&gt;=-</translation>
</message>
<message>
<source>Reload settings</source>
- <translation type="unfinished"></translation>
+ <translation>é‡æ–°è½½å…¥è®¾ç½®</translation>
</message>
<message>
<source>Keep changes</source>
- <translation type="unfinished"></translation>
+ <translation>ä¿ç•™æ›´æ”¹</translation>
</message>
<message>
<source>The virtual machine that you are changing has been started. Only certain settings can be changed while a machine is running. All other changes will be lost if you close this window now.</source>
- <translation type="unfinished"></translation>
+ <translation>您正在更改的虚拟机已ç»å¯åŠ¨ã€‚虚拟机è¿è¡Œæ—¶ï¼Œåªèƒ½æ›´æ”¹æŸäº›è®¾ç½®ã€‚如果您现在关闭此窗å£ï¼Œå…¶ä»–的所有更改将都丢失。</translation>
</message>
<message>
<source>Failed to clone the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>未能å¤åˆ¶è™šæ‹Ÿæœº&lt;b&gt;%1&lt;/b&gt;。</translation>
</message>
<message>
<source>&lt;p&gt;You are about to restore snapshot &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;You can create a snapshot of the current state of the virtual machine first by checking the box below; if you do not do this the current state will be permanently lost. Do you wish to proceed?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您将è¦æ¢å¤å¤‡ä»½ &lt;b&gt;%1&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;您å¯ä»¥é€‰ä¸­ä¸‹é¢çš„å¤é€‰æ¡†ï¼Œæ¥é¦–先创建虚拟机当å‰çŠ¶æ€çš„备份;如果您ä¸è¿™ä¹ˆåšï¼Œå½“å‰çŠ¶æ€å°†æ°¸ä¹…丢失。您是å¦è¦ç»§ç»­è¿›è¡Œï¼Ÿ&lt;/p&gt;</translation>
</message>
<message>
<source>Create a snapshot of the current machine state</source>
- <translation type="unfinished"></translation>
+ <translation>创建当å‰è™šæ‹ŸæœºçŠ¶æ€çš„备份</translation>
</message>
<message>
<source>&lt;p&gt;Are you sure you want to restore snapshot &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您是å¦çœŸè¦æ¢å¤å¤‡ä»½ &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Error changing medium type from &lt;b&gt;%1&lt;/b&gt; to &lt;b&gt;%2&lt;/b&gt;.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;将介质类型从 &lt;b&gt;%1&lt;/b&gt; 更改为 &lt;b&gt;%2&lt;/b&gt;出错。&lt;/p&gt;</translation>
</message>
<message>
<source>Sorry, some generic error happens.</source>
- <translation type="unfinished"></translation>
+ <translation>抱歉,出现一个通用错误。</translation>
</message>
<message>
<source>&lt;p&gt;USB 2.0 is currently enabled for this virtual machine. However, this requires the &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; to be installed.&lt;/p&gt;&lt;p&gt;Please install the Extension Pack from the VirtualBox download site. After this you will be able to re-enable USB 2.0. It will be disabled in the meantime unless you cancel the current settings changes.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;本虚拟机当å‰å·²å¯ç”¨ USB 2.0。然而,这需è¦å®‰è£… &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;请从 VirtualBox 下载站中安装“增强功能包â€ã€‚安装之åŽæ‚¨å°†å¯ä»¥é‡æ–°å¯ç”¨ USB 2.0。在此期间,除éžæ‚¨å–消当å‰è®¾ç½®æ›´æ”¹ï¼Œå¦åˆ™å°†ç¦ç”¨æ­¤åŠŸèƒ½ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>Could not load the Host USB Proxy Service (VERR_FILE_NOT_FOUND). The service might not be installed on the host computer</source>
- <translation type="unfinished"></translation>
+ <translation>无法载入主机 USB 代ç†æœåŠ¡ (VERR_FILE_NOT_FOUND)。主机电脑中å¯èƒ½æ²¡æœ‰å®‰è£…æœåŠ¡</translation>
</message>
<message>
<source>VirtualBox is not currently allowed to access USB devices. You can change this by adding your user to the &apos;vboxusers&apos; group. Please see the user manual for a more detailed explanation</source>
- <translation type="unfinished"></translation>
+ <translation>VirtualBox 当å‰ä¸å…许访问 USB 设备。您å¯ä»¥å°†æ‚¨çš„用户添加到“vboxusersâ€ç»„æ¥æ›´æ”¹ä»¥ä¸Šçš„问题。请查阅用户手册以获得更多详细的说明</translation>
</message>
<message>
<source>VirtualBox is not currently allowed to access USB devices. You can change this by allowing your user to access the &apos;usbfs&apos; folder and files. Please see the user manual for a more detailed explanation</source>
- <translation type="unfinished"></translation>
+ <translation>VirtualBox 当å‰ä¸å…许访问 USB 设备。您å¯ä»¥å…许您的用户访问“usbfsâ€æ–‡ä»¶å¤¹å’Œæ–‡ä»¶æ¥æ›´æ”¹ä»¥ä¸Šçš„问题。请查阅用户手册以获得更多详细的说明</translation>
</message>
<message>
<source>The USB Proxy Service has not yet been ported to this host</source>
- <translation type="unfinished"></translation>
+ <translation>USB 代ç†æœåŠ¡å°šæœªè¢«ç§»æ¤åˆ°æ­¤ä¸»æœº</translation>
</message>
<message>
<source>Could not load the Host USB Proxy service</source>
- <translation type="unfinished"></translation>
+ <translation>无法载入主机 USB 代ç†æœåŠ¡</translation>
</message>
<message>
<source>Can&apos;t find snapshot named &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>无法找到å为 &lt;b&gt;%1&lt;/b&gt; 的备份。</translation>
</message>
<message>
<source>&lt;p&gt;Failed to save the downloaded file as &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;无法将下载的文件ä¿å­˜ä¸º &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;无法将下载的文件ä¿å­˜ä¸º &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;You have an old version (%1) of the &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; installed.&lt;/p&gt;&lt;p&gt;Do you wish to download latest one from the Internet?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您已安装的 &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; 是旧版本 (%1)。&lt;/p&gt;&lt;p&gt;您是å¦æƒ³è¦ä»Žç½‘上下载最新版?&lt;/p&gt;</translation>
</message>
<message>
<source>Download</source>
<comment>extension pack</comment>
- <translation type="unfinished">下载</translation>
+ <translation>下载</translation>
</message>
<message>
<source>&lt;p&gt;Are you sure you want to download the &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; from &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; (size %3 bytes)?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您是å¦çœŸè¦ä»Ž &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; 下载 &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; (大å°ä¸º %3 字节)?&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;The &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; has been successfully downloaded from &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; and saved locally as &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;Do you wish to install this extension pack?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;å·²ç»æˆåŠŸä»Ž &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; 下载 &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt;,并在本地å¦å­˜ä¸º &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;&lt;/nobr&gt;。&lt;/p&gt;&lt;p&gt;您是å¦æƒ³è¦å®‰è£…该扩展包?&lt;/p&gt;</translation>
</message>
<message>
<source>Install</source>
<comment>extension pack</comment>
- <translation type="unfinished"></translation>
+ <translation>安装</translation>
</message>
<message>
<source>&lt;p&gt;The &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; has been successfully downloaded from &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; but can&apos;t be saved locally as &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;Please choose another location for that file.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;å·²ç»æˆåŠŸä»Ž &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; 下载 &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt;,但无法在本地å¦å­˜ä¸º &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;&lt;/nobr&gt;。&lt;/p&gt;&lt;p&gt;请选择å¦ä¸€ä¸ªä½ç½®ä¿å­˜æ–‡ä»¶ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Failed to download the &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; from &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&lt;p&gt;You have version %1 of the &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; installed.&lt;/p&gt;&lt;p&gt;You should download and install version %3 of this extension pack from Oracle!&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Ok</source>
- <comment>extension pack</comment>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>UIMiniProcessWidgetAdditions</name>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>Cancel the VirtualBox Guest Additions CD image download</source>
- <translation type="obsolete">å–消下载增强功能包</translation>
+ <translation>&lt;p&gt;从 &lt;nobr&gt;&lt;a href=&quot;%2&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; 下载 &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; 失败。&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
</message>
</context>
<context>
<name>UIMiniProcessWidgetUserManual</name>
<message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
<source>Cancel the VirtualBox User Manual download</source>
- <translation type="unfinished"></translation>
+ <translation>å–消VirtualBox用户手册下载</translation>
</message>
<message>
<source>Downloading the VirtualBox User Manual</source>
- <translation type="unfinished"></translation>
+ <translation>正在下载VirtualBox用户手册</translation>
</message>
<message>
<source>Downloading the VirtualBox User Manual &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;...&lt;/nobr&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>正在下载VirtualBox用户手册 &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;...&lt;/nobr&gt;</translation>
</message>
</context>
<context>
<name>UIMiniProgressWidgetAdditions</name>
<message>
<source>Cancel the VirtualBox Guest Additions CD image download</source>
- <translation type="unfinished">å–消下载增强功能包</translation>
+ <translation>å–消下载增强功能包</translation>
</message>
<message>
<source>Downloading the VirtualBox Guest Additions CD image from &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;...&lt;/nobr&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>正在从 &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt; 下载增强功能包...&lt;/nobr&gt;</translation>
</message>
</context>
<context>
<name>UIMiniProgressWidgetExtension</name>
<message>
<source>Cancel the &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; download</source>
- <translation type="unfinished"></translation>
+ <translation>å–消 &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; 下载</translation>
</message>
<message>
<source>Downloading the &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; from &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;...&lt;/nobr&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>正在从 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; 下载 &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;...&lt;/nobr&gt;</translation>
</message>
</context>
<context>
<name>UIMultiScreenLayout</name>
<message>
<source>Virtual Screen %1</source>
- <translation type="unfinished"></translation>
+ <translation>è™šæ‹Ÿæ˜¾ç¤ºå± %1</translation>
</message>
<message>
<source>Use Host Screen %1</source>
- <translation type="unfinished"></translation>
+ <translation>ä½¿ç”¨ä¸»æœºæ˜¾ç¤ºå± %1</translation>
</message>
</context>
<context>
@@ -6229,492 +4478,209 @@ p, li { white-space: pre-wrap; }
<translation>创建新的虚拟硬盘</translation>
</message>
<message>
- <source>&lt;p&gt;This wizard will help you to create a new virtual hard disk image for your virtual machine.&lt;/p&gt;
-&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go to the next page of the wizard
-and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;本å‘导将帮助你为虚拟电脑创建一个新的虚拟硬盘.&lt;/p&gt;
-&lt;p&gt;å•å‡»&lt;b&gt;下一步&lt;/b&gt;按钮进入本å‘导的下一个页é¢
-å•å‡»&lt;b&gt;返回&lt;/b&gt;按钮返回上一个页é¢.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Welcome to the Create New Virtual Disk Wizard!</source>
- <translation type="obsolete">欢迎使用新建虚拟硬盘å‘导!</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select the type of virtual hard disk image you want to create.&lt;/p&gt;
-&lt;p&gt;A &lt;b&gt;dynamically expanding image&lt;/b&gt; initially occupies a very small amount
-of space on your physical hard disk. It will grow dynamically (up to
-the size specified) as the Guest OS claims disk space.&lt;/p&gt;
-&lt;p&gt;A &lt;b&gt;fixed-size image&lt;/b&gt; does not grow. It is stored in a file of approximately
-the same size as the size of the virtual hard disk.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选择你è¦å»ºç«‹çš„虚拟硬盘类型.&lt;/p&gt;
-&lt;p&gt;一个&lt;b&gt;动æ€æ‰©å±•æ˜ åƒ&lt;/b&gt;最åˆåªéœ€å ç”¨éžå¸¸å°çš„物ç†ç¡¬ç›˜ç©ºé—´. 然åŽä¸æ–­å¢žåŠ (最高
-到当å‰æŒ‡å®šçš„大å°),具体大å°æ ¹æ®è™šæ‹Ÿç”µè„‘的实际需求动æ€åˆ†é….&lt;/p&gt;
-&lt;p&gt;一个&lt;b&gt;固定大å°æ˜ åƒ&lt;/b&gt; 一旦建立就需分é…指定大å°çš„物ç†ç£ç›˜ç©ºé—´ç»™è¯¥è™šæ‹Ÿç¡¬ç›˜ä½¿ç”¨ï¼Œæ€§èƒ½ä¸Šæœ‰ä¸€å®šä¼˜åŠ¿.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Image Type</source>
- <translation type="obsolete">硬盘类型</translation>
- </message>
- <message>
- <source>&amp;Dynamically expanding image</source>
- <translation type="obsolete">动æ€æ‰©å±•(&amp;D)</translation>
- </message>
- <message>
- <source>Alt+D</source>
- <translation type="obsolete">Alt+D</translation>
- </message>
- <message>
- <source>&amp;Fixed-size image</source>
- <translation type="obsolete">固定大å°(&amp;F)</translation>
- </message>
- <message>
- <source>Alt+F</source>
- <translation type="obsolete">Alt+F</translation>
- </message>
- <message>
- <source>Virtual Disk Image Type</source>
- <translation type="obsolete">虚拟硬盘类型</translation>
- </message>
- <message>
- <source>&lt;p&gt;Press the &lt;b&gt;Select&lt;/b&gt; button to select the location and name of the file
-to store the virtual hard disk image or type a file name in the entry field.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;å•å‡»&lt;b&gt;选择&lt;/b&gt;按钮指定虚拟硬盘所在映åƒæ–‡ä»¶ååŠå…¶å­˜å‚¨ä½ç½®æˆ–者直接在输入框中输入一个映åƒæ–‡ä»¶å.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;Image File Name</source>
- <translation type="obsolete">虚拟硬盘文件å(&amp;I)</translation>
- </message>
- <message>
- <source>Select</source>
- <translation type="obsolete">选择</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select the size of the virtual hard disk image in megabytes. This size will be reported to the Guest OS
-as the size of the virtual hard disk.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;设定所需创建的虚拟硬盘的大å°. &lt;/p&gt;</translation>
- </message>
- <message>
- <source>Image &amp;Size</source>
- <translation type="obsolete">虚拟硬盘大å°(&amp;S)</translation>
- </message>
- <message>
- <source>Virtual Disk Location and Size</source>
- <translation type="obsolete">虚拟硬盘所在ä½ç½®å’Œç©ºé—´å¤§å°</translation>
- </message>
- <message>
- <source>You are going to create a new virtual hard disk image with the following parameters:</source>
- <translation type="obsolete">现在将根æ®ä¸‹é¢æ‰€åˆ—å‚数创建一个新的虚拟硬盘:</translation>
- </message>
- <message>
- <source>If the above settings are correct, press the &lt;b&gt;Finish&lt;/b&gt; button.
- Once you press it, a new hard disk image will be created.
- </source>
- <translation type="obsolete">如果上é¢çš„设置正确, å•å‡»&lt;b&gt;完æˆ&lt;/b&gt; 按钮, 一个新的虚拟硬盘将会被建立.
- </translation>
- </message>
- <message>
- <source>Summary</source>
- <translation type="unfinished">摘è¦</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;%1 Bytes&lt;/nobr&gt;</source>
- <translation type="obsolete">&lt;nobr&gt;%1 字节&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;table&gt;&lt;tr&gt;&lt;td&gt;Type:&lt;/td&gt;&lt;td&gt;%1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Location:&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Size:&lt;/td&gt;&lt;td&gt;%3&amp;nbsp;(%4&amp;nbsp;Bytes)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
- <translation type="obsolete">&lt;table&gt;&lt;tr&gt;&lt;td&gt;类型:&lt;/td&gt;&lt;td&gt;%1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ä½ç½®:&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;大å°:&lt;/td&gt;&lt;td&gt;%3&amp;nbsp;(%4&amp;nbsp;Bytes)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</translation>
- </message>
- <message>
- <source>Hard disk images (*.vdi)</source>
- <translation type="obsolete">虚拟硬盘文件 (*.vdi)</translation>
- </message>
- <message>
- <source>Select a file for the new hard disk image file</source>
- <translation type="unfinished">选择一个文件作为新的虚拟硬盘</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select the type of virtual hard disk image you want to create.&lt;/p&gt;
-&lt;p&gt;A &lt;b&gt;dynamically expanding image&lt;/b&gt; initially occupies a very small amount
-of space on your physical hard disk. It will grow dynamically (up to
-the size specified) as the Guest OS claims disk space.&lt;/p&gt;
-&lt;p&gt;A &lt;b&gt;fixed-size image&lt;/b&gt; does not grow. It is stored in a file of approximately
-the same size as the size of the virtual hard disk. The creation of a fixed-size image may take a long
-time depending on the image size and the write performance of your harddisk.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选择你è¦å»ºç«‹çš„虚拟硬盘类型.&lt;/p&gt;
-&lt;p&gt;一个 &lt;b&gt;动æ€æ‰©å±•æ˜ åƒ&lt;/b&gt; 一开始åªå ç”¨éžå¸¸å°çš„存储空间. åªæœ‰å½“你开始存储数æ®æ—¶æ‰çœŸæ­£ä»Žç¡¬ç›˜ä¸Šå°†ç©ºé—´åˆ’èµ° (这里指定的大å°æ˜¯æŒ‡å…¶å¯ç”¨çš„最大空间) .&lt;/p&gt;
-&lt;p&gt;一个 &lt;b&gt;固定大å°æ˜ åƒ&lt;/b&gt; 一建立就需从硬盘上将指定大å°çš„空间划走. 建立固定大å°æ˜ åƒçš„时间å¯èƒ½ä¼šæ¯”较长,这å–决于它的大å°å’Œç¡¬ç›˜çš„性能.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;This wizard will help you to create a new virtual hard disk image for your virtual machine.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go to the next page of the wizard and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;本å‘导将帮助你为虚拟电脑创建一个新的虚拟硬盘。&lt;/p&gt;&lt;p&gt;å•å‡»&lt;b&gt;下一步&lt;/b&gt;按钮进入本å‘导的下一个页é¢ï¼Œå•å‡»&lt;b&gt;返回&lt;/b&gt;按钮返回上一个页é¢.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt; &amp;Back</source>
- <translation type="obsolete">&lt; 返回(&amp;B)</translation>
- </message>
- <message>
- <source>&amp;Next &gt;</source>
- <translation type="obsolete">下一步(&amp;N) &gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select the type of virtual hard disk image you want to create.&lt;/p&gt;&lt;p&gt;A &lt;b&gt;dynamically expanding image&lt;/b&gt; initially occupies a very small amount of space on your physical hard disk. It will grow dynamically (up to the size specified) as the Guest OS claims disk space.&lt;/p&gt;&lt;p&gt;A &lt;b&gt;fixed-size image&lt;/b&gt; does not grow. It is stored in a file of approximately the same size as the size of the virtual hard disk. The creation of a fixed-size image may take a long time depending on the image size and the write performance of your harddisk.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选择你è¦æ–°å»ºçš„虚拟硬盘类型.&lt;/p&gt;&lt;p&gt;其中 &lt;b&gt;动æ€æ‰©å±•&lt;/b&gt; 类型最åˆåªéœ€å ç”¨éžå¸¸å°çš„物ç†ç¡¬ç›˜ç©ºé—´ã€‚然åŽä¸æ–­å¢žåŠ (最大到当å‰æŒ‡å®šçš„大å°),具体大å°æ ¹æ®è™šæ‹Ÿç”µè„‘的实际需求动æ€åˆ†é…。&lt;/p&gt;&lt;p&gt;其中 &lt;b&gt;固定大å°&lt;/b&gt; 类型一旦建立就需分é…指定大å°çš„物ç†ç£ç›˜ç©ºé—´ç»™è¯¥è™šæ‹Ÿç¡¬ç›˜ä½¿ç”¨ï¼Œæ€§èƒ½ä¸Šæœ‰ä¸€å®šä¼˜åŠ¿ã€‚建立这ç§ç±»åž‹çš„虚拟硬盘需花费较多的时间.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Press the &lt;b&gt;Select&lt;/b&gt; button to select the location and name of the file to store the virtual hard disk image or type a file name in the entry field.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;å•å‡»&lt;b&gt;选择&lt;/b&gt;按钮用æ¥æŒ‡å®šä¿å­˜è™šæ‹Ÿç¡¬ç›˜çš„文件ååŠå…¶ä½ç½®ï¼Œæˆ–者也å¯ç›´æŽ¥åœ¨è¾“入框中输入.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select the size of the virtual hard disk image in megabytes. This size will be reported to the Guest OS as the size of the virtual hard disk.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;以兆(M)为å•ä½æŒ‡å®šè¦æ–°å»ºçš„虚拟硬盘大å°. &lt;/p&gt;</translation>
- </message>
- <message>
- <source>If the above settings are correct, press the &lt;b&gt;Finish&lt;/b&gt; button. Once you press it, a new hard disk image will be created.</source>
- <translation type="obsolete">如果上é¢çš„设置正确,å•å‡»&lt;b&gt;完æˆ&lt;/b&gt; 按钮,一个新的虚拟硬盘将会被建立.</translation>
- </message>
- <message>
- <source>&amp;Finish</source>
- <translation type="obsolete">完æˆ(&amp;F)</translation>
- </message>
- <message>
- <source>Type</source>
- <comment>summary</comment>
- <translation type="obsolete">类型</translation>
- </message>
- <message>
- <source>Location</source>
- <comment>summary</comment>
- <translation type="unfinished">ä½ç½®</translation>
- </message>
- <message>
- <source>Size</source>
- <comment>summary</comment>
- <translation type="unfinished">大å°</translation>
- </message>
- <message>
- <source>Bytes</source>
- <comment>summary</comment>
- <translation type="obsolete">字节</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>&lt;p&gt;This wizard will help you to create a new virtual hard disk for your virtual machine.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go to the next page of the wizard and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;本å‘导将帮助你为虚拟电脑创建一个新的虚拟硬盘。&lt;/p&gt;&lt;p&gt;å•å‡»&lt;b&gt;下一步&lt;/b&gt;按钮进入本å‘导的下一个页é¢ï¼Œå•å‡»&lt;b&gt;返回&lt;/b&gt;按钮返回上一个页é¢.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Hard Disk Storage Type</source>
- <translation type="obsolete">虚拟硬盘类型</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select the type of virtual hard disk you want to create.&lt;/p&gt;&lt;p&gt;A &lt;b&gt;dynamically expanding storage&lt;/b&gt; initially occupies a very small amount of space on your physical hard disk. It will grow dynamically (up to the size specified) as the Guest OS claims disk space.&lt;/p&gt;&lt;p&gt;A &lt;b&gt;fixed-size storage&lt;/b&gt; does not grow. It is stored in a file of approximately the same size as the size of the virtual hard disk. The creation of a fixed-size storage may take a long time depending on the storage size and the write performance of your harddisk.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选择你è¦æ–°å»ºçš„虚拟硬盘类型.&lt;/p&gt;&lt;p&gt;其中 &lt;b&gt;动æ€æ‰©å±•&lt;/b&gt; 类型最åˆåªéœ€å ç”¨éžå¸¸å°çš„物ç†ç¡¬ç›˜ç©ºé—´ã€‚然åŽä¸æ–­å¢žåŠ (最大到当å‰æŒ‡å®šçš„大å°),具体大å°æ ¹æ®è™šæ‹Ÿç”µè„‘的实际需求动æ€åˆ†é…。&lt;/p&gt;&lt;p&gt;其中 &lt;b&gt;固定大å°&lt;/b&gt; 类型一旦建立就需分é…指定大å°çš„物ç†ç£ç›˜ç©ºé—´ç»™è¯¥è™šæ‹Ÿç¡¬ç›˜ä½¿ç”¨ï¼Œæ€§èƒ½ä¸Šæœ‰ä¸€å®šä¼˜åŠ¿ã€‚建立这ç§ç±»åž‹çš„虚拟硬盘需花费较多的时间.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Storage Type</source>
- <translation type="obsolete">虚拟硬盘类型</translation>
- </message>
- <message>
- <source>&amp;Dynamically expanding storage</source>
- <translation type="obsolete">动æ€æ‰©å±•(&amp;D)</translation>
- </message>
- <message>
- <source>&amp;Fixed-size storage</source>
- <translation type="obsolete">固定大å°(&amp;F)</translation>
- </message>
- <message>
- <source>&lt;p&gt;Press the &lt;b&gt;Select&lt;/b&gt; button to select the location of a file to store the hard disk data or type a file name in the entry field.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;å•å‡»&lt;b&gt;选择&lt;/b&gt;按钮用æ¥æŒ‡å®šä¿å­˜è™šæ‹Ÿç¡¬ç›˜çš„文件ååŠå…¶ä½ç½®ï¼Œæˆ–者也å¯ç›´æŽ¥åœ¨è¾“入框中输入.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;Location</source>
- <translation type="obsolete">ä½ç½®(&amp;L)</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select the size of the virtual hard disk in megabytes. This size will be reported to the Guest OS as the maximum size of this hard disk.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;以兆(M)为å•ä½æŒ‡å®šè¦æ–°å»ºçš„虚拟硬盘大å°. &lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;Size</source>
- <translation type="obsolete">大å°(&amp;S)</translation>
- </message>
- <message>
- <source>You are going to create a new virtual hard disk with the following parameters:</source>
- <translation type="obsolete">现在将根æ®ä¸‹é¢æ‰€åˆ—å‚数创建一个新的虚拟硬盘:</translation>
- </message>
- <message>
- <source>If the above settings are correct, press the &lt;b&gt;Finish&lt;/b&gt; button. Once you press it, a new hard disk will be created.</source>
- <translation type="obsolete">如果上é¢çš„设置正确,å•å‡»&lt;b&gt;完æˆ&lt;/b&gt; 按钮,一个新的虚拟硬盘将会被建立.</translation>
- </message>
- <message>
<source>%1_copy</source>
<comment>copied virtual disk name</comment>
- <translation type="unfinished"></translation>
+ <translation>%1_副本</translation>
</message>
<message>
<source>Create</source>
- <translation type="unfinished"></translation>
+ <translation>创建</translation>
</message>
<message>
<source>Copy Virtual Disk</source>
- <translation type="unfinished"></translation>
+ <translation>å¤åˆ¶è™šæ‹Ÿç£ç›˜</translation>
</message>
<message>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>å¤åˆ¶</translation>
</message>
<message>
<source>Welcome to the virtual disk copying wizard</source>
- <translation type="unfinished"></translation>
+ <translation>欢迎使用虚拟ç£ç›˜å¤åˆ¶å‘导</translation>
</message>
<message>
<source>&lt;p&gt;This wizard will help you to copy a virtual disk.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;本å‘导将帮助您å¤åˆ¶è™šæ‹Ÿç£ç›˜ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>Please select the virtual disk which you would like to copy if it is not already selected. You can either choose one from the list or use the folder icon beside the list to select a virtual disk file.</source>
- <translation type="unfinished"></translation>
+ <translation>请选择è¦å¤åˆ¶çš„虚拟ç£ç›˜ã€‚您å¯ä»¥ä»Žåˆ—表中选择一个,或使用列表æ—边的文件夹图标æ¥é€‰æ‹©ä¸€ä¸ªè™šæ‹Ÿç£ç›˜æ–‡ä»¶ã€‚</translation>
</message>
<message>
<source>&amp;VDI (VirtualBox Disk Image)</source>
- <translation type="unfinished"></translation>
+ <translation>VDI (VirtualBox ç£ç›˜æ˜ åƒ)(&amp;V)</translation>
</message>
<message>
<source>V&amp;MDK (Virtual Machine Disk)</source>
- <translation type="unfinished"></translation>
+ <translation>VMDK (虚拟机ç£ç›˜)(&amp;M)</translation>
</message>
<message>
<source>V&amp;HD (Virtual Hard Disk)</source>
- <translation type="unfinished"></translation>
+ <translation>VHD (虚拟硬盘)(&amp;H)</translation>
</message>
<message>
<source>Welcome to the virtual disk creation wizard</source>
- <translation type="unfinished"></translation>
+ <translation>欢迎使用虚拟ç£ç›˜åˆ›å»ºå‘导</translation>
</message>
<message>
<source>&lt;p&gt;This wizard will help you to create a new virtual disk for your virtual machine.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;本å‘导将帮助您创建虚拟机的新虚拟ç£ç›˜ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Please choose the type of file that you would like to use for the new virtual disk. If you do not need to use it with other virtualization software you can leave this setting unchanged.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;请选择您想è¦ç”¨äºŽæ–°å»ºè™šæ‹Ÿç£ç›˜çš„文件类型。如果您ä¸éœ€è¦å…¶ä»–虚拟化软件使用它,您å¯ä»¥è®©æ­¤è®¾ç½®ä¿æŒä¸æ›´æ”¹çŠ¶æ€ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>Virtual disk file type</source>
- <translation type="unfinished"></translation>
+ <translation>虚拟ç£ç›˜æ–‡ä»¶ç±»åž‹</translation>
</message>
<message>
<source>Please choose the type of file that you would like to use for the new virtual disk. If you do not need to use it with other virtualization software you can leave this setting unchanged.</source>
- <translation type="unfinished"></translation>
+ <translation>请选择您想è¦ç”¨äºŽæ–°å»ºè™šæ‹Ÿç£ç›˜çš„文件类型。如果您ä¸éœ€è¦å…¶ä»–虚拟化软件使用它,您å¯ä»¥è®©æ­¤è®¾ç½®ä¿æŒä¸æ›´æ”¹çŠ¶æ€ã€‚</translation>
</message>
<message>
<source>Virtual disk storage details</source>
- <translation type="unfinished"></translation>
+ <translation>虚拟ç£ç›˜å­˜å‚¨ç»†èŠ‚</translation>
</message>
<message>
<source>Please choose whether the new virtual disk file should be allocated as it is used or if it should be created fully allocated.</source>
- <translation type="unfinished"></translation>
+ <translation>请选择新建虚拟ç£ç›˜æ–‡ä»¶æ˜¯åº”该为其使用而分é…,还是应该创建完全分é…。</translation>
</message>
<message>
- <source>&lt;p&gt;A &lt;b&gt;dynamically allocated&lt;/b&gt; virtual disk file will only use space on your physical hard disk as it fills up, although it will not shrink again automatically when space on it is freed.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <source>&lt;p&gt;A &lt;b&gt;dynamically allocated&lt;/b&gt; virtual disk file will only use space on your physical hard disk as it fills up (up to a &lt;b&gt;fixed maximum size&lt;/b&gt;), although it will not shrink again automatically when space on it is freed.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;&lt;b&gt;动æ€åˆ†é…&lt;/b&gt;的虚拟ç£ç›˜åªæ˜¯é€æ¸å ç”¨ç‰©ç†ç¡¬ç›˜çš„空间 (直至达到 &lt;b&gt;分é…的大å°&lt;/b&gt;), ä¸è¿‡å½“其内部空间ä¸ç”¨æ—¶ä¸ä¼šè‡ªåŠ¨ç¼©å‡å ç”¨çš„物ç†ç¡¬ç›˜ç©ºé—´ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;A &lt;b&gt;fixed size&lt;/b&gt; virtual disk file may take longer to create on some systems but is often faster to use.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;&lt;b&gt;固定大å°&lt;/b&gt;的虚拟ç£ç›˜æ–‡ä»¶å¯èƒ½åœ¨æŸäº›ç³»ç»Ÿä¸­è¦èŠ±å¾ˆé•¿æ—¶é—´æ¥åˆ›å»ºï¼Œä½†å®ƒå¾€å¾€ä½¿ç”¨èµ·æ¥è¾ƒå¿«ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;You can also choose to &lt;b&gt;split&lt;/b&gt; the virtual disk into several files of up to two gigabytes each. This is mainly useful if you wish to store the virtual machine on removable USB devices or old systems, some of which cannot handle very large files.</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;您也å¯ä»¥é€‰æ‹©å°†è™šæ‹Ÿç£ç›˜&lt;b&gt;分割&lt;/b&gt;为 2GB 以下大å°çš„几个文件。如果您想è¦åœ¨å¯ç§»åŠ¨ USB 设备或旧系统中存储虚拟机,这将会很有用,因为它们ä¸èƒ½å¤„ç†éžå¸¸å¤§åž‹çš„文件。</translation>
</message>
<message>
<source>&amp;Dynamically allocated</source>
- <translation type="unfinished"></translation>
+ <translation>动æ€åˆ†é…(&amp;D)</translation>
</message>
<message>
<source>&amp;Fixed size</source>
- <translation type="unfinished"></translation>
+ <translation>固定大å°(&amp;F)</translation>
</message>
<message>
<source>&amp;Split into files of less than 2GB</source>
- <translation type="unfinished"></translation>
+ <translation>分割为 2GB 以下大å°çš„文件(&amp;S)</translation>
</message>
<message>
<source>Virtual disk file location and size</source>
- <translation type="unfinished"></translation>
+ <translation>虚拟ç£ç›˜æ–‡ä»¶ä½ç½®å’Œå¤§å°</translation>
</message>
<message>
<source>Select the size of the virtual disk in megabytes. This size will be reported to the Guest OS as the maximum size of this virtual disk.</source>
- <translation type="unfinished"></translation>
+ <translation>选择虚拟ç£ç›˜çš„大å°(MB)。该大å°å°†ä½œä¸ºè¯¥è™šæ‹Ÿæœºçš„最大容é‡æŠ¥å‘Šç»™è™šæ‹Ÿæœºæ“作系统。</translation>
</message>
<message>
<source>Virtual disk file location</source>
- <translation type="unfinished"></translation>
+ <translation>虚拟ç£ç›˜æ–‡ä»¶ä½ç½®</translation>
</message>
<message>
<source>Please type the name of the new virtual disk file into the box below or click on the folder icon to select a different folder to create the file in.</source>
- <translation type="unfinished"></translation>
+ <translation>请在下é¢çš„框中键入新建虚拟ç£ç›˜æ–‡ä»¶çš„å称,或å•å‡»æ–‡ä»¶å¤¹å›¾æ ‡æ¥é€‰æ‹©åˆ›å»ºæ–‡ä»¶è¦ä¿å­˜åˆ°çš„文件夹。</translation>
+ </message>
+ <message>
+ <source>Select a file for the new hard disk image file</source>
+ <translation>选择一个文件作为新的虚拟硬盘</translation>
</message>
<message>
<source>&lt;nobr&gt;%1 (%2 B)&lt;/nobr&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;nobr&gt;%1 (%2 B)&lt;/nobr&gt;</translation>
+ </message>
+ <message>
+ <source>Summary</source>
+ <translation>摘è¦</translation>
</message>
<message>
<source>You are going to create a new virtual disk with the following parameters:</source>
- <translation type="unfinished"></translation>
+ <translation>您将è¦ç”¨ä»¥ä¸‹å‚数创建新的虚拟ç£ç›˜:</translation>
</message>
<message>
<source>You are going to create a copied virtual disk with the following parameters:</source>
- <translation type="unfinished"></translation>
+ <translation>您将è¦ç”¨ä»¥ä¸‹å‚数创建虚拟ç£ç›˜çš„副本:</translation>
</message>
<message>
<source>If the above settings are correct, press the &lt;b&gt;%1&lt;/b&gt; button. Once you press it the new virtual disk file will be created.</source>
- <translation type="unfinished"></translation>
+ <translation>如果上é¢çš„设置是正确的,请按&lt;b&gt;%1&lt;/b&gt;按钮。一旦您按下,将创建一个新的虚拟ç£ç›˜æ–‡ä»¶ã€‚</translation>
</message>
<message>
<source>%1 B</source>
- <translation type="unfinished"></translation>
+ <translation>%1 B</translation>
</message>
<message>
<source>File type</source>
<comment>summary</comment>
- <translation type="unfinished"></translation>
+ <translation>文件类型</translation>
</message>
<message>
<source>Details</source>
<comment>summary</comment>
- <translation type="unfinished"></translation>
+ <translation>明细</translation>
+ </message>
+ <message>
+ <source>Location</source>
+ <comment>summary</comment>
+ <translation>ä½ç½®</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <comment>summary</comment>
+ <translation>大å°</translation>
</message>
<message>
<source>H&amp;DD (Parallels Hard Disk)</source>
- <translation type="unfinished"></translation>
+ <translation>HDD (并å£ç¡¬ç›˜)(&amp;D)</translation>
</message>
<message>
<source>Q&amp;ED (QEMU enhanced disk)</source>
- <translation type="unfinished"></translation>
+ <translation>QED (QEMU 增强型ç£ç›˜)(&amp;E)</translation>
</message>
<message>
<source>&amp;QCOW (QEMU Copy-On-Write)</source>
- <translation type="unfinished"></translation>
+ <translation>QCOW (QEMU 写入时å¤åˆ¶)(&amp;Q)</translation>
</message>
</context>
<context>
<name>UINewHDWizardPageFormat</name>
<message>
<source>File type</source>
- <translation type="unfinished"></translation>
+ <translation>文件类型</translation>
</message>
</context>
<context>
<name>UINewHDWizardPageOptions</name>
<message>
<source>&amp;Location</source>
- <translation type="unfinished">ä½ç½®(&amp;L)</translation>
+ <translation>ä½ç½®(&amp;L)</translation>
</message>
<message>
<source>&amp;Size</source>
- <translation type="unfinished">大å°(&amp;S)</translation>
+ <translation>大å°(&amp;S)</translation>
</message>
</context>
<context>
<name>UINewHDWizardPageVariant</name>
<message>
<source>Storage details</source>
- <translation type="unfinished"></translation>
+ <translation>存储器明细</translation>
</message>
</context>
<context>
<name>UINewHDWizardPageWelcome</name>
<message>
- <source>Welcome to the Create New Virtual Disk Wizard!</source>
- <translation type="obsolete">欢迎使用新建虚拟硬盘å‘导!</translation>
- </message>
- <message>
<source>Virtual disk to copy</source>
- <translation type="unfinished"></translation>
+ <translation>è¦å¤åˆ¶çš„虚拟ç£ç›˜</translation>
</message>
<message>
<source>Choose a virtual hard disk file...</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>UINewHDWzdPage2</name>
- <message>
- <source>&lt;p&gt;Select the type of virtual hard disk you want to create.&lt;/p&gt;&lt;p&gt;A &lt;b&gt;dynamically expanding storage&lt;/b&gt; initially occupies a very small amount of space on your physical hard disk. It will grow dynamically (up to the size specified) as the Guest OS claims disk space.&lt;/p&gt;&lt;p&gt;A &lt;b&gt;fixed-size storage&lt;/b&gt; does not grow. It is stored in a file of approximately the same size as the size of the virtual hard disk. The creation of a fixed-size storage may take a long time depending on the storage size and the write performance of your harddisk.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选择你è¦æ–°å»ºçš„虚拟硬盘类型.&lt;/p&gt;&lt;p&gt;其中 &lt;b&gt;动æ€æ‰©å±•&lt;/b&gt; 类型最åˆåªéœ€å ç”¨éžå¸¸å°çš„物ç†ç¡¬ç›˜ç©ºé—´ã€‚然åŽä¸æ–­å¢žåŠ (最大到当å‰æŒ‡å®šçš„大å°),具体大å°æ ¹æ®è™šæ‹Ÿç”µè„‘的实际需求动æ€åˆ†é…。&lt;/p&gt;&lt;p&gt;其中 &lt;b&gt;固定大å°&lt;/b&gt; 类型一旦建立就需分é…指定大å°çš„物ç†ç£ç›˜ç©ºé—´ç»™è¯¥è™šæ‹Ÿç¡¬ç›˜ä½¿ç”¨ï¼Œæ€§èƒ½ä¸Šæœ‰ä¸€å®šä¼˜åŠ¿ã€‚建立这ç§ç±»åž‹çš„虚拟硬盘需花费较多的时间.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;Dynamically expanding storage</source>
- <translation type="obsolete">动æ€æ‰©å±•(&amp;D)</translation>
- </message>
- <message>
- <source>&amp;Fixed-size storage</source>
- <translation type="obsolete">固定大å°(&amp;F)</translation>
- </message>
- <message>
- <source>Hard Disk Storage Type</source>
- <translation type="obsolete">虚拟硬盘类型</translation>
- </message>
-</context>
-<context>
- <name>UINewHDWzdPage3</name>
- <message>
- <source>&lt;p&gt;Press the &lt;b&gt;Select&lt;/b&gt; button to select the location of a file to store the hard disk data or type a file name in the entry field.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;å•å‡»&lt;b&gt;选择&lt;/b&gt;按钮用æ¥æŒ‡å®šä¿å­˜è™šæ‹Ÿç¡¬ç›˜çš„文件ååŠå…¶ä½ç½®ï¼Œæˆ–者也å¯ç›´æŽ¥åœ¨è¾“入框中输入.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;Location</source>
- <translation type="obsolete">ä½ç½®(&amp;L)</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select the size of the virtual hard disk in megabytes. This size will be reported to the Guest OS as the maximum size of this hard disk.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;以兆(M)为å•ä½æŒ‡å®šè¦æ–°å»ºçš„虚拟硬盘大å°. &lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;Size</source>
- <translation type="obsolete">大å°(&amp;S)</translation>
- </message>
- <message>
- <source>Virtual Disk Location and Size</source>
- <translation type="obsolete">虚拟硬盘所在ä½ç½®å’Œç©ºé—´å¤§å°</translation>
- </message>
- <message>
- <source>Select a file for the new hard disk image file</source>
- <translation type="obsolete">选择一个文件作为新的虚拟硬盘</translation>
- </message>
- <message>
- <source>Hard disk images (*.vdi)</source>
- <translation type="obsolete">虚拟硬盘文件 (*.vdi)</translation>
- </message>
-</context>
-<context>
- <name>UINewHDWzdPage4</name>
- <message>
- <source>You are going to create a new virtual hard disk with the following parameters:</source>
- <translation type="obsolete">现在将根æ®ä¸‹é¢æ‰€åˆ—å‚数创建一个新的虚拟硬盘:</translation>
- </message>
- <message>
- <source>Summary</source>
- <translation type="obsolete">摘è¦</translation>
- </message>
- <message>
- <source>Type</source>
- <comment>summary</comment>
- <translation type="obsolete">类型</translation>
- </message>
- <message>
- <source>Location</source>
- <comment>summary</comment>
- <translation type="obsolete">ä½ç½®</translation>
- </message>
- <message>
- <source>Size</source>
- <comment>summary</comment>
- <translation type="obsolete">大å°</translation>
+ <translation>选择一个虚拟硬盘...</translation>
</message>
</context>
<context>
@@ -6724,402 +4690,159 @@ time depending on the image size and the write performance of your harddisk.&lt;
<translation>新建虚拟电脑</translation>
</message>
<message>
- <source>&lt;p&gt;This wizard will guide you through the steps that are necessary to create
-a new virtual machine for VirtualBox.&lt;/p&gt;
-&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go the next page of the wizard
-and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;本å‘导将指引你一步步建立一个虚拟电脑.&lt;/p&gt;
-&lt;p&gt;使用&lt;b&gt;下一步&lt;/b&gt;按钮进入å‘导的下一步æ“作界é¢ï¼Œ
-使用&lt;b&gt;返回&lt;/b&gt;按钮返回å‘导的上一个页é¢.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Welcome to the New Virtual Machine Wizard!</source>
- <translation type="obsolete">欢迎使用新建虚拟电脑å‘导!</translation>
- </message>
- <message>
- <source>&lt;p&gt;Enter a name for the new virtual machine and select the type of the guest operating
-system you plan to install onto the virtual machine.&lt;/p&gt;
-&lt;p&gt;The name of the virtual machine usually indicates its software and hardware configuration.
-It will be used by all VirtualBox components to identify your virtual machine.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;为å³å°†æ–°å»ºçš„虚拟电脑输入一个å称,并指定虚拟电脑上å³å°†å®‰è£…çš„æ“作系统类型.&lt;/p&gt;
-&lt;p&gt;æ¯ä¸ªè™šæ‹Ÿç”µè„‘都è¦æœ‰ä¸€ä¸ªå”¯ä¸€çš„å称æ¥æ ‡è¯†ï¼Œç”¨æ¥åŒºåˆ†è¯¥è™šæ‹Ÿç”µè„‘的硬件é…置和上é¢çš„系统ã€è½¯ä»¶å’Œæ•°æ®.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>N&amp;ame</source>
- <translation type="obsolete">å称(&amp;a)</translation>
- </message>
- <message>
- <source>OS &amp;Type</source>
- <translation type="obsolete">系统类型(&amp;T)</translation>
- </message>
- <message>
- <source>VM Name and OS Type</source>
- <translation type="obsolete">虚拟电脑å称和系统类型</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select the amount of base memory (RAM) in megabytes to be allocated to the virtual machine.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;指定虚拟电脑å¯ç”¨å†…存大å°ï¼Œå•ä½ä¸º: MB .&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Base &amp;Memory Size</source>
- <translation type="obsolete">内存大å°(&amp;M)</translation>
- </message>
- <message>
- <source>&lt;</source>
- <translation type="obsolete">&lt;</translation>
- </message>
- <message>
- <source>=</source>
- <translation type="obsolete">=</translation>
- </message>
- <message>
- <source>&gt;</source>
- <translation type="obsolete">&gt;</translation>
- </message>
- <message>
- <source>MB</source>
- <translation type="obsolete">MB</translation>
- </message>
- <message>
- <source>Memory</source>
- <translation type="obsolete">内存</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select a hard disk image to be used
-as the boot hard disk of the virtual machine. You can either create a new hard
-disk using the &lt;b&gt;New&lt;/b&gt; button or select an existing hard disk
-image from the drop-down list or by pressing the &lt;b&gt;Existing&lt;/b&gt;
-button (to invoke the Virtual Disk Manager dialog).&lt;/p&gt;
-&lt;p&gt;If you need a more complicated hard disk setup, you can also skip this
-step and attach hard disks later using the VM Settings dialog.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选择一个虚拟硬盘作为虚拟电脑的主硬盘.。你å³å¯ä»¥å•å‡»&lt;b&gt;新建&lt;/b&gt;按钮建立一个新的硬盘映åƒï¼Œ
-也å¯ä»¥åœ¨ä¸‹æ‹‰åˆ—表中选择一个现有的硬盘映åƒï¼Œæˆ–者å•å‡»&lt;b&gt;现有&lt;/b&gt;
-按钮 (打开虚拟介质管ç†å™¨).&lt;/p&gt;
-&lt;p&gt;如果你需è¦ä¸€ä¸ªæ›´å¤æ‚的硬盘设置,也å¯ä»¥å¿½ç•¥è¿™æ­¥ï¼Œä»¥åŽå†åœ¨è™šæ‹Ÿç”µè„‘设置对è¯æ¡†ä¸­æŒ‡å®šç¡¬ç›˜.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>B&amp;oot Hard Disk (Primary Master)</source>
- <translation type="obsolete">å¯åŠ¨ç›˜(第一IDE控制器主通é“)(&amp;o)</translation>
- </message>
- <message>
- <source>N&amp;ew...</source>
- <translation type="obsolete">新建(&amp;e)...</translation>
- </message>
- <message>
- <source>E&amp;xisting...</source>
- <translation type="obsolete">现有(&amp;x)...</translation>
- </message>
- <message>
- <source>Virtual Hard Disk</source>
- <translation type="obsolete">虚拟硬盘</translation>
- </message>
- <message>
- <source>
- &lt;p&gt;
- You are going to create a new virtual machine
- with the following parameters:
- &lt;/p&gt;
- </source>
- <translation type="obsolete">&lt;p&gt;现在将根æ®ä¸‹åˆ—å‚æ•°æ¥åˆ›å»ºä¸€ä¸ªæ–°çš„虚拟电脑:&lt;/p&gt;
- </translation>
- </message>
- <message>
- <source>
- &lt;p&gt;
- If the above is correct press the &lt;b&gt;Finish&lt;/b&gt; button.
- Once you press it, a new virtual machine will be created.
- &lt;/p&gt;&lt;p&gt;
- Note that you can alter these and all other setting of the
- created virtual machine at any time using the
- &lt;b&gt;Settings&lt;/b&gt; dialog accessible through
- the menu of the main window.
- &lt;/p&gt;
- </source>
- <translation type="obsolete">&lt;p&gt;如果上é¢çš„设置正确,请按&lt;b&gt;完æˆ&lt;/b&gt; 按钮,一个新的虚拟电脑就会被创建。&lt;/p&gt;
-&lt;p&gt;今åŽä½ è¿˜å¯ä»¥é€šè¿‡ä¸»çª—å£ä¸­çš„&lt;b&gt;设置&lt;/b&gt;对è¯æ¡†éšæ—¶è°ƒæ•´è¿™äº›æˆ–其它设置.&lt;/p&gt;
- </translation>
- </message>
- <message>
- <source>Summary</source>
- <translation type="obsolete">摘è¦</translation>
- </message>
- <message>
- <source>&lt;qt&gt;%1&amp;nbsp;MB&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;%1&amp;nbsp;MB&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;tr&gt;&lt;td&gt;Name:&lt;/td&gt;&lt;td&gt;%1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;OS Type:&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Base Memory:&lt;/td&gt;&lt;td&gt;%3&amp;nbsp;MB&lt;/td&gt;&lt;/tr&gt;</source>
- <translation type="obsolete">&lt;tr&gt;&lt;td&gt;指定å称:&lt;/td&gt;&lt;td&gt;%1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;系统类型:&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;内存大å°:&lt;/td&gt;&lt;td&gt;%3&amp;nbsp;MB&lt;/td&gt;&lt;/tr&gt;</translation>
- </message>
- <message>
- <source>&lt;tr&gt;&lt;td&gt;Start-up Disk:&lt;/td&gt;&lt;td&gt;%4&lt;/td&gt;&lt;/tr&gt;</source>
- <translation type="obsolete">&lt;tr&gt;&lt;td&gt;引导盘:&lt;/td&gt;&lt;td&gt;%4&lt;/td&gt;&lt;/tr&gt;</translation>
- </message>
- <message>
- <source>The recommended base memory size is &lt;b&gt;%1&lt;/b&gt; MB.</source>
- <translation type="obsolete">建议分é…的内存大å°æ˜¯ &lt;b&gt;%1&lt;/b&gt; MB.</translation>
- </message>
- <message>
- <source>The recommended size of the start-up disk is &lt;b&gt;%1&lt;/b&gt; MB.</source>
- <translation type="obsolete">建议分é…的虚拟硬盘大å°æ˜¯ï¼š &lt;b&gt;%1&lt;/b&gt; MB.</translation>
- </message>
- <message>
- <source>&lt;p&gt;This wizard will guide you through the steps that are necessary to create a new virtual machine for VirtualBox.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go the next page of the wizard and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;本å‘导将一步步引导你建立一个新的虚拟电脑.&lt;/p&gt;&lt;p&gt;使用&lt;b&gt;下一步&lt;/b&gt;按钮进入å‘导的下一步æ“作界é¢ï¼Œä½¿ç”¨&lt;b&gt;返回&lt;/b&gt;按钮返回å‘导的上一个æ“作页é¢.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt; &amp;Back</source>
- <translation type="obsolete">&lt; 返回(&amp;B)</translation>
- </message>
- <message>
- <source>&amp;Next &gt;</source>
- <translation type="obsolete">下一步(&amp;N) &gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Enter a name for the new virtual machine and select the type of the guest operating system you plan to install onto the virtual machine.&lt;/p&gt;&lt;p&gt;The name of the virtual machine usually indicates its software and hardware configuration. It will be used by all VirtualBox components to identify your virtual machine.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;为å³å°†æ–°å»ºçš„虚拟电脑输入一个å称,并指定虚拟电脑上å³å°†å®‰è£…çš„æ“作系统类型.&lt;/p&gt;&lt;p&gt;æ¯ä¸ªè™šæ‹Ÿç”µè„‘都è¦æœ‰ä¸€ä¸ªå”¯ä¸€çš„å称æ¥æ ‡è¯†ï¼Œç”¨æ¥åŒºåˆ†è¯¥è™šæ‹Ÿç”µè„‘的硬件é…置和上é¢çš„系统ã€è½¯ä»¶å’Œæ•°æ®.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select a hard disk image to be used as the boot hard disk of the virtual machine. You can either create a new hard disk using the &lt;b&gt;New&lt;/b&gt; button or select an existing hard disk image from the drop-down list or by pressing the &lt;b&gt;Existing&lt;/b&gt; button (to invoke the Virtual Disk Manager dialog).&lt;/p&gt;&lt;p&gt;If you need a more complex virtual disk setup you can skip this step and make the changes to the machine settings once the machine is created.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选择一个虚拟硬盘作为虚拟电脑的主硬盘。你å³å¯ä»¥å•å‡»&lt;b&gt;新建&lt;/b&gt;按钮建立一个新的虚拟硬盘,也å¯ä»¥åœ¨ä¸‹æ‹‰åˆ—表中选择一个现有的虚拟硬盘,或者å•å‡»&lt;b&gt;现有&lt;/b&gt;按钮 (打开虚拟介质管ç†å™¨).&lt;/p&gt;&lt;p&gt;如果你需è¦ä¸€ä¸ªæ›´å¤æ‚的硬盘设置,也å¯ä»¥å¿½ç•¥è¿™æ­¥ï¼Œä»¥åŽå†åœ¨è™šæ‹Ÿç”µè„‘设置对è¯æ¡†ä¸­æŒ‡å®šç¡¬ç›˜.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;You are going to create a new virtual machine with the following parameters:&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;现在将根æ®ä¸‹é¢æ‰€åˆ—å‚数创建一个新的虚拟电脑:&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;If the above is correct press the &lt;b&gt;Finish&lt;/b&gt; button. Once you press it, a new virtual machine will be created. &lt;/p&gt;&lt;p&gt;Note that you can alter these and all other setting of the created virtual machine at any time using the &lt;b&gt;Settings&lt;/b&gt; dialog accessible through the menu of the main window.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;如果上é¢çš„设置没有问题,请按 &lt;b&gt;完æˆ&lt;/b&gt; 按钮。 一个新的虚拟电脑将被建立。&lt;/p&gt;&lt;p&gt;请注æ„:你å¯ä»¥é€šè¿‡è™šæ‹Ÿç”µè„‘çš„ &lt;b&gt;设置&lt;/b&gt; 对è¯æ¡†æ¥æ›´æ”¹ä¸Šé¢çš„有关该虚拟电脑的å„ç§è®¾ç½®.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&amp;Finish</source>
- <translation type="obsolete">完æˆ(&amp;F)</translation>
- </message>
- <message>
- <source>MB</source>
- <comment>megabytes</comment>
- <translation type="obsolete">MB</translation>
- </message>
- <message>
- <source>Name</source>
- <comment>summary</comment>
- <translation type="obsolete">å称</translation>
- </message>
- <message>
- <source>OS Type</source>
- <comment>summary</comment>
- <translation type="obsolete">系统类型</translation>
- </message>
- <message>
- <source>Base Memory</source>
- <comment>summary</comment>
- <translation type="obsolete">内存大å°</translation>
- </message>
- <message>
- <source>Start-up Disk</source>
- <comment>summary</comment>
- <translation type="obsolete">主硬盘</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>&lt;p&gt;Select a hard disk image to be used as the boot hard disk of the virtual machine. You can either create a new hard disk using the &lt;b&gt;New&lt;/b&gt; button or select an existing hard disk image from the drop-down list or by pressing the &lt;b&gt;Existing&lt;/b&gt; button (to invoke the Virtual Media Manager dialog).&lt;/p&gt;&lt;p&gt;If you need a more complex virtual disk setup you can skip this step and make the changes to the machine settings once the machine is created.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选择一个虚拟硬盘作为虚拟电脑的主硬盘。你å³å¯ä»¥å•å‡»&lt;b&gt;新建&lt;/b&gt;按钮建立一个新的虚拟硬盘,也å¯ä»¥åœ¨ä¸‹æ‹‰åˆ—表中选择一个现有的虚拟硬盘,或者å•å‡»&lt;b&gt;现有&lt;/b&gt;按钮 (打开虚拟介质管ç†å™¨).&lt;/p&gt;&lt;p&gt;如果你需è¦ä¸€ä¸ªæ›´å¤æ‚的硬盘设置,也å¯ä»¥å¿½ç•¥è¿™æ­¥ï¼Œä»¥åŽå†åœ¨è™šæ‹Ÿç”µè„‘设置对è¯æ¡†ä¸­æŒ‡å®šç¡¬ç›˜.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Start-up &amp;Disk (Primary Master)</source>
- <translation type="obsolete">å¯åŠ¨ç›˜(第一IDE控制器主通é“)(&amp;D)</translation>
- </message>
- <message>
- <source>&amp;Create new hard disk</source>
- <translation type="obsolete">创建新的虚拟硬盘(&amp;C)</translation>
- </message>
- <message>
- <source>&amp;Use existing hard disk</source>
- <translation type="obsolete">使用现有的虚拟硬盘(&amp;U)</translation>
- </message>
- <message>
<source>Create</source>
- <translation type="unfinished"></translation>
+ <translation>创建</translation>
</message>
</context>
<context>
<name>UINewVMWzdPage1</name>
<message>
<source>Welcome to the New Virtual Machine Wizard!</source>
- <translation type="unfinished">欢迎使用新建虚拟电脑å‘导!</translation>
+ <translation>欢迎使用新建虚拟电脑å‘导!</translation>
</message>
<message>
<source>&lt;p&gt;This wizard will guide you through the steps that are necessary to create a new virtual machine for VirtualBox.&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;本å‘导将引导您完æˆåˆ›å»ºæ–°çš„ VirtualBox 虚拟电脑所需è¦çš„全部步骤。&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</translation>
</message>
</context>
<context>
<name>UINewVMWzdPage2</name>
<message>
<source>&lt;p&gt;Enter a name for the new virtual machine and select the type of the guest operating system you plan to install onto the virtual machine.&lt;/p&gt;&lt;p&gt;The name of the virtual machine usually indicates its software and hardware configuration. It will be used by all VirtualBox components to identify your virtual machine.&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;为å³å°†æ–°å»ºçš„虚拟电脑输入一个å称,并指定虚拟电脑上å³å°†å®‰è£…çš„æ“作系统类型.&lt;/p&gt;&lt;p&gt;æ¯ä¸ªè™šæ‹Ÿç”µè„‘都è¦æœ‰ä¸€ä¸ªå”¯ä¸€çš„å称æ¥æ ‡è¯†ï¼Œç”¨æ¥åŒºåˆ†è¯¥è™šæ‹Ÿç”µè„‘的硬件é…置和上é¢çš„系统ã€è½¯ä»¶å’Œæ•°æ®.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;为å³å°†æ–°å»ºçš„虚拟电脑输入一个å称,并指定虚拟电脑上å³å°†å®‰è£…çš„æ“作系统类型。&lt;/p&gt;&lt;p&gt;æ¯ä¸ªè™šæ‹Ÿç”µè„‘都è¦æœ‰ä¸€ä¸ªå”¯ä¸€çš„å称æ¥æ ‡è¯†ï¼Œç”¨æ¥åŒºåˆ†è¯¥è™šæ‹Ÿç”µè„‘的硬件é…置和上é¢çš„系统ã€è½¯ä»¶å’Œæ•°æ®ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>N&amp;ame</source>
- <translation type="unfinished">å称(&amp;a)</translation>
+ <translation>å称(&amp;A)</translation>
</message>
<message>
<source>OS &amp;Type</source>
- <translation type="unfinished">系统类型(&amp;T)</translation>
+ <translation>系统类型(&amp;T)</translation>
</message>
<message>
<source>VM Name and OS Type</source>
- <translation type="unfinished">虚拟电脑å称和系统类型</translation>
+ <translation>虚拟电脑å称和系统类型</translation>
</message>
</context>
<context>
<name>UINewVMWzdPage3</name>
<message>
<source>&lt;p&gt;Select the amount of base memory (RAM) in megabytes to be allocated to the virtual machine.&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;指定虚拟电脑å¯ç”¨å†…存大å°ï¼Œå•ä½ä¸º: MB .&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;指定虚拟电脑å¯ç”¨å†…存大å°ï¼Œå•ä½ä¸º: MB 。&lt;/p&gt;</translation>
</message>
<message>
<source>Base &amp;Memory Size</source>
- <translation type="unfinished">内存大å°(&amp;M)</translation>
+ <translation>内存大å°(&amp;M)</translation>
</message>
<message>
<source>MB</source>
- <translation type="unfinished">MB</translation>
+ <translation>MB</translation>
</message>
<message>
<source>Memory</source>
- <translation type="unfinished">内存</translation>
+ <translation>内存</translation>
</message>
<message>
<source>The recommended base memory size is &lt;b&gt;%1&lt;/b&gt; MB.</source>
- <translation type="unfinished">建议分é…的内存大å°æ˜¯ &lt;b&gt;%1&lt;/b&gt; MB.</translation>
- </message>
- <message>
- <source>MB</source>
- <comment>size suffix MBytes=1024 KBytes</comment>
- <translation type="obsolete">MB</translation>
+ <translation>建议分é…的内存大å°æ˜¯ &lt;b&gt;%1&lt;/b&gt; MB。</translation>
</message>
</context>
<context>
<name>UINewVMWzdPage4</name>
<message>
- <source>&lt;p&gt;Select a hard disk image to be used as the boot hard disk of the virtual machine. You can either create a new hard disk using the &lt;b&gt;New&lt;/b&gt; button or select an existing hard disk image from the drop-down list or by pressing the &lt;b&gt;Existing&lt;/b&gt; button (to invoke the Virtual Media Manager dialog).&lt;/p&gt;&lt;p&gt;If you need a more complex virtual disk setup you can skip this step and make the changes to the machine settings once the machine is created.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选择一个虚拟硬盘作为虚拟电脑的主硬盘。你å³å¯ä»¥å•å‡»&lt;b&gt;新建&lt;/b&gt;按钮建立一个新的虚拟硬盘,也å¯ä»¥åœ¨ä¸‹æ‹‰åˆ—表中选择一个现有的虚拟硬盘,或者å•å‡»&lt;b&gt;现有&lt;/b&gt;按钮 (打开虚拟介质管ç†å™¨).&lt;/p&gt;&lt;p&gt;如果你需è¦ä¸€ä¸ªæ›´å¤æ‚的硬盘设置,也å¯ä»¥å¿½ç•¥è¿™æ­¥ï¼Œä»¥åŽå†åœ¨è™šæ‹Ÿç”µè„‘设置对è¯æ¡†ä¸­æŒ‡å®šç¡¬ç›˜.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Start-up &amp;Disk (Primary Master)</source>
- <translation type="obsolete">å¯åŠ¨ç›˜(第一IDE控制器主通é“)(&amp;D)</translation>
- </message>
- <message>
<source>&amp;Create new hard disk</source>
- <translation type="unfinished">创建新的虚拟硬盘(&amp;C)</translation>
+ <translation>创建新的虚拟硬盘(&amp;C)</translation>
</message>
<message>
<source>&amp;Use existing hard disk</source>
- <translation type="unfinished">使用现有的虚拟硬盘(&amp;U)</translation>
+ <translation>使用现有的虚拟硬盘(&amp;U)</translation>
</message>
<message>
<source>Virtual Hard Disk</source>
- <translation type="unfinished">虚拟硬盘</translation>
- </message>
- <message>
- <source>The recommended size of the start-up disk is &lt;b&gt;%1&lt;/b&gt; MB.</source>
- <translation type="obsolete">建议分é…的虚拟硬盘大å°æ˜¯ï¼š &lt;b&gt;%1&lt;/b&gt; MB.</translation>
+ <translation>虚拟硬盘</translation>
</message>
<message>
<source>Start-up &amp;Disk</source>
- <translation type="unfinished"></translation>
+ <translation>主硬盘(&amp;D)</translation>
</message>
<message>
<source>&lt;p&gt;If you wish you can now add a start-up disk to the new machine. You can either create a new virtual disk or select one from the list or from another location using the folder icon.&lt;/p&gt;&lt;p&gt;If you need a more complex virtual disk setup you can skip this step and make the changes to the machine settings once the machine is created.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;ä½ å¯ä»¥çŽ°åœ¨æ·»åŠ å¯åŠ¨ç›˜åˆ°è™šæ‹Ÿç”µè„‘中。你å¯ä»¥åˆ›å»ºä¸€ä¸ªæ–°è™šæ‹Ÿç£ç›˜ï¼Œæˆ–从列表中选择一个,也å¯ä»¥ç‚¹æ–‡ä»¶å¤¹å›¾æ ‡ä»Žå…¶ä»–ä½ç½®é€‰æ‹©ä¸€ä¸ªã€‚&lt;/p&gt;&lt;p&gt;如果您需è¦æ›´å¤šçš„虚拟ç£ç›˜è®¾ç½®ï¼Œæ‚¨å¯ä»¥è·³è¿‡æ­¤æ­¥éª¤ï¼Œåœ¨åˆ›å»ºè™šæ‹Ÿç”µè„‘åŽå†æ›´æ”¹å…¶è®¾ç½®ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>Choose a virtual hard disk file...</source>
- <translation type="unfinished"></translation>
+ <translation>选择一个虚拟硬盘...</translation>
</message>
<message>
<source>The recommended size of the start-up disk is &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>å¯åŠ¨ç£ç›˜çš„推è大å°ä¸º &lt;b&gt;%1&lt;/b&gt;。</translation>
</message>
</context>
<context>
<name>UINewVMWzdPage5</name>
<message>
<source>&lt;p&gt;You are going to create a new virtual machine with the following parameters:&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;现在将根æ®ä¸‹é¢æ‰€åˆ—å‚数创建一个新的虚拟电脑:&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;现在将根æ®ä¸‹é¢æ‰€åˆ—å‚数创建一个新的虚拟电脑:&lt;/p&gt;</translation>
</message>
<message>
<source>Summary</source>
- <translation type="unfinished">摘è¦</translation>
+ <translation>摘è¦</translation>
</message>
<message>
<source>Name</source>
<comment>summary</comment>
- <translation type="unfinished"></translation>
+ <translation>å称</translation>
</message>
<message>
<source>OS Type</source>
<comment>summary</comment>
- <translation type="unfinished">系统类型</translation>
+ <translation>系统类型</translation>
</message>
<message>
<source>Base Memory</source>
<comment>summary</comment>
- <translation type="unfinished">内存大å°</translation>
- </message>
- <message>
- <source>MB</source>
- <comment>size suffix MBytes=1024KBytes</comment>
- <translation type="obsolete">MB</translation>
+ <translation>内存大å°</translation>
</message>
<message>
<source>Start-up Disk</source>
<comment>summary</comment>
- <translation type="unfinished">主硬盘</translation>
+ <translation>主硬盘</translation>
</message>
<message>
<source>&lt;p&gt;If the above is correct press the &lt;b&gt;%1&lt;/b&gt; button. Once you press it, a new virtual machine will be created. &lt;/p&gt;&lt;p&gt;Note that you can alter these and all other setting of the created virtual machine at any time using the &lt;b&gt;Settings&lt;/b&gt; dialog accessible through the menu of the main window.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;如果上é¢æ˜¯æ­£ç¡®çš„,请按&lt;b&gt;%1&lt;/b&gt;按钮。一旦您按下,将创建一个新的虚拟电脑。&lt;/p&gt;&lt;p&gt;注æ„,您å¯ä»¥åœ¨ä»»ä½•æ—¶å€™ï¼Œé€šè¿‡è®¿é—®ä¸»çª—å£çš„èœå•&lt;b&gt;设置&lt;/b&gt;æ¥æ›´æ”¹è™šæ‹Ÿç”µè„‘的设置。&lt;/p&gt;</translation>
</message>
</context>
<context>
<name>UIPortForwardingModel</name>
<message>
<source>Name</source>
- <translation type="unfinished"></translation>
+ <translation>å称</translation>
</message>
<message>
<source>Protocol</source>
- <translation type="unfinished"></translation>
+ <translation>åè®®</translation>
</message>
<message>
<source>Host IP</source>
- <translation type="unfinished"></translation>
+ <translation>主机IP</translation>
</message>
<message>
<source>Host Port</source>
- <translation type="unfinished"></translation>
+ <translation>主机端å£</translation>
</message>
<message>
<source>Guest IP</source>
- <translation type="unfinished"></translation>
+ <translation>å­ç³»ç»ŸIP</translation>
</message>
<message>
<source>Guest Port</source>
- <translation type="unfinished"></translation>
+ <translation>å­ç³»ç»Ÿç«¯å£</translation>
</message>
</context>
<context>
<name>UIProgressDialog</name>
<message>
- <source>&amp;Cancel</source>
- <translation>å–消(&amp;C)</translation>
- </message>
- <message>
<source>A few seconds remaining</source>
<translation>还剩下几秒钟</translation>
</message>
@@ -7128,6 +4851,10 @@ step and attach hard disks later using the VM Settings dialog.&lt;/p&gt;</source
<translation>正在å–消中...</translation>
</message>
<message>
+ <source>&amp;Cancel</source>
+ <translation>å–消(&amp;C)</translation>
+ </message>
+ <message>
<source>Cancel the current operation</source>
<translation>å–消当å‰æ“作</translation>
</message>
@@ -7146,128 +4873,120 @@ step and attach hard disks later using the VM Settings dialog.&lt;/p&gt;</source
<name>UISession</name>
<message>
<source>Install</source>
- <translation type="unfinished"></translation>
+ <translation>安装</translation>
</message>
</context>
<context>
<name>UISettingsDialog</name>
<message>
<source>&lt;i&gt;Select a settings category from the list on the left-hand side and move the mouse over a settings item to get more information.&lt;/i&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;i&gt;从左边的列表中选择设置类别,将鼠标移到设置项上å¯èŽ·å¾—更多信æ¯ã€‚&lt;/i&gt;</translation>
</message>
<message>
<source>On the &lt;b&gt;%1&lt;/b&gt; page, %2</source>
- <translation type="unfinished">在 &lt;b&gt;%1&lt;/b&gt; 页, %2</translation>
+ <translation>在 &lt;b&gt;%1&lt;/b&gt; 页, %2</translation>
</message>
<message>
<source>Invalid settings detected</source>
- <translation type="unfinished">å‘现无效设置</translation>
+ <translation>å‘现无效设置</translation>
</message>
<message>
<source>Non-optimal settings detected</source>
- <translation type="unfinished">未å‘现最佳设置</translation>
+ <translation>å‘现未优化的设置</translation>
</message>
<message>
<source>Settings</source>
- <translation type="unfinished">设置</translation>
+ <translation>设置</translation>
</message>
</context>
<context>
<name>UISettingsDialogGlobal</name>
<message>
<source>General</source>
- <translation type="unfinished">常规</translation>
+ <translation>常规</translation>
</message>
<message>
<source>Input</source>
- <translation type="unfinished">热键</translation>
+ <translation>热键</translation>
</message>
<message>
<source>Update</source>
- <translation type="unfinished">æ›´æ–°</translation>
+ <translation>æ›´æ–°</translation>
</message>
<message>
<source>Language</source>
- <translation type="unfinished">语言</translation>
+ <translation>语言</translation>
</message>
<message>
<source>USB</source>
- <translation type="unfinished"></translation>
+ <translation>USB设备</translation>
</message>
<message>
<source>Network</source>
- <translation type="unfinished">网络</translation>
+ <translation>网络</translation>
</message>
<message>
<source>Extensions</source>
- <translation type="unfinished"></translation>
+ <translation>扩展</translation>
</message>
<message>
<source>VirtualBox - %1</source>
- <translation type="unfinished">VirtualBox - %1</translation>
+ <translation>VirtualBox - %1</translation>
</message>
<message>
<source>Proxy</source>
- <translation type="unfinished"></translation>
+ <translation>代ç†</translation>
</message>
</context>
<context>
<name>UISettingsDialogMachine</name>
<message>
<source>General</source>
- <translation type="unfinished">常规</translation>
+ <translation>常规</translation>
</message>
<message>
<source>System</source>
- <translation type="unfinished">系统</translation>
+ <translation>系统</translation>
</message>
<message>
<source>Display</source>
- <translation type="unfinished">显示</translation>
+ <translation>显示</translation>
</message>
<message>
<source>Storage</source>
- <translation type="unfinished"></translation>
+ <translation>存储</translation>
</message>
<message>
<source>Audio</source>
- <translation type="unfinished">声音</translation>
+ <translation>声音</translation>
</message>
<message>
<source>Network</source>
- <translation type="unfinished">网络</translation>
+ <translation>网络</translation>
</message>
<message>
<source>Ports</source>
- <translation type="unfinished">端å£</translation>
+ <translation>端å£</translation>
</message>
<message>
<source>Serial Ports</source>
- <translation type="unfinished">串å£</translation>
+ <translation>串å£</translation>
</message>
<message>
<source>Parallel Ports</source>
- <translation type="unfinished">并å£</translation>
+ <translation>并å£</translation>
</message>
<message>
<source>USB</source>
- <translation type="unfinished"></translation>
+ <translation>USB设备</translation>
</message>
<message>
<source>Shared Folders</source>
- <translation type="unfinished">æ•°æ®ç©ºé—´</translation>
+ <translation>共享文件夹</translation>
</message>
<message>
<source>%1 - %2</source>
- <translation type="unfinished">%1 - %2</translation>
- </message>
- <message>
- <source>you have selected a 64-bit guest OS type for this VM. As such guests require hardware virtualization (VT-x/AMD-V), this feature will be enabled automatically.</source>
- <translation type="obsolete">您已ç»ä¸ºè¯¥è™šæ‹Ÿç”µè„‘选择了一个64ä½çš„æ“作系统。该æ“作系统需è¦ç¡¬ä»¶è™šæ‹ŸæŒ‡ä»¤ (VT-x/AMD-V) 的支æŒæ–¹èƒ½è¿è¡Œï¼Œå› æ­¤è¯¥ç‰¹æ€§å°†è¢«è‡ªåŠ¨å¯ç”¨ã€‚</translation>
- </message>
- <message>
- <source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
- <translation type="obsolete">您已å¯ç”¨äº†2D视频加速。但该功能目å‰åªèƒ½ç”¨äºŽè™šæ‹Ÿç”µè„‘内的windows系统,因此该特性将被ç¦ç”¨ã€‚</translation>
+ <translation>%1 - %2</translation>
</message>
</context>
<context>
@@ -7286,7 +5005,7 @@ step and attach hard disks later using the VM Settings dialog.&lt;/p&gt;</source
</message>
<message>
<source>Text (*.txt);;All (*.*)</source>
- <translation>Text (*.txt);;All (*.*)</translation>
+ <translation>文本 (*.txt);;所有文件 (*.*)</translation>
</message>
<message>
<source>Select a file to open...</source>
@@ -7339,119 +5058,63 @@ step and attach hard disks later using the VM Settings dialog.&lt;/p&gt;</source
<source>Never</source>
<translation>从ä¸</translation>
</message>
- <message>
- <source>Connection timed out.</source>
- <translation type="obsolete">连接超时.</translation>
- </message>
- <message>
- <source>Could not locate the latest version list on the server (response: %1).</source>
- <translation type="obsolete">无法在æœåŠ¡å™¨ä¸Šæ‰¾åˆ°æœ€æ–°çš„版本列表 (回å¤: %1).</translation>
- </message>
- <message>
- <source>Chec&amp;k</source>
- <translation type="obsolete">检测(&amp;k)</translation>
- </message>
- <message>
- <source>&amp;Close</source>
- <translation type="obsolete">关闭(&amp;C)</translation>
- </message>
- <message>
- <source>VirtualBox Update Wizard</source>
- <translation type="obsolete">VirtualBox å‡çº§å‘导</translation>
- </message>
- <message>
- <source>Check for Updates</source>
- <translation type="obsolete">查找å‡çº§ä¿¡æ¯</translation>
- </message>
- <message>
- <source>&lt;p&gt;This wizard will connect to the VirtualBox web-site and check if a newer version of VirtualBox is available.&lt;/p&gt;
-&lt;p&gt;Use the &lt;b&gt;Check&lt;/b&gt; button to check for a new version now or the &lt;b&gt;Cancel&lt;/b&gt; button if you do not want to perform this check.&lt;/p&gt;
-&lt;p&gt;You can run this wizard at any time by choosing &lt;b&gt;Check for Updates...&lt;/b&gt; from the &lt;b&gt;Help&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;该å‘导将连接到VirtualBoxæœåŠ¡å™¨ï¼Œä»¥æ£€æµ‹æ˜¯å¦æœ‰æ–°ç‰ˆæœ¬ã€‚&lt;/p&gt;
-&lt;p&gt;按 &lt;b&gt;检测&lt;/b&gt; 按钮以查看现在是å¦æœ‰æ–°çš„版本,或者按 &lt;b&gt;å–消&lt;/b&gt; 按钮,如果你现在ä¸æƒ³æ‰§è¡Œè¯¥æ£€æµ‹ã€‚&lt;/p&gt;
-&lt;p&gt;在任何时候你都å¯ä»¥é€šè¿‡æŒ‰ &lt;b&gt;帮助&lt;/b&gt; èœå•ä¸­çš„ &lt;b&gt;检测更新...&lt;/b&gt; æ¥è¿è¡Œæœ¬å‘导.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>Summary</source>
- <translation type="obsolete">摘è¦</translation>
- </message>
- <message>
- <source>&lt;p&gt;A new version of VirtualBox has been released! Version &lt;b&gt;%1&lt;/b&gt; is available at &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;virtualbox.org&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;You can download this version using the link:&lt;/p&gt;&lt;p&gt;&lt;a href=%2&gt;%3&lt;/a&gt;&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;一个新版的VirtualBoxå·²å‘布! 版本 &lt;b&gt;%1&lt;/b&gt; ä½äºŽ &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;virtualbox.org&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;ä½ å¯ä»¥ä»Žè¿™ä¸ªè¿žä½ç½®ç›´æŽ¥ä¸‹è½½:&lt;/p&gt;&lt;p&gt;&lt;a href=%2&gt;%3&lt;/a&gt;&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Unable to obtain the new version information due to the following network error:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;无法获å–有关新版本的信æ¯ï¼Œå› ä¸ºå¦‚下网络错误:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</translation>
- </message>
- <message>
- <source>You are already running the most recent version of VirtualBox.</source>
- <translation type="obsolete">当å‰ç‰ˆæœ¬å³ä¸ºæœ€æ–°ç‰ˆï¼Œè¯·ä»¥åŽå†æ¥æ£€æŸ¥.</translation>
- </message>
- <message>
- <source>&lt;p&gt;This wizard will connect to the VirtualBox web-site and check if a newer version of VirtualBox is available.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Check&lt;/b&gt; button to check for a new version now or the &lt;b&gt;Cancel&lt;/b&gt; button if you do not want to perform this check.&lt;/p&gt;&lt;p&gt;You can run this wizard at any time by choosing &lt;b&gt;Check for Updates...&lt;/b&gt; from the &lt;b&gt;Help&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;该å‘导将连接到虚拟电脑控制å°çš„主站点,以检测是å¦æœ‰æ–°ç‰ˆæœ¬ã€‚&lt;/p&gt;&lt;p&gt;按 &lt;b&gt;检测&lt;/b&gt; 按钮以查看现在是å¦æœ‰æ–°çš„版本,或者按 &lt;b&gt;å–消&lt;/b&gt; 按钮,如果你现在ä¸æƒ³æ‰§è¡Œè¯¥æ£€æµ‹ã€‚&lt;/p&gt;&lt;p&gt;在任何时候你都å¯ä»¥é€šè¿‡æŒ‰ &lt;b&gt;帮助&lt;/b&gt; èœå•ä¸­çš„ &lt;b&gt;检测更新...&lt;/b&gt; æ¥è¿è¡Œæœ¬å‘导.&lt;/p&gt;</translation>
- </message>
</context>
<context>
<name>UIVMCloseDialog</name>
<message>
<source>Close Virtual Machine</source>
- <translation type="unfinished">关闭虚拟电脑</translation>
+ <translation>关闭虚拟电脑</translation>
</message>
<message>
<source>You want to:</source>
- <translation type="unfinished">选择关闭方å¼:</translation>
+ <translation>选择关闭方å¼:</translation>
</message>
<message>
<source>&lt;p&gt;Saves the current execution state of the virtual machine to the physical hard disk of the host PC.&lt;/p&gt;&lt;p&gt;Next time this machine is started, it will be restored from the saved state and continue execution from the same place you saved it at, which will let you continue your work immediately.&lt;/p&gt;&lt;p&gt;Note that saving the machine state may take a long time, depending on the guest operating system type and the amount of memory you assigned to the virtual machine.&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;将虚拟电脑的当å‰è¿è¡ŒçŠ¶æ€ä¿å­˜åˆ°ä¸»æœºç¡¬ç›˜ä¸Š.&lt;/p&gt;&lt;p&gt;下次该虚拟电脑å¯åŠ¨æ—¶ï¼Œå°†ç›´æŽ¥è¿›åˆ°å½“å‰ä¿å­˜æ—¶çš„状æ€ï¼Œä¹Ÿå°±æ˜¯è¯´ä½ èƒ½ç«‹å³ç»§ç»­æœªå®Œçš„工作.&lt;/p&gt;&lt;p&gt;æ示:快速休眠所需è¦çš„时间å–决于虚拟电脑内所装的æ“作系统类型åŠä½ ä¸ºå®ƒåˆ†é…的内存大å°.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;将虚拟电脑的当å‰è¿è¡ŒçŠ¶æ€ä¿å­˜åˆ°ä¸»æœºç¡¬ç›˜ä¸Šã€‚&lt;/p&gt;&lt;p&gt;下次该虚拟电脑å¯åŠ¨æ—¶ï¼Œå°†ç›´æŽ¥è¿›åˆ°å½“å‰ä¿å­˜æ—¶çš„状æ€ï¼Œä¹Ÿå°±æ˜¯è¯´ä½ èƒ½ç«‹å³ç»§ç»­æœªå®Œçš„工作。&lt;/p&gt;&lt;p&gt;æ示:快速休眠所需è¦çš„时间å–决于虚拟电脑内所装的æ“作系统类型åŠä½ ä¸ºå®ƒåˆ†é…的内存大å°ã€‚&lt;/p&gt;</translation>
</message>
<message>
<source>&amp;Save the machine state</source>
- <translation type="unfinished">快速休眠(&amp;S)</translation>
+ <translation>快速休眠(&amp;S)</translation>
</message>
<message>
<source>&lt;p&gt;Sends the ACPI Power Button press event to the virtual machine.&lt;/p&gt;&lt;p&gt;Normally, the guest operating system running inside the virtual machine will detect this event and perform a clean shutdown procedure. This is a recommended way to turn off the virtual machine because all applications running inside it will get a chance to save their data and state.&lt;/p&gt;&lt;p&gt;If the machine doesn&apos;t respond to this action then the guest operating system may be misconfigured or doesn&apos;t understand ACPI Power Button events at all. In this case you should select the &lt;b&gt;Power off the machine&lt;/b&gt; action to stop virtual machine execution.&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;å‘é€å…³é—­ä¿¡å·åˆ°è™šæ‹Ÿç”µè„‘.&lt;/p&gt;&lt;p&gt;通常情况下,è¿è¡Œåœ¨è™šæ‹Ÿç”µè„‘内的æ“作系统会检测到这个信å·å¹¶æ‰§è¡Œæ­£å¸¸çš„关闭æµç¨‹. 这是我们推è的关闭虚拟电脑的最佳方å¼ï¼Œå› ä¸ºè¿™æ ·è¿è¡Œåœ¨è™šæ‹Ÿç”µè„‘内的程åºéƒ½æœ‰æœºä¼šæ¥ä¿å­˜å®ƒçš„æ•°æ®å’ŒçŠ¶æ€.&lt;/p&gt;&lt;p&gt;如果虚拟电脑内的æ“作系统对这个信å·æ²¡æœ‰å应,那å¯èƒ½æ˜¯è®¾ç½®æœ‰è¯¯æˆ–ä¸æ”¯æŒè¯¥åŠŸèƒ½. 碰到这ç§æƒ…况你就应该选择 &lt;b&gt;强制退出&lt;/b&gt; æ“作æ¥åœæ­¢è¯¥è™šæ‹Ÿç”µè„‘.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;å‘é€å…³é—­ä¿¡å·åˆ°è™šæ‹Ÿç”µè„‘.&lt;/p&gt;&lt;p&gt;通常情况下,è¿è¡Œåœ¨è™šæ‹Ÿç”µè„‘内的æ“作系统会检测到这个信å·å¹¶æ‰§è¡Œæ­£å¸¸çš„关闭æµç¨‹. 这是我们推è的关闭虚拟电脑的最佳方å¼ï¼Œå› ä¸ºè¿™æ ·è¿è¡Œåœ¨è™šæ‹Ÿç”µè„‘内的程åºéƒ½æœ‰æœºä¼šæ¥ä¿å­˜å®ƒçš„æ•°æ®å’ŒçŠ¶æ€.&lt;/p&gt;&lt;p&gt;如果虚拟电脑内的æ“作系统对这个信å·æ²¡æœ‰å应,那å¯èƒ½æ˜¯è®¾ç½®æœ‰è¯¯æˆ–ä¸æ”¯æŒè¯¥åŠŸèƒ½. 碰到这ç§æƒ…况你就应该选择 &lt;b&gt;强制退出&lt;/b&gt; æ“作æ¥åœæ­¢è¯¥è™šæ‹Ÿç”µè„‘。&lt;/p&gt;</translation>
</message>
<message>
<source>S&amp;end the shutdown signal</source>
- <translation type="unfinished">正常关闭(&amp;e)</translation>
+ <translation>正常关闭(&amp;E)</translation>
</message>
<message>
<source>&lt;p&gt;Turns off the virtual machine.&lt;/p&gt;&lt;p&gt;Note that this action will stop machine execution immediately so that the guest operating system running inside it will not be able to perform a clean shutdown procedure which may result in &lt;i&gt;data loss&lt;/i&gt; inside the virtual machine. Selecting this action is recommended only if the virtual machine does not respond to the &lt;b&gt;Send the shutdown signal&lt;/b&gt; action.&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;强制退出.&lt;/p&gt;&lt;p&gt;æ示:该æ“作会马上终止该虚拟电脑的è¿è¡Œï¼Œå› æ­¤è¿è¡Œåœ¨é‡Œé¢çš„æ“作系统将没有机会æ¥æ‰§è¡Œä¸€æ¬¡æ­£å¸¸çš„关闭æ“作,这样å¯èƒ½ä¼šå¯¼è‡´è¯¥è™šæ‹Ÿç”µè„‘内å‘生 &lt;i&gt;æ•°æ®ä¸¢å¤±&lt;/i&gt;. 建议åªæœ‰åœ¨è™šæ‹Ÿç”µè„‘内的æ“作系统对 &lt;b&gt;正常关闭&lt;/b&gt; 没有å应时æ‰æ‰§è¡Œæ­¤æ“作.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;强制退出。&lt;/p&gt;&lt;p&gt;æ示:该æ“作会马上终止该虚拟电脑的è¿è¡Œï¼Œå› æ­¤è¿è¡Œåœ¨é‡Œé¢çš„æ“作系统将没有机会æ¥æ‰§è¡Œä¸€æ¬¡æ­£å¸¸çš„关闭æ“作,这样å¯èƒ½ä¼šå¯¼è‡´è¯¥è™šæ‹Ÿç”µè„‘内å‘生 &lt;i&gt;æ•°æ®ä¸¢å¤±&lt;/i&gt;. 建议åªæœ‰åœ¨è™šæ‹Ÿç”µè„‘内的æ“作系统对 &lt;b&gt;正常关闭&lt;/b&gt; 没有å应时æ‰æ‰§è¡Œæ­¤æ“作。&lt;/p&gt;</translation>
</message>
<message>
<source>&amp;Power off the machine</source>
- <translation type="unfinished">强制退出(&amp;P)</translation>
+ <translation>强制退出(&amp;P)</translation>
</message>
<message>
<source>Restore the machine state stored in the current snapshot</source>
- <translation type="unfinished">将虚拟电脑æ¢å¤åˆ°å½“å‰å¤‡ä»½ä¸­ä¿å­˜çš„状æ€</translation>
+ <translation>将虚拟电脑æ¢å¤åˆ°å½“å‰å¤‡ä»½ä¸­ä¿å­˜çš„状æ€</translation>
</message>
<message>
<source>&lt;p&gt;When checked, the machine will be returned to the state stored in the current snapshot after it is turned off. This is useful if you are sure that you want to discard the results of your last sessions and start again at that snapshot.&lt;/p&gt;</source>
- <translation type="unfinished">&lt;p&gt;选中,虚拟电脑关闭åŽå°†è¢«æ¢å¤åˆ°å½“å‰å¤‡ä»½ä¸­ä¿å­˜çš„状æ€. 如果你想清除当å‰è™šæ‹Ÿç”µè„‘的状æ€å¹¶å°†å®ƒæ¢å¤åˆ°å½“å‰å¤‡ä»½ä¸­ä¿å­˜çš„状æ€ï¼Œè¿™ç»å¸¸æ˜¯å¾ˆæœ‰ç”¨çš„.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;选中时,虚拟电脑关闭åŽå°†è¢«æ¢å¤åˆ°å½“å‰å¤‡ä»½ä¸­ä¿å­˜çš„状æ€. 如果你想清除当å‰è™šæ‹Ÿç”µè„‘的状æ€å¹¶å°†å®ƒæ¢å¤åˆ°å½“å‰å¤‡ä»½ä¸­ä¿å­˜çš„状æ€ï¼Œè¿™ç»å¸¸æ˜¯å¾ˆæœ‰ç”¨çš„。&lt;/p&gt;</translation>
</message>
<message>
<source>&amp;Restore current snapshot &apos;%1&apos;</source>
- <translation type="unfinished">æ¢å¤åˆ°å½“å‰å¤‡ä»½(&amp;R) &apos;%1&apos;</translation>
+ <translation>æ¢å¤åˆ°å½“å‰å¤‡ä»½(&amp;R) &apos;%1&apos;</translation>
</message>
</context>
<context>
<name>UIVMDesktop</name>
<message>
<source>&amp;Details</source>
- <translation type="unfinished"></translation>
+ <translation>明细(&amp;D)</translation>
</message>
<message>
<source>&amp;Snapshots</source>
- <translation type="unfinished">快速修å¤(&amp;S)</translation>
+ <translation>备份(&amp;S)</translation>
</message>
</context>
<context>
@@ -7470,89 +5133,47 @@ step and attach hard disks later using the VM Settings dialog.&lt;/p&gt;</source
<comment>Inaccessible VM tooltip (name, last state change)</comment>
<translation>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;br&gt;&lt;/nobr&gt;&lt;nobr&gt;ä¸èƒ½æ­£å¸¸è®¿é—®è‡ªä»Ž %2&lt;/nobr&gt;</translation>
</message>
- <message>
- <source>S&amp;how</source>
- <translation type="obsolete">显示(&amp;h)</translation>
- </message>
- <message>
- <source>Switch to the window of the selected virtual machine</source>
- <translation type="obsolete">切æ¢åˆ°æ‰€é€‰çš„虚拟电脑窗å£</translation>
- </message>
- <message>
- <source>S&amp;tart</source>
- <translation type="obsolete">开始(&amp;t)</translation>
- </message>
- <message>
- <source>Start the selected virtual machine</source>
- <translation type="obsolete">å¯åŠ¨æ‰€é€‰çš„虚拟电脑</translation>
- </message>
- <message>
- <source>R&amp;esume</source>
- <translation type="obsolete">唤醒(&amp;e)</translation>
- </message>
- <message>
- <source>Resume the execution of the virtual machine</source>
- <translation type="obsolete">唤醒被暂åœçš„虚拟电脑</translation>
- </message>
- <message>
- <source>&amp;Pause</source>
- <translation type="obsolete">æš‚åœ(&amp;P)</translation>
- </message>
- <message>
- <source>Suspend the execution of the virtual machine</source>
- <translation type="obsolete">将正在è¿è¡Œçš„虚拟电脑暂åœ</translation>
- </message>
</context>
<context>
<name>UIVMPreviewWindow</name>
<message>
<source>Update Disabled</source>
- <translation type="unfinished"></translation>
+ <translation>æ›´æ–°å·²ç¦ç”¨</translation>
</message>
<message>
<source>Every 0.5 s</source>
- <translation type="unfinished"></translation>
+ <translation>æ¯ 0.5 秒</translation>
</message>
<message>
<source>Every 1 s</source>
- <translation type="unfinished"></translation>
+ <translation>æ¯ 1 秒</translation>
</message>
<message>
<source>Every 2 s</source>
- <translation type="unfinished"></translation>
+ <translation>æ¯ 2 秒</translation>
</message>
<message>
<source>Every 5 s</source>
- <translation type="unfinished"></translation>
+ <translation>æ¯ 5 秒</translation>
</message>
<message>
<source>Every 10 s</source>
- <translation type="unfinished"></translation>
+ <translation>æ¯ 10 秒</translation>
</message>
<message>
<source>No Preview</source>
- <translation type="unfinished"></translation>
+ <translation>无预览</translation>
</message>
</context>
<context>
<name>VBoxAboutDlg</name>
<message>
<source>VirtualBox - About</source>
- <translation>VirtualBox - About</translation>
- </message>
- <message>
- <source>&lt;qt&gt;VirtualBox Graphical User Interface Version %1&lt;br&gt;
-%2&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;VirtualBox Graphical User Interface Version %1&lt;br&gt;
-%2&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;VirtualBox Graphical User Interface Version %1&lt;br&gt;%2&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;VirtualBox Graphical User Interface Version %1&lt;br&gt;%2&lt;/qt&gt;</translation>
+ <translation>VirtualBox - 关于</translation>
</message>
<message>
<source>VirtualBox Graphical User Interface</source>
- <translation>虚拟电脑控制å°å›¾å½¢ç”¨æˆ·ç•Œé¢</translation>
+ <translation>VirtualBox 图形用户界é¢</translation>
</message>
<message>
<source>Version %1</source>
@@ -7560,1147 +5181,6 @@ step and attach hard disks later using the VM Settings dialog.&lt;/p&gt;</source
</message>
</context>
<context>
- <name>VBoxAboutNonOSEDlg</name>
- <message>
- <source>VirtualBox - About</source>
- <translation type="obsolete">VirtualBox - About</translation>
- </message>
- <message>
- <source>VirtualBox Graphical User Interface
-Version %1</source>
- <translation type="obsolete">VirtualBox Graphical User Interface
-Version %1</translation>
- </message>
-</context>
-<context>
- <name>VBoxAddNIDialog</name>
- <message>
- <source>Add Host Interface</source>
- <translation type="obsolete">Add Host Interface</translation>
- </message>
- <message>
- <source>Interface Name</source>
- <translation type="obsolete">ç•Œé¢å称</translation>
- </message>
- <message>
- <source>Descriptive name of the new network interface</source>
- <translation type="obsolete">新增网络界é¢æè¿°ä¿¡æ¯</translation>
- </message>
- <message>
- <source>&amp;OK</source>
- <translation type="obsolete">确定(&amp;O)</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
-</context>
-<context>
- <name>VBoxAddSFDialog</name>
- <message>
- <source>Add Share</source>
- <translation type="obsolete">添加数æ®ç©ºé—´</translation>
- </message>
- <message>
- <source>Edit Share</source>
- <translation type="obsolete">编辑数æ®ç©ºé—´</translation>
- </message>
- <message>
- <source>Enter existing path for the shared folder here</source>
- <translation type="obsolete">在这里输入用于网络共享的文件夹</translation>
- </message>
- <message>
- <source>Enter name for the shared folder to be created</source>
- <translation type="obsolete">为å³å°†å»ºç«‹çš„网络共享指定一个å称</translation>
- </message>
- <message>
- <source>Click to invoke &lt;open folder&gt; dialog</source>
- <translation type="obsolete">å•å‡»æ­¤å¤„打开文件æµè§ˆå¯¹è¯æ¡†</translation>
- </message>
- <message>
- <source>Select a folder to share</source>
- <translation type="obsolete">指定一个数æ®ç©ºé—´</translation>
- </message>
- <message>
- <source>Folder Path</source>
- <translation type="obsolete">æ•°æ®ç©ºé—´ä½ç½®</translation>
- </message>
- <message>
- <source>Folder Name</source>
- <translation type="obsolete">æ•°æ®ç©ºé—´å称</translation>
- </message>
- <message>
- <source>Displays the path to an existing folder on the host PC.</source>
- <translation type="obsolete">显示数æ®ç©ºé—´æ‰€åœ¨ä½ç½®.</translation>
- </message>
- <message>
- <source>Displays the name of the shared folder (as it will be seen by the guest OS).</source>
- <translation type="obsolete">显示数æ®ç©ºé—´å称(虚拟电脑内的系统需通过该å称æ¥è®¿é—®æœ¬æ•°æ®ç©ºé—´).</translation>
- </message>
- <message>
- <source>Opens the dialog to select a folder.</source>
- <translation type="obsolete">打开用于选择数æ®ç©ºé—´çš„对è¯æ¡†.</translation>
- </message>
- <message>
- <source>OK</source>
- <translation type="obsolete">确定</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>&amp;OK</source>
- <translation type="obsolete">确定(&amp;O)</translation>
- </message>
- <message>
- <source>&amp;Make Permanent</source>
- <translation type="obsolete">固定分é…(&amp;M)</translation>
- </message>
- <message>
- <source>&amp;Read-only</source>
- <translation type="obsolete">åªè¯»åˆ†é…(&amp;R)</translation>
- </message>
- <message>
- <source>When checked, the guest OS will not be able to write to the specified shared folder.</source>
- <translation type="obsolete">选中,该数æ®ç©ºé—´åœ¨è™šæ‹Ÿç”µè„‘内就å˜ä¸ºåªè¯».</translation>
- </message>
-</context>
-<context>
- <name>VBoxCloseVMDlg</name>
- <message>
- <source>Close Virtual Machine</source>
- <translation type="obsolete">关闭虚拟电脑</translation>
- </message>
- <message>
- <source>You want to:</source>
- <translation type="obsolete">选择关闭方å¼:</translation>
- </message>
- <message>
- <source>&amp;Save the machine state</source>
- <translation type="obsolete">快速休眠(&amp;S)</translation>
- </message>
- <message>
- <source>Alt+S</source>
- <translation type="obsolete">Als+S</translation>
- </message>
- <message>
- <source>&amp;Power off the machine</source>
- <translation type="obsolete">强制退出(&amp;P)</translation>
- </message>
- <message>
- <source>Alt+P</source>
- <translation type="obsolete">Alt+P</translation>
- </message>
- <message>
- <source>&amp;Revert to the current snapshot</source>
- <translation type="obsolete">æ¢å¤æœ€è¿‘备份(&amp;R)</translation>
- </message>
- <message>
- <source>Alt+R</source>
- <translation type="obsolete">Alt+R</translation>
- </message>
- <message>
- <source>Revert the machine state to the state stored in the current snapshot</source>
- <translation type="obsolete">强制退出并æ¢å¤æœ€è¿‘备份</translation>
- </message>
- <message>
- <source>Help</source>
- <translation type="obsolete">帮助</translation>
- </message>
- <message>
- <source>F1</source>
- <translation type="obsolete">F1</translation>
- </message>
- <message>
- <source>&amp;OK</source>
- <translation type="obsolete">确定(&amp;O)</translation>
- </message>
- <message>
- <source>Alt+O</source>
- <translation type="obsolete">Alt+O</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>&lt;p&gt;Saves the current execution state of the virtual machine to the physical hard disk of the host PC.&lt;/p&gt;
-&lt;p&gt;Next time this machine is started, it will be restored from the saved state and continue execution from the same place you saved it at, which will let you continue your work immediately.&lt;/p&gt;
-&lt;p&gt;Note that saving the machine state may take a long time, depending on the guest operating system type and the amount of memory you assigned to the virtual machine.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;将虚拟电脑的当å‰è¿è¡ŒçŠ¶æ€ä¿å­˜åˆ°ä¸»æœºç¡¬ç›˜ä¸Š.&lt;/p&gt;
-&lt;p&gt;下次该虚拟电脑å¯åŠ¨æ—¶ï¼Œå°†ç›´æŽ¥è¿›åˆ°å½“å‰ä¿å­˜æ—¶çš„状æ€ï¼Œä¹Ÿå°±æ˜¯è¯´ä½ èƒ½ç«‹å³ç»§ç»­æœªå®Œçš„工作.&lt;/p&gt;
-&lt;p&gt;æ示:快速休眠所需è¦çš„时间å–决于虚拟电脑内所装的æ“作系统类型åŠä½ ä¸ºå®ƒåˆ†é…的内存大å°.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>S&amp;end the shutdown signal</source>
- <translation type="obsolete">正常关闭(&amp;e)</translation>
- </message>
- <message>
- <source>&lt;p&gt;Sends the ACPI Power Button press event to the virtual machine.&lt;/p&gt;
-&lt;p&gt;Normally, the guest operating system running inside the virtual machine will detect this event and perform a clean shutdown procedure. This is a recommended way to turn off the virtual machine because all applications running inside it will get a chance to save their data and state.&lt;/p&gt;
-&lt;p&gt;If the machine doesn&apos;t respond to this action then the guest operating system may be misconfigured or doesn&apos;t understand ACPI Power Button events at all. In this case you should select the &lt;b&gt;Power off the machine&lt;/b&gt; action to stop virtual machine execution.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;å‘é€å…³é—­ä¿¡å·åˆ°è™šæ‹Ÿç”µè„‘.&lt;/p&gt;
-&lt;p&gt;通常情况下,è¿è¡Œåœ¨è™šæ‹Ÿç”µè„‘内的æ“作系统会检测到这个信å·å¹¶æ‰§è¡Œæ­£å¸¸çš„关闭æµç¨‹. 这是我们推è的关闭虚拟电脑的最佳方å¼ï¼Œå› ä¸ºè¿™æ ·è¿è¡Œåœ¨è™šæ‹Ÿç”µè„‘内的程åºéƒ½æœ‰æœºä¼šæ¥ä¿å­˜å®ƒçš„æ•°æ®å’ŒçŠ¶æ€.&lt;/p&gt;
-&lt;p&gt;如果虚拟电脑内的æ“作系统对这个信å·æ²¡æœ‰å应,那å¯èƒ½æ˜¯è®¾ç½®æœ‰è¯¯æˆ–ä¸æ”¯æŒè¯¥åŠŸèƒ½. 碰到这ç§æƒ…况你就应该选择 &lt;b&gt;强制退出&lt;/b&gt; æ“作æ¥åœæ­¢è¯¥è™šæ‹Ÿç”µè„‘.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Turns off the virtual machine.&lt;/p&gt;
-&lt;p&gt;Note that this action will stop machine execution immediately so that the guest operating system running inside it will not be able to perform a clean shutdown procedure which may result in &lt;i&gt;data loss&lt;/i&gt; inside the virtual machine. Selecting this action is recommended only if the virtual machine does not respond to the &lt;b&gt;Send the shutdown signal&lt;/b&gt; action.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;强制退出.&lt;/p&gt;
-&lt;p&gt;æ示:该æ“作会马上终止该虚拟电脑的è¿è¡Œï¼Œå› æ­¤è¿è¡Œåœ¨é‡Œé¢çš„æ“作系统将没有机会æ¥æ‰§è¡Œä¸€æ¬¡æ­£å¸¸çš„关闭æ“作,这样å¯èƒ½ä¼šå¯¼è‡´è¯¥è™šæ‹Ÿç”µè„‘内å‘生 &lt;i&gt;æ•°æ®ä¸¢å¤±&lt;/i&gt;. 建议åªæœ‰åœ¨è™šæ‹Ÿç”µè„‘内的æ“作系统对 &lt;b&gt;正常关闭&lt;/b&gt; 没有å应时æ‰æ‰§è¡Œæ­¤æ“作.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;When checked, the machine will be returned to the state stored in the current snapshot after it is turned off. This is useful if you are sure that you want to discard the results of your last sessions and start again at that snapshot.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;选中,虚拟电脑关闭åŽå°†è¢«æ¢å¤åˆ°å½“å‰å¤‡ä»½ä¸­ä¿å­˜çš„状æ€. 如果你想清除当å‰è™šæ‹Ÿç”µè„‘的状æ€å¹¶å°†å®ƒæ¢å¤åˆ°å½“å‰å¤‡ä»½ä¸­ä¿å­˜çš„状æ€ï¼Œè¿™ç»å¸¸æ˜¯å¾ˆæœ‰ç”¨çš„.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Saves the current execution state of the virtual machine to the physical hard disk of the host PC.&lt;/p&gt;&lt;p&gt;Next time this machine is started, it will be restored from the saved state and continue execution from the same place you saved it at, which will let you continue your work immediately.&lt;/p&gt;&lt;p&gt;Note that saving the machine state may take a long time, depending on the guest operating system type and the amount of memory you assigned to the virtual machine.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;将虚拟电脑的当å‰è¿è¡ŒçŠ¶æ€ä¿å­˜åˆ°ä¸»æœºç¡¬ç›˜ä¸Š.&lt;/p&gt;&lt;p&gt;下次该虚拟电脑å¯åŠ¨æ—¶ï¼Œå°†ç›´æŽ¥è¿›åˆ°å½“å‰ä¿å­˜æ—¶çš„状æ€ï¼Œä¹Ÿå°±æ˜¯è¯´ä½ èƒ½ç«‹å³ç»§ç»­æœªå®Œçš„工作.&lt;/p&gt;&lt;p&gt;æ示:快速休眠所需è¦çš„时间å–决于虚拟电脑内所装的æ“作系统类型åŠä½ ä¸ºå®ƒåˆ†é…的内存大å°.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Sends the ACPI Power Button press event to the virtual machine.&lt;/p&gt;&lt;p&gt;Normally, the guest operating system running inside the virtual machine will detect this event and perform a clean shutdown procedure. This is a recommended way to turn off the virtual machine because all applications running inside it will get a chance to save their data and state.&lt;/p&gt;&lt;p&gt;If the machine doesn&apos;t respond to this action then the guest operating system may be misconfigured or doesn&apos;t understand ACPI Power Button events at all. In this case you should select the &lt;b&gt;Power off the machine&lt;/b&gt; action to stop virtual machine execution.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;å‘é€å…³é—­ä¿¡å·åˆ°è™šæ‹Ÿç”µè„‘.&lt;/p&gt;&lt;p&gt;通常情况下,è¿è¡Œåœ¨è™šæ‹Ÿç”µè„‘内的æ“作系统会检测到这个信å·å¹¶æ‰§è¡Œæ­£å¸¸çš„关闭æµç¨‹. 这是我们推è的关闭虚拟电脑的最佳方å¼ï¼Œå› ä¸ºè¿™æ ·è¿è¡Œåœ¨è™šæ‹Ÿç”µè„‘内的程åºéƒ½æœ‰æœºä¼šæ¥ä¿å­˜å®ƒçš„æ•°æ®å’ŒçŠ¶æ€.&lt;/p&gt;&lt;p&gt;如果虚拟电脑内的æ“作系统对这个信å·æ²¡æœ‰å应,那å¯èƒ½æ˜¯è®¾ç½®æœ‰è¯¯æˆ–ä¸æ”¯æŒè¯¥åŠŸèƒ½. 碰到这ç§æƒ…况你就应该选择 &lt;b&gt;强制退出&lt;/b&gt; æ“作æ¥åœæ­¢è¯¥è™šæ‹Ÿç”µè„‘.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Turns off the virtual machine.&lt;/p&gt;&lt;p&gt;Note that this action will stop machine execution immediately so that the guest operating system running inside it will not be able to perform a clean shutdown procedure which may result in &lt;i&gt;data loss&lt;/i&gt; inside the virtual machine. Selecting this action is recommended only if the virtual machine does not respond to the &lt;b&gt;Send the shutdown signal&lt;/b&gt; action.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;强制退出.&lt;/p&gt;&lt;p&gt;æ示:该æ“作会马上终止该虚拟电脑的è¿è¡Œï¼Œå› æ­¤è¿è¡Œåœ¨é‡Œé¢çš„æ“作系统将没有机会æ¥æ‰§è¡Œä¸€æ¬¡æ­£å¸¸çš„关闭æ“作,这样å¯èƒ½ä¼šå¯¼è‡´è¯¥è™šæ‹Ÿç”µè„‘内å‘生 &lt;i&gt;æ•°æ®ä¸¢å¤±&lt;/i&gt;. 建议åªæœ‰åœ¨è™šæ‹Ÿç”µè„‘内的æ“作系统对 &lt;b&gt;正常关闭&lt;/b&gt; 没有å应时æ‰æ‰§è¡Œæ­¤æ“作.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Restore the machine state stored in the current snapshot</source>
- <translation type="obsolete">将虚拟电脑æ¢å¤åˆ°å½“å‰å¤‡ä»½ä¸­ä¿å­˜çš„状æ€</translation>
- </message>
- <message>
- <source>&amp;Restore current snapshot &apos;%1&apos;</source>
- <translation type="obsolete">æ¢å¤åˆ°å½“å‰å¤‡ä»½(&amp;R) &apos;%1&apos;</translation>
- </message>
-</context>
-<context>
- <name>VBoxConsoleWnd</name>
- <message>
- <source>&lt;nobr&gt;[&lt;b&gt;not attached&lt;/b&gt;]&lt;/nobr&gt;</source>
- <comment>USB device indicator</comment>
- <translation type="obsolete">&lt;nobr&gt;[&lt;b&gt;没有分é…&lt;/b&gt;]&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;[&lt;b&gt;USB Controller is disabled&lt;/b&gt;]&lt;/nobr&gt;</source>
- <comment>USB device indicator</comment>
- <translation type="obsolete">&lt;nobr&gt;[&lt;b&gt;USB 控制器未å¯ç”¨&lt;/b&gt;]&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>VirtualBox OSE</source>
- <translation type="obsolete">VirtualBox OSE</translation>
- </message>
- <message>
- <source>innotek VirtualBox</source>
- <translation type="obsolete">innotek VirtualBox</translation>
- </message>
- <message>
- <source>&amp;Fullscreen Mode</source>
- <translation type="obsolete">å…¨å±æ¨¡å¼(&amp;F)</translation>
- </message>
- <message>
- <source>Switch to fullscreen mode</source>
- <translation type="obsolete">切æ¢åˆ°å…¨å±æ¨¡å¼</translation>
- </message>
- <message>
- <source>Mouse Integration</source>
- <comment>enable/disable...</comment>
- <translation type="obsolete">自动æ•èŽ·é¼ æ ‡</translation>
- </message>
- <message>
- <source>Auto-resize Guest Display</source>
- <comment>enable/disable...</comment>
- <translation type="obsolete">自动调整显示尺寸</translation>
- </message>
- <message>
- <source>Auto-resize &amp;Guest Display</source>
- <translation type="obsolete">自动调整显示尺寸(&amp;G)</translation>
- </message>
- <message>
- <source>Automatically resize the guest display when the window is resized (requires Guest Additions)</source>
- <translation type="obsolete">当窗å£å¤§å°å˜åŠ¨æ—¶è‡ªåŠ¨è°ƒæ•´è™šæ‹Ÿç”µè„‘内的显示尺寸(需è¦åœ¨è™šæ‹Ÿç”µè„‘上安装增强功能包)</translation>
- </message>
- <message>
- <source>&amp;Adjust Window Size</source>
- <translation type="obsolete">自动调整窗å£å¤§å°(&amp;A)</translation>
- </message>
- <message>
- <source>Adjust window size and position to best fit the guest display</source>
- <translation type="obsolete">自动调整窗å£å°ºå¯¸å’Œä½ç½®ä»¥é€‚应虚拟电脑内的显示尺寸</translation>
- </message>
- <message>
- <source>&amp;Insert Ctrl-Alt-Del</source>
- <translation type="obsolete">å‘é€ Ctrl-Alt-Del (&amp;E)</translation>
- </message>
- <message>
- <source>Send the Ctrl-Alt-Del sequence to the virtual machine</source>
- <translation type="obsolete">å‘é€ Ctrl-Alt-Del 键盘åºåˆ—到虚拟电脑</translation>
- </message>
- <message>
- <source>&amp;Insert Ctrl-Alt-Backspace</source>
- <translation type="obsolete">å‘é€ Ctrl-Alt-Backspace (&amp;B)</translation>
- </message>
- <message>
- <source>Send the Ctrl-Alt-Backspace sequence to the virtual machine</source>
- <translation type="obsolete">å‘é€ Ctrl-Alt-Backspace 键盘åºåˆ—到虚拟电脑</translation>
- </message>
- <message>
- <source>&amp;Reset</source>
- <translation type="obsolete">é‡å¯ (&amp;R)</translation>
- </message>
- <message>
- <source>Reset the virtual machine</source>
- <translation type="obsolete">é‡æ–°å¯åŠ¨è™šæ‹Ÿç”µè„‘</translation>
- </message>
- <message>
- <source>ACPI S&amp;hutdown</source>
- <translation type="obsolete">正常关闭 (&amp;H)</translation>
- </message>
- <message>
- <source>Send the ACPI Power Button press event to the virtual machine</source>
- <translation type="obsolete">å‘é€å…³é—­ä¿¡å·åˆ°è™šæ‹Ÿç”µè„‘</translation>
- </message>
- <message>
- <source>&amp;Close...</source>
- <translation type="obsolete">退出(&amp;C)...</translation>
- </message>
- <message>
- <source>Close the virtual machine</source>
- <translation type="obsolete">关闭虚拟电脑</translation>
- </message>
- <message>
- <source>Take &amp;Snapshot...</source>
- <translation type="obsolete">生æˆå¤‡ä»½(&amp;S)...</translation>
- </message>
- <message>
- <source>Take a snapshot of the virtual machine</source>
- <translation type="obsolete">为当å‰è™šæ‹Ÿç”µè„‘生æˆä¸€ä¸ªå¤‡ä»½</translation>
- </message>
- <message>
- <source>&amp;Floppy Image...</source>
- <translation type="obsolete">虚拟软盘(&amp;F)...</translation>
- </message>
- <message>
- <source>Mount a floppy image file</source>
- <translation type="obsolete">分é…一个虚拟软盘</translation>
- </message>
- <message>
- <source>Unmount F&amp;loppy</source>
- <translation type="obsolete">释放软驱(&amp;L)</translation>
- </message>
- <message>
- <source>Unmount the currently mounted floppy media</source>
- <translation type="obsolete">释放当å‰åˆ†é…的软驱</translation>
- </message>
- <message>
- <source>&amp;CD/DVD-ROM Image...</source>
- <translation type="obsolete">虚拟光盘(&amp;C)...</translation>
- </message>
- <message>
- <source>Mount a CD/DVD-ROM image file</source>
- <translation type="obsolete">分é…一个虚拟光盘</translation>
- </message>
- <message>
- <source>Unmount C&amp;D/DVD-ROM</source>
- <translation type="obsolete">释放光驱(&amp;D)</translation>
- </message>
- <message>
- <source>Unmount the currently mounted CD/DVD-ROM media</source>
- <translation type="obsolete">释放当å‰åˆ†é…的光驱</translation>
- </message>
- <message>
- <source>Remote Desktop (RDP) Server</source>
- <comment>enable/disable...</comment>
- <translation type="obsolete">(RDP)远程桌é¢æœåŠ¡</translation>
- </message>
- <message>
- <source>Remote Dis&amp;play</source>
- <translation type="obsolete">开关远程桌é¢(&amp;P)</translation>
- </message>
- <message>
- <source>Enable or disable remote desktop (RDP) connections to this machine</source>
- <translation type="obsolete">å¯ç”¨æˆ–ç¦ç”¨åˆ°å½“å‰è™šæ‹Ÿç”µè„‘的远程桌é¢è¿žæŽ¥</translation>
- </message>
- <message>
- <source>Open</source>
- <translation type="obsolete">打开</translation>
- </message>
- <message>
- <source>&amp;Shared Folders...</source>
- <translation type="obsolete">分é…æ•°æ®ç©ºé—´(&amp;S)...</translation>
- </message>
- <message>
- <source>Create or modify shared folders</source>
- <translation type="obsolete">打开数æ®ç©ºé—´å¯¹è¯æ¡†</translation>
- </message>
- <message>
- <source>&amp;Install Guest Additions...</source>
- <translation type="obsolete">安装增强功能(&amp;I)...</translation>
- </message>
- <message>
- <source>Mount the Guest Additions installation image</source>
- <translation type="obsolete">打开增强功能包所在虚拟光盘</translation>
- </message>
- <message>
- <source>&amp;Statistics...</source>
- <translation type="obsolete">统计信æ¯(&amp;S)...</translation>
- </message>
- <message>
- <source>&amp;Command line...</source>
- <translation type="obsolete">命令行(&amp;C)...</translation>
- </message>
- <message>
- <source>&amp;VirtualBox Web Site...</source>
- <translation type="obsolete">&amp;VirtualBox Web Site...</translation>
- </message>
- <message>
- <source>Open the browser and go to the VirtualBox product web site</source>
- <translation type="obsolete">Open the browser and go to the VirtualBox product web site</translation>
- </message>
- <message>
- <source>&amp;About VirtualBox...</source>
- <translation type="obsolete">&amp;About VirtualBox...</translation>
- </message>
- <message>
- <source>Show a dialog with product information</source>
- <translation type="obsolete">Show a dialog with product information</translation>
- </message>
- <message>
- <source>&amp;Reset All Warnings</source>
- <translation type="obsolete">&amp;Reset All Warnings</translation>
- </message>
- <message>
- <source>Go back to showing all suppressed warnings and messages</source>
- <translation type="obsolete">Go back to showing all suppressed warnings and messages</translation>
- </message>
- <message>
- <source>Mount &amp;Floppy</source>
- <translation type="obsolete">分é…软驱(&amp;F)</translation>
- </message>
- <message>
- <source>Mount &amp;CD/DVD-ROM</source>
- <translation type="obsolete">分é…光驱(&amp;C)</translation>
- </message>
- <message>
- <source>&amp;USB Devices</source>
- <translation type="obsolete">分é…USB设备(&amp;U)</translation>
- </message>
- <message>
- <source>&amp;VM</source>
- <translation type="obsolete">电脑(&amp;V)</translation>
- </message>
- <message>
- <source>&amp;Devices</source>
- <translation type="obsolete">设备(&amp;D)</translation>
- </message>
- <message>
- <source>De&amp;bug</source>
- <translation type="obsolete">调试(&amp;b)</translation>
- </message>
- <message>
- <source>&amp;Help</source>
- <translation type="obsolete">帮助(&amp;H)</translation>
- </message>
- <message>
- <source>Shows the currently assigned Host key.&lt;br&gt;This key, when pressed alone, toggles the the keyboard and mouse capture state. It can also be used in combination with other keys to quickly perform actions from the main menu.</source>
- <translation type="obsolete">当å‰ç»„åˆé”®.</translation>
- </message>
- <message>
- <source>Provides quick access to shared folders (by a right mouse button click).&lt;br&gt;Note that the shared folders feature requires Guest Additions to be installed in the guest OS.</source>
- <translation type="obsolete">用鼠标å³é”®å•å‡»æ­¤å¤„å¯è®¿é—®æ•°æ®ç©ºé—´.</translation>
- </message>
- <message>
- <source>&lt;br&gt;[&lt;b&gt;not attached&lt;/b&gt;]</source>
- <comment>HDD tooltip</comment>
- <translation type="obsolete">&lt;br&gt;[&lt;b&gt;没有分é…&lt;/b&gt;]</translation>
- </message>
- <message>
- <source>Indicates whether the Remote Display (VRDP Server) is enabled (&lt;img src=:/vrdp_16px.png/&gt;) or not (&lt;img src=:/vrdp_disabled_16px.png/&gt;)</source>
- <translation type="obsolete">指示远程桌é¢æœåŠ¡ (VRDP Server) å·²å¯ç”¨ (&lt;img src=:/vrdp_16px.png/&gt;) 或被ç¦ç”¨ (&lt;img src=:/vrdp_disabled_16px.png/&gt;)</translation>
- </message>
- <message>
- <source>&lt;hr&gt;The VRDP Server is listening on port %1</source>
- <translation type="obsolete">&lt;hr&gt;VRDP æœåŠ¡å™¨ç›‘å¬ç«¯å£ %1</translation>
- </message>
- <message>
- <source>&amp;Pause</source>
- <translation type="obsolete">æš‚åœ(&amp;P)</translation>
- </message>
- <message>
- <source>Suspend the execution of the virtual machine</source>
- <translation type="obsolete">将正在è¿è¡Œçš„虚拟电脑暂åœ</translation>
- </message>
- <message>
- <source>R&amp;esume</source>
- <translation type="obsolete">唤醒(&amp;e)</translation>
- </message>
- <message>
- <source>Resume the execution of the virtual machine</source>
- <translation type="obsolete">唤醒休眠的虚拟电脑</translation>
- </message>
- <message>
- <source>Disable &amp;Mouse Integration</source>
- <translation type="obsolete">ç¦æ­¢è‡ªåŠ¨ç‹¬å é¼ æ ‡(&amp;M)</translation>
- </message>
- <message>
- <source>Temporarily disable host mouse pointer integration</source>
- <translation type="obsolete">临时ç¦æ­¢è‡ªåŠ¨ç‹¬å é¼ æ ‡</translation>
- </message>
- <message>
- <source>Enable &amp;Mouse Integration</source>
- <translation type="obsolete">å¯ç”¨è‡ªåŠ¨æ•èŽ·é¼ æ ‡(&amp;M)</translation>
- </message>
- <message>
- <source>Enable temporarily disabled host mouse pointer integration</source>
- <translation type="obsolete">å¯ä¸´æ—¶ç¦æ­¢è‡ªåŠ¨ç‹¬å é¼ æ ‡</translation>
- </message>
- <message>
- <source>Snapshot %1</source>
- <translation type="obsolete">备份 %1</translation>
- </message>
- <message>
- <source>&lt;p&gt;Failed to find the VirtualBox Guest Additions CD image &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; or &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;ä¸èƒ½å‘现虚拟电脑增强功能包虚拟光盘 &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; 或者 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Host Drive </source>
- <translation type="obsolete">物ç†è®¾å¤‡</translation>
- </message>
- <message>
- <source>&amp;Machine</source>
- <translation type="obsolete">控制(&amp;M)</translation>
- </message>
- <message>
- <source>connected</source>
- <comment>Network adapters indicator</comment>
- <translation type="obsolete">连接</translation>
- </message>
- <message>
- <source>disconnected</source>
- <comment>Network adapters indicator</comment>
- <translation type="obsolete">未连接</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;All network adapters are disabled&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>Network adapters indicator</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;ç¦ç”¨æ‰€æœ‰ç½‘络连接&lt;/b&gt;&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&amp;Network Adapters</source>
- <translation type="obsolete">选择网络连接(&amp;N)</translation>
- </message>
- <message>
- <source>Adapter %1</source>
- <comment>network</comment>
- <translation type="obsolete">网络连接 %1</translation>
- </message>
- <message>
- <source>Mount the selected physical drive of the host PC</source>
- <comment>Floppy tip</comment>
- <translation type="obsolete">分é…所选中的物ç†è½¯é©±</translation>
- </message>
- <message>
- <source>Mount the selected physical drive of the host PC</source>
- <comment>CD/DVD tip</comment>
- <translation type="obsolete">分é…所选中的物ç†å…‰é©±</translation>
- </message>
- <message>
- <source>Disconnect the cable from the selected virtual network adapter</source>
- <translation type="obsolete">ç¦ç”¨æ‰€é€‰ç½‘络连接</translation>
- </message>
- <message>
- <source>Connect the cable to the selected virtual network adapter</source>
- <translation type="obsolete">å¯ç”¨æ‰€é€‰ç½‘络连接</translation>
- </message>
- <message>
- <source>Seam&amp;less Mode</source>
- <translation type="obsolete">æ— ç¼æ¨¡å¼(&amp;l)</translation>
- </message>
- <message>
- <source>Switch to seamless desktop integration mode</source>
- <translation type="obsolete">切æ¢åˆ°æ— ç¼æ¨¡å¼</translation>
- </message>
- <message>
- <source>&lt;qt&gt;&lt;nobr&gt;Indicates the activity of the floppy media:&lt;/nobr&gt;%1&lt;/qt&gt;</source>
- <comment>Floppy tooltip</comment>
- <translation type="obsolete">&lt;qt&gt;&lt;nobr&gt;指示软驱活动状æ€:&lt;/nobr&gt;%1&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Host Drive&lt;/b&gt;: %1&lt;/nobr&gt;</source>
- <comment>Floppy tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;物ç†è½¯é©±&lt;/b&gt;: %1&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Image&lt;/b&gt;: %1&lt;/nobr&gt;</source>
- <comment>Floppy tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;虚拟软盘&lt;/b&gt;: %1&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No media mounted&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>Floppy tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;未æ’入介质&lt;/b&gt;&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;&lt;nobr&gt;Indicates the activity of the CD/DVD-ROM media:&lt;/nobr&gt;%1&lt;/qt&gt;</source>
- <comment>DVD-ROM tooltip</comment>
- <translation type="obsolete">&lt;qt&gt;&lt;nobr&gt;指示光驱活动状æ€:&lt;/nobr&gt;%1&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Host Drive&lt;/b&gt;: %1&lt;/nobr&gt;</source>
- <comment>DVD-ROM tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;物ç†å…‰é©±&lt;/b&gt;: %1&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Image&lt;/b&gt;: %1&lt;/nobr&gt;</source>
- <comment>DVD-ROM tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;虚拟光盘&lt;/b&gt;: %1&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No media mounted&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>DVD-ROM tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;未æ’入介质&lt;/b&gt;&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;&lt;nobr&gt;Indicates activity on the the virtual hard disks:&lt;/nobr&gt;%1&lt;/qt&gt;</source>
- <comment>HDD tooltip</comment>
- <translation type="obsolete">&lt;qt&gt;&lt;nobr&gt;指示虚拟硬盘活动状æ€:&lt;/nobr&gt;%1&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No hard disks attached&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>HDD tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;未分é…硬盘&lt;/b&gt;&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;&lt;nobr&gt;Indicates the activity of the network interfaces:&lt;/nobr&gt;%1&lt;/qt&gt;</source>
- <comment>Network adapters tooltip</comment>
- <translation type="obsolete">&lt;qt&gt;&lt;nobr&gt;指示网络活动状æ€:&lt;/nobr&gt;%1&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Adapter %1 (%2)&lt;/b&gt;: cable %3&lt;/nobr&gt;</source>
- <comment>Network adapters tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;网络连接 %1 (%2)&lt;/b&gt;:%3&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>connected</source>
- <comment>Network adapters tooltip</comment>
- <translation type="obsolete">å·²å¯ç”¨</translation>
- </message>
- <message>
- <source>disconnected</source>
- <comment>Network adapters tooltip</comment>
- <translation type="obsolete">å·²ç¦ç”¨</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;All network adapters are disabled&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>Network adapters tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;ç¦ç”¨æ‰€æœ‰ç½‘络连接&lt;/b&gt;&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;&lt;nobr&gt;Indicates the activity of the attached USB devices:&lt;/nobr&gt;%1&lt;/qt&gt;</source>
- <comment>USB device tooltip</comment>
- <translation type="obsolete">&lt;qt&gt;&lt;nobr&gt;指示USB设备活动状æ€:&lt;/nobr&gt;%1&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No USB devices attached&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>USB device tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;未分é…USB设备&lt;/b&gt;&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;USB Controller is disabled&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>USB device tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;USB控制器已被ç¦ç”¨&lt;/b&gt;&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;&lt;nobr&gt;Indicates the activity of the machineof the machine&apos;sapos;s shared folders: shared folders:&lt;/nobr&gt;%1&lt;/qt&gt;</source>
- <comment>Shared folders tooltip</comment>
- <translation type="obsolete">&lt;qt&gt;&lt;nobr&gt;指示数æ®ç©ºé—´æ´»åŠ¨çŠ¶æ€:&lt;/nobr&gt;%1&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No shared folders&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>Shared folders tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;未分é…æ•°æ®ç©ºé—´&lt;/b&gt;&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&amp;Contents...</source>
- <translation type="obsolete">内容(&amp;C)...</translation>
- </message>
- <message>
- <source>F1</source>
- <translation type="obsolete">F1</translation>
- </message>
- <message>
- <source>Show the online help contents</source>
- <translation type="obsolete">Show the online help contents</translation>
- </message>
- <message>
- <source>R&amp;egister VirtualBox...</source>
- <translation type="obsolete">R&amp;egister VirtualBox...</translation>
- </message>
- <message>
- <source>Open VirtualBox registration form</source>
- <translation type="obsolete">Open VirtualBox registration form</translation>
- </message>
- <message>
- <source>Sun xVM VirtualBox</source>
- <translation type="obsolete">Sun xVM VirtualBox</translation>
- </message>
- <message>
- <source>Session I&amp;nformation Dialog</source>
- <translation type="obsolete">è¿è¡ŒçŠ¶æ€(&amp;n)</translation>
- </message>
- <message>
- <source>Show Session Information Dialog</source>
- <translation type="obsolete">显示当å‰è¿è¡ŒçŠ¶æ€ä¿¡æ¯</translation>
- </message>
- <message>
- <source>&amp;Statistics...</source>
- <comment>debug action</comment>
- <translation type="obsolete">统计信æ¯(&amp;S)...</translation>
- </message>
- <message>
- <source>&amp;Command Line...</source>
- <comment>debug action</comment>
- <translation type="obsolete">命令行(&amp;C)...</translation>
- </message>
- <message>
- <source>&amp;Logging...</source>
- <comment>debug action</comment>
- <translation type="obsolete">ä¿å­˜æ—¥å¿—(&amp;L)...</translation>
- </message>
- <message>
- <source>Indicates whether the keyboard is captured by the guest OS (&lt;img src=:/hostkey_captured_16px.png/&gt;) or not (&lt;img src=:/hostkey_16px.png/&gt;).</source>
- <translation type="obsolete">指示键盘已被虚拟电脑æ•èŽ· (&lt;img src=:/hostkey_captured_16px.png/&gt;) 或未被æ•èŽ· (&lt;img src=:/hostkey_16px.png/&gt;).</translation>
- </message>
- <message>
- <source>Shows the currently assigned Host key.&lt;br&gt;This key, when pressed alone, toggles the keyboard and mouse capture state. It can also be used in combination with other keys to quickly perform actions from the main menu.</source>
- <translation type="obsolete">显示当å‰åˆ†é…的组åˆé”®.&lt;br&gt;å•ç‹¬ä½¿ç”¨è¯¥é”®ï¼Œå¯ç”¨äºŽåˆ‡æ¢è™šæ‹Ÿç”µè„‘内键盘和鼠标的æ•èŽ·çŠ¶æ€. 与其它键è”åˆä½¿ç”¨ï¼Œå¯å¿«é€Ÿæ‰§è¡Œä¸€äº›å¸¸ç”¨æ“作.</translation>
- </message>
- <message>
- <source>Sun VirtualBox</source>
- <translation type="obsolete">Sun VirtualBox</translation>
- </message>
- <message>
- <source>Indicates the status of the hardware virtualization features used by this virtual machine:&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%1:&lt;/b&gt;&amp;nbsp;%2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%3:&lt;/b&gt;&amp;nbsp;%4&lt;/nobr&gt;</source>
- <comment>Virtualization Stuff LED</comment>
- <translation type="obsolete">指示该虚拟电脑所用硬件虚拟指令的当å‰çŠ¶æ€:&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%1:&lt;/b&gt;&amp;nbsp;%2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%3:&lt;/b&gt;&amp;nbsp;%4&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%1:&lt;/b&gt;&amp;nbsp;%2&lt;/nobr&gt;</source>
- <comment>Virtualization Stuff LED</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%1:&lt;/b&gt;&amp;nbsp;%2&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source> EXPERIMENTAL build %1r%2 - %3</source>
- <translation type="obsolete"> 实验性编译包 %1r%2 - %3</translation>
- </message>
- <message>
- <source>&amp;CD/DVD Devices</source>
- <translation type="obsolete">分é…光驱(&amp;C)</translation>
- </message>
- <message>
- <source>&amp;Floppy Devices</source>
- <translation type="obsolete">分é…软驱(&amp;F)</translation>
- </message>
- <message>
- <source>&amp;Network Adapters...</source>
- <translation type="obsolete">更改网络连接(&amp;N)...</translation>
- </message>
- <message>
- <source>Change the settings of network adapters</source>
- <translation type="obsolete">更改网络连接设置</translation>
- </message>
- <message>
- <source>&amp;Remote Display</source>
- <translation type="obsolete">开关远程桌é¢(&amp;R)</translation>
- </message>
- <message>
- <source>More CD/DVD Images...</source>
- <translation type="obsolete">更多虚拟光盘...</translation>
- </message>
- <message>
- <source>Unmount CD/DVD Device</source>
- <translation type="obsolete">释放光驱</translation>
- </message>
- <message>
- <source>More Floppy Images...</source>
- <translation type="obsolete">更多虚拟软盘...</translation>
- </message>
- <message>
- <source>Unmount Floppy Device</source>
- <translation type="obsolete">释放软驱</translation>
- </message>
- <message>
- <source>No CD/DVD Devices Attached</source>
- <translation type="obsolete">未分é…光驱</translation>
- </message>
- <message>
- <source>No Floppy Devices Attached</source>
- <translation type="obsolete">未分é…软驱</translation>
- </message>
- <message>
- <source>&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;Indicates the activity of the virtual hard disks:&lt;/nobr&gt;%1&lt;/p&gt;</source>
- <comment>HDD tooltip</comment>
- <translation type="obsolete">&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;指示虚拟硬盘活动状æ€:&lt;/nobr&gt;%1&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;Indicates the activity of the CD/DVD devices:&lt;/nobr&gt;%1&lt;/p&gt;</source>
- <comment>CD/DVD tooltip</comment>
- <translation type="obsolete">&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;指示光驱活动状æ€:&lt;/nobr&gt;%1&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No CD/DVD devices attached&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>CD/DVD tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;未分é…光驱&lt;/b&gt;&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;Indicates the activity of the floppy devices:&lt;/nobr&gt;%1&lt;/p&gt;</source>
- <comment>FD tooltip</comment>
- <translation type="obsolete">&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;指示软驱活动状æ€:&lt;/nobr&gt;%1&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No floppy devices attached&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>FD tooltip</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;&lt;b&gt;未分é…软驱&lt;/b&gt;&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;Indicates the activity of the network interfaces:&lt;/nobr&gt;%1&lt;/p&gt;</source>
- <comment>Network adapters tooltip</comment>
- <translation type="obsolete">&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;指示网络连接活动状æ€:&lt;/nobr&gt;%1&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;Indicates the activity of the attached USB devices:&lt;/nobr&gt;%1&lt;/p&gt;</source>
- <comment>USB device tooltip</comment>
- <translation type="obsolete">&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;指示USB设备活动状æ€:&lt;/nobr&gt;%1&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;Indicates the activity of the machine&apos;s shared folders:&lt;/nobr&gt;%1&lt;/p&gt;</source>
- <comment>Shared folders tooltip</comment>
- <translation type="obsolete">&lt;p style=&apos;white-space:pre&apos;&gt;&lt;nobr&gt;指示数æ®ç©ºé—´æ´»åŠ¨çŠ¶æ€:&lt;/nobr&gt;%1&lt;/p&gt;</translation>
- </message>
- <message>
- <source>No supported devices connected to the host PC</source>
- <translation type="obsolete">没有å¯ç”¨è®¾å¤‡è¿žæŽ¥åˆ°ä¸»æœº</translation>
- </message>
-</context>
-<context>
- <name>VBoxDiskImageManagerDlg</name>
- <message>
- <source>Name</source>
- <translation type="obsolete">å称</translation>
- </message>
- <message>
- <source>Virtual Size</source>
- <translation type="obsolete">虚拟分é…空间</translation>
- </message>
- <message>
- <source>Actual Size</source>
- <translation type="obsolete">实际分é…空间</translation>
- </message>
- <message>
- <source>Size</source>
- <translation type="obsolete">大å°</translation>
- </message>
- <message>
- <source>Virtual Disk Manager</source>
- <translation type="obsolete">虚拟介质管ç†å™¨</translation>
- </message>
- <message>
- <source>&amp;Hard Disks</source>
- <translation type="obsolete">虚拟硬盘(&amp;H)</translation>
- </message>
- <message>
- <source>&amp;CD/DVD Images</source>
- <translation type="obsolete">虚拟光盘(&amp;C)</translation>
- </message>
- <message>
- <source>&amp;Floppy Images</source>
- <translation type="obsolete">虚拟软盘(&amp;F)</translation>
- </message>
- <message>
- <source>Help</source>
- <translation type="obsolete">帮助</translation>
- </message>
- <message>
- <source>F1</source>
- <translation type="obsolete">F1</translation>
- </message>
- <message>
- <source>Invoke dialog&apos;s help</source>
- <translation type="obsolete">打开帮助对è¯æ¡†</translation>
- </message>
- <message>
- <source>&amp;OK</source>
- <translation type="obsolete">确定(&amp;O)</translation>
- </message>
- <message>
- <source>Alt+O</source>
- <translation type="obsolete">Alt+O</translation>
- </message>
- <message>
- <source>Accept dialog</source>
- <translation type="obsolete">接å—对è¯æ¡†</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>Cancel dialog</source>
- <translation type="obsolete">å–消对è¯æ¡†</translation>
- </message>
- <message>
- <source>&amp;New...</source>
- <translation type="obsolete">新建(&amp;N)...</translation>
- </message>
- <message>
- <source>&amp;Add...</source>
- <translation type="obsolete">注册(&amp;A)...</translation>
- </message>
- <message>
- <source>R&amp;emove</source>
- <translation type="obsolete">删除(&amp;e)</translation>
- </message>
- <message>
- <source>Re&amp;lease</source>
- <translation type="obsolete">释放(&amp;l)</translation>
- </message>
- <message>
- <source>Re&amp;fresh</source>
- <translation type="obsolete">刷新(&amp;f)</translation>
- </message>
- <message>
- <source>New</source>
- <translation type="obsolete">新建</translation>
- </message>
- <message>
- <source>Add</source>
- <translation type="obsolete">注册</translation>
- </message>
- <message>
- <source>Remove</source>
- <translation type="obsolete">删除</translation>
- </message>
- <message>
- <source>Release</source>
- <translation type="obsolete">释放</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation type="obsolete">刷新</translation>
- </message>
- <message>
- <source>Ctrl+N</source>
- <translation type="obsolete">Ctrl+N</translation>
- </message>
- <message>
- <source>Ctrl+A</source>
- <translation type="obsolete">Ctrl+A</translation>
- </message>
- <message>
- <source>Ctrl+D</source>
- <translation type="obsolete">Ctrl+D</translation>
- </message>
- <message>
- <source>Ctrl+L</source>
- <translation type="obsolete">Ctrl+L</translation>
- </message>
- <message>
- <source>Ctrl+R</source>
- <translation type="obsolete">Ctrl+R</translation>
- </message>
- <message>
- <source>Create new VDI file and attach it to media list</source>
- <translation type="obsolete">创建并注册新的虚拟硬盘</translation>
- </message>
- <message>
- <source>Add existing media image file to media list</source>
- <translation type="obsolete">注册已存在的虚拟存储设备</translation>
- </message>
- <message>
- <source>Remove selected media image file from media list</source>
- <translation type="obsolete">从注册表中删除选中的虚拟存储设备</translation>
- </message>
- <message>
- <source>Release selected media image file from being using in some VM</source>
- <translation type="obsolete">释放被æŸè™šæ‹Ÿç”µè„‘使用的虚拟存储设备</translation>
- </message>
- <message>
- <source>Refresh media image list</source>
- <translation type="obsolete">刷新注册表</translation>
- </message>
- <message>
- <source>&amp;Actions</source>
- <translation type="obsolete">动作(&amp;A)</translation>
- </message>
- <message>
- <source>Location</source>
- <translation type="obsolete">ä½ç½®</translation>
- </message>
- <message>
- <source>Disk Type</source>
- <translation type="obsolete">虚拟存储类型</translation>
- </message>
- <message>
- <source>Storage Type</source>
- <translation type="obsolete">存储设备类型</translation>
- </message>
- <message>
- <source>Attached to</source>
- <translation type="obsolete">注册到</translation>
- </message>
- <message>
- <source>Snapshot</source>
- <translation type="obsolete">备份</translation>
- </message>
- <message>
- <source>Checking accessibility</source>
- <translation type="obsolete">检测å¯è®¿é—®æ€§</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;Checking accessibility...</source>
- <comment>HDD</comment>
- <translation type="obsolete">&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;正在检查å¯è®¿é—®æ€§...</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Disk type:&amp;nbsp;&amp;nbsp;%2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Storage type:&amp;nbsp;&amp;nbsp;%3&lt;/nobr&gt;</source>
- <translation type="obsolete">&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;ç£ç›˜ç±»åž‹:&amp;nbsp;&amp;nbsp;%2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;存储类型:&amp;nbsp;&amp;nbsp;%3&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;Attached to:&amp;nbsp;&amp;nbsp;%1&lt;/nobr&gt;</source>
- <comment>HDD</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;连接到:&amp;nbsp;&amp;nbsp;%1&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;Snapshot:&amp;nbsp;&amp;nbsp;%5&lt;/nobr&gt;</source>
- <comment>HDD</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;备份:&amp;nbsp;&amp;nbsp;%5&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;Error checking media accessibility</source>
- <comment>HDD</comment>
- <translation type="obsolete">&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;检查存储介质å¯è®¿é—®æ€§å‡ºé”™</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;%2</source>
- <comment>HDD</comment>
- <translation type="obsolete">&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;%2</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;Checking accessibility...</source>
- <comment>CD/DVD/Floppy</comment>
- <translation type="obsolete">&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;正在检查å¯è®¿é—®æ€§...</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>CD/DVD/Floppy</comment>
- <translation type="obsolete">&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;Attached to:&amp;nbsp;&amp;nbsp;%1&lt;/nobr&gt;</source>
- <comment>CD/DVD/Floppy</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;连接到:&amp;nbsp;&amp;nbsp;%1&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;Error checking media accessibility</source>
- <comment>CD/DVD/Floppy</comment>
- <translation type="obsolete">&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;检查存储介质å¯è®¿é—®æ€§å‡ºé”™</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;%2</source>
- <translation type="obsolete">&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;&lt;br&gt;%2</translation>
- </message>
- <message>
- <source>The image file is not accessible</source>
- <comment>CD/DVD/Floppy</comment>
- <translation type="obsolete">虚拟介质ä¸å¯è®¿é—®</translation>
- </message>
- <message>
- <source>&amp;Select</source>
- <translation type="obsolete">选择(&amp;S)</translation>
- </message>
- <message>
- <source>All hard disk images (*.vdi; *.vmdk);;Virtual Disk images (*.vdi);;VMDK images (*.vmdk);;All files (*)</source>
- <translation type="obsolete">æ‰€æœ‰è™šæ‹Ÿç¡¬ç›˜æ˜ åƒ (*.vdi; *.vmdk);;Virtual Disk images (*.vdi);;VMDK images (*.vmdk);;All files (*)</translation>
- </message>
- <message>
- <source>Select a hard disk image file</source>
- <translation type="obsolete">选择一个虚拟硬盘</translation>
- </message>
- <message>
- <source>CD/DVD-ROM images (*.iso)</source>
- <translation type="obsolete">虚拟光盘 (*.iso)</translation>
- </message>
- <message>
- <source>Select a CD/DVD-ROM disk image file</source>
- <translation type="obsolete">选择一个虚拟光盘</translation>
- </message>
- <message>
- <source>Floppy images (*.img)</source>
- <translation type="obsolete">虚拟软盘 (*.img)</translation>
- </message>
- <message>
- <source>Select a floppy disk image file</source>
- <translation type="obsolete">选择一个虚拟软盘</translation>
- </message>
- <message>
- <source>Create a new virtual hard disk</source>
- <translation type="obsolete">创建一个新的虚拟硬盘</translation>
- </message>
- <message>
- <source>Add (register) an existing image file</source>
- <translation type="obsolete">注册一个已ç»å­˜åœ¨çš„虚拟介质</translation>
- </message>
- <message>
- <source>Remove (unregister) the selected media</source>
- <translation type="obsolete">删除(或释放)所选的虚拟存储介质</translation>
- </message>
- <message>
- <source>Release the selected media by detaching it from the machine</source>
- <translation type="obsolete">从虚拟电脑中释放所选的虚拟存储介质</translation>
- </message>
- <message>
- <source>Refresh the media list</source>
- <translation type="obsolete">刷新虚拟存储介质列表</translation>
- </message>
- <message>
- <source>CD/DVD-ROM images (*.iso);;All files (*)</source>
- <translation type="obsolete">虚拟光盘(*.iso)</translation>
- </message>
- <message>
- <source>Floppy images (*.img);;All files (*)</source>
- <translation type="obsolete">虚拟软盘(*.img)</translation>
- </message>
- <message>
- <source>All hard disk images (*.vdi *.vmdk *.vhd);;Virtual Disk images (*.vdi);;VMDK images (*.vmdk);;VHD images (*.vhd);;All files (*)</source>
- <translation type="obsolete">所有虚拟硬盘类型 (*.vdi *.vmdk *.vhd);;Virtual Disk images (*.vdi);;VMDK images (*.vmdk);;VHD images (*.vhd);;All files (*)</translation>
- </message>
- <message>
- <source>Hard &amp;Disks</source>
- <translation type="obsolete">虚拟硬盘(&amp;D)</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;Location:&lt;/nobr&gt;</source>
- <translation type="obsolete">&lt;nobr&gt;ä½ç½®:&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;Disk Type:&lt;/nobr&gt;</source>
- <translation type="obsolete">&lt;nobr&gt;硬盘类型:&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;&amp;nbsp;&amp;nbsp;Storage Type:&lt;/nobr&gt;</source>
- <translation type="obsolete">&lt;nobr&gt;&amp;nbsp;&amp;nbsp;介质类型:&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;Attached to:&lt;/nobr&gt;</source>
- <translation type="obsolete">&lt;nobr&gt;分é…到:&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;&amp;nbsp;&amp;nbsp;Snapshot:&lt;/nobr&gt;</source>
- <translation type="obsolete">&lt;nobr&gt;&amp;nbsp;&amp;nbsp;备份:&lt;/nobr&gt;</translation>
- </message>
-</context>
-<context>
<name>VBoxEmptyFileSelector</name>
<message>
<source>&amp;Choose...</source>
@@ -8763,63 +5243,8 @@ Version %1</translation>
</message>
</context>
<context>
- <name>VBoxGLSettingsDlg</name>
- <message>
- <source>General</source>
- <translation type="obsolete">常规</translation>
- </message>
- <message>
- <source>Input</source>
- <translation type="obsolete">热键</translation>
- </message>
- <message>
- <source>Update</source>
- <translation type="obsolete">æ›´æ–°</translation>
- </message>
- <message>
- <source>Language</source>
- <translation type="obsolete">语言</translation>
- </message>
- <message>
- <source>USB</source>
- <translation type="obsolete">USB设备</translation>
- </message>
- <message>
- <source>VirtualBox - %1</source>
- <translation type="obsolete">VirtualBox - %1</translation>
- </message>
- <message>
- <source>Network</source>
- <translation type="obsolete">网络</translation>
- </message>
-</context>
-<context>
- <name>VBoxGLSettingsInput</name>
- <message>
- <source>Host &amp;Key:</source>
- <translation type="obsolete">热键(&amp;K):</translation>
- </message>
- <message>
- <source>Displays the key used as a Host Key in the VM window. Activate the entry field and press a new Host Key. Note that alphanumeric, cursor movement and editing keys cannot be used.</source>
- <translation type="obsolete">显示当å‰è™šæ‹Ÿç”µè„‘窗å£æ‰€ç”¨çƒ­é”®ã€‚ä½ å¯ä»¥æ¿€æ´»è¯¥è¾“入框并定义一个新的热键。需è¦æ³¨æ„的是数字键ã€å…‰æ ‡é”®å’Œç¼–辑键ä¸èƒ½ç”¨ä½œçƒ­é”®.</translation>
- </message>
- <message>
- <source>When checked, the keyboard is automatically captured every time the VM window is activated. When the keyboard is captured, all keystrokes (including system ones like Alt-Tab) are directed to the VM.</source>
- <translation type="obsolete">选中åŽï¼Œå½“虚拟电脑窗å£å¤„于活动状æ€æ—¶å°†è‡ªåŠ¨æ•èŽ·é”®ç›˜è¾“入。当键盘被æ•èŽ·æ—¶ï¼Œæ‰€æœ‰çš„键盘输入(包括系统切æ¢é”®å¦‚ Alt-Tab) 都将被å‘é€åˆ°è™šæ‹Ÿç”µè„‘.</translation>
- </message>
- <message>
- <source>&amp;Auto Capture Keyboard</source>
- <translation type="obsolete">自动独å é”®ç›˜(&amp;A)</translation>
- </message>
-</context>
-<context>
<name>VBoxGlobal</name>
<message>
- <source>Differencing</source>
- <comment>hard disk</comment>
- <translation type="obsolete">备份部分</translation>
- </message>
- <message>
<source>Unknown device %1:%2</source>
<comment>USB device details</comment>
<translation>未知设备 %1:%2</translation>
@@ -8827,17 +5252,17 @@ Version %1</translation>
<message>
<source>&lt;nobr&gt;Vendor ID: %1&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Product ID: %2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Revision: %3&lt;/nobr&gt;</source>
<comment>USB device tooltip</comment>
- <translation>&lt;nobr&gt;Vendor ID: %1&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Product ID: %2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Revision: %3&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;供应商标识: %1&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;产å“标识: %2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;修订版本: %3&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;br&gt;&lt;nobr&gt;Serial No. %1&lt;/nobr&gt;</source>
<comment>USB device tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;Serial No. %1&lt;/nobr&gt;</translation>
+ <translation>&lt;br&gt;&lt;nobr&gt;åºåˆ—å· %1&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;br&gt;&lt;nobr&gt;State: %1&lt;/nobr&gt;</source>
<comment>USB device tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;State: %1&lt;/nobr&gt;</translation>
+ <translation>&lt;br&gt;&lt;nobr&gt;状æ€: %1&lt;/nobr&gt;</translation>
</message>
<message>
<source>Name</source>
@@ -8855,11 +5280,6 @@ Version %1</translation>
<translation>内存大å°</translation>
</message>
<message>
- <source>&lt;nobr&gt;%3 MB&lt;/nobr&gt;</source>
- <comment>details report</comment>
- <translation type="obsolete">&lt;nobr&gt;%3 MB&lt;/nobr&gt;</translation>
- </message>
- <message>
<source>General</source>
<comment>details report</comment>
<translation>常规</translation>
@@ -8870,11 +5290,6 @@ Version %1</translation>
<translation>显存大å°</translation>
</message>
<message>
- <source>&lt;nobr&gt;%4 MB&lt;/nobr&gt;</source>
- <comment>details report</comment>
- <translation type="obsolete">&lt;nobr&gt;%4 MB&lt;/nobr&gt;</translation>
- </message>
- <message>
<source>Boot Order</source>
<comment>details report</comment>
<translation>å¯åŠ¨é¡ºåº</translation>
@@ -8890,16 +5305,6 @@ Version %1</translation>
<translation>IO APIC</translation>
</message>
<message>
- <source>Not Attached</source>
- <comment>details report (HDDs)</comment>
- <translation type="obsolete">未分é…</translation>
- </message>
- <message>
- <source>Hard Disks</source>
- <comment>details report</comment>
- <translation type="obsolete">硬盘</translation>
- </message>
- <message>
<source>Enabled</source>
<comment>details report (ACPI)</comment>
<translation>å¯ç”¨</translation>
@@ -8920,51 +5325,6 @@ Version %1</translation>
<translation>ç¦ç”¨</translation>
</message>
<message>
- <source>Not mounted</source>
- <comment>details report (floppy)</comment>
- <translation type="obsolete">未分é…</translation>
- </message>
- <message>
- <source>Image</source>
- <comment>details report (floppy)</comment>
- <translation type="obsolete">虚拟软盘</translation>
- </message>
- <message>
- <source>Host Drive</source>
- <comment>details report (floppy)</comment>
- <translation type="obsolete">物ç†è½¯é©±</translation>
- </message>
- <message>
- <source>Floppy</source>
- <comment>details report</comment>
- <translation type="obsolete">软驱</translation>
- </message>
- <message>
- <source>Not mounted</source>
- <comment>details report (DVD)</comment>
- <translation type="obsolete">未分é…</translation>
- </message>
- <message>
- <source>Image</source>
- <comment>details report (DVD)</comment>
- <translation type="obsolete">虚拟光盘</translation>
- </message>
- <message>
- <source>Host Drive</source>
- <comment>details report (DVD)</comment>
- <translation type="obsolete">物ç†å…‰é©±</translation>
- </message>
- <message>
- <source>CD/DVD-ROM</source>
- <comment>details report</comment>
- <translation type="obsolete">光驱</translation>
- </message>
- <message>
- <source>Adapter</source>
- <comment>details report (audio)</comment>
- <translation type="obsolete">声å¡ç±»åž‹</translation>
- </message>
- <message>
<source>Disabled</source>
<comment>details report (audio)</comment>
<translation>ç¦ç”¨</translation>
@@ -8977,7 +5337,7 @@ Version %1</translation>
<message>
<source>Adapter %1</source>
<comment>details report (network)</comment>
- <translation>网络连接芯片 %1</translation>
+ <translation>ç½‘å¡ %1</translation>
</message>
<message>
<source>Disabled</source>
@@ -9005,35 +5365,6 @@ Version %1</translation>
<translation>ç¦ç”¨</translation>
</message>
<message>
- <source>USB Controller</source>
- <comment>details report</comment>
- <translation type="obsolete">USB 控制器</translation>
- </message>
- <message>
- <source>VRDP Server Port</source>
- <comment>details report (VRDP)</comment>
- <translation type="obsolete">VRDP æœåŠ¡å™¨ç«¯å£</translation>
- </message>
- <message>
- <source>%1</source>
- <comment>details report (VRDP)</comment>
- <translation type="obsolete">%1</translation>
- </message>
- <message>
- <source>Disabled</source>
- <comment>details report (VRDP)</comment>
- <translation type="obsolete">ç¦ç”¨</translation>
- </message>
- <message>
- <source>Remote Display</source>
- <comment>details report</comment>
- <translation type="obsolete">远程桌é¢</translation>
- </message>
- <message>
- <source>Opening URLs is not implemented yet.</source>
- <translation type="obsolete">尚未实现打开URL的功能.</translation>
- </message>
- <message>
<source>Powered Off</source>
<comment>MachineState</comment>
<translation>已关闭</translation>
@@ -9079,31 +5410,11 @@ Version %1</translation>
<translation>正在唤醒</translation>
</message>
<message>
- <source>Discarding</source>
- <comment>MachineState</comment>
- <translation type="obsolete">正在删除</translation>
- </message>
- <message>
- <source>Closed</source>
- <comment>SessionState</comment>
- <translation type="obsolete">已关闭</translation>
- </message>
- <message>
- <source>Open</source>
- <comment>SessionState</comment>
- <translation type="obsolete">已打开</translation>
- </message>
- <message>
<source>Spawning</source>
<comment>SessionState</comment>
<translation>正在准备</translation>
</message>
<message>
- <source>Closing</source>
- <comment>SessionState</comment>
- <translation type="obsolete">正在关闭</translation>
- </message>
- <message>
<source>None</source>
<comment>DeviceType</comment>
<translation>空</translation>
@@ -9129,104 +5440,50 @@ Version %1</translation>
<translation>网络</translation>
</message>
<message>
- <source>Primary</source>
- <comment>DiskControllerType</comment>
- <translation type="obsolete">第一IDE控制器</translation>
- </message>
- <message>
- <source>Secondary</source>
- <comment>DiskControllerType</comment>
- <translation type="obsolete">第二IDE控制器</translation>
- </message>
- <message>
<source>Normal</source>
<comment>DiskType</comment>
- <translation>Normal</translation>
+ <translation>普通</translation>
</message>
<message>
<source>Immutable</source>
<comment>DiskType</comment>
- <translation>Immutable</translation>
+ <translation>ä¸å¯æ”¹å˜</translation>
</message>
<message>
<source>Writethrough</source>
<comment>DiskType</comment>
- <translation>Writethrough</translation>
- </message>
- <message>
- <source>Virtual Disk Image</source>
- <comment>DiskStorageType</comment>
- <translation type="obsolete">虚拟硬盘</translation>
- </message>
- <message>
- <source>iSCSI</source>
- <comment>DiskStorageType</comment>
- <translation type="obsolete">iSCSI</translation>
- </message>
- <message>
- <source>VMDK Image</source>
- <comment>DiskStorageType</comment>
- <translation type="obsolete">VMDK 映åƒ</translation>
- </message>
- <message>
- <source>Null</source>
- <comment>VRDPAuthType</comment>
- <translation type="obsolete">Null</translation>
- </message>
- <message>
- <source>External</source>
- <comment>VRDPAuthType</comment>
- <translation type="obsolete">External</translation>
- </message>
- <message>
- <source>Guest</source>
- <comment>VRDPAuthType</comment>
- <translation type="obsolete">Guest</translation>
+ <translation>完全写入</translation>
</message>
<message>
<source>Ignore</source>
<comment>USBFilterActionType</comment>
- <translation>Ignore</translation>
+ <translation>忽略</translation>
</message>
<message>
<source>Hold</source>
<comment>USBFilterActionType</comment>
- <translation>Hold</translation>
- </message>
- <message>
- <source>Master</source>
- <comment>DiskControllerDevice</comment>
- <translation type="obsolete">主通é“</translation>
- </message>
- <message>
- <source>Slave</source>
- <comment>DiskControllerDevice</comment>
- <translation type="obsolete">从通é“</translation>
- </message>
- <message>
- <source>Device&amp;nbsp;%1</source>
- <comment>DiskControllerDevice</comment>
- <translation type="obsolete">设备&amp;nbsp;%1</translation>
+ <translation>ä¿æŒ</translation>
</message>
<message>
<source>Null Audio Driver</source>
<comment>AudioDriverType</comment>
- <translation>Null Audio Driver</translation>
+ <translatorcomment>ä¸å‘声的驱动</translatorcomment>
+ <translation>虚空音频驱动</translation>
</message>
<message>
<source>Windows Multimedia</source>
<comment>AudioDriverType</comment>
- <translation>Windows Multimedia</translation>
+ <translation>Windows 多媒体</translation>
</message>
<message>
<source>OSS Audio Driver</source>
<comment>AudioDriverType</comment>
- <translation>OSS Audio Driver</translation>
+ <translation>OSS音频驱动</translation>
</message>
<message>
<source>ALSA Audio Driver</source>
<comment>AudioDriverType</comment>
- <translation>ALSA Audio Driver</translation>
+ <translation>ALSA音频驱动</translation>
</message>
<message>
<source>Windows DirectSound</source>
@@ -9246,17 +5503,12 @@ Version %1</translation>
<message>
<source>NAT</source>
<comment>NetworkAttachmentType</comment>
- <translation>NAT</translation>
- </message>
- <message>
- <source>Host Interface</source>
- <comment>NetworkAttachmentType</comment>
- <translation type="obsolete">Host Interface</translation>
+ <translation>网络地å€è½¬æ¢(NAT)</translation>
</message>
<message>
<source>Internal Network</source>
<comment>NetworkAttachmentType</comment>
- <translation>Internal</translation>
+ <translation>内部网络</translation>
</message>
<message>
<source>Not supported</source>
@@ -9281,37 +5533,27 @@ Version %1</translation>
<message>
<source>Held</source>
<comment>USBDeviceState</comment>
- <translation>Held</translation>
+ <translation>å·²ä¿æŒ</translation>
</message>
<message>
<source>Captured</source>
<comment>USBDeviceState</comment>
- <translation>æ•èŽ·</translation>
- </message>
- <message>
- <source>&lt;i&gt;Checking...&lt;/i&gt;</source>
- <comment>hard disk</comment>
- <translation type="obsolete">&lt;i&gt;正在检测...&lt;/i&gt;</translation>
- </message>
- <message>
- <source>&lt;i&gt;Inaccessible&lt;/i&gt;</source>
- <comment>hard disk</comment>
- <translation type="obsolete">&lt;i&gt;无法访问&lt;/i&gt;</translation>
+ <translation>å·²æ•èŽ·</translation>
</message>
<message>
<source>Disabled</source>
<comment>ClipboardType</comment>
- <translation>ç¦ç”¨</translation>
+ <translation>å·²ç¦ç”¨</translation>
</message>
<message>
<source>Host To Guest</source>
<comment>ClipboardType</comment>
- <translation>主系统到å­ç³»ç»Ÿ</translation>
+ <translation>主机到虚拟机</translation>
</message>
<message>
<source>Guest To Host</source>
<comment>ClipboardType</comment>
- <translation>å­ç³»ç»Ÿåˆ°ä¸»ç³»ç»Ÿ</translation>
+ <translation>虚拟机到主机</translation>
</message>
<message>
<source>Bidirectional</source>
@@ -9319,14 +5561,6 @@ Version %1</translation>
<translation>åŒå‘</translation>
</message>
<message>
- <source>Select a directory</source>
- <translation type="obsolete">选择一个文件夹</translation>
- </message>
- <message>
- <source>Select a file</source>
- <translation type="obsolete">选择一个文件</translation>
- </message>
- <message>
<source>Port %1</source>
<comment>details report (serial ports)</comment>
<translation>ç«¯å£ %1</translation>
@@ -9349,12 +5583,7 @@ Version %1</translation>
<message>
<source>Shared Folders</source>
<comment>details report (shared folders)</comment>
- <translation>æ•°æ®ç©ºé—´</translation>
- </message>
- <message>
- <source>%1</source>
- <comment>details report (shadef folders)</comment>
- <translation type="obsolete">%1</translation>
+ <translation>共享文件夹</translation>
</message>
<message>
<source>None</source>
@@ -9364,12 +5593,7 @@ Version %1</translation>
<message>
<source>Shared Folders</source>
<comment>details report</comment>
- <translation>æ•°æ®ç©ºé—´</translation>
- </message>
- <message>
- <source>Stuck</source>
- <comment>MachineState</comment>
- <translation type="obsolete">Stuck</translation>
+ <translation>共享文件夹</translation>
</message>
<message>
<source>Disconnected</source>
@@ -9379,22 +5603,17 @@ Version %1</translation>
<message>
<source>Host Pipe</source>
<comment>PortMode</comment>
- <translation>Host Pipe</translation>
+ <translation>主机管é“</translation>
</message>
<message>
<source>Host Device</source>
<comment>PortMode</comment>
- <translation>Host Device</translation>
+ <translation>主机设备</translation>
</message>
<message>
<source>User-defined</source>
<comment>serial port</comment>
- <translation>User-defined</translation>
- </message>
- <message>
- <source>Custom Hard Disk</source>
- <comment>DiskStorageType</comment>
- <translation type="obsolete">硬盘类型</translation>
+ <translation>用户定义</translation>
</message>
<message>
<source>VT-x/AMD-V</source>
@@ -9409,22 +5628,22 @@ Version %1</translation>
<message>
<source>Enabled</source>
<comment>details report (VT-x/AMD-V)</comment>
- <translation>å¯ç”¨</translation>
+ <translation>å·²å¯ç”¨</translation>
</message>
<message>
<source>Disabled</source>
<comment>details report (VT-x/AMD-V)</comment>
- <translation>ç¦ç”¨</translation>
+ <translation>å·²ç¦ç”¨</translation>
</message>
<message>
<source>Enabled</source>
<comment>details report (PAE/NX)</comment>
- <translation>å¯ç”¨</translation>
+ <translation>å·²å¯ç”¨</translation>
</message>
<message>
<source>Disabled</source>
<comment>details report (PAE/NX)</comment>
- <translation>ç¦ç”¨</translation>
+ <translation>å·²ç¦ç”¨</translation>
</message>
<message>
<source>Host Driver</source>
@@ -9459,7 +5678,7 @@ Version %1</translation>
<message>
<source>Shared Folder</source>
<comment>DeviceType</comment>
- <translation>æ•°æ®ç©ºé—´</translation>
+ <translation>共享文件夹</translation>
</message>
<message>
<source>IDE</source>
@@ -9474,12 +5693,14 @@ Version %1</translation>
<message>
<source>Primary</source>
<comment>StorageBusChannel</comment>
- <translation>第一IDE控制器</translation>
+ <translatorcomment>TODO: IDE控制器</translatorcomment>
+ <translation>第一</translation>
</message>
<message>
<source>Secondary</source>
<comment>StorageBusChannel</comment>
- <translation>第二IDE控制器</translation>
+ <translatorcomment>TODO:IDE控制器</translatorcomment>
+ <translation>第二</translation>
</message>
<message>
<source>Master</source>
@@ -9497,14 +5718,9 @@ Version %1</translation>
<translation>ç«¯å£ %1</translation>
</message>
<message>
- <source>VHD Image</source>
- <comment>DiskStorageType</comment>
- <translation type="obsolete">硬盘类型</translation>
- </message>
- <message>
<source>Solaris Audio</source>
<comment>AudioDriverType</comment>
- <translation>Solaris Audio</translation>
+ <translation>Solaris 音频</translation>
</message>
<message>
<source>PulseAudio</source>
@@ -9534,107 +5750,52 @@ Version %1</translation>
<message>
<source>Intel PRO/1000 MT Desktop (82540EM)</source>
<comment>NetworkAdapterType</comment>
- <translation>Intel PRO/1000 MT Desktop (82540EM)</translation>
- </message>
- <message>
- <source>PIIX3</source>
- <comment>IDEControllerType</comment>
- <translation type="obsolete">PIIX3</translation>
- </message>
- <message>
- <source>PIIX4</source>
- <comment>IDEControllerType</comment>
- <translation type="obsolete">PIIX4</translation>
+ <translation>Intel PRO/1000 MT æ¡Œé¢ (82540EM)</translation>
</message>
<message>
<source>Intel PRO/1000 T Server (82543GC)</source>
<comment>NetworkAdapterType</comment>
- <translation>Intel PRO/1000 T Server (82543GC)</translation>
+ <translation>Intel PRO/1000 T æœåŠ¡å™¨ (82543GC)</translation>
</message>
<message>
<source>&lt;nobr&gt;Vendor ID: %1&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;Vendor ID: %1&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;厂家标识: %1&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;Product ID: %2&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;Product ID: %2&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;产å“标识: %2&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;Revision: %3&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;Revision: %3&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;修订版本: %3&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;Product: %4&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;Product: %4&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;产å“: %4&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;Manufacturer: %5&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;Manufacturer: %5&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;制造商: %5&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;Serial No.: %1&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;Serial No.: %1&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;åºå·.: %1&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;Port: %1&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;Port: %1&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;端å£: %1&lt;/nobr&gt;</translation>
</message>
<message>
<source>&lt;nobr&gt;State: %1&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;State: %1&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>host interface, %1</source>
- <comment>details report (network)</comment>
- <translation type="obsolete">host interface, %1</translation>
- </message>
- <message>
- <source>internal network, &apos;%1&apos;</source>
- <comment>details report (network)</comment>
- <translation type="obsolete">internal network, &apos;%1&apos;</translation>
- </message>
- <message>
- <source>Adapter %1</source>
- <comment>network</comment>
- <translation type="obsolete">网络连接 %1</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;Type&amp;nbsp;(Format):&amp;nbsp;&amp;nbsp;%2&amp;nbsp;(%3)&lt;/nobr&gt;</source>
- <comment>hard disk</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;类型&amp;nbsp;(æ ¼å¼):&amp;nbsp;&amp;nbsp;%2&amp;nbsp;(%3)&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;Attached to:&amp;nbsp;&amp;nbsp;%1&lt;/nobr&gt;</source>
- <comment>medium</comment>
- <translation type="obsolete">&lt;br&gt;&lt;nobr&gt;连接到:&amp;nbsp;&amp;nbsp;%1&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;i&gt;Not&amp;nbsp;Attached&lt;/i&gt;</source>
- <comment>medium</comment>
- <translation type="obsolete">&lt;i&gt;未&amp;nbsp;分é…&lt;/i&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;i&gt;Checking accessibility...&lt;/i&gt;</source>
- <comment>medium</comment>
- <translation type="obsolete">&lt;br&gt;&lt;i&gt;正在检查å¯è®¿é—®æ€§...&lt;/i&gt;</translation>
- </message>
- <message>
- <source>&lt;hr&gt;Failed to check media accessibility.&lt;br&gt;%1.</source>
- <comment>medium</comment>
- <translation type="obsolete">&lt;hr&gt;检查存储介质å¯è®¿é—®æ€§å‡ºé”™.&lt;br&gt;%1.</translation>
- </message>
- <message>
- <source>&lt;hr&gt;&lt;img src=%1/&gt;&amp;nbsp;Attaching this hard disk will be performed indirectly using a newly created differencing hard disk.</source>
- <comment>medium</comment>
- <translation type="obsolete">&lt;hr&gt;&lt;img src=%1/&gt;&amp;nbsp;Attaching this hard disk will be performed indirectly using a newly created differencing hard disk.</translation>
+ <translation>&lt;nobr&gt;状æ€: %1&lt;/nobr&gt;</translation>
</message>
<message>
<source>Checking...</source>
@@ -9647,14 +5808,6 @@ Version %1</translation>
<translation>无法访问</translation>
</message>
<message>
- <source>&lt;hr&gt;Some of the media in this hard disk chain are inaccessible. Please use the Virtual Media Manager in &lt;b&gt;Show Differencing Hard Disks&lt;/b&gt; mode to inspect these media.</source>
- <translation type="obsolete">&lt;hr&gt;该虚拟硬盘链中的部分介质无法访问. 请按 &lt;b&gt;显示其它虚拟硬盘&lt;/b&gt; 打开虚拟介质管ç†å™¨æ£€æŸ¥è¯¥ä»‹è´¨.</translation>
- </message>
- <message>
- <source>%1&lt;hr&gt;This base hard disk is indirectly attached using the following differencing hard disk:&lt;br&gt;%2%3</source>
- <translation type="obsolete">%1&lt;hr&gt;This base hard disk is indirectly attached using the following differencing hard disk:&lt;br&gt;%2%3</translation>
- </message>
- <message>
<source>3D Acceleration</source>
<comment>details report</comment>
<translation>3D 加速</translation>
@@ -9672,7 +5825,7 @@ Version %1</translation>
<message>
<source>Setting Up</source>
<comment>MachineState</comment>
- <translation>Setting Up</translation>
+ <translation>正在设置</translation>
</message>
<message>
<source>Differencing</source>
@@ -9682,7 +5835,7 @@ Version %1</translation>
<message>
<source>Nested Paging</source>
<comment>details report</comment>
- <translation>Nested Paging</translation>
+ <translation>嵌套分页</translation>
</message>
<message>
<source>Enabled</source>
@@ -9695,19 +5848,9 @@ Version %1</translation>
<translation>ç¦ç”¨</translation>
</message>
<message>
- <source>Bridged network, %1</source>
- <comment>details report (network)</comment>
- <translation type="obsolete">Bridged 网络, %1</translation>
- </message>
- <message>
<source>Internal network, &apos;%1&apos;</source>
<comment>details report (network)</comment>
- <translation>Internal 网络, &apos;%1&apos;</translation>
- </message>
- <message>
- <source>Host-only network, &apos;%1&apos;</source>
- <comment>details report (network)</comment>
- <translation type="obsolete">Host-only 网络, &apos;%1&apos;</translation>
+ <translation>内部网络, &apos;%1&apos;</translation>
</message>
<message>
<source>SCSI</source>
@@ -9715,16 +5858,6 @@ Version %1</translation>
<translation>SCSI</translation>
</message>
<message>
- <source>Bridged Network</source>
- <comment>NetworkAttachmentType</comment>
- <translation type="obsolete">Bridged</translation>
- </message>
- <message>
- <source>Host-only Network</source>
- <comment>NetworkAttachmentType</comment>
- <translation type="obsolete">Host-only</translation>
- </message>
- <message>
<source>PIIX3</source>
<comment>StorageControllerType</comment>
<translation>PIIX3</translation>
@@ -9755,6 +5888,31 @@ Version %1</translation>
<translation>BusLogic</translation>
</message>
<message>
+ <source>Bridged adapter, %1</source>
+ <comment>details report (network)</comment>
+ <translation>桥接网络, %1</translation>
+ </message>
+ <message>
+ <source>Host-only adapter, &apos;%1&apos;</source>
+ <comment>details report (network)</comment>
+ <translation>仅主机(Host-Only)网络, &apos;%1&apos;</translation>
+ </message>
+ <message>
+ <source>Intel PRO/1000 MT Server (82545EM)</source>
+ <comment>NetworkAdapterType</comment>
+ <translation>Intel PRO/1000 MT æœåŠ¡å™¨ (82545EM)</translation>
+ </message>
+ <message>
+ <source>Bridged Adapter</source>
+ <comment>NetworkAttachmentType</comment>
+ <translation>桥接网å¡</translation>
+ </message>
+ <message>
+ <source>Host-only Adapter</source>
+ <comment>NetworkAttachmentType</comment>
+ <translation>仅主机(Host-Only)适é…器</translation>
+ </message>
+ <message>
<source>&lt;nobr&gt;%1 MB&lt;/nobr&gt;</source>
<comment>details report</comment>
<translation>&lt;nobr&gt;%1 MB&lt;/nobr&gt;</translation>
@@ -9775,56 +5933,16 @@ Version %1</translation>
<translation>系统</translation>
</message>
<message>
- <source>Remote Display Server Port</source>
- <comment>details report (VRDP Server)</comment>
- <translation type="obsolete">远程桌é¢æœåŠ¡ç«¯å£</translation>
- </message>
- <message>
- <source>Remote Display Server</source>
- <comment>details report (VRDP Server)</comment>
- <translation type="obsolete">远程桌é¢æœåŠ¡</translation>
- </message>
- <message>
- <source>Disabled</source>
- <comment>details report (VRDP Server)</comment>
- <translation type="obsolete">ç¦ç”¨</translation>
- </message>
- <message>
<source>Display</source>
<comment>details report</comment>
<translation>显示</translation>
</message>
<message>
- <source>Bridged adapter, %1</source>
- <comment>details report (network)</comment>
- <translation>Bridged 网络, %1</translation>
- </message>
- <message>
- <source>Host-only adapter, &apos;%1&apos;</source>
- <comment>details report (network)</comment>
- <translation>Host-only 网络, &apos;%1&apos;</translation>
- </message>
- <message>
<source>Raw File</source>
<comment>PortMode</comment>
<translation>裸文件</translation>
</message>
<message>
- <source>Intel PRO/1000 MT Server (82545EM)</source>
- <comment>NetworkAdapterType</comment>
- <translation>Intel PRO/1000 MT Server (82545EM)</translation>
- </message>
- <message>
- <source>Bridged Adapter</source>
- <comment>NetworkAttachmentType</comment>
- <translation>Bridged Adapter</translation>
- </message>
- <message>
- <source>Host-only Adapter</source>
- <comment>NetworkAttachmentType</comment>
- <translation>Host-only Adapter</translation>
- </message>
- <message>
<source>Enabled</source>
<comment>details report (2D Video Acceleration)</comment>
<translation>å¯ç”¨</translation>
@@ -9932,7 +6050,8 @@ Version %1</translation>
<message>
<source>Paravirtualized Network (virtio-net)</source>
<comment>NetworkAdapterType</comment>
- <translation>Paravirtualized Network (virtio-net)</translation>
+ <translatorcomment>TODO:准确的中文</translatorcomment>
+ <translation>准虚拟化网络 (virtio-net)</translation>
</message>
<message>
<source>I82078</source>
@@ -10000,17 +6119,18 @@ Version %1</translation>
<message>
<source>Attaching this hard disk will be performed indirectly using a newly created differencing hard disk.</source>
<comment>medium</comment>
- <translation>Attaching this hard disk will be performed indirectly using a newly created differencing hard disk.</translation>
+ <translation>分é…此硬盘将间接使用最近创建的备份硬盘。</translation>
</message>
<message>
<source>Some of the media in this hard disk chain are inaccessible. Please use the Virtual Media Manager in &lt;b&gt;Show Differencing Hard Disks&lt;/b&gt; mode to inspect these media.</source>
<comment>medium</comment>
- <translation>Some of the media in this hard disk chain are inaccessible. Please use the Virtual Media Manager in &lt;b&gt;Show Differencing Hard Disks&lt;/b&gt; mode to inspect these media.</translation>
+ <translation>该硬盘链中的æŸäº›ä»‹è´¨ä¸å¯è®¿é—®ã€‚请使用&lt;b&gt;显示备份硬盘&lt;/b&gt;模å¼ä¸­çš„“虚拟机介质管ç†å™¨â€æ¥æ£€æŸ¥è¿™äº›ä»‹è´¨ã€‚</translation>
</message>
<message>
<source>This base hard disk is indirectly attached using the following differencing hard disk:</source>
<comment>medium</comment>
- <translation>This base hard disk is indirectly attached using the following differencing hard disk:</translation>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>该基本硬盘是使用以下备份硬盘间接分é…çš„:</translation>
</message>
<message numerus="yes">
<source>%n year(s)</source>
@@ -10055,266 +6175,262 @@ Version %1</translation>
<message>
<source>Screens</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>å±å¹•</translation>
</message>
<message>
<source>SAS</source>
<comment>StorageBus</comment>
- <translation type="unfinished"></translation>
+ <translation>SAS</translation>
</message>
<message>
<source>LsiLogic SAS</source>
<comment>StorageControllerType</comment>
- <translation type="unfinished"></translation>
+ <translation>LsiLogic SAS</translation>
</message>
<message>
<source>B</source>
<comment>size suffix Bytes</comment>
- <translation type="unfinished"></translation>
+ <translation>B</translation>
</message>
<message>
<source>KB</source>
<comment>size suffix KBytes=1024 Bytes</comment>
- <translation type="unfinished"></translation>
+ <translation>KB</translation>
</message>
<message>
<source>MB</source>
<comment>size suffix MBytes=1024 KBytes</comment>
- <translation type="unfinished">MB</translation>
+ <translation>MB</translation>
</message>
<message>
<source>GB</source>
<comment>size suffix GBytes=1024 MBytes</comment>
- <translation type="unfinished"></translation>
+ <translation>GB</translation>
</message>
<message>
<source>TB</source>
<comment>size suffix TBytes=1024 GBytes</comment>
- <translation type="unfinished"></translation>
+ <translation>TB</translation>
</message>
<message>
<source>PB</source>
<comment>size suffix PBytes=1024 TBytes</comment>
- <translation type="unfinished"></translation>
+ <translation>PB</translation>
</message>
<message>
<source>Enabled</source>
<comment>nested paging</comment>
- <translation type="unfinished">å¯ç”¨</translation>
+ <translation>å¯ç”¨</translation>
</message>
<message>
<source>Disabled</source>
<comment>nested paging</comment>
- <translation type="unfinished">ç¦ç”¨</translation>
+ <translation>ç¦ç”¨</translation>
</message>
<message>
<source>Nested Paging</source>
- <translation type="unfinished">Nested Paging</translation>
+ <translation>嵌套分页</translation>
</message>
<message>
<source>Shareable</source>
<comment>DiskType</comment>
- <translation type="unfinished"></translation>
+ <translation>å¯å…±äº«</translation>
</message>
<message>
<source>Unknown device</source>
<comment>USB device details</comment>
- <translation type="unfinished"></translation>
+ <translation>未知设备</translation>
</message>
<message>
<source>SAS Port %1</source>
<comment>New Storage UI : Slot Name</comment>
- <translation type="unfinished"></translation>
+ <translation>SAS ç«¯å£ %1</translation>
</message>
<message>
<source>Remote Desktop Server Port</source>
<comment>details report (VRDE Server)</comment>
- <translation type="unfinished"></translation>
+ <translation>远程桌é¢æœåŠ¡å™¨ç«¯å£</translation>
</message>
<message>
<source>Remote Desktop Server</source>
<comment>details report (VRDE Server)</comment>
- <translation type="unfinished"></translation>
+ <translation>远程桌é¢æœåŠ¡å™¨</translation>
</message>
<message>
<source>Disabled</source>
<comment>details report (VRDE Server)</comment>
- <translation type="unfinished">ç¦ç”¨</translation>
+ <translation>ç¦ç”¨</translation>
</message>
<message>
<source>Choose a virtual hard disk file</source>
- <translation type="unfinished"></translation>
+ <translation>选择一个虚拟硬盘</translation>
</message>
<message>
<source>hard disk</source>
- <translation type="unfinished"></translation>
+ <translation>虚拟硬盘</translation>
</message>
<message>
<source>Choose a virtual CD/DVD disk file</source>
- <translation type="unfinished"></translation>
+ <translation>选择一个虚拟光盘</translation>
</message>
<message>
<source>CD/DVD-ROM disk</source>
- <translation type="unfinished"></translation>
+ <translation>光驱</translation>
</message>
<message>
<source>Choose a virtual floppy disk file</source>
- <translation type="unfinished"></translation>
+ <translation>选择一个虚拟软盘</translation>
</message>
<message>
<source>floppy disk</source>
- <translation type="unfinished"></translation>
+ <translation>虚拟软盘</translation>
</message>
<message>
<source>All %1 images (%2)</source>
- <translation type="unfinished"></translation>
+ <translation>全部 %1 æ˜ åƒ (%2)</translation>
</message>
<message>
<source>All files (*)</source>
- <translation type="unfinished">所有文件(*)</translation>
+ <translation>所有文件(*)</translation>
</message>
<message>
<source>Fault Tolerant Syncing</source>
<comment>MachineState</comment>
- <translation type="unfinished"></translation>
+ <translation>故障容错åŒæ­¥</translation>
</message>
<message>
<source>Unlocked</source>
<comment>SessionState</comment>
- <translation type="unfinished"></translation>
+ <translation>已解é”</translation>
</message>
<message>
<source>Locked</source>
<comment>SessionState</comment>
- <translation type="unfinished"></translation>
+ <translation>å·²é”定</translation>
</message>
<message>
<source>Unlocking</source>
<comment>SessionState</comment>
- <translation type="unfinished"></translation>
+ <translation>正在解é”</translation>
</message>
<message>
<source>Null</source>
<comment>AuthType</comment>
- <translation type="unfinished">Null</translation>
+ <translation>空</translation>
</message>
<message>
<source>External</source>
<comment>AuthType</comment>
- <translation type="unfinished">External</translation>
+ <translation>外部</translation>
</message>
<message>
<source>Guest</source>
<comment>AuthType</comment>
- <translation type="unfinished">Guest</translation>
+ <translation>å­ç³»ç»Ÿ</translation>
</message>
<message>
<source>Intel HD Audio</source>
<comment>AudioControllerType</comment>
- <translation type="unfinished"></translation>
+ <translation>Intel HD 音频</translation>
</message>
<message>
<source>UDP</source>
<comment>NATProtocolType</comment>
- <translation type="unfinished"></translation>
+ <translation>UDP</translation>
</message>
<message>
<source>TCP</source>
<comment>NATProtocolType</comment>
- <translation type="unfinished"></translation>
+ <translation>TCP</translation>
</message>
<message>
<source>PIIX3</source>
<comment>ChipsetType</comment>
- <translation type="unfinished">PIIX3</translation>
+ <translation>PIIX3</translation>
</message>
<message>
<source>ICH9</source>
<comment>ChipsetType</comment>
- <translation type="unfinished">ICH9</translation>
+ <translation>ICH9</translation>
</message>
<message>
<source>and</source>
- <translation type="unfinished"></translation>
+ <translation>åŠ</translation>
</message>
<message>
<source>MB</source>
<comment>size suffix MBytes=1024KBytes</comment>
- <translation type="unfinished">MB</translation>
+ <translation>MB</translation>
</message>
<message>
<source>Readonly</source>
<comment>DiskType</comment>
- <translation type="unfinished"></translation>
+ <translation>åªè¯»</translation>
</message>
<message>
<source>Multi-attach</source>
<comment>DiskType</comment>
- <translation type="unfinished"></translation>
+ <translation>多é‡åŠ è½½</translation>
</message>
<message>
<source>Dynamically allocated storage</source>
- <translation type="unfinished"></translation>
+ <translation>动æ€åˆ†é…存储</translation>
</message>
<message>
<source>Fixed size storage</source>
- <translation type="unfinished"></translation>
+ <translation>固定大å°å­˜å‚¨</translation>
</message>
<message>
<source>Dynamically allocated storage split into files of less than 2GB</source>
- <translation type="unfinished"></translation>
+ <translation>动æ€åˆ†é…存储分割为 2GB 以下大å°çš„文件</translation>
</message>
<message>
<source>Fixed size storage split into files of less than 2GB</source>
- <translation type="unfinished"></translation>
+ <translation>固定大å°å­˜å‚¨åˆ†å‰²ä¸º 2GB 以下大å°çš„文件</translation>
</message>
<message>
<source>Execution Cap</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>è¿è¡Œå³°å€¼</translation>
</message>
<message>
<source>&lt;nobr&gt;%1%&lt;/nobr&gt;</source>
<comment>details report</comment>
- <translation type="unfinished"></translation>
+ <translation>&lt;nobr&gt;%1%&lt;/nobr&gt;</translation>
</message>
<message>
<source>Generic, &apos;%1&apos;</source>
<comment>details report (network)</comment>
- <translation type="unfinished"></translation>
+ <translation>通用,“%1â€</translation>
</message>
<message>
<source>Generic Driver</source>
<comment>NetworkAttachmentType</comment>
- <translation type="unfinished"></translation>
+ <translation>通用驱动</translation>
</message>
<message>
<source>Deny</source>
<comment>NetworkAdapterPromiscModePolicyType</comment>
- <translation type="unfinished"></translation>
+ <translation>æ‹’ç»</translation>
</message>
<message>
<source>Allow VMs</source>
<comment>NetworkAdapterPromiscModePolicyType</comment>
- <translation type="unfinished"></translation>
+ <translation>å…许虚拟电脑</translation>
</message>
<message>
<source>Allow All</source>
<comment>NetworkAdapterPromiscModePolicyType</comment>
- <translation type="unfinished"></translation>
+ <translation>全部å…许</translation>
</message>
<message>
<source>Adapter %1</source>
- <translation type="unfinished"></translation>
+ <translation>ç½‘å¡ %1</translation>
</message>
</context>
<context>
<name>VBoxGlobalSettings</name>
<message>
- <source>&apos;%1 (0x%2)&apos; is an invalid host key code.</source>
- <translation type="obsolete">&apos;%1 (0x%2)&apos; 是一个ä¸å¯ç”¨çš„热键编ç .</translation>
- </message>
- <message>
<source>The value &apos;%1&apos; of the key &apos;%2&apos; doesn&apos;t match the regexp constraint &apos;%3&apos;.</source>
<translation>关键字 &apos;%2&apos; 的值 &apos;%1&apos; ä¸èƒ½é€šè¿‡æ­£åˆ™è¡¨è¾¾å¼ &apos;%3&apos; 的强制性检查.</translation>
</message>
@@ -10324,586 +6440,15 @@ Version %1</translation>
</message>
<message>
<source>&apos;%1&apos; is an invalid host-combination code-sequence.</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>VBoxGlobalSettingsDlg</name>
- <message>
- <source>Category</source>
- <translation type="obsolete">目录</translation>
- </message>
- <message>
- <source>[id]</source>
- <translation type="obsolete">[标识]</translation>
- </message>
- <message>
- <source>[link]</source>
- <translation type="obsolete">[链接]</translation>
- </message>
- <message>
- <source>[name]</source>
- <translation type="obsolete">[å称]</translation>
- </message>
- <message>
- <source>&lt;i&gt;Select a settings category from the list on the left-hand side and move the mouse over a settings item to get more information&lt;i&gt;.</source>
- <translation type="obsolete">&lt;i&gt;从左边的设置列表中选择一个类别,然åŽç§»åŠ¨é¼ æ ‡åˆ°ä¸€ä¸ªå…·ä½“的设置项目将获å–更多信æ¯&lt;i&gt;.</translation>
- </message>
- <message>
- <source> General </source>
- <translation type="obsolete">常规</translation>
- </message>
- <message>
- <source>0</source>
- <translation type="obsolete">0</translation>
- </message>
- <message>
- <source> Input </source>
- <translation type="obsolete"> 输入 </translation>
- </message>
- <message>
- <source>1</source>
- <translation type="obsolete">1</translation>
- </message>
- <message>
- <source> USB </source>
- <translation type="obsolete">USB</translation>
- </message>
- <message>
- <source>2</source>
- <translation type="obsolete">2</translation>
- </message>
- <message>
- <source>Default &amp;Folders</source>
- <translation type="obsolete">默认文件夹(&amp;F)</translation>
- </message>
- <message>
- <source>Displays the path to the default VDI folder. This folder is
-used, if not explicitly specified otherwise, when adding existing or creating new virtual hard disks.</source>
- <translation type="obsolete">显示用于存放虚拟硬盘的默认文件夹。如果没有在此明确指定其它文件夹,当新建或注册虚拟硬盘时将使用此文件夹.</translation>
- </message>
- <message>
- <source>Machines</source>
- <translation type="obsolete">虚拟电脑</translation>
- </message>
- <message>
- <source>VDI files</source>
- <translation type="obsolete">虚拟硬盘</translation>
- </message>
- <message>
- <source>Resets the virtual machine folder path to the default value.
-The actual default path will be displayed after accepting the changes and opening this dialog again.</source>
- <translation type="obsolete">将存放虚拟电脑的文件夹é‡æ–°è®¾ç½®ä¸ºé»˜è®¤å€¼ã€‚接å—更改åŽï¼Œå†æ¬¡æ‰“开本对è¯æ¡†æ—¶å°†æ˜¾ç¤ºé»˜è®¤è·¯å¾„.</translation>
- </message>
- <message>
- <source>Resets the VDI folder path to the default value.
-The actual default path will be displayed after accepting the changes and opening this dialog again.</source>
- <translation type="obsolete">将存放虚拟硬盘的文件夹é‡æ–°è®¾ç½®ä¸ºé»˜è®¤å€¼ã€‚接å—更改åŽï¼Œå†æ¬¡æ‰“开本对è¯æ¡†æ—¶å°†æ˜¾ç¤ºé»˜è®¤è·¯å¾„.</translation>
- </message>
- <message>
- <source>Displays the path to the default virtual machine
-folder. This folder is used, if not explicitly specified otherwise, when creating new
-virtual machines.</source>
- <translation type="obsolete">显示用于存放虚拟电脑的默认文件夹。如果没有特别指定,当新建虚拟电脑时将使用此文件夹.</translation>
- </message>
- <message>
- <source>Select</source>
- <translation type="obsolete">选择</translation>
- </message>
- <message>
- <source>Opens a dialog to select the
-default VDI folder.</source>
- <translation type="obsolete">打开对è¯æ¡†é€‰æ‹©ç”¨äºŽå­˜æ”¾è™šæ‹Ÿç¡¬ç›˜çš„默认文件夹.</translation>
- </message>
- <message>
- <source>Opens a dialog to select the
-default virtual machine folder.</source>
- <translation type="obsolete">打开对è¯æ¡†é€‰æ‹©ç”¨äºŽå­˜æ”¾è™šæ‹Ÿç”µè„‘的默认文件夹.</translation>
- </message>
- <message>
- <source>&amp;Keyboard</source>
- <translation type="obsolete">键盘(&amp;K)</translation>
- </message>
- <message>
- <source>&amp;Host Key</source>
- <translation type="obsolete">热键(&amp;H)</translation>
- </message>
- <message>
- <source>&amp;Auto capture keyboard</source>
- <translation type="obsolete">自动æ•èŽ·é”®ç›˜(&amp;A)</translation>
- </message>
- <message>
- <source>Alt+A</source>
- <translation type="obsolete">Alt+A</translation>
- </message>
- <message>
- <source>When checked, the keyboard is automatically
-captured every time the VM window is activated. When the keyboard is captured,
-all keystrokes (including system ones like Alt-Tab) are directed to the VM.</source>
- <translation type="obsolete">选中åŽï¼Œå½“虚拟电脑窗å£å¤„于活动状æ€æ—¶å°†è‡ªåŠ¨æ•èŽ·é”®ç›˜è¾“入。当键盘被æ•èŽ·æ—¶ï¼Œæ‰€æœ‰çš„键盘输入(包括系统切æ¢é”®å¦‚ Alt-Tab) 都将被å‘é€åˆ°è™šæ‹Ÿç”µè„‘.</translation>
- </message>
- <message>
- <source>&amp;USB Device Filters</source>
- <translation type="obsolete">USB设备筛选器(&amp;U)</translation>
- </message>
- <message>
- <source>Lists all global USB filters.
-The checkbox to the left defines whether the particular filter is enabled or not.</source>
- <translation type="obsolete">显示所有全局USB筛选器.
-左边的选择框决定该筛选器是å¦å¿…å¯ç”¨.</translation>
- </message>
- <message>
- <source>Ins</source>
- <translation type="obsolete">Ins</translation>
- </message>
- <message>
- <source>Add Empty (Ins)</source>
- <translation type="obsolete">添加空筛选器 (Ins)</translation>
- </message>
- <message>
- <source>Adds a new USB filter with
-all fields initially set to empty strings. Note that such a filter will match any attached
-USB device.</source>
- <translation type="obsolete">添加一个å„个域的值都为空的USB筛选器。
-需è¦æ³¨æ„的是:这样的筛选器将会匹é…所有连接到主机上的USB设备.</translation>
- </message>
- <message>
- <source>Alt+Ins</source>
- <translation type="obsolete">Alt+Ins</translation>
- </message>
- <message>
- <source>Add From (Alt+Ins)</source>
- <translation type="obsolete">从当å‰è®¾å¤‡ä¸­æ·»åŠ  (Alt+Ins)</translation>
- </message>
- <message>
- <source>Adds a new USB filter
-with all fields set to the values of the selected USB device attached to the host PC.</source>
- <translation type="obsolete">添加一个USB筛选器,并把其å„个域的值设置为当å‰é€‰ä¸­çš„已连接到主机上的USB设备.</translation>
- </message>
- <message>
- <source>Del</source>
- <translation type="obsolete">删除</translation>
- </message>
- <message>
- <source>Remove (Del)</source>
- <translation type="obsolete">删除 (Del)</translation>
- </message>
- <message>
- <source>Removes the selected USB filter.</source>
- <translation type="obsolete">删除所选的USB筛选器.</translation>
- </message>
- <message>
- <source>Ctrl+Up</source>
- <translation type="obsolete">Ctrl+Up</translation>
- </message>
- <message>
- <source>Move Up (Ctrl+Up)</source>
- <translation type="obsolete">å‘上移动 (Ctrl+Up)</translation>
- </message>
- <message>
- <source>Moves the selected USB filter up.</source>
- <translation type="obsolete">å‘上移动所选的USB筛选器.</translation>
- </message>
- <message>
- <source>Ctrl+Down</source>
- <translation type="obsolete">Ctrl+Down</translation>
- </message>
- <message>
- <source>Move Down (Ctrl+Down)</source>
- <translation type="obsolete">å‘下移动 (Ctrl+Down)</translation>
- </message>
- <message>
- <source>Moves the selected USB filter down.</source>
- <translation type="obsolete">å‘下移动所选的USB筛选器.</translation>
- </message>
- <message>
- <source>Help</source>
- <translation type="obsolete">帮助</translation>
- </message>
- <message>
- <source>F1</source>
- <translation type="obsolete">F1</translation>
- </message>
- <message>
- <source>Displays the dialog help.</source>
- <translation type="obsolete">显示帮助对è¯æ¡†.</translation>
- </message>
- <message>
- <source>Invalid settings detected</source>
- <translation type="obsolete">å‘现无效设置</translation>
- </message>
- <message>
- <source>&amp;OK</source>
- <translation type="obsolete">确定(&amp;O)</translation>
- </message>
- <message>
- <source>Alt+O</source>
- <translation type="obsolete">Alt+O</translation>
- </message>
- <message>
- <source>Accepts (saves) changes and closes the dialog.</source>
- <translation type="obsolete">ä¿å­˜è®¾ç½®å˜åŠ¨å¹¶å…³é—­å¯¹è¯æ¡†.</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>Cancels changes and closes the dialog.</source>
- <translation type="obsolete">放弃更改并关闭对è¯æ¡†.</translation>
- </message>
- <message>
- <source>VirtualBox Preferences</source>
- <translation type="obsolete">全局设定</translation>
- </message>
- <message>
- <source>Displays the key used as a Host Key in the VM window. Activate the entry field and press a new Host Key. Note that alphanumeric, cursor movement and editing keys cannot be used.</source>
- <translation type="obsolete">显示当å‰è™šæ‹Ÿç”µè„‘窗å£æ‰€ç”¨çƒ­é”®ã€‚ä½ å¯ä»¥æ¿€æ´»è¯¥è¾“入框并定义一个新的热键。需è¦æ³¨æ„的是:数字键ã€å…‰æ ‡é”®å’Œç¼–辑键ä¸èƒ½ç”¨ä½œçƒ­é”®.</translation>
- </message>
- <message>
- <source>New Filter %1</source>
- <comment>usb</comment>
- <translation type="obsolete">新筛选器 %1</translation>
- </message>
- <message>
- <source>Language</source>
- <translation type="obsolete">语言</translation>
- </message>
- <message>
- <source> Language </source>
- <translation type="obsolete"> 语言 </translation>
- </message>
- <message>
- <source>3</source>
- <translation type="obsolete">3</translation>
- </message>
- <message>
- <source>&amp;Interface Language</source>
- <translation type="obsolete">ç•Œé¢è¯­è¨€(&amp;I)</translation>
- </message>
- <message>
- <source>Author(s):</source>
- <translation type="obsolete">作者:</translation>
- </message>
- <message>
- <source>Language:</source>
- <translation type="obsolete">语言:</translation>
- </message>
- <message>
- <source> (built-in)</source>
- <comment>Language</comment>
- <translation type="obsolete"> (内嵌)</translation>
- </message>
- <message>
- <source>&lt;unavailable&gt;</source>
- <comment>Language</comment>
- <translation type="obsolete">&lt;无效&gt;</translation>
- </message>
- <message>
- <source>&lt;unknown&gt;</source>
- <comment>Author(s)</comment>
- <translation type="obsolete">&lt;未知&gt;</translation>
- </message>
- <message>
- <source>
-&lt;qt&gt;Lists all available user interface languages. The effective language is
-written in &lt;b&gt;bold&lt;/b&gt;. Select &lt;i&gt;Default&lt;/i&gt; to reset
-to the system default language.&lt;/qt&gt;
- </source>
- <translation type="obsolete">
-&lt;qt&gt; 显示所有å¯ç”¨çš„用户界é¢è¯­è¨€ã€‚
-&lt;b&gt;加黑&lt;/b&gt;的为当å‰æ­£åœ¨ä½¿ç”¨çš„语言。
-选择&lt;i&gt;默认&lt;/i&gt;将使用系统默认的语言.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Default</source>
- <comment>Language</comment>
- <translation type="obsolete">默认</translation>
- </message>
- <message>
- <source>Displays the path to the default VDI folder. This folder is used, if not explicitly specified otherwise, when adding existing or creating new virtual hard disks.</source>
- <translation type="obsolete">显示存放虚拟硬盘文件的默认文件夹。如果没有明确指定其它文件夹,当创建新的虚拟硬盘或注册已存在的虚拟硬盘时将默认使用此文件夹.</translation>
- </message>
- <message>
- <source>Resets the virtual machine folder path to the default value. The actual default path will be displayed after accepting the changes and opening this dialog again.</source>
- <translation type="obsolete">é‡è®¾å­˜æ”¾è™šæ‹Ÿç”µè„‘的文件夹为默认值。当改å˜è¢«æŽ¥å—åŽï¼Œå†æ¬¡æ‰“开这个对è¯æ¡†æ—¶å°†æ˜¾ç¤ºé»˜è®¤è·¯å¾„.</translation>
- </message>
- <message>
- <source>Resets the VDI folder path to the default value. The actual default path will be displayed after accepting the changes and opening this dialog again.</source>
- <translation type="obsolete">é‡è®¾å­˜æ”¾è™šæ‹Ÿç¡¬ç›˜çš„文件夹为默认值。当改å˜è¢«æŽ¥å—åŽï¼Œå†æ¬¡æ‰“开这个对è¯æ¡†æ—¶å°†æ˜¾ç¤ºé»˜è®¤è·¯å¾„.</translation>
- </message>
- <message>
- <source>Displays the path to the default virtual machine folder. This folder is used, if not explicitly specified otherwise, when creating new virtual machines.</source>
- <translation type="obsolete">显示存放虚拟电脑的默认文件夹。如果没有明确指定其它文件夹,当创建新的虚拟电脑时将默认使用此文件夹.</translation>
- </message>
- <message>
- <source>Opens a dialog to select the default VDI folder.</source>
- <translation type="obsolete">打开对è¯æ¡†é€‰æ‹©ç”¨äºŽå­˜æ”¾è™šæ‹Ÿç¡¬ç›˜çš„默认文件夹.</translation>
- </message>
- <message>
- <source>Opens a dialog to select the default virtual machine folder.</source>
- <translation type="obsolete">打开对è¯æ¡†é€‰æ‹©ç”¨äºŽå­˜æ”¾ç”µè„‘的默认文件夹.</translation>
- </message>
- <message>
- <source>When checked, the keyboard is automatically captured every time the VM window is activated. When the keyboard is captured, all keystrokes (including system ones like Alt-Tab) are directed to the VM.</source>
- <translation type="obsolete">选中åŽï¼Œå½“虚拟电脑窗å£å¤„于活动状æ€æ—¶å°†è‡ªåŠ¨æ•èŽ·é”®ç›˜è¾“入。当键盘被æ•èŽ·æ—¶ï¼Œæ‰€æœ‰çš„键盘输入(包括系统切æ¢é”®å¦‚ Alt-Tab) 都将被å‘é€åˆ°è™šæ‹Ÿç”µè„‘.</translation>
- </message>
- <message>
- <source>Lists all global USB filters. The checkbox to the left defines whether the particular filter is enabled or not.</source>
- <translation type="obsolete">显示所有全局USB筛选器.左边的选择框决定该筛选器是å¦å¿…å¯ç”¨.</translation>
- </message>
- <message>
- <source>Adds a new USB filter with all fields initially set to empty strings. Note that such a filter will match any attached USB device.</source>
- <translation type="obsolete">添加一个å„个域的值都为空的USB筛选器。
-需è¦æ³¨æ„的是:这样的筛选器将会匹é…所有连接到主机上的USB设备.</translation>
- </message>
- <message>
- <source>Adds a new USB filter with all fields set to the values of the selected USB device attached to the host PC.</source>
- <translation type="obsolete">添加一个USB筛选器,并把其å„个域的值设置为当å‰é€‰ä¸­çš„已连接到主机上的USB设备.</translation>
- </message>
- <message>
- <source>V&amp;RDP Authentication Library</source>
- <translation type="obsolete">VRDP 认è¯åº“(&amp;R)</translation>
- </message>
- <message>
- <source>Displays the path to the library that provides authentication for Remote Display (VRDP) clients.</source>
- <translation type="obsolete">显示用于æ供远程桌é¢(VRDP)认è¯çš„库的所在路径.</translation>
- </message>
- <message>
- <source>Opens a dialog to select the VRDP authentication library file.</source>
- <translation type="obsolete">打开用于选择VRDP认è¯åº“的对è¯æ¡†.</translation>
- </message>
- <message>
- <source>Resets the authentication library file to the default value. The actual default library file will be displayed after accepting the changes and opening this dialog again.</source>
- <translation type="obsolete">é‡ç½®è®¤è¯åº“为默认值.</translation>
- </message>
- <message>
- <source>&amp;Extended Features</source>
- <translation type="obsolete">扩展特性(&amp;E)</translation>
- </message>
- <message>
- <source>Enable &amp;VT-x/AMD-V</source>
- <translation type="obsolete">å¯ç”¨ VT-x/AMD-V(&amp;V)</translation>
- </message>
- <message>
- <source>Alt+V</source>
- <translation type="obsolete">Alt+V</translation>
- </message>
- <message>
- <source>Defines whether virtual machines should try to make use of the host CPU&apos;s hardware virtualization extensions such as Intel VT-x and AMD-V by default or not.</source>
- <translation type="obsolete">指定虚拟电脑是å¦åˆ©ç”¨ä¸»æœºCPU内的虚拟扩展指令.</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Lists all global USB
- filters. The checkbox to the left
- defines whether the particular
- filter is enabled or not. Use the
- context menu or buttons to the
- right to add or remove USB
- filters.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;显示所有全局USB筛选器。左边的选择框用æ¥ç¡®å®šæ˜¯å¦è¦å¯ç”¨æˆ–ç¦ç”¨è¯¥ç­›é€‰å™¨ã€‚添加或删除筛选器å¯é€šè¿‡å³è¾¹çš„按钮或å³é”®èœå•.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Add Empty Filter</source>
- <translation type="obsolete">添加一个空的筛选器</translation>
- </message>
- <message>
- <source>&amp;Add Empty Filter</source>
- <translation type="obsolete">添加一个空的筛选器(&amp;A)</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Adds a new USB filter with all fields initially set to
- empty strings. Note that such a filter will match any attached USB
- device.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;添加一个所有域值都为空的USB筛选器,æ示:这样的筛选器将会匹é…所有的USB设备.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Add Filter From Device</source>
- <translation type="obsolete">从设备列表中添加筛选器</translation>
- </message>
- <message>
- <source>A&amp;dd Filter From Device</source>
- <translation type="obsolete">从设备列表中添加筛选器(&amp;d)</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Adds a new USB filter with all fields set to the
- values of the selected USB device attached to the host
- PC.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;添加一个与所选设备所对应的USB筛选器.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Remove Filter</source>
- <translation type="obsolete">删除筛选器</translation>
- </message>
- <message>
- <source>&amp;Remove Filter</source>
- <translation type="obsolete">删除筛选器(&amp;R)</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Removes the highlighted USB filter.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;删除选中的USB筛选器.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Move Filter Up</source>
- <translation type="obsolete">å‘上移动筛选器</translation>
- </message>
- <message>
- <source>&amp;Move Filter Up</source>
- <translation type="obsolete">å‘上移动筛选器(&amp;M)</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Moves the highlighted USB filter up.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;å‘上移动所选的USB筛选器.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Move Filter Down</source>
- <translation type="obsolete">å‘下移动筛选器</translation>
- </message>
- <message>
- <source>M&amp;ove Filter Down</source>
- <translation type="obsolete">å‘下移动筛选器(&amp;o)</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Moves the highlighted USB filter down.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;å‘上移动所选USB筛选器.&lt;/qt&gt;</translation>
- </message>
-</context>
-<context>
- <name>VBoxHardDiskSettings</name>
- <message>
- <source>Slot</source>
- <translation type="obsolete">æ’槽</translation>
- </message>
- <message>
- <source>Hard Disk</source>
- <translation type="obsolete">虚拟硬盘</translation>
- </message>
- <message>
- <source>VBoxHardDiskSettings</source>
- <translation type="obsolete">虚拟硬盘设置</translation>
- </message>
- <message>
- <source>&amp;Hard Disks</source>
- <translation type="obsolete">虚拟硬盘(&amp;H)</translation>
- </message>
- <message>
- <source>&amp;Enable SATA Controller</source>
- <translation type="obsolete">å¯ç”¨SATA控制器(&amp;E)</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;When checked, enables the virtual SATA
- controller of this machine. Note that you cannot
- attach hard disks to SATA ports when the virtual SATA
- controller is disabled.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;选中,å¯ç”¨è¯¥è™šæ‹Ÿç”µè„‘内的SATA控制器。æ示:当未å¯ç”¨SATA控制器时你ä¸èƒ½æŠŠè™šæ‹Ÿç¡¬ç›˜è¿žæŽ¥åˆ°SATA端å£.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Hard Disks &amp;Attachments</source>
- <translation type="obsolete">虚拟硬盘连接(&amp;A)</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Lists all hard disks attached to
- this machine. Use a mouse double-click or the
- &lt;tt&gt;F2&lt;/tt&gt;/&lt;tt&gt;Space&lt;/tt&gt;
- key on the highlighted item to activate the
- drop-down list and choose the desired value.
- Use the context menu or buttons to the right
- to add or remove hard disk
- attachments.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;列出所有连接到这个虚拟电脑的虚拟硬盘。在çªå‡ºæ˜¾ç¤ºçš„项目上åŒå‡»é¼ æ ‡æˆ–按&lt;tt&gt;F2&lt;/tt&gt;&lt;tt&gt;Space&lt;/tt&gt;键调出下拉列表并选择所è¦çš„值。用上下文èœå•æˆ–å³è¾¹çš„按钮添加或删除虚拟硬盘连接.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Add Attachment</source>
- <translation type="obsolete">添加连接</translation>
- </message>
- <message>
- <source>&amp;Add Attachment</source>
- <translation type="obsolete">添加连接(&amp;A)</translation>
- </message>
- <message>
- <source>Ins</source>
- <translation type="obsolete">Ins</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Adds a new hard disk attachment.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;添加一个新的虚拟硬盘连接.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Remove Attachment</source>
- <translation type="obsolete">删除连接</translation>
- </message>
- <message>
- <source>&amp;Remove Attachment</source>
- <translation type="obsolete">删除连接(&amp;R)</translation>
- </message>
- <message>
- <source>Delete</source>
- <translation type="obsolete">删除</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Removes the highlighted hard disk attachment.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;删除高亮显示的虚拟硬盘连接.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Select Hard Disk</source>
- <translation type="obsolete">选择虚拟硬盘</translation>
- </message>
- <message>
- <source>&amp;Select Hard Disk</source>
- <translation type="obsolete">选择虚拟硬盘(&amp;S)</translation>
- </message>
- <message>
- <source>Ctrl+Space</source>
- <translation type="obsolete">Ctrl+Space</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Invokes the Virtual Disk Manager to select a hard disk
- to attach to the currently highlighted slot.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;调用虚拟介质管ç†å™¨é€‰æ‹©ä¸€ä¸ªè™šæ‹Ÿç¡¬ç›˜ç”¨äºŽè¿žæŽ¥åˆ°å½“å‰é«˜äº®æ˜¾ç¤ºçš„æ’槽.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;i&gt;%1&lt;/i&gt; uses the hard disk that is already attached to &lt;i&gt;%2&lt;/i&gt;</source>
- <translation type="obsolete">&lt;i&gt;%1&lt;/i&gt; 使用的虚拟硬盘已ç»è¿žæŽ¥åˆ° &lt;i&gt;%2&lt;/i&gt;</translation>
- </message>
- <message>
- <source>Double-click to add a new attachment</source>
- <translation type="obsolete">åŒå‡»æ·»åŠ ä¸€ä¸ªæ–°è¿žæŽ¥</translation>
- </message>
- <message>
- <source>No hard disk is selected for &lt;i&gt;%1&lt;/i&gt;</source>
- <translation type="obsolete">没有为 &lt;i&gt;%1&lt;/i&gt;指定硬盘</translation>
+ <translation>“%1â€æ˜¯æ— æ•ˆçš„主机组åˆé”®åºåˆ—。</translation>
</message>
</context>
<context>
- <name>VBoxHelpButton</name>
+ <name>VBoxLicenseViewer</name>
<message>
- <source>&amp;Help</source>
- <translation type="obsolete">帮助(&amp;H)</translation>
+ <source>VirtualBox License</source>
+ <translation>VirtualBox 许å¯</translation>
</message>
-</context>
-<context>
- <name>VBoxLicenseViewer</name>
<message>
<source>I &amp;Agree</source>
<translation>我åŒæ„(&amp;A)</translation>
@@ -10912,80 +6457,6 @@ to the system default language.&lt;/qt&gt;
<source>I &amp;Disagree</source>
<translation>我ä¸åŒæ„(&amp;D)</translation>
</message>
- <message>
- <source>VirtualBox License</source>
- <translation>VirtualBox License</translation>
- </message>
-</context>
-<context>
- <name>VBoxLogSearchPanel</name>
- <message>
- <source>Close the search panel</source>
- <translation>关闭æœç´¢é¢æ¿</translation>
- </message>
- <message>
- <source>Find </source>
- <translation>查找(sp)</translation>
- </message>
- <message>
- <source>Enter a search string here</source>
- <translation>输入æœç´¢å­—符串</translation>
- </message>
- <message>
- <source>&amp;Previous</source>
- <translation>å‘å‰(&amp;P)</translation>
- </message>
- <message>
- <source>Alt+P</source>
- <translation type="obsolete">Alt+P</translation>
- </message>
- <message>
- <source>Search for the previous occurrence of the string</source>
- <translation>å‘å‰æœç´¢è¯¥å­—符串</translation>
- </message>
- <message>
- <source>&amp;Next</source>
- <translation>å‘åŽ(&amp;N)</translation>
- </message>
- <message>
- <source>Alt+N</source>
- <translation type="obsolete">Alt+N</translation>
- </message>
- <message>
- <source>Search for the next occurrence of the string</source>
- <translation>å‘åŽæœç´¢è¯¥å­—符串</translation>
- </message>
- <message>
- <source>C&amp;ase Sensitive</source>
- <translation>匹é…大å°å†™(&amp;a)</translation>
- </message>
- <message>
- <source>Perform case sensitive search (when checked)</source>
- <translation>匹é…大å°å†™è¿›è¡Œæœç´¢(选中时)</translation>
- </message>
- <message>
- <source>String not found</source>
- <translation>æ— å‘现字符串</translation>
- </message>
-</context>
-<context>
- <name>VBoxMediaComboBox</name>
- <message>
- <source>&lt;no hard disk&gt;</source>
- <translation type="obsolete">&lt;没有硬盘&gt;</translation>
- </message>
- <message>
- <source>No hard disk</source>
- <translation type="obsolete">没有硬盘</translation>
- </message>
- <message>
- <source>No media available. Use the Virtual Media Manager to add media of the corresponding type.</source>
- <translation type="obsolete">没有å¯ç”¨ä»‹è´¨. 请打开虚拟介质管ç†å™¨ä»¥æ·»åŠ ç›¸åº”类型的介质.</translation>
- </message>
- <message>
- <source>&lt;no media&gt;</source>
- <translation type="obsolete">&lt;没有å¯ç”¨ä»‹è´¨&gt;</translation>
- </message>
</context>
<context>
<name>VBoxMediaManagerDlg</name>
@@ -11023,7 +6494,7 @@ to the system default language.&lt;/qt&gt;
</message>
<message>
<source>Remove the selected medium</source>
- <translation>删除所选的虚拟存储介质</translation>
+ <translation>移除所选的虚拟存储介质</translation>
</message>
<message>
<source>Release the selected medium by detaching it from the machines</source>
@@ -11034,18 +6505,6 @@ to the system default language.&lt;/qt&gt;
<translation>刷新虚拟存储介质列表</translation>
</message>
<message>
- <source>Location</source>
- <translation type="obsolete">ä½ç½®</translation>
- </message>
- <message>
- <source>Type (Format)</source>
- <translation type="obsolete">类型 (æ ¼å¼)</translation>
- </message>
- <message>
- <source>Attached to</source>
- <translation type="obsolete">分é…到</translation>
- </message>
- <message>
<source>Checking accessibility</source>
<translation>检测å¯è®¿é—®æ€§</translation>
</message>
@@ -11054,10 +6513,6 @@ to the system default language.&lt;/qt&gt;
<translation>选择(&amp;S)</translation>
</message>
<message>
- <source>All hard disk images (%1)</source>
- <translation type="obsolete">所有虚拟硬盘(%1)</translation>
- </message>
- <message>
<source>All files (*)</source>
<translation>所有文件(*)</translation>
</message>
@@ -11066,24 +6521,16 @@ to the system default language.&lt;/qt&gt;
<translation>选择一个虚拟硬盘</translation>
</message>
<message>
- <source>CD/DVD-ROM images (*.iso);;All files (*)</source>
- <translation type="obsolete">虚拟光盘(*.iso);;所有文件(*)</translation>
- </message>
- <message>
<source>Select a CD/DVD-ROM disk image file</source>
<translation>选择一个虚拟光盘</translation>
</message>
<message>
- <source>Floppy images (*.img);;All files (*)</source>
- <translation type="obsolete">虚拟软盘(*.img);;所有文件(*)</translation>
- </message>
- <message>
<source>Select a floppy disk image file</source>
<translation>选择一个虚拟软盘</translation>
</message>
<message>
<source>&lt;i&gt;Not&amp;nbsp;Attached&lt;/i&gt;</source>
- <translation>&lt;i&gt;未&amp;nbsp;分é…&lt;/i&gt;</translation>
+ <translation>&lt;i&gt;未分é…&lt;/i&gt;</translation>
</message>
<message>
<source>--</source>
@@ -11123,75 +6570,60 @@ to the system default language.&lt;/qt&gt;
<translation>虚拟软盘(&amp;F)</translation>
</message>
<message>
- <source>Attached to</source>
- <comment>VMM: Virtual Disk</comment>
- <translation type="obsolete">分é…到</translation>
- </message>
- <message>
- <source>Attached to</source>
- <comment>VMM: CD/DVD Image</comment>
- <translation type="obsolete">分é…到</translation>
- </message>
- <message>
- <source>Attached to</source>
- <comment>VMM: Floppy Image</comment>
- <translation type="obsolete">分é…到</translation>
- </message>
- <message>
<source>CD/DVD-ROM disk</source>
- <translation type="unfinished"></translation>
+ <translation>光驱</translation>
</message>
<message>
<source>hard disk</source>
- <translation type="unfinished"></translation>
+ <translation>虚拟硬盘</translation>
</message>
<message>
<source>floppy disk</source>
- <translation type="unfinished"></translation>
+ <translation>虚拟软盘</translation>
</message>
<message>
<source>All %1 images (%2)</source>
- <translation type="unfinished"></translation>
+ <translation>全部 %1 æ˜ åƒ (%2)</translation>
</message>
<message>
<source>Type:</source>
- <translation type="unfinished"></translation>
+ <translation>类型:</translation>
</message>
<message>
<source>Location:</source>
- <translation type="unfinished">ä½ç½®:</translation>
+ <translation>ä½ç½®:</translation>
</message>
<message>
<source>Format:</source>
- <translation type="unfinished"></translation>
+ <translation>æ ¼å¼:</translation>
</message>
<message>
<source>Storage details:</source>
- <translation type="unfinished"></translation>
+ <translation>存储器明细:</translation>
</message>
<message>
<source>Attached to:</source>
- <translation type="unfinished"></translation>
+ <translation>分é…到:</translation>
</message>
<message>
<source>&amp;Copy...</source>
- <translation type="unfinished"></translation>
+ <translation>å¤åˆ¶(&amp;C)...</translation>
</message>
<message>
<source>&amp;Modify...</source>
- <translation type="unfinished"></translation>
+ <translation>修改(&amp;M)...</translation>
</message>
<message>
<source>Copy an existing medium</source>
- <translation type="unfinished"></translation>
+ <translation>å¤åˆ¶çŽ°æœ‰çš„介质</translation>
</message>
<message>
<source>Modify the attributes of the selected medium</source>
- <translation type="unfinished"></translation>
+ <translation>修改选定介质的属性</translation>
</message>
<message>
<source>C&amp;lose</source>
- <translation type="unfinished"></translation>
+ <translation>退出(&amp;C)</translation>
</message>
</context>
<context>
@@ -11210,49 +6642,7 @@ to the system default language.&lt;/qt&gt;
</message>
<message>
<source>Minimize Window</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>VBoxNIList</name>
- <message>
- <source>VirtualBox Host Interface %1</source>
- <translation type="obsolete">VirtualBox Host Interface %1</translation>
- </message>
- <message>
- <source>&lt;p&gt;Do you want to remove the selected host network interface &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This interface may be in use by one or more network adapters of this or another VM. After it is removed, these adapters will no longer work until you correct their settings by either choosing a different interface name or a different adapter attachment type.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;你是å¦è¦åˆ é™¤æ‰€é€‰çš„Host Interface&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;注æ„:&lt;/b&gt;该界é¢å¯èƒ½è¢«è¿™ä¸ªæˆ–其它个虚拟电脑的一个或多个网络连接所使用。 删除该界é¢åŽï¼Œè¿™äº›ç½‘络连接将ä¸èƒ½æ­£å¸¸å·¥ä½œï¼Œç›´åˆ°ä½ é€šè¿‡é€‰æ‹©å…¶å®ƒç½‘络界é¢æˆ–使用一个ä¸åŒçš„适é…器接入类型æ¥ä¿®æ­£å®ƒä»¬.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Host &amp;Interfaces</source>
- <translation type="obsolete">Host &amp;Interfaces</translation>
- </message>
- <message>
- <source>Lists all available host interfaces.</source>
- <translation type="obsolete">显示所有的å¯ç”¨host interfaces å称.</translation>
- </message>
- <message>
- <source>A&amp;dd New Host Interface</source>
- <translation type="obsolete">添加一个新的Host Interface(&amp;d)</translation>
- </message>
- <message>
- <source>&amp;Remove Selected Host Interface</source>
- <translation type="obsolete">删除所选的Host Interface(&amp;R)</translation>
- </message>
- <message>
- <source>Adds a new host interface.</source>
- <translation type="obsolete">添加一个新的host interface.</translation>
- </message>
- <message>
- <source>Removes the selected host interface.</source>
- <translation type="obsolete">删除所选的host interface.</translation>
- </message>
-</context>
-<context>
- <name>VBoxNetworkDialog</name>
- <message>
- <source>Network Adapters</source>
- <translation type="obsolete">网络连接</translation>
+ <translation>窗å£æœ€å°åŒ–</translation>
</message>
</context>
<context>
@@ -11266,10 +6656,6 @@ to the system default language.&lt;/qt&gt;
<translation>显示你è¦å®‰è£…到虚拟电脑的æ“作系统类型.</translation>
</message>
<message>
- <source>V&amp;ersion:</source>
- <translation type="obsolete">版本(&amp;e):</translation>
- </message>
- <message>
<source>Displays the operating system type that you plan to install into this virtual machine (called a guest operating system).</source>
<translation>显示你è¦å®‰è£…到虚拟电脑的æ“作系统类型.</translation>
</message>
@@ -11279,148 +6665,6 @@ to the system default language.&lt;/qt&gt;
</message>
</context>
<context>
- <name>VBoxRegistrationDlg</name>
- <message>
- <source>VirtualBox Registration Dialog</source>
- <translation type="obsolete">VirtualBox Registration Dialog</translation>
- </message>
- <message>
- <source>&amp;Name</source>
- <translation type="obsolete">&amp;Name</translation>
- </message>
- <message>
- <source>Enter your full name using Latin characters.</source>
- <translation type="obsolete">Enter your full name using Latin characters.</translation>
- </message>
- <message>
- <source>&amp;E-mail</source>
- <translation type="obsolete">&amp;E-mail</translation>
- </message>
- <message>
- <source>Enter your e-mail address. Please use a valid address here.</source>
- <translation type="obsolete">Enter your e-mail address. Please use a valid address here.</translation>
- </message>
- <message>
- <source>&amp;Please do not use this information to contact me</source>
- <translation type="obsolete">&amp;Please do not use this information to contact me</translation>
- </message>
- <message>
- <source>Welcome to the VirtualBox Registration Form!</source>
- <translation type="obsolete">Welcome to the VirtualBox Registration Form!</translation>
- </message>
- <message>
- <source>&amp;Confirm</source>
- <translation type="obsolete">&amp;Confirm</translation>
- </message>
- <message>
- <source>Connection timed out.</source>
- <translation type="obsolete">Connection timed out.</translation>
- </message>
- <message>
- <source>Could not locate the registration form on the server (response: %1).</source>
- <translation type="obsolete">Could not locate the registration form on the server (response: %1).</translation>
- </message>
- <message>
- <source>Could not perform connection handshake.</source>
- <translation type="obsolete">Could not perform connection handshake.</translation>
- </message>
- <message>
- <source>&lt;p&gt;Please fill out this registration form to let us know that you use VirtualBox and, optionally, to keep you informed about VirtualBox news and updates.&lt;/p&gt;&lt;p&gt;Enter your full name using Latin characters and your e-mail address to the fields below. Sun Microsystems will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, Sun Microsystems will never pass your data to third parties. Detailed information about how we use your personal data can be found in the &lt;b&gt;Privacy Policy&lt;/b&gt; section of the VirtualBox Manual or on the &lt;a href=http://www.virtualbox.org/wiki/PrivacyPolicy&gt;Privacy Policy&lt;/a&gt; page of the VirtualBox web-site.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;Please fill out this registration form to let us know that you use VirtualBox and, optionally, to keep you informed about VirtualBox news and updates.&lt;/p&gt;&lt;p&gt;Enter your full name using Latin characters and your e-mail address to the fields below. Sun Microsystems will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, Sun Microsystems will never pass your data to third parties. Detailed information about how we use your personal data can be found in the &lt;b&gt;Privacy Policy&lt;/b&gt; section of the VirtualBox Manual or on the &lt;a href=http://www.virtualbox.org/wiki/PrivacyPolicy&gt;Privacy Policy&lt;/a&gt; page of the VirtualBox web-site.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Check this box if you do not want to receive mail from Sun Microsystems at the e-mail address specified above.</source>
- <translation type="obsolete">Check this box if you do not want to receive mail from Sun Microsystems at the e-mail address specified above.</translation>
- </message>
- <message>
- <source>C&amp;onfirm</source>
- <translation type="obsolete">C&amp;onfirm</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>Select Country/Territory</source>
- <translation type="obsolete">Select Country/Territory</translation>
- </message>
- <message>
- <source>&lt;p&gt;Please fill out this registration form to let us know that you use VirtualBox and, optionally, to keep you informed about VirtualBox news and updates.&lt;/p&gt;&lt;p&gt;Please use Latin characters only to fill in the fields below. Sun Microsystems will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, Sun Microsystems will never pass your data to third parties. Detailed information about how we use your personal data can be found in the &lt;b&gt;Privacy Policy&lt;/b&gt; section of the VirtualBox Manual or on the &lt;a href=http://www.virtualbox.org/wiki/PrivacyPolicy&gt;Privacy Policy&lt;/a&gt; page of the VirtualBox web-site.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;Please fill out this registration form to let us know that you use VirtualBox and, optionally, to keep you informed about VirtualBox news and updates.&lt;/p&gt;&lt;p&gt;Please use Latin characters only to fill in the fields below. Sun Microsystems will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, Sun Microsystems will never pass your data to third parties. Detailed information about how we use your personal data can be found in the &lt;b&gt;Privacy Policy&lt;/b&gt; section of the VirtualBox Manual or on the &lt;a href=http://www.virtualbox.org/wiki/PrivacyPolicy&gt;Privacy Policy&lt;/a&gt; page of the VirtualBox web-site.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>I &amp;already have a Sun Online account:</source>
- <translation type="obsolete">I &amp;already have a Sun Online account:</translation>
- </message>
- <message>
- <source>&amp;E-mail:</source>
- <translation type="obsolete">&amp;E-mail:</translation>
- </message>
- <message>
- <source>&amp;Password:</source>
- <translation type="obsolete">&amp;Password:</translation>
- </message>
- <message>
- <source>I &amp;would like to create a new Sun Online account:</source>
- <translation type="obsolete">I &amp;would like to create a new Sun Online account:</translation>
- </message>
- <message>
- <source>&amp;First Name:</source>
- <translation type="obsolete">&amp;First Name:</translation>
- </message>
- <message>
- <source>&amp;Last Name:</source>
- <translation type="obsolete">&amp;Last Name:</translation>
- </message>
- <message>
- <source>&amp;Company:</source>
- <translation type="obsolete">&amp;Company:</translation>
- </message>
- <message>
- <source>Co&amp;untry:</source>
- <translation type="obsolete">Co&amp;untry:</translation>
- </message>
- <message>
- <source>E-&amp;mail:</source>
- <translation type="obsolete">E-&amp;mail:</translation>
- </message>
- <message>
- <source>P&amp;assword:</source>
- <translation type="obsolete">P&amp;assword:</translation>
- </message>
- <message>
- <source>Co&amp;nfirm Password:</source>
- <translation type="obsolete">Co&amp;nfirm Password:</translation>
- </message>
- <message>
- <source>&amp;Register</source>
- <translation type="obsolete">&amp;Register</translation>
- </message>
-</context>
-<context>
- <name>VBoxSFDialog</name>
- <message>
- <source>Shared Folders</source>
- <translation type="obsolete">æ•°æ®ç©ºé—´</translation>
- </message>
- <message>
- <source>OK</source>
- <translation type="obsolete">确定</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>Help</source>
- <translation type="obsolete">帮助</translation>
- </message>
- <message>
- <source>&amp;OK</source>
- <translation type="obsolete">确定(&amp;O)</translation>
- </message>
-</context>
-<context>
<name>VBoxScreenshotViewer</name>
<message>
<source>Screenshot of %1 (%2)</source>
@@ -11428,283 +6672,79 @@ to the system default language.&lt;/qt&gt;
</message>
<message>
<source>Click to view non-scaled screenshot.</source>
- <translation>Click to view non-scaled screenshot.</translation>
+ <translation>å•å‡»æŸ¥çœ‹æœªç¼©æ”¾çš„快照。</translation>
</message>
<message>
<source>Click to view scaled screenshot.</source>
- <translation>Click to view scaled screenshot.</translation>
+ <translation>å•å‡»æŸ¥çœ‹ç¼©æ”¾çš„快照。</translation>
</message>
</context>
<context>
<name>VBoxSelectorWnd</name>
<message>
- <source>VirtualBox OSE</source>
- <translation type="obsolete">VirtualBox OSE</translation>
- </message>
- <message>
- <source>innotek VirtualBox</source>
- <translation type="obsolete">innotek VirtualBox</translation>
- </message>
- <message>
- <source>&amp;Details</source>
- <translation type="obsolete">é…置明细(&amp;D)</translation>
- </message>
- <message>
- <source>Virtual &amp;Disk Manager...</source>
- <translation type="obsolete">虚拟介质(&amp;D)...</translation>
- </message>
- <message>
- <source>Ctrl+D</source>
- <translation type="obsolete">Ctrl+D</translation>
- </message>
- <message>
- <source>Display the Virtual Disk Manager dialog</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨</translation>
- </message>
- <message>
- <source>&amp;Preferences...</source>
- <comment>global settings</comment>
- <translation>全局设定(&amp;P)...</translation>
- </message>
- <message>
- <source>Ctrl+G</source>
- <translation type="obsolete">Ctrl+G</translation>
- </message>
- <message>
- <source>Display the global settings dialog</source>
- <translation>打开全局设定界é¢</translation>
- </message>
- <message>
- <source>E&amp;xit</source>
- <translation>退出(&amp;x)</translation>
- </message>
- <message>
- <source>Ctrl+Q</source>
- <translation type="obsolete">Ctrl+Q</translation>
- </message>
- <message>
- <source>Close application</source>
- <translation>退出应用程åº</translation>
- </message>
- <message>
- <source>&amp;New...</source>
- <translation>新建(&amp;N)...</translation>
- </message>
- <message>
- <source>New</source>
- <translation type="obsolete">新建</translation>
- </message>
- <message>
- <source>Ctrl+N</source>
- <translation type="obsolete">Ctrl+N</translation>
- </message>
- <message>
- <source>Create a new virtual machine</source>
- <translation>新建虚拟电脑</translation>
- </message>
- <message>
<source>&amp;Settings...</source>
<translation>设置(&amp;S)...</translation>
</message>
<message>
- <source>Settings</source>
- <translation type="obsolete">设置</translation>
- </message>
- <message>
- <source>Ctrl+S</source>
- <translation type="obsolete">Ctrl+S</translation>
- </message>
- <message>
<source>Configure the selected virtual machine</source>
<translation>设置所选的虚拟电脑</translation>
</message>
<message>
- <source>&amp;Delete</source>
- <translation type="obsolete">删除(&amp;D)</translation>
- </message>
- <message>
- <source>Delete</source>
- <translation type="obsolete">删除</translation>
- </message>
- <message>
- <source>Delete the selected virtual machine</source>
- <translation type="obsolete">删除所选的虚拟电脑</translation>
- </message>
- <message>
- <source>D&amp;iscard</source>
- <translation type="obsolete">清除(&amp;i)</translation>
- </message>
- <message>
- <source>Discard</source>
- <translation type="unfinished">清除</translation>
- </message>
- <message>
- <source>Discard the saved state of the selected virtual machine</source>
- <translation>清除所选的虚拟电脑的休眠状æ€</translation>
- </message>
- <message>
- <source>&amp;Refresh</source>
- <translation type="obsolete">刷新(&amp;R)</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation type="obsolete">刷新</translation>
- </message>
- <message>
- <source>Ctrl+R</source>
- <translation type="obsolete">Ctrl+R</translation>
- </message>
- <message>
- <source>Refresh the accessibility state of the selected virtual machine</source>
- <translation>刷新所选虚拟电脑的当å‰çŠ¶æ€</translation>
- </message>
- <message>
- <source>&amp;Contents...</source>
- <translation type="obsolete">内容(&amp;C)...</translation>
- </message>
- <message>
- <source>F1</source>
- <translation type="obsolete">F1</translation>
- </message>
- <message>
- <source>Show the online help contents</source>
- <translation type="obsolete">Show the online help contents</translation>
- </message>
- <message>
- <source>&amp;VirtualBox Web Site...</source>
- <translation type="obsolete">&amp;VirtualBox Web Site...</translation>
- </message>
- <message>
- <source>Open the browser and go to the VirtualBox product web site</source>
- <translation type="obsolete">Open the browser and go to the VirtualBox product web site</translation>
- </message>
- <message>
- <source>&amp;About VirtualBox...</source>
- <translation type="obsolete">&amp;About VirtualBox...</translation>
- </message>
- <message>
- <source>Show a dialog with product information</source>
- <translation type="obsolete">Show a dialog with product information</translation>
- </message>
- <message>
- <source>&amp;Reset All Warnings</source>
- <translation type="obsolete">&amp;Reset All Warnings</translation>
- </message>
- <message>
- <source>Go back to showing all suppressed warnings and messages</source>
- <translation type="obsolete">Go back to showing all suppressed warnings and messages</translation>
- </message>
- <message>
- <source>&amp;File</source>
- <translation type="obsolete">管ç†(&amp;F)</translation>
- </message>
- <message>
- <source>&amp;VM</source>
- <translation type="obsolete">电脑(&amp;V)</translation>
- </message>
- <message>
- <source>&amp;Help</source>
- <translation type="obsolete">帮助(&amp;H)</translation>
- </message>
- <message>
- <source>&amp;Snapshots</source>
- <translation type="obsolete">快速修å¤(&amp;S)</translation>
- </message>
- <message>
- <source>D&amp;escription</source>
- <translation type="obsolete">辅助说明(&amp;e)</translation>
- </message>
- <message>
- <source>D&amp;escription *</source>
- <translation type="obsolete">辅助说明(&amp;e) *</translation>
- </message>
- <message>
- <source>S&amp;how</source>
- <translation>显示(&amp;h)</translation>
- </message>
- <message>
- <source>Show</source>
- <translation type="obsolete">显示</translation>
- </message>
- <message>
- <source>Switch to the window of the selected virtual machine</source>
- <translation>切æ¢åˆ°æ‰€é€‰çš„虚拟电脑窗å£</translation>
- </message>
- <message>
- <source>S&amp;tart</source>
- <translation>开始(&amp;t)</translation>
- </message>
- <message>
- <source>Start</source>
- <translation type="obsolete">å¯åŠ¨</translation>
- </message>
- <message>
- <source>Start the selected virtual machine</source>
- <translation>å¯åŠ¨æ‰€é€‰çš„虚拟电脑</translation>
- </message>
- <message>
<source>&amp;Machine</source>
+ <translatorcomment>TODO</translatorcomment>
<translation>控制(&amp;M)</translation>
</message>
<message>
- <source>Show &amp;Log...</source>
- <translation>日志(&amp;L)...</translation>
- </message>
- <message>
- <source>Show Log...</source>
- <translation type="obsolete">日志...</translation>
- </message>
- <message>
- <source>Ctrl+L</source>
- <translation type="obsolete">Ctrl+L</translation>
- </message>
- <message>
- <source>Show the log files of the selected virtual machine</source>
- <translation>显示所选的虚拟电脑的日志文件</translation>
+ <source>Resume the execution of the virtual machine</source>
+ <translation>唤醒正在è¿è¡Œçš„虚拟电脑</translation>
</message>
<message>
- <source>R&amp;egister VirtualBox...</source>
- <translation type="obsolete">R&amp;egister VirtualBox...</translation>
+ <source>&amp;Pause</source>
+ <translation>æš‚åœ(&amp;P)</translation>
</message>
<message>
- <source>Open VirtualBox registration form</source>
- <translation type="obsolete">Open VirtualBox registration form</translation>
+ <source>Suspend the execution of the virtual machine</source>
+ <translation>将正在è¿è¡Œçš„虚拟电脑暂åœ</translation>
</message>
<message>
- <source>Sun xVM VirtualBox</source>
- <translation type="obsolete">Sun xVM VirtualBox</translation>
+ <source>&lt;h3&gt;Welcome to VirtualBox!&lt;/h3&gt;&lt;p&gt;The left part of this window is a list of all virtual machines on your computer. The list is empty now because you haven&apos;t created any virtual machines yet.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;In order to create a new virtual machine, press the &lt;b&gt;New&lt;/b&gt; button in the main tool bar located at the top of the window.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;%1&lt;/b&gt; key to get instant help, or visit &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; for the latest information and news.&lt;/p&gt;</source>
+ <translation>&lt;h3&gt;欢迎使用虚拟电脑控制å°!&lt;/h3&gt;&lt;p&gt;窗å£çš„左边用æ¥æ˜¾ç¤ºå·²ç”Ÿæˆçš„虚拟电脑. 现在是空的,因为你还没有新建任何虚拟电脑.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;è¦æ–°å»ºä¸€ä¸ªè™šæ‹Ÿç”µè„‘, 请按ä½äºŽçª—å£é¡¶éƒ¨å·¥å…·æ ä¸Šçš„ &lt;b&gt;新建&lt;/b&gt; 按钮。&lt;/p&gt;&lt;p&gt;ä½ å¯ä»¥æŒ‰ &lt;b&gt;%1&lt;/b&gt; é”®æ¥æŸ¥çœ‹å¸®åŠ©ï¼Œæˆ–访问 &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; 查看最新信æ¯å’Œæ–°é—».&lt;/p&gt;</translation>
</message>
<message>
- <source>R&amp;esume</source>
- <translation type="obsolete">唤醒(&amp;e)</translation>
+ <source>Log</source>
+ <comment>icon text</comment>
+ <translation>日志</translation>
</message>
<message>
- <source>Resume</source>
- <translation type="obsolete">唤醒</translation>
+ <source>Select a virtual machine file</source>
+ <translation>选择虚拟电脑</translation>
</message>
<message>
- <source>Ctrl+P</source>
- <translation type="obsolete">Ctrl+P</translation>
+ <source>Virtual machine files (%1)</source>
+ <translation>虚拟电脑 (%1)</translation>
</message>
<message>
- <source>Resume the execution of the virtual machine</source>
- <translation>唤醒正在è¿è¡Œçš„虚拟电脑</translation>
+ <source>Manager</source>
+ <comment>Note: main window title which is pretended by the product name.</comment>
+ <translation>管ç†å™¨</translation>
</message>
<message>
- <source>&amp;Pause</source>
- <translation>æš‚åœ(&amp;P)</translation>
+ <source>Show Toolbar</source>
+ <translation>显示工具æ </translation>
</message>
<message>
- <source>Pause</source>
- <translation type="obsolete">æš‚åœ</translation>
+ <source>Show Statusbar</source>
+ <translation>显示状æ€æ </translation>
</message>
<message>
- <source>Suspend the execution of the virtual machine</source>
- <translation>将正在è¿è¡Œçš„虚拟电脑暂åœ</translation>
+ <source>&amp;File</source>
+ <comment>Mac OS X version</comment>
+ <translation>管ç†(&amp;F)</translation>
</message>
<message>
- <source>&lt;h3&gt;Welcome to VirtualBox!&lt;/h3&gt;&lt;p&gt;The left part of this window is a list of all virtual machines on your computer. The list is empty now because you haven&apos;t created any virtual machines yet.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;In order to create a new virtual machine, press the &lt;b&gt;New&lt;/b&gt; button in the main tool bar located at the top of the window.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;F1&lt;/b&gt; key to get instant help, or visit &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; for the latest information and news.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;h3&gt;欢迎使用虚拟电脑控制å°!&lt;/h3&gt;&lt;p&gt;窗å£çš„左边用æ¥æ˜¾ç¤ºå·²ç”Ÿæˆçš„虚拟电脑列表. 现在列表是空的,因为你还没有新建任何虚拟电脑.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;è¦æ–°å»ºä¸€ä¸ªè™šæ‹Ÿç”µè„‘, 请按ä½äºŽçª—å£é¡¶éƒ¨å·¥å…·æ ä¸Šçš„ &lt;b&gt;新建&lt;/b&gt; 按钮。.&lt;/p&gt;&lt;p&gt;ä½ å¯ä»¥æŒ‰ &lt;b&gt;F1&lt;/b&gt; é”®æ¥æŸ¥çœ‹å¸®åŠ©ï¼Œæˆ–访问 &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; 查看最新信æ¯å’Œæ–°é—».&lt;/p&gt;</translation>
+ <source>&amp;File</source>
+ <comment>Non Mac OS X version</comment>
+ <translation>管ç†(&amp;F)</translation>
</message>
<message>
<source>&amp;Virtual Media Manager...</source>
@@ -11715,15 +6755,6 @@ to the system default language.&lt;/qt&gt;
<translation>打开虚拟介质管ç†å™¨</translation>
</message>
<message>
- <source>Log</source>
- <comment>icon text</comment>
- <translation>日志</translation>
- </message>
- <message>
- <source>Sun VirtualBox</source>
- <translation type="obsolete">Sun VirtualBox</translation>
- </message>
- <message>
<source>&amp;Import Appliance...</source>
<translation>导入虚拟电脑(&amp;I)...</translation>
</message>
@@ -11740,317 +6771,154 @@ to the system default language.&lt;/qt&gt;
<translation>导出一个虚拟电脑</translation>
</message>
<message>
- <source>Re&amp;fresh</source>
- <translation>刷新(&amp;f)</translation>
- </message>
- <message>
- <source>&lt;h3&gt;Welcome to VirtualBox!&lt;/h3&gt;&lt;p&gt;The left part of this window is a list of all virtual machines on your computer. The list is empty now because you haven&apos;t created any virtual machines yet.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;In order to create a new virtual machine, press the &lt;b&gt;New&lt;/b&gt; button in the main tool bar located at the top of the window.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;%1&lt;/b&gt; key to get instant help, or visit &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; for the latest information and news.&lt;/p&gt;</source>
- <translation>&lt;h3&gt;欢迎使用虚拟电脑控制å°!&lt;/h3&gt;&lt;p&gt;窗å£çš„左边用æ¥æ˜¾ç¤ºå·²ç”Ÿæˆçš„虚拟电脑. 现在是空的,因为你还没有新建任何虚拟电脑.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;è¦æ–°å»ºä¸€ä¸ªè™šæ‹Ÿç”µè„‘, 请按ä½äºŽçª—å£é¡¶éƒ¨å·¥å…·æ ä¸Šçš„ &lt;b&gt;新建&lt;/b&gt; 按钮。&lt;/p&gt;&lt;p&gt;ä½ å¯ä»¥æŒ‰ &lt;b&gt;%1&lt;/b&gt; é”®æ¥æŸ¥çœ‹å¸®åŠ©ï¼Œæˆ–访问 &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; 查看最新信æ¯å’Œæ–°é—».&lt;/p&gt;</translation>
+ <source>&amp;Preferences...</source>
+ <comment>global settings</comment>
+ <translation>全局设定(&amp;P)...</translation>
</message>
<message>
- <source>&amp;File</source>
- <comment>Mac OS X version</comment>
- <translation type="unfinished">管ç†(&amp;F)</translation>
+ <source>Display the global settings dialog</source>
+ <translation>打开全局设定界é¢</translation>
</message>
<message>
- <source>&amp;File</source>
- <comment>Non Mac OS X version</comment>
- <translation type="unfinished">管ç†(&amp;F)</translation>
+ <source>E&amp;xit</source>
+ <translation>退出(&amp;X)</translation>
</message>
<message>
- <source>Select a virtual machine file</source>
- <translation type="unfinished"></translation>
+ <source>Close application</source>
+ <translation>退出应用程åº</translation>
</message>
<message>
- <source>Virtual machine files (%1)</source>
- <translation type="unfinished"></translation>
+ <source>&amp;New...</source>
+ <translation>新建(&amp;N)...</translation>
</message>
<message>
- <source>Manager</source>
- <comment>Note: main window title which is pretended by the product name.</comment>
- <translation type="unfinished"></translation>
+ <source>Create a new virtual machine</source>
+ <translation>新建虚拟电脑</translation>
</message>
<message>
<source>&amp;Add...</source>
- <translation type="unfinished">注册(&amp;A)...</translation>
+ <translation>注册(&amp;A)...</translation>
</message>
<message>
<source>Add an existing virtual machine</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Remove</source>
- <translation type="unfinished">删除(&amp;R)</translation>
- </message>
- <message>
- <source>Remove the selected virtual machine</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Show in Finder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Show the VirtualBox Machine Definition file in Finder.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Create Alias on Desktop</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Creates an Alias file to the VirtualBox Machine Definition file on your Desktop.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Show in Explorer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Show the VirtualBox Machine Definition file in Explorer.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Create Shortcut on Desktop</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Creates an Shortcut file to the VirtualBox Machine Definition file on your Desktop.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Show in File Manager</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Show the VirtualBox Machine Definition file in the File Manager</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Show Toolbar</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Show Statusbar</source>
- <translation type="unfinished"></translation>
+ <translation>注册一个已ç»å­˜åœ¨çš„虚拟电脑</translation>
</message>
<message>
<source>Cl&amp;one...</source>
- <translation type="unfinished"></translation>
+ <translation>å¤åˆ¶(&amp;O)...</translation>
</message>
<message>
<source>Clone the selected virtual machine</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>D&amp;iscard Saved State</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>VBoxSettingsDialog</name>
- <message>
- <source>&lt;i&gt;Select a settings category from the list on the left-hand side and move the mouse over a settings item to get more information&lt;/i&gt;.</source>
- <translation type="obsolete">&lt;i&gt;从左边的设置列表中选择一个类别,然åŽç§»åŠ¨é¼ æ ‡åˆ°ä¸€ä¸ªå…·ä½“的设置项目以获å–更多信æ¯&lt;i&gt;.</translation>
- </message>
- <message>
- <source>Invalid settings detected</source>
- <translation type="obsolete">å‘现无效设置</translation>
- </message>
- <message>
- <source>Settings</source>
- <translation type="obsolete">设置</translation>
- </message>
- <message>
- <source>Non-optimal settings detected</source>
- <translation type="obsolete">未å‘现最佳设置</translation>
- </message>
- <message>
- <source>On the &lt;b&gt;%1&lt;/b&gt; page, %2</source>
- <translation type="obsolete">在 &lt;b&gt;%1&lt;/b&gt; 页, %2</translation>
- </message>
-</context>
-<context>
- <name>VBoxSharedFoldersSettings</name>
- <message>
- <source>Name</source>
- <translation type="obsolete">å称</translation>
- </message>
- <message>
- <source>Path</source>
- <translation type="obsolete">路径</translation>
- </message>
- <message>
- <source>Shared &amp;Folders</source>
- <translation type="obsolete">æ•°æ®ç©ºé—´(&amp;F)</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Lists all shared folders accessible to this machine.
-Use
-&lt;tt&gt;net use x: \\vboxsvr\share&lt;/tt&gt;
-to access a shared folder named &lt;i&gt;share&lt;/i&gt; from a DOS-like OS, or
-&lt;tt&gt;mount -t vboxsf share mount_point&lt;/tt&gt;
-to access it from a Linux OS. This feature requires Guest Additions.&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;列出本虚拟电脑å¯è®¿é—®çš„所有数æ®ç©ºé—´ã€‚
-使用
-&lt;tt&gt;net use x: \\vboxsvr\share&lt;/tt&gt;
-从DOS或Windows中访问å为: &lt;i&gt;share&lt;/i&gt; çš„æ•°æ®ç©ºé—´ï¼Œæˆ–使用
-&lt;tt&gt;mount -t vboxsf share mount_point&lt;/tt&gt;
-从Linux类的æ“作系统中访问该文件夹。该功能需è¦åœ¨è™šæ‹Ÿç”µè„‘中安装增强功能包.&lt;/qt&gt;</translation>
+ <translation>å¤åˆ¶æ‰€é€‰çš„虚拟电脑</translation>
</message>
<message>
- <source>Add</source>
- <translation type="obsolete">添加</translation>
- </message>
- <message>
- <source>Adds a new shared folder definition.</source>
- <translation type="obsolete">添加一个新的数æ®ç©ºé—´.</translation>
- </message>
- <message>
- <source>Edit</source>
- <translation type="obsolete">编辑</translation>
+ <source>&amp;Remove</source>
+ <translation>删除(&amp;R)</translation>
</message>
<message>
- <source>Edit selected shared folder definition.</source>
- <translation type="obsolete">编辑所选数æ®ç©ºé—´.</translation>
+ <source>Remove the selected virtual machine</source>
+ <translation>删除所选的虚拟电脑</translation>
</message>
<message>
- <source>Remove</source>
- <translation type="obsolete">删除</translation>
+ <source>S&amp;tart</source>
+ <translation>å¯åŠ¨(&amp;T)</translation>
</message>
<message>
- <source>Removes the selected shared folder definition.</source>
- <translation type="obsolete">删除所选数æ®ç©ºé—´.</translation>
+ <source>Start the selected virtual machine</source>
+ <translation>å¯åŠ¨æ‰€é€‰çš„虚拟电脑</translation>
</message>
<message>
- <source>Add a new shared folder</source>
- <translation type="obsolete">添加一个新的数æ®ç©ºé—´</translation>
+ <source>S&amp;how</source>
+ <translation>显示(&amp;H)</translation>
</message>
<message>
- <source>Edit the selected shared folder</source>
- <translation type="obsolete">编辑所选数æ®ç©ºé—´</translation>
+ <source>Switch to the window of the selected virtual machine</source>
+ <translation>切æ¢åˆ°æ‰€é€‰çš„虚拟电脑窗å£</translation>
</message>
<message>
- <source>Remove the selected shared folder</source>
- <translation type="obsolete">删除所选数æ®ç©ºé—´</translation>
+ <source>Discard</source>
+ <translation>清除</translation>
</message>
<message>
- <source> Machine Folders</source>
- <translation type="obsolete">固定分é…</translation>
+ <source>D&amp;iscard Saved State</source>
+ <translation>清除ä¿å­˜çš„状æ€(&amp;I)</translation>
</message>
<message>
- <source> Transient Folders</source>
- <translation type="obsolete">临时分é…</translation>
+ <source>Discard the saved state of the selected virtual machine</source>
+ <translation>清除所选的虚拟电脑的休眠状æ€</translation>
</message>
<message>
- <source>&lt;nobr&gt;Name:&amp;nbsp;&amp;nbsp;%1&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Path:&amp;nbsp;&amp;nbsp;%2&lt;/nobr&gt;</source>
- <translation type="obsolete">&lt;nobr&gt;å称:&amp;nbsp;&amp;nbsp;%1&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;路径:&amp;nbsp;&amp;nbsp;%2&lt;/nobr&gt;</translation>
+ <source>Re&amp;fresh</source>
+ <translation>刷新(&amp;F)</translation>
</message>
<message>
- <source>Edits the selected shared folder definition.</source>
- <translation type="obsolete">编辑所选数æ®ç©ºé—´çš„设置.</translation>
+ <source>Refresh the accessibility state of the selected virtual machine</source>
+ <translation>刷新所选虚拟电脑的当å‰çŠ¶æ€</translation>
</message>
<message>
- <source>VBoxSharedFoldersSettings</source>
- <comment>don&apos;t translate</comment>
- <translation type="obsolete">æ•°æ®ç©ºé—´è®¾ç½®</translation>
+ <source>Show &amp;Log...</source>
+ <translation>日志(&amp;L)...</translation>
</message>
<message>
- <source>Ins</source>
- <translation type="obsolete">Ins</translation>
+ <source>Show the log files of the selected virtual machine</source>
+ <translation>显示所选的虚拟电脑的日志文件</translation>
</message>
<message>
- <source>Add a new shared folder (Ins)</source>
- <translation type="obsolete">添加一个新的数æ®ç©ºé—´ (Ins)</translation>
+ <source>Show in Finder</source>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>在查找框中显示</translation>
</message>
<message>
- <source>Space</source>
- <translation type="obsolete">Space</translation>
+ <source>Show the VirtualBox Machine Definition file in Finder.</source>
+ <translatorcomment>TODO</translatorcomment>
+ <translation>在查找框中显示虚拟电脑的定义文件。</translation>
</message>
<message>
- <source>Edit the selected shared folder (Space)</source>
- <translation type="obsolete">编辑所选数æ®ç©ºé—´ (Space)</translation>
+ <source>Show in Explorer</source>
+ <translatorcomment>Windows</translatorcomment>
+ <translation>在资æºç®¡ç†å™¨ä¸­æ˜¾ç¤º</translation>
</message>
<message>
- <source>Del</source>
- <translation type="obsolete">Del</translation>
+ <source>Show the VirtualBox Machine Definition file in Explorer.</source>
+ <translatorcomment>Windows</translatorcomment>
+ <translation>在资æºç®¡ç†å™¨ä¸­æ˜¾ç¤ºè™šæ‹Ÿç”µè„‘的定义文件。</translation>
</message>
<message>
- <source>Remove the selected shared folder (Del)</source>
- <translation type="obsolete">删除所选数æ®ç©ºé—´(Del)</translation>
+ <source>Show in File Manager</source>
+ <translatorcomment>Linux</translatorcomment>
+ <translation>用文件管ç†å™¨æŸ¥çœ‹</translation>
</message>
<message>
- <source>Access</source>
- <translation type="obsolete">访问æƒé™</translation>
+ <source>Show the VirtualBox Machine Definition file in the File Manager</source>
+ <translatorcomment>Linux</translatorcomment>
+ <translation>在文件管ç†å™¨ä¸­æ˜¾ç¤ºè™šæ‹Ÿç”µè„‘的有关文件</translation>
</message>
<message>
- <source>Ctrl+Space</source>
- <translation type="obsolete">Ctrl+Space</translation>
+ <source>Create Alias on Desktop</source>
+ <translatorcomment>TODO:</translatorcomment>
+ <translation>在桌é¢ä¸Šåˆ›å»ºåˆ«å</translation>
</message>
<message>
- <source>Edit the selected shared folder (Ctrl+Space)</source>
- <translation type="obsolete">编辑所选的数æ®ç©ºé—´ (Ctrl+Space)</translation>
+ <source>Creates an Alias file to the VirtualBox Machine Definition file on your Desktop.</source>
+ <translation>在桌é¢ä¸Šåˆ›å»ºè™šæ‹Ÿç”µè„‘的别å。</translation>
</message>
<message>
- <source>Full</source>
- <translation type="obsolete">完全</translation>
+ <source>Create Shortcut on Desktop</source>
+ <translatorcomment>Linux</translatorcomment>
+ <translation>创建桌é¢å¿«æ·æ–¹å¼</translation>
</message>
<message>
- <source>Read-only</source>
- <translation type="obsolete">åªè¯»</translation>
+ <source>Creates an Shortcut file to the VirtualBox Machine Definition file on your Desktop.</source>
+ <translation>在桌é¢ä¸Šåˆ›å»ºå¯åŠ¨è™šæ‹Ÿç”µè„‘çš„å¿«æ·æ–¹å¼ã€‚</translation>
</message>
</context>
<context>
<name>VBoxSnapshotDetailsDlg</name>
<message>
- <source>VBoxSnapshotDetailsDlg</source>
- <translation type="obsolete">备份明细对è¯æ¡†</translation>
- </message>
- <message>
- <source> Snapshot Details </source>
- <translation type="obsolete">备份明细</translation>
- </message>
- <message>
- <source>&amp;Name</source>
- <translation type="obsolete">å称(&amp;N)</translation>
- </message>
- <message>
- <source>&amp;Description</source>
- <translation type="obsolete">æè¿°(&amp;D)</translation>
- </message>
- <message>
- <source>&amp;Machine Details</source>
- <translation type="obsolete">é…置明细(&amp;M)</translation>
- </message>
- <message>
- <source>Help</source>
- <translation type="obsolete">帮助</translation>
- </message>
- <message>
- <source>F1</source>
- <translation type="obsolete">F1</translation>
- </message>
- <message>
- <source>&amp;OK</source>
- <translation type="obsolete">确定(&amp;O)</translation>
- </message>
- <message>
- <source>Alt+O</source>
- <translation type="obsolete">Alt+O</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
<source>Details of %1 (%2)</source>
<translation>明细 %1 (%2)</translation>
</message>
<message>
- <source>Snapshot Details</source>
- <translation type="obsolete">备份明细</translation>
- </message>
- <message>
<source>Click to enlarge the screenshot.</source>
<translation>点击å¯æ”¾å¤§å±å¹•å¿«ç…§.</translation>
</message>
@@ -12074,70 +6942,10 @@ to access it from a Linux OS. This feature requires Guest Additions.&lt;/qt&gt;<
<context>
<name>VBoxSnapshotsWgt</name>
<message>
- <source>[snapshot]</source>
- <translation type="obsolete">[备份]</translation>
- </message>
- <message>
<source>VBoxSnapshotsWgt</source>
<translation>备份对è¯æ¡†</translation>
</message>
<message>
- <source>snapshotActionGroup</source>
- <translation type="obsolete">备份活动组</translation>
- </message>
- <message>
- <source>Discard Snapshot</source>
- <translation type="obsolete">删除备份</translation>
- </message>
- <message>
- <source>&amp;Discard Snapshot</source>
- <translation type="obsolete">删除备份(&amp;D)</translation>
- </message>
- <message>
- <source>Ctrl+Shift+D</source>
- <translation type="obsolete">Ctrl+Shift+D</translation>
- </message>
- <message>
- <source>curStateActionGroup</source>
- <translation type="obsolete">当å‰æ´»åŠ¨ç»„状æ€</translation>
- </message>
- <message>
- <source>Take Snapshot</source>
- <translation type="obsolete">生æˆå¤‡ä»½</translation>
- </message>
- <message>
- <source>Take &amp;Snapshot</source>
- <translation>生æˆå¤‡ä»½(&amp;S)</translation>
- </message>
- <message>
- <source>Discard Current State</source>
- <translation type="obsolete">清除当å‰çŠ¶æ€</translation>
- </message>
- <message>
- <source>D&amp;iscard Current State</source>
- <translation type="obsolete">清除当å‰çŠ¶æ€(&amp;i)</translation>
- </message>
- <message>
- <source>Discard Current Snapshot and State</source>
- <translation type="obsolete">删除最近备份和状æ€</translation>
- </message>
- <message>
- <source>D&amp;iscard Current Snapshot and State</source>
- <translation type="obsolete">删除最近备份和状æ€(&amp;i)</translation>
- </message>
- <message>
- <source>Show Details</source>
- <translation type="obsolete">显示明细</translation>
- </message>
- <message>
- <source>S&amp;how Details</source>
- <translation>显示明细(&amp;h)</translation>
- </message>
- <message>
- <source>Space</source>
- <translation type="obsolete">空间</translation>
- </message>
- <message>
<source>Current State (changed)</source>
<comment>Current State (Modified)</comment>
<translation>当å‰çŠ¶æ€ (已改å˜)</translation>
@@ -12190,50 +6998,22 @@ to access it from a Linux OS. This feature requires Guest Additions.&lt;/qt&gt;<
<translation>备份 %1</translation>
</message>
<message>
- <source>Discard the selected snapshot of the virtual machine</source>
- <translation type="obsolete">删除所选备份</translation>
+ <source>Take &amp;Snapshot</source>
+ <translation>生æˆå¤‡ä»½(&amp;S)</translation>
</message>
<message>
- <source>Ctrl+Shift+S</source>
- <translation type="obsolete">Ctrl+Shift+S</translation>
+ <source>S&amp;how Details</source>
+ <translation>显示明细(&amp;h)</translation>
</message>
<message>
<source>Take a snapshot of the current virtual machine state</source>
<translation>为虚拟电脑的当å‰çŠ¶æ€ç”Ÿæˆä¸€ä¸ªå¤‡ä»½</translation>
</message>
<message>
- <source>Revert to Current Snapshot</source>
- <translation type="obsolete">æ¢å¤æœ€è¿‘备份</translation>
- </message>
- <message>
- <source>&amp;Revert to Current Snapshot</source>
- <translation type="obsolete">æ¢å¤æœ€è¿‘备份(&amp;R)</translation>
- </message>
- <message>
- <source>Ctrl+Shift+R</source>
- <translation type="obsolete">Ctrl+Shift+R</translation>
- </message>
- <message>
- <source>Restore the virtual machine state from the state stored in the current snapshot</source>
- <translation type="obsolete">将虚拟电脑æ¢å¤åˆ°æœ€è¿‘备份中ä¿å­˜çš„状æ€</translation>
- </message>
- <message>
- <source>Ctrl+Shift+B</source>
- <translation type="obsolete">Ctrl+Shift+B</translation>
- </message>
- <message>
- <source>Discard the current snapshot and revert the machine to the state it had before the snapshot was taken</source>
- <translation type="obsolete">删除最近备份并让虚拟电脑回到生æˆæœ€è¿‘备份å‰çš„状æ€</translation>
- </message>
- <message>
<source>Show the details of the selected snapshot</source>
<translation>显示所选备份明细</translation>
</message>
<message>
- <source>Ctrl+Space</source>
- <translation type="obsolete">Ctrl+Space</translation>
- </message>
- <message>
<source> (%1)</source>
<translation> (%1)</translation>
</message>
@@ -12259,11 +7039,11 @@ to access it from a Linux OS. This feature requires Guest Additions.&lt;/qt&gt;<
</message>
<message>
<source>&amp;Clone...</source>
- <translation type="unfinished"></translation>
+ <translation>å¤åˆ¶(&amp;O)...</translation>
</message>
<message>
<source>Clone the selected virtual machine</source>
- <translation type="unfinished"></translation>
+ <translation>å¤åˆ¶æ‰€é€‰çš„虚拟电脑</translation>
</message>
</context>
<context>
@@ -12276,10 +7056,6 @@ to access it from a Linux OS. This feature requires Guest Additions.&lt;/qt&gt;<
<source>Enable</source>
<translation>å¯ç”¨</translation>
</message>
- <message>
- <source>%1 %2</source>
- <translation type="obsolete">%1 %2</translation>
- </message>
</context>
<context>
<name>VBoxTakeSnapshotDlg</name>
@@ -12295,194 +7071,15 @@ to access it from a Linux OS. This feature requires Guest Additions.&lt;/qt&gt;<
<source>Snapshot &amp;Description</source>
<translation>备份æè¿°(&amp;D)</translation>
</message>
- <message>
- <source>Help</source>
- <translation type="obsolete">帮助</translation>
- </message>
- <message>
- <source>F1</source>
- <translation type="obsolete">F1</translation>
- </message>
- <message>
- <source>&amp;OK</source>
- <translation type="obsolete">确定(&amp;O)</translation>
- </message>
- <message>
- <source>Alt+O</source>
- <translation type="obsolete">Alt+O</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
<message numerus="yes">
<source>Warning: You are taking a snapshot of a running machine which has %n immutable image(s) attached to it. As long as you are working from this snapshot the immutable image(s) will not be reset to avoid loss of data.</source>
+ <translatorcomment>TODO:更准确的用语</translatorcomment>
<translation>
- <numerusform>Warning: You are taking a snapshot of a running machine which has %n immutable image(s) attached to it. As long as you are working from this snapshot the immutable image(s) will not be reset to avoid loss of data.</numerusform>
+ <numerusform>警告: 您正在获å–所è¿è¡Œè™šæ‹Ÿæœºçš„备份,它有 %n 项ä¸å¯æ”¹å˜çš„映åƒåˆ†é…给它。生æˆå¤‡ä»½æ—¶ï¼Œé‚£äº›ä¸å¯æ”¹å˜çš„映åƒå°†ä¸è¢«é‡ç½®ä»¥é¿å…丢失数æ®ã€‚</numerusform>
</translation>
</message>
</context>
<context>
- <name>VBoxTrayIcon</name>
- <message>
- <source>Show Selector Window</source>
- <translation type="obsolete">显示选择窗å£</translation>
- </message>
- <message>
- <source>Show the selector window assigned to this menu</source>
- <translation type="obsolete">显示分é…到该èœå•çš„选择窗å£</translation>
- </message>
- <message>
- <source>Hide Tray Icon</source>
- <translation type="obsolete">éšè—系统托盘</translation>
- </message>
- <message>
- <source>Remove this icon from the system tray</source>
- <translation type="obsolete">从系统托盘删除该图标</translation>
- </message>
- <message>
- <source>&amp;Other Machines...</source>
- <comment>tray menu</comment>
- <translation type="obsolete">其它虚拟电脑(&amp;O)...</translation>
- </message>
-</context>
-<context>
- <name>VBoxUSBFilterSettings</name>
- <message>
- <source>VBoxUSBFilterSettings</source>
- <comment>don&apos;t translate</comment>
- <translation type="obsolete">USB筛选器设置</translation>
- </message>
- <message>
- <source>&amp;Name</source>
- <translation type="obsolete">å称(&amp;N)</translation>
- </message>
- <message>
- <source>Displays the filter name.</source>
- <translation type="obsolete">显示筛选器å称.</translation>
- </message>
- <message>
- <source>&amp;Manufacturer</source>
- <translation type="obsolete">&amp;Manufacturer</translation>
- </message>
- <message>
- <source>Pro&amp;duct</source>
- <translation type="obsolete">Pro&amp;duct</translation>
- </message>
- <message>
- <source>&amp;Serial No.</source>
- <translation type="obsolete">&amp;Serial No.</translation>
- </message>
- <message>
- <source>R&amp;emote</source>
- <translation type="obsolete">R&amp;emote</translation>
- </message>
- <message>
- <source>&amp;Action</source>
- <translation type="obsolete">&amp;Action</translation>
- </message>
- <message>
- <source>&amp;Vendor ID</source>
- <translation type="obsolete">&amp;Vendor ID</translation>
- </message>
- <message>
- <source>&amp;Product ID</source>
- <translation type="obsolete">&amp;Product ID</translation>
- </message>
- <message>
- <source>&amp;Revision</source>
- <translation type="obsolete">&amp;Revision</translation>
- </message>
- <message>
- <source>Por&amp;t</source>
- <translation type="obsolete">Por&amp;t</translation>
- </message>
- <message>
- <source>Any</source>
- <comment>remote</comment>
- <translation type="obsolete">Any</translation>
- </message>
- <message>
- <source>Yes</source>
- <comment>remote</comment>
- <translation type="obsolete">是</translation>
- </message>
- <message>
- <source>No</source>
- <comment>remote</comment>
- <translation type="obsolete">å¦</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Defines the manufacturer filter as an
-&lt;i&gt;exact match&lt;/i&gt; string. An empty string will match any
-value.&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;定义 manufacturer 筛选器为一 &lt;i&gt;精确匹é…&lt;/i&gt; 字符串. 空字符串会匹é…所有值.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Defines the product name filter as an
-&lt;i&gt;exact match&lt;/i&gt; string. An empty string will match any
-value.&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;定义 product 筛选器为一 &lt;i&gt;精确匹é…&lt;/i&gt; 字符串. 空字符串会匹é…所有值.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Defines the serial number filter as an
-&lt;i&gt;exact match&lt;/i&gt; string. An empty string will match any
-value.&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;定义 serial number 筛选器为一 &lt;i&gt;精确匹é…&lt;/i&gt; 字符串. 空字符串会匹é…所有值.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Defines whether this filter applies
-to USB devices attached locally to the host computer (&lt;i&gt;No&lt;/i&gt;),
-to a VRDP client&apos;s computer (&lt;i&gt;Yes&lt;/i&gt;),
-or both (&lt;i&gt;Any&lt;/i&gt;).&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;指定将该筛选器应用到
-连接到主机端的USB设备 (&lt;i&gt;å¦&lt;/i&gt;),
-连接到VRDP客户端的USB设备 (&lt;i&gt;是&lt;/i&gt;),
-或两者 (&lt;i&gt;任何&lt;/i&gt;).&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Defines an action performed by the host
-computer when a matching device is attached: give it up to the host OS
-(&lt;i&gt;Ignore&lt;/i&gt;) or grab it for later usage by virtual machines
-(&lt;i&gt;Hold&lt;/i&gt;).&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;定义当一个匹é…的设备连接到电脑时: 是将它分é…给主控系统
-(&lt;i&gt;Ignore&lt;/i&gt;) 还是直接分é…给该虚拟电脑
-(&lt;i&gt;Hold&lt;/i&gt;).&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Defines the vendor ID filter. The
-&lt;i&gt;exact match&lt;/i&gt; string format is &lt;tt&gt;XXXX&lt;/tt&gt; where
-&lt;tt&gt;X&lt;/tt&gt; is a hexadecimal digit. An empty string will match any
-value.&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;定义 vendor ID 筛选器. å…¶&lt;i&gt;精确匹é…&lt;/i&gt; 字符串的格å¼ä¸º &lt;tt&gt;XXXX&lt;/tt&gt; 其中
-&lt;tt&gt;X&lt;/tt&gt; 为å六进制字符. 空字符串会匹é…所有值.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Defines the product ID filter. The
-&lt;i&gt;exact match&lt;/i&gt; string format is &lt;tt&gt;XXXX&lt;/tt&gt; where
-&lt;tt&gt;X&lt;/tt&gt; is a hexadecimal digit. An empty string will match any
-value.&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;定义 produce ID 筛选器. å…¶&lt;i&gt;精确匹é…&lt;/i&gt; 字符串的格å¼ä¸º &lt;tt&gt;XXXX&lt;/tt&gt; 其中
-&lt;tt&gt;X&lt;/tt&gt; 为å六进制字符. 空字符串会匹é…所有值.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Defines the revision number filter. The
-&lt;i&gt;exact match&lt;/i&gt; string format is &lt;tt&gt;IIFF&lt;/tt&gt; where
-&lt;tt&gt;I&lt;/tt&gt; is a decimal digit of the integer part and &lt;tt&gt;F&lt;/tt&gt;
-is a decimal digit of the fractional part. An empty string will match any
-value.&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;定义 revision number 筛选器. å…¶&lt;i&gt;精确匹é…&lt;/i&gt; 字符串的格å¼ä¸º &lt;tt&gt;IIFF&lt;/tt&gt; 其中
-&lt;tt&gt;I&lt;/tt&gt; 为整数部分的å进制字符,而 &lt;tt&gt;F&lt;/tt&gt;
-为å°æ•°éƒ¨åˆ†çš„å进制字符. 空字符串会匹é…所有值.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Defines the host USB port filter as an
-&lt;i&gt;exact match&lt;/i&gt; string. An empty string will match any
-value.&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;定义 host USB port 筛选器为一 &lt;i&gt;精确匹é…&lt;/i&gt; 字符串. 空字符串会匹é…所有值.&lt;/qt&gt;</translation>
- </message>
-</context>
-<context>
<name>VBoxUSBMenu</name>
<message>
<source>&lt;no devices available&gt;</source>
@@ -12496,42 +7093,8 @@ value.&lt;/qt&gt;</source>
</message>
</context>
<context>
- <name>VBoxVMDescriptionPage</name>
- <message>
- <source>No description. Press the Edit button below to add it.</source>
- <translation type="obsolete">没有任何说明信æ¯ï¼Œå•å‡»ä¸‹é¢çš„编辑按钮开始添加.</translation>
- </message>
- <message>
- <source>Edit</source>
- <translation type="obsolete">编辑</translation>
- </message>
- <message>
- <source>Edit (Ctrl+E)</source>
- <translation type="obsolete">编辑 (Ctrl+E)</translation>
- </message>
- <message>
- <source>Ctrl+E</source>
- <translation type="obsolete">Ctrl+E</translation>
- </message>
-</context>
-<context>
- <name>VBoxVMDetailsView</name>
- <message>
- <source>The selected virtual machine is &lt;i&gt;inaccessible&lt;/i&gt;. Please inspect the error message shown below and press the &lt;b&gt;Refresh&lt;/b&gt; button if you want to repeat the accessibility check:</source>
- <translation type="obsolete">所选的虚拟电脑&lt;i&gt;ä¸èƒ½æ­£å¸¸è®¿é—®&lt;/i&gt;. 请检查下é¢çš„错误信æ¯æˆ–者按一下&lt;b&gt;刷新&lt;/b&gt;按钮,如果你想é‡å¤å¯è®¿é—®æ€§æ£€æŸ¥:</translation>
- </message>
-</context>
-<context>
<name>VBoxVMInformationDlg</name>
<message>
- <source>Session Information Dialog</source>
- <translation type="obsolete">è¿è¡ŒçŠ¶æ€</translation>
- </message>
- <message>
- <source>&amp;Close</source>
- <translation type="obsolete">关闭(&amp;C)</translation>
- </message>
- <message>
<source>%1 - Session Information</source>
<translation>%1 - çš„è¿è¡ŒçŠ¶æ€</translation>
</message>
@@ -12568,14 +7131,6 @@ value.&lt;/qt&gt;</source>
<translation>æ•°æ®æŽ¥æ”¶</translation>
</message>
<message>
- <source>Enabled</source>
- <translation type="obsolete">å¯ç”¨</translation>
- </message>
- <message>
- <source>Disabled</source>
- <translation type="obsolete">ç¦ç”¨</translation>
- </message>
- <message>
<source>Runtime Attributes</source>
<translation>硬件特å¾</translation>
</message>
@@ -12584,67 +7139,6 @@ value.&lt;/qt&gt;</source>
<translation>显示设置</translation>
</message>
<message>
- <source>Hardware Virtualization</source>
- <translation type="obsolete">硬件虚拟</translation>
- </message>
- <message>
- <source>IDE Hard Disk Statistics</source>
- <translation type="obsolete">IDE 硬盘统计信æ¯</translation>
- </message>
- <message>
- <source>CD/DVD-ROM Statistics</source>
- <translation type="obsolete">CD/DVD-ROM 统计信æ¯</translation>
- </message>
- <message>
- <source>Network Adapter Statistics</source>
- <translation type="obsolete">网络连接统计信æ¯</translation>
- </message>
- <message>
- <source>Adapter 1</source>
- <translation type="obsolete">网络连接 1</translation>
- </message>
- <message>
- <source>Adapter 2</source>
- <translation type="obsolete">网络连接 2</translation>
- </message>
- <message>
- <source>Adapter 3</source>
- <translation type="obsolete">网络连接 3</translation>
- </message>
- <message>
- <source>Adapter 4</source>
- <translation type="obsolete">网络连接 4</translation>
- </message>
- <message>
- <source>Not attached</source>
- <translation type="obsolete">未分é…</translation>
- </message>
- <message>
- <source>Hard Disks Statistics</source>
- <translation type="obsolete">硬盘统计信æ¯</translation>
- </message>
- <message>
- <source>Primary Master</source>
- <translation type="obsolete">第一IDE控制器主通é“</translation>
- </message>
- <message>
- <source>Primary Slave</source>
- <translation type="obsolete">第一IDE控制器从通é“</translation>
- </message>
- <message>
- <source>Secondary Master</source>
- <translation type="obsolete">第二IDE控制器主通é“</translation>
- </message>
- <message>
- <source>Secondary Slave</source>
- <translation type="obsolete">第二IDE控制器从通é“</translation>
- </message>
- <message>
- <source>Version %1.%2</source>
- <comment>guest additions</comment>
- <translation type="obsolete">版本 %1.%2</translation>
- </message>
- <message>
<source>Not Detected</source>
<comment>guest additions</comment>
<translation>未检测到</translation>
@@ -12663,41 +7157,14 @@ value.&lt;/qt&gt;</source>
<translation>虚拟电脑æ“作系统类型</translation>
</message>
<message>
- <source>Hard Disk Statistics</source>
- <translation type="obsolete">硬盘统计信æ¯</translation>
- </message>
- <message>
- <source>No Hard Disks</source>
- <translation type="obsolete">没有硬盘</translation>
- </message>
- <message>
<source>No Network Adapters</source>
<translation>没有网络连接</translation>
</message>
<message>
- <source>Enabled</source>
- <comment>nested paging</comment>
- <translation type="obsolete">å¯ç”¨</translation>
- </message>
- <message>
- <source>Disabled</source>
- <comment>nested paging</comment>
- <translation type="obsolete">ç¦ç”¨</translation>
- </message>
- <message>
- <source>Nested Paging</source>
- <translation type="obsolete">Nested Paging</translation>
- </message>
- <message>
<source>VBoxVMInformationDlg</source>
<translation>虚拟电脑信æ¯</translation>
</message>
<message>
- <source>Not Available</source>
- <comment>details report (VRDP server port)</comment>
- <translation type="obsolete">ä¸å¯ç”¨</translation>
- </message>
- <message>
<source>Storage Statistics</source>
<translation>存储介质</translation>
</message>
@@ -12710,31 +7177,9 @@ value.&lt;/qt&gt;</source>
<translation>网络连接</translation>
</message>
<message>
- <source>Nested Paging</source>
- <comment>details report</comment>
- <translation type="obsolete">Nested Paging</translation>
- </message>
- <message>
<source>Not Available</source>
<comment>details report (VRDE server port)</comment>
- <translation type="unfinished">ä¸å¯ç”¨</translation>
- </message>
-</context>
-<context>
- <name>VBoxVMListBox</name>
- <message>
- <source>&lt;nobr&gt;%1&lt;br&gt;&lt;/nobr&gt;&lt;nobr&gt;%2 since %3&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Session %4&lt;/nobr&gt;</source>
- <comment>VM tooltip (name, last state change, session state)</comment>
- <translation type="obsolete">&lt;nobr&gt;%1&lt;br&gt;&lt;/nobr&gt;&lt;nobr&gt;%2 自从 %3&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;任务 %4&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;br&gt;&lt;/nobr&gt;&lt;nobr&gt;Inaccessible since %2&lt;/nobr&gt;</source>
- <comment>Inaccessible VM tooltip (name, last state change)</comment>
- <translation type="obsolete">&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;br&gt;&lt;/nobr&gt;&lt;nobr&gt;ä¸èƒ½æ­£å¸¸è®¿é—®è‡ªä»Ž %2&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>Inaccessible</source>
- <translation type="obsolete">无法访问</translation>
+ <translation>ä¸å¯ç”¨</translation>
</message>
</context>
<context>
@@ -12748,22 +7193,10 @@ value.&lt;/qt&gt;</source>
<translation>ä¿å­˜(&amp;S)</translation>
</message>
<message>
- <source>Alt+S</source>
- <translation type="obsolete">Als+S</translation>
- </message>
- <message>
<source>&amp;Refresh</source>
<translation>刷新(&amp;R)</translation>
</message>
<message>
- <source>Alt+R</source>
- <translation type="obsolete">Alt+R</translation>
- </message>
- <message>
- <source>Alt+C</source>
- <translation type="obsolete">Alt+C</translation>
- </message>
- <message>
<source>%1 - VirtualBox Log Viewer</source>
<translation>%1 -虚拟电脑控制å°æ—¥å¿—查看器</translation>
</message>
@@ -12776,1613 +7209,55 @@ value.&lt;/qt&gt;</source>
<translation>ä¿å­˜è™šæ‹Ÿç”µè„‘控制å°æ—¥å¿—为</translation>
</message>
<message>
- <source>Help</source>
- <translation type="obsolete">帮助</translation>
- </message>
- <message>
- <source>F1</source>
- <translation type="obsolete">F1</translation>
- </message>
- <message>
<source>&amp;Find</source>
<translation>查找(&amp;F)</translation>
</message>
<message>
- <source>Alt+F</source>
- <translation type="obsolete">Alt+F</translation>
- </message>
- <message>
<source>Close</source>
<translation>关闭</translation>
</message>
</context>
<context>
- <name>VBoxVMNetworkSettings</name>
- <message>
- <source>VBoxVMNetworkSettings</source>
- <translation type="obsolete">网络设置</translation>
- </message>
- <message>
- <source>&amp;Enable Network Adapter</source>
- <translation type="obsolete">å¯ç”¨ç½‘络连接(&amp;E)</translation>
- </message>
- <message>
- <source>When checked, plugs this virtual network adapter into
- the virtual machine.</source>
- <translation type="obsolete">选中,将在虚拟电脑内å¯ç”¨è¯¥ç½‘络连接.</translation>
- </message>
- <message>
- <source>&amp;Attached to</source>
- <translation type="obsolete">网络连接方å¼(&amp;A)</translation>
- </message>
- <message>
- <source>Controls the way how this
- virtual adapter is attached to the
- real network of the Host OS.</source>
- <translation type="obsolete">设置网络连接以何ç§æ–¹å¼æŽ¥å…¥åˆ°ä¸»æœºä¸Šçš„真实网络.</translation>
- </message>
- <message>
- <source>&amp;MAC Address</source>
- <translation type="obsolete">MAC 地å€(&amp;M)</translation>
- </message>
- <message>
- <source>Displays the MAC address of
- this adapter. It contains exactly 12
- characters chosen from
- {0-9,A-F}.</source>
- <translation type="obsolete">显示网络连接的MAC地å€ã€‚它å¯åŒ…å«å¤„于{0-9,A-F}中的12ä½å­—符.</translation>
- </message>
- <message>
- <source>&amp;Generate</source>
- <translation type="obsolete">éšæœºç”Ÿæˆ(&amp;G)</translation>
- </message>
- <message>
- <source>Alt+G</source>
- <translation type="obsolete">Alt+G</translation>
- </message>
- <message>
- <source>Generates a new random MAC address.</source>
- <translation type="obsolete">生æˆä¸€ä¸ªæ–°çš„éšæœºMAC 地å€.</translation>
- </message>
- <message>
- <source>Ca&amp;ble Connected</source>
- <translation type="obsolete">接入网线(&amp;b)</translation>
- </message>
- <message>
- <source>Alt+B</source>
- <translation type="obsolete">Alt+B</translation>
- </message>
- <message>
- <source>Indicates whether the virtual network cable is plugged
- in on machine startup or not.</source>
- <translation type="obsolete">指示虚拟网线在å¯åŠ¨æ—¶æ˜¯å¦ä¸Žä¸»æœºè¿žæŽ¥.</translation>
- </message>
- <message>
- <source>Host Interface Settings</source>
- <translation type="obsolete">Host Interface Settings</translation>
- </message>
- <message>
- <source>&amp;Interface Name</source>
- <translation type="obsolete">&amp;Interface Name</translation>
- </message>
- <message>
- <source>Displays the
- name of the host
- interface selected for
- this adapter.</source>
- <translation type="obsolete">显示为该适é…器选择的host interfaceå称.</translation>
- </message>
- <message>
- <source>Lists all available
- host interfaces.</source>
- <translation type="obsolete">显示所有的å¯ç”¨host interfaceå称.</translation>
- </message>
- <message>
- <source>Adds a new host interface.</source>
- <translation type="obsolete">添加一个新的host interface.</translation>
- </message>
- <message>
- <source>Removes
- the selected host interface.</source>
- <translation type="obsolete">删除所选的host interface.</translation>
- </message>
- <message>
- <source>Displays the
- TAP interface
- name.</source>
- <translation type="obsolete">显示主机上的TAP网络界é¢å称.</translation>
- </message>
- <message>
- <source>&amp;File Descriptor</source>
- <translation type="obsolete">文件æ述符(&amp;F)</translation>
- </message>
- <message>
- <source>&amp;Setup Application</source>
- <translation type="obsolete">&amp;Setup Application</translation>
- </message>
- <message>
- <source>Displays the
- command executed to
- set up the TAP
- interface.</source>
- <translation type="obsolete">显示用于设置TAP host interface 的命令.</translation>
- </message>
- <message>
- <source>Select</source>
- <translation type="obsolete">选择</translation>
- </message>
- <message>
- <source>Selects the
- setup
- application.</source>
- <translation type="obsolete">选择设置程åº.</translation>
- </message>
- <message>
- <source>&amp;Terminate Application</source>
- <translation type="obsolete">&amp;Terminate Application</translation>
- </message>
- <message>
- <source>Displays the
- command executed to
- terminate the TAP
- interface.</source>
- <translation type="obsolete">显示用于中断TAP host interface 的命令.</translation>
- </message>
- <message>
- <source>Selects the
- terminate application.</source>
- <translation type="obsolete">选择中断程åº.</translation>
- </message>
- <message>
- <source>&lt;No suitable interfaces&gt;</source>
- <translation type="obsolete">&lt;没有åˆé€‚的网络界é¢&gt;</translation>
- </message>
- <message>
- <source>Add</source>
- <translation type="obsolete">添加</translation>
- </message>
- <message>
- <source>Remove</source>
- <translation type="obsolete">删除</translation>
- </message>
- <message>
- <source>Select TAP setup application</source>
- <translation type="obsolete">Select TAP setup application</translation>
- </message>
- <message>
- <source>Select TAP terminate application</source>
- <translation type="obsolete">Select TAP terminate application</translation>
- </message>
- <message>
- <source>VirtualBox Host Interface %1</source>
- <translation type="obsolete">VirtualBox Host Interface %1</translation>
- </message>
- <message>
- <source>&lt;p&gt;Do you want to remove the selected host network interface &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This interface may be in use by one or more network adapters of this or another VM. After it is removed, these adapters will no longer work until you correct their settings by either choosing a different interface name or a different adapter attachment type.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;你是å¦è¦åˆ é™¤æ‰€é€‰çš„Host Interface&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt;该界é¢å¯èƒ½è¢«è¿™ä¸ªæˆ–其它个虚拟电脑的一个或多个网络连接所使用。 删除该界é¢åŽï¼Œè¿™äº›ç½‘络连接将ä¸èƒ½æ­£å¸¸å·¥ä½œï¼Œç›´åˆ°ä½ é€šè¿‡é€‰æ‹©å…¶å®ƒç½‘络界é¢æˆ–使用一个ä¸åŒçš„适é…器接入类型æ¥ä¿®æ­£å®ƒä»¬.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>When checked, plugs this virtual network adapter into the virtual machine.</source>
- <translation type="obsolete">选中,将在虚拟电脑内å¯ç”¨è¯¥ç½‘络连接.</translation>
- </message>
- <message>
- <source>Controls the way how this virtual adapter is attached to the real network of the Host OS.</source>
- <translation type="obsolete">设置网络连接以何ç§æ–¹å¼æŽ¥å…¥åˆ°ä¸»æœºä¸Šçš„真实网络.</translation>
- </message>
- <message>
- <source>Displays the MAC address of this adapter. It contains exactly 12 characters chosen from {0-9,A-F}.</source>
- <translation type="obsolete">显示网络连接的MAC地å€ã€‚它å¯åŒ…å«å¤„于{0-9,A-F}中的12ä½å­—符.</translation>
- </message>
- <message>
- <source>Indicates whether the virtual network cable is plugged in on machine startup or not.</source>
- <translation type="obsolete">指示虚拟网线在å¯åŠ¨æ—¶æ˜¯å¦ä¸Žä¸»æœºè¿žæŽ¥.</translation>
- </message>
- <message>
- <source>Displays the name of the host interface selected for this adapter.</source>
- <translation type="obsolete">Displays the name of the host interface selected for this adapter.</translation>
- </message>
- <message>
- <source>Lists all available host interfaces.</source>
- <translation type="obsolete">显示所有的å¯ç”¨host interfaces å称.</translation>
- </message>
- <message>
- <source>Removes the selected host interface.</source>
- <translation type="obsolete">删除所选的host interface.</translation>
- </message>
- <message>
- <source>Displays the TAP interface name.</source>
- <translation type="obsolete">Displays the TAP interface name.</translation>
- </message>
- <message>
- <source>Displays the command executed to set up the TAP interface.</source>
- <translation type="obsolete">Displays the command executed to set up the TAP interface.</translation>
- </message>
- <message>
- <source>Selects the setup application.</source>
- <translation type="obsolete">Selects the setup application.</translation>
- </message>
- <message>
- <source>Displays the command executed to terminate the TAP interface.</source>
- <translation type="obsolete">Displays the command executed to terminate the TAP interface.</translation>
- </message>
- <message>
- <source>Selects the terminate application.</source>
- <translation type="obsolete">Selects the terminate application.</translation>
- </message>
- <message>
- <source>Displays the MAC address of this adapter. It contains exactly 12 characters chosen from {0-9,A-F}. Note that the second character must be an even digit.</source>
- <translation type="obsolete">显示这å—网å¡çš„ MAC 地å€ã€‚它包å«12ä½çš„字符信æ¯ï¼Œæ¯ä½å­—符å–自 {0-9,A-F} 。请注æ„:第二ä½å­—符必须为å¶æ•°.</translation>
- </message>
- <message>
- <source>&amp;Network Name</source>
- <translation type="obsolete">网络å称(&amp;N)</translation>
- </message>
- <message>
- <source>Adapter &amp;Type</source>
- <translation type="obsolete">网络连接芯片(&amp;T)</translation>
- </message>
- <message>
- <source>Selects the type of the virtual network adapter. Depending on this value, VirtualBox will provide different network hardware to the virtual machine.</source>
- <translation type="obsolete">选择网络连接芯片。根æ®è¯¥å€¼ VirtualBox 将为该虚拟电脑æä¾›ä¸åŒçš„网络硬件.</translation>
- </message>
- <message>
- <source>Displays the name of the internal network selected for this adapter.</source>
- <translation type="obsolete">显示为该网络连接选择的内部网络å称.</translation>
- </message>
-</context>
-<context>
- <name>VBoxVMParallelPortSettings</name>
- <message>
- <source>VBoxVMParallelPortSettings</source>
- <translation type="obsolete">并å£è®¾ç½®</translation>
- </message>
- <message>
- <source>&amp;Enable Parallel Port</source>
- <translation type="obsolete">å¯ç”¨å¹¶å£(&amp;E)</translation>
- </message>
- <message>
- <source>When checked, enables the given parallel port of the virtual machine.</source>
- <translation type="obsolete">选中,分é…指定的并å£ç»™è¯¥è™šæ‹Ÿç”µè„‘.</translation>
- </message>
- <message>
- <source>Port &amp;Number</source>
- <translation type="obsolete">端å£å·(&amp;N)</translation>
- </message>
- <message>
- <source>Displays the parallel port number. You can choose one of the standard parallel ports or select &lt;b&gt;User-defined&lt;/b&gt; and specify port parameters manually.</source>
- <translation type="obsolete">显示并å£çš„端å£å·ï¼Œä½ å¯ä»¥ä»Žæ ‡å‡†å¹¶å£ä¸­é€‰æ‹©ä¸€ä¸ªæˆ–选择 &lt;b&gt;User-defined&lt;/b&gt; 然åŽæ‰‹åŠ¨æŒ‡å®šä¸€ä¸ªç«¯å£å·.</translation>
- </message>
- <message>
- <source>&amp;IRQ</source>
- <translation type="obsolete">&amp;IRQ</translation>
- </message>
- <message>
- <source>Displays the IRQ number of this parallel port. Valid values are integer numbers in range from &lt;tt&gt;0&lt;/tt&gt; to &lt;tt&gt;255&lt;/tt&gt;. Values greater than &lt;tt&gt;15&lt;/tt&gt; may only be used if the &lt;b&gt;IO APIC&lt;/b&gt; is enabled for this virtual machine.</source>
- <translation type="obsolete">显示该并å£çš„ IRQå·ï¼Œæ­£ç¡®çš„数值为从 &lt;tt&gt;0&lt;/tt&gt; 到 &lt;tt&gt;255&lt;/tt&gt;çš„æ•´æ•°. åªæœ‰å½“虚拟电脑中å¯ç”¨ &lt;b&gt;IO APIC&lt;/b&gt; æ—¶æ‰èƒ½ä½¿ç”¨å¤§äºŽ &lt;tt&gt;15&lt;/tt&gt; 的值.</translation>
- </message>
- <message>
- <source>I/O Po&amp;rt</source>
- <translation type="obsolete">I/O端å£(&amp;r)</translation>
- </message>
- <message>
- <source>Displays the base I/O port address of this parallel port. This should be a whole number between &lt;tt&gt;0&lt;/tt&gt; and &lt;tt&gt;0xFFFF&lt;/tt&gt;.</source>
- <translation type="obsolete">显示该并å£çš„ I/O 端å£åœ°å€ï¼Œæ­£ç¡®çš„数值为从 &lt;tt&gt;0&lt;/tt&gt; 到 &lt;tt&gt;0xFFFF&lt;/tt&gt;çš„æ•´æ•°.</translation>
- </message>
- <message>
- <source>Port &amp;Path</source>
- <translation type="obsolete">端å£è·¯å¾„(&amp;P)</translation>
- </message>
- <message>
- <source>Displays the host parallel device name.</source>
- <translation type="obsolete">显示主机并å£è®¾å¤‡å称.</translation>
- </message>
-</context>
-<context>
- <name>VBoxVMSerialPortSettings</name>
- <message>
- <source>VBoxVMSerialPortSettings</source>
- <translation type="obsolete">串å£è®¾ç½®</translation>
- </message>
- <message>
- <source>&amp;Enable Serial Port</source>
- <translation type="obsolete">å¯ç”¨ä¸²å£(&amp;E)</translation>
- </message>
- <message>
- <source>When checked, enables the given serial port of the virtual machine.</source>
- <translation type="obsolete">选中åŽï¼Œå°†åœ¨è¿™ä¸ªè™šæ‹Ÿç”µè„‘中å¯ç”¨ä¸²å£.</translation>
- </message>
- <message>
- <source>Port &amp;Number</source>
- <translation type="obsolete">端å£å·(&amp;N)</translation>
- </message>
- <message>
- <source>Displays the serial port number. You can choose one of the standard serial ports or select &lt;b&gt;User-defined&lt;/b&gt; and specify port parameters manually.</source>
- <translation type="obsolete">显示串å£å·ï¼Œæ‚¨å¯ä»¥ä»Žæ ‡å‡†ä¸²å£ä¸­é€‰æ‹©ä¸€ä¸ªæˆ–选择 &lt;b&gt;User-defined&lt;/b&gt; 然åŽæ‰‹åŠ¨æŒ‡å®šä¸€ä¸ªç«¯å£å·.</translation>
- </message>
- <message>
- <source>&amp;IRQ</source>
- <translation type="obsolete">&amp;IRQ</translation>
- </message>
- <message>
- <source>Displays the IRQ number of this serial port. Valid values are integer numbers in range from &lt;tt&gt;0&lt;/tt&gt; to &lt;tt&gt;255&lt;/tt&gt;. Values greater than &lt;tt&gt;15&lt;/tt&gt; may only be used if the &lt;b&gt;IO APIC&lt;/b&gt; is enabled for this virtual machine.</source>
- <translation type="obsolete">显示该串å£çš„ IRQå·ç ï¼Œæ­£ç¡®çš„数值为从 &lt;tt&gt;0&lt;/tt&gt; 到 &lt;tt&gt;255&lt;/tt&gt;çš„æ•´æ•°. åªæœ‰å½“虚拟电脑中å¯ç”¨ &lt;b&gt;IO APIC&lt;/b&gt; æ—¶æ‰èƒ½ä½¿ç”¨å¤§äºŽ &lt;tt&gt;15&lt;/tt&gt; 的值.</translation>
- </message>
- <message>
- <source>I/O Po&amp;rt</source>
- <translation type="obsolete">I/O端å£(&amp;r)</translation>
- </message>
- <message>
- <source>Displays the base I/O port address of this serial port. This should be a whole number between &lt;tt&gt;0&lt;/tt&gt; and &lt;tt&gt;0xFFFF&lt;/tt&gt;.</source>
- <translation type="obsolete">显示该串å£çš„ I/O 端å£åœ°å€ï¼Œæ­£ç¡®çš„数值为从 &lt;tt&gt;0&lt;/tt&gt; 到 &lt;tt&gt;0xFFFF&lt;/tt&gt;çš„æ•´æ•°.</translation>
- </message>
- <message>
- <source>Port &amp;Mode</source>
- <translation type="obsolete">端å£æ¨¡å¼(&amp;M)</translation>
- </message>
- <message>
- <source>Controls the working mode of this serial port. If you select &lt;b&gt;Disconnected&lt;/b&gt;, the guest OS will detect the serial port but will not be able to operate it.</source>
- <translation type="obsolete">控制该串å£çš„工作模å¼ï¼Œå¦‚果您选择 &lt;b&gt;æ–­å¼€&lt;/b&gt;, 虚拟电脑中的系统将检测到该串å£ï¼Œä½†æ— æ³•è¿›è¡Œæ“作.</translation>
- </message>
- <message>
- <source>&amp;Create Pipe</source>
- <translation type="obsolete">创建通é“(&amp;C)</translation>
- </message>
- <message>
- <source>Alt+C</source>
- <translation type="obsolete">Alt+C</translation>
- </message>
- <message>
- <source>If checked, the pipe specified in the &lt;b&gt;Port Path&lt;/b&gt; field will be created by the virtual machine when it starts. Otherwise, the virtual machine will assume that the pipe exists and try to use it.</source>
- <translation type="obsolete">如果选中,在 &lt;b&gt;端å£è·¯å¾„&lt;/b&gt;域中指定的通é“将在虚拟电脑å¯åŠ¨æ—¶è¢«åˆ›å»ºã€‚å¦åˆ™è™šæ‹Ÿç”µè„‘å°†å°è¯•ä½¿ç”¨å·²å­˜åœ¨çš„通é“.</translation>
- </message>
- <message>
- <source>Port &amp;Path</source>
- <translation type="obsolete">端å£è·¯å¾„(&amp;P)</translation>
- </message>
- <message>
- <source>Displays the path to the serial port&apos;s pipe on the host when the port is working in &lt;b&gt;Host Pipe&lt;/b&gt; mode, or the host serial device name when the port is working in &lt;b&gt;Host Device&lt;/b&gt; mode.</source>
- <translation type="obsolete">当端å£å·¥ä½œåœ¨ &lt;b&gt;Host Pipe&lt;/b&gt; 模å¼æ—¶å°†æ˜¾ç¤ºè¯¥ä¸²å£é€šé“在主机上的路径,或者当端å£å·¥ä½œåœ¨ &lt;b&gt;Host Device&lt;/b&gt; 模å¼æ—¶å°†æ˜¾ç¤ºä¸»æœºä¸Šçš„串å£è®¾å¤‡å.</translation>
- </message>
-</context>
-<context>
- <name>VBoxVMSettingsCD</name>
- <message>
- <source>Host CD/DVD drive is not selected</source>
- <translation type="obsolete">没有分é…物ç†å…‰é©±</translation>
- </message>
- <message>
- <source>CD/DVD image file is not selected</source>
- <translation type="obsolete">没有分é…虚拟光盘</translation>
- </message>
- <message>
- <source>When checked, mounts the specified media to the CD/DVD drive of the virtual machine. Note that the CD/DVD drive is always connected to the Secondary Master IDE controller of the machine.</source>
- <translation type="obsolete">选中,将分é…指定光驱到虚拟电脑上。该光驱将固定地被分é…到虚拟电脑第二IDE控制器的主通é“.</translation>
- </message>
- <message>
- <source>&amp;Mount CD/DVD Drive</source>
- <translation type="obsolete">分é…光驱(&amp;M)</translation>
- </message>
- <message>
- <source>Mounts the specified CD/DVD drive to the virtual CD/DVD drive.</source>
- <translation type="obsolete">分é…物ç†å…‰é©±åˆ°è™šæ‹Ÿç”µè„‘.</translation>
- </message>
- <message>
- <source>Host CD/DVD &amp;Drive</source>
- <translation type="obsolete">物ç†å…‰é©±(&amp;D)</translation>
- </message>
- <message>
- <source>Lists host CD/DVD drives available to mount to the virtual machine.</source>
- <translation type="obsolete">显示å¯ä»¥åˆ†é…到虚拟电脑上的物ç†å…‰é©±.</translation>
- </message>
- <message>
- <source>When checked, allows the guest to send ATAPI commands directly to the host drive which makes it possible to use CD/DVD writers connected to the host inside the VM. Note that writing audio CD inside the VM is not yet supported.</source>
- <translation type="obsolete">选中åŽï¼Œå°±å¯åœ¨è¯¥è™šæ‹Ÿç”µè„‘中进行光盘的刻录. 请注æ„ç›®å‰å°šæœªæ供对音ä¹CD的写入支æŒ.</translation>
- </message>
- <message>
- <source>Enable &amp;Passthrough</source>
- <translation type="obsolete">Enable &amp;Passthrough</translation>
- </message>
- <message>
- <source>Mounts the specified CD/DVD image to the virtual CD/DVD drive.</source>
- <translation type="obsolete">分é…指定的虚拟光盘到虚拟电脑.</translation>
- </message>
- <message>
- <source>&amp;ISO Image File</source>
- <translation type="obsolete">虚拟光盘(&amp;I)</translation>
- </message>
- <message>
- <source>Displays the image file to mount to the virtual CD/DVD drive and allows to quickly select a different image.</source>
- <translation type="obsolete">显示分é…给该虚拟电脑的虚拟光盘,åŒæ—¶è¿˜å…许快速选择一个其它虚拟光盘.</translation>
- </message>
- <message>
- <source>Invokes the Virtual Disk Manager to select a CD/DVD image to mount.</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨é€‰æ‹©ä¸€ä¸ªç”¨äºŽåˆ†é…的虚拟光盘.</translation>
- </message>
- <message>
- <source>Invokes the Virtual Media Manager to select a CD/DVD image to mount.</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨é€‰æ‹©ä¸€ä¸ªç”¨äºŽåˆ†é…的虚拟光盘.</translation>
- </message>
-</context>
-<context>
- <name>VBoxVMSettingsDlg</name>
- <message>
- <source>Category</source>
- <translation type="obsolete">目录</translation>
- </message>
- <message>
- <source>[id]</source>
- <translation type="obsolete">[标识]</translation>
- </message>
- <message>
- <source>[link]</source>
- <translation type="obsolete">[链接]</translation>
- </message>
- <message>
- <source>[name]</source>
- <translation type="obsolete">[å称]</translation>
- </message>
- <message>
- <source>VBoxVMSettingsDlg</source>
- <translation type="obsolete">虚拟电脑设置对è¯æ¡†</translation>
- </message>
- <message>
- <source>&lt;i&gt;Select a settings category from the list on the left-hand side and move the mouse over a settings item to get more information&lt;i&gt;.</source>
- <translation type="obsolete">&lt;i&gt;从左边的设置列表中选择一个类别,然åŽç§»åŠ¨é¼ æ ‡åˆ°ä¸€ä¸ªå…·ä½“的设置项目将获å–更多信æ¯&lt;i&gt;.</translation>
- </message>
- <message>
- <source> General </source>
- <translation type="obsolete">常规</translation>
- </message>
- <message>
- <source>0</source>
- <translation type="obsolete">0</translation>
- </message>
- <message>
- <source> Hard Disks </source>
- <translation type="obsolete">硬盘</translation>
- </message>
- <message>
- <source>1</source>
- <translation type="obsolete">1</translation>
- </message>
- <message>
- <source> Floppy </source>
- <translation type="obsolete">软驱</translation>
- </message>
- <message>
- <source>2</source>
- <translation type="obsolete">2</translation>
- </message>
- <message>
- <source> CD/DVD-ROM </source>
- <translation type="obsolete">光驱</translation>
- </message>
- <message>
- <source>3</source>
- <translation type="obsolete">3</translation>
- </message>
- <message>
- <source> Audio </source>
- <translation type="obsolete">声音</translation>
- </message>
- <message>
- <source>4</source>
- <translation type="obsolete">4</translation>
- </message>
- <message>
- <source> Network </source>
- <translation type="obsolete">网络</translation>
- </message>
- <message>
- <source>5</source>
- <translation type="obsolete">5</translation>
- </message>
- <message>
- <source> USB </source>
- <translation type="obsolete">USB设备</translation>
- </message>
- <message>
- <source>6</source>
- <translation type="obsolete">6</translation>
- </message>
- <message>
- <source> Remote Display </source>
- <translation type="obsolete">远程桌é¢</translation>
- </message>
- <message>
- <source>7</source>
- <translation type="obsolete">7</translation>
- </message>
- <message>
- <source> Shared Folders </source>
- <translation type="obsolete">æ•°æ®ç©ºé—´</translation>
- </message>
- <message>
- <source>8</source>
- <translation type="obsolete">8</translation>
- </message>
- <message>
- <source>&amp;Identification</source>
- <translation type="obsolete">标识信æ¯(&amp;I)</translation>
- </message>
- <message>
- <source>&amp;Name</source>
- <translation type="obsolete">å称(&amp;N)</translation>
- </message>
- <message>
- <source>Displays the name of the virtual machine.</source>
- <translation type="obsolete">显示虚拟电脑å称.</translation>
- </message>
- <message>
- <source>OS &amp;Type</source>
- <translation type="obsolete">系统类型(&amp;T)</translation>
- </message>
- <message>
- <source>Displays the operating system type that you
-plan to install into this virtual machine (called a guest operating system).</source>
- <translation type="obsolete">显示你è¦å®‰è£…到虚拟电脑的系统类型.</translation>
- </message>
- <message>
- <source>Base &amp;Memory Size</source>
- <translation type="obsolete">内存大å°(&amp;M)</translation>
- </message>
- <message>
- <source>Controls the amount of memory provided to the virtual machine. If you assign too much, the machine might not start.</source>
- <translation type="obsolete">分é…给虚拟电脑的内存è¦æŽ§åˆ¶åœ¨åˆç†èŒƒå›´ï¼Œåˆ†é…太多会导致虚拟电脑ä¸èƒ½æ­£å¸¸å¯åŠ¨.</translation>
- </message>
- <message>
- <source>&lt;</source>
- <translation type="obsolete">&lt;</translation>
- </message>
- <message>
- <source>=</source>
- <translation type="obsolete">=</translation>
- </message>
- <message>
- <source>&gt;</source>
- <translation type="obsolete">&gt;</translation>
- </message>
- <message>
- <source>MB</source>
- <translation type="obsolete">MB</translation>
- </message>
- <message>
- <source>&amp;Video Memory Size</source>
- <translation type="obsolete">显存大å°(&amp;V)</translation>
- </message>
- <message>
- <source>Controls the amount of video memory provided to the virtual machine.</source>
- <translation type="obsolete">指定å¯ä»¥åˆ†é…给虚拟电脑的显存大å°.</translation>
- </message>
- <message>
- <source>&amp;Basic</source>
- <translation type="obsolete">基本(&amp;B)</translation>
- </message>
- <message>
- <source>&amp;Snapshot Folder</source>
- <translation type="obsolete">备份ä½ç½®(&amp;S)</translation>
- </message>
- <message>
- <source>Displays the path where snapshots of this virtual machine
-will be stored. Be aware that snapshots can take quite a lot of disk space.</source>
- <translation type="obsolete">指定用于存放虚拟电脑备份的文件夹。需è¦æ³¨æ„的是备份会å ç”¨å¾ˆå¤šç£ç›˜ç©ºé—´.</translation>
- </message>
- <message>
- <source>Select</source>
- <translation type="obsolete">选择</translation>
- </message>
- <message>
- <source>Selects the snapshot folder path.</source>
- <translation type="obsolete">选择用于存放备份的文件夹.</translation>
- </message>
- <message>
- <source>Reset</source>
- <translation type="obsolete">é‡è®¾</translation>
- </message>
- <message>
- <source>Resets the snapshot folder path to the default value.
-The actual default path will be displayed after accepting the changes and opening this dialog again.</source>
- <translation type="obsolete">将存放备份的文件夹é‡æ–°è®¾å®šä¸ºé»˜è®¤å€¼ã€‚改å˜è¢«æŽ¥å—åŽï¼Œä¸‹æ¬¡æ‰“开本对è¯æ¡†æ—¶å°†ä¼šæ˜¾ç¤ºé»˜è®¤è·¯å¾„.</translation>
- </message>
- <message>
- <source>Extended Features</source>
- <translation type="obsolete">扩展特性</translation>
- </message>
- <message>
- <source>Enable A&amp;CPI</source>
- <translation type="obsolete">å¯ç”¨ A&amp;CPI</translation>
- </message>
- <message>
- <source>Alt+C</source>
- <translation type="obsolete">Alt+C</translation>
- </message>
- <message>
- <source>When checked, the virtual machine will support
-the Advanced Configuration and Power Management Interface (ACPI). &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable
-this feature after having installed a Windows guest operating system!</source>
- <translation type="obsolete"> &lt;b&gt;请注æ„:&lt;/b&gt; 一旦在虚拟电脑中安装完Windowsæ“作系统,就ä¸åº”å†ç¦ç”¨æœ¬é€‰é¡¹!</translation>
- </message>
- <message>
- <source>Enable IO A&amp;PIC</source>
- <translation type="obsolete">å¯ç”¨ IO A&amp;PIC</translation>
- </message>
- <message>
- <source>Alt+P</source>
- <translation type="obsolete">Alt+P</translation>
- </message>
- <message>
- <source>When checked, the virtual machine will support
-the Input Output APIC (IO APIC), which may slightly decrease performance. &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable
-this feature after having installed a Windows guest operating system!</source>
- <translation type="obsolete">å¯ç”¨ (IO APIC)支æŒï¼Œå¯èƒ½ä¼šé™ä½Žè™šæ‹Ÿç”µè„‘的性能。
-&lt;b&gt;请注æ„:&lt;/b&gt; 一旦在虚拟电脑中安装完Windowsæ“作系统,就ä¸åº”å†ç¦ç”¨æœ¬é€‰é¡¹!</translation>
- </message>
- <message>
- <source>Boo&amp;t Order</source>
- <translation type="obsolete">å¯åŠ¨é¡ºåº(&amp;t)</translation>
- </message>
- <message>
- <source>&amp;Advanced</source>
- <translation type="obsolete">高级(&amp;A)</translation>
- </message>
- <message>
- <source>Displays the description of
- the virtual machine. The description
- field is useful for commenting
- configuration details of the installed
- guest OS.</source>
- <translation type="obsolete">显示有关虚拟电脑的æè¿°ä¿¡æ¯ã€‚è¿™å¯ç”¨äºŽå¯¹è™šæ‹Ÿç”µè„‘上所装æ“作系统进行补充说明.</translation>
- </message>
- <message>
- <source>&amp;Description</source>
- <translation type="obsolete">说明(&amp;D)</translation>
- </message>
- <message>
- <source>&amp;Primary Master</source>
- <translation type="obsolete">第一IDE控制器主盘(&amp;P)</translation>
- </message>
- <message>
- <source>Invokes the Virtual Disk Manager to create a new
-or select an existing virtual hard disk to attach.</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨æ–°å»ºæˆ–选择一个已ç»å­˜åœ¨çš„虚拟硬盘.</translation>
- </message>
- <message>
- <source>&lt;not selected&gt;</source>
- <translation type="obsolete">&lt;没有选择&gt;</translation>
- </message>
- <message>
- <source>P&amp;rimary Slave</source>
- <translation type="obsolete">第一IDE控制器从盘(&amp;r)</translation>
- </message>
- <message>
- <source>&amp;Secondary (IDE 1) Slave</source>
- <translation type="obsolete">第二IDE控制器从盘(&amp;S)</translation>
- </message>
- <message>
- <source>&amp;Mount Floppy Drive</source>
- <translation type="obsolete">分é…软驱(&amp;M)</translation>
- </message>
- <message>
- <source>Host Floppy &amp;Drive</source>
- <translation type="obsolete">物ç†è½¯é©±(&amp;D)</translation>
- </message>
- <message>
- <source>Alt+D</source>
- <translation type="obsolete">Alt+D</translation>
- </message>
- <message>
- <source>Mounts the specified host Floppy drive to the virtual Floppy drive.</source>
- <translation type="obsolete">将物ç†è½¯é©±åˆ†é…到虚拟电脑上.</translation>
- </message>
- <message>
- <source>Lists host Floppy drives available to mount to
-the virtual machine.</source>
- <translation type="obsolete">显示å¯ä»¥åˆ†é…到虚拟电脑上的物ç†è½¯é©±.</translation>
- </message>
- <message>
- <source>&amp;Image File</source>
- <translation type="obsolete">虚拟软盘(&amp;I)</translation>
- </message>
- <message>
- <source>Alt+I</source>
- <translation type="obsolete">Alt+I</translation>
- </message>
- <message>
- <source>Mounts the specified Floppy image to the virtual Floppy drive.</source>
- <translation type="obsolete">分é…指定的虚拟软盘到虚拟电脑.</translation>
- </message>
- <message>
- <source>Invokes the Virtual Disk Manager to select
-a Floppy image to mount.</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨é€‰æ‹©ä¸€ä¸ªä½ è¦åˆ†é…的虚拟软盘.</translation>
- </message>
- <message>
- <source>&amp;Mount CD/DVD Drive</source>
- <translation type="obsolete">分é…光驱(&amp;M)</translation>
- </message>
- <message>
- <source>Host CD/DVD &amp;Drive</source>
- <translation type="obsolete">物ç†å…‰é©±(&amp;D)</translation>
- </message>
- <message>
- <source>Mounts the specified CD/DVD drive to the virtual CD/DVD drive.</source>
- <translation type="obsolete">分é…物ç†å…‰é©±åˆ°è™šæ‹Ÿç”µè„‘.</translation>
- </message>
- <message>
- <source>Lists host CD/DVD drives available to mount to
-the virtual machine.</source>
- <translation type="obsolete">显示å¯ä»¥åˆ†é…到虚拟电脑上的物ç†å…‰é©±.</translation>
- </message>
- <message>
- <source>&amp;ISO Image File</source>
- <translation type="obsolete">虚拟光盘(&amp;I)</translation>
- </message>
- <message>
- <source>Mounts the specified CD/DVD image to the virtual CD/DVD drive.</source>
- <translation type="obsolete">分é…指定的虚拟光盘到虚拟电脑.</translation>
- </message>
- <message>
- <source>Invokes the Virtual Disk Manager to select
-a CD/DVD image to mount.</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨é€‰æ‹©ä¸€ä¸ªä½ è¦åˆ†é…的虚拟光盘.</translation>
- </message>
- <message>
- <source>&amp;Enable Audio</source>
- <translation type="obsolete">å¯ç”¨å£°éŸ³(&amp;E)</translation>
- </message>
- <message>
- <source>Host Audio &amp;Driver</source>
- <translation type="obsolete">声å¡ç±»åž‹(&amp;D)</translation>
- </message>
- <message>
- <source>Controls the audio output driver. The &lt;b&gt;Null Audio Driver&lt;/b&gt;
-makes the guest see an audio card, however every access to it will be ignored.</source>
- <translation type="obsolete">选择声å¡ç±»åž‹ã€‚选项 &lt;b&gt;Null Audio Driver&lt;/b&gt;
-让虚拟电脑拥有一张声å¡ï¼Œä½†å…¶è¾“出的声音将被忽略.</translation>
- </message>
- <message>
- <source>Enable &amp;USB Controller</source>
- <translation type="obsolete">å¯ç”¨&amp;USB控制器</translation>
- </message>
- <message>
- <source>Alt+U</source>
- <translation type="obsolete">Alt+U</translation>
- </message>
- <message>
- <source>When checked, enables the virtual USB controller
-of this machine.</source>
- <translation type="obsolete">选中åŽï¼Œå°†åœ¨è¿™ä¸ªè™šæ‹Ÿç”µè„‘中å¯ç”¨USB控制器.</translation>
- </message>
- <message>
- <source>USB Device &amp;Filters</source>
- <translation type="obsolete">USB设备筛选器(&amp;F)</translation>
- </message>
- <message>
- <source>Lists all USB filters of this machine.
-The checkbox to the left defines whether the particular filter is enabled or not.</source>
- <translation type="obsolete">显示该虚拟电脑上的所有USB筛选器.
-左边的选择框决定该筛选器是å¦å¿…å¯ç”¨.</translation>
- </message>
- <message>
- <source>Ins</source>
- <translation type="obsolete">Ins</translation>
- </message>
- <message>
- <source>Add Empty (Ins)</source>
- <translation type="obsolete">添加空筛选器 (Ins)</translation>
- </message>
- <message>
- <source>Adds a new USB filter with
-all fields initially set to empty strings. Note that such a filter will match any attached
-USB device.</source>
- <translation type="obsolete">添加一个å„个域的值都为空的USB筛选器。
-需è¦æ³¨æ„的是:这样的筛选器将会匹é…所有的连接到主机上的USB设备.</translation>
- </message>
- <message>
- <source>Alt+Ins</source>
- <translation type="obsolete">Alt+Ins</translation>
- </message>
- <message>
- <source>Add From (Alt+Ins)</source>
- <translation type="obsolete">从当å‰è®¾å¤‡ä¸­æ·»åŠ  (Alt+Ins)</translation>
- </message>
- <message>
- <source>Adds a new USB filter
-with all fields set to the values of the selected USB device attached to the host PC.</source>
- <translation type="obsolete">添加一个USB筛选器,并把其å„个域的值设置为当å‰é€‰ä¸­çš„已连接到主机上的USB设备.</translation>
- </message>
- <message>
- <source>Del</source>
- <translation type="obsolete">Del</translation>
- </message>
- <message>
- <source>Remove (Del)</source>
- <translation type="obsolete">删除 (Del)</translation>
- </message>
- <message>
- <source>Removes the selected USB filter.</source>
- <translation type="obsolete">删除所选的USB筛选器.</translation>
- </message>
- <message>
- <source>Ctrl+Up</source>
- <translation type="obsolete">Ctrl+Up</translation>
- </message>
- <message>
- <source>Move Up (Ctrl+Up)</source>
- <translation type="obsolete">å‘上移动 (Ctrl+Up)</translation>
- </message>
- <message>
- <source>Moves the selected USB filter up.</source>
- <translation type="obsolete">å‘上移动所选的USB筛选器.</translation>
- </message>
- <message>
- <source>Ctrl+Down</source>
- <translation type="obsolete">Ctrl+Down</translation>
- </message>
- <message>
- <source>Move Down (Ctrl+Down)</source>
- <translation type="obsolete">å‘下移动 (Ctrl+Down)</translation>
- </message>
- <message>
- <source>Moves the selected USB filter down.</source>
- <translation type="obsolete">å‘下移动所选的USB筛选器.</translation>
- </message>
- <message>
- <source>&amp;Enable VRDP Server</source>
- <translation type="obsolete">å¯ç”¨ VRDP æœåŠ¡å™¨(&amp;E)</translation>
- </message>
- <message>
- <source>Server port </source>
- <translation type="obsolete">æœåŠ¡ç«¯å£</translation>
- </message>
- <message>
- <source>Authentication Method </source>
- <translation type="obsolete">认è¯æ–¹å¼</translation>
- </message>
- <message>
- <source>Authentication Timeout </source>
- <translation type="obsolete">认è¯è¶…æ—¶</translation>
- </message>
- <message>
- <source>Displays the VRDP Server port.</source>
- <translation type="obsolete">显示 VRDP æœåŠ¡ç«¯å£.</translation>
- </message>
- <message>
- <source>Defines the VRDP authentication method.</source>
- <translation type="obsolete">定义 VRDP 认è¯æ–¹å¼.</translation>
- </message>
- <message>
- <source>Specifies the timeout for guest authentication, in milliseconds.</source>
- <translation type="obsolete">指定客户认è¯è¶…时时间,以毫秒为å•ä½.</translation>
- </message>
- <message>
- <source>Help</source>
- <translation type="obsolete">帮助</translation>
- </message>
- <message>
- <source>F1</source>
- <translation type="obsolete">F1</translation>
- </message>
- <message>
- <source>Displays the dialog help.</source>
- <translation type="obsolete">显示帮助对è¯æ¡†.</translation>
- </message>
- <message>
- <source>Invalid settings detected</source>
- <translation type="obsolete">å‘现无效设置</translation>
- </message>
- <message>
- <source>&amp;OK</source>
- <translation type="obsolete">确定(&amp;O)</translation>
- </message>
- <message>
- <source>Alt+O</source>
- <translation type="obsolete">Alt+O</translation>
- </message>
- <message>
- <source>Accepts (saves) changes and closes the dialog.</source>
- <translation type="obsolete">ä¿å­˜è®¾ç½®å˜åŠ¨å¹¶å…³é—­å¯¹è¯æ¡†.</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="obsolete">å–消</translation>
- </message>
- <message>
- <source>Cancels changes and closes the dialog.</source>
- <translation type="obsolete">放弃更改并关闭对è¯æ¡†.</translation>
- </message>
- <message>
- <source>When checked, attaches the specified virtual hard disk to the Master slot of the Primary IDE controller.</source>
- <translation type="obsolete">选中,将分é…下é¢æŒ‡å®šçš„虚拟硬盘到该虚拟电脑第一IDE控制器的主通é“.</translation>
- </message>
- <message>
- <source>When checked, attaches the specified virtual hard disk to the Slave slot of the Primary IDE controller.</source>
- <translation type="obsolete">选中,将分é…下é¢æŒ‡å®šçš„虚拟硬盘到该虚拟电脑第一IDE控制器的从通é“.</translation>
- </message>
- <message>
- <source>When checked, attaches the specified virtual hard disk to the Slave slot of the Secondary IDE controller.</source>
- <translation type="obsolete">选中,将分é…下é¢æŒ‡å®šçš„虚拟硬盘到该虚拟电脑第二IDE控制器的从通é“.</translation>
- </message>
- <message>
- <source>Displays the virtual hard disk to attach to this IDE slot and allows to quickly select a different hard disk.</source>
- <translation type="obsolete">显示分é…到该IDE通é“的虚拟硬盘,åŒæ—¶è¿˜å…许快速选择一个其它虚拟硬盘.</translation>
- </message>
- <message>
- <source>When checked, mounts the specified media to the CD/DVD drive of the virtual machine. Note that the CD/DVD drive is always connected to the Secondary Master IDE controller of the machine.</source>
- <translation type="obsolete">选中,将分é…指定光驱到虚拟电脑上。该光驱将固定地被分é…到虚拟电脑第二IDE控制器的主通é“.</translation>
- </message>
- <message>
- <source>Displays the image file to mount to the virtual CD/DVD drive and allows to quickly select a different image.</source>
- <translation type="obsolete">显示分é…给该虚拟电脑的虚拟光盘,åŒæ—¶è¿˜å…许快速选择一个其它虚拟光盘.</translation>
- </message>
- <message>
- <source>When checked, mounts the specified media to the Floppy drive of the virtual machine.</source>
- <translation type="obsolete">选中,将分é…指定软驱到虚拟电脑.</translation>
- </message>
- <message>
- <source>Displays the image file to mount to the virtual Floppy drive and allows to quickly select a different image.</source>
- <translation type="obsolete">显示分é…到虚拟电脑的虚拟软盘,åŒæ—¶è¿˜å…许快速选择一个其它虚拟软盘.</translation>
- </message>
- <message>
- <source>When checked, a virtual PCI audio card will be plugged into the virtual machine and will communicate with the host audio system using the specified driver.</source>
- <translation type="obsolete">选中,将在该虚拟电脑内å¯ç”¨å£°éŸ³åŠŸèƒ½ï¼Œå¹¶ä½¿ç”¨æŒ‡å®šçš„声å¡ç±»åž‹å’Œä¸»æœºä¸Šçš„声å¡é€šè®¯.</translation>
- </message>
- <message>
- <source>When checked, the VM will act as a Remote Desktop Protocol (RDP) server, allowing remote clients to connect and operate the VM (when it is running) using a standard RDP client.</source>
- <translation type="obsolete">选中,该虚拟电脑将被作为一个 RDP æœåŠ¡å™¨ï¼Œå…许远程客户在它è¿è¡Œæ—¶é€šè¿‡æ ‡å‡† RDP 客户端登录到它上é¢æ¥æ“作.</translation>
- </message>
- <message>
- <source>&lt;qt&gt;%1&amp;nbsp;MB&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;%1&amp;nbsp;MB&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;not attached&gt;</source>
- <comment>hard disk</comment>
- <translation type="obsolete">&lt;没有连接&gt;</translation>
- </message>
- <message>
- <source>Primary Master hard disk is not selected.</source>
- <translation type="obsolete">没有指定第一IDE控制器主通é“上使用的虚拟硬盘.</translation>
- </message>
- <message>
- <source>Primary Slave hard disk is not selected.</source>
- <translation type="obsolete">没有指定第一IDE控制器从通é“上使用的虚拟硬盘.</translation>
- </message>
- <message>
- <source>Primary Slave hard disk is already attached to a different slot.</source>
- <translation type="obsolete">第一IDE控制器从通é“上使用的硬盘已ç»è¿žæŽ¥åˆ°å…¶å®ƒæŽ¥å£.</translation>
- </message>
- <message>
- <source>Secondary Slave hard disk is not selected.</source>
- <translation type="obsolete">没有指定第二IDE控制器从通é“上使用的虚拟硬盘.</translation>
- </message>
- <message>
- <source>Secondary Slave hard disk is already attached to a different slot.</source>
- <translation type="obsolete">第二IDE控制器从通é“上使用的硬盘已ç»è¿žæŽ¥åˆ°å…¶å®ƒæŽ¥å£.</translation>
- </message>
- <message>
- <source>CD/DVD image file is not selected.</source>
- <translation type="obsolete">没有指定虚拟电脑上使用的虚拟光盘.</translation>
- </message>
- <message>
- <source>Floppy image file is not selected.</source>
- <translation type="obsolete">没有指定虚拟电脑上使用的虚拟软盘.</translation>
- </message>
- <message>
- <source>Incorrect host network interface is selected for Adapter %1.</source>
- <translation type="obsolete">为网络连接 %1 选择了ä¸æ­£ç¡®çš„ host interface.</translation>
- </message>
- <message>
- <source>VRDP Port is not set.</source>
- <translation type="obsolete">没有设定 VRDP 端å£.</translation>
- </message>
- <message>
- <source>VRDP Timeout is not set.</source>
- <translation type="obsolete">没有设定 VRDP 超时时间.</translation>
- </message>
- <message>
- <source> - Settings</source>
- <translation type="obsolete">设置</translation>
- </message>
- <message>
- <source>New Filter %1</source>
- <comment>usb</comment>
- <translation type="obsolete">新筛选器 %1</translation>
- </message>
- <message>
- <source>&amp;Shared Clipboard</source>
- <translation type="obsolete">共享粘贴æ¿(&amp;S)</translation>
- </message>
- <message>
- <source>S&amp;napshot Folder</source>
- <translation type="obsolete">备份ä½ç½®(&amp;n)</translation>
- </message>
- <message>
- <source>Displays the operating system type that you plan to install into this virtual machine (called a guest operating system).</source>
- <translation type="obsolete">显示你è¦å®‰è£…到虚拟电脑的系统类型.</translation>
- </message>
- <message>
- <source>&lt;qt&gt;When checked, the virtual machine will support
-the Advanced Configuration and Power Management Interface (ACPI). &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable
-this feature after having installed a Windows guest operating system!&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;选中,虚拟电脑将å¯ç”¨å¯¹é«˜çº§ç”µæºç®¡ç†ç•Œé¢(ACPI)的支æŒ. &lt;b&gt;请注æ„:&lt;/b&gt; 一旦在虚拟电脑中安装完Windowsæ“作系统,就ä¸åº”å†ç¦ç”¨æœ¬é€‰é¡¹! &lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;When checked, the virtual machine will support
-the Input Output APIC (IO APIC), which may slightly decrease performance. &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable
-this feature after having installed a Windows guest operating system!&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;选中,虚拟电脑将å¯ç”¨å¯¹è¾“入输出 APIC (IO APIC)的支æŒ. &lt;b&gt;请注æ„:&lt;/b&gt; 一旦在虚拟电脑中安装完Windowsæ“作系统,就ä¸åº”å†ç¦ç”¨æœ¬é€‰é¡¹! &lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Selects which clipboard data will be copied between the guest and the host OS. This feature requires Guest Additions to be installed in the guest OS.</source>
- <translation type="obsolete">设定主系统和å­ç³»ç»Ÿé—´å…±äº«ç²˜è´´æ¿çš„模å¼ã€‚注æ„,è¦ä½¿ç”¨è¯¥åŠŸèƒ½éœ€è¦åœ¨è™šæ‹Ÿç”µè„‘内安装增强功能包.</translation>
- </message>
- <message>
- <source>Displays the path where snapshots of this virtual machine will be stored. Be aware that snapshots can take quite a lot of disk space.</source>
- <translation type="obsolete">指定用于存放备份的文件夹。需è¦æ³¨æ„的是备份会å ç”¨ä¸€å®šçš„ç£ç›˜ç©ºé—´.</translation>
- </message>
- <message>
- <source>Resets the snapshot folder path to the default value. The actual default path will be displayed after accepting the changes and opening this dialog again.</source>
- <translation type="obsolete">将存放备份的文件夹é‡æ–°è®¾å®šä¸ºé»˜è®¤å€¼ã€‚改å˜è¢«æŽ¥å—åŽï¼Œä¸‹æ¬¡æ‰“开本对è¯æ¡†æ—¶å°†ä¼šæ˜¾ç¤ºé»˜è®¤è·¯å¾„.</translation>
- </message>
- <message>
- <source>Displays the description of the virtual machine. The description field is useful for commenting on configuration details of the installed guest OS.</source>
- <translation type="obsolete">显示有关虚拟电脑的æè¿°ä¿¡æ¯ã€‚è¿™å¯ç”¨äºŽå¯¹è™šæ‹Ÿç”µè„‘上所装æ“作系统进行补充说明.</translation>
- </message>
- <message>
- <source>Invokes the Virtual Disk Manager to create a new or select an existing virtual hard disk to attach.</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨æ–°å»ºæˆ–选择一个已ç»å­˜åœ¨çš„虚拟硬盘.</translation>
- </message>
- <message>
- <source>Lists host Floppy drives available to mount to the virtual machine.</source>
- <translation type="obsolete">显示å¯ä»¥åˆ†é…到虚拟电脑上的物ç†è½¯é©±.</translation>
- </message>
- <message>
- <source>Invokes the Virtual Disk Manager to select a Floppy image to mount.</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨é€‰æ‹©ä¸€ä¸ªç”¨äºŽåˆ†é…的虚拟软盘.</translation>
- </message>
- <message>
- <source>Lists host CD/DVD drives available to mount to the virtual machine.</source>
- <translation type="obsolete">显示å¯ä»¥åˆ†é…到虚拟电脑上的物ç†å…‰é©±.</translation>
- </message>
- <message>
- <source>Invokes the Virtual Disk Manager to select a CD/DVD image to mount.</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨é€‰æ‹©ä¸€ä¸ªç”¨äºŽåˆ†é…的虚拟光盘.</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Controls the audio output driver. The &lt;b&gt;Null Audio Driver&lt;/b&gt;
-makes the guest see an audio card, however every access to it will be ignored.&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt; 选择声å¡ç±»åž‹ã€‚选项 &lt;b&gt;Null Audio Driver&lt;/b&gt;
-让虚拟电脑拥有一张声å¡ï¼Œä½†å…¶è¾“出的声音将被忽略. &lt;/qt&gt;</translation>
- </message>
- <message>
- <source>When checked, enables the virtual USB controller of this machine.</source>
- <translation type="obsolete">选中åŽï¼Œå°†åœ¨è¿™ä¸ªè™šæ‹Ÿç”µè„‘中å¯ç”¨USB控制器.</translation>
- </message>
- <message>
- <source>Lists all USB filters of this machine. The checkbox to the left defines whether the particular filter is enabled or not.</source>
- <translation type="obsolete">显示该虚拟电脑上的所有USB筛选器.左边的选择框决定该筛选器是å¦å¿…å¯ç”¨.</translation>
- </message>
- <message>
- <source>Adds a new USB filter with all fields initially set to empty strings. Note that such a filter will match any attached USB device.</source>
- <translation type="obsolete">添加一个å„个域的值都为空的USB筛选器。需è¦æ³¨æ„的是:这样的筛选器将会匹é…所有的连接到主机上的USB设备.</translation>
- </message>
- <message>
- <source>Adds a new USB filter with all fields set to the values of the selected USB device attached to the host PC.</source>
- <translation type="obsolete">添加一个USB筛选器,并把其å„个域的值设置为当å‰é€‰ä¸­çš„已连接到主机上的USB设备.</translation>
- </message>
- <message>
- <source>Adapter %1</source>
- <comment>network</comment>
- <translation type="obsolete">网络连接 %1</translation>
- </message>
- <message>
- <source>Host &amp;Interfaces</source>
- <translation type="obsolete">Host &amp;Interfaces</translation>
- </message>
- <message>
- <source>Lists all available host interfaces.</source>
- <translation type="obsolete">显示所有的å¯ç”¨ host interfaces.</translation>
- </message>
- <message>
- <source>Adds a new host interface.</source>
- <translation type="obsolete">添加一个新的 host interface.</translation>
- </message>
- <message>
- <source>Removes the selected host interface.</source>
- <translation type="obsolete">删除所选的 host interface.</translation>
- </message>
- <message>
- <source>&lt;No suitable interfaces&gt;</source>
- <translation type="obsolete">&lt;没有åˆé€‚的网络界é¢&gt;</translation>
- </message>
- <message>
- <source>Add</source>
- <translation type="obsolete">添加</translation>
- </message>
- <message>
- <source>Remove</source>
- <translation type="obsolete">删除</translation>
- </message>
- <message>
- <source>VirtualBox Host Interface %1</source>
- <translation type="obsolete">VirtualBox Host Interface %1</translation>
- </message>
- <message>
- <source>&lt;p&gt;Do you want to remove the selected host network interface &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This interface may be in use by one or more network adapters of this or another VM. After it is removed, these adapters will no longer work until you correct their settings by either choosing a different interface name or a different adapter attachment type.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;你是å¦è¦åˆ é™¤æ‰€é€‰çš„ host interface&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt;该界é¢å¯èƒ½è¢«è¿™ä¸ªæˆ–其它个虚拟电脑的一个或多个网络连接所使用。 删除该界é¢åŽï¼Œè¿™äº›ç½‘络连接将ä¸èƒ½æ­£å¸¸å·¥ä½œï¼Œç›´åˆ°ä½ é€šè¿‡é€‰æ‹©å…¶å®ƒç½‘络界é¢æˆ–使用一个ä¸åŒçš„适é…器接入类型æ¥ä¿®æ­£å®ƒä»¬.&lt;/p&gt;</translation>
- </message>
- <message>
- <source>9</source>
- <translation type="obsolete">9</translation>
- </message>
- <message>
- <source> Serial Ports </source>
- <translation type="obsolete">串å£</translation>
- </message>
- <message>
- <source>Enable &amp;VT-x/AMD-V</source>
- <translation type="obsolete">å¯ç”¨ VT-x/AMD-V(&amp;V)</translation>
- </message>
- <message>
- <source>Alt+V</source>
- <translation type="obsolete">Alt+V</translation>
- </message>
- <message>
- <source>When checked, the virtual machine will try to make use of the host CPU&apos;s hardware virtualization extensions such as Intel VT-x and AMD-V. The grayed checkbox state means that this setting is determined by the value of the global setting.</source>
- <translation type="obsolete">选中åŽï¼Œè™šæ‹Ÿç”µè„‘å°†å°è¯•åˆ©ç”¨ä¸»æœºCPU的硬件虚拟扩展,如 Intel VT-x 或 AMD-V. ç°è‰²çš„选择框表示该设置由全局设定决定.</translation>
- </message>
- <message>
- <source>Other &amp;Settings</source>
- <translation type="obsolete">其它设置(&amp;S)</translation>
- </message>
- <message>
- <source>&amp;Remember Media Mounted at Runtime</source>
- <translation type="obsolete">è®°ä½åœ¨è¿è¡ŒçŠ¶æ€ä¸­åˆ†é…的介质(&amp;R)</translation>
- </message>
- <message>
- <source>Alt+R</source>
- <translation type="obsolete">Alt+R</translation>
- </message>
- <message>
- <source>If checked, any change to mounted CD/DVD or Floppy media performed during machine execution will be saved in the settings file in order to preserve the configuration of mounted media between runs.</source>
- <translation type="obsolete">选中åŽï¼Œåœ¨è™šæ‹Ÿç”µè„‘è¿è¡Œè¿‡ç¨‹ä¸­å¯¹ä»»ä½•ä»‹è´¨çš„分é…å˜åŠ¨éƒ½å°†è¢«ä¿å­˜åœ¨é…置文件中.</translation>
- </message>
- <message>
- <source>O&amp;ther</source>
- <translation type="obsolete">其它(&amp;t)</translation>
- </message>
- <message>
- <source>&amp;Enable Passthrough</source>
- <translation type="obsolete">å¯ç”¨ Passthrough (&amp;E)</translation>
- </message>
- <message>
- <source>Alt+E</source>
- <translation type="obsolete">Alt+E</translation>
- </message>
- <message>
- <source>When checked, allows the guest to send ATAPI commands directly to the host drive which makes it possible to use CD/DVD writers connected to the host inside the VM. Note that writing audio CD inside the VM is not yet supported.</source>
- <translation type="obsolete">选中åŽï¼Œå°±å¯åœ¨è¯¥è™šæ‹Ÿç”µè„‘中进行光盘的刻录. 请注æ„ç›®å‰å°šæœªæ供对音ä¹CD的写入支æŒ.</translation>
- </message>
- <message>
- <source>&amp;Server Port </source>
- <translation type="obsolete">æœåŠ¡å™¨ç«¯å£(&amp;S)</translation>
- </message>
- <message>
- <source>Authentication &amp;Method </source>
- <translation type="obsolete">认è¯æ–¹æ³•(&amp;M)</translation>
- </message>
- <message>
- <source>Authentication &amp;Timeout </source>
- <translation type="obsolete">认è¯è¶…时时间(&amp;T)</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Displays the VRDP Server port number. You may specify &lt;tt&gt;0&lt;/tt&gt; (zero) to reset the port to the default value.&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;显示 VRDP æœåŠ¡å™¨ç«¯å£å·. 您å¯ä»¥æŒ‡å®š &lt;tt&gt;0&lt;/tt&gt; (零) æ¥å°†ç«¯å£å·é‡è®¾ä¸ºé»˜è®¤å€¼.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Primary Master hard disk is not selected</source>
- <translation type="obsolete">没有指定第一IDE控制器主通é“上的硬盘</translation>
- </message>
- <message>
- <source>Primary Slave hard disk is not selected</source>
- <translation type="obsolete">没有指定第一IDE控制器从通é“上的硬盘</translation>
- </message>
- <message>
- <source>Primary Slave hard disk is already attached to a different slot</source>
- <translation type="obsolete">第一IDE控制器从通é“上的硬盘已分é…给一个ä¸åŒçš„端å£</translation>
- </message>
- <message>
- <source>Secondary Slave hard disk is not selected</source>
- <translation type="obsolete">没有指定第二IDE控制器从通é“上的硬盘</translation>
- </message>
- <message>
- <source>Secondary Slave hard disk is already attached to a different slot</source>
- <translation type="obsolete">第二IDE控制器从通é“上的硬盘已分é…给一个ä¸åŒçš„端å£</translation>
- </message>
- <message>
- <source>CD/DVD image file is not selected</source>
- <translation type="obsolete">没有分é…虚拟光盘</translation>
- </message>
- <message>
- <source>Floppy image file is not selected</source>
- <translation type="obsolete">没有分é…虚拟软盘</translation>
- </message>
- <message>
- <source>Incorrect host network interface is selected</source>
- <translation type="obsolete">错误的 host network interface 被选中</translation>
- </message>
- <message>
- <source>Duplicate port number selected </source>
- <translation type="obsolete">é‡å¤çš„端å£å·è¢«é€‰ä¸­</translation>
- </message>
- <message>
- <source>Duplicate port path entered </source>
- <translation type="obsolete">é‡å¤çš„端å£è·¯å¾„被输入</translation>
- </message>
- <message>
- <source>%1 on the &lt;b&gt;%2&lt;/b&gt; page.</source>
- <translation type="obsolete">%1 在 &lt;b&gt;%2&lt;/b&gt; 页.</translation>
- </message>
- <message>
- <source>Port %1</source>
- <comment>serial ports</comment>
- <translation type="obsolete">ç«¯å£ %1</translation>
- </message>
- <message>
- <source>00</source>
- <translation type="obsolete">00</translation>
- </message>
- <message>
- <source>01</source>
- <translation type="obsolete">01</translation>
- </message>
- <message>
- <source>02</source>
- <translation type="obsolete">02</translation>
- </message>
- <message>
- <source>03</source>
- <translation type="obsolete">03</translation>
- </message>
- <message>
- <source>04</source>
- <translation type="obsolete">04</translation>
- </message>
- <message>
- <source>05</source>
- <translation type="obsolete">05</translation>
- </message>
- <message>
- <source>08</source>
- <translation type="obsolete">08</translation>
- </message>
- <message>
- <source>10</source>
- <translation type="obsolete">10</translation>
- </message>
- <message>
- <source>09</source>
- <translation type="obsolete">09</translation>
- </message>
- <message>
- <source>06</source>
- <translation type="obsolete">06</translation>
- </message>
- <message>
- <source> Parallel Ports </source>
- <translation type="obsolete">并å£</translation>
- </message>
- <message>
- <source>07</source>
- <translation type="obsolete">07</translation>
- </message>
- <message>
- <source>Enable PA&amp;E/NX</source>
- <translation type="obsolete">å¯ç”¨ PA&amp;E/NX</translation>
- </message>
- <message>
- <source>&lt;qt&gt;When
- checked, the Physical
- Address Extension
- (PAE) feature of the
- host CPU will be
- exposed to the virtual
- machine.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;选中,该虚拟电脑内将能使用主机上的物ç†åœ°å€æ‰©å±•(PAE)特性.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&amp;IDE Controller Type</source>
- <translation type="obsolete">IDE 控制器类型(&amp;I)</translation>
- </message>
- <message>
- <source>Defines the type of the virtual IDE controller. Depending on this value, VirtualBox will provide different virtual IDE hardware devices to the guest OS.</source>
- <translation type="obsolete">指定 IDE 控制器类型。根æ®è¿™ä¸ªå€¼ï¼ŒVirtualBox 将为该虚拟电脑æä¾›ä¸åŒçš„ IDE 控制器.</translation>
- </message>
- <message>
- <source>Audio &amp;Controller</source>
- <translation type="obsolete">控制芯片(&amp;C)</translation>
- </message>
- <message>
- <source>Selects the type of the virtual sound card. Depending on this value, VirtualBox will provide different audio hardware to the virtual machine.</source>
- <translation type="obsolete">指定声å¡ç±»åž‹ã€‚æ ¹æ®è¿™ä¸ªå€¼ï¼Œ VirtualBox 将为该虚拟电脑æä¾›ä¸åŒçš„声å¡.</translation>
- </message>
- <message>
- <source>Enable USB &amp;2.0 Controller</source>
- <translation type="obsolete">å¯ç”¨ USB 2.0 控制器(&amp;2)</translation>
- </message>
- <message>
- <source>When checked, enables the virtual USB EHCI controller of this machine. The USB EHCI controller provides USB 2.0 support.</source>
- <translation type="obsolete">选中,在该虚拟电脑上å¯ç”¨ USB EHCI 控制器。该控制器将æä¾› USB 2.0支æŒ.</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Lists all USB filters of
- this machine. The checkbox to the
- left defines whether the
- particular filter is enabled or
- not. Use the context menu or
- buttons to the right to add or
- remove USB filters.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;显示这个虚拟电脑上的所有USB筛选器。左边的选择框用æ¥ç¡®å®šæ˜¯å¦è¦å¯ç”¨æˆ–ç¦ç”¨è¯¥ç­›é€‰å™¨ã€‚添加或删除筛选器å¯é€šè¿‡å³è¾¹çš„按钮或å³é”®èœå•.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Add Empty Filter</source>
- <translation type="obsolete">添加一个空的筛选器</translation>
- </message>
- <message>
- <source>&amp;Add Empty Filter</source>
- <translation type="obsolete">添加一个空的筛选器(&amp;A)</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Adds a new USB filter with all fields initially set to
- empty strings. Note that such a filter will match any attached USB
- device.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;添加一个所有域值都为空的USB筛选器,æ示:这样的筛选器将会匹é…所有的USB设备.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Add Filter From Device</source>
- <translation type="obsolete">从设备列表中添加筛选器</translation>
- </message>
- <message>
- <source>A&amp;dd Filter From Device</source>
- <translation type="obsolete">从设备列表中添加筛选器(&amp;d)</translation>
- </message>
- <message>
- <source>&lt;qt&gt;Adds a new USB filter with all fields set to the
- values of the selected USB device attached to the host
- PC.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;添加一个与所选设备所对应的USB筛选器.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Remove Filter</source>
- <translation type="obsolete">删除筛选器</translation>
- </message>
- <message>
- <source>&amp;Remove Filter</source>
- <translation type="obsolete">删除筛选器(&amp;R)</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Removes the highlighted USB filter.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;删除高亮显示的USB筛选器.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Move Filter Up</source>
- <translation type="obsolete">å‘上移动筛选器</translation>
- </message>
- <message>
- <source>&amp;Move Filter Up</source>
- <translation type="obsolete">å‘上移动筛选器(&amp;M)</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Moves the highlighted USB filter up.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;å‘上移动高亮显示的USB筛选器.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Move Filter Down</source>
- <translation type="obsolete">å‘下移动筛选器</translation>
- </message>
- <message>
- <source>M&amp;ove Filter Down</source>
- <translation type="obsolete">å‘下移动筛选器(&amp;o)</translation>
- </message>
- <message>
- <source>
- &lt;qt&gt;Moves the highlighted USB filter down.&lt;/qt&gt;
- </source>
- <translation type="obsolete">&lt;qt&gt;å‘下移动高亮显示的USB筛选器.&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Internal network name is not set</source>
- <translation type="obsolete">Internal network å称未设定</translation>
- </message>
- <message>
- <source>Port path not specified </source>
- <translation type="obsolete">未指定端å£è·¯å¾„</translation>
- </message>
- <message>
- <source>Port %1</source>
- <comment>parallel ports</comment>
- <translation type="obsolete">ç«¯å£ %1</translation>
- </message>
- <message>
- <source>USBActionGroup</source>
- <translation type="obsolete">USBActionGroup</translation>
- </message>
- <message>
- <source>General</source>
- <translation type="obsolete">常规</translation>
- </message>
- <message>
- <source>Storage</source>
- <translation type="obsolete">介质</translation>
- </message>
- <message>
- <source>Hard Disks</source>
- <translation type="obsolete">硬盘</translation>
- </message>
- <message>
- <source>CD/DVD-ROM</source>
- <translation type="obsolete">光驱</translation>
- </message>
- <message>
- <source>Floppy</source>
- <translation type="obsolete">软驱</translation>
- </message>
- <message>
- <source>Audio</source>
- <translation type="obsolete">声音</translation>
- </message>
- <message>
- <source>Network</source>
- <translation type="obsolete">网络</translation>
- </message>
- <message>
- <source>Ports</source>
- <translation type="obsolete">端å£</translation>
- </message>
- <message>
- <source>Serial Ports</source>
- <translation type="obsolete">串å£</translation>
- </message>
- <message>
- <source>Parallel Ports</source>
- <translation type="obsolete">并å£</translation>
- </message>
- <message>
- <source>USB</source>
- <translation type="obsolete">USB 设备</translation>
- </message>
- <message>
- <source>Shared Folders</source>
- <translation type="obsolete">æ•°æ®ç©ºé—´</translation>
- </message>
- <message>
- <source>Remote Display</source>
- <translation type="obsolete">远程桌é¢</translation>
- </message>
- <message>
- <source>%1 - %2</source>
- <translation type="obsolete">%1 - %2</translation>
- </message>
- <message>
- <source>On the &lt;b&gt;%1&lt;/b&gt; page, %2</source>
- <translation type="obsolete">在 &lt;b&gt;%1&lt;/b&gt; 页, %2</translation>
- </message>
- <message>
- <source>System</source>
- <translation type="obsolete">系统</translation>
- </message>
- <message>
- <source>Display</source>
- <translation type="obsolete">显示</translation>
- </message>
- <message>
- <source>you have selected a 64-bit guest OS type for this VM. As such guests require hardware virtualization (VT-x/AMD-V), this feature will be enabled automatically.</source>
- <translation type="obsolete">您已ç»ä¸ºè¯¥è™šæ‹Ÿç”µè„‘选择了一个64ä½çš„æ“作系统。该æ“作系统需è¦ç¡¬ä»¶è™šæ‹ŸæŒ‡ä»¤ (VT-x/AMD-V) 的支æŒæ–¹èƒ½è¿è¡Œï¼Œå› æ­¤è¯¥ç‰¹æ€§å°†è¢«è‡ªåŠ¨å¯ç”¨ã€‚</translation>
- </message>
- <message>
- <source>you have selected a 64-bit guest OS type for this VM. VirtualBox does not currently support more than one virtual CPU for 64-bit guests executed on 32-bit hosts.</source>
- <translation type="obsolete">您已ç»ä¸ºè¯¥è™šæ‹Ÿç”µè„‘选择了一个64ä½çš„æ“作系统。目å‰å°šä¸æ”¯æŒåœ¨32ä½çš„主控系统上为虚拟电脑内的64ä½æ“作系统分é…超过1个的虚拟CPU。</translation>
- </message>
- <message>
- <source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
- <translation type="obsolete">您已å¯ç”¨äº†2D视频加速。但该功能目å‰åªèƒ½ç”¨äºŽè™šæ‹Ÿç”µè„‘内的windows系统,因此该特性将被ç¦ç”¨ã€‚</translation>
- </message>
-</context>
-<context>
- <name>VBoxVMSettingsFD</name>
- <message>
- <source>Host floppy drive is not selected</source>
- <translation type="obsolete">没有分é…物ç†è½¯é©±</translation>
- </message>
- <message>
- <source>Floppy image file is not selected</source>
- <translation type="obsolete">没有分é…虚拟软盘</translation>
- </message>
- <message>
- <source>When checked, mounts the specified media to the Floppy drive of the virtual machine.</source>
- <translation type="obsolete">选中,将分é…指定软驱到虚拟电脑.</translation>
- </message>
- <message>
- <source>&amp;Mount Floppy Drive</source>
- <translation type="obsolete">分é…软驱(&amp;M)</translation>
- </message>
- <message>
- <source>Mounts the specified host Floppy drive to the virtual Floppy drive.</source>
- <translation type="obsolete">将物ç†è½¯é©±åˆ†é…到虚拟电脑上.</translation>
- </message>
- <message>
- <source>Host Floppy &amp;Drive</source>
- <translation type="obsolete">物ç†è½¯é©±(&amp;D)</translation>
- </message>
- <message>
- <source>Lists host Floppy drives available to mount to the virtual machine.</source>
- <translation type="obsolete">显示å¯ä»¥åˆ†é…到虚拟电脑上的物ç†è½¯é©±.</translation>
- </message>
- <message>
- <source>Mounts the specified Floppy image to the virtual Floppy drive.</source>
- <translation type="obsolete">分é…指定的虚拟软盘到虚拟电脑.</translation>
- </message>
- <message>
- <source>&amp;Image File</source>
- <translation type="obsolete">虚拟软盘(&amp;I)</translation>
- </message>
- <message>
- <source>Displays the image file to mount to the virtual Floppy drive and allows to quickly select a different image.</source>
- <translation type="obsolete">显示分é…到虚拟电脑的虚拟软盘,åŒæ—¶è¿˜å…许快速选择一个其它虚拟软盘.</translation>
- </message>
+ <name>VBoxLogSearchPanel</name>
<message>
- <source>Invokes the Virtual Disk Manager to select a Floppy image to mount.</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨é€‰æ‹©ä¸€ä¸ªç”¨äºŽåˆ†é…的虚拟软盘.</translation>
+ <source>Close the search panel</source>
+ <translation>关闭æœç´¢é¢æ¿</translation>
</message>
<message>
- <source>Invokes the Virtual Media Manager to select a Floppy image to mount.</source>
- <translation type="obsolete">打开虚拟介质管ç†å™¨é€‰æ‹©ä¸€ä¸ªä½ è¦åˆ†é…的虚拟软盘.</translation>
+ <source>Find </source>
+ <translation>查找</translation>
</message>
-</context>
-<context>
- <name>VBoxVMSettingsVRDP</name>
<message>
- <source>When checked, the VM will act as a Remote Desktop Protocol (RDP) server, allowing remote clients to connect and operate the VM (when it is running) using a standard RDP client.</source>
- <translation type="obsolete">选中,该虚拟电脑将被作为一个远程桌é¢åè®® (RDP) æœåŠ¡å™¨ï¼Œå…许远程客户在它è¿è¡Œæ—¶é€šè¿‡æ ‡å‡† RDP 客户端登录到它上é¢æ¥æ“作.</translation>
+ <source>Enter a search string here</source>
+ <translation>输入æœç´¢å­—符串</translation>
</message>
<message>
- <source>&amp;Enable VRDP Server</source>
- <translation type="obsolete">å¯ç”¨ VRDP æœåŠ¡å™¨(&amp;E)</translation>
+ <source>&amp;Previous</source>
+ <translation>å‘å‰(&amp;P)</translation>
</message>
<message>
- <source>Server &amp;Port:</source>
- <translation type="obsolete">æœåŠ¡å™¨ç«¯å£å·(&amp;P):</translation>
+ <source>Search for the previous occurrence of the string</source>
+ <translation>å‘å‰æœç´¢è¯¥å­—符串</translation>
</message>
<message>
- <source>Displays the VRDP Server port number. You may specify &lt;tt&gt;0&lt;/tt&gt; (zero) to reset the port to the default value.</source>
- <translation type="obsolete">显示 VRDP æœåŠ¡å™¨ç«¯å£å·. å¯ä»¥æŒ‡å®š &lt;tt&gt;0&lt;/tt&gt; (零) æ¥å°†ç«¯å£å·é‡è®¾ä¸ºé»˜è®¤å€¼.</translation>
+ <source>&amp;Next</source>
+ <translation>å‘åŽ(&amp;N)</translation>
</message>
<message>
- <source>Authentication &amp;Method:</source>
- <translation type="obsolete">æœåŠ¡è®¤è¯æ–¹å¼(&amp;M):</translation>
+ <source>Search for the next occurrence of the string</source>
+ <translation>å‘åŽæœç´¢è¯¥å­—符串</translation>
</message>
<message>
- <source>Defines the VRDP authentication method.</source>
- <translation type="obsolete">定义 VRDP 认è¯æ–¹å¼.</translation>
+ <source>C&amp;ase Sensitive</source>
+ <translation>区分大å°å†™(&amp;A)</translation>
</message>
<message>
- <source>Authentication &amp;Timeout:</source>
- <translation type="obsolete">认è¯è¶…时时间(&amp;T):</translation>
+ <source>Perform case sensitive search (when checked)</source>
+ <translation>区分大å°å†™è¿›è¡Œæœç´¢(选中时)</translation>
</message>
<message>
- <source>Specifies the timeout for guest authentication, in milliseconds.</source>
- <translation type="obsolete">指定客户认è¯è¶…时时间,以毫秒为å•ä½.</translation>
+ <source>String not found</source>
+ <translation>字符串未找到</translation>
</message>
</context>
</TS>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts
index cd6957957..c1d61dbc3 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts
@@ -2126,6 +2126,10 @@
<source>you have 2D Video Acceleration enabled. As 2D Video Acceleration is supported for Windows guests only, this feature will be disabled.</source>
<translation>您已啟用 2D 視訊加速。 由於 2D 視訊加速åªæ”¯æ´ Windows 客體,這個功能將åœç”¨ã€‚</translation>
</message>
+ <message>
+ <source>you enabled 3D acceleration. However, 3D acceleration is not working on the current host setup so you will not be able to start the VM.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>UIMachineSettingsGeneral</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/qt_hu.ts b/src/VBox/Frontends/VirtualBox/nls/qt_hu.ts
index ec1cdf369..44f2470a2 100644
--- a/src/VBox/Frontends/VirtualBox/nls/qt_hu.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/qt_hu.ts
@@ -47,7 +47,7 @@
</message>
<message>
<source>&lt;html&gt;Switching to the audio playback device &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;which just became available and has higher preference.&lt;/html&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;html&gt;&lt;b&gt;%1&lt;/b&gt; lejátszó eszközre váltás, ami épp most lett elérhető, és elsőbbséget élvez a jelenlegihez képest&lt;/html&gt;</translation>
</message>
<message>
<source>Revert back to device &apos;%1&apos;</source>
@@ -2474,7 +2474,7 @@ Biztosan törlöd?</translation>
</message>
<message>
<source>Unable to execute select statement</source>
- <translation type="unfinished">A SELECT utasítás nem végrehajtható</translation>
+ <translation>A SELECT utasítás nem végrehajtható</translation>
</message>
<message>
<source>Unable to execute statement</source>
@@ -4602,7 +4602,7 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>Expected </source>
- <translation>Amit vártam:</translation>
+ <translation>Amit vártam: </translation>
</message>
<message>
<source>, but got &apos;</source>
@@ -4693,55 +4693,55 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>Network timeout.</source>
- <translation type="unfinished"></translation>
+ <translation>Hálózati időtúllépés.</translation>
</message>
<message>
<source>Element %1 can&apos;t be serialized because it appears outside the document element.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 elem nem szerializálható, mert a document elemen kívül szerepel.</translation>
</message>
<message>
<source>Attribute %1 can&apos;t be serialized because it appears at the top level.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 attribútum nem szerializálható, mert legfelső szinten szerepel.</translation>
</message>
<message>
<source>Year %1 is invalid because it begins with %2.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 év érvénytelen, mert %2-vel kezdődik.</translation>
</message>
<message>
<source>Day %1 is outside the range %2..%3.</source>
- <translation type="unfinished"></translation>
+ <translation>A(z) %1. nap nem esik %2 és %3 közé.</translation>
</message>
<message>
<source>Month %1 is outside the range %2..%3.</source>
- <translation type="unfinished"></translation>
+ <translation>A(z) %1. hónap nem esik %2 és %3 közé.</translation>
</message>
<message>
<source>Overflow: Can&apos;t represent date %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Túlcsordulás: A(z) %1 dátum nem reprezentálható.</translation>
</message>
<message>
<source>Day %1 is invalid for month %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Nincs %1 nap %2 hónapban.</translation>
</message>
<message>
<source>Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; </source>
- <translation type="unfinished"></translation>
+ <translation>Az 24:%1:%2.%3 időpont érvénytelen, mert az óra értéke 24, de a többi érték nem 0; </translation>
</message>
<message>
<source>Time %1:%2:%3.%4 is invalid.</source>
- <translation type="unfinished"></translation>
+ <translation>Az %1:%2:%3.%4 időpont érvénytelen.</translation>
</message>
<message>
<source>Overflow: Date can&apos;t be represented.</source>
- <translation type="unfinished"></translation>
+ <translation>Túlcsordulás: A dátum nem reprezentálható.</translation>
</message>
<message>
<source>At least one component must be present.</source>
- <translation type="unfinished"></translation>
+ <translation>Legalább egy komponenst meg kell adni.</translation>
</message>
<message>
<source>At least one time component must appear after the %1-delimiter.</source>
- <translation type="unfinished"></translation>
+ <translation>Legalább egy időkomponenst meg kell adni a(z) %1 elválasztó után.</translation>
</message>
<message>
<source>No operand in an integer division, %1, can be %2.</source>
@@ -4757,83 +4757,83 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>%1 is not a valid value of type %2.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 nem érvényes %2 típusú érték.</translation>
</message>
<message>
<source>When casting to %1 from %2, the source value cannot be %3.</source>
- <translation type="unfinished"></translation>
+ <translation>Ha %2-t %1-re kényszerítünk, a kiinduló érték nem lehet %3.</translation>
</message>
<message>
<source>Integer division (%1) by zero (%2) is undefined.</source>
- <translation type="unfinished"></translation>
+ <translation>A nullával (%2) való egészosztás (%1) nincs értelmezve.</translation>
</message>
<message>
<source>Division (%1) by zero (%2) is undefined.</source>
- <translation type="unfinished"></translation>
+ <translation>A nullával (%2) való osztás (%1) nincs értelmezve.</translation>
</message>
<message>
<source>Modulus division (%1) by zero (%2) is undefined.</source>
- <translation type="unfinished"></translation>
+ <translation>A nullával (%2) való maradékos osztás (%1) nincs értelmezve.</translation>
</message>
<message>
<source>Dividing a value of type %1 by %2 (not-a-number) is not allowed.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 típusú érték %2-vel osztása nem megengedett, mert az nem szám.</translation>
</message>
<message>
<source>Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 típusú érték osztása %2 vagy %3 (pozitív vagy negatív nulla) értékkel nem megengedett.</translation>
</message>
<message>
<source>Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 típusú érték szorzása %2 vagy %3 (pozitív vagy negatív végtelen) típusú értékkel nem megengedett.</translation>
</message>
<message>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 típusú érték nem kaphat effektív logikai értéket.</translation>
</message>
<message>
<source>Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values.</source>
- <translation type="unfinished"></translation>
+ <translation>Effektív logikai érték nem számítható olyan sorozatra, melyben kettő vagy több atomi érték szerepel.</translation>
</message>
<message>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
- <translation type="unfinished"></translation>
+ <translation>A(z) %2 típusú %1 érték meghaladja a maximumot (%3).</translation>
</message>
<message>
<source>Value %1 of type %2 is below minimum (%3).</source>
- <translation type="unfinished"></translation>
+ <translation>A(z) %2 típusú %1 érték kisebb, mint a minimum (%3).</translation>
</message>
<message>
<source>A value of type %1 must contain an even number of digits. The value %2 does not.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 típusú értékben páros számú számjegynek kell szerepelnie. A(z) %2 érték nem megfelelő.</translation>
</message>
<message>
<source>%1 is not valid as a value of type %2.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 nem érvényes %2 típusú érték.</translation>
</message>
<message>
<source>Operator %1 cannot be used on type %2.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 operátor nem használható %2 típuson.</translation>
</message>
<message>
<source>Operator %1 cannot be used on atomic values of type %2 and %3.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 operátor nem használható %2 és %3 típusok atomi értékein.</translation>
</message>
<message>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy számított attribútum nevében szereplő névtér URI-je nem lehet %1.</translation>
</message>
<message>
<source>The name for a computed attribute cannot have the namespace URI %1 with the local name %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Számított attribútum neve nem szerepelhet %1 névtér URI-ben %2 lokális névvel.</translation>
</message>
<message>
<source>Type error in cast, expected %1, received %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Típushiba a kényszerítés során, várt %1, kapott %2.</translation>
</message>
<message>
<source>When casting to %1 or types derived from it, the source value must be of the same type, or it must be a string literal. Type %2 is not allowed.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 vagy belőle származó típusra való kényszerítéskor a kiindulási értéknek azonos típusúnak vagy sztring literálnak kell lennie. %2 típus nem megengedett.</translation>
</message>
<message>
<source>No casting is possible with %1 as the target type.</source>
@@ -4857,11 +4857,11 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>A comment cannot contain %1</source>
- <translation type="unfinished"></translation>
+ <translation>Megjegyzésben nem szerepelhet %1</translation>
</message>
<message>
<source>A comment cannot end with a %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy megjegyzés nem végződhet a következőre: %1.</translation>
</message>
<message>
<source>No comparisons can be done involving the type %1.</source>
@@ -4873,19 +4873,19 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place.</source>
- <translation type="unfinished"></translation>
+ <translation>Attribútum csomópont nem lehet egy document csomópont gyermeke. Emiatt a(z) %1 attribútum nem ide való.</translation>
</message>
<message>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy könyvtár modult nem lehet közvetlenül kiértékelni. Mindenképp egy fő modulból kell importálni.</translation>
</message>
<message>
<source>A value of type %1 cannot be a predicate. A predicate must have either a numeric type or an Effective Boolean Value type.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy %1 típusú érték nem lehet predikátum. Egy predikátumnak szám vagy effektív logikai érték típusúnak kell lennie.</translation>
</message>
<message>
<source>A positional predicate must evaluate to a single numeric value.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy pozicionális predikátumnak egyetlen numerikus értékké kell kiértékelődnie.</translation>
</message>
<message>
<source>The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid.</source>
@@ -4893,55 +4893,55 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>%1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 érvénytelen célnév egy feldolgozási utasításban. Értéke %2 típusú kell legyen, mint pl. %3.</translation>
</message>
<message>
<source>The last step in a path must contain either nodes or atomic values. It cannot be a mixture between the two.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy útvonal utolsó lépésének vagy csomópontokat vagy atomi értékeket kell tartalmaznia. Nem lehet a kettő keveréke.</translation>
</message>
<message>
<source>The data of a processing instruction cannot contain the string %1</source>
- <translation type="unfinished"></translation>
+ <translation>Egy feldolgozási utasítás adata nem tartalmazhatja %1 sztringet</translation>
</message>
<message>
<source>No namespace binding exists for the prefix %1</source>
- <translation type="unfinished"></translation>
+ <translation>Nincs névtér kötés a(z) %1 prefixumhoz</translation>
</message>
<message>
<source>No namespace binding exists for the prefix %1 in %2</source>
- <translation type="unfinished"></translation>
+ <translation>Nincs névtér kötés a(z) %1 prefixumhoz itt: %2</translation>
</message>
<message>
<source>%1 is an invalid %2</source>
- <translation type="unfinished"></translation>
+ <translation>%1 egy érvénytelen %2</translation>
</message>
<message numerus="yes">
<source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
- <translation type="unfinished">
- <numerusform></numerusform>
+ <translation>
+ <numerusform>%1 maximum %n argumentumot fogad, így %2 érvénytelen.</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%1 requires at least %n argument(s). %2 is therefore invalid.</source>
- <translation type="unfinished">
- <numerusform></numerusform>
+ <translation>
+ <numerusform>%1 legalább %n argumentumot fogad, így %2 érvénytelen.</numerusform>
</translation>
</message>
<message>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 első paramétere nem lehet %2 típusú. Csak numerikus típus, xs:yearMonthDuration vagy xs:dayTimeDuration lehet.</translation>
</message>
<message>
<source>The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 első argumentuma nem lehet %2 típusú. Csak %3, %4 vagy %5 megengedett.</translation>
</message>
<message>
<source>The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 második argumentuma nem lehet %2 típusú. Csak %3, %4 vagy %5 megengedett.</translation>
</message>
<message>
<source>%1 is not a valid XML 1.0 character.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 érvénytelen XML 1.0 karakter.</translation>
</message>
<message>
<source>The first argument to %1 cannot be of type %2.</source>
@@ -4949,99 +4949,99 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>If both values have zone offsets, they must have the same zone offset. %1 and %2 are not the same.</source>
- <translation type="unfinished"></translation>
+ <translation>Ha mindkét értékben zóna eltolás van, akkor annak azonosnak kell lennie. %1 és %2 nem egyezik.</translation>
</message>
<message>
<source>%1 was called.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 meghívva.</translation>
</message>
<message>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
- <translation type="unfinished"></translation>
+ <translation>%1-t %2 vagy %3 kell kövesse, nem a helyettesítő karakterlánc végén.</translation>
</message>
<message>
<source>In the replacement string, %1 must be followed by at least one digit when not escaped.</source>
- <translation type="unfinished"></translation>
+ <translation>A csereszövegben %1-t legalább egy számjegy kell kövesse, amennyiben az nincs escapelve.</translation>
</message>
<message>
<source>In the replacement string, %1 can only be used to escape itself or %2, not %3</source>
- <translation type="unfinished"></translation>
+ <translation>A csereszövegben %1 csak önmaga vagy %2 escapelésére használható, %3-ra nem</translation>
</message>
<message>
<source>%1 matches newline characters</source>
- <translation type="unfinished"></translation>
+ <translation>%1 illeszkedik az újsor karakterekre</translation>
</message>
<message>
<source>%1 and %2 match the start and end of a line.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 és %2 a sor elejére és végére is illeszkedik.</translation>
</message>
<message>
<source>Matches are case insensitive</source>
- <translation type="unfinished"></translation>
+ <translation>Az illeszkedések nem nagybetű-érzékenyek</translation>
</message>
<message>
<source>Whitespace characters are removed, except when they appear in character classes</source>
- <translation type="unfinished"></translation>
+ <translation>A nem nyomtatható karakterek törlésre kerülnek, kivéve, ha karakter osztályokban szerepelnek</translation>
</message>
<message>
<source>%1 is an invalid regular expression pattern: %2</source>
- <translation type="unfinished"></translation>
+ <translation>%1 érvénytelen reguláris kifejezés minta: %2</translation>
</message>
<message>
<source>%1 is an invalid flag for regular expressions. Valid flags are:</source>
- <translation type="unfinished"></translation>
+ <translation>%1 érvénytelen kapcsoló reguláris kifejezésekhez. Az érvényes kapcsolók:</translation>
</message>
<message>
<source>If the first argument is the empty sequence or a zero-length string (no namespace), a prefix cannot be specified. Prefix %1 was specified.</source>
- <translation type="unfinished"></translation>
+ <translation>Ha az első argumentum az üres szekvencia vagy egy nulla hosszúságú sztring (névtér nélkül), akkor nem adható meg prefixum. %1 prefixum lett megadva.</translation>
</message>
<message>
<source>It will not be possible to retrieve %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Nem lesz lehetséges %1 lekérése.</translation>
</message>
<message>
<source>The root node of the second argument to function %1 must be a document node. %2 is not a document node.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 függvény második argumentumának gyökér csomópontja document típusú kell legyen. %2 nem document csomópont.</translation>
</message>
<message>
<source>The default collection is undefined</source>
- <translation type="unfinished"></translation>
+ <translation>Nincs meghatározva az alapértelmezett kollekció</translation>
</message>
<message>
<source>%1 cannot be retrieved</source>
- <translation type="unfinished"></translation>
+ <translation>%1-t nem lehet lekérni</translation>
</message>
<message>
<source>The normalization form %1 is unsupported. The supported forms are %2, %3, %4, and %5, and none, i.e. the empty string (no normalization).</source>
- <translation type="unfinished"></translation>
+ <translation>%1 normalizáló formája nem támogatott. A támogatott formák %2, %3, %4 és %5 vagy semmi, pl. az üres sztring (normalizáció nélkül).</translation>
</message>
<message>
<source>A zone offset must be in the range %1..%2 inclusive. %3 is out of range.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy zónaeltolásnak a(z) %1..%2 nyílt intervallumba kell esnie. %3 az értékhatáron kívül van.</translation>
</message>
<message>
<source>%1 is not a whole number of minutes.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 nem egész számú perc.</translation>
</message>
<message>
<source>Required cardinality is %1; got cardinality %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Az elvárt kardinalitás %1; azonban %2 lett megadva.</translation>
</message>
<message>
<source>The item %1 did not match the required type %2.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 elem nem egyezik a várt %2 típussal.</translation>
</message>
<message>
<source>%1 is an unknown schema type.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 ismeretlen séma típus.</translation>
</message>
<message>
<source>Only one %1 declaration can occur in the query prolog.</source>
- <translation type="unfinished"></translation>
+ <translation>Csak egy %1 deklaráció szerepelhet a lekérdezés bevezetésben.</translation>
</message>
<message>
<source>The initialization of variable %1 depends on itself</source>
- <translation type="unfinished"></translation>
+ <translation>%1 változó inicializálása önmagától függ</translation>
</message>
<message>
<source>No variable by name %1 exists</source>
@@ -5049,35 +5049,35 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>The variable %1 is unused</source>
- <translation type="unfinished"></translation>
+ <translation>A(z) %1 változó nincs használva</translation>
</message>
<message>
<source>Version %1 is not supported. The supported XQuery version is 1.0.</source>
- <translation type="unfinished"></translation>
+ <translation>A(z) %1 verzió nem támogatott. A támogatott XQuery verzió 1.0.</translation>
</message>
<message>
<source>The encoding %1 is invalid. It must contain Latin characters only, must not contain whitespace, and must match the regular expression %2.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 kódolás érvénytelen. Csak Latin karaktereket tartalmazhat, nem nyomtatható karakterek nélkül, és illeszkednie kell %2 reguláris kifejezésre.</translation>
</message>
<message>
<source>No function with signature %1 is available</source>
- <translation type="unfinished"></translation>
+ <translation>%1 szignaturájú függvény nem található</translation>
</message>
<message>
<source>A default namespace declaration must occur before function, variable, and option declarations.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy alapértelmezett névtér deklarációnak meg kell előznie a függvény-, változó- és opció deklarációkat.</translation>
</message>
<message>
<source>Namespace declarations must occur before function, variable, and option declarations.</source>
- <translation type="unfinished"></translation>
+ <translation>A névtér deklarációknak meg kell előzniük a függvény-, változó- és opció deklarációkat.</translation>
</message>
<message>
<source>Module imports must occur before function, variable, and option declarations.</source>
- <translation type="unfinished"></translation>
+ <translation>Modul importoknak meg kell előzniük a függvény-, változó- és opció deklarációkat.</translation>
</message>
<message>
<source>It is not possible to redeclare prefix %1.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 prefixum újradeklarálása nem lehetséges.</translation>
</message>
<message>
<source>Only the prefix %1 can be declared to bind the namespace %2. By default, it is already bound to the prefix %1.</source>
@@ -5085,11 +5085,11 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>Prefix %1 is already declared in the prolog.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 prefixum már deklarálva van a bevezetésben.</translation>
</message>
<message>
<source>The name of an option must have a prefix. There is no default namespace for options.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy opció nevének kötelező prefixumot megadni. Nics alapértelmezett névetér az opciók számára.</translation>
</message>
<message>
<source>The Schema Import feature is not supported, and therefore %1 declarations cannot occur.</source>
@@ -5097,11 +5097,11 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>The target namespace of a %1 cannot be empty.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy %1 cél-névtere nem lehet üres.</translation>
</message>
<message>
<source>The module import feature is not supported</source>
- <translation type="unfinished"></translation>
+ <translation>A modul import szolgáltatás nem támogatott</translation>
</message>
<message>
<source>A variable by name %1 has already been declared in the prolog.</source>
@@ -5113,23 +5113,23 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this)</source>
- <translation type="unfinished"></translation>
+ <translation>Egy felhasználói függvény névtere nem lehet üres (próbálja meg a(z) %1 prefixumot, ami ilyen esetekre van fenntartva)</translation>
</message>
<message>
<source>The namespace %1 is reserved; therefore user defined functions may not use it. Try the predefined prefix %2, which exists for these cases.</source>
- <translation type="unfinished"></translation>
+ <translation>A(z) %1 névtér fenntartott, így felhasználói függvények nem használhatják. Próbálja meg a(z) %2 prefixumot, ami ilyen esetekre van.</translation>
</message>
<message>
<source>The namespace of a user defined function in a library module must be equivalent to the module namespace. In other words, it should be %1 instead of %2</source>
- <translation type="unfinished"></translation>
+ <translation>Egy függvénytár modulban definiált felhasználói függvény névtere meg kell egyezzen a modul névterével. Más szóval %1 kellene legyen %2 helyett</translation>
</message>
<message>
<source>A function already exists with the signature %1.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 szignaturájú függvény már létezik.</translation>
</message>
<message>
<source>No external functions are supported. All supported functions can be used directly, without first declaring them as external</source>
- <translation type="unfinished"></translation>
+ <translation>Külső függvények nem támogatottak. Minden támogatott függvény használható, külső függvényként való deklarálás nélkül</translation>
</message>
<message>
<source>An argument by name %1 has already been declared. Every argument name must be unique.</source>
@@ -5137,55 +5137,55 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>The name of a variable bound in a for-expression must be different from the positional variable. Hence, the two variables named %1 collide.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy for-kifejezésben kötött változó nevének különbözÅ‘nek kell lennie, mint a pozicionális változó neve. Ãgy a két %1 nevű változó ütközik.</translation>
</message>
<message>
<source>The Schema Validation Feature is not supported. Hence, %1-expressions may not be used.</source>
- <translation type="unfinished"></translation>
+ <translation>A Schema Validation szolgáltatás nem támogatott. Emiatt %1-kifejezések nem használhatók.</translation>
</message>
<message>
<source>None of the pragma expressions are supported. Therefore, a fallback expression must be present</source>
- <translation type="unfinished"></translation>
+ <translation>A pragma kifejezések egyike sem támogatott. Ezért léteznie kell egy alapértelmezett kifejezésnek</translation>
</message>
<message>
<source>The %1-axis is unsupported in XQuery</source>
- <translation type="unfinished"></translation>
+ <translation>A(z) %1-tengely nem támogatott XQuery-ben</translation>
</message>
<message>
<source>%1 is not a valid numeric literal.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 érvénytelen numerikus literál.</translation>
</message>
<message>
<source>No function by name %1 is available.</source>
- <translation type="unfinished"></translation>
+ <translation>Nincs %1 nevű függvény.</translation>
</message>
<message>
<source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Prefixumhoz kötés esetén a névtér URI nem lehet az üres sztring, %1.</translation>
</message>
<message>
<source>%1 is an invalid namespace URI.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 egy érvénytelen névtér URI.</translation>
</message>
<message>
<source>It is not possible to bind to the prefix %1</source>
- <translation type="unfinished"></translation>
+ <translation>Nem lehet kötni %1 prefixumhoz</translation>
</message>
<message>
<source>Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
- <translation type="unfinished"></translation>
+ <translation>%1 névtér csak %2-hoz köthető (és minden esetben előre deklarált).</translation>
</message>
<message>
<source>Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
- <translation type="unfinished"></translation>
+ <translation>%1 prefixum csak %2-hoz köthető (és minden esetben előre deklarált).</translation>
</message>
<message>
<source>Two namespace declaration attributes have the same name: %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Két névtér-deklaráció attribútum neve azonos: %1.</translation>
</message>
<message>
<source>The namespace URI must be a constant and cannot use enclosed expressions.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy névtér URI-nek konstansnak kell lennie és nem használhat bennfoglalt kifejezéseket.</translation>
</message>
<message>
<source>An attribute by name %1 has already appeared on this element.</source>
@@ -5193,19 +5193,19 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy közvetlen elem konstruktor nem jól formázott. %1-t %2 zárja le.</translation>
</message>
<message>
<source>The name %1 does not refer to any schema type.</source>
- <translation type="unfinished"></translation>
+ <translation>A(z) %1 név nem mutat semmilyen séma típusra.</translation>
</message>
<message>
<source>%1 is an complex type. Casting to complex types is not possible. However, casting to atomic types such as %2 works.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 komplex típus. Komplex típusra való kényszerítés nem lehetséges. Azonban atomi típusokra, mint pl. %2 történő kényszerítés igen.</translation>
</message>
<message>
<source>%1 is not an atomic type. Casting is only possible to atomic types.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 nem atomi típus. Típuskényszerítés csak atomi típusra történhet.</translation>
</message>
<message>
<source>%1 is not a valid name for a processing-instruction. Therefore this name test will never match.</source>
@@ -5213,55 +5213,55 @@ Válassz másik fájlnevet.</translation>
</message>
<message>
<source>%1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 nem a láthatóságon belüli attribútum deklarációk között van. A séma import szolgáltatás nem támogatott.</translation>
</message>
<message>
<source>The name of an extension expression must be in a namespace.</source>
- <translation type="unfinished"></translation>
+ <translation>Egy kiterjesztés kifejezés nevének névtérben kell lennie.</translation>
</message>
<message>
<source>empty</source>
- <translation type="unfinished"></translation>
+ <translation>üres</translation>
</message>
<message>
<source>zero or one</source>
- <translation type="unfinished"></translation>
+ <translation>nulla vagy egy</translation>
</message>
<message>
<source>exactly one</source>
- <translation type="unfinished"></translation>
+ <translation>pontosan egy</translation>
</message>
<message>
<source>one or more</source>
- <translation type="unfinished"></translation>
+ <translation>egy vagy több</translation>
</message>
<message>
<source>zero or more</source>
- <translation type="unfinished"></translation>
+ <translation>nulla vagy több</translation>
</message>
<message>
<source>Required type is %1, but %2 was found.</source>
- <translation type="unfinished"></translation>
+ <translation>Az elvárt típus %1, de a kapott %2.</translation>
</message>
<message>
<source>Promoting %1 to %2 may cause loss of precision.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 átalakítása %2 típusra a pontosság elvesztését okozhatja.</translation>
</message>
<message>
<source>The focus is undefined.</source>
- <translation type="unfinished"></translation>
+ <translation>A fókusz nincs definiálva.</translation>
</message>
<message>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
- <translation type="unfinished"></translation>
+ <translation>Semmilyen más csomópont után nem adható meg attribútum.</translation>
</message>
<message>
<source>An attribute by name %1 has already been created.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 nevű attribútum már létre van hozva.</translation>
</message>
<message>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
- <translation type="unfinished"></translation>
+ <translation>Csak a Unicode Codepoint Collation támogatott(%1). %2 nem támogatott.</translation>
</message>
</context>
<context>
diff --git a/src/VBox/GuestHost/OpenGL/glapi_parser/APIspec.txt b/src/VBox/GuestHost/OpenGL/glapi_parser/APIspec.txt
index bcc1d59fa..0c961faab 100644
--- a/src/VBox/GuestHost/OpenGL/glapi_parser/APIspec.txt
+++ b/src/VBox/GuestHost/OpenGL/glapi_parser/APIspec.txt
@@ -8515,12 +8515,12 @@ param id GLuint
category VBox
chromium nopack
-name VBoxPackAttachThread
+name VBoxAttachThread
return void
category VBox
chromium nopack
-name VBoxPackDetachThread
+name VBoxDetachThread
return void
category VBox
chromium nopack
diff --git a/src/VBox/GuestHost/OpenGL/include/cr_glstate.h b/src/VBox/GuestHost/OpenGL/include/cr_glstate.h
index 013672aad..3b15e2e35 100644
--- a/src/VBox/GuestHost/OpenGL/include/cr_glstate.h
+++ b/src/VBox/GuestHost/OpenGL/include/cr_glstate.h
@@ -198,7 +198,8 @@ struct CRContext {
DECLEXPORT(void) crStateInit(void);
DECLEXPORT(void) crStateDestroy(void);
-DECLEXPORT(void) crStateOnThreadAttachDetach(GLboolean attach);
+DECLEXPORT(void) crStateVBoxDetachThread();
+DECLEXPORT(void) crStateVBoxAttachThread();
DECLEXPORT(CRContext *) crStateCreateContext(const CRLimitsState *limits, GLint visBits, CRContext *share);
DECLEXPORT(CRContext *) crStateCreateContextEx(const CRLimitsState *limits, GLint visBits, CRContext *share, GLint presetID);
DECLEXPORT(void) crStateMakeCurrent(CRContext *ctx);
diff --git a/src/VBox/GuestHost/OpenGL/state_tracker/state_init.c b/src/VBox/GuestHost/OpenGL/state_tracker/state_init.c
index 72b7b097d..9bf8d4f0b 100644
--- a/src/VBox/GuestHost/OpenGL/state_tracker/state_init.c
+++ b/src/VBox/GuestHost/OpenGL/state_tracker/state_init.c
@@ -590,11 +590,13 @@ crStateReadPixels( GLint x, GLint y, GLsizei width, GLsizei height,
/* This no-op function helps smooth code-gen */
}
-void crStateOnThreadAttachDetach(GLboolean attach)
+void crStateVBoxDetachThread()
{
- if (attach)
- return;
-
/* release the context ref so that it can be freed */
SetCurrentContext(NULL);
}
+
+
+void crStateVBoxAttachThread()
+{
+}
diff --git a/src/VBox/GuestHost/OpenGL/util/vboxhgcm.c b/src/VBox/GuestHost/OpenGL/util/vboxhgcm.c
index 55c0574f6..f3576669b 100644
--- a/src/VBox/GuestHost/OpenGL/util/vboxhgcm.c
+++ b/src/VBox/GuestHost/OpenGL/util/vboxhgcm.c
@@ -343,7 +343,6 @@ DECLINLINE(PCRVBOXHGSMI_CLIENT) _crVBoxHGSMIClientGet(CRConnection *conn)
return &conn->HgsmiClient;
{
PVBOXUHGSMI pHgsmi = VBoxCrHgsmiCreate();
- CRASSERT(pHgsmi);
if (pHgsmi)
{
int rc = _crVBoxHGSMIClientInit(&conn->HgsmiClient, pHgsmi);
@@ -355,6 +354,10 @@ DECLINLINE(PCRVBOXHGSMI_CLIENT) _crVBoxHGSMIClientGet(CRConnection *conn)
}
VBoxCrHgsmiDestroy(pHgsmi);
}
+ else
+ {
+ crWarning("VBoxCrHgsmiCreate failed");
+ }
}
return NULL;
#endif
@@ -595,10 +598,18 @@ static bool _crVBoxHGCMWriteBytes(CRConnection *conn, const void *buf, uint32_t
* @param cbData Data size
*/
/** @todo use vbglR3DoIOCtl here instead */
-static int crVBoxHGCMCall(void *pvData, unsigned cbData)
+static int crVBoxHGCMCall(CRConnection *conn, void *pvData, unsigned cbData)
{
#ifdef IN_GUEST
-
+# if defined(VBOX_WITH_CRHGSMI)
+ PCRVBOXHGSMI_CLIENT pClient = _crVBoxHGSMIClientGet(conn);
+ if (pClient)
+ {
+ return VBoxCrHgsmiCtlConCall(pClient->pHgsmi, (struct VBoxGuestHGCMCallInfo *)pvData, cbData);
+ }
+ else
+# endif
+ {
# ifdef RT_OS_WINDOWS
DWORD cbReturned, lerr;
@@ -682,7 +693,7 @@ static int crVBoxHGCMCall(void *pvData, unsigned cbData)
crWarning("vboxCall failed with %x\n", errno);
return VERR_NOT_SUPPORTED;
# endif /*#ifdef RT_OS_WINDOWS*/
-
+ }
#else /*#ifdef IN_GUEST*/
crError("crVBoxHGCMCall called on host side!");
CRASSERT(FALSE);
@@ -852,7 +863,7 @@ static void _crVBoxHGCMWriteExact(CRConnection *conn, const void *buf, unsigned
parms.pBuffer.u.Pointer.size = len;
parms.pBuffer.u.Pointer.u.linearAddr = (uintptr_t) buf;
- rc = crVBoxHGCMCall(&parms, sizeof(parms));
+ rc = crVBoxHGCMCall(conn, &parms, sizeof(parms));
callRes = parms.hdr.result;
}
else
@@ -869,7 +880,7 @@ static void _crVBoxHGCMWriteExact(CRConnection *conn, const void *buf, unsigned
parms.pBuffer.u.Pointer.size = len;
parms.pBuffer.u.Pointer.u.linearAddr = (uintptr_t) buf;
- rc = crVBoxHGCMCall(&parms, sizeof(parms));
+ rc = crVBoxHGCMCall(conn, &parms, sizeof(parms));
callRes = parms.hdr.result;
}
@@ -910,7 +921,7 @@ static void crVBoxHGCMReadExact( CRConnection *conn, const void *buf, unsigned i
parms.cbBuffer.type = VMMDevHGCMParmType_32bit;
parms.cbBuffer.u.value32 = 0;
- rc = crVBoxHGCMCall(&parms, sizeof(parms));
+ rc = crVBoxHGCMCall(conn, &parms, sizeof(parms));
if (RT_FAILURE(rc) || RT_FAILURE(parms.hdr.result))
{
@@ -966,7 +977,7 @@ crVBoxHGCMWriteReadExact(CRConnection *conn, const void *buf, unsigned int len,
parms.cbWriteback.type = VMMDevHGCMParmType_32bit;
parms.cbWriteback.u.value32 = 0;
- rc = crVBoxHGCMCall(&parms, sizeof(parms));
+ rc = crVBoxHGCMCall(conn, &parms, sizeof(parms));
#if defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS)
if (VERR_OUT_OF_RANGE==rc && CR_VBOXHGCM_USERALLOCATED==bufferKind)
@@ -1002,7 +1013,7 @@ crVBoxHGCMWriteReadExact(CRConnection *conn, const void *buf, unsigned int len,
{
crDebug("SHCRGL_GUEST_FN_WRITE_BUFFER, offset=%u, size=%u", wbParms.ui32Offset.u.value32, wbParms.pBuffer.u.Pointer.size);
- rc = crVBoxHGCMCall(&wbParms, sizeof(wbParms));
+ rc = crVBoxHGCMCall(conn, &wbParms, sizeof(wbParms));
if (RT_FAILURE(rc) || RT_FAILURE(wbParms.hdr.result))
{
crError("SHCRGL_GUEST_FN_WRITE_BUFFER (%i) failed with %x %x\n", wbParms.pBuffer.u.Pointer.size, rc, wbParms.hdr.result);
@@ -1027,7 +1038,7 @@ crVBoxHGCMWriteReadExact(CRConnection *conn, const void *buf, unsigned int len,
crMemcpy(&wrbParms.pWriteback, &parms.pWriteback, sizeof(HGCMFunctionParameter));
crMemcpy(&wrbParms.cbWriteback, &parms.cbWriteback, sizeof(HGCMFunctionParameter));
- rc = crVBoxHGCMCall(&wrbParms, sizeof(wrbParms));
+ rc = crVBoxHGCMCall(conn, &wrbParms, sizeof(wrbParms));
/*bit of hack to reuse code below*/
parms.hdr.result = wrbParms.hdr.result;
@@ -1163,7 +1174,7 @@ static void crVBoxHGCMPollHost(CRConnection *conn)
parms.cbBuffer.type = VMMDevHGCMParmType_32bit;
parms.cbBuffer.u.value32 = 0;
- rc = crVBoxHGCMCall(&parms, sizeof(parms));
+ rc = crVBoxHGCMCall(conn, &parms, sizeof(parms));
if (RT_FAILURE(rc) || RT_FAILURE(parms.hdr.result))
{
@@ -1371,7 +1382,7 @@ static int crVBoxHGCMSetVersion(CRConnection *conn, unsigned int vMajor, unsigne
parms.vMinor.type = VMMDevHGCMParmType_32bit;
parms.vMinor.u.value32 = CR_PROTOCOL_VERSION_MINOR;
- rc = crVBoxHGCMCall(&parms, sizeof(parms));
+ rc = crVBoxHGCMCall(conn, &parms, sizeof(parms));
if (RT_FAILURE(rc) || RT_FAILURE(parms.hdr.result))
{
@@ -1399,7 +1410,7 @@ static int crVBoxHGCMSetPID(CRConnection *conn, unsigned long long pid)
parms.u64PID.type = VMMDevHGCMParmType_64bit;
parms.u64PID.u.value64 = pid;
- rc = crVBoxHGCMCall(&parms, sizeof(parms));
+ rc = crVBoxHGCMCall(conn, &parms, sizeof(parms));
if (RT_FAILURE(rc) || RT_FAILURE(parms.hdr.result))
{
@@ -1441,6 +1452,7 @@ static int crVBoxHGCMDoConnect( CRConnection *conn )
if (g_crvboxhgcm.hGuestDrv == INVALID_HANDLE_VALUE)
{
crDebug("could not open VBox Guest Additions driver! rc = %d\n", GetLastError());
+ CRASSERT(0);
VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
return FALSE;
}
@@ -1532,25 +1544,9 @@ static int crVBoxHGCMDoConnect( CRConnection *conn )
#endif
}
-/*@todo same, replace DeviceIoControl with vbglR3DoIOCtl */
-static void crVBoxHGCMDoDisconnect( CRConnection *conn )
+static bool _crVBoxCommonDoDisconnectLocked( CRConnection *conn )
{
-#ifdef IN_GUEST
- VBoxGuestHGCMDisconnectInfo info;
-# ifdef RT_OS_WINDOWS
- DWORD cbReturned;
-# endif
int i;
-#endif
-
- if (!g_crvboxhgcm.initialized) return;
-
-#ifdef CHROMIUM_THREADSAFE
- crLockMutex(&g_crvboxhgcm.mutex);
-#endif
-
- VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
-
if (conn->pHostBuffer)
{
crFree(conn->pHostBuffer);
@@ -1576,6 +1572,33 @@ static void crVBoxHGCMDoDisconnect( CRConnection *conn )
conn->type = CR_NO_CONNECTION;
}
+ for (i = 0; i < g_crvboxhgcm.num_conns; i++)
+ if (g_crvboxhgcm.conns[i] && g_crvboxhgcm.conns[i]->type != CR_NO_CONNECTION)
+ return true;
+ return false;
+}
+
+/*@todo same, replace DeviceIoControl with vbglR3DoIOCtl */
+static void crVBoxHGCMDoDisconnect( CRConnection *conn )
+{
+#ifdef IN_GUEST
+ VBoxGuestHGCMDisconnectInfo info;
+# ifdef RT_OS_WINDOWS
+ DWORD cbReturned;
+# endif
+#endif
+ bool fHasActiveCons = false;
+
+ if (!g_crvboxhgcm.initialized) return;
+
+#ifdef CHROMIUM_THREADSAFE
+ crLockMutex(&g_crvboxhgcm.mutex);
+#endif
+
+ VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
+
+ fHasActiveCons = _crVBoxCommonDoDisconnectLocked(conn);
+
#ifndef IN_GUEST
#else /* IN_GUEST */
if (conn->u32ClientID)
@@ -1612,13 +1635,8 @@ static void crVBoxHGCMDoDisconnect( CRConnection *conn )
conn->u32ClientID = 0;
}
- /* see if any connections remain */
- for (i = 0; i < g_crvboxhgcm.num_conns; i++)
- if (g_crvboxhgcm.conns[i] && g_crvboxhgcm.conns[i]->type != CR_NO_CONNECTION)
- break;
-
/* close guest additions driver*/
- if (i>=g_crvboxhgcm.num_conns)
+ if (!fHasActiveCons)
{
# ifdef RT_OS_WINDOWS
CloseHandle(g_crvboxhgcm.hGuestDrv);
@@ -1671,7 +1689,7 @@ bool _crVBoxHGSMIInit()
{
int rc;
#ifndef VBOX_CRHGSMI_WITH_D3DDEV
- rc = VBoxCrHgsmiInit();
+ rc = VBoxCrHgsmiInit(CR_PROTOCOL_VERSION_MAJOR, CR_PROTOCOL_VERSION_MINOR);
#else
VBOXCRHGSMI_CALLBACKS Callbacks;
Callbacks.pfnClientCreate = _crVBoxHGSMIClientCreate;
@@ -2304,14 +2322,43 @@ static void crVBoxHGSMIAccept( CRConnection *conn, const char *hostname, unsigne
static int crVBoxHGSMIDoConnect( CRConnection *conn )
{
- return crVBoxHGCMDoConnect(conn);
+ PCRVBOXHGSMI_CLIENT pClient;
+ int rc = VINF_SUCCESS;
+
+#ifdef CHROMIUM_THREADSAFE
+ crLockMutex(&g_crvboxhgcm.mutex);
+#endif
+
+ VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
+
+ pClient = _crVBoxHGSMIClientGet(conn);
+ if (pClient)
+ rc = VBoxCrHgsmiCtlConGetClientID(pClient->pHgsmi, &conn->u32ClientID);
+ else
+ rc = VERR_GENERAL_FAILURE;
+
+ VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
+
+#ifdef CHROMIUM_THREADSAFE
+ crUnlockMutex(&g_crvboxhgcm.mutex);
+#endif
+ return RT_SUCCESS(rc);
}
static void crVBoxHGSMIDoDisconnect( CRConnection *conn )
{
+ bool fHasActiveCons = false;
+
+ if (!g_crvboxhgcm.initialized) return;
+
+ VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
+
#ifdef CHROMIUM_THREADSAFE
crLockMutex(&g_crvboxhgcm.mutex);
#endif
+
+ fHasActiveCons = _crVBoxCommonDoDisconnectLocked(conn);
+
#ifndef VBOX_CRHGSMI_WITH_D3DDEV
if (conn->HgsmiClient.pHgsmi)
{
@@ -2320,8 +2367,12 @@ static void crVBoxHGSMIDoDisconnect( CRConnection *conn )
CRASSERT(pHgsmi);
VBoxCrHgsmiDestroy(pHgsmi);
}
+#else
+# error "port me!"
#endif
- crVBoxHGCMDoDisconnect(conn);
+
+ VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
+
#ifdef CHROMIUM_THREADSAFE
crUnlockMutex(&g_crvboxhgcm.mutex);
#endif
diff --git a/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFltBow-solaris.c b/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFltBow-solaris.c
index a8e2f4367..87ec86eca 100644
--- a/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFltBow-solaris.c
+++ b/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFltBow-solaris.c
@@ -1016,11 +1016,13 @@ LOCAL void vboxNetFltSolarisDestroyVNIC(PVBOXNETFLTVNIC pVNIC)
{
if (pVNIC->hClient)
{
+#if 0
if (pVNIC->hUnicast)
{
mac_unicast_remove(pVNIC->hClient, pVNIC->hUnicast);
pVNIC->hUnicast = NULL;
}
+#endif
if (pVNIC->hPromisc)
{
@@ -1471,12 +1473,14 @@ void vboxNetFltPortOsNotifyMacAddress(PVBOXNETFLTINS pThis, void *pvIfData, PCRT
/*
* Remove existing unicast address, promisc. and the RX hook.
*/
+#if 0
if (pVNIC->hUnicast)
{
mac_rx_clear(pVNIC->hClient);
mac_unicast_remove(pVNIC->hClient, pVNIC->hUnicast);
pVNIC->hUnicast = NULL;
}
+#endif
if (pVNIC->hPromisc)
{
diff --git a/src/VBox/HostServices/GuestControl/service.cpp b/src/VBox/HostServices/GuestControl/service.cpp
index 1b5b25520..e13e515d5 100644
--- a/src/VBox/HostServices/GuestControl/service.cpp
+++ b/src/VBox/HostServices/GuestControl/service.cpp
@@ -635,6 +635,15 @@ int Service::assignHostCmdToGuest(HostCmd *pCmd, VBOXHGCMCALLHANDLE callHandle,
else
{
rc = paramBufferAssign(paParms, cParms, &pCmd->mParmBuf);
+
+ /* Has there been enough parameter space but the wrong parameter types
+ * were submitted -- maybe the client was just asking for the next upcoming
+ * host message?
+ *
+ * Note: To keep this compatible to older clients we return VERR_TOO_MUCH_DATA
+ * in every case. */
+ if (RT_FAILURE(rc))
+ rc = VERR_TOO_MUCH_DATA;
}
LogFlowFunc(("Returned with rc=%Rrc\n", rc));
@@ -691,7 +700,7 @@ int Service::retrieveNextHostCmd(uint32_t u32ClientID, VBOXHGCMCALLHANDLE callHa
/*
* Get the next unassigned host command in the list.
*/
- HostCmd curCmd = mHostCmds.front();
+ HostCmd &curCmd = mHostCmds.front();
rc = assignHostCmdToGuest(&curCmd, callHandle, cParms, paParms);
if (RT_SUCCESS(rc))
{
@@ -705,22 +714,25 @@ int Service::retrieveNextHostCmd(uint32_t u32ClientID, VBOXHGCMCALLHANDLE callHa
paramBufferFree(&curCmd.mParmBuf);
mHostCmds.pop_front();
}
- else if (rc == VERR_BUFFER_OVERFLOW)
+ else
{
+ bool fRemoveCmd = false;
+ uint32_t uTries = curCmd.mTries++;
+
/* If the client understood the message but supplied too little buffer space
* don't send this message again and drop it after 3 unsuccessful attempts.
* The host then should take care of next actions (maybe retry it with a smaller buffer). */
- if (++curCmd.mTries >= 3)
+ if ( rc == VERR_BUFFER_OVERFLOW
+ && uTries >= 3)
{
- paramBufferFree(&curCmd.mParmBuf);
- mHostCmds.pop_front();
+ fRemoveCmd = true;
}
- }
- else
- {
/* Client did not understand the message or something else weird happened. Try again one
* more time and drop it if it didn't get handled then. */
- if (++curCmd.mTries > 1)
+ else if (uTries > 1)
+ fRemoveCmd = true;
+
+ if (fRemoveCmd)
{
paramBufferFree(&curCmd.mParmBuf);
mHostCmds.pop_front();
diff --git a/src/VBox/HostServices/GuestProperties/service.cpp b/src/VBox/HostServices/GuestProperties/service.cpp
index a932c34be..078532d51 100644
--- a/src/VBox/HostServices/GuestProperties/service.cpp
+++ b/src/VBox/HostServices/GuestProperties/service.cpp
@@ -776,8 +776,8 @@ int Service::delProperty(uint32_t cParms, VBOXHGCMSVCPARM paParms[], bool isGues
if (rc == VINF_SUCCESS && pProp)
{
uint64_t u64Timestamp = getCurrentTimestamp();
- bool fRc = RTStrSpaceRemove(&mhProperties, pProp->mStrCore.pszString);
- Assert(fRc); NOREF(fRc);
+ PRTSTRSPACECORE pStrCore = RTStrSpaceRemove(&mhProperties, pProp->mStrCore.pszString);
+ AssertPtr(pStrCore); NOREF(pStrCore);
mcProperties--;
delete pProp;
// if (isGuest) /* Notify the host even for properties that the host
@@ -792,13 +792,13 @@ int Service::delProperty(uint32_t cParms, VBOXHGCMSVCPARM paParms[], bool isGues
/**
* Enumeration data shared between enumPropsCallback and Service::enumProps.
*/
-typedef struct EnumData
+typedef struct ENUMDATA
{
const char *pszPattern; /**< The pattern to match properties against. */
char *pchCur; /**< The current buffer postion. */
size_t cbLeft; /**< The amount of available buffer space. */
size_t cbNeeded; /**< The amount of needed buffer space. */
-} EnumData;
+} ENUMDATA;
/**
* @callback_method_impl{FNRTSTRSPACECALLBACK}
@@ -806,7 +806,7 @@ typedef struct EnumData
static DECLCALLBACK(int) enumPropsCallback(PRTSTRSPACECORE pStr, void *pvUser)
{
Property *pProp = (Property *)pStr;
- EnumData *pEnum = (EnumData *)pvUser;
+ ENUMDATA *pEnum = (ENUMDATA *)pvUser;
/* Included in the enumeration? */
if (!pProp->Matches(pEnum->pszPattern))
@@ -904,7 +904,7 @@ int Service::enumProps(uint32_t cParms, VBOXHGCMSVCPARM paParms[])
*/
if (RT_SUCCESS(rc))
{
- EnumData EnumData;
+ ENUMDATA EnumData;
EnumData.pszPattern = szPatterns;
EnumData.pchCur = pchBuf;
EnumData.cbLeft = cbBuf;
diff --git a/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp b/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
index d6588df38..949d9da08 100644
--- a/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
+++ b/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
@@ -1255,18 +1255,20 @@ BOOL WINAPI DllMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
{
case DLL_THREAD_ATTACH:
{
- crStateOnThreadAttachDetach(GL_TRUE);
+ crStateVBoxAttachThread();
break;
}
+ case DLL_PROCESS_DETACH:
+ /* do exactly the same thing as for DLL_THREAD_DETACH since
+ * DLL_THREAD_DETACH is not called for the thread doing DLL_PROCESS_DETACH according to msdn docs */
case DLL_THREAD_DETACH:
{
- crStateOnThreadAttachDetach(GL_FALSE);
+ crStateVBoxDetachThread();
break;
}
case DLL_PROCESS_ATTACH:
- case DLL_PROCESS_DETACH:
default:
break;
}
diff --git a/src/VBox/HostServices/SharedOpenGL/crserverlib/server_getshaders.c b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_getshaders.c
index 0e6d1bb9b..93b90961b 100644
--- a/src/VBox/HostServices/SharedOpenGL/crserverlib/server_getshaders.c
+++ b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_getshaders.c
@@ -24,6 +24,8 @@
#include "server_dispatch.h"
#include "server.h"
+#include <iprt/assert.h>
+
#ifdef CR_OPENGL_VERSION_2_0
typedef struct _crGetActive_t
@@ -113,6 +115,8 @@ void SERVER_DISPATCH_APIENTRY crServerDispatchGetAttachedObjectsARB(GLhandleARB
crFree(pLocal);
}
+AssertCompile(sizeof(GLsizei) == 4);
+
void SERVER_DISPATCH_APIENTRY crServerDispatchGetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog)
{
GLsizei *pLocal;
@@ -128,6 +132,7 @@ void SERVER_DISPATCH_APIENTRY crServerDispatchGetInfoLogARB(GLhandleARB obj, GLs
hwid = crStateGetProgramHWID(obj);
if (!hwid) hwid = crStateGetShaderHWID(obj);
cr_server.head_spu->dispatch_table.GetInfoLogARB(hwid, maxLength, pLocal, (char*)&pLocal[1]);
+ CRASSERT((*pLocal) <= maxLength);
crServerReturnValue(pLocal, (*pLocal)+sizeof(GLsizei));
crFree(pLocal);
}
@@ -158,6 +163,7 @@ void SERVER_DISPATCH_APIENTRY crServerDispatchGetProgramInfoLog(GLuint program,
crServerReturnValue(&zero, sizeof(zero));
}
cr_server.head_spu->dispatch_table.GetProgramInfoLog(crStateGetProgramHWID(program), bufSize, pLocal, (char*)&pLocal[1]);
+ CRASSERT(pLocal[0] <= bufSize);
crServerReturnValue(pLocal, pLocal[0]+sizeof(GLsizei));
crFree(pLocal);
}
@@ -173,6 +179,7 @@ void SERVER_DISPATCH_APIENTRY crServerDispatchGetShaderSource(GLuint shader, GLs
crServerReturnValue(&zero, sizeof(zero));
}
cr_server.head_spu->dispatch_table.GetShaderSource(crStateGetShaderHWID(shader), bufSize, pLocal, (char*)&pLocal[1]);
+ CRASSERT(pLocal[0] <= bufSize);
crServerReturnValue(pLocal, pLocal[0]+sizeof(GLsizei));
crFree(pLocal);
}
diff --git a/src/VBox/Installer/linux/Makefile.kmk b/src/VBox/Installer/linux/Makefile.kmk
index 35ee3c9bb..f28ef9670 100644
--- a/src/VBox/Installer/linux/Makefile.kmk
+++ b/src/VBox/Installer/linux/Makefile.kmk
@@ -142,7 +142,7 @@ VBOX_LNX_STRIP_BIN = \
VBoxTestOGL \
VBoxSharedCrOpenGL.so,) \
$(if $(VBOX_WITH_PYTHON),$(notdir $(wildcard $(PATH_STAGE_BIN)/VBoxPython*.so)),) \
- $(if $(VBOX_WITH_JXPCOM),libvboxjxpcom.so,) \
+ $(if $(VBOX_WITH_JXPCOM),libvboxjxpcom.so,) \
VBoxTunctl
# Do not remove relocation information of these binaries
@@ -465,7 +465,7 @@ $(addprefix $(VBOX_LNX_INST_OUT_DIR)/archive/,$(VBOX_LNX_NO_STRIP)): \
$(QUIET)$(RM) -f $@
$(QUIET)$(LN_SYMLINK) $< $@
-# rules for creating directories in archive (the pattern rules depends on these). ## @todo use BLDDIRS
+# rules for creating directories in archive (the pattern rules depends on these).
BLDDIRS += $(foreach d,\
archive \
archive/components \
@@ -476,7 +476,7 @@ BLDDIRS += $(foreach d,\
archive/sdk/installer/vboxapi \
archive/sdk/bindings/xpcom/python/xpcom \
archive/sdk/bindings/xpcom/python/xpcom/client \
- archive/sdk/bindings/xpcom/python/xpcom/server,) \
+ archive/sdk/bindings/xpcom/python/xpcom/server,) \
$(if $(VBOX_WITH_JXPCOM),\
archive/sdk/bindings/xpcom/java,) \
archive/additions \
@@ -508,7 +508,7 @@ $(addprefix $(VBOX_LNX_INST_OUT_DIR)/archive-dbg/$(VBOX_LNX_DBG_PATH)/,$(VBOX_LN
$(call MSG_TOOL,copydbg,$<,$@)
$(QUIET)objcopy --only-keep-debug $< $@
-# rules for creating directories in archive-dbg (the pattern rules depends on these). ## @todo use BLDDIRS
+# rules for creating directories in archive-dbg (the pattern rules depends on these).
BLDDIRS += $(foreach d,\
$(VBOX_LNX_DBG_PATH) \
$(VBOX_LNX_DBG_PATH)/components \
diff --git a/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec b/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec
index 8bcc1111e..1905c91e7 100644
--- a/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec
+++ b/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec
@@ -3,7 +3,7 @@
#
#
-# Copyright (C) 2006-2011 Oracle Corporation
+# Copyright (C) 2006-2012 Oracle Corporation
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
@@ -15,6 +15,7 @@
#
%define %SPEC% 1
+%define %OSE% 1
%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
Summary: Oracle VM VirtualBox
@@ -109,11 +110,16 @@ cd icons
cd -
rmdir icons
mv virtualbox.xml $RPM_BUILD_ROOT/usr/share/mime/packages
-for i in VBoxManage VBoxSVC VBoxSDL VirtualBox VBoxHeadless VBoxExtPackHelperApp VBoxBalloonCtrl vboxwebsrv webtest; do
+for i in VBoxManage VBoxSVC VBoxSDL VirtualBox VBoxHeadless VBoxExtPackHelperApp VBoxBalloonCtrl; do
mv $i $RPM_BUILD_ROOT/usr/lib/virtualbox; done
+if %WEBSVC%; then
+ for i in vboxwebsrv webtest; do
+ mv $i $RPM_BUILD_ROOT/usr/lib/virtualbox; done
+fi
for i in VBoxSDL VirtualBox VBoxHeadless VBoxNetDHCP VBoxNetAdpCtl; do
chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/$i; done
mv VBoxTunctl $RPM_BUILD_ROOT/usr/bin
+%if %{?is_ose:0}%{!?is_ose:1}
for d in /lib/modules/*; do
if [ -L $d/build ]; then
rm -f /tmp/vboxdrv-Module.symvers
@@ -135,13 +141,18 @@ for d in /lib/modules/*; do
%INSTMOD%
fi
done
-mv kchmviewer $RPM_BUILD_ROOT/usr/lib/virtualbox
-for i in rdesktop-vrdp.tar.gz rdesktop-vrdp-keymaps additions/VBoxGuestAdditions.iso; do
+%endif
+%if %{?is_ose:0}%{!?is_ose:1}
+ mv kchmviewer $RPM_BUILD_ROOT/usr/lib/virtualbox
+ for i in rdesktop-vrdp.tar.gz rdesktop-vrdp-keymaps; do
+ mv $i $RPM_BUILD_ROOT/usr/share/virtualbox; done
+ mv rdesktop-vrdp $RPM_BUILD_ROOT/usr/bin
+%endif
+for i in additions/VBoxGuestAdditions.iso; do
mv $i $RPM_BUILD_ROOT/usr/share/virtualbox; done
if [ -d accessible ]; then
mv accessible $RPM_BUILD_ROOT/usr/lib/virtualbox
fi
-mv rdesktop-vrdp $RPM_BUILD_ROOT/usr/bin
install -D -m 755 vboxdrv.init $RPM_BUILD_ROOT%{_initrddir}/vboxdrv
%if %{?rpm_suse:1}%{!?rpm_suse:0}
ln -sf ../etc/init.d/vboxdrv $RPM_BUILD_ROOT/sbin/rcvboxdrv
@@ -410,9 +421,9 @@ rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
-%doc LICENSE
+%doc %{!?is_ose: LICENSE}
%doc UserManual*.pdf
-%doc VirtualBox*.chm
+%doc %{!?is_ose: VirtualBox*.chm}
%{_initrddir}/vboxdrv
%{_initrddir}/vboxballoonctrl-service
%{_initrddir}/vboxweb-service
diff --git a/src/VBox/Installer/linux/rpm/rules b/src/VBox/Installer/linux/rpm/rules
index 97ca95288..832828822 100755
--- a/src/VBox/Installer/linux/rpm/rules
+++ b/src/VBox/Installer/linux/rpm/rules
@@ -1,7 +1,6 @@
#!/usr/bin/make -f
-
#
-# Copyright (C) 2006-2011 Oracle Corporation
+# Copyright (C) 2006-2012 Oracle Corporation
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
@@ -12,6 +11,26 @@
# be useful, but WITHOUT ANY WARRANTY of any kind.
#
+# possible overrides:
+# OSE=1 force VBOX_OSE
+# NOPARALLEL=1 compile with -j1
+# LINUX=<dir> compile vboxdrv against Linux found in <dir>
+# VERBOSE=1 verbose build
+# DEBUG=1 debug build
+# NOSUBVER=1 disable generation of the sub-version field (which is
+# either the subversion rev [if available] or the build date)
+# NODOCS=1 don't build docs, use precompiled UserManual.pdf and
+# VirtualBox.chm from $HOME
+# NOMODS=1 don't build any module
+# NOQT=1 don't build the Qt GUI
+# EFI=1 include the EFI binary from prebuild
+# VERSUFFIX=<suffix> set a particular package version suffix (e.g. _customer)
+# HEADLESS=1 build the headless version
+# NOWEBSVC=1 don't build the webservice API, default for OSE
+# STAGEDISO=<path> don't build the VBoxAdditions, use the precompiled .iso
+# PKGDIR=<path> where to store the final package(s)
+# BLEEDING_EDGE=xyz
+
ifeq ($(wildcard rpm/rules),)
$(error call rpm/rules from src/VBox/Installer/linux)
endif
@@ -34,15 +53,21 @@ endif
verpkg := VirtualBox-4.1
current := $(shell pwd)
-vboxroot := $(shell cd ../../../../; pwd)
+vboxroot := $(shell cd ../../../..; pwd)
pkgdir := $(if $(PKGDIR),$(PKGDIR),$(shell cd ../../../../..; pwd))
builddir := $(current)/rpm/builddir
rpmlib := $(shell if [ `uname -m` = "x86_64" ]; then echo "lib64"; else echo "lib"; fi)
arch := $(shell if [ `uname -m` = "x86_64" ]; then echo "amd64"; else echo "i386"; fi)
verfile := $(builddir)/version-generated.mk
+ose := $(if $(OSE),1,$(if $(wildcard $(vboxroot)/src/VBox/RDP/server),,1))
-include $(vboxroot)/SVN_REVISION
svnrev :=$(if $(svn_revision),$(svn_revision),0)
+NOMODS ?= $(ose)
+NOQT ?= $(HEADLESS)
+NOWEBSVC ?= $(ose)
+NOWINE := $(if $(NODOCS),$(if $(STAGEDISO),1,),)$(ose)
+
ifneq ($(MAKECMDGOALS),clean)
rpmrel := $(shell cat /etc/distname)
ifeq ($(rpmrel),)
@@ -70,24 +95,23 @@ ifneq ($(MAKECMDGOALS),clean)
ifeq ($(rpmspec),)
$(error failed to detect the .spec file (rpmrel=$(rpmrel)))
endif
-
- include $(verfile)
-$(verfile): rpm/configure-stamp
- . rpm/env.sh && kmk -C $(vboxroot) $(bld_flags) $(verfile)
endif
+ifneq ($(wildcard $(verfile)),)
+include $(verfile)
ver := $(VBOX_VERSION_STRING)
-rpmver :=$(ver)$(if $(NOSUBVER),,$(if $(svn_revision),_$(svn_revision),)$(VERSUFFIX)$(if $(DEBUG),_dbg,))$(if $(BLEEDING_EDGE),_$(BLEEDING_EDGE),)
+rpmver :=$(ver)$(if $(NOSUBVER),,$(if $(svn_revision),_$(svn_revision),)$(VERSUFFIX)$(if $(HEADLESS),_headless,)$(if $(DEBUG),_dbg,))$(if $(BLEEDING_EDGE),_$(BLEEDING_EDGE),)
archdir := $(current)/rpm/VirtualBox-$(ver)
rpmname := $(verpkg)-$(rpmver)_$(rpmrel)
+endif
# Fedora13/14 is bleeding edge, the other jails have outdated kernel headers
instmod := $(if $(filter rhel4 rhel5 rhel6 ol4 ol5 ol6 centos4 centos5 centos6 sles10.1 sles11.0 fedora13 fedora14 fedora15 fedora16 fedora17,$(rpmrel)),,install_rpm)
ifneq ($(STAGEDISO),)
-ifeq ($(wildcard $(STAGEDISO)/VBoxGuestAdditions.iso),)
-$(error STAGEDISO='$(STAGEDISO)/VBoxGuestAdditions.iso' not found)
-endif
+ ifeq ($(wildcard $(STAGEDISO)/VBoxGuestAdditions.iso),)
+ $(error STAGEDISO='$(STAGEDISO)/VBoxGuestAdditions.iso' not found)
+ endif
endif
ifeq ($(wildcard /usr/share/doc/packages/bash),)
@@ -103,14 +127,19 @@ else
doc_dir := VBOX_PATH_PACKAGE_DOCS="\"/usr/share/doc/packages/$(verpkg)\""
endif
-cfg_flags := $(if $(filter rhel4 sles10.1,$(rpmrel)),--build-libxml2,) \
+cfg_flags := $(if $(NOQT),--disable-qt,) \
+ $(if $(filter rhel4 sles10.1,$(rpmrel)),--build-libxml2,) \
$(if $(filter rhel4,$(rpmrel)),--build-libssl,) \
$(if $(filter rhel4 rhel5 ol4 ol5 centos4 centos5 sles10.1,$(rpmrel)),--build-libcurl,) \
$(if $(filter rhel5 centos5 sles10.1,$(rpmrel)),--disable-sdl-ttf,) \
$(if $(filter sles10.1 turbolinux11,$(rpmrel)),--disable-pulse,) \
$(if $(filter rhel4 rhel5 ol4 ol5 centos4 centos5,$(rpmrel)),--enable-pulse,) \
$(if $(filter rhel4 rhel5 ol4 ol5 centos4 centos5 sles10.1 turbolinux11,$(rpmrel)),--with-qt4-dir=/home/vbox/Qt-4.7.4-stdc++6-$(arch)) \
+ $(if $(ose),--ose,) $(if $(LINUX),--with-linux=$(LINUX),) \
+ $(if $(HEADLESS),--build-headless,) \
$(if $(DEBUG),--build-debug,) \
+ $(if $(NOWINE),,--setup-wine) \
+ $(if $(NOWEBSVC),,--enable-webservice) \
--disable-extpack
bld_flags := AUTOCFG=$(current)/rpm/AutoConfig.kmk \
@@ -118,9 +147,10 @@ bld_flags := AUTOCFG=$(current)/rpm/AutoConfig.kmk \
PATH_OUT=$(builddir) \
VBOX_WITHOUT_EXTPACK_PUEL_PACKING=1 \
VBOX_DO_STRIP= \
+ VBOX_DO_STRIP_MODULES= \
VBOX_WITH_MULTIVERSION_PYTHON= \
$(doc_dir) \
- VBOX_WITH_DOCS_CHM=1 \
+ $(if $(ose),,VBOX_WITH_DOCS_CHM=1) \
VBOX_PACKAGE_DIST=$(rpmdist) \
VBOX_SVN_REV=$(svnrev) \
$(if $(NODOCS),VBOX_WITH_DOCS= ,) \
@@ -131,11 +161,10 @@ bld_flags := AUTOCFG=$(current)/rpm/AutoConfig.kmk \
rpm/configure-stamp:
cd $(vboxroot) && ./configure --odir=$(current)/rpm $(cfg_flags)
- touch $(current)/rpm/configure-stamp
+ touch rpm/configure-stamp
-rpm/build-stamp: rpm/configure-stamp
- . rpm/env.sh && kmk -C $(vboxroot) $(if $(NOPARALLEL),-j1,) $(bld_flags) all
- $(if $(NODOCS),,. rpm/env.sh && kmk -C $(vboxroot)/src/VBox/Main $(bld_flags) docs)
+rpm/build-stamp $(verfile): rpm/configure-stamp
+ . rpm/env.sh && kmk -C $(vboxroot) $(bld_flags) $(if $(NOPARALLEL),-j1,) all
$(if $(NODOCS),cp $(vboxroot)/prebuild/UserManual*.pdf $(builddir)/bin,)
$(if $(NODOCS),cp $(vboxroot)/prebuild/VirtualBox*.chm $(builddir)/bin,)
$(if $(EFI),cp $(vboxroot)/prebuild/VBoxEFI32.fd $(builddir)/bin,)
@@ -144,6 +173,10 @@ rpm/build-stamp: rpm/configure-stamp
$(if $(STAGEDISO),cp $(STAGEDISO)/VBoxGuestAdditions.iso $(builddir)/bin/additions,)
. rpm/env.sh && kmk -C $(vboxroot) $(bld_flags) \
VBOX_NO_LINUX_RUN_INSTALLER=1 \
+ VBOX_LNX_ADD_ARCHIVE.x86=$(builddir)/bin/additions/VBoxGuestAdditions-x86-r$(svnrev).tar.bz2 \
+ VBOX_LNX_ADD_ARCHIVE.amd64=$(builddir)/bin/additions/VBoxGuestAdditions-amd64-r$(svnrev).tar.bz2 \
+ VBOX_PATH_ADDITIONS.linux.x86=$(builddir)/bin/additions \
+ VBOX_PATH_ADDITIONS.linux.amd64=$(builddir)/bin/additions \
packing
touch rpm/build-stamp
@@ -163,38 +196,41 @@ binary: rpm/build-stamp
rm -rf rpm/VirtualBox-*
tar -xjf $(builddir)/bin/VirtualBox.tar.bz2 -C rpm
sed \
- -e 's|%VER%|$(ver)|g' \
- -e 's|%NAME%|$(verpkg)|g' \
- -e 's|%BUILDVER%|$(rpmver)|g' \
- -e 's|%BUILDREL%|$(rpmrel)|g' \
- -e 's|%BUILDROOT%|$(current)/rpm/buildroot|g' \
- -e 's|%LIB%|$(rpmlib)|g' \
- -e 's|%SPEC%|$(rpmspec)|g' \
- -e 's|%MACROSPYTHON%|$(if $(wildcard /usr/lib/rpm/macros.python),%include /usr/lib/rpm/macros.python,)|g' \
- -e 's|%INSTMOD%|$(instmod)|g' \
- -e 's|%LIBASOUND%|$(if $(filter lib64,$(rpmlib)),libasound.so.2()(64bit),libasound.so.2)|g' \
- -e 's|%INITSCRIPTS%|$(if $(filter fedora,$(rpmspec)),initscripts,)|g' \
- -e '/#include installer-utils.sh/ {' \
- -e "r $(vboxroot)/src/VBox/Installer/linux/installer-utils.sh" \
- -e 'd' \
- -e '}' \
- rpm/VirtualBox.tmpl.spec > $(archdir)/VirtualBox.spec
+ -e 's|%VER%|$(ver)|g' \
+ -e 's|%NAME%|$(verpkg)|g' \
+ -e 's|%BUILDVER%|$(rpmver)|g' \
+ -e 's|%BUILDREL%|$(rpmrel)|g' \
+ -e 's|%BUILDROOT%|$(current)/rpm/buildroot|g' \
+ -e 's|%LIB%|$(rpmlib)|g' \
+ -e 's|%OSE%|$(if $(ose),is_ose,not_ose)|g' \
+ -e 's|%SPEC%|$(rpmspec)|g' \
+ -e 's|%MACROSPYTHON%|$(if $(wildcard /usr/lib/rpm/macros.python),%include /usr/lib/rpm/macros.python,)|g' \
+ -e 's|%INSTMOD%|$(instmod)|g' \
+ -e 's|%LIBASOUND%|$(if $(filter lib64,$(rpmlib)),libasound.so.2()(64bit),libasound.so.2)|g' \
+ -e 's|%INITSCRIPTS%|$(if $(filter fedora,$(rpmspec)),initscripts,)|g' \
+ -e "s|%WEBSVC%|$(if $(NOWEBSVC),false,true)|g" \
+ -e '/#include installer-utils.sh/ {' \
+ -e "r $(vboxroot)/src/VBox/Installer/linux/installer-utils.sh" \
+ -e 'd' \
+ -e '}' \
+ rpm/VirtualBox.tmpl.spec > $(archdir)/VirtualBox.spec
sed \
- -e 's|%NOLSB%|yes|g' \
- -e 's|%DEBIAN%||g' \
- -e 's|%PACKAGE%|virtualbox|g' \
- -e "s|%GROUP%|$(if $(VBOX_WITHOUT_HARDENING),vboxusers,root)|g" \
- vboxdrv.sh.in > $(archdir)/vboxdrv.init
+ -e 's|%NOLSB%|yes|g' \
+ -e 's|%DEBIAN%||g' \
+ -e 's|%PACKAGE%|virtualbox|g' \
+ -e "s|%VERSION%|$(VBOX_VERSION_STRING)|g" \
+ -e "s|%GROUP%|$(if $(VBOX_WITHOUT_HARDENING),vboxusers,root)|g" \
+ vboxdrv.sh.in > $(archdir)/vboxdrv.init
sed \
- -e 's|%NOLSB%|yes|g' \
- -e 's|%DEBIAN%||g' \
- -e 's|%PACKAGE%|virtualbox|g' \
- vboxballoonctrl-service.sh.in > $(archdir)/vboxballoonctrl-service.init
+ -e 's|%NOLSB%|yes|g' \
+ -e 's|%DEBIAN%||g' \
+ -e 's|%PACKAGE%|virtualbox|g' \
+ vboxballoonctrl-service.sh.in > $(archdir)/vboxballoonctrl-service.init
sed \
- -e 's|%NOLSB%|yes|g' \
- -e 's|%DEBIAN%||g' \
- -e 's|%PACKAGE%|virtualbox|g' \
- vboxweb-service.sh.in > $(archdir)/vboxweb-service.init
+ -e 's|%NOLSB%|yes|g' \
+ -e 's|%DEBIAN%||g' \
+ -e 's|%PACKAGE%|virtualbox|g' \
+ vboxweb-service.sh.in > $(archdir)/vboxweb-service.init
cp debian/VBox.sh $(archdir)
mv rpm/VirtualBox-$(ver) rpm/$(rpmname)
tar -cjf rpm/VirtualBox.tar.bz2 -C rpm $(rpmname)
diff --git a/src/VBox/Main/glue/glue-java.xsl b/src/VBox/Main/glue/glue-java.xsl
index e4efae5a8..5b343af74 100644
--- a/src/VBox/Main/glue/glue-java.xsl
+++ b/src/VBox/Main/glue/glue-java.xsl
@@ -4020,6 +4020,7 @@ public class VirtualBoxManager
}
public void cleanup()
{
+ disconnect();
deinitPerThread();
}
@@ -4054,6 +4055,17 @@ public class VirtualBoxManager
public void waitForEvents(long tmo)
{
}
+
+ protected void finalize() throws Throwable
+ {
+ try {
+ cleanup();
+ } catch(Exception e) {
+ }
+ finally {
+ super.finalize();
+ }
+ }
}
]]></xsl:text>
diff --git a/src/VBox/Main/include/ConsoleImpl.h b/src/VBox/Main/include/ConsoleImpl.h
index d23a54bb4..ec3c1b4fd 100644
--- a/src/VBox/Main/include/ConsoleImpl.h
+++ b/src/VBox/Main/include/ConsoleImpl.h
@@ -221,6 +221,7 @@ public:
EventSource *getEventSource() { return mEventSource; }
int VRDPClientLogon(uint32_t u32ClientId, const char *pszUser, const char *pszPassword, const char *pszDomain);
+ void VRDPClientStatusChange(uint32_t u32ClientId, const char *pszStatus);
void VRDPClientConnect(uint32_t u32ClientId);
void VRDPClientDisconnect(uint32_t u32ClientId, uint32_t fu32Intercepted);
void VRDPInterceptAudio(uint32_t u32ClientId);
@@ -674,6 +675,9 @@ private:
void guestPropertiesHandleVMReset(void);
bool guestPropertiesVRDPEnabled(void);
void guestPropertiesVRDPUpdateLogon(uint32_t u32ClientId, const char *pszUser, const char *pszDomain);
+ void guestPropertiesVRDPUpdateActiveClient(uint32_t u32ClientId);
+ void guestPropertiesVRDPUpdateClientAttach(uint32_t u32ClientId, bool fAttached);
+ void guestPropertiesVRDPUpdateNameChange(uint32_t u32ClientId, const char *pszName);
void guestPropertiesVRDPUpdateDisconnect(uint32_t u32ClientId);
#endif
diff --git a/src/VBox/Main/include/GuestCtrlImplPrivate.h b/src/VBox/Main/include/GuestCtrlImplPrivate.h
index 8f7149ffc..6b32d788a 100644
--- a/src/VBox/Main/include/GuestCtrlImplPrivate.h
+++ b/src/VBox/Main/include/GuestCtrlImplPrivate.h
@@ -169,10 +169,11 @@ public:
static int taskThread(RTTHREAD aThread, void *pvUser);
static int uploadProgress(unsigned uPercent, void *pvUser);
- static HRESULT setProgressErrorInfo(HRESULT hr,
- ComObjPtr<Progress> pProgress, const char * pszText, ...);
- static HRESULT setProgressErrorInfo(HRESULT hr,
- ComObjPtr<Progress> pProgress, ComObjPtr<Guest> pGuest);
+ static HRESULT setProgressSuccess(ComObjPtr<Progress> pProgress);
+ static HRESULT setProgressErrorMsg(HRESULT hr,
+ ComObjPtr<Progress> pProgress, const char * pszText, ...);
+ static HRESULT setProgressErrorParent(HRESULT hr,
+ ComObjPtr<Progress> pProgress, ComObjPtr<Guest> pGuest);
TaskType taskType;
ComObjPtr<Guest> pGuest;
diff --git a/src/VBox/Main/include/GuestImpl.h b/src/VBox/Main/include/GuestImpl.h
index e38a32f3d..5fea6a5a4 100644
--- a/src/VBox/Main/include/GuestImpl.h
+++ b/src/VBox/Main/include/GuestImpl.h
@@ -161,14 +161,13 @@ public:
ULONG aTimeoutMS, ULONG *aPID, IProgress **aProgress, int *pRC);
HRESULT getProcessOutputInternal(ULONG aPID, ULONG aFlags, ULONG aTimeoutMS,
LONG64 aSize, ComSafeArrayOut(BYTE, aData), int *pRC);
- HRESULT executeProcessResult(const char *pszCommand, const char *pszUser, ULONG ulTimeout, PCALLBACKDATAEXECSTATUS pExecStatus, ULONG *puPID);
+ HRESULT executeSetResult(const char *pszCommand, const char *pszUser, ULONG ulTimeout, PCALLBACKDATAEXECSTATUS pExecStatus, ULONG *puPID);
int executeStreamQueryFsObjInfo(IN_BSTR aObjName,GuestProcessStreamBlock &streamBlock, PRTFSOBJINFO pObjInfo, RTFSOBJATTRADD enmAddAttribs);
- int executeStreamDrain(ULONG aPID, ULONG ulFlags, GuestProcessStream &stream);
+ int executeStreamDrain(ULONG aPID, ULONG ulFlags, GuestProcessStream *pStream);
int executeStreamGetNextBlock(ULONG ulPID, ULONG ulFlags, GuestProcessStream &stream, GuestProcessStreamBlock &streamBlock);
int executeStreamParseNextBlock(ULONG ulPID, ULONG ulFlags, GuestProcessStream &stream, GuestProcessStreamBlock &streamBlock);
HRESULT executeStreamParse(ULONG uPID, ULONG ulFlags, GuestCtrlStreamObjects &streamObjects);
- HRESULT executeWaitForExit(ULONG uPID, ComPtr<IProgress> pProgress, ULONG uTimeoutMS,
- ExecuteProcessStatus_T *pRetStatus, ULONG *puRetExitCode);
+ HRESULT executeWaitForExit(ULONG uPID, ComPtr<IProgress> pProgress, ULONG uTimeoutMS);
// Internal guest file functions
HRESULT fileExistsInternal(IN_BSTR aFile, IN_BSTR aUsername, IN_BSTR aPassword, BOOL *aExists);
HRESULT fileQueryInfoInternal(IN_BSTR aFile, IN_BSTR aUsername, IN_BSTR aPassword, PRTFSOBJINFO aObjInfo, RTFSOBJATTRADD enmAddAttribs, int *pRC);
@@ -197,6 +196,9 @@ private:
void *pvData;
/** Size of user-supplied data. */
uint32_t cbData;
+ /** The host PID. Needed for translating to
+ * a guest PID. */
+ uint32_t uHostPID;
/** Pointer to user-supplied IProgress. */
ComObjPtr<Progress> pProgress;
} VBOXGUESTCTRL_CALLBACK, *PVBOXGUESTCTRL_CALLBACK;
@@ -205,10 +207,12 @@ private:
typedef std::map< uint32_t, VBOXGUESTCTRL_CALLBACK >::const_iterator CallbackMapIterConst;
int callbackAdd(const PVBOXGUESTCTRL_CALLBACK pCallbackData, uint32_t *puContextID);
+ int callbackAssignHostPID(uint32_t uContextID, uint32_t uHostPID);
void callbackDestroy(uint32_t uContextID);
void callbackRemove(uint32_t uContextID);
bool callbackExists(uint32_t uContextID);
void callbackFreeUserData(void *pvData);
+ uint32_t callbackGetHostPID(uint32_t uContextID);
int callbackGetUserData(uint32_t uContextID, eVBoxGuestCtrlCallbackType *pEnmType, void **ppvData, size_t *pcbData);
void* callbackGetUserDataMutableRaw(uint32_t uContextID, size_t *pcbData);
int callbackInit(PVBOXGUESTCTRL_CALLBACK pCallback, eVBoxGuestCtrlCallbackType enmType, ComPtr<Progress> pProgress);
@@ -217,7 +221,7 @@ private:
int callbackMoveForward(uint32_t uContextID, const char *pszMessage);
int callbackNotifyEx(uint32_t uContextID, int iRC, const char *pszMessage);
int callbackNotifyComplete(uint32_t uContextID);
- int callbackNotifyAllForPID(uint32_t uPID, int iRC, const char *pszMessage);
+ int callbackNotifyAllForPID(uint32_t uGuestPID, int iRC, const char *pszMessage);
int callbackWaitForCompletion(uint32_t uContextID, LONG lStage, LONG lTimeout);
int notifyCtrlClientDisconnected(uint32_t u32Function, PCALLBACKDATACLIENTDISCONNECTED pData);
@@ -228,16 +232,24 @@ private:
// Internal guest process representation.
typedef struct VBOXGUESTCTRL_PROCESS
{
+ /** The guest PID -- needed for controlling the actual guest
+ * process which has its own PID (generated by the guest OS). */
+ uint32_t mGuestPID;
+ /** The last reported process status. */
ExecuteProcessStatus_T mStatus;
+ /** The process execution flags. */
uint32_t mFlags;
+ /** The process' exit code. */
uint32_t mExitCode;
} VBOXGUESTCTRL_PROCESS, *PVBOXGUESTCTRL_PROCESS;
typedef std::map< uint32_t, VBOXGUESTCTRL_PROCESS > GuestProcessMap;
typedef std::map< uint32_t, VBOXGUESTCTRL_PROCESS >::iterator GuestProcessMapIter;
typedef std::map< uint32_t, VBOXGUESTCTRL_PROCESS >::const_iterator GuestProcessMapIterConst;
- int processGetStatus(uint32_t u32PID, PVBOXGUESTCTRL_PROCESS pProcess, bool fRemove);
- int processSetStatus(uint32_t u32PID, ExecuteProcessStatus_T enmStatus, uint32_t uExitCode, uint32_t uFlags);
+ uint32_t processGetGuestPID(uint32_t uHostPID);
+ int processGetStatus(uint32_t uHostPID, PVBOXGUESTCTRL_PROCESS pProcess, bool fRemove);
+ int processSetStatus(uint32_t uHostPID, uint32_t uGuestPID,
+ ExecuteProcessStatus_T enmStatus, uint32_t uExitCode, uint32_t uFlags);
// Internal guest directory representation.
typedef struct VBOXGUESTCTRL_DIRECTORY
@@ -245,16 +257,9 @@ private:
Bstr mDirectory;
Bstr mFilter;
ULONG mFlags;
- /** Associated PID of started vbox_ls tool. */
+ /** Associated host PID of started vbox_ls tool. */
ULONG mPID;
GuestProcessStream mStream;
-#if 0
- /** Next enetry in our stream objects vector
- * to process. */
- uint32_t mNextEntry;
- /** The guest stream object containing all */
- GuestCtrlStreamObjects mStream;
-#endif
} VBOXGUESTCTRL_DIRECTORY, *PVBOXGUESTCTRL_DIRECTORY;
typedef std::map< uint32_t, VBOXGUESTCTRL_DIRECTORY > GuestDirectoryMap;
typedef std::map< uint32_t, VBOXGUESTCTRL_DIRECTORY >::iterator GuestDirectoryMapIter;
@@ -266,8 +271,9 @@ private:
/*
* Handler for guest execution control notifications.
*/
- HRESULT handleErrorCompletion(int rc);
- HRESULT handleErrorHGCM(int rc);
+ HRESULT setErrorCompletion(int rc);
+ HRESULT setErrorFromProgress(ComPtr<IProgress> pProgress);
+ HRESULT setErrorHGCM(int rc);
# endif
typedef std::map< AdditionsFacilityType_T, ComObjPtr<AdditionsFacility> > FacilityMap;
@@ -305,6 +311,8 @@ private:
HGCMSVCEXTHANDLE mhExtCtrl;
/** Next upcoming context ID. */
volatile uint32_t mNextContextID;
+ /** Next upcoming host PID */
+ volatile uint32_t mNextHostPID;
/** Next upcoming directory handle ID. */
volatile uint32_t mNextDirectoryID;
CallbackMap mCallbackMap;
diff --git a/src/VBox/Main/include/MachineImpl.h b/src/VBox/Main/include/MachineImpl.h
index 5611571b4..fff4cc81d 100644
--- a/src/VBox/Main/include/MachineImpl.h
+++ b/src/VBox/Main/include/MachineImpl.h
@@ -582,7 +582,7 @@ public:
* used by ready Machine children (whose readiness is bound to the parent's
* one) or after doing addCaller() manually.
*/
- bool isAccessible() const { return mData->mAccessible; }
+ bool isAccessible() const { return !!mData->mAccessible; }
/**
* Returns this machine ID.
diff --git a/src/VBox/Main/include/VirtualBoxImpl.h b/src/VBox/Main/include/VirtualBoxImpl.h
index 3447397de..c17fc95dc 100644
--- a/src/VBox/Main/include/VirtualBoxImpl.h
+++ b/src/VBox/Main/include/VirtualBoxImpl.h
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2006-2011 Oracle Corporation
+ * Copyright (C) 2006-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -259,11 +259,8 @@ public:
int calculateFullPath(const Utf8Str &strPath, Utf8Str &aResult);
void copyPathRelativeToConfig(const Utf8Str &strSource, Utf8Str &strTarget);
- HRESULT registerHardDisk(Medium *aHardDisk, GuidList *pllRegistriesThatNeedSaving);
- HRESULT unregisterHardDisk(Medium *aHardDisk, GuidList *pllRegistriesThatNeedSaving);
-
- HRESULT registerImage(Medium *aImage, DeviceType_T argType, GuidList *pllRegistriesThatNeedSaving);
- HRESULT unregisterImage(Medium *aImage, DeviceType_T argType, GuidList *pllRegistriesThatNeedSaving);
+ HRESULT registerMedium(const ComObjPtr<Medium> &pMedium, ComObjPtr<Medium> *ppMedium, DeviceType_T argType, GuidList *pllRegistriesThatNeedSaving);
+ HRESULT unregisterMedium(Medium *pMedium, GuidList *pllRegistriesThatNeedSaving);
void pushMediumToListWithChildren(MediaList &llMedia, Medium *pMedium);
HRESULT unregisterMachineMedia(const Guid &id);
@@ -279,7 +276,7 @@ public:
HRESULT saveSettings();
static void addGuidToListUniquely(GuidList &llRegistriesThatNeedSaving, const Guid &uuid);
- HRESULT saveRegistries(const GuidList &llRegistriesThatNeedSaving);
+ void saveRegistries(const GuidList &llRegistriesThatNeedSaving);
static HRESULT ensureFilePathExists(const Utf8Str &strFileName, bool fCreate);
@@ -300,7 +297,7 @@ private:
HRESULT checkMediaForConflicts(const Guid &aId,
const Utf8Str &aLocation,
Utf8Str &aConflictType,
- bool &fIdentical);
+ ComObjPtr<Medium> *pDupMedium);
HRESULT registerMachine(Machine *aMachine);
diff --git a/src/VBox/Main/src-all/ExtPackManagerImpl.cpp b/src/VBox/Main/src-all/ExtPackManagerImpl.cpp
index 229ec5ea5..07f7f8947 100644
--- a/src/VBox/Main/src-all/ExtPackManagerImpl.cpp
+++ b/src/VBox/Main/src-all/ExtPackManagerImpl.cpp
@@ -2040,10 +2040,7 @@ STDMETHODIMP ExtPackManager::OpenExtPackFile(IN_BSTR a_bstrTarballAndDigest, IEx
Utf8Str strTarball;
Utf8Str strDigest;
Utf8Str strTarballAndDigest(a_bstrTarballAndDigest);
- size_t offSha256 = Utf8Str::npos;
- const char *pszFilename = RTPathFilename(strTarballAndDigest.c_str());
- if (pszFilename)
- offSha256 = strTarballAndDigest.find("::SHA-256=", pszFilename - strTarballAndDigest.c_str());
+ size_t offSha256 = strTarballAndDigest.find("::SHA-256=");
if (offSha256 == Utf8Str::npos)
strTarball = strTarballAndDigest;
else
diff --git a/src/VBox/Main/src-all/Global.cpp b/src/VBox/Main/src-all/Global.cpp
index 5c89b4a4f..37a4098b6 100644
--- a/src/VBox/Main/src-all/Global.cpp
+++ b/src/VBox/Main/src-all/Global.cpp
@@ -77,35 +77,35 @@ const Global::OSType Global::sOSTypes[SchemaDefs::OSTypeId_COUNT] =
StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_HDA },
{ "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsVista, "Windows Vista",
VBOXOSTYPE_WinVista, VBOXOSHINT_USBTABLET,
- 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
+ 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
{ "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsVista_64, "Windows Vista (64 bit)",
VBOXOSTYPE_WinVista_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
- 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
+ 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
{ "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2008, "Windows 2008",
VBOXOSTYPE_Win2k8, VBOXOSHINT_USBTABLET,
- 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
+ 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
{ "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2008_64, "Windows 2008 (64 bit)",
VBOXOSTYPE_Win2k8_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
- 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
+ 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
{ "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows7, "Windows 7",
VBOXOSTYPE_Win7, VBOXOSHINT_USBTABLET,
- 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
+ 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
{ "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows7_64, "Windows 7 (64 bit)",
VBOXOSTYPE_Win7_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
- 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
+ 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
{ "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows8, "Windows 8",
VBOXOSTYPE_Win8, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_PAE,
- 1024,128, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
+ 1024,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
{ "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows8_64, "Windows 8 (64 bit)",
VBOXOSTYPE_Win8_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
- 1536,128, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
+ 1536,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
{ "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsNT, "Other Windows",
VBOXOSTYPE_WinNT, VBOXOSHINT_NONE,
@@ -196,7 +196,7 @@ const Global::OSType Global::sOSTypes[SchemaDefs::OSTypeId_COUNT] =
384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
{ "Linux", "Linux", SchemaDefs_OSTypeId_Ubuntu, "Ubuntu",
- VBOXOSTYPE_Ubuntu, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
+ VBOXOSTYPE_Ubuntu, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE | VBOXOSHINT_USBTABLET,
512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
{ "Linux", "Linux", SchemaDefs_OSTypeId_Ubuntu_64, "Ubuntu (64 bit)",
diff --git a/src/VBox/Main/src-client/ConsoleImpl.cpp b/src/VBox/Main/src-client/ConsoleImpl.cpp
index c64c68ad0..1d0fbecab 100644
--- a/src/VBox/Main/src-client/ConsoleImpl.cpp
+++ b/src/VBox/Main/src-client/ConsoleImpl.cpp
@@ -752,6 +752,8 @@ void Console::guestPropertiesVRDPUpdateLogon(uint32_t u32ClientId, const char *p
if (!guestPropertiesVRDPEnabled())
return;
+ LogFlowFunc(("\n"));
+
char szPropNm[256];
Bstr bstrReadOnlyGuest(L"RDONLYGUEST");
@@ -774,7 +776,7 @@ void Console::guestPropertiesVRDPUpdateLogon(uint32_t u32ClientId, const char *p
bstrReadOnlyGuest.raw());
char szClientId[64];
- RTStrPrintf(szClientId, sizeof(szClientId), "%d", u32ClientId);
+ RTStrPrintf(szClientId, sizeof(szClientId), "%u", u32ClientId);
mMachine->SetGuestProperty(Bstr("/VirtualBox/HostInfo/VRDP/LastConnectedClient").raw(),
Bstr(szClientId).raw(),
bstrReadOnlyGuest.raw());
@@ -782,24 +784,87 @@ void Console::guestPropertiesVRDPUpdateLogon(uint32_t u32ClientId, const char *p
return;
}
+void Console::guestPropertiesVRDPUpdateActiveClient(uint32_t u32ClientId)
+{
+ if (!guestPropertiesVRDPEnabled())
+ return;
+
+ LogFlowFunc(("%d\n", u32ClientId));
+
+ Bstr bstrFlags(L"RDONLYGUEST,TRANSIENT");
+
+ char szClientId[64];
+ RTStrPrintf(szClientId, sizeof(szClientId), "%u", u32ClientId);
+
+ mMachine->SetGuestProperty(Bstr("/VirtualBox/HostInfo/VRDP/ActiveClient").raw(),
+ Bstr(szClientId).raw(),
+ bstrFlags.raw());
+
+ return;
+}
+
+void Console::guestPropertiesVRDPUpdateNameChange(uint32_t u32ClientId, const char *pszName)
+{
+ if (!guestPropertiesVRDPEnabled())
+ return;
+
+ LogFlowFunc(("\n"));
+
+ char szPropNm[256];
+ Bstr bstrReadOnlyGuest(L"RDONLYGUEST");
+
+ RTStrPrintf(szPropNm, sizeof(szPropNm), "/VirtualBox/HostInfo/VRDP/Client/%u/Name", u32ClientId);
+ Bstr clientName(pszName);
+
+ mMachine->SetGuestProperty(Bstr(szPropNm).raw(),
+ clientName.raw(),
+ bstrReadOnlyGuest.raw());
+
+}
+
+void Console::guestPropertiesVRDPUpdateClientAttach(uint32_t u32ClientId, bool fAttached)
+{
+ if (!guestPropertiesVRDPEnabled())
+ return;
+
+ LogFlowFunc(("\n"));
+
+ Bstr bstrReadOnlyGuest(L"RDONLYGUEST");
+
+ char szPropNm[256];
+ RTStrPrintf(szPropNm, sizeof(szPropNm), "/VirtualBox/HostInfo/VRDP/Client/%u/Attach", u32ClientId);
+
+ Bstr bstrValue = fAttached? "1": "0";
+
+ mMachine->SetGuestProperty(Bstr(szPropNm).raw(),
+ bstrValue.raw(),
+ bstrReadOnlyGuest.raw());
+}
+
void Console::guestPropertiesVRDPUpdateDisconnect(uint32_t u32ClientId)
{
if (!guestPropertiesVRDPEnabled())
return;
+ LogFlowFunc(("\n"));
+
Bstr bstrReadOnlyGuest(L"RDONLYGUEST");
char szPropNm[256];
RTStrPrintf(szPropNm, sizeof(szPropNm), "/VirtualBox/HostInfo/VRDP/Client/%u/Name", u32ClientId);
- mMachine->SetGuestProperty(Bstr(szPropNm).raw(), Bstr("").raw(),
+ mMachine->SetGuestProperty(Bstr(szPropNm).raw(), NULL,
bstrReadOnlyGuest.raw());
RTStrPrintf(szPropNm, sizeof(szPropNm), "/VirtualBox/HostInfo/VRDP/Client/%u/User", u32ClientId);
- mMachine->SetGuestProperty(Bstr(szPropNm).raw(), Bstr("").raw(),
+ mMachine->SetGuestProperty(Bstr(szPropNm).raw(), NULL,
bstrReadOnlyGuest.raw());
RTStrPrintf(szPropNm, sizeof(szPropNm), "/VirtualBox/HostInfo/VRDP/Client/%u/Domain", u32ClientId);
- mMachine->SetGuestProperty(Bstr(szPropNm).raw(), Bstr("").raw(),
+ mMachine->SetGuestProperty(Bstr(szPropNm).raw(), NULL,
+ bstrReadOnlyGuest.raw());
+
+ RTStrPrintf(szPropNm, sizeof(szPropNm), "/VirtualBox/HostInfo/VRDP/Client/%u/Attach", u32ClientId);
+ mMachine->SetGuestProperty(Bstr(szPropNm).raw(), NULL,
bstrReadOnlyGuest.raw());
char szClientId[64];
@@ -1061,6 +1126,32 @@ int Console::VRDPClientLogon(uint32_t u32ClientId, const char *pszUser, const ch
return VINF_SUCCESS;
}
+void Console::VRDPClientStatusChange(uint32_t u32ClientId, const char *pszStatus)
+{
+ LogFlowFuncEnter();
+
+ AutoCaller autoCaller(this);
+ AssertComRCReturnVoid(autoCaller.rc());
+
+ LogFlowFunc(("%s\n", pszStatus));
+
+ /* Parse the status string. */
+ if (RTStrICmp(pszStatus, "ATTACH") == 0)
+ {
+ guestPropertiesVRDPUpdateClientAttach(u32ClientId, true);
+ }
+ else if (RTStrICmp(pszStatus, "DETACH") == 0)
+ {
+ guestPropertiesVRDPUpdateClientAttach(u32ClientId, false);
+ }
+ else if (RTStrNICmp(pszStatus, "NAME=", strlen("NAME=")) == 0)
+ {
+ guestPropertiesVRDPUpdateNameChange(u32ClientId, pszStatus + strlen("NAME="));
+ }
+
+ LogFlowFuncLeave();
+}
+
void Console::VRDPClientConnect(uint32_t u32ClientId)
{
LogFlowFuncEnter();
@@ -1084,6 +1175,10 @@ void Console::VRDPClientConnect(uint32_t u32ClientId)
NOREF(u32ClientId);
mDisplay->VideoAccelVRDP(true);
+#ifdef VBOX_WITH_GUEST_PROPS
+ guestPropertiesVRDPUpdateActiveClient(u32ClientId);
+#endif /* VBOX_WITH_GUEST_PROPS */
+
LogFlowFuncLeave();
return;
}
@@ -1154,6 +1249,8 @@ void Console::VRDPClientDisconnect(uint32_t u32ClientId,
#ifdef VBOX_WITH_GUEST_PROPS
guestPropertiesVRDPUpdateDisconnect(u32ClientId);
+ if (u32Clients == 0)
+ guestPropertiesVRDPUpdateActiveClient(0);
#endif /* VBOX_WITH_GUEST_PROPS */
if (u32Clients == 0)
@@ -1828,7 +1925,7 @@ STDMETHODIMP Console::COMSETTER(UseHostClipboard)(BOOL aUseHostClipboard)
AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
- mfUseHostClipboard = aUseHostClipboard;
+ mfUseHostClipboard = !!aUseHostClipboard;
return S_OK;
}
@@ -2996,8 +3093,8 @@ Console::CreateSharedFolder(IN_BSTR aName, IN_BSTR aHostPath, BOOL aWritable, BO
rc = pSharedFolder->init(this,
strName,
strHostPath,
- aWritable,
- aAutoMount,
+ !!aWritable,
+ !!aAutoMount,
true /* fFailOnError */);
if (FAILED(rc)) return rc;
@@ -3019,7 +3116,7 @@ Console::CreateSharedFolder(IN_BSTR aName, IN_BSTR aHostPath, BOOL aWritable, BO
}
/* second, create the given folder */
- rc = createSharedFolder(aName, SharedFolderData(aHostPath, aWritable, aAutoMount));
+ rc = createSharedFolder(aName, SharedFolderData(aHostPath, !!aWritable, !!aAutoMount));
if (FAILED(rc))
return rc;
}
@@ -4360,7 +4457,7 @@ HRESULT Console::onNATRedirectRuleChange(ULONG ulInstance, BOOL aNatRuleRemove,
break;
bool fUdp = aProto == NATProtocol_UDP;
- vrc = pNetNatCfg->pfnRedirectRuleCommand(pNetNatCfg, aNatRuleRemove, fUdp,
+ vrc = pNetNatCfg->pfnRedirectRuleCommand(pNetNatCfg, !!aNatRuleRemove, fUdp,
Utf8Str(aHostIp).c_str(), aHostPort, Utf8Str(aGuestIp).c_str(),
aGuestPort);
if (RT_FAILURE(vrc))
@@ -7012,7 +7109,7 @@ HRESULT Console::fetchSharedFolders(BOOL aGlobal)
if (FAILED(rc)) throw rc;
m_mapMachineSharedFolders.insert(std::make_pair(strName,
- SharedFolderData(strHostPath, writable, autoMount)));
+ SharedFolderData(strHostPath, !!writable, !!autoMount)));
/* send changes to HGCM if the VM is running */
if (online)
@@ -7039,9 +7136,7 @@ HRESULT Console::fetchSharedFolders(BOOL aGlobal)
/* create the new machine folder */
rc = createSharedFolder(strName,
- SharedFolderData(strHostPath,
- writable,
- autoMount));
+ SharedFolderData(strHostPath, !!writable, !!autoMount));
if (FAILED(rc)) throw rc;
}
}
diff --git a/src/VBox/Main/src-client/ConsoleVRDPServer.cpp b/src/VBox/Main/src-client/ConsoleVRDPServer.cpp
index 8471267fc..12453fc5e 100644
--- a/src/VBox/Main/src-client/ConsoleVRDPServer.cpp
+++ b/src/VBox/Main/src-client/ConsoleVRDPServer.cpp
@@ -855,6 +855,47 @@ DECLCALLBACK(int) ConsoleVRDPServer::VRDPCallbackQueryProperty(void *pvCallback
server->mConsole->onVRDEServerInfoChange();
} break;
+ case VRDE_SP_CLIENT_STATUS:
+ {
+ if (cbBuffer < sizeof(VRDECLIENTSTATUS))
+ {
+ rc = VERR_INVALID_PARAMETER;
+ break;
+ }
+
+ size_t cbStatus = cbBuffer - RT_UOFFSETOF(VRDECLIENTSTATUS, achStatus);
+
+ VRDECLIENTSTATUS *pStatus = (VRDECLIENTSTATUS *)pvBuffer;
+
+ if (cbBuffer < RT_UOFFSETOF(VRDECLIENTSTATUS, achStatus) + pStatus->cbStatus)
+ {
+ rc = VERR_INVALID_PARAMETER;
+ break;
+ }
+
+ size_t cchStatus = 0;
+ rc = RTStrNLenEx(pStatus->achStatus, cbStatus, &cchStatus);
+
+ if (RT_FAILURE(rc))
+ {
+ rc = VERR_INVALID_PARAMETER;
+ break;
+ }
+
+ Log(("VRDE_SP_CLIENT_STATUS [%s]\n", pStatus->achStatus));
+
+ server->mConsole->VRDPClientStatusChange(pStatus->u32ClientId, pStatus->achStatus);
+
+ rc = VINF_SUCCESS;
+
+ if (pcbOut)
+ {
+ *pcbOut = cbBuffer;
+ }
+
+ server->mConsole->onVRDEServerInfoChange();
+ } break;
+
default:
break;
}
diff --git a/src/VBox/Main/src-client/GuestCtrlImpl.cpp b/src/VBox/Main/src-client/GuestCtrlImpl.cpp
index e2fd672d6..c25025cd6 100644
--- a/src/VBox/Main/src-client/GuestCtrlImpl.cpp
+++ b/src/VBox/Main/src-client/GuestCtrlImpl.cpp
@@ -153,6 +153,29 @@ int Guest::callbackAdd(const PVBOXGUESTCTRL_CALLBACK pCallback, uint32_t *puCont
}
/**
+ * Assigns a host PID to a specified context.
+ * Does not do locking!
+ *
+ * @param uContextID
+ * @param uHostPID
+ */
+int Guest::callbackAssignHostPID(uint32_t uContextID, uint32_t uHostPID)
+{
+ AssertReturn(uContextID, VERR_INVALID_PARAMETER);
+ AssertReturn(uHostPID, VERR_INVALID_PARAMETER);
+
+ int rc = VINF_SUCCESS;
+
+ CallbackMapIter it = mCallbackMap.find(uContextID);
+ if (it == mCallbackMap.end())
+ return VERR_NOT_FOUND;
+
+ it->second.uHostPID = uHostPID;
+
+ return VINF_SUCCESS;
+}
+
+/**
* Destroys the formerly allocated callback data. The callback then
* needs to get removed from the callback map via callbackRemove().
* Does not do locking!
@@ -200,6 +223,12 @@ bool Guest::callbackExists(uint32_t uContextID)
return (it == mCallbackMap.end()) ? false : true;
}
+/**
+ * Frees the user data (actual context data) of a callback.
+ * Does not do locking!
+ *
+ * @param pvData Data to free.
+ */
void Guest::callbackFreeUserData(void *pvData)
{
if (pvData)
@@ -209,6 +238,26 @@ void Guest::callbackFreeUserData(void *pvData)
}
}
+/**
+ * Retrieves the (generated) host PID of a given callback.
+ *
+ * @return The host PID, if found, 0 otherwise.
+ * @param uContextID Context ID to lookup host PID for.
+ * @param puHostPID Where to store the host PID.
+ */
+uint32_t Guest::callbackGetHostPID(uint32_t uContextID)
+{
+ AssertReturn(uContextID, VERR_INVALID_PARAMETER);
+
+ AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
+
+ CallbackMapIterConst it = mCallbackMap.find(uContextID);
+ if (it == mCallbackMap.end())
+ return 0;
+
+ return it->second.uHostPID;
+}
+
int Guest::callbackGetUserData(uint32_t uContextID, eVBoxGuestCtrlCallbackType *pEnmType,
void **ppvData, size_t *pcbData)
{
@@ -245,7 +294,7 @@ int Guest::callbackGetUserData(uint32_t uContextID, eVBoxGuestCtrlCallbackType *
* modify the data ...*/
void* Guest::callbackGetUserDataMutableRaw(uint32_t uContextID, size_t *pcbData)
{
- AssertReturn(uContextID, NULL);
+ /* uContextID can be 0. */
/* pcbData is optional. */
CallbackMapIterConst it = mCallbackMap.find(uContextID);
@@ -315,7 +364,8 @@ int Guest::callbackInit(PVBOXGUESTCTRL_CALLBACK pCallback, eVBoxGuestCtrlCallbac
bool Guest::callbackIsCanceled(uint32_t uContextID)
{
- AssertReturn(uContextID, true);
+ if (!uContextID)
+ return true; /* If no context ID given then take a shortcut. */
ComPtr<IProgress> pProgress;
{
@@ -457,7 +507,6 @@ int Guest::callbackNotifyEx(uint32_t uContextID, int iRC, const char *pszMessage
}
else
{
-
hRC = pProgress->notifyComplete(VBOX_E_IPRT_ERROR /* Must not be S_OK. */,
COM_IIDOF(IGuest),
Guest::getStaticComponentName(),
@@ -481,16 +530,17 @@ int Guest::callbackNotifyEx(uint32_t uContextID, int iRC, const char *pszMessage
}
/**
- * TODO
+ * Notifies all callbacks which are assigned to a certain guest PID to set a certain
+ * return/error code and an optional (error) message.
*
* @return IPRT status code.
- * @param uPID
- * @param iRC
- * @param pszMessage
+ * @param uGuestPID Guest PID to find all callbacks for.
+ * @param iRC Return (error) code to set for the found callbacks.
+ * @param pszMessage Optional (error) message to set.
*/
-int Guest::callbackNotifyAllForPID(uint32_t uPID, int iRC, const char *pszMessage)
+int Guest::callbackNotifyAllForPID(uint32_t uGuestPID, int iRC, const char *pszMessage)
{
- AssertReturn(uPID, VERR_INVALID_PARAMETER);
+ AssertReturn(uGuestPID, VERR_INVALID_PARAMETER);
int vrc = VINF_SUCCESS;
@@ -511,7 +561,7 @@ int Guest::callbackNotifyAllForPID(uint32_t uPID, int iRC, const char *pszMessag
{
PCALLBACKDATAEXECOUT pItData = (PCALLBACKDATAEXECOUT)it->second.pvData;
AssertPtr(pItData);
- if (pItData->u32PID == uPID)
+ if (pItData->u32PID == uGuestPID)
vrc = callbackNotifyEx(it->first, iRC, pszMessage);
break;
}
@@ -523,7 +573,7 @@ int Guest::callbackNotifyAllForPID(uint32_t uPID, int iRC, const char *pszMessag
{
PCALLBACKDATAEXECINSTATUS pItData = (PCALLBACKDATAEXECINSTATUS)it->second.pvData;
AssertPtr(pItData);
- if (pItData->u32PID == uPID)
+ if (pItData->u32PID == uGuestPID)
vrc = callbackNotifyEx(it->first, iRC, pszMessage);
break;
}
@@ -701,7 +751,8 @@ int Guest::notifyCtrlExecStatus(uint32_t u32Function,
AssertPtrReturn(pData, VERR_INVALID_PARAMETER);
uint32_t uContextID = pData->hdr.u32ContextID;
- Assert(uContextID);
+ /* The context ID might be 0 in case the guest was not able to fetch
+ * actual command. So we can't do much now but report an error. */
/* Scope write locks as much as possible. */
{
@@ -734,119 +785,161 @@ int Guest::notifyCtrlExecStatus(uint32_t u32Function,
/* Handle process map. This needs to be done first in order to have a valid
* map in case some callback gets notified a bit below. */
+ uint32_t uHostPID = 0;
+
/* Note: PIDs never get removed here in case the guest process signalled its
* end; instead the next call of GetProcessStatus() will remove the PID
* from the process map after we got the process' final (exit) status.
* See waitpid() for an example. */
if (pData->u32PID) /* Only add/change a process if it has a valid PID (>0). */
{
+ uHostPID = callbackGetHostPID(uContextID);
+ Assert(uHostPID);
+
switch (pData->u32Status)
{
/* Just reach through flags. */
case PROC_STS_TES:
case PROC_STS_TOK:
- vrc = processSetStatus(pData->u32PID,
+ vrc = processSetStatus(uHostPID, pData->u32PID,
(ExecuteProcessStatus_T)pData->u32Status,
- 0 /* Exit code. */, pData->u32Flags);
+ 0 /* Exit code */, pData->u32Flags);
break;
/* Interprete u32Flags as the guest process' exit code. */
default:
- vrc = processSetStatus(pData->u32PID,
+ vrc = processSetStatus(uHostPID, pData->u32PID,
(ExecuteProcessStatus_T)pData->u32Status,
- pData->u32Flags /* Exit code. */, 0 /* Flags. */);
-
+ pData->u32Flags /* Exit code */, 0 /* Flags */);
break;
}
}
- /* Do progress handling. */
- switch (pData->u32Status)
+ if (RT_SUCCESS(vrc))
{
- case PROC_STS_STARTED:
- vrc = callbackMoveForward(uContextID, Guest::tr("Waiting for process to exit ..."));
- LogRel(("Guest process (PID %u) started\n", pData->u32PID)); /** @todo Add process name */
- break;
+ /* Do progress handling. */
+ switch (pData->u32Status)
+ {
+ case PROC_STS_STARTED:
+ vrc = callbackMoveForward(uContextID, Guest::tr("Waiting for process to exit ..."));
+ LogRel(("Guest process (PID %u) started\n", pData->u32PID)); /** @todo Add process name */
+ break;
- case PROC_STS_TEN: /* Terminated normally. */
- vrc = callbackNotifyComplete(uContextID);
- LogRel(("Guest process (PID %u) exited normally\n", pData->u32PID)); /** @todo Add process name */
- break;
+ case PROC_STS_TEN: /* Terminated normally. */
+ vrc = callbackNotifyComplete(uContextID);
+ LogRel(("Guest process (PID %u) exited normally (exit code: %u)\n",
+ pData->u32PID, pData->u32Flags)); /** @todo Add process name */
+ break;
- case PROC_STS_TEA: /* Terminated abnormally. */
- LogRel(("Guest process (PID %u) terminated abnormally with exit code = %u\n",
- pData->u32PID, pData->u32Flags)); /** @todo Add process name */
- errMsg = Utf8StrFmt(Guest::tr("Process terminated abnormally with status '%u'"),
- pData->u32Flags);
- rcCallback = VERR_GENERAL_FAILURE; /** @todo */
- break;
+ case PROC_STS_TEA: /* Terminated abnormally. */
+ LogRel(("Guest process (PID %u) terminated abnormally (exit code: %u)\n",
+ pData->u32PID, pData->u32Flags)); /** @todo Add process name */
+ errMsg = Utf8StrFmt(Guest::tr("Process terminated abnormally with status '%u'"),
+ pData->u32Flags);
+ rcCallback = VERR_GENERAL_FAILURE; /** @todo */
+ break;
- case PROC_STS_TES: /* Terminated through signal. */
- LogRel(("Guest process (PID %u) terminated through signal with exit code = %u\n",
- pData->u32PID, pData->u32Flags)); /** @todo Add process name */
- errMsg = Utf8StrFmt(Guest::tr("Process terminated via signal with status '%u'"),
- pData->u32Flags);
- rcCallback = VERR_GENERAL_FAILURE; /** @todo */
- break;
+ case PROC_STS_TES: /* Terminated through signal. */
+ LogRel(("Guest process (PID %u) terminated through signal (exit code: %u)\n",
+ pData->u32PID, pData->u32Flags)); /** @todo Add process name */
+ errMsg = Utf8StrFmt(Guest::tr("Process terminated via signal with status '%u'"),
+ pData->u32Flags);
+ rcCallback = VERR_GENERAL_FAILURE; /** @todo */
+ break;
- case PROC_STS_TOK:
- LogRel(("Guest process (PID %u) timed out and was killed\n", pData->u32PID)); /** @todo Add process name */
- errMsg = Utf8StrFmt(Guest::tr("Process timed out and was killed"));
- rcCallback = VERR_TIMEOUT;
- break;
+ case PROC_STS_TOK:
+ LogRel(("Guest process (PID %u) timed out and was killed\n", pData->u32PID)); /** @todo Add process name */
+ errMsg = Utf8StrFmt(Guest::tr("Process timed out and was killed"));
+ rcCallback = VERR_TIMEOUT;
+ break;
- case PROC_STS_TOA:
- LogRel(("Guest process (PID %u) timed out and could not be killed\n", pData->u32PID)); /** @todo Add process name */
- errMsg = Utf8StrFmt(Guest::tr("Process timed out and could not be killed"));
- rcCallback = VERR_TIMEOUT;
- break;
+ case PROC_STS_TOA:
+ LogRel(("Guest process (PID %u) timed out and could not be killed\n", pData->u32PID)); /** @todo Add process name */
+ errMsg = Utf8StrFmt(Guest::tr("Process timed out and could not be killed"));
+ rcCallback = VERR_TIMEOUT;
+ break;
- case PROC_STS_DWN:
- LogRel(("Guest process (PID %u) killed because system is shutting down\n", pData->u32PID)); /** @todo Add process name */
- /*
- * If u32Flags has ExecuteProcessFlag_IgnoreOrphanedProcesses set, we don't report an error to
- * our progress object. This is helpful for waiters which rely on the success of our progress object
- * even if the executed process was killed because the system/VBoxService is shutting down.
- *
- * In this case u32Flags contains the actual execution flags reached in via Guest::ExecuteProcess().
- */
- if (pData->u32Flags & ExecuteProcessFlag_IgnoreOrphanedProcesses)
- {
- vrc = callbackNotifyComplete(uContextID);
- }
- else
- {
- errMsg = Utf8StrFmt(Guest::tr("Process killed because system is shutting down"));
- rcCallback = VERR_CANCELLED;
- }
- break;
+ case PROC_STS_DWN:
+ LogRel(("Guest process (PID %u) killed because system is shutting down\n", pData->u32PID)); /** @todo Add process name */
+ /*
+ * If u32Flags has ExecuteProcessFlag_IgnoreOrphanedProcesses set, we don't report an error to
+ * our progress object. This is helpful for waiters which rely on the success of our progress object
+ * even if the executed process was killed because the system/VBoxService is shutting down.
+ *
+ * In this case u32Flags contains the actual execution flags reached in via Guest::ExecuteProcess().
+ */
+ if (pData->u32Flags & ExecuteProcessFlag_IgnoreOrphanedProcesses)
+ {
+ vrc = callbackNotifyComplete(uContextID);
+ }
+ else
+ {
+ errMsg = Utf8StrFmt(Guest::tr("Process killed because system is shutting down"));
+ rcCallback = VERR_CANCELLED;
+ }
+ break;
- case PROC_STS_ERROR:
- if (pData->u32PID)
+ case PROC_STS_ERROR:
{
- LogRel(("Guest process (PID %u) could not be started because of rc=%Rrc\n",
- pData->u32PID, pData->u32Flags)); /** @todo Add process name */
- }
- else
- {
- switch (pData->u32Flags)
+ Utf8Str errDetail;
+ if (pData->u32PID)
{
- case VERR_MAX_PROCS_REACHED:
- LogRel(("Guest process could not be started because maximum number of parallel guest processes has been reached\n"));
- break;
+ errDetail = Utf8StrFmt(Guest::tr("Guest process (PID %u) could not be started because of rc=%Rrc"),
+ pData->u32PID, pData->u32Flags);
+ }
+ else
+ {
+ switch (pData->u32Flags) /* u32Flags member contains the IPRT error code from guest side. */
+ {
+ case VERR_FILE_NOT_FOUND: /* This is the most likely error. */
+ errDetail = Utf8StrFmt(Guest::tr("The specified file was not found on guest"));
+ break;
+
+ case VERR_PATH_NOT_FOUND:
+ errDetail = Utf8StrFmt(Guest::tr("Could not resolve path to specified file was not found on guest"));
+ break;
+
+ case VERR_BAD_EXE_FORMAT:
+ errDetail = Utf8StrFmt(Guest::tr("The specified file is not an executable format on guest"));
+ break;
+
+ case VERR_AUTHENTICATION_FAILURE:
+ errDetail = Utf8StrFmt(Guest::tr("The specified user was not able to logon on guest"));
+ break;
+
+ case VERR_TIMEOUT:
+ errDetail = Utf8StrFmt(Guest::tr("The guest did not respond within time"));
+ break;
+
+ case VERR_CANCELLED:
+ errDetail = Utf8StrFmt(Guest::tr("The execution operation was canceled"));
+ break;
+
+ case VERR_PERMISSION_DENIED:
+ errDetail = Utf8StrFmt(Guest::tr("Invalid user/password credentials"));
+ break;
+
+ case VERR_MAX_PROCS_REACHED:
+ errDetail = Utf8StrFmt(Guest::tr("Guest process could not be started because maximum number of parallel guest processes has been reached"));
+ break;
- default:
- LogRel(("Guest process could not be started because of rc=%Rrc\n",
- pData->u32Flags));
+ default:
+ errDetail = Utf8StrFmt(Guest::tr("Guest process reported error %Rrc"), pData->u32Flags);
+ break;
+ }
}
+ errMsg = Utf8StrFmt(Guest::tr("Process execution failed: "), pData->u32Flags) + errDetail;
+ rcCallback = pData->u32Flags; /* Report back guest rc. */
+
+ LogRel((errMsg.c_str()));
+
+ break;
}
- errMsg = Utf8StrFmt(Guest::tr("Process execution failed with rc=%Rrc"), pData->u32Flags);
- rcCallback = pData->u32Flags; /* Report back rc. */
- break;
- default:
- vrc = VERR_INVALID_PARAMETER;
- break;
+ default:
+ vrc = VERR_INVALID_PARAMETER;
+ break;
+ }
}
}
else
@@ -860,29 +953,49 @@ int Guest::notifyCtrlExecStatus(uint32_t u32Function,
{
AssertMsg(!errMsg.isEmpty(), ("Error message must not be empty!\n"));
- /* Notify all callbacks which are still waiting on something
- * which is related to the current PID. */
- if (pData->u32PID)
+ if (uContextID)
{
- int rc2 = callbackNotifyAllForPID(pData->u32PID, rcCallback, errMsg.c_str());
+ /* Notify all callbacks which are still waiting on something
+ * which is related to the current PID. */
+ if (pData->u32PID)
+ {
+ int rc2 = callbackNotifyAllForPID(pData->u32PID, rcCallback, errMsg.c_str());
+ if (RT_FAILURE(rc2))
+ {
+ LogFlowFunc(("Failed to notify other callbacks for PID=%u\n",
+ pData->u32PID));
+ if (RT_SUCCESS(vrc))
+ vrc = rc2;
+ }
+ }
+
+ /* Let the caller know what went wrong ... */
+ int rc2 = callbackNotifyEx(uContextID, rcCallback, errMsg.c_str());
if (RT_FAILURE(rc2))
{
- LogFlowFunc(("Failed to notify other callbacks for PID=%u\n",
- pData->u32PID));
+ LogFlowFunc(("Failed to notify callback CID=%u for PID=%u\n",
+ uContextID, pData->u32PID));
if (RT_SUCCESS(vrc))
vrc = rc2;
}
}
-
- /* Let the caller know what went wrong ... */
- int rc2 = callbackNotifyEx(uContextID, rcCallback, errMsg.c_str());
- if (RT_FAILURE(rc2))
+ else
{
- LogFlowFunc(("Failed to notify callback CID=%u for PID=%u\n",
- uContextID, pData->u32PID));
- if (RT_SUCCESS(vrc))
- vrc = rc2;
+ /* Since we don't know which context exactly failed all we can do is to shutdown
+ * all contexts ... */
+ errMsg = Utf8StrFmt(Guest::tr("Client reported critical error %Rrc -- shutting down"),
+ pData->u32Flags);
+
+ /* Cancel all callbacks. */
+ CallbackMapIter it;
+ for (it = mCallbackMap.begin(); it != mCallbackMap.end(); it++)
+ {
+ int rc2 = callbackNotifyEx(it->first, VERR_CANCELLED,
+ errMsg.c_str());
+ AssertRC(rc2);
+ }
}
+
LogFlowFunc(("Process (CID=%u, status=%u) reported: %s\n",
uContextID, pData->u32Status, errMsg.c_str()));
}
@@ -1000,38 +1113,53 @@ int Guest::notifyCtrlClientDisconnected(uint32_t u32Funct
Guest::tr("Client disconnected"));
}
+uint32_t Guest::processGetGuestPID(uint32_t uHostPID)
+{
+ AssertReturn(uHostPID, VERR_INVALID_PARAMETER);
+
+ AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
+
+ GuestProcessMapIter it = mGuestProcessMap.find(uHostPID);
+ if (it == mGuestProcessMap.end())
+ return 0;
+
+ return it->second.mGuestPID;
+}
+
/**
* Gets guest process information. Removes the process from the map
* after the process was marked as exited/terminated.
*
* @return IPRT status code.
- * @param u32PID PID of process to get status for.
+ * @param uHostPID Host PID of guest process to get status for.
* @param pProcess Where to store the process information. Optional.
* @param fRemove Flag indicating whether to remove the
* process from the map when process marked a
* exited/terminated.
*/
-int Guest::processGetStatus(uint32_t u32PID, PVBOXGUESTCTRL_PROCESS pProcess,
+int Guest::processGetStatus(uint32_t uHostPID, PVBOXGUESTCTRL_PROCESS pProcess,
bool fRemove)
{
- AssertReturn(u32PID, VERR_INVALID_PARAMETER);
+ AssertReturn(uHostPID, VERR_INVALID_PARAMETER);
AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
- GuestProcessMapIter it = mGuestProcessMap.find(u32PID);
+ GuestProcessMapIter it = mGuestProcessMap.find(uHostPID);
if (it != mGuestProcessMap.end())
{
if (pProcess)
{
+ pProcess->mGuestPID = it->second.mGuestPID;
pProcess->mStatus = it->second.mStatus;
pProcess->mExitCode = it->second.mExitCode;
pProcess->mFlags = it->second.mFlags;
}
- /* If the is marked as stopped/terminated
- * remove it from the map. */
+ /* Only remove processes from our map when they signalled their final
+ * status. */
if ( fRemove
- && it->second.mStatus != ExecuteProcessStatus_Started)
+ && ( it->second.mStatus != ExecuteProcessStatus_Undefined
+ && it->second.mStatus != ExecuteProcessStatus_Started))
{
mGuestProcessMap.erase(it);
}
@@ -1042,34 +1170,51 @@ int Guest::processGetStatus(uint32_t u32PID, PVBOXGUESTCTRL_PROCESS pProcess,
return VERR_NOT_FOUND;
}
-int Guest::processSetStatus(uint32_t u32PID, ExecuteProcessStatus_T enmStatus, uint32_t uExitCode, uint32_t uFlags)
+/**
+ * Sets the current status of a guest process.
+ *
+ * @return IPRT status code.
+ * @param uHostPID Host PID of guest process to set status (and guest PID) for.
+ * @param uGuestPID Guest PID to assign to the host PID.
+ * @param enmStatus Current status to set.
+ * @param uExitCode Exit code (if any).
+ * @param uFlags Additional flags.
+ */
+int Guest::processSetStatus(uint32_t uHostPID, uint32_t uGuestPID,
+ ExecuteProcessStatus_T enmStatus, uint32_t uExitCode, uint32_t uFlags)
{
- AssertReturn(u32PID, VERR_INVALID_PARAMETER);
+ AssertReturn(uHostPID, VERR_INVALID_PARAMETER);
+ /* Assigning a guest PID is optional. */
AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
- GuestProcessMapIter it = mGuestProcessMap.find(u32PID);
+ GuestProcessMapIter it = mGuestProcessMap.find(uHostPID);
if (it != mGuestProcessMap.end())
{
- it->second.mStatus = enmStatus;
+ it->second.mGuestPID = uGuestPID;
+ it->second.mStatus = enmStatus;
it->second.mExitCode = uExitCode;
- it->second.mFlags = uFlags;
+ it->second.mFlags = uFlags;
}
else
{
VBOXGUESTCTRL_PROCESS process;
- process.mStatus = enmStatus;
+ /* uGuestPID is optional -- the caller could call this function
+ * before the guest process actually was started and a (valid) guest PID
+ * was returned. */
+ process.mGuestPID = uGuestPID;
+ process.mStatus = enmStatus;
process.mExitCode = uExitCode;
- process.mFlags = uFlags;
+ process.mFlags = uFlags;
- mGuestProcessMap[u32PID] = process;
+ mGuestProcessMap[uHostPID] = process;
}
return VINF_SUCCESS;
}
-HRESULT Guest::handleErrorCompletion(int rc)
+HRESULT Guest::setErrorCompletion(int rc)
{
HRESULT hRC;
if (rc == VERR_NOT_FOUND)
@@ -1087,7 +1232,51 @@ HRESULT Guest::handleErrorCompletion(int rc)
return hRC;
}
-HRESULT Guest::handleErrorHGCM(int rc)
+HRESULT Guest::setErrorFromProgress(ComPtr<IProgress> pProgress)
+{
+ BOOL fCompleted;
+ HRESULT rc = pProgress->COMGETTER(Completed)(&fCompleted);
+ ComAssertComRC(rc);
+
+ LONG rcProc = S_OK;
+ Utf8Str strError;
+
+ if (!fCompleted)
+ {
+ BOOL fCanceled;
+ rc = pProgress->COMGETTER(Canceled)(&fCanceled);
+ ComAssertComRC(rc);
+
+ strError = fCanceled ? Utf8StrFmt(Guest::tr("Process execution was canceled"))
+ : Utf8StrFmt(Guest::tr("Process neither completed nor canceled; this shouldn't happen"));
+ }
+ else
+ {
+ rc = pProgress->COMGETTER(ResultCode)(&rcProc);
+ ComAssertComRC(rc);
+
+ if (FAILED(rcProc))
+ {
+ ProgressErrorInfo info(pProgress);
+ strError = info.getText();
+ }
+ }
+
+ if (FAILED(rcProc))
+ {
+ AssertMsg(!strError.isEmpty(), ("Error message must not be empty!\n"));
+ return setErrorInternal(rcProc,
+ this->getClassIID(),
+ this->getComponentName(),
+ strError,
+ false /* aWarning */,
+ false /* aLogIt */);
+ }
+
+ return S_OK;
+}
+
+HRESULT Guest::setErrorHGCM(int rc)
{
HRESULT hRC;
if (rc == VERR_INVALID_VM_HANDLE)
@@ -1157,160 +1346,95 @@ HRESULT Guest::executeAndWaitForTool(IN_BSTR aTool, IN_BSTR aDescription,
GuestCtrlStreamObjects *pObjStdOut, GuestCtrlStreamObjects *pObjStdErr,
IProgress **aProgress, ULONG *aPID)
{
- ComPtr<IProgress> progressTool;
+ ComPtr<IProgress> pProgress;
ULONG uPID;
ULONG uFlags = ExecuteProcessFlag_Hidden;
if (uFlagsToAdd)
uFlags |= uFlagsToAdd;
- bool fWaitForOutput = false;
+ bool fParseOutput = false;
if ( ( (uFlags & ExecuteProcessFlag_WaitForStdOut)
&& pObjStdOut)
|| ( (uFlags & ExecuteProcessFlag_WaitForStdErr)
&& pObjStdErr))
{
- fWaitForOutput = true;
+ fParseOutput = true;
}
- HRESULT rc = ExecuteProcess(aTool,
+ HRESULT hr = ExecuteProcess(aTool,
uFlags,
ComSafeArrayInArg(aArguments),
ComSafeArrayInArg(aEnvironment),
aUsername, aPassword,
- 0 /* No timeout. */,
- &uPID, progressTool.asOutParam());
- if ( SUCCEEDED(rc)
- && fWaitForOutput)
- {
- BOOL fCompleted;
- while ( SUCCEEDED(progressTool->COMGETTER(Completed)(&fCompleted))
- && !fCompleted)
+ 0 /* No timeout */,
+ &uPID, pProgress.asOutParam());
+ if (SUCCEEDED(hr))
+ {
+ /* Wait for tool being started. */
+ hr = pProgress->WaitForOperationCompletion( 0 /* Stage, starting the process */,
+ -1 /* No timeout */);
+ }
+
+ if ( SUCCEEDED(hr)
+ && !(uFlags & ExecuteProcessFlag_WaitForProcessStartOnly))
+ {
+ if (!fParseOutput)
{
- BOOL fCanceled;
- rc = progressTool->COMGETTER(Canceled)(&fCanceled);
- AssertComRC(rc);
- if (fCanceled)
+ if ( !(uFlags & ExecuteProcessFlag_WaitForStdOut)
+ && !(uFlags & ExecuteProcessFlag_WaitForStdErr))
{
- rc = setErrorNoLog(VBOX_E_IPRT_ERROR,
- tr("%s was cancelled"), Utf8Str(aDescription).c_str());
- break;
+ hr = executeWaitForExit(uPID, pProgress, 0 /* No timeout */);
}
-
- if ( (uFlags & ExecuteProcessFlag_WaitForStdOut)
- && pObjStdOut)
+ }
+ else
+ {
+ BOOL fCompleted;
+ while ( SUCCEEDED(pProgress->COMGETTER(Completed)(&fCompleted))
+ && !fCompleted)
{
- rc = executeStreamParse(uPID, ProcessOutputFlag_None /* StdOut */, *pObjStdOut);
- }
+ BOOL fCanceled;
+ hr = pProgress->COMGETTER(Canceled)(&fCanceled);
+ AssertComRC(hr);
+ if (fCanceled)
+ {
+ hr = setErrorNoLog(VBOX_E_IPRT_ERROR,
+ tr("%s was cancelled"), Utf8Str(aDescription).c_str());
+ break;
+ }
- if ( (uFlags & ExecuteProcessFlag_WaitForStdErr)
- && pObjStdErr)
- {
- rc = executeStreamParse(uPID, ProcessOutputFlag_StdErr, *pObjStdErr);
- }
+ if ( (uFlags & ExecuteProcessFlag_WaitForStdOut)
+ && pObjStdOut)
+ {
+ hr = executeStreamParse(uPID, ProcessOutputFlag_None /* StdOut */, *pObjStdOut);
+ }
- if (FAILED(rc))
- break;
+ if ( (uFlags & ExecuteProcessFlag_WaitForStdErr)
+ && pObjStdErr)
+ {
+ hr = executeStreamParse(uPID, ProcessOutputFlag_StdErr, *pObjStdErr);
+ }
+
+ if (FAILED(hr))
+ break;
+ }
}
}
- if (SUCCEEDED(rc))
+ if (SUCCEEDED(hr))
{
if (aProgress)
{
/* Return the progress to the caller. */
- progressTool.queryInterfaceTo(aProgress);
+ pProgress.queryInterfaceTo(aProgress);
}
+ else if (!pProgress.isNull())
+ pProgress.setNull();
if (aPID)
*aPID = uPID;
}
- return rc;
-}
-
-HRESULT Guest::executeProcessResult(const char *pszCommand, const char *pszUser, ULONG ulTimeout,
- PCALLBACKDATAEXECSTATUS pExecStatus, ULONG *puPID)
-{
- AssertPtrReturn(pExecStatus, E_INVALIDARG);
- AssertPtrReturn(puPID, E_INVALIDARG);
-
- HRESULT rc = S_OK;
-
- /* Did we get some status? */
- switch (pExecStatus->u32Status)
- {
- case PROC_STS_STARTED:
- /* Process is (still) running; get PID. */
- *puPID = pExecStatus->u32PID;
- break;
-
- /* In any other case the process either already
- * terminated or something else went wrong, so no PID ... */
- case PROC_STS_TEN: /* Terminated normally. */
- case PROC_STS_TEA: /* Terminated abnormally. */
- case PROC_STS_TES: /* Terminated through signal. */
- case PROC_STS_TOK:
- case PROC_STS_TOA:
- case PROC_STS_DWN:
- /*
- * Process (already) ended, but we want to get the
- * PID anyway to retrieve the output in a later call.
- */
- *puPID = pExecStatus->u32PID;
- break;
-
- case PROC_STS_ERROR:
- {
- int vrc = pExecStatus->u32Flags; /* u32Flags member contains IPRT error code. */
- if (vrc == VERR_FILE_NOT_FOUND) /* This is the most likely error. */
- rc = setErrorNoLog(VBOX_E_IPRT_ERROR,
- tr("The file '%s' was not found on guest"), pszCommand);
- else if (vrc == VERR_PATH_NOT_FOUND)
- rc = setErrorNoLog(VBOX_E_IPRT_ERROR,
- tr("The path to file '%s' was not found on guest"), pszCommand);
- else if (vrc == VERR_BAD_EXE_FORMAT)
- rc = setErrorNoLog(VBOX_E_IPRT_ERROR,
- tr("The file '%s' is not an executable format on guest"), pszCommand);
- else if (vrc == VERR_AUTHENTICATION_FAILURE)
- rc = setErrorNoLog(VBOX_E_IPRT_ERROR,
- tr("The specified user '%s' was not able to logon on guest"), pszUser);
- else if (vrc == VERR_TIMEOUT)
- rc = setErrorNoLog(VBOX_E_IPRT_ERROR,
- tr("The guest did not respond within time (%ums)"), ulTimeout);
- else if (vrc == VERR_CANCELLED)
- rc = setErrorNoLog(VBOX_E_IPRT_ERROR,
- tr("The execution operation was canceled"));
- else if (vrc == VERR_PERMISSION_DENIED)
- rc = setErrorNoLog(VBOX_E_IPRT_ERROR,
- tr("Invalid user/password credentials"));
- else if (vrc == VERR_MAX_PROCS_REACHED)
- rc = setErrorNoLog(VBOX_E_IPRT_ERROR,
- tr("Concurrent guest process limit is reached"));
- else
- {
- if (pExecStatus && pExecStatus->u32Status == PROC_STS_ERROR)
- rc = setErrorNoLog(VBOX_E_IPRT_ERROR,
- tr("Process could not be started: %Rrc"), pExecStatus->u32Flags);
- else
- rc = setErrorNoLog(E_UNEXPECTED,
- tr("The service call failed with error %Rrc"), vrc);
- }
- }
- break;
-
- case PROC_STS_UNDEFINED: /* . */
- rc = setErrorNoLog(VBOX_E_IPRT_ERROR,
- tr("The operation did not complete within time"));
- break;
-
- default:
- AssertReleaseMsgFailed(("Process (PID %u) reported back an undefined state!\n",
- pExecStatus->u32PID));
- rc = E_UNEXPECTED;
- break;
- }
-
- return rc;
+ return hr;
}
/**
@@ -1344,11 +1468,13 @@ int Guest::executeStreamQueryFsObjInfo(IN_BSTR aObjName,
* @return IPRT status code.
* @param aPID PID of process to get the output from.
* @param aFlags Which stream to drain (stdout or stderr).
- * @param stream Reference to guest process stream to fill.
+ * @param pStream Pointer to guest process stream to fill. If NULL,
+ * data goes to /dev/null.
*/
-int Guest::executeStreamDrain(ULONG aPID, ULONG aFlags, GuestProcessStream &stream)
+int Guest::executeStreamDrain(ULONG aPID, ULONG aFlags, GuestProcessStream *pStream)
{
AssertReturn(aPID, VERR_INVALID_PARAMETER);
+ /* pStream is optional. */
int rc = VINF_SUCCESS;
for (;;)
@@ -1357,11 +1483,12 @@ int Guest::executeStreamDrain(ULONG aPID, ULONG aFlags, GuestProcessStream &stre
HRESULT hr = getProcessOutputInternal(aPID, aFlags,
0 /* Infinite timeout */,
_64K, ComSafeArrayAsOutParam(aData), &rc);
- if (SUCCEEDED(hr))
+ if (RT_SUCCESS(rc))
{
- if (aData.size())
+ if ( pStream
+ && aData.size())
{
- rc = stream.AddData(aData.raw(), aData.size());
+ rc = pStream->AddData(aData.raw(), aData.size());
if (RT_UNLIKELY(RT_FAILURE(rc)))
break;
}
@@ -1376,11 +1503,6 @@ int Guest::executeStreamDrain(ULONG aPID, ULONG aFlags, GuestProcessStream &stre
rc = VINF_SUCCESS;
}
- /* In any case remove the (terminated/broken) process from
- * the process table. */
- int rc2 = processGetStatus(aPID, NULL /* PVBOXGUESTCTRL_PROCESS */,
- true /* Remove from table */);
- AssertRC(rc2);
break;
}
}
@@ -1432,6 +1554,13 @@ int Guest::executeStreamGetNextBlock(ULONG ulPID,
{
LogFlowFunc(("Got %ld bytes of additional data\n", aData.size()));
+ if (RT_FAILURE(rc))
+ {
+ if (rc == VERR_BROKEN_PIPE)
+ rc = VINF_SUCCESS; /* No more data because process already ended. */
+ break;
+ }
+
if (aData.size())
{
rc = stream.AddData(aData.raw(), aData.size());
@@ -1522,7 +1651,7 @@ int Guest::executeStreamParseNextBlock(ULONG ulPID,
HRESULT Guest::executeStreamParse(ULONG ulPID, ULONG ulFlags, GuestCtrlStreamObjects &streamObjects)
{
GuestProcessStream stream;
- int rc = executeStreamDrain(ulPID, ulFlags, stream);
+ int rc = executeStreamDrain(ulPID, ulFlags, &stream);
if (RT_SUCCESS(rc))
{
do
@@ -1560,8 +1689,7 @@ HRESULT Guest::executeStreamParse(ULONG ulPID, ULONG ulFlags, GuestCtrlStreamObj
* @param puRetExitCode Pointer where to store the final process
* exit code. Optional.
*/
-HRESULT Guest::executeWaitForExit(ULONG uPID, ComPtr<IProgress> pProgress, ULONG uTimeoutMS,
- ExecuteProcessStatus_T *pRetStatus, ULONG *puRetExitCode)
+HRESULT Guest::executeWaitForExit(ULONG uPID, ComPtr<IProgress> pProgress, ULONG uTimeoutMS)
{
HRESULT rc = S_OK;
@@ -1581,23 +1709,7 @@ HRESULT Guest::executeWaitForExit(ULONG uPID, ComPtr<IProgress> pProgress, ULONG
: uTimeoutMS);
if (FAILED(rc))
rc = setError(VBOX_E_IPRT_ERROR,
- tr("Waiting for guest process to end failed (%Rhrc)"),
- rc);
- }
-
- if (SUCCEEDED(rc))
- {
- ULONG uExitCode, uRetFlags;
- ExecuteProcessStatus_T enmStatus;
- HRESULT hRC = GetProcessStatus(uPID, &uExitCode, &uRetFlags, &enmStatus);
- if (FAILED(hRC))
- return hRC;
-
- if (pRetStatus)
- *pRetStatus = enmStatus;
- if (puRetExitCode)
- *puRetExitCode = uExitCode;
- /** @todo Flags? */
+ tr("Waiting for guest process to end failed (%Rhrc)"), rc);
}
return rc;
@@ -1696,6 +1808,8 @@ HRESULT Guest::executeProcessInternal(IN_BSTR aCommand, ULONG aFlags,
Utf8Str Utf8UserName(aUsername);
Utf8Str Utf8Password(aPassword);
+ uint32_t uHostPID = 0;
+
if (RT_SUCCESS(vrc))
{
uint32_t uContextID = 0;
@@ -1784,54 +1898,61 @@ HRESULT Guest::executeProcessInternal(IN_BSTR aCommand, ULONG aFlags,
if (RT_SUCCESS(vrc))
{
- LogFlowFunc(("Waiting for HGCM callback (timeout=%RI32ms) ...\n", aTimeoutMS));
+ AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
/*
- * Wait for the HGCM low level callback until the process
- * has been started (or something went wrong). This is necessary to
- * get the PID.
+ * Generate a host-driven PID so that we immediately can return to the caller and
+ * don't need to wait until the guest started the desired process to return the
+ * PID generated by the guest OS.
+ *
+ * The guest PID will later be mapped to the host PID for later lookup.
*/
+ vrc = VERR_NOT_FOUND; /* We did not find a host PID yet ... */
- PCALLBACKDATAEXECSTATUS pExecStatus = NULL;
-
- /*
- * Wait for the first stage (=0) to complete (that is starting the process).
- */
- vrc = callbackWaitForCompletion(uContextID, 0 /* Stage */, aTimeoutMS);
- if (RT_SUCCESS(vrc))
+ uint32_t uTries = 0;
+ for (;;)
{
- vrc = callbackGetUserData(uContextID, NULL /* We know the type. */,
- (void**)&pExecStatus, NULL /* Don't need the size. */);
- if (RT_SUCCESS(vrc))
+ /* Create a new context ID ... */
+ uHostPID = ASMAtomicIncU32(&mNextHostPID);
+ if (uHostPID == UINT32_MAX)
+ ASMAtomicUoWriteU32(&mNextHostPID, 1000);
+ /* Is the host PID already used? Try next PID ... */
+ GuestProcessMapIter it = mGuestProcessMap.find(uHostPID);
+ if (it == mGuestProcessMap.end())
{
- rc = executeProcessResult(Utf8Command.c_str(), Utf8UserName.c_str(), aTimeoutMS,
- pExecStatus, aPID);
- callbackFreeUserData(pExecStatus);
- }
- else
- {
- rc = setErrorNoLog(VBOX_E_IPRT_ERROR,
- tr("Unable to retrieve process execution status data"));
+ /* Host PID not used (anymore), we're done here ... */
+ vrc = VINF_SUCCESS;
+ break;
}
+
+ if (++uTries == UINT32_MAX)
+ break; /* Don't try too hard. */
}
- else
- rc = handleErrorCompletion(vrc);
- /*
- * Do *not* remove the callback yet - we might wait with the IProgress object on something
- * else (like end of process) ...
- */
+ if (RT_SUCCESS(vrc))
+ vrc = processSetStatus(uHostPID, 0 /* No guest PID yet */,
+ ExecuteProcessStatus_Undefined /* Process not started yet */,
+ 0 /* uExitCode */, 0 /* uFlags */);
+
+ if (RT_SUCCESS(vrc))
+ vrc = callbackAssignHostPID(uContextID, uHostPID);
}
else
- rc = handleErrorHGCM(vrc);
+ rc = setErrorHGCM(vrc);
for (unsigned i = 0; i < uNumArgs; i++)
RTMemFree(papszArgv[i]);
RTMemFree(papszArgv);
+
+ if (RT_FAILURE(vrc))
+ rc = VBOX_E_IPRT_ERROR;
}
if (SUCCEEDED(rc))
{
+ /* Return host PID. */
+ *aPID = uHostPID;
+
/* Return the progress to the caller. */
pProgress.queryInterfaceTo(aProgress);
}
@@ -1848,6 +1969,8 @@ HRESULT Guest::executeProcessInternal(IN_BSTR aCommand, ULONG aFlags,
catch (std::bad_alloc &)
{
rc = E_OUTOFMEMORY;
+ if (pRC)
+ *pRC = VERR_NO_MEMORY;
}
return rc;
}
@@ -1884,16 +2007,19 @@ STDMETHODIMP Guest::SetProcessInput(ULONG aPID, ULONG aFlags, ULONG aTimeoutMS,
/* PID exists; check if process is still running. */
if (process.mStatus != ExecuteProcessStatus_Started)
rc = setError(VBOX_E_IPRT_ERROR,
- Guest::tr("Cannot inject input to not running process (PID %u)"), aPID);
+ Guest::tr("Cannot inject input to a not running process (PID %u)"), aPID);
}
else
rc = setError(VBOX_E_IPRT_ERROR,
- Guest::tr("Cannot inject input to non-existent process (PID %u)"), aPID);
+ Guest::tr("Cannot inject input to a non-existent process (PID %u)"), aPID);
if (RT_SUCCESS(vrc))
{
uint32_t uContextID = 0;
+ uint32_t uGuestPID = processGetGuestPID(aPID);
+ Assert(uGuestPID);
+
/*
* Create progress object.
* This progress object, compared to the one in executeProgress() above,
@@ -1922,7 +2048,7 @@ STDMETHODIMP Guest::SetProcessInput(ULONG aPID, ULONG aFlags, ULONG aTimeoutMS,
PCALLBACKDATAEXECINSTATUS pData = (PCALLBACKDATAEXECINSTATUS)callback.pvData;
/* Save PID + output flags for later use. */
- pData->u32PID = aPID;
+ pData->u32PID = uGuestPID;
pData->u32Flags = aFlags;
}
@@ -1937,7 +2063,7 @@ STDMETHODIMP Guest::SetProcessInput(ULONG aPID, ULONG aFlags, ULONG aTimeoutMS,
VBOXHGCMSVCPARM paParms[6];
int i = 0;
paParms[i++].setUInt32(uContextID);
- paParms[i++].setUInt32(aPID);
+ paParms[i++].setUInt32(uGuestPID);
paParms[i++].setUInt32(aFlags);
paParms[i++].setPointer(sfaData.raw(), cbSize);
paParms[i++].setUInt32(cbSize);
@@ -1961,7 +2087,7 @@ STDMETHODIMP Guest::SetProcessInput(ULONG aPID, ULONG aFlags, ULONG aTimeoutMS,
vrc = pVMMDev->hgcmHostCall("VBoxGuestControlSvc", HOST_EXEC_SET_INPUT,
i, paParms);
if (RT_FAILURE(vrc))
- rc = handleErrorHGCM(vrc);
+ rc = setErrorHGCM(vrc);
}
}
}
@@ -2019,7 +2145,7 @@ STDMETHODIMP Guest::SetProcessInput(ULONG aPID, ULONG aFlags, ULONG aTimeoutMS,
}
}
else
- rc = handleErrorCompletion(vrc);
+ rc = setErrorCompletion(vrc);
}
{
@@ -2094,11 +2220,11 @@ HRESULT Guest::getProcessOutputInternal(ULONG aPID, ULONG aFlags, ULONG aTimeout
}
else if (proc.mStatus != ExecuteProcessStatus_Started)
{
- /* If the process is still in the process table but does not run anymore
- * don't remove it but report back an appropriate error. */
+ /* If the process is already or still in the process table but does not run yet
+ * (or anymore) don't remove it but report back an appropriate error. */
vrc = VERR_BROKEN_PIPE;
- rc = setError(VBOX_E_IPRT_ERROR,
- Guest::tr("Guest process (PID %u) does not run anymore"), aPID);
+ /* Not getting any output is fine, so don't report an API error (rc)
+ * and only signal something through internal error code (vrc). */
}
if (RT_SUCCESS(vrc))
@@ -2131,6 +2257,9 @@ HRESULT Guest::getProcessOutputInternal(ULONG aPID, ULONG aFlags, ULONG aTimeout
if (aFlags & ProcessOutputFlag_StdErr)
uHandleID = OUTPUT_HANDLE_ID_STDERR;
+ uint32_t uGuestPID = processGetGuestPID(aPID);
+ Assert(uGuestPID);
+
/** @todo Use a buffer for next iteration if returned data is too big
* for current read.
* aSize is bogus -- will be ignored atm! */
@@ -2141,7 +2270,7 @@ HRESULT Guest::getProcessOutputInternal(ULONG aPID, ULONG aFlags, ULONG aTimeout
PCALLBACKDATAEXECOUT pData = (PCALLBACKDATAEXECOUT)callback.pvData;
/* Save PID + output flags for later use. */
- pData->u32PID = aPID;
+ pData->u32PID = uGuestPID;
pData->u32Flags = aFlags;
}
@@ -2153,7 +2282,7 @@ HRESULT Guest::getProcessOutputInternal(ULONG aPID, ULONG aFlags, ULONG aTimeout
VBOXHGCMSVCPARM paParms[5];
int i = 0;
paParms[i++].setUInt32(uContextID);
- paParms[i++].setUInt32(aPID);
+ paParms[i++].setUInt32(uGuestPID);
paParms[i++].setUInt32(uHandleID);
paParms[i++].setUInt32(0 /* Flags, none set yet */);
@@ -2236,10 +2365,10 @@ HRESULT Guest::getProcessOutputInternal(ULONG aPID, ULONG aFlags, ULONG aTimeout
}
}
else
- rc = handleErrorCompletion(vrc);
+ rc = setErrorCompletion(vrc);
}
else
- rc = handleErrorHGCM(vrc);
+ rc = setErrorHGCM(vrc);
{
AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
@@ -2260,6 +2389,8 @@ HRESULT Guest::getProcessOutputInternal(ULONG aPID, ULONG aFlags, ULONG aTimeout
catch (std::bad_alloc &)
{
rc = E_OUTOFMEMORY;
+ if (pRC)
+ *pRC = VERR_NO_MEMORY;
}
return rc;
#endif
@@ -2412,19 +2543,19 @@ STDMETHODIMP Guest::CopyToGuest(IN_BSTR aSource, IN_BSTR aDest,
HRESULT rc = S_OK;
- ComObjPtr<Progress> progress;
+ ComObjPtr<Progress> pProgress;
try
{
/* Create the progress object. */
- progress.createObject();
+ pProgress.createObject();
- rc = progress->init(static_cast<IGuest*>(this),
- Bstr(tr("Copying file from host to guest")).raw(),
- TRUE /* aCancelable */);
+ rc = pProgress->init(static_cast<IGuest*>(this),
+ Bstr(tr("Copying file from host to guest")).raw(),
+ TRUE /* aCancelable */);
if (FAILED(rc)) throw rc;
/* Initialize our worker task. */
- GuestTask *pTask = new GuestTask(GuestTask::TaskType_CopyFileToGuest, this, progress);
+ GuestTask *pTask = new GuestTask(GuestTask::TaskType_CopyFileToGuest, this, pProgress);
AssertPtr(pTask);
std::auto_ptr<GuestTask> task(pTask);
@@ -2450,7 +2581,7 @@ STDMETHODIMP Guest::CopyToGuest(IN_BSTR aSource, IN_BSTR aDest,
if (SUCCEEDED(rc))
{
/* Return progress to the caller. */
- progress.queryInterfaceTo(aProgress);
+ pProgress.queryInterfaceTo(aProgress);
}
return rc;
#endif /* VBOX_WITH_GUEST_CONTROL */
diff --git a/src/VBox/Main/src-client/GuestCtrlImplDir.cpp b/src/VBox/Main/src-client/GuestCtrlImplDir.cpp
index bb54c052e..ff7814f07 100644
--- a/src/VBox/Main/src-client/GuestCtrlImplDir.cpp
+++ b/src/VBox/Main/src-client/GuestCtrlImplDir.cpp
@@ -98,7 +98,7 @@ HRESULT Guest::directoryCreateInternal(IN_BSTR aDirectory,
}
}
- HRESULT rc = S_OK;
+ HRESULT hr;
try
{
Utf8Str Utf8Directory(aDirectory);
@@ -121,19 +121,26 @@ HRESULT Guest::directoryCreateInternal(IN_BSTR aDirectory,
}
args.push_back(Bstr(Utf8Directory).raw()); /* The directory we want to create. */
- rc = executeAndWaitForTool(Bstr(VBOXSERVICE_TOOL_MKDIR).raw(), Bstr("Creating directory").raw(),
+ ULONG uPID;
+ ComPtr<IProgress> pProgress;
+ hr = executeAndWaitForTool(Bstr(VBOXSERVICE_TOOL_MKDIR).raw(), Bstr("Creating directory").raw(),
ComSafeArrayAsInParam(args),
ComSafeArrayAsInParam(env),
aUsername, aPassword,
ExecuteProcessFlag_None,
NULL, NULL,
- NULL /* Progress */, NULL /* PID */);
+ pProgress.asOutParam(), &uPID);
+ if (SUCCEEDED(hr))
+ {
+ hr = setErrorFromProgress(pProgress);
+ pProgress.setNull();
+ }
}
catch (std::bad_alloc &)
{
- rc = E_OUTOFMEMORY;
+ hr = E_OUTOFMEMORY;
}
- return rc;
+ return hr;
}
/**
@@ -298,7 +305,7 @@ int Guest::directoryGetNextEntry(uint32_t uHandle, GuestProcessStreamBlock &stre
if (it != mGuestDirectoryMap.end())
{
#ifdef DEBUG
- it->second.mStream.Dump("/tmp/stream.txt");
+ it->second.mStream.Dump("c:\\temp\\stream.txt");
#endif
return executeStreamGetNextBlock(it->second.mPID,
ProcessOutputFlag_None /* StdOut */,
@@ -481,6 +488,7 @@ HRESULT Guest::directoryQueryInfoInternal(IN_BSTR aDirectory,
* Execute guest process.
*/
ULONG uPID;
+ ComPtr<IProgress> pProgress;
GuestCtrlStreamObjects stdOut;
hr = executeAndWaitForTool(Bstr(VBOXSERVICE_TOOL_STAT).raw(), Bstr("Querying directory information").raw(),
ComSafeArrayAsInParam(args),
@@ -488,34 +496,40 @@ HRESULT Guest::directoryQueryInfoInternal(IN_BSTR aDirectory,
aUsername, aPassword,
ExecuteProcessFlag_WaitForStdOut,
&stdOut, NULL /* stdErr */,
- NULL /* Progress */, &uPID);
+ pProgress.asOutParam(), &uPID);
if (SUCCEEDED(hr))
{
- int rc = VINF_SUCCESS;
- if (stdOut.size())
+ hr = setErrorFromProgress(pProgress);
+ if (SUCCEEDED(hr))
{
- const char *pszFsType = stdOut[0].GetString("ftype");
- if (!pszFsType) /* Attribute missing? */
- rc = VERR_PATH_NOT_FOUND;
- if ( RT_SUCCESS(rc)
- && strcmp(pszFsType, "d")) /* Directory? */
+ int rc = VINF_SUCCESS;
+ if (stdOut.size())
{
- rc = VERR_PATH_NOT_FOUND;
- /* This is not critical for Main, so don't set hr --
- * we will take care of rc then. */
- }
- if ( RT_SUCCESS(rc)
- && aObjInfo) /* Do we want object details? */
- {
- rc = executeStreamQueryFsObjInfo(aDirectory, stdOut[0],
- aObjInfo, enmAddAttribs);
+ const char *pszFsType = stdOut[0].GetString("ftype");
+ if (!pszFsType) /* Attribute missing? */
+ rc = VERR_PATH_NOT_FOUND;
+ if ( RT_SUCCESS(rc)
+ && strcmp(pszFsType, "d")) /* Directory? */
+ {
+ rc = VERR_PATH_NOT_FOUND;
+ /* This is not critical for Main, so don't set hr --
+ * we will take care of rc then. */
+ }
+ if ( RT_SUCCESS(rc)
+ && aObjInfo) /* Do we want object details? */
+ {
+ rc = executeStreamQueryFsObjInfo(aDirectory, stdOut[0],
+ aObjInfo, enmAddAttribs);
+ }
}
+ else
+ rc = VERR_NO_DATA;
+
+ if (pRC)
+ *pRC = rc;
}
- else
- rc = VERR_NO_DATA;
- if (pRC)
- *pRC = rc;
+ pProgress.setNull();
}
}
catch (std::bad_alloc &)
diff --git a/src/VBox/Main/src-client/GuestCtrlImplFile.cpp b/src/VBox/Main/src-client/GuestCtrlImplFile.cpp
index 824e47cda..2ed1252fd 100644
--- a/src/VBox/Main/src-client/GuestCtrlImplFile.cpp
+++ b/src/VBox/Main/src-client/GuestCtrlImplFile.cpp
@@ -131,44 +131,51 @@ HRESULT Guest::fileQueryInfoInternal(IN_BSTR aFile,
*/
ULONG uPID;
GuestCtrlStreamObjects stdOut;
+ ComPtr<IProgress> pProgress;
hr = executeAndWaitForTool(Bstr(VBOXSERVICE_TOOL_STAT).raw(), Bstr("Querying file information").raw(),
ComSafeArrayAsInParam(args),
ComSafeArrayAsInParam(env),
aUsername, aPassword,
ExecuteProcessFlag_WaitForStdOut,
&stdOut, NULL,
- NULL /* Progress */, &uPID);
+ pProgress.asOutParam(), &uPID);
if (SUCCEEDED(hr))
{
- int rc = VINF_SUCCESS;
- if (stdOut.size())
+ hr = setErrorFromProgress(pProgress);
+ if (SUCCEEDED(hr))
{
+ int rc = VINF_SUCCESS;
+ if (stdOut.size())
+ {
#if 0
- /* Dump the parsed stream contents to Log(). */
- stdOut[0].Dump();
+ /* Dump the parsed stream contents to Log(). */
+ stdOut[0].Dump();
#endif
- const char *pszFsType = stdOut[0].GetString("ftype");
- if (!pszFsType) /* Was an object found at all? */
- rc = VERR_FILE_NOT_FOUND;
- if ( RT_SUCCESS(rc)
- && strcmp(pszFsType, "-")) /* Regular file? */
- {
- rc = VERR_FILE_NOT_FOUND;
- /* This is not critical for Main, so don't set hr --
- * we will take care of rc then. */
- }
- if ( RT_SUCCESS(rc)
- && aObjInfo) /* Do we want object details? */
- {
- rc = executeStreamQueryFsObjInfo(aFile, stdOut[0],
- aObjInfo, enmAddAttribs);
+ const char *pszFsType = stdOut[0].GetString("ftype");
+ if (!pszFsType) /* Was an object found at all? */
+ rc = VERR_FILE_NOT_FOUND;
+ if ( RT_SUCCESS(rc)
+ && strcmp(pszFsType, "-")) /* Regular file? */
+ {
+ rc = VERR_FILE_NOT_FOUND;
+ /* This is not critical for Main, so don't set hr --
+ * we will take care of rc then. */
+ }
+ if ( RT_SUCCESS(rc)
+ && aObjInfo) /* Do we want object details? */
+ {
+ rc = executeStreamQueryFsObjInfo(aFile, stdOut[0],
+ aObjInfo, enmAddAttribs);
+ }
}
+ else
+ rc = VERR_NO_DATA;
+
+ if (pRC)
+ *pRC = rc;
}
- else
- rc = VERR_NO_DATA;
- if (pRC)
- *pRC = rc;
+ pProgress.setNull();
}
}
catch (std::bad_alloc &)
diff --git a/src/VBox/Main/src-client/GuestCtrlImplTasks.cpp b/src/VBox/Main/src-client/GuestCtrlImplTasks.cpp
index c45416f59..a981cd5a6 100644
--- a/src/VBox/Main/src-client/GuestCtrlImplTasks.cpp
+++ b/src/VBox/Main/src-client/GuestCtrlImplTasks.cpp
@@ -120,8 +120,24 @@ int GuestTask::uploadProgress(unsigned uPercent, void *pvUser)
}
/* static */
-HRESULT GuestTask::setProgressErrorInfo(HRESULT hr, ComObjPtr<Progress> pProgress,
- const char *pszText, ...)
+HRESULT GuestTask::setProgressSuccess(ComObjPtr<Progress> pProgress)
+{
+ BOOL fCanceled;
+ BOOL fCompleted;
+ if ( SUCCEEDED(pProgress->COMGETTER(Canceled(&fCanceled)))
+ && !fCanceled
+ && SUCCEEDED(pProgress->COMGETTER(Completed(&fCompleted)))
+ && !fCompleted)
+ {
+ return pProgress->notifyComplete(S_OK);
+ }
+
+ return S_OK;
+}
+
+/* static */
+HRESULT GuestTask::setProgressErrorMsg(HRESULT hr, ComObjPtr<Progress> pProgress,
+ const char *pszText, ...)
{
BOOL fCanceled;
BOOL fCompleted;
@@ -146,11 +162,11 @@ HRESULT GuestTask::setProgressErrorInfo(HRESULT hr, ComObjPtr<Progress> pProgres
}
/* static */
-HRESULT GuestTask::setProgressErrorInfo(HRESULT hr,
- ComObjPtr<Progress> pProgress, ComObjPtr<Guest> pGuest)
+HRESULT GuestTask::setProgressErrorParent(HRESULT hr,
+ ComObjPtr<Progress> pProgress, ComObjPtr<Guest> pGuest)
{
- return setProgressErrorInfo(hr, pProgress,
- Utf8Str(com::ErrorInfo((IGuest*)pGuest, COM_IIDOF(IGuest)).getText()).c_str());
+ return setProgressErrorMsg(hr, pProgress,
+ Utf8Str(com::ErrorInfo((IGuest*)pGuest, COM_IIDOF(IGuest)).getText()).c_str());
}
#ifdef VBOX_WITH_GUEST_CONTROL
@@ -176,9 +192,9 @@ HRESULT Guest::taskCopyFileToGuest(GuestTask *aTask)
/* Does our source file exist? */
if (!RTFileExists(aTask->strSource.c_str()))
{
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Source file \"%s\" does not exist, or is not a file"),
- aTask->strSource.c_str());
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Source file \"%s\" does not exist or is not a file"),
+ aTask->strSource.c_str());
}
else
{
@@ -187,9 +203,9 @@ HRESULT Guest::taskCopyFileToGuest(GuestTask *aTask)
RTFILE_O_OPEN | RTFILE_O_READ | RTFILE_O_DENY_WRITE);
if (RT_FAILURE(vrc))
{
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Could not open source file \"%s\" for reading (%Rrc)"),
- aTask->strSource.c_str(), vrc);
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Could not open source file \"%s\" for reading (%Rrc)"),
+ aTask->strSource.c_str(), vrc);
}
else
{
@@ -197,9 +213,9 @@ HRESULT Guest::taskCopyFileToGuest(GuestTask *aTask)
vrc = RTFileGetSize(fileSource, &cbSize);
if (RT_FAILURE(vrc))
{
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Could not query file size of \"%s\" (%Rrc)"),
- aTask->strSource.c_str(), vrc);
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Could not query file size of \"%s\" (%Rrc)"),
+ aTask->strSource.c_str(), vrc);
}
else
{
@@ -210,7 +226,8 @@ HRESULT Guest::taskCopyFileToGuest(GuestTask *aTask)
* Prepare tool command line.
*/
char szOutput[RTPATH_MAX];
- if (RTStrPrintf(szOutput, sizeof(szOutput), "--output=%s", aTask->strDest.c_str()) <= sizeof(szOutput) - 1)
+ size_t cchOutput = RTStrPrintf(szOutput, sizeof(szOutput), "--output=%s", aTask->strDest.c_str());
+ if (cchOutput && cchOutput <= sizeof(szOutput) - 1)
{
/*
* Normalize path slashes, based on the detected guest.
@@ -230,10 +247,9 @@ HRESULT Guest::taskCopyFileToGuest(GuestTask *aTask)
args.push_back(Bstr(szOutput).raw()); /* We want to write a file ... */
}
else
- {
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Error preparing command line"));
- }
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Destination file for source \"%s\" invalid (%ubytes)"),
+ aTask->strSource.c_str(), cchOutput);
ComPtr<IProgress> execProgress;
ULONG uPID;
@@ -255,20 +271,21 @@ HRESULT Guest::taskCopyFileToGuest(GuestTask *aTask)
NULL, NULL,
execProgress.asOutParam(), &uPID);
if (FAILED(rc))
- rc = GuestTask::setProgressErrorInfo(rc, aTask->pProgress, pGuest);
+ rc = GuestTask::setProgressErrorParent(rc, aTask->pProgress, pGuest);
}
if (SUCCEEDED(rc))
{
BOOL fCompleted = FALSE;
BOOL fCanceled = FALSE;
+
uint64_t cbTransferedTotal = 0;
+ uint64_t cbToRead = cbSize;
SafeArray<BYTE> aInputData(_64K);
while ( SUCCEEDED(execProgress->COMGETTER(Completed(&fCompleted)))
&& !fCompleted)
{
- size_t cbToRead = cbSize;
size_t cbRead = 0;
if (cbSize) /* If we have nothing to read, take a shortcut. */
{
@@ -286,17 +303,17 @@ HRESULT Guest::taskCopyFileToGuest(GuestTask *aTask)
*/
if (RT_FAILURE(vrc))
{
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Could not read from file \"%s\" (%Rrc)"),
- aTask->strSource.c_str(), vrc);
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Could not read from file \"%s\" (%Rrc)"),
+ aTask->strSource.c_str(), vrc);
break;
}
}
else
{
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Seeking file \"%s\" failed; offset = %RU64 (%Rrc)"),
- aTask->strSource.c_str(), cbTransferedTotal, vrc);
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Seeking file \"%s\" failed; offset = %RU64 (%Rrc)"),
+ aTask->strSource.c_str(), cbTransferedTotal, vrc);
break;
}
}
@@ -317,23 +334,24 @@ HRESULT Guest::taskCopyFileToGuest(GuestTask *aTask)
uFlags |= ProcessInputFlag_EndOfFile;
}
- ULONG uBytesWritten = 0;
+ ULONG cbBytesWritten = 0;
rc = pGuest->SetProcessInput(uPID, uFlags,
0 /* Infinite timeout */,
- ComSafeArrayAsInParam(aInputData), &uBytesWritten);
+ ComSafeArrayAsInParam(aInputData), &cbBytesWritten);
if (FAILED(rc))
{
- rc = GuestTask::setProgressErrorInfo(rc, aTask->pProgress, pGuest);
+ rc = GuestTask::setProgressErrorParent(rc, aTask->pProgress, pGuest);
break;
}
Assert(cbRead <= cbToRead);
Assert(cbToRead >= cbRead);
- cbToRead -= cbRead;
+ /* Only subtract bytes reported written by the guest. */
+ cbToRead -= cbBytesWritten;
- cbTransferedTotal += uBytesWritten;
+ cbTransferedTotal += cbBytesWritten;
Assert(cbTransferedTotal <= cbSize);
- aTask->pProgress->SetCurrentOperationProgress(cbTransferedTotal / (cbSize / 100.0));
+ aTask->pProgress->SetCurrentOperationProgress((ULONG)(cbTransferedTotal / (cbSize / 100.0)));
/* End of file reached? */
if (cbToRead == 0)
@@ -347,9 +365,9 @@ HRESULT Guest::taskCopyFileToGuest(GuestTask *aTask)
if ( SUCCEEDED(execProgress->COMGETTER(Canceled(&fCanceled)))
&& fCanceled)
{
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Copy operation of file \"%s\" was canceled on guest side"),
- aTask->strSource.c_str());
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Copy operation of file \"%s\" was canceled on guest side"),
+ aTask->strSource.c_str());
break;
}
}
@@ -360,23 +378,25 @@ HRESULT Guest::taskCopyFileToGuest(GuestTask *aTask)
* If we got here this means the started process either was completed,
* canceled or we simply got all stuff transferred.
*/
- ExecuteProcessStatus_T retStatus;
- ULONG uRetExitCode;
-
- rc = executeWaitForExit(uPID, execProgress, 0 /* No timeout */,
- &retStatus, &uRetExitCode);
+ rc = executeWaitForExit(uPID, execProgress, 0 /* No timeout */);
if (FAILED(rc))
{
- rc = GuestTask::setProgressErrorInfo(rc, aTask->pProgress, pGuest);
+ rc = GuestTask::setProgressErrorParent(rc, aTask->pProgress, pGuest);
}
else
{
- if ( uRetExitCode != 0
- || retStatus != ExecuteProcessStatus_TerminatedNormally)
+ VBOXGUESTCTRL_PROCESS proc;
+ vrc = processGetStatus(uPID, &proc, true /* Remove from PID list. */);
+ if (RT_SUCCESS(vrc))
{
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Guest process reported error %u (status: %u) while copying file \"%s\" to \"%s\""),
- uRetExitCode, retStatus, aTask->strSource.c_str(), aTask->strDest.c_str());
+
+ if ( proc.mExitCode != 0
+ || proc.mStatus != ExecuteProcessStatus_TerminatedNormally)
+ {
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Guest process reported error %u (status: %u) while copying file \"%s\" to \"%s\""),
+ proc.mExitCode, proc.mStatus, aTask->strSource.c_str(), aTask->strDest.c_str());
+ }
}
}
}
@@ -389,10 +409,9 @@ HRESULT Guest::taskCopyFileToGuest(GuestTask *aTask)
* In order to make the progress object to behave nicely, we also have to
* notify the object with a complete event when it's canceled.
*/
- aTask->pProgress->notifyComplete(VBOX_E_IPRT_ERROR,
- COM_IIDOF(IGuest),
- Guest::getStaticComponentName(),
- Guest::tr("Copying file \"%s\" canceled"), aTask->strSource.c_str());
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Copying file \"%s\" to guest canceled"),
+ aTask->strSource.c_str());
}
else
{
@@ -405,19 +424,19 @@ HRESULT Guest::taskCopyFileToGuest(GuestTask *aTask)
{
/* If nothing was transfered but the file size was > 0 then "vbox_cat" wasn't able to write
* to the destination -> access denied. */
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Access denied when copying file \"%s\" to \"%s\""),
- aTask->strSource.c_str(), aTask->strDest.c_str());
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Access denied when copying file \"%s\" to \"%s\""),
+ aTask->strSource.c_str(), aTask->strDest.c_str());
}
else if (cbTransferedTotal < cbSize)
{
/* If we did not copy all let the user know. */
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Copying file \"%s\" failed (%u/%u bytes transfered)"),
- aTask->strSource.c_str(), cbTransferedTotal, cbSize);
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Copying file \"%s\" failed (%u/%u bytes transfered)"),
+ aTask->strSource.c_str(), cbTransferedTotal, cbSize);
}
else /* Yay, all went fine! */
- aTask->pProgress->notifyComplete(S_OK);
+ rc = GuestTask::setProgressSuccess(aTask->pProgress);
}
}
}
@@ -467,12 +486,12 @@ HRESULT Guest::taskCopyFileFromGuest(GuestTask *aTask)
if (SUCCEEDED(rc))
{
if (!fFileExists)
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Source file \"%s\" does not exist, or is not a file"),
- aTask->strSource.c_str());
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Source file \"%s\" does not exist, or is not a file"),
+ aTask->strSource.c_str());
}
else
- rc = GuestTask::setProgressErrorInfo(rc, aTask->pProgress, pGuest);
+ rc = GuestTask::setProgressErrorParent(rc, aTask->pProgress, pGuest);
/* Query file size to make an estimate for our progress object. */
if (SUCCEEDED(rc))
@@ -482,7 +501,7 @@ HRESULT Guest::taskCopyFileFromGuest(GuestTask *aTask)
Bstr(aTask->strUserName).raw(), Bstr(aTask->strPassword).raw(),
&lFileSize);
if (FAILED(rc))
- rc = GuestTask::setProgressErrorInfo(rc, aTask->pProgress, pGuest);
+ rc = GuestTask::setProgressErrorParent(rc, aTask->pProgress, pGuest);
com::SafeArray<IN_BSTR> args;
com::SafeArray<IN_BSTR> env;
@@ -493,7 +512,8 @@ HRESULT Guest::taskCopyFileFromGuest(GuestTask *aTask)
* Prepare tool command line.
*/
char szSource[RTPATH_MAX];
- if (RTStrPrintf(szSource, sizeof(szSource), "%s", aTask->strSource.c_str()) <= sizeof(szSource) - 1)
+ size_t cchSource = RTStrPrintf(szSource, sizeof(szSource), "%s", aTask->strSource.c_str());
+ if (cchSource && cchSource <= sizeof(szSource) - 1)
{
/*
* Normalize path slashes, based on the detected guest.
@@ -513,8 +533,9 @@ HRESULT Guest::taskCopyFileFromGuest(GuestTask *aTask)
args.push_back(Bstr(szSource).raw()); /* Tell our cat tool which file to output. */
}
else
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Error preparing command line"));
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Source file \"%s\" too long (%ubytes)"),
+ aTask->strSource.c_str(), cchSource);
}
ComPtr<IProgress> execProgress;
@@ -539,7 +560,7 @@ HRESULT Guest::taskCopyFileFromGuest(GuestTask *aTask)
NULL, NULL,
execProgress.asOutParam(), &uPID);
if (FAILED(rc))
- rc = GuestTask::setProgressErrorInfo(rc, aTask->pProgress, pGuest);
+ rc = GuestTask::setProgressErrorParent(rc, aTask->pProgress, pGuest);
}
if (SUCCEEDED(rc))
@@ -551,9 +572,9 @@ HRESULT Guest::taskCopyFileFromGuest(GuestTask *aTask)
int vrc = RTFileOpen(&hFileDest, aTask->strDest.c_str(),
RTFILE_O_WRITE | RTFILE_O_OPEN_CREATE | RTFILE_O_DENY_WRITE);
if (RT_FAILURE(vrc))
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Unable to create/open destination file \"%s\", rc=%Rrc"),
- aTask->strDest.c_str(), vrc);
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Unable to create/open destination file \"%s\", rc=%Rrc"),
+ aTask->strDest.c_str(), vrc);
else
{
size_t cbToRead = lFileSize;
@@ -572,9 +593,9 @@ HRESULT Guest::taskCopyFileFromGuest(GuestTask *aTask)
vrc = RTFileWrite(hFileDest, aOutputData.raw(), aOutputData.size(), NULL /* No partial writes */);
if (RT_FAILURE(vrc))
{
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Error writing to file \"%s\" (%u bytes left), rc=%Rrc"),
- aTask->strSource.c_str(), cbToRead, vrc);
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Error writing to file \"%s\" (%u bytes left), rc=%Rrc"),
+ aTask->strSource.c_str(), cbToRead, vrc);
break;
}
@@ -589,7 +610,7 @@ HRESULT Guest::taskCopyFileFromGuest(GuestTask *aTask)
}
else
{
- rc = GuestTask::setProgressErrorInfo(rc, aTask->pProgress, pGuest);
+ rc = GuestTask::setProgressErrorParent(rc, aTask->pProgress, pGuest);
break;
}
}
@@ -606,13 +627,13 @@ HRESULT Guest::taskCopyFileFromGuest(GuestTask *aTask)
* was data read from that file. If this was the very first read we can
* be (almost) sure that this file is not meant to be read by the specified user.
*/
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Unexpected end of file \"%s\" (%u bytes total, %u bytes transferred)"),
- aTask->strSource.c_str(), lFileSize, cbTransfered);
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Unexpected end of file \"%s\" (%u bytes total, %u bytes transferred)"),
+ aTask->strSource.c_str(), lFileSize, cbTransfered);
}
if (SUCCEEDED(rc))
- aTask->pProgress->notifyComplete(S_OK);
+ rc = GuestTask::setProgressSuccess(aTask->pProgress);
}
}
}
@@ -676,12 +697,12 @@ HRESULT Guest::taskUpdateGuestAdditions(GuestTask *aTask)
* no further path processing needs to be done (yet). */
}
else /* Everything else is not supported (yet). */
- throw GuestTask::setProgressErrorInfo(VBOX_E_NOT_SUPPORTED, aTask->pProgress,
+ throw GuestTask::setProgressErrorMsg(VBOX_E_NOT_SUPPORTED, aTask->pProgress,
Guest::tr("Detected guest OS (%s) does not support automatic Guest Additions updating, please update manually"),
osTypeIdUtf8.c_str());
}
else
- throw GuestTask::setProgressErrorInfo(VBOX_E_NOT_SUPPORTED, aTask->pProgress,
+ throw GuestTask::setProgressErrorMsg(VBOX_E_NOT_SUPPORTED, aTask->pProgress,
Guest::tr("Could not detected guest OS type/version, please update manually"));
Assert(!installerImage.isEmpty());
@@ -692,9 +713,9 @@ HRESULT Guest::taskUpdateGuestAdditions(GuestTask *aTask)
int vrc = RTIsoFsOpen(&iso, aTask->strSource.c_str());
if (RT_FAILURE(vrc))
{
- rc = GuestTask::setProgressErrorInfo(VBOX_E_FILE_ERROR, aTask->pProgress,
- Guest::tr("Invalid installation medium detected: \"%s\""),
- aTask->strSource.c_str());
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_FILE_ERROR, aTask->pProgress,
+ Guest::tr("Invalid installation medium detected: \"%s\""),
+ aTask->strSource.c_str());
}
else
{
@@ -707,24 +728,24 @@ HRESULT Guest::taskUpdateGuestAdditions(GuestTask *aTask)
{
vrc = RTFileSeek(iso.file, cbOffset, RTFILE_SEEK_BEGIN, NULL);
if (RT_FAILURE(vrc))
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Could not seek to setup file on installation medium \"%s\" (%Rrc)"),
- aTask->strSource.c_str(), vrc);
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Could not seek to setup file on installation medium \"%s\" (%Rrc)"),
+ aTask->strSource.c_str(), vrc);
}
else
{
switch (vrc)
{
case VERR_FILE_NOT_FOUND:
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Setup file was not found on installation medium \"%s\""),
- aTask->strSource.c_str());
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Setup file was not found on installation medium \"%s\""),
+ aTask->strSource.c_str());
break;
default:
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("An unknown error (%Rrc) occured while retrieving information of setup file on installation medium \"%s\""),
- vrc, aTask->strSource.c_str());
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("An unknown error (%Rrc) occured while retrieving information of setup file on installation medium \"%s\""),
+ vrc, aTask->strSource.c_str());
break;
}
}
@@ -777,28 +798,28 @@ HRESULT Guest::taskUpdateGuestAdditions(GuestTask *aTask)
* support the guest execution feature in this version). */
case VERR_NOT_FOUND:
LogRel(("Guest Additions seem not to be installed yet\n"));
- rc = GuestTask::setProgressErrorInfo(VBOX_E_NOT_SUPPORTED, aTask->pProgress,
- Guest::tr("Guest Additions seem not to be installed or are not ready to update yet"));
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_NOT_SUPPORTED, aTask->pProgress,
+ Guest::tr("Guest Additions seem not to be installed or are not ready to update yet"));
break;
/* Getting back a VERR_INVALID_PARAMETER indicates that the installed Guest Additions are supporting the guest
* execution but not the built-in "vbox_cat" tool of VBoxService (< 4.0). */
case VERR_INVALID_PARAMETER:
LogRel(("Guest Additions are installed but don't supported automatic updating\n"));
- rc = GuestTask::setProgressErrorInfo(VBOX_E_NOT_SUPPORTED, aTask->pProgress,
- Guest::tr("Installed Guest Additions do not support automatic updating"));
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_NOT_SUPPORTED, aTask->pProgress,
+ Guest::tr("Installed Guest Additions do not support automatic updating"));
break;
case VERR_TIMEOUT:
LogRel(("Guest was unable to start copying the Guest Additions setup within time\n"));
- rc = GuestTask::setProgressErrorInfo(E_FAIL, aTask->pProgress,
- Guest::tr("Guest was unable to start copying the Guest Additions setup within time"));
+ rc = GuestTask::setProgressErrorMsg(E_FAIL, aTask->pProgress,
+ Guest::tr("Guest was unable to start copying the Guest Additions setup within time"));
break;
default:
- rc = GuestTask::setProgressErrorInfo(E_FAIL, aTask->pProgress,
- Guest::tr("Error copying Guest Additions setup file to guest path \"%s\" (%Rrc)"),
- strInstallerPath.c_str(), vrc);
+ rc = GuestTask::setProgressErrorMsg(E_FAIL, aTask->pProgress,
+ Guest::tr("Error copying Guest Additions setup file to guest path \"%s\" (%Rrc)"),
+ strInstallerPath.c_str(), vrc);
break;
}
}
@@ -851,7 +872,7 @@ HRESULT Guest::taskUpdateGuestAdditions(GuestTask *aTask)
ComSafeArrayAsInParam(aInputData), &uBytesWritten);
if (FAILED(rc))
{
- rc = GuestTask::setProgressErrorInfo(rc, aTask->pProgress, pGuest);
+ rc = GuestTask::setProgressErrorParent(rc, aTask->pProgress, pGuest);
break;
}
@@ -867,9 +888,9 @@ HRESULT Guest::taskUpdateGuestAdditions(GuestTask *aTask)
}
else if (RT_FAILURE(vrc))
{
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Error while reading setup file \"%s\" (To read: %u, Size: %u) from installation medium (%Rrc)"),
- installerImage.c_str(), cbToRead, cbLength, vrc);
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Error while reading setup file \"%s\" (To read: %u, Size: %u) from installation medium (%Rrc)"),
+ installerImage.c_str(), cbToRead, cbLength, vrc);
}
}
@@ -940,7 +961,10 @@ HRESULT Guest::taskUpdateGuestAdditions(GuestTask *aTask)
/* If the caller does not want to wait for out guest update process to end,
* complete the progress object now so that the caller can do other work. */
if (aTask->uFlags & AdditionsUpdateFlag_WaitForUpdateStartOnly)
- aTask->pProgress->notifyComplete(S_OK);
+ {
+ rc = GuestTask::setProgressSuccess(aTask->pProgress);
+ AssertComRC(rc);
+ }
else
aTask->pProgress->SetCurrentOperationProgress(70);
@@ -975,24 +999,26 @@ HRESULT Guest::taskUpdateGuestAdditions(GuestTask *aTask)
LogRel(("Guest Additions update successful!\n"));
if ( SUCCEEDED(aTask->pProgress->COMGETTER(Completed(&fCompleted)))
&& !fCompleted)
- aTask->pProgress->notifyComplete(S_OK);
+ {
+ rc = GuestTask::setProgressSuccess(aTask->pProgress);
+ }
}
else
{
LogRel(("Guest Additions update failed (Exit code=%u, Status=%u, Flags=%u)\n",
uRetExitCode, retStatus, uRetFlags));
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Guest Additions update failed with exit code=%u (status=%u, flags=%u)"),
- uRetExitCode, retStatus, uRetFlags);
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Guest Additions update failed with exit code=%u (status=%u, flags=%u)"),
+ uRetExitCode, retStatus, uRetFlags);
}
}
else if ( SUCCEEDED(progressInstaller->COMGETTER(Canceled(&fCanceled)))
&& fCanceled)
{
LogRel(("Guest Additions update was canceled\n"));
- rc = GuestTask::setProgressErrorInfo(VBOX_E_IPRT_ERROR, aTask->pProgress,
- Guest::tr("Guest Additions update was canceled by the guest with exit code=%u (status=%u, flags=%u)"),
- uRetExitCode, retStatus, uRetFlags);
+ rc = GuestTask::setProgressErrorMsg(VBOX_E_IPRT_ERROR, aTask->pProgress,
+ Guest::tr("Guest Additions update was canceled by the guest with exit code=%u (status=%u, flags=%u)"),
+ uRetExitCode, retStatus, uRetFlags);
}
else
{
@@ -1000,10 +1026,10 @@ HRESULT Guest::taskUpdateGuestAdditions(GuestTask *aTask)
}
}
else
- rc = GuestTask::setProgressErrorInfo(rc, aTask->pProgress, pGuest);
+ rc = GuestTask::setProgressErrorParent(rc, aTask->pProgress, pGuest);
}
else
- rc = GuestTask::setProgressErrorInfo(rc, aTask->pProgress, pGuest);
+ rc = GuestTask::setProgressErrorParent(rc, aTask->pProgress, pGuest);
}
}
}
diff --git a/src/VBox/Main/src-client/GuestImpl.cpp b/src/VBox/Main/src-client/GuestImpl.cpp
index 51bdc750d..72cd9c4a0 100644
--- a/src/VBox/Main/src-client/GuestImpl.cpp
+++ b/src/VBox/Main/src-client/GuestImpl.cpp
@@ -107,6 +107,8 @@ HRESULT Guest::init(Console *aParent)
#ifdef VBOX_WITH_GUEST_CONTROL
/* Init the context ID counter at 1000. */
mNextContextID = 1000;
+ /* Init the host PID counter. */
+ mNextHostPID = 0;
#endif
return S_OK;
@@ -198,8 +200,8 @@ void Guest::updateStats(uint64_t iTick)
* and released the lock.
*/
uFreeTotal = 0;
- uAllocTotal = 0;
- uBalloonedTotal = 0;
+ uAllocTotal = 0;
+ uBalloonedTotal = 0;
uSharedTotal = 0;
uTotalMem = 0;
uPrivateMem = 0;
@@ -240,7 +242,7 @@ void Guest::updateStats(uint64_t iTick)
mParent->reportGuestStatistics(validStats,
aGuestStats[GUESTSTATTYPE_CPUUSER],
- aGuestStats[GUESTSTATTYPE_CPUKERNEL],
+ aGuestStats[GUESTSTATTYPE_CPUKERNEL],
aGuestStats[GUESTSTATTYPE_CPUIDLE],
/* Convert the units for RAM usage stats: page (4K) -> 1KB units */
mCurrentGuestStat[GUESTSTATTYPE_MEMTOTAL] * (_4K/_1K),
diff --git a/src/VBox/Main/src-server/HostImpl.cpp b/src/VBox/Main/src-server/HostImpl.cpp
index ef84d042d..1d40573de 100644
--- a/src/VBox/Main/src-server/HostImpl.cpp
+++ b/src/VBox/Main/src-server/HostImpl.cpp
@@ -1090,6 +1090,7 @@ STDMETHODIMP Host::CreateHostOnlyNetworkInterface(IHostNetworkInterface **aHostN
IProgress **aProgress)
{
CheckComArgOutPointerValid(aHostNetworkInterface);
+ CheckComArgNotNull(*aHostNetworkInterface);
CheckComArgOutPointerValid(aProgress);
AutoCaller autoCaller(this);
diff --git a/src/VBox/Main/src-server/MachineImpl.cpp b/src/VBox/Main/src-server/MachineImpl.cpp
index add33a4ee..8dbcc1119 100644
--- a/src/VBox/Main/src-server/MachineImpl.cpp
+++ b/src/VBox/Main/src-server/MachineImpl.cpp
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2006-2011 Oracle Corporation
+ * Copyright (C) 2006-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -3932,7 +3932,7 @@ STDMETHODIMP Machine::DetachDevice(IN_BSTR aControllerName, LONG aControllerPort
alock.release();
if (SUCCEEDED(rc))
- rc = mParent->saveRegistries(llRegistriesThatNeedSaving);
+ mParent->saveRegistries(llRegistriesThatNeedSaving);
return rc;
}
@@ -4910,8 +4910,7 @@ HRESULT Machine::deleteTaskWorker(DeleteTask &task)
alock.release();
- rc = mParent->saveRegistries(task.llRegistriesThatNeedSaving);
- if (FAILED(rc)) throw rc;
+ mParent->saveRegistries(task.llRegistriesThatNeedSaving);
}
catch (HRESULT aRC) { rc = aRC; }
@@ -9890,7 +9889,7 @@ HRESULT Machine::detachAllMedia(AutoWriteLock &writeLock,
rc = detachDevice(pAttach,
writeLock,
pSnapshot,
- NULL /* pfNeedsSaveSettings */);
+ NULL /* pllRegistriesThatNeedSaving */);
if (FAILED(rc))
return rc;
@@ -10083,9 +10082,6 @@ void Machine::commitMedia(bool aOnline /*= false*/)
* Does nothing if the hard disk attachment data (mMediaData) is not changed (not
* backed up).
*
- * @param pfNeedsSaveSettings Optional pointer to a bool that must have been initialized to false and that will be set to true
- * by this function if the caller should invoke VirtualBox::saveSettings() because the global settings have changed.
- *
* @note Locks this object for writing!
*
* @todo r=dj this needs a pllRegistriesThatNeedSaving as well
@@ -10141,7 +10137,7 @@ void Machine::rollbackMedia()
* based rollback logic. */
// @todo r=dj the below totally fails if this gets called from Machine::rollback(),
// which gets called if Machine::registeredInit() fails...
- deleteImplicitDiffs(NULL /*pfNeedsSaveSettings*/);
+ deleteImplicitDiffs(NULL /* pllRegistriesThatNeedSaving */);
return;
}
diff --git a/src/VBox/Main/src-server/MachineImplCloneVM.cpp b/src/VBox/Main/src-server/MachineImplCloneVM.cpp
index 6734c7079..fccf4cfc3 100644
--- a/src/VBox/Main/src-server/MachineImplCloneVM.cpp
+++ b/src/VBox/Main/src-server/MachineImplCloneVM.cpp
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2011 Oracle Corporation
+ * Copyright (C) 2011-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -1198,7 +1198,7 @@ HRESULT MachineCloneVM::run()
/* register the new harddisk */
{
AutoWriteLock tlock(p->mParent->getMediaTreeLockHandle() COMMA_LOCKVAL_SRC_POS);
- rc = p->mParent->registerHardDisk(pTarget, NULL /* pllRegistriesThatNeedSaving */);
+ rc = p->mParent->registerMedium(pTarget, &pTarget, DeviceType_HardDisk, NULL /* pllRegistriesThatNeedSaving */);
if (FAILED(rc)) throw rc;
}
/* This medium becomes the parent of the next medium in the
@@ -1342,11 +1342,7 @@ HRESULT MachineCloneVM::run()
}
/* Any additional machines need saving? */
- if (!llRegistriesThatNeedSaving.empty())
- {
- rc = p->mParent->saveRegistries(llRegistriesThatNeedSaving);
- if (FAILED(rc)) throw rc;
- }
+ p->mParent->saveRegistries(llRegistriesThatNeedSaving);
}
catch (HRESULT rc2)
{
diff --git a/src/VBox/Main/src-server/MediumImpl.cpp b/src/VBox/Main/src-server/MediumImpl.cpp
index f979e428b..4cf978810 100644
--- a/src/VBox/Main/src-server/MediumImpl.cpp
+++ b/src/VBox/Main/src-server/MediumImpl.cpp
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2008-2011 Oracle Corporation
+ * Copyright (C) 2008-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -991,7 +991,9 @@ HRESULT Medium::init(VirtualBox *aVirtualBox,
unconst(m->id).create();
AutoWriteLock treeLock(m->pVirtualBox->getMediaTreeLockHandle() COMMA_LOCKVAL_SRC_POS);
- rc = m->pVirtualBox->registerHardDisk(this, pllRegistriesThatNeedSaving);
+ ComObjPtr<Medium> pMedium;
+ rc = m->pVirtualBox->registerMedium(this, &pMedium, DeviceType_HardDisk, pllRegistriesThatNeedSaving);
+ Assert(this == pMedium);
}
/* Confirm a successful initialization when it's the case */
@@ -1264,7 +1266,7 @@ HRESULT Medium::init(VirtualBox *aVirtualBox,
strMachineFolder);
if (FAILED(rc)) break;
- rc = m->pVirtualBox->registerHardDisk(pHD, NULL /* pllRegistriesThatNeedSaving */ );
+ rc = m->pVirtualBox->registerMedium(pHD, &pHD, DeviceType_HardDisk, NULL /* pllRegistriesThatNeedSaving */ );
if (FAILED(rc)) break;
}
@@ -1774,9 +1776,9 @@ STDMETHODIMP Medium::COMSETTER(Type)(MediumType_T aType)
GuidList llRegistriesThatNeedSaving;
addToRegistryIDList(llRegistriesThatNeedSaving);
mlock.release();
- HRESULT rc = m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
+ m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
- return rc;
+ return S_OK;
}
STDMETHODIMP Medium::COMGETTER(AllowedTypes)(ComSafeArrayOut(MediumType_T, aAllowedTypes))
@@ -1906,8 +1908,6 @@ STDMETHODIMP Medium::COMSETTER(AutoReset)(BOOL aAutoReset)
tr("Medium '%s' is not differencing"),
m->strLocationFull.c_str());
- HRESULT rc = S_OK;
-
if (m->autoReset != !!aAutoReset)
{
m->autoReset = !!aAutoReset;
@@ -1916,10 +1916,10 @@ STDMETHODIMP Medium::COMSETTER(AutoReset)(BOOL aAutoReset)
GuidList llRegistriesThatNeedSaving;
addToRegistryIDList(llRegistriesThatNeedSaving);
mlock.release();
- rc = m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
+ m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
}
- return rc;
+ return S_OK;
}
STDMETHODIMP Medium::COMGETTER(LastAccessError)(BSTR *aLastAccessError)
@@ -2299,7 +2299,7 @@ STDMETHODIMP Medium::Close()
GuidList llRegistriesThatNeedSaving;
MultiResult mrc = close(&llRegistriesThatNeedSaving, autoCaller);
/* Must save the registries, since an entry was most likely removed. */
- mrc = pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
+ pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
return mrc;
}
@@ -2354,9 +2354,9 @@ STDMETHODIMP Medium::SetProperty(IN_BSTR aName, IN_BSTR aValue)
GuidList llRegistriesThatNeedSaving;
addToRegistryIDList(llRegistriesThatNeedSaving);
mlock.release();
- HRESULT rc = m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
+ m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
- return rc;
+ return S_OK;
}
STDMETHODIMP Medium::GetProperties(IN_BSTR aNames,
@@ -2432,9 +2432,9 @@ STDMETHODIMP Medium::SetProperties(ComSafeArrayIn(IN_BSTR, aNames),
GuidList llRegistriesThatNeedSaving;
addToRegistryIDList(llRegistriesThatNeedSaving);
mlock.release();
- HRESULT rc = m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
+ m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
- return rc;
+ return S_OK;
}
STDMETHODIMP Medium::CreateBaseStorage(LONG64 aLogicalSize,
@@ -2520,7 +2520,7 @@ STDMETHODIMP Medium::DeleteStorage(IProgress **aProgress)
false /* aWait */,
&llRegistriesThatNeedSaving);
/* Must save the registries in any case, since an entry was removed. */
- mrc = m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
+ m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
if (SUCCEEDED(mrc))
pProgress.queryInterfaceTo(aProgress);
@@ -2592,7 +2592,7 @@ STDMETHODIMP Medium::CreateDiffStorage(IMedium *aTarget,
rc = createDiffStorage(diff, (MediumVariant_T)aVariant, pMediumLockList,
&pProgress, false /* aWait */,
- NULL /* pfNeedsGlobalSaveSettings*/);
+ NULL /* pllRegistriesThatNeedSaving */);
if (FAILED(rc))
delete pMediumLockList;
else
@@ -2627,7 +2627,7 @@ STDMETHODIMP Medium::MergeTo(IMedium *aTarget, IProgress **aProgress)
rc = mergeTo(pTarget, fMergeForward, pParentForTarget, childrenToReparent,
pMediumLockList, &pProgress, false /* aWait */,
- NULL /* pfNeedsGlobalSaveSettings */);
+ NULL /* pllRegistriesThatNeedSaving */);
if (FAILED(rc))
cancelMergeTo(childrenToReparent, pMediumLockList);
else
@@ -4105,8 +4105,7 @@ HRESULT Medium::close(GuidList *pllRegistriesThatNeedSaving,
* completion.
* @param aWait @c true if this method should block instead of creating
* an asynchronous thread.
- * @param pfNeedsGlobalSaveSettings Optional pointer to a bool that must have been initialized to false and that will be set to true
- * by this function if the caller should invoke VirtualBox::saveRegistries() because the global settings have changed.
+ * @param pllRegistriesThatNeedSaving Optional pointer to a list of UUIDs of media registries that need saving.
* This only works in "wait" mode; otherwise saveRegistries gets called automatically by the thread that was created,
* and this parameter is ignored.
*
@@ -4253,7 +4252,7 @@ HRESULT Medium::deleteStorage(ComObjPtr<Progress> *aProgress,
if (SUCCEEDED(rc))
{
if (aWait)
- rc = runNow(pTask, NULL /* pfNeedsGlobalSaveSettings*/);
+ rc = runNow(pTask, NULL /* pllRegistriesThatNeedSaving */);
else
rc = startThread(pTask);
@@ -4728,8 +4727,7 @@ HRESULT Medium::prepareMergeTo(const ComObjPtr<Medium> &pTarget,
* completion.
* @param aWait @c true if this method should block instead of creating
* an asynchronous thread.
- * @param pfNeedsGlobalSaveSettings Optional pointer to a bool that must have been initialized to false and that will be set to true
- * by this function if the caller should invoke VirtualBox::saveRegistries() because the global settings have changed.
+ * @param pllRegistriesThatNeedSaving Optional pointer to a list of UUIDs of media registries that need saving.
* This only works in "wait" mode; otherwise saveRegistries gets called automatically by the thread that was created,
* and this parameter is ignored.
*
@@ -5683,9 +5681,6 @@ HRESULT Medium::canClose()
/**
* Unregisters this medium with mVirtualBox. Called by close() under the medium tree lock.
*
- * This calls either VirtualBox::unregisterImage or VirtualBox::unregisterHardDisk depending
- * on the device type of this medium.
- *
* @param pllRegistriesThatNeedSaving Optional pointer to a list of UUIDs that will receive the registry IDs that need saving.
*
* @note Caller must have locked the media tree lock for writing!
@@ -5693,7 +5688,7 @@ HRESULT Medium::canClose()
HRESULT Medium::unregisterWithVirtualBox(GuidList *pllRegistriesThatNeedSaving)
{
/* Note that we need to de-associate ourselves from the parent to let
- * unregisterHardDisk() properly save the registry */
+ * unregisterMedium() properly save the registry */
/* we modify mParent and access children */
Assert(m->pVirtualBox->getMediaTreeLockHandle().isWriteLockOnCurrentThread());
@@ -5703,24 +5698,7 @@ HRESULT Medium::unregisterWithVirtualBox(GuidList *pllRegistriesThatNeedSaving)
if (m->pParent)
deparent();
- HRESULT rc = E_FAIL;
- switch (m->devType)
- {
- case DeviceType_DVD:
- case DeviceType_Floppy:
- rc = m->pVirtualBox->unregisterImage(this,
- m->devType,
- pllRegistriesThatNeedSaving);
- break;
-
- case DeviceType_HardDisk:
- rc = m->pVirtualBox->unregisterHardDisk(this, pllRegistriesThatNeedSaving);
- break;
-
- default:
- break;
- }
-
+ HRESULT rc = m->pVirtualBox->unregisterMedium(this, pllRegistriesThatNeedSaving);
if (FAILED(rc))
{
if (pParentBackup)
@@ -6400,7 +6378,7 @@ HRESULT Medium::taskCreateBaseHandler(Medium::CreateBaseTask &task)
if (fGenerateUuid)
{
id.create();
- /* VirtualBox::registerHardDisk() will need UUID */
+ /* VirtualBox::registerMedium() will need UUID */
unconst(m->id) = id;
}
@@ -6466,7 +6444,9 @@ HRESULT Medium::taskCreateBaseHandler(Medium::CreateBaseTask &task)
* Created state only on success (leaving an orphan file is
* better than breaking media registry consistency) */
AutoWriteLock treeLock(m->pVirtualBox->getMediaTreeLockHandle() COMMA_LOCKVAL_SRC_POS);
- rc = m->pVirtualBox->registerHardDisk(this, NULL /* pllRegistriesThatNeedSaving */);
+ ComObjPtr<Medium> pMedium;
+ rc = m->pVirtualBox->registerMedium(this, &pMedium, DeviceType_HardDisk, NULL /* pllRegistriesThatNeedSaving */);
+ Assert(this == pMedium);
}
// reenter the lock before changing state
@@ -6498,8 +6478,8 @@ HRESULT Medium::taskCreateBaseHandler(Medium::CreateBaseTask &task)
*
* This task always gets started from Medium::createDiffStorage() and can run
* synchronously or asynchronously depending on the "wait" parameter passed to
- * that function. If we run synchronously, the caller expects the bool
- * *pfNeedsGlobalSaveSettings to be set before returning; otherwise (in asynchronous
+ * that function. If we run synchronously, the caller expects the GuidList
+ * *pllRegistriesThatNeedSaving to be set before returning; otherwise (in asynchronous
* mode), we save the settings ourselves.
*
* @param task
@@ -6529,7 +6509,7 @@ HRESULT Medium::taskCreateDiffHandler(Medium::CreateDiffTask &task)
if (fGenerateUuid)
{
targetId.create();
- /* VirtualBox::registerHardDisk() will need UUID */
+ /* VirtualBox::registerMedium() will need UUID */
unconst(pTarget->m->id) = targetId;
}
@@ -6643,7 +6623,9 @@ HRESULT Medium::taskCreateDiffHandler(Medium::CreateDiffTask &task)
/* register with mVirtualBox as the last step and move to
* Created state only on success (leaving an orphan file is
* better than breaking media registry consistency) */
- mrc = m->pVirtualBox->registerHardDisk(pTarget, &llRegistriesThatNeedSaving);
+ ComObjPtr<Medium> pMedium;
+ mrc = m->pVirtualBox->registerMedium(pTarget, &pMedium, DeviceType_HardDisk, &llRegistriesThatNeedSaving);
+ Assert(pTarget == pMedium);
if (FAILED(mrc))
/* break the parent association on failure to register */
@@ -6679,7 +6661,7 @@ HRESULT Medium::taskCreateDiffHandler(Medium::CreateDiffTask &task)
if (task.isAsync())
{
mediaLock.release();
- mrc = m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
+ m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
}
else
// synchronous mode: report save settings result to caller
@@ -6697,8 +6679,8 @@ HRESULT Medium::taskCreateDiffHandler(Medium::CreateDiffTask &task)
*
* This task always gets started from Medium::mergeTo() and can run
* synchronously or asynchronously depending on the "wait" parameter passed to
- * that function. If we run synchronously, the caller expects the bool
- * *pfNeedsGlobalSaveSettings to be set before returning; otherwise (in asynchronous
+ * that function. If we run synchronously, the caller expects the GuidList
+ * *pllRegistriesThatNeedSaving to be set before returning; otherwise (in asynchronous
* mode), we save the settings ourselves.
*
* @param task
@@ -6862,7 +6844,7 @@ HRESULT Medium::taskMergeHandler(Medium::MergeTask &task)
{
/* first, unregister the target since it may become a base
* medium which needs re-registration */
- rc2 = m->pVirtualBox->unregisterHardDisk(pTarget, NULL /*&fNeedsGlobalSaveSettings*/);
+ rc2 = m->pVirtualBox->unregisterMedium(pTarget, NULL /* pllRegistriesThatNeedSaving */);
AssertComRC(rc2);
/* then, reparent it and disconnect the deleted branch at
@@ -6876,7 +6858,9 @@ HRESULT Medium::taskMergeHandler(Medium::MergeTask &task)
}
/* then, register again */
- rc2 = m->pVirtualBox->registerHardDisk(pTarget, NULL /* pllRegistriesThatNeedSaving */ );
+ ComObjPtr<Medium> pMedium;
+ rc2 = m->pVirtualBox->registerMedium(pTarget, &pMedium, DeviceType_HardDisk, NULL /* pllRegistriesThatNeedSaving */ );
+ Assert(pTarget == pMedium);
AssertComRC(rc2);
}
else
@@ -6929,8 +6913,7 @@ HRESULT Medium::taskMergeHandler(Medium::MergeTask &task)
continue;
}
- rc2 = pMedium->m->pVirtualBox->unregisterHardDisk(pMedium,
- NULL /*pfNeedsGlobalSaveSettings*/);
+ rc2 = pMedium->m->pVirtualBox->unregisterMedium(pMedium, NULL /* pllRegistriesThatNeedSaving */);
AssertComRC(rc2);
/* now, uninitialize the deleted medium (note that
@@ -6970,7 +6953,7 @@ HRESULT Medium::taskMergeHandler(Medium::MergeTask &task)
addToRegistryIDList(llRegistriesThatNeedSaving);
/* collect multiple errors */
eik.restore();
- mrc = m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
+ m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
eik.fetch();
}
else
@@ -7038,7 +7021,7 @@ HRESULT Medium::taskCloneHandler(Medium::CloneTask &task)
if (fGenerateUuid)
{
targetId.create();
- /* VirtualBox::registerHardDisk() will need UUID */
+ /* VirtualBox::registerMedium() will need UUID */
unconst(pTarget->m->id) = targetId;
}
@@ -7225,7 +7208,9 @@ HRESULT Medium::taskCloneHandler(Medium::CloneTask &task)
* Created state only on success (leaving an orphan file is
* better than breaking media registry consistency) */
eik.restore();
- mrc = pParent->m->pVirtualBox->registerHardDisk(pTarget, NULL /* pllRegistriesThatNeedSaving */);
+ ComObjPtr<Medium> pMedium;
+ mrc = pParent->m->pVirtualBox->registerMedium(pTarget, &pMedium, DeviceType_HardDisk, NULL /* pllRegistriesThatNeedSaving */);
+ Assert(pTarget == pMedium);
eik.fetch();
if (FAILED(mrc))
@@ -7236,7 +7221,9 @@ HRESULT Medium::taskCloneHandler(Medium::CloneTask &task)
{
/* just register */
eik.restore();
- mrc = m->pVirtualBox->registerHardDisk(pTarget, NULL /* pllRegistriesThatNeedSaving */);
+ ComObjPtr<Medium> pMedium;
+ mrc = m->pVirtualBox->registerMedium(pTarget, &pMedium, DeviceType_HardDisk, NULL /* pllRegistriesThatNeedSaving */);
+ Assert(pTarget == pMedium);
eik.fetch();
}
}
@@ -7272,7 +7259,7 @@ HRESULT Medium::taskCloneHandler(Medium::CloneTask &task)
addToRegistryIDList(llRegistriesThatNeedSaving);
/* collect multiple errors */
eik.restore();
- mrc = m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
+ m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
eik.fetch();
}
@@ -7851,7 +7838,7 @@ HRESULT Medium::taskImportHandler(Medium::ImportTask &task)
if (fGenerateUuid)
{
targetId.create();
- /* VirtualBox::registerHardDisk() will need UUID */
+ /* VirtualBox::registerMedium() will need UUID */
unconst(m->id) = targetId;
}
@@ -8000,7 +7987,9 @@ HRESULT Medium::taskImportHandler(Medium::ImportTask &task)
* Created state only on success (leaving an orphan file is
* better than breaking media registry consistency) */
eik.restore();
- mrc = pParent->m->pVirtualBox->registerHardDisk(this, NULL /* llRegistriesThatNeedSaving */);
+ ComObjPtr<Medium> pMedium;
+ mrc = pParent->m->pVirtualBox->registerMedium(this, &pMedium, DeviceType_HardDisk, NULL /* llRegistriesThatNeedSaving */);
+ Assert(this == pMedium);
eik.fetch();
if (FAILED(mrc))
@@ -8011,7 +8000,9 @@ HRESULT Medium::taskImportHandler(Medium::ImportTask &task)
{
/* just register */
eik.restore();
- mrc = m->pVirtualBox->registerHardDisk(this, NULL /* pllRegistriesThatNeedSaving */);
+ ComObjPtr<Medium> pMedium;
+ mrc = m->pVirtualBox->registerMedium(this, &pMedium, DeviceType_HardDisk, NULL /* pllRegistriesThatNeedSaving */);
+ Assert(this == pMedium);
eik.fetch();
}
}
@@ -8046,7 +8037,7 @@ HRESULT Medium::taskImportHandler(Medium::ImportTask &task)
addToRegistryIDList(llRegistriesThatNeedSaving);
/* collect multiple errors */
eik.restore();
- mrc = m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
+ m->pVirtualBox->saveRegistries(llRegistriesThatNeedSaving);
eik.fetch();
}
diff --git a/src/VBox/Main/src-server/Performance.cpp b/src/VBox/Main/src-server/Performance.cpp
index 6726e14da..315c46f71 100644
--- a/src/VBox/Main/src-server/Performance.cpp
+++ b/src/VBox/Main/src-server/Performance.cpp
@@ -162,6 +162,9 @@ int CGRQEnable::execute()
void CGRQEnable::debugPrint(void *aObject, const char *aFunction, const char *aText)
{
+ NOREF(aObject);
+ NOREF(aFunction);
+ NOREF(aText);
LogAleksey(("{%p} " LOG_FN_FMT ": CGRQEnable(mask=0x%x) %s\n",
aObject, aFunction, mMask, aText));
}
@@ -174,6 +177,9 @@ int CGRQDisable::execute()
void CGRQDisable::debugPrint(void *aObject, const char *aFunction, const char *aText)
{
+ NOREF(aObject);
+ NOREF(aFunction);
+ NOREF(aText);
LogAleksey(("{%p} " LOG_FN_FMT ": CGRQDisable(mask=0x%x) %s\n",
aObject, aFunction, mMask, aText));
}
@@ -185,6 +191,9 @@ int CGRQAbort::execute()
void CGRQAbort::debugPrint(void *aObject, const char *aFunction, const char *aText)
{
+ NOREF(aObject);
+ NOREF(aFunction);
+ NOREF(aText);
LogAleksey(("{%p} " LOG_FN_FMT ": CGRQAbort %s\n",
aObject, aFunction, aText));
}
@@ -362,6 +371,7 @@ CollectorGuestManager::CollectorGuestManager()
int rc = RTThreadCreate(&mThread, CollectorGuestManager::requestProcessingThread,
this, 0, RTTHREADTYPE_MAIN_WORKER, RTTHREADFLAGS_WAITABLE,
"CGMgr");
+ NOREF(rc);
LogAleksey(("{%p} " LOG_FN_FMT ": RTThreadCreate returned %u (mThread=%p)\n",
this, __PRETTY_FUNCTION__, rc));
}
@@ -479,12 +489,27 @@ int CollectorGuestManager::enqueueRequest(CollectorGuestRequest *aRequest)
* It is very unlikely that we will get high frequency calls to configure
* guest metrics collection, so we rely on this fact to detect blocked
* guests. If the guest has not finished processing the previous request
- * we consider it blocked.
+ * after half a second we consider it blocked.
*/
if (aRequest->getGuest() && aRequest->getGuest() == mGuestBeingCalled)
{
- /* Request execution got stalled for this guest -- report an error */
- return E_FAIL;
+ /*
+ * Before we can declare a guest blocked we need to wait for a while
+ * and then check again as it may never had a chance to process
+ * the previous request. Half a second is an eternity for processes
+ * and is barely noticable by humans.
+ */
+ LogAleksey(("{%p} " LOG_FN_FMT ": Suspecting %s is stalled. Waiting for .5 sec...\n",
+ this, __PRETTY_FUNCTION__,
+ aRequest->getGuest()->getVMName().c_str()));
+ RTThreadSleep(500 /* ms */);
+ if (aRequest->getGuest() == mGuestBeingCalled) {
+ LogAleksey(("{%p} " LOG_FN_FMT ": Request processing stalled for %s\n",
+ this, __PRETTY_FUNCTION__,
+ aRequest->getGuest()->getVMName().c_str()));
+ /* Request execution got stalled for this guest -- report an error */
+ return E_FAIL;
+ }
}
mQueue.push(aRequest);
return S_OK;
@@ -498,7 +523,7 @@ DECLCALLBACK(int) CollectorGuestManager::requestProcessingThread(RTTHREAD /* aTh
HRESULT rc = S_OK;
- LogAleksey(("{%p} " LOG_FN_FMT ": Starting request processing loop...p\n",
+ LogAleksey(("{%p} " LOG_FN_FMT ": Starting request processing loop...\n",
mgr, __PRETTY_FUNCTION__));
while ((pReq = mgr->mQueue.pop()) != NULL)
{
diff --git a/src/VBox/Main/src-server/SnapshotImpl.cpp b/src/VBox/Main/src-server/SnapshotImpl.cpp
index cfea1cfb0..eff889004 100644
--- a/src/VBox/Main/src-server/SnapshotImpl.cpp
+++ b/src/VBox/Main/src-server/SnapshotImpl.cpp
@@ -6,7 +6,7 @@
*/
/*
- * Copyright (C) 2006-2011 Oracle Corporation
+ * Copyright (C) 2006-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -3220,7 +3220,7 @@ STDMETHODIMP SessionMachine::FinishOnlineMergeMedium(IMediumAttachment *aMediumA
{
// first, unregister the target since it may become a base
// hard disk which needs re-registration
- rc = mParent->unregisterHardDisk(pTarget, NULL /*&fNeedsGlobalSaveSettings*/);
+ rc = mParent->unregisterMedium(pTarget, NULL /*&fNeedsGlobalSaveSettings*/);
AssertComRC(rc);
// then, reparent it and disconnect the deleted branch at
@@ -3231,7 +3231,7 @@ STDMETHODIMP SessionMachine::FinishOnlineMergeMedium(IMediumAttachment *aMediumA
pSource->deparent();
// then, register again
- rc = mParent->registerHardDisk(pTarget, NULL /* pllRegistriesThatNeedSaving */);
+ rc = mParent->registerMedium(pTarget, &pTarget, DeviceType_HardDisk, NULL /* pllRegistriesThatNeedSaving */);
AssertComRC(rc);
}
else
@@ -3302,8 +3302,7 @@ STDMETHODIMP SessionMachine::FinishOnlineMergeMedium(IMediumAttachment *aMediumA
}
else
{
- rc = mParent->unregisterHardDisk(pMedium,
- NULL /*pfNeedsGlobalSaveSettings*/);
+ rc = mParent->unregisterMedium(pMedium, NULL /* pllRegistriesThatNeedSaving */);
AssertComRC(rc);
/* now, uninitialize the deleted hard disk (note that
diff --git a/src/VBox/Main/src-server/VirtualBoxImpl.cpp b/src/VBox/Main/src-server/VirtualBoxImpl.cpp
index 8d6cc0eb2..a84300812 100644
--- a/src/VBox/Main/src-server/VirtualBoxImpl.cpp
+++ b/src/VBox/Main/src-server/VirtualBoxImpl.cpp
@@ -627,7 +627,7 @@ HRESULT VirtualBox::initMedia(const Guid &uuidRegistry,
strMachineFolder);
if (FAILED(rc)) return rc;
- rc = registerHardDisk(pHardDisk, NULL /* pllRegistriesThatNeedSaving */);
+ rc = registerMedium(pHardDisk, &pHardDisk, DeviceType_HardDisk, NULL /* pllRegistriesThatNeedSaving */);
if (FAILED(rc)) return rc;
}
@@ -647,9 +647,9 @@ HRESULT VirtualBox::initMedia(const Guid &uuidRegistry,
strMachineFolder);
if (FAILED(rc)) return rc;
- rc = registerImage(pImage,
- DeviceType_DVD,
- NULL /* pllRegistriesThatNeedSaving */);
+ rc = registerMedium(pImage, &pImage,
+ DeviceType_DVD,
+ NULL /* pllRegistriesThatNeedSaving */);
if (FAILED(rc)) return rc;
}
@@ -669,9 +669,9 @@ HRESULT VirtualBox::initMedia(const Guid &uuidRegistry,
strMachineFolder);
if (FAILED(rc)) return rc;
- rc = registerImage(pImage,
- DeviceType_Floppy,
- NULL /* pllRegistriesThatNeedSaving */);
+ rc = registerMedium(pImage, &pImage,
+ DeviceType_Floppy,
+ NULL /* pllRegistriesThatNeedSaving */);
if (FAILED(rc)) return rc;
}
@@ -1616,27 +1616,17 @@ STDMETHODIMP VirtualBox::OpenMedium(IN_BSTR aLocation,
if (pMedium.isNull())
{
pMedium.createObject();
+ treeLock.release();
rc = pMedium->init(this,
aLocation,
(accessMode == AccessMode_ReadWrite) ? Medium::OpenReadWrite : Medium::OpenReadOnly,
- fForceNewUuid,
+ !!fForceNewUuid,
deviceType);
+ treeLock.acquire();
if (SUCCEEDED(rc))
{
- switch (deviceType)
- {
- case DeviceType_HardDisk:
- rc = registerHardDisk(pMedium, NULL /* pllRegistriesThatNeedSaving */);
- break;
-
- case DeviceType_DVD:
- case DeviceType_Floppy:
- rc = registerImage(pMedium,
- deviceType,
- NULL /* pllRegistriesThatNeedSaving */);
- break;
- }
+ rc = registerMedium(pMedium, &pMedium, deviceType, NULL /* pllRegistriesThatNeedSaving */);
treeLock.release();
@@ -3133,25 +3123,25 @@ void VirtualBox::copyPathRelativeToConfig(const Utf8Str &strSource,
* @param aId UUID to check.
* @param aLocation Location to check.
* @param aConflict Where to return parameters of the conflicting medium.
+ * @param ppMedium Medium reference in case this is simply a duplicate.
*
* @note Locks the media tree and media objects for reading.
*/
HRESULT VirtualBox::checkMediaForConflicts(const Guid &aId,
const Utf8Str &aLocation,
Utf8Str &aConflict,
- bool &fIdentical)
+ ComObjPtr<Medium> *ppMedium)
{
- aConflict.setNull();
-
AssertReturn(!aId.isEmpty() && !aLocation.isEmpty(), E_FAIL);
+ AssertReturn(ppMedium, E_INVALIDARG);
+
+ aConflict.setNull();
+ ppMedium->setNull();
AutoReadLock alock(getMediaTreeLockHandle() COMMA_LOCKVAL_SRC_POS);
HRESULT rc = S_OK;
- aConflict.setNull();
- fIdentical = false;
-
ComObjPtr<Medium> pMediumFound;
const char *pcszType = NULL;
@@ -3187,7 +3177,7 @@ HRESULT VirtualBox::checkMediaForConflicts(const Guid &aId,
if ( (RTPathCompare(strLocFound.c_str(), aLocation.c_str()) == 0)
&& (idFound == aId)
)
- fIdentical = true;
+ *ppMedium = pMediumFound;
aConflict = Utf8StrFmt(tr("%s '%s' with UUID {%RTuuid}"),
pcszType,
@@ -3475,26 +3465,52 @@ HRESULT VirtualBox::registerMachine(Machine *aMachine)
}
/**
- * Remembers the given hard disk by storing it in either the global hard disk registry
- * or a machine one.
+ * Remembers the given medium object by storing it in either the global
+ * medium registry or a machine one.
*
- * @note Caller must hold the media tree lock for writing; in addition, this locks @a aHardDisk for reading
+ * @note Caller must hold the media tree lock for writing; in addition, this locks @a pMedium for reading
*
- * @param aHardDisk Hard disk object to remember.
- * @param uuidMachineRegistry UUID of machine whose registry should be used, or a NULL UUID for the global registry.
+ * @param pMedium Medium object to remember.
+ * @param ppMedium Actually stored medium object. Can be different if due
+ * to an unavoidable race there was a duplicate Medium object
+ * created.
+ * @param argType Either DeviceType_HardDisk, DeviceType_DVD or DeviceType_Floppy.
* @param pllRegistriesThatNeedSaving Optional pointer to a list of UUIDs of media registries that need saving.
* @return
*/
-HRESULT VirtualBox::registerHardDisk(Medium *pMedium,
- GuidList *pllRegistriesThatNeedSaving)
+HRESULT VirtualBox::registerMedium(const ComObjPtr<Medium> &pMedium,
+ ComObjPtr<Medium> *ppMedium,
+ DeviceType_T argType,
+ GuidList *pllRegistriesThatNeedSaving)
{
AssertReturn(pMedium != NULL, E_INVALIDARG);
+ AssertReturn(ppMedium != NULL, E_INVALIDARG);
AutoCaller autoCaller(this);
AssertComRCReturn(autoCaller.rc(), autoCaller.rc());
- AutoCaller hardDiskCaller(pMedium);
- AssertComRCReturn(hardDiskCaller.rc(), hardDiskCaller.rc());
+ AutoCaller mediumCaller(pMedium);
+ AssertComRCReturn(mediumCaller.rc(), mediumCaller.rc());
+
+ const char *pszDevType = NULL;
+ ObjectsList<Medium> *pall = NULL;
+ switch (argType)
+ {
+ case DeviceType_HardDisk:
+ pall = &m->allHardDisks;
+ pszDevType = tr("hard disk");
+ break;
+ case DeviceType_DVD:
+ pszDevType = tr("DVD image");
+ pall = &m->allDVDImages;
+ break;
+ case DeviceType_Floppy:
+ pszDevType = tr("floppy image");
+ pall = &m->allFloppyImages;
+ break;
+ default:
+ AssertMsgFailedReturn(("invalid device type %d", argType), E_INVALIDARG);
+ }
// caller must hold the media tree write lock
Assert(getMediaTreeLockHandle().isWriteLockOnCurrentThread());
@@ -3503,7 +3519,7 @@ HRESULT VirtualBox::registerHardDisk(Medium *pMedium,
Utf8Str strLocationFull;
ComObjPtr<Medium> pParent;
{
- AutoReadLock hardDiskLock(pMedium COMMA_LOCKVAL_SRC_POS);
+ AutoReadLock mediumLock(pMedium COMMA_LOCKVAL_SRC_POS);
id = pMedium->getId();
strLocationFull = pMedium->getLocationFull();
pParent = pMedium->getParent();
@@ -3512,199 +3528,119 @@ HRESULT VirtualBox::registerHardDisk(Medium *pMedium,
HRESULT rc;
Utf8Str strConflict;
- bool fIdentical;
+ ComObjPtr<Medium> pDupMedium;
rc = checkMediaForConflicts(id,
strLocationFull,
strConflict,
- fIdentical);
+ &pDupMedium);
if (FAILED(rc)) return rc;
- if (!fIdentical)
+ if (pDupMedium.isNull())
{
if (strConflict.length())
return setError(E_INVALIDARG,
- tr("Cannot register the hard disk '%s' {%RTuuid} because a %s already exists"),
+ tr("Cannot register the %s '%s' {%RTuuid} because a %s already exists"),
+ pszDevType,
strLocationFull.c_str(),
id.raw(),
strConflict.c_str(),
m->strSettingsFilePath.c_str());
- // store base (root) hard disks in the list
+ // add to the collection if it is a base medium
if (pParent.isNull())
- m->allHardDisks.getList().push_back(pMedium);
- // access the list directly because we already locked the list above
+ pall->getList().push_back(pMedium);
// store all hard disks (even differencing images) in the map
- m->mapHardDisks[id] = pMedium;
+ if (argType == DeviceType_HardDisk)
+ m->mapHardDisks[id] = pMedium;
+
+ *ppMedium = pMedium;
if (pllRegistriesThatNeedSaving)
pMedium->addToRegistryIDList(*pllRegistriesThatNeedSaving);
- }
- return rc;
-}
-
-/**
- * Removes the given hard disk from the hard disk registry.
- *
- * @param aHardDisk Hard disk object to remove.
- * @param pfNeedsGlobalSaveSettings Optional pointer to a bool that must have been initialized to false and that will be set to true
- * by this function if the caller should invoke VirtualBox::saveSettings() because the global settings have changed.
- *
- * @note Caller must hold the media tree lock for writing; in addition, this locks @a aHardDisk for reading
- */
-HRESULT VirtualBox::unregisterHardDisk(Medium *aHardDisk,
- GuidList *pllRegistriesThatNeedSaving)
-{
- AssertReturn(aHardDisk != NULL, E_INVALIDARG);
-
- AutoCaller autoCaller(this);
- AssertComRCReturn(autoCaller.rc(), autoCaller.rc());
-
- AutoCaller hardDiskCaller(aHardDisk);
- AssertComRCReturn(hardDiskCaller.rc(), hardDiskCaller.rc());
-
- // caller must hold the media tree write lock
- Assert(getMediaTreeLockHandle().isWriteLockOnCurrentThread());
-
- Guid id;
- ComObjPtr<Medium> pParent;
+ *ppMedium = pMedium;
+ }
+ else
{
- AutoReadLock hardDiskLock(aHardDisk COMMA_LOCKVAL_SRC_POS);
- id = aHardDisk->getId();
- pParent = aHardDisk->getParent();
+ // pMedium may be the last reference to the Medium object, and the
+ // caller may have specified the same ComObjPtr as the output parameter.
+ // In this case the assignment will uninit the object, and we must not
+ // have a caller pending.
+ mediumCaller.release();
+ *ppMedium = pDupMedium;
+
+ // no need to update pllRegistriesThatNeedSaving since there must be
+ // already some saved medium registry which contains the data.
}
- // remove base (root) hard disks from the list
- if (pParent.isNull())
- m->allHardDisks.getList().remove(aHardDisk);
- // access the list directly because caller must have locked the list
-
- // remove all hard disks (even differencing images) from map
- size_t cnt = m->mapHardDisks.erase(id);
- Assert(cnt == 1);
- NOREF(cnt);
-
- if (pllRegistriesThatNeedSaving)
- aHardDisk->addToRegistryIDList(*pllRegistriesThatNeedSaving);
-
- return S_OK;
+ return rc;
}
/**
- * Remembers the given image by storing it in the CD/DVD or floppy image registry.
+ * Removes the given medium from the respective registry.
*
- * @param argImage Image object to remember.
- * @param argType Either DeviceType_DVD or DeviceType_Floppy.
- * @param uuidMachineRegistry UUID of machine whose registry should be used, or a NULL UUID for the global registry.
+ * @param pMedium Hard disk object to remove.
+ * @param pllRegistriesThatNeedSaving Optional pointer to a list of UUIDs of media registries that need saving.
*
- * @note Caller must hold the media tree lock for writing; in addition, this locks @a argImage for reading
+ * @note Caller must hold the media tree lock for writing; in addition, this locks @a pMedium for reading
*/
-HRESULT VirtualBox::registerImage(Medium *pMedium,
- DeviceType_T argType,
- GuidList *pllRegistriesThatNeedSaving)
+HRESULT VirtualBox::unregisterMedium(Medium *pMedium,
+ GuidList *pllRegistriesThatNeedSaving)
{
AssertReturn(pMedium != NULL, E_INVALIDARG);
AutoCaller autoCaller(this);
AssertComRCReturn(autoCaller.rc(), autoCaller.rc());
- AutoCaller imageCaller(pMedium);
- AssertComRCReturn(imageCaller.rc(), imageCaller.rc());
+ AutoCaller mediumCaller(pMedium);
+ AssertComRCReturn(mediumCaller.rc(), mediumCaller.rc());
// caller must hold the media tree write lock
Assert(getMediaTreeLockHandle().isWriteLockOnCurrentThread());
Guid id;
- Utf8Str strLocationFull;
ComObjPtr<Medium> pParent;
+ DeviceType_T devType;
{
- AutoReadLock al(pMedium COMMA_LOCKVAL_SRC_POS);
+ AutoReadLock mediumLock(pMedium COMMA_LOCKVAL_SRC_POS);
id = pMedium->getId();
- strLocationFull = pMedium->getLocationFull();
pParent = pMedium->getParent();
+ devType = pMedium->getDeviceType();
}
- // work on DVDs or floppies list?
- ObjectsList<Medium> &all = (argType == DeviceType_DVD) ? m->allDVDImages : m->allFloppyImages;
-
- HRESULT rc;
- // lock the images lists (list + map) while checking for conflicts
- AutoWriteLock al(all.getLockHandle() COMMA_LOCKVAL_SRC_POS);
-
- Utf8Str strConflict;
- bool fIdentical;
- rc = checkMediaForConflicts(id,
- strLocationFull,
- strConflict,
- fIdentical);
- if (FAILED(rc)) return rc;
-
- if (!fIdentical)
+ ObjectsList<Medium> *pall = NULL;
+ switch (devType)
{
- if (strConflict.length())
- return setError(VBOX_E_INVALID_OBJECT_STATE,
- tr("Cannot register the image '%s' with UUID {%RTuuid} because a %s already exists"),
- strLocationFull.c_str(),
- id.raw(),
- strConflict.c_str());
-
- // add to the collection
- all.getList().push_back(pMedium);
- // access the list directly because we already locked the list above
-
- if (pllRegistriesThatNeedSaving)
- pMedium->addToRegistryIDList(*pllRegistriesThatNeedSaving);
+ case DeviceType_HardDisk:
+ pall = &m->allHardDisks;
+ break;
+ case DeviceType_DVD:
+ pall = &m->allDVDImages;
+ break;
+ case DeviceType_Floppy:
+ pall = &m->allFloppyImages;
+ break;
+ default:
+ AssertMsgFailedReturn(("invalid device type %d", devType), E_INVALIDARG);
}
- return rc;
-}
-
-/**
- * Removes the given image from the CD/DVD or floppy image registry.
- *
- * @param argImage Image object to remove.
- * @param argType Either DeviceType_DVD or DeviceType_Floppy.
- * @param pfNeedsGlobalSaveSettings Optional pointer to a bool that must have been initialized to false and that will be set to true
- * by this function if the caller should invoke VirtualBox::saveSettings() because the global settings have changed.
- *
- * @note Caller must hold the media tree lock for writing; in addition, this locks @a argImage for reading
- */
-HRESULT VirtualBox::unregisterImage(Medium *argImage,
- DeviceType_T argType,
- GuidList *pllRegistriesThatNeedSaving)
-{
- AssertReturn(argImage != NULL, E_INVALIDARG);
-
- AutoCaller autoCaller(this);
- AssertComRCReturn(autoCaller.rc(), autoCaller.rc());
-
- AutoCaller imageCaller(argImage);
- AssertComRCReturn(imageCaller.rc(), imageCaller.rc());
-
- // caller must hold the media tree write lock
- Assert(getMediaTreeLockHandle().isWriteLockOnCurrentThread());
+ // remove from the collection if it is a base medium
+ if (pParent.isNull())
+ pall->getList().remove(pMedium);
- Guid id;
- ComObjPtr<Medium> pParent;
+ // remove all hard disks (even differencing images) from map
+ if (devType == DeviceType_HardDisk)
{
- AutoReadLock al(argImage COMMA_LOCKVAL_SRC_POS);
- id = argImage->getId();
- pParent = argImage->getParent();
+ size_t cnt = m->mapHardDisks.erase(id);
+ Assert(cnt == 1);
+ NOREF(cnt);
}
- // work on DVDs or floppies list?
- ObjectsList<Medium> &all = (argType == DeviceType_DVD) ? m->allDVDImages : m->allFloppyImages;
-
- // access the list directly because the caller must have requested the lock
- all.getList().remove(argImage);
-
- HRESULT rc = S_OK;
-
if (pllRegistriesThatNeedSaving)
- argImage->addToRegistryIDList(*pllRegistriesThatNeedSaving);
+ pMedium->addToRegistryIDList(*pllRegistriesThatNeedSaving);
- return rc;
+ return S_OK;
}
/**
@@ -3777,7 +3713,7 @@ HRESULT VirtualBox::unregisterMachineMedia(const Guid &uuidMachine)
ComObjPtr<Medium> pMedium = *it;
Log(("Closing medium %RTuuid\n", pMedium->getId().raw()));
AutoCaller mac(pMedium);
- pMedium->close(NULL /* pfNeedsGlobalSaveSettings*/, mac);
+ pMedium->close(NULL /* pllRegistriesThatNeedSaving */, mac);
}
LogFlowFuncLeave();
@@ -3884,9 +3820,8 @@ void VirtualBox::addGuidToListUniquely(GuidList &llRegistriesThatNeedSaving,
* hold any locks before calling this.
*
* @param llRegistriesThatNeedSaving
- * @return
*/
-HRESULT VirtualBox::saveRegistries(const GuidList &llRegistriesThatNeedSaving)
+void VirtualBox::saveRegistries(const GuidList &llRegistriesThatNeedSaving)
{
bool fNeedsGlobalSettings = false;
HRESULT rc = S_OK;
@@ -3910,14 +3845,16 @@ HRESULT VirtualBox::saveRegistries(const GuidList &llRegistriesThatNeedSaving)
if (SUCCEEDED(rc))
{
AutoCaller autoCaller(pMachine);
- if (FAILED(autoCaller.rc())) return autoCaller.rc();
+ if (FAILED(autoCaller.rc())) continue;
AutoWriteLock mlock(pMachine COMMA_LOCKVAL_SRC_POS);
rc = pMachine->saveSettings(&fNeedsGlobalSettings,
Machine::SaveS_Force); // caller said save, so stop arguing
}
- if (FAILED(rc))
- return rc;
+ // There are inherent races (the VM where the media registry was
+ // when the list was created has been deleted in the mean time),
+ // so do not thread a failure at findMachine as fatal. Likewise
+ // saveSettings can fail if the machine has been uninitialized.
}
}
@@ -3926,8 +3863,6 @@ HRESULT VirtualBox::saveRegistries(const GuidList &llRegistriesThatNeedSaving)
AutoWriteLock vlock(this COMMA_LOCKVAL_SRC_POS);
rc = saveSettings();
}
-
- return S_OK;
}
/**
@@ -4067,8 +4002,6 @@ DECLCALLBACK(int) VirtualBox::ClientWatcher(RTTHREAD /* thread */, void *pvUser)
#if defined(RT_OS_WINDOWS)
- HRESULT hrc;
-
/// @todo (dmik) processes reaping!
HANDLE handles[MAXIMUM_WAIT_OBJECTS];
diff --git a/src/VBox/Main/webservice/Makefile.kmk b/src/VBox/Main/webservice/Makefile.kmk
index a1bff93ba..e3b2de72c 100644
--- a/src/VBox/Main/webservice/Makefile.kmk
+++ b/src/VBox/Main/webservice/Makefile.kmk
@@ -193,6 +193,11 @@ VBOXWEB_OTHERS += \
$(VBOXWEB_GSOAPH_FROM_XSLT)
+# disable -fvisibility=hidden as the SOAP stuff does not properly set the visibility attributes
+TEMPLATE_VBOXWEBR3EXE = Webservices without -fvisibility
+TEMPLATE_VBOXWEBR3EXE_EXTENDS = VBOXR3EXE
+TEMPLATE_VBOXWEBR3EXE_CXXFLAGS = $(filter-out $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_fvisibility-inlines-hidden),\
+ $(TEMPLATE_VBOXR3EXE_CXXFLAGS))
ifdef VBOX_GSOAP_INSTALLED
ifndef VBOX_ONLY_SDK
@@ -200,7 +205,7 @@ ifdef VBOX_GSOAP_INSTALLED
# vboxsoap - Library used by both the programs (save build time).
#
LIBRARIES += vboxsoap
- vboxsoap_TEMPLATE = VBOXR3EXE
+ vboxsoap_TEMPLATE = VBOXWEBR3EXE
ifdef VBOX_USE_VCC80
vboxsoap_CXXFLAGS.win += -bigobj
endif
@@ -429,7 +434,7 @@ $$(VBOX_JWSSRC_JAR): $$(VBOX_JWS_JAR) | $$(dir $$@)
# webtest - webservice sample client in C++
#
PROGRAMS += webtest
- webtest_TEMPLATE = VBOXR3EXE
+ webtest_TEMPLATE = VBOXWEBR3EXE
ifdef VBOX_USE_VCC80
webtest_CXXFLAGS.win += -bigobj
endif
diff --git a/src/VBox/Runtime/testcase/tstRTR0SemMutexDriver.cpp b/src/VBox/Runtime/testcase/tstRTR0SemMutexDriver.cpp
index 6ac25ff1f..62bfaabf5 100644
--- a/src/VBox/Runtime/testcase/tstRTR0SemMutexDriver.cpp
+++ b/src/VBox/Runtime/testcase/tstRTR0SemMutexDriver.cpp
@@ -116,7 +116,7 @@ static bool tstDoThreadedTest(TSTRTR0SEMMUTEX enmSetup, TSTRTR0SEMMUTEX enmDo, T
RTTESTI_CHECK_RC_RET(SUPR3CallR0Service("tstRTR0SemMutex", sizeof("tstRTR0SemMutex") - 1, enmSetup, 0, &pReq->Hdr),
VINF_SUCCESS, false);
if (pReq->szMsg[0] == '!')
- return RTTestIFailedRc(false, "%s", &pReq->szMsg[1]);
+ return !!RTTestIFailedRc(false, "%s", &pReq->szMsg[1]);
if (pReq->szMsg[0])
RTTestIPrintf(RTTESTLVL_ALWAYS, "%s", pReq->szMsg);
@@ -155,7 +155,7 @@ static bool tstDoThreadedTest(TSTRTR0SEMMUTEX enmSetup, TSTRTR0SEMMUTEX enmDo, T
RTTESTI_CHECK_RC_RET(rc = SUPR3CallR0Service("tstRTR0SemMutex", sizeof("tstRTR0SemMutex") - 1, enmCleanup, 0, &pReq->Hdr),
VINF_SUCCESS, false);
if (pReq->szMsg[0] == '!')
- return RTTestIFailedRc(false, "%s", &pReq->szMsg[1]);
+ return !!RTTestIFailedRc(false, "%s", &pReq->szMsg[1]);
if (pReq->szMsg[0])
RTTestIPrintf(RTTESTLVL_ALWAYS, "%s", pReq->szMsg);
diff --git a/src/VBox/Storage/VD.cpp b/src/VBox/Storage/VD.cpp
index da1978157..cf0f96584 100644
--- a/src/VBox/Storage/VD.cpp
+++ b/src/VBox/Storage/VD.cpp
@@ -4456,6 +4456,7 @@ VBOXDDU_DECL(int) VDOpen(PVBOXHDD pDisk, const char *pszBackend,
AssertRC(rc);
pImage->uOpenFlags = uOpenFlags & (VD_OPEN_FLAGS_HONOR_SAME | VD_OPEN_FLAGS_IGNORE_FLUSH);
+ pImage->VDIo.fIgnoreFlush = (uOpenFlags & VD_OPEN_FLAGS_IGNORE_FLUSH) != 0;
rc = pImage->Backend->pfnOpen(pImage->pszFilename,
uOpenFlags & ~(VD_OPEN_FLAGS_HONOR_SAME | VD_OPEN_FLAGS_IGNORE_FLUSH),
pDisk->pVDIfsDisk,
@@ -4492,7 +4493,6 @@ VBOXDDU_DECL(int) VDOpen(PVBOXHDD pDisk, const char *pszBackend,
fLockWrite = true;
pImage->VDIo.pBackendData = pImage->pBackendData;
- pImage->VDIo.fIgnoreFlush = (uOpenFlags & VD_OPEN_FLAGS_IGNORE_FLUSH) != 0;
/* Check image type. As the image itself has only partial knowledge
* whether it's a base image or not, this info is derived here. The
@@ -4712,6 +4712,7 @@ VBOXDDU_DECL(int) VDCacheOpen(PVBOXHDD pDisk, const char *pszBackend,
AssertRC(rc);
pCache->uOpenFlags = uOpenFlags & VD_OPEN_FLAGS_HONOR_SAME;
+ pCache->VDIo.fIgnoreFlush = (uOpenFlags & VD_OPEN_FLAGS_IGNORE_FLUSH) != 0;
rc = pCache->Backend->pfnOpen(pCache->pszFilename,
uOpenFlags & ~VD_OPEN_FLAGS_HONOR_SAME,
pDisk->pVDIfsDisk,
@@ -4979,6 +4980,7 @@ VBOXDDU_DECL(int) VDCreateBase(PVBOXHDD pDisk, const char *pszBackend,
pImage->uOpenFlags = uOpenFlags & VD_OPEN_FLAGS_HONOR_SAME;
uImageFlags &= ~VD_IMAGE_FLAGS_DIFF;
+ pImage->VDIo.fIgnoreFlush = (uOpenFlags & VD_OPEN_FLAGS_IGNORE_FLUSH) != 0;
rc = pImage->Backend->pfnCreate(pImage->pszFilename, cbSize,
uImageFlags, pszComment, pPCHSGeometry,
pLCHSGeometry, pUuid,
@@ -4992,7 +4994,6 @@ VBOXDDU_DECL(int) VDCreateBase(PVBOXHDD pDisk, const char *pszBackend,
if (RT_SUCCESS(rc))
{
pImage->VDIo.pBackendData = pImage->pBackendData;
- pImage->VDIo.fIgnoreFlush = (uOpenFlags & VD_OPEN_FLAGS_IGNORE_FLUSH) != 0;
pImage->uImageFlags = uImageFlags;
/* Force sane optimization settings. It's not worth avoiding writes
@@ -5245,6 +5246,7 @@ VBOXDDU_DECL(int) VDCreateDiff(PVBOXHDD pDisk, const char *pszBackend,
}
pImage->uOpenFlags = uOpenFlags & VD_OPEN_FLAGS_HONOR_SAME;
+ pImage->VDIo.fIgnoreFlush = (uOpenFlags & VD_OPEN_FLAGS_IGNORE_FLUSH) != 0;
uImageFlags |= VD_IMAGE_FLAGS_DIFF;
rc = pImage->Backend->pfnCreate(pImage->pszFilename, pDisk->cbSize,
uImageFlags | VD_IMAGE_FLAGS_DIFF,
@@ -5260,7 +5262,6 @@ VBOXDDU_DECL(int) VDCreateDiff(PVBOXHDD pDisk, const char *pszBackend,
if (RT_SUCCESS(rc))
{
pImage->VDIo.pBackendData = pImage->pBackendData;
- pImage->VDIo.fIgnoreFlush = (uOpenFlags & VD_OPEN_FLAGS_IGNORE_FLUSH) != 0;
pImage->uImageFlags = uImageFlags;
/* Lock disk for writing, as we modify pDisk information below. */
@@ -5500,6 +5501,7 @@ VBOXDDU_DECL(int) VDCreateCache(PVBOXHDD pDisk, const char *pszBackend,
}
pCache->uOpenFlags = uOpenFlags & VD_OPEN_FLAGS_HONOR_SAME;
+ pCache->VDIo.fIgnoreFlush = (uOpenFlags & VD_OPEN_FLAGS_IGNORE_FLUSH) != 0;
rc = pCache->Backend->pfnCreate(pCache->pszFilename, cbSize,
uImageFlags,
pszComment, pUuid,
@@ -5518,7 +5520,6 @@ VBOXDDU_DECL(int) VDCreateCache(PVBOXHDD pDisk, const char *pszBackend,
fLockWrite = true;
pCache->VDIo.pBackendData = pCache->pBackendData;
- pCache->VDIo.fIgnoreFlush = (uOpenFlags & VD_OPEN_FLAGS_IGNORE_FLUSH) != 0;
/* Re-check state, as the lock wasn't held and another image
* creation call could have been done by another thread. */
diff --git a/src/VBox/Storage/VDI.cpp b/src/VBox/Storage/VDI.cpp
index 5d8ae40a7..ccbe83df6 100644
--- a/src/VBox/Storage/VDI.cpp
+++ b/src/VBox/Storage/VDI.cpp
@@ -1075,6 +1075,8 @@ static int vdiOpen(const char *pszFilename, unsigned uOpenFlags,
rc = vdiOpenImage(pImage, uOpenFlags);
if (RT_SUCCESS(rc))
*ppBackendData = pImage;
+ else
+ RTMemFree(pImage);
out:
LogFlowFunc(("returns %Rrc (pBackendData=%#p)\n", rc, *ppBackendData));
diff --git a/src/VBox/Storage/VMDK.cpp b/src/VBox/Storage/VMDK.cpp
index 3781b0adc..f5a861db5 100644
--- a/src/VBox/Storage/VMDK.cpp
+++ b/src/VBox/Storage/VMDK.cpp
@@ -5761,6 +5761,8 @@ static int vmdkOpen(const char *pszFilename, unsigned uOpenFlags,
rc = vmdkOpenImage(pImage, uOpenFlags);
if (RT_SUCCESS(rc))
*ppBackendData = pImage;
+ else
+ RTMemFree(pImage);
out:
LogFlowFunc(("returns %Rrc (pBackendData=%#p)\n", rc, *ppBackendData));
diff --git a/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp b/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp
index abd8f741b..892612d7d 100644
--- a/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp
+++ b/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp
@@ -2329,7 +2329,8 @@ VMMDECL(VBOXSTRICTRC) IOMInterpretOUTS(PVM pVM, PCPUMCTXCORE pRegFrame, PDISCPUS
*
* (This is a special optimization used by the VGA device.)
*
- * @returns VBox status code.
+ * @returns VBox status code. This API may return VINF_SUCCESS even if no
+ * remapping is made,.
*
* @param pVM The virtual machine.
* @param GCPhys The address of the MMIO page to be changed.
@@ -2350,7 +2351,9 @@ VMMDECL(int) IOMMMIOMapMMIO2Page(PVM pVM, RTGCPHYS GCPhys, RTGCPHYS GCPhysRemapp
&& !HWACCMIsNestedPagingActive(pVM)))
return VINF_SUCCESS; /* ignore */
- IOM_LOCK(pVM);
+ int rc = IOM_LOCK(pVM);
+ if (RT_FAILURE(rc))
+ return VINF_SUCCESS; /* better luck the next time around */
/*
* Lookup the context range node the page belongs to.
@@ -2368,7 +2371,7 @@ VMMDECL(int) IOMMMIOMapMMIO2Page(PVM pVM, RTGCPHYS GCPhys, RTGCPHYS GCPhysRemapp
GCPhys &= ~(RTGCPHYS)PAGE_OFFSET_MASK;
GCPhysRemapped &= ~(RTGCPHYS)PAGE_OFFSET_MASK;
- int rc = PGMHandlerPhysicalPageAlias(pVM, pRange->GCPhys, GCPhys, GCPhysRemapped);
+ rc = PGMHandlerPhysicalPageAlias(pVM, pRange->GCPhys, GCPhys, GCPhysRemapped);
IOM_UNLOCK(pVM);
AssertRCReturn(rc, rc);
diff --git a/src/VBox/VMM/VMMR0/HWVMXR0.cpp b/src/VBox/VMM/VMMR0/HWVMXR0.cpp
index 21917ae2a..014bdbfbc 100644
--- a/src/VBox/VMM/VMMR0/HWVMXR0.cpp
+++ b/src/VBox/VMM/VMMR0/HWVMXR0.cpp
@@ -1303,13 +1303,10 @@ static void vmxR0UpdateExceptionBitmap(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx)
u32TrapMask &= ~RT_BIT(X86_XCPT_PF); /* no longer need to intercept #PF. */
#endif
- /* Also catch floating point exceptions as we need to report them to the guest in a different way. */
- if ( CPUMIsGuestFPUStateActive(pVCpu) == true
- && !(pCtx->cr0 & X86_CR0_NE)
- && !pVCpu->hwaccm.s.fFPUOldStyleOverride)
+ /* Also catch floating point exceptions if we need to report them to the guest in a different way. */
+ if (!(pCtx->cr0 & X86_CR0_NE))
{
u32TrapMask |= RT_BIT(X86_XCPT_MF);
- pVCpu->hwaccm.s.fFPUOldStyleOverride = true;
}
#ifdef VBOX_STRICT
diff --git a/src/VBox/VMM/VMMR3/EM.cpp b/src/VBox/VMM/VMMR3/EM.cpp
index 541c83740..3647da149 100644
--- a/src/VBox/VMM/VMMR3/EM.cpp
+++ b/src/VBox/VMM/VMMR3/EM.cpp
@@ -1359,10 +1359,11 @@ int emR3ForcedActions(PVM pVM, PVMCPU pVCpu, int rc)
{
rc2 = VMMR3EmtRendezvousFF(pVM, pVCpu);
UPDATE_RC();
- /** @todo HACK ALERT! The following test is to make sure EM+TM things the VM is
- * stopped/reset before the next VM state change is made. We need a better
- * solution for this, or at least make it possible to do: (rc >= VINF_EM_FIRST
- * && rc >= VINF_EM_SUSPEND). */
+ /** @todo HACK ALERT! The following test is to make sure EM+TM
+ * thinks the VM is stopped/reset before the next VM state change
+ * is made. We need a better solution for this, or at least make it
+ * possible to do: (rc >= VINF_EM_FIRST && rc <=
+ * VINF_EM_SUSPEND). */
if (RT_UNLIKELY(rc == VINF_EM_SUSPEND || rc == VINF_EM_RESET || rc == VINF_EM_OFF))
{
Log2(("emR3ForcedActions: returns %Rrc\n", rc));
@@ -1469,10 +1470,11 @@ int emR3ForcedActions(PVM pVM, PVMCPU pVCpu, int rc)
{
rc2 = VMMR3EmtRendezvousFF(pVM, pVCpu);
UPDATE_RC();
- /** @todo HACK ALERT! The following test is to make sure EM+TM things the VM is
- * stopped/reset before the next VM state change is made. We need a better
- * solution for this, or at least make it possible to do: (rc >= VINF_EM_FIRST
- * && rc >= VINF_EM_SUSPEND). */
+ /** @todo HACK ALERT! The following test is to make sure EM+TM
+ * thinks the VM is stopped/reset before the next VM state change
+ * is made. We need a better solution for this, or at least make it
+ * possible to do: (rc >= VINF_EM_FIRST && rc <=
+ * VINF_EM_SUSPEND). */
if (RT_UNLIKELY(rc == VINF_EM_SUSPEND || rc == VINF_EM_RESET || rc == VINF_EM_OFF))
{
Log2(("emR3ForcedActions: returns %Rrc\n", rc));
@@ -1494,10 +1496,11 @@ int emR3ForcedActions(PVM pVM, PVMCPU pVCpu, int rc)
return rc2;
}
UPDATE_RC();
- /** @todo HACK ALERT! The following test is to make sure EM+TM things the VM is
- * stopped/reset before the next VM state change is made. We need a better
- * solution for this, or at least make it possible to do: (rc >= VINF_EM_FIRST
- * && rc >= VINF_EM_SUSPEND). */
+ /** @todo HACK ALERT! The following test is to make sure EM+TM
+ * thinks the VM is stopped/reset before the next VM state change
+ * is made. We need a better solution for this, or at least make it
+ * possible to do: (rc >= VINF_EM_FIRST && rc <=
+ * VINF_EM_SUSPEND). */
if (RT_UNLIKELY(rc == VINF_EM_SUSPEND || rc == VINF_EM_RESET || rc == VINF_EM_OFF))
{
Log2(("emR3ForcedActions: returns %Rrc\n", rc));
@@ -1545,10 +1548,11 @@ int emR3ForcedActions(PVM pVM, PVMCPU pVCpu, int rc)
return rc2;
}
UPDATE_RC();
- /** @todo HACK ALERT! The following test is to make sure EM+TM things the VM is
- * stopped/reset before the next VM state change is made. We need a better
- * solution for this, or at least make it possible to do: (rc >= VINF_EM_FIRST
- * && rc >= VINF_EM_SUSPEND). */
+ /** @todo HACK ALERT! The following test is to make sure EM+TM
+ * thinks the VM is stopped/reset before the next VM state change
+ * is made. We need a better solution for this, or at least make it
+ * possible to do: (rc >= VINF_EM_FIRST && rc <=
+ * VINF_EM_SUSPEND). */
if (RT_UNLIKELY(rc == VINF_EM_SUSPEND || rc == VINF_EM_RESET || rc == VINF_EM_OFF))
{
Log2(("emR3ForcedActions: returns %Rrc\n", rc));
@@ -1577,7 +1581,7 @@ int emR3ForcedActions(PVM pVM, PVMCPU pVCpu, int rc)
/*
* The instruction following an emulated STI should *always* be executed!
- *
+ *
* Note! We intentionally don't clear VM_FF_INHIBIT_INTERRUPTS here if
* the eip is the same as the inhibited instr address. Before we
* are able to execute this instruction in raw mode (iret to
@@ -1590,18 +1594,13 @@ int emR3ForcedActions(PVM pVM, PVMCPU pVCpu, int rc)
if ( VMCPU_FF_ISPENDING(pVCpu, VMCPU_FF_INHIBIT_INTERRUPTS)
&& !VM_FF_ISPENDING(pVM, VM_FF_PGM_NO_MEMORY))
{
- Log(("VMCPU_FF_INHIBIT_INTERRUPTS at %RGv successor %RGv\n", (RTGCPTR)CPUMGetGuestRIP(pVCpu), EMGetInhibitInterruptsPC(pVCpu)));
if (CPUMGetGuestRIP(pVCpu) != EMGetInhibitInterruptsPC(pVCpu))
+ {
+ Log(("Clearing VMCPU_FF_INHIBIT_INTERRUPTS at %RGv - successor %RGv\n", (RTGCPTR)CPUMGetGuestRIP(pVCpu), EMGetInhibitInterruptsPC(pVCpu)));
VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_INHIBIT_INTERRUPTS);
-
- if (EMIsSupervisorCodeRecompiled(pVM))
- rc2 = VINF_EM_RESCHEDULE_REM;
- else if (HWACCMR3IsActive(pVCpu))
- rc2 = VINF_EM_RESCHEDULE_HWACC;
+ }
else
- rc2 = PATMAreInterruptsEnabled(pVM) ? VINF_EM_RESCHEDULE_RAW : VINF_EM_RESCHEDULE_REM;
-
- UPDATE_RC();
+ Log(("Leaving VMCPU_FF_INHIBIT_INTERRUPTS set at %RGv\n", (RTGCPTR)CPUMGetGuestRIP(pVCpu)));
}
/*
@@ -1899,7 +1898,10 @@ VMMR3DECL(int) EMR3ExecuteVM(PVM pVM, PVMCPU pVCpu)
/* Don't reschedule in the halted or wait for SIPI case. */
if ( pVCpu->em.s.enmPrevState == EMSTATE_WAIT_SIPI
|| pVCpu->em.s.enmPrevState == EMSTATE_HALTED)
+ {
+ pVCpu->em.s.enmState = pVCpu->em.s.enmPrevState;
break;
+ }
/* fall through and get scheduled. */
/*
@@ -1936,6 +1938,7 @@ VMMR3DECL(int) EMR3ExecuteVM(PVM pVM, PVMCPU pVCpu)
*/
case VINF_EM_SUSPEND:
Log2(("EMR3ExecuteVM: VINF_EM_SUSPEND: %d -> %d\n", pVCpu->em.s.enmState, EMSTATE_SUSPENDED));
+ Assert(pVCpu->em.s.enmState != EMSTATE_SUSPENDED);
pVCpu->em.s.enmPrevState = pVCpu->em.s.enmState;
pVCpu->em.s.enmState = EMSTATE_SUSPENDED;
break;
@@ -1987,6 +1990,7 @@ VMMR3DECL(int) EMR3ExecuteVM(PVM pVM, PVMCPU pVCpu)
*/
case VINF_EM_NO_MEMORY:
Log2(("EMR3ExecuteVM: VINF_EM_NO_MEMORY: %d -> %d\n", pVCpu->em.s.enmState, EMSTATE_SUSPENDED));
+ Assert(pVCpu->em.s.enmState != EMSTATE_SUSPENDED);
pVCpu->em.s.enmPrevState = pVCpu->em.s.enmState;
pVCpu->em.s.enmState = EMSTATE_SUSPENDED;
TMR3NotifySuspend(pVM, pVCpu);
diff --git a/src/VBox/VMM/VMMR3/PDMAsyncCompletionFile.cpp b/src/VBox/VMM/VMMR3/PDMAsyncCompletionFile.cpp
index fa0b4c446..f0c54e9e6 100644
--- a/src/VBox/VMM/VMMR3/PDMAsyncCompletionFile.cpp
+++ b/src/VBox/VMM/VMMR3/PDMAsyncCompletionFile.cpp
@@ -1228,6 +1228,9 @@ static int pdmacFileEpRead(PPDMASYNCCOMPLETIONTASK pTask,
LogFlowFunc(("pTask=%#p pEndpoint=%#p off=%RTfoff paSegments=%#p cSegments=%zu cbRead=%zu\n",
pTask, pEndpoint, off, paSegments, cSegments, cbRead));
+ if (RT_UNLIKELY((uint64_t)off + cbRead > pEpFile->cbFile))
+ return VERR_EOF;
+
STAM_PROFILE_ADV_START(&pEpFile->StatRead, Read);
pdmacFileEpTaskInit(pTask, cbRead);
@@ -1298,10 +1301,14 @@ static int pdmacFileEpGetSize(PPDMASYNCCOMPLETIONENDPOINT pEndpoint, uint64_t *p
static int pdmacFileEpSetSize(PPDMASYNCCOMPLETIONENDPOINT pEndpoint, uint64_t cbSize)
{
+ int rc;
PPDMASYNCCOMPLETIONENDPOINTFILE pEpFile = (PPDMASYNCCOMPLETIONENDPOINTFILE)pEndpoint;
- ASMAtomicWriteU64(&pEpFile->cbFile, cbSize);
- return RTFileSetSize(pEpFile->hFile, cbSize);
+ rc = RTFileSetSize(pEpFile->hFile, cbSize);
+ if (RT_SUCCESS(rc))
+ ASMAtomicWriteU64(&pEpFile->cbFile, cbSize);
+
+ return rc;
}
const PDMASYNCCOMPLETIONEPCLASSOPS g_PDMAsyncCompletionEndpointClassFile =