diff options
author | Felix Geyer <debfx-pkg@fobos.de> | 2010-03-26 10:38:21 +0100 |
---|---|---|
committer | Felix Geyer <debfx-pkg@fobos.de> | 2010-03-26 10:38:21 +0100 |
commit | 0429962c55c464036f613d707f26b91f252584e7 (patch) | |
tree | b359d4c41578b576d90240489a1ba273ab46a6b7 | |
parent | 48be1cf480743cdc0e60dd1edc9677b4349a570d (diff) | |
download | virtualbox-0429962c55c464036f613d707f26b91f252584e7.tar.gz |
Imported Upstream version 3.1.6-dfsgupstream/3.1.6-dfsg
177 files changed, 11812 insertions, 7113 deletions
diff --git a/Config.kmk b/Config.kmk index 8297af151..d68d0cbc8 100644 --- a/Config.kmk +++ b/Config.kmk @@ -7,7 +7,7 @@ # # -# Copyright (C) 2006-2007 Sun Microsystems, Inc. +# Copyright (C) 2006-2010 Sun Microsystems, Inc. # # This file is part of VirtualBox Open Source Edition (OSE), as # available from http://www.virtualbox.org. This file is free software; @@ -154,7 +154,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 = 4 +VBOX_VERSION_BUILD = 6 # Full version string (may include more than just x.y.z, but no spaces or other problematic chars). VBOX_VERSION_STRING = $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) # Force the additions.sh script to get an exact additions build when we're doing the release. @@ -410,7 +410,9 @@ ifdef VBOX_WITH_DBUS endif # Use the new VBI module on Solaris. #VBOX_WITH_SOLARIS_VBI = 1 -# Enable 64 bits guest pointers. +# Enable the tradition raw-mode virtualization. +VBOX_WITH_RAW_MODE = 1 +# Enable 64 bits guests VBOX_WITH_64_BITS_GUESTS = 1 # Enable multi-core VCPUs. VBOX_WITH_MULTI_CORE = 1 @@ -601,9 +603,9 @@ ifeq ($(KBUILD_TARGET),darwin) # Later: VBOX_WITH_VRDP_AUTHMOD= VBOX_WITH_VRDP_RDESKTOP= + # Permanent (no working SDL). + VBOX_WITH_VBOXSDL= ifeq ($(KBUILD_TARGET_ARCH),amd64) - # Permanent (no working SDL). - VBOX_WITH_VBOXSDL= VBOX_WITH_VBOXBFE= endif endif @@ -724,6 +726,9 @@ ifdef VBOX_OSE # Only the Linux, Solaris installers are public VBOX_WITH_INSTALLER= endif + if1of ($(KBUILD_TARGET), solaris) + VBOX_WITH_NEW_USB_CODE_ON_SOLARIS= + endif VBOX_WITH_HPET= VBOX_WITH_LPC= VBOX_WITH_SMC= @@ -2069,126 +2074,128 @@ ifeq ($(KBUILD_TARGET),solaris) endif endif -# -# Template for building GC things. -# -TEMPLATE_VBOXGC = VBox GC -TEMPLATE_VBOXGC_ASTOOL = $(VBOX_ASTOOL) -TEMPLATE_VBOXGC_ASFLAGS = $(VBOX_ASFLAGS32) -TEMPLATE_VBOXGC_DEFS = IN_RC IPRT_NO_CRT RT_WITH_NOCRT_ALIASES $(ARCH_BITS_DEFS) -TEMPLATE_VBOXGC_INCS = $(PATH_ROOT)/include/iprt/nocrt -TEMPLATE_VBOXGC_SYSSUFF = .gc -TEMPLATE_VBOXGC_BLD_TRG_ARCH = x86 - -ifeq ($(VBOX_LDR_FMT32),pe) - ifdef VBOX_USE_VCC80 - TEMPLATE_VBOXGC_TOOL = VCC80X86 - TEMPLATE_VBOXGC_CXXFLAGS = -Zi -Zl -GR- -EHs- -GF -W3 -wd4244 -GS- -wd4996 -Zc:wchar_t- -Gs8192 $(VBOX_VCC_GC_OPT) $(VBOX_VCC_GC_FP) - else - TEMPLATE_VBOXGC_TOOL = VCC70 - TEMPLATE_VBOXGC_CXXFLAGS = -Zi -Zl -GR- -EHs- -GF -W3 -wd4244 $(VBOX_VCC_GC_OPT) $(VBOX_VCC_GC_FP) - endif - TEMPLATE_VBOXGC_CFLAGS = $(TEMPLATE_VBOXGC_CXXFLAGS) - TEMPLATE_VBOXGC_LDFLAGS = -Driver -Subsystem:NATIVE -Incremental:NO -Align:64 -MapInfo:Lines -MapInfo:Exports -NoD - ifndef VBOX_NOINC_MISC - include $(KBUILD_PATH)/sdks/W2K3DDKX86.kmk - endif - TEMPLATE_VBOXGC_LIBS = \ - $(PATH_SDK_W2K3DDKX86_LIB)/int64.lib -endif # pe - -ifeq ($(VBOX_LDR_FMT32),elf) -TEMPLATE_VBOXGC_TOOL = $(VBOX_GCC32_TOOL) -TEMPLATE_VBOXGC_CXXFLAGS = -nostdinc -g -pipe $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC32_Wno-variadic-macros) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_fvisibility-inlines-hidden) -fno-rtti -TEMPLATE_VBOXGC_CFLAGS = -nostdinc -g -pipe $(VBOX_GCC_PEDANTIC_C) $(VBOX_GCC32_Wno-variadic-macros) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) - ifeq ($(KBUILD_TARGET),solaris) - TEMPLATE_VBOXGC_LDFLAGS = -r - else - TEMPLATE_VBOXGC_LDFLAGS = -nostdlib -Bsymbolic - # "temporarily", must fix the loader. - TEMPLATE_VBOXGC_LDFLAGS += $(if $(VBOX_DO_STRIP_MODULES),-S,) - TEMPLATE_VBOXGC_LDFLAGS.release = $(if $(VBOX_DO_STRIP_MODULES),-S,) - endif - ifn1of ($(KBUILD_TARGET), solaris freebsd) +ifdef VBOX_WITH_RAW_MODE + # + # Template for building RC things. + # + TEMPLATE_VBOXGC = VBox Raw-Mode Context + TEMPLATE_VBOXGC_ASTOOL = $(VBOX_ASTOOL) + TEMPLATE_VBOXGC_ASFLAGS = $(VBOX_ASFLAGS32) + TEMPLATE_VBOXGC_DEFS = IN_RC IPRT_NO_CRT RT_WITH_NOCRT_ALIASES $(ARCH_BITS_DEFS) + TEMPLATE_VBOXGC_INCS = $(PATH_ROOT)/include/iprt/nocrt + TEMPLATE_VBOXGC_SYSSUFF = .gc + TEMPLATE_VBOXGC_BLD_TRG_ARCH = x86 + + ifeq ($(VBOX_LDR_FMT32),pe) + ifdef VBOX_USE_VCC80 + TEMPLATE_VBOXGC_TOOL = VCC80X86 + TEMPLATE_VBOXGC_CXXFLAGS = -Zi -Zl -GR- -EHs- -GF -W3 -wd4244 -GS- -wd4996 -Zc:wchar_t- -Gs8192 $(VBOX_VCC_GC_OPT) $(VBOX_VCC_GC_FP) + else + TEMPLATE_VBOXGC_TOOL = VCC70 + TEMPLATE_VBOXGC_CXXFLAGS = -Zi -Zl -GR- -EHs- -GF -W3 -wd4244 $(VBOX_VCC_GC_OPT) $(VBOX_VCC_GC_FP) + endif + TEMPLATE_VBOXGC_CFLAGS = $(TEMPLATE_VBOXGC_CXXFLAGS) + TEMPLATE_VBOXGC_LDFLAGS = -Driver -Subsystem:NATIVE -Incremental:NO -Align:64 -MapInfo:Lines -MapInfo:Exports -NoD + ifndef VBOX_NOINC_MISC + include $(KBUILD_PATH)/sdks/W2K3DDKX86.kmk + endif TEMPLATE_VBOXGC_LIBS = \ + $(PATH_SDK_W2K3DDKX86_LIB)/int64.lib + endif # pe + + ifeq ($(VBOX_LDR_FMT32),elf) + TEMPLATE_VBOXGC_TOOL = $(VBOX_GCC32_TOOL) + TEMPLATE_VBOXGC_CXXFLAGS = -nostdinc -g -pipe $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC32_Wno-variadic-macros) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_fvisibility-inlines-hidden) -fno-rtti + TEMPLATE_VBOXGC_CFLAGS = -nostdinc -g -pipe $(VBOX_GCC_PEDANTIC_C) $(VBOX_GCC32_Wno-variadic-macros) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) + ifeq ($(KBUILD_TARGET),solaris) + TEMPLATE_VBOXGC_LDFLAGS = -r + else + TEMPLATE_VBOXGC_LDFLAGS = -nostdlib -Bsymbolic + # "temporarily", must fix the loader. + TEMPLATE_VBOXGC_LDFLAGS += $(if $(VBOX_DO_STRIP_MODULES),-S,) + TEMPLATE_VBOXGC_LDFLAGS.release = $(if $(VBOX_DO_STRIP_MODULES),-S,) + endif + ifn1of ($(KBUILD_TARGET), solaris freebsd) + TEMPLATE_VBOXGC_LIBS = \ $(VBOX_GCC32_LIBGCC) # instricts + endif endif -endif -ifeq ($(VBOX_LDR_FMT32),macho) -TEMPLATE_VBOXGC_TOOL = GXX4MACHO -TEMPLATE_VBOXGC_DEFS += $(VBOX_DARWIN_DEF_SDK_DEFS) -TEMPLATE_VBOXGC_CXXFLAGS = $(VBOX_DARWIN_DEF_SDK_CXXFLAGS) -m32 -nostdinc -g -pipe $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC32_Wno-variadic-macros) -fno-common -msoft-float -static $(VBOX_GCC_fno-stack-protector) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing -fno-rtti -TEMPLATE_VBOXGC_CFLAGS = $(VBOX_DARWIN_DEF_SDK_CFLAGS) -m32 -nostdinc -g -pipe $(VBOX_GCC_PEDANTIC_C) $(VBOX_GCC32_Wno-variadic-macros) -fno-common -msoft-float -static $(VBOX_GCC_fno-stack-protector) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing -TEMPLATE_VBOXGC_LDFLAGS = $(VBOX_DARWIN_DEF_SDK_LDFLAGS) -m32 -nostdlib -#TEMPLATE_VBOXGC_LDFLAGS.release = -Wl,-S ??? -endif + ifeq ($(VBOX_LDR_FMT32),macho) + TEMPLATE_VBOXGC_TOOL = GXX4MACHO + TEMPLATE_VBOXGC_DEFS += $(VBOX_DARWIN_DEF_SDK_DEFS) + TEMPLATE_VBOXGC_CXXFLAGS = $(VBOX_DARWIN_DEF_SDK_CXXFLAGS) -m32 -nostdinc -g -pipe $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC32_Wno-variadic-macros) -fno-common -msoft-float -static $(VBOX_GCC_fno-stack-protector) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing -fno-rtti + TEMPLATE_VBOXGC_CFLAGS = $(VBOX_DARWIN_DEF_SDK_CFLAGS) -m32 -nostdinc -g -pipe $(VBOX_GCC_PEDANTIC_C) $(VBOX_GCC32_Wno-variadic-macros) -fno-common -msoft-float -static $(VBOX_GCC_fno-stack-protector) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing + TEMPLATE_VBOXGC_LDFLAGS = $(VBOX_DARWIN_DEF_SDK_LDFLAGS) -m32 -nostdlib + #TEMPLATE_VBOXGC_LDFLAGS.release = -Wl,-S ??? + endif -ifeq ($(VBOX_LDR_FMT32),lx) -TEMPLATE_VBOXGC_TOOL = GXX3OMF -TEMPLATE_VBOXGC_CXXFLAGS = -nostdinc -g -pipe $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC32_Wno-variadic-macros) $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing -fno-exceptions -fno-rtti -TEMPLATE_VBOXGC_CFLAGS = -nostdinc -g -pipe $(VBOX_GCC_PEDANTIC_C) $(VBOX_GCC32_Wno-variadic-macros) $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing -fno-exceptions -TEMPLATE_VBOXGC_LDFLAGS = -Zdll -nostdlib -TEMPLATE_VBOXGC_LIBS = \ + ifeq ($(VBOX_LDR_FMT32),lx) + TEMPLATE_VBOXGC_TOOL = GXX3OMF + TEMPLATE_VBOXGC_CXXFLAGS = -nostdinc -g -pipe $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC32_Wno-variadic-macros) $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing -fno-exceptions -fno-rtti + TEMPLATE_VBOXGC_CFLAGS = -nostdinc -g -pipe $(VBOX_GCC_PEDANTIC_C) $(VBOX_GCC32_Wno-variadic-macros) $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing -fno-exceptions + TEMPLATE_VBOXGC_LDFLAGS = -Zdll -nostdlib + TEMPLATE_VBOXGC_LIBS = \ $(VBOX_GCC32_LIBGCC) \ $(VBOX_OBJ_SYS0) \ end -endif - + endif -# -# Template for building a GC ring-3 testcase (tstVMStructGC, tstDevStructGC). -# -TEMPLATE_VBOXGCEXE = VBox GC as ring-3 testcase -TEMPLATE_VBOXGCEXE_EXTENDS = VBOXGC -TEMPLATE_VBOXGCEXE_DEFS = $(filter-out IPRT_NO_CRT RT_WITH_NOCRT_ALIASES,$(TEMPLATE_VBOXGC_DEFS)) -TEMPLATE_VBOXGCEXE_INCS = $(NO_SUCH_VARIABLE) -ifeq ($(VBOX_LDR_FMT32),pe) - TEMPLATE_VBOXGCEXE_LDFLAGS = -Incremental:NO -MapInfo:Exports -NoD -Debug - TEMPLATE_VBOXGCEXE_SDKS = WIN32SDK - ifdef VBOX_USE_VCC80 - TEMPLATE_VBOXGCEXE_LIBS = \ + # + # Template for building a RC ring-3 testcase (tstVMStructGC, tstDevStructGC). + # + TEMPLATE_VBOXGCEXE = VBox Raw-Mode as ring-3 testcase + TEMPLATE_VBOXGCEXE_EXTENDS = VBOXGC + TEMPLATE_VBOXGCEXE_DEFS = $(filter-out IPRT_NO_CRT RT_WITH_NOCRT_ALIASES,$(TEMPLATE_VBOXGC_DEFS)) + TEMPLATE_VBOXGCEXE_INCS = $(NO_SUCH_VARIABLE) + + ifeq ($(VBOX_LDR_FMT32),pe) + TEMPLATE_VBOXGCEXE_LDFLAGS = -Incremental:NO -MapInfo:Exports -NoD -Debug + TEMPLATE_VBOXGCEXE_SDKS = WIN32SDK + ifdef VBOX_USE_VCC80 + TEMPLATE_VBOXGCEXE_LIBS = \ $(PATH_TOOL_VCC80X86_LIB)/libcmt.lib \ $(PATH_TOOL_VCC80X86_LIB)/oldnames.lib - else - TEMPLATE_VBOXGCEXE_LIBS = \ + else + TEMPLATE_VBOXGCEXE_LIBS = \ $(PATH_TOOL_VCC70_LIB)/libcmt.lib \ $(PATH_TOOL_VCC70_LIB)/oldnames.lib + endif endif -endif -ifeq ($(VBOX_LDR_FMT32),elf) - TEMPLATE_VBOXGCEXE_CFLAGS = $(filter-out -nostdinc,$(TEMPLATE_VBOXGC_CFLAGS)) - TEMPLATE_VBOXGCEXE_CXXFLAGS = $(filter-out -nostdinc,$(TEMPLATE_VBOXGC_CXXFLAGS)) - TEMPLATE_VBOXGCEXE_LDFLAGS = -g - TEMPLATE_VBOXGCEXE_LDFLAGS.dbgopt = -g - TEMPLATE_VBOXGCEXE_LDFLAGS.strict = -g - TEMPLATE_VBOXGCEXE_LDFLAGS.release = -g - if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), freebsd.amd64) - # The FreeBSD port of gcc isn't picking up -m32 where it should. the .o order below isn't - # quite right (target source comes first), if it stops working we'll have to write a linker tool. - TEMPLATE_VBOXGCEXE_DEFS.$(KBUILD_TARGET) = $(TEMPLATE_VBOXGC_DEFS.$(KBUILD_TARGET)) IPRT_DONT_USE_SYSTEM_STDINT_H - TEMPLATE_VBOXGCEXE_LDFLAGS.$(KBUILD_TARGET) = $(TEMPLATE_VBOXGC_LDFLAGS.$(KBUILD_TARGET)) -nostdlib -v - TEMPLATE_VBOXGCEXE_SOURCES.$(KBUILD_TARGET) = /usr/lib32/crtend.o /usr/lib32/crtn.o - TEMPLATE_VBOXGCEXE_SOURCES = /usr/lib32/crt1.o /usr/lib32/crti.o /usr/lib32/crtbegin.o - TEMPLATE_VBOXGCEXE_LIBPATH.$(KBUILD_TARGET) = /usr/lib32 - TEMPLATE_VBOXGCEXE_LIBS.$(KBUILD_TARGET) = /usr/lib32/libc.so + ifeq ($(VBOX_LDR_FMT32),elf) + TEMPLATE_VBOXGCEXE_CFLAGS = $(filter-out -nostdinc,$(TEMPLATE_VBOXGC_CFLAGS)) + TEMPLATE_VBOXGCEXE_CXXFLAGS = $(filter-out -nostdinc,$(TEMPLATE_VBOXGC_CXXFLAGS)) + TEMPLATE_VBOXGCEXE_LDFLAGS = -g + TEMPLATE_VBOXGCEXE_LDFLAGS.dbgopt = -g + TEMPLATE_VBOXGCEXE_LDFLAGS.strict = -g + TEMPLATE_VBOXGCEXE_LDFLAGS.release = -g + if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), freebsd.amd64) + # The FreeBSD port of gcc isn't picking up -m32 where it should. the .o order below isn't + # quite right (target source comes first), if it stops working we'll have to write a linker tool. + TEMPLATE_VBOXGCEXE_DEFS.$(KBUILD_TARGET) = $(TEMPLATE_VBOXGC_DEFS.$(KBUILD_TARGET)) IPRT_DONT_USE_SYSTEM_STDINT_H + TEMPLATE_VBOXGCEXE_LDFLAGS.$(KBUILD_TARGET) = $(TEMPLATE_VBOXGC_LDFLAGS.$(KBUILD_TARGET)) -nostdlib -v + TEMPLATE_VBOXGCEXE_SOURCES.$(KBUILD_TARGET) = /usr/lib32/crtend.o /usr/lib32/crtn.o + TEMPLATE_VBOXGCEXE_SOURCES = /usr/lib32/crt1.o /usr/lib32/crti.o /usr/lib32/crtbegin.o + TEMPLATE_VBOXGCEXE_LIBPATH.$(KBUILD_TARGET) = /usr/lib32 + TEMPLATE_VBOXGCEXE_LIBS.$(KBUILD_TARGET) = /usr/lib32/libc.so + endif endif -endif -ifeq ($(VBOX_LDR_FMT32),macho) - TEMPLATE_VBOXGCEXE_CFLAGS = $(filter-out -static -nostdinc,$(TEMPLATE_VBOXGC_CFLAGS)) - TEMPLATE_VBOXGCEXE_CXXFLAGS = $(filter-out -static -nostdinc,$(TEMPLATE_VBOXGC_CXXFLAGS)) - TEMPLATE_VBOXGCEXE_LDFLAGS = -g -m32 -endif + ifeq ($(VBOX_LDR_FMT32),macho) + TEMPLATE_VBOXGCEXE_CFLAGS = $(filter-out -static -nostdinc,$(TEMPLATE_VBOXGC_CFLAGS)) + TEMPLATE_VBOXGCEXE_CXXFLAGS = $(filter-out -static -nostdinc,$(TEMPLATE_VBOXGC_CXXFLAGS)) + TEMPLATE_VBOXGCEXE_LDFLAGS = -g -m32 + endif -ifeq ($(VBOX_LDR_FMT32),lx) - TEMPLATE_VBOXGCEXE_CFLAGS = $(filter-out -nostdinc,$(TEMPLATE_VBOXGC_CFLAGS)) - TEMPLATE_VBOXGCEXE_CXXFLAGS = $(filter-out -nostdinc,$(TEMPLATE_VBOXGC_CXXFLAGS)) - TEMPLATE_VBOXGCEXE_LDFLAGS = -g - TEMPLATE_VBOXGCEXE_LIBS = $(NO_SUCH_VARIABLE) -endif + ifeq ($(VBOX_LDR_FMT32),lx) + TEMPLATE_VBOXGCEXE_CFLAGS = $(filter-out -nostdinc,$(TEMPLATE_VBOXGC_CFLAGS)) + TEMPLATE_VBOXGCEXE_CXXFLAGS = $(filter-out -nostdinc,$(TEMPLATE_VBOXGC_CXXFLAGS)) + TEMPLATE_VBOXGCEXE_LDFLAGS = -g + TEMPLATE_VBOXGCEXE_LIBS = $(NO_SUCH_VARIABLE) + endif +endif # VBOX_WITH_RAW_MODE # @@ -2975,7 +2982,7 @@ TEMPLATE_VBOXMAINEXE_LIBPATH += \ else ifeq ($(KBUILD_TARGET),solaris) TEMPLATE_VBOXMAINEXE_TOOL = GXX3PLAIN TEMPLATE_VBOXMAINEXE_DEFS += _REENTRANT -TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTIME) rt +TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTIME) rt thread else $(warning Warning: VBOX Build: Target $(KBUILD_TARGET) is not officially supported!) TEMPLATE_VBOXMAINEXE_LIBS = @@ -3921,7 +3928,7 @@ endif SVN ?= svn$(HOSTSUFF_EXE) VBOX_SVN_REV_KMK = $(PATH_OUT)/revision.kmk ifndef VBOX_SVN_REV - VBOX_SVN_REV_FALLBACK := $(patsubst %:,, $Rev: 57640 $ ) + VBOX_SVN_REV_FALLBACK := $(patsubst %:,, $Rev: 59338 $ ) VBOX_SVN_DEP := $(wildcard $(PATH_ROOT)/.svn/entries) ifeq ($(which $(SVN)),) VBOX_SVN_DEP := diff --git a/include/VBox/VBoxHDD.h b/include/VBox/VBoxHDD.h index 13f5b2e8f..6622f9be7 100644 --- a/include/VBox/VBoxHDD.h +++ b/include/VBox/VBoxHDD.h @@ -33,6 +33,7 @@ #include <iprt/assert.h> #include <iprt/string.h> #include <iprt/mem.h> +#include <iprt/net.h> #include <VBox/cdefs.h> #include <VBox/types.h> #include <VBox/err.h> @@ -1010,6 +1011,24 @@ ion. */ DECLR3CALLBACKMEMBER(int, pfnFlush, (RTSOCKET Sock)); + /** + * Gets the address of the local side. + * + * @return iprt status code. + * @param Sock Socket descriptor. + * @param pAddr Where to store the local address on success. + */ + DECLR3CALLBACKMEMBER(int, pfnGetLocalAddress, (RTSOCKET Sock, PRTNETADDR pAddr)); + + /** + * Gets the address of the other party. + * + * @return iprt status code. + * @param Sock Socket descriptor. + * @param pAddr Where to store the peer address on success. + */ + DECLR3CALLBACKMEMBER(int, pfnGetPeerAddress, (RTSOCKET Sock, PRTNETADDR pAddr)); + } VDINTERFACETCPNET, *PVDINTERFACETCPNET; /** diff --git a/include/VBox/com/EventQueue.h b/include/VBox/com/EventQueue.h index d90343495..99c4499b0 100644 --- a/include/VBox/com/EventQueue.h +++ b/include/VBox/com/EventQueue.h @@ -81,7 +81,7 @@ protected: * XPCOM/IPC events while waiting for its own (Event) events. * * When using Windows, Darwin and OS/2, this will map onto the native thread - * queue/runloop. So, windows messages and want not will be processed while + * queue/runloop. So, windows messages and what not will be processed while * waiting for events. */ class EventQueue diff --git a/include/VBox/pgm.h b/include/VBox/pgm.h index 67bbebc74..162580a96 100644 --- a/include/VBox/pgm.h +++ b/include/VBox/pgm.h @@ -396,6 +396,7 @@ VMMDECL(void) PGMDynCheckLocks(PVM pVM); # endif # endif VMMDECL(void) PGMDynMapStartAutoSet(PVMCPU pVCpu); +VMMDECL(bool) PGMDynMapStartOrMigrateAutoSet(PVMCPU pVCpu); VMMDECL(void) PGMDynMapReleaseAutoSet(PVMCPU pVCpu); VMMDECL(void) PGMDynMapFlushAutoSet(PVMCPU pVCpu); VMMDECL(void) PGMDynMapMigrateAutoSet(PVMCPU pVCpu); diff --git a/include/iprt/asm.h b/include/iprt/asm.h index 22cf45262..b8c18d680 100644 --- a/include/iprt/asm.h +++ b/include/iprt/asm.h @@ -33,7 +33,7 @@ #include <iprt/cdefs.h> #include <iprt/types.h> #include <iprt/assert.h> -/** @todo #include <iprt/param.h> for PAGE_SIZE. */ +/** @todo @code #include <iprt/param.h> @endcode for PAGE_SIZE. */ /** @def RT_INLINE_ASM_USES_INTRIN * Defined as 1 if we're using a _MSC_VER 1400. * Otherwise defined as 0. @@ -116,17 +116,6 @@ # define RT_INLINE_ASM_USES_INTRIN 0 #endif -/** @def RT_INLINE_ASM_GCC_4_3_X_X86 - * Used to work around some 4.3.x register allocation issues in this version of - * the compiler. */ -#ifdef __GNUC__ -# define RT_INLINE_ASM_GCC_4_3_X_X86 (__GNUC__ == 4 && __GNUC_MINOR__ == 3 && defined(__i386__)) -#endif -#ifndef RT_INLINE_ASM_GCC_4_3_X_X86 -# define RT_INLINE_ASM_GCC_4_3_X_X86 0 -#endif - - /** @defgroup grp_asm ASM - Assembly Routines * @ingroup grp_rt @@ -167,6 +156,32 @@ * @{ */ +/** @def RT_INLINE_ASM_GCC_4_3_X_X86 + * Used to work around some 4.3.x register allocation issues in this version of + * the compiler. So far this workaround is still required for 4.4 and 4.5. */ +#ifdef __GNUC__ +# define RT_INLINE_ASM_GCC_4_3_X_X86 (__GNUC__ == 4 && __GNUC_MINOR__ >= 3 && defined(__i386__)) +#endif +#ifndef RT_INLINE_ASM_GCC_4_3_X_X86 +# define RT_INLINE_ASM_GCC_4_3_X_X86 0 +#endif + +/** @def RT_INLINE_DONT_USE_CMPXCHG8B + * i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5493) screws up + * RTSemRWRequestWrite semsemrw-lockless-generic.cpp in release builds. PIC + * mode, x86. + * + * Some gcc 4.3.x versions may have register allocation issues with cmpxchg8b + * when in PIC mode on x86. + */ +#ifndef RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC +# define RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC \ + ( (defined(PIC) || defined(__PIC__)) \ + && defined(RT_ARCH_X86) \ + && ( RT_INLINE_ASM_GCC_4_3_X_X86 \ + || defined(RT_OS_DARWIN)) ) +#endif + /** @def RT_INLINE_ASM_EXTERNAL * Defined as 1 if the compiler does not support inline assembly. * The ASM* functions will then be implemented in an external .asm file. @@ -1048,7 +1063,6 @@ DECLINLINE(uint32_t) ASMGetCpuFamily(uint32_t uEAX) * * @returns Model. * @param uEAX EAX from ASMCpuId(1) or ASMCpuId(0x80000001). - * @param fIntel Whether it's an intel CPU. */ DECLINLINE(uint32_t) ASMGetCpuModelIntel(uint32_t uEAX) { @@ -1063,7 +1077,6 @@ DECLINLINE(uint32_t) ASMGetCpuModelIntel(uint32_t uEAX) * * @returns Model. * @param uEAX EAX from ASMCpuId(1) or ASMCpuId(0x80000001). - * @param fIntel Whether it's an intel CPU. */ DECLINLINE(uint32_t) ASMGetCpuModelAMD(uint32_t uEAX) { @@ -2809,7 +2822,8 @@ DECLINLINE(int32_t) ASMAtomicXchgS32(volatile int32_t *pi32, int32_t i32) * @param pu64 Pointer to the 64-bit variable to update. * @param u64 The 64-bit value to assign to *pu64. */ -#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +#if (RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN) \ + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC DECLASM(uint64_t) ASMAtomicXchgU64(volatile uint64_t *pu64, uint64_t u64); #else DECLINLINE(uint64_t) ASMAtomicXchgU64(volatile uint64_t *pu64, uint64_t u64) @@ -3031,6 +3045,68 @@ DECLINLINE(RTR3PTR) ASMAtomicXchgR3Ptr(RTR3PTR volatile *ppvR3, RTR3PTR pvR3) } while (0) + +/** + * Atomically Compare and Exchange an unsigned 8-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pu8 Pointer to the value to update. + * @param u8New The new value to assigned to *pu8. + * @param u8Old The old value to *pu8 compare with. + */ +#if RT_INLINE_ASM_EXTERNAL || !RT_INLINE_ASM_GNU_STYLE +DECLASM(bool) ASMAtomicCmpXchgU8(volatile uint8_t *pu8, const uint8_t u8New, const uint8_t u8Old); +#else +DECLINLINE(bool) ASMAtomicCmpXchgU8(volatile uint8_t *pu8, const uint8_t u8New, uint8_t u8Old) +{ + uint8_t u8Ret; + __asm__ __volatile__("lock; cmpxchgb %3, %0\n\t" + "setz %1\n\t" + : "=m" (*pu8), + "=qm" (u8Ret), + "=a" (u8Old) + : "q" (u8New), + "2" (u8Old), + "m" (*pu8)); + return (bool)u8Ret; +} +#endif + + +/** + * Atomically Compare and Exchange a signed 8-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pi8 Pointer to the value to update. + * @param i8New The new value to assigned to *pi8. + * @param i8Old The old value to *pi8 compare with. + */ +DECLINLINE(bool) ASMAtomicCmpXchgS8(volatile int8_t *pi8, const int8_t i8New, const int8_t i8Old) +{ + return ASMAtomicCmpXchgU8((volatile uint8_t *)pi8, (const uint8_t)i8New, (const uint8_t)i8Old); +} + + +/** + * Atomically Compare and Exchange a bool value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pf Pointer to the value to update. + * @param fNew The new value to assigned to *pf. + * @param fOld The old value to *pf compare with. + */ +DECLINLINE(bool) ASMAtomicCmpXchgBool(volatile bool *pf, const bool fNew, const bool fOld) +{ + return ASMAtomicCmpXchgU8((volatile uint8_t *)pf, (const uint8_t)fNew, (const uint8_t)fOld); +} + + /** * Atomically Compare and Exchange an unsigned 32-bit value, ordered. * @@ -3114,10 +3190,10 @@ DECLINLINE(bool) ASMAtomicCmpXchgS32(volatile int32_t *pi32, const int32_t i32Ne * @param u64Old The value to compare with. */ #if (RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN) \ - || (RT_INLINE_ASM_GCC_4_3_X_X86 && defined(IN_RING3) && defined(__PIC__)) + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC DECLASM(bool) ASMAtomicCmpXchgU64(volatile uint64_t *pu64, const uint64_t u64New, const uint64_t u64Old); #else -DECLINLINE(bool) ASMAtomicCmpXchgU64(volatile uint64_t *pu64, const uint64_t u64New, uint64_t u64Old) +DECLINLINE(bool) ASMAtomicCmpXchgU64(volatile uint64_t *pu64, uint64_t u64New, uint64_t u64Old) { # if RT_INLINE_ASM_USES_INTRIN return _InterlockedCompareExchange64((__int64 *)pu64, u64New, u64Old) == u64Old; @@ -3382,7 +3458,8 @@ DECLINLINE(bool) ASMAtomicCmpXchgExS32(volatile int32_t *pi32, const int32_t i32 * @param u64Old The value to compare with. * @param pu64Old Pointer store the old value at. */ -#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +#if (RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN) \ + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC DECLASM(bool) ASMAtomicCmpXchgExU64(volatile uint64_t *pu64, const uint64_t u64New, const uint64_t u64Old, uint64_t *pu64Old); #else DECLINLINE(bool) ASMAtomicCmpXchgExU64(volatile uint64_t *pu64, const uint64_t u64New, const uint64_t u64Old, uint64_t *pu64Old) @@ -3629,9 +3706,9 @@ DECLINLINE(int32_t) ASMAtomicAddS32(int32_t volatile *pi32, int32_t i32) * @param pu32 Pointer to the value. * @param u32 Number to subtract. */ -DECLINLINE(uint32_t) ASMAtomicSubU32(int32_t volatile *pi32, uint32_t u32) -{ - return ASMAtomicAddU32((uint32_t volatile *)pi32, (uint32_t)-(int32_t)u32); +DECLINLINE(uint32_t) ASMAtomicSubU32(int32_t volatile *pi32, uint32_t u32) +{ + return ASMAtomicAddU32((uint32_t volatile *)pi32, (uint32_t)-(int32_t)u32); } @@ -4161,7 +4238,7 @@ DECLINLINE(int32_t) ASMAtomicUoReadS32(volatile int32_t *pi32) * @remark This will fault if the memory is read-only! */ #if (RT_INLINE_ASM_EXTERNAL && !defined(RT_ARCH_AMD64)) \ - || (RT_INLINE_ASM_GCC_4_3_X_X86 && defined(IN_RING3) && defined(__PIC__)) + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC DECLASM(uint64_t) ASMAtomicReadU64(volatile uint64_t *pu64); #else DECLINLINE(uint64_t) ASMAtomicReadU64(volatile uint64_t *pu64) @@ -4239,7 +4316,8 @@ DECLINLINE(uint64_t) ASMAtomicReadU64(volatile uint64_t *pu64) * The memory pointed to must be writable. * @remark This will fault if the memory is read-only! */ -#if RT_INLINE_ASM_EXTERNAL && !defined(RT_ARCH_AMD64) +#if (RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN) \ + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC DECLASM(uint64_t) ASMAtomicUoReadU64(volatile uint64_t *pu64); #else DECLINLINE(uint64_t) ASMAtomicUoReadU64(volatile uint64_t *pu64) @@ -4283,7 +4361,7 @@ DECLINLINE(uint64_t) ASMAtomicUoReadU64(volatile uint64_t *pu64) : "m" (u32EBX), "S" (pu64)); # else /* !PIC */ - __asm__ __volatile__("cmpxchg8b %1\n\t" + __asm__ __volatile__("lock; cmpxchg8b %1\n\t" : "=A" (u64), "+m" (*pu64) : "0" (0), diff --git a/include/iprt/net.h b/include/iprt/net.h index d80d7d2e6..92638cf5a 100644 --- a/include/iprt/net.h +++ b/include/iprt/net.h @@ -57,9 +57,9 @@ typedef RTNETADDRIPV4 const *PCRTNETADDRIPV4; */ typedef RTUINT128U RTNETADDRIPV6; AssertCompileSize(RTNETADDRIPV6, 16); -/** Pointer to a IPv4 address. */ +/** Pointer to a IPv6 address. */ typedef RTNETADDRIPV6 *PRTNETADDRIPV6; -/** Pointer to a const IPv4 address. */ +/** Pointer to a const IPv6 address. */ typedef RTNETADDRIPV6 const *PCRTNETADDRIPV6; /** @@ -81,7 +81,9 @@ typedef RTNETADDRIPX *PRTNETADDRIPX; typedef RTNETADDRIPX const *PCRTNETADDRIPX; /** - * Address union. + * Network address union. + * + * @remarks The size of this structure may change in the future. */ typedef union RTNETADDRU { @@ -108,6 +110,55 @@ typedef RTNETADDRU *PRTNETADDRU; /** Pointer to a const address union. */ typedef RTNETADDRU const *PCRTNETADDRU; +/** + * Network address type. + * + * @remarks The value assignments may change in the future. + */ +typedef enum RTNETADDRTYPE +{ + /** The invalid 0 entry. */ + RTNETADDRTYPE_INVALID = 0, + /** IP version 4. */ + RTNETADDRTYPE_IPV4, + /** IP version 6. */ + RTNETADDRTYPE_IPV6, + /** IPX. */ + RTNETADDRTYPE_IPX, + /** MAC address. */ + RTNETADDRTYPE_MAC, + /** The end of the valid values. */ + RTNETADDRTYPE_END, + /** The usual 32-bit hack. */ + RTNETADDRTYPE_32_BIT_HACK = 0x7fffffff +} RTNETADDRTYPE; +/** Pointer to a network address type. */ +typedef RTNETADDRTYPE *PRTNETADDRTYPE; +/** Pointer to a const network address type. */ +typedef RTNETADDRTYPE const *PCRTNETADDRTYPE; + +/** + * Network address. + * + * @remarks The size and type values may change. + */ +typedef struct RTNETADDR +{ + /** The address union. */ + RTNETADDRU uAddr; + /** Indicates which view of @a u that is valid. */ + RTNETADDRTYPE enmType; + /** The port number for IPv4 and IPv6 addresses. This is set to + * RTNETADDR_NA_PORT if not applicable. */ + uint32_t uPort; +} RTNETADDR; +/** Pointer to a network address. */ +typedef RTNETADDR *PRTNETADDR; +/** Pointer to a const network address. */ +typedef RTNETADDR const *PCRTNETADDR; + +/** The not applicable value of RTNETADDR::uPort value use to inid. */ +#define RTNETADDR_PORT_NA UINT32_MAX /** * Ethernet header. diff --git a/include/iprt/tcp.h b/include/iprt/tcp.h index 4c1ff5309..2d11e887a 100644 --- a/include/iprt/tcp.h +++ b/include/iprt/tcp.h @@ -33,6 +33,7 @@ #include <iprt/cdefs.h> #include <iprt/types.h> #include <iprt/thread.h> +#include <iprt/net.h> #ifdef IN_RING0 # error "There are no RTFile APIs available Ring-0 Host Context!" @@ -223,6 +224,23 @@ RTR3DECL(int) RTTcpAccept(RTSOCKET Sock, unsigned uPort, PRTSOCKET pSockAccepte #endif +/** + * Gets the address of the local side. + * + * @returns IPRT status code. + * @param Sock Socket descriptor. + * @param pAddr Where to store the local address on success. + */ +RTR3DECL(int) RTTcpGetLocalAddress(RTSOCKET Sock, PRTNETADDR pAddr); + +/** + * Gets the address of the other party. + * + * @returns IPRT status code. + * @param Sock Socket descriptor. + * @param pAddr Where to store the peer address on success. + */ +RTR3DECL(int) RTTcpGetPeerAddress(RTSOCKET Sock, PRTNETADDR pAddr); /** @} */ RT_C_DECLS_END diff --git a/src/VBox/Additions/common/VBoxGuest/VBoxGuest-solaris.c b/src/VBox/Additions/common/VBoxGuest/VBoxGuest-solaris.c index 667441238..a5517fb9e 100644 --- a/src/VBox/Additions/common/VBoxGuest/VBoxGuest-solaris.c +++ b/src/VBox/Additions/common/VBoxGuest/VBoxGuest-solaris.c @@ -168,8 +168,6 @@ static uint16_t g_uIOPortBase; static caddr_t g_pMMIOBase; /** Size of the MMIO region. */ static off_t g_cbMMIO; -/** VMMDev Version. */ -static uint32_t g_u32Version; /** Pointer to the interrupt handle vector */ static ddi_intr_handle_t *g_pIntr; /** Number of actually allocated interrupt handles */ @@ -383,8 +381,9 @@ static int VBoxGuestSolarisDetach(dev_info_t *pDip, ddi_detach_cmd_t enmCmd) ddi_regs_map_free(&g_PciIOHandle); ddi_regs_map_free(&g_PciMMIOHandle); ddi_remove_minor_node(pDip, NULL); - + VBoxGuestDeleteDevExt(&g_DevExt); RTR0Term(); + g_pDip = NULL; return DDI_SUCCESS; } @@ -611,43 +610,45 @@ static int VBoxGuestSolarisIOCtl(dev_t Dev, int Cmd, intptr_t pArg, int Mode, cr LogRel((DEVICE_NAME "::IOCtl: bad magic %#x; pArg=%p Cmd=%#x.\n", ReqWrap.u32Magic, pArg, Cmd)); return EINVAL; } - if (RT_UNLIKELY( ReqWrap.cbData == 0 - || ReqWrap.cbData > _1M*16)) + if (RT_UNLIKELY(ReqWrap.cbData > _1M*16)) { LogRel((DEVICE_NAME "::IOCtl: bad size %#x; pArg=%p Cmd=%#x.\n", ReqWrap.cbData, pArg, Cmd)); return EINVAL; } /* - * Read the request. + * Read the request payload if any; requests like VBOXGUEST_IOCTL_CANCEL_ALL_WAITEVENTS have no data payload. */ - void *pvBuf = RTMemTmpAlloc(ReqWrap.cbData); - if (RT_UNLIKELY(!pvBuf)) + void *pvBuf = NULL; + if (RT_LIKELY(ReqWrap.cbData > 0)) { - LogRel((DEVICE_NAME "::IOCtl: RTMemTmpAlloc failed to alloc %d bytes.\n", ReqWrap.cbData)); - return ENOMEM; - } + pvBuf = RTMemTmpAlloc(ReqWrap.cbData); + if (RT_UNLIKELY(!pvBuf)) + { + LogRel((DEVICE_NAME "::IOCtl: RTMemTmpAlloc failed to alloc %d bytes.\n", ReqWrap.cbData)); + return ENOMEM; + } - rc = ddi_copyin((void *)(uintptr_t)ReqWrap.pvDataR3, pvBuf, ReqWrap.cbData, Mode); - if (RT_UNLIKELY(rc)) - { - RTMemTmpFree(pvBuf); - LogRel((DEVICE_NAME "::IOCtl: ddi_copyin failed; pvBuf=%p pArg=%p Cmd=%d. rc=%d\n", pvBuf, pArg, Cmd, rc)); - return EFAULT; - } - if (RT_UNLIKELY( ReqWrap.cbData != 0 - && !VALID_PTR(pvBuf))) - { - RTMemTmpFree(pvBuf); - LogRel((DEVICE_NAME "::IOCtl: pvBuf invalid pointer %p\n", pvBuf)); - return EINVAL; + rc = ddi_copyin((void *)(uintptr_t)ReqWrap.pvDataR3, pvBuf, ReqWrap.cbData, Mode); + if (RT_UNLIKELY(rc)) + { + RTMemTmpFree(pvBuf); + LogRel((DEVICE_NAME "::IOCtl: ddi_copyin failed; pvBuf=%p pArg=%p Cmd=%d. rc=%d\n", pvBuf, pArg, Cmd, rc)); + return EFAULT; + } + if (RT_UNLIKELY(!VALID_PTR(pvBuf))) + { + RTMemTmpFree(pvBuf); + LogRel((DEVICE_NAME "::IOCtl: pvBuf invalid pointer %p\n", pvBuf)); + return EINVAL; + } } Log((DEVICE_NAME "::IOCtl: pSession=%p pid=%d.\n", pSession, (int)RTProcSelf())); /* * Process the IOCtl. */ - size_t cbDataReturned; + size_t cbDataReturned = 0; rc = VBoxGuestCommonIOCtl(Cmd, &g_DevExt, pSession, pvBuf, ReqWrap.cbData, &cbDataReturned); if (RT_SUCCESS(rc)) { @@ -677,7 +678,8 @@ static int VBoxGuestSolarisIOCtl(dev_t Dev, int Cmd, intptr_t pArg, int Mode, cr rc = RTErrConvertToErrno(rc); } *pVal = rc; - RTMemTmpFree(pvBuf); + if (pvBuf) + RTMemTmpFree(pvBuf); return rc; } diff --git a/src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp b/src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp index 22947287f..0515a8b2e 100644 --- a/src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp +++ b/src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp @@ -356,7 +356,7 @@ int VBoxGuestInitDevExt(PVBOXGUESTDEVEXT pDevExt, uint16_t IOPortBase, rc = RTSpinlockCreate(&pDevExt->SessionSpinlock); if (RT_FAILURE(rc)) { - Log(("VBoxGuestInitDevExt: failed to spinlock, rc=%d!\n", rc)); + LogRel(("VBoxGuestInitDevExt: failed to spinlock, rc=%d!\n", rc)); if (pDevExt->EventSpinlock != NIL_RTSPINLOCK) RTSpinlockDestroy(pDevExt->EventSpinlock); return rc; @@ -393,18 +393,24 @@ int VBoxGuestInitDevExt(PVBOXGUESTDEVEXT pDevExt, uint16_t IOPortBase, Log(("VBoxGuestInitDevExt: returns success\n")); return VINF_SUCCESS; } + else + LogRel(("VBoxGuestInitDevExt: VBoxGuestSetGuestCapabilities failed, rc=%Rrc\n", rc)); } + else + LogRel(("VBoxGuestInitDevExt: vboxGuestSetFilterMask failed, rc=%Rrc\n", rc)); } + else + LogRel(("VBoxGuestInitDevExt: vboxGuestInitReportGuestInfo failed, rc=%Rrc\n", rc)); - /* failure cleanup */ + VbglGRFree((VMMDevRequestHeader *)pDevExt->pIrqAckEvents); } else - Log(("VBoxGuestInitDevExt: VBoxGRAlloc failed, rc=%Rrc\n", rc)); + LogRel(("VBoxGuestInitDevExt: VBoxGRAlloc failed, rc=%Rrc\n", rc)); VbglTerminate(); } else - Log(("VBoxGuestInitDevExt: VbglInit failed, rc=%Rrc\n", rc)); + LogRel(("VBoxGuestInitDevExt: VbglInit failed, rc=%Rrc\n", rc)); rc2 = RTSpinlockDestroy(pDevExt->EventSpinlock); AssertRC(rc2); rc2 = RTSpinlockDestroy(pDevExt->SessionSpinlock); AssertRC(rc2); @@ -448,7 +454,7 @@ void VBoxGuestDeleteDevExt(PVBOXGUESTDEVEXT pDevExt) { int rc2; Log(("VBoxGuestDeleteDevExt:\n")); - LogRel(("VBoxGuest: The additions driver is terminating.\n")); + Log(("VBoxGuest: The additions driver is terminating.\n")); /* * Unfix the guest mappings, filter all events and clear @@ -900,7 +906,7 @@ static int VBoxGuestCommonIOCtl_WaitEvent(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSE || rc == VERR_INTERRUPTED) { pInfo->u32Result = VBOXGUEST_WAITEVENT_INTERRUPTED; - rc == VERR_INTERRUPTED; + rc = VERR_INTERRUPTED; Log(("VBoxGuestCommonIOCtl: WAITEVENT: returns VERR_INTERRUPTED\n")); } else if (rc == VERR_TIMEOUT) @@ -953,7 +959,7 @@ static int VBoxGuestCommonIOCtl_CancelAllWaitEvents(PVBOXGUESTDEVEXT pDevExt, PV if ( pWait->pSession == pSession && pWait->fResEvents != UINT32_MAX) { - RTSEMEVENTMULTI hEvent; + RTSEMEVENTMULTI hEvent = pWait->Event; pWait->fResEvents = UINT32_MAX; RTSpinlockReleaseNoInts(pDevExt->EventSpinlock, &Tmp); /* HACK ALRET! This races wakeup + reuse! */ diff --git a/src/VBox/Additions/common/crOpenGL/Makefile.kmk b/src/VBox/Additions/common/crOpenGL/Makefile.kmk index bd64a824f..2bb5484aa 100644 --- a/src/VBox/Additions/common/crOpenGL/Makefile.kmk +++ b/src/VBox/Additions/common/crOpenGL/Makefile.kmk @@ -188,7 +188,10 @@ VBoxOGL_LIBS = \ $(PATH_LIB)/additions/VBoxOGLspuload$(VBOX_SUFF_LIB) if1of ($(KBUILD_TARGET),linux solaris) VBoxOGL_LIBS += \ - $(PATH_LIB)/libXcomposite.so + $(PATH_LIB)/libXcomposite.so \ + $(PATH_LIB)/libXdamage.so \ + $(PATH_LIB)/libXfixes.so \ + $(PATH_LIB)/libXext.so ifdef VBoxOGL_FAKEDRI VBoxOGL_LIBS += \ dl diff --git a/src/VBox/Additions/common/crOpenGL/context.c b/src/VBox/Additions/common/crOpenGL/context.c index 36a28cffe..c375e797f 100644 --- a/src/VBox/Additions/common/crOpenGL/context.c +++ b/src/VBox/Additions/common/crOpenGL/context.c @@ -31,6 +31,10 @@ #include "cr_environment.h" #include "stub.h" +typedef struct { + WindowInfo *window; + GLboolean windowInUse; +} CtxCheckCurrentDrawableParams_t; /** * This function should be called from MakeCurrent(). It'll detect if @@ -215,6 +219,7 @@ stubGetWindowInfo( Display *dpy, GLXDrawable drawable ) winInfo->type = UNDECIDED; winInfo->spuWindow = -1; winInfo->mapped = -1; /* don't know */ + winInfo->pOwner = NULL; #ifndef WINDOWS crHashtableAdd(stub.windowTable, (unsigned int) drawable, winInfo); #else @@ -266,7 +271,6 @@ stubNewContext( const char *dpyName, GLint visBits, ContextType type, context->spuContext = spuContext; context->visBits = visBits; context->currentDrawable = NULL; - context->pOwnWindow = NULL; crStrncpy(context->dpyName, dpyName, MAX_DPY_NAME); context->dpyName[MAX_DPY_NAME-1] = 0; @@ -785,6 +789,24 @@ stubCheckUseChromium( WindowInfo *window ) return GL_TRUE; /* use Chromium! */ } +static void stubWindowCheckOwnerCB(unsigned long key, void *data1, void *data2) +{ + WindowInfo *pWindow = (WindowInfo *) data1; + ContextInfo *pCtx = (ContextInfo *) data2; + + if (pWindow->pOwner == pCtx) + { +#ifdef WINDOWS + /* Note: can't use WindowFromDC(context->pOwnWindow->drawable) here + because GL context is already released from DC and actual guest window + could be destroyed. + */ + crWindowDestroy((GLint)pWindow->hWnd); +#else + crWindowDestroy((GLint)pWindow->drawable); +#endif + } +} GLboolean stubMakeCurrent( WindowInfo *window, ContextInfo *context ) @@ -834,9 +856,8 @@ stubMakeCurrent( WindowInfo *window, ContextInfo *context ) spuShareCtx ); if (window->spuWindow == -1) { + /*crDebug("(1)stubMakeCurrent ctx=%p(%i) window=%p(%i)", context, context->spuContext, window, window->spuWindow);*/ window->spuWindow = stub.spu->dispatch_table.WindowCreate( window->dpyName, context->visBits ); - CRASSERT(!context->pOwnWindow); - context->pOwnWindow = window; } } else { @@ -880,8 +901,8 @@ stubMakeCurrent( WindowInfo *window, ContextInfo *context ) CRASSERT(context->type == CHROMIUM); CRASSERT(context->spuContext >= 0); - if (context->currentDrawable && context->currentDrawable != window) - crWarning("Rebinding context %p to a different window", context); + /*if (context->currentDrawable && context->currentDrawable != window) + crDebug("Rebinding context %p to a different window", context);*/ if (window->type == NATIVE) { crWarning("Can't rebind a chromium context to a native window\n"); @@ -890,9 +911,28 @@ stubMakeCurrent( WindowInfo *window, ContextInfo *context ) else { if (window->spuWindow == -1) { + /*crDebug("(2)stubMakeCurrent ctx=%p(%i) window=%p(%i)", context, context->spuContext, window, window->spuWindow);*/ window->spuWindow = stub.spu->dispatch_table.WindowCreate( window->dpyName, context->visBits ); - CRASSERT(!context->pOwnWindow); - context->pOwnWindow = window; + if (context->currentDrawable && context->currentDrawable->type==CHROMIUM + && context->currentDrawable->pOwner==context) + { +#ifdef WINDOWS + if (!WindowFromDC(context->currentDrawable->drawable)) + { + crWindowDestroy((GLint)context->currentDrawable->hWnd); + } +#else + Window root; + int x, y; + unsigned int border, depth, w, h; + + if (!XGetGeometry(context->currentDrawable->dpy, context->currentDrawable->drawable, &root, &x, &y, &w, &h, &border, &depth)) + { + crWindowDestroy((GLint)context->currentDrawable->drawable); + } +#endif + + } } if (window->spuWindow != (GLint)window->drawable) @@ -905,6 +945,7 @@ stubMakeCurrent( WindowInfo *window, ContextInfo *context ) } window->type = context->type; + window->pOwner = context; context->currentDrawable = window; stub.currentContext = context; @@ -964,8 +1005,6 @@ stubMakeCurrent( WindowInfo *window, ContextInfo *context ) return retVal; } - - void stubDestroyContext( unsigned long contextId ) { @@ -991,18 +1030,7 @@ stubDestroyContext( unsigned long contextId ) /* Have pack SPU or tilesort SPU, etc. destroy the context */ CRASSERT(context->spuContext >= 0); stub.spu->dispatch_table.DestroyContext( context->spuContext ); - if (context->pOwnWindow) - { - /* Note: can't use WindowFromDC(context->pOwnWindow->drawable) here - because GL context is already released from DC and actual guest window - could be destroyed. - */ -#ifdef WINDOWS - crWindowDestroy((GLint)context->pOwnWindow->hWnd); -#else - crWindowDestroy((GLint)context->pOwnWindow->drawable); -#endif - } + crHashtableWalk(stub.windowTable, stubWindowCheckOwnerCB, context); } if (stub.currentContext == context) { diff --git a/src/VBox/Additions/common/crOpenGL/load.c b/src/VBox/Additions/common/crOpenGL/load.c index 59ea8b180..1639a3b68 100644 --- a/src/VBox/Additions/common/crOpenGL/load.c +++ b/src/VBox/Additions/common/crOpenGL/load.c @@ -79,18 +79,10 @@ static SwapBuffersFunc_t origSwapBuffers; static DrawBufferFunc_t origDrawBuffer; static ScissorFunc_t origScissor; -static void stubCheckWindowState(void) +static void stubCheckWindowState(WindowInfo *window) { - WindowInfo *window; bool bForceUpdate = false; - CRASSERT(stub.trackWindowSize || stub.trackWindowPos); - - if (!stub.currentContext) - return; - - window = stub.currentContext->currentDrawable; - #ifdef WINDOWS /* @todo install hook and track for WM_DISPLAYCHANGE */ { @@ -128,6 +120,64 @@ static void stubCheckWindowState(void) } } +static bool stubSystemWindowExist(WindowInfo *pWindow) +{ +#ifdef WINDOWS + if (!WindowFromDC(pWindow->drawable)) + { + return false; + } +#else + Window root; + int x, y; + unsigned int border, depth, w, h; + + if (!XGetGeometry(pWindow->dpy, pWindow->drawable, &root, &x, &y, &w, &h, &border, &depth)) + { + return false; + } +#endif + + return true; +} + +static void stubCheckWindowsCB(unsigned long key, void *data1, void *data2) +{ + WindowInfo *pWindow = (WindowInfo *) data1; + ContextInfo *pCtx = (ContextInfo *) data2; + + if (pWindow == pCtx->currentDrawable + || pWindow->type!=CHROMIUM + || pWindow->pOwner!=pCtx) + { + return; + } + + if (!stubSystemWindowExist(pWindow)) + { +#ifdef WINDOWS + crWindowDestroy((GLint)pWindow->hWnd); +#else + crWindowDestroy((GLint)pWindow->drawable); +#endif + return; + } + + stubCheckWindowState(pWindow); +} + +static void stubCheckWindowsState(void) +{ + CRASSERT(stub.trackWindowSize || stub.trackWindowPos); + + if (!stub.currentContext) + return; + + stubCheckWindowState(stub.currentContext->currentDrawable); + + crHashtableWalk(stub.windowTable, stubCheckWindowsCB, stub.currentContext); +} + /** * Override the head SPU's glClear function. @@ -136,7 +186,7 @@ static void stubCheckWindowState(void) */ static void SPU_APIENTRY trapClear(GLbitfield mask) { - stubCheckWindowState(); + stubCheckWindowsState(); /* call the original SPU glClear function */ origClear(mask); } @@ -147,7 +197,7 @@ static void SPU_APIENTRY trapClear(GLbitfield mask) */ static void SPU_APIENTRY trapViewport(GLint x, GLint y, GLsizei w, GLsizei h) { - stubCheckWindowState(); + stubCheckWindowsState(); /* call the original SPU glViewport function */ if (!stub.viewportHack) { @@ -166,13 +216,13 @@ static void SPU_APIENTRY trapViewport(GLint x, GLint y, GLsizei w, GLsizei h) static void SPU_APIENTRY trapSwapBuffers(GLint window, GLint flags) { - stubCheckWindowState(); + stubCheckWindowsState(); origSwapBuffers(window, flags); } static void SPU_APIENTRY trapDrawBuffer(GLenum buf) { - stubCheckWindowState(); + stubCheckWindowsState(); origDrawBuffer(buf); } diff --git a/src/VBox/Additions/common/crOpenGL/pack/packspu_beginend.py b/src/VBox/Additions/common/crOpenGL/pack/packspu_beginend.py index f26dd52f3..0531594cc 100644 --- a/src/VBox/Additions/common/crOpenGL/pack/packspu_beginend.py +++ b/src/VBox/Additions/common/crOpenGL/pack/packspu_beginend.py @@ -24,6 +24,23 @@ void PACKSPU_APIENTRY packspu_Begin( GLenum mode ) /* XXX comparing mode >= 0 here is not needed since mode is unsigned */ CRASSERT( mode >= GL_POINTS && mode <= GL_POLYGON ); +#if CR_ARB_vertex_buffer_object + { + GLboolean serverArrays = GL_FALSE; + GET_CONTEXT(ctx); + if (ctx->clientState->extensions.ARB_vertex_buffer_object) + serverArrays = crStateUseServerArrays(); + if (serverArrays) { + CRClientState *clientState = &(ctx->clientState->client); + if (clientState->array.locked && !clientState->array.synced) + { + crPackLockArraysEXT(clientState->array.lockFirst, clientState->array.lockCount); + clientState->array.synced = GL_TRUE; + } + } + } +#endif + if (pack_spu.swap) { crPackBeginSWAP( mode ); diff --git a/src/VBox/Additions/common/crOpenGL/pack/packspu_client.c b/src/VBox/Additions/common/crOpenGL/pack/packspu_client.c index 1eb8fad5b..07248ad08 100644 --- a/src/VBox/Additions/common/crOpenGL/pack/packspu_client.c +++ b/src/VBox/Additions/common/crOpenGL/pack/packspu_client.c @@ -191,12 +191,11 @@ packspu_ArrayElement( GLint index ) GET_CONTEXT(ctx); CRClientState *clientState = &(ctx->clientState->client); - /*Note the comment in packspu_LockArraysEXT*/ - if (clientState->array.locked && !clientState->array.synced) - { - crPackLockArraysEXT(clientState->array.lockFirst, clientState->array.lockCount); - clientState->array.synced = GL_TRUE; - } + /* LockArraysEXT can not be executed between glBegin/glEnd pair, it also + * leads to vertexpointers being adjusted on the host side between glBegin/glEnd calls which + * produces unpredictable results. Locking is done before the glBegin call instead. + */ + CRASSERT(!clientState->array.locked || clientState->array.synced); /* Send the DrawArrays command over the wire */ if (pack_spu.swap) @@ -491,7 +490,7 @@ void PACKSPU_APIENTRY packspu_LockArraysEXT(GLint first, GLint count) crStateLockArraysEXT(first, count); /*Note: this is a workaround for quake3 based apps. It's modifying vertex data between glLockArraysEXT and glDrawElements calls, - so we'd pass data to host right before the glDrawSomething call. + so we'd pass data to host right before the glDrawSomething or glBegin call. */ /*crPackLockArraysEXT(first, count);*/ } diff --git a/src/VBox/Additions/common/crOpenGL/pack/packspu_getstring.c b/src/VBox/Additions/common/crOpenGL/pack/packspu_getstring.c index aa1db7e2c..c9f97b935 100644 --- a/src/VBox/Additions/common/crOpenGL/pack/packspu_getstring.c +++ b/src/VBox/Additions/common/crOpenGL/pack/packspu_getstring.c @@ -96,7 +96,7 @@ const GLubyte * PACKSPU_APIENTRY packspu_GetString( GLenum name ) case GL_EXTENSIONS: return GetExtensions(); case GL_VERSION: -#ifdef WINDOWS +#if 0 && defined(WINDOWS) if (packspuRunningUnderWine()) { GetString(GL_REAL_VERSION, ctx->pszRealVersion); diff --git a/src/VBox/Additions/common/crOpenGL/stub.h b/src/VBox/Additions/common/crOpenGL/stub.h index 557b793f8..eab35b335 100644 --- a/src/VBox/Additions/common/crOpenGL/stub.h +++ b/src/VBox/Additions/common/crOpenGL/stub.h @@ -90,7 +90,7 @@ struct context_info_t unsigned long id; /* the client-visible handle */ GLint visBits; WindowInfo *currentDrawable; - WindowInfo *pOwnWindow; /* window created by first call to MakeCurrent with this context */ + #ifdef WINDOWS HGLRC hglrc; #elif defined(DARWIN) @@ -135,6 +135,7 @@ struct window_info_t unsigned int width, height; ContextType type; GLint spuWindow; /* returned by head SPU's WindowCreate() */ + ContextInfo *pOwner; /* ctx which created this window */ GLboolean mapped; #ifdef WINDOWS HDC drawable; diff --git a/src/VBox/Additions/linux/drm/vboxvideo_drm.c b/src/VBox/Additions/linux/drm/vboxvideo_drm.c index a3e6b9893..6f07e2d3d 100644 --- a/src/VBox/Additions/linux/drm/vboxvideo_drm.c +++ b/src/VBox/Additions/linux/drm/vboxvideo_drm.c @@ -87,7 +87,13 @@ static struct drm_driver driver = { .owner = THIS_MODULE, .open = drm_open, .release = drm_release, + /* This was changed with Linux 2.6.33 but Fedora backported this + * change to their 2.6.32 kernel. */ +#if defined(DRM_UNLOCKED) || LINUX_VERSION_CODE >= KERNEL_VERSION (2, 6, 33) + .unlocked_ioctl = drm_ioctl, +#else .ioctl = drm_ioctl, +#endif .mmap = drm_mmap, .poll = drm_poll, .fasync = drm_fasync, diff --git a/src/VBox/Additions/linux/installer/vboxadd-service.sh b/src/VBox/Additions/linux/installer/vboxadd-service.sh index 9bc990bf0..1e613de16 100755 --- a/src/VBox/Additions/linux/installer/vboxadd-service.sh +++ b/src/VBox/Additions/linux/installer/vboxadd-service.sh @@ -257,7 +257,7 @@ start() { exit 1 } testbinary - daemon $binary + daemon $binary > /dev/null RETVAL=$? test $RETVAL -eq 0 && echo `pidof VBoxService` > $PIDFILE succ_msg diff --git a/src/VBox/Additions/linux/installer/vboxadd-x11.sh b/src/VBox/Additions/linux/installer/vboxadd-x11.sh index 097b4c802..eb0340cdb 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 # Sun VirtualBox -# Linux Additions X11 setup init script ($Revision: 56118 $) +# Linux Additions X11 setup init script ($Revision: 59059 $) # # @@ -73,6 +73,8 @@ if [ -f /etc/arch-release ]; then system=arch elif [ -f /etc/redhat-release ]; then system=redhat +elif [ -f /etc/debian_version ]; then + system=debian elif [ -f /etc/SuSE-release ]; then system=suse elif [ -f /etc/gentoo-release ]; then @@ -162,7 +164,7 @@ if [ "$system" = "lfs" ]; then } fi -if [ "$system" = "other" ]; then +if [ "$system" = "debian" -o "$system" = "other" ]; then fail_msg() { echo " ...fail!" } @@ -287,8 +289,10 @@ setup() setupxorgconf="true" # But without the workaround for SUSE 11.1 not doing input auto-detection newmouse="" - # By default we want to use hal for auto-loading the mouse driver - usehal="--useHal" + # By default we want to use hal/udev/whatever for auto-loading the mouse driver + automouse="--autoMouse" + # But we only install the udev rule if we detect a server that needs it + udevmouse="" # We need to tell our xorg.conf hacking script whether /dev/psaux exists nopsaux="--nopsaux" test -c /dev/psaux && nopsaux="" @@ -324,6 +328,7 @@ setup() vboxvideo_src=vboxvideo_drv_17.so vboxmouse_src=vboxmouse_drv_17.so setupxorgconf="" + test "$system" = "debian" && udevmouse="true" ;; 1.5.99.* | 1.6.* ) begin "Installing X.Org Server 1.6 modules" @@ -348,14 +353,14 @@ setup() vboxvideo_src=vboxvideo_drv_15.so vboxmouse_src=vboxmouse_drv_15.so # SUSE with X.Org 1.5 is a special case, and is handled specially - test -r /etc/SuSE-release && - { usehal=""; newmouse="--newMouse"; } + test "$system" = "suse" && + { automouse=""; newmouse="--newMouse"; } ;; 1.4.* ) begin "Installing X.Org Server 1.4 modules" vboxvideo_src=vboxvideo_drv_14.so vboxmouse_src=vboxmouse_drv_14.so - usehal="" + automouse="" newmouse="--newMouse" ;; 1.3.* ) @@ -364,21 +369,21 @@ setup() begin "Installing X.Org Server 1.3 modules" vboxvideo_src=vboxvideo_drv_13.so vboxmouse_src=vboxmouse_drv_13.so - usehal="" + automouse="" newmouse="--newMouse" ;; 7.1.* | 7.2.* ) begin "Installing X.Org 7.1 modules" vboxvideo_src=vboxvideo_drv_71.so vboxmouse_src=vboxmouse_drv_71.so - usehal="" + automouse="" testrandr="" ;; 6.9.* | 7.0.* ) begin "Installing X.Org 6.9/7.0 modules" vboxvideo_src=vboxvideo_drv_70.so vboxmouse_src=vboxmouse_drv_70.so - usehal="" + automouse="" testrandr="" ;; 6.7* | 6.8.* | 4.2.* | 4.3.* ) @@ -388,7 +393,7 @@ setup() rm "$modules_dir/input/vboxmouse_drv.o" 2>/dev/null ln -s "$lib_dir/vboxvideo_drv.o" "$modules_dir/drivers/vboxvideo_drv.o" ln -s "$lib_dir/vboxmouse_drv.o" "$modules_dir/input/vboxmouse_drv.o" - usehal="" + automouse="" testrandr="" succ_msg ;; @@ -424,11 +429,11 @@ EOF # video drivers. Some versions have the directory and don't use it. # Those versions can autoload vboxvideo though, so we don't need to # hack the configuration file for them. - test -f /etc/debian_version -a -d /usr/share/xserver-xorg/pci && + test "$system" = "debian" -a -d /usr/share/xserver-xorg/pci && { rm -f "/usr/share/xserver-xorg/pci/vboxvideo.ids" ln -s "$share_dir/vboxvideo.ids" /usr/share/xserver-xorg/pci 2>/dev/null - test -n "$usehal" && setupxorgconf="" + test -n "$automouse" && setupxorgconf="" } # Do the XF86Config/xorg.conf hack for those versions that require it @@ -440,7 +445,7 @@ EOF if grep -q "VirtualBox generated" "$i"; then generated="$generated `printf "$i\n"`" else - "$lib_dir/x11config-new.pl" $newmouse $usehal $nopsaux "$i" + "$lib_dir/x11config-new.pl" $newmouse $automouse $nopsaux "$i" fi configured="true" fi @@ -452,15 +457,15 @@ EOF # need a configuration file for VBoxVideo. main_cfg="/etc/X11/xorg.conf" nobak="/etc/X11/xorg.vbox.nobak" - if test -z "$configured" -a ! -r "$nobak"; then + if test -z "$configured"; then touch "$main_cfg" - "$lib_dir/x11config-new.pl" --useHal --noBak "$main_cfg" + "$lib_dir/x11config-new.pl" $newmouse $automouse $nopsaux --noBak "$main_cfg" touch "$nobak" fi fi # X.Org Server versions starting with 1.5 can do mouse auto-detection, # to make our lives easier and spare us the nasty hacks. - test -n "$usehal" && + test -n "$automouse" && if [ -d /etc/hal/fdi/policy ] then # Install hal information about the mouse driver so that X.Org @@ -469,6 +474,17 @@ EOF # Delete the hal cache so that it notices our fdi file rm -r /var/cache/hald/fdi-cache 2> /dev/null fi + test -n "$udevmouse" && + if [ -d /etc/udev/rules.d ] + then + echo "KERNEL==\"vboxguest\",ENV{ID_INPUT}=\"1\"" > /etc/udev/rules.d/70-xorg-vboxmouse.rules + echo "KERNEL==\"vboxguest\",ENV{ID_INPUT_MOUSE}=\"1\"" >> /etc/udev/rules.d/70-xorg-vboxmouse.rules + echo "KERNEL==\"vboxguest\",ENV{x11_driver}=\"vboxmouse\"" >> /etc/udev/rules.d/70-xorg-vboxmouse.rules + # This is normally silent. I have purposely not redirected + # error output as I want to know if something goes wrong, + # particularly if the command syntax ever changes. + udevadm trigger --action=change + fi succ_msg test -n "$generated" && cat << EOF @@ -598,6 +614,8 @@ EOF # Remove other files rm /etc/hal/fdi/policy/90-vboxguest.fdi 2>/dev/null + rm /etc/udev/rules.d/70-xorg-vboxmouse.rules 2>/dev/null + udevadm trigger --action=change 2>/dev/null rm /usr/share/xserver-xorg/pci/vboxvideo.ids 2>/dev/null } diff --git a/src/VBox/Additions/linux/installer/vboxadd.sh b/src/VBox/Additions/linux/installer/vboxadd.sh index de925a910..e0d5d5164 100755 --- a/src/VBox/Additions/linux/installer/vboxadd.sh +++ b/src/VBox/Additions/linux/installer/vboxadd.sh @@ -1,6 +1,6 @@ #! /bin/sh # Sun VirtualBox -# Linux Additions kernel module init script ($Revision: 56414 $) +# Linux Additions kernel module init script ($Revision: 58884 $) # # @@ -20,7 +20,7 @@ # -# chkconfig: 35 30 70 +# chkconfig: 357 30 70 # description: VirtualBox Linux Additions kernel modules # ### BEGIN INIT INFO @@ -400,6 +400,9 @@ setup() # Put mount.vboxsf in the right place ln -sf "$lib_path/$PACKAGE/mount.vboxsf" /sbin + # At least Fedora 11 and Fedora 12 demand on the correct security context when + # executing this command from service scripts. Shouldn't hurt for other distributions. + chcon -u system_u -t mount_exec_t "$lib_path/$PACKAGE/mount.vboxsf" > /dev/null 2>&1 succ_msg if running_vboxguest || running_vboxadd; then diff --git a/src/VBox/Additions/solaris/SharedFolders/vboxfs_prov.c b/src/VBox/Additions/solaris/SharedFolders/vboxfs_prov.c new file mode 100644 index 000000000..f06bb43c1 --- /dev/null +++ b/src/VBox/Additions/solaris/SharedFolders/vboxfs_prov.c @@ -0,0 +1,710 @@ +/** @file + * VirtualBox File System for Solaris Guests, provider implementation. + */ + +/* + * Copyright (C) 2008 Sun Microsystems, Inc. + * + * Sun Microsystems, Inc. confidential + * All rights reserved + */ +/* + * Provider interfaces for shared folder file system. + */ + +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/mntent.h> +#include <sys/param.h> +#include <sys/modctl.h> +#include <sys/mount.h> +#include <sys/policy.h> +#include <sys/atomic.h> +#include <sys/sysmacros.h> +#include <sys/ddi.h> +#include <sys/sunddi.h> +#include "vboxfs_prov.h" +#ifdef u +#undef u +#endif +#include "../../common/VBoxGuestLib/VBoxCalls.h" + +#define SFPROV_VERSION 1 + +static VBSFCLIENT vbox_client; + +/* + * utility to create strings + */ +static SHFLSTRING * +sfprov_string(char *path, int *sz) +{ + SHFLSTRING *str; + int len = strlen(path); + + *sz = len + 1 + sizeof (*str) - sizeof (str->String); + str = kmem_zalloc(*sz, KM_SLEEP); + str->u16Size = len + 1; + str->u16Length = len; + strcpy(str->String.utf8, path); + return (str); +} + +sfp_connection_t * +sfprov_connect(int version) +{ + /* + * only one version for now, so must match + */ + int rc = -1; + if (version != SFPROV_VERSION) + { + cmn_err(CE_WARN, "sfprov_connect: wrong version"); + return NULL; + } + rc = vboxInit(); + if (RT_SUCCESS(rc)) + { + rc = vboxConnect(&vbox_client); + if (RT_SUCCESS(rc)) + { + rc = vboxCallSetUtf8(&vbox_client); + if (RT_SUCCESS(rc)) + { + return ((sfp_connection_t *)&vbox_client); + } + else + cmn_err(CE_WARN, "sfprov_connect: vboxCallSetUtf8() failed"); + + vboxDisconnect(&vbox_client); + } + else + cmn_err(CE_WARN, "sfprov_connect: vboxConnect() failed rc=%d", rc); + vboxUninit(); + } + else + cmn_err(CE_WARN, "sfprov_connect: vboxInit() failed rc=%d", rc); +} + +void +sfprov_disconnect(sfp_connection_t *conn) +{ + if (conn != (sfp_connection_t *)&vbox_client) + cmn_err(CE_WARN, "sfprov_disconnect: bad argument"); + vboxDisconnect(&vbox_client); + vboxUninit(); +} + + +/* + * representation of an active mount point + */ +struct sfp_mount { + VBSFMAP map; +}; + +int +sfprov_mount(sfp_connection_t *conn, char *path, sfp_mount_t **mnt) +{ + sfp_mount_t *m; + SHFLSTRING *str; + int size; + int rc; + + m = kmem_zalloc(sizeof (*m), KM_SLEEP); + str = sfprov_string(path, &size); + rc = vboxCallMapFolder(&vbox_client, str, &m->map); + if (!VBOX_SUCCESS(rc)) { + cmn_err(CE_WARN, "sfprov_mount: vboxCallMapFolder() failed"); + kmem_free(m, sizeof (*m)); + *mnt = NULL; + rc = EINVAL; + } else { + *mnt = m; + rc = 0; + } + kmem_free(str, size); + return (rc); +} + +int +sfprov_unmount(sfp_mount_t *mnt) +{ + int rc; + + rc = vboxCallUnmapFolder(&vbox_client, &mnt->map); + if (!VBOX_SUCCESS(rc)) { + cmn_err(CE_WARN, "sfprov_mount: vboxCallUnmapFolder() failed"); + rc = EINVAL; + } else { + rc = 0; + } + kmem_free(mnt, sizeof (*mnt)); + return (rc); +} + +/* + * query information about a mounted file system + */ +int +sfprov_get_blksize(sfp_mount_t *mnt, uint64_t *blksize) +{ + int rc; + SHFLVOLINFO info; + uint32_t bytes = sizeof(SHFLVOLINFO); + + rc = vboxCallFSInfo(&vbox_client, &mnt->map, 0, + (SHFL_INFO_GET | SHFL_INFO_VOLUME), &bytes, (SHFLDIRINFO *)&info); + if (VBOX_FAILURE(rc)) + return (EINVAL); + *blksize = info.ulBytesPerAllocationUnit; + return (0); +} + +int +sfprov_get_blksused(sfp_mount_t *mnt, uint64_t *blksused) +{ + int rc; + SHFLVOLINFO info; + uint32_t bytes = sizeof(SHFLVOLINFO); + + rc = vboxCallFSInfo(&vbox_client, &mnt->map, 0, + (SHFL_INFO_GET | SHFL_INFO_VOLUME), &bytes, (SHFLDIRINFO *)&info); + if (VBOX_FAILURE(rc)) + return (EINVAL); + *blksused = (info.ullTotalAllocationBytes - + info.ullAvailableAllocationBytes) / info.ulBytesPerAllocationUnit; + return (0); +} + +int +sfprov_get_blksavail(sfp_mount_t *mnt, uint64_t *blksavail) +{ + int rc; + SHFLVOLINFO info; + uint32_t bytes = sizeof(SHFLVOLINFO); + + rc = vboxCallFSInfo(&vbox_client, &mnt->map, 0, + (SHFL_INFO_GET | SHFL_INFO_VOLUME), &bytes, (SHFLDIRINFO *)&info); + if (VBOX_FAILURE(rc)) + return (EINVAL); + *blksavail = + info.ullAvailableAllocationBytes / info.ulBytesPerAllocationUnit; + return (0); +} + +int +sfprov_get_maxnamesize(sfp_mount_t *mnt, uint32_t *maxnamesize) +{ + int rc; + SHFLVOLINFO info; + uint32_t bytes = sizeof(SHFLVOLINFO); + + rc = vboxCallFSInfo(&vbox_client, &mnt->map, 0, + (SHFL_INFO_GET | SHFL_INFO_VOLUME), &bytes, (SHFLDIRINFO *)&info); + if (VBOX_FAILURE(rc)) + return (EINVAL); + *maxnamesize = info.fsProperties.cbMaxComponent; + return (0); +} + +int +sfprov_get_readonly(sfp_mount_t *mnt, uint32_t *readonly) +{ + int rc; + SHFLVOLINFO info; + uint32_t bytes = sizeof(SHFLVOLINFO); + + rc = vboxCallFSInfo(&vbox_client, &mnt->map, 0, + (SHFL_INFO_GET | SHFL_INFO_VOLUME), &bytes, (SHFLDIRINFO *)&info); + if (VBOX_FAILURE(rc)) + return (EINVAL); + *readonly = info.fsProperties.fReadOnly; + return (0); +} + +/* + * File operations: open/close/read/write/etc. + * + * open/create can return any relevant errno, however ENOENT + * generally means that the host file didn't exist. + */ +struct sfp_file { + SHFLHANDLE handle; + VBSFMAP map; /* need this again for the close operation */ +}; + +int +sfprov_create(sfp_mount_t *mnt, char *path, sfp_file_t **fp) +{ + int rc; + SHFLCREATEPARMS parms; + SHFLSTRING *str; + int size; + sfp_file_t *newfp; + + str = sfprov_string(path, &size); + parms.Handle = 0; + parms.Info.cbObject = 0; + parms.CreateFlags = SHFL_CF_ACT_CREATE_IF_NEW | + SHFL_CF_ACT_REPLACE_IF_EXISTS | SHFL_CF_ACCESS_READWRITE; + rc = vboxCallCreate(&vbox_client, &mnt->map, str, &parms); + kmem_free(str, size); + + if (RT_FAILURE(rc)) + return (EINVAL); + if (parms.Handle == SHFL_HANDLE_NIL) { + if (parms.Result == SHFL_FILE_EXISTS) + return (EEXIST); + return (ENOENT); + } + newfp = kmem_alloc(sizeof(sfp_file_t), KM_SLEEP); + newfp->handle = parms.Handle; + newfp->map = mnt->map; + *fp = newfp; + return (0); +} + +int +sfprov_open(sfp_mount_t *mnt, char *path, sfp_file_t **fp) +{ + int rc; + SHFLCREATEPARMS parms; + SHFLSTRING *str; + int size; + sfp_file_t *newfp; + + /* + * First we attempt to open it read/write. If that fails we + * try read only. + */ + str = sfprov_string(path, &size); + parms.Handle = 0; + parms.Info.cbObject = 0; + parms.CreateFlags = SHFL_CF_ACT_FAIL_IF_NEW | SHFL_CF_ACCESS_READWRITE; + rc = vboxCallCreate(&vbox_client, &mnt->map, str, &parms); + + if (RT_FAILURE(rc)) { + kmem_free(str, size); + return (EINVAL); + } + if (parms.Handle == SHFL_HANDLE_NIL) { + if (parms.Result == SHFL_NO_RESULT || + parms.Result == SHFL_PATH_NOT_FOUND || + parms.Result == SHFL_FILE_NOT_FOUND) { + kmem_free(str, size); + return (ENOENT); + } + parms.CreateFlags = + SHFL_CF_ACT_FAIL_IF_NEW | SHFL_CF_ACCESS_READ; + rc = vboxCallCreate(&vbox_client, &mnt->map, str, &parms); + if (RT_FAILURE(rc)) { + kmem_free(str, size); + return (EINVAL); + } + if (parms.Handle == SHFL_HANDLE_NIL) { + kmem_free(str, size); + return (ENOENT); + } + } + newfp = kmem_alloc(sizeof(sfp_file_t), KM_SLEEP); + newfp->handle = parms.Handle; + newfp->map = mnt->map; + *fp = newfp; + return (0); +} + +int +sfprov_trunc(sfp_mount_t *mnt, char *path) +{ + int rc; + SHFLCREATEPARMS parms; + SHFLSTRING *str; + int size; + sfp_file_t *newfp; + + /* + * open it read/write. + */ + str = sfprov_string(path, &size); + parms.Handle = 0; + parms.Info.cbObject = 0; + parms.CreateFlags = SHFL_CF_ACT_FAIL_IF_NEW | SHFL_CF_ACCESS_READWRITE | + SHFL_CF_ACT_OVERWRITE_IF_EXISTS; + rc = vboxCallCreate(&vbox_client, &mnt->map, str, &parms); + + if (RT_FAILURE(rc)) { + kmem_free(str, size); + return (EINVAL); + } + (void)vboxCallClose(&vbox_client, &mnt->map, parms.Handle); + return (0); +} + +int +sfprov_close(sfp_file_t *fp) +{ + int rc; + + rc = vboxCallClose(&vbox_client, &fp->map, fp->handle); + kmem_free(fp, sizeof(sfp_file_t)); + return (0); +} + +int +sfprov_read(sfp_file_t *fp, char *buffer, uint64_t offset, uint32_t *numbytes) +{ + int rc; + + rc = vboxCallRead(&vbox_client, &fp->map, fp->handle, offset, + numbytes, (uint8_t *)buffer, 0); /* what is that last arg? */ + if (RT_FAILURE(rc)) + return (EINVAL); + return (0); +} + +int +sfprov_write(sfp_file_t *fp, char *buffer, uint64_t offset, uint32_t *numbytes) +{ + int rc; + + rc = vboxCallWrite(&vbox_client, &fp->map, fp->handle, offset, + numbytes, (uint8_t *)buffer, 0); /* what is that last arg? */ + if (RT_FAILURE(rc)) + return (EINVAL); + return (0); +} + + +static int +sfprov_getinfo(sfp_mount_t *mnt, char *path, RTFSOBJINFO *info) +{ + int rc; + SHFLCREATEPARMS parms; + SHFLSTRING *str; + int size; + + str = sfprov_string(path, &size); + parms.Handle = 0; + parms.Info.cbObject = 0; + parms.CreateFlags = SHFL_CF_LOOKUP | SHFL_CF_ACT_FAIL_IF_NEW; + rc = vboxCallCreate(&vbox_client, &mnt->map, str, &parms); + kmem_free(str, size); + + if (RT_FAILURE(rc)) + return (EINVAL); + if (parms.Result != SHFL_FILE_EXISTS) + return (ENOENT); + *info = parms.Info; + return (0); +} + +/* + * get information about a file (or directory) + */ +int +sfprov_get_mode(sfp_mount_t *mnt, char *path, mode_t *mode) +{ + int rc; + RTFSOBJINFO info; + mode_t m = 0; + + rc = sfprov_getinfo(mnt, path, &info); + if (rc) + return (rc); + if (RTFS_IS_DIRECTORY(info.Attr.fMode)) + m |= S_IFDIR; + else if (RTFS_IS_FILE(info.Attr.fMode)) + m |= S_IFREG; + else if (RTFS_IS_FIFO(info.Attr.fMode)) + m |= S_IFDIR; + else if (RTFS_IS_DEV_CHAR(info.Attr.fMode)) + m |= S_IFCHR; + else if (RTFS_IS_DEV_BLOCK(info.Attr.fMode)) + m |= S_IFBLK; + else if (RTFS_IS_SYMLINK(info.Attr.fMode)) + m |= S_IFLNK; + else if (RTFS_IS_SOCKET(info.Attr.fMode)) + m |= S_IFSOCK; + + if (info.Attr.fMode & RTFS_UNIX_IRUSR) + m |= S_IRUSR; + if (info.Attr.fMode & RTFS_UNIX_IWUSR) + m |= S_IWUSR; + if (info.Attr.fMode & RTFS_UNIX_IXUSR) + m |= S_IXUSR; + if (info.Attr.fMode & RTFS_UNIX_IRGRP) + m |= S_IRGRP; + if (info.Attr.fMode & RTFS_UNIX_IWGRP) + m |= S_IWGRP; + if (info.Attr.fMode & RTFS_UNIX_IXGRP) + m |= S_IXGRP; + if (info.Attr.fMode & RTFS_UNIX_IROTH) + m |= S_IROTH; + if (info.Attr.fMode & RTFS_UNIX_IWOTH) + m |= S_IWOTH; + if (info.Attr.fMode & RTFS_UNIX_IXOTH) + m |= S_IXOTH; + *mode = m; + return (0); +} + +int +sfprov_get_size(sfp_mount_t *mnt, char *path, uint64_t *size) +{ + int rc; + RTFSOBJINFO info; + + rc = sfprov_getinfo(mnt, path, &info); + if (rc) + return (rc); + *size = info.cbObject; + return (0); +} + +int +sfprov_get_atime(sfp_mount_t *mnt, char *path, timestruc_t *time) +{ + int rc; + RTFSOBJINFO info; + uint64_t nanosec; + + rc = sfprov_getinfo(mnt, path, &info); + if (rc) + return (rc); + nanosec = RTTimeSpecGetNano(&info.AccessTime); + time->tv_sec = nanosec / 1000000000; + time->tv_nsec = nanosec % 1000000000; + return (0); +} + +int +sfprov_get_mtime(sfp_mount_t *mnt, char *path, timestruc_t *time) +{ + int rc; + RTFSOBJINFO info; + uint64_t nanosec; + + rc = sfprov_getinfo(mnt, path, &info); + if (rc) + return (rc); + nanosec = RTTimeSpecGetNano(&info.ModificationTime); + time->tv_sec = nanosec / 1000000000; + time->tv_nsec = nanosec % 1000000000; + return (0); +} + +int +sfprov_get_ctime(sfp_mount_t *mnt, char *path, timestruc_t *time) +{ + int rc; + RTFSOBJINFO info; + uint64_t nanosec; + + rc = sfprov_getinfo(mnt, path, &info); + if (rc) + return (rc); + nanosec = RTTimeSpecGetNano(&info.ChangeTime); + time->tv_sec = nanosec / 1000000000; + time->tv_nsec = nanosec % 1000000000; + return (0); +} + +/* + * Directory operations + */ +int +sfprov_mkdir(sfp_mount_t *mnt, char *path, sfp_file_t **fp) +{ + int rc; + SHFLCREATEPARMS parms; + SHFLSTRING *str; + int size; + sfp_file_t *newfp; + + str = sfprov_string(path, &size); + parms.Handle = 0; + parms.Info.cbObject = 0; + parms.CreateFlags = SHFL_CF_DIRECTORY | SHFL_CF_ACT_CREATE_IF_NEW | + SHFL_CF_ACT_FAIL_IF_EXISTS | SHFL_CF_ACCESS_READ; + rc = vboxCallCreate(&vbox_client, &mnt->map, str, &parms); + kmem_free(str, size); + + if (RT_FAILURE(rc)) + return (EINVAL); + if (parms.Handle == SHFL_HANDLE_NIL) { + if (parms.Result == SHFL_FILE_EXISTS) + return (EEXIST); + return (ENOENT); + } + newfp = kmem_alloc(sizeof(sfp_file_t), KM_SLEEP); + newfp->handle = parms.Handle; + newfp->map = mnt->map; + *fp = newfp; + return (0); +} + +int +sfprov_remove(sfp_mount_t *mnt, char *path) +{ + int rc; + SHFLSTRING *str; + int size; + + str = sfprov_string(path, &size); + rc = vboxCallRemove(&vbox_client, &mnt->map, str, SHFL_REMOVE_FILE); + kmem_free(str, size); + if (RT_FAILURE(rc)) + return (EINVAL); + return (0); +} + +int +sfprov_rmdir(sfp_mount_t *mnt, char *path) +{ + int rc; + SHFLSTRING *str; + int size; + + str = sfprov_string(path, &size); + rc = vboxCallRemove(&vbox_client, &mnt->map, str, SHFL_REMOVE_DIR); + kmem_free(str, size); + if (RT_FAILURE(rc)) + return (RTErrConvertToErrno(rc)); + return (0); +} + +int +sfprov_rename(sfp_mount_t *mnt, char *from, char *to, uint_t is_dir) +{ + int rc; + SHFLSTRING *old, *new; + int old_size, new_size; + + old = sfprov_string(from, &old_size); + new = sfprov_string(to, &new_size); + rc = vboxCallRename(&vbox_client, &mnt->map, old, new, + (is_dir ? SHFL_RENAME_DIR : SHFL_RENAME_FILE) | + SHFL_RENAME_REPLACE_IF_EXISTS); + kmem_free(old, old_size); + kmem_free(new, new_size); + if (RT_FAILURE(rc)) + return (RTErrConvertToErrno(rc)); + return (0); +} + + +/* + * Read all filenames in a directory. + * + * - success - all entries read and returned + * - ENOENT - Couldn't open the directory for reading + * - EINVAL - Internal error of some kind + * + * On successful return, buffer[0] is the start of an array of "char *" + * pointers to the filenames. The array ends with a NULL pointer. + * The remaining storage in buffer after that NULL pointer is where the + * filename strings actually are. + * + * On input nents is the max number of filenames the requestor can handle. + * On output nents is the number of entries at buff[0] + * + * The caller is responsible for freeing the returned buffer. + */ +int +sfprov_readdir( + sfp_mount_t *mnt, + char *path, + void **buffer, + size_t *buffersize, + uint32_t *nents) +{ + int error; + char *cp; + int len; + SHFLSTRING *mask_str = NULL; /* must be path with "/*" appended */ + int mask_size; + sfp_file_t *fp; + void *buff_start = NULL; + char **curr_b; + char *buff_end; + size_t buff_size; + static char infobuff[2 * MAXNAMELEN]; /* not on stack!! */ + SHFLDIRINFO *info = (SHFLDIRINFO *)&infobuff; + uint32_t numbytes = sizeof (infobuff); + uint32_t justone; + uint32_t cnt; + char **name_ptrs; + + *buffer = NULL; + *buffersize = 0; + if (*nents == 0) + return (EINVAL); + error = sfprov_open(mnt, path, &fp); + if (error != 0) + return (ENOENT); + + /* + * Create mask that VBox expects. This needs to be the directory path, + * plus a "*" wildcard to get all files. + */ + len = strlen(path) + 3; + cp = kmem_alloc(len, KM_SLEEP); + strcpy(cp, path); + strcat(cp, "/*"); + mask_str = sfprov_string(cp, &mask_size); + kmem_free(cp, len); + + /* + * Allocate the buffer to use for return values. Each entry + * in the buffer will have a pointer and the string itself. + * The pointers go in the front of the buffer, the strings + * at the end. + */ + buff_size = *nents * (sizeof(char *) + MAXNAMELEN); + name_ptrs = buff_start = kmem_alloc(buff_size, KM_SLEEP); + cp = (char *)buff_start + buff_size; + + /* + * Now loop using vboxCallDirInfo to get one file name at a time + */ + cnt = 0; + for (;;) { + justone = 1; + numbytes = sizeof (infobuff); + error = vboxCallDirInfo(&vbox_client, &fp->map, fp->handle, + mask_str, SHFL_LIST_RETURN_ONE, cnt, &numbytes, info, + &justone); + if (error == VERR_NO_MORE_FILES) { + break; + } + if (error == VERR_NO_TRANSLATION) { + continue; /* ?? just skip this one */ + } + if (error != VINF_SUCCESS || justone != 1) { + error = EINVAL; + goto done; + } + + /* + * Put this name in the buffer, stop if we run out of room. + */ + cp -= strlen(info->name.String.utf8) + 1; + if (cp < (char *)(&name_ptrs[cnt + 2])) + break; + strcpy(cp, info->name.String.utf8); + name_ptrs[cnt] = cp; + ++cnt; + } + error = 0; + name_ptrs[cnt] = NULL; + *nents = cnt; + *buffer = buff_start; + *buffersize = buff_size; +done: + if (error != 0) + kmem_free(buff_start, buff_size); + kmem_free(mask_str, mask_size); + sfprov_close(fp); + return (error); +} diff --git a/src/VBox/Additions/solaris/SharedFolders/vboxfs_prov.h b/src/VBox/Additions/solaris/SharedFolders/vboxfs_prov.h new file mode 100644 index 000000000..c1ef4b89c --- /dev/null +++ b/src/VBox/Additions/solaris/SharedFolders/vboxfs_prov.h @@ -0,0 +1,110 @@ +/** @file + * VirtualBox File System for Solaris Guests, provider header. + */ + +/* + * Copyright (C) 2009 Sun Microsystems, Inc. + * + * Sun Microsystems, Inc. confidential + * All rights reserved + */ + +#ifndef __VBoxFS_prov_Solaris_h +#define __VBoxFS_prov_Solaris_h + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These are the provider interfaces used by sffs to access the underlying + * shared file system. + */ +#define SFPROV_VERSION 1 + +/* + * Initialization and termination. + * sfprov_connect() is called once before any other interfaces and returns + * a handle used in further calls. The argument should be SFPROV_VERSION + * from above. On failure it returns a NULL pointer. + * + * sfprov_disconnect() must only be called after all sf file systems have been + * unmounted. + */ +typedef struct sfp_connection sfp_connection_t; + +extern sfp_connection_t *sfprov_connect(int); +extern void sfprov_disconnect(sfp_connection_t *); + + +/* + * Mount / Unmount a shared folder. + * + * sfprov_mount() takes as input the connection pointer and the name of + * the shared folder. On success, it returns zero and supplies an + * sfp_mount_t handle. On failure it returns any relevant errno value. + * + * sfprov_unmount() unmounts the mounted file system. It returns 0 on + * success and any relevant errno on failure. + */ +typedef struct sfp_mount sfp_mount_t; + +extern int sfprov_mount(sfp_connection_t *, char *, sfp_mount_t **); +extern int sfprov_unmount(sfp_mount_t *); + +/* + * query information about a mounted file system + */ +extern int sfprov_get_blksize(sfp_mount_t *, uint64_t *); +extern int sfprov_get_blksused(sfp_mount_t *, uint64_t *); +extern int sfprov_get_blksavail(sfp_mount_t *, uint64_t *); +extern int sfprov_get_maxnamesize(sfp_mount_t *, uint32_t *); +extern int sfprov_get_readonly(sfp_mount_t *, uint32_t *); + +/* + * File operations: open/close/read/write/etc. + * + * open/create can return any relevant errno, however ENOENT + * generally means that the host file didn't exist. + */ +typedef struct sfp_file sfp_file_t; + +extern int sfprov_create(sfp_mount_t *, char *path, sfp_file_t **fp); +extern int sfprov_open(sfp_mount_t *, char *path, sfp_file_t **fp); +extern int sfprov_close(sfp_file_t *fp); +extern int sfprov_read(sfp_file_t *, char * buffer, uint64_t offset, + uint32_t *numbytes); +extern int sfprov_write(sfp_file_t *, char * buffer, uint64_t offset, + uint32_t *numbytes); + + +/* + * get information about a file (or directory) using pathname + */ +extern int sfprov_get_mode(sfp_mount_t *, char *, mode_t *); +extern int sfprov_get_size(sfp_mount_t *, char *, uint64_t *); +extern int sfprov_get_atime(sfp_mount_t *, char *, timestruc_t *); +extern int sfprov_get_mtime(sfp_mount_t *, char *, timestruc_t *); +extern int sfprov_get_ctime(sfp_mount_t *, char *, timestruc_t *); + + +/* + * File/Directory operations + */ +extern int sfprov_trunc(sfp_mount_t *, char *); +extern int sfprov_remove(sfp_mount_t *, char *path); +extern int sfprov_mkdir(sfp_mount_t *, char *path, sfp_file_t **fp); +extern int sfprov_rmdir(sfp_mount_t *, char *path); +extern int sfprov_rename(sfp_mount_t *, char *from, char *to, uint_t is_dir); + +/* + * Read directory entries. + */ +extern int sfprov_readdir(sfp_mount_t *mnt, char *path, void **buffer, + size_t *buffersize, uint32_t *nents); + +#ifdef __cplusplus +} +#endif + +#endif /* __VBoxFS_prov_Solaris_h */ diff --git a/src/VBox/Additions/solaris/SharedFolders/vboxfs_vfs.c b/src/VBox/Additions/solaris/SharedFolders/vboxfs_vfs.c new file mode 100644 index 000000000..599224a7b --- /dev/null +++ b/src/VBox/Additions/solaris/SharedFolders/vboxfs_vfs.c @@ -0,0 +1,486 @@ +/** @file + * VirtualBox File System for Solaris Guests, VFS implementation. + */ + +/* + * Copyright (C) 2009 Sun Microsystems, Inc. + * + * Sun Microsystems, Inc. confidential + * All rights reserved + */ + +#include <VBox/log.h> +#include <VBox/version.h> + +#include <sys/types.h> +#include <sys/mntent.h> +#include <sys/param.h> +#include <sys/modctl.h> +#include <sys/mount.h> +#include <sys/policy.h> +#include <sys/atomic.h> +#include <sys/sysmacros.h> +#include <sys/ddi.h> +#include <sys/sunddi.h> +#include <sys/vfs.h> +#if !defined(VBOX_VFS_SOLARIS_10U6) +#include <sys/vfs_opreg.h> +#endif +#include <sys/pathname.h> +#include "vboxfs_prov.h" +#include "vboxfs_vnode.h" +#include "vboxfs_vfs.h" + +#ifdef u +#undef u +#endif + +#define VBOXSOLQUOTE2(x) #x +#define VBOXSOLQUOTE(x) VBOXSOLQUOTE2(x) +/** The module name. */ +#define DEVICE_NAME "vboxfs" +/** The module description as seen in 'modinfo'. */ +#define DEVICE_DESC "VirtualBox ShrdFS" + + +/* + * Shared Folders filesystem implementation of the Solaris VFS interfaces. + * Much of this is cookie cutter code for Solaris filesystem implementation. + */ + +/* forward declarations */ +static int sffs_init(int fstype, char *name); +static int sffs_mount(vfs_t *, vnode_t *, struct mounta *, cred_t *); +static int sffs_unmount(vfs_t *vfsp, int flag, cred_t *cr); +static int sffs_root(vfs_t *vfsp, vnode_t **vpp); +static int sffs_statvfs(vfs_t *vfsp, statvfs64_t *sbp); + +static mntopt_t sffs_options[] = { + /* Option Cancels Opt Arg Flags Data */ + {"uid", NULL, NULL, MO_HASVALUE, NULL}, + {"gid", NULL, NULL, MO_HASVALUE, NULL} +}; + +static mntopts_t sffs_options_table = { + sizeof (sffs_options) / sizeof (mntopt_t), + sffs_options +}; + +static vfsdef_t sffs_vfsdef = { + VFSDEF_VERSION, + DEVICE_NAME, + sffs_init, + VSW_HASPROTO, + &sffs_options_table +}; + +static int sffs_fstype; +static int sffs_major; /* major number for device */ + +kmutex_t sffs_minor_lock; +int sffs_minor; /* minor number for device */ + +/* + * Module linkage information + */ +static struct modlfs modlfs = { + &mod_fsops, + DEVICE_DESC " " VBOX_VERSION_STRING "r" VBOXSOLQUOTE(VBOX_SVN_REV), + &sffs_vfsdef +}; + +static struct modlinkage modlinkage = { + MODREV_1, &modlfs, NULL +}; + +static sfp_connection_t *sfprov = NULL; + +int +_init() +{ + return (mod_install(&modlinkage)); +} + +int +_info(struct modinfo *modinfop) +{ + return (mod_info(&modlinkage, modinfop)); +} + + +int +_fini() +{ + int error; + + error = mod_remove(&modlinkage); + if (error) + return (error); + + /* + * Tear down the operations vectors + */ + sffs_vnode_fini(); + (void) vfs_freevfsops_by_type(sffs_fstype); + + /* + * close connection to the provider + */ + sfprov_disconnect(sfprov); + return (0); +} + + +static int +sffs_init(int fstype, char *name) +{ +#if defined(VBOX_VFS_SOLARIS_10U6) + static const fs_operation_def_t sffs_vfsops_template[] = { + VFSNAME_MOUNT, sffs_mount, + VFSNAME_UNMOUNT, sffs_unmount, + VFSNAME_ROOT, sffs_root, + VFSNAME_STATVFS, sffs_statvfs, + NULL, NULL + }; +#else + static const fs_operation_def_t sffs_vfsops_template[] = { + VFSNAME_MOUNT, { .vfs_mount = sffs_mount }, + VFSNAME_UNMOUNT, { .vfs_unmount = sffs_unmount }, + VFSNAME_ROOT, { .vfs_root = sffs_root }, + VFSNAME_STATVFS, { .vfs_statvfs = sffs_statvfs }, + NULL, NULL + }; +#endif + int error; + + ASSERT(fstype != 0); + sffs_fstype = fstype; + LogFlowFunc(("sffs_init() name=%s\n", name)); + + /* + * This may seem a silly way to do things for now. But the code + * is structured to easily allow it to be used on other hypervisors + * which would have a different implementation of the provider. + * Hopefully that'll never happen. :) + */ + sfprov = sfprov_connect(SFPROV_VERSION); + if (sfprov == NULL) { + cmn_err(CE_WARN, "sffs_init(): couldn't init sffs provider"); + return (ENODEV); + } + + error = vfs_setfsops(fstype, sffs_vfsops_template, NULL); + if (error != 0) { + cmn_err(CE_WARN, "sffs_init: bad vfs ops template"); + return (error); + } + + error = sffs_vnode_init(); + if (error != 0) { + (void) vfs_freevfsops_by_type(fstype); + cmn_err(CE_WARN, "sffs_init: bad vnode ops template"); + return (error); + } + + if ((sffs_major = getudev()) == (major_t)-1) { + cmn_err(CE_WARN, "sffs_init: Can't get unique device number."); + sffs_major = 0; + } + mutex_init(&sffs_minor_lock, NULL, MUTEX_DEFAULT, NULL); + return (0); +} + +/* + * wrapper for pn_get + */ +static int +sf_pn_get(char *rawpath, struct mounta *uap, char **outpath) +{ + pathname_t path; + int error; + + error = pn_get(rawpath, (uap->flags & MS_SYSSPACE) ? UIO_SYSSPACE : + UIO_USERSPACE, &path); + if (error) { + LogFlowFunc(("pn_get(%s) failed\n", rawpath)); + return (error); + } + *outpath = kmem_alloc(path.pn_pathlen + 1, KM_SLEEP); + strcpy(*outpath, path.pn_path); + pn_free(&path); + return (0); +} + +static int +sffs_mount(vfs_t *vfsp, vnode_t *mvp, struct mounta *uap, cred_t *cr) +{ + sffs_data_t *sffs; + char *mount_point = NULL; + char *share_name = NULL; + int error; + dev_t dev; + uid_t uid = 0; + gid_t gid = 0; + char *optval; + long val; + char *path; + sfp_mount_t *handle; + sfnode_t *sfnode; + + /* + * check we have permission to do the mount + */ + LogFlowFunc(("sffs_mount() started\n")); + error = secpolicy_fs_mount(cr, mvp, vfsp); + if (error != 0) + return (error); + + /* + * Mount point must be a directory + */ + if (mvp->v_type != VDIR) + return (ENOTDIR); + + /* + * no support for remount (what is it?) + */ + if (uap->flags & MS_REMOUNT) + return (ENOTSUP); + + /* + * Ensure that nothing else is actively in/under the mount point + */ + mutex_enter(&mvp->v_lock); + if ((uap->flags & MS_OVERLAY) == 0 && + (mvp->v_count != 1 || (mvp->v_flag & VROOT))) { + mutex_exit(&mvp->v_lock); + return (EBUSY); + } + mutex_exit(&mvp->v_lock); + + /* + * check for read only has to be done early + */ + if (uap->flags & MS_RDONLY) { + vfsp->vfs_flag |= VFS_RDONLY; + vfs_setmntopt(vfsp, MNTOPT_RO, NULL, 0); + } + + /* + * UID to use for all files + */ + if (vfs_optionisset(vfsp, "uid", &optval) && + ddi_strtol(optval, NULL, 10, &val) == 0 && + (uid_t)val == val) + uid = val; + + /* + * GID to use for all files + */ + if (vfs_optionisset(vfsp, "gid", &optval) && + ddi_strtol(optval, NULL, 10, &val) == 0 && + (gid_t)val == val) + gid = val; + + /* + * Any unknown options are an error + */ + if ((uap->flags & MS_DATA) && uap->datalen > 0) { + cmn_err(CE_WARN, "sffs: unknown mount options specified"); + return (EINVAL); + } + + /* + * get the mount point pathname + */ + error = sf_pn_get(uap->dir, uap, &mount_point); + if (error) + return (error); + + /* + * find what we are mounting + */ + error = sf_pn_get(uap->spec, uap, &share_name); + if (error) { + kmem_free(mount_point, strlen(mount_point) + 1); + return (error); + } + + /* + * Invoke Hypervisor mount interface before proceeding + */ + error = sfprov_mount(sfprov, share_name, &handle); + if (error) { + kmem_free(share_name, strlen(share_name) + 1); + kmem_free(mount_point, strlen(mount_point) + 1); + return (error); + } + + /* + * find an available minor device number for this mount + */ + mutex_enter(&sffs_minor_lock); + do { + sffs_minor = (sffs_minor + 1) & L_MAXMIN32; + dev = makedevice(sffs_major, sffs_minor); + } while (vfs_devismounted(dev)); + mutex_exit(&sffs_minor_lock); + + /* + * allocate and fill in the sffs structure + */ + sffs = kmem_alloc(sizeof (*sffs), KM_SLEEP); + sffs->sf_vfsp = vfsp; + sffs->sf_uid = uid; + sffs->sf_gid = gid; + sffs->sf_share_name = share_name; + sffs->sf_mntpath = mount_point; + sffs->sf_handle = handle; + sffs->sf_ino = 3; /* root mount point is always '3' */ + + /* + * fill in the vfs structure + */ + vfsp->vfs_data = (caddr_t)sffs; + vfsp->vfs_fstype = sffs_fstype; + vfsp->vfs_dev = dev; + vfsp->vfs_bsize = PAGESIZE; /* HERE JOE ??? */ + vfsp->vfs_flag |= VFS_NOTRUNC; /* HERE JOE ???? */ + vfs_make_fsid(&vfsp->vfs_fsid, dev, sffs_fstype); + + /* + * create the root vnode. + * XXX JOE What should the path be here? is "/" really right? + * other options? + */ + path = kmem_alloc(2, KM_SLEEP); + strcpy(path, "."); + mutex_enter(&sffs_lock); + sfnode = sfnode_make(sffs, path, VDIR, NULL, NULL); + sffs->sf_rootnode = sfnode_get_vnode(sfnode); + sffs->sf_rootnode->v_flag |= VROOT; + sffs->sf_rootnode->v_vfsp = vfsp; + mutex_exit(&sffs_lock); + + LogFlowFunc(("sffs_mount() success sffs=0x%p\n", sffs)); + return (error); +} + +static int +sffs_unmount(vfs_t *vfsp, int flag, cred_t *cr) +{ + sffs_data_t *sffs = (sffs_data_t *)vfsp->vfs_data; + int error; + + /* + * generic securty check + */ + LogFlowFunc(("sffs_unmount() of sffs=0x%p\n", sffs)); + if ((error = secpolicy_fs_unmount(cr, vfsp)) != 0) + return (error); + + /* + * forced unmount is not supported by this file system + * and thus, ENOTSUP, is being returned. + */ + if (flag & MS_FORCE) + return (ENOTSUP); + + /* + * Make sure nothing is still in use. + */ + if (sffs_purge(sffs) != 0) + return (EBUSY); + + /* + * Invoke Hypervisor unmount interface before proceeding + */ + error = sfprov_unmount(sffs->sf_handle); + if (error != 0) { + /* TBD anything here? */ + } + + kmem_free(sffs->sf_share_name, strlen(sffs->sf_share_name) + 1); + kmem_free(sffs->sf_mntpath, strlen(sffs->sf_mntpath) + 1); + kmem_free(sffs, sizeof(*sffs)); + LogFlowFunc(("sffs_unmount() done\n")); + return (0); +} + +/* + * return the vnode for the root of the mounted file system + */ +static int +sffs_root(vfs_t *vfsp, vnode_t **vpp) +{ + sffs_data_t *sffs = (sffs_data_t *)vfsp->vfs_data; + vnode_t *vp = sffs->sf_rootnode; + + VN_HOLD(vp); + *vpp = vp; + return (0); +} + +/* + * get some stats.. fake up the rest + */ +static int +sffs_statvfs(vfs_t *vfsp, statvfs64_t *sbp) +{ + sffs_data_t *sffs = (sffs_data_t *)vfsp->vfs_data; + uint64_t x; + uint32_t u; + dev32_t d32; + int error; + + bzero(sbp, sizeof(*sbp)); + error = sfprov_get_blksize(sffs->sf_handle, &x); + if (error != 0) + return (error); + sbp->f_bsize = x; + sbp->f_frsize = x; + + error = sfprov_get_blksavail(sffs->sf_handle, &x); + if (error != 0) + return (error); + sbp->f_bfree = x; + sbp->f_bavail = x; + sbp->f_files = x / 4; /* some kind of reasonable value */ + sbp->f_ffree = x / 4; + sbp->f_favail = x / 4; + + error = sfprov_get_blksused(sffs->sf_handle, &x); + if (error != 0) + return (error); + sbp->f_blocks = x + sbp->f_bavail; + + (void) cmpldev(&d32, vfsp->vfs_dev); + sbp->f_fsid = d32; + strcpy(&sbp->f_basetype[0], "sffs"); + sbp->f_flag |= ST_NOSUID; + + error = sfprov_get_readonly(sffs->sf_handle, &u); + if (error != 0) + return (error); + if (u) + sbp->f_flag |= ST_RDONLY; + + error = sfprov_get_maxnamesize(sffs->sf_handle, &u); + if (error != 0) + return (error); + sbp->f_namemax = u; + return (0); +} + +static void sffs_print(sffs_data_t *sffs) +{ + Log(("sffs_data_t at 0x%p\n", sffs)); + Log((" vfs_t *sf_vfsp = 0x%p\n", sffs->sf_vfsp)); + Log((" vnode_t *sf_rootnode = 0x%p\n", sffs->sf_rootnode)); + Log((" uid_t sf_uid = 0x%l\n", (ulong_t)sffs->sf_uid)); + Log((" gid_t sf_gid = 0x%l\n", (ulong_t)sffs->sf_gid)); + Log((" char *sf_share_name = %s\n", sffs->sf_share_name)); + Log((" char *sf_mntpath = %s\n", sffs->sf_mntpath)); + Log((" sfp_mount_t *sf_handle = 0x%p\n", sffs->sf_handle)); +} + diff --git a/src/VBox/Additions/solaris/SharedFolders/vboxfs_vfs.h b/src/VBox/Additions/solaris/SharedFolders/vboxfs_vfs.h new file mode 100644 index 000000000..95b93671b --- /dev/null +++ b/src/VBox/Additions/solaris/SharedFolders/vboxfs_vfs.h @@ -0,0 +1,38 @@ +/** @file + * VirtualBox File System Driver for Solaris Guests, VFS header. + */ + +/* + * Copyright (C) 2009 Sun Microsystems, Inc. + * + * Sun Microsystems, Inc. confidential + * All rights reserved + */ + +#ifndef __VBoxFS_vfs_Solaris_h +#define __VBoxFS_vfs_Solaris_h + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Shared Folders filesystem per-mount data structure. + */ +typedef struct sffs_data { + vfs_t *sf_vfsp; /* filesystem's vfs struct */ + vnode_t *sf_rootnode; /* of vnode of the root directory */ + uid_t sf_uid; /* owner of all shared folders */ + gid_t sf_gid; /* group of all shared folders */ + char *sf_share_name; + char *sf_mntpath; /* name of mount point */ + sfp_mount_t *sf_handle; + uint64_t sf_ino; /* per FS ino generator */ +} sffs_data_t; + + +#ifdef __cplusplus +} +#endif + +#endif /* __VBoxFS_vfs_Solaris_h */ diff --git a/src/VBox/Additions/solaris/SharedFolders/vboxfs_vnode.c b/src/VBox/Additions/solaris/SharedFolders/vboxfs_vnode.c new file mode 100644 index 000000000..793fb8b8f --- /dev/null +++ b/src/VBox/Additions/solaris/SharedFolders/vboxfs_vnode.c @@ -0,0 +1,1630 @@ +/** @file + * VirtualBox File System for Solaris Guests, vnode implementation. + */ + +/* + * Copyright (C) 2009 Sun Microsystems, Inc. + * + * Sun Microsystems, Inc. confidential + * All rights reserved + */ + +/* + * Shared Folder File System is used from Solaris when run as a guest operating + * system on VirtualBox, though is meant to be usable with any hypervisor that + * can provide similar functionality. The sffs code handles all the Solaris + * specific semantics and relies on a provider module to actually access + * directories, files, etc. The provider interfaces are described in + * "vboxfs_prov.h" and the module implementing them is shipped as part of the + * VirtualBox Guest Additions for Solaris. + * + * The shared folder file system is similar to a networked file system, + * but with some caveats. The sffs code caches minimal information and proxies + * out to the provider whenever possible. Here are some things that are + * handled in this code and not by the proxy: + * + * - a way to open ".." from any already open directory + * - st_ino numbers + * - detecting directory changes that happened on the host. + * + * The implementation builds a cache of information for every file/directory + * ever accessed in all mounted sffs filesystems using sf_node structures. + * + * This information for both open or closed files can become invalid if + * asynchronous changes are made on the host. Solaris should not panic() in + * this event, but some file system operations may return unexpected errors. + * Information for such directories or files while they have active vnodes + * is removed from the regular cache and stored in a "stale" bucket until + * the vnode becomes completely inactive. + * + * No file data is cached in the guest. This means we don't support mmap() yet. + * A future version could relatively easily add support for read-only + * mmap(MAP_SHARED) and any mmap(MAP_PRIVATE). But a la ZFS, this data caching + * would not be coherent with normal simultaneous read()/write() operations, + * nor will it be coherent with data access on the host. Writable + * mmap(MAP_SHARED) access is possible, but guaranteeing any kind of coherency + * with concurrent activity on the host would be near impossible with the + * existing interfaces. + * + * A note about locking. sffs is not a high performance file system. + * No fine grained locking is done. The one sffs_lock protects just about + * everything. + */ + +#include <VBox/log.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/mntent.h> +#include <sys/param.h> +#include <sys/modctl.h> +#include <sys/mount.h> +#include <sys/policy.h> +#include <sys/atomic.h> +#include <sys/sysmacros.h> +#include <sys/ddi.h> +#include <sys/sunddi.h> +#include <sys/vfs.h> +#if !defined(VBOX_VFS_SOLARIS_10U6) +#include <sys/vfs_opreg.h> +#endif +#include <sys/pathname.h> +#include <sys/dirent.h> +#include <sys/fs_subr.h> +#include "vboxfs_prov.h" +#include "vboxfs_vnode.h" +#include "vboxfs_vfs.h" + +static struct vnodeops *sffs_ops = NULL; + +kmutex_t sffs_lock; +static avl_tree_t sfnodes; +static avl_tree_t stale_sfnodes; + +/* + * For now we'll use an I/O buffer that doesn't page fault for VirtualBox + * to transfer data into. + */ +char *sffs_buffer; + +/* + * sfnode_compare() is needed for AVL tree functionality. + * The nodes are sorted by mounted filesystem, then path. If the + * nodes are stale, the node pointer itself is used to force uniqueness. + */ +static int +sfnode_compare(const void *a, const void *b) +{ + sfnode_t *x = (sfnode_t *)a; + sfnode_t *y = (sfnode_t *)b; + int diff; + + if (x->sf_is_stale) { + ASSERT(y->sf_is_stale); + diff = strcmp(x->sf_path, y->sf_path); + if (diff == 0) + diff = (uintptr_t)y - (uintptr_t)x; + } else { + ASSERT(!y->sf_is_stale); + diff = (uintptr_t)y->sf_sffs - (uintptr_t)x->sf_sffs; + if (diff == 0) + diff = strcmp(x->sf_path, y->sf_path); + } + if (diff < 0) + return (-1); + if (diff > 0) + return (1); + return (0); +} + +/* + * Construct a new pathname given an sfnode plus an optional tail component. + * This handles ".." and "." + */ +static char * +sfnode_construct_path(sfnode_t *node, char *tail) +{ + char *p; + + if (strcmp(tail, ".") == 0 || strcmp(tail, "..") == 0) + panic("construct path for %s", tail); + p = kmem_alloc(strlen(node->sf_path) + 1 + strlen(tail) + 1, KM_SLEEP); + strcpy(p, node->sf_path); + strcat(p, "/"); + strcat(p, tail); + return (p); +} + +/* + * Open the provider file associated with a vnode. Holding the file open is + * the only way we have of trying to have a vnode continue to refer to the + * same host file in the host in light of the possibility of host side renames. + */ +static void +sfnode_open(sfnode_t *node) +{ + int error; + sfp_file_t *fp; + + if (node->sf_file != NULL) + return; + error = sfprov_open(node->sf_sffs->sf_handle, node->sf_path, &fp); + if (error == 0) + node->sf_file = fp; +} + +/* + * get a new vnode reference for an sfnode + */ +vnode_t * +sfnode_get_vnode(sfnode_t *node) +{ + vnode_t *vp; + + if (node->sf_vnode != NULL) { + VN_HOLD(node->sf_vnode); + } else { + vp = vn_alloc(KM_SLEEP); + LogFlowFunc((" %s gets vnode 0x%p\n", node->sf_path, vp)); + vp->v_type = node->sf_type; + vp->v_vfsp = node->sf_sffs->sf_vfsp; + VFS_HOLD(vp->v_vfsp); + vn_setops(vp, sffs_ops); + vp->v_flag = VNOMAP | VNOSWAP; + vn_exists(vp); + vp->v_data = node; + node->sf_vnode = vp; + } + sfnode_open(node); + return (node->sf_vnode); +} + +/* + * Allocate and initialize a new sfnode and assign it a vnode + */ +sfnode_t * +sfnode_make( + sffs_data_t *sffs, + char *path, + vtype_t type, + sfp_file_t *fp, + sfnode_t *parent) /* can be NULL for root */ +{ + sfnode_t *node; + avl_index_t where; + + ASSERT(MUTEX_HELD(&sffs_lock)); + ASSERT(path != NULL); + + /* + * build the sfnode + */ + LogFlowFunc(("sffs_make(%s)\n", path)); + node = kmem_alloc(sizeof (*node), KM_SLEEP); + node->sf_sffs = sffs; + node->sf_path = path; + node->sf_ino = sffs->sf_ino++; + node->sf_type = type; + node->sf_is_stale = 0; /* never stale at creation */ + node->sf_file = fp; + node->sf_vnode = NULL; /* do this before any sfnode_get_vnode() */ + node->sf_children = 0; + node->sf_parent = parent; + if (parent) + ++parent->sf_children; + + /* + * add the new node to our cache + */ + if (avl_find(&sfnodes, node, &where) != NULL) + panic("sffs_create_sfnode(%s): duplicate sfnode_t", path); + avl_insert(&sfnodes, node, where); + return (node); +} + +/* + * destroy an sfnode + */ +static void +sfnode_destroy(sfnode_t *node) +{ + avl_index_t where; + avl_tree_t *tree; + sfnode_t *parent; +top: + parent = node->sf_parent; + ASSERT(MUTEX_HELD(&sffs_lock)); + ASSERT(node->sf_path != NULL); + LogFlowFunc(("sffs_destroy(%s)%s\n", node->sf_path, node->sf_is_stale ? " stale": "")); + if (node->sf_children != 0) + panic("sfnode_destroy(%s) has %d children", node->sf_children); + if (node->sf_vnode != NULL) + panic("sfnode_destroy(%s) has active vnode", node->sf_path); + + if (node->sf_is_stale) + tree = &stale_sfnodes; + else + tree = &sfnodes; + if (avl_find(tree, node, &where) == NULL) + panic("sfnode_destroy(%s) not found", node->sf_path); + avl_remove(tree, node); + + VFS_RELE(node->sf_sffs->sf_vfsp); + kmem_free(node->sf_path, strlen(node->sf_path) + 1); + kmem_free(node, sizeof (*node)); + if (parent != NULL) { + if (parent->sf_children == 0) + panic("sfnode_destroy(%s) parent has no child"); + --parent->sf_children; + if (parent->sf_children == 0 && + parent->sf_is_stale && + parent->sf_vnode == NULL) { + node = parent; + goto top; + } + } +} + +/* + * Some sort of host operation on an sfnode has failed or it has been + * deleted. Mark this node and any children as stale, deleting knowledge + * about any which do not have active vnodes or children + * This also handle deleting an inactive node that was already stale. + */ +static void +sfnode_make_stale(sfnode_t *node) +{ + sfnode_t *n; + int len; + ASSERT(MUTEX_HELD(&sffs_lock)); + avl_index_t where; + + /* + * First deal with any children of a directory node. + * If a directory becomes stale, anything below it becomes stale too. + */ + if (!node->sf_is_stale && node->sf_type == VDIR) { + len = strlen(node->sf_path); + + n = node; + while ((n = AVL_NEXT(&sfnodes, node)) != NULL) { + ASSERT(!n->sf_is_stale); + + /* + * quit when no longer seeing children of node + */ + if (n->sf_sffs != node->sf_sffs || + strncmp(node->sf_path, n->sf_path, len) != 0 || + n->sf_path[len] != '/') + break; + + /* + * Either mark the child as stale or destroy it + */ + if (n->sf_vnode == NULL && n->sf_children == 0) { + sfnode_destroy(n); + } else { + LogFlowFunc(("sffs_make_stale(%s) sub\n", n->sf_path)); + if (avl_find(&sfnodes, n, &where) == NULL) + panic("sfnode_make_stale(%s)" + " not in sfnodes", n->sf_path); + avl_remove(&sfnodes, n); + n->sf_is_stale = 1; + if (avl_find(&stale_sfnodes, n, &where) != NULL) + panic("sffs_make_stale(%s) duplicates", + n->sf_path); + avl_insert(&stale_sfnodes, n, where); + } + } + } + + /* + * Now deal with the given node. + */ + if (node->sf_vnode == NULL && node->sf_children == 0) { + sfnode_destroy(node); + } else if (!node->sf_is_stale) { + LogFlowFunc(("sffs_make_stale(%s)\n", node->sf_path)); + if (avl_find(&sfnodes, node, &where) == NULL) + panic("sfnode_make_stale(%s) not in sfnodes", + node->sf_path); + avl_remove(&sfnodes, node); + node->sf_is_stale = 1; + if (avl_find(&stale_sfnodes, node, &where) != NULL) + panic("sffs_make_stale(%s) duplicates", node->sf_path); + avl_insert(&stale_sfnodes, node, where); + } +} + +/* + * Rename a file or a directory + */ +static void +sfnode_rename(sfnode_t *node, sfnode_t *newparent, char *path) +{ + sfnode_t *n; + sfnode_t template; + avl_index_t where; + int len = strlen(path); + int old_len; + char *new_path; + char *tail; + ASSERT(MUTEX_HELD(&sffs_lock)); + + ASSERT(!node->sf_is_stale); + + /* + * Have to remove anything existing that had the new name. + */ + template.sf_sffs = node->sf_sffs; + template.sf_path = path; + template.sf_is_stale = 0; + n = avl_find(&sfnodes, &template, &where); + if (n != NULL) + sfnode_make_stale(n); + + /* + * Do the renaming, deal with any children of this node first. + */ + if (node->sf_type == VDIR) { + old_len = strlen(node->sf_path); + while ((n = AVL_NEXT(&sfnodes, node)) != NULL) { + + /* + * quit when no longer seeing children of node + */ + if (n->sf_sffs != node->sf_sffs || + strncmp(node->sf_path, n->sf_path, old_len) != 0 || + n->sf_path[old_len] != '/') + break; + + /* + * Rename the child: + * - build the new path name + * - unlink the AVL node + * - assign the new name + * - re-insert the AVL name + */ + ASSERT(strlen(n->sf_path) > old_len); + tail = n->sf_path + old_len; /* includes intial "/" */ + new_path = kmem_alloc(len + strlen(tail) + 1, + KM_SLEEP); + strcpy(new_path, path); + strcat(new_path, tail); + if (avl_find(&sfnodes, n, &where) == NULL) + panic("sfnode_rename(%s) not in sfnodes", + n->sf_path); + avl_remove(&sfnodes, n); + LogFlowFunc(("sfnode_rname(%s to %s) sub\n", n->sf_path, new_path)); + kmem_free(n->sf_path, strlen(n->sf_path) + 1); + n->sf_path = new_path; + if (avl_find(&sfnodes, n, &where) != NULL) + panic("sfnode_rename(%s) duplicates", + n->sf_path); + avl_insert(&sfnodes, n, where); + } + } + + /* + * Deal with the given node. + */ + if (avl_find(&sfnodes, node, &where) == NULL) + panic("sfnode_rename(%s) not in sfnodes", node->sf_path); + avl_remove(&sfnodes, node); + LogFlowFunc(("sfnode_rname(%s to %s)\n", node->sf_path, path)); + kmem_free(node->sf_path, strlen(node->sf_path) + 1); + node->sf_path = path; + if (avl_find(&sfnodes, node, &where) != NULL) + panic("sfnode_rename(%s) duplicates", node->sf_path); + avl_insert(&sfnodes, node, where); + + /* + * change the parent + */ + if (node->sf_parent == NULL) + panic("sfnode_rename(%s) no parent", node->sf_path); + if (node->sf_parent->sf_children == 0) + panic("sfnode_rename(%s) parent has no child", node->sf_path); + --node->sf_parent->sf_children; + node->sf_parent = newparent; + ++newparent->sf_children; +} + +/* + * Look for a cached node, if not found either handle ".." or try looking + * via the provider. Create an entry in sfnodes if found but not cached yet. + * If the create flag is set, a file or directory is created. If the file + * already existed, an error is returned. + * Nodes returned from this routine always have a vnode with its ref count + * bumped by 1. + */ +static sfnode_t * +sfnode_lookup(sfnode_t *dir, char *name, vtype_t create) +{ + avl_index_t where; + sfnode_t template; + sfnode_t *node; + int error; + int type; + char *fullpath; + sfp_file_t *fp; + + ASSERT(MUTEX_HELD(&sffs_lock)); + + /* + * handle referencing myself + */ + if (strcmp(name, "") == 0 || strcmp(name, ".") == 0) + return (dir); + + /* + * deal with parent + */ + if (strcmp(name, "..") == 0) + return (dir->sf_parent); + + /* + * Look for an existing node. + */ + fullpath = sfnode_construct_path(dir, name); + template.sf_sffs = dir->sf_sffs; + template.sf_path = fullpath; + template.sf_is_stale = 0; + node = avl_find(&sfnodes, &template, &where); + if (node != NULL) { + kmem_free(fullpath, strlen(fullpath) + 1); + if (create != VNON) + return (NULL); + return (node); + } + + /* + * No entry for this path currently. + * Check if the file exists with the provider and get the type from + * there. + */ + if (create == VREG) { + type = VREG; + error = sfprov_create(dir->sf_sffs->sf_handle, fullpath, &fp); + } else if (create == VDIR) { + type = VDIR; + error = sfprov_mkdir(dir->sf_sffs->sf_handle, fullpath, &fp); + } else { + mode_t m; + fp = NULL; + type = VNON; + error = + sfprov_get_mode(dir->sf_sffs->sf_handle, fullpath, &m); + if (error != 0) + error = ENOENT; + else if (S_ISDIR(m)) + type = VDIR; + else if (S_ISREG(m)) + type = VREG; + } + + /* + * If no errors, make a new node and return it. + */ + if (error) { + kmem_free(fullpath, strlen(fullpath) + 1); + return (NULL); + } + node = sfnode_make(dir->sf_sffs, fullpath, type, fp, dir); + return (node); +} + + +/* + * uid and gid in sffs determine owner and group for all files. + */ +static int +sfnode_access(sfnode_t *node, mode_t mode, cred_t *cr) +{ + sffs_data_t *sffs = node->sf_sffs; + mode_t m; + int shift = 0; + int error; + vnode_t *vp; + + ASSERT(MUTEX_HELD(&sffs_lock)); + + /* + * get the mode from the provider + */ + error = sfprov_get_mode(node->sf_sffs->sf_handle, node->sf_path, &m); + if (error != 0) { + m = 0; + if (error == ENOENT) + sfnode_make_stale(node); + } + + /* + * mask off the permissions based on uid/gid + */ + if (crgetuid(cr) != sffs->sf_uid) { + shift += 3; + if (groupmember(sffs->sf_gid, cr) == 0) + shift += 3; + } + mode &= ~(m << shift); + + if (mode == 0) { + error = 0; + } else { + vp = sfnode_get_vnode(node); + error = secpolicy_vnode_access(cr, vp, sffs->sf_uid, mode); + VN_RELE(vp); + } + return (error); +} + + +/* + * + * Everything below this point are the vnode operations used by Solaris VFS + */ +static int +sffs_readdir( + vnode_t *vp, + uio_t *uiop, + cred_t *cred, + int *eofp, + caller_context_t *ct, + int flags) +{ + sfnode_t *dir = VN2SFN(vp); + sfnode_t *node; + struct dirent64 *dirent; + int dummy_eof; + int error = 0; + int namelen; + void *prov_buff = NULL; + size_t prov_buff_size; + char **names; + uint32_t nents; + uint32_t index; + + if (uiop->uio_iovcnt != 1) + return (EINVAL); + + if (vp->v_type != VDIR) + return (ENOTDIR); + + if (eofp == NULL) + eofp = &dummy_eof; + *eofp = 0; + + if (uiop->uio_loffset >= MAXOFF_T) { + *eofp = 1; + return (0); + } + + dirent = kmem_zalloc(DIRENT64_RECLEN(MAXNAMELEN), KM_SLEEP); + + /* + * Get the directory entry names from the host. This gets all + * entries, so add in starting offset. Max the caller can expect + * would be the size of the UIO buffer / sizeof of a dirent for + * file with name of length 1 + */ + mutex_enter(&sffs_lock); + index = uiop->uio_loffset; + nents = index + (uiop->uio_resid / DIRENT64_RECLEN(1)); + error = sfprov_readdir(dir->sf_sffs->sf_handle, dir->sf_path, + &prov_buff, &prov_buff_size, &nents); + if (error != 0) + goto done; + if (nents <= index) { + *eofp = 1; + goto done; + } + names = (void *)prov_buff; + + /* + * Lookup each of the names, so that we have ino's. + */ + for (; index < nents; ++index) { + if (strcmp(names[index], ".") == 0) { + node = dir; + } else if (strcmp(names[index], "..") == 0) { + node = dir->sf_parent; + if (node == NULL) + node = dir; + } else { + node = sfnode_lookup(dir, names[index], VNON); + if (node == NULL) + panic("sffs_readdir() lookup failed"); + } + namelen = strlen(names[index]); + strcpy(&dirent->d_name[0], names[index]); + dirent->d_reclen = DIRENT64_RECLEN(namelen); + dirent->d_off = index; + dirent->d_ino = node->sf_ino; + if (dirent->d_reclen > uiop->uio_resid) { + error = ENOSPC; + break; + } + error = uiomove(dirent, dirent->d_reclen, UIO_READ, uiop); + if (error != 0) + break; + bzero(&dirent->d_name[0], namelen); + } + if (error == 0 && index >= nents) + *eofp = 1; +done: + mutex_exit(&sffs_lock); + if (prov_buff != NULL) + kmem_free(prov_buff, prov_buff_size); + kmem_free(dirent, DIRENT64_RECLEN(MAXNAMELEN)); + return (error); +} + + +#if defined(VBOX_VFS_SOLARIS_10U6) +/* + * HERE JOE.. this may need more logic, need to look at other file systems + */ +static int +sffs_pathconf( + vnode_t *vp, + int cmd, + ulong_t *valp, + cred_t *cr) +{ + return (fs_pathconf(vp, cmd, valp, cr)); +} +#else +/* + * HERE JOE.. this may need more logic, need to look at other file systems + */ +static int +sffs_pathconf( + vnode_t *vp, + int cmd, + ulong_t *valp, + cred_t *cr, + caller_context_t *ct) +{ + return (fs_pathconf(vp, cmd, valp, cr, ct)); +} +#endif + +static int +sffs_getattr( + vnode_t *vp, + vattr_t *vap, + int flags, + cred_t *cred, + caller_context_t *ct) +{ + sfnode_t *node = VN2SFN(vp); + sffs_data_t *sffs = node->sf_sffs; + mode_t mode; + timestruc_t time; + uint64_t x; + int error; + + mutex_enter(&sffs_lock); + vap->va_type = vp->v_type; + vap->va_uid = sffs->sf_uid; + vap->va_gid = sffs->sf_gid; + vap->va_fsid = sffs->sf_vfsp->vfs_dev; + vap->va_nodeid = node->sf_ino; + vap->va_nlink = 1; + vap->va_rdev = sffs->sf_vfsp->vfs_dev; + vap->va_seq = 0; + + error = sfprov_get_mode(node->sf_sffs->sf_handle, node->sf_path, &mode); + if (error == ENOENT) + sfnode_make_stale(node); + if (error != 0) + goto done; + vap->va_mode = mode & MODEMASK; + + error = sfprov_get_size(node->sf_sffs->sf_handle, node->sf_path, &x); + if (error == ENOENT) + sfnode_make_stale(node); + if (error != 0) + goto done; + vap->va_size = x; + vap->va_blksize = 512; + vap->va_nblocks = (x + 511) / 512; + + error = + sfprov_get_atime(node->sf_sffs->sf_handle, node->sf_path, &time); + if (error == ENOENT) + sfnode_make_stale(node); + if (error != 0) + goto done; + vap->va_atime = time; + + error = + sfprov_get_mtime(node->sf_sffs->sf_handle, node->sf_path, &time); + if (error == ENOENT) + sfnode_make_stale(node); + if (error != 0) + goto done; + vap->va_mtime = time; + + error = + sfprov_get_ctime(node->sf_sffs->sf_handle, node->sf_path, &time); + if (error == ENOENT) + sfnode_make_stale(node); + if (error != 0) + goto done; + vap->va_ctime = time; + +done: + mutex_exit(&sffs_lock); + return (error); +} + +/*ARGSUSED*/ +static int +sffs_read( + vnode_t *vp, + struct uio *uio, + int ioflag, + cred_t *cred, + caller_context_t *ct) +{ + sfnode_t *node = VN2SFN(vp); + int error = 0; + uint32_t bytes; + uint32_t done; + ulong_t offset; + ssize_t total; + + if (vp->v_type == VDIR) + return (EISDIR); + if (vp->v_type != VREG) + return (EINVAL); + if (uio->uio_loffset >= MAXOFF_T) + return (0); + if (uio->uio_loffset < 0) + return (EINVAL); + total = uio->uio_resid; + if (total == 0) + return (0); + + mutex_enter(&sffs_lock); + sfnode_open(node); + if (node->sf_file == NULL) { + mutex_exit(&sffs_lock); + return (EINVAL); + } + + do { + offset = uio->uio_offset; + done = bytes = MIN(PAGESIZE, uio->uio_resid); + error = sfprov_read(node->sf_file, sffs_buffer, offset, &done); + if (error == 0 && done > 0) + error = uiomove(sffs_buffer, done, UIO_READ, uio); + } while (error == 0 && uio->uio_resid > 0 && done > 0); + + mutex_exit(&sffs_lock); + + /* + * a partial read is never an error + */ + if (total != uio->uio_resid) + error = 0; + return (error); +} + +/*ARGSUSED*/ +static int +sffs_write( + vnode_t *vp, + struct uio *uiop, + int ioflag, + cred_t *cred, + caller_context_t *ct) +{ + sfnode_t *node = VN2SFN(vp); + int error = 0; + uint32_t bytes; + uint32_t done; + ulong_t offset; + ssize_t total; + rlim64_t limit = uiop->uio_llimit; + + if (vp->v_type == VDIR) + return (EISDIR); + if (vp->v_type != VREG) + return (EINVAL); + + /* + * We have to hold this lock for a long time to keep + * multiple FAPPEND writes from intermixing + */ + mutex_enter(&sffs_lock); + sfnode_open(node); + if (node->sf_file == NULL) { + mutex_exit(&sffs_lock); + return (EINVAL); + } + if (ioflag & FAPPEND) { + uint64_t endoffile; + + error = sfprov_get_size(node->sf_sffs->sf_handle, + node->sf_path, &endoffile); + if (error == ENOENT) + sfnode_make_stale(node); + if (error != 0) { + mutex_exit(&sffs_lock); + return (error); + } + uiop->uio_loffset = endoffile; + } + + if (vp->v_type != VREG || uiop->uio_loffset < 0) { + mutex_exit(&sffs_lock); + return (EINVAL); + } + if (limit == RLIM64_INFINITY || limit > MAXOFFSET_T) + limit = MAXOFFSET_T; + if (limit > MAXOFF_T) + limit = MAXOFF_T; + + if (uiop->uio_loffset >= limit) { + proc_t *p = ttoproc(curthread); + mutex_enter(&p->p_lock); + (void) rctl_action(rctlproc_legacy[RLIMIT_FSIZE], p->p_rctls, + p, RCA_UNSAFE_SIGINFO); + mutex_exit(&p->p_lock); + mutex_exit(&sffs_lock); + return (EFBIG); + } + + if (uiop->uio_loffset >= MAXOFF_T) { + mutex_exit(&sffs_lock); + return (EFBIG); + } + + + total = uiop->uio_resid; + if (total == 0) { + mutex_exit(&sffs_lock); + return (0); + } + + do { + offset = uiop->uio_offset; + bytes = MIN(PAGESIZE, uiop->uio_resid); + if (offset + bytes >= limit) { + if (offset >= limit) { + error = EFBIG; + break; + } + bytes = limit - offset; + } + error = uiomove(sffs_buffer, bytes, UIO_WRITE, uiop); + if (error != 0) + break; + done = bytes; + if (error == 0) + error = sfprov_write(node->sf_file, sffs_buffer, + offset, &done); + total -= done; + if (done != bytes) { + uiop->uio_resid += bytes - done; + break; + } + } while (error == 0 && uiop->uio_resid > 0 && done > 0); + + mutex_exit(&sffs_lock); + + /* + * A short write is never really an error. + */ + if (total != uiop->uio_resid) + error = 0; + return (error); +} + +/*ARGSUSED*/ +static int +sffs_access(vnode_t *vp, int mode, int flags, cred_t *cr, caller_context_t *ct) +{ + sfnode_t *node = VN2SFN(vp); + int error; + + mutex_enter(&sffs_lock); + error = sfnode_access(node, mode, cr); + mutex_exit(&sffs_lock); + return (error); +} + +/* + * Lookup an entry in a directory and create a new vnode if found. + */ +/* ARGSUSED3 */ +static int +sffs_lookup( + vnode_t *dvp, /* the directory vnode */ + char *name, /* the name of the file or directory */ + vnode_t **vpp, /* the vnode we found or NULL */ + struct pathname *pnp, + int flags, + vnode_t *rdir, + cred_t *cred, + caller_context_t *ct, + int *direntflags, + struct pathname *realpnp) +{ + int error; + sfnode_t *node; + + /* + * dvp must be a directory + */ + if (dvp->v_type != VDIR) + return (ENOTDIR); + + /* + * An empty component name or just "." means the directory itself. + * Don't do any further lookup or checking. + */ + if (strcmp(name, "") == 0 || strcmp(name, ".") == 0) { + VN_HOLD(dvp); + *vpp = dvp; + return (0); + } + + /* + * Check permission to look at this directory. We always allow "..". + */ + mutex_enter(&sffs_lock); + if (strcmp(name, "..") != 0) { + error = sfnode_access(VN2SFN(dvp), VEXEC, cred); + if (error) { + mutex_exit(&sffs_lock); + return (error); + } + } + + /* + * Lookup the node. + */ + node = sfnode_lookup(VN2SFN(dvp), name, VNON); + if (node != NULL) + *vpp = sfnode_get_vnode(node); + mutex_exit(&sffs_lock); + return ((node == NULL) ? ENOENT : 0); +} + +/*ARGSUSED*/ +static int +sffs_create( + vnode_t *dvp, + char *name, + struct vattr *vap, + vcexcl_t exclusive, + int mode, + vnode_t **vpp, + cred_t *cr, + int flag, + caller_context_t *ct, + vsecattr_t *vsecp) +{ + vnode_t *vp; + sfnode_t *node; + int error; + + ASSERT(name != NULL); + + /* + * this is used for regular files, not mkdir + */ + if (vap->va_type == VDIR) + return (EISDIR); + if (vap->va_type != VREG) + return (EINVAL); + + /* + * is this a pre-existing file? + */ + error = sffs_lookup(dvp, name, &vp, + NULL, 0, NULL, cr, ct, NULL, NULL); + if (error == ENOENT) + vp = NULL; + else if (error != 0) + return (error); + + /* + * Operation on a pre-existing file. + */ + if (vp != NULL) { + if (exclusive == EXCL) { + VN_RELE(vp); + return (EEXIST); + } + if (vp->v_type == VDIR && (mode & VWRITE) == VWRITE) { + VN_RELE(vp); + return (EISDIR); + } + + mutex_enter(&sffs_lock); + node = VN2SFN(vp); + error = sfnode_access(node, mode, cr); + if (error != 0) { + mutex_exit(&sffs_lock); + VN_RELE(vp); + return (error); + } + + /* + * handle truncating an existing file + */ + if (vp->v_type == VREG && (vap->va_mask & AT_SIZE) && + vap->va_size == 0) { + sfnode_open(node); + if (node->sf_path == NULL) + error = ENOENT; + else + error = sfprov_trunc(node->sf_sffs->sf_handle, + node->sf_path); + if (error) { + mutex_exit(&sffs_lock); + VN_RELE(vp); + return (error); + } + } + mutex_exit(&sffs_lock); + *vpp = vp; + return (0); + } + + /* + * Create a new node. First check for a race creating it. + */ + mutex_enter(&sffs_lock); + node = sfnode_lookup(VN2SFN(dvp), name, VNON); + if (node != NULL) { + mutex_exit(&sffs_lock); + return (EEXIST); + } + + /* + * Doesn't exist yet and we have the lock, so create it. + */ + node = sfnode_lookup(VN2SFN(dvp), name, VREG); + mutex_exit(&sffs_lock); + if (node == NULL) + return (EINVAL); + *vpp = sfnode_get_vnode(node); + return (0); +} + +/*ARGSUSED*/ +static int +sffs_mkdir( + vnode_t *dvp, + char *nm, + vattr_t *va, + vnode_t **vpp, + cred_t *cred, + caller_context_t *ct, + int flags, + vsecattr_t *vsecp) +{ + sfnode_t *node; + vnode_t *vp; + int error; + + /* + * These should never happen + */ + ASSERT(nm != NULL); + ASSERT(strcmp(nm, "") != 0); + ASSERT(strcmp(nm, ".") != 0); + ASSERT(strcmp(nm, "..") != 0); + + /* + * Do an unlocked look up first + */ + error = sffs_lookup(dvp, nm, &vp, NULL, 0, NULL, cred, ct, NULL, NULL); + if (error == 0) { + VN_RELE(vp); + return (EEXIST); + } + if (error != ENOENT) + return (error); + + /* + * Must be able to write in current directory + */ + mutex_enter(&sffs_lock); + error = sfnode_access(VN2SFN(dvp), VWRITE, cred); + if (error) { + mutex_exit(&sffs_lock); + return (error); + } + + node = sfnode_lookup(VN2SFN(dvp), nm, VDIR); + mutex_exit(&sffs_lock); + if (node == NULL) + return (EACCES); + *vpp = sfnode_get_vnode(node); + return (0); +} + +/*ARGSUSED*/ +static int +sffs_rmdir( + struct vnode *dvp, + char *nm, + vnode_t *cdir, + cred_t *cred, + caller_context_t *ct, + int flags) +{ + sfnode_t *node; + vnode_t *vp; + int error; + + /* + * Return error when removing . and .. + */ + if (strcmp(nm, ".") == 0 || strcmp(nm, "") == 0) + return (EINVAL); + if (strcmp(nm, "..") == 0) + return (EEXIST); + + error = sffs_lookup(dvp, nm, &vp, NULL, 0, NULL, cred, ct, NULL, NULL); + if (error) + return (error); + if (vp->v_type != VDIR) { + VN_RELE(vp); + return (ENOTDIR); + } + if (vn_vfswlock(vp) || vn_mountedvfs(vp)) { + VN_RELE(vp); + return (EBUSY); + } + + node = VN2SFN(vp); + + mutex_enter(&sffs_lock); + error = sfnode_access(VN2SFN(dvp), VEXEC | VWRITE, cred); + if (error) + goto done; + + /* + * If anything else is using this vnode, then fail the remove. + * Why? Windows hosts can't remove something that is open, + * so we have to sfprov_close() it first. + * There is no errno for this - since it's not a problem on UNIX, + * but EINVAL is the closest. + */ + if (node->sf_file != NULL) { + if (vp->v_count > 1) { + error = EINVAL; + goto done; + } + (void)sfprov_close(node->sf_file); + node->sf_file = NULL; + } + + /* + * Remove the directory on the host and mark the node as stale. + */ + error = sfprov_rmdir(node->sf_sffs->sf_handle, node->sf_path); + if (error == ENOENT || error == 0) + sfnode_make_stale(node); +done: + mutex_exit(&sffs_lock); + VN_RELE(vp); + return (error); +} + + +/*ARGSUSED*/ +static int +sffs_remove( + vnode_t *dvp, + char *name, + cred_t *cred, + caller_context_t *ct, + int flags) +{ + vnode_t *vp; + sfnode_t *node; + int error; + + /* + * These should never happen + */ + ASSERT(name != NULL); + ASSERT(strcmp(name, "..") != 0); + + error = sffs_lookup(dvp, name, &vp, + NULL, 0, NULL, cred, ct, NULL, NULL); + if (error) + return (error); + node = VN2SFN(vp); + + mutex_enter(&sffs_lock); + error = sfnode_access(VN2SFN(dvp), VEXEC | VWRITE, cred); + if (error) + goto done; + + /* + * If anything else is using this vnode, then fail the remove. + * Why? Windows hosts can't sfprov_remove() a file that is open, + * so we have to sfprov_close() it first. + * There is no errno for this - since it's not a problem on UNIX, + * but ETXTBSY is the closest. + */ + if (node->sf_file != NULL) { + if (vp->v_count > 1) { + error = ETXTBSY; + goto done; + } + (void)sfprov_close(node->sf_file); + node->sf_file = NULL; + } + + /* + * Remove the file on the host and mark the node as stale. + */ + error = sfprov_remove(node->sf_sffs->sf_handle, node->sf_path); + if (error == ENOENT || error == 0) + sfnode_make_stale(node); +done: + mutex_exit(&sffs_lock); + VN_RELE(vp); + return (error); +} + +/*ARGSUSED*/ +static int +sffs_rename( + vnode_t *old_dir, + char *old_nm, + vnode_t *new_dir, + char *new_nm, + cred_t *cred, + caller_context_t *ct, + int flags) +{ + char *newpath; + int error; + sfnode_t *node; + + if (strcmp(new_nm, "") == 0 || + strcmp(new_nm, ".") == 0 || + strcmp(new_nm, "..") == 0 || + strcmp(old_nm, "") == 0 || + strcmp(old_nm, ".") == 0 || + strcmp(old_nm, "..") == 0) + return (EINVAL); + + /* + * make sure we have permission to do the rename + */ + mutex_enter(&sffs_lock); + error = sfnode_access(VN2SFN(old_dir), VEXEC | VWRITE, cred); + if (error == 0 && new_dir != old_dir) + error = sfnode_access(VN2SFN(new_dir), VEXEC | VWRITE, cred); + if (error) + goto done; + + node = sfnode_lookup(VN2SFN(old_dir), old_nm, VNON); + if (node == NULL) { + error = ENOENT; + goto done; + } + + + /* + * Rename the file on the host and in our caches. + */ + newpath = sfnode_construct_path(VN2SFN(new_dir), new_nm); + error = sfprov_rename(node->sf_sffs->sf_handle, node->sf_path, newpath, + node->sf_type == VDIR); + if (error == 0) + sfnode_rename(node, VN2SFN(new_dir), newpath); + else { + kmem_free(newpath, strlen(newpath) + 1); + if (error == ENOENT) + sfnode_make_stale(node); + } +done: + mutex_exit(&sffs_lock); + return (error); +} + + +/*ARGSUSED*/ +static int +sffs_fsync(vnode_t *vp, int flag, cred_t *cr, caller_context_t *ct) +{ +#if 0 + sfnode_t *node; + + /* + * Ask the host to sync any data it may have cached for open files. + * I don't think we care about errors. + */ + mutex_enter(&sffs_lock); + node = VN2SFN(vp); + if (node->sf_file != NULL) + (void) sfprov_fsync(node->sf_file); + mutex_exit(&sffs_lock); +#endif + return (0); +} + +/* + * This may be the last reference, possibly time to close the file and + * destroy the vnode. If the sfnode is stale, we'll destroy that too. + */ +/*ARGSUSED*/ +static void +sffs_inactive(vnode_t *vp, cred_t *cr, caller_context_t *ct) +{ + sfnode_t *node; + + /* + * nothing to do if this isn't the last use + */ + mutex_enter(&sffs_lock); + node = VN2SFN(vp); + mutex_enter(&vp->v_lock); + if (vp->v_count > 1) { + --vp->v_count; + mutex_exit(&vp->v_lock); + mutex_exit(&sffs_lock); + return; + } + + /* + * There should never be cached data, since we don't support mmap(). + */ + if (vn_has_cached_data(vp)) + panic("sffs_inactive() found cached data"); + + /* + * destroy the vnode + */ + node->sf_vnode = NULL; + mutex_exit(&vp->v_lock); + vn_invalid(vp); + vn_free(vp); + LogFlowFunc((" %s vnode cleared\n", node->sf_path)); + + /* + * Close the sf_file for the node. + */ + if (node->sf_file != NULL) { + (void)sfprov_close(node->sf_file); + node->sf_file = NULL; + } + + /* + * If the node is stale, we can also destroy it. + */ + if (node->sf_is_stale && node->sf_children == 0) + sfnode_destroy(node); + + mutex_exit(&sffs_lock); + return; +} + +/* + * All the work for this is really done in lookup. + */ +/*ARGSUSED*/ +static int +sffs_open(vnode_t **vpp, int flag, cred_t *cr, caller_context_t *ct) +{ + return (0); +} + +/* + * All the work for this is really done in inactive. + */ +/*ARGSUSED*/ +static int +sffs_close( + vnode_t *vp, + int flag, + int count, + offset_t offset, + cred_t *cr, + caller_context_t *ct) +{ + return (0); +} + +/* ARGSUSED */ +static int +sffs_seek(vnode_t *v, offset_t o, offset_t *no, caller_context_t *ct) +{ + if (*no < 0 || *no > MAXOFFSET_T) + return (EINVAL); + return (0); +} + + + +/* + * By returning an error for this, we prevent anything in sffs from + * being re-exported by NFS + */ +/* ARGSUSED */ +static int +sffs_fid(vnode_t *vp, fid_t *fidp, caller_context_t *ct) +{ + return (ENOTSUP); +} + +/* + * vnode operations for regular files + */ +const fs_operation_def_t sffs_ops_template[] = { +#if defined(VBOX_VFS_SOLARIS_10U6) + VOPNAME_ACCESS, sffs_access, + VOPNAME_CLOSE, sffs_close, + VOPNAME_CREATE, sffs_create, + VOPNAME_FID, sffs_fid, + VOPNAME_FSYNC, sffs_fsync, + VOPNAME_GETATTR, sffs_getattr, + VOPNAME_INACTIVE, sffs_inactive, + VOPNAME_LOOKUP, sffs_lookup, + VOPNAME_MKDIR, sffs_mkdir, + VOPNAME_OPEN, sffs_open, + VOPNAME_PATHCONF, sffs_pathconf, + VOPNAME_READ, sffs_read, + VOPNAME_READDIR, sffs_readdir, + VOPNAME_REMOVE, sffs_remove, + VOPNAME_RENAME, sffs_rename, + VOPNAME_RMDIR, sffs_rmdir, + VOPNAME_SEEK, sffs_seek, + VOPNAME_WRITE, sffs_write, + NULL, NULL +#else + VOPNAME_ACCESS, { .vop_access = sffs_access }, + VOPNAME_CLOSE, { .vop_close = sffs_close }, + VOPNAME_CREATE, { .vop_create = sffs_create }, + VOPNAME_FID, { .vop_fid = sffs_fid }, + VOPNAME_FSYNC, { .vop_fsync = sffs_fsync }, + VOPNAME_GETATTR, { .vop_getattr = sffs_getattr }, + VOPNAME_INACTIVE, { .vop_inactive = sffs_inactive }, + VOPNAME_LOOKUP, { .vop_lookup = sffs_lookup }, + VOPNAME_MKDIR, { .vop_mkdir = sffs_mkdir }, + VOPNAME_OPEN, { .vop_open = sffs_open }, + VOPNAME_PATHCONF, { .vop_pathconf = sffs_pathconf }, + VOPNAME_READ, { .vop_read = sffs_read }, + VOPNAME_READDIR, { .vop_readdir = sffs_readdir }, + VOPNAME_REMOVE, { .vop_remove = sffs_remove }, + VOPNAME_RENAME, { .vop_rename = sffs_rename }, + VOPNAME_RMDIR, { .vop_rmdir = sffs_rmdir }, + VOPNAME_SEEK, { .vop_seek = sffs_seek }, + VOPNAME_WRITE, { .vop_write = sffs_write }, + NULL, NULL +#endif +}; + +/* + * Also, init and fini functions... + */ +int +sffs_vnode_init(void) +{ + int err; + + err = vn_make_ops("sffs", sffs_ops_template, &sffs_ops); + if (err) + return (err); + + avl_create(&sfnodes, sfnode_compare, sizeof (sfnode_t), + offsetof(sfnode_t, sf_linkage)); + avl_create(&stale_sfnodes, sfnode_compare, sizeof (sfnode_t), + offsetof(sfnode_t, sf_linkage)); + + sffs_buffer = kmem_alloc(PAGESIZE, KM_SLEEP); + + return (0); +} + +void +sffs_vnode_fini(void) +{ + if (sffs_ops) + vn_freevnodeops(sffs_ops); + ASSERT(avl_first(&sfnodes) == NULL); + avl_destroy(&sfnodes); + if (sffs_buffer != NULL) { + kmem_free(sffs_buffer, PAGESIZE); + sffs_buffer = NULL; + } +} + +/* + * Utility at unmount to get all nodes in that mounted filesystem removed. + */ +int +sffs_purge(struct sffs_data *sffs) +{ + sfnode_t *node; + sfnode_t *prev; + + /* + * Check that no vnodes are active. + */ + if (sffs->sf_rootnode->v_count > 1) + return (-1); + for (node = avl_first(&sfnodes); node; + node = AVL_NEXT(&sfnodes, node)) { + if (node->sf_sffs == sffs && node->sf_vnode && + node->sf_vnode != sffs->sf_rootnode) + return (-1); + } + for (node = avl_first(&stale_sfnodes); node; + node = AVL_NEXT(&stale_sfnodes, node)) { + if (node->sf_sffs == sffs && node->sf_vnode && + node->sf_vnode != sffs->sf_rootnode) + return (-1); + } + + /* + * All clear to destroy all node information. Since there are no + * vnodes, the make stale will cause deletion. + */ + VN_RELE(sffs->sf_rootnode); + mutex_enter(&sffs_lock); + for (prev = NULL;;) { + if (prev == NULL) + node = avl_first(&sfnodes); + else + node = AVL_NEXT(&sfnodes, prev); + + if (node == NULL) + break; + + if (node->sf_sffs == sffs) { + if (node->sf_vnode != NULL) + panic("vboxfs: purge hit active vnode"); + sfnode_make_stale(node); + } else { + prev = node; + } + } +done: + mutex_exit(&sffs_lock); + return (0); +} + +static void +sfnode_print(sfnode_t *node) +{ + Log(("0x%p", node)); + Log((" type=%s (%d)", + node->sf_type == VDIR ? "VDIR" : + node->sf_type == VNON ? "VNON" : + node->sf_type == VREG ? "VREG" : "other", node->sf_type)); + Log((" ino=%d", (uint_t)node->sf_ino)); + Log((" path=%s", node->sf_path)); + Log((" parent=0x%p", node->sf_parent)); + if (node->sf_children) + Log((" children=%d", node->sf_children)); + if (node->sf_vnode) + Log((" vnode=0x%p", node->sf_vnode)); + Log(("%s\n", node->sf_is_stale ? " STALE" : "")); +} + +void +sfnode_list() +{ + sfnode_t *n; + for (n = avl_first(&sfnodes); n != NULL; n = AVL_NEXT(&sfnodes, n)) + sfnode_print(n); + for (n = avl_first(&stale_sfnodes); n != NULL; + n = AVL_NEXT(&stale_sfnodes, n)) + sfnode_print(n); +} + diff --git a/src/VBox/Additions/solaris/SharedFolders/vboxfs_vnode.h b/src/VBox/Additions/solaris/SharedFolders/vboxfs_vnode.h new file mode 100644 index 000000000..83bf98561 --- /dev/null +++ b/src/VBox/Additions/solaris/SharedFolders/vboxfs_vnode.h @@ -0,0 +1,67 @@ +/** @file + * VirtualBox File System for Solaris Guests, vnode header. + */ + +/* + * Copyright (C) 2009 Sun Microsystems, Inc. + * + * Sun Microsystems, Inc. confidential + * All rights reserved + */ + +#ifndef __VBoxFS_node_Solaris_h +#define __VBoxFS_node_Solaris_h + +#include <sys/t_lock.h> +#include <sys/avl.h> +#include <vm/seg.h> +#include <vm/seg_vn.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * sfnode is the file system dependent vnode data for vboxsf. + * sfnode's also track all files ever accessed, both open and closed. + * It duplicates some of the information in vnode, since it holds + * information for files that may have been completely closed. + * + * The sfnode_t's are stored in an AVL tree sorted by: + * sf_sffs, sf_path + */ +typedef struct sfnode { + avl_node_t sf_linkage; /* AVL tree linkage */ + struct sffs_data *sf_sffs; /* containing mounted file system */ + char *sf_path; /* full pathname to file or dir */ + uint64_t sf_ino; /* assigned unique ID number */ + vnode_t *sf_vnode; /* vnode if active */ + sfp_file_t *sf_file; /* non NULL if open */ + struct sfnode *sf_parent; /* parent sfnode of this one */ + uint16_t sf_children; /* number of children sfnodes */ + uint8_t sf_type; /* VDIR or VREG */ + uint8_t sf_is_stale; /* this is stale and should be purged */ +} sfnode_t; + +#define VN2SFN(vp) ((sfnode_t *)(vp)->v_data) + +#ifdef _KERNEL +extern int sffs_vnode_init(void); +extern void sffs_vnode_fini(void); +extern sfnode_t *sfnode_make(struct sffs_data *, char *, vtype_t, sfp_file_t *, + sfnode_t *parent); +extern vnode_t *sfnode_get_vnode(sfnode_t *); + +/* + * Purge all cached information about a shared file system at unmount + */ +extern int sffs_purge(struct sffs_data *); + +extern kmutex_t sffs_lock; +#endif /* _KERNEL */ + +#ifdef __cplusplus +} +#endif + +#endif /* __VBoxFS_node_Solaris_h */ diff --git a/src/VBox/Additions/x11/Installer/x11config-new.pl b/src/VBox/Additions/x11/Installer/x11config-new.pl index 81e8012ab..edd4e205f 100755 --- a/src/VBox/Additions/x11/Installer/x11config-new.pl +++ b/src/VBox/Additions/x11/Installer/x11config-new.pl @@ -19,16 +19,16 @@ # additional information or have any questions. # -my $use_hal = 0; +my $auto_mouse = 0; my $new_mouse = 0; my $no_bak = 0; my $old_mouse_dev = "/dev/psaux"; foreach $arg (@ARGV) { - if (lc($arg) eq "--usehal") + if (lc($arg) eq "--autoMouse") { - $use_hal = 1; + $auto_mouse = 1; } elsif (lc($arg) eq "--newmouse") { @@ -48,6 +48,7 @@ foreach $arg (@ARGV) my $CFG; my $xkbopts = ""; my $kb_driver = ""; + my $layout_kb = ""; if (open(CFG, $cfg)) { my $TMP; @@ -108,9 +109,10 @@ $xkbopts Option "Protocol" "Standard" Option "CoreKeyboard" EndSection EOF + $layout_kb = " InputDevice \"Keyboard[0]\" \"CoreKeyboard\"\n" } - if (!$use_hal && !$new_mouse) { + if (!$auto_mouse && !$new_mouse) { print TMP <<EOF; Section "InputDevice" @@ -127,8 +129,7 @@ EndSection Section "ServerLayout" Identifier "Layout[all]" - InputDevice "Keyboard[0]" "CoreKeyboard" - InputDevice "Mouse[1]" "CorePointer" +$layout_kb InputDevice "Mouse[1]" "CorePointer" Option "Clone" "off" Option "Xinerama" "off" Screen "Screen[0]" @@ -136,7 +137,7 @@ EndSection EOF } - if (!$use_hal && $new_mouse) { + if (!$auto_mouse && $new_mouse) { print TMP <<EOF; Section "InputDevice" diff --git a/src/VBox/Additions/x11/VBoxClient/clipboard.h b/src/VBox/Additions/x11/VBoxClient/clipboard.h index 7ea0390a4..275140ffc 100644 --- a/src/VBox/Additions/x11/VBoxClient/clipboard.h +++ b/src/VBox/Additions/x11/VBoxClient/clipboard.h @@ -94,13 +94,13 @@ public: */ int init(void) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); int rc = mThreadFunction.init(); if (RT_SUCCESS(rc)) rc = mThread.start(); if (RT_SUCCESS(rc)) mInit = true; - LogFlowThisFunc(("returning %Rrc\n", rc)); + LogRelFlowFunc(("returning %Rrc\n", rc)); return rc; } /** @@ -109,10 +109,10 @@ public: */ void uninit(unsigned cMillies = RT_INDEFINITE_WAIT) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (mInit) mThread.stop(cMillies, NULL); - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } VBoxGuestClipboard() : mThread(&mThreadFunction, 0, RTTHREADTYPE_MSG_PUMP, @@ -120,12 +120,12 @@ public: { mInit = false; } ~VBoxGuestClipboard() { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (mInit) try { uninit(2000); } catch (...) { } - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } }; diff --git a/src/VBox/Additions/x11/VBoxClient/display.cpp b/src/VBox/Additions/x11/VBoxClient/display.cpp index 95d96f46a..3b6da5538 100644 --- a/src/VBox/Additions/x11/VBoxClient/display.cpp +++ b/src/VBox/Additions/x11/VBoxClient/display.cpp @@ -44,7 +44,7 @@ static int initDisplay() int rcSystem, rcErrno; uint32_t fMouseFeatures = 0; - LogFlowFunc(("enabling dynamic resizing\n")); + LogRelFlowFunc(("enabling dynamic resizing\n")); rcSystem = system("VBoxRandR --test"); if (-1 == rcSystem) { @@ -62,9 +62,9 @@ static int initDisplay() VbglR3CtlFilterMask(0, VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST); /* Log and ignore the return value, as there is not much we can do with * it. */ - LogFlowFunc(("dynamic resizing: result %Rrc\n", rc)); + LogRelFlowFunc(("dynamic resizing: result %Rrc\n", rc)); /* Enable support for switching between hardware and software cursors */ - LogFlowFunc(("enabling relative mouse re-capturing support\n")); + LogRelFlowFunc(("enabling relative mouse re-capturing support\n")); rc = VbglR3GetMouseStatus(&fMouseFeatures, NULL, NULL); if (RT_SUCCESS(rc)) { @@ -86,21 +86,21 @@ static int initDisplay() VbglR3SetMouseStatus( fMouseFeatures | VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR); } - LogFlowFunc(("mouse re-capturing support: result %Rrc\n", rc)); + LogRelFlowFunc(("mouse re-capturing support: result %Rrc\n", rc)); return VINF_SUCCESS; } void cleanupDisplay(void) { uint32_t fMouseFeatures = 0; - LogFlowFunc(("\n")); + LogRelFlowFunc(("\n")); VbglR3CtlFilterMask(0, VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST | VMMDEV_EVENT_MOUSE_CAPABILITIES_CHANGED); int rc = VbglR3GetMouseStatus(&fMouseFeatures, NULL, NULL); if (RT_SUCCESS(rc)) VbglR3SetMouseStatus( fMouseFeatures | VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR); - LogFlowFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } /** This thread just runs a dummy X11 event loop to be sure that we get @@ -123,8 +123,7 @@ static int x11ConnectionMonitor(RTTHREAD, void *) */ int runDisplay() { - LogFlowFunc(("\n")); - uint32_t cx0 = 0, cy0 = 0, cBits0 = 0, iDisplay0 = 0; + LogRelFlowFunc(("\n")); Display *pDisplay = XOpenDisplay(NULL); if (pDisplay == NULL) return VERR_NOT_FOUND; @@ -134,7 +133,6 @@ int runDisplay() RTTHREADTYPE_INFREQUENT_POLLER, 0, "X11 monitor"); if (RT_FAILURE(rc)) return rc; - VbglR3GetDisplayChangeRequest(&cx0, &cy0, &cBits0, &iDisplay0, false); while (true) { uint32_t fEvents = 0, cx = 0, cy = 0, cBits = 0, iDisplay = 0; @@ -145,20 +143,12 @@ int runDisplay() { int rc2 = VbglR3GetDisplayChangeRequest(&cx, &cy, &cBits, &iDisplay, true); - /* Ignore the request if it is stale */ - if ((cx != cx0) || (cy != cy0) || RT_FAILURE(rc2)) - { - /* If we are not stopping, sleep for a bit to avoid using up - too much CPU while retrying. */ - if (RT_FAILURE(rc2)) - RTThreadYield(); - else - { - system("VBoxRandR"); - cx0 = cx; - cy0 = cy; - } - } + /* If we are not stopping, sleep for a bit to avoid using up + too much CPU while retrying. */ + if (RT_FAILURE(rc2)) + RTThreadYield(); + else + system("VBoxRandR"); } if ( RT_SUCCESS(rc) && (fEvents & VMMDEV_EVENT_MOUSE_CAPABILITIES_CHANGED)) @@ -175,7 +165,7 @@ int runDisplay() XFlush(pDisplay); } } - LogFlowFunc(("returning VINF_SUCCESS\n")); + LogRelFlowFunc(("returning VINF_SUCCESS\n")); return VINF_SUCCESS; } diff --git a/src/VBox/Additions/x11/VBoxClient/hostversion.cpp b/src/VBox/Additions/x11/VBoxClient/hostversion.cpp index 05db468fc..e4e7d9959 100644 --- a/src/VBox/Additions/x11/VBoxClient/hostversion.cpp +++ b/src/VBox/Additions/x11/VBoxClient/hostversion.cpp @@ -51,7 +51,7 @@ public: conn = dbus_bus_get (DBUS_BUS_SESSON, NULL); if (conn == NULL) { - LogFlow(("Could not retrieve D-BUS session bus!\n")); + LogRelFlow(("Could not retrieve D-BUS session bus!\n")); rc = VERR_INVALID_HANDLE; } else @@ -62,7 +62,7 @@ public: "Notify"); if (msg == NULL) { - Log(("Could not create D-BUS message!\n")); + LogRel(("Could not create D-BUS message!\n")); rc = VERR_INVALID_HANDLE; } else @@ -108,7 +108,7 @@ public: 30 * 1000 /* 30 seconds timeout */, &err); if (dbus_error_is_set(&err)) { - Log(("D-BUS returned an error while sending the notification: %s", err.message)); + LogRel(("D-BUS returned an error while sending the notification: %s", err.message)); } else if (reply) { @@ -132,7 +132,7 @@ public: virtual int run(bool fDaemonised /* = false */) { int rc; - LogFlowFunc(("\n")); + LogRelFlowFunc(("\n")); /* Because we need desktop notifications to be displayed, wait * some time to make the desktop environment load (as a work around). */ @@ -153,7 +153,7 @@ public: { rc = VbglR3GuestPropConnect(&uGuestPropSvcClientID); if (RT_FAILURE(rc)) - Log(("Cannot connect to guest property service! rc = %Rrc\n", rc)); + LogRel(("Cannot connect to guest property service! rc = %Rrc\n", rc)); } if (RT_SUCCESS(rc)) @@ -178,7 +178,7 @@ public: rc = showNotify(szTitle, szMsg); LogRel(("VBoxClient: VirtualBox Guest Additions update available!")); if (RT_FAILURE(rc)) - Log(("VBoxClient: Could not show version notifier tooltip! rc = %d\n", rc)); + LogRel(("VBoxClient: Could not show version notifier tooltip! rc = %d\n", rc)); } /* Store host version to not notify again */ @@ -190,7 +190,7 @@ public: VbglR3GuestPropDisconnect(uGuestPropSvcClientID); } # endif /* VBOX_WITH_GUEST_PROPS */ - LogFlowFunc(("returning %Rrc\n", rc)); + LogRelFlowFunc(("returning %Rrc\n", rc)); return rc; } diff --git a/src/VBox/Additions/x11/VBoxClient/main.cpp b/src/VBox/Additions/x11/VBoxClient/main.cpp index 21c516880..ea87e12a6 100644 --- a/src/VBox/Additions/x11/VBoxClient/main.cpp +++ b/src/VBox/Additions/x11/VBoxClient/main.cpp @@ -40,7 +40,7 @@ #include "VBoxClient.h" -#define TRACE RTPrintf("%s: %d\n", __PRETTY_FUNCTION__, __LINE__); Log(("%s: %d\n", __PRETTY_FUNCTION__, __LINE__)) +#define TRACE RTPrintf("%s: %d\n", __PRETTY_FUNCTION__, __LINE__); LogRel(("%s: %d\n", __PRETTY_FUNCTION__, __LINE__)) static int (*gpfnOldIOErrorHandler)(Display *) = NULL; @@ -74,7 +74,7 @@ void VBoxClient::CleanUp() */ void vboxClientSignalHandler(int cSignal) { - Log(("VBoxClient: terminated with signal %d\n", cSignal)); + LogRel(("VBoxClient: terminated with signal %d\n", cSignal)); /** Disable seamless mode */ RTPrintf(("VBoxClient: terminating...\n")); VBoxClient::CleanUp(); @@ -98,7 +98,7 @@ int vboxClientXLibErrorHandler(Display *pDisplay, XErrorEvent *pError) */ static int vboxClientXLibIOErrorHandler(Display *pDisplay) { - Log(("VBoxClient: a fatal guest X Window error occurred. This may just mean that the Window system was shut down while the client was still running.\n")); + LogRel(("VBoxClient: a fatal guest X Window error occurred. This may just mean that the Window system was shut down while the client was still running.\n")); VBoxClient::CleanUp(); return 0; /* We should never reach this. */ } @@ -111,7 +111,7 @@ void vboxClientSetSignalHandlers(void) { struct sigaction sigAction; - LogFlowFunc(("\n")); + LogRelFlowFunc(("\n")); sigAction.sa_handler = vboxClientSignalHandler; sigemptyset(&sigAction.sa_mask); sigAction.sa_flags = 0; @@ -124,7 +124,7 @@ void vboxClientSetSignalHandlers(void) sigaction(SIGTERM, &sigAction, NULL); sigaction(SIGUSR1, &sigAction, NULL); sigaction(SIGUSR2, &sigAction, NULL); - LogFlowFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } /** @@ -222,7 +222,7 @@ int main(int argc, char *argv[]) if (RT_FAILURE(rc)) { RTPrintf("VBoxClient: failed to daemonize. Exiting.\n"); - Log(("VBoxClient: failed to daemonize. Exiting.\n")); + LogRel(("VBoxClient: failed to daemonize. Exiting.\n")); # ifdef DEBUG RTPrintf("Error %Rrc\n", rc); # endif @@ -233,27 +233,27 @@ int main(int argc, char *argv[]) if (pszHome == NULL) { RTPrintf("VBoxClient: failed to get home directory. Exiting.\n"); - Log(("VBoxClient: failed to get home directory. Exiting.\n")); + LogRel(("VBoxClient: failed to get home directory. Exiting.\n")); return 1; } if (RTStrAPrintf(&g_pszPidFile, "%s/%s", pszHome, g_pService->getPidFilePath()) == -1) if (pszHome == NULL) { RTPrintf("VBoxClient: out of memory. Exiting.\n"); - Log(("VBoxClient: out of memory. Exiting.\n")); + LogRel(("VBoxClient: out of memory. Exiting.\n")); return 1; } /* Initialise the guest library. */ if (RT_FAILURE(VbglR3InitUser())) { RTPrintf("Failed to connect to the VirtualBox kernel service\n"); - Log(("Failed to connect to the VirtualBox kernel service\n")); + LogRel(("Failed to connect to the VirtualBox kernel service\n")); return 1; } if (g_pszPidFile && RT_FAILURE(VbglR3PidFile(g_pszPidFile, &g_hPidFile))) { RTPrintf("Failed to create a pidfile. Exiting.\n"); - Log(("Failed to create a pidfile. Exiting.\n")); + LogRel(("Failed to create a pidfile. Exiting.\n")); VbglR3Term(); return 1; } diff --git a/src/VBox/Additions/x11/VBoxClient/seamless-host.cpp b/src/VBox/Additions/x11/VBoxClient/seamless-host.cpp index b13b0a1d0..a9f8457f2 100644 --- a/src/VBox/Additions/x11/VBoxClient/seamless-host.cpp +++ b/src/VBox/Additions/x11/VBoxClient/seamless-host.cpp @@ -37,7 +37,7 @@ int VBoxGuestSeamlessHost::start(void) { int rc = VERR_NOT_SUPPORTED; - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (mRunning) /* Assertion */ { LogRel(("VBoxClient: seamless service started twice!\n")); @@ -51,7 +51,7 @@ int VBoxGuestSeamlessHost::start(void) rc = VbglR3SeamlessSetCap(true); if (RT_SUCCESS(rc)) { - Log(("VBoxClient: enabled seamless capability on host.\n")); + LogRel(("VBoxClient: enabled seamless capability on host.\n")); rc = mThread.start(); if (RT_SUCCESS(rc)) { @@ -65,16 +65,16 @@ int VBoxGuestSeamlessHost::start(void) } if (RT_FAILURE(rc)) { - Log(("VBoxClient (seamless): failed to enable seamless capability on host, rc=%Rrc\n", rc)); + LogRel(("VBoxClient (seamless): failed to enable seamless capability on host, rc=%Rrc\n", rc)); } - LogFlowThisFunc(("returning %Rrc\n", rc)); + LogRelFlowFunc(("returning %Rrc\n", rc)); return rc; } /** Stops the service. */ void VBoxGuestSeamlessHost::stop(unsigned cMillies /* = RT_INDEFINITE_WAIT */) { - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); if (!mRunning) /* Assertion */ { LogRel(("VBoxClient: tried to stop seamless service which is not running!\n")); @@ -84,7 +84,7 @@ void VBoxGuestSeamlessHost::stop(unsigned cMillies /* = RT_INDEFINITE_WAIT */) VbglR3CtlFilterMask(0, VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST); VbglR3SeamlessSetCap(false); mRunning = false; - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } /** @@ -96,7 +96,7 @@ int VBoxGuestSeamlessHost::nextEvent(void) { VMMDevSeamlessMode newMode = VMMDev_Seamless_Disabled; - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); int rc = VbglR3SeamlessWaitEvent(&newMode); if (RT_SUCCESS(rc)) { @@ -128,9 +128,9 @@ int VBoxGuestSeamlessHost::nextEvent(void) } else { - LogFunc(("VbglR3SeamlessWaitEvent returned %Rrc (VBoxClient)\n", rc)); + LogRelFunc(("VbglR3SeamlessWaitEvent returned %Rrc (VBoxClient)\n", rc)); } - LogFlowThisFunc(("returning %Rrc\n", rc)); + LogRelFlowFunc(("returning %Rrc\n", rc)); return rc; } @@ -139,14 +139,14 @@ int VBoxGuestSeamlessHost::nextEvent(void) */ void VBoxGuestSeamlessHost::updateRects(std::auto_ptr<std::vector<RTRECT> > pRects) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (0 == pRects.get()) /* Assertion */ { LogRelThisFunc(("ERROR: called with null pointer!\n")); return; } VbglR3SeamlessSendRects(pRects.get()->size(), pRects.get()->empty() ? NULL : &pRects.get()->front()); - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } /** @@ -157,7 +157,7 @@ void VBoxGuestSeamlessHost::updateRects(std::auto_ptr<std::vector<RTRECT> > pRec */ int VBoxGuestSeamlessHostThread::threadFunction(VBoxGuestThread *pThread) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (0 != mHost) { mThread = pThread; @@ -171,7 +171,7 @@ int VBoxGuestSeamlessHostThread::threadFunction(VBoxGuestThread *pThread) } } } - LogFlowThisFunc(("returning VINF_SUCCESS\n")); + LogRelFlowFunc(("returning VINF_SUCCESS\n")); return VINF_SUCCESS; } @@ -180,7 +180,7 @@ int VBoxGuestSeamlessHostThread::threadFunction(VBoxGuestThread *pThread) */ void VBoxGuestSeamlessHostThread::stop(void) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (0 != mHost) { /** @@ -195,5 +195,5 @@ void VBoxGuestSeamlessHostThread::stop(void) mThread->yield(); } } - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } diff --git a/src/VBox/Additions/x11/VBoxClient/seamless-host.h b/src/VBox/Additions/x11/VBoxClient/seamless-host.h index 73c287283..a8134901c 100644 --- a/src/VBox/Additions/x11/VBoxClient/seamless-host.h +++ b/src/VBox/Additions/x11/VBoxClient/seamless-host.h @@ -125,14 +125,14 @@ public: */ int init(VBoxGuestSeamlessObserver *pObserver) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (mObserver != 0) /* Assertion */ { LogRel(("VBoxClient: ERROR: attempt to initialise seamless host object twice!\n")); return VERR_INTERNAL_ERROR; } mObserver = pObserver; - LogFlowThisFunc(("returning VINF_SUCCESS\n")); + LogRelFlowFunc(("returning VINF_SUCCESS\n")); return VINF_SUCCESS; } @@ -167,7 +167,7 @@ public: ~VBoxGuestSeamlessHost() { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (mRunning) /* Assertion */ { LogRel(("VBoxClient: seamless host object still running! Stopping...\n")); @@ -177,7 +177,7 @@ public: } catch(...) {} } - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } }; diff --git a/src/VBox/Additions/x11/VBoxClient/seamless-x11.cpp b/src/VBox/Additions/x11/VBoxClient/seamless-x11.cpp index f247d8019..1bd9c260e 100644 --- a/src/VBox/Additions/x11/VBoxClient/seamless-x11.cpp +++ b/src/VBox/Additions/x11/VBoxClient/seamless-x11.cpp @@ -45,7 +45,7 @@ static unsigned char *XXGetProperty (Display *aDpy, Window aWnd, Atom aPropType, const char *aPropName, unsigned long *nItems) { - LogFlowFunc(("\n")); + LogRelFlowFunc(("\n")); Atom propNameAtom = XInternAtom (aDpy, aPropName, True /* only_if_exists */); if (propNameAtom == None) @@ -64,7 +64,7 @@ static unsigned char *XXGetProperty (Display *aDpy, Window aWnd, Atom aPropType, if (rc != Success) return NULL; - LogFlowFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); return propVal; } @@ -77,7 +77,7 @@ int VBoxGuestSeamlessX11::init(VBoxGuestSeamlessObserver *pObserver) { int rc = VINF_SUCCESS; - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (0 != mObserver) /* Assertion */ { LogRel(("VBoxClient: ERROR: attempt to initialise seamless guest object twice!\n")); @@ -89,7 +89,7 @@ int VBoxGuestSeamlessX11::init(VBoxGuestSeamlessObserver *pObserver) return VERR_ACCESS_DENIED; } mObserver = pObserver; - LogFlowThisFunc(("returning %Rrc\n", rc)); + LogRelFlowFunc(("returning %Rrc\n", rc)); return rc; } @@ -107,12 +107,12 @@ int VBoxGuestSeamlessX11::start(void) /** Dummy values for XShapeQueryExtension */ int error, event; - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); mSupportsShape = XShapeQueryExtension(mDisplay, &event, &error); mEnabled = true; monitorClientList(); rebuildWindowTree(); - LogFlowThisFunc(("returning %Rrc\n", rc)); + LogRelFlowFunc(("returning %Rrc\n", rc)); return rc; } @@ -120,22 +120,22 @@ int VBoxGuestSeamlessX11::start(void) and stop requesting updates. */ void VBoxGuestSeamlessX11::stop(void) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); mEnabled = false; unmonitorClientList(); freeWindowTree(); - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } void VBoxGuestSeamlessX11::monitorClientList(void) { - LogFlowThisFunc(("called\n")); + LogRelFlowFunc(("called\n")); XSelectInput(mDisplay, DefaultRootWindow(mDisplay.get()), SubstructureNotifyMask); } void VBoxGuestSeamlessX11::unmonitorClientList(void) { - LogFlowThisFunc(("called\n")); + LogRelFlowFunc(("called\n")); XSelectInput(mDisplay, DefaultRootWindow(mDisplay.get()), 0); } @@ -145,7 +145,7 @@ void VBoxGuestSeamlessX11::unmonitorClientList(void) */ void VBoxGuestSeamlessX11::rebuildWindowTree(void) { - LogFlowThisFunc(("called\n")); + LogRelFlowFunc(("called\n")); freeWindowTree(); addClients(DefaultRootWindow(mDisplay.get())); mChanged = true; @@ -169,19 +169,19 @@ void VBoxGuestSeamlessX11::addClients(const Window hRoot) /** The number of children of the root supplied */ unsigned cChildren; - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (!XQueryTree(mDisplay.get(), hRoot, &hRealRoot, &hParent, &phChildrenRaw, &cChildren)) return; phChildren = phChildrenRaw; for (unsigned i = 0; i < cChildren; ++i) addClientWindow(phChildren.get()[i]); - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } void VBoxGuestSeamlessX11::addClientWindow(const Window hWin) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); XWindowAttributes winAttrib; bool fAddWin = true; char *pszWinName = NULL; @@ -201,7 +201,7 @@ void VBoxGuestSeamlessX11::addClientWindow(const Window hWin) if (fAddWin && (!XGetWMNormalHints(mDisplay, hClient, &dummyHints, &dummyLong))) { - LogFlowFunc(("window %lu, client window %lu has no size hints\n", + LogRelFlowFunc(("window %lu, client window %lu has no size hints\n", hWin, hClient)); fAddWin = false; } @@ -211,7 +211,7 @@ void VBoxGuestSeamlessX11::addClientWindow(const Window hWin) int cRects = 0, iOrdering; bool hasShape = false; - LogFlowFunc(("adding window %lu, client window %lu\n", hWin, + LogRelFlowFunc(("adding window %lu, client window %lu\n", hWin, hClient)); if (mSupportsShape) { @@ -233,7 +233,7 @@ void VBoxGuestSeamlessX11::addClientWindow(const Window hWin) mGuestWindows.addWindow(hWin, hasShape, winAttrib.x, winAttrib.y, winAttrib.width, winAttrib.height, cRects, rects); } - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } @@ -249,7 +249,7 @@ bool VBoxGuestSeamlessX11::isVirtualRoot(Window hWin) unsigned long ulCount; bool rc = false; - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); windowTypeRaw = XXGetProperty(mDisplay, hWin, XA_ATOM, WM_TYPE_PROP, &ulCount); if (windowTypeRaw != NULL) { @@ -258,7 +258,7 @@ bool VBoxGuestSeamlessX11::isVirtualRoot(Window hWin) && (*windowType == XInternAtom(mDisplay, WM_TYPE_DESKTOP_PROP, True))) rc = true; } - LogFlowThisFunc(("returning %s\n", rc ? "true" : "false")); + LogRelFlowFunc(("returning %s\n", rc ? "true" : "false")); return rc; } @@ -269,13 +269,13 @@ bool VBoxGuestSeamlessX11::isVirtualRoot(Window hWin) void VBoxGuestSeamlessX11::freeWindowTree(void) { /* We use post-increment in the operation to prevent the iterator from being invalidated. */ - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); for (VBoxGuestWindowList::iterator it = mGuestWindows.begin(); it != mGuestWindows.end(); mGuestWindows.removeWindow(it++)) { XShapeSelectInput(mDisplay, it->first, 0); } - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } @@ -288,7 +288,7 @@ void VBoxGuestSeamlessX11::nextEvent(void) { XEvent event; - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); /* Start by sending information about the current window setup to the host. We do this here because we want to send all such information from a single thread. */ if (mChanged) @@ -313,7 +313,7 @@ void VBoxGuestSeamlessX11::nextEvent(void) default: break; } - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } /** @@ -323,7 +323,7 @@ void VBoxGuestSeamlessX11::nextEvent(void) */ void VBoxGuestSeamlessX11::doConfigureEvent(Window hWin) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); VBoxGuestWindowList::iterator iter; iter = mGuestWindows.find(hWin); @@ -351,7 +351,7 @@ void VBoxGuestSeamlessX11::doConfigureEvent(Window hWin) } mChanged = true; } - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } /** @@ -361,7 +361,7 @@ void VBoxGuestSeamlessX11::doConfigureEvent(Window hWin) */ void VBoxGuestSeamlessX11::doMapEvent(Window hWin) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); VBoxGuestWindowList::iterator iter; iter = mGuestWindows.find(hWin); @@ -370,7 +370,7 @@ void VBoxGuestSeamlessX11::doMapEvent(Window hWin) addClientWindow(hWin); mChanged = true; } - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } @@ -381,7 +381,7 @@ void VBoxGuestSeamlessX11::doMapEvent(Window hWin) */ void VBoxGuestSeamlessX11::doShapeEvent(Window hWin) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); VBoxGuestWindowList::iterator iter; iter = mGuestWindows.find(hWin); @@ -399,7 +399,7 @@ void VBoxGuestSeamlessX11::doShapeEvent(Window hWin) iter->second->mapRects = rects; mChanged = true; } - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } /** @@ -409,7 +409,7 @@ void VBoxGuestSeamlessX11::doShapeEvent(Window hWin) */ void VBoxGuestSeamlessX11::doUnmapEvent(Window hWin) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); VBoxGuestWindowList::iterator iter; iter = mGuestWindows.find(hWin); @@ -418,7 +418,7 @@ void VBoxGuestSeamlessX11::doUnmapEvent(Window hWin) mGuestWindows.removeWindow(iter); mChanged = true; } - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } /** @@ -426,7 +426,7 @@ void VBoxGuestSeamlessX11::doUnmapEvent(Window hWin) */ std::auto_ptr<std::vector<RTRECT> > VBoxGuestSeamlessX11::getRects(void) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); unsigned cRects = 0; std::auto_ptr<std::vector<RTRECT> > apRects(new std::vector<RTRECT>); @@ -470,7 +470,7 @@ std::auto_ptr<std::vector<RTRECT> > VBoxGuestSeamlessX11::getRects(void) } } mcRects = cRects; - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); return apRects; } @@ -483,7 +483,7 @@ bool VBoxGuestSeamlessX11::interruptEvent(void) { bool rc = false; - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); /* Message contents set to zero. */ XClientMessageEvent clientMessage = { ClientMessage, 0, 0, 0, 0, 0, 8 }; @@ -493,6 +493,6 @@ bool VBoxGuestSeamlessX11::interruptEvent(void) XFlush(mDisplay); rc = true; } - LogFlowThisFunc(("returning %s\n", rc ? "true" : "false")); + LogRelFlowFunc(("returning %s\n", rc ? "true" : "false")); return rc; } diff --git a/src/VBox/Additions/x11/VBoxClient/seamless-x11.h b/src/VBox/Additions/x11/VBoxClient/seamless-x11.h index 399adba4a..d5f4ced60 100644 --- a/src/VBox/Additions/x11/VBoxClient/seamless-x11.h +++ b/src/VBox/Additions/x11/VBoxClient/seamless-x11.h @@ -145,9 +145,9 @@ public: VBoxGuestX11Display(void) { mDisplay = NULL; } bool init(char *name = NULL) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); mDisplay = XOpenDisplay(name); - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); return (mDisplay != NULL); } operator Display *() { return mDisplay; } @@ -155,10 +155,10 @@ public: bool isValid(void) { return (mDisplay != NULL); } int close(void) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); int rc = XCloseDisplay(mDisplay); mDisplay = NULL; - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); return rc; } ~VBoxGuestX11Display() @@ -243,23 +243,23 @@ public: void addWindow(Window hWin, bool isMapped, int x, int y, int w, int h, int cRects, VBoxGuestX11Pointer<XRectangle> rects) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); VBoxGuestWinInfo *pInfo = new VBoxGuestWinInfo(isMapped, x, y, w, h, cRects, rects); mWindows.insert(std::pair<Window, VBoxGuestWinInfo *>(hWin, pInfo)); - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } void removeWindow(iterator it) { - LogFlowThisFunc(("called\n")); + LogRelFlowFunc(("called\n")); delete it->second; mWindows.erase(it); } void removeWindow(Window hWin) { - LogFlowThisFunc(("called\n")); + LogRelFlowFunc(("called\n")); removeWindow(find(hWin)); } }; diff --git a/src/VBox/Additions/x11/VBoxClient/seamless.h b/src/VBox/Additions/x11/VBoxClient/seamless.h index a665543b2..efce9793f 100644 --- a/src/VBox/Additions/x11/VBoxClient/seamless.h +++ b/src/VBox/Additions/x11/VBoxClient/seamless.h @@ -58,7 +58,7 @@ public: { int rc = VINF_SUCCESS; - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); rc = mGuest->start(); if (RT_SUCCESS(rc)) { @@ -68,7 +68,7 @@ public: } mGuest->stop(); } - LogFlowThisFunc(("returning %Rrc\n", rc)); + LogRelFlowFunc(("returning %Rrc\n", rc)); return rc; } /** @@ -147,7 +147,7 @@ public: { int rc = VINF_SUCCESS; - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (isInitialised) /* Assertion */ { LogRelFunc(("error: called a second time! (VBoxClient)\n")); @@ -171,15 +171,15 @@ public: } if (RT_FAILURE(rc)) { - LogFunc(("returning %Rrc (VBoxClient)\n", rc)); + LogRelFunc(("returning %Rrc (VBoxClient)\n", rc)); } - LogFlowThisFunc(("returning %Rrc\n", rc)); + LogRelFlowFunc(("returning %Rrc\n", rc)); return rc; } void uninit(unsigned cMillies = RT_INDEFINITE_WAIT) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (isInitialised) { mHost.stop(cMillies); @@ -187,7 +187,7 @@ public: mGuest.uninit(); isInitialised = false; } - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } VBoxGuestSeamless() : mGuestFunction(&mGuest, &mGuestObs), diff --git a/src/VBox/Additions/x11/VBoxClient/thread.cpp b/src/VBox/Additions/x11/VBoxClient/thread.cpp index c29eaf715..b7aeb037a 100644 --- a/src/VBox/Additions/x11/VBoxClient/thread.cpp +++ b/src/VBox/Additions/x11/VBoxClient/thread.cpp @@ -29,7 +29,7 @@ int VBoxGuestThread::stop(unsigned cMillies, int *prc) { int rc = VINF_SUCCESS; - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (NIL_RTTHREAD == mSelf) /* Assertion */ { LogRelThisFunc(("Attempted to stop thread %s which is not running!\n", mName)); @@ -49,14 +49,14 @@ int VBoxGuestThread::stop(unsigned cMillies, int *prc) LogRelThisFunc(("Failed to stop thread %s!\n", mName)); } } - LogFlowThisFunc(("returning %Rrc\n", rc)); + LogRelFlowFunc(("returning %Rrc\n", rc)); return rc; } /** Destroy the class, stopping the thread if necessary. */ VBoxGuestThread::~VBoxGuestThread(void) { - LogFlowThisFunc(("\n")); + LogRelFlowFunc(("\n")); if (NIL_RTTHREAD != mSelf) { LogRelThisFunc(("Warning! Stopping thread %s, as it is still running!\n", mName)); @@ -66,7 +66,7 @@ VBoxGuestThread::~VBoxGuestThread(void) } catch(...) {} } - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); } /** Start the thread. */ @@ -74,7 +74,7 @@ int VBoxGuestThread::start(void) { int rc = VINF_SUCCESS; - LogFlowThisFunc(("returning\n")); + LogRelFlowFunc(("returning\n")); if (NIL_RTTHREAD != mSelf) /* Assertion */ { LogRelThisFunc(("Attempted to start thead %s twice!\n", mName)); @@ -83,7 +83,7 @@ int VBoxGuestThread::start(void) mExit = false; rc = RTThreadCreate(&mSelf, threadFunction, reinterpret_cast<void *>(this), mStack, mType, mFlags, mName); - LogFlowThisFunc(("returning %Rrc\n", rc)); + LogRelFlowFunc(("returning %Rrc\n", rc)); return rc; } @@ -98,7 +98,7 @@ int VBoxGuestThread::threadFunction(RTTHREAD self, void *pvUser) { int rc = VINF_SUCCESS; - LogFlowFunc(("\n")); + LogRelFlowFunc(("\n")); PSELF pSelf = reinterpret_cast<PSELF>(pvUser); pSelf->mRunning = true; try @@ -116,6 +116,6 @@ int VBoxGuestThread::threadFunction(RTTHREAD self, void *pvUser) rc = VERR_UNRESOLVED_ERROR; } pSelf->mRunning = false; - LogFlowFunc(("returning %Rrc\n", rc)); + LogRelFlowFunc(("returning %Rrc\n", rc)); return rc; } diff --git a/src/VBox/Additions/x11/vboxvideo/undefined_68 b/src/VBox/Additions/x11/vboxvideo/undefined_68 index 4fc93af03..f8ee0f396 100644 --- a/src/VBox/Additions/x11/vboxvideo/undefined_68 +++ b/src/VBox/Additions/x11/vboxvideo/undefined_68 @@ -76,3 +76,4 @@ resVgaShared xf86SetBackingStore xf86snprintf XNFstrdup +__stack_chk_fail diff --git a/src/VBox/Additions/x11/x11stubs/Makefile.kmk b/src/VBox/Additions/x11/x11stubs/Makefile.kmk index 7268ac735..b5a0aae54 100644 --- a/src/VBox/Additions/x11/x11stubs/Makefile.kmk +++ b/src/VBox/Additions/x11/x11stubs/Makefile.kmk @@ -33,5 +33,35 @@ libXcomposite_INST = $(INST_LIB) libXcomposite_SONAME = libXcomposite.so.1 libXcomposite_SOURCES = libXcomposite-1.0.0/libXcomposite.c +# +# libXdamage import library. +# +IMPORT_LIBS += libXdamage +libXdamage_TEMPLATE = VBOXR3 +libXdamage_INST = $(INST_LIB) +# This may need fixing later. +libXdamage_SONAME = libXdamage.so.1 +libXdamage_SOURCES = libXdamage-1.1.0/libXdamage.c + +# +# libXfixes import library. +# +IMPORT_LIBS += libXfixes +libXfixes_TEMPLATE = VBOXR3 +libXfixes_INST = $(INST_LIB) +# This may need fixing later. +libXfixes_SONAME = libXfixes.so.3 +libXfixes_SOURCES = libXfixes-3.1.0/libXfixes.c + +# +# libXfixes import library. +# +IMPORT_LIBS += libXext +libXext_TEMPLATE = VBOXR3 +libXext_INST = $(INST_LIB) +# This may need fixing later. +libXext_SONAME = libXext.so.6 +libXext_SOURCES = libXext-6.4.0/libXext.c + include $(KBUILD_PATH)/subfooter.kmk diff --git a/src/VBox/Additions/x11/x11stubs/libXcomposite-1.0.0/libXcomposite.c b/src/VBox/Additions/x11/x11stubs/libXcomposite-1.0.0/libXcomposite.c index c77643819..c3166584d 100644 --- a/src/VBox/Additions/x11/x11stubs/libXcomposite-1.0.0/libXcomposite.c +++ b/src/VBox/Additions/x11/x11stubs/libXcomposite-1.0.0/libXcomposite.c @@ -1,4 +1,4 @@ -/* $Id$ */ +/* $Id: libXcomposite.c $ */ /** @file * X.Org libXcomposite.so linker stub diff --git a/src/VBox/Additions/x11/x11stubs/libXdamage-1.1.0/libXdamage.c b/src/VBox/Additions/x11/x11stubs/libXdamage-1.1.0/libXdamage.c new file mode 100644 index 000000000..8213fb6e1 --- /dev/null +++ b/src/VBox/Additions/x11/x11stubs/libXdamage-1.1.0/libXdamage.c @@ -0,0 +1,37 @@ +/* $Id: libXdamage.c $ */ + +/** @file + * X.Org libXdamage.so linker stub + */ + +/* + * Copyright (C) 2010 Sun Microsystems, Inc. + * + * 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. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa + * Clara, CA 95054 USA or visit http://www.sun.com if you need + * additional information or have any questions. + */ + +#include <iprt/cdefs.h> +#include <iprt/types.h> + +#define DECLXSTUB(func) \ + DECLEXPORT(void) func(void); \ + void func(void) {} + +DECLXSTUB(XDamageCreate) +DECLXSTUB(XDamageFindDisplay) +DECLXSTUB(XDamageQueryExtension) +DECLXSTUB(XDamageSubtract) +DECLXSTUB(XDamageAdd) +DECLXSTUB(XDamageDestroy) +DECLXSTUB(XDamageExtensionInfo) +DECLXSTUB(XDamageQueryVersion) diff --git a/src/VBox/Additions/x11/x11stubs/libXext-6.4.0/libXext.c b/src/VBox/Additions/x11/x11stubs/libXext-6.4.0/libXext.c new file mode 100644 index 000000000..1b9cd12dc --- /dev/null +++ b/src/VBox/Additions/x11/x11stubs/libXext-6.4.0/libXext.c @@ -0,0 +1,156 @@ +/* $Id: libXext.c $ */ + +/** @file + * X.Org libXext.so linker stub + */ + +/* + * Copyright (C) 2010 Sun Microsystems, Inc. + * + * 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. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa + * Clara, CA 95054 USA or visit http://www.sun.com if you need + * additional information or have any questions. + */ + +#include <iprt/cdefs.h> +#include <iprt/types.h> + +#define DECLXSTUB(func) \ + DECLEXPORT(void) func(void); \ + void func(void) {} + +DECLXSTUB(XSyncAwait) +DECLXSTUB(XagCreateEmbeddedApplicationGroup) +DECLXSTUB(XeviGetVisualInfo) +DECLXSTUB(XSyncValueGreaterOrEqual) +DECLXSTUB(XSyncIntToValue) +DECLXSTUB(DPMSDisable) +DECLXSTUB(XSyncValueSubtract) +DECLXSTUB(DPMSEnable) +DECLXSTUB(XShmQueryExtension) +DECLXSTUB(DPMSGetVersion) +DECLXSTUB(XTestFakeInput) +DECLXSTUB(XdbeAllocateBackBufferName) +DECLXSTUB(DPMSInfo) +DECLXSTUB(XTestGetInput) +DECLXSTUB(XmbufGetWindowAttributes) +DECLXSTUB(XMITMiscGetBugMode) +DECLXSTUB(XTestReset) +DECLXSTUB(XSyncChangeAlarm) +DECLXSTUB(XdbeDeallocateBackBufferName) +DECLXSTUB(XSyncValueIsNegative) +DECLXSTUB(XTestQueryInputSize) +DECLXSTUB(XLbxQueryExtension) +DECLXSTUB(XeviQueryVersion) +DECLXSTUB(XShapeQueryExtension) +DECLXSTUB(XmbufGetScreenInfo) +DECLXSTUB(XSyncValueLow32) +DECLXSTUB(XSyncIntsToValue) +DECLXSTUB(XSyncValueAdd) +DECLXSTUB(XSecurityGenerateAuthorization) +DECLXSTUB(DPMSSetTimeouts) +DECLXSTUB(XShapeQueryVersion) +DECLXSTUB(XShmCreatePixmap) +DECLXSTUB(XmbufDisplayBuffers) +DECLXSTUB(XShapeCombineShape) +DECLXSTUB(XMITMiscSetBugMode) +DECLXSTUB(XmbufCreateBuffers) +DECLXSTUB(XagGetApplicationGroupAttributes) +DECLXSTUB(XSecurityQueryExtension) +DECLXSTUB(DPMSGetTimeouts) +DECLXSTUB(XSyncQueryCounter) +DECLXSTUB(XextAddDisplay) +DECLXSTUB(XSyncChangeCounter) +DECLXSTUB(XSyncDestroyAlarm) +DECLXSTUB(XeviQueryExtension) +DECLXSTUB(XMissingExtension) +DECLXSTUB(XmbufChangeWindowAttributes) +DECLXSTUB(XSyncQueryAlarm) +DECLXSTUB(XdbeGetVisualInfo) +DECLXSTUB(XShmGetEventBase) +DECLXSTUB(XSyncValueLessOrEqual) +DECLXSTUB(XextFindDisplay) +DECLXSTUB(XShapeQueryExtents) +DECLXSTUB(XdbeQueryExtension) +DECLXSTUB(XShapeOffsetShape) +DECLXSTUB(XdbeFreeVisualInfo) +DECLXSTUB(XShapeSelectInput) +DECLXSTUB(XGEQueryVersion) +DECLXSTUB(XagDestroyApplicationGroup) +DECLXSTUB(XShmQueryVersion) +DECLXSTUB(XSyncCreateAlarm) +DECLXSTUB(XSyncValueEqual) +DECLXSTUB(XSyncSetPriority) +DECLXSTUB(xgeExtRegister) +DECLXSTUB(DPMSQueryExtension) +DECLXSTUB(XagCreateAssociation) +DECLXSTUB(XSyncValueIsPositive) +DECLXSTUB(XagQueryApplicationGroup) +DECLXSTUB(XSetExtensionErrorHandler) +DECLXSTUB(XmbufGetBufferAttributes) +DECLXSTUB(XdbeBeginIdiom) +DECLXSTUB(XSyncMinValue) +DECLXSTUB(XagDestroyAssociation) +DECLXSTUB(XTestFlush) +DECLXSTUB(XSyncGetPriority) +DECLXSTUB(XagCreateNonembeddedApplicationGroup) +DECLXSTUB(XShmPutImage) +DECLXSTUB(XagQueryVersion) +DECLXSTUB(XSecurityAllocXauth) +DECLXSTUB(XSyncDestroyCounter) +DECLXSTUB(XShapeGetRectangles) +DECLXSTUB(XShmDetach) +DECLXSTUB(XSyncSetCounter) +DECLXSTUB(XTestPressButton) +DECLXSTUB(XSyncValueLessThan) +DECLXSTUB(XTestMovePointer) +DECLXSTUB(XSyncValueGreaterThan) +DECLXSTUB(XLbxQueryVersion) +DECLXSTUB(XShapeCombineRegion) +DECLXSTUB(XextCreateExtension) +DECLXSTUB(XShapeCombineRectangles) +DECLXSTUB(XcupStoreColors) +DECLXSTUB(XSecurityRevokeAuthorization) +DECLXSTUB(XdbeGetBackBufferAttributes) +DECLXSTUB(XmbufClearBufferArea) +DECLXSTUB(XLbxGetEventBase) +DECLXSTUB(XShmGetImage) +DECLXSTUB(XTestStopInput) +DECLXSTUB(XShmAttach) +DECLXSTUB(XdbeEndIdiom) +DECLXSTUB(XdbeSwapBuffers) +DECLXSTUB(XmbufGetVersion) +DECLXSTUB(XmbufCreateStereoWindow) +DECLXSTUB(XmbufDestroyBuffers) +DECLXSTUB(XGEQueryExtension) +DECLXSTUB(XSyncValueIsZero) +DECLXSTUB(XShapeCombineMask) +DECLXSTUB(XSyncListSystemCounters) +DECLXSTUB(XSyncCreateCounter) +DECLXSTUB(DPMSCapable) +DECLXSTUB(XcupGetReservedColormapEntries) +DECLXSTUB(XmbufChangeBufferAttributes) +DECLXSTUB(XSyncQueryExtension) +DECLXSTUB(XmbufQueryExtension) +DECLXSTUB(XShapeInputSelected) +DECLXSTUB(XMITMiscQueryExtension) +DECLXSTUB(XShmCreateImage) +DECLXSTUB(XSecurityFreeXauth) +DECLXSTUB(DPMSForceLevel) +DECLXSTUB(XSyncValueHigh32) +DECLXSTUB(XTestPressKey) +DECLXSTUB(XSyncInitialize) +DECLXSTUB(XShmPixmapFormat) +DECLXSTUB(XextRemoveDisplay) +DECLXSTUB(XSyncMaxValue) +DECLXSTUB(XSyncFreeSystemCounterList) +DECLXSTUB(XcupQueryVersion) +DECLXSTUB(XextDestroyExtension) diff --git a/src/VBox/Additions/x11/x11stubs/libXfixes-3.1.0/libXfixes.c b/src/VBox/Additions/x11/x11stubs/libXfixes-3.1.0/libXfixes.c new file mode 100644 index 000000000..f7dbe2f2b --- /dev/null +++ b/src/VBox/Additions/x11/x11stubs/libXfixes-3.1.0/libXfixes.c @@ -0,0 +1,65 @@ +/* $Id: libXfixes.c $ */ + +/** @file + * X.Org libXfixes.so linker stub + */ + +/* + * Copyright (C) 2010 Sun Microsystems, Inc. + * + * 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. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa + * Clara, CA 95054 USA or visit http://www.sun.com if you need + * additional information or have any questions. + */ + +#include <iprt/cdefs.h> +#include <iprt/types.h> + +#define DECLXSTUB(func) \ + DECLEXPORT(void) func(void); \ + void func(void) {} + +DECLXSTUB(XFixesTranslateRegion) +DECLXSTUB(XFixesRegionExtents) +DECLXSTUB(XFixesFetchRegion) +DECLXSTUB(XFixesExpandRegion) +DECLXSTUB(XFixesSelectSelectionInput) +DECLXSTUB(XFixesChangeCursorByName) +DECLXSTUB(XFixesInvertRegion) +DECLXSTUB(XFixesQueryVersion) +DECLXSTUB(XFixesCreateRegionFromBitmap) +DECLXSTUB(XFixesSetRegion) +DECLXSTUB(XFixesCreateRegion) +DECLXSTUB(XFixesGetCursorImage) +DECLXSTUB(XFixesDestroyRegion) +DECLXSTUB(XFixesSetCursorName) +DECLXSTUB(XFixesIntersectRegion) +DECLXSTUB(XFixesCopyRegion) +DECLXSTUB(XFixesSelectCursorInput) +DECLXSTUB(XFixesShowCursor) +DECLXSTUB(XFixesHideCursor) +DECLXSTUB(XFixesGetCursorName) +DECLXSTUB(XFixesExtensionName) +DECLXSTUB(XFixesVersion) +DECLXSTUB(XFixesSetGCClipRegion) +DECLXSTUB(XFixesQueryExtension) +DECLXSTUB(XFixesFindDisplay) +DECLXSTUB(XFixesChangeCursor) +DECLXSTUB(XFixesSetWindowShapeRegion) +DECLXSTUB(XFixesCreateRegionFromPicture) +DECLXSTUB(XFixesSetPictureClipRegion) +DECLXSTUB(XFixesFetchRegionAndBounds) +DECLXSTUB(XFixesExtensionInfo) +DECLXSTUB(XFixesSubtractRegion) +DECLXSTUB(XFixesUnionRegion) +DECLXSTUB(XFixesCreateRegionFromGC) +DECLXSTUB(XFixesChangeSaveSet) +DECLXSTUB(XFixesCreateRegionFromWindow) diff --git a/src/VBox/Devices/Audio/pulse_stubs.c b/src/VBox/Devices/Audio/pulse_stubs.c index 859b0e82b..f407a2ecb 100644 --- a/src/VBox/Devices/Audio/pulse_stubs.c +++ b/src/VBox/Devices/Audio/pulse_stubs.c @@ -1,10 +1,10 @@ +/* $Id: pulse_stubs.c $ */ /** @file - * * Stubs for libpulse. */ /* - * Copyright (C) 2006-2007 Sun Microsystems, Inc. + * Copyright (C) 2006-2010 Sun Microsystems, Inc. * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -78,12 +78,15 @@ PROXY_STUB (pa_stream_get_state, pa_stream_state_t, PROXY_STUB_VOID(pa_stream_set_state_callback, (pa_stream *s, pa_stream_notify_cb_t cb, void *userdata), (s, cb, userdata)) +PROXY_STUB (pa_stream_flush, pa_operation*, + (pa_stream *s, pa_stream_success_cb_t cb, void *userdata), + (s, cb, userdata)) PROXY_STUB (pa_stream_drain, pa_operation*, (pa_stream *s, pa_stream_success_cb_t cb, void *userdata), (s, cb, userdata)) PROXY_STUB (pa_stream_trigger, pa_operation*, (pa_stream *s, pa_stream_success_cb_t cb, void *userdata), - (s, cb, userdata)) + (s, cb, userdata)) PROXY_STUB (pa_stream_new, pa_stream*, (pa_context *c, const char *name, const pa_sample_spec *ss, const pa_channel_map *map), @@ -172,13 +175,16 @@ PROXY_STUB_VOID(pa_operation_unref, (o)) PROXY_STUB (pa_operation_get_state, pa_operation_state_t, (pa_operation *o), - (o)) + (o)) +PROXY_STUB_VOID(pa_operation_cancel, + (pa_operation *o), + (o)) PROXY_STUB (pa_strerror, const char*, (int error), (error)) PROXY_STUB (pa_stream_readable_size, size_t, (pa_stream *p), - (p)) + (p)) typedef struct @@ -199,6 +205,7 @@ static SHARED_FUNC SharedFuncs[] = ELEMENT(pa_stream_unref), ELEMENT(pa_stream_get_state), ELEMENT(pa_stream_set_state_callback), + ELEMENT(pa_stream_flush), ELEMENT(pa_stream_drain), ELEMENT(pa_stream_trigger), ELEMENT(pa_stream_new), @@ -230,6 +237,7 @@ static SHARED_FUNC SharedFuncs[] = ELEMENT(pa_channel_map_init_auto), ELEMENT(pa_operation_unref), ELEMENT(pa_operation_get_state), + ELEMENT(pa_operation_cancel), ELEMENT(pa_strerror), ELEMENT(pa_stream_readable_size) }; diff --git a/src/VBox/Devices/Audio/pulseaudio.c b/src/VBox/Devices/Audio/pulseaudio.c index 21596908f..739e2d978 100644 --- a/src/VBox/Devices/Audio/pulseaudio.c +++ b/src/VBox/Devices/Audio/pulseaudio.c @@ -4,7 +4,7 @@ */ /* - * Copyright (C) 2006-2007 Sun Microsystems, Inc. + * Copyright (C) 2006-2010 Sun Microsystems, Inc. * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -69,6 +69,7 @@ typedef struct PulseVoice const uint8_t *pu8PeekBuf; size_t cbPeekBuf; size_t offPeekBuf; + pa_operation *pDrainOp; } PulseVoice; /* The desired buffer length in milliseconds. Will be the target total stream @@ -146,10 +147,44 @@ static int pulse_to_audfmt (pa_sample_format_t pulsefmt, audfmt_e *fmt, int *end return 0; } -static void context_state_callback(pa_context *c, void *userdata) +static void stream_success_callback(pa_stream *pStream, int fSuccess, void *userdata) { PulseVoice *pPulse = (PulseVoice *)userdata; - switch (pa_context_get_state(c)) + pPulse->fOpSuccess = fSuccess; + if (!fSuccess) + { + if (pPulse->cErrors < MAX_LOG_REL_ERRORS) + { + int rc = pa_context_errno(g_pContext); + pPulse->cErrors++; + LogRel(("Pulse: Failed stream operation: %s\n", pa_strerror(rc))); + } + } + pa_threaded_mainloop_signal(g_pMainLoop, 0); +} + +/** + * Synchronously wait until an operation completed. + */ +static int pulse_wait_for_operation (pa_operation *op) +{ + if (op) + { + while (pa_operation_get_state(op) == PA_OPERATION_RUNNING) + pa_threaded_mainloop_wait(g_pMainLoop); + pa_operation_unref(op); + } + + return 1; +} + +/** + * Context status changed. + */ +static void context_state_callback(pa_context *pContext, void *userdata) +{ + PulseVoice *pPulse = (PulseVoice *)userdata; + switch (pa_context_get_state(pContext)) { case PA_CONTEXT_READY: case PA_CONTEXT_TERMINATED: @@ -168,9 +203,12 @@ static void context_state_callback(pa_context *c, void *userdata) } } -static void stream_state_callback(pa_stream *s, void *userdata) +/** + * Stream status changed. + */ +static void stream_state_callback(pa_stream *pStream, void *userdata) { - switch (pa_stream_get_state(s)) + switch (pa_stream_get_state(pStream)) { case PA_STREAM_READY: case PA_STREAM_FAILED: @@ -183,6 +221,29 @@ static void stream_state_callback(pa_stream *s, void *userdata) } } +/** + * Callback called when our pa_stream_drain operation was completed. + */ +static void stream_drain_callback(pa_stream *pStream, int fSuccess, void *userdata) +{ + PulseVoice *pPulse = (PulseVoice *)userdata; + pPulse->fOpSuccess = fSuccess; + if (!fSuccess) + { + if (pPulse->cErrors < MAX_LOG_REL_ERRORS) + { + int rc = pa_context_errno(g_pContext); + pPulse->cErrors++; + LogRel(("Pulse: Failed stream operation: %s\n", pa_strerror(rc))); + } + } + else + pa_operation_unref(pa_stream_cork(pStream, 1, stream_success_callback, userdata)); + + pa_operation_unref(pPulse->pDrainOp); + pPulse->pDrainOp = NULL; +} + static int pulse_open (int fIn, pa_stream **ppStream, pa_sample_spec *pSampleSpec, pa_buffer_attr *pBufAttr) { @@ -228,6 +289,9 @@ static int pulse_open (int fIn, pa_stream **ppStream, pa_sample_spec *pSampleSpe flags |= PA_STREAM_INTERPOLATE_TIMING | PA_STREAM_AUTO_TIMING_UPDATE; #endif + /* no input/output right away after the stream was started */ + flags |= PA_STREAM_START_CORKED; + if (fIn) { LogRel(("Pulse: Requested record buffer attributes: maxlength=%d fragsize=%d\n", @@ -245,8 +309,6 @@ static int pulse_open (int fIn, pa_stream **ppStream, pa_sample_spec *pSampleSpe LogRel(("Pulse: Requested playback buffer attributes: maxlength=%d tlength=%d prebuf=%d minreq=%d\n", pBufAttr->maxlength, pBufAttr->tlength, pBufAttr->prebuf, pBufAttr->minreq)); - flags |= PA_STREAM_START_CORKED; - if (pa_stream_connect_playback(pStream, /*dev=*/NULL, pBufAttr, flags, /*cvolume=*/NULL, /*sync_stream=*/NULL) < 0) { @@ -310,6 +372,8 @@ static int pulse_init_out (HWVoiceOut *hw, audsettings_t *as) audsettings_t obt_as; int cbBuf; + pPulse->pDrainOp = NULL; + pPulse->SampleSpec.format = aud_to_pulsefmt (as->fmt); pPulse->SampleSpec.rate = as->freq; pPulse->SampleSpec.channels = as->nchannels; @@ -439,34 +503,6 @@ static int pulse_write (SWVoiceOut *sw, void *buf, int len) return audio_pcm_sw_write (sw, buf, len); } -static void stream_success_callback(pa_stream *pStream, int success, void *userdata) -{ - PulseVoice *pPulse = (PulseVoice *) userdata; - pPulse->fOpSuccess = success; - if (!success) - { - if (pPulse->cErrors < MAX_LOG_REL_ERRORS) - { - int rc = pa_context_errno(g_pContext); - pPulse->cErrors++; - LogRel(("Pulse: Failed stream operation: %s\n", pa_strerror(rc))); - } - } - pa_threaded_mainloop_signal(g_pMainLoop, 0); -} - -static int pulse_wait_for_operation (pa_operation *op) -{ - if (op) - { - while (pa_operation_get_state(op) == PA_OPERATION_RUNNING) - pa_threaded_mainloop_wait(g_pMainLoop); - pa_operation_unref(op); - } - - return 1; -} - static int pulse_ctl_out (HWVoiceOut *hw, int cmd, ...) { PulseVoice *pPulse = (PulseVoice *) hw; @@ -474,16 +510,36 @@ static int pulse_ctl_out (HWVoiceOut *hw, int cmd, ...) switch (cmd) { case VOICE_ENABLE: + /* Start audio output. */ pa_threaded_mainloop_lock(g_pMainLoop); - pulse_wait_for_operation(pa_stream_cork(pPulse->pStream, 0, stream_success_callback, pPulse)); + if ( pPulse->pDrainOp + && pa_operation_get_state(pPulse->pDrainOp) != PA_OPERATION_DONE) + { + pa_operation_cancel(pPulse->pDrainOp); + pa_operation_unref(pPulse->pDrainOp); + pPulse->pDrainOp = NULL; + } + else + { + /* should return immediately */ + pulse_wait_for_operation(pa_stream_cork(pPulse->pStream, 0, + stream_success_callback, pPulse)); + } pa_threaded_mainloop_unlock(g_pMainLoop); break; case VOICE_DISABLE: + /* Pause audio output (the Pause bit of the AC97 x_CR register is set). + * Note that we must return immediately from here! */ pa_threaded_mainloop_lock(g_pMainLoop); - pulse_wait_for_operation(pa_stream_trigger(pPulse->pStream, stream_success_callback, pPulse)); - pulse_wait_for_operation(pa_stream_drain(pPulse->pStream, stream_success_callback, pPulse)); - pulse_wait_for_operation(pa_stream_cork(pPulse->pStream, 1, stream_success_callback, pPulse)); + if (!pPulse->pDrainOp) + { + /* should return immediately */ + pulse_wait_for_operation(pa_stream_trigger(pPulse->pStream, + stream_success_callback, pPulse)); + pPulse->pDrainOp = pa_stream_drain(pPulse->pStream, + stream_drain_callback, pPulse); + } pa_threaded_mainloop_unlock(g_pMainLoop); break; @@ -643,7 +699,9 @@ static int pulse_ctl_in (HWVoiceIn *hw, int cmd, ...) { case VOICE_ENABLE: pa_threaded_mainloop_lock(g_pMainLoop); - pulse_wait_for_operation(pa_stream_cork(pPulse->pStream, 0, stream_success_callback, pPulse)); + /* should return immediately */ + pulse_wait_for_operation(pa_stream_cork(pPulse->pStream, 0, + stream_success_callback, pPulse)); pa_threaded_mainloop_unlock(g_pMainLoop); break; @@ -654,7 +712,9 @@ static int pulse_ctl_in (HWVoiceIn *hw, int cmd, ...) pa_stream_drop(pPulse->pStream); pPulse->pu8PeekBuf = NULL; } - pulse_wait_for_operation(pa_stream_cork(pPulse->pStream, 1, stream_success_callback, pPulse)); + /* should return immediately */ + pulse_wait_for_operation(pa_stream_cork(pPulse->pStream, 1, + stream_success_callback, pPulse)); pa_threaded_mainloop_unlock(g_pMainLoop); break; diff --git a/src/VBox/Devices/EFI/DevEFI.cpp b/src/VBox/Devices/EFI/DevEFI.cpp index 4ad5393d4..c682046e3 100644 --- a/src/VBox/Devices/EFI/DevEFI.cpp +++ b/src/VBox/Devices/EFI/DevEFI.cpp @@ -912,7 +912,8 @@ static DECLCALLBACK(int) efiConstruct(PPDMDEVINS pDevIns, int iInstance, PCFGMN if (RT_FAILURE(rc)) return rc; - FwCommonPlantMpsTable(pDevIns, pThis->au8DMIPage + VBOX_DMI_TABLE_SIZE, pThis->cCpus); + FwCommonPlantMpsTable(pDevIns, pThis->au8DMIPage + VBOX_DMI_TABLE_SIZE, + _4K - VBOX_DMI_TABLE_SIZE, pThis->cCpus); rc = PDMDevHlpROMRegister(pDevIns, VBOX_DMI_TABLE_BASE, _4K, pThis->au8DMIPage, PGMPHYS_ROM_FLAGS_PERMANENT_BINARY, "DMI tables"); diff --git a/src/VBox/Devices/Graphics/DevVGA.cpp b/src/VBox/Devices/Graphics/DevVGA.cpp index 72cb5229c..c96dcd90d 100644 --- a/src/VBox/Devices/Graphics/DevVGA.cpp +++ b/src/VBox/Devices/Graphics/DevVGA.cpp @@ -4984,58 +4984,62 @@ static DECLCALLBACK(int) vgaPortTakeScreenshot(PPDMIDISPLAYPORT pInterface, uint */ size_t cbRequired = pThis->last_scr_width * 4 * pThis->last_scr_height; - uint8_t *pu8Data = (uint8_t *)RTMemAlloc(cbRequired); - if (pu8Data == NULL) + if (cbRequired) { - rc = VERR_NO_MEMORY; - } - else - { - /* - * Only 3 methods, assigned below, will be called during the screenshot update. - * All other are already set to NULL. - */ - - Connector.pu8Data = pu8Data; - Connector.cBits = 32; - Connector.cx = pThis->last_scr_width; - Connector.cy = pThis->last_scr_height; - Connector.cbScanline = Connector.cx * 4; - Connector.pfnRefresh = vgaDummyRefresh; - Connector.pfnResize = vgaDummyResize; - Connector.pfnUpdateRect = vgaDummyUpdateRect; - - /* Save & replace state data. */ - PPDMIDISPLAYCONNECTOR pConnectorSaved = pThis->pDrv; - int32_t graphic_mode_saved = pThis->graphic_mode; - bool fRenderVRAMSaved = pThis->fRenderVRAM; - - pThis->pDrv = &Connector; - pThis->graphic_mode = -1; /* force a full refresh. */ - pThis->fRenderVRAM = 1; /* force the guest VRAM rendering to the given buffer. */ - - /* Make the screenshot. - * - * The second parameter is 'false' because the current display state, already updated by the - * pfnUpdateDisplayAll call above, is being rendered to an external buffer using a fake connector. - * That is if display is blanked, we expect a black screen in the external buffer. - */ - rc = vga_update_display(pThis, false); + uint8_t *pu8Data = (uint8_t *)RTMemAlloc(cbRequired); - /* Restore. */ - pThis->pDrv = pConnectorSaved; - pThis->graphic_mode = graphic_mode_saved; - pThis->fRenderVRAM = fRenderVRAMSaved; - - if (rc == VINF_SUCCESS) + if (pu8Data == NULL) + { + rc = VERR_NO_MEMORY; + } + else { /* - * Return the result. + * Only 3 methods, assigned below, will be called during the screenshot update. + * All other are already set to NULL. */ - *ppu8Data = pu8Data; - *pcbData = cbRequired; - *pcx = Connector.cx; - *pcy = Connector.cy; + + Connector.pu8Data = pu8Data; + Connector.cBits = 32; + Connector.cx = pThis->last_scr_width; + Connector.cy = pThis->last_scr_height; + Connector.cbScanline = Connector.cx * 4; + Connector.pfnRefresh = vgaDummyRefresh; + Connector.pfnResize = vgaDummyResize; + Connector.pfnUpdateRect = vgaDummyUpdateRect; + + /* Save & replace state data. */ + PPDMIDISPLAYCONNECTOR pConnectorSaved = pThis->pDrv; + int32_t graphic_mode_saved = pThis->graphic_mode; + bool fRenderVRAMSaved = pThis->fRenderVRAM; + + pThis->pDrv = &Connector; + pThis->graphic_mode = -1; /* force a full refresh. */ + pThis->fRenderVRAM = 1; /* force the guest VRAM rendering to the given buffer. */ + + /* Make the screenshot. + * + * The second parameter is 'false' because the current display state, already updated by the + * pfnUpdateDisplayAll call above, is being rendered to an external buffer using a fake connector. + * That is if display is blanked, we expect a black screen in the external buffer. + */ + rc = vga_update_display(pThis, false); + + /* Restore. */ + pThis->pDrv = pConnectorSaved; + pThis->graphic_mode = graphic_mode_saved; + pThis->fRenderVRAM = fRenderVRAMSaved; + + if (rc == VINF_SUCCESS) + { + /* + * Return the result. + */ + *ppu8Data = pu8Data; + *pcbData = cbRequired; + *pcx = Connector.cx; + *pcy = Connector.cy; + } } } diff --git a/src/VBox/Devices/Input/DevPS2.cpp b/src/VBox/Devices/Input/DevPS2.cpp index 8669982b2..7792e06f6 100644 --- a/src/VBox/Devices/Input/DevPS2.cpp +++ b/src/VBox/Devices/Input/DevPS2.cpp @@ -960,7 +960,8 @@ static int kbd_write_data(void *opaque, uint32_t addr, uint32_t val) default: break; } - s->write_cmd = 0; + if (rc != VINF_IOM_HC_IOPORT_WRITE) + s->write_cmd = 0; return rc; } diff --git a/src/VBox/Devices/Makefile.kmk b/src/VBox/Devices/Makefile.kmk index bd2eceb5d..b7eb0c47b 100644 --- a/src/VBox/Devices/Makefile.kmk +++ b/src/VBox/Devices/Makefile.kmk @@ -1,10 +1,10 @@ # $Id: Makefile.kmk $ ## @file -# Top-level makefile for the devices, drivers and services. +# Top-level sub-makefile for the devices, drivers and services. # # -# Copyright (C) 2006-2007 Sun Microsystems, Inc. +# Copyright (C) 2006-2010 Sun Microsystems, Inc. # # This file is part of VirtualBox Open Source Edition (OSE), as # available from http://www.virtualbox.org. This file is free software; @@ -54,7 +54,10 @@ endif # LIBRARIES += DevicesR3 Drivers ServicesR0 DLLS += VBoxDDU VBoxDD VBoxDD2 -SYSMODS += VBoxDDGC VBoxDD2GC VBoxDDR0 VBoxDD2R0 +SYSMODS += VBoxDDR0 VBoxDD2R0 +ifdef VBOX_WITH_RAW_MODE + SYSMODS += VBoxDDGC VBoxDD2GC +endif # @@ -480,104 +483,106 @@ Graphics/DevVGA.cpp_INCS = $(PATH_VgaBiosBin) Graphics/DevVGA.cpp_DEPS = $(PATH_VgaBiosBin)/vbetables.h -# -# VBoxDDGC (sysmod) -# -VBoxDDGC_TEMPLATE = VBOXGC -VBoxDDGC_SYSSUFF = .gc -ifeq ($(KBUILD_TARGET_ARCH),x86) - VBoxDDGC_DEFS.darwin = VBOX_WITH_2X_4GB_ADDR_SPACE -endif -VBoxDDGC_DEFS = -VBoxDDGC_INCS := \ - $(PATH_SUB_CURRENT) -VBoxDDGC_SOURCES = \ - Bus/DevPCI.cpp \ - Graphics/DevVGA.cpp \ - Input/DevPS2.cpp \ - PC/DevACPI.cpp \ - PC/DevPit-i8254.cpp \ - PC/DevPIC.cpp \ - PC/DevRTC.cpp \ - Storage/DevATA.cpp \ - Network/DevPCNet.cpp \ - Serial/DevSerial.cpp \ - Parallel/DevParallel.cpp - -ifdef VBOX_DYNAMIC_NET_ATTACH - VBoxDDGC_DEFS += VBOX_DYNAMIC_NET_ATTACH -endif +ifdef VBOX_WITH_RAW_MODE + # + # VBoxDDGC (sysmod) + # + VBoxDDGC_TEMPLATE = VBOXGC + VBoxDDGC_SYSSUFF = .gc + ifeq ($(KBUILD_TARGET_ARCH),x86) + VBoxDDGC_DEFS.darwin = VBOX_WITH_2X_4GB_ADDR_SPACE + endif + VBoxDDGC_DEFS = + VBoxDDGC_INCS := \ + $(PATH_SUB_CURRENT) + VBoxDDGC_SOURCES = \ + Bus/DevPCI.cpp \ + Graphics/DevVGA.cpp \ + Input/DevPS2.cpp \ + PC/DevACPI.cpp \ + PC/DevPit-i8254.cpp \ + PC/DevPIC.cpp \ + PC/DevRTC.cpp \ + Storage/DevATA.cpp \ + Network/DevPCNet.cpp \ + Serial/DevSerial.cpp \ + Parallel/DevParallel.cpp + + ifdef VBOX_DYNAMIC_NET_ATTACH + VBoxDDGC_DEFS += VBOX_DYNAMIC_NET_ATTACH + endif -ifdef VBOX_WITH_E1000 - VBoxDDGC_DEFS += VBOX_WITH_E1000 - VBoxDDGC_SOURCES += \ - Network/DevE1000.cpp \ - Network/DevE1000Phy.cpp -endif + ifdef VBOX_WITH_E1000 + VBoxDDGC_DEFS += VBOX_WITH_E1000 + VBoxDDGC_SOURCES += \ + Network/DevE1000.cpp \ + Network/DevE1000Phy.cpp + endif -ifdef VBOX_WITH_VIRTIO - VBoxDDGC_DEFS += VBOX_WITH_VIRTIO - VBoxDDGC_SOURCES += \ - VirtIO/Virtio.cpp \ - Network/DevVirtioNet.cpp -endif + ifdef VBOX_WITH_VIRTIO + VBoxDDGC_DEFS += VBOX_WITH_VIRTIO + VBoxDDGC_SOURCES += \ + VirtIO/Virtio.cpp \ + Network/DevVirtioNet.cpp + endif -ifdef VBOX_WITH_HGSMI - VBoxDDGC_DEFS += VBOX_WITH_HGSMI -endif + ifdef VBOX_WITH_HGSMI + VBoxDDGC_DEFS += VBOX_WITH_HGSMI + endif -ifdef VBOX_WITH_USB -VBoxDDGC_DEFS += VBOX_WITH_USB IN_USB_GC -VBoxDDGC_SOURCES += \ - USB/DevOHCI.cpp + ifdef VBOX_WITH_USB + VBoxDDGC_DEFS += VBOX_WITH_USB + VBoxDDGC_SOURCES += \ + USB/DevOHCI.cpp + + ifdef VBOX_WITH_EHCI + VBoxDDGC_DEFS += VBOX_WITH_EHCI + VBoxDDGC_SOURCES += \ + USB/DevEHCI.cpp + endif - ifdef VBOX_WITH_EHCI - VBoxDDGC_DEFS += VBOX_WITH_EHCI - VBoxDDGC_SOURCES += \ - USB/DevEHCI.cpp endif -endif - -ifdef VBOX_WITH_HGSMI - VBoxDDGC_DEFS += VBOX_WITH_HGSMI -endif -ifdef VBOX_WITH_VIDEOHWACCEL - VBoxDDGC_DEFS += VBOX_WITH_VIDEOHWACCEL -endif + ifdef VBOX_WITH_HGSMI + VBoxDDGC_DEFS += VBOX_WITH_HGSMI + endif + ifdef VBOX_WITH_VIDEOHWACCEL + VBoxDDGC_DEFS += VBOX_WITH_VIDEOHWACCEL + endif -ifdef VBOX_WITH_AHCI -VBoxDDGC_DEFS += VBOX_WITH_AHCI IN_AHCI_GC -VBoxDDGC_SOURCES += \ - Storage/DevAHCI.cpp \ - Storage/ATAController.cpp -endif + ifdef VBOX_WITH_AHCI + VBoxDDGC_DEFS += VBOX_WITH_AHCI IN_AHCI_GC + VBoxDDGC_SOURCES += \ + Storage/DevAHCI.cpp \ + Storage/ATAController.cpp + endif -ifdef VBOX_WITH_BUSLOGIC -VBoxDDGC_DEFS += VBOX_WITH_BUSLOGIC -VBoxDDGC_SOURCES += \ - Storage/DevBusLogic.cpp -endif + ifdef VBOX_WITH_BUSLOGIC + VBoxDDGC_DEFS += VBOX_WITH_BUSLOGIC + VBoxDDGC_SOURCES += \ + Storage/DevBusLogic.cpp + endif -ifdef VBOX_WITH_LSILOGIC -VBoxDDGC_DEFS += VBOX_WITH_LSILOGIC -VBoxDDGC_SOURCES += \ - Storage/DevLsiLogicSCSI.cpp -endif + ifdef VBOX_WITH_LSILOGIC + VBoxDDGC_DEFS += VBOX_WITH_LSILOGIC + VBoxDDGC_SOURCES += \ + Storage/DevLsiLogicSCSI.cpp + endif -ifdef VBOX_WITH_HPET -VBoxDDGC_DEFS += VBOX_WITH_HPET -VBoxDDGC_SOURCES += PC/DevHPET.cpp -endif + ifdef VBOX_WITH_HPET + VBoxDDGC_DEFS += VBOX_WITH_HPET + VBoxDDGC_SOURCES += PC/DevHPET.cpp + endif -ifeq ($(VBOX_LDR_FMT32),pe) -VBoxDDGC_LDFLAGS = -Entry:vgaMMIOWrite -endif -if1of ($(VBOX_LDR_FMT32), pe lx) -VBoxDDGC_LIBS = \ - $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) \ - $(PATH_LIB)/VMMGCImp$(VBOX_SUFF_LIB) -endif + ifeq ($(VBOX_LDR_FMT32),pe) + VBoxDDGC_LDFLAGS = -Entry:vgaMMIOWrite + endif + if1of ($(VBOX_LDR_FMT32), pe lx) + VBoxDDGC_LIBS = \ + $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) \ + $(PATH_LIB)/VMMGCImp$(VBOX_SUFF_LIB) + endif +endif # VBOX_WITH_RAW_MODE # @@ -675,25 +680,27 @@ if1of ($(VBOX_LDR_FMT), pe lx) VBoxDDR0_LIBS = $(PATH_LIB)/VMMR0Imp$(VBOX_SUFF_LIB) endif -# -# VBoxDD2GC (LGPL sysmod) -# -VBoxDD2GC_TEMPLATE = VBOXGC -VBoxDD2GC_DEFS = -VBoxDD2GC_SYSSUFF = .gc -VBoxDD2GC_INCS := \ - $(PATH_SUB_CURRENT) -VBoxDD2GC_SOURCES = \ - PC/DevAPIC.cpp -ifeq ($(VBOX_LDR_FMT32),pe) -VBoxDD2GC_LDFLAGS = -Entry:apicMMIOWrite -endif -if1of ($(VBOX_LDR_FMT32), pe lx) -VBoxDD2GC_LIBS = \ - $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) \ - $(PATH_LIB)/VMMGCImp$(VBOX_SUFF_LIB) -endif +ifdef VBOX_WITH_RAW_MODE + # + # VBoxDD2GC (LGPL sysmod) + # + VBoxDD2GC_TEMPLATE = VBOXGC + VBoxDD2GC_DEFS = + VBoxDD2GC_SYSSUFF = .gc + VBoxDD2GC_INCS := \ + $(PATH_SUB_CURRENT) + VBoxDD2GC_SOURCES = \ + PC/DevAPIC.cpp + ifeq ($(VBOX_LDR_FMT32),pe) + VBoxDD2GC_LDFLAGS = -Entry:apicMMIOWrite + endif + if1of ($(VBOX_LDR_FMT32), pe lx) + VBoxDD2GC_LIBS = \ + $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) \ + $(PATH_LIB)/VMMGCImp$(VBOX_SUFF_LIB) + endif +endif # # VBoxDD2R0 (LGPL sysmod) diff --git a/src/VBox/Devices/Network/DrvIntNet.cpp b/src/VBox/Devices/Network/DrvIntNet.cpp index 225d140f5..f4bad6831 100644 --- a/src/VBox/Devices/Network/DrvIntNet.cpp +++ b/src/VBox/Devices/Network/DrvIntNet.cpp @@ -751,19 +751,22 @@ static DECLCALLBACK(void) drvIntNetDestruct(PPDMDRVINS pDrvIns) if (EventSuspended != NIL_RTSEMEVENT) RTSemEventDestroy(EventSuspended); - /* - * Deregister statistics in case we're being detached. - */ - PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->pBuf->cbStatRecv); - PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->pBuf->cbStatSend); - PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->pBuf->cStatRecvs); - PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->pBuf->cStatSends); - PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->pBuf->cStatLost); - PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->pBuf->cStatYieldsNok); + if (pThis->pBuf) + { + /* + * Deregister statistics in case we're being detached. + */ + PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->pBuf->cbStatRecv); + PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->pBuf->cbStatSend); + PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->pBuf->cStatRecvs); + PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->pBuf->cStatSends); + PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->pBuf->cStatLost); + PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->pBuf->cStatYieldsNok); #ifdef VBOX_WITH_STATISTICS - PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->StatReceive); - PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->StatTransmit); + PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->StatReceive); + PDMDrvHlpSTAMDeregister(pDrvIns, &pThis->StatTransmit); #endif + } } diff --git a/src/VBox/Devices/Network/DrvNAT.cpp b/src/VBox/Devices/Network/DrvNAT.cpp index 7acf2c837..d2271119c 100644 --- a/src/VBox/Devices/Network/DrvNAT.cpp +++ b/src/VBox/Devices/Network/DrvNAT.cpp @@ -58,6 +58,13 @@ /******************************************************************************* * Defined Constants And Macros * *******************************************************************************/ + +/** + * @todo: This is a bad hack to prevent freezing the guest during high network + * activity. Windows host only. This needs to be fixed properly. + */ +#define VBOX_NAT_DELAY_HACK + #define GET_EXTRADATA(pthis, node, name, rc, type, type_name, var) \ do { \ (rc) = CFGMR3Query ## type((node), name, &(var)); \ @@ -957,14 +964,17 @@ static DECLCALLBACK(void) drvNATDestruct(PPDMDRVINS pDrvIns) LogFlow(("drvNATDestruct:\n")); - slirp_term(pThis->pNATState); - slirp_deregister_statistics(pThis->pNATState, pDrvIns); - pThis->pNATState = NULL; + if (pThis->pNATState) + { + slirp_term(pThis->pNATState); + slirp_deregister_statistics(pThis->pNATState, pDrvIns); #ifdef VBOX_WITH_STATISTICS # define DRV_PROFILE_COUNTER(name, dsc) DEREGISTER_COUNTER(name, pThis) # define DRV_COUNTING_COUNTER(name, dsc) DEREGISTER_COUNTER(name, pThis) # include "counters.h" #endif + pThis->pNATState = NULL; + } } diff --git a/src/VBox/Devices/Network/slirp/ip_icmp.c b/src/VBox/Devices/Network/slirp/ip_icmp.c index d7fbfb328..05c645689 100644 --- a/src/VBox/Devices/Network/slirp/ip_icmp.c +++ b/src/VBox/Devices/Network/slirp/ip_icmp.c @@ -89,7 +89,7 @@ icmp_init(PNATState pData) if (pData->icmp_socket.s == -1) { int rc = RTErrConvertFromErrno(errno); - LogRel(("NAT: ICMP/ping not available (could open ICMP socket, error %Rrc)\n", rc)); + LogRel(("NAT: ICMP/ping not available (could not open ICMP socket, error %Rrc)\n", rc)); return 1; } fd_nonblock(pData->icmp_socket.s); diff --git a/src/VBox/Devices/Network/slirp/libslirp.h b/src/VBox/Devices/Network/slirp/libslirp.h index 55f443d11..2d552ffcb 100644 --- a/src/VBox/Devices/Network/slirp/libslirp.h +++ b/src/VBox/Devices/Network/slirp/libslirp.h @@ -121,7 +121,6 @@ void *slirp_get_queue(PNATState pData); void *slirp_ext_m_get(PNATState pData); void slirp_ext_m_free(PNATState pData, void *); void slirp_ext_m_append(PNATState pData, void *, uint8_t *, size_t); -void slirp_push_recv_thread(void *pvUser); #endif /* diff --git a/src/VBox/Devices/Network/slirp/mbuf.c b/src/VBox/Devices/Network/slirp/mbuf.c index 0863f3b72..f58629fdd 100644 --- a/src/VBox/Devices/Network/slirp/mbuf.c +++ b/src/VBox/Devices/Network/slirp/mbuf.c @@ -378,6 +378,7 @@ void slirp_ext_m_free(PNATState pData, void *arg) struct mbuf *m = (struct mbuf *)arg; m_free(pData, m); } + void slirp_ext_m_append(PNATState pData, void *arg, uint8_t *pu8Buf, size_t cbBuf) { char *c; diff --git a/src/VBox/Devices/Network/slirp/slirp.c b/src/VBox/Devices/Network/slirp/slirp.c index 838fcc623..288bc8109 100644 --- a/src/VBox/Devices/Network/slirp/slirp.c +++ b/src/VBox/Devices/Network/slirp/slirp.c @@ -1149,10 +1149,9 @@ void slirp_select_poll(PNATState pData, struct pollfd *polls, int ndfs) * Check for FD_CLOSE events. * in some cases once FD_CLOSE engaged on socket it could be flashed latter (for some reasons) */ - if ( (NetworkEvents.lNetworkEvents & FD_CLOSE) - || (so->so_close == 1)) + if ( (NetworkEvents.lNetworkEvents & FD_CLOSE) + || (so->so_close == 1)) { - so->so_close = 1; /* mark it */ /* * drain the socket */ @@ -1161,9 +1160,11 @@ void slirp_select_poll(PNATState pData, struct pollfd *polls, int ndfs) ret = soread(pData, so); if (ret > 0) TCP_OUTPUT(pData, sototcpcb(so)); - else + else break; } + /* mark the socket for termination _after_ it was drained */ + so->so_close = 1; CONTINUE(tcp); } #endif diff --git a/src/VBox/Devices/Network/slirp/socket.c b/src/VBox/Devices/Network/slirp/socket.c index 0fad8b276..86ab88ddd 100644 --- a/src/VBox/Devices/Network/slirp/socket.c +++ b/src/VBox/Devices/Network/slirp/socket.c @@ -1056,9 +1056,23 @@ send_icmp_to_guest(PNATState pData, char *buff, size_t len, struct socket *so, c struct icmp_msg *icm; uint8_t proto; int type = 0; + int m_room; ip = (struct ip *)buff; +#ifndef RT_OS_DARWIN + /* Darwin: send IP.IP_LEN in host format (payload only) */ + ip->ip_len = RT_N2H_U16(ip->ip_len); +#endif + /* Note: ip->ip_len in host byte order (all OS) */ +#if defined(RT_OS_SOLARIS) || defined(RT_OS_DARWIN) + ip->ip_len += (ip->ip_hl << 2); /* Solaris: reports only payload length */ +#endif hlen = (ip->ip_hl << 2); + if (ip->ip_len < hlen + ICMP_MINLEN) + { + Log(("send_icmp_to_guest: ICMP header is too small to understand which type/subtype of the datagram\n")); + return; + } icp = (struct icmp *)((char *)ip + hlen); Log(("ICMP:received msg(t:%d, c:%d)\n", icp->icmp_type, icp->icmp_code)); @@ -1069,10 +1083,30 @@ send_icmp_to_guest(PNATState pData, char *buff, size_t len, struct socket *so, c return; } + /* + * ICMP_ECHOREPLY, ICMP_TIMXCEED, ICMP_UNREACH minimal header size is + * ICMP_ECHOREPLY assuming data 0 + * icmp_{type(8), code(8), cksum(16),identifier(16),seqnum(16)} + */ + if (ip->ip_len < hlen + 8) + { + Log(("send_icmp_to_guest: NAT accept ICMP_{ECHOREPLY, TIMXCEED, UNREACH} the minimum size is 64 (see rfc792)\n")); + return; + } + type = icp->icmp_type; if ( type == ICMP_TIMXCEED || type == ICMP_UNREACH) { + /* + * ICMP_TIMXCEED, ICMP_UNREACH minimal header size is + * icmp_{type(8), code(8), cksum(16),unused(32)} + IP header + 64 bit of original datagram + */ + if (ip->ip_len < hlen + 2*8 + sizeof(struct ip)) + { + Log(("send_icmp_to_guest: NAT accept ICMP_{TIMXCEED, UNREACH} the minimum size of ipheader + 64 bit of data (see rfc792)\n")); + return; + } ip = &icp->icmp_ip; } @@ -1088,7 +1122,31 @@ send_icmp_to_guest(PNATState pData, char *buff, size_t len, struct socket *so, c Assert(m != NULL); src = addr->sin_addr.s_addr; + if (type == ICMP_ECHOREPLY) + { + struct ip *ip0 = mtod(m, struct ip *); + struct icmp *icp0 = (struct icmp *)((char *)ip0 + (ip0->ip_hl << 2)); + if (icp0->icmp_type != ICMP_ECHO) + { + Log(("NAT: we haven't found echo for this reply\n")); + return; + } + /* + * while combining buffer to send (see ip_icmp.c) we control ICMP header only, + * IP header combined by OS network stack, our local copy of IP header contians values + * in host byte order so no byte order conversion is required. IP headers fields are converting + * in ip_output0 routine only. + */ + if ( (ip->ip_len - hlen ) + != (ip0->ip_len - (ip0->ip_hl << 2))) + { + Log(("NAT: ECHO(%d) lenght doesn't match ECHOREPLY(%d)\n", + (ip->ip_len - hlen ), (ip0->ip_len - (ip0->ip_hl << 2)))); + return; + } + } + /* ip points on origianal ip header */ ip = mtod(m, struct ip *); proto = ip->ip_p; /* Now ip is pointing on header we've sent from guest */ @@ -1108,12 +1166,25 @@ send_icmp_to_guest(PNATState pData, char *buff, size_t len, struct socket *so, c ip = mtod(m, struct ip *); /* ip is from mbuf we've overrided */ original_hlen = ip->ip_hl << 2; /* saves original ip header and options */ +#ifdef VBOX_WITH_SLIRP_BSD_MBUF + m_copyback(pData, m, original_hlen, len - hlen, buff + hlen); + ip->ip_len = m_length(m, NULL); +#else + /* m_room space in the saved m buffer */ + m_room = M_ROOM(m); + if (m_room < len - hlen + original_hlen) + { + /* we need involve ether header length into new buffer buffer calculation */ + m_inc(m, if_maxlinkhdr + len - hlen + original_hlen); + if (m->m_size < if_maxlinkhdr + len - hlen + original_hlen) + { + Log(("send_icmp_to_guest: extending buffer was failed (packet is dropped)\n")); + return; + } + } memcpy(m->m_data + original_hlen, buff + hlen, len - hlen); -#ifndef VBOX_WITH_SLIRP_BSD_MBUF m->m_len = len - hlen + original_hlen; ip->ip_len = m->m_len; -#else - ip->ip_len = m_length(m, NULL); #endif ip->ip_p = IPPROTO_ICMP; /* the original package could be whatever, but we're response via ICMP*/ @@ -1274,44 +1345,28 @@ static void sorecvfrom_icmp_unix(PNATState pData, struct socket *so) { struct sockaddr_in addr; socklen_t addrlen = sizeof(struct sockaddr_in); + struct ip ip; char *buff; int len = 0; - int rc = 0; - static int signalled = 0; - rc = ioctlsocket(so->s, FIONREAD, &len); - if ( rc == -1 + /* 1- step: read the ip header */ + len = recvfrom(so->s, &ip, sizeof(struct ip), MSG_PEEK, + (struct sockaddr *)&addr, &addrlen); + if ( len < 0 && ( errno == EAGAIN || errno == EWOULDBLOCK || errno == EINPROGRESS || errno == ENOTCONN)) { + Log(("sorecvfrom_icmp_unix: 1 - step can't read IP datagramm (would block)\n")); return; } - if (rc == -1 && signalled == 0) - { - signalled = 1; - LogRel(("NAT: fetching number of bits has been failed for ICMP socket (%d: %s)\n", - errno, strerror(errno))); - return; - } - len = (len != 0 && rc != -1 ? len : 1500); - buff = RTMemAlloc(len); - len = recvfrom(so->s, buff, len, 0, - (struct sockaddr *)&addr, &addrlen); - /* XXX Check if reply is "correct"? */ - if (len == -1 || len == 0) + if ( len < sizeof(struct ip) + || len < 0 + || len == 0) { u_char code; - if ( len == -1 - && (errno == EAGAIN - || errno == EWOULDBLOCK - || errno == EINPROGRESS - || errno == ENOTCONN)) - { - return; - } code = ICMP_UNREACH_PORT; if (errno == EHOSTUNREACH) @@ -1323,11 +1378,60 @@ static void sorecvfrom_icmp_unix(PNATState pData, struct socket *so) errno, strerror(errno))); icmp_error(pData, so->so_m, ICMP_UNREACH, code, 0, strerror(errno)); so->so_m = NULL; + Log(("sorecvfrom_icmp_unix: 1 - step can't read IP datagramm \n")); + return; } - else + /* basic check of IP header */ + if ( ip.ip_v != IPVERSION +#ifndef RT_OS_DARWIN + || ip.ip_p != IPPROTO_ICMP +#endif + ) { - send_icmp_to_guest(pData, buff, len, so, &addr); + Log(("sorecvfrom_icmp_unix: 1 - step IP isn't IPv4 \n")); + return; + } +#ifndef RT_OS_DARWIN + /* Darwin reports IP header in host format */ + ip.ip_len = RT_N2H_U16(ip.ip_len); +#endif +#if defined(RT_OS_SOLARIS) || defined(RT_OS_DARWIN) + ip.ip_len += (ip.ip_hl << 2); /* Solaris: reports only payload length */ +#endif + /* Note: ip->ip_len in host byte order (all OS) */ + len = ip.ip_len; + buff = RTMemAlloc(len); + if (buff == NULL) + { + Log(("sorecvfrom_icmp_unix: 1 - step can't allocate enought room for datagram\n")); + return; + } + /* 2 - step: we're reading rest of the datagramm to the buffer */ + addrlen = sizeof(struct sockaddr_in); + memset(&addr, 0, addrlen); + len = recvfrom(so->s, buff, len, 0, + (struct sockaddr *)&addr, &addrlen); + if ( len < 0 + && ( errno == EAGAIN + || errno == EWOULDBLOCK + || errno == EINPROGRESS + || errno == ENOTCONN)) + { + Log(("sorecvfrom_icmp_unix: 2 - step can't read IP body (would block expected:%d)\n", + ip.ip_len)); + RTMemFree(buff); + return; + } + if ( len < 0 + || len == 0) + { + Log(("sorecvfrom_icmp_unix: 2 - step read of the rest of datagramm is fallen (errno:%d, len:%d expected: %d)\n", + errno, len, (ip.ip_len - sizeof(struct ip)))); + RTMemFree(buff); + return; } + /* len is modified in 2nd read, when the rest of the datagramm was read */ + send_icmp_to_guest(pData, buff, len, so, &addr); RTMemFree(buff); } #endif /* !RT_OS_WINDOWS */ diff --git a/src/VBox/Devices/PC/BIOS/rombios.c b/src/VBox/Devices/PC/BIOS/rombios.c index ad8c67334..c4a24f211 100644 --- a/src/VBox/Devices/PC/BIOS/rombios.c +++ b/src/VBox/Devices/PC/BIOS/rombios.c @@ -10233,7 +10233,7 @@ pci_routing_table_structure: #if 0 dw 32 + (30 * 16) ;; table size #else - dw 32 + (10 * 16) ;; table size + dw 32 + (20 * 16) ;; table size #endif #else /* !VBOX */ dw 32 + (6 * 16) ;; table size @@ -10385,39 +10385,39 @@ pci_routing_table_structure_start: ;; 11th slot entry: 10th PCI slot db 0 ;; pci bus number db 0x58 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0x62 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x63 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x60 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x61 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 10 ;; physical slot (0 = embedded) db 0 ;; reserved ;; 12th slot entry: 11th PCI slot db 0 ;; pci bus number db 0x60 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0x63 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x60 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x61 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x62 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 11 ;; physical slot (0 = embedded) db 0 ;; reserved ;; 13th slot entry: 12th PCI slot db 0 ;; pci bus number db 0x68 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0x60 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x61 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x62 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x63 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 12 ;; physical slot (0 = embedded) db 0 ;; reserved @@ -10437,39 +10437,39 @@ pci_routing_table_structure_start: ;; 15th slot entry: 14th PCI slot db 0 ;; pci bus number db 0x78 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0x62 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x63 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x60 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x61 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 14 ;; physical slot (0 = embedded) db 0 ;; reserved ;; 16th slot entry: 15th PCI slot db 0 ;; pci bus number db 0x80 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0x63 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x60 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x61 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x62 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 15 ;; physical slot (0 = embedded) db 0 ;; reserved ;; 17th slot entry: 16th PCI slot db 0 ;; pci bus number db 0x88 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0x60 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x61 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x62 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x63 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 16 ;; physical slot (0 = embedded) db 0 ;; reserved @@ -10489,43 +10489,43 @@ pci_routing_table_structure_start: ;; 19th slot entry: 18th PCI slot db 0 ;; pci bus number db 0x98 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0x62 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x63 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x60 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x61 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 18 ;; physical slot (0 = embedded) db 0 ;; reserved ;; 20th slot entry: 19th PCI slot db 0 ;; pci bus number db 0xa0 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0x63 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x60 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x61 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x62 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 19 ;; physical slot (0 = embedded) db 0 ;; reserved - ;; 21th slot entry: 20th PCI slot + ;; 21st slot entry: 20th PCI slot db 0 ;; pci bus number db 0xa8 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0x60 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x61 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x62 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x63 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 20 ;; physical slot (0 = embedded) db 0 ;; reserved - ;; 21th slot entry: 20th PCI slot + ;; 22nd slot entry: 21st PCI slot db 0 ;; pci bus number db 0xb0 ;; pci device number (bit 7-3) db 0x61 ;; link value INTA# @@ -10536,63 +10536,50 @@ pci_routing_table_structure_start: dw 0xdef8 ;; IRQ bitmap INTC# db 0x60 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# - db 20 ;; physical slot (0 = embedded) - db 0 ;; reserved - ;; 22th slot entry: 21th PCI slot - db 0 ;; pci bus number - db 0xb8 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# - dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# - dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# - dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# - dw 0xdef8 ;; IRQ bitmap INTD# db 21 ;; physical slot (0 = embedded) db 0 ;; reserved - ;; 23th slot entry: 22th PCI slot + ;; 23rd slot entry: 22nd PCI slot db 0 ;; pci bus number - db 0xc0 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0xb8 ;; pci device number (bit 7-3) + db 0x62 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x63 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x60 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x61 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 22 ;; physical slot (0 = embedded) db 0 ;; reserved - ;; 24th slot entry: 23th PCI slot + ;; 24th slot entry: 23rd PCI slot db 0 ;; pci bus number - db 0xc8 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0xc0 ;; pci device number (bit 7-3) + db 0x63 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x60 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x61 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x62 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 23 ;; physical slot (0 = embedded) db 0 ;; reserved ;; 25th slot entry: 24th PCI slot db 0 ;; pci bus number - db 0xd0 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0xc8 ;; pci device number (bit 7-3) + db 0x60 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x61 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x62 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x63 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 24 ;; physical slot (0 = embedded) db 0 ;; reserved ;; 26th slot entry: 25th PCI slot db 0 ;; pci bus number - db 0xd8 ;; pci device number (bit 7-3) + db 0xd0 ;; pci device number (bit 7-3) db 0x61 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# db 0x62 ;; link value INTB# @@ -10605,46 +10592,46 @@ pci_routing_table_structure_start: db 0 ;; reserved ;; 27th slot entry: 26th PCI slot db 0 ;; pci bus number - db 0xe0 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0xd8 ;; pci device number (bit 7-3) + db 0x62 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x63 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x60 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x61 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 26 ;; physical slot (0 = embedded) db 0 ;; reserved ;; 28th slot entry: 27th PCI slot db 0 ;; pci bus number - db 0xe8 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0xe0 ;; pci device number (bit 7-3) + db 0x63 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x60 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x61 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x62 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 27 ;; physical slot (0 = embedded) db 0 ;; reserved ;; 29th slot entry: 28th PCI slot db 0 ;; pci bus number - db 0xf0 ;; pci device number (bit 7-3) - db 0x61 ;; link value INTA# + db 0xe8 ;; pci device number (bit 7-3) + db 0x60 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# - db 0x62 ;; link value INTB# + db 0x61 ;; link value INTB# dw 0xdef8 ;; IRQ bitmap INTB# - db 0x63 ;; link value INTC# + db 0x62 ;; link value INTC# dw 0xdef8 ;; IRQ bitmap INTC# - db 0x60 ;; link value INTD# + db 0x63 ;; link value INTD# dw 0xdef8 ;; IRQ bitmap INTD# db 28 ;; physical slot (0 = embedded) db 0 ;; reserved ;; 30th slot entry: 29th PCI slot db 0 ;; pci bus number - db 0xf8 ;; pci device number (bit 7-3) + db 0xf0 ;; pci device number (bit 7-3) db 0x61 ;; link value INTA# dw 0xdef8 ;; IRQ bitmap INTA# db 0x62 ;; link value INTB# diff --git a/src/VBox/Devices/PC/DevFwCommon.cpp b/src/VBox/Devices/PC/DevFwCommon.cpp index 49dde949d..03a8ee2c6 100644 --- a/src/VBox/Devices/PC/DevFwCommon.cpp +++ b/src/VBox/Devices/PC/DevFwCommon.cpp @@ -310,13 +310,14 @@ static bool sharedfwChecksumOk(const uint8_t * const au8Data, uint32_t u32Length * @returns VBox status code. * @param pDevIns The device instance. * @param pTable Where to create the DMI table. - * @param cbMax The max size of the DMI table. + * @param cbMax The maximum size of the DMI table. * @param pUuid Pointer to the UUID to use if the DmiUuid * configuration string isn't present. * @param pCfgHandle The handle to our config node. * @param fPutSmbiosHeaders Plant SMBIOS headers if true. */ -int FwCommonPlantDMITable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, PCRTUUID pUuid, PCFGMNODE pCfgHandle, bool fPutSmbiosHeaders) +int FwCommonPlantDMITable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, PCRTUUID pUuid, + PCFGMNODE pCfgHandle, bool fPutSmbiosHeaders) { #define CHECKSIZE(cbWant) \ { \ @@ -390,6 +391,13 @@ int FwCommonPlantDMITable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, P } \ } +#define TERM_STRUCT \ + { \ + *pszStr++ = '\0'; /* terminate set of text strings */ \ + if (iStrNr == 1) \ + *pszStr++ = '\0'; /* terminate a structure without strings */ \ + } + bool fForceDefault = false; #ifdef VBOX_BIOS_DMI_FALLBACK /* @@ -491,7 +499,7 @@ int FwCommonPlantDMITable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, P pBIOSInf->u8CharacteristicsByte2 = 0 /* any more?? */ ; - *pszStr++ = '\0'; + TERM_STRUCT; /*********************************** * DMI system information (Type 1) * @@ -532,7 +540,7 @@ int FwCommonPlantDMITable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, P pSystemInf->u8WakeupType = 6; /* Power Switch */ pSystemInf->u8SKUNumber = 0; READCFGSTR(pSystemInf->u8Family, DmiSystemFamily); - *pszStr++ = '\0'; + TERM_STRUCT; /******************************************** * DMI System Enclosure or Chassis (Type 3) * @@ -565,7 +573,7 @@ int FwCommonPlantDMITable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, P pChassis->u8ContElems = 0; /* no contained elements */ pChassis->u8ContElemRecLen = 0; /* no contained elements */ # endif - *pszStr++ = '\0'; + TERM_STRUCT; /***************************** * DMI OEM strings (Type 11) * @@ -589,7 +597,7 @@ int FwCommonPlantDMITable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, P READCFGSTRDEF(pOEMStrings->u8VBoxVersion, "DmiOEMVBoxVer", szTmp); RTStrPrintf(szTmp, sizeof(szTmp), "vboxRev_%u", RTBldCfgRevision()); READCFGSTRDEF(pOEMStrings->u8VBoxRevision, "DmiOEMVBoxRev", szTmp); - *pszStr++ = '\0'; + TERM_STRUCT; /* End-of-table marker - includes padding to account for fixed table size. */ PDMIHDR pEndOfTable = (PDMIHDR)pszStr; @@ -672,9 +680,11 @@ AssertCompile(VBOX_DMI_TABLE_ENTR == 5); * At least one I/O APIC must be enabled.'' * * @param pDevIns The device instance data. - * @param addr physical address in guest memory. + * @param pTable Where to write the table. + * @param cbMax The maximum size of the MPS table. + * @param cCpus The number of guest CPUs. */ -void FwCommonPlantMpsTable(PPDMDEVINS pDevIns, uint8_t *pTable, uint16_t cCpus) +void FwCommonPlantMpsTable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, uint16_t cCpus) { /* configuration table */ PMPSCFGTBLHEADER pCfgTab = (MPSCFGTBLHEADER*)pTable; @@ -755,9 +765,9 @@ void FwCommonPlantMpsTable(PPDMDEVINS pDevIns, uint8_t *pTable, uint16_t cCpus) pCfgTab->u16Length = (uint8_t*)pIrqEntry - pTable; pCfgTab->u8Checksum = fwCommonChecksum(pTable, pCfgTab->u16Length); - AssertMsg(pCfgTab->u16Length < 0x1000 - 0x100, + AssertMsg(pCfgTab->u16Length < cbMax, ("VBOX_MPS_TABLE_SIZE=%d, maximum allowed size is %d", - pCfgTab->u16Length, 0x1000-0x100)); + pCfgTab->u16Length, cbMax)); MPSFLOATPTR floatPtr; floatPtr.au8Signature[0] = '_'; diff --git a/src/VBox/Devices/PC/DevFwCommon.h b/src/VBox/Devices/PC/DevFwCommon.h index 6ca457ab8..3072b09cc 100644 --- a/src/VBox/Devices/PC/DevFwCommon.h +++ b/src/VBox/Devices/PC/DevFwCommon.h @@ -31,9 +31,10 @@ #define VBOX_MPS_TABLE_BASE (VBOX_DMI_TABLE_BASE+VBOX_DMI_TABLE_SIZE) /* Plant DMI table */ -int FwCommonPlantDMITable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, PCRTUUID pUuid, PCFGMNODE pCfgHandle, bool fPutSmbiosHeaders); +int FwCommonPlantDMITable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, PCRTUUID pUuid, + PCFGMNODE pCfgHandle, bool fPutSmbiosHeaders); /* Plant MPS table */ -void FwCommonPlantMpsTable(PPDMDEVINS pDevIns, uint8_t *pTable, uint16_t cCpus); +void FwCommonPlantMpsTable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, uint16_t cCpus); #endif diff --git a/src/VBox/Devices/PC/DevPcBios.cpp b/src/VBox/Devices/PC/DevPcBios.cpp index f7e3d3697..6e93b3adf 100644 --- a/src/VBox/Devices/PC/DevPcBios.cpp +++ b/src/VBox/Devices/PC/DevPcBios.cpp @@ -746,7 +746,8 @@ static DECLCALLBACK(void) pcbiosReset(PPDMDEVINS pDevIns) LogFlow(("pcbiosReset:\n")); if (pThis->u8IOAPIC) - FwCommonPlantMpsTable(pDevIns, pThis->au8DMIPage + VBOX_DMI_TABLE_SIZE, pThis->cCpus); + FwCommonPlantMpsTable(pDevIns, pThis->au8DMIPage + VBOX_DMI_TABLE_SIZE, + _4K - VBOX_DMI_TABLE_SIZE, pThis->cCpus); /* * Re-shadow the LAN ROM image and make it RAM/RAM. @@ -1028,11 +1029,13 @@ static DECLCALLBACK(int) pcbiosConstruct(PPDMDEVINS pDevIns, int iInstance, PCF uuid.Gen.u32TimeLow = RT_H2BE_U32(uuid.Gen.u32TimeLow); uuid.Gen.u16TimeMid = RT_H2BE_U16(uuid.Gen.u16TimeMid); uuid.Gen.u16TimeHiAndVersion = RT_H2BE_U16(uuid.Gen.u16TimeHiAndVersion); - rc = FwCommonPlantDMITable(pDevIns, pThis->au8DMIPage, VBOX_DMI_TABLE_SIZE, &uuid, pCfgHandle, false /*fPutSmbiosHeaders*/); + rc = FwCommonPlantDMITable(pDevIns, pThis->au8DMIPage, + VBOX_DMI_TABLE_SIZE, &uuid, pCfgHandle, /*fPutSmbiosHeaders=*/false); if (RT_FAILURE(rc)) return rc; if (pThis->u8IOAPIC) - FwCommonPlantMpsTable(pDevIns, pThis->au8DMIPage + VBOX_DMI_TABLE_SIZE, pThis->cCpus); + FwCommonPlantMpsTable(pDevIns, pThis->au8DMIPage + VBOX_DMI_TABLE_SIZE, + _4K - VBOX_DMI_TABLE_SIZE, pThis->cCpus); rc = PDMDevHlpROMRegister(pDevIns, VBOX_DMI_TABLE_BASE, _4K, pThis->au8DMIPage, PGMPHYS_ROM_FLAGS_PERMANENT_BINARY, "DMI tables"); diff --git a/src/VBox/Devices/PC/DevPcBios.h b/src/VBox/Devices/PC/DevPcBios.h index b68e10d6c..8a07803f4 100644 --- a/src/VBox/Devices/PC/DevPcBios.h +++ b/src/VBox/Devices/PC/DevPcBios.h @@ -26,7 +26,15 @@ #define VBOX_DMI_TABLE_BASE 0xe1000 #define VBOX_DMI_TABLE_VER 0x25 #define VBOX_DMI_TABLE_ENTR 5 -#define VBOX_DMI_TABLE_SIZE 0x100 + +/** def VBOX_DMI_TABLE_SIZE + * + * Must not be bigger than the minimal size of the DMI tables + 255 because + * the length field of the the DMI end-of-table marker is 8 bits only. And + * the size should be at least 16-byte aligned for a proper alignment of + * the MPS table. + */ +#define VBOX_DMI_TABLE_SIZE 352 /** @def VBOX_VMI_BIOS_BASE * @@ -37,6 +45,8 @@ /** @def VBOX_LANBOOT_SEG + * + * Should usually start right after the DMI BIOS page */ #define VBOX_LANBOOT_SEG 0xe200 diff --git a/src/VBox/Devices/PC/DrvACPI.cpp b/src/VBox/Devices/PC/DrvACPI.cpp index e3c775933..a829d18aa 100644 --- a/src/VBox/Devices/PC/DrvACPI.cpp +++ b/src/VBox/Devices/PC/DrvACPI.cpp @@ -34,10 +34,10 @@ #include <iprt/string.h> #ifdef RT_OS_LINUX -# include <iprt/string.h> -# include <sys/types.h> -# include <dirent.h> -# include <stdio.h> +# include <iprt/critsect.h> +# include <iprt/dir.h> +# include <iprt/semaphore.h> +# include <iprt/stream.h> #endif #ifdef RT_OS_DARWIN @@ -74,6 +74,29 @@ typedef struct DRVACPI PPDMIACPIPORT pPort; /** Pointer to the driver instance. */ PPDMDRVINS pDrvIns; + +#ifdef RT_OS_LINUX + /** The current power source. */ + PDMACPIPOWERSOURCE enmPowerSource; + /** true = one or more batteries preset, false = no battery present. */ + bool fBatteryPresent; + /** No need to RTThreadPoke the poller when set. */ + bool volatile fDontPokePoller; + /** Remaining battery capacity. */ + PDMACPIBATCAPACITY enmBatteryRemainingCapacity; + /** Battery state. */ + PDMACPIBATSTATE enmBatteryState; + /** Preset battery charging/discharging rate. */ + uint32_t u32BatteryPresentRate; + /** The poller thread. */ + PPDMTHREAD pPollerThread; + /** Synchronize access to the above fields. + * XXX A spinlock is probaly cheaper ... */ + RTCRITSECT CritSect; + /** Event semaphore the poller thread is sleeping on. */ + RTSEMEVENT hPollerSleepEvent; +#endif + } DRVACPI, *PDRVACPI; @@ -139,63 +162,14 @@ static DECLCALLBACK(int) drvACPIQueryPowerSource(PPDMIACPICONNECTOR pInterface, GetLastError())); *pPowerSource = PDM_ACPI_POWER_SOURCE_UNKNOWN; } -#elif defined (RT_OS_LINUX) /* !RT_OS_WINDOWS */ - DIR *dfd; - struct dirent *dp; - FILE *statusFile = NULL; - char buff[NAME_MAX+50]; - /* start with no result */ - *pPowerSource = PDM_ACPI_POWER_SOURCE_UNKNOWN; +#elif defined (RT_OS_LINUX) + PDRVACPI pThis = RT_FROM_MEMBER(pInterface, DRVACPI, IACPIConnector); + RTCritSectEnter(&pThis->CritSect); + *pPowerSource = pThis->enmPowerSource; + RTCritSectLeave(&pThis->CritSect); - dfd = opendir("/proc/acpi/ac_adapter/"); - if (dfd) - { - for (;;) - { - dp = readdir(dfd); - if (dp == 0) - break; - if (strcmp(dp->d_name, ".") == 0 || - strcmp(dp->d_name, "..") == 0) - continue; - strcpy(buff, "/proc/acpi/ac_adapter/"); - strcat(buff, dp->d_name); - strcat(buff, "/status"); - statusFile = fopen(buff, "r"); - /* there's another possible name for this file */ - if (!statusFile) - { - strcpy(buff, "/proc/acpi/ac_adapter/"); - strcat(buff, dp->d_name); - strcat(buff, "/state"); - statusFile = fopen(buff, "r"); - } - if (statusFile) - break; - } - closedir(dfd); - } - - if (statusFile) - { - for (;;) - { - char buff2[1024]; - if (fgets(buff2, sizeof(buff), statusFile) == NULL) - break; - if (strstr(buff2, "Status:") != NULL || - strstr(buff2, "state:") != NULL) - { - if (strstr(buff2, "on-line") != NULL) - *pPowerSource = PDM_ACPI_POWER_SOURCE_OUTLET; - else - *pPowerSource = PDM_ACPI_POWER_SOURCE_BATTERY; - } - } - fclose(statusFile); - } -#elif defined (RT_OS_DARWIN) /* !RT_OS_LINUX */ +#elif defined (RT_OS_DARWIN) *pPowerSource = PDM_ACPI_POWER_SOURCE_UNKNOWN; CFTypeRef pBlob = IOPSCopyPowerSourcesInfo(); @@ -203,11 +177,11 @@ static DECLCALLBACK(int) drvACPIQueryPowerSource(PPDMIACPICONNECTOR pInterface, CFDictionaryRef pSource = NULL; const void *psValue; - bool result; + bool fResult; if (CFArrayGetCount(pSources) > 0) { - for(int i = 0; i < CFArrayGetCount(pSources); ++i) + for (int i = 0; i < CFArrayGetCount(pSources); ++i) { pSource = IOPSGetPowerSourceDescription(pBlob, CFArrayGetValueAtIndex(pSources, i)); /* If the source is empty skip over to the next one. */ @@ -218,24 +192,25 @@ static DECLCALLBACK(int) drvACPIQueryPowerSource(PPDMIACPICONNECTOR pInterface, if (CFDictionaryGetValue(pSource, CFSTR(kIOPSIsPresentKey)) == kCFBooleanFalse) continue; /* Only internal power types are of interest. */ - result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSTransportTypeKey), &psValue); - if (result && - CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSInternalType), 0) == kCFCompareEqualTo) + fResult = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSTransportTypeKey), &psValue); + if ( fResult + && CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSInternalType), 0) == kCFCompareEqualTo) { /* Check which power source we are connect on. */ - result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSPowerSourceStateKey), &psValue); - if (result && - CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSACPowerValue), 0) == kCFCompareEqualTo) + fResult = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSPowerSourceStateKey), &psValue); + if ( fResult + && CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSACPowerValue), 0) == kCFCompareEqualTo) *pPowerSource = PDM_ACPI_POWER_SOURCE_OUTLET; - else if (result && - CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSBatteryPowerValue), 0) == kCFCompareEqualTo) + else if ( fResult + && CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSBatteryPowerValue), 0) == kCFCompareEqualTo) *pPowerSource = PDM_ACPI_POWER_SOURCE_BATTERY; } } } CFRelease(pBlob); CFRelease(pSources); -#elif defined(RT_OS_FREEBSD) /* !RT_OS_DARWIN */ + +#elif defined(RT_OS_FREEBSD) int fAcLine = 0; size_t cbParameter = sizeof(fAcLine); @@ -257,7 +232,8 @@ static DECLCALLBACK(int) drvACPIQueryPowerSource(PPDMIACPICONNECTOR pInterface, } #else /* !RT_OS_FREEBSD either - what could this be? */ *pPowerSource = PDM_ACPI_POWER_SOURCE_OUTLET; -#endif /* !RT_OS_WINDOWS */ + +#endif /* !RT_OS_FREEBSD */ return VINF_SUCCESS; } @@ -265,9 +241,9 @@ static DECLCALLBACK(int) drvACPIQueryPowerSource(PPDMIACPICONNECTOR pInterface, * @copydoc PDMIACPICONNECTOR::pfnQueryBatteryStatus */ static DECLCALLBACK(int) drvACPIQueryBatteryStatus(PPDMIACPICONNECTOR pInterface, bool *pfPresent, - PPDMACPIBATCAPACITY penmRemainingCapacity, - PPDMACPIBATSTATE penmBatteryState, - uint32_t *pu32PresentRate) + PPDMACPIBATCAPACITY penmRemainingCapacity, + PPDMACPIBATSTATE penmBatteryState, + uint32_t *pu32PresentRate) { /* default return values for all architectures */ *pfPresent = false; /* no battery present */ @@ -298,208 +274,29 @@ static DECLCALLBACK(int) drvACPIQueryBatteryStatus(PPDMIACPICONNECTOR pInterface else { AssertMsgFailed(("Could not determine system power status, error: 0x%x\n", - GetLastError())); - } -#elif defined(RT_OS_LINUX) - DIR *dfd; - struct dirent *dp; - FILE *statusFile = NULL; - FILE *infoFile = NULL; - char buff[NAME_MAX+50]; - /* the summed up maximum capacity */ - int maxCapacityTotal = ~0; - /* the summed up total capacity */ - int currentCapacityTotal = ~0; - int presentRate = 0; - int presentRateTotal = 0; - bool fBatteryPresent = false, fCharging=false, fDischarging=false, fCritical=false; - - dfd = opendir("/proc/acpi/battery/"); - if (dfd) - { - for (;;) - { - dp = readdir(dfd); - if (dp == 0) - break; - if (strcmp(dp->d_name, ".") == 0 || - strcmp(dp->d_name, "..") == 0) - continue; - strcpy(buff, "/proc/acpi/battery/"); - strcat(buff, dp->d_name); - strcat(buff, "/status"); - statusFile = fopen(buff, "r"); - /* there is a 2nd variant of that file */ - if (!statusFile) - { - strcpy(buff, "/proc/acpi/battery/"); - strcat(buff, dp->d_name); - strcat(buff, "/state"); - statusFile = fopen(buff, "r"); - } - strcpy(buff, "/proc/acpi/battery/"); - strcat(buff, dp->d_name); - strcat(buff, "/info"); - infoFile = fopen(buff, "r"); - /* we need both files */ - if (!statusFile || !infoFile) - { - if (statusFile) - fclose(statusFile); - if (infoFile) - fclose(infoFile); - break; - } - - /* get 'present' status from the info file */ - for (;;) - { - char buff2[1024]; - if (fgets(buff2, sizeof(buff), infoFile) == NULL) - break; - - if (strstr(buff2, "present:") != NULL) - { - if (strstr(buff2, "yes") != NULL) - fBatteryPresent = true; - } - } - - /* move file pointer back to start of file */ - fseek(infoFile, 0, SEEK_SET); - - if (fBatteryPresent) - { - /* get the maximum capacity from the info file */ - for (;;) - { - char buff2[1024]; - int maxCapacity = ~0; - if (fgets(buff2, sizeof(buff), infoFile) == NULL) - break; - if (strstr(buff2, "last full capacity:") != NULL) - { - if (sscanf(buff2 + 19, "%d", &maxCapacity) <= 0) - maxCapacity = ~0; - - /* did we get a valid capacity and it's the first value we got? */ - if (maxCapacityTotal < 0 && maxCapacity > 0) - { - /* take this as the maximum capacity */ - maxCapacityTotal = maxCapacity; - } - else - { - /* sum up the maximum capacity */ - if (maxCapacityTotal > 0 && maxCapacity > 0) - maxCapacityTotal += maxCapacity; - } - /* we got all we need */ - break; - } - } - - /* get the current capacity/state from the status file */ - bool gotRemainingCapacity=false, gotBatteryState=false, - gotCapacityState=false, gotPresentRate=false; - while (!gotRemainingCapacity || !gotBatteryState || - !gotCapacityState || !gotPresentRate) - { - char buff2[1024]; - int currentCapacity = ~0; - if (fgets(buff2, sizeof(buff), statusFile) == NULL) - break; - if (strstr(buff2, "remaining capacity:") != NULL) - { - if (sscanf(buff2 + 19, "%d", ¤tCapacity) <= 0) - currentCapacity = ~0; - - /* is this the first valid value we see? If so, take it! */ - if (currentCapacityTotal < 0 && currentCapacity >= 0) - { - currentCapacityTotal = currentCapacity; - } - else - { - /* just sum up the current value */ - if (currentCapacityTotal > 0 && currentCapacity > 0) - currentCapacityTotal += currentCapacity; - } - gotRemainingCapacity = true; - } - if (strstr(buff2, "charging state:") != NULL) - { - if (strstr(buff2 + 15, "discharging") != NULL) - fDischarging = true; - else if (strstr(buff2 + 15, "charging") != NULL) - fCharging = true; - gotBatteryState = true; - } - if (strstr(buff2, "capacity state:") != NULL) - { - if (strstr(buff2 + 15, "critical") != NULL) - fCritical = true; - gotCapacityState = true; - } - if (strstr(buff2, "present rate:") != NULL) - { - if (sscanf(buff2 + 13, "%d", &presentRate) <= 0) - presentRate = 0; - gotPresentRate = true; - } - } - } - - if (presentRate) - { - if (fDischarging) - presentRateTotal -= presentRate; - else - presentRateTotal += presentRate; - } - - if (statusFile) - fclose(statusFile); - if (infoFile) - fclose(infoFile); - - } - closedir(dfd); + GetLastError())); } - *pfPresent = fBatteryPresent; - - /* charging/discharging bits are mutual exclusive */ - uint32_t uBs = PDM_ACPI_BAT_STATE_CHARGED; - if (fDischarging) - uBs = PDM_ACPI_BAT_STATE_DISCHARGING; - else if (fCharging) - uBs = PDM_ACPI_BAT_STATE_CHARGING; - if (fCritical) - uBs |= PDM_ACPI_BAT_STATE_CRITICAL; - *penmBatteryState = (PDMACPIBATSTATE)uBs; - - if (presentRateTotal < 0) - presentRateTotal = -presentRateTotal; +#elif defined(RT_OS_LINUX) + PDRVACPI pThis = RT_FROM_MEMBER(pInterface, DRVACPI, IACPIConnector); + RTCritSectEnter(&pThis->CritSect); + *pfPresent = pThis->fBatteryPresent; + *penmRemainingCapacity = pThis->enmBatteryRemainingCapacity; + *penmBatteryState = pThis->enmBatteryState; + *pu32PresentRate = pThis->u32BatteryPresentRate; + RTCritSectLeave(&pThis->CritSect); - if (maxCapacityTotal > 0 && currentCapacityTotal > 0) - { - /* calculate the percentage */ - *penmRemainingCapacity = (PDMACPIBATCAPACITY)(((float)currentCapacityTotal / (float)maxCapacityTotal) - * PDM_ACPI_BAT_CAPACITY_MAX); - *pu32PresentRate = (uint32_t)(((float)presentRateTotal / (float)maxCapacityTotal) * 1000); - } #elif defined(RT_OS_DARWIN) CFTypeRef pBlob = IOPSCopyPowerSourcesInfo(); CFArrayRef pSources = IOPSCopyPowerSourcesList(pBlob); CFDictionaryRef pSource = NULL; const void *psValue; - bool result; + bool fResult; if (CFArrayGetCount(pSources) > 0) { - for(int i = 0; i < CFArrayGetCount(pSources); ++i) + for (int i = 0; i < CFArrayGetCount(pSources); ++i) { pSource = IOPSGetPowerSourceDescription(pBlob, CFArrayGetValueAtIndex(pSources, i)); /* If the source is empty skip over to the next one. */ @@ -510,18 +307,18 @@ static DECLCALLBACK(int) drvACPIQueryBatteryStatus(PPDMIACPICONNECTOR pInterface if (CFDictionaryGetValue(pSource, CFSTR(kIOPSIsPresentKey)) == kCFBooleanFalse) continue; /* Only internal power types are of interest. */ - result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSTransportTypeKey), &psValue); - if (result && - CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSInternalType), 0) == kCFCompareEqualTo) + fResult = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSTransportTypeKey), &psValue); + if ( fResult + && CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSInternalType), 0) == kCFCompareEqualTo) { PDMACPIPOWERSOURCE powerSource = PDM_ACPI_POWER_SOURCE_UNKNOWN; /* First check which power source we are connect on. */ - result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSPowerSourceStateKey), &psValue); - if (result && - CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSACPowerValue), 0) == kCFCompareEqualTo) + fResult = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSPowerSourceStateKey), &psValue); + if ( fResult + && CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSACPowerValue), 0) == kCFCompareEqualTo) powerSource = PDM_ACPI_POWER_SOURCE_OUTLET; - else if (result && - CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSBatteryPowerValue), 0) == kCFCompareEqualTo) + else if ( fResult + && CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSBatteryPowerValue), 0) == kCFCompareEqualTo) powerSource = PDM_ACPI_POWER_SOURCE_BATTERY; /* At this point the power source is present. */ @@ -533,12 +330,12 @@ static DECLCALLBACK(int) drvACPIQueryBatteryStatus(PPDMIACPICONNECTOR pInterface float remCapacity = 0.0f; /* Fetch the current capacity value of the power source */ - result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSCurrentCapacityKey), &psValue); - if (result) + fResult = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSCurrentCapacityKey), &psValue); + if (fResult) CFNumberGetValue((CFNumberRef)psValue, kCFNumberSInt32Type, &curCapacity); /* Fetch the maximum capacity value of the power source */ - result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSMaxCapacityKey), &psValue); - if (result) + fResult = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSMaxCapacityKey), &psValue); + if (fResult) CFNumberGetValue((CFNumberRef)psValue, kCFNumberSInt32Type, &maxCapacity); /* Calculate the remaining capacity in percent */ @@ -552,16 +349,16 @@ static DECLCALLBACK(int) drvACPIQueryBatteryStatus(PPDMIACPICONNECTOR pInterface *penmBatteryState = PDM_ACPI_BAT_STATE_DISCHARGING; int timeToEmpty = -1; /* Get the time till the battery source will be empty */ - result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSTimeToEmptyKey), &psValue); - if (result) + fResult = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSTimeToEmptyKey), &psValue); + if (fResult) CFNumberGetValue((CFNumberRef)psValue, kCFNumberSInt32Type, &timeToEmpty); if (timeToEmpty != -1) /* 0...1000 */ *pu32PresentRate = (uint32_t)roundf((remCapacity / ((float)timeToEmpty/60.0)) * 10.0); } - if (powerSource == PDM_ACPI_POWER_SOURCE_OUTLET && - CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSIsChargingKey), &psValue)) + if ( powerSource == PDM_ACPI_POWER_SOURCE_OUTLET + && CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSIsChargingKey), &psValue)) { /* We are running on an AC power source, but we also have a * battery power source present. */ @@ -571,8 +368,8 @@ static DECLCALLBACK(int) drvACPIQueryBatteryStatus(PPDMIACPICONNECTOR pInterface *penmBatteryState = PDM_ACPI_BAT_STATE_CHARGING; int timeToFull = -1; /* Get the time till the battery source will be charged */ - result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSTimeToFullChargeKey), &psValue); - if (result) + fResult = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSTimeToFullChargeKey), &psValue); + if (fResult) CFNumberGetValue((CFNumberRef)psValue, kCFNumberSInt32Type, &timeToFull); if (timeToFull != -1) /* 0...1000 */ @@ -582,8 +379,8 @@ static DECLCALLBACK(int) drvACPIQueryBatteryStatus(PPDMIACPICONNECTOR pInterface /* Check for critical */ int criticalValue = 20; - result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSDeadWarnLevelKey), &psValue); - if (result) + fResult = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSDeadWarnLevelKey), &psValue); + if (fResult) CFNumberGetValue((CFNumberRef)psValue, kCFNumberSInt32Type, &criticalValue); if (remCapacity < criticalValue) *penmBatteryState = (PDMACPIBATSTATE)(*penmBatteryState | PDM_ACPI_BAT_STATE_CRITICAL); @@ -592,6 +389,7 @@ static DECLCALLBACK(int) drvACPIQueryBatteryStatus(PPDMIACPICONNECTOR pInterface } CFRelease(pBlob); CFRelease(pSources); + #elif defined(RT_OS_FREEBSD) /* We try to use /dev/acpi first and if that fails use the sysctls. */ bool fSuccess = true; @@ -656,7 +454,9 @@ static DECLCALLBACK(int) drvACPIQueryBatteryStatus(PPDMIACPICONNECTOR pInterface * The rate is in mA so we have to convert it. * The current power rate can be calculated with P = U * I */ - *pu32PresentRate = (uint32_t)((((float)BatteryIo.bst.volt/1000.0) * ((float)BatteryIo.bst.rate/1000.0)) * 1000.0); + *pu32PresentRate = (uint32_t)( ( ((float)BatteryIo.bst.volt/1000.0) + * ((float)BatteryIo.bst.rate/1000.0)) + * 1000.0); } } } @@ -696,17 +496,428 @@ static DECLCALLBACK(int) drvACPIQueryBatteryStatus(PPDMIACPICONNECTOR pInterface int curCapacity = 0; cbParameter = sizeof(curCapacity); rc = sysctlbyname("hw.acpi.battery.life", &curCapacity, &cbParameter, NULL, NULL); - if ((!rc) && (curCapacity >= 0)) + if (!rc && curCapacity >= 0) *penmRemainingCapacity = (PDMACPIBATCAPACITY)curCapacity; /* The rate can't be determined with sysctls. */ } } } + #endif /* RT_OS_FREEBSD */ + return VINF_SUCCESS; } +#ifdef RT_OS_LINUX +/** + * Poller thread for /proc/acpi status files. + * + * Reading these files takes ages (several seconds) on some hosts, therefore + * start this thread. The termination of this thread may take some seconds + * on such a hosts! + * + * @param pDrvIns The driver instance data. + * @param pThread The thread. + */ +static DECLCALLBACK(int) drvACPIPoller(PPDMDRVINS pDrvIns, PPDMTHREAD pThread) +{ + PDRVACPI pThis = PDMINS_2_DATA(pDrvIns, PDRVACPI); + + if (pThread->enmState == PDMTHREADSTATE_INITIALIZING) + return VINF_SUCCESS; + + while (pThread->enmState == PDMTHREADSTATE_RUNNING) + { + ASMAtomicWriteBool(&pThis->fDontPokePoller, false); + + PDMACPIPOWERSOURCE enmPowerSource = PDM_ACPI_POWER_SOURCE_UNKNOWN; + PRTSTREAM pStrmStatus; + PRTSTREAM pStrmType; + PRTDIR pDir = NULL; + RTDIRENTRY DirEntry; + char szLine[1024]; + bool fBatteryPresent = false; /* one or more batteries present */ + bool fCharging = false; /* one or more batteries charging */ + bool fDischarging = false; /* one or more batteries discharging */ + bool fCritical = false; /* one or more batteries in critical state */ + int32_t maxCapacityTotal = 0; /* total capacity of all batteries */ + int32_t currentCapacityTotal = 0; /* total current capacity of all batteries */ + int32_t presentRateTotal = 0; /* total present (dis)charging rate of all batts */ + + int rc = RTDirOpen(&pDir, "/sys/class/power_supply/"); + if (RT_SUCCESS(rc)) + { + /* + * The new /sys interface introduced with Linux 2.6.25. + */ + while (pThread->enmState == PDMTHREADSTATE_RUNNING) + { + rc = RTDirRead(pDir, &DirEntry, NULL); + if (RT_FAILURE(rc)) + break; + if ( strcmp(DirEntry.szName, ".") == 0 + || strcmp(DirEntry.szName, "..") == 0) + continue; +#define POWER_OPEN(s, n) RTStrmOpenF("r", s, "/sys/class/power_supply/%s/" n, DirEntry.szName) + rc = POWER_OPEN(&pStrmType, "type"); + if (RT_FAILURE(rc)) + continue; + rc = RTStrmGetLine(pStrmType, szLine, sizeof(szLine)); + if (RT_SUCCESS(rc)) + { + if (strcmp(szLine, "Mains") == 0) + { + /* AC adapter */ + rc = POWER_OPEN(&pStrmStatus, "online"); + if (RT_SUCCESS(rc)) + { + rc = RTStrmGetLine(pStrmStatus, szLine, sizeof(szLine)); + if ( RT_SUCCESS(rc) + && strcmp(szLine, "1") == 0) + enmPowerSource = PDM_ACPI_POWER_SOURCE_OUTLET; + else + enmPowerSource = PDM_ACPI_POWER_SOURCE_BATTERY; + RTStrmClose(pStrmStatus); + } + } + else if (strcmp(szLine, "Battery") == 0) + { + /* Battery */ + rc = POWER_OPEN(&pStrmStatus, "present"); + if (RT_SUCCESS(rc)) + { + rc = RTStrmGetLine(pStrmStatus, szLine, sizeof(szLine)); + RTStrmClose(pStrmStatus); + if ( RT_SUCCESS(rc) + && strcmp(szLine, "1") == 0) + { + fBatteryPresent = true; + rc = RTStrmOpenF("r", &pStrmStatus, + "/sys/class/power_supply/%s/status", DirEntry.szName); + if (RT_SUCCESS(rc)) + { + rc = RTStrmGetLine(pStrmStatus, szLine, sizeof(szLine)); + if (RT_SUCCESS(rc)) + { + if (strcmp(szLine, "Discharging") == 0) + fDischarging = true; + else if (strcmp(szLine, "Charging") == 0) + fCharging = true; + } + RTStrmClose(pStrmStatus); + } + rc = POWER_OPEN(&pStrmStatus, "capacity_level"); + if (RT_SUCCESS(rc)) + { + rc = RTStrmGetLine(pStrmStatus, szLine, sizeof(szLine)); + if ( RT_SUCCESS(rc) + && strcmp(szLine, "Critical") == 0) + fCritical = true; + RTStrmClose(pStrmStatus); + } + rc = POWER_OPEN(&pStrmStatus, "energy_full"); + if (RT_FAILURE(rc)) + rc = POWER_OPEN(&pStrmStatus, "charge_full"); + if (RT_SUCCESS(rc)) + { + rc = RTStrmGetLine(pStrmStatus, szLine, sizeof(szLine)); + if (RT_SUCCESS(rc)) + { + int32_t maxCapacity = 0; + rc = RTStrToInt32Full(szLine, 0, &maxCapacity); + if ( RT_SUCCESS(rc) + && maxCapacity > 0) + maxCapacityTotal += maxCapacity; + } + RTStrmClose(pStrmStatus); + } + rc = POWER_OPEN(&pStrmStatus, "energy_now"); + if (RT_FAILURE(rc)) + rc = POWER_OPEN(&pStrmStatus, "charge_now"); + if (RT_SUCCESS(rc)) + { + rc = RTStrmGetLine(pStrmStatus, szLine, sizeof(szLine)); + if (RT_SUCCESS(rc)) + { + int32_t currentCapacity = 0; + rc = RTStrToInt32Full(szLine, 0, ¤tCapacity); + if ( RT_SUCCESS(rc) + && currentCapacity > 0) + currentCapacityTotal += currentCapacity; + } + RTStrmClose(pStrmStatus); + } + rc = POWER_OPEN(&pStrmStatus, "current_now"); + if (RT_SUCCESS(rc)) + { + rc = RTStrmGetLine(pStrmStatus, szLine, sizeof(szLine)); + if (RT_SUCCESS(rc)) + { + int32_t presentRate = 0; + rc = RTStrToInt32Full(szLine, 0, &presentRate); + if ( RT_SUCCESS(rc) + && presentRate > 0) + { + if (fDischarging) + presentRateTotal -= presentRate; + else + presentRateTotal += presentRate; + } + } + RTStrmClose(pStrmStatus); + } + } + } + } + } + RTStrmClose(pStrmType); +#undef POWER_OPEN + } + RTDirClose(pDir); + } + else /* !/sys */ + { + /* + * The old /proc/acpi interface + */ + /* + * Read the status of the powerline-adapter. + */ + rc = RTDirOpen(&pDir, "/proc/acpi/ac_adapter/"); + if (RT_SUCCESS(rc)) + { +#define POWER_OPEN(s, n) RTStrmOpenF("r", s, "/proc/acpi/ac_adapter/%s/" n, DirEntry.szName) + while (pThread->enmState == PDMTHREADSTATE_RUNNING) + { + rc = RTDirRead(pDir, &DirEntry, NULL); + if (RT_FAILURE(rc)) + break; + if ( strcmp(DirEntry.szName, ".") == 0 + || strcmp(DirEntry.szName, "..") == 0) + continue; + rc = POWER_OPEN(&pStrmStatus, "status"); + if (RT_FAILURE(rc)) + rc = POWER_OPEN(&pStrmStatus, "state"); + if (RT_SUCCESS(rc)) + { + while (pThread->enmState == PDMTHREADSTATE_RUNNING) + { + rc = RTStrmGetLine(pStrmStatus, szLine, sizeof(szLine)); + if (RT_FAILURE(rc)) + break; + if ( strstr(szLine, "Status:") != NULL + || strstr(szLine, "state:") != NULL) + { + if (strstr(szLine, "on-line") != NULL) + enmPowerSource = PDM_ACPI_POWER_SOURCE_OUTLET; + else + enmPowerSource = PDM_ACPI_POWER_SOURCE_BATTERY; + break; + } + } + RTStrmClose(pStrmStatus); + break; + } + } + RTDirClose(pDir); +#undef POWER_OPEN + } + + /* + * Read the status of all batteries and collect it into one. + */ + rc = RTDirOpen(&pDir, "/proc/acpi/battery/"); + if (RT_SUCCESS(rc)) + { +#define POWER_OPEN(s, n) RTStrmOpenF("r", s, "/proc/acpi/battery/%s/" n, DirEntry.szName) + bool fThisBatteryPresent = false; + bool fThisDischarging = false; + + while (pThread->enmState == PDMTHREADSTATE_RUNNING) + { + rc = RTDirRead(pDir, &DirEntry, NULL); + if (RT_FAILURE(rc)) + break; + if ( strcmp(DirEntry.szName, ".") == 0 + || strcmp(DirEntry.szName, "..") == 0) + continue; + + rc = POWER_OPEN(&pStrmStatus, "status"); + /* there is a 2nd variant of that file */ + if (RT_FAILURE(rc)) + rc = POWER_OPEN(&pStrmStatus, "state"); + if (RT_FAILURE(rc)) + continue; + + PRTSTREAM pStrmInfo; + rc = POWER_OPEN(&pStrmInfo, "info"); + if (RT_FAILURE(rc)) + { + RTStrmClose(pStrmStatus); + continue; + } + + /* get 'present' status from the info file */ + while (pThread->enmState == PDMTHREADSTATE_RUNNING) + { + rc = RTStrmGetLine(pStrmInfo, szLine, sizeof(szLine)); + if (RT_FAILURE(rc)) + break; + if (strstr(szLine, "present:") != NULL) + { + if (strstr(szLine, "yes") != NULL) + { + fThisBatteryPresent = true; + break; + } + } + } + + if (fThisBatteryPresent) + { + fBatteryPresent = true; + RTStrmRewind(pStrmInfo); + + /* get the maximum capacity from the info file */ + while (pThread->enmState == PDMTHREADSTATE_RUNNING) + { + rc = RTStrmGetLine(pStrmInfo, szLine, sizeof(szLine)); + if (RT_FAILURE(rc)) + break; + if (strstr(szLine, "last full capacity:") != NULL) + { + char *psz; + int32_t maxCapacity = 0; + rc = RTStrToInt32Ex(RTStrStripL(&szLine[19]), &psz, 0, &maxCapacity); + if (RT_FAILURE(rc)) + maxCapacity = 0; + maxCapacityTotal += maxCapacity; + break; + } + } + + /* get the current capacity/state from the status file */ + int32_t presentRate = 0; + bool fGotRemainingCapacity = false; + bool fGotBatteryState = false; + bool fGotCapacityState = false; + bool fGotPresentRate = false; + while ( ( !fGotRemainingCapacity + || !fGotBatteryState + || !fGotCapacityState + || !fGotPresentRate) + && pThread->enmState == PDMTHREADSTATE_RUNNING) + { + rc = RTStrmGetLine(pStrmStatus, szLine, sizeof(szLine)); + if (RT_FAILURE(rc)) + break; + if (strstr(szLine, "remaining capacity:") != NULL) + { + char *psz; + int32_t currentCapacity = 0; + rc = RTStrToInt32Ex(RTStrStripL(&szLine[19]), &psz, 0, ¤tCapacity); + if ( RT_SUCCESS(rc) + && currentCapacity > 0) + currentCapacityTotal += currentCapacity; + fGotRemainingCapacity = true; + } + else if (strstr(szLine, "charging state:") != NULL) + { + if (strstr(szLine + 15, "discharging") != NULL) + { + fDischarging = true; + fThisDischarging = true; + } + else if (strstr(szLine + 15, "charging") != NULL) + fCharging = true; + fGotBatteryState = true; + } + else if (strstr(szLine, "capacity state:") != NULL) + { + if (strstr(szLine + 15, "critical") != NULL) + fCritical = true; + fGotCapacityState = true; + } + if (strstr(szLine, "present rate:") != NULL) + { + char *psz; + rc = RTStrToInt32Ex(RTStrStripL(&szLine[13]), &psz, 0, &presentRate); + if (RT_FAILURE(rc)) + presentRate = 0; + fGotPresentRate = true; + } + } + if (fThisDischarging) + presentRateTotal -= presentRate; + else + presentRateTotal += presentRate; + } + RTStrmClose(pStrmStatus); + RTStrmClose(pStrmInfo); + } + RTDirClose(pDir); +#undef POWER_OPEN + } + } /* /proc/acpi */ + + /* atomic update of the state */ + RTCritSectEnter(&pThis->CritSect); + pThis->enmPowerSource = enmPowerSource; + pThis->fBatteryPresent = fBatteryPresent; + + /* charging/discharging bits are mutual exclusive */ + uint32_t uBs = PDM_ACPI_BAT_STATE_CHARGED; + if (fDischarging) + uBs = PDM_ACPI_BAT_STATE_DISCHARGING; + else if (fCharging) + uBs = PDM_ACPI_BAT_STATE_CHARGING; + if (fCritical) + uBs |= PDM_ACPI_BAT_STATE_CRITICAL; + pThis->enmBatteryState = (PDMACPIBATSTATE)uBs; + + if (maxCapacityTotal > 0 && currentCapacityTotal > 0) + { + if (presentRateTotal < 0) + presentRateTotal = -presentRateTotal; + + /* calculate the percentage */ + pThis->enmBatteryRemainingCapacity = + (PDMACPIBATCAPACITY)( ( (float)currentCapacityTotal + / (float)maxCapacityTotal) + * PDM_ACPI_BAT_CAPACITY_MAX); + pThis->u32BatteryPresentRate = + (uint32_t)(( (float)presentRateTotal + / (float)maxCapacityTotal) * 1000); + } + else + { + /* unknown capacity / state */ + pThis->enmBatteryRemainingCapacity = PDM_ACPI_BAT_CAPACITY_UNKNOWN; + pThis->u32BatteryPresentRate = ~0; + } + RTCritSectLeave(&pThis->CritSect); + + /* wait a bit (e.g. Ubuntu/GNOME polls every 30 seconds) */ + ASMAtomicWriteBool(&pThis->fDontPokePoller, true); + rc = RTSemEventWait(pThis->hPollerSleepEvent, 20000); + } + + return VINF_SUCCESS; +} + +static DECLCALLBACK(int) drvACPIPollerWakeup(PPDMDRVINS pDrvIns, PPDMTHREAD pThread) +{ + PDRVACPI pThis = PDMINS_2_DATA(pDrvIns, PDRVACPI); + + RTSemEventSignal(pThis->hPollerSleepEvent); + if (!ASMAtomicReadBool(&pThis->fDontPokePoller)) + RTThreadPoke(pThread->Thread); + return VINF_SUCCESS; +} +#endif /* RT_OS_LINUX */ + + /** * Destruct a driver instance. * @@ -717,7 +928,15 @@ static DECLCALLBACK(int) drvACPIQueryBatteryStatus(PPDMIACPICONNECTOR pInterface */ static DECLCALLBACK(void) drvACPIDestruct(PPDMDRVINS pDrvIns) { + PDRVACPI pThis = PDMINS_2_DATA(pDrvIns, PDRVACPI); + LogFlow(("drvACPIDestruct\n")); + +#ifdef RT_OS_LINUX + RTSemEventDestroy(pThis->hPollerSleepEvent); + pThis->hPollerSleepEvent = NIL_RTSEMEVENT; + RTCritSectDelete(&pThis->CritSect); +#endif } /** @@ -728,6 +947,7 @@ static DECLCALLBACK(void) drvACPIDestruct(PPDMDRVINS pDrvIns) static DECLCALLBACK(int) drvACPIConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle, uint32_t fFlags) { PDRVACPI pThis = PDMINS_2_DATA(pDrvIns, PDRVACPI); + int rc = VINF_SUCCESS; /* * Init the static parts. @@ -763,7 +983,23 @@ static DECLCALLBACK(int) drvACPIConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHand return VERR_PDM_MISSING_INTERFACE_ABOVE; } - return VINF_SUCCESS; +#ifdef RT_OS_LINUX + /* + * Start the poller thread. + */ + rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pThis->pPollerThread, pThis, drvACPIPoller, + drvACPIPollerWakeup, 0, RTTHREADTYPE_INFREQUENT_POLLER, "ACPI Poller"); + if (RT_FAILURE(rc)) + return rc; + + rc = RTCritSectInit(&pThis->CritSect); + if (RT_FAILURE(rc)) + return rc; + + rc = RTSemEventCreate(&pThis->hPollerSleepEvent); +#endif + + return rc; } @@ -811,4 +1047,3 @@ const PDMDRVREG g_DrvACPI = /* u32EndVersion */ PDM_DRVREG_VERSION }; - diff --git a/src/VBox/Devices/Storage/DevBusLogic.cpp b/src/VBox/Devices/Storage/DevBusLogic.cpp index 6a6378a90..85aabc9a3 100644 --- a/src/VBox/Devices/Storage/DevBusLogic.cpp +++ b/src/VBox/Devices/Storage/DevBusLogic.cpp @@ -1041,7 +1041,7 @@ static int buslogicDataBufferAlloc(PBUSLOGICTASKSTATE pTaskState) GCPhysAddrScatterGatherCurrent += cScatterGatherGCRead * sizeof(ScatterGatherEntry); } while (cScatterGatherGCLeft > 0); - Log((": cbDataToTransfer=%d\n", cbDataToTransfer)); + Log(("%s: cbDataToTransfer=%d\n", __FUNCTION__, cbDataToTransfer)); /* Allocate buffer */ pTaskState->DataSeg.cbSeg = cbDataToTransfer; @@ -1088,7 +1088,8 @@ static int buslogicDataBufferAlloc(PBUSLOGICTASKSTATE pTaskState) } } - else if (pTaskState->CommandControlBlockGuest.uOpcode == BUSLOGIC_CCB_OPCODE_INITIATOR_CCB) + else if ( pTaskState->CommandControlBlockGuest.uOpcode == BUSLOGIC_CCB_OPCODE_INITIATOR_CCB + || pTaskState->CommandControlBlockGuest.uOpcode == BUSLOGIC_CCB_OPCODE_INITIATOR_CCB_RESIDUAL_DATA_LENGTH) { /* The buffer is not scattered. */ RTGCPHYS GCPhysAddrDataBase = (RTGCPHYS)pTaskState->CommandControlBlockGuest.u32PhysAddrData; @@ -1169,7 +1170,8 @@ static void buslogicDataBufferFree(PBUSLOGICTASKSTATE pTaskState) } while (cScatterGatherGCLeft > 0); } - else if (pTaskState->CommandControlBlockGuest.uOpcode == BUSLOGIC_CCB_OPCODE_INITIATOR_CCB) + else if ( pTaskState->CommandControlBlockGuest.uOpcode == BUSLOGIC_CCB_OPCODE_INITIATOR_CCB + || pTaskState->CommandControlBlockGuest.uOpcode == BUSLOGIC_CCB_OPCODE_INITIATOR_CCB_RESIDUAL_DATA_LENGTH) { /* The buffer is not scattered. */ RTGCPHYS GCPhysAddrDataBase = (RTGCPHYS)pTaskState->CommandControlBlockGuest.u32PhysAddrData; @@ -1327,6 +1329,7 @@ static int buslogicProcessCommand(PBUSLOGIC pBusLogic) pReply->fHostWideSCSI = true; pReply->fHostUltraSCSI = true; pReply->u16ScatterGatherLimit = 8192; + pBusLogic->regStatus |= BUSLOGIC_REGISTER_STATUS_INITIALIZATION_REQUIRED; break; } @@ -1490,10 +1493,6 @@ static int buslogicRegisterRead(PBUSLOGIC pBusLogic, unsigned iRegister, uint32_ case BUSLOGIC_REGISTER_INTERRUPT: { *pu32 = pBusLogic->regInterrupt; -#if 0 - if (pBusLogic->uOperationCode == BUSLOGICCOMMAND_DISABLE_HOST_ADAPTER_INTERRUPT) - rc = PDMDeviceDBGFStop(pBusLogic->CTX_SUFF(pDevIns), RT_SRC_POS, "Interrupt disable command\n"); -#endif break; } case BUSLOGIC_REGISTER_GEOMETRY: diff --git a/src/VBox/Devices/Storage/DrvVD.cpp b/src/VBox/Devices/Storage/DrvVD.cpp index 774a99d29..9d95c4202 100644 --- a/src/VBox/Devices/Storage/DrvVD.cpp +++ b/src/VBox/Devices/Storage/DrvVD.cpp @@ -621,6 +621,66 @@ static DECLCALLBACK(int) drvvdINIPFlush(RTSOCKET Sock) (const char *)&fFlag, sizeof(fFlag)); return VINF_SUCCESS; } + +/** @copydoc VDINTERFACETCPNET::pfnGetLocalAddress */ +static DECLCALLBACK(int) drvvdINIPGetLocalAddress(RTSOCKET Sock, PRTNETADDR pAddr) +{ + union + { + struct sockaddr Addr; + struct sockaddr_in Ipv4; + } u; + socklen_t cbAddr = sizeof(u); + RT_ZERO(u); + if (!lwip_getsockname(Sock, &u.Addr, &cbAddr)) + { + /* + * Convert the address. + */ + if ( cbAddr == sizeof(struct sockaddr_in) + && u.Addr.sa_family == AF_INET) + { + RT_ZERO(*pAddr); + pAddr->enmType = RTNETADDRTYPE_IPV4; + pAddr->uPort = RT_N2H_U16(u.Ipv4.sin_port); + pAddr->uAddr.IPv4.u = u.Ipv4.sin_addr.s_addr; + } + else + return VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED; + return VINF_SUCCESS; + } + return VERR_NET_OPERATION_NOT_SUPPORTED; +} + +/** @copydoc VDINTERFACETCPNET::pfnGetPeerAddress */ +static DECLCALLBACK(int) drvvdINIPGetPeerAddress(RTSOCKET Sock, PRTNETADDR pAddr) +{ + union + { + struct sockaddr Addr; + struct sockaddr_in Ipv4; + } u; + socklen_t cbAddr = sizeof(u); + RT_ZERO(u); + if (!lwip_getpeername(Sock, &u.Addr, &cbAddr)) + { + /* + * Convert the address. + */ + if ( cbAddr == sizeof(struct sockaddr_in) + && u.Addr.sa_family == AF_INET) + { + RT_ZERO(*pAddr); + pAddr->enmType = RTNETADDRTYPE_IPV4; + pAddr->uPort = RT_N2H_U16(u.Ipv4.sin_port); + pAddr->uAddr.IPv4.u = u.Ipv4.sin_addr.s_addr; + } + else + return VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED; + return VINF_SUCCESS; + } + return VERR_NET_OPERATION_NOT_SUPPORTED; +} #endif /* VBOX_WITH_INIP */ @@ -1132,6 +1192,8 @@ static DECLCALLBACK(int) drvvdConstruct(PPDMDRVINS pDrvIns, pThis->VDITcpNetCallbacks.pfnRead = RTTcpRead; pThis->VDITcpNetCallbacks.pfnWrite = RTTcpWrite; pThis->VDITcpNetCallbacks.pfnFlush = RTTcpFlush; + pThis->VDITcpNetCallbacks.pfnGetLocalAddress = RTTcpGetLocalAddress; + pThis->VDITcpNetCallbacks.pfnGetPeerAddress = RTTcpGetPeerAddress; } else { @@ -1147,6 +1209,8 @@ static DECLCALLBACK(int) drvvdConstruct(PPDMDRVINS pDrvIns, pThis->VDITcpNetCallbacks.pfnRead = drvvdINIPRead; pThis->VDITcpNetCallbacks.pfnWrite = drvvdINIPWrite; pThis->VDITcpNetCallbacks.pfnFlush = drvvdINIPFlush; + pThis->VDITcpNetCallbacks.pfnGetLocalAddress = drvvdINIPGetLocalAddress; + pThis->VDITcpNetCallbacks.pfnGetPeerAddress = drvvdINIPGetPeerAddress; #endif /* VBOX_WITH_INIP */ } if (RT_SUCCESS(rc)) diff --git a/src/VBox/Devices/Storage/ISCSIHDDCore.cpp b/src/VBox/Devices/Storage/ISCSIHDDCore.cpp index 77a871304..a0f7a7d5d 100644 --- a/src/VBox/Devices/Storage/ISCSIHDDCore.cpp +++ b/src/VBox/Devices/Storage/ISCSIHDDCore.cpp @@ -1,9 +1,10 @@ +/* $Id: ISCSIHDDCore.cpp $ */ /** @file * iSCSI initiator driver, VD backend. */ /* - * Copyright (C) 2006-2009 Sun Microsystems, Inc. + * Copyright (C) 2006-2010 Sun Microsystems, Inc. * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -312,7 +313,7 @@ typedef struct ISCSIIMAGE uint32_t cbSector; /** Size of volume in sectors. */ uint64_t cVolume; - /** Total volume size in bytes. Easiert that multiplying the above values all the time. */ + /** Total volume size in bytes. Easier than multiplying the above values all the time. */ uint64_t cbSize; /** Negotiated maximum data length when sending to target. */ @@ -353,6 +354,8 @@ typedef struct ISCSIIMAGE RTSOCKET Socket; /** Timeout for read operations on the TCP connection (in milliseconds). */ uint32_t uReadTimeout; + /** Flag whether to automatically generate the initiator name. */ + bool fAutomaticInitiatorName; /** Flag whether to use the host IP stack or DevINIP. */ bool fHostIP; } ISCSIIMAGE, *PISCSIIMAGE; @@ -416,15 +419,12 @@ typedef struct ISCSIPARAMETER * Static Variables * *******************************************************************************/ -/** Counter for getting unique instance IDs. */ -static uint32_t s_u32iscsiID = 0; +/** Default initiator basename. */ +static const char *s_iscsiDefaultInitiatorBasename = "iqn.2009-08.com.sun.virtualbox.initiator"; /** Default LUN. */ static const char *s_iscsiConfigDefaultLUN = "0"; -/** Default initiator name. */ -static const char *s_iscsiConfigDefaultInitiatorName = "iqn.2009-08.com.sun.virtualbox.initiator"; - /** Default timeout, 10 seconds. */ static const char *s_iscsiConfigDefaultTimeout = "10000"; @@ -441,7 +441,7 @@ static const VDCONFIGINFO s_iscsiConfigInfo[] = /* LUN is defined of string type to handle the "enc" prefix. */ { "LUN", s_iscsiConfigDefaultLUN, VDCFGVALUETYPE_STRING, VD_CFGKEY_MANDATORY }, { "TargetAddress", NULL, VDCFGVALUETYPE_STRING, VD_CFGKEY_MANDATORY }, - { "InitiatorName", s_iscsiConfigDefaultInitiatorName, VDCFGVALUETYPE_STRING, 0 }, + { "InitiatorName", NULL, VDCFGVALUETYPE_STRING, 0 }, { "InitiatorUsername", NULL, VDCFGVALUETYPE_STRING, 0 }, { "InitiatorSecret", NULL, VDCFGVALUETYPE_BYTES, 0 }, { "TargetUsername", NULL, VDCFGVALUETYPE_STRING, VD_CFGKEY_EXPERT }, @@ -499,6 +499,50 @@ DECLINLINE(int) iscsiError(PISCSIIMAGE pImage, int rc, RT_SRC_POS_DECL, } +static int iscsiTransportConnect(PISCSIIMAGE pImage) +{ + int rc; + if (!pImage->pszHostname) + return VERR_NET_DEST_ADDRESS_REQUIRED; + + rc = pImage->pInterfaceNetCallbacks->pfnClientConnect(pImage->pszHostname, pImage->uPort, &pImage->Socket); + if (RT_UNLIKELY( RT_FAILURE(rc) + && ( rc == VERR_NET_CONNECTION_REFUSED + || rc == VERR_NET_CONNECTION_RESET + || rc == VERR_NET_UNREACHABLE + || rc == VERR_NET_HOST_UNREACHABLE + || rc == VERR_NET_CONNECTION_TIMED_OUT))) + { + /* Standardize return value for no connection. */ + return VERR_NET_CONNECTION_REFUSED; + } + + /* Make initiator name and ISID unique on this host. */ + RTNETADDR LocalAddr; + rc = pImage->pInterfaceNetCallbacks->pfnGetLocalAddress(pImage->Socket, + &LocalAddr); + if (RT_FAILURE(rc)) + return rc; + if ( LocalAddr.uPort == RTNETADDR_PORT_NA + || LocalAddr.uPort > 65535) + return VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED; + pImage->ISID &= ~65535ULL; + pImage->ISID |= LocalAddr.uPort; + /* Eliminate the port so that it isn't included below. */ + LocalAddr.uPort = RTNETADDR_PORT_NA; + if (pImage->fAutomaticInitiatorName) + { + if (pImage->pszInitiatorName) + RTStrFree(pImage->pszInitiatorName); + RTStrAPrintf(&pImage->pszInitiatorName, "%s:01:%RTnaddr", + s_iscsiDefaultInitiatorBasename, &LocalAddr); + if (!pImage->pszInitiatorName) + return VERR_NO_MEMORY; + } + return VINF_SUCCESS; +} + + static int iscsiTransportRead(PISCSIIMAGE pImage, PISCSIRES paResponse, unsigned int cnResponse) { int rc = VINF_SUCCESS; @@ -509,21 +553,9 @@ static int iscsiTransportRead(PISCSIIMAGE pImage, PISCSIRES paResponse, unsigned LogFlowFunc(("cnResponse=%d (%s:%d)\n", cnResponse, pImage->pszHostname, pImage->uPort)); if (pImage->Socket == NIL_RTSOCKET) { - /* Attempt to reconnect if the connection was previously broken. */ - if (pImage->pszHostname != NULL) - { - rc = pImage->pInterfaceNetCallbacks->pfnClientConnect(pImage->pszHostname, pImage->uPort, &pImage->Socket); - if (RT_UNLIKELY( RT_FAILURE(rc) - && ( rc == VERR_NET_CONNECTION_REFUSED - || rc == VERR_NET_CONNECTION_RESET - || rc == VERR_NET_UNREACHABLE - || rc == VERR_NET_HOST_UNREACHABLE - || rc == VERR_NET_CONNECTION_TIMED_OUT))) - { - /* Standardize return value for no connection. */ - rc = VERR_NET_CONNECTION_REFUSED; - } - } + /* Reconnecting makes no sense in this case, as there will be nothing + * to receive. We would just run into a timeout. */ + rc = VERR_BROKEN_PIPE; } if (RT_SUCCESS(rc) && paResponse[0].cbSeg >= 48) @@ -645,20 +677,7 @@ static int iscsiTransportWrite(PISCSIIMAGE pImage, PISCSIREQ paRequest, unsigned if (pImage->Socket == NIL_RTSOCKET) { /* Attempt to reconnect if the connection was previously broken. */ - if (pImage->pszHostname != NULL) - { - rc = pImage->pInterfaceNetCallbacks->pfnClientConnect(pImage->pszHostname, pImage->uPort, &pImage->Socket); - if (RT_UNLIKELY( RT_FAILURE(rc) - && ( rc == VERR_NET_CONNECTION_REFUSED - || rc == VERR_NET_CONNECTION_RESET - || rc == VERR_NET_UNREACHABLE - || rc == VERR_NET_HOST_UNREACHABLE - || rc == VERR_NET_CONNECTION_TIMED_OUT))) - { - /* Standardize return value for no connection. */ - rc = VERR_NET_CONNECTION_REFUSED; - } - } + rc = iscsiTransportConnect(pImage); } if (RT_SUCCESS(rc)) @@ -788,7 +807,12 @@ static int iscsiTransportOpen(PISCSIIMAGE pImage) } } - if (RT_FAILURE(rc)) + if (RT_SUCCESS(rc)) + { + if (pImage->Socket == NIL_RTSOCKET) + rc = iscsiTransportConnect(pImage); + } + else { if (pImage->pszHostname) { @@ -798,8 +822,6 @@ static int iscsiTransportOpen(PISCSIIMAGE pImage) pImage->uPort = 0; } - /* Note that in this implementation the actual connection establishment is - * delayed until a PDU is read or written. */ LogFlowFunc(("returns %Rrc\n", rc)); return rc; } @@ -827,7 +849,7 @@ static int iscsiTransportClose(PISCSIIMAGE pImage) * Full Feature Phase. * * @returns VBox status. - * @param pImage The iSCSI connection state to be used. + * @param pImage The iSCSI connection state to be used. */ static int iscsiAttach(PISCSIIMAGE pImage) { @@ -883,6 +905,13 @@ static int iscsiAttach(PISCSIIMAGE pImage) iscsiTransportClose(pImage); restart: + if (pImage->Socket == NIL_RTSOCKET) + { + rc = iscsiTransportOpen(pImage); + if (RT_FAILURE(rc)) + goto out; + } + pImage->state = ISCSISTATE_IN_LOGIN; pImage->ITT = 1; pImage->FirstRecvPDU = true; @@ -1259,7 +1288,7 @@ out: * Detach from an iSCSI target. * * @returns VBox status. - * @param pImage The iSCSI connection state to be used. + * @param pImage The iSCSI connection state to be used. */ static int iscsiDetach(PISCSIIMAGE pImage) { @@ -1347,11 +1376,11 @@ static int iscsiDetach(PISCSIIMAGE pImage) * Full Feature Phase. * * @returns VBOX status. - * @param pImage The iSCSI connection state to be used. - * @param pRequest Command descriptor. Contains all information about - * the command, its transfer directions and pointers - * to the buffer(s) used for transferring data and - * status information. + * @param pImage The iSCSI connection state to be used. + * @param pRequest Command descriptor. Contains all information about + * the command, its transfer directions and pointers + * to the buffer(s) used for transferring data and + * status information. */ static int iscsiCommand(PISCSIIMAGE pImage, PSCSIREQ pRequest) { @@ -1364,7 +1393,7 @@ static int iscsiCommand(PISCSIIMAGE pImage, PSCSIREQ pRequest) uint32_t *pDst = NULL; size_t cbBufLength; - uint32_t aStat[64]; + uint32_t aStatus[256]; /**< Plenty of buffer for status information. */ uint32_t ExpDataSN = 0; bool final = false; @@ -1463,8 +1492,8 @@ static int iscsiCommand(PISCSIIMAGE pImage, PSCSIREQ pRequest) } /* Always reserve space for the status - it's impossible to tell * beforehand whether this will be the final PDU or not. */ - aISCSIRes[cnISCSIRes].pvSeg = aStat; - aISCSIRes[cnISCSIRes].cbSeg = sizeof(aStat); + aISCSIRes[cnISCSIRes].pvSeg = aStatus; + aISCSIRes[cnISCSIRes].cbSeg = sizeof(aStatus); cnISCSIRes++; rc = iscsiRecvPDU(pImage, itt, aISCSIRes, cnISCSIRes); @@ -1489,19 +1518,27 @@ static int iscsiCommand(PISCSIIMAGE pImage, PSCSIREQ pRequest) * status. Thus the status may have ended up partially in the * data area. */ pRequest->status = RT_N2H_U32(aResBHS[0]) & 0x000000ff; - uint32_t cbData = RT_N2H_U32(aResBHS[1]) & 0x00ffffff; + cbData = RT_N2H_U32(aResBHS[1]) & 0x00ffffff; if (cbData >= 2) { uint32_t cbStat = RT_N2H_U32(((uint32_t *)aISCSIRes[1].pvSeg)[0]) >> 16; - if (cbStat + 2 > cbData || cbStat > pRequest->cbSense) + if (cbStat + 2 > cbData) { rc = VERR_BUFFER_OVERFLOW; break; } - pRequest->cbSense = cbStat; - memcpy(pRequest->pvSense, ((const uint8_t *)aISCSIRes[1].pvSeg) + 2, aISCSIRes[1].cbSeg - 2); - if (cnISCSIRes > 2 && aISCSIRes[2].cbSeg && (ssize_t)cbStat - aISCSIRes[1].cbSeg - 2 > 0) - memcpy((char *)pRequest->pvSense + aISCSIRes[1].cbSeg, aISCSIRes[2].pvSeg, cbStat - aISCSIRes[1].cbSeg - 2); + /* Truncate sense data if it doesn't fit into the buffer. */ + pRequest->cbSense = RT_MIN(cbStat, pRequest->cbSense); + memcpy(pRequest->pvSense, + ((const char *)aISCSIRes[1].pvSeg) + 2, + RT_MIN(aISCSIRes[1].cbSeg - 2, pRequest->cbSense)); + if ( cnISCSIRes > 2 && aISCSIRes[2].cbSeg + && (ssize_t)pRequest->cbSense - aISCSIRes[1].cbSeg + 2 > 0) + { + memcpy((char *)pRequest->pvSense + aISCSIRes[1].cbSeg - 2, + aISCSIRes[2].pvSeg, + pRequest->cbSense - aISCSIRes[1].cbSeg + 2); + } } else if (cbData == 1) { @@ -1569,7 +1606,7 @@ out: * Generate a new Initiator Task Tag. * * @returns Initiator Task Tag. - * @param pImage The iSCSI connection state to be used. + * @param pImage The iSCSI connection state to be used. */ static uint32_t iscsiNewITT(PISCSIIMAGE pImage) { @@ -1587,14 +1624,13 @@ static uint32_t iscsiNewITT(PISCSIIMAGE pImage) * are padded to 4 byte boundaries and concatenated. * * @returns VBOX status - * @param pImage The iSCSI connection state to be used. - * @param paReq Pointer to array of iSCSI request sections. - * @param cnReq Number of valid iSCSI request sections in the array. + * @param pImage The iSCSI connection state to be used. + * @param paReq Pointer to array of iSCSI request sections. + * @param cnReq Number of valid iSCSI request sections in the array. */ static int iscsiSendPDU(PISCSIIMAGE pImage, PISCSIREQ paReq, uint32_t cnReq) { int rc = VINF_SUCCESS; - uint32_t i; /** @todo return VERR_VD_ISCSI_INVALID_STATE in the appropriate situations, * needs cleaning up of timeout/disconnect handling a bit, as otherwise * too many incorrect errors are signalled. */ @@ -1602,7 +1638,7 @@ static int iscsiSendPDU(PISCSIIMAGE pImage, PISCSIREQ paReq, uint32_t cnReq) Assert(cnReq >= 1); Assert(paReq[0].cbSeg >= ISCSI_BHS_SIZE); - for (i = 0; i < pImage->cISCSIRetries; i++) + for (uint32_t i = 0; i < pImage->cISCSIRetries; i++) { rc = iscsiTransportWrite(pImage, paReq, cnReq); if (RT_SUCCESS(rc)) @@ -1633,17 +1669,16 @@ static int iscsiSendPDU(PISCSIIMAGE pImage, PISCSIREQ paReq, uint32_t cnReq) * sure that all parts are collected and processed appropriately by the caller. * * @returns VBOX status - * @param pImage The iSCSI connection state to be used. - * @param paRes Pointer to array of iSCSI response sections. - * @param cnRes Number of valid iSCSI response sections in the array. + * @param pImage The iSCSI connection state to be used. + * @param paRes Pointer to array of iSCSI response sections. + * @param cnRes Number of valid iSCSI response sections in the array. */ static int iscsiRecvPDU(PISCSIIMAGE pImage, uint32_t itt, PISCSIRES paRes, uint32_t cnRes) { int rc = VINF_SUCCESS; - uint32_t i; ISCSIRES aResBuf; - for (i = 0; i < pImage->cISCSIRetries; i++) + for (uint32_t i = 0; i < pImage->cISCSIRetries; i++) { aResBuf.pvSeg = pImage->pvRecvPDUBuf; aResBuf.cbSeg = pImage->cbRecvPDUBuf; @@ -1733,24 +1768,24 @@ static int iscsiRecvPDU(PISCSIIMAGE pImage, uint32_t itt, PISCSIRES paRes, uint3 if (itt == pcvResSeg[4]) { /* Copy received PDU (one segment) to caller-provided buffers. */ - uint32_t i; + uint32_t j; size_t cbSeg; const uint8_t *pSrc; pSrc = (const uint8_t *)aResBuf.pvSeg; cbSeg = aResBuf.cbSeg; - for (i = 0; i < cnRes; i++) + for (j = 0; j < cnRes; j++) { - if (cbSeg > paRes[i].cbSeg) + if (cbSeg > paRes[j].cbSeg) { - memcpy(paRes[i].pvSeg, pSrc, paRes[i].cbSeg); - pSrc += paRes[i].cbSeg; - cbSeg -= paRes[i].cbSeg; + memcpy(paRes[j].pvSeg, pSrc, paRes[j].cbSeg); + pSrc += paRes[j].cbSeg; + cbSeg -= paRes[j].cbSeg; } else { - memcpy(paRes[i].pvSeg, pSrc, cbSeg); - paRes[i].cbSeg = cbSeg; + memcpy(paRes[j].pvSeg, pSrc, cbSeg); + paRes[j].cbSeg = cbSeg; cbSeg = 0; break; } @@ -1760,8 +1795,8 @@ static int iscsiRecvPDU(PISCSIIMAGE pImage, uint32_t itt, PISCSIRES paRes, uint3 rc = VERR_BUFFER_OVERFLOW; break; } - for (i++; i < cnRes; i++) - paRes[i].cbSeg = 0; + for (j++; j < cnRes; j++) + paRes[j].cbSeg = 0; break; } else if ( cmd == ISCSIOP_NOP_IN @@ -1801,8 +1836,8 @@ static int iscsiRecvPDU(PISCSIIMAGE pImage, uint32_t itt, PISCSIRES paRes, uint3 * Check the static (not dependent on the connection/session state) validity of an iSCSI response PDU. * * @returns VBOX status - * @param paRes Pointer to array of iSCSI response sections. - * @param cnRes Number of valid iSCSI response sections in the array. + * @param paRes Pointer to array of iSCSI response sections. + * @param cnRes Number of valid iSCSI response sections in the array. */ static int drvISCSIValidatePDU(PISCSIRES paRes, uint32_t cnRes) { @@ -1958,10 +1993,10 @@ static int iscsiTextAddKeyValue(uint8_t *pbBuf, size_t cbBuf, size_t *pcbBufCurr * Retrieve the value for a given key from the key=value buffer. * * @returns VBOX status. - * @param pbBuf Buffer containing key=value pairs. - * @param cbBuf Length of buffer with key=value pairs. - * @param pszKey Pointer to key for which to retrieve the value. - * @param ppszValue Pointer to value string pointer. + * @param pbBuf Buffer containing key=value pairs. + * @param cbBuf Length of buffer with key=value pairs. + * @param pszKey Pointer to key for which to retrieve the value. + * @param ppszValue Pointer to value string pointer. */ static int iscsiTextGetKeyValue(const uint8_t *pbBuf, size_t cbBuf, const char *pcszKey, const char **ppcszValue) { @@ -2090,9 +2125,9 @@ static int iscsiStrToBinary(const char *pcszValue, uint8_t *pbValue, size_t *pcb * Retrieve the relevant parameter values and update the initiator state. * * @returns VBOX status. - * @param pImage Current iSCSI initiator state. - * @param pbBuf Buffer containing key=value pairs. - * @param cbBuf Length of buffer with key=value pairs. + * @param pImage Current iSCSI initiator state. + * @param pbBuf Buffer containing key=value pairs. + * @param cbBuf Length of buffer with key=value pairs. */ static int iscsiUpdateParameters(PISCSIIMAGE pImage, const uint8_t *pbBuf, size_t cbBuf) { @@ -2196,7 +2231,10 @@ static void iscsiFreeImage(PISCSIIMAGE pImage, bool fDelete) } if (pImage->pszInitiatorName) { - RTMemFree(pImage->pszInitiatorName); + if (pImage->fAutomaticInitiatorName) + RTStrFree(pImage->pszInitiatorName); + else + RTMemFree(pImage->pszInitiatorName); pImage->pszInitiatorName = NULL; } if (pImage->pszInitiatorUsername) @@ -2275,7 +2313,8 @@ static int iscsiOpenImage(PISCSIIMAGE pImage, unsigned uOpenFlags) goto out; } - pImage->ISID = 0x800000000000ULL | 0x001234560000ULL | (0x00000000cba0ULL + ASMAtomicIncU32(&s_u32iscsiID)); + /* This ISID will be adjusted later to make it unique on this host. */ + pImage->ISID = 0x800000000000ULL | 0x001234560000ULL; pImage->cISCSIRetries = 10; pImage->state = ISCSISTATE_FREE; pImage->pvRecvPDUBuf = RTMemAlloc(ISCSI_RECV_PDU_BUFFER_SIZE); @@ -2308,10 +2347,14 @@ static int iscsiOpenImage(PISCSIIMAGE pImage, unsigned uOpenFlags) rc = iscsiError(pImage, rc, RT_SRC_POS, N_("iSCSI: configuration error: failed to read TargetName as string")); goto out; } - rc = VDCFGQueryStringAllocDef(pImage->pInterfaceConfigCallbacks, - pImage->pInterfaceConfig->pvUser, - "InitiatorName", &pImage->pszInitiatorName, - s_iscsiConfigDefaultInitiatorName); + rc = VDCFGQueryStringAlloc(pImage->pInterfaceConfigCallbacks, + pImage->pInterfaceConfig->pvUser, + "InitiatorName", &pImage->pszInitiatorName); + if (rc == VERR_CFGM_VALUE_NOT_FOUND || rc == VERR_CFGM_NO_PARENT) + { + pImage->fAutomaticInitiatorName = true; + rc = VINF_SUCCESS; + } if (RT_FAILURE(rc)) { rc = iscsiError(pImage, rc, RT_SRC_POS, N_("iSCSI: configuration error: failed to read InitiatorName as string")); @@ -2457,11 +2500,10 @@ static int iscsiOpenImage(PISCSIIMAGE pImage, unsigned uOpenFlags) } /* - * Establish the iSCSI transport connection. + * Attach to the iSCSI target. This implicitly establishes the iSCSI + * transport connection. */ - rc = iscsiTransportOpen(pImage); - if (RT_SUCCESS(rc)) - rc = iscsiAttach(pImage); + rc = iscsiAttach(pImage); if (RT_FAILURE(rc)) { @@ -2471,7 +2513,7 @@ static int iscsiOpenImage(PISCSIIMAGE pImage, unsigned uOpenFlags) LogFlowFunc(("target '%s' opened successfully\n", pImage->pszTargetName)); SCSIREQ sr; - uint8_t sense[32]; + uint8_t sense[96]; uint8_t data8[8]; uint8_t data12[12]; @@ -2531,16 +2573,24 @@ static int iscsiOpenImage(PISCSIIMAGE pImage, unsigned uOpenFlags) sr.cbSense = sizeof(sense); sr.pvSense = sense; - rc = iscsiCommand(pImage, &sr); + for (unsigned i = 0; i < 10; i++) + { + rc = iscsiCommand(pImage, &sr); + if ( (RT_SUCCESS(rc) && !sr.cbSense) + || RT_FAILURE(rc)) + break; + rc = VERR_INVALID_STATE; + } if (RT_SUCCESS(rc)) { - if ((data8[0] & SCSI_DEVTYPE_MASK) != SCSI_DEVTYPE_DISK) + uint8_t devType = (sr.cbT2IData > 0) ? data8[0] & SCSI_DEVTYPE_MASK : 255; + if (devType != SCSI_DEVTYPE_DISK) { rc = iscsiError(pImage, VERR_VD_ISCSI_INVALID_TYPE, RT_SRC_POS, N_("iSCSI: target address %s, target name %s, SCSI LUN %lld reports device type=%u"), pImage->pszTargetAddress, pImage->pszTargetName, - pImage->LUN, data8[0]); - LogRel(("iSCSI: Unsupported SCSI peripheral device type %d for target %s\n", data8[0] & SCSI_DEVTYPE_MASK, pImage->pszTargetName)); + pImage->LUN, devType); + LogRel(("iSCSI: Unsupported SCSI peripheral device type %d for target %s\n", devType & SCSI_DEVTYPE_MASK, pImage->pszTargetName)); goto out; } } @@ -2841,7 +2891,7 @@ static int iscsiOpen(const char *pszFilename, unsigned uOpenFlags, rc = iscsiOpenImage(pImage, uOpenFlags); if (RT_SUCCESS(rc)) - { + { LogFlowFunc(("target %s cVolume %d, cbSector %d\n", pImage->pszTargetName, pImage->cVolume, pImage->cbSector)); LogRel(("iSCSI: target address %s, target name %s, SCSI LUN %lld\n", pImage->pszTargetAddress, pImage->pszTargetName, pImage->LUN)); *ppBackendData = pImage; @@ -2935,7 +2985,7 @@ static int iscsiRead(void *pBackendData, uint64_t uOffset, void *pvBuf, tls = (uint16_t)(cbToRead / pImage->cbSector); SCSIREQ sr; uint8_t cdb[10]; - uint8_t sense[32]; + uint8_t sense[96]; cdb[0] = SCSI_READ_10; cdb[1] = 0; /* reserved */ @@ -3016,7 +3066,7 @@ static int iscsiWrite(void *pBackendData, uint64_t uOffset, const void *pvBuf, tls = (uint16_t)(cbToWrite / pImage->cbSector); SCSIREQ sr; uint8_t cdb[10]; - uint8_t sense[32]; + uint8_t sense[96]; cdb[0] = SCSI_WRITE_10; cdb[1] = 0; /* reserved */ @@ -3072,7 +3122,7 @@ static int iscsiFlush(void *pBackendData) SCSIREQ sr; uint8_t cdb[10]; - uint8_t sense[32]; + uint8_t sense[96]; cdb[0] = SCSI_SYNCHRONIZE_CACHE; cdb[1] = 0; /* reserved */ diff --git a/src/VBox/Devices/Storage/VBoxHDD.cpp b/src/VBox/Devices/Storage/VBoxHDD.cpp index 07a7e1339..d4bbbeb2c 100644 --- a/src/VBox/Devices/Storage/VBoxHDD.cpp +++ b/src/VBox/Devices/Storage/VBoxHDD.cpp @@ -299,8 +299,8 @@ static PVDIMAGE vdGetImageByNumber(PVBOXHDD pDisk, unsigned nImage) * internal: read the specified amount of data in whatever blocks the backend * will give us. */ -static int vdReadHelper(PVBOXHDD pDisk, PVDIMAGE pImage, uint64_t uOffset, - void *pvBuf, size_t cbRead) +static int vdReadHelper(PVBOXHDD pDisk, PVDIMAGE pImage, PVDIMAGE pImageParentOverride, + uint64_t uOffset, void *pvBuf, size_t cbRead) { int rc; size_t cbThisRead; @@ -312,14 +312,25 @@ static int vdReadHelper(PVBOXHDD pDisk, PVDIMAGE pImage, uint64_t uOffset, * than the previous reads marked as valid. Otherwise this would return * stale data when different block sizes are used for the images. */ cbThisRead = cbRead; - rc = VERR_VD_BLOCK_FREE; - for (PVDIMAGE pCurrImage = pImage; - pCurrImage != NULL && rc == VERR_VD_BLOCK_FREE; - pCurrImage = pCurrImage->pPrev) + + /* + * Try to read from the given image. + * If the block is not allocated read from override chain if present. + */ + rc = pImage->Backend->pfnRead(pImage->pvBackendData, + uOffset, pvBuf, cbThisRead, + &cbThisRead); + + if (rc == VERR_VD_BLOCK_FREE) { - rc = pCurrImage->Backend->pfnRead(pCurrImage->pvBackendData, - uOffset, pvBuf, cbThisRead, - &cbThisRead); + for (PVDIMAGE pCurrImage = pImageParentOverride ? pImageParentOverride : pImage->pPrev; + pCurrImage != NULL && rc == VERR_VD_BLOCK_FREE; + pCurrImage = pCurrImage->pPrev) + { + rc = pCurrImage->Backend->pfnRead(pCurrImage->pvBackendData, + uOffset, pvBuf, cbThisRead, + &cbThisRead); + } } /* No image in the chain contains the data for the block. */ @@ -344,7 +355,7 @@ static int vdParentRead(void *pvUser, uint64_t uOffset, void *pvBuf, size_t cbRead) { PVDPARENTSTATEDESC pParentState = (PVDPARENTSTATEDESC)pvUser; - return vdReadHelper(pParentState->pDisk, pParentState->pImage, uOffset, + return vdReadHelper(pParentState->pDisk, pParentState->pImage, NULL, uOffset, pvBuf, cbRead); } @@ -394,6 +405,7 @@ static void vdSetModifiedFlag(PVBOXHDD pDisk) * images that are really needed). */ static int vdWriteHelperStandard(PVBOXHDD pDisk, PVDIMAGE pImage, + PVDIMAGE pImageParentOverride, uint64_t uOffset, size_t cbWrite, size_t cbThisWrite, size_t cbPreRead, size_t cbPostRead, const void *pvBuf, @@ -404,8 +416,8 @@ static int vdWriteHelperStandard(PVBOXHDD pDisk, PVDIMAGE pImage, /* Read the data that goes before the write to fill the block. */ if (cbPreRead) { - rc = vdReadHelper(pDisk, pImage, uOffset - cbPreRead, pvTmp, - cbPreRead); + rc = vdReadHelper(pDisk, pImage, pImageParentOverride, + uOffset - cbPreRead, pvTmp, cbPreRead); if (RT_FAILURE(rc)) return rc; } @@ -439,7 +451,7 @@ static int vdWriteHelperStandard(PVBOXHDD pDisk, PVDIMAGE pImage, memcpy((char *)pvTmp + cbPreRead + cbThisWrite, (char *)pvBuf + cbThisWrite, cbWriteCopy); if (cbReadImage) - rc = vdReadHelper(pDisk, pImage, + rc = vdReadHelper(pDisk, pImage, pImageParentOverride, uOffset + cbThisWrite + cbWriteCopy, (char *)pvTmp + cbPreRead + cbThisWrite + cbWriteCopy, cbReadImage); @@ -471,6 +483,7 @@ static int vdWriteHelperStandard(PVBOXHDD pDisk, PVDIMAGE pImage, * All backends which support differential/growing images support this. */ static int vdWriteHelperOptimized(PVBOXHDD pDisk, PVDIMAGE pImage, + PVDIMAGE pImageParentOverride, uint64_t uOffset, size_t cbWrite, size_t cbThisWrite, size_t cbPreRead, size_t cbPostRead, const void *pvBuf, @@ -500,7 +513,7 @@ static int vdWriteHelperOptimized(PVBOXHDD pDisk, PVDIMAGE pImage, /* Read the entire data of the block so that we can compare whether it will * be modified by the write or not. */ - rc = vdReadHelper(pDisk, pImage, uOffset - cbPreRead, pvTmp, + rc = vdReadHelper(pDisk, pImage, pImageParentOverride, uOffset - cbPreRead, pvTmp, cbPreRead + cbThisWrite + cbPostRead - cbFill); if (RT_FAILURE(rc)) return rc; @@ -547,8 +560,8 @@ static int vdWriteHelperOptimized(PVBOXHDD pDisk, PVDIMAGE pImage, * internal: write buffer to the image, taking care of block boundaries and * write optimizations. */ -static int vdWriteHelper(PVBOXHDD pDisk, PVDIMAGE pImage, uint64_t uOffset, - const void *pvBuf, size_t cbWrite) +static int vdWriteHelper(PVBOXHDD pDisk, PVDIMAGE pImage, PVDIMAGE pImageParentOverride, + uint64_t uOffset, const void *pvBuf, size_t cbWrite) { int rc; unsigned fWrite; @@ -579,7 +592,8 @@ static int vdWriteHelper(PVBOXHDD pDisk, PVDIMAGE pImage, uint64_t uOffset, { /* Optimized write, suppress writing to a so far unallocated * block if the data is in fact not changed. */ - rc = vdWriteHelperOptimized(pDisk, pImage, uOffset, cbWrite, + rc = vdWriteHelperOptimized(pDisk, pImage, pImageParentOverride, + uOffset, cbWrite, cbThisWrite, cbPreRead, cbPostRead, pvBuf, pvTmp); } @@ -589,7 +603,8 @@ static int vdWriteHelper(PVBOXHDD pDisk, PVDIMAGE pImage, uint64_t uOffset, * be written no matter what. This will usually (unless the * backend has some further optimization enabled) cause the * block to be allocated. */ - rc = vdWriteHelperStandard(pDisk, pImage, uOffset, cbWrite, + rc = vdWriteHelperStandard(pDisk, pImage, pImageParentOverride, + uOffset, cbWrite, cbThisWrite, cbPreRead, cbPostRead, pvBuf, pvTmp); } @@ -1840,6 +1855,7 @@ VBOXDDU_DECL(int) VDCreateDiff(PVBOXHDD pDisk, const char *pszBackend, return rc; } + /** * Merges two images (not necessarily with direct parent/child relationship). * As a side effect the source image and potentially the other images which @@ -1944,7 +1960,8 @@ VBOXDDU_DECL(int) VDMerge(PVBOXHDD pDisk, unsigned nImageFrom, { if (RT_FAILURE(rc)) break; - rc = vdWriteHelper(pDisk, pImageTo, uOffset, pvBuf, + rc = vdWriteHelper(pDisk, pImageTo, pImageFrom->pPrev, + uOffset, pvBuf, cbThisRead); if (RT_FAILURE(rc)) break; @@ -1970,6 +1987,30 @@ VBOXDDU_DECL(int) VDMerge(PVBOXHDD pDisk, unsigned nImageFrom, } else { + /* + * We may need to update the parent uuid of the child coming after the + * last image to be merged. We have to reopen it read/write. + * + * This is done before we do the actual merge to prevent an incosistent + * chain if the mode change fails for some reason. + */ + if (pImageFrom->pNext) + { + PVDIMAGE pImageChild = pImageFrom->pNext; + + /* We need to open the image in read/write mode. */ + uOpenFlags = pImageChild->Backend->pfnGetOpenFlags(pImageChild->pvBackendData); + + if (uOpenFlags & VD_OPEN_FLAGS_READONLY) + { + uOpenFlags &= ~VD_OPEN_FLAGS_READONLY; + rc = pImageChild->Backend->pfnSetOpenFlags(pImageChild->pvBackendData, + uOpenFlags); + if (RT_FAILURE(rc)) + break; + } + } + /* Merge child state into parent. This means writing all blocks * which are allocated in the image up to the source image to the * destination image. */ @@ -1996,7 +2037,7 @@ VBOXDDU_DECL(int) VDMerge(PVBOXHDD pDisk, unsigned nImageFrom, { if (RT_FAILURE(rc)) break; - rc = vdWriteHelper(pDisk, pImageTo, uOffset, pvBuf, + rc = vdWriteHelper(pDisk, pImageTo, NULL, uOffset, pvBuf, cbThisRead); if (RT_FAILURE(rc)) break; @@ -2020,12 +2061,13 @@ VBOXDDU_DECL(int) VDMerge(PVBOXHDD pDisk, unsigned nImageFrom, /* Update parent UUID so that image chain is consistent. */ RTUUID Uuid; + PVDIMAGE pImageChild = NULL; if (nImageFrom < nImageTo) { - if (pImageTo->pPrev) + if (pImageFrom->pPrev) { - rc = pImageTo->Backend->pfnGetUuid(pImageTo->pPrev->pvBackendData, - &Uuid); + rc = pImageFrom->pPrev->Backend->pfnGetUuid(pImageFrom->pPrev->pvBackendData, + &Uuid); AssertRC(rc); } else @@ -2036,26 +2078,19 @@ VBOXDDU_DECL(int) VDMerge(PVBOXHDD pDisk, unsigned nImageFrom, } else { + /* Update the parent uuid of the child of the last merged image. */ if (pImageFrom->pNext) { rc = pImageTo->Backend->pfnGetUuid(pImageTo->pvBackendData, &Uuid); AssertRC(rc); - rc = pImageFrom->Backend->pfnSetParentUuid(pImageFrom->pNext, + + rc = pImageFrom->Backend->pfnSetParentUuid(pImageFrom->pNext->pvBackendData, &Uuid); AssertRC(rc); - } - } - /* Make sure destination image is back to read only if necessary. */ - if (pImageTo != pDisk->pLast && pImageFrom != pDisk->pLast) - { - uOpenFlags = pImageTo->Backend->pfnGetOpenFlags(pImageTo->pvBackendData); - uOpenFlags |= VD_OPEN_FLAGS_READONLY; - rc = pImageTo->Backend->pfnSetOpenFlags(pImageTo->pvBackendData, - uOpenFlags); - if (RT_FAILURE(rc)) - break; + pImageChild = pImageFrom->pNext; + } } /* Delete the no longer needed images. */ @@ -2072,6 +2107,34 @@ VBOXDDU_DECL(int) VDMerge(PVBOXHDD pDisk, unsigned nImageFrom, RTMemFree(pImg); pImg = pTmp; } + + /* Make sure destination image is back to read only if necessary. */ + if (pImageTo != pDisk->pLast) + { + uOpenFlags = pImageTo->Backend->pfnGetOpenFlags(pImageTo->pvBackendData); + uOpenFlags |= VD_OPEN_FLAGS_READONLY; + rc = pImageTo->Backend->pfnSetOpenFlags(pImageTo->pvBackendData, + uOpenFlags); + if (RT_FAILURE(rc)) + break; + } + + /* + * Make sure the child is readonly + * for the child -> parent merge direction + * if neccessary. + */ + if ( nImageFrom > nImageTo + && pImageChild + && pImageChild != pDisk->pLast) + { + uOpenFlags = pImageChild->Backend->pfnGetOpenFlags(pImageChild->pvBackendData); + uOpenFlags |= VD_OPEN_FLAGS_READONLY; + rc = pImageChild->Backend->pfnSetOpenFlags(pImageChild->pvBackendData, + uOpenFlags); + if (RT_FAILURE(rc)) + break; + } } while (0); if (pvBuf) @@ -2308,12 +2371,12 @@ VBOXDDU_DECL(int) VDCopy(PVBOXHDD pDiskFrom, unsigned nImage, PVBOXHDD pDiskTo, { size_t cbThisRead = RT_MIN(VD_MERGE_BUFFER_SIZE, cbRemaining); - rc = vdReadHelper(pDiskFrom, pImageFrom, uOffset, pvBuf, + rc = vdReadHelper(pDiskFrom, pImageFrom, NULL, uOffset, pvBuf, cbThisRead); if (RT_FAILURE(rc)) break; - rc = vdWriteHelper(pDiskTo, pImageTo, uOffset, pvBuf, + rc = vdWriteHelper(pDiskTo, pImageTo, NULL, uOffset, pvBuf, cbThisRead); if (RT_FAILURE(rc)) break; @@ -2650,7 +2713,7 @@ VBOXDDU_DECL(int) VDRead(PVBOXHDD pDisk, uint64_t uOffset, void *pvBuf, PVDIMAGE pImage = pDisk->pLast; AssertPtrBreakStmt(pImage, rc = VERR_VD_NOT_OPENED); - rc = vdReadHelper(pDisk, pImage, uOffset, pvBuf, cbRead); + rc = vdReadHelper(pDisk, pImage, NULL, uOffset, pvBuf, cbRead); } while (0); LogFlowFunc(("returns %Rrc\n", rc)); @@ -2697,7 +2760,7 @@ VBOXDDU_DECL(int) VDWrite(PVBOXHDD pDisk, uint64_t uOffset, const void *pvBuf, AssertPtrBreakStmt(pImage, rc = VERR_VD_NOT_OPENED); vdSetModifiedFlag(pDisk); - rc = vdWriteHelper(pDisk, pImage, uOffset, pvBuf, cbWrite); + rc = vdWriteHelper(pDisk, pImage, NULL, uOffset, pvBuf, cbWrite); } while (0); LogFlowFunc(("returns %Rrc\n", rc)); diff --git a/src/VBox/Devices/Storage/VDIHDDCore.cpp b/src/VBox/Devices/Storage/VDIHDDCore.cpp index e59204550..045bbd5de 100644 --- a/src/VBox/Devices/Storage/VDIHDDCore.cpp +++ b/src/VBox/Devices/Storage/VDIHDDCore.cpp @@ -2247,7 +2247,7 @@ VBOXHDDBACKEND g_VDIBackend = sizeof(VBOXHDDBACKEND), /* uBackendCaps */ VD_CAP_UUID | VD_CAP_CREATE_FIXED | VD_CAP_CREATE_DYNAMIC - | VD_CAP_CREATE_SPLIT_2G | VD_CAP_DIFF | VD_CAP_FILE, + | VD_CAP_DIFF | VD_CAP_FILE, /* papszFileExtensions */ s_apszVdiFileExtensions, /* paConfigInfo */ diff --git a/src/VBox/Devices/Storage/VHDHDDCore.cpp b/src/VBox/Devices/Storage/VHDHDDCore.cpp index 43597538a..567ca4eec 100644 --- a/src/VBox/Devices/Storage/VHDHDDCore.cpp +++ b/src/VBox/Devices/Storage/VHDHDDCore.cpp @@ -732,7 +732,11 @@ static int vhdLoadDynamicDisk(PVHDIMAGE pImage, uint64_t uDynamicDiskHeaderOffse */ pImage->cbDataBlockBitmap = pImage->cSectorsPerDataBlock / 8; pImage->cDataBlockBitmapSectors = pImage->cbDataBlockBitmap / VHD_SECTOR_SIZE; + /* Round up to full sector size */ + if (pImage->cbDataBlockBitmap % VHD_SECTOR_SIZE > 0) + pImage->cDataBlockBitmapSectors++; LogFlowFunc(("cbDataBlockBitmap=%u\n", pImage->cbDataBlockBitmap)); + LogFlowFunc(("cDataBlockBitmapSectors=%u\n", pImage->cDataBlockBitmapSectors)); pImage->pu8Bitmap = vhdBlockBitmapAllocate(pImage); if (!pImage->pu8Bitmap) @@ -1280,7 +1284,7 @@ static int vhdWrite(void *pBackendData, uint64_t uOffset, const void *pvBuf, siz return VERR_VD_BLOCK_FREE; } - size_t cbNewBlock = (pImage->cbDataBlock + pImage->cbDataBlockBitmap) * sizeof(uint8_t); + size_t cbNewBlock = pImage->cbDataBlock + (pImage->cDataBlockBitmapSectors * VHD_SECTOR_SIZE); uint8_t *pNewBlock = (uint8_t *)RTMemAllocZ(cbNewBlock); if (!pNewBlock) @@ -1729,6 +1733,9 @@ static int vhdCreateDynamicImage(PVHDIMAGE pImage, uint64_t cbSize) pImage->cSectorsPerDataBlock = pImage->cbDataBlock / VHD_SECTOR_SIZE; pImage->cbDataBlockBitmap = pImage->cSectorsPerDataBlock / 8; pImage->cDataBlockBitmapSectors = pImage->cbDataBlockBitmap / VHD_SECTOR_SIZE; + /* Align to sector boundary */ + if (pImage->cbDataBlockBitmap % VHD_SECTOR_SIZE > 0) + pImage->cDataBlockBitmapSectors++; pImage->pu8Bitmap = vhdBlockBitmapAllocate(pImage); if (!pImage->pu8Bitmap) return vhdError(pImage, VERR_NO_MEMORY, RT_SRC_POS, N_("VHD: cannot allocate memory for bitmap storage")); diff --git a/src/VBox/Devices/testcase/Makefile.kmk b/src/VBox/Devices/testcase/Makefile.kmk index 18b82c6b6..2f3e1573c 100644 --- a/src/VBox/Devices/testcase/Makefile.kmk +++ b/src/VBox/Devices/testcase/Makefile.kmk @@ -1,10 +1,10 @@ # $Id: Makefile.kmk $ ## @file -# Sub-Makefile for the Devices testcases. +# Sub-Makefile for the device testcases. # # -# Copyright (C) 2006-2007 Sun Microsystems, Inc. +# Copyright (C) 2006-2010 Sun Microsystems, Inc. # # This file is part of VirtualBox Open Source Edition (OSE), as # available from http://www.virtualbox.org. This file is free software; @@ -45,47 +45,49 @@ TESTING += \ $(VBOX_DEVICES_TEST_OUT_DIR)/tstDeviceStructSize.run -# -# The testcase generator. -# -PROGRAMS += tstDeviceStructSizeGC -tstDeviceStructSizeGC_TEMPLATE = VBOXGCEXE -tstDeviceStructSizeGC_DEFS = -ifdef VBOX_WITH_USB -tstDeviceStructSizeGC_DEFS += VBOX_WITH_USB IN_USB_GC -endif -ifdef VBOX_WITH_AHCI -tstDeviceStructSizeGC_DEFS += VBOX_WITH_AHCI -endif -ifdef VBOX_WITH_E1000 -tstDeviceStructSizeGC_DEFS += VBOX_WITH_E1000 -endif -ifdef VBOX_WITH_VIRTIO -tstDeviceStructSizeGC_DEFS += VBOX_WITH_VIRTIO -endif -ifdef VBOX_WITH_BUSLOGIC -tstDeviceStructSizeGC_DEFS += VBOX_WITH_BUSLOGIC -endif -ifdef VBOX_WITH_SCSI -tstDeviceStructSizeGC_DEFS += VBOX_WITH_SCSI -endif -ifdef VBOX_WITH_LSILOGIC -tstDeviceStructSizeGC_DEFS += VBOX_WITH_LSILOGIC -endif -ifdef VBOX_WITH_HPET -tstDeviceStructSizeGC_DEFS += VBOX_WITH_HPET -endif -ifdef VBOX_WITH_HGSMI -tstDeviceStructSizeGC_DEFS += VBOX_WITH_HGSMI -endif -ifdef VBOX_WITH_VIDEOHWACCEL -tstDeviceStructSizeGC_DEFS += VBOX_WITH_VIDEOHWACCEL -endif -tstDeviceStructSizeGC_SOURCES = tstDeviceStructSizeGC.cpp -tstDeviceStructSizeGC_INCS = \ - $(VBOX_PATH_DEVICES_SRC) \ - $(VBOX_PATH_DEVICES_SRC)/Bus \ - $(VBOX_DEVICES_TEST_OUT_DIR) +ifdef VBOX_WITH_RAW_MODE + # + # The testcase generator. + # + PROGRAMS += tstDeviceStructSizeRC + tstDeviceStructSizeRC_TEMPLATE = VBOXGCEXE + tstDeviceStructSizeRC_DEFS = VBOX_WITH_RAW_MODE + ifdef VBOX_WITH_USB + tstDeviceStructSizeRC_DEFS += VBOX_WITH_USB + endif + ifdef VBOX_WITH_AHCI + tstDeviceStructSizeRC_DEFS += VBOX_WITH_AHCI + endif + ifdef VBOX_WITH_E1000 + tstDeviceStructSizeRC_DEFS += VBOX_WITH_E1000 + endif + ifdef VBOX_WITH_VIRTIO + tstDeviceStructSizeRC_DEFS += VBOX_WITH_VIRTIO + endif + ifdef VBOX_WITH_BUSLOGIC + tstDeviceStructSizeRC_DEFS += VBOX_WITH_BUSLOGIC + endif + ifdef VBOX_WITH_SCSI + tstDeviceStructSizeRC_DEFS += VBOX_WITH_SCSI + endif + ifdef VBOX_WITH_LSILOGIC + tstDeviceStructSizeRC_DEFS += VBOX_WITH_LSILOGIC + endif + ifdef VBOX_WITH_HPET + tstDeviceStructSizeRC_DEFS += VBOX_WITH_HPET + endif + ifdef VBOX_WITH_HGSMI + tstDeviceStructSizeRC_DEFS += VBOX_WITH_HGSMI + endif + ifdef VBOX_WITH_VIDEOHWACCEL + tstDeviceStructSizeRC_DEFS += VBOX_WITH_VIDEOHWACCEL + endif + tstDeviceStructSizeRC_SOURCES = tstDeviceStructSizeRC.cpp + tstDeviceStructSizeRC_INCS = \ + $(VBOX_PATH_DEVICES_SRC) \ + $(VBOX_PATH_DEVICES_SRC)/Bus \ + $(VBOX_DEVICES_TEST_OUT_DIR) +endif # VBOX_WITH_RAW_MODE # # The testcase it self. @@ -94,37 +96,40 @@ PROGRAMS += tstDeviceStructSize tstDeviceStructSize_TEMPLATE = VBOXR3AUTOTST tstDeviceStructSize_DEFS = ifdef VBOX_WITH_USB -tstDeviceStructSize_DEFS += VBOX_WITH_USB IN_USB_GC + tstDeviceStructSize_DEFS += VBOX_WITH_USB endif ifdef VBOX_WITH_AHCI -tstDeviceStructSize_DEFS += VBOX_WITH_AHCI + tstDeviceStructSize_DEFS += VBOX_WITH_AHCI endif ifdef VBOX_WITH_E1000 -tstDeviceStructSize_DEFS += VBOX_WITH_E1000 + tstDeviceStructSize_DEFS += VBOX_WITH_E1000 endif ifdef VBOX_WITH_VIRTIO -tstDeviceStructSize_DEFS += VBOX_WITH_VIRTIO + tstDeviceStructSize_DEFS += VBOX_WITH_VIRTIO endif ifdef VBOX_WITH_BUSLOGIC -tstDeviceStructSize_DEFS += VBOX_WITH_BUSLOGIC + tstDeviceStructSize_DEFS += VBOX_WITH_BUSLOGIC endif ifdef VBOX_WITH_LSILOGIC -tstDeviceStructSize_DEFS += VBOX_WITH_LSILOGIC + tstDeviceStructSize_DEFS += VBOX_WITH_LSILOGIC endif ifdef VBOX_WITH_HPET -tstDeviceStructSize_DEFS += VBOX_WITH_HPET + tstDeviceStructSize_DEFS += VBOX_WITH_HPET endif ifdef VBOX_WITH_SMC -tstDeviceStructSize_DEFS += VBOX_WITH_SMC + tstDeviceStructSize_DEFS += VBOX_WITH_SMC endif ifdef VBOX_WITH_LPC -tstDeviceStructSize_DEFS += VBOX_WITH_LPC + tstDeviceStructSize_DEFS += VBOX_WITH_LPC endif ifdef VBOX_WITH_HGSMI -tstDeviceStructSize_DEFS += VBOX_WITH_HGSMI + tstDeviceStructSize_DEFS += VBOX_WITH_HGSMI endif ifdef VBOX_WITH_VIDEOHWACCEL -tstDeviceStructSize_DEFS += VBOX_WITH_VIDEOHWACCEL + tstDeviceStructSize_DEFS += VBOX_WITH_VIDEOHWACCEL +endif +ifdef VBOX_WITH_RAW_MODE + tstDeviceStructSize_DEFS += VBOX_WITH_RAW_MODE endif tstDeviceStructSize_INCS = \ $(VBOX_PATH_DEVICES_SRC) \ @@ -132,9 +137,11 @@ tstDeviceStructSize_INCS = \ $(VBOX_DEVICES_TEST_OUT_DIR) tstDeviceStructSize_SOURCES = tstDeviceStructSize.cpp tstDeviceStructSize_CLEAN = \ - $(VBOX_DEVICES_TEST_OUT_DIR)/tstDeviceStructSizeGC.h \ + $(VBOX_DEVICES_TEST_OUT_DIR)/tstDeviceStructSizeRC.h \ $(VBOX_DEVICES_TEST_OUT_DIR)/tstDeviceStructSize.run -tstDeviceStructSize.cpp_DEPS = $(VBOX_DEVICES_TEST_OUT_DIR)/tstDeviceStructSizeGC.h +ifdef VBOX_WITH_RAW_MODE + tstDeviceStructSize.cpp_DEPS = $(VBOX_DEVICES_TEST_OUT_DIR)/tstDeviceStructSizeRC.h +endif # # Run rule for tstDeviceStructSize. @@ -144,10 +151,12 @@ tstDeviceStructSize.cpp_DEPS = $(VBOX_DEVICES_TEST_OUT_DIR)/tstDeviceStructSizeG # 2. Generate a testcase from the dump ## future +ifdef VBOX_WITH_RAW_MODE # 1&2. Manually dump selected structures and members. -$(VBOX_DEVICES_TEST_OUT_DIR)/tstDeviceStructSizeGC.h: $$(INSTARGET_tstDeviceStructSizeGC) | $$(dir $$@) +$(VBOX_DEVICES_TEST_OUT_DIR)/tstDeviceStructSizeRC.h: $$(INSTARGET_tstDeviceStructSizeRC) | $$(dir $$@) $(call MSG_GENERATE,,$@) $(QUIET)$(REDIRECT) -wo $@ -- $^ +endif # 3. run it. $(VBOX_DEVICES_TEST_OUT_DIR)/tstDeviceStructSize.run: $$(INSTARGET_tstDeviceStructSize) | $$(dir $$@) diff --git a/src/VBox/Devices/testcase/tstDeviceStructSize.cpp b/src/VBox/Devices/testcase/tstDeviceStructSize.cpp index 359af6171..c40a44834 100644 --- a/src/VBox/Devices/testcase/tstDeviceStructSize.cpp +++ b/src/VBox/Devices/testcase/tstDeviceStructSize.cpp @@ -1,12 +1,12 @@ /* $Id: tstDeviceStructSize.cpp $ */ /** @file * tstDeviceStructSize - testcase for check structure sizes/alignment - * and to verify that HC and GC uses the same + * and to verify that HC and RC uses the same * representation of the structures. */ /* - * Copyright (C) 2006-2007 Sun Microsystems, Inc. + * Copyright (C) 2006-2010 Sun Microsystems, Inc. * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -311,11 +311,13 @@ int main() CHECK_MEMBER_ALIGNMENT(VPCISTATE, Queues, 8); #endif +#ifdef VBOX_WITH_RAW_MODE /* - * Compare HC and GC. + * Compare HC and RC. */ - printf("tstDeviceStructSize: Comparing HC and GC...\n"); -#include "tstDeviceStructSizeGC.h" + printf("tstDeviceStructSize: Comparing HC and RC...\n"); +# include "tstDeviceStructSizeRC.h" +#endif /* * Report result. @@ -326,3 +328,4 @@ int main() printf("tstDeviceStructSize: SUCCESS\n"); return rc; } + diff --git a/src/VBox/Devices/testcase/tstDeviceStructSizeGC.cpp b/src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp index 32c0865a7..cc9573204 100644 --- a/src/VBox/Devices/testcase/tstDeviceStructSizeGC.cpp +++ b/src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp @@ -1,4 +1,4 @@ -/* $Id: tstDeviceStructSizeGC.cpp $ */ +/* $Id: tstDeviceStructSizeRC.cpp $ */ /** @file * tstDeviceStructSizeGC - Generate structure member and size checks from the GC perspective. * diff --git a/src/VBox/Disassembler/Makefile.kmk b/src/VBox/Disassembler/Makefile.kmk index d98dd2500..e45bc4079 100644 --- a/src/VBox/Disassembler/Makefile.kmk +++ b/src/VBox/Disassembler/Makefile.kmk @@ -49,14 +49,16 @@ DisasmCoreR3_SOURCES = \ DisasmTables.cpp \ DisasmTablesX64.cpp -LIBRARIES += DisasmGC -DisasmGC_TEMPLATE = VBOXGC -DisasmGC_DEFS = IN_DIS IN_RT_GC IN_RT_RC DIS_CORE_ONLY -DisasmGC_SOURCES = \ - DisasmCore.cpp \ - DisasmReg.cpp \ - DisasmTables.cpp \ - DisasmTablesX64.cpp +ifdef VBOX_WITH_RAW_MODE + LIBRARIES += DisasmGC + DisasmGC_TEMPLATE = VBOXGC + DisasmGC_DEFS = IN_DIS IN_RT_GC IN_RT_RC DIS_CORE_ONLY + DisasmGC_SOURCES = \ + DisasmCore.cpp \ + DisasmReg.cpp \ + DisasmTables.cpp \ + DisasmTablesX64.cpp +endif # VBOX_WITH_RAW_MODE LIBRARIES += DisasmR0 DisasmR0_TEMPLATE = VBOXR0 diff --git a/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp b/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp index b3c20d7e6..43410d474 100644 --- a/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp +++ b/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp @@ -1059,9 +1059,12 @@ int handleAddiSCSIDisk(HandlerArg *a) password.detachTo (values.appendedRaw()); } - /// @todo add --initiator option - Bstr ("InitiatorName").detachTo (names.appendedRaw()); - Bstr ("iqn.2008-04.com.sun.virtualbox.initiator").detachTo (values.appendedRaw()); + /// @todo add --initiator option - until that happens rely on the + // defaults of the iSCSI initiator code. Setting it to a constant + // value does more harm than good, as the initiator name is supposed + // to identify a particular initiator uniquely. +// Bstr ("InitiatorName").detachTo (names.appendedRaw()); +// Bstr ("iqn.2008-04.com.sun.virtualbox.initiator").detachTo (values.appendedRaw()); /// @todo add --targetName and --targetPassword options diff --git a/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp b/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp index d20312bd8..2a04529af 100644 --- a/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp +++ b/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp @@ -75,7 +75,9 @@ enum MODIFYVM_DELALLCPUID, MODIFYVM_MONITORCOUNT, MODIFYVM_ACCELERATE3D, +#ifdef VBOX_WITH_VIDEOHWACCEL MODIFYVM_ACCELERATE2DVIDEO, +#endif MODIFYVM_BIOSLOGOFADEIN, MODIFYVM_BIOSLOGOFADEOUT, MODIFYVM_BIOSLOGODISPLAYTIME, @@ -116,12 +118,14 @@ enum MODIFYVM_AUDIOCONTROLLER, MODIFYVM_AUDIO, MODIFYVM_CLIPBOARD, +#ifdef VBOX_WITH_VRDP MODIFYVM_VRDPPORT, MODIFYVM_VRDPADDRESS, MODIFYVM_VRDPAUTHTYPE, MODIFYVM_VRDPMULTICON, MODIFYVM_VRDPREUSECON, MODIFYVM_VRDP, +#endif MODIFYVM_USBEHCI, MODIFYVM_USB, MODIFYVM_SNAPSHOTFOLDER, @@ -153,7 +157,9 @@ static const RTGETOPTDEF g_aModifyVMOptions[] = { "--cpus", MODIFYVM_CPUS, RTGETOPT_REQ_UINT32 }, { "--monitorcount", MODIFYVM_MONITORCOUNT, RTGETOPT_REQ_UINT32 }, { "--accelerate3d", MODIFYVM_ACCELERATE3D, RTGETOPT_REQ_BOOL_ONOFF }, +#ifdef VBOX_WITH_VIDEOHWACCEL { "--accelerate2dvideo", MODIFYVM_ACCELERATE2DVIDEO, RTGETOPT_REQ_BOOL_ONOFF }, +#endif { "--bioslogofadein", MODIFYVM_BIOSLOGOFADEIN, RTGETOPT_REQ_BOOL_ONOFF }, { "--bioslogofadeout", MODIFYVM_BIOSLOGOFADEOUT, RTGETOPT_REQ_BOOL_ONOFF }, { "--bioslogodisplaytime", MODIFYVM_BIOSLOGODISPLAYTIME, RTGETOPT_REQ_UINT64 }, @@ -194,12 +200,14 @@ static const RTGETOPTDEF g_aModifyVMOptions[] = { "--audiocontroller", MODIFYVM_AUDIOCONTROLLER, RTGETOPT_REQ_STRING }, { "--audio", MODIFYVM_AUDIO, RTGETOPT_REQ_STRING }, { "--clipboard", MODIFYVM_CLIPBOARD, RTGETOPT_REQ_STRING }, +#ifdef VBOX_WITH_VRDP { "--vrdpport", MODIFYVM_VRDPPORT, RTGETOPT_REQ_STRING }, { "--vrdpaddress", MODIFYVM_VRDPADDRESS, RTGETOPT_REQ_STRING }, { "--vrdpauthtype", MODIFYVM_VRDPAUTHTYPE, RTGETOPT_REQ_STRING }, { "--vrdpmulticon", MODIFYVM_VRDPMULTICON, RTGETOPT_REQ_BOOL_ONOFF }, { "--vrdpreusecon", MODIFYVM_VRDPREUSECON, RTGETOPT_REQ_BOOL_ONOFF }, { "--vrdp", MODIFYVM_VRDP, RTGETOPT_REQ_BOOL_ONOFF }, +#endif { "--usbehci", MODIFYVM_USBEHCI, RTGETOPT_REQ_BOOL_ONOFF }, { "--usb", MODIFYVM_USB, RTGETOPT_REQ_BOOL_ONOFF }, { "--snapshotfolder", MODIFYVM_SNAPSHOTFOLDER, RTGETOPT_REQ_STRING }, diff --git a/src/VBox/Frontends/VirtualBox/Makefile.kmk b/src/VBox/Frontends/VirtualBox/Makefile.kmk index 206a00615..4858e0e6b 100644 --- a/src/VBox/Frontends/VirtualBox/Makefile.kmk +++ b/src/VBox/Frontends/VirtualBox/Makefile.kmk @@ -28,11 +28,19 @@ include $(KBUILD_PATH)/subheader.kmk VBOX_VIRTUALBOX4_SRC := $(PATH_SUB_CURRENT) VBOX_VIRTUALBOX4_OUT_DIR := $(PATH_TARGET)/VirtualBox/misc -VBOX_WITH_REGISTRATION := 1 +# VBOX_WITH_REGISTRATION := 1 # Ask the user to register at Sun. If this setting is disabled the user can # still register using the menu if desired. -VBOX_WITH_REGISTRATION_REQUEST := 1 +# VBOX_WITH_REGISTRATION_REQUEST := 1 + +# For now this should be disabled in any case +ifdef VBOX_WITH_REGISTRATION + VBOX_WITH_REGISTRATION= +endif +ifdef VBOX_WITH_REGISTRATION_REQUEST + VBOX_WITH_REGISTRATION_REQUEST= +endif # Show the update notifier dialog during startup. If this setting is disabled # the user can still update using the menu if desired. @@ -283,7 +291,6 @@ VirtualBox_QT_MOCHDRS = \ src/VBoxConsoleWnd.h \ src/VBoxGlobalSettings.h \ src/VBoxMediaManagerDlg.h \ - src/VBoxRegistrationDlg.h \ src/VBoxSelectorWnd.h \ src/VBoxSnapshotDetailsDlg.h \ src/VBoxSnapshotsWgt.h \ @@ -359,6 +366,11 @@ VirtualBox_QT_MOCHDRS = \ src/widgets/VBoxSpecialControls.h \ src/widgets/VBoxWarningPane.h +ifdef VBOX_WITH_REGISTRATION + VirtualBox_QT_MOCHDRS += \ + src/VBoxRegistrationDlg.h +endif + # Sources containing local definitions of classes that use the Q_OBJECT macro. VirtualBox_QT_MOCSRCS = \ src/VBoxSelectorWnd.cpp \ @@ -384,7 +396,6 @@ VirtualBox_SOURCES = \ src/VBoxHelpActions.cpp \ src/VBoxMediaManagerDlg.cpp \ src/VBoxMedium.cpp \ - src/VBoxRegistrationDlg.cpp \ src/VBoxSelectorWnd.cpp \ src/VBoxSnapshotDetailsDlg.cpp \ src/VBoxSnapshotsWgt.cpp \ @@ -461,6 +472,11 @@ VirtualBox_SOURCES = \ src/widgets/VBoxSpecialControls.cpp \ src/widgets/VBoxWarningPane.cpp +ifdef VBOX_WITH_REGISTRATION + VirtualBox_SOURCES += \ + src/VBoxRegistrationDlg.cpp +endif + ifeq ($(filter-out freebsd linux netbsd openbsd solaris,$(KBUILD_TARGET)),) # X11 ifndef VBOX_OSE VirtualBox_QT_MOCHDRS += \ diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ar.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ar.ts index 3594542e9..0d4359175 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ar.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ar.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Berdai Mohammed</translation> + <translation type="obsolete">Berdai Mohammed</translation> </message> </context> <context> @@ -1462,7 +1462,7 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation type="unfinished"></translation> </message> </context> @@ -4391,88 +4391,12 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxRegistrationDlg</name> <message> - <source>VirtualBox Registration Dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &already have a Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&E-mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &would like to create a new Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&First Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Last Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Company:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&untry:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>E-&mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>P&assword:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&nfirm Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Register</source> - <translation type="unfinished"></translation> - </message> - <message> <source>&Name</source> <translation type="obsolete">&إسم</translation> </message> <message> - <source>Enter your full name using Latin characters.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Enter your e-mail address. Please use a valid address here.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Welcome to the VirtualBox Registration Form!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Select Country/Territory</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Could not perform connection handshake.</source> - <translation type="unfinished"></translation> - </message> - <message> <source>Cancel</source> - <translation type="unfinished">إلغاء</translation> + <translation type="obsolete">إلغاء</translation> </message> </context> <context> @@ -6727,7 +6651,7 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts index b746bae51..f163297c2 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS><TS version="1.1" language="bg_BG"> -<defaultcodec></defaultcodec> +<!DOCTYPE TS> +<TS version="2.0" language="bg_BG"> <context> <name>@@@</name> <message> @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Stoyan Marinov, Moyat.NET.</translation> + <translation type="obsolete">Stoyan Marinov, Moyat.NET.</translation> </message> </context> <context> @@ -1374,7 +1374,7 @@ p, li { white-space: pre-wrap; } <translation>&Преглед в реално време от иконата в панела</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>&Ðвтоматично показване на лентата и менюто при цÑл екран</translation> </message> </context> @@ -4496,7 +4496,7 @@ p, li { white-space: pre-wrap; } <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>РегиÑтрационен диалог на VirtualBox</translation> + <translation type="obsolete">РегиÑтрационен диалог на VirtualBox</translation> </message> <message> <source>&Name</source> @@ -4504,7 +4504,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Въведете цÑлото Ñи име, като използвате латинÑки букви.</translation> + <translation type="obsolete">Въведете цÑлото Ñи име, като използвате латинÑки букви.</translation> </message> <message> <source>&E-mail</source> @@ -4512,7 +4512,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Въведете валиден e-mail адреÑ.</translation> + <translation type="obsolete">Въведете валиден e-mail адреÑ.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -4520,11 +4520,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Добре дошли в региÑтрационната форма на VirtualBox!</translation> + <translation type="obsolete">Добре дошли в региÑтрационната форма на VirtualBox!</translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>Ðе може да Ñе оÑъщеÑтви връзка.</translation> + <translation type="obsolete">Ðе може да Ñе оÑъщеÑтви връзка.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -4540,63 +4540,63 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Cancel</source> - <translation>Отказ</translation> + <translation type="obsolete">Отказ</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Изберете Ñтрана/териториÑ</translation> + <translation type="obsolete">Изберете Ñтрана/териториÑ</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>МолÑ, попълнете тази региÑтрационна форма, за да ни информирате, че използвате VirtualBox и, евентуално, за да бъдете информирани за новини и Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° VirtualBox.</p><p>МолÑ, използвайте Ñамо латинÑки букви в полетата по-долу. МолÑ, имайте в предвид, че Sun Microsystems ще използва тази Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ñамо за изготвÑне на ÑтатиÑтика за използваемоÑтта на продукта и за изпращане на новинарÑки бюлетини за VirtualBox. ОÑвен за тези цели, Sun Microsystems никога нÑма да ÑÐ¿Ð¾Ð´ÐµÐ»Ñ Ð²Ð°ÑˆÐ¸Ñ‚Ðµ данни Ñ Ñ‚Ñ€ÐµÑ‚Ð¸ Ñтрани. Подробна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾Ñно това как използваме вашите лични данни може да бъде намерена в ÑекциÑта <b>Конфиденциална политика</b> от ръководÑтвото на VirtualBox или на Ñтраницата <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Конфиденциална политика</a> на уеб Ñтраницата на VirtualBox.</p></translation> + <translation type="obsolete"><p>МолÑ, попълнете тази региÑтрационна форма, за да ни информирате, че използвате VirtualBox и, евентуално, за да бъдете информирани за новини и Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° VirtualBox.</p><p>МолÑ, използвайте Ñамо латинÑки букви в полетата по-долу. МолÑ, имайте в предвид, че Sun Microsystems ще използва тази Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ñамо за изготвÑне на ÑтатиÑтика за използваемоÑтта на продукта и за изпращане на новинарÑки бюлетини за VirtualBox. ОÑвен за тези цели, Sun Microsystems никога нÑма да ÑÐ¿Ð¾Ð´ÐµÐ»Ñ Ð²Ð°ÑˆÐ¸Ñ‚Ðµ данни Ñ Ñ‚Ñ€ÐµÑ‚Ð¸ Ñтрани. Подробна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾Ñно това как използваме вашите лични данни може да бъде намерена в ÑекциÑта <b>Конфиденциална политика</b> от ръководÑтвото на VirtualBox или на Ñтраницата <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Конфиденциална политика</a> на уеб Ñтраницата на VirtualBox.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>&Вече имам Sun Online акаунт:</translation> + <translation type="obsolete">&Вече имам Sun Online акаунт:</translation> </message> <message> <source>&E-mail:</source> - <translation>&E-mail:</translation> + <translation type="obsolete">&E-mail:</translation> </message> <message> <source>&Password:</source> - <translation>&Парола:</translation> + <translation type="obsolete">&Парола:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>&ИÑкам да Ñе региÑтрирам, Ñъздавайки нов Sun Online акаунт:</translation> + <translation type="obsolete">&ИÑкам да Ñе региÑтрирам, Ñъздавайки нов Sun Online акаунт:</translation> </message> <message> <source>&First Name:</source> - <translation>&Име:</translation> + <translation type="obsolete">&Име:</translation> </message> <message> <source>&Last Name:</source> - <translation>&ФамилиÑ:</translation> + <translation type="obsolete">&ФамилиÑ:</translation> </message> <message> <source>&Company:</source> - <translation>&КомпаниÑ:</translation> + <translation type="obsolete">&КомпаниÑ:</translation> </message> <message> <source>Co&untry:</source> - <translation>&Държава:</translation> + <translation type="obsolete">&Държава:</translation> </message> <message> <source>E-&mail:</source> - <translation>E-&mail:</translation> + <translation type="obsolete">E-&mail:</translation> </message> <message> <source>P&assword:</source> - <translation>&Парола:</translation> + <translation type="obsolete">&Парола:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>П&арола отново:</translation> + <translation type="obsolete">П&арола отново:</translation> </message> <message> <source>&Register</source> - <translation>&РегиÑтрациÑ</translation> + <translation type="obsolete">&РегиÑтрациÑ</translation> </message> </context> <context> @@ -6858,7 +6858,7 @@ p, li { white-space: pre-wrap; </style></head><body style=" <translation>&ПроцеÑор(и):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Контролира Ð±Ñ€Ð¾Ñ Ð½Ð° виртуалните процеÑори във виртуалната машина.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts index 1bd328035..56544f816 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Vicent Fornés, Pau Iranzo <info@somgnu.cat>.</translation> + <translation type="obsolete">Vicent Fornés, Pau Iranzo <info@somgnu.cat>.</translation> </message> </context> <context> @@ -1965,7 +1965,7 @@ p, li { white-space: pre-wrap; } <translation>&Mostra la icona a la safata del sistema</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>&Mostra el dock automà ticament i la barra de menú al mode de pantalla completa</translation> </message> </context> @@ -6226,11 +6226,11 @@ pas i connectar discos durs més endavant, fent servir el dià leg de configuraci </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Introduïu el nom complet fent servir carà cters llatins.</translation> + <translation type="obsolete">Introduïu el nom complet fent servir carà cters llatins.</translation> </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Introduïu una adreça de correu và lida.</translation> + <translation type="obsolete">Introduïu una adreça de correu và lida.</translation> </message> <message> <source>&Name</source> @@ -6246,15 +6246,15 @@ pas i connectar discos durs més endavant, fent servir el dià leg de configuraci </message> <message> <source>VirtualBox Registration Dialog</source> - <translation>Dià leg de registre del VirtualBox</translation> + <translation type="obsolete">Dià leg de registre del VirtualBox</translation> </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Benvingut al formulari de registre del VirtualBox!</translation> + <translation type="obsolete">Benvingut al formulari de registre del VirtualBox!</translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>No s'ha pogut dur a terme la conformitat de connexió.</translation> + <translation type="obsolete">No s'ha pogut dur a terme la conformitat de connexió.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6270,63 +6270,63 @@ pas i connectar discos durs més endavant, fent servir el dià leg de configuraci </message> <message> <source>Cancel</source> - <translation>Cancel·la</translation> + <translation type="obsolete">Cancel·la</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Seleccioneu un paÃs/territori</translation> + <translation type="obsolete">Seleccioneu un paÃs/territori</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Ompliu aquest formulari de registre per permetre'ns conèixer que feu servir el VirtualBox i, opcionalment, mantenir-vos informat sobre novetats i actualitzacions del VirtualBox.</p><p>Feu servir carà cters llatins per omplir els camps següents. Tingueu en compte que Sun Microsystems farà servir aquesta informació només per a usos estadÃstics i per enviar-vos notÃcies sobre el VirtualBox. Sun Microsystems mai compartirà les vostres dades amb terceres parts. Més informació detallada sobre l'ús de les vostres dades personals poden trobar-se a la secció de <b>PolÃtica de privacitat</b> al manual de VirtualBox o al<a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> lloc web del VirtualBox.</p></translation> + <translation type="obsolete"><p>Ompliu aquest formulari de registre per permetre'ns conèixer que feu servir el VirtualBox i, opcionalment, mantenir-vos informat sobre novetats i actualitzacions del VirtualBox.</p><p>Feu servir carà cters llatins per omplir els camps següents. Tingueu en compte que Sun Microsystems farà servir aquesta informació només per a usos estadÃstics i per enviar-vos notÃcies sobre el VirtualBox. Sun Microsystems mai compartirà les vostres dades amb terceres parts. Més informació detallada sobre l'ús de les vostres dades personals poden trobar-se a la secció de <b>PolÃtica de privacitat</b> al manual de VirtualBox o al<a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> lloc web del VirtualBox.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>Ja tinc un compte a &Sun Online:</translation> + <translation type="obsolete">Ja tinc un compte a &Sun Online:</translation> </message> <message> <source>&E-mail:</source> - <translation>Corr&eu:</translation> + <translation type="obsolete">Corr&eu:</translation> </message> <message> <source>&Password:</source> - <translation>&Contrasenya:</translation> + <translation type="obsolete">&Contrasenya:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Vull &registrar-me creant un nou compte a Sun Online:</translation> + <translation type="obsolete">Vull &registrar-me creant un nou compte a Sun Online:</translation> </message> <message> <source>&First Name:</source> - <translation>&Nom:</translation> + <translation type="obsolete">&Nom:</translation> </message> <message> <source>&Last Name:</source> - <translation>&Cognoms:</translation> + <translation type="obsolete">&Cognoms:</translation> </message> <message> <source>&Company:</source> - <translation>C&ompanyia:</translation> + <translation type="obsolete">C&ompanyia:</translation> </message> <message> <source>Co&untry:</source> - <translation>&PaÃs:</translation> + <translation type="obsolete">&PaÃs:</translation> </message> <message> <source>E-&mail:</source> - <translation>Corre&u:</translation> + <translation type="obsolete">Corre&u:</translation> </message> <message> <source>P&assword:</source> - <translation>Con&trasenya:</translation> + <translation type="obsolete">Con&trasenya:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Confirmeu la contrasen&ya:</translation> + <translation type="obsolete">Confirmeu la contrasen&ya:</translation> </message> <message> <source>&Register</source> - <translation>&Registra</translation> + <translation type="obsolete">&Registra</translation> </message> </context> <context> @@ -10513,7 +10513,7 @@ al sistema amfitrió.</qt></translation> <translation>&Processador(s):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Controla el nombre de CPUs virtuals a la mà quina virtual.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts index f94c2ff2d..03e018881 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Vicent Fornés, Pau Iranzo <info@somgnu.cat>.</translation> + <translation type="obsolete">Vicent Fornés, Pau Iranzo <info@somgnu.cat>.</translation> </message> </context> <context> @@ -734,7 +734,7 @@ Versió %1</translation> <p>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.</p></source> <translation type="obsolete"><p>Alça l'estat d'execució actual de la mà quina virtual al disc dur fÃsic de l'ordinador d'amfitrió.</p> <p>La propera vegada que s'engegue esta mà quina, es restaurarà des de l'estat alçat i continuarà l'execució des del mateix lloc en què l'heu alçat, cosa que vos permetrà continuar immediatament amb el vostre treball.</p> -<p>Tingueu en compte que l'operació d'alçar l'estat de la mà quina pot prendre molt de temps, depenent del tipus de sistema operatiu client i la quantitat de memòria assignada a la mà quina virtual.</p></translation> +<p>Tingueu en compte que l'operació d'alçar l'estat de la mà quina pot prendre molt de temps, depenent del tipus de sistema operatiu client i la quantitat de memòria assignada a la mà quina virtual.</p></translation> </message> <message> <source>S&end the shutdown signal</source> @@ -745,7 +745,7 @@ Versió %1</translation> <p>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.</p> <p>If the machine doesn't respond to this action then the guest operating system may be misconfigured or doesn't understand ACPI Power Button events at all. In this case you should select the <b>Power off the machine</b> action to stop virtual machine execution.</p></source> <translation type="obsolete"><p>Envia a la mà quina virtual l'esdeveniment de prémer el botó ACPI Power.</p> -<p>Normalment, el sistema operatiu client que s'està executant a dins de la mà quina virtual detectarà este esdeveniment i realitzarà un procediment de tancament net. Esta és una manera recomanada de tancar la mà quina virtual perquè totes les aplicacions que s'estan executant en ella tindran la possibilitat d'alçar les seues dades i estat.</p> +<p>Normalment, el sistema operatiu client que s'està executant a dins de la mà quina virtual detectarà este esdeveniment i realitzarà un procediment de tancament net. Esta és una manera recomanada de tancar la mà quina virtual perquè totes les aplicacions que s'estan executant en ella tindran la possibilitat d'alçar les seues dades i estat.</p> <p>Si la mà quina no respon a esta acció potser el sistema operatiu client pot estar mal configurat o no entén els events del botó ACPI Power. En este cas, seleccioneu l'acció <b>Atura la mà quina</b> per aturar l'execució de la mà quina virtual.</p></translation> </message> <message> @@ -760,11 +760,11 @@ Versió %1</translation> </message> <message> <source><p>Saves the current execution state of the virtual machine to the physical hard disk of the host PC.</p><p>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.</p><p>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.</p></source> - <translation><p>Alça l'estat d'execució actual de la mà quina virtual al disc dur fÃsic de l'ordinador amfitrió.</p><p>La propera vegada que s'inicià esta mà quina, es restaurarà des de l'estat alçat i continuarà l'execució des del mateix lloc en què l'heu alçat, cosa que permetrà continuar immediatament amb el vostre treball.</p><p>Tingueu en compte que l'operació d'alçar l'estat de la mà quina pot prendre molt de temps, depenent del tipus de sistema operatiu client i la quantitat de memòria assignada a la mà quina virtual.</p></translation> + <translation><p>Alça l'estat d'execució actual de la mà quina virtual al disc dur fÃsic de l'ordinador amfitrió.</p><p>La propera vegada que s'inicià esta mà quina, es restaurarà des de l'estat alçat i continuarà l'execució des del mateix lloc en què l'heu alçat, cosa que permetrà continuar immediatament amb el vostre treball.</p><p>Tingueu en compte que l'operació d'alçar l'estat de la mà quina pot prendre molt de temps, depenent del tipus de sistema operatiu client i la quantitat de memòria assignada a la mà quina virtual.</p></translation> </message> <message> <source><p>Sends the ACPI Power Button press event to the virtual machine.</p><p>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.</p><p>If the machine doesn't respond to this action then the guest operating system may be misconfigured or doesn't understand ACPI Power Button events at all. In this case you should select the <b>Power off the machine</b> action to stop virtual machine execution.</p></source> - <translation><p>Envia a la mà quina virtual l'esdeveniment de prémer el botó ACPI Power.</p><p>Normalment, el sistema operatiu client que s'està executant a dins de la mà quina virtual detectarà este esdeveniment i realitzarà un procediment de tancament net. Esta és una manera recomanada de tancar la mà quina virtual perquè totes les aplicacions que s'estan executant en ella tindran la possibilitat d'alçar les seues dades i estat.</p><p>Si la mà quina no respon a esta acció potser el sistema operatiu client pot estar mal configurat o no entén els events del botó ACPI Power. En este cas, seleccioneu l'acció <b>Atura la mà quina</b> per aturar l'execució de la mà quina virtual.</p></translation> + <translation><p>Envia a la mà quina virtual l'esdeveniment de prémer el botó ACPI Power.</p><p>Normalment, el sistema operatiu client que s'està executant a dins de la mà quina virtual detectarà este esdeveniment i realitzarà un procediment de tancament net. Esta és una manera recomanada de tancar la mà quina virtual perquè totes les aplicacions que s'estan executant en ella tindran la possibilitat d'alçar les seues dades i estat.</p><p>Si la mà quina no respon a esta acció potser el sistema operatiu client pot estar mal configurat o no entén els events del botó ACPI Power. En este cas, seleccioneu l'acció <b>Atura la mà quina</b> per aturar l'execució de la mà quina virtual.</p></translation> </message> <message> <source><p>Turns off the virtual machine.</p><p>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 <i>data loss</i> inside the virtual machine. Selecting this action is recommended only if the virtual machine does not respond to the <b>Send the shutdown signal</b> action.</p></source> @@ -1965,7 +1965,7 @@ p, li { white-space: pre-wrap; } <translation>&Mostra la icona a la safata del sistema</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>&Mostra el dock automà ticament i la barra de menú al mode de pantalla completa</translation> </message> </context> @@ -3533,48 +3533,36 @@ p, li { white-space: pre-wrap; } <source>%n year(s)</source> <translation> <numerusform>%n any</numerusform> - <numerusform>%n anys</numerusform> - <numerusform>%n anys</numerusform> </translation> </message> <message numerus="yes"> <source>%n month(s)</source> <translation> <numerusform>%n mes</numerusform> - <numerusform>%n mesos</numerusform> - <numerusform>%n mesos</numerusform> </translation> </message> <message numerus="yes"> <source>%n day(s)</source> <translation> <numerusform>%n dia</numerusform> - <numerusform>%n dies</numerusform> - <numerusform>%n dies</numerusform> </translation> </message> <message numerus="yes"> <source>%n hour(s)</source> <translation> <numerusform>%n hora</numerusform> - <numerusform>%n hores</numerusform> - <numerusform>%n hores</numerusform> </translation> </message> <message numerus="yes"> <source>%n minute(s)</source> <translation> <numerusform>%n minut</numerusform> - <numerusform>%n minuts</numerusform> - <numerusform>%n minuts</numerusform> </translation> </message> <message numerus="yes"> <source>%n second(s)</source> <translation> <numerusform>%n segon</numerusform> - <numerusform>%n segons</numerusform> - <numerusform>%n segons</numerusform> </translation> </message> <message> @@ -5544,7 +5532,7 @@ pas i connectar discos durs més avant, fent servir el dià leg de configuració </message> <message> <source><p>The following VirtualBox settings files have been automatically converted to the new settings file format version <b>%1</b>.</p><p>However, the results of the conversion were not saved back to disk yet. Please press:</p><ul><li><b>Save</b> 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);</li><li><b>Backup</b> to create backup copies of the settings files in the old format before saving them in the new format;</li><li><b>Cancel</b> to not save the auto-converted settings files now.<li></ul><p>Note that if you select <b>Cancel</b>, 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 <b>no</b> backup copies will be created in this case.</p></source> - <translation type="obsolete"><p>Els següents fitxers de parà metres del VirtualBox s'han convertit automà ticament al nou format <b>%1</b>.</p><p>Tot i aixÃ, els resultats de la conversió encara no s'han alçat al disc. Premeu:</p><ul><li><b>Alça</b> per alçar ara els fitxers auto-convertits (ja no serà possible fer servir estos parà metres amb una versió anterior del VirtualBox);</li><li><b>Còpia de seguretat</b> per crear una còpia de seguretat dels fitxers de parà metres en el format antic abans d'alçar-los en el nou format;</li><li><b>Cancel·la</b> per no alçar ara els fitxers de parà metres auto-convertits.</li></ul><p>Tingueu en compte que si seleccioneu <b>Cancel·la</b>, els fitxers de parà metres auto-convertits s'alçaran implÃcitament en el nou format tot i que una vegada que canvieu algun parà metre o inicieu una mà quina virtual, en canvi en este cas <b>no</b> es faran còpies de seguretat.</p></translation> + <translation type="obsolete"><p>Els següents fitxers de parà metres del VirtualBox s'han convertit automà ticament al nou format <b>%1</b>.</p><p>Tot i aixÃ, els resultats de la conversió encara no s'han alçat al disc. Premeu:</p><ul><li><b>Alça</b> per alçar ara els fitxers auto-convertits (ja no serà possible fer servir estos parà metres amb una versió anterior del VirtualBox);</li><li><b>Còpia de seguretat</b> per crear una còpia de seguretat dels fitxers de parà metres en el format antic abans d'alçar-los en el nou format;</li><li><b>Cancel·la</b> per no alçar ara els fitxers de parà metres auto-convertits.</li></ul><p>Tingueu en compte que si seleccioneu <b>Cancel·la</b>, els fitxers de parà metres auto-convertits s'alçaran implÃcitament en el nou format tot i que una vegada que canvieu algun parà metre o inicieu una mà quina virtual, en canvi en este cas <b>no</b> es faran còpies de seguretat.</p></translation> </message> <message> <source>&Save</source> @@ -5890,7 +5878,7 @@ pas i connectar discos durs més avant, fent servir el dià leg de configuració </message> <message> <source><p>The following VirtualBox settings files have been automatically converted to the new settings file format version <b>%1</b>.</p><p>However, the results of the conversion were not saved back to disk yet. Please press:</p><ul><li><b>Backup</b> to create backup copies of the settings files in the old format before saving them in the new format;</li><li><b>Overwrite</b> 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);</li>%2</ul><p>It is recommended to always select <b>Backup</b> 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.</p></source> - <translation type="obsolete"><p>Els següents fitxers de parà metres del VirtualBox s'han convertit automà ticament al nou format <b>%1</b>.</p><p>Tot i aixÃ, els resultats de la conversió encara no s'han alçat al disc. Premeu:</p><ul><li><b>Alça</b> per alçar ara els fitxers auto-convertits (ja no serà possible fer servir estos parà metres amb una versió anterior del VirtualBox);</li><li><b>Còpia de seguretat</b> per crear una còpia de seguretat dels fitxers de parà metres en el format antic abans d'alçar-los en el nou format;</li><li><b>Sobreescriu</b> per alçar tots els fitxers auto-convertitts sense crear còpies de seguretat;</li>%2</ul><p>Es recomana seleccionar en tot moment <b>Còpia de seguretat</b> perquè sempre serà possible tornar a l'estat anterior sense perdre els parà metres de configuració actuals. Mireu el manual del VirtualBox per a més informació sobre desactualització.</p></translation> + <translation type="obsolete"><p>Els següents fitxers de parà metres del VirtualBox s'han convertit automà ticament al nou format <b>%1</b>.</p><p>Tot i aixÃ, els resultats de la conversió encara no s'han alçat al disc. Premeu:</p><ul><li><b>Alça</b> per alçar ara els fitxers auto-convertits (ja no serà possible fer servir estos parà metres amb una versió anterior del VirtualBox);</li><li><b>Còpia de seguretat</b> per crear una còpia de seguretat dels fitxers de parà metres en el format antic abans d'alçar-los en el nou format;</li><li><b>Sobreescriu</b> per alçar tots els fitxers auto-convertitts sense crear còpies de seguretat;</li>%2</ul><p>Es recomana seleccionar en tot moment <b>Còpia de seguretat</b> perquè sempre serà possible tornar a l'estat anterior sense perdre els parà metres de configuració actuals. Mireu el manual del VirtualBox per a més informació sobre desactualització.</p></translation> </message> <message> <source><li><b>Exit</b> to terminate VirtualBox without saving the results of the conversion to disk.</li></source> @@ -6226,11 +6214,11 @@ pas i connectar discos durs més avant, fent servir el dià leg de configuració </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Introduïu el nom complet fent servir carà cters llatins.</translation> + <translation type="obsolete">Introduïu el nom complet fent servir carà cters llatins.</translation> </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Introduïu una adreça de correu và lida.</translation> + <translation type="obsolete">Introduïu una adreça de correu và lida.</translation> </message> <message> <source>&Name</source> @@ -6246,15 +6234,15 @@ pas i connectar discos durs més avant, fent servir el dià leg de configuració </message> <message> <source>VirtualBox Registration Dialog</source> - <translation>Dià leg de registre del VirtualBox</translation> + <translation type="obsolete">Dià leg de registre del VirtualBox</translation> </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Benvingut al formulari de registre del VirtualBox!</translation> + <translation type="obsolete">Benvingut al formulari de registre del VirtualBox!</translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>No s'ha pogut dur a terme la conformitat de connexió.</translation> + <translation type="obsolete">No s'ha pogut dur a terme la conformitat de connexió.</translation> </message> <message> <source><p>Please fill out this registration form to let vos know that you use VirtualBox and, optionally, to keep you informed about VirtualBox news and updates.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6270,63 +6258,63 @@ pas i connectar discos durs més avant, fent servir el dià leg de configuració </message> <message> <source>Cancel</source> - <translation>Cancel·la</translation> + <translation type="obsolete">Cancel·la</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Seleccioneu un paÃs/territori</translation> + <translation type="obsolete">Seleccioneu un paÃs/territori</translation> </message> <message> <source><p>Please fill out this registration form to let vos know that you use VirtualBox and, optionally, to keep you informed about VirtualBox news and updates.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Ompliu este formulari de registre per permetre'ns conèixer que feu servir el VirtualBox i, opcionalment, mantindre-vos informat sobre novetats i actualitzacions del VirtualBox.</p><p>Feu servir carà cters llatins per omplir els camps següents. Tingueu en compte que Sun Microsystems farà servir esta informació només per a usos estadÃstics i per enviar-vos notÃcies sobre el VirtualBox. Sun Microsystems mai compartirà les vostres dades amb terceres parts. Més informació detallada sobre l'ús de les vostres dades personals poden trobar-se a la secció de <b>PolÃtica de privacitat</b> al manual de VirtualBox o al<a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> lloc web del VirtualBox.</p></translation> + <translation type="obsolete"><p>Ompliu este formulari de registre per permetre'ns conèixer que feu servir el VirtualBox i, opcionalment, mantindre-vos informat sobre novetats i actualitzacions del VirtualBox.</p><p>Feu servir carà cters llatins per omplir els camps següents. Tingueu en compte que Sun Microsystems farà servir esta informació només per a usos estadÃstics i per enviar-vos notÃcies sobre el VirtualBox. Sun Microsystems mai compartirà les vostres dades amb terceres parts. Més informació detallada sobre l'ús de les vostres dades personals poden trobar-se a la secció de <b>PolÃtica de privacitat</b> al manual de VirtualBox o al<a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> lloc web del VirtualBox.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>Ja tinc un compte a &Sun Online:</translation> + <translation type="obsolete">Ja tinc un compte a &Sun Online:</translation> </message> <message> <source>&E-mail:</source> - <translation>Corr&eu:</translation> + <translation type="obsolete">Corr&eu:</translation> </message> <message> <source>&Password:</source> - <translation>&Contrasenya:</translation> + <translation type="obsolete">&Contrasenya:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Vull &registrar-me creant un nou compte a Sun Online:</translation> + <translation type="obsolete">Vull &registrar-me creant un nou compte a Sun Online:</translation> </message> <message> <source>&First Name:</source> - <translation>&Nom:</translation> + <translation type="obsolete">&Nom:</translation> </message> <message> <source>&Last Name:</source> - <translation>&Cognoms:</translation> + <translation type="obsolete">&Cognoms:</translation> </message> <message> <source>&Company:</source> - <translation>C&ompanyia:</translation> + <translation type="obsolete">C&ompanyia:</translation> </message> <message> <source>Co&untry:</source> - <translation>&PaÃs:</translation> + <translation type="obsolete">&PaÃs:</translation> </message> <message> <source>E-&mail:</source> - <translation>Corre&u:</translation> + <translation type="obsolete">Corre&u:</translation> </message> <message> <source>P&assword:</source> - <translation>Con&trasenya:</translation> + <translation type="obsolete">Con&trasenya:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Confirmeu la contrasen&ya:</translation> + <translation type="obsolete">Confirmeu la contrasen&ya:</translation> </message> <message> <source>&Register</source> - <translation>&Registra</translation> + <translation type="obsolete">&Registra</translation> </message> </context> <context> @@ -6672,7 +6660,7 @@ pas i connectar discos durs més avant, fent servir el dià leg de configuració <name>VBoxSettingsDialog</name> <message> <source><i>Select a settings category from the list on the left-hand side and move the mouse over a settings item to get more information</i>.</source> - <translation><i>Seleccioneu una categoria de parà metres en la llista de l'esquerra i deplaceu el ratolà sobre un element de la dreta per obtindre'n més informació<i>.</translation> + <translation><i>Seleccioneu una categoria de parà metres en la llista de l'esquerra i deplaceu el ratolà sobre un element de la dreta per obtindre'n més informació<i>.</translation> </message> <message> <source>On the <b>%1</b> page, %2</source> @@ -7021,32 +7009,24 @@ per accedir a ella des d'un sistema Linux. Esta caracterÃstica requereix G <source> (%n day(s) ago)</source> <translation type="obsolete"> <numerusform> (fa %n dia)</numerusform> - <numerusform> (fa %n dies)</numerusform> - <numerusform> (fa %n dies)</numerusform> </translation> </message> <message numerus="yes"> <source> (%n hour(s) ago)</source> <translation type="obsolete"> <numerusform> (fa %n hora)</numerusform> - <numerusform> (fa %n hores)</numerusform> - <numerusform> (fa %n hores)</numerusform> </translation> </message> <message numerus="yes"> <source> (%n minute(s) ago)</source> <translation type="obsolete"> <numerusform> (fa %n minut)</numerusform> - <numerusform> (fa %n minuts)</numerusform> - <numerusform> (fa %n minuts)</numerusform> </translation> </message> <message numerus="yes"> <source> (%n second(s) ago)</source> <translation type="obsolete"> <numerusform> (fa %n segon)</numerusform> - <numerusform> (fa %n segons)</numerusform> - <numerusform> (fa %n segons)</numerusform> </translation> </message> <message> @@ -7119,8 +7099,6 @@ per accedir a ella des d'un sistema Linux. Esta caracterÃstica requereix G <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> <translation> <numerusform>AvÃs: esteu fent una captura d'una mà quina que té %n imatge immutable connectada. Mentre treballeu amb esta captura, la imatge immutable no es reiniciarà per evitar la pèrdua de dades.</numerusform> - <numerusform>AvÃs: esteu fent una captura d'una mà quina que té %n imatge immutables connectades. Mentre treballeu amb esta captura, les imatges immutables no es reiniciaran per evitar la pèrdua de dades.</numerusform> - <numerusform>AvÃs: esteu fent una captura d'una mà quina que té %n imatge immutables connectades. Mentre treballeu amb esta captura, les imatges immutables no es reiniciaran per evitar la pèrdua de dades.</numerusform> </translation> </message> </context> @@ -8140,7 +8118,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Controls the audio output driver. The <b>Null Audio Driver</b> makes the guest see an audio card, however every access to it will be ignored.</source> - <translation>Gestiona el controlador d'eixida de so. El <b>controlador d'à udio Nul</b> fa que el client veja una tarjeta de so, però l'accés a ella s'ignorarà .</translation> + <translation>Gestiona el controlador d'eixida de so. El <b>controlador d'à udio Nul</b> fa que el client veja una tarjeta de so, però l'accés a ella s'ignorarà .</translation> </message> <message> <source>Audio &Controller:</source> @@ -8506,7 +8484,7 @@ p, li { white-space: pre-wrap; } </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">Mostra la ruta on les captures d'esta mà quina virtual s'alçaran. Tingueu en compte que les captures poden ocupar prou quantitat d'espai al disc dur.</translation> + <translation type="obsolete">Mostra la ruta on les captures d'esta mà quina virtual s'alçaran. Tingueu en compte que les captures poden ocupar prou quantitat d'espai al disc dur.</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> @@ -8602,7 +8580,7 @@ p, li { white-space: pre-wrap; } </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">Si està marcat, qualsevol canvi al CD/DVD o disquet muntat s'alçarà al fitxer de configuració per tal de preservar la configuració dels suports muntats entre cada execució de la mà quina virtual.</translation> + <translation type="obsolete">Si està marcat, qualsevol canvi al CD/DVD o disquet muntat s'alçarà al fitxer de configuració per tal de preservar la configuració dels suports muntats entre cada execució de la mà quina virtual.</translation> </message> <message> <source>&Image File</source> @@ -8786,7 +8764,7 @@ p, li { white-space: pre-wrap; } <message> <source><qt>Controls the audio output driver. The <b>Null Audio Driver</b> makes the guest see an audio card, however every access to it will be ignored.</qt></source> - <translation type="obsolete"><qt>Gestiona el controlador d'eixida de so. El <b>controlador d'à udio Nul</b> + <translation type="obsolete"><qt>Gestiona el controlador d'eixida de so. El <b>controlador d'à udio Nul</b> fa que el client veja una tarjeta de so, però l'accés a ella s'ignorarà .</qt></translation> </message> <message> @@ -9313,7 +9291,7 @@ al sistema amfitrió.</qt></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>Mostra la ruta on les captures d'esta mà quina virtual s'alçaran. Tingueu en compte que les captures poden ocupar prou quantitat d'espai al disc dur.</translation> + <translation>Mostra la ruta on les captures d'esta mà quina virtual s'alçaran. Tingueu en compte que les captures poden ocupar prou quantitat d'espai al disc dur.</translation> </message> <message> <source>&Basic</source> @@ -9477,7 +9455,7 @@ al sistema amfitrió.</qt></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>Si està marcat, qualsevol canvi al CD/DVD o disquet muntat s'alçarà al fitxer de configuració per tal de preservar la configuració dels suports muntats entre cada execució de la mà quina virtual.</translation> + <translation>Si està marcat, qualsevol canvi al CD/DVD o disquet muntat s'alçarà al fitxer de configuració per tal de preservar la configuració dels suports muntats entre cada execució de la mà quina virtual.</translation> </message> <message> <source>&Remember Mounted Media</source> @@ -9529,7 +9507,7 @@ al sistema amfitrió.</qt></translation> </message> <message> <source>If checked, show the Mini ToolBar at the top of the screen, rather than in its default position at the bottom of the screen.</source> - <translation>Si està marcat, mostra una barra d'eines petita a la part de dalt de la pantalla en lloc d'a la posició per defecte a la part de sota.</translation> + <translation>Si està marcat, mostra una barra d'eines petita a la part de dalt de la pantalla en lloc d'a la posició per defecte a la part de sota.</translation> </message> <message> <source>Show At &Top Of Screen</source> @@ -9600,7 +9578,7 @@ al sistema amfitrió.</qt></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>Si està marcat, mostrarà de forma diferenciada els discos durs connectats a les ranures en lloc d'als discos durs base (mostrat en cas d'adjuncions indirectes), a més permetrà connectar altres discos durs explÃcitament. Marqueu això només si necessiteu una configuració complexa del disc dur.</translation> + <translation>Si està marcat, mostrarà de forma diferenciada els discos durs connectats a les ranures en lloc d'als discos durs base (mostrat en cas d'adjuncions indirectes), a més permetrà connectar altres discos durs explÃcitament. Marqueu això només si necessiteu una configuració complexa del disc dur.</translation> </message> <message> <source>&Show Differencing Hard Disks</source> @@ -10513,7 +10491,7 @@ al sistema amfitrió.</qt></translation> <translation>&Processador(s):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Controla el nombre de CPUs virtuals a la mà quina virtual.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts index 3ce076e1b..066452431 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Radek Vybiral, Jan Kalab <pitel@nomi.cz>, Jan Lipovsky, Ondrej Karlik</translation> + <translation type="obsolete">Radek Vybiral, Jan Kalab <pitel@nomi.cz>, Jan Lipovsky, Ondrej Karlik</translation> </message> </context> <context> @@ -1994,7 +1994,7 @@ p, li { white-space: pre-wrap; } <translation>Zobrazit &ikonu v oznamovacà oblasti</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>&Automaticky zobrazit ikonu a nástrojovou liÅ¡tu v celoobrazovkovém režimu</translation> </message> </context> @@ -5898,7 +5898,7 @@ krok a pÅ™ipojit pevné disky pozdÄ›ji použitÃm dialogu Nastavenà VM.</p&g <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>RegistraÄnà dialog VirtualBoxu</translation> + <translation type="obsolete">RegistraÄnà dialog VirtualBoxu</translation> </message> <message> <source><p>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.</p><p>Enter your full name using Latin characters and your e-mail address to the fields below. Please note that innotek will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, innotek will never pass your data to third parties. Detailed information about how we use your personal data can be found in the <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -5910,11 +5910,11 @@ krok a pÅ™ipojit pevné disky pozdÄ›ji použitÃm dialogu Nastavenà VM.</p&g </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Vložte vaÅ¡e celé jméno v latinské abecedÄ›.</translation> + <translation type="obsolete">Vložte vaÅ¡e celé jméno v latinské abecedÄ›.</translation> </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Vložte vaÅ¡i platnou e-mailovou adresu.</translation> + <translation type="obsolete">Vložte vaÅ¡i platnou e-mailovou adresu.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -5926,7 +5926,7 @@ krok a pÅ™ipojit pevné disky pozdÄ›ji použitÃm dialogu Nastavenà VM.</p&g </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>VÃtejte ve formuláři registrace VirtualBoxu!</translation> + <translation type="obsolete">VÃtejte ve formuláři registrace VirtualBoxu!</translation> </message> <message> <source>&Confirm</source> @@ -5942,7 +5942,7 @@ krok a pÅ™ipojit pevné disky pozdÄ›ji použitÃm dialogu Nastavenà VM.</p&g </message> <message> <source>Could not perform connection handshake.</source> - <translation>Nelze provést prvotnà spojenÃ.</translation> + <translation type="obsolete">Nelze provést prvotnà spojenÃ.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -5958,63 +5958,63 @@ krok a pÅ™ipojit pevné disky pozdÄ›ji použitÃm dialogu Nastavenà VM.</p&g </message> <message> <source>Cancel</source> - <translation>ZruÅ¡it</translation> + <translation type="obsolete">ZruÅ¡it</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Vyberte zemi/teritorium</translation> + <translation type="obsolete">Vyberte zemi/teritorium</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>ProsÃme vyplňte registraÄnà formulář a dejte nám vÄ›dÄ›t že použÃváte VirtualBox a, volitelnÄ›, budete informováni o novinkách a aktualizacÃch VirtualBoxu.</p><p>Vložte vaÅ¡e celé jméno pomocà latinské abecedy a váš e-mail do polÃÄka nÞe. VÄ›zte že Sun Microsystems použije tyto informace pouze zÃskávánà statistik o použÃvánà produktu a pro odesÃlánà novinek o Virtualboxu. Sun Microsystems nikdy nepÅ™edá vaÅ¡e data tÅ™etÃm stranám. Detailnà informace o tom, jak použÃváme vaÅ¡e osobnà data můlžete nalézt v sekci <b>Privacy Policy</b> manuálu VirtualBoxu, nebo na webové stránce <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> VirtualBoxu.</p></translation> + <translation type="obsolete"><p>ProsÃme vyplňte registraÄnà formulář a dejte nám vÄ›dÄ›t že použÃváte VirtualBox a, volitelnÄ›, budete informováni o novinkách a aktualizacÃch VirtualBoxu.</p><p>Vložte vaÅ¡e celé jméno pomocà latinské abecedy a váš e-mail do polÃÄka nÞe. VÄ›zte že Sun Microsystems použije tyto informace pouze zÃskávánà statistik o použÃvánà produktu a pro odesÃlánà novinek o Virtualboxu. Sun Microsystems nikdy nepÅ™edá vaÅ¡e data tÅ™etÃm stranám. Detailnà informace o tom, jak použÃváme vaÅ¡e osobnà data můlžete nalézt v sekci <b>Privacy Policy</b> manuálu VirtualBoxu, nebo na webové stránce <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> VirtualBoxu.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>Již &mám úÄet na Sun Online:</translation> + <translation type="obsolete">Již &mám úÄet na Sun Online:</translation> </message> <message> <source>&E-mail:</source> - <translation>E-&mail:</translation> + <translation type="obsolete">E-&mail:</translation> </message> <message> <source>&Password:</source> - <translation>&Heslo:</translation> + <translation type="obsolete">&Heslo:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Chci se re&gistrovat a vytvoÅ™it nový úÄet na Sun Online:</translation> + <translation type="obsolete">Chci se re&gistrovat a vytvoÅ™it nový úÄet na Sun Online:</translation> </message> <message> <source>&First Name:</source> - <translation>&KÅ™estnà jméno:</translation> + <translation type="obsolete">&KÅ™estnà jméno:</translation> </message> <message> <source>&Last Name:</source> - <translation>PÅ™Ã&jmenÃ:</translation> + <translation type="obsolete">PÅ™Ã&jmenÃ:</translation> </message> <message> <source>&Company:</source> - <translation>&Firma:</translation> + <translation type="obsolete">&Firma:</translation> </message> <message> <source>Co&untry:</source> - <translation>&ZemÄ›:</translation> + <translation type="obsolete">&ZemÄ›:</translation> </message> <message> <source>E-&mail:</source> - <translation>E-&mail:</translation> + <translation type="obsolete">E-&mail:</translation> </message> <message> <source>P&assword:</source> - <translation>H&eslo:</translation> + <translation type="obsolete">H&eslo:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Po&tvrdit heslo:</translation> + <translation type="obsolete">Po&tvrdit heslo:</translation> </message> <message> <source>&Register</source> - <translation>&Registrovat</translation> + <translation type="obsolete">&Registrovat</translation> </message> </context> <context> @@ -9696,7 +9696,7 @@ ukáže hostovanému OS zvukovou kartu, ale každý pÅ™Ãstup bude ignorován.&l <translation>Pro&cessor(y):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Nastavenà poÄtu virtuálnÃch CPU pro tento virtuálnà poÄÃtaÄ.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts index 6735fa8cf..04770d3c7 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Lars Sarauw Hansen, Jeppe Fihl Toustrup</translation> + <translation type="obsolete">Lars Sarauw Hansen, Jeppe Fihl Toustrup</translation> </message> </context> <context> @@ -1379,7 +1379,7 @@ p, li { white-space: pre-wrap; } <translation>&Dock-ikon viser indhold af VM</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>&Automatisk visning af Dok && Menubjælke i fuldskærm</translation> </message> </context> @@ -4469,83 +4469,83 @@ p, li { white-space: pre-wrap; } <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>Registrering af VirtualBox</translation> + <translation type="obsolete">Registrering af VirtualBox</translation> </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Indtast dit navn.</translation> + <translation type="obsolete">Indtast dit navn.</translation> </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Indtast din email-adresse.</translation> + <translation type="obsolete">Indtast din email-adresse.</translation> </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Velkommen til Registrering af VirtualBox!</translation> + <translation type="obsolete">Velkommen til Registrering af VirtualBox!</translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>Kunne ikke udføre forhandling af forbindelse.</translation> + <translation type="obsolete">Kunne ikke udføre forhandling af forbindelse.</translation> </message> <message> <source>Cancel</source> - <translation>Annullér</translation> + <translation type="obsolete">Annullér</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Vælg land/omrÃ¥de</translation> + <translation type="obsolete">Vælg land/omrÃ¥de</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Udfyld venligst denne registreringsformular for at lade os vide at du bruger VirtualBox og, hvis du ønsker det, sÃ¥ vi kan holde dig underrettet om VirtualBox-nyheder og opdateringer.</p><p>Brug latinske bogstaver i nedenstÃ¥ende felter. Vær opmærksom pÃ¥ at Sun Microsystems kun bruger denne information til at indsamle brugsstatistik og til at sende dig nyhedsbreve om VirtualBox. Sun Microsystems vil aldrig overgive dine data til tredjepart. Detaljeret information om hvad vi bruger dine personlige data til, kan findes i afsnittet <b>Privacy Policy</b> i VirtualBox' manual eller under <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> pÃ¥ VirtualBox' hjemmeside.</p></translation> + <translation type="obsolete"><p>Udfyld venligst denne registreringsformular for at lade os vide at du bruger VirtualBox og, hvis du ønsker det, sÃ¥ vi kan holde dig underrettet om VirtualBox-nyheder og opdateringer.</p><p>Brug latinske bogstaver i nedenstÃ¥ende felter. Vær opmærksom pÃ¥ at Sun Microsystems kun bruger denne information til at indsamle brugsstatistik og til at sende dig nyhedsbreve om VirtualBox. Sun Microsystems vil aldrig overgive dine data til tredjepart. Detaljeret information om hvad vi bruger dine personlige data til, kan findes i afsnittet <b>Privacy Policy</b> i VirtualBox' manual eller under <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> pÃ¥ VirtualBox' hjemmeside.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>Jeg &har allerede en Sun Online konto:</translation> + <translation type="obsolete">Jeg &har allerede en Sun Online konto:</translation> </message> <message> <source>&E-mail:</source> - <translation>&E-mail:</translation> + <translation type="obsolete">&E-mail:</translation> </message> <message> <source>&Password:</source> - <translation>Kodeord:</translation> + <translation type="obsolete">Kodeord:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Jeg vil gerne oprette en Sun Online konto:</translation> + <translation type="obsolete">Jeg vil gerne oprette en Sun Online konto:</translation> </message> <message> <source>&First Name:</source> - <translation>&Fornavn:</translation> + <translation type="obsolete">&Fornavn:</translation> </message> <message> <source>&Last Name:</source> - <translation>Efternavn:</translation> + <translation type="obsolete">Efternavn:</translation> </message> <message> <source>&Company:</source> - <translation>Firma:</translation> + <translation type="obsolete">Firma:</translation> </message> <message> <source>Co&untry:</source> - <translation>Land:</translation> + <translation type="obsolete">Land:</translation> </message> <message> <source>E-&mail:</source> - <translation>E-&mail:</translation> + <translation type="obsolete">E-&mail:</translation> </message> <message> <source>P&assword:</source> - <translation>Kodeord:</translation> + <translation type="obsolete">Kodeord:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Ge&ntag kodeord:</translation> + <translation type="obsolete">Ge&ntag kodeord:</translation> </message> <message> <source>&Register</source> - <translation>&Registrér</translation> + <translation type="obsolete">&Registrér</translation> </message> </context> <context> @@ -6655,7 +6655,7 @@ p, li { white-space: pre-wrap; } <translation>C&PU'er:</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Angiver antallet af virtuelle CPU'er i den virtuelle maskine.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts index a4a5c337e..59a40ace4 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Sun Microsystems, Inc.</translation> + <translation type="obsolete">Sun Microsystems, Inc.</translation> </message> </context> <context> @@ -1196,8 +1196,8 @@ p, li { white-space: pre-wrap; } <translation>Echtzeit-Vorschau im &Dock-Icon</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> - <translation>&Automatisch zeige Dock && Menubar im Fullscreen-Modus</translation> + <source>&Auto show Dock and Menubar in fullscreen</source> + <translation>&Automatische Anzeige von Dock und Menübar im Vollbildmodus</translation> </message> </context> <context> @@ -2902,7 +2902,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Exit Full Screen or Seamless Mode</source> - <translation>Vollbild / seamless-Modus verlassen</translation> + <translation>Vollbild-/Seamless-Modus verlassen</translation> </message> <message> <source>Close VM</source> @@ -4069,83 +4069,83 @@ p, li { white-space: pre-wrap; } <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>VirtualBox registrieren</translation> + <translation type="obsolete">VirtualBox registrieren</translation> </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Geben Sie hier Ihren vollen Namen in lateinischen Buchstaben ein.</translation> + <translation type="obsolete">Geben Sie hier Ihren vollen Namen in lateinischen Buchstaben ein.</translation> </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Tragen Sie hier eine gültige EMail-Adresse ein.</translation> + <translation type="obsolete">Tragen Sie hier eine gültige EMail-Adresse ein.</translation> </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>VirtualBox registrieren</translation> + <translation type="obsolete">VirtualBox registrieren</translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>Der Server lieferte nicht die erwarteten Daten als Antwort.</translation> + <translation type="obsolete">Der Server lieferte nicht die erwarteten Daten als Antwort.</translation> </message> <message> <source>Cancel</source> - <translation>Abbrechen</translation> + <translation type="obsolete">Abbrechen</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Bitte füllen Sie dieses Formular aus, damit wir wissen, dass Sie VirtualBox benutzen. Außerdem möchten wir Sie gern über Updates sowie über Neuigkeiten rund um VirtualBox informieren.<p><p>Bitte benutzen Sie möglichst lateinische Buchstaben. Sun Microsystems wird diese Daten nur benutzen, um Nutzerstatistiken von VirtualBox zu erstellen und um Ihnen optional Informationen zu VirtualBox zu senden. Insbesondere wird Sun Microsystems Ihre persönlichen Daten niemals an Dritte weitergeben. Detaillierte Informationen über die Nutzung Ihrer persönlichen Daten können Sie im Abschnitt <b>Privacy Policy</b> des Handbuchs oder unter <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> auf der VirtualBox-Webseite nachlesen.</p></translation> + <translation type="obsolete"><p>Bitte füllen Sie dieses Formular aus, damit wir wissen, dass Sie VirtualBox benutzen. Außerdem möchten wir Sie gern über Updates sowie über Neuigkeiten rund um VirtualBox informieren.<p><p>Bitte benutzen Sie möglichst lateinische Buchstaben. Sun Microsystems wird diese Daten nur benutzen, um Nutzerstatistiken von VirtualBox zu erstellen und um Ihnen optional Informationen zu VirtualBox zu senden. Insbesondere wird Sun Microsystems Ihre persönlichen Daten niemals an Dritte weitergeben. Detaillierte Informationen über die Nutzung Ihrer persönlichen Daten können Sie im Abschnitt <b>Privacy Policy</b> des Handbuchs oder unter <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> auf der VirtualBox-Webseite nachlesen.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>Ich &besitze bereits einen Sun-Online-Account:</translation> + <translation type="obsolete">Ich &besitze bereits einen Sun-Online-Account:</translation> </message> <message> <source>&E-mail:</source> - <translation>&E-mail:</translation> + <translation type="obsolete">&E-mail:</translation> </message> <message> <source>&Password:</source> - <translation>&Passwort:</translation> + <translation type="obsolete">&Passwort:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Ich &möchte einen neuen Sun-Account für die Registrierung erzeugen:</translation> + <translation type="obsolete">Ich &möchte einen neuen Sun-Account für die Registrierung erzeugen:</translation> </message> <message> <source>&First Name:</source> - <translation>&Vorname:</translation> + <translation type="obsolete">&Vorname:</translation> </message> <message> <source>&Last Name:</source> - <translation>&Nachname:</translation> + <translation type="obsolete">&Nachname:</translation> </message> <message> <source>&Company:</source> - <translation>&Firma:</translation> + <translation type="obsolete">&Firma:</translation> </message> <message> <source>Co&untry:</source> - <translation>&Land:</translation> + <translation type="obsolete">&Land:</translation> </message> <message> <source>E-&mail:</source> - <translation>E-&mail:</translation> + <translation type="obsolete">E-&mail:</translation> </message> <message> <source>P&assword:</source> - <translation>P&asswort:</translation> + <translation type="obsolete">P&asswort:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Pa&sswort bestätigen:</translation> + <translation type="obsolete">Pa&sswort bestätigen:</translation> </message> <message> <source>&Register</source> - <translation>&Registrieren</translation> + <translation type="obsolete">&Registrieren</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Wählen Sie das Land/Gebiet</translation> + <translation type="obsolete">Wählen Sie das Land/Gebiet</translation> </message> </context> <context> @@ -5142,7 +5142,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Storage</source> - <translation>Plattenspeicher</translation> + <translation>Massenspeicher</translation> </message> <message> <source>Hard Disks</source> @@ -5198,7 +5198,7 @@ p, li { white-space: pre-wrap; } </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>haben Sie ein 64-Bit-Gastbestriebssystem ausgewählt. Da solche Gäste Hardwarevirtualisierung benötigen (VT-x/AMD-V), wird diese VM-Einstellung automatisch aktiviert.</translation> + <translation>haben Sie ein 64-Bit-Gastbestriebssystem ausgewählt. Da solche Gäste Hardware-Virtualisierung benötigen (VT-x/AMD-V), wird diese VM-Einstellung automatisch aktiviert.</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> @@ -5277,7 +5277,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Show In &Fullscreen/Seamless</source> - <translation>Zeige im &Fullscreen/Seamless-Modus</translation> + <translation>Zeige im &Vollbild-/Seamless-Modus</translation> </message> <message> <source>If checked, show the Mini ToolBar at the top of the screen, rather than in its default position at the bottom of the screen.</source> @@ -5923,8 +5923,8 @@ p, li { white-space: pre-wrap; } <translation>&Prozessoren:</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> - <translation>Legt die Anzahld er virtuellen CPUs dieser VM fest.</translation> + <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>Legt die Anzahld der virtuellen CPUs dieser VM fest. Der Host muss Hardware-Virtualisierung unterstützen, falls mehr als eine virtuelle CPU emuliert werden soll.</translation> </message> <message> <source>When checked, the Physical Address Extension (PAE) feature of the host CPU will be exposed to the virtual machine.</source> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts index caaecccfb..793cbf5ec 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation type="unfinished">Spiros Vlachos</translation> + <translation type="obsolete">Spiros Vlachos</translation> </message> </context> <context> @@ -1190,7 +1190,7 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation type="unfinished"></translation> </message> </context> @@ -4002,89 +4002,6 @@ p, li { white-space: pre-wrap; } </message> </context> <context> - <name>VBoxRegistrationDlg</name> - <message> - <source>VirtualBox Registration Dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Enter your full name using Latin characters.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Enter your e-mail address. Please use a valid address here.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Welcome to the VirtualBox Registration Form!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Could not perform connection handshake.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Select Country/Territory</source> - <translation type="unfinished"></translation> - </message> - <message> - <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &already have a Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&E-mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &would like to create a new Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&First Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Last Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Company:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&untry:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>E-&mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>P&assword:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&nfirm Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Register</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>VBoxSFDialog</name> <message> <source>Shared Folders</source> @@ -5831,7 +5748,7 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_en.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_en.ts index 72556caac..6ec91d257 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_en.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_en.ts @@ -4,7 +4,7 @@ <context> <name>VBoxGlobal</name> <message numerus="yes"> - <location filename="../include/VBoxGlobal.h" line="350"/> + <location filename="../src/globals/VBoxGlobal.h" line="362"/> <source>%n year(s)</source> <translation> <numerusform>%n year</numerusform> @@ -12,7 +12,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../include/VBoxGlobal.h" line="355"/> + <location filename="../src/globals/VBoxGlobal.h" line="367"/> <source>%n month(s)</source> <translation> <numerusform>%n month</numerusform> @@ -20,7 +20,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../include/VBoxGlobal.h" line="360"/> + <location filename="../src/globals/VBoxGlobal.h" line="372"/> <source>%n day(s)</source> <translation> <numerusform>%n day</numerusform> @@ -28,7 +28,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../include/VBoxGlobal.h" line="365"/> + <location filename="../src/globals/VBoxGlobal.h" line="377"/> <source>%n hour(s)</source> <translation> <numerusform>%n hour</numerusform> @@ -36,7 +36,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../include/VBoxGlobal.h" line="375"/> + <location filename="../src/globals/VBoxGlobal.h" line="387"/> <source>%n second(s)</source> <translation> <numerusform>%n second</numerusform> @@ -44,7 +44,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../include/VBoxGlobal.h" line="370"/> + <location filename="../src/globals/VBoxGlobal.h" line="382"/> <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 9ddb05ff3..cc1a6f001 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Joaquin Duo, David González</translation> + <translation type="obsolete">Joaquin Duo, David González</translation> </message> </context> <context> @@ -2150,7 +2150,7 @@ p, li { white-space: pre-wrap; } <translation>&Mostrar icono en el área de notificación</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>&Automostrar Dock && Barra de menú a pantalla completa</translation> </message> </context> @@ -6364,7 +6364,7 @@ este paso y luego conectar los Discos Duros desde el diálogo de Configuración <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>Diálogo de Registro de VirtualBox</translation> + <translation type="obsolete">Diálogo de Registro de VirtualBox</translation> </message> <message> <source><p>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.</p><p>Enter your full name using Latin characters and your e-mail address to the fields below. Please note that innotek will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, innotek will never pass your data to third parties. Detailed information about how we use your personal data can be found in the <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6376,7 +6376,7 @@ este paso y luego conectar los Discos Duros desde el diálogo de Configuración </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Ingrese su nombre completo usando caracteres latinos.</translation> + <translation type="obsolete">Ingrese su nombre completo usando caracteres latinos.</translation> </message> <message> <source>&E-mail</source> @@ -6384,7 +6384,7 @@ este paso y luego conectar los Discos Duros desde el diálogo de Configuración </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Ingrese su dirección de e-mail válida.</translation> + <translation type="obsolete">Ingrese su dirección de e-mail válida.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -6396,7 +6396,7 @@ este paso y luego conectar los Discos Duros desde el diálogo de Configuración </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>¡Bienvenido al Formularion de Registro de VirtualBox!</translation> + <translation type="obsolete">¡Bienvenido al Formularion de Registro de VirtualBox!</translation> </message> <message> <source>&Confirm</source> @@ -6412,7 +6412,7 @@ este paso y luego conectar los Discos Duros desde el diálogo de Configuración </message> <message> <source>Could not perform connection handshake.</source> - <translation>No se pudo llevar a cabo la negociación de conexión.</translation> + <translation type="obsolete">No se pudo llevar a cabo la negociación de conexión.</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> @@ -6420,63 +6420,63 @@ este paso y luego conectar los Discos Duros desde el diálogo de Configuración </message> <message> <source>Cancel</source> - <translation>Cancelar</translation> + <translation type="obsolete">Cancelar</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Seleccionar paÃs/territorio</translation> + <translation type="obsolete">Seleccionar paÃs/territorio</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Por favor, rellene este formulario para informarnos que usa VirtualBox. Opcionalmente puede elegir recibir noticias y actualizaciones.</p><p> Use caracteres latinos para rellenar los siguientes campos. Sun Microsystems sólo usará esta información para recolectar estadÃsticas de uso y para enviarle boletines de noticias. En particular, Sun Microsystems nunca proporcionará sus datos a terceros. Puede leer información más detalla de cómo usamos su información en la sección <p>Privacy Policy</p> del manual de VirtualBox o en la página web <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> del sitio de VirtualBox.</p></translation> + <translation type="obsolete"><p>Por favor, rellene este formulario para informarnos que usa VirtualBox. Opcionalmente puede elegir recibir noticias y actualizaciones.</p><p> Use caracteres latinos para rellenar los siguientes campos. Sun Microsystems sólo usará esta información para recolectar estadÃsticas de uso y para enviarle boletines de noticias. En particular, Sun Microsystems nunca proporcionará sus datos a terceros. Puede leer información más detalla de cómo usamos su información en la sección <p>Privacy Policy</p> del manual de VirtualBox o en la página web <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> del sitio de VirtualBox.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>Ya &tengo una cuenta en linea de Sun:</translation> + <translation type="obsolete">Ya &tengo una cuenta en linea de Sun:</translation> </message> <message> <source>&E-mail:</source> - <translation>Correo-&e:</translation> + <translation type="obsolete">Correo-&e:</translation> </message> <message> <source>&Password:</source> - <translation>&Contraseña:</translation> + <translation type="obsolete">&Contraseña:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>&Registrar creando una cuenta en linea de Sun:</translation> + <translation type="obsolete">&Registrar creando una cuenta en linea de Sun:</translation> </message> <message> <source>&First Name:</source> - <translation>&Nombre:</translation> + <translation type="obsolete">&Nombre:</translation> </message> <message> <source>&Last Name:</source> - <translation>&Apellido(s):</translation> + <translation type="obsolete">&Apellido(s):</translation> </message> <message> <source>&Company:</source> - <translation>Compa&ñÃa:</translation> + <translation type="obsolete">Compa&ñÃa:</translation> </message> <message> <source>Co&untry:</source> - <translation>&PaÃs:</translation> + <translation type="obsolete">&PaÃs:</translation> </message> <message> <source>E-&mail:</source> - <translation>Correo-&e:</translation> + <translation type="obsolete">Correo-&e:</translation> </message> <message> <source>P&assword:</source> - <translation>&Contraseña:</translation> + <translation type="obsolete">&Contraseña:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Co&nfirmar contraseña:</translation> + <translation type="obsolete">Co&nfirmar contraseña:</translation> </message> <message> <source>&Register</source> - <translation>&Registrar</translation> + <translation type="obsolete">&Registrar</translation> </message> </context> <context> @@ -10499,7 +10499,7 @@ makes the guest see an audio card, however every access to it will be ignored.&l <translation>&Procesador(es):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Controla el número de procesadores virtuales en la máquina virtual.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts index 271a17cf5..af8dd6a54 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Piarres Beobide</translation> + <translation type="obsolete">Piarres Beobide</translation> </message> </context> <context> @@ -1881,7 +1881,7 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation type="unfinished"></translation> </message> </context> @@ -3132,7 +3132,7 @@ p, li { white-space: pre-wrap; } <message> <source><nobr>%1 MB</nobr></source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><nobr>%4 MB</nobr> {1 ?}</translation> </message> <message> <source>Processor(s)</source> @@ -5615,88 +5615,12 @@ gogorrak erantsi ditzakezu.</p></translation> <context> <name>VBoxRegistrationDlg</name> <message> - <source>VirtualBox Registration Dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Enter your full name using Latin characters.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Enter your e-mail address. Please use a valid address here.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Welcome to the VirtualBox Registration Form!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>Connection timed out.</source> <translation type="obsolete">Konexioa denboraz kanpo.</translation> </message> <message> - <source>Could not perform connection handshake.</source> - <translation type="unfinished"></translation> - </message> - <message> <source>Cancel</source> - <translation type="unfinished">Utzi</translation> - </message> - <message> - <source>Select Country/Territory</source> - <translation type="unfinished"></translation> - </message> - <message> - <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &already have a Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&E-mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &would like to create a new Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&First Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Last Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Company:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&untry:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>E-&mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>P&assword:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&nfirm Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Register</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Utzi</translation> </message> </context> <context> @@ -9213,7 +9137,7 @@ bezeroak audio txartela ikustea eragiten du baina sortzen duen edozein irteera b <translation type="unfinished"></translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts index 043edcd32..c46218eaa 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Jarno Kiuttu, Timo Jyrinki, Ilkka Tuohela</translation> + <translation type="obsolete">Jarno Kiuttu, Timo Jyrinki, Ilkka Tuohela</translation> </message> </context> <context> @@ -1868,7 +1868,7 @@ p, li { white-space: pre-wrap; } <translation>&Näytä ilmoitusalueen kuvake</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation type="unfinished"></translation> </message> </context> @@ -3187,7 +3187,7 @@ p, li { white-space: pre-wrap; } <message> <source><nobr>%1 MB</nobr></source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><nobr>%4 MB</nobr> {1 ?}</translation> </message> <message> <source>Processor(s)</source> @@ -5566,7 +5566,7 @@ Kaikki VirtualBoxin komponentit käyttävät sitä koneen tunnistukseen.</p&g <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>VirtualBoxin rekisteröinti</translation> + <translation type="obsolete">VirtualBoxin rekisteröinti</translation> </message> <message> <source>&Name</source> @@ -5574,7 +5574,7 @@ Kaikki VirtualBoxin komponentit käyttävät sitä koneen tunnistukseen.</p&g </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Syötä nimesi ASCII-merkkejä käyttäen.</translation> + <translation type="obsolete">Syötä nimesi ASCII-merkkejä käyttäen.</translation> </message> <message> <source>&E-mail</source> @@ -5582,7 +5582,7 @@ Kaikki VirtualBoxin komponentit käyttävät sitä koneen tunnistukseen.</p&g </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Syötä kelvollinen sähköpostiosoite.</translation> + <translation type="obsolete">Syötä kelvollinen sähköpostiosoite.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -5590,11 +5590,11 @@ Kaikki VirtualBoxin komponentit käyttävät sitä koneen tunnistukseen.</p&g </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Tervetuloa VirtualBoxin rekisteröintiin!</translation> + <translation type="obsolete">Tervetuloa VirtualBoxin rekisteröintiin!</translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>Yhteyden kättely ei onnistunut.</translation> + <translation type="obsolete">Yhteyden kättely ei onnistunut.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -5610,63 +5610,7 @@ Kaikki VirtualBoxin komponentit käyttävät sitä koneen tunnistukseen.</p&g </message> <message> <source>Cancel</source> - <translation>Peru</translation> - </message> - <message> - <source>Select Country/Territory</source> - <translation type="unfinished"></translation> - </message> - <message> - <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &already have a Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&E-mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &would like to create a new Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&First Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Last Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Company:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&untry:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>E-&mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>P&assword:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&nfirm Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Register</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Peru</translation> </message> </context> <context> @@ -9203,7 +9147,7 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts index 823997456..5b2f83e61 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Jean-Jacques Sarton, Sun Microsystems, Inc.</translation> + <translation type="obsolete">Jean-Jacques Sarton, Sun Microsystems, Inc.</translation> </message> </context> <context> @@ -1817,8 +1817,8 @@ p, li { white-space: pre-wrap; } <translation>&Icône Dock aperçu temps réel</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> - <translation type="unfinished"></translation> + <source>&Auto show Dock and Menubar in fullscreen</source> + <translation>Démasquer &automatiquement le Dock et la barre des menu en mode plein écran</translation> </message> </context> <context> @@ -3441,7 +3441,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>(CD/DVD)</source> - <translation type="unfinished"></translation> + <translation>(périphérique optique)</translation> </message> </context> <context> @@ -5450,7 +5450,7 @@ Pour que la souris soit capturée, cliquer dans la fenêtre de la machine virtue <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>Boîte de dialogue d'inscription VirtualBox</translation> + <translation type="obsolete">Boîte de dialogue d'inscription VirtualBox</translation> </message> <message> <source>&Name</source> @@ -5458,7 +5458,7 @@ Pour que la souris soit capturée, cliquer dans la fenêtre de la machine virtue </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Entrez votre nom complet en utilisant seulement les caractères latins.</translation> + <translation type="obsolete">Entrez votre nom complet en utilisant seulement les caractères latins.</translation> </message> <message> <source>&E-mail</source> @@ -5466,7 +5466,7 @@ Pour que la souris soit capturée, cliquer dans la fenêtre de la machine virtue </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Entrez votre adresse courriel. Prière dEntrez votre adresse courriel.apos;utiliser une adresse valide.</translation> + <translation type="obsolete">Entrez votre adresse courriel. Prière dEntrez votre adresse courriel.apos;utiliser une adresse valide.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -5474,7 +5474,7 @@ Pour que la souris soit capturée, cliquer dans la fenêtre de la machine virtue </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Bienvenue sur le formulaire d'inscription VirtualBox !</translation> + <translation type="obsolete">Bienvenue sur le formulaire d'inscription VirtualBox !</translation> </message> <message> <source>Connection timed out.</source> @@ -5486,7 +5486,7 @@ Pour que la souris soit capturée, cliquer dans la fenêtre de la machine virtue </message> <message> <source>Could not perform connection handshake.</source> - <translation>La négociation de la connexion a échoué.</translation> + <translation type="obsolete">La négociation de la connexion a échoué.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -5502,63 +5502,63 @@ Pour que la souris soit capturée, cliquer dans la fenêtre de la machine virtue </message> <message> <source>Cancel</source> - <translation>Annuler</translation> + <translation type="obsolete">Annuler</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Choisissez votre pays/territoire</translation> + <translation type="obsolete">Choisissez votre pays/territoire</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Veuillez remplir ce formulaire d'enregistrement pour nous dire que vous utilisez VirtualBox et, si vous le souhaitez, pour que nous vous gardions au courrent sur les nouveautés et les actualisations de VirtualBox.</p><p>Veuillez utiliser seulement les caractères latins pour remplir les champs ci-dessous. Nous soulignons que Sun Microsystems n'utilisera les informations que pour collectioner des statistiques d'utilisation sur le produit et pour vous envoyer les circulaires informatifs sur VirtualBox. En particulier, Sun Microsystems ne transmettra jamais vos données à de tiers partis. Vous trouverez des informations détaillés sur l'usage que nous font de vos données personnels dans le section <b>Politique de confidentialité</b> du manuel d'utilisation VirtualBox ou sur la page <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> du site toile VirtualBox.</p></translation> + <translation type="obsolete"><p>Veuillez remplir ce formulaire d'enregistrement pour nous dire que vous utilisez VirtualBox et, si vous le souhaitez, pour que nous vous gardions au courrent sur les nouveautés et les actualisations de VirtualBox.</p><p>Veuillez utiliser seulement les caractères latins pour remplir les champs ci-dessous. Nous soulignons que Sun Microsystems n'utilisera les informations que pour collectioner des statistiques d'utilisation sur le produit et pour vous envoyer les circulaires informatifs sur VirtualBox. En particulier, Sun Microsystems ne transmettra jamais vos données à de tiers partis. Vous trouverez des informations détaillés sur l'usage que nous font de vos données personnels dans le section <b>Politique de confidentialité</b> du manuel d'utilisation VirtualBox ou sur la page <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> du site toile VirtualBox.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>J'ai &déjà un compte Sun Online :</translation> + <translation type="obsolete">J'ai &déjà un compte Sun Online :</translation> </message> <message> <source>&E-mail:</source> - <translation>Courri&el :</translation> + <translation type="obsolete">Courri&el :</translation> </message> <message> <source>&Password:</source> - <translation>Mot de &passe :</translation> + <translation type="obsolete">Mot de &passe :</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>J'aimerais m'en&register et créer un nouveau compte Sun Online :</translation> + <translation type="obsolete">J'aimerais m'en&register et créer un nouveau compte Sun Online :</translation> </message> <message> <source>&First Name:</source> - <translation>&Prénom :</translation> + <translation type="obsolete">&Prénom :</translation> </message> <message> <source>&Last Name:</source> - <translation>&Nom :</translation> + <translation type="obsolete">&Nom :</translation> </message> <message> <source>&Company:</source> - <translation>&Société :</translation> + <translation type="obsolete">&Société :</translation> </message> <message> <source>Co&untry:</source> - <translation>Pa&ys :</translation> + <translation type="obsolete">Pa&ys :</translation> </message> <message> <source>E-&mail:</source> - <translation>Co&urriel :</translation> + <translation type="obsolete">Co&urriel :</translation> </message> <message> <source>P&assword:</source> - <translation>Mot de p&asse :</translation> + <translation type="obsolete">Mot de p&asse :</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Co&nfirmation du mot de passe :</translation> + <translation type="obsolete">Co&nfirmation du mot de passe :</translation> </message> <message> <source>&Register</source> - <translation>En&registrer</translation> + <translation type="obsolete">En&registrer</translation> </message> </context> <context> @@ -8244,7 +8244,7 @@ p, li { white-space: pre-wrap; } <translation>&Processeur(s):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Détermine le nombre de processeurs virtuels de la machine virtuelle.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts index 8fbf6b1ce..a49123dc4 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Oficina de Software Libre da USC, Enrique Estévez Fernández, Francisco Diéguez Souto, Mancomun, Antón Méixome.</translation> + <translation type="obsolete">Oficina de Software Libre da USC, Enrique Estévez Fernández, Francisco Diéguez Souto, Mancomun, Antón Méixome.</translation> </message> </context> <context> @@ -1372,7 +1372,7 @@ p, li { white-space: pre-wrap; } <translation>Previsualización en tempo real &da icona ancorada</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation type="unfinished"></translation> </message> </context> @@ -4403,83 +4403,83 @@ p, li { white-space: pre-wrap; } <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>Diálogo de rexistro de VirtualBox</translation> + <translation type="obsolete">Diálogo de rexistro de VirtualBox</translation> </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Insira o seu nome completo empregando caracteres latinos.</translation> + <translation type="obsolete">Insira o seu nome completo empregando caracteres latinos.</translation> </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Insira o seu enderezo de correo electrónico válido.</translation> + <translation type="obsolete">Insira o seu enderezo de correo electrónico válido.</translation> </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Benvida ao formulario de rexistro de VirtualBox!</translation> + <translation type="obsolete">Benvida ao formulario de rexistro de VirtualBox!</translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>Non foi posÃbel realizar a negociación da conexión.</translation> + <translation type="obsolete">Non foi posÃbel realizar a negociación da conexión.</translation> </message> <message> <source>Cancel</source> - <translation>Cancelar</translation> + <translation type="obsolete">Cancelar</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Seleccione paÃs/territorio</translation> + <translation type="obsolete">Seleccione paÃs/territorio</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Cubra este formulario de rexistro para permitirnos saber que emprega VirtualBox e, opcionalmente, telo informado sobre as novas e actualizacións de VirtualBox.</p><p>Empregue caracteres latinos para cubrir os campos de abaixo. Nota que Sun Microsystems soamente empregará esta información para obter estatÃsticas de uso do produto e para enviarlle boletÃns de novas. En particular, Sun Microsystems nunca pasará os seus datos a terceiros. Información detallada sobre como empregamos os seus datos persoais encóntrase na sección <b>PolÃtica de privacidade</b> do manual de VirtualBox ou no sitio web de VirtualBox na páxina <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a>.</p></translation> + <translation type="obsolete"><p>Cubra este formulario de rexistro para permitirnos saber que emprega VirtualBox e, opcionalmente, telo informado sobre as novas e actualizacións de VirtualBox.</p><p>Empregue caracteres latinos para cubrir os campos de abaixo. Nota que Sun Microsystems soamente empregará esta información para obter estatÃsticas de uso do produto e para enviarlle boletÃns de novas. En particular, Sun Microsystems nunca pasará os seus datos a terceiros. Información detallada sobre como empregamos os seus datos persoais encóntrase na sección <b>PolÃtica de privacidade</b> do manual de VirtualBox ou no sitio web de VirtualBox na páxina <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a>.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>Xa teño un&ha conta en liña de Sun:</translation> + <translation type="obsolete">Xa teño un&ha conta en liña de Sun:</translation> </message> <message> <source>&E-mail:</source> - <translation>Correo &electrónico:</translation> + <translation type="obsolete">Correo &electrónico:</translation> </message> <message> <source>&Password:</source> - <translation>&Contrasinal:</translation> + <translation type="obsolete">&Contrasinal:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>&GustarÃalle rexistrar a creación dunha nova conta de Sun en liña:</translation> + <translation type="obsolete">&GustarÃalle rexistrar a creación dunha nova conta de Sun en liña:</translation> </message> <message> <source>&First Name:</source> - <translation>No&me:</translation> + <translation type="obsolete">No&me:</translation> </message> <message> <source>&Last Name:</source> - <translation>Ape&lido:</translation> + <translation type="obsolete">Ape&lido:</translation> </message> <message> <source>&Company:</source> - <translation>&CompañÃa:</translation> + <translation type="obsolete">&CompañÃa:</translation> </message> <message> <source>Co&untry:</source> - <translation>PaÃ&s:</translation> + <translation type="obsolete">PaÃ&s:</translation> </message> <message> <source>E-&mail:</source> - <translation>Correo elec&trónico:</translation> + <translation type="obsolete">Correo elec&trónico:</translation> </message> <message> <source>P&assword:</source> - <translation>Contr&asinal:</translation> + <translation type="obsolete">Contr&asinal:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Co&nfirmar contrasinal:</translation> + <translation type="obsolete">Co&nfirmar contrasinal:</translation> </message> <message> <source>&Register</source> - <translation>&Rexistro</translation> + <translation type="obsolete">&Rexistro</translation> </message> </context> <context> @@ -6557,7 +6557,7 @@ p, li { white-space: pre-wrap; } <translation>&Procesador(es):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Controla o número de CPU virtuais na máquina virtual.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts index c811f640a..749b3a709 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>George Hron,Tom Evin</translation> + <translation type="obsolete">George Hron,Tom Evin</translation> </message> </context> <context> @@ -145,7 +145,8 @@ </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 type="unfinished"></translation> + <translatorcomment>CHECKIT</translatorcomment> + <translation>A kernel driver nem tudott elegendÅ‘ memóriát foglalni, vagy valamilyen memóriaművelet nem sikerült.</translation> </message> </context> <context> @@ -371,7 +372,7 @@ <name>QILabel</name> <message> <source>&Copy</source> - <translation type="unfinished">Má&solás</translation> + <translation>Má&solás</translation> </message> </context> <context> @@ -560,11 +561,11 @@ Verzió %1</translation> </message> <message> <source>Downloading the VirtualBox Guest Additions CD image from <nobr><b>%1</b>...</nobr></source> - <translation>A VirtualBox Guest Additions CD letöltése innen: <nobr><b>%1</b>...</nobr></translation> + <translation>A VirtualBox integrációs szolgáltatások CD letöltése innen: <nobr><b>%1</b>...</nobr></translation> </message> <message> <source>Cancel the VirtualBox Guest Additions CD image download</source> - <translation>A VirtualBox Guest Additions CD letöltésének megszakÃtása</translation> + <translation>A VirtualBox integrációs szolgáltatások CD letöltésének megszakÃtása</translation> </message> <message> <source><p>Failed to save the downloaded file as <nobr><b>%1</b>.</nobr></p></source> @@ -780,11 +781,11 @@ Verzió %1</translation> </message> <message> <source>Restore the machine state stored in the current snapshot</source> - <translation type="unfinished"></translation> + <translation>A gép állapotának visszaállÃtása az aktuális pillanatképbÅ‘l</translation> </message> <message> <source>&Restore current snapshot '%1'</source> - <translation type="unfinished"></translation> + <translation>Ezen &pillanatkép visszatöltése: '%1'</translation> </message> </context> <context> @@ -832,7 +833,7 @@ Verzió %1</translation> </message> <message> <source>Automatically resize the guest display when the window is resized (requires Guest Additions)</source> - <translation>Automatikusan átméretezi a vendég gép képernyÅ‘jét, ha az ablak mérete változik (Guest Additions szükséges)</translation> + <translation>Automatikusan átméretezi a vendég gép képernyÅ‘jét, ha az ablak mérete változik (az integrációs szolgáltatások telepÃtése szükséges)</translation> </message> <message> <source>&Adjust Window Size</source> @@ -925,7 +926,7 @@ Verzió %1</translation> <message> <source>Remote Desktop (RDP) Server</source> <comment>enable/disable...</comment> - <translation type="unfinished">RDP szerver</translation> + <translation>RDP szerver</translation> </message> <message> <source>Remote Dis&play</source> @@ -949,7 +950,7 @@ Verzió %1</translation> </message> <message> <source>&Install Guest Additions...</source> - <translation>Guest Add&itions telepÃtése...</translation> + <translation>&Integrációs szolgáltatások telepÃtése...</translation> </message> <message> <source>Mount the Guest Additions installation image</source> @@ -1354,91 +1355,91 @@ Verzió %1</translation> </message> <message> <source> EXPERIMENTAL build %1r%2 - %3</source> - <translation type="unfinished"></translation> + <translation> TESZTELÉS ALATTI verzió %1r%2 - %3</translation> </message> <message> <source>&CD/DVD Devices</source> - <translation type="unfinished"></translation> + <translation>&CD/DVD eszközök</translation> </message> <message> <source>&Floppy Devices</source> - <translation type="unfinished"></translation> + <translation>&Floppy</translation> </message> <message> <source>&Network Adapters...</source> - <translation type="unfinished"></translation> + <translation>&Hálózati kártyák...</translation> </message> <message> <source>Change the settings of network adapters</source> - <translation type="unfinished"></translation> + <translation>A hálózati kártyák beállÃtása</translation> </message> <message> <source>&Remote Display</source> - <translation type="unfinished">Távoli képe&rnyÅ‘</translation> + <translation>Távoli képe&rnyÅ‘</translation> </message> <message> <source>More CD/DVD Images...</source> - <translation type="unfinished"></translation> + <translation>További CD/DVD képfájlok...</translation> </message> <message> <source>Unmount CD/DVD Device</source> - <translation type="unfinished"></translation> + <translation>CD/DVD lecsatolása</translation> </message> <message> <source>More Floppy Images...</source> - <translation type="unfinished"></translation> + <translation>További floppy képfájlok...</translation> </message> <message> <source>Unmount Floppy Device</source> - <translation type="unfinished"></translation> + <translation>Floppy lecsatolása</translation> </message> <message> <source>No CD/DVD Devices Attached</source> - <translation type="unfinished"></translation> + <translation>Nincs CD/DVD csatlakoztatva</translation> </message> <message> <source>No Floppy Devices Attached</source> - <translation type="unfinished"></translation> + <translation>Nincs floppy csatlakoztatva</translation> </message> <message> <source><p style='white-space:pre'><nobr>Indicates the activity of the virtual hard disks:</nobr>%1</p></source> <comment>HDD tooltip</comment> - <translation type="unfinished"></translation> + <translation><p style='white-space: pre'><nobr>Jelzi a merevlemez aktivitását:</nobr>%1</p></translation> </message> <message> <source><p style='white-space:pre'><nobr>Indicates the activity of the CD/DVD devices:</nobr>%1</p></source> <comment>CD/DVD tooltip</comment> - <translation type="unfinished"></translation> + <translation><p style='white-space: pre'><nobr>Jelzi a CD/DVD aktivitását:</nobr>%1</p></translation> </message> <message> <source><br><nobr><b>No CD/DVD devices attached</b></nobr></source> <comment>CD/DVD tooltip</comment> - <translation type="unfinished"></translation> + <translation><br><nobr><b>Nincs CD/DVD csatlakoztatva</b></nobr></translation> </message> <message> <source><p style='white-space:pre'><nobr>Indicates the activity of the floppy devices:</nobr>%1</p></source> <comment>FD tooltip</comment> - <translation type="unfinished"></translation> + <translation><p style='white-space: pre'><nobr>Jelzi a floppy aktivitását:</nobr>%1</p></translation> </message> <message> <source><br><nobr><b>No floppy devices attached</b></nobr></source> <comment>FD tooltip</comment> - <translation type="unfinished"></translation> + <translation><br><nobr><b>Nincs floppy csatlakoztatva</b></nobr></translation> </message> <message> <source><p style='white-space:pre'><nobr>Indicates the activity of the network interfaces:</nobr>%1</p></source> <comment>Network adapters tooltip</comment> - <translation type="unfinished"></translation> + <translation><p style='white-space: pre'><nobr>Jelzi a hálózati eszköz aktivitását:</nobr>%1</p></translation> </message> <message> <source><p style='white-space:pre'><nobr>Indicates the activity of the attached USB devices:</nobr>%1</p></source> <comment>USB device tooltip</comment> - <translation type="unfinished"></translation> + <translation><p style='white-space: pre'><nobr>Jelzi a csatlakoztatott USB eszköz aktivitását:</nobr>%1</p></translation> </message> <message> <source><p style='white-space:pre'><nobr>Indicates the activity of the machine's shared folders:</nobr>%1</p></source> <comment>Shared folders tooltip</comment> - <translation type="unfinished"></translation> + <translation><p style='white-space: pre'><nobr>Jelzi az osztott mappa aktivitását:</nobr>%1</p></translation> </message> </context> <context> @@ -1797,7 +1798,7 @@ Verzió %1</translation> </message> <message> <source>Exporting Appliance ...</source> - <translation>Gép exportálása...</translation> + <translation>Virtuális gép exportálása...</translation> </message> <message> <source>Appliance Export Wizard</source> @@ -2055,8 +2056,8 @@ p, li { white-space: pre-wrap; } <translation>Valós idejű &dock ikon</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> - <translation type="unfinished"></translation> + <source>&Auto show Dock and Menubar in fullscreen</source> + <translation>A dock és a menüsor &automatikus megjelenÃtése teljes képernyÅ‘n</translation> </message> </context> <context> @@ -2397,31 +2398,31 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Check for:</source> - <translation type="unfinished"></translation> + <translation>EllenÅ‘rizze:</translation> </message> <message> <source><p>Choose this if you only wish to be notified about stable updates to VirtualBox.</p></source> - <translation type="unfinished"></translation> + <translation><p>Válaszd ezt, ha csak a stabil VirtualBox frissÃtésekrÅ‘l szeretnél értesülni</p></translation> </message> <message> <source>&Stable release versions</source> - <translation type="unfinished"></translation> + <translation>a &stabil kiadásokat</translation> </message> <message> <source><p>Choose this if you wish to be notified about all new VirtualBox releases.</p></source> - <translation type="unfinished"></translation> + <translation><p>Válaszd ezt, ha minden új VirtualBox kiadásról szeretnél értesülni</p></translation> </message> <message> <source>&All new releases</source> - <translation type="unfinished"></translation> + <translation>minden új ki&adást</translation> </message> <message> <source><p>Choose this to be notified about all new VirtualBox releases and pre-release versions of VirtualBox.</p></source> - <translation type="unfinished"></translation> + <translation><p>Válaszd ezt, ha minden új VirtualBox kiadásról és elÅ‘zetes kiadásról szeretnél értesülni</p></translation> </message> <message> <source>All new releases and &pre-releases</source> - <translation type="unfinished"></translation> + <translation>az elÅ‘&zetes és a végeges kiadásokat</translation> </message> </context> <context> @@ -3420,230 +3421,236 @@ p, li { white-space: pre-wrap; } <message> <source>Enabled</source> <comment>details report (2D Video Acceleration)</comment> - <translation type="unfinished">Engedélyezve</translation> + <translation>Engedélyezve</translation> </message> <message> <source>Disabled</source> <comment>details report (2D Video Acceleration)</comment> - <translation type="unfinished">Letiltva</translation> + <translation>Letiltva</translation> </message> <message> <source>2D Video Acceleration</source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation>2D grafikus gyorsÃtás</translation> </message> <message> <source>Not Attached</source> <comment>details report (Storage)</comment> - <translation type="unfinished">Nincs csatolva</translation> + <translation>Nincs csatlakoztatva</translation> </message> <message> <source>Storage</source> <comment>details report</comment> - <translation type="unfinished">Tároló</translation> + <translation>Tároló</translation> </message> <message> <source>Teleported</source> <comment>MachineState</comment> - <translation type="unfinished"></translation> + <translatorcomment>CHECKIT</translatorcomment> + <translation>Ãthelyezve</translation> </message> <message> <source>Guru Meditation</source> <comment>MachineState</comment> - <translation type="unfinished"></translation> + <translatorcomment>CHECKIT</translatorcomment> + <translation>Gondolkodik</translation> </message> <message> <source>Teleporting</source> <comment>MachineState</comment> - <translation type="unfinished"></translation> + <translatorcomment>CHECKIT</translatorcomment> + <translation>Ãthelyezés alatt</translation> </message> <message> <source>Taking Live Snapshot</source> <comment>MachineState</comment> - <translation type="unfinished"></translation> + <translatorcomment>CHECKIT</translatorcomment> + <translation>Pillanatkép készÃtése</translation> </message> <message> <source>Teleporting Paused VM</source> <comment>MachineState</comment> - <translation type="unfinished"></translation> + <translatorcomment>CHECKIT</translatorcomment> + <translation>MegállÃtott VM áthelyezése</translation> </message> <message> <source>Restoring Snapshot</source> <comment>MachineState</comment> - <translation type="unfinished"></translation> + <translation>Pillanatkép helyreállÃtása</translation> </message> <message> <source>Deleting Snapshot</source> <comment>MachineState</comment> - <translation type="unfinished"></translation> + <translation>Pillanatkép törlése</translation> </message> <message> <source>Floppy</source> <comment>StorageBus</comment> - <translation type="unfinished">Floppy</translation> + <translation>Floppy</translation> </message> <message> <source>Device %1</source> <comment>StorageBusDevice</comment> - <translation type="unfinished"></translation> + <translatorcomment>CHECKIT</translatorcomment> + <translation>Eszköz %1</translation> </message> <message> <source>IDE Primary Master</source> <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <translation>IDE Primary Master</translation> </message> <message> <source>IDE Primary Slave</source> <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <translation>IDE Primary Slave</translation> </message> <message> <source>IDE Secondary Master</source> <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <translation>IDE Secondary Master</translation> </message> <message> <source>IDE Secondary Slave</source> <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <translation>IDE Secondary Slave</translation> </message> <message> <source>SATA Port %1</source> <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <translation>SATA Port %1</translation> </message> <message> <source>SCSI Port %1</source> <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <translation>SCSI Port %1</translation> </message> <message> <source>Floppy Device %1</source> <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <translation>Floppy eszköz %1</translation> </message> <message> <source>Paravirtualized Network (virtio-net)</source> <comment>NetworkAdapterType</comment> - <translation type="unfinished"></translation> + <translation>Paravirtualizált hálózat (virtio-net)</translation> </message> <message> <source>I82078</source> <comment>StorageControllerType</comment> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <source>Empty</source> <comment>medium</comment> - <translation type="unfinished"></translation> + <translation>Ãœres</translation> </message> <message> <source>Host Drive '%1'</source> <comment>medium</comment> - <translation type="unfinished"></translation> + <translation>Gazda eszköz '%1'</translation> </message> <message> <source>Host Drive %1 (%2)</source> <comment>medium</comment> - <translation type="unfinished"></translation> + <translation>Gazda eszköz %1 (%2)</translation> </message> <message> <source><p style=white-space:pre>Type (Format): %1 (%2)</p></source> <comment>medium</comment> - <translation type="unfinished"></translation> + <translation><p style=white-space:pre>TÃpus (Formátum): %1 (%2)</p></translation> </message> <message> <source><p>Attached to: %1</p></source> <comment>image</comment> - <translation type="unfinished"></translation> + <translation><p>Csatlakoztatva ide: %1</p></translation> </message> <message> <source><i>Not Attached</i></source> <comment>image</comment> - <translation type="unfinished"></translation> + <translation><i>Nincs csatlakoztatva</i></translation> </message> <message> <source><i>Checking accessibility...</i></source> <comment>medium</comment> - <translation type="unfinished"></translation> + <translation><i>ElérhetÅ‘ség tesztelése...</i></translation> </message> <message> <source>Failed to check media accessibility.</source> <comment>medium</comment> - <translation type="unfinished"></translation> + <translation>A média elérhetÅ‘ségének ellenÅ‘rzése sikertelen.</translation> </message> <message> <source><b>No medium selected</b></source> <comment>medium</comment> - <translation type="unfinished"></translation> + <translation><b>Nincs média kiválasztva</b></translation> </message> <message> <source>You can also change this while the machine is running.</source> - <translation type="unfinished"></translation> + <translation>A gép bekapcsolt állapota mellett is változtatható.</translation> </message> <message> <source><b>No media available</b></source> <comment>medium</comment> - <translation type="unfinished"></translation> + <translation><b>Nincs elérhetÅ‘ média</b></translation> </message> <message> <source>You can create media images using the virtual media manager.</source> - <translation type="unfinished"></translation> + <translation>Képfájlokat a virtuális média menedzserrel hozhatsz létre.</translation> </message> <message> <source>Attaching this hard disk will be performed indirectly using a newly created differencing hard disk.</source> <comment>medium</comment> - <translation type="unfinished"></translation> + <translation>Ezen merevlemez csatlakoztatása egy új különbözeti lemez készÃtését fogja okozni.</translation> </message> <message> <source>Some of the media in this hard disk chain are inaccessible. Please use the Virtual Media Manager in <b>Show Differencing Hard Disks</b> mode to inspect these media.</source> <comment>medium</comment> - <translation type="unfinished"></translation> + <translation>Valamelyik média ebben a merevlemez-láncban elérhetetlen. Kérlek, használd a Virtuális médiakezelÅ‘t <b>Különbözeti merevlemezek mutatása</b> módban a probléma felderÃtéséhez.</translation> </message> <message> <source>This base hard disk is indirectly attached using the following differencing hard disk:</source> <comment>medium</comment> - <translation type="unfinished"></translation> + <translation>Ez az alap merevlemez a következÅ‘ különbözeti lemezzel lesz csatlakoztatva:</translation> </message> <message numerus="yes"> <source>%n year(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> + <translation> + <numerusform>%n éve</numerusform> </translation> </message> <message numerus="yes"> <source>%n month(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> + <translation> + <numerusform>%n hónapja</numerusform> </translation> </message> <message numerus="yes"> <source>%n day(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> + <translation> + <numerusform>%n napja</numerusform> </translation> </message> <message numerus="yes"> <source>%n hour(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> + <translation> + <numerusform>%n órája</numerusform> </translation> </message> <message numerus="yes"> <source>%n minute(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> + <translation> + <numerusform>%n perce</numerusform> </translation> </message> <message numerus="yes"> <source>%n second(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> + <translation> + <numerusform>%n másodperce</numerusform> </translation> </message> <message> <source>(CD/DVD)</source> - <translation type="unfinished"></translation> + <translation>(CD/DVD)</translation> </message> </context> <context> @@ -3998,7 +4005,7 @@ to the system default language.</qt> <name>VBoxHelpButton</name> <message> <source>&Help</source> - <translation type="unfinished">Sú&gó</translation> + <translation>Sú&gó</translation> </message> </context> <context> @@ -4009,7 +4016,8 @@ to the system default language.</qt> </message> <message> <source>Reading Appliance ...</source> - <translation type="unfinished"></translation> + <translatorcomment>CHECKIT</translatorcomment> + <translation>Virtuális gép olvasása...</translation> </message> </context> <context> @@ -4262,7 +4270,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>&Select</source> - <translation>&Válasszon</translation> + <translation>&Válassz</translation> </message> <message> <source>All hard disk images (%1)</source> @@ -4303,7 +4311,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Virtual Media Manager</source> - <translation>Virtuális MédiakezelÅ‘</translation> + <translation>Virtuális média-kezelÅ‘</translation> </message> <message> <source>Hard &Disks</source> @@ -4336,17 +4344,17 @@ p, li { white-space: pre-wrap; } <message> <source>Attached to</source> <comment>VMM: Virtual Disk</comment> - <translation type="unfinished">Ide csatlakoztatva</translation> + <translation>Ide csatlakoztatva</translation> </message> <message> <source>Attached to</source> <comment>VMM: CD/DVD Image</comment> - <translation type="unfinished">Ide csatlakoztatva</translation> + <translation>Ide csatlakoztatva</translation> </message> <message> <source>Attached to</source> <comment>VMM: Floppy Image</comment> - <translation type="unfinished">Ide csatlakoztatva</translation> + <translation>Ide csatlakoztatva</translation> </message> </context> <context> @@ -4403,7 +4411,7 @@ p, li { white-space: pre-wrap; } <name>VBoxNetworkDialog</name> <message> <source>Network Adapters</source> - <translation type="unfinished"></translation> + <translation>Hálózati kártyák</translation> </message> </context> <context> @@ -5272,7 +5280,7 @@ esetleg a <b>LétezÅ‘</b> gombbal a Virtuális lemezkezelÅ‘bÅ‘l.< <message> <source><p>The host key is currently defined as <b>%1</b>.</p></source> <comment>additional message box paragraph</comment> - <translation><p>A gazda kulcs jelenleg Ãgy van megadva: <b>%1</b>.</p></translation> + <translation><p>A gazda billentyű jelenleg Ãgy van megadva: <b>%1</b>.</p></translation> </message> <message> <source>Capture</source> @@ -5364,7 +5372,7 @@ esetleg a <b>LétezÅ‘</b> gombbal a Virtuális lemezkezelÅ‘bÅ‘l.< </message> <message> <source><p>The Virtual Machine reports that the guest OS supports <b>mouse pointer integration</b>. This means that you do not need to <i>capture</i> the mouse pointer to be able to use it in your guest OS -- all mouse actions you perform when the mouse pointer is over the Virtual Machine's display are directly sent to the guest OS. If the mouse is currently captured, it will be automatically uncaptured.</p><p>The mouse icon on the status bar will look like&nbsp;<img src=:/mouse_seamless_16px.png/>&nbsp;to inform you that mouse pointer integration is supported by the guest OS and is currently turned on.</p><p><b>Note</b>: Some applications may behave incorrectly in mouse pointer integration mode. You can always disable it for the current session (and enable it again) by selecting the corresponding action from the menu bar.</p></source> - <translation><p>A virtuális gép észlelte, hogy a vendég operációs rendszer támogatja az <b>egér-integrációt</b>. Ez azt jelenti, hogy nem kell <i>elfognod</i>az egérmutató, hogy a vendég operációs rendszerben használhasd -- ha az egérmutató a virtuális gép képernyÅ‘je felett van, minden végrehajtott egérművelet közvetlen a vendég operációs rendszerhez küldÅ‘dik. Ha az egér el van fogva, automatikusan el lesz engedve.</p><p>Az állapotsorban megjelenÅ‘&nbsp;<img src=:/mouse_seamless_16px.png/>&nbsp;egér ikon tájékoztat az egér-integráció vendég operációs rendszerbeli támogatásáról és bekapcsolt állapotáról.</p><p><b>Megjegyzés</b>: Néhány alkalmazás helytelenül működhet egér-integrációs módban. Bármikor kikapcsolhatod az aktuális munkafolyamathoz (majd újra be) a menübÅ‘l,a megfelelÅ‘ művelet kiválasztásával.</p></translation> + <translation><p>A virtuális gép észlelte, hogy a vendég operációs rendszer támogatja az <b>egér-integrációt</b>. Ez azt jelenti, hogy nem kell <i>elfognod</i> az egérmutatót, hogy a vendég operációs rendszerben használhasd -- ha az egérmutató a virtuális gép képernyÅ‘je felett van, minden végrehajtott egérművelet közvetlen a vendég operációs rendszeren hajtódik végre. Ha az egér el van fogva, automatikusan el lesz engedve.</p><p>Az állapotsorban megjelenÅ‘&nbsp;<img src=:/mouse_seamless_16px.png/>&nbsp;egér ikon tájékoztat az egér-integráció vendég operációs rendszerbeli támogatásáról és bekapcsolt állapotáról.</p><p><b>Megjegyzés</b>: Néhány alkalmazás helytelenül működhet egér-integrációs módban. Bármikor kikapcsolhatod az aktuális munkafolyamathoz (majd újra be) a menübÅ‘l,a megfelelÅ‘ művelet kiválasztásával.</p></translation> </message> <message> <source><p>The virtual machine window will be now switched to <b>fullscreen</b> mode. You can go back to windowed mode at any time by pressing <b>%1</b>. Note that the <i>Host</i> key is currently defined as <b>%2</b>.</p><p>Note that the main menu bar is hidden in fullscreen mode. You can access it by pressing <b>Host+Home</b>.</p></source> @@ -5703,154 +5711,154 @@ esetleg a <b>LétezÅ‘</b> gombbal a Virtuális lemezkezelÅ‘bÅ‘l.< </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 type="unfinished"></translation> + <translation>Úgy néz ki, USBFS fájlrendszert használsz a /sys/bus/usb/drivers alá csatolva. ErÅ‘sen ajánlott ennek megváltoztatása, mert egy hibás beállÃtás az USB eszközök működésének váratlan zavarát okozhatja.</translation> </message> <message> <source>You are running an EXPERIMENTAL build of VirtualBox. This version is not suitable for production use.</source> - <translation type="unfinished"></translation> + <translation>A Virtualbox TESZTELÉS ALATTI verzióját futtatod. Ez a verzió nem ajánlott éles környezetbe.</translation> </message> <message> <source><p>Are you sure you want to restore snapshot <b>%1</b>? This will cause you to lose your current machine state, which cannot be recovered.</p></source> - <translation type="unfinished"></translation> + <translation><p>Biztos, hogy vissza akarod tölteni ezt a pillanatképet: <b>%1</b>? Ez a gép jelenlegi állapotának végleges elvesztését okozhatja.</p></translation> </message> <message> <source>Restore</source> - <translation type="unfinished"></translation> + <translation>Visszatöltés</translation> </message> <message> <source><p>Deleting the snapshot will cause the state information saved in it to be lost, and disk data spread over several image files that VirtualBox has created together with the snapshot will be merged into one file. This can be a lengthy process, and the information in the snapshot cannot be recovered.</p></p>Are you sure you want to delete the selected snapshot <b>%1</b>?</p></source> - <translation type="unfinished"></translation> + <translation><p>A pillanatkép törlése azt okozhatja, hogy a mentett állapotinformációk elvesznek, és a VirtualBox által készÃtett lemez-pillanatképek rá lesznek játszva az aktuális lemezre. Ez hosszú ideig is eltarthat, és a pillanatkép-beli információk ezután már nem lesznek helyreállÃthatóak.</p><p>Biztos törlöd ezt a pillanatképet: <b>%1</b>?</p></translation> </message> <message> <source>Delete</source> - <translation type="unfinished">Törlés</translation> + <translation>Törlés</translation> </message> <message> <source>Failed to restore the snapshot <b>%1</b> of the virtual machine <b>%2</b>.</source> - <translation type="unfinished"></translation> + <translation>A(z) <b>%2</b> virtuális gép <b>%1</b> pillanatképének helyreállÃtása nem sikerült.</translation> </message> <message> <source>Failed to delete the snapshot <b>%1</b> of the virtual machine <b>%2</b>.</source> - <translation type="unfinished"></translation> + <translation>A(z) <b>%2</b> virtuális gép <b>%1</b> pillanatképének törlése nem sikerült.</translation> </message> <message> <source><p>There are no unused media available for the newly created attachment.</p><p>Press the <b>Create</b> button to start the <i>New Virtual Disk</i> wizard and create a new medium, or press the <b>Select</b> if you wish to open the <i>Virtual Media Manager</i>.</p></source> - <translation type="unfinished"></translation> + <translation><p>Nem érhetÅ‘ el felhasználható média az újonnan létrehozott perifériához.</p><p>Nyomd meg az <b>Új</b> gombot az <i>Új virtuális lemez</i> varázsló elindÃtásához, és készÃts egy új médiumot, vagy nyomd meg a <b>Kiválasztás</b> gombot a <i>Virtuális média-kezelÅ‘</> elinditásához.</p></translation> </message> <message> <source>&Create</source> <comment>medium</comment> - <translation type="unfinished">Ú&j</translation> + <translation>Ú&j</translation> </message> <message> <source>&Select</source> <comment>medium</comment> - <translation type="unfinished"></translation> + <translation>Kiválasztá&s</translation> </message> <message> <source><p>There are no unused media available for the newly created attachment.</p><p>Press the <b>Select</b> if you wish to open the <i>Virtual Media Manager</i>.</p></source> - <translation type="unfinished"></translation> + <translation><p>Nem érhetÅ‘ el felhasználható média az újonnan létrehozott perifériához.</p><p>Nyomd meg a <b>Kiválasztás</b> gombot a <i>Virtuális média-kezelÅ‘</> elinditásához.</p></translation> </message> <message> <source>Failed to attach the %1 to slot <i>%2</i> of the machine <b>%3</b>.</source> - <translation type="unfinished"></translation> + <translation>A(z) %1 csatlakoztatása a(z) <b>%3</b> virtuális gép <i>%2</i> csatlakozójába nem sikerült.</translation> </message> <message> <source>Failed to detach the %1 from slot <i>%2</i> of the machine <b>%3</b>.</source> - <translation type="unfinished"></translation> + <translation>A(z) %1 leválasztása a(z) <b>%3</b> virtuális gép <i>%2</i> csatlakozójáról nem sikerült.</translation> </message> <message> <source>Unable to mount the %1 <nobr><b>%2</b></nobr> on the machine <b>%3</b>.</source> - <translation type="unfinished"></translation> + <translation>Nem sikerült felcsatolni a(z) %1 <nobr><b>%2</b></nobr> a(z) <b>%3</b> gépre.</translation> </message> <message> <source> Would you like to force mounting of this medium?</source> - <translation type="unfinished"></translation> + <translation>Biztosan erÅ‘szakkal akarod felcsatolni ezt a médiumot?</translation> </message> <message> <source>Unable to unmount the %1 <nobr><b>%2</b></nobr> from the machine <b>%3</b>.</source> - <translation type="unfinished"></translation> + <translation>Nem sikerült lecsatolni a(z) %1 <nobr><b>%2</b></nobr> a(z) <b>%3</b> géprÅ‘l.</translation> </message> <message> <source> Would you like to force unmounting of this medium?</source> - <translation type="unfinished"></translation> + <translation>Biztosan erÅ‘szakkal akarod leválasztani ezt a médiumot?</translation> </message> <message> <source>Force Unmount</source> - <translation type="unfinished"></translation> + <translation>ErÅ‘szakos leválasztás</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="unfinished"></translation> + <translation>Nem sikerült kidobni a lemezt a virtuális eszközbÅ‘l. Az eszközt valószÃnűleg zárolta a vendég rendszer. EllenÅ‘rizd ezt, és próbáld újra.</translation> </message> <message> <source><p>Could not insert the VirtualBox Guest Additions installer CD image into the virtual machine <b>%1</b>, as the machine has no CD/DVD-ROM drives. Please add a drive using the storage page of the virtual machine settings dialog.</p></source> - <translation type="unfinished"></translation> + <translation><p>Nem lehet a VirtualBox integrációs szolgáltatások telepÃtÅ‘lemezét felcsatolni a(z) <b>%1</b> virtuálus gépre, mert a gép nem rendelkezik CD/DVD meghajtóval. Adj egyet a hozzá a virtuális gép beállÃtásainál a Tároló fülön.</p></translation> </message> <message> <source>E&xit</source> <comment>warnAboutSettingsAutoConversion message box</comment> - <translation type="unfinished">Ki&lépés</translation> + <translation>Ki&lépés</translation> </message> <message> <source><p>The following VirtualBox settings files will be automatically converted from the old format to a new format required by the new version of VirtualBox.</p><p>Press <b>OK</b> to start VirtualBox now or press <b>Exit</b> if you want to terminate the VirtualBox application without any further actions.</p></source> - <translation type="unfinished"></translation> + <translation><p>A következÅ‘ VirtualBox beállÃtásfájlok automatikusan konvertálva lesznek a régi formátumról az újra.</p><p>Nyomd meg az <b>OK</b> gombot a VirtualBox indÃtásához, vagy a <b>Kilépés</b>-t a VirtualBox-ból való azonnali kilépéshez</p></translation> </message> <message> <source>hard disk</source> <comment>failed to mount ...</comment> - <translation type="unfinished">merevlemez</translation> + <translation>merevlemezt</translation> </message> <message> <source>CD/DVD</source> <comment>failed to mount ... host-drive</comment> - <translation type="unfinished"></translation> + <translation>CD/DVD-t</translation> </message> <message> <source>CD/DVD image</source> <comment>failed to mount ...</comment> - <translation type="unfinished">CD/DVD kép</translation> + <translation>CD/DVD képet</translation> </message> <message> <source>floppy</source> <comment>failed to mount ... host-drive</comment> - <translation type="unfinished"></translation> + <translation>floppy-t</translation> </message> <message> <source>floppy image</source> <comment>failed to mount ...</comment> - <translation type="unfinished">floppy kép</translation> + <translation>floppy képet</translation> </message> <message> <source>hard disk</source> <comment>failed to attach ...</comment> - <translation type="unfinished">merevlemez</translation> + <translation>merevlemezt</translation> </message> <message> <source>CD/DVD device</source> <comment>failed to attach ...</comment> - <translation type="unfinished"></translation> + <translation>CD/DVD eszközt</translation> </message> <message> <source>floppy device</source> <comment>failed to close ...</comment> - <translation type="unfinished"></translation> + <translation>floppyt</translation> </message> <message> <source><p>Are you sure you want to delete the CD/DVD-ROM device?</p><p>You will not be able to mount any CDs or ISO images or install the Guest Additions without it!</p></source> - <translation type="unfinished"></translation> + <translation><p>Biztos, hogy törlöd ezt a CD/DVD eszközt?</p><p>Enélkül nem leszel képes CD-t vagy ISO képmást csatolni, illetve az integrációs szolgáltatásokat telepÃteni!</p></translation> </message> <message> <source>&Remove</source> <comment>medium</comment> - <translation type="unfinished"></translation> + <translation>Tö&röl</translation> </message> </context> <context> <name>VBoxProgressDialog</name> <message> <source>&Cancel</source> - <translation type="unfinished">&Mégsem</translation> + <translation>&Mégsem</translation> </message> <message> <source>Time remaining: %1</source> @@ -5858,32 +5866,32 @@ esetleg a <b>LétezÅ‘</b> gombbal a Virtuális lemezkezelÅ‘bÅ‘l.< </message> <message> <source>A few seconds remaining</source> - <translation type="unfinished"></translation> + <translation>Még néhány másodperc</translation> </message> <message> <source>Canceling...</source> - <translation type="unfinished"></translation> + <translation>MegszakÃtás...</translation> </message> <message> <source>Cancel the current operation</source> - <translation type="unfinished"></translation> + <translation>A futó művelet megszakÃtása</translation> </message> <message> <source>%1, %2 remaining</source> <comment>You may wish to translate this more like "Time remaining: %1, %2"</comment> - <translation type="unfinished"></translation> + <translation>%2 van hátra a(z) %1 -bÅ‘l</translation> </message> <message> <source>%1 remaining</source> <comment>You may wish to translate this more like "Time remaining: %1"</comment> - <translation type="unfinished"></translation> + <translation>%1 van hátra</translation> </message> </context> <context> <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>VirtualBox regisztrálása</translation> + <translation type="obsolete">VirtualBox regisztrálása</translation> </message> <message> <source><p>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.</p><p>Enter your full name using Latin characters and your e-mail address to the fields below. Please note that innotek will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, innotek will never pass your data to third parties. Detailed information about how we use your personal data can be found in the <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -5895,7 +5903,7 @@ esetleg a <b>LétezÅ‘</b> gombbal a Virtuális lemezkezelÅ‘bÅ‘l.< </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Ãrd be a teljes neved speciális karakterek nélkül.</translation> + <translation type="obsolete">Ãrd be a teljes neved speciális karakterek nélkül.</translation> </message> <message> <source>&E-mail</source> @@ -5903,7 +5911,7 @@ esetleg a <b>LétezÅ‘</b> gombbal a Virtuális lemezkezelÅ‘bÅ‘l.< </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Ãrd be a használt e-mail cÃmedet.</translation> + <translation type="obsolete">Ãrd be a használt e-mail cÃmedet.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -5915,7 +5923,7 @@ esetleg a <b>LétezÅ‘</b> gombbal a Virtuális lemezkezelÅ‘bÅ‘l.< </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>A VirtualBox regisztrációs űrlap üdvözöl!</translation> + <translation type="obsolete">A VirtualBox regisztrációs űrlap üdvözöl!</translation> </message> <message> <source>&Confirm</source> @@ -5931,7 +5939,7 @@ esetleg a <b>LétezÅ‘</b> gombbal a Virtuális lemezkezelÅ‘bÅ‘l.< </message> <message> <source>Could not perform connection handshake.</source> - <translation>A kapcsolódási próbálkozás sikertelen volt.</translation> + <translation type="obsolete">A kapcsolódási próbálkozás sikertelen volt.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -5947,63 +5955,63 @@ esetleg a <b>LétezÅ‘</b> gombbal a Virtuális lemezkezelÅ‘bÅ‘l.< </message> <message> <source>Cancel</source> - <translation>Mégsem</translation> + <translation type="obsolete">Mégsem</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Válassz országot/területet</translation> + <translation type="obsolete">Válassz országot/területet</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Kérlek, töltsd ki ezt a regisztrációs űrlapot, hogy tudjuk azt, hogy a felhasználóink táborába tartozol, valamint, hogy informálhassunk téged a különbözÅ‘ hÃrekrÅ‘l, újdonságokról.</p><p>Add meg speciális karakterek nélkül a neved, illetve az e-mail cÃmedet. A Sun Microsystems az adataidat kizárólag statisztikai célokra, és a te informálásodra használja, harmadik fél számára ki nem adja. A személyes adatok felhasználásának és kezelésének részleteirÅ‘l a kézikönyv <b>Adatvédemi nyilatkozat</b> részébÅ‘l vagy a VirtualBox weboldalának <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Adatvédemi nyilatkozat</a> oldalán tájékozódhatsz.</p></translation> + <translation type="obsolete"><p>Kérlek, töltsd ki ezt a regisztrációs űrlapot, hogy tudjuk azt, hogy a felhasználóink táborába tartozol, valamint, hogy informálhassunk téged a különbözÅ‘ hÃrekrÅ‘l, újdonságokról.</p><p>Add meg speciális karakterek nélkül a neved, illetve az e-mail cÃmedet. A Sun Microsystems az adataidat kizárólag statisztikai célokra, és a te informálásodra használja, harmadik fél számára ki nem adja. A személyes adatok felhasználásának és kezelésének részleteirÅ‘l a kézikönyv <b>Adatvédemi nyilatkozat</b> részébÅ‘l vagy a VirtualBox weboldalának <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Adatvédemi nyilatkozat</a> oldalán tájékozódhatsz.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>A meglevÅ‘ Sun Online fiókomat &használom:</translation> + <translation type="obsolete">A meglevÅ‘ Sun Online fiókomat &használom:</translation> </message> <message> <source>&E-mail:</source> - <translation>&E-mail:</translation> + <translation type="obsolete">&E-mail:</translation> </message> <message> <source>&Password:</source> - <translation>&Jelszó:</translation> + <translation type="obsolete">&Jelszó:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Szeretnék egy új Sun &Online fiókot regisztrálni:</translation> + <translation type="obsolete">Szeretnék egy új Sun &Online fiókot regisztrálni:</translation> </message> <message> <source>&First Name:</source> - <translation>&Keresztnév:</translation> + <translation type="obsolete">&Keresztnév:</translation> </message> <message> <source>&Last Name:</source> - <translation>&Vezetéknév:</translation> + <translation type="obsolete">&Vezetéknév:</translation> </message> <message> <source>&Company:</source> - <translation>&Cég:</translation> + <translation type="obsolete">&Cég:</translation> </message> <message> <source>Co&untry:</source> - <translation>Orszá&g:</translation> + <translation type="obsolete">Orszá&g:</translation> </message> <message> <source>E-&mail:</source> - <translation>E-&mail:</translation> + <translation type="obsolete">E-&mail:</translation> </message> <message> <source>P&assword:</source> - <translation>J&elszó:</translation> + <translation type="obsolete">J&elszó:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Jelszó &megerÅ‘sÃtése:</translation> + <translation type="obsolete">Jelszó &megerÅ‘sÃtése:</translation> </message> <message> <source>&Register</source> - <translation>&Regisztráció</translation> + <translation type="obsolete">&Regisztráció</translation> </message> </context> <context> @@ -6033,15 +6041,15 @@ esetleg a <b>LétezÅ‘</b> gombbal a Virtuális lemezkezelÅ‘bÅ‘l.< <name>VBoxScreenshotViewer</name> <message> <source>Screenshot of %1 (%2)</source> - <translation type="unfinished"></translation> + <translation>KépernyÅ‘kép: %1 (%2)</translation> </message> <message> <source>Click to view non-scaled screenshot.</source> - <translation type="unfinished"></translation> + <translation>Kattintásra átvált teljes méretű képre.</translation> </message> <message> <source>Click to view scaled screenshot.</source> - <translation type="unfinished"></translation> + <translation>Kattintásra átvált normál méretű képre.</translation> </message> </context> <context> @@ -6301,7 +6309,7 @@ esetleg a <b>LétezÅ‘</b> gombbal a Virtuális lemezkezelÅ‘bÅ‘l.< </message> <message> <source>&Virtual Media Manager...</source> - <translation>&Virtuális MédiakezelÅ‘...</translation> + <translation>&Virtuális média-kezelÅ‘...</translation> </message> <message> <source>Display the Virtual Media Manager dialog</source> @@ -6518,23 +6526,23 @@ parancsot Linux-alapú OS-ekbÅ‘l. Guest Additions szükséges hozzá.</qt> </message> <message> <source>Click to enlarge the screenshot.</source> - <translation type="unfinished"></translation> + <translation>Kattints ide a kép nagyÃtásához.</translation> </message> <message> <source>&Name:</source> - <translation type="unfinished">&Név:</translation> + <translation>&Név:</translation> </message> <message> <source>Taken:</source> - <translation type="unfinished"></translation> + <translation>Készült:</translation> </message> <message> <source>&Description:</source> - <translation type="unfinished"></translation> + <translation>&LeÃrás:</translation> </message> <message> <source>D&etails:</source> - <translation type="unfinished"></translation> + <translation>&Részletek:</translation> </message> </context> <context> @@ -6717,27 +6725,27 @@ parancsot Linux-alapú OS-ekbÅ‘l. Guest Additions szükséges hozzá.</qt> </message> <message> <source> (%1)</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <source>&Restore Snapshot</source> - <translation type="unfinished"></translation> + <translation>Pillanatkép hely&reállÃtása</translation> </message> <message> <source>&Delete Snapshot</source> - <translation type="unfinished"></translation> + <translation>Pillanatkép &törlése</translation> </message> <message> <source>Restore the selected snapshot of the virtual machine</source> - <translation type="unfinished"></translation> + <translation>A kiválasztott pillanatkép helyreállÃtása a virtuális gépre</translation> </message> <message> <source>Delete the selected snapshot of the virtual machine</source> - <translation type="unfinished"></translation> + <translation>Törli a kiválasztott pillanatképet</translation> </message> <message> <source> (%1 ago)</source> - <translation type="unfinished"></translation> + <translation> (%1)</translation> </message> </context> <context> @@ -6791,8 +6799,8 @@ parancsot Linux-alapú OS-ekbÅ‘l. Guest Additions szükséges hozzá.</qt> </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> - <translation type="unfinished"> - <numerusform></numerusform> + <translation> + <numerusform>Vigyázz: Pillanatképet készülsz készÃteni egy olyan géprÅ‘l, melyhez %n nem-módosÃthato képfájl van csatlakoztatva. AmÃg ebbÅ‘l a pillanatképbÅ‘l dolgozol, a nem-módosÃtható képfájl nem lesz helyreállitva az adatvesztés elkerülése érdekében.</numerusform> </translation> </message> </context> @@ -7301,7 +7309,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Guest Additions</source> - <translation>Guest Additions</translation> + <translation>Integrációs szolgáltatások</translation> </message> <message> <source>Guest OS Type</source> @@ -7340,19 +7348,19 @@ p, li { white-space: pre-wrap; } <message> <source>Not Available</source> <comment>details report (VRDP server port)</comment> - <translation type="unfinished"></translation> + <translation>Nem érhetÅ‘ el</translation> </message> <message> <source>Storage Statistics</source> - <translation type="unfinished"></translation> + <translation>Tároló statisztika</translation> </message> <message> <source>No Storage Devices</source> - <translation type="unfinished"></translation> + <translation>Nincsenek tárolóeszközök</translation> </message> <message> <source>Network Statistics</source> - <translation type="unfinished"></translation> + <translation>Hálózati statisztika</translation> </message> </context> <context> @@ -7855,19 +7863,20 @@ p, li { white-space: pre-wrap; } </message> <message> <source>you have assigned less than <b>%1</b> of video memory which is the minimum amount required for HD Video to be played efficiently.</source> - <translation type="unfinished"></translation> + <translation>kevesebb mint <b>%1</b> videómemóriát rendeltél a géphez, pedig ez a minimum, ami a nagyfelbontású videók lejátszásához kell.</translation> </message> <message> <source>When checked, the virtual machine will be given access to the Video Acceleration capabilities available on the host.</source> - <translation type="unfinished"></translation> + <translation>Ha engedélyezed, a virtuális gép hozzáférést kap a gazdagép videógyorsÃtási képességeihez.</translation> </message> <message> <source>Enable &2D Video Acceleration</source> - <translation type="unfinished"></translation> + <translation>&2D gyorsÃtás engedélyezése</translation> </message> <message> <source>The VRDP Server port number. You may specify <tt>0</tt> (zero), to select port 3389, the standard port for RDP.</source> - <translation type="unfinished"></translation> + <translatorcomment>CHECKIT</translatorcomment> + <translation>A VRDP szerver portja. Adj meg <tt>0</tt>-t (nulla) a standard RDP port (3389) kiválasztásához.</translation> </message> </context> <context> @@ -8697,7 +8706,7 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </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"></translation> + <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> </context> <context> @@ -8871,7 +8880,7 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </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>A vágólap megosztásának módját állÃthatod itt be a gazda és a vendég rendszer közt. Ez a virtuális gépen a Guest Additions telepÃtését igénlyi.</translation> + <translation>A vágólap megosztásának módját állÃthatod itt be a gazda és a vendég rendszer közt. Ez a virtuális gépen az integrációs szolgáltatások telepÃtését igénlyi.</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> @@ -8964,11 +8973,11 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </message> <message> <source>If checked, show the Mini ToolBar at the top of the screen, rather than in its default position at the bottom of the screen.</source> - <translation type="unfinished"></translation> + <translation>Ha engedélyezed, a Mini ToolBar a képernyÅ‘ tetején fog megjelenni, és nem az alján, ahol alapértelmezetten megjelenik.</translation> </message> <message> <source>Show At &Top Of Screen</source> - <translation type="unfinished"></translation> + <translation>Legyen a képernyÅ‘ &tetején</translation> </message> </context> <context> @@ -9043,131 +9052,131 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </message> <message> <source><nobr><b>%1</b></nobr><br><nobr>Bus:&nbsp;&nbsp;%2</nobr><br><nobr>Type:&nbsp;&nbsp;%3</nobr></source> - <translation type="unfinished"></translation> + <translation><nobr><b>%1</b></nobr><br><nobr>Busz:&nbsp;&nbsp;%2</nobr><br><nobr>TÃpus:&nbsp;&nbsp;%3</nobr></translation> </message> <message> <source><nobr>Expand/Collapse&nbsp;Item</nobr></source> - <translation type="unfinished"></translation> + <translation><nobr>Elem&nbsp;összecsukása/kibontása</nobr></translation> </message> <message> <source><nobr>Add&nbsp;Hard&nbsp;Disk</nobr></source> - <translation type="unfinished"></translation> + <translation><nob>Merevlemez&nbsp;hozzáadása</nobr></translation> </message> <message> <source><nobr>Add&nbsp;CD/DVD&nbsp;Device</nobr></source> - <translation type="unfinished"></translation> + <translation><nob>CD/DVD&nbsp;hozzáadása</nobr></translation> </message> <message> <source><nobr>Add&nbsp;Floppy&nbsp;Device</nobr></source> - <translation type="unfinished"></translation> + <translation><nob>Floppy&nbsp;hozzáadása</nobr></translation> </message> <message> <source>No hard disk is selected for <i>%1</i>.</source> - <translation type="unfinished"></translation> + <translation>Nincs merevlemez kiválasztva a(z) <i>%1</i> géphez.</translation> </message> <message> <source><i>%1</i> uses a medium that is already attached to <i>%2</i>.</source> - <translation type="unfinished"></translation> + <translation><i>%1</i> ugyanazt a médiumot használja, mint <i>%2</i>.</translation> </message> <message> <source>Add Controller</source> - <translation type="unfinished"></translation> + <translation>VezérlÅ‘ hozzáadása</translation> </message> <message> <source>Add IDE Controller</source> - <translation type="unfinished"></translation> + <translation>IDE vezérlÅ‘ hozzáadása</translation> </message> <message> <source>Add SATA Controller</source> - <translation type="unfinished"></translation> + <translation>SATA vezérlÅ‘ hozzáadása</translation> </message> <message> <source>Add SCSI Controller</source> - <translation type="unfinished"></translation> + <translation>SCSI vezérlÅ‘ hozzáadása</translation> </message> <message> <source>Add Floppy Controller</source> - <translation type="unfinished"></translation> + <translation>Floppy vezérlÅ‘ hozzáadása</translation> </message> <message> <source>Remove Controller</source> - <translation type="unfinished"></translation> + <translation>VezérlÅ‘ eltávolÃtása</translation> </message> <message> <source>Add Attachment</source> - <translation type="unfinished"></translation> + <translation>Új csatolás</translation> </message> <message> <source>Add Hard Disk</source> - <translation type="unfinished"></translation> + <translation>Merevlemez hozzáadása</translation> </message> <message> <source>Add CD/DVD Device</source> - <translation type="unfinished"></translation> + <translation>CD/DVD hozzáadása</translation> </message> <message> <source>Add Floppy Device</source> - <translation type="unfinished"></translation> + <translation>Floppy hozzáadása</translation> </message> <message> <source>Remove Attachment</source> - <translation type="unfinished"></translation> + <translation>Csatolás törlése</translation> </message> <message> <source>Adds a new controller to the end of the Storage Tree.</source> - <translation type="unfinished"></translation> + <translation>Az új vezérlÅ‘t a tároló-fa végéhez adja hozzá.</translation> </message> <message> <source>Removes the controller highlighted in the Storage Tree.</source> - <translation type="unfinished"></translation> + <translation>EltávolÃtja a kijelölt vezérlÅ‘t a tároló-fából.</translation> </message> <message> <source>Adds a new attachment to the Storage Tree using currently selected controller as parent.</source> - <translation type="unfinished"></translation> + <translation>Új eszköz hozzáadása a tárolófához és csatlakoztatása a jelenleg kiválasztott vezérlÅ‘höz.</translation> </message> <message> <source>Removes the attachment highlighted in the Storage Tree.</source> - <translation type="unfinished"></translation> + <translation>EltávolÃtja a kijelölt eszközt a tárolófából.</translation> </message> <message> <source>IDE Controller</source> - <translation type="unfinished"></translation> + <translation type="unfinished">IDE vezérlÅ‘</translation> </message> <message> <source>SATA Controller</source> - <translation type="unfinished"></translation> + <translation type="unfinished">SATA vezérlÅ‘</translation> </message> <message> <source>SCSI Controller</source> - <translation type="unfinished"></translation> + <translation type="unfinished">SCSI vezérlÅ‘</translation> </message> <message> <source>Floppy Controller</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Floppy vezérlÅ‘</translation> </message> <message> <source>Hard &Disk:</source> - <translation type="unfinished"></translation> + <translation>&Merevlemez:</translation> </message> <message> <source>&CD/DVD Device:</source> - <translation type="unfinished"></translation> + <translation>&CD/DVD eszköz:</translation> </message> <message> <source>&Floppy Device:</source> - <translation type="unfinished"></translation> + <translation>&Floppy eszköz:</translation> </message> <message> <source>&Storage Tree</source> - <translation type="unfinished"></translation> + <translation>&Tárolófa</translation> </message> <message> <source>Contains all storage controllers for this machine and the virtual images and host drives attached to them.</source> - <translation type="unfinished"></translation> + <translation>A virtuális gép minden tárolási vezérlÅ‘jét, illetve a géphez csatolt összes lemezképét, és gazdaeszközét tartalmazza.</translation> </message> <message> <source>Information</source> - <translation type="unfinished"></translation> + <translation>Információ</translation> </message> <message> <source>The Storage Tree can contain several controllers of different types. This machine currently has no controllers.</source> @@ -9175,31 +9184,33 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </message> <message> <source>Attributes</source> - <translation type="unfinished"></translation> + <translation>Paraméterek</translation> </message> <message> <source>&Name:</source> - <translation type="unfinished">&Név:</translation> + <translation>&Név:</translation> </message> <message> <source>Changes the name of the storage controller currently selected in the Storage Tree.</source> - <translation type="unfinished"></translation> + <translation>Ãtnevezi a tárolófában kijelölt vezérlÅ‘t.</translation> </message> <message> <source>&Type:</source> - <translation type="unfinished"></translation> + <translation>&TÃpus:</translation> </message> <message> <source>Selects the sub-type of the storage controller currently selected in the Storage Tree.</source> - <translation type="unfinished"></translation> + <translatorcomment>CHECKIT</translatorcomment> + <translation>A kijelölt vezérlÅ‘ altÃpusát választhatod ki.</translation> </message> <message> <source>S&lot:</source> - <translation type="unfinished"></translation> + <translation>Csat&lakozó:</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 type="unfinished"></translation> + <translatorcomment>CHECKIT</translatorcomment> + <translation>Az eszköz csatlakozóját adhatod meg. Az elérhetÅ‘ csatlakozók száma függ a vezérlÅ‘ tÃpusától, és a többi eszköztÅ‘l is.</translation> </message> <message> <source>Selects the virtual disk image or the host drive used by this attachment.</source> @@ -9207,15 +9218,15 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </message> <message> <source>Opens the Virtual Media Manager to select a virtual image for this attachment.</source> - <translation type="unfinished"></translation> + <translation>MegjelenÃti a Virtuális média-kezelÅ‘t a csatolandó lemezkép kiválasztásához.</translation> </message> <message> <source>Open Virtual Media Manager</source> - <translation type="unfinished"></translation> + <translation>Virtuális média-kezelÅ‘ megnyitása</translation> </message> <message> <source>D&ifferencing Disks</source> - <translation type="unfinished"></translation> + <translation>&Különbözeti lemezek</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> @@ -9227,27 +9238,27 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </message> <message> <source>Virtual Size:</source> - <translation type="unfinished"></translation> + <translation>Virtuális méret:</translation> </message> <message> <source>Actual Size:</source> - <translation type="unfinished"></translation> + <translation>Jelenlegi méret:</translation> </message> <message> <source>Size:</source> - <translation type="unfinished"></translation> + <translation>Méret:</translation> </message> <message> <source>Location:</source> - <translation type="unfinished"></translation> + <translation>Hely:</translation> </message> <message> <source>Type (Format):</source> - <translation type="unfinished"></translation> + <translation>TÃpus (formátum):</translation> </message> <message> <source>Attached To:</source> - <translation type="unfinished"></translation> + <translation>Csatlakoztatva:</translation> </message> </context> <context> @@ -9298,11 +9309,11 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </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="unfinished">Az adapter MAC cÃme. Ez pontosan 12 karakteres lehet, és csak a (0-9,A-F) betűkbÅ‘l állhat. A második karakternek páratlan számjegynek kell lenni.</translation> + <translation>Az adapter MAC cÃme. Ez pontosan 12 karakteres lehet, és csak a (0-9,A-F) betűkbÅ‘l állhat. A második karakternek páratlan számjegynek kell lenni.</translation> </message> <message> <source>Generates a new random MAC address.</source> - <translation type="unfinished">Véletlen MAC cÃm generálása.</translation> + <translation>Véletlen MAC cÃm generálása.</translation> </message> <message> <source>&Generate</source> @@ -9310,7 +9321,7 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </message> <message> <source>Indicates whether the virtual network cable is plugged in on machine startup or not.</source> - <translation type="unfinished">Jelzi, hogy a virtuális hálózati kábel be lesz-e dugva a gépbe induláskor vagy sem.</translation> + <translation>Jelzi, hogy a virtuális hálózati kábel be lesz-e dugva a gépbe induláskor vagy sem.</translation> </message> <message> <source>Ca&ble Connected</source> @@ -9397,19 +9408,19 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </message> <message> <source>A&dvanced</source> - <translation type="unfinished"></translation> + <translation>H&aladó</translation> </message> <message> <source>Shows or hides additional network adapter options.</source> - <translation type="unfinished"></translation> + <translation>MegjelenÃti vagy elrejti a további hálókártya opciókat.</translation> </message> <message> <source>&Mac Address:</source> - <translation type="unfinished"></translation> + <translation>&MAC cÃm:</translation> </message> <message> <source>&Cable connected</source> - <translation type="unfinished">&Kábel bedugva</translation> + <translation>&Kábel bedugva</translation> </message> </context> <context> @@ -9503,11 +9514,11 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </message> <message> <source>Displays the IRQ number of this parallel port. This should be a whole number between <tt>0</tt> and <tt>255</tt>. Values greater than <tt>15</tt> may only be used if the <b>IO APIC</b> setting is enabled for this virtual machine.</source> - <translation type="unfinished"></translation> + <translation>A párhuzamos port megszakÃtásának száma. Bármely szám lehet <tt>0</tt> és <tt>255</tt> között. Ha az <b>IO APIC</b> engedélyezve van, a <tt>15</tt> feletti megszakÃtások foglaltak.</translation> </message> <message> <source>Displays the base I/O port address of this parallel port. Valid values are integer numbers in range from <tt>0</tt> to <tt>0xFFFF</tt>.</source> - <translation type="unfinished"></translation> + <translation>A párhuzamos port I/O báziscÃme. Bármely cÃm érvényes <tt>0</tt> és <tt>0xFFFF</tt> között.</translation> </message> </context> <context> @@ -9569,7 +9580,7 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </message> <message> <source>Lists all shared folders accessible to this machine. Use 'net use x: \\vboxsvr\share' to access a shared folder named <i>share</i> from a DOS-like OS, or 'mount -t vboxsf share mount_point' to access it from a Linux OS. This feature requires Guest Additions.</source> - <translation>Minden a gép számára elérhetÅ‘ osztott mappa listázása. A 'net use x: \\vboxsvr\share' parancs segÃtségével használható a <i>share</i> nevű megosztás a DOS-szerű OS-ekból, a 'mount -t vboxsf share mount_point' paranccsal pedig Linux-alapú OS-ekbÅ‘l. Guest Additions szükséges hozzá.</translation> + <translation>Minden a gép számára elérhetÅ‘ osztott mappa listázása. A 'net use x: \\vboxsvr\share' parancs segÃtségével használható a <i>share</i> nevű megosztás a DOS-szerű OS-ekból, a 'mount -t vboxsf share mount_point' paranccsal pedig Linux-alapú OS-ekbÅ‘l. Az integrációs szolgáltatások telepÃtése szükséges hozzá.</translation> </message> <message> <source>Name</source> @@ -9585,23 +9596,23 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </message> <message> <source> Global Folders</source> - <translation type="unfinished"></translation> + <translation>Globális mappák</translation> </message> <message> <source>&Add Shared Folder</source> - <translation type="unfinished"></translation> + <translation>Osztott mappa hozzá&adása</translation> </message> <message> <source>&Edit Shared Folder</source> - <translation type="unfinished"></translation> + <translation>Osztott mappa sz&erkesztése</translation> </message> <message> <source>&Remove Shared Folder</source> - <translation type="unfinished"></translation> + <translation>Osztott mappa tö&rlése</translation> </message> <message> <source>&Folders List</source> - <translation type="unfinished"></translation> + <translation>&Mappalista</translation> </message> </context> <context> @@ -9712,11 +9723,11 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a </message> <message> <source>Displays the IRQ number of this serial port. This should be a whole number between <tt>0</tt> and <tt>255</tt>. Values greater than <tt>15</tt> may only be used if the <b>IO APIC</b> setting is enabled for this virtual machine.</source> - <translation type="unfinished"></translation> + <translation>A soros port megszakÃtásának száma. Bármely szám lehet <tt>0</tt> és <tt>255</tt> között. Ha az <b>IO APIC</b> engedélyezve van, a <tt>15</tt> feletti megszakÃtások foglaltak.</translation> </message> <message> <source>Displays the base I/O port address of this serial port. Valid values are integer numbers in range from <tt>0</tt> to <tt>0xFFFF</tt>.</source> - <translation type="unfinished"></translation> + <translation>A soros port I/O báziscÃme. Bármely cÃm érvényes <tt>0</tt> és <tt>0xFFFF</tt> között.</translation> </message> </context> <context> @@ -9843,7 +9854,7 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a <translation>&Processzor(ok):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>A virtuális gép virtuális processzorainak számának vezérlései.</translation> </message> <message> @@ -9881,15 +9892,15 @@ hatására a virtuális gép látni fogja a hangkártyát, de nem szólal meg a <message> <source><qt>%1&nbsp;CPUs</qt></source> <comment>%1 is host cpu count * 2 for now</comment> - <translation type="unfinished"><qt>%1&nbsp;processzor</qt></translation> + <translation><qt>%1&nbsp;processzor</qt></translation> </message> <message> <source>When checked, the guest will support the Extended Firmware Interface (EFI), which is required to boot certain guest OSes. Non-EFI aware OSes will not be able to boot if this option is activated.</source> - <translation type="unfinished"></translation> + <translation>Ha engedélyezed, a gép támogatni fogja az Extended Firmware Interface-t (EFI), ami szükséges néhány operációs rendszer elindÃtásához. A nem EFI-képes rendszerek nem lesznek képesek elindulni, ha ez az opció aktÃv.</translation> </message> <message> <source>Enable &EFI (special OSes only)</source> - <translation type="unfinished"></translation> + <translation>&EFI engedélyezése (különleges OS-eknek)</translation> </message> </context> <context> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts index 53e0acd5b..5e6fece36 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>David Yacobus <david_yacobus@yahoo.com></translation> + <translation type="obsolete">David Yacobus <david_yacobus@yahoo.com></translation> </message> </context> <context> @@ -1908,7 +1908,7 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation type="unfinished"></translation> </message> </context> @@ -3179,7 +3179,7 @@ p, li { white-space: pre-wrap; } <message> <source><nobr>%1 MB</nobr></source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><nobr>%4 MB</nobr> {1 ?}</translation> </message> <message> <source>Processor(s)</source> @@ -5936,7 +5936,7 @@ langkah ini dan memasang hard disk pada waktu lain menggunakan dialog Setting Me <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>Dialog Registrasi VirtualBox</translation> + <translation type="obsolete">Dialog Registrasi VirtualBox</translation> </message> <message> <source><p>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.</p><p>Enter your full name using Latin characters and your e-mail address to the fields below. Please note that innotek will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, innotek will never pass your data to third parties. Detailed information about how we use your personal data can be found in the <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -5948,7 +5948,7 @@ langkah ini dan memasang hard disk pada waktu lain menggunakan dialog Setting Me </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Masukkan nama lengkap anda menggunakan huruf latin.</translation> + <translation type="obsolete">Masukkan nama lengkap anda menggunakan huruf latin.</translation> </message> <message> <source>&E-mail</source> @@ -5956,7 +5956,7 @@ langkah ini dan memasang hard disk pada waktu lain menggunakan dialog Setting Me </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Masukkan e-mail addres anda yang masih valid.</translation> + <translation type="obsolete">Masukkan e-mail addres anda yang masih valid.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -5968,7 +5968,7 @@ langkah ini dan memasang hard disk pada waktu lain menggunakan dialog Setting Me </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Selamat datang di Form Registrasi VirtualBox!</translation> + <translation type="obsolete">Selamat datang di Form Registrasi VirtualBox!</translation> </message> <message> <source>&Confirm</source> @@ -5984,7 +5984,7 @@ langkah ini dan memasang hard disk pada waktu lain menggunakan dialog Setting Me </message> <message> <source>Could not perform connection handshake.</source> - <translation>Tidak dapat melakukan handshake koneksi.</translation> + <translation type="obsolete">Tidak dapat melakukan handshake koneksi.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -5996,63 +5996,7 @@ langkah ini dan memasang hard disk pada waktu lain menggunakan dialog Setting Me </message> <message> <source>Cancel</source> - <translation type="unfinished">Batal</translation> - </message> - <message> - <source>Select Country/Territory</source> - <translation type="unfinished"></translation> - </message> - <message> - <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &already have a Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&E-mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &would like to create a new Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&First Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Last Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Company:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&untry:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>E-&mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>P&assword:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&nfirm Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Register</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Batal</translation> </message> </context> <context> @@ -9847,7 +9791,7 @@ membuat guest dapat melihat sebuah kartu suara, namuan semua akses kepadanya aka <translation type="unfinished"></translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts index 0e38389ea..b5bd65ed2 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Vincenzo Reale, Ciro Mattia Gonano</translation> + <translation type="obsolete">Vincenzo Reale, Ciro Mattia Gonano</translation> </message> </context> <context> @@ -2060,7 +2060,7 @@ p, li { white-space: pre-wrap; } <translation>Anteprima in tempo reale &dell'icona del pannello</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>Mostr&a automaticamente il pannello e la barra dei menu a schermo intero</translation> </message> </context> @@ -6318,7 +6318,7 @@ questo passo e collegare hard disk più tardi tramite Impostazioni della MV.< <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>Finestra di registrazione VirtualBox</translation> + <translation type="obsolete">Finestra di registrazione VirtualBox</translation> </message> <message> <source><p>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.</p><p>Enter your full name using Latin characters and your e-mail address to the fields below. Please note that innotek will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, innotek will never pass your data to third parties. Detailed information about how we use your personal data can be found in the <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6330,7 +6330,7 @@ questo passo e collegare hard disk più tardi tramite Impostazioni della MV.< </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Inserite il vostro nome completo con caratteri Latin.</translation> + <translation type="obsolete">Inserite il vostro nome completo con caratteri Latin.</translation> </message> <message> <source>&E-mail</source> @@ -6338,7 +6338,7 @@ questo passo e collegare hard disk più tardi tramite Impostazioni della MV.< </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Inserite un indirizzo mail valido.</translation> + <translation type="obsolete">Inserite un indirizzo mail valido.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -6350,7 +6350,7 @@ questo passo e collegare hard disk più tardi tramite Impostazioni della MV.< </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Benvenuti al modulo di registrazione di VirtualBox!</translation> + <translation type="obsolete">Benvenuti al modulo di registrazione di VirtualBox!</translation> </message> <message> <source>&Confirm</source> @@ -6366,7 +6366,7 @@ questo passo e collegare hard disk più tardi tramite Impostazioni della MV.< </message> <message> <source>Could not perform connection handshake.</source> - <translation>Impossibile completare l'handshake della connessione.</translation> + <translation type="obsolete">Impossibile completare l'handshake della connessione.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6382,63 +6382,63 @@ questo passo e collegare hard disk più tardi tramite Impostazioni della MV.< </message> <message> <source>Cancel</source> - <translation>Annulla</translation> + <translation type="obsolete">Annulla</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Seleziona Stato/Territorio</translation> + <translation type="obsolete">Seleziona Stato/Territorio</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Compila il modulo di registrazione per farci sapere che usi VirtualBox e, a scelta, per tenerti informato sulle novità e sugli aggiornamenti di VirtualBox.</p><p>Ti preghiamo di utilizzare caratteri Latin per la compilazione dei campi seguenti. Nota che Sun Microsystems utilizzerà queste informazioni solamente per raccogliere statistiche di utilizzo del prodotto e per inviare le newsletter di VirtualBox. In particolare, Sun Microsystems non fornirà mai i tuoi dati a terze parti. Informazioni dettagliate sull'utilzzo da parte nostra dei tuoi dati personali sono disponibili nella sezione <b>Privacy Policy</b> del manuale di VirtualBox o nella pagina <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> del sito web di VirtualBox.</p></translation> + <translation type="obsolete"><p>Compila il modulo di registrazione per farci sapere che usi VirtualBox e, a scelta, per tenerti informato sulle novità e sugli aggiornamenti di VirtualBox.</p><p>Ti preghiamo di utilizzare caratteri Latin per la compilazione dei campi seguenti. Nota che Sun Microsystems utilizzerà queste informazioni solamente per raccogliere statistiche di utilizzo del prodotto e per inviare le newsletter di VirtualBox. In particolare, Sun Microsystems non fornirà mai i tuoi dati a terze parti. Informazioni dettagliate sull'utilzzo da parte nostra dei tuoi dati personali sono disponibili nella sezione <b>Privacy Policy</b> del manuale di VirtualBox o nella pagina <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> del sito web di VirtualBox.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>&Ho già un account Sun Online:</translation> + <translation type="obsolete">&Ho già un account Sun Online:</translation> </message> <message> <source>&E-mail:</source> - <translation>&Email:</translation> + <translation type="obsolete">&Email:</translation> </message> <message> <source>&Password:</source> - <translation>&Password:</translation> + <translation type="obsolete">&Password:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Vorrei re&gistrarmi creando un nuovo account Sun Online:</translation> + <translation type="obsolete">Vorrei re&gistrarmi creando un nuovo account Sun Online:</translation> </message> <message> <source>&First Name:</source> - <translation>N&ome:</translation> + <translation type="obsolete">N&ome:</translation> </message> <message> <source>&Last Name:</source> - <translation>&Cognome:</translation> + <translation type="obsolete">&Cognome:</translation> </message> <message> <source>&Company:</source> - <translation>&Società :</translation> + <translation type="obsolete">&Società :</translation> </message> <message> <source>Co&untry:</source> - <translation>Sta&to:</translation> + <translation type="obsolete">Sta&to:</translation> </message> <message> <source>E-&mail:</source> - <translation>E&mail:</translation> + <translation type="obsolete">E&mail:</translation> </message> <message> <source>P&assword:</source> - <translation>P&assword:</translation> + <translation type="obsolete">P&assword:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Co&nferma password:</translation> + <translation type="obsolete">Co&nferma password:</translation> </message> <message> <source>&Register</source> - <translation>&Registra</translation> + <translation type="obsolete">&Registra</translation> </message> </context> <context> @@ -10827,7 +10827,7 @@ fa vedere al sistema Guest una scheda sonora, ignorando qualsiasi accesso ad ess <translation>&Processore(i):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Controlla il numero di CPU virtuali di questa macchina virtuale.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts index 789a36692..2d03a166c 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts @@ -1,53 +1,49 @@ <?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS><TS version="1.1" language="ja"> -<defaultcodec></defaultcodec> +<!DOCTYPE TS> +<TS version="2.0" language="ja"> <context> <name>@@@</name> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2608"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2622"/> <source>English</source> <comment>Native language name</comment> <translation>日本語</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2619"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2633"/> <source>--</source> <comment>Native language country name (empty if this language is for all countries)</comment> <translation></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2632"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2646"/> <source>English</source> <comment>Language name, in English</comment> <translation>Japanese</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2643"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2657"/> <source>--</source> <comment>Language country name, in English (empty if native country name is empty)</comment> <translation></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2656"/> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Toshimitsu Tanaka</translation> + <translation type="obsolete">Toshimitsu Tanaka</translation> </message> </context> <context> <name>AttachmentsModel</name> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2656"/> <source>Double-click to add a new attachment</source> <translation type="obsolete">ダブルクリックã§æ–°è¦ã®å‰²ã‚Šå½“ã¦ã‚’è¿½åŠ </translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2656"/> <source>Hard Disk</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2656"/> <source>Slot</source> <translation type="obsolete">スãƒãƒƒãƒˆ</translation> </message> @@ -55,22 +51,18 @@ <context> <name>BootItemsList</name> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2656"/> <source>Move Up (Ctrl-Up)</source> <translation type="obsolete">上ã«ç§»å‹•(Ctrl-Up)</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2656"/> <source>Move Down (Ctrl-Down)</source> <translation type="obsolete">下ã«ç§»å‹•(Ctrl-Down)</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2656"/> <source>Moves the selected boot device up.</source> <translation type="obsolete">é¸æŠžã—ãŸèµ·å‹•ãƒ‡ãƒã‚¤ã‚¹ã‚’上ã«ç§»å‹•ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2656"/> <source>Moves the selected boot device down.</source> <translation type="obsolete">é¸æŠžã—ãŸèµ·å‹•ãƒ‡ãƒã‚¤ã‚¹ã‚’下ã«ç§»å‹•ã—ã¾ã™ã€‚</translation> </message> @@ -78,7 +70,6 @@ <context> <name>BootItemsTable</name> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2656"/> <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> @@ -86,17 +77,14 @@ <context> <name>HDItemsModel</name> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2656"/> <source>Double-click to add a new attachment</source> <translation type="obsolete">ダブルクリックã§æ–°è¦ã®å‰²ã‚Šå½“ã¦ã‚’è¿½åŠ </translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2656"/> <source>Hard Disk</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2656"/> <source>Slot</source> <translation type="obsolete">スãƒãƒƒãƒˆ</translation> </message> @@ -104,77 +92,76 @@ <context> <name>QApplication</name> <message> - <location filename="../src/main.cpp" line="444"/> + <location filename="../src/main.cpp" line="445"/> <source>Executable <b>%1</b> requires Qt %2.x, found Qt %3.</source> <translation>実行ファイル <b>%1</b> ã¯Qt %2.x ãŒå¿…è¦ã§ã™ã€‚Qt %3 ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/main.cpp" line="449"/> + <location filename="../src/main.cpp" line="450"/> <source>Incompatible Qt Library Error</source> <translation>互æ›æ€§ã®ãªã„Qtライブラリエラー</translation> </message> <message> - <location filename="../src/main.cpp" line="674"/> + <location filename="../src/main.cpp" line="675"/> <source>VirtualBox - Error In %1</source> <translation>VirtualBox - %1 ã®ã‚¨ãƒ©ãƒ¼</translation> </message> <message> - <location filename="../src/main.cpp" line="679"/> + <location filename="../src/main.cpp" line="680"/> <source><html><b>%1 (rc=%2)</b><br/><br/></source> <translation><html><b>%1 (rc=%2)</b><br/><br/></translation> </message> <message> - <location filename="../src/main.cpp" line="105"/> + <location filename="../src/main.cpp" line="106"/> <source>Please try reinstalling VirtualBox.</source> <translation>VirtualBoxã‚’å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/main.cpp" line="105"/> <source>This error means that the kernel driver was either not able to allocate enough memory or that some mapping operation failed.<br/><br/>There are known problems with Linux 2.6.29. If you are running such a kernel, please edit /usr/src/vboxdrv-*/Makefile and enable <i>VBOX_USE_INSERT_PAGE = 1</i>. After that, re-compile the kernel module by executing<br/><br/> <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>as root.</source> <translation type="obsolete">ã“ã®ã‚¨ãƒ©ãƒ¼ã¯ã€ã‚«ãƒ¼ãƒãƒ« ドライãƒã«å分ãªãƒ¡ãƒ¢ãƒªã‚’割り当ã¦ã§ããªã„ã‹ã€ã¾ãŸã¯ãƒžãƒƒãƒ”ングæ“作ã«å¤±æ•—ã—ãŸã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚<br/><br/>ã“ã‚Œã¯Linux 2.6.29ã®æ—¢çŸ¥ã®å•é¡Œã§ã™ã€‚ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚«ãƒ¼ãƒãƒ«ã‚’使用ã™ã‚‹ãªã‚‰ã°ã€/usr/src/vboxdrv-*/Makefileを編集ã—ã€<i>VBOX_USE_INSERT_PAGE = 1</i>を有効ã«ã—ã¦ãã ã•ã„。ãã®å¾Œã€root権é™ã§<br/><br/> <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>を実行ã—ã¦ã‚«ãƒ¼ãƒãƒ« モジュールをå†ã‚³ãƒ³ãƒ‘イルã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/main.cpp" line="74"/> + <location filename="../src/main.cpp" line="75"/> <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<br/><br/> <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>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>VirtualBoxã®Linuxカーãƒãƒ« ドライãƒ(vboxdrv)ã¯ãƒãƒ¼ãƒ‰ã•ã‚Œã¾ã›ã‚“。ã¾ãŸã¯/dev/vboxdrvã®ãƒ‘ーミッションã«å•é¡ŒãŒã‚ã‚Šã¾ã™ã€‚root権é™ã§<br/><br/> <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>を実行ã—ã¦ã‚«ãƒ¼ãƒãƒ« モジュールをå†ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ã—ã¦ãã ã•ã„。Ubuntuã€Fedoraã¾ãŸã¯Mandrivaユーザーã¯æœ€åˆã«DKMSパッケージをインストールã—ã¦ãã ã•ã„。ã“ã®ãƒ‘ッケージã¯Linuxカーãƒãƒ«ã®å¤‰æ›´ã‚’把æ¡ã—ã€å¿…è¦ãªã‚‰ã°vboxdrvカーãƒãƒ« モジュールをå†ã‚³ãƒ³ãƒ‘イルã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/main.cpp" line="100"/> + <location filename="../src/main.cpp" line="101"/> <source>Make sure the kernel module has been loaded successfully.</source> <translation>カーãƒãƒ« モジュールãŒæ£ã—ããƒãƒ¼ãƒ‰ã•ã‚ŒãŸã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/main.cpp" line="601"/> + <location filename="../src/main.cpp" line="602"/> <source>VirtualBox - Runtime Error</source> <translation>VirtualBox - ランタイムエラー</translation> </message> <message> - <location filename="../src/main.cpp" line="607"/> + <location filename="../src/main.cpp" line="608"/> <source><b>Cannot access the kernel driver!</b><br/><br/></source> <translation><b>カーãƒãƒ«ãƒ‰ãƒ©ã‚¤ãƒã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“ï¼</b><br/><br/></translation> </message> <message> - <location filename="../src/main.cpp" line="631"/> + <location filename="../src/main.cpp" line="632"/> <source>Unknown error %2 during initialization of the Runtime</source> <translation>ランタイムã®åˆæœŸåŒ–ä¸ã«äºˆæœŸã—ãªã„エラー(%2)</translation> </message> <message> - <location filename="../src/main.cpp" line="621"/> + <location filename="../src/main.cpp" line="622"/> <source>Kernel driver not accessible</source> <translation>カーãƒãƒ«ãƒ‰ãƒ©ã‚¤ãƒã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„</translation> </message> <message> - <location filename="../src/main.cpp" line="84"/> + <location filename="../src/main.cpp" line="85"/> <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> <message> - <location filename="../src/main.cpp" line="91"/> + <location filename="../src/main.cpp" line="92"/> <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing<br/><br/> <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>may correct this. Make sure that you do not mix the OSE version and the PUEL version of VirtualBox.</source> <translation>カーãƒãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒé©åˆã—ã¾ã›ã‚“。VirtualBoxã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¯æˆåŠŸã—ã¾ã›ã‚“ã§ã—ãŸã€‚</br></br><font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>を実行ã™ã‚‹ã¨ã€ã“ã®å•é¡Œã¯ä¿®æ£ã•ã‚Œã‚‹ã§ã—ょã†ã€‚VirtualBoxã®OSEãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨PUELãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’混在ã—ã¦ä½¿ç”¨ã—ãªã„ã§ãã ã•ã„。</translation> </message> <message> - <location filename="../src/main.cpp" line="69"/> + <location filename="../src/main.cpp" line="70"/> <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> @@ -200,6 +187,7 @@ <translation>ディレクトリをé¸æŠž</translation> </message> <message> + <location filename="../src/extensions/QIFileDialog.cpp" line="450"/> <location filename="../src/extensions/QIFileDialog.cpp" line="689"/> <source>Select a file</source> <translation>ファイルをé¸æŠž</translation> @@ -208,7 +196,6 @@ <context> <name>QIHelpButton</name> <message> - <location filename="../src/extensions/QIFileDialog.cpp" line="689"/> <source>&Help</source> <translation type="obsolete">ヘルプ(&H)</translation> </message> @@ -226,46 +213,55 @@ <translation>å³</translation> </message> <message> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="306"/> <location filename="../src/extensions/QIHotKeyEdit.cpp" line="360"/> <source>Left Shift</source> <translation>å·¦ Shift</translation> </message> <message> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="307"/> <location filename="../src/extensions/QIHotKeyEdit.cpp" line="361"/> <source>Right Shift</source> <translation>å³ Shift</translation> </message> <message> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="308"/> <location filename="../src/extensions/QIHotKeyEdit.cpp" line="362"/> <source>Left Ctrl</source> <translation>å·¦ Ctrl</translation> </message> <message> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="309"/> <location filename="../src/extensions/QIHotKeyEdit.cpp" line="363"/> <source>Right Ctrl</source> <translation>å³ Ctrl</translation> </message> <message> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="310"/> <location filename="../src/extensions/QIHotKeyEdit.cpp" line="364"/> <source>Left Alt</source> <translation>å·¦ Alt</translation> </message> <message> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="311"/> <location filename="../src/extensions/QIHotKeyEdit.cpp" line="365"/> <source>Right Alt</source> <translation>å³ Alt</translation> </message> <message> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="312"/> <location filename="../src/extensions/QIHotKeyEdit.cpp" line="366"/> <source>Left WinKey</source> <translation>å·¦ Windowsã‚ー</translation> </message> <message> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="313"/> <location filename="../src/extensions/QIHotKeyEdit.cpp" line="367"/> <source>Right WinKey</source> <translation>å³ Windowsã‚ー</translation> </message> <message> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="314"/> <location filename="../src/extensions/QIHotKeyEdit.cpp" line="368"/> <source>Menu key</source> <translation>メニューã‚ー</translation> @@ -276,16 +272,22 @@ <translation>Alt Gr</translation> </message> <message> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="315"/> <location filename="../src/extensions/QIHotKeyEdit.cpp" line="370"/> <source>Caps Lock</source> <translation>Caps Lock</translation> </message> <message> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="316"/> <location filename="../src/extensions/QIHotKeyEdit.cpp" line="371"/> <source>Scroll Lock</source> <translation>Scroll Lock</translation> </message> <message> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="422"/> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="430"/> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="443"/> + <location filename="../src/extensions/QIHotKeyEdit.cpp" line="485"/> <location filename="../src/extensions/QIHotKeyEdit.cpp" line="602"/> <source><key_%1></source> <translation><ã‚ー %1></translation> @@ -460,7 +462,6 @@ <context> <name>QILabelPrivate</name> <message> - <location filename="../src/extensions/QILabel.cpp" line="204"/> <source>&Copy</source> <translation type="obsolete">コピー(&C)</translation> </message> @@ -506,7 +507,6 @@ <context> <name>QIRichLabel</name> <message> - <location filename="../src/extensions/QIMessageBox.cpp" line="393"/> <source>Copy to clipboard</source> <translation type="obsolete">クリップボードã«ã‚³ãƒ”ー</translation> </message> @@ -539,28 +539,26 @@ <context> <name>VBoxAboutDlg</name> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="64"/> + <location filename="../src/VBoxAboutDlg.cpp" line="65"/> <source>VirtualBox - About</source> <translation>VirtualBox ã«ã¤ã„ã¦</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="64"/> <source><qt>VirtualBox Graphical User Interface Version %1<br> %2</qt></source> <translation type="obsolete"><qt>VirtualBox グラフィカルユーザーインターフェース ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %1<br>%2</qt></translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="64"/> <source><qt>VirtualBox Graphical User Interface Version %1<br>%2</qt></source> <translation type="obsolete"><qt>VirtualBox グラフィカルユーザーインターフェース ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %1<br>%2</qt></translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="65"/> + <location filename="../src/VBoxAboutDlg.cpp" line="66"/> <source>VirtualBox Graphical User Interface</source> <translation>VirtualBox グラフィカルユーザーインターフェース</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> + <location filename="../src/VBoxAboutDlg.cpp" line="70"/> <source>Version %1</source> <translation>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %1</translation> </message> @@ -568,12 +566,10 @@ <context> <name>VBoxAboutNonOSEDlg</name> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>VirtualBox - About</source> <translation type="obsolete">VirtualBox ã«ã¤ã„ã¦</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>VirtualBox Graphical User Interface Version %1</source> <translation type="obsolete">VirtualBox グラフィカルユーザーインターフェース ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %1</translation> @@ -582,27 +578,22 @@ Version %1</source> <context> <name>VBoxAddNIDialog</name> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>Add Host Interface</source> <translation type="obsolete">ホスト インターフェースã®è¿½åŠ </translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>Interface Name</source> <translation type="obsolete">インターフェースå</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>Descriptive name of the new network interface</source> <translation type="obsolete">æ–°è¦ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ インターフェースå</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>&OK</source> <translation type="obsolete">OK(&O)</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>Cancel</source> <translation type="obsolete">ã‚ャンセル</translation> </message> @@ -610,67 +601,54 @@ Version %1</source> <context> <name>VBoxAddSFDialog</name> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>Add Share</source> <translation type="obsolete">共有フォルダã®è¿½åŠ </translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>Edit Share</source> <translation type="obsolete">è¨å®šã®ç·¨é›†</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>Select a folder to share</source> <translation type="obsolete">é¸æŠžã—ãŸãƒ•ã‚©ãƒ«ãƒ€ã‚’共有</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>Folder Path</source> <translation type="obsolete">フォルダã®ãƒ‘ス</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>Folder Name</source> <translation type="obsolete">フォルダå</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>Displays the path to an existing folder on the host PC.</source> <translation type="obsolete">ホストPC上ã®æ—¢å˜ã®ãƒ•ã‚©ãƒ«ãƒ€ã®ãƒ‘スを表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>Displays the name of the shared folder (as it will be seen by the guest OS).</source> <translation type="obsolete">ゲストOSã§ä½¿ç”¨ã•ã‚Œã‚‹å…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€åを表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>Opens the dialog to select a folder.</source> <translation type="obsolete">フォルダé¸æŠžãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’é–‹ãã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>Cancel</source> <translation type="obsolete">ã‚ャンセル</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>&OK</source> <translation type="obsolete">OK(&O)</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>&Make Permanent</source> <translation type="obsolete">永続化ã™ã‚‹(&M)</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>&Read-only</source> <translation type="obsolete">èªã¿è¾¼ã¿å°‚用(&R)</translation> </message> <message> - <location filename="../src/VBoxAboutDlg.cpp" line="69"/> <source>When checked, the guest OS will not be able to write to the specified shared folder.</source> <translation type="obsolete">ゲストOSã‹ã‚‰æŒ‡å®šã•ã‚ŒãŸå…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€ã¸ã®æ›¸ãè¾¼ã¿ã‚’ç¦æ¢ã—ã¾ã™ã€‚</translation> </message> @@ -741,6 +719,7 @@ Version %1</source> <translation>ãƒãƒ¼ã‚¸ãƒ§ãƒ³</translation> </message> <message> + <location filename="../src/widgets/VBoxApplianceEditorWgt.cpp" line="186"/> <location filename="../src/widgets/VBoxApplianceEditorWgt.cpp" line="791"/> <source>Description</source> <translation>説明</translation> @@ -816,6 +795,7 @@ Version %1</source> <translation>ä¸æ˜Žãªãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢é …ç›®</translation> </message> <message> + <location filename="../src/widgets/VBoxApplianceEditorWgt.cpp" line="221"/> <location filename="../src/widgets/VBoxApplianceEditorWgt.cpp" line="400"/> <source>MB</source> <translation>MB</translation> @@ -859,37 +839,30 @@ Version %1</source> <translation>仮想マシンã®é›»æºã‚ªãƒ•(&P)</translation> </message> <message> - <location filename="../src/VBoxCloseVMDlg.ui" line="159"/> <source>&Revert to the current snapshot</source> <translation type="obsolete">最新ã®ã‚¹ãƒŠãƒƒãƒ—ショットã®çŠ¶æ…‹ã«æˆ»ã™(&R)</translation> </message> <message> - <location filename="../src/VBoxCloseVMDlg.ui" line="159"/> <source>Revert the machine state to the state stored in the current snapshot</source> <translation type="obsolete">仮想マシンã®çŠ¶æ…‹ã‚’最新ã®ã‚¹ãƒŠãƒƒãƒ—ショットã«ä¿å˜ã•ã‚Œã¦ã„る状態ã«æˆ»ã™</translation> </message> <message> - <location filename="../src/VBoxCloseVMDlg.ui" line="159"/> <source>Help</source> <translation type="obsolete">ヘルプ</translation> </message> <message> - <location filename="../src/VBoxCloseVMDlg.ui" line="159"/> <source>F1</source> <translation type="obsolete">F1</translation> </message> <message> - <location filename="../src/VBoxCloseVMDlg.ui" line="159"/> <source>&OK</source> <translation type="obsolete">OK(&O)</translation> </message> <message> - <location filename="../src/VBoxCloseVMDlg.ui" line="159"/> <source>Cancel</source> <translation type="obsolete">ã‚ャンセル</translation> </message> <message> - <location filename="../src/VBoxCloseVMDlg.ui" line="159"/> <source><p>Saves the current execution state of the virtual machine to the physical hard disk of the host PC.</p> <p>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.</p> <p>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.</p></source> @@ -904,7 +877,6 @@ Version %1</source> <translation>シャットダウン シグナルé€ä¿¡(&E)</translation> </message> <message> - <location filename="../src/VBoxCloseVMDlg.ui" line="133"/> <source><p>Sends the ACPI Power Button press event to the virtual machine.</p> <p>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.</p> <p>If the machine doesn't respond to this action then the guest operating system may be misconfigured or doesn't understand ACPI Power Button events at all. In this case you should select the <b>Power off the machine</b> action to stop virtual machine execution.</p></source> @@ -913,7 +885,6 @@ Version %1</source> <p>仮想マシンãŒã“ã®å‹•ä½œã«åå¿œã—ãªã„ãªã‚‰ã°ã€ã‚²ã‚¹ãƒˆOSã®æ§‹æˆã«èª¤ã‚ŠãŒã‚ã‚‹ã‹ã€é›»æºãƒœã‚¿ãƒ³ オフã®ACPIイベントã«å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“。ã“ã®å ´åˆã€ä»®æƒ³ãƒžã‚·ãƒ³ã®å®Ÿè¡Œã‚’åœæ¢ã™ã‚‹ã«ã¯<b>[仮想マシンã®é›»æºã‚ªãƒ•]</b>ã‚’é¸æŠžã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/VBoxCloseVMDlg.ui" line="133"/> <source><p>Turns off the virtual machine.</p> <p>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 <i>data loss</i> inside the virtual machine. Selecting this action is recommended only if the virtual machine does not respond to the <b>Send the shutdown signal</b> action.</p></source> <translation type="obsolete"><p>仮想マシンã®é›»æºã‚’切りã¾ã™ã€‚</p> @@ -953,692 +924,649 @@ Version %1</source> <context> <name>VBoxConsoleWnd</name> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1613"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1631"/> <source>VirtualBox OSE</source> <translation>VirtualBox OSE</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1643"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1661"/> <source>&Fullscreen Mode</source> <translation>フルスクリーンモード(&F)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1644"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1662"/> <source>Switch to fullscreen mode</source> <translation>フルスクリーンモードã«åˆ‡ã‚Šæ›¿ãˆã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1638"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1656"/> <source>Mouse Integration</source> <comment>enable/disable...</comment> <translation>マウス統åˆ</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1640"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1658"/> <source>Auto-resize Guest Display</source> <comment>enable/disable...</comment> <translation>ゲストOSã®ç”»é¢ã‚’自動的ã«ãƒªã‚µã‚¤ã‚ºã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1649"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1667"/> <source>Auto-resize &Guest Display</source> <translation>ゲストOSã®ç”»é¢ã‚’自動リサイズ(&G)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1650"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1668"/> <source>Automatically resize the guest display when the window is resized (requires Guest Additions)</source> <translation>ウィンドウをリサイズã—ãŸã¨ãã€ã‚²ã‚¹ãƒˆOSã®ç”»é¢ã‚’自動的ã«ãƒªã‚µã‚¤ã‚ºã™ã‚‹(Guest Additions ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå¿…è¦)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1653"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1671"/> <source>&Adjust Window Size</source> <translation>ウィンドウã®ã‚µã‚¤ã‚ºã‚’調整(&A)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1654"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1672"/> <source>Adjust window size and position to best fit the guest display</source> <translation>ゲストOSã®ç”»é¢ã«åˆã‚ã›ã¦ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ã‚µã‚¤ã‚ºã¨ä½ç½®ã‚’調整ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1658"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1676"/> <source>&Insert Ctrl-Alt-Del</source> <translation>Ctrl-Alt-Delã‚’é€ä¿¡(&I)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1659"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1677"/> <source>Send the Ctrl-Alt-Del sequence to the virtual machine</source> <translation>仮想マシンã«Ctrl-Alt-Delシーケンスをé€ä¿¡ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1662"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1680"/> <source>&Insert Ctrl-Alt-Backspace</source> <translation>Ctrl-Alt-Backspaceã‚’é€ä¿¡(&I)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1663"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1681"/> <source>Send the Ctrl-Alt-Backspace sequence to the virtual machine</source> <translation>仮想マシンã«Ctrl-Alt-Backspaceシーケンスをé€ä¿¡ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1672"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1690"/> <source>&Reset</source> <translation>リセット(&R)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1673"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1691"/> <source>Reset the virtual machine</source> <translation>仮想マシンをリセットã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1681"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1697"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1699"/> <source>ACPI S&hutdown</source> <translation>ACPI シャットダウン(&H)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1683"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1701"/> <source>Send the ACPI Power Button press event to the virtual machine</source> <translation>仮想マシンã«é›»æºãƒœã‚¿ãƒ³ オフã®ACPIイベントをé€ä¿¡ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1685"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1703"/> <source>&Close...</source> <translation>é–‰ã˜ã‚‹(&C)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1686"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1704"/> <source>Close the virtual machine</source> <translation>仮想マシンを閉ã˜ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1666"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1684"/> <source>Take &Snapshot...</source> <translation>スナップショット作æˆ(&S)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1667"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1685"/> <source>Take a snapshot of the virtual machine</source> <translation>仮想マシンã®ã‚¹ãƒŠãƒƒãƒ—ショットを作æˆã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1667"/> <source>&Floppy Image...</source> <translation type="obsolete">フãƒãƒƒãƒ”ーイメージ(&F)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1667"/> <source>Mount a floppy image file</source> <translation type="obsolete">フãƒãƒƒãƒ”ーイメージファイルをマウントã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1667"/> <source>Unmount F&loppy</source> <translation type="obsolete">フãƒãƒƒãƒ”ーã®ãƒžã‚¦ãƒ³ãƒˆè§£é™¤(&L)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1667"/> <source>Unmount the currently mounted floppy media</source> <translation type="obsolete">マウントä¸ã®ãƒ•ãƒãƒƒãƒ”ーメディアをマウント解除ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1667"/> <source>&CD/DVD-ROM Image...</source> <translation type="obsolete">CD/DVD-ROMイメージ(&C)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1667"/> <source>Mount a CD/DVD-ROM image file</source> <translation type="obsolete">CD/DVD-ROMイメージファイルをマウントã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1667"/> <source>Unmount C&D/DVD-ROM</source> <translation type="obsolete">CD/DVD-ROMã®ãƒžã‚¦ãƒ³ãƒˆè§£é™¤(&D)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1667"/> <source>Unmount the currently mounted CD/DVD-ROM media</source> <translation type="obsolete">マウントä¸ã®CD/DVDメディアをマウント解除ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1702"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1720"/> <source>Remote Desktop (RDP) Server</source> <comment>enable/disable...</comment> <translation>リモートデスクトップ(RDP)サーãƒãƒ¼</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1702"/> <source>Remote Dis&play</source> <translation type="obsolete">リモートディスプレイ(&P)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1700"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1718"/> <source>Enable or disable remote desktop (RDP) connections to this machine</source> <translation>ã“ã®ä»®æƒ³ãƒžã‚·ãƒ³ã¸ã®ãƒªãƒ¢ãƒ¼ãƒˆãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—(RDP)接続を有効化ã¾ãŸã¯ç„¡åŠ¹åŒ–</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1696"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1714"/> <source>&Shared Folders...</source> <translation>共有フォルダ(&S)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1697"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1715"/> <source>Create or modify shared folders</source> <translation>共有フォルダè¨å®šãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’é–‹ã</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1705"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1723"/> <source>&Install Guest Additions...</source> <translation>Guest Additions ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«(&I)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1706"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1724"/> <source>Mount the Guest Additions installation image</source> <translation>Guest Additions インストールイメージをマウントã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1706"/> <source>&VirtualBox Web Site...</source> <translation type="obsolete">VirtualBox Webサイト(&V)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1706"/> <source>Open the browser and go to the VirtualBox product web site</source> <translation type="obsolete">Webブラウザã§VirtualBox製å“ã®Webサイトを開ã</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1706"/> <source>&About VirtualBox...</source> <translation type="obsolete">VirtualBox ã«ã¤ã„ã¦(&A)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1706"/> <source>Show a dialog with product information</source> <translation type="obsolete">製å“æƒ…å ±ãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’表示ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1706"/> <source>&Reset All Warnings</source> <translation type="obsolete">ã™ã¹ã¦ã®è¦å‘Šã‚’リセット(&R)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1706"/> <source>Go back to showing all suppressed warnings and messages</source> <translation type="obsolete">ã™ã¹ã¦ã®æŠ‘æ¢ã•ã‚ŒãŸè¦å‘Šã¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’å†åº¦è¡¨ç¤ºã•ã›ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1706"/> <source>Mount &Floppy</source> <translation type="obsolete">フãƒãƒƒãƒ”ーã®ãƒžã‚¦ãƒ³ãƒˆ(&F)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1706"/> <source>Mount &CD/DVD-ROM</source> <translation type="obsolete">CD/DVD-ROMã®ãƒžã‚¦ãƒ³ãƒˆ(&C)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1708"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1726"/> <source>&USB Devices</source> <translation>USB デãƒã‚¤ã‚¹(&U)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1729"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1747"/> <source>&Devices</source> <translation>デãƒã‚¤ã‚¹(&D)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1734"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1752"/> <source>De&bug</source> <translation>デãƒãƒƒã‚°(&B)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1736"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1754"/> <source>&Help</source> <translation>ヘルプ(&H)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1736"/> <source>Indicates whether the guest display auto-resize function is On (<img src=auto_resize_on_16px.png/>) or Off (<img src=auto_resize_off_16px.png/>). Note that this function requires Guest Additions to be installed in the guest OS.</source> <translation type="obsolete">ゲストOSã®ç”»é¢ã®è‡ªå‹•ãƒªã‚µã‚¤ã‚ºæ©Ÿèƒ½ãŒæœ‰åŠ¹ãªã¨ã(<img src=auto_resize_on_16px.png/>)ã‚’ã€ç„¡åŠ¹ãªã¨ã(<img src=auto_resize_off_16px.png/>)を表示ã—ã¾ã™ã€‚注:本機能ã®åˆ©ç”¨ã«ã¯ã‚²ã‚¹ãƒˆOSã« Guest Additions ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå¿…è¦ã§ã™ã€‚ </translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1736"/> <source>Indicates whether the host mouse pointer is captured by the guest OS:<br><nobr><img src=mouse_disabled_16px.png/>&nbsp;&nbsp;pointer is not captured</nobr><br><nobr><img src=mouse_16px.png/>&nbsp;&nbsp;pointer is captured</nobr><br><nobr><img src=mouse_seamless_16px.png/>&nbsp;&nbsp;mouse integration (MI) is On</nobr><br><nobr><img src=mouse_can_seamless_16px.png/>&nbsp;&nbsp;MI is Off, pointer is captured</nobr><br><nobr><img src=mouse_can_seamless_uncaptured_16px.png/>&nbsp;&nbsp;MI is Off, pointer is not captured</nobr><br>Note that the mouse integration feature requires Guest Additions to be installed in the guest OS.</source> <translation type="obsolete">ホスト マウスãƒã‚¤ãƒ³ã‚¿ã®ã‚ャプãƒãƒ£çŠ¶æ…‹ã‚’表示:<br><nobr><img src=mouse_disabled_16px.png/>&nbsp;&nbsp;ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã¾ã›ã‚“</nobr><br><nobr><img src=mouse_16px.png/>&nbsp;&nbsp;ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã¾ã™</nobr><br><nobr><img src=mouse_seamless_16px.png/>&nbsp;&nbsp;マウス統åˆã¯æœ‰åŠ¹ã§ã™</nobr><br><nobr><img src=mouse_can_seamless_16px.png/>&nbsp;&nbsp;マウス統åˆã¯ç„¡åŠ¹ã€ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã¾ã™</nobr><br><nobr><img src=mouse_can_seamless_uncaptured_16px.png/>&nbsp;&nbsp;マウス統åˆã¯ç„¡åŠ¹ã€ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã¾ã›ã‚“</nobr><br> 注:マウス統åˆæ©Ÿèƒ½ã®åˆ©ç”¨ã«ã¯ã‚²ã‚¹ãƒˆOSã« Guest Additions ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå¿…è¦ã§ã™ã€‚ </translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1736"/> <source>Shows the currently assigned Host key.<br>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">ç¾åœ¨å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„るホストã‚ーを表示ã—ã¾ã™ã€‚<br>ホストã‚ーをå˜ç‹¬ã§æŠ¼ã™ã¨ã€ã‚ーボートã¨ãƒžã‚¦ã‚¹ã®åˆ¶å¾¡ãŒåˆ‡ã‚Šæ›¿ã‚ã‚Šã¾ã™ã€‚ã¾ãŸã€ä»–ã®ã‚ーã¨åˆã‚ã›ã¦ã‚ーボード ショートカットã®æ“作ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3104"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3138"/> <source><hr>The VRDP Server is listening on port %1</source> <translation><hr>VRDPサーãƒãƒ¼ã¯ãƒãƒ¼ãƒˆ %1 ã‚’å¾…ã¡å—ã‘ã—ã¦ã„ã¾ã™</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3185"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3219"/> <source>&Pause</source> <translation>一時åœæ¢(&P)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3186"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3220"/> <source>Suspend the execution of the virtual machine</source> <translation>仮想マシンã®å®Ÿè¡Œã‚’一時åœæ¢ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3190"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3224"/> <source>R&esume</source> <translation>å†é–‹(&E)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3191"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3225"/> <source>Resume the execution of the virtual machine</source> <translation>仮想マシンã®å®Ÿè¡Œã‚’å†é–‹ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3199"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3233"/> <source>Disable &Mouse Integration</source> <translation>マウス統åˆã‚’無効化(&M)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3200"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3234"/> <source>Temporarily disable host mouse pointer integration</source> <translation>一時的ã«ãƒ›ã‚¹ãƒˆ マウスãƒã‚¤ãƒ³ã‚¿ã®çµ±åˆæ©Ÿèƒ½ã‚’無効化</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3204"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3238"/> <source>Enable &Mouse Integration</source> <translation>マウス統åˆã‚’有効化(&M)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3205"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3239"/> <source>Enable temporarily disabled host mouse pointer integration</source> <translation>一時的ã«ç„¡åŠ¹åŒ–ã—ãŸãƒ›ã‚¹ãƒˆ マウスãƒã‚¤ãƒ³ã‚¿ã®çµ±åˆæ©Ÿèƒ½ã‚’有効化</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2037"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="2055"/> <source>Snapshot %1</source> <translation>スナップショット %1</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2037"/> <source>Host Drive </source> <translation type="obsolete">ホスト ドライブ</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1727"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1742"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1745"/> <source>&Machine</source> <translation>仮想マシン(&M)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1727"/> <source>&Network Adapters</source> <translation type="obsolete">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタ(&N)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1727"/> <source>Adapter %1</source> <comment>network</comment> <translation type="obsolete">アダプタ %1</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1727"/> <source>Mount the selected physical drive of the host PC</source> <comment>Floppy tip</comment> <translation type="obsolete">é¸æŠžã•ã‚ŒãŸãƒ›ã‚¹ãƒˆPCã®ç‰©ç†ãƒ‰ãƒ©ã‚¤ãƒ–をマウントã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1727"/> <source>Mount the selected physical drive of the host PC</source> <comment>CD/DVD tip</comment> <translation type="obsolete">é¸æŠžã•ã‚ŒãŸãƒ›ã‚¹ãƒˆPCã®ç‰©ç†ãƒ‰ãƒ©ã‚¤ãƒ–をマウントã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1727"/> <source>Disconnect the cable from the selected virtual network adapter</source> <translation type="obsolete">é¸æŠžã•ã‚ŒãŸä»®æƒ³ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタã‹ã‚‰ã‚±ãƒ¼ãƒ–ルを切æ–ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1727"/> <source>Connect the cable to the selected virtual network adapter</source> <translation type="obsolete">é¸æŠžã•ã‚ŒãŸä»®æƒ³ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタã«ã‚±ãƒ¼ãƒ–ルを接続ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1646"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1664"/> <source>Seam&less Mode</source> <translation>シームレスモード(&L)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1647"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1665"/> <source>Switch to seamless desktop integration mode</source> <translation>シームレスモードã«åˆ‡ã‚Šæ›¿ãˆã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1647"/> <source>Indicates whether the keyboard is captured by the guest OS (<img src=hostkey_captured_16px.png/>) or not (<img src=hostkey_16px.png/>).</source> <translation type="obsolete">ã‚ーボードãŒã‚²ã‚¹ãƒˆOSã«ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã‚‹ã¨ã(<img src=hostkey_captured_16px.png/>)ã‚’ã€ç„¡åŠ¹ãªã¨ã(<img src=hostkey_16px.png/>)を表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1647"/> <source><qt><nobr>Indicates the activity of the floppy media:</nobr>%1</qt></source> <comment>Floppy tooltip</comment> <translation type="obsolete"><qt><nobr>フãƒãƒƒãƒ”ーメディアã®çŠ¶æ…‹ã‚’表示:</nobr>%1</qt></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1647"/> <source><br><nobr><b>Host Drive</b>: %1</nobr></source> <comment>Floppy tooltip</comment> <translation type="obsolete"><br><nobr><b>ホスト ドライブ</b>: %1</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1647"/> <source><br><nobr><b>Image</b>: %1</nobr></source> <comment>Floppy tooltip</comment> <translation type="obsolete"><br><nobr><b>イメージ</b>: %1</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1647"/> <source><br><nobr><b>No media mounted</b></nobr></source> <comment>Floppy tooltip</comment> <translation type="obsolete"><br><nobr><b>メディアãŒãƒžã‚¦ãƒ³ãƒˆã•ã‚Œã¦ã„ãªã„</b></nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1647"/> <source><qt><nobr>Indicates the activity of the CD/DVD-ROM media:</nobr>%1</qt></source> <comment>DVD-ROM tooltip</comment> <translation type="obsolete"><qt><nobr>CD/DVD-ROMメディアã®çŠ¶æ…‹ã‚’表示:</nobr>%1</qt></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1647"/> <source><br><nobr><b>Host Drive</b>: %1</nobr></source> <comment>DVD-ROM tooltip</comment> <translation type="obsolete"><br><nobr><b>ホスト ドライブ</b>: %1</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1647"/> <source><br><nobr><b>Image</b>: %1</nobr></source> <comment>DVD-ROM tooltip</comment> <translation type="obsolete"><br><nobr><b>イメージ</b>: %1</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1647"/> <source><br><nobr><b>No media mounted</b></nobr></source> <comment>DVD-ROM tooltip</comment> <translation type="obsolete"><br><nobr><b>メディアãŒãƒžã‚¦ãƒ³ãƒˆã•ã‚Œã¦ã„ãªã„</b></nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1647"/> <source><qt><nobr>Indicates activity on the the virtual hard disks:</nobr>%1</qt></source> <comment>HDD tooltip</comment> <translation type="obsolete"><qt><nobr>仮想ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®çŠ¶æ…‹ã‚’表示:</nobr>%1</qt></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2952"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="2986"/> <source><br><nobr><b>No hard disks attached</b></nobr></source> <comment>HDD tooltip</comment> <translation><br><nobr><b>ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ãªã„</b></nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2952"/> <source><qt><nobr>Indicates the activity of the network interfaces:</nobr>%1</qt></source> <comment>Network adapters tooltip</comment> <translation type="obsolete"><qt><nobr>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ インターフェースã®çŠ¶æ…‹ã‚’表示:</nobr>%1</qt></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3045"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3079"/> <source><br><nobr><b>Adapter %1 (%2)</b>: cable %3</nobr></source> <comment>Network adapters tooltip</comment> <translation><br><nobr><b>アダプタ %1 (%2)</b>:ケーブル %3</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3049"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3083"/> <source>connected</source> <comment>Network adapters tooltip</comment> <translation>接続</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3050"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3084"/> <source>disconnected</source> <comment>Network adapters tooltip</comment> <translation>切æ–</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3054"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3088"/> <source><br><nobr><b>All network adapters are disabled</b></nobr></source> <comment>Network adapters tooltip</comment> <translation><br><nobr><b>ã™ã¹ã¦ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタãŒç„¡åŠ¹</b></nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3054"/> <source><qt><nobr>Indicates the activity of the attached USB devices:</nobr>%1</qt></source> <comment>USB device tooltip</comment> <translation type="obsolete"><qt><nobr>USB デãƒã‚¤ã‚¹ã®çŠ¶æ…‹ã‚’表示:</nobr>%1</qt></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3078"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3112"/> <source><br><nobr><b>No USB devices attached</b></nobr></source> <comment>USB device tooltip</comment> <translation><br><nobr><b>USB デãƒã‚¤ã‚¹ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ãªã„</b></nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3083"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3117"/> <source><br><nobr><b>USB Controller is disabled</b></nobr></source> <comment>USB device tooltip</comment> <translation><br><nobr><b>USB コントãƒãƒ¼ãƒ©ãŒç„¡åŠ¹</b></nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3083"/> <source>Indicates whether the Remote Display (VRDP Server) is enabled (<img src=vrdp_16px.png/>) or not (<img src=vrdp_disabled_16px.png/>).</source> <translation type="obsolete">リモートディスプレイ(VRDPサーãƒ)機能ãŒæœ‰åŠ¹ãªã¨ã(<img src=vrdp_16px.png/>) ã‚’ã€ç„¡åŠ¹ãªã¨ã (<img src=vrdp_disabled_16px.png/>)を表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3083"/> <source><qt><nobr>Indicates the activity of the machineof the machine'sapos;s shared folders: shared folders:</nobr>%1</qt></source> <comment>Shared folders tooltip</comment> <translation type="obsolete"><qt><nobr>共有フォルダã®çŠ¶æ…‹ã‚’表示:</nobr>%1</qt></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3149"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3183"/> <source><br><nobr><b>No shared folders</b></nobr></source> <comment>Shared folders tooltip</comment> <translation><br><nobr><b>共有フォルダãªã—</b></nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3149"/> <source>&Contents...</source> <translation type="obsolete">ヘルプを表示(&C)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3149"/> <source>Show the online help contents</source> <translation type="obsolete">オンラインヘルプを表示</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3149"/> <source>R&egister VirtualBox...</source> <translation type="obsolete">VirtualBox を登録(&E)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3149"/> <source>Open VirtualBox registration form</source> <translation type="obsolete">VirtualBox 登録フォームを開ã</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1669"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1687"/> <source>Session I&nformation Dialog</source> <translation>ã‚»ãƒƒã‚·ãƒ§ãƒ³æƒ…å ±ãƒ€ã‚¤ã‚¢ãƒã‚°(&N)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1670"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1688"/> <source>Show Session Information Dialog</source> <translation>ã‚»ãƒƒã‚·ãƒ§ãƒ³æƒ…å ±ãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’表示</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1713"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1731"/> <source>&Statistics...</source> <comment>debug action</comment> <translation>統計(&S)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1715"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1733"/> <source>&Command Line...</source> <comment>debug action</comment> <translation>コマンドライン(&C)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1717"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1735"/> <source>&Logging...</source> <comment>debug action</comment> <translation>ãƒã‚°å–å¾—(&L)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1760"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1778"/> <source>Indicates whether the guest display auto-resize function is On (<img src=:/auto_resize_on_16px.png/>) or Off (<img src=:/auto_resize_off_16px.png/>). Note that this function requires Guest Additions to be installed in the guest OS.</source> <translation>ゲストOSã®ç”»é¢ã®è‡ªå‹•ãƒªã‚µã‚¤ã‚ºæ©Ÿèƒ½ãŒæœ‰åŠ¹ãªã¨ã(<img src=:/auto_resize_on_16px.png/>)ã‚’ã€ç„¡åŠ¹ãªã¨ã(<img src=:/auto_resize_off_16px.png/>)を表示ã—ã¾ã™ã€‚注:本機能ã®åˆ©ç”¨ã«ã¯ã‚²ã‚¹ãƒˆOSã« Guest Additions ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå¿…è¦ã§ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1741"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1759"/> <source>Indicates whether the host mouse pointer is captured by the guest OS:<br><nobr><img src=:/mouse_disabled_16px.png/>&nbsp;&nbsp;pointer is not captured</nobr><br><nobr><img src=:/mouse_16px.png/>&nbsp;&nbsp;pointer is captured</nobr><br><nobr><img src=:/mouse_seamless_16px.png/>&nbsp;&nbsp;mouse integration (MI) is On</nobr><br><nobr><img src=:/mouse_can_seamless_16px.png/>&nbsp;&nbsp;MI is Off, pointer is captured</nobr><br><nobr><img src=:/mouse_can_seamless_uncaptured_16px.png/>&nbsp;&nbsp;MI is Off, pointer is not captured</nobr><br>Note that the mouse integration feature requires Guest Additions to be installed in the guest OS.</source> <translation>ホスト マウスãƒã‚¤ãƒ³ã‚¿ã®ã‚ャプãƒãƒ£çŠ¶æ…‹ã‚’表示:<br><nobr><img src=:/mouse_disabled_16px.png/>&nbsp;&nbsp;ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã¾ã›ã‚“</nobr><br><nobr><img src=:/mouse_16px.png/>&nbsp;&nbsp;ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã¾ã™</nobr><br><nobr><<img src=:/mouse_seamless_16px.png/>&nbsp;&nbsp;マウス統åˆã¯æœ‰åŠ¹ã§ã™</nobr><br><nobr><img src=:/mouse_can_seamless_16px.png/>&nbsp;&nbsp;マウス統åˆã¯ç„¡åŠ¹ã€ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã¾ã™</nobr><br><nobr><img src=:/mouse_can_seamless_uncaptured_16px.png/>&nbsp;&nbsp;マウス統åˆã¯ç„¡åŠ¹ã€ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã¾ã›ã‚“</nobr><br> 注:マウス統åˆæ©Ÿèƒ½ã®åˆ©ç”¨ã«ã¯ã‚²ã‚¹ãƒˆOSã« Guest Additions ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå¿…è¦ã§ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1749"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1767"/> <source>Indicates whether the keyboard is captured by the guest OS (<img src=:/hostkey_captured_16px.png/>) or not (<img src=:/hostkey_16px.png/>).</source> <translation>ã‚ーボードãŒã‚²ã‚¹ãƒˆOSã«ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã‚‹ã¨ã(<img src=:/hostkey_captured_16px.png/>ã‚’ã€ç„¡åŠ¹ãªã¨ã(<img src=:/hostkey_16px.png/>)を表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3100"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3134"/> <source>Indicates whether the Remote Display (VRDP Server) is enabled (<img src=:/vrdp_16px.png/>) or not (<img src=:/vrdp_disabled_16px.png/>).</source> <translation>リモートディスプレイ(VRDPサーãƒãƒ¼)機能ãŒæœ‰åŠ¹ãªã¨ã(<img src=:/vrdp_16px.png/>) ã‚’ã€ç„¡åŠ¹ãªã¨ã (<img src=:/vrdp_disabled_16px.png/>)を表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1752"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1770"/> <source>Shows the currently assigned Host key.<br>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>ç¾åœ¨å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„るホストã‚ーを表示ã—ã¾ã™ã€‚<br>ホストã‚ーをå˜ç‹¬ã§æŠ¼ã™ã¨ã€ã‚ーボートã¨ãƒžã‚¦ã‚¹ã®åˆ¶å¾¡ãŒåˆ‡ã‚Šæ›¿ã‚ã‚Šã¾ã™ã€‚ã¾ãŸã€ä»–ã®ã‚ーã¨åˆã‚ã›ã¦ã‚ーボード ショートカットã®æ“作ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1615"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1633"/> <source>Sun VirtualBox</source> <translation>Sun VirtualBox</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3165"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3199"/> <source>Indicates the status of the hardware virtualization features used by this virtual machine:<br><nobr><b>%1:</b>&nbsp;%2</nobr><br><nobr><b>%3:</b>&nbsp;%4</nobr></source> <comment>Virtualization Stuff LED</comment> <translation>仮想マシンã§ä½¿ç”¨ã•ã‚Œã‚‹ä»®æƒ³åŒ–支æ´æ©Ÿèƒ½ã®çŠ¶æ…‹ã‚’表示:<br><nobr><b>%1:</b>&nbsp;%2</nobr><br><nobr><b>%3:</b>&nbsp;%4</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3175"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3209"/> <source><br><nobr><b>%1:</b>&nbsp;%2</nobr></source> <comment>Virtualization Stuff LED</comment> <translation><br><nobr><b>%1:</b>&nbsp;%2</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1619"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1637"/> <source> EXPERIMENTAL build %1r%2 - %3</source> <translation>試験的ビルド %1r%2 - %3</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1690"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1708"/> <source>&CD/DVD Devices</source> <translation>CD/DVD デãƒã‚¤ã‚¹(&C)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1691"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1709"/> <source>&Floppy Devices</source> <translation>フãƒãƒƒãƒ”ー デãƒã‚¤ã‚¹(&F)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1693"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1711"/> <source>&Network Adapters...</source> <translation>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタ(&N)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1694"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1712"/> <source>Change the settings of network adapters</source> <translation>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタã®è¨å®šå¤‰æ›´</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="1699"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="1717"/> <source>&Remote Display</source> <translation>リモートディスプレイ(&R)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2316"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="2334"/> <source>More CD/DVD Images...</source> <translation>CD/DVD イメージã®è¿½åŠ ...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2317"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="2335"/> <source>Unmount CD/DVD Device</source> <translation>CD/DVD デãƒã‚¤ã‚¹ã®ãƒžã‚¦ãƒ³ãƒˆè§£é™¤</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2322"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="2340"/> <source>More Floppy Images...</source> <translation>フãƒãƒƒãƒ”ー イメージã®è¿½åŠ ...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2323"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="2341"/> <source>Unmount Floppy Device</source> <translation>フãƒãƒƒãƒ”ー デãƒã‚¤ã‚¹ã®ãƒžã‚¦ãƒ³ãƒˆè§£é™¤</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2342"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="2360"/> <source>No CD/DVD Devices Attached</source> <translation>CD/DVD デãƒã‚¤ã‚¹ 未割り当ã¦</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2345"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="2363"/> <source>No Floppy Devices Attached</source> <translation>フãƒãƒƒãƒ”ー デãƒã‚¤ã‚¹ 未割り当ã¦</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2928"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="2962"/> <source><p style='white-space:pre'><nobr>Indicates the activity of the virtual hard disks:</nobr>%1</p></source> <comment>HDD tooltip</comment> <translation><p style='white-space:pre'><nobr>アクティブãªä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’表示:</nobr>%1</p></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2959"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="2993"/> <source><p style='white-space:pre'><nobr>Indicates the activity of the CD/DVD devices:</nobr>%1</p></source> <comment>CD/DVD tooltip</comment> <translation><p style='white-space:pre'><nobr>アクティブãªCD/DVD デãƒã‚¤ã‚¹ã‚’表示:</nobr>%1</p></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2985"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3019"/> <source><br><nobr><b>No CD/DVD devices attached</b></nobr></source> <comment>CD/DVD tooltip</comment> <translation><br><nobr><b>CD/DVD デãƒã‚¤ã‚¹ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ãªã„</b></nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="2993"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3027"/> <source><p style='white-space:pre'><nobr>Indicates the activity of the floppy devices:</nobr>%1</p></source> <comment>FD tooltip</comment> <translation><p style='white-space:pre'><nobr>アクティブãªãƒ•ãƒãƒƒãƒ”ー デãƒã‚¤ã‚¹ã‚’表示:</nobr>%1</p></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3019"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3053"/> <source><br><nobr><b>No floppy devices attached</b></nobr></source> <comment>FD tooltip</comment> <translation><br><nobr><b>フãƒãƒƒãƒ”ー デãƒã‚¤ã‚¹ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ãªã„</b></nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3037"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3071"/> <source><p style='white-space:pre'><nobr>Indicates the activity of the network interfaces:</nobr>%1</p></source> <comment>Network adapters tooltip</comment> <translation><p style='white-space:pre'><nobr>アクティブãªãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ デãƒã‚¤ã‚¹ã‚’表示:</nobr>%1</p></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3062"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3096"/> <source><p style='white-space:pre'><nobr>Indicates the activity of the attached USB devices:</nobr>%1</p></source> <comment>USB device tooltip</comment> <translation><p style='white-space:pre'><nobr>アクティブãªUSB デãƒã‚¤ã‚¹ã‚’表示:</nobr>%1</p></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3145"/> <source><p style='white-space:pre'><nobr>Indicates the activity of the machine's shared folders:</nobr>%1</p></source> <comment>Shared folders tooltip</comment> <translation><p style='white-space:pre'><nobr>アクティブãªå…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€ã‚’表示:</nobr>%1</p></translation> @@ -1647,358 +1575,289 @@ Version %1</source> <context> <name>VBoxDiskImageManagerDlg</name> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Name</source> <translation type="obsolete">åå‰</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Virtual Size</source> <translation type="obsolete">仮想的ãªã‚µã‚¤ã‚º</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Actual Size</source> <translation type="obsolete">実際ã®ã‚µã‚¤ã‚º</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Size</source> <translation type="obsolete">サイズ</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Virtual Disk Manager</source> <translation type="obsolete">仮想ディスクマãƒãƒ¼ã‚¸ãƒ£</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>&Hard Disks</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯(&H)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>&CD/DVD Images</source> <translation type="obsolete">CD/DVDイメージ(&C)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>&Floppy Images</source> <translation type="obsolete">フãƒãƒƒãƒ”ーイメージ(&F)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Help</source> <translation type="obsolete">ヘルプ</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>F1</source> <translation type="obsolete">F1</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Invoke dialog's help</source> <translation type="obsolete">ダイアãƒã‚°ã®ãƒ˜ãƒ«ãƒ—を表示</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>&OK</source> <translation type="obsolete">OK(&O)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Accept dialog</source> <translation type="obsolete">ダイアãƒã‚°ã«åŒæ„</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Cancel</source> <translation type="obsolete">ã‚ャンセル</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Cancel dialog</source> <translation type="obsolete">ダイアãƒã‚°ã‚’ã‚ャンセル</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>--</source> <comment>no info</comment> <translation type="obsolete">--</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>&New...</source> <translation type="obsolete">æ–°è¦(&N)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>&Add...</source> <translation type="obsolete">è¿½åŠ (&A)...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>R&emove</source> <translation type="obsolete">除去(&E)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Re&lease</source> <translation type="obsolete">解放(&L)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Re&fresh</source> <translation type="obsolete">最新ã®æƒ…å ±ã«æ›´æ–°(&F)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>New</source> <translation type="obsolete">æ–°è¦</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Add</source> <translation type="obsolete">è¿½åŠ </translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Remove</source> <translation type="obsolete">除去</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Release</source> <translation type="obsolete">解放</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Refresh</source> <translation type="obsolete">最新ã®æƒ…å ±ã«æ›´æ–°</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Ctrl+N</source> <translation type="obsolete">Ctrl+N</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Ctrl+A</source> <translation type="obsolete">Ctrl+A</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Ctrl+D</source> <translation type="obsolete">Ctrl+D</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Ctrl+L</source> <translation type="obsolete">Ctrl+L</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Ctrl+R</source> <translation type="obsolete">Ctrl+R</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>&Actions</source> <translation type="obsolete">動作</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Location</source> <translation type="obsolete">å ´æ‰€</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Disk Type</source> <translation type="obsolete">ディスク タイプ</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Storage Type</source> <translation type="obsolete">ストレージ タイプ</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Attached to</source> <translation type="obsolete">割り当ã¦</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Snapshot</source> <translation type="obsolete">スナップショット</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Checking accessibility</source> <translation type="obsolete">アクセスå¯å¦ã‚’確èª</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><nobr><b>%1</b></nobr><br>Checking accessibility...</source> <comment>HDD</comment> <translation type="obsolete"><nobr><b>%1</b></nobr><br>アクセスå¯å¦ã‚’確èªä¸...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><nobr><b>%1</b></nobr><br><nobr>Disk type:&nbsp;&nbsp;%2</nobr><br><nobr>Storage type:&nbsp;&nbsp;%3</nobr></source> <translation type="obsolete"><nobr><b>%1</b></nobr><br><nobr>ディスク タイプ:&nbsp;&nbsp;%2</nobr><br><nobr>ストレージ タイプ:&nbsp;&nbsp;%3</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><br><nobr>Attached to:&nbsp;&nbsp;%1</nobr></source> <comment>HDD</comment> <translation type="obsolete"><br><nobr>割り当ã¦:&nbsp;&nbsp;%1</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><br><nobr>Snapshot:&nbsp;&nbsp;%5</nobr></source> <comment>HDD</comment> <translation type="obsolete"><br><nobr>スナップショット:&nbsp;&nbsp;%5</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><nobr><b>%1</b></nobr><br>Error checking media accessibility</source> <comment>HDD</comment> <translation type="obsolete"><nobr><b>%1</b></nobr><br>メディアã®ã‚¢ã‚¯ã‚»ã‚¹å¯å¦ç¢ºèªã§ã‚¨ãƒ©ãƒ¼</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><nobr><b>%1</b></nobr><br>%2</source> <comment>HDD</comment> <translation type="obsolete"><nobr><b>%1</b></nobr><br>%2</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><nobr><b>%1</b></nobr><br>Checking accessibility...</source> <comment>CD/DVD/Floppy</comment> <translation type="obsolete"><nobr><b>%1</b></nobr><br>アクセスå¯å¦ã‚’確èªä¸...</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><nobr><b>%1</b></nobr></source> <comment>CD/DVD/Floppy</comment> <translation type="obsolete"><nobr><b>%1</b></nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><br><nobr>Attached to:&nbsp;&nbsp;%1</nobr></source> <comment>CD/DVD/Floppy</comment> <translation type="obsolete"><br><nobr>割り当ã¦:&nbsp;&nbsp;%1</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><nobr><b>%1</b></nobr><br>Error checking media accessibility</source> <comment>CD/DVD/Floppy</comment> <translation type="obsolete"><nobr><b>%1</b></nobr><br>メディアã®ã‚¢ã‚¯ã‚»ã‚¹å¯å¦ç¢ºèªã§ã‚¨ãƒ©ãƒ¼</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><nobr><b>%1</b></nobr><br>%2</source> <translation type="obsolete"><nobr><b>%1</b></nobr><br>%2</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>The image file is not accessible</source> <comment>CD/DVD/Floppy</comment> <translation type="obsolete">イメージファイルã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>&Select</source> <translation type="obsolete">é¸æŠž(&S)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>All hard disk images (*.vdi; *.vmdk);;Virtual Disk images (*.vdi);;VMDK images (*.vmdk);;All files (*)</source> <translation type="obsolete">ã™ã¹ã¦ã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ•ã‚¡ã‚¤ãƒ«(*.vdi; *.vmdk);;仮想ディスクイメージ(*.vdi);;VMDKイメージ(*.vmdk);;ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ« (*)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Select a hard disk image file</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Select a CD/DVD-ROM disk image file</source> <translation type="obsolete">CD/DVD-ROMディスクイメージファイルをé¸æŠž</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Select a floppy disk image file</source> <translation type="obsolete">フãƒãƒƒãƒ”ーディスクイメージファイルをé¸æŠž</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Create a new virtual hard disk</source> <translation type="obsolete">æ–°è¦ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®ä½œæˆ</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Add (register) an existing image file</source> <translation type="obsolete">æ—¢å˜ã®ãƒ¡ãƒ‡ã‚£ã‚¢ ãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¿½åŠ (登録)ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Remove (unregister) the selected media</source> <translation type="obsolete">é¸æŠžã—ãŸãƒ¡ãƒ‡ã‚£ã‚¢ã‚’å–り除ã(登録解除)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Release the selected media by detaching it from the machine</source> <translation type="obsolete">é¸æŠžã—ãŸãƒ¡ãƒ‡ã‚£ã‚¢ã‚’仮想マシンã‹ã‚‰å‰²ã‚Šå½“ã¦è§£é™¤ã—ã¦è§£æ”¾ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Refresh the media list</source> <translation type="obsolete">メディアリストを最新ã®æƒ…å ±ã«æ›´æ–°</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>CD/DVD-ROM images (*.iso);;All files (*)</source> <translation type="obsolete">CD/DVD-ROMイメージ(*.iso);;ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«(*)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Floppy images (*.img);;All files (*)</source> <translation type="obsolete">フãƒãƒƒãƒ”ーイメージ(*.img);;ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«(*)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <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);;仮想ディスクイメージ(*.vdi);;VMDKイメージ(*.vmdk);;VHDイメージ(*.vhd);;ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ« (*)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Hard &Disks</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯(&D)</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><nobr>Location:</nobr></source> <translation type="obsolete"><nobr>å ´æ‰€:</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><nobr>Disk Type:</nobr></source> <translation type="obsolete"><nobr>ディスク タイプ:</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><nobr>&nbsp;&nbsp;Storage Type:</nobr></source> <translation type="obsolete"><nobr>&nbsp;&nbsp;ストレージ タイプ:</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><nobr>Attached to:</nobr></source> <translation type="obsolete"><nobr>割り当ã¦å…ˆ:</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><nobr>&nbsp;&nbsp;Snapshot:</nobr></source> <translation type="obsolete"><nobr>&nbsp;&nbsp;スナップショット:</nobr></translation> </message> @@ -2006,37 +1865,30 @@ Version %1</source> <context> <name>VBoxDownloaderWgt</name> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Cancel</source> <translation type="obsolete">ã‚ャンセル</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Downloading the VirtualBox Guest Additions CD image from <nobr><b>%1</b>...</nobr></source> <translation type="obsolete">VirtualBox Guest Additions CDイメージを<nobr><b>%1</b>ã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰...</nobr></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Cancel the VirtualBox Guest Additions CD image download</source> <translation type="obsolete">VirtualBox Guest Additions CDイメージã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã‚’ã‚ャンセル</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Could not locate the file on the server (response: %1).</source> <translation type="obsolete">サーãƒãƒ¼ä¸Šã«ãƒ•ã‚¡ã‚¤ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ(å¿œç”: %1)。</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source><p>Failed to save the downloaded file as <nobr><b>%1</b>.</nobr></p></source> <translation type="obsolete"><p>ダウンãƒãƒ¼ãƒ‰ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«(<nobr><b>%1</b></nobr>)ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</p></translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Select folder to save Guest Additions image to</source> <translation type="obsolete">Guest Additionsイメージをä¿å˜ã™ã‚‹ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠž</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3111"/> <source>Connection timed out.</source> <translation type="obsolete">接続ãŒã‚¿ã‚¤ãƒ アウトã«ãªã‚Šã¾ã—ãŸã€‚</translation> </message> @@ -2098,21 +1950,31 @@ p, li { white-space: pre-wrap; } <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body><p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ã“ã®ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã¯ã€ä»®æƒ³ã‚¢ãƒ—ライアンスをエクスãƒãƒ¼ãƒˆã™ã‚‹æ‰‹é †ã‚’案内ã—ã¾ã™ã€‚</p><p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ウィザードã®æ¬¡ã®ãƒšãƒ¼ã‚¸ã«é€²ã‚€ã«ã¯<span style=" font-weight:600;">[次ã¸]</span>ボタンをã€å‰ã®ãƒšãƒ¼ã‚¸ã«æˆ»ã‚‹ã«ã¯<span style=" font-weight:600;">[戻る]</span>ボタンを使用ã—ã¦ãã ã•ã„。</p><p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">エクスãƒãƒ¼ãƒˆã™ã‚‹ä»®æƒ³ãƒžã‚·ãƒ³ã‚’é¸æŠžã—ã¦ãã ã•ã„。 1ã¤ä»¥ä¸Šã®ä»®æƒ³ãƒžã‚·ãƒ³ã‚’é¸æŠžã§ãã¾ã™ã€‚ エクスãƒãƒ¼ãƒˆã™ã‚‹å‰ã«ã€ãれらã®ä»®æƒ³ãƒžã‚·ãƒ³ã‚’オフã«ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。</p></body></html></translation> </message> <message> + <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="151"/> + <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="318"/> + <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="494"/> <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="722"/> <source>< &Back</source> <translation>< 戻る(&B)</translation> </message> <message> + <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="158"/> + <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="325"/> <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="501"/> <source>&Next ></source> <translation>次ã¸(&N) ></translation> </message> <message> + <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="181"/> + <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="348"/> + <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="524"/> <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="752"/> <source>Cancel</source> <translation>ã‚ャンセル</translation> </message> <message> + <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="202"/> + <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="369"/> <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="545"/> <source>Appliance Export Settings</source> <translation>仮想アプライアンスã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆè¨å®š</translation> @@ -2128,7 +1990,6 @@ p, li { white-space: pre-wrap; } <translation>デフォルト値ã«æˆ»ã™</translation> </message> <message> - <location filename="../src/wizards/exportappliance/VBoxExportApplianceWzd.ui" line="298"/> <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">ä»®æƒ³ã‚¢ãƒ—ãƒ©ã‚¤ã‚¢ãƒ³ã‚¹æƒ…å ±ãŒæ›¸ã‹ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«åを指定ã—ã¦ãã ã•ã„。 VirtualBoxã¯Open Virtualization Format(OVF)をサãƒãƒ¼ãƒˆã—ã¾ã™ã€‚</translation> </message> @@ -2327,7 +2188,6 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxGLSettingsGeneral</name> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="180"/> <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">デフォルトã®VDIフォルダã®ãƒ‘スを表示ã—ã¾ã™ã€‚æ–°è¦ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®ä½œæˆæ™‚ã«ä¿å˜å…ˆã‚’明示的ã«æŒ‡å®šã—ãªã„å ´åˆã€ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚</translation> </message> @@ -2383,7 +2243,7 @@ p, li { white-space: pre-wrap; } </message> <message> <location filename="../src/settings/global/VBoxGLSettingsGeneral.ui" line="159"/> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>フルスクリーンモード時ã«ãƒ‰ãƒƒã‚¯ã¨ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒãƒ¼ã‚’自動的ã«è¡¨ç¤º(&A)</translation> </message> </context> @@ -2414,30 +2274,31 @@ p, li { white-space: pre-wrap; } <name>VBoxGLSettingsLanguage</name> <message> <location filename="../src/settings/global/VBoxGLSettingsLanguage.cpp" line="91"/> + <location filename="../src/settings/global/VBoxGLSettingsLanguage.cpp" line="92"/> <source> (built-in)</source> <comment>Language</comment> <translation>(内蔵)</translation> </message> <message> - <location filename="../src/settings/global/VBoxGLSettingsLanguage.cpp" line="117"/> + <location filename="../src/settings/global/VBoxGLSettingsLanguage.cpp" line="118"/> <source><unavailable></source> <comment>Language</comment> <translation><利用ä¸å¯></translation> </message> <message> - <location filename="../src/settings/global/VBoxGLSettingsLanguage.cpp" line="118"/> + <location filename="../src/settings/global/VBoxGLSettingsLanguage.cpp" line="119"/> <source><unknown></source> <comment>Author(s)</comment> <translation><ä¸æ˜Ž></translation> </message> <message> - <location filename="../src/settings/global/VBoxGLSettingsLanguage.cpp" line="131"/> + <location filename="../src/settings/global/VBoxGLSettingsLanguage.cpp" line="132"/> <source>Default</source> <comment>Language</comment> <translation>デフォルト</translation> </message> <message> - <location filename="../src/settings/global/VBoxGLSettingsLanguage.cpp" line="322"/> + <location filename="../src/settings/global/VBoxGLSettingsLanguage.cpp" line="323"/> <source>Language:</source> <translation>言語:</translation> </message> @@ -2472,7 +2333,7 @@ p, li { white-space: pre-wrap; } <translation>作者</translation> </message> <message> - <location filename="../src/settings/global/VBoxGLSettingsLanguage.cpp" line="324"/> + <location filename="../src/settings/global/VBoxGLSettingsLanguage.cpp" line="325"/> <source>Author(s):</source> <translation>作者:</translation> </message> @@ -2543,6 +2404,8 @@ p, li { white-space: pre-wrap; } <translation>IPv4 アドレス</translation> </message> <message> + <location filename="../src/settings/global/VBoxGLSettingsNetwork.cpp" line="202"/> + <location filename="../src/settings/global/VBoxGLSettingsNetwork.cpp" line="212"/> <location filename="../src/settings/global/VBoxGLSettingsNetwork.cpp" line="231"/> <source>Not set</source> <comment>address</comment> @@ -2554,6 +2417,7 @@ p, li { white-space: pre-wrap; } <translation>IPv4 ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ マスク</translation> </message> <message> + <location filename="../src/settings/global/VBoxGLSettingsNetwork.cpp" line="205"/> <location filename="../src/settings/global/VBoxGLSettingsNetwork.cpp" line="234"/> <source>Not set</source> <comment>mask</comment> @@ -2608,6 +2472,7 @@ p, li { white-space: pre-wrap; } <translation>下é™</translation> </message> <message> + <location filename="../src/settings/global/VBoxGLSettingsNetwork.cpp" line="237"/> <location filename="../src/settings/global/VBoxGLSettingsNetwork.cpp" line="240"/> <source>Not set</source> <comment>bound</comment> @@ -2634,6 +2499,7 @@ p, li { white-space: pre-wrap; } <translation>ホストオンリー ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚’編集(&E)</translation> </message> <message> + <location filename="../src/settings/global/VBoxGLSettingsNetwork.cpp" line="403"/> <location filename="../src/settings/global/VBoxGLSettingsNetwork.cpp" line="448"/> <source>Performing</source> <comment>creating/removing host-only network</comment> @@ -2839,904 +2705,876 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxGlobal</name> <message> - <location filename="../src/settings/global/VBoxGLSettingsUpdate.ui" line="188"/> <source>Differencing</source> <comment>hard disk</comment> <translation type="obsolete">差分</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1464"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1467"/> <source>Unknown device %1:%2</source> <comment>USB device details</comment> <translation>ä¸æ˜Žãªãƒ‡ãƒã‚¤ã‚¹ %1:%2</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1488"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1491"/> <source><nobr>Vendor ID: %1</nobr><br><nobr>Product ID: %2</nobr><br><nobr>Revision: %3</nobr></source> <comment>USB device tooltip</comment> <translation><nobr>ベンダID: %1</nobr><br><nobr>プãƒãƒ€ã‚¯ãƒˆID: %2</nobr><br><nobr>リビジョン: %3</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1497"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1500"/> <source><br><nobr>Serial No. %1</nobr></source> <comment>USB device tooltip</comment> <translation><br><nobr>シリアルNo. %1</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1504"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1507"/> <source><br><nobr>State: %1</nobr></source> <comment>USB device tooltip</comment> <translation><br><nobr>状態: %1</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1599"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1602"/> <source>Name</source> <comment>details report</comment> <translation>åå‰</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1601"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1604"/> <source>OS Type</source> <comment>details report</comment> <translation>OSタイプ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1658"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1674"/> <source>Base Memory</source> <comment>details report</comment> <translation>メインメモリ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1658"/> <source><nobr>%3 MB</nobr></source> <comment>details report</comment> <translation type="obsolete"><nobr>%3 MB</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1608"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1611"/> <source>General</source> <comment>details report</comment> <translation>一般</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1697"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1711"/> <source>Video Memory</source> <comment>details report</comment> <translation>ビデオメモリ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1697"/> <source><nobr>%4 MB</nobr></source> <comment>details report</comment> <translation type="obsolete"><nobr>%4 MB</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1664"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1680"/> <source>Boot Order</source> <comment>details report</comment> <translation>èµ·å‹•é †åº</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1666"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1682"/> <source>ACPI</source> <comment>details report</comment> <translation>ACPI</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1667"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1683"/> <source>IO APIC</source> <comment>details report</comment> <translation>IO APIC</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1667"/> <source>Not Attached</source> <comment>details report (HDDs)</comment> <translation type="obsolete">割り当ã¦ã‚‰ã‚Œã¦ã„ã¾ã›ã‚“</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1667"/> <source>Hard Disks</source> <comment>details report</comment> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1634"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1642"/> <source>Enabled</source> <comment>details report (ACPI)</comment> <translation>有効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1635"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1643"/> <source>Disabled</source> <comment>details report (ACPI)</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1639"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1647"/> <source>Enabled</source> <comment>details report (IO APIC)</comment> <translation>有効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1640"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1648"/> <source>Disabled</source> <comment>details report (IO APIC)</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1640"/> <source>Not mounted</source> <comment>details report (floppy)</comment> <translation type="obsolete">マウントã•ã‚Œã¦ã„ã¾ã›ã‚“</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1640"/> <source>Image</source> <comment>details report (floppy)</comment> <translation type="obsolete">イメージ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1640"/> <source>Host Drive</source> <comment>details report (floppy)</comment> <translation type="obsolete">ホスト ドライブ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1640"/> <source>Floppy</source> <comment>details report</comment> <translation type="obsolete">フãƒãƒƒãƒ”ー</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1640"/> <source>Not mounted</source> <comment>details report (DVD)</comment> <translation type="obsolete">マウントã•ã‚Œã¦ã„ã¾ã›ã‚“</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1640"/> <source>Image</source> <comment>details report (DVD)</comment> <translation type="obsolete">イメージ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1640"/> <source>Host Drive</source> <comment>details report (DVD)</comment> <translation type="obsolete">ホスト ドライブ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1640"/> <source>CD/DVD-ROM</source> <comment>details report</comment> <translation type="obsolete">CD/DVD-ROM</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1802"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1816"/> <source>Disabled</source> <comment>details report (audio)</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1808"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1822"/> <source>Audio</source> <comment>details report</comment> <translation>オーディオ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1842"/> + <location filename="../src/VBoxVMInformationDlg.cpp" line="644"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1856"/> <source>Adapter %1</source> <comment>details report (network)</comment> <translation>アダプタ %1</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1851"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1865"/> <source>Disabled</source> <comment>details report (network)</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1859"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1873"/> <source>Network</source> <comment>details report</comment> <translation>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1965"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1979"/> <source>Device Filters</source> <comment>details report (USB)</comment> <translation>デãƒã‚¤ã‚¹ フィルタ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1966"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1980"/> <source>%1 (%2 active)</source> <comment>details report (USB)</comment> <translation>%1 (%2 アクティブ)</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1971"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1985"/> <source>Disabled</source> <comment>details report (USB)</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1971"/> <source>VRDP Server Port</source> <comment>details report (VRDP)</comment> <translation type="obsolete">VRDPサーãƒãƒ¼ ãƒãƒ¼ãƒˆ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1971"/> <source>%1</source> <comment>details report (VRDP)</comment> <translation type="obsolete">%1</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1971"/> <source>Disabled</source> <comment>details report (VRDP)</comment> <translation type="obsolete">無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1971"/> <source>Remote Display</source> <comment>details report</comment> <translation type="obsolete">リモートディスプレイ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1971"/> <source>Opening URLs is not implemented yet.</source> <translation type="obsolete">"URLã‚’é–‹ã"ã¯ã¾ã 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2666"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2680"/> <source>Powered Off</source> <comment>MachineState</comment> <translation>é›»æºã‚ªãƒ•</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2667"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2681"/> <source>Saved</source> <comment>MachineState</comment> <translation>ä¿å˜</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2669"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2683"/> <source>Aborted</source> <comment>MachineState</comment> <translation>ä¸æ–</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2670"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2684"/> <source>Running</source> <comment>MachineState</comment> <translation>実行ä¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2671"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2685"/> <source>Paused</source> <comment>MachineState</comment> <translation>一時åœæ¢</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2675"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2689"/> <source>Starting</source> <comment>MachineState</comment> <translation>èµ·å‹•ä¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2676"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2690"/> <source>Stopping</source> <comment>MachineState</comment> <translation>åœæ¢ä¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2677"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2691"/> <source>Saving</source> <comment>MachineState</comment> <translation>ä¿å˜ä¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2678"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2692"/> <source>Restoring</source> <comment>MachineState</comment> <translation>復元ä¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2678"/> <source>Discarding</source> <comment>MachineState</comment> <translation type="obsolete">ç ´æ£„ä¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2685"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2699"/> <source>Closed</source> <comment>SessionState</comment> <translation>クãƒãƒ¼ã‚ºãƒ‰</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2686"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2700"/> <source>Open</source> <comment>SessionState</comment> <translation>オープン</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2687"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2701"/> <source>Spawning</source> <comment>SessionState</comment> <translation>生æˆä¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2688"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2702"/> <source>Closing</source> <comment>SessionState</comment> <translation>閉鎖ä¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2690"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2704"/> <source>None</source> <comment>DeviceType</comment> <translation>ãªã—</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2691"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2705"/> <source>Floppy</source> <comment>DeviceType</comment> <translation>フãƒãƒƒãƒ”ー</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2692"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2706"/> <source>CD/DVD-ROM</source> <comment>DeviceType</comment> <translation>CD/DVD-ROM</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2693"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2707"/> <source>Hard Disk</source> <comment>DeviceType</comment> <translation>ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2694"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2708"/> <source>Network</source> <comment>DeviceType</comment> <translation>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2719"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2733"/> <source>Normal</source> <comment>DiskType</comment> <translation>標準</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2720"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2734"/> <source>Immutable</source> <comment>DiskType</comment> <translation>変更ä¸å¯</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2721"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2735"/> <source>Writethrough</source> <comment>DiskType</comment> <translation>ライトスルー</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2721"/> <source>Virtual Disk Image</source> <comment>DiskStorageType</comment> <translation type="obsolete">仮想ディスクイメージ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2721"/> <source>iSCSI</source> <comment>DiskStorageType</comment> <translation type="obsolete">iSCSI</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2721"/> <source>VMDK Image</source> <comment>DiskStorageType</comment> <translation type="obsolete">VMDKイメージ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2724"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2738"/> <source>Null</source> <comment>VRDPAuthType</comment> <translation>Null</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2725"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2739"/> <source>External</source> <comment>VRDPAuthType</comment> <translation>外部</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2726"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2740"/> <source>Guest</source> <comment>VRDPAuthType</comment> <translation>ゲスト</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2734"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2748"/> <source>Ignore</source> <comment>USBFilterActionType</comment> <translation>無視</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2736"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2750"/> <source>Hold</source> <comment>USBFilterActionType</comment> <translation>ä¿æŒ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2739"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2753"/> <source>Null Audio Driver</source> <comment>AudioDriverType</comment> <translation>Null Audio Driver</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2741"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2755"/> <source>Windows Multimedia</source> <comment>AudioDriverType</comment> <translation>Windows マルãƒãƒ¡ãƒ‡ã‚£ã‚¢</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2745"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2759"/> <source>OSS Audio Driver</source> <comment>AudioDriverType</comment> <translation>OSS オーディオ ドライãƒ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2747"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2761"/> <source>ALSA Audio Driver</source> <comment>AudioDriverType</comment> <translation>ALSA オーディオ ドライãƒ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2749"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2763"/> <source>Windows DirectSound</source> <comment>AudioDriverType</comment> <translation>Windows DirectSound</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2751"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2765"/> <source>CoreAudio</source> <comment>AudioDriverType</comment> <translation>CoreAudio</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2776"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2790"/> <source>Not attached</source> <comment>NetworkAttachmentType</comment> <translation>未割り当ã¦</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2778"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2792"/> <source>NAT</source> <comment>NetworkAttachmentType</comment> <translation>NAT</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2778"/> <source>Host Interface</source> <comment>NetworkAttachmentType</comment> <translation type="obsolete">ホスト インターフェース</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2782"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2796"/> <source>Internal Network</source> <comment>NetworkAttachmentType</comment> <translation>内部ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2811"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2825"/> <source>Not supported</source> <comment>USBDeviceState</comment> <translation>未サãƒãƒ¼ãƒˆ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2813"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2827"/> <source>Unavailable</source> <comment>USBDeviceState</comment> <translation>利用ä¸å¯</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2815"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2829"/> <source>Busy</source> <comment>USBDeviceState</comment> <translation>ビジー</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2817"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2831"/> <source>Available</source> <comment>USBDeviceState</comment> <translation>利用å¯èƒ½</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2819"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2833"/> <source>Held</source> <comment>USBDeviceState</comment> <translation>ä¿æŒ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2821"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2835"/> <source>Captured</source> <comment>USBDeviceState</comment> <translation>ã‚ャプãƒãƒ£</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2821"/> <source><i>Checking...</i></source> <comment>hard disk</comment> <translation type="obsolete"><i>確èªä¸...</i></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2821"/> <source><i>Inaccessible</i></source> <comment>hard disk</comment> <translation type="obsolete"><i>アクセスä¸å¯</i></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2787"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2801"/> <source>Disabled</source> <comment>ClipboardType</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2789"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2803"/> <source>Host To Guest</source> <comment>ClipboardType</comment> <translation>ホストOSã‹ã‚‰ã‚²ã‚¹ãƒˆOSã¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2791"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2805"/> <source>Guest To Host</source> <comment>ClipboardType</comment> <translation>ゲストOSã‹ã‚‰ãƒ›ã‚¹ãƒˆOSã¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2793"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2807"/> <source>Bidirectional</source> <comment>ClipboardType</comment> <translation>åŒæ–¹å‘</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2793"/> <source>Select a directory</source> <translation type="obsolete">ディレクトリをé¸æŠž</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2793"/> <source>Select a file</source> <translation type="obsolete">ファイルをé¸æŠž</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1887"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1901"/> <source>Port %1</source> <comment>details report (serial ports)</comment> <translation>ãƒãƒ¼ãƒˆ %1</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1896"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1910"/> <source>Disabled</source> <comment>details report (serial ports)</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1904"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1918"/> <source>Serial Ports</source> <comment>details report</comment> <translation>シリアルãƒãƒ¼ãƒˆ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1977"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1991"/> <source>USB</source> <comment>details report</comment> <translation>USB</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1990"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2004"/> <source>Shared Folders</source> <comment>details report (shared folders)</comment> <translation>共有フォルダ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1990"/> <source>%1</source> <comment>details report (shadef folders)</comment> <translation type="obsolete">%1</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1995"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2009"/> <source>None</source> <comment>details report (shared folders)</comment> <translation>ãªã—</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2001"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2015"/> <source>Shared Folders</source> <comment>details report</comment> <translation>共有フォルダ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2001"/> <source>Stuck</source> <comment>MachineState</comment> <translation type="obsolete">スタック</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2728"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2742"/> <source>Disconnected</source> <comment>PortMode</comment> <translation>切æ–</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2729"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2743"/> <source>Host Pipe</source> <comment>PortMode</comment> <translation>ホストã«ãƒ‘イプ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2730"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2744"/> <source>Host Device</source> <comment>PortMode</comment> <translation>ホスト デãƒã‚¤ã‚¹</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2823"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2837"/> <source>User-defined</source> <comment>serial port</comment> <translation>ユーザー定義</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2823"/> <source>Custom Hard Disk</source> <comment>DiskStorageType</comment> <translation type="obsolete">カスタムãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1670"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3204"/> + <location filename="../src/VBoxVMInformationDlg.cpp" line="483"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1689"/> <source>VT-x/AMD-V</source> <comment>details report</comment> <translation>VT-x/AMD-V</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1668"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1684"/> <source>PAE/NX</source> <comment>details report</comment> <translation>PAE/NX</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1650"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3191"/> + <location filename="../src/VBoxVMInformationDlg.cpp" line="452"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1660"/> <source>Enabled</source> <comment>details report (VT-x/AMD-V)</comment> <translation>有効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1651"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3192"/> + <location filename="../src/VBoxVMInformationDlg.cpp" line="453"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1661"/> <source>Disabled</source> <comment>details report (VT-x/AMD-V)</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1644"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1652"/> <source>Enabled</source> <comment>details report (PAE/NX)</comment> <translation>有効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1645"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1653"/> <source>Disabled</source> <comment>details report (PAE/NX)</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1795"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1809"/> <source>Host Driver</source> <comment>details report (audio)</comment> <translation>ホスト ドライãƒ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1798"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1812"/> <source>Controller</source> <comment>details report (audio)</comment> <translation>コントãƒãƒ¼ãƒ©</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1925"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1939"/> <source>Port %1</source> <comment>details report (parallel ports)</comment> <translation>ãƒãƒ¼ãƒˆ %1</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1934"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1948"/> <source>Disabled</source> <comment>details report (parallel ports)</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1943"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1957"/> <source>Parallel Ports</source> <comment>details report</comment> <translation>パラレルãƒãƒ¼ãƒˆ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2695"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2709"/> <source>USB</source> <comment>DeviceType</comment> <translation>USB</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2696"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2710"/> <source>Shared Folder</source> <comment>DeviceType</comment> <translation>共有フォルダ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2698"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2712"/> <source>IDE</source> <comment>StorageBus</comment> <translation>IDE</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2699"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2713"/> <source>SATA</source> <comment>StorageBus</comment> <translation>SATA</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2703"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2717"/> <source>Primary</source> <comment>StorageBusChannel</comment> <translation>プライマリ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2704"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2718"/> <source>Secondary</source> <comment>StorageBusChannel</comment> <translation>セカンダリ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2707"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2721"/> <source>Master</source> <comment>StorageBusDevice</comment> <translation>マスター</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2708"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2722"/> <source>Slave</source> <comment>StorageBusDevice</comment> <translation>スレーブ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2705"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2719"/> <source>Port %1</source> <comment>StorageBusChannel</comment> <translation>ãƒãƒ¼ãƒˆ %1</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2705"/> <source>VHD Image</source> <comment>DiskStorageType</comment> <translation type="obsolete">VHDイメージ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2743"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2757"/> <source>Solaris Audio</source> <comment>AudioDriverType</comment> <translation>Solaris オーディオ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2753"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2767"/> <source>PulseAudio</source> <comment>AudioDriverType</comment> <translation>PulseAudio</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2756"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2770"/> <source>ICH AC97</source> <comment>AudioControllerType</comment> <translation>ICH AC97</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2758"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2772"/> <source>SoundBlaster 16</source> <comment>AudioControllerType</comment> <translation>SoundBlaster 16</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2761"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2775"/> <source>PCnet-PCI II (Am79C970A)</source> <comment>NetworkAdapterType</comment> <translation>PCnet-PCI II (Am79C970A)</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2763"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2777"/> <source>PCnet-FAST III (Am79C973)</source> <comment>NetworkAdapterType</comment> <translation>PCnet-FAST III (Am79C973)</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2765"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2779"/> <source>Intel PRO/1000 MT Desktop (82540EM)</source> <comment>NetworkAdapterType</comment> <translation>Intel PRO/1000 MT Desktop (82540EM)</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2765"/> <source>PIIX3</source> <comment>IDEControllerType</comment> <translation type="obsolete">PIIX3</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2765"/> <source>PIIX4</source> <comment>IDEControllerType</comment> <translation type="obsolete">PIIX4</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2767"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2781"/> <source>Intel PRO/1000 T Server (82543GC)</source> <comment>NetworkAdapterType</comment> <translation>Intel PRO/1000 T Server (82543GC)</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1520"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1523"/> <source><nobr>Vendor ID: %1</nobr></source> <comment>USB filter tooltip</comment> <translation><nobr>ベンダID: %1</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1525"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1528"/> <source><nobr>Product ID: %2</nobr></source> <comment>USB filter tooltip</comment> <translation><nobr>プãƒãƒ€ã‚¯ãƒˆID: %2</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1530"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1533"/> <source><nobr>Revision: %3</nobr></source> <comment>USB filter tooltip</comment> <translation><nobr>リビジョン: %3</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1535"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1538"/> <source><nobr>Product: %4</nobr></source> <comment>USB filter tooltip</comment> <translation><nobr>製å“: %4</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1540"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1543"/> <source><nobr>Manufacturer: %5</nobr></source> <comment>USB filter tooltip</comment> <translation><nobr>メーカー: %5</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1545"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1548"/> <source><nobr>Serial No.: %1</nobr></source> <comment>USB filter tooltip</comment> <translation><nobr>シリアルNo.: %1</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1550"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1553"/> <source><nobr>Port: %1</nobr></source> <comment>USB filter tooltip</comment> <translation><nobr>ãƒãƒ¼ãƒˆ: %1</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1557"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1560"/> <source><nobr>State: %1</nobr></source> <comment>USB filter tooltip</comment> <translation><nobr>状態: %1</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1557"/> <source>host interface, %1</source> <comment>details report (network)</comment> <translation type="obsolete">ホスト インターフェース, %1</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1557"/> <source>internal network, '%1'</source> <comment>details report (network)</comment> <translation type="obsolete">内部ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯, '%1'</translation> @@ -3748,37 +3586,31 @@ p, li { white-space: pre-wrap; } <translation>アダプタ %1</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.cpp" line="231"/> <source><br><nobr>Type&nbsp;(Format):&nbsp;&nbsp;%2&nbsp;(%3)</nobr></source> <comment>hard disk</comment> <translation type="obsolete"><br><nobr>タイプ&nbsp;(å½¢å¼):&nbsp;&nbsp;%2&nbsp;(%3)</nobr></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.cpp" line="231"/> <source><br><nobr>Attached to:&nbsp;&nbsp;%1</nobr></source> <comment>medium</comment> <translation type="obsolete"><br><nobr>割り当ã¦:&nbsp;&nbsp;%1</nobr></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.cpp" line="231"/> <source><i>Not&nbsp;Attached</i></source> <comment>medium</comment> <translation type="obsolete"><i>未割り当ã¦</i></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.cpp" line="231"/> <source><br><i>Checking accessibility...</i></source> <comment>medium</comment> <translation type="obsolete"><br><i>アクセスå¯å¦ã‚’確èªä¸...</i></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.cpp" line="231"/> <source><hr>Failed to check media accessibility.<br>%1.</source> <comment>medium</comment> <translation type="obsolete"><hr>メディアã®ã‚¢ã‚¯ã‚»ã‚¹å¯å¦ã®ç¢ºèªã«å¤±æ•—ã—ã¾ã—ãŸã€‚<br>%1.</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.cpp" line="231"/> <source><hr><img src=%1/>&nbsp;Attaching this hard disk will be performed indirectly using a newly created differencing hard disk.</source> <comment>medium</comment> <translation type="obsolete"><hr><img src=%1/>&nbsp;ã“ã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®å‰²ã‚Šå½“ã¦ã¯ã€æ–°è¦ä½œæˆã•ã‚ŒãŸå·®åˆ†ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®ä½¿ç”¨ã«ã‚ˆã‚Šã€é–“接的ã«å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚</translation> @@ -3796,358 +3628,359 @@ p, li { white-space: pre-wrap; } <translation>アクセスã§ãã¾ã›ã‚“</translation> </message> <message> - <location filename="../src/VBoxMedium.cpp" line="446"/> <source><hr>Some of the media in this hard disk chain are inaccessible. Please use the Virtual Media Manager in <b>Show Differencing Hard Disks</b> mode to inspect these media.</source> <translation type="obsolete"><hr>ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ ãƒã‚§ãƒ¼ãƒ³ä¸ã®ã„ãã¤ã‹ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“。仮想メディアマãƒãƒ¼ã‚¸ãƒ£ã®<b>[別ã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’表示ã™ã‚‹]</b>を使用ã—ã¦ã€ã“れらã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’確èªã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/VBoxMedium.cpp" line="446"/> <source>%1<hr>This base hard disk is indirectly attached using the following differencing hard disk:<br>%2%3</source> <translation type="obsolete">%1<hr>ã“ã®ãƒ™ãƒ¼ã‚¹ ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã¯ä»¥ä¸‹ã®å·®åˆ†ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’使用ã—ã¦é–“接的ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™:<br>%2%3</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1701"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1715"/> <source>3D Acceleration</source> <comment>details report</comment> <translation>3Dアクセラレーション</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1693"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1707"/> <source>Enabled</source> <comment>details report (3D Acceleration)</comment> <translation>有効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1694"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1708"/> <source>Disabled</source> <comment>details report (3D Acceleration)</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2683"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2697"/> <source>Setting Up</source> <comment>MachineState</comment> <translation>セットアップ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2722"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2736"/> <source>Differencing</source> <comment>DiskType</comment> <translation>差分</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1671"/> + <location filename="../src/VBoxVMInformationDlg.cpp" line="484"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1690"/> <source>Nested Paging</source> <comment>details report</comment> <translation>ãƒã‚¹ãƒ†ãƒƒãƒ‰ãƒšãƒ¼ã‚¸ãƒ³ã‚°</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1655"/> + <location filename="../src/VBoxVMInformationDlg.cpp" line="455"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1665"/> <source>Enabled</source> <comment>details report (Nested Paging)</comment> <translation>有効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1656"/> + <location filename="../src/VBoxVMInformationDlg.cpp" line="456"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1666"/> <source>Disabled</source> <comment>details report (Nested Paging)</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1656"/> <source>Bridged network, %1</source> <comment>details report (network)</comment> <translation type="obsolete">ブリッジ ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯, '%1'</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1833"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1847"/> <source>Internal network, '%1'</source> <comment>details report (network)</comment> <translation>内部ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯, '%1'</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1833"/> <source>Host-only network, '%1'</source> <comment>details report (network)</comment> <translation type="obsolete">ホストオンリー ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯, '%1'</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2700"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2714"/> <source>SCSI</source> <comment>StorageBus</comment> <translation>SCSI</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2700"/> <source>Bridged Network</source> <comment>NetworkAttachmentType</comment> <translation type="obsolete">ブリッジ ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2700"/> <source>Host-only Network</source> <comment>NetworkAttachmentType</comment> <translation type="obsolete">ホストオンリー ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2796"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2810"/> <source>PIIX3</source> <comment>StorageControllerType</comment> <translation>PIIX3</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2798"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2812"/> <source>PIIX4</source> <comment>StorageControllerType</comment> <translation>PIIX4</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2800"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2814"/> <source>ICH6</source> <comment>StorageControllerType</comment> <translation>ICH6</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2802"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2816"/> <source>AHCI</source> <comment>StorageControllerType</comment> <translation>AHCI</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2804"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2818"/> <source>Lsilogic</source> <comment>StorageControllerType</comment> <translation>Lsilogic</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2806"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2820"/> <source>BusLogic</source> <comment>StorageControllerType</comment> <translation>BusLogic</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1830"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1844"/> <source>Bridged adapter, %1</source> <comment>details report (network)</comment> <translation>ブリッジ アダプタ, '%1'</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1836"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1850"/> <source>Host-only adapter, '%1'</source> <comment>details report (network)</comment> <translation>ホストオンリー アダプタ, '%1'</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2769"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2783"/> <source>Intel PRO/1000 MT Server (82545EM)</source> <comment>NetworkAdapterType</comment> <translation>Intel PRO/1000 MT Server (82545EM)</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2780"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2794"/> <source>Bridged Adapter</source> <comment>NetworkAttachmentType</comment> <translation>ブリッジ アダプタ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2784"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2798"/> <source>Host-only Adapter</source> <comment>NetworkAttachmentType</comment> <translation>ホストオンリー アダプタ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1698"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1675"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1712"/> <source><nobr>%1 MB</nobr></source> <comment>details report</comment> <translation><nobr>%1 MB</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1661"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3210"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1677"/> <source>Processor(s)</source> <comment>details report</comment> <translation>プãƒã‚»ãƒƒã‚µæ•°</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1662"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1678"/> <source><nobr>%1</nobr></source> <comment>details report</comment> <translation><nobr>%1</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1682"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1696"/> <source>System</source> <comment>details report</comment> <translation>システム</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1721"/> + <location filename="../src/VBoxVMInformationDlg.cpp" line="487"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1735"/> <source>Remote Display Server Port</source> <comment>details report (VRDP Server)</comment> <translation>リモートディスプレイ サーãƒãƒ¼ ãƒãƒ¼ãƒˆ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1725"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1739"/> <source>Remote Display Server</source> <comment>details report (VRDP Server)</comment> <translation>リモートディスプレイ サーãƒãƒ¼</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1726"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1740"/> <source>Disabled</source> <comment>details report (VRDP Server)</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1734"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1748"/> <source>Display</source> <comment>details report</comment> <translation>ディスプレイ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2731"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2745"/> <source>Raw File</source> <comment>PortMode</comment> <translation>Rawファイル</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1707"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1721"/> <source>Enabled</source> <comment>details report (2D Video Acceleration)</comment> <translation>有効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1708"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1722"/> <source>Disabled</source> <comment>details report (2D Video Acceleration)</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1711"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1725"/> <source>2D Video Acceleration</source> <comment>details report</comment> <translation>2Dビデオ アクセラレーション</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1758"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1772"/> <source>(CD/DVD)</source> <translation>(CD/DVD)</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1775"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1789"/> <source>Not Attached</source> <comment>details report (Storage)</comment> <translation>未割り当ã¦</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="1783"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="1797"/> <source>Storage</source> <comment>details report</comment> <translation>ストレージ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2668"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2682"/> <source>Teleported</source> <comment>MachineState</comment> <translation>テレãƒãƒ¼ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2672"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2686"/> <source>Guru Meditation</source> <comment>MachineState</comment> <translation>瞑想ä¸(システムエラー)</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2680"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2687"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2694"/> <source>Teleporting</source> <comment>MachineState</comment> <translation>テレãƒãƒ¼ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ä¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2674"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2688"/> <source>Taking Live Snapshot</source> <comment>MachineState</comment> <translation>スナップショットã®ä½œæˆä¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2679"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2693"/> <source>Teleporting Paused VM</source> <comment>MachineState</comment> <translation>仮想マシンã®ãƒ†ãƒ¬ãƒãƒ¼ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ä¸æ–</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2681"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2695"/> <source>Restoring Snapshot</source> <comment>MachineState</comment> <translation>スナップショットã«å¾©å…ƒä¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2682"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2696"/> <source>Deleting Snapshot</source> <comment>MachineState</comment> <translation>スナップショットを削除ä¸</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2701"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2715"/> <source>Floppy</source> <comment>StorageBus</comment> <translation>フãƒãƒƒãƒ”ー</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2709"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2723"/> <source>Device %1</source> <comment>StorageBusDevice</comment> <translation>デãƒã‚¤ã‚¹ %1</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2711"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2725"/> <source>IDE Primary Master</source> <comment>New Storage UI : Slot Name</comment> <translation>IDE プライマリ マスター</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2712"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2726"/> <source>IDE Primary Slave</source> <comment>New Storage UI : Slot Name</comment> <translation>IDE プライマリ スレーブ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2713"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2727"/> <source>IDE Secondary Master</source> <comment>New Storage UI : Slot Name</comment> <translation>IDE セカンダリ マスター</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2714"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2728"/> <source>IDE Secondary Slave</source> <comment>New Storage UI : Slot Name</comment> <translation>IDE セカンダリ スレーブ</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2715"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2729"/> <source>SATA Port %1</source> <comment>New Storage UI : Slot Name</comment> <translation>SATA ãƒãƒ¼ãƒˆ %1</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2716"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2730"/> <source>SCSI Port %1</source> <comment>New Storage UI : Slot Name</comment> <translation>SCSI ãƒãƒ¼ãƒˆ %1</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2717"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2731"/> <source>Floppy Device %1</source> <comment>New Storage UI : Slot Name</comment> <translation>フãƒãƒƒãƒ”ー デãƒã‚¤ã‚¹ %1</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2772"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2786"/> <source>Paravirtualized Network (virtio-net)</source> <comment>NetworkAdapterType</comment> <translation>準仮想化ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ (virtio-net)</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="2808"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="2822"/> <source>I82078</source> <comment>StorageControllerType</comment> <translation>I82078</translation> @@ -4241,42 +4074,42 @@ p, li { white-space: pre-wrap; } <translation>ã“ã®ãƒ™ãƒ¼ã‚¹ ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã¯ä»¥ä¸‹ã®å·®åˆ†ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’使用ã—ã¦é–“接的ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™:</translation> </message> <message numerus="yes"> - <location filename="../src/globals/VBoxGlobal.h" line="361"/> + <location filename="../src/globals/VBoxGlobal.h" line="362"/> <source>%n year(s)</source> <translation> <numerusform>%n å¹´</numerusform> </translation> </message> <message numerus="yes"> - <location filename="../src/globals/VBoxGlobal.h" line="366"/> + <location filename="../src/globals/VBoxGlobal.h" line="367"/> <source>%n month(s)</source> <translation> <numerusform>%n 月</numerusform> </translation> </message> <message numerus="yes"> - <location filename="../src/globals/VBoxGlobal.h" line="371"/> + <location filename="../src/globals/VBoxGlobal.h" line="372"/> <source>%n day(s)</source> <translation> <numerusform>%n æ—¥</numerusform> </translation> </message> <message numerus="yes"> - <location filename="../src/globals/VBoxGlobal.h" line="376"/> + <location filename="../src/globals/VBoxGlobal.h" line="377"/> <source>%n hour(s)</source> <translation> <numerusform>%n 時間</numerusform> </translation> </message> <message numerus="yes"> - <location filename="../src/globals/VBoxGlobal.h" line="381"/> + <location filename="../src/globals/VBoxGlobal.h" line="382"/> <source>%n minute(s)</source> <translation> <numerusform>%n 分</numerusform> </translation> </message> <message numerus="yes"> - <location filename="../src/globals/VBoxGlobal.h" line="386"/> + <location filename="../src/globals/VBoxGlobal.h" line="387"/> <source>%n second(s)</source> <translation> <numerusform>%n 秒</numerusform> @@ -4304,231 +4137,186 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxGlobalSettingsDlg</name> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Category</source> <translation type="obsolete">カテゴリ</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>[id]</source> <translation type="obsolete">[id]</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>[link]</source> <translation type="obsolete">[link]</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>[name]</source> <translation type="obsolete">[name]</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source><i>Select a settings category from the list on the left-hand side and move the mouse over a settings item to get more information<i>.</source> <translation type="obsolete"><i>å·¦å´ã®ãƒªã‚¹ãƒˆã‹ã‚‰è¨å®šã®ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã—ã€è¨å®šé …目をマウスオーãƒãƒ¼ã—ã¦è©³ç´°ãªæƒ…å ±ã‚’å‚ç…§ã—ã¦ãã ã•ã„<i>。</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> General </source> <translation type="obsolete">一般</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>0</source> <translation type="obsolete">0</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> Input </source> <translation type="obsolete">入力</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>1</source> <translation type="obsolete">1</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> USB </source> <translation type="obsolete"> USB </translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>2</source> <translation type="obsolete">2</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Default &Folders</source> <translation type="obsolete">デフォルト フォルダ(&F)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Machines</source> <translation type="obsolete">仮想マシン</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>VDI files</source> <translation type="obsolete">VDIファイル</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Select</source> <translation type="obsolete">é¸æŠž</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&Keyboard</source> <translation type="obsolete">ã‚ーボード(&K)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&Host Key</source> <translation type="obsolete">ホストã‚ー(&H)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&Auto capture keyboard</source> <translation type="obsolete">ã‚ーボードã®è‡ªå‹•ã‚ャプãƒãƒ£(&A)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&USB Device Filters</source> <translation type="obsolete">USB デãƒã‚¤ã‚¹ フィルタ(&U)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Ins</source> <translation type="obsolete">Ins</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Alt+Ins</source> <translation type="obsolete">Alt+Ins</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Del</source> <translation type="obsolete">Del</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Ctrl+Up</source> <translation type="obsolete">Ctrl+Up</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Ctrl+Down</source> <translation type="obsolete">Ctrl+Down</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Help</source> <translation type="obsolete">ヘルプ</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>F1</source> <translation type="obsolete">F1</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Displays the dialog help.</source> <translation type="obsolete">ダイアãƒã‚°ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Invalid settings detected</source> <translation type="obsolete">無効ãªè¨å®šãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&OK</source> <translation type="obsolete">OK(&O)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Accepts (saves) changes and closes the dialog.</source> <translation type="obsolete">変更をä¿å˜ã—ã¦ãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’é–‰ã˜ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Cancel</source> <translation type="obsolete">ã‚ャンセル</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Cancels changes and closes the dialog.</source> <translation type="obsolete">å¤‰æ›´ã‚’ç ´æ£„ã—ã¦ãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’é–‰ã˜ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>VirtualBox Preferences</source> <translation type="obsolete">VirtualBox 環境è¨å®š</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <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> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>New Filter %1</source> <comment>usb</comment> <translation type="obsolete">æ–°è¦ãƒ•ã‚£ãƒ«ã‚¿ %1</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Language</source> <translation type="obsolete">言語</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> Language </source> <translation type="obsolete">言語</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>3</source> <translation type="obsolete">3</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&Interface Language</source> <translation type="obsolete">インターフェース言語(&I)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Author(s):</source> <translation type="obsolete">作者:</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Language:</source> <translation type="obsolete">言語:</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> (built-in)</source> <comment>Language</comment> <translation type="obsolete">(内蔵)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source><unavailable></source> <comment>Language</comment> <translation type="obsolete"><利用ä¸å¯></translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source><unknown></source> <comment>Author(s)</comment> <translation type="obsolete"><ä¸æ˜Ž></translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> <qt>Lists all available user interface languages. The effective language is written in <b>bold</b>. Select <i>Default</i> to reset @@ -4538,83 +4326,67 @@ to the system default language.</qt> システムã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆè¨€èªžã«æˆ»ã™ã«ã¯<i>デフォルト</i>ã‚’é¸æŠžã—ã¦ãã ã•ã„。</qt></translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Default</source> <comment>Language</comment> <translation type="obsolete">デフォルト</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <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">デフォルトã®VDIフォルダã®ãƒ‘スを表示ã—ã¾ã™ã€‚æ–°è¦ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®ä½œæˆæ™‚ã«ä¿å˜å…ˆã‚’明示的ã«æŒ‡å®šã—ãªã„å ´åˆã€ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <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> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <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">VDIフォルダã®ãƒ‘スをデフォルト値ã«æˆ»ã—ã¾ã™ã€‚変更後ã€å†åº¦ã“ã®ãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’é–‹ãã¨ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ パスãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <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> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Opens a dialog to select the default VDI folder.</source> <translation type="obsolete">ダイアãƒã‚°ã‚’é–‹ã„ã¦ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®VDIフォルダをé¸æŠžã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Opens a dialog to select the default virtual machine folder.</source> <translation type="obsolete">ダイアãƒã‚°ã‚’é–‹ã„ã¦ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ä»®æƒ³ãƒžã‚·ãƒ³ フォルダをé¸æŠžã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <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> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>V&RDP Authentication Library</source> <translation type="obsolete">VRDPèªè¨¼ãƒ©ã‚¤ãƒ–ラリ(&R)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Displays the path to the library that provides authentication for Remote Display (VRDP) clients.</source> <translation type="obsolete">リモートディスプレイ(VRDP)クライアントã«èªè¨¼ã‚’æä¾›ã™ã‚‹ãƒ©ã‚¤ãƒ–ラリã®ãƒ‘スを表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Opens a dialog to select the VRDP authentication library file.</source> <translation type="obsolete">VRDPèªè¨¼ãƒ©ã‚¤ãƒ–ラリ ファイルã®é¸æŠžãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’é–‹ãã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <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> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&Extended Features</source> <translation type="obsolete">拡張機能(&E)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Enable &VT-x/AMD-V</source> <translation type="obsolete">VT-x/AMD-Vを有効化(&V)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Defines whether virtual machines should try to make use of the host CPU's hardware virtualization extensions such as Intel VT-x and AMD-V by default or not.</source> <translation type="obsolete">仮想マシンãŒãƒ›ã‚¹ãƒˆCPUã®Intel VT-xã‚„AMD-Vãªã©ã®ä»®æƒ³åŒ–支æ´æ©Ÿèƒ½ã‚’デフォルトã§ä½¿ç”¨ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> <qt>Lists all global USB filters. The checkbox to the left @@ -4629,17 +4401,14 @@ to the system default language.</qt> USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニューã‹å³å´ã®ãƒœã‚¿ãƒ³ã‚’使用ã—ã¦ãã ã•ã„。</qt></translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Add Empty Filter</source> <translation type="obsolete">空ã®ãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ </translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&Add Empty Filter</source> <translation type="obsolete">空ã®ãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ (&A)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> <qt>Adds a new USB filter with all fields initially set to empty strings. Note that such a filter will match any attached USB @@ -4648,17 +4417,14 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation type="obsolete"><qt>ã™ã¹ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒç©ºã®æ–°è¦USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã—ã¾ã™ã€‚注:ã“ã®ãƒ•ã‚£ãƒ«ã‚¿ã¯ã™ã¹ã¦ã®æŽ¥ç¶šã•ã‚ŒãŸUSB デãƒã‚¤ã‚¹ã«é©åˆã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Add Filter From Device</source> <translation type="obsolete">デãƒã‚¤ã‚¹ã‹ã‚‰ãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ </translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>A&dd Filter From Device</source> <translation type="obsolete">デãƒã‚¤ã‚¹ã‹ã‚‰ãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã™ã‚‹(&D)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source><qt>Adds a new USB filter with all fields set to the values of the selected USB device attached to the host PC.</qt> @@ -4666,51 +4432,42 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation type="obsolete"><qt>é¸æŠžã—ãŸãƒ›ã‚¹ãƒˆPCã®USB デãƒã‚¤ã‚¹ã®å€¤ã‚’ã™ã¹ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«è¨å®šã—ãŸæ–°è¦USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Remove Filter</source> <translation type="obsolete">フィルタを除去</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&Remove Filter</source> <translation type="obsolete">フィルタを除去ã™ã‚‹(&R)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> <qt>Removes the highlighted USB filter.</qt> </source> <translation type="obsolete"><qt>ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•ã‚ŒãŸãƒ•ã‚£ãƒ«ã‚¿ã‚’除去ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Move Filter Up</source> <translation type="obsolete">フィルタを上ã«ç§»å‹•</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&Move Filter Up</source> <translation type="obsolete">フィルタを上ã«ç§»å‹•ã™ã‚‹(&M)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> <qt>Moves the highlighted USB filter up.</qt> </source> <translation type="obsolete"><qt>ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•ã‚ŒãŸãƒ•ã‚£ãƒ«ã‚¿ã‚’上ã«ç§»å‹•ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Move Filter Down</source> <translation type="obsolete">フィルタを下ã«ç§»å‹•</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>M&ove Filter Down</source> <translation type="obsolete">フィルタを下ã«ç§»å‹•(&O)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> <qt>Moves the highlighted USB filter down.</qt> </source> @@ -4720,32 +4477,26 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<context> <name>VBoxHardDiskSettings</name> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Slot</source> <translation type="obsolete">スãƒãƒƒãƒˆ</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Hard Disk</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>VBoxHardDiskSettings</source> <translation type="obsolete">VBoxHardDiskSettings</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&Hard Disks</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯(&H)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&Enable SATA Controller</source> <translation type="obsolete">SATA コントãƒãƒ¼ãƒ©ã‚’有効化(&E)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> <qt>When checked, enables the virtual SATA controller of this machine. Note that you cannot @@ -4755,12 +4506,10 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation type="obsolete"><qt>ã“ã®ä»®æƒ³ãƒžã‚·ãƒ³ã®ä»®æƒ³SATA コントãƒãƒ¼ãƒ©ã‚’有効ã«ã—ã¾ã™ã€‚注:仮想コントãƒãƒ¼ãƒ©ãŒç„¡åŠ¹ãªã¨ãã€ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’SATAãƒãƒ¼ãƒˆã«å–り付ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。</qt></translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Hard Disks &Attachments</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®å‰²ã‚Šå½“ã¦(&A)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> <qt>Lists all hard disks attached to this machine. Use a mouse double-click or the @@ -4777,66 +4526,54 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Add Attachment</source> <translation type="obsolete">割り当ã¦ã®è¿½åŠ </translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&Add Attachment</source> <translation type="obsolete">割り当ã¦ã‚’è¿½åŠ ã™ã‚‹(&A)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Ins</source> <translation type="obsolete">Ins</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> <qt>Adds a new hard disk attachment.</qt> </source> <translation type="obsolete"><qt>æ–°è¦ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®å‰²ã‚Šå½“ã¦ã‚’è¿½åŠ ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Remove Attachment</source> <translation type="obsolete">割り当ã¦ã‚’除去</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&Remove Attachment</source> <translation type="obsolete">割り当ã¦ã‚’除去ã™ã‚‹(&R)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Delete</source> <translation type="obsolete">削除</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> <qt>Removes the highlighted hard disk attachment.</qt> </source> <translation type="obsolete"><qt>ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•ã‚ŒãŸãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®å‰²ã‚Šå½“ã¦ã‚’除去ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Select Hard Disk</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’é¸æŠž</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>&Select Hard Disk</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’é¸æŠžã™ã‚‹(&S)</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Ctrl+Space</source> <translation type="obsolete">Ctrl+スペース</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source> <qt>Invokes the Virtual Disk Manager to select a hard disk to attach to the currently highlighted slot.</qt> @@ -4844,17 +4581,14 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation type="obsolete"><qt>仮想ディスクマãƒãƒ¼ã‚¸ãƒ£ã‚’èµ·å‹•ã—ã€ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’ç¾åœ¨ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•ã‚ŒãŸã‚¹ãƒãƒƒãƒˆã«å‰²ã‚Šå½“ã¦ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source><i>%1</i> uses the hard disk that is already attached to <i>%2</i></source> <translation type="obsolete"><i>%1</i>ã¯ã™ã§ã«<i>%2</i>ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã‚‹</translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>Double-click to add a new attachment</source> <translation type="obsolete">ダブルクリックã§æ–°è¦ã®å‰²ã‚Šå½“ã¦ã‚’è¿½åŠ </translation> </message> <message> - <location filename="../src/VBoxGlobalSettings.cpp" line="256"/> <source>No hard disk is selected for <i>%1</i></source> <translation type="obsolete"> <i>%1</i>ã®ãŸã‚ã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãŒé¸æŠžã•ã‚Œã¦ã„ãªã„</translation> </message> @@ -4914,6 +4648,7 @@ p, li { white-space: pre-wrap; } <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body><p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ã“ã®ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã¯ã€ä»®æƒ³ã‚¢ãƒ—ライアンスをインãƒãƒ¼ãƒˆã™ã‚‹æ‰‹é †ã‚’案内ã—ã¾ã™ã€‚ </p><p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ウィザードã®æ¬¡ã®ãƒšãƒ¼ã‚¸ã«é€²ã‚€ã«ã¯<span style=" font-weight:600;">[次ã¸]</span>ボタンをã€å‰ã®ãƒšãƒ¼ã‚¸ã«æˆ»ã‚‹ã«ã¯<span style=" font-weight:600;">[戻る]</span>ボタンを使用ã—ã¦ãã ã•ã„。</p><p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">インãƒãƒ¼ãƒˆã™ã‚‹ã«ã¯ã€æœ€åˆã«ä»®æƒ³ã‚¢ãƒ—ãƒ©ã‚¤ã‚¢ãƒ³ã‚¹æƒ…å ±ãŒæ›¸ã‹ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 VirtualBoxã¯Open Virtualization Format(OVF)をサãƒãƒ¼ãƒˆã—ã¾ã™ã€‚続ã„ã¦ã€ä»¥ä¸‹ã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„:</p></body></html></translation> </message> <message> + <location filename="../src/wizards/importappliance/VBoxImportApplianceWzd.ui" line="164"/> <location filename="../src/wizards/importappliance/VBoxImportApplianceWzd.ui" line="331"/> <source>< &Back</source> <translation>< 戻る(&B)</translation> @@ -4924,6 +4659,7 @@ p, li { white-space: pre-wrap; } <translation>次ã¸(&N) ></translation> </message> <message> + <location filename="../src/wizards/importappliance/VBoxImportApplianceWzd.ui" line="194"/> <location filename="../src/wizards/importappliance/VBoxImportApplianceWzd.ui" line="361"/> <source>Cancel</source> <translation>ã‚ャンセル</translation> @@ -5074,22 +4810,18 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxMediaComboBox</name> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="436"/> <source><no hard disk></source> <translation type="obsolete"><ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãªã—></translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="436"/> <source>No hard disk</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãªã—</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="436"/> <source>No media available. Use the Virtual Media Manager to add media of the corresponding type.</source> <translation type="obsolete">利用å¯èƒ½ãªãƒ¡ãƒ‡ã‚£ã‚¢ãŒã‚ã‚Šã¾ã›ã‚“。 仮想メディアマãƒãƒ¼ã‚¸ãƒ£ã‚’使用ã—ã¦ã€å¯¾å¿œã™ã‚‹ã‚¿ã‚¤ãƒ—ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’è¿½åŠ ã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="436"/> <source><no media></source> <translation type="obsolete"><メディアãªã—></translation> </message> @@ -5152,16 +4884,24 @@ p, li { white-space: pre-wrap; } <translation>メディアリストを最新ã®æƒ…å ±ã«æ›´æ–°</translation> </message> <message> + <location filename="../src/VBoxMediaManagerDlg.ui" line="105"/> + <location filename="../src/VBoxMediaManagerDlg.ui" line="210"/> + <location filename="../src/VBoxMediaManagerDlg.ui" line="301"/> + <location filename="../src/VBoxMediaManagerDlg.cpp" line="593"/> + <location filename="../src/VBoxMediaManagerDlg.cpp" line="597"/> <location filename="../src/VBoxMediaManagerDlg.cpp" line="600"/> <source>Location</source> <translation>å ´æ‰€</translation> </message> <message> + <location filename="../src/VBoxMediaManagerDlg.ui" line="122"/> <location filename="../src/VBoxMediaManagerDlg.cpp" line="594"/> <source>Type (Format)</source> <translation>タイプ(å½¢å¼)</translation> </message> <message> + <location filename="../src/VBoxMediaManagerDlg.ui" line="139"/> + <location filename="../src/VBoxMediaManagerDlg.ui" line="227"/> <location filename="../src/VBoxMediaManagerDlg.ui" line="318"/> <source>Attached to</source> <translation>割り当ã¦</translation> @@ -5233,6 +4973,8 @@ p, li { white-space: pre-wrap; } <translation>ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯(&D)</translation> </message> <message> + <location filename="../src/VBoxMediaManagerDlg.ui" line="72"/> + <location filename="../src/VBoxMediaManagerDlg.ui" line="182"/> <location filename="../src/VBoxMediaManagerDlg.ui" line="270"/> <source>Name</source> <translation>åå‰</translation> @@ -5253,6 +4995,7 @@ p, li { white-space: pre-wrap; } <translation>CD/DVDイメージ(&C)</translation> </message> <message> + <location filename="../src/VBoxMediaManagerDlg.ui" line="187"/> <location filename="../src/VBoxMediaManagerDlg.ui" line="275"/> <source>Size</source> <translation>サイズ</translation> @@ -5302,42 +5045,34 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxNIList</name> <message> - <location filename="../src/widgets/VBoxMiniToolBar.cpp" line="102"/> <source>VirtualBox Host Interface %1</source> <translation type="obsolete">VirtualBox ホスト インターフェース %1</translation> </message> <message> - <location filename="../src/widgets/VBoxMiniToolBar.cpp" line="102"/> <source><p>Do you want to remove the selected host network interface <nobr><b>%1</b>?</nobr></p><p><b>Note:</b> 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.</p></source> <translation type="obsolete"><p>é¸æŠžã—ãŸãƒ›ã‚¹ãƒˆ インターフェース ;<nobr><b>"%1"</b>を除去ã—ã¾ã™ã‹ï¼Ÿ</nobr></p><p><b>注:</b> ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¯è¤‡æ•°ã®ä»®æƒ³ãƒžã‚·ãƒ³ã®1ã¤ä»¥ä¸Šã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アタプタã§ä½¿ç”¨ä¸ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。除去ã™ã‚‹ã¨ã€ä»–ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹åã‚’é¸ã¶ã‹ã€åˆ¥ã®å‰²ã‚Šå½“ã¦æ–¹æ³•ã‚’æ£ã—ãè¨å®šã™ã‚‹ã¾ã§ãれらã®ã‚¢ãƒ€ãƒ—ã‚¿ã¯å‹•ä½œã—ã¾ã›ã‚“。</p></translation> </message> <message> - <location filename="../src/widgets/VBoxMiniToolBar.cpp" line="102"/> <source>Host &Interfaces</source> <translation type="obsolete">ホスト インターフェース(&I)</translation> </message> <message> - <location filename="../src/widgets/VBoxMiniToolBar.cpp" line="102"/> <source>Lists all available host interfaces.</source> <translation type="obsolete">利用å¯èƒ½ãªãƒ›ã‚¹ãƒˆ インターフェースをリスト表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/widgets/VBoxMiniToolBar.cpp" line="102"/> <source>A&dd New Host Interface</source> <translation type="obsolete">æ–°è¦ãƒ›ã‚¹ãƒˆ インターフェースã®è¿½åŠ (&D)</translation> </message> <message> - <location filename="../src/widgets/VBoxMiniToolBar.cpp" line="102"/> <source>&Remove Selected Host Interface</source> <translation type="obsolete">é¸æŠžã—ãŸãƒ›ã‚¹ãƒˆ インターフェースã®é™¤åŽ»(&R)</translation> </message> <message> - <location filename="../src/widgets/VBoxMiniToolBar.cpp" line="102"/> <source>Adds a new host interface.</source> <translation type="obsolete">æ–°è¦ãƒ›ã‚¹ãƒˆ ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚’è¿½åŠ ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/widgets/VBoxMiniToolBar.cpp" line="102"/> <source>Removes the selected host interface.</source> <translation type="obsolete">é¸æŠžã—ãŸãƒ›ã‚¹ãƒˆ インターフェースを除去ã—ã¾ã™ã€‚</translation> </message> @@ -5345,7 +5080,7 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxNetworkDialog</name> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3756"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3791"/> <source>Network Adapters</source> <translation>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタ</translation> </message> @@ -5358,7 +5093,6 @@ p, li { white-space: pre-wrap; } <translation>æ–°è¦ä»®æƒ³ãƒ‡ã‚£ã‚¹ã‚¯ã®ä½œæˆ</translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="30"/> <source><p>This wizard will help you to create a new virtual hard disk image for your virtual machine.</p> <p>Use the <b>Next</b> button to go to the next page of the wizard and the <b>Back</b> button to return to the previous page.</p></source> @@ -5371,50 +5105,41 @@ and the <b>Back</b> button to return to the previous page.</p> <translation>よã†ã“ãæ–°è¦ä»®æƒ³ãƒ‡ã‚£ã‚¹ã‚¯ä½œæˆã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã¸ï¼</translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="63"/> <source>Image Type</source> <translation type="obsolete">イメージã®ã‚¿ã‚¤ãƒ—</translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="63"/> <source>&Dynamically expanding image</source> <translation type="obsolete">å¯å¤‰ã‚µã‚¤ã‚ºã®ã‚¤ãƒ¡ãƒ¼ã‚¸(&D)</translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="63"/> <source>&Fixed-size image</source> <translation type="obsolete">固定サイズã®ã‚¤ãƒ¡ãƒ¼ã‚¸(&F)</translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="63"/> <source>Virtual Disk Image Type</source> <translation type="obsolete">仮想ディスクイメージã®ã‚¿ã‚¤ãƒ—</translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="63"/> <source><p>Press the <b>Select</b> 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.</p></source> <translation type="obsolete"><p><b>[é¸æŠž]</b>ボタンをクリックã—ã€ãƒ•ã‚¡ã‚¤ãƒ«ã®å ´æ‰€ã¨åå‰ã‚’é¸æŠžã—ã¦ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’ä¿å˜ã™ã‚‹ã‹ã€å…¥åŠ›ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ãƒ•ã‚¡ã‚¤ãƒ«åを入力ã—ã¦ãã ã•ã„ 。</p></translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="63"/> <source>&Image File Name</source> <translation type="obsolete">イメージファイルå(&I)</translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="63"/> <source>Select</source> <translation type="obsolete">é¸æŠž</translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="63"/> <source><p>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.</p></source> <translation type="obsolete"><p>仮想ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®ã‚µã‚¤ã‚ºã‚’é¸æŠžã—ã¦ãã ã•ã„。 ã“ã®ã‚µã‚¤ã‚ºã¯ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®ã‚µã‚¤ã‚ºã¨ã—ã¦ã‚²ã‚¹ãƒˆOSã«å ±å‘Šã•ã‚Œã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="63"/> <source>Image &Size</source> <translation type="obsolete">イメージã®ã‚µã‚¤ã‚º(&S)</translation> </message> @@ -5424,12 +5149,10 @@ as the size of the virtual hard disk.</p></source> <translation>仮想ディスクã®å ´æ‰€ã¨ã‚µã‚¤ã‚º</translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="435"/> <source>You are going to create a new virtual hard disk image with the following parameters:</source> <translation type="obsolete">æ–°è¦ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ã¯ä»¥ä¸‹ã®è¨å®šã§ä½œæˆã•ã‚Œã¾ã™:</translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="435"/> <source>If the above settings are correct, press the <b>Finish</b> button. Once you press it, a new hard disk image will be created. </source> @@ -5446,7 +5169,6 @@ as the size of the virtual hard disk.</p></source> <translation><nobr>%1 ãƒã‚¤ãƒˆ</nobr></translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.cpp" line="364"/> <source><table><tr><td>Type:</td><td>%1</td></tr><tr><td>Location:</td><td>%2</td></tr><tr><td>Size:</td><td>%3&nbsp;(%4&nbsp;Bytes)</td></tr></table></source> <translation type="obsolete"><table><tr><td>タイプ:</td><td>%1</td></tr><tr><td>å ´æ‰€:</td><td>%2</td></tr><tr><td>サイズ:</td><td>%3&nbsp;(%4&nbsp;ãƒã‚¤ãƒˆ)</td></tr></table></translation> </message> @@ -5461,7 +5183,6 @@ as the size of the virtual hard disk.</p></source> <translation>æ–°è¦ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„</translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.cpp" line="272"/> <source><p>Select the type of virtual hard disk image you want to create.</p> <p>A <b>dynamically expanding image</b> initially occupies a very small amount of space on your physical hard disk. It will grow dynamically (up to @@ -5476,37 +5197,37 @@ time depending on the image size and the write performance of your harddisk.< 固定サイズã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã®ä½œæˆã¯ã€ã‚¤ãƒ¡ãƒ¼ã‚¸ã®ã‚µã‚¤ã‚ºã¨ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®æ›¸ãè¾¼ã¿æ€§èƒ½ã«ä¾å˜ã—ã¦é•·ã„時間ãŒã‹ã‹ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。</p></translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.cpp" line="272"/> <source><p>This wizard will help you to create a new virtual hard disk image for your virtual machine.</p><p>Use the <b>Next</b> button to go to the next page of the wizard and the <b>Back</b> button to return to the previous page.</p></source> <translation type="obsolete"><p>ã“ã®ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã¯ä»®æƒ³ãƒžã‚·ãƒ³ç”¨ã®æ–°è¦ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ä½œæˆã‚’手助ã‘ã—ã¾ã™ã€‚</p><p>ウィザードã®æ¬¡ã®ãƒšãƒ¼ã‚¸ã«é€²ã‚€ã«ã¯<b>[次ã¸]</b>ボタンをã€å‰ã®ãƒšãƒ¼ã‚¸ã«æˆ»ã‚‹ã«ã¯<b>[戻る]</b>ボタンを使用ã—ã¦ãã ã•ã„。</p></translation> </message> <message> + <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="176"/> + <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="384"/> + <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="684"/> <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="898"/> <source>< &Back</source> <translation>< 戻る(&B)</translation> </message> <message> + <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="183"/> + <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="391"/> <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="691"/> <source>&Next ></source> <translation>次ã¸(&N) ></translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="691"/> <source><p>Select the type of virtual hard disk image you want to create.</p><p>A <b>dynamically expanding image</b> 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.</p><p>A <b>fixed-size image</b> 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.</p></source> <translation type="obsolete"><p>作æˆã™ã‚‹ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ã®ã‚¿ã‚¤ãƒ—ã‚’é¸æŠžã—ã¦ãã ã•ã„。</p><p><b>å¯å¤‰ã‚µã‚¤ã‚ºã®ã‚¤ãƒ¡ãƒ¼ã‚¸</b>ã¯ã€æœ€åˆã«ç‰©ç†çš„ãªãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ä¸Šã®ã”ãå°ã•ãªå®¹é‡ã—ã‹ä½¿ç”¨ã—ã¾ã›ã‚“。ゲストOSãŒè¦æ±‚ã™ã‚‹ãƒ‡ã‚£ã‚¹ã‚¯å®¹é‡ã«å¿œã˜ã¦ã‚µã‚¤ã‚ºãŒå‹•çš„ã«å¢—åŠ (指定ã•ã‚ŒãŸã‚µã‚¤ã‚ºã¾ã§)ã—ã¾ã™ã€‚</p><p><b>固定サイズã®ã‚¤ãƒ¡ãƒ¼ã‚¸</b>ã®å®¹é‡ã¯å¢—åŠ ã—ã¾ã›ã‚“。仮想ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®ã‚µã‚¤ã‚ºã¨ã»ã¼åŒã˜ã‚µã‚¤ã‚ºã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ä¿å˜ã•ã‚Œã¾ã™ã€‚固定サイズã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã®ä½œæˆã¯ã€ã‚¤ãƒ¡ãƒ¼ã‚¸ã®ã‚µã‚¤ã‚ºã¨ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®æ›¸ãè¾¼ã¿æ€§èƒ½ã«ä¾å˜ã—ã¦é•·ã„時間ãŒã‹ã‹ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。</p></translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="691"/> <source><p>Press the <b>Select</b> 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.</p></source> <translation type="obsolete"><p><b>[é¸æŠž]</b>ボタンをクリックã—ã€ãƒ•ã‚¡ã‚¤ãƒ«ã®å ´æ‰€ã¨åå‰ã‚’é¸æŠžã—ã¦ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’ä¿å˜ã™ã‚‹ã‹ã€å…¥åŠ›ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ãƒ•ã‚¡ã‚¤ãƒ«åを入力ã—ã¦ãã ã•ã„ 。</p></translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="691"/> <source><p>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.</p></source> <translation type="obsolete"><p>仮想ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®ã‚µã‚¤ã‚ºã‚’é¸æŠžã—ã¦ãã ã•ã„。ã“ã®ã‚µã‚¤ã‚ºã¯ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®ã‚µã‚¤ã‚ºã¨ã—ã¦ã‚²ã‚¹ãƒˆOSã«å ±å‘Šã•ã‚Œã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="691"/> <source>If the above settings are correct, press the <b>Finish</b> button. Once you press it, a new hard disk image will be created.</source> <translation type="obsolete">上記ã®è¨å®šãŒæ£ã—ã‘ã‚Œã°ã€<b>[完了]</b>ボタンをクリックã—ã¦ãã ã•ã„。 æ–°è¦ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ãŒä½œæˆã•ã‚Œã¾ã™ã€‚</translation> </message> @@ -5540,6 +5261,9 @@ time depending on the image size and the write performance of your harddisk.< <translation>ãƒã‚¤ãƒˆ</translation> </message> <message> + <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="206"/> + <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="414"/> + <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="714"/> <location filename="../src/wizards/newhd/VBoxNewHDWzd.ui" line="928"/> <source>Cancel</source> <translation>ã‚ャンセル</translation> @@ -5613,7 +5337,6 @@ time depending on the image size and the write performance of your harddisk.< <translation>æ–°è¦ä»®æƒ³ãƒžã‚·ãƒ³ã®ä½œæˆ</translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="31"/> <source><p>This wizard will guide you through the steps that are necessary to create a new virtual machine for VirtualBox.</p> <p>Use the <b>Next</b> button to go the next page of the wizard @@ -5627,7 +5350,6 @@ and the <b>Back</b> button to return to the previous page.</p> <translation>よã†ã“ãæ–°è¦ä»®æƒ³ãƒžã‚·ãƒ³ä½œæˆã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã¸ï¼</translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="55"/> <source><p>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.</p> <p>The name of the virtual machine usually indicates its software and hardware configuration. @@ -5661,17 +5383,14 @@ It will be used by all VirtualBox components to identify your virtual machine.&l <translation>メインメモリã®ã‚µã‚¤ã‚º(&M)</translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="524"/> <source><</source> <translation type="obsolete"><</translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="524"/> <source>=</source> <translation type="obsolete">=</translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="524"/> <source>></source> <translation type="obsolete">></translation> </message> @@ -5686,7 +5405,6 @@ It will be used by all VirtualBox components to identify your virtual machine.&l <translation>メモリ</translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="428"/> <source><p>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 <b>New</b> button or select an existing hard disk @@ -5700,17 +5418,14 @@ step and attach hard disks later using the VM Settings dialog.</p></source <p>より高度ãªãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯è¨å®šãŒå¿…è¦ã§ã‚ã‚Œã°ã€ã“ã®ã‚¹ãƒ†ãƒƒãƒ—をスã‚ップã—ã€å¾Œã§ä»®æƒ³ãƒžã‚·ãƒ³è¨å®šãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’使用ã—ã¦ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’割り当ã¦ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="428"/> <source>B&oot Hard Disk (Primary Master)</source> <translation type="obsolete">起動ディスク (プライマリ マスター) (&O)</translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="428"/> <source>N&ew...</source> <translation type="obsolete">æ–°è¦(&E)...</translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="428"/> <source>E&xisting...</source> <translation type="obsolete">é¸æŠž(&X)...</translation> </message> @@ -5720,7 +5435,6 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>仮想ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="716"/> <source> <p> You are going to create a new virtual machine @@ -5730,7 +5444,6 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation type="obsolete"> <p>æ–°è¦ä»®æƒ³ãƒžã‚·ãƒ³ã¯ä»¥ä¸‹ã®è¨å®šã§ä½œæˆã•ã‚Œã¾ã™: </p></translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="716"/> <source> <p> If the above is correct press the <b>Finish</b> button. @@ -5751,17 +5464,14 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>概è¦</translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="948"/> <source><qt>%1&nbsp;MB</qt></source> <translation type="obsolete"><qt>%1&nbsp;MB</qt></translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="948"/> <source><tr><td>Name:</td><td>%1</td></tr><tr><td>OS Type:</td><td>%2</td></tr><tr><td>Base Memory:</td><td>%3&nbsp;MB</td></tr></source> <translation type="obsolete"><tr><td>åå‰:</td><td>%1</td></tr><tr><td>OSタイプ:</td><td>%2</td></tr><tr><td>メインメモリ:</td><td>%3&nbsp;MB</td></tr></translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="948"/> <source><tr><td>Boot Hard Disk:</td><td>%4</td></tr></source> <translation type="obsolete"><tr><td>起動ディスク:</td><td>%4</td></tr></translation> </message> @@ -5781,11 +5491,18 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation><p>ã“ã®ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã¯VirtualBox用ã®æ–°è¦ä»®æƒ³ãƒžã‚·ãƒ³ã‚’作æˆã™ã‚‹ãŸã‚ã«å¿…è¦ãªã‚¹ãƒ†ãƒƒãƒ—を案内ã—ã¾ã™ã€‚</p><p>ウィザードã®æ¬¡ã®ãƒšãƒ¼ã‚¸ã«é€²ã‚€ã«ã¯<b>[次ã¸]</b>ボタンをã€å‰ã®ãƒšãƒ¼ã‚¸ã«æˆ»ã‚‹ã«ã¯<b>[戻る]</b>ボタンを使用ã—ã¦ãã ã•ã„。</p></translation> </message> <message> + <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="165"/> + <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="377"/> + <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="665"/> + <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="897"/> <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="1105"/> <source>< &Back</source> <translation>< 戻る(&B)</translation> </message> <message> + <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="172"/> + <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="384"/> + <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="672"/> <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="904"/> <source>&Next ></source> <translation>次ã¸(&N) ></translation> @@ -5796,7 +5513,6 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation><p>æ–°è¦ä»®æƒ³ãƒžã‚·ãƒ³ã®åå‰ã‚’入力ã—ã€ä»®æƒ³ãƒžã‚·ãƒ³ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã„ゲストOSã®ã‚¿ã‚¤ãƒ—ã‚’é¸æŠžã—ã¦ãã ã•ã„。</p><p>通常ã€ä»®æƒ³ãƒžã‚·ãƒ³ã®åå‰ã¯ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¨ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢æ§‹æˆã‚’示ã—ã¾ã™ã€‚VirtualBoxã¯ä½œæˆã•ã‚ŒãŸä»®æƒ³ãƒžã‚·ãƒ³ã‚’特定ã™ã‚‹ãŸã‚ã«ã“ã®åå‰ã‚’使用ã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="274"/> <source><p>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 <b>New</b> button or select an existing hard disk image from the drop-down list or by pressing the <b>Existing</b> button (to invoke the Virtual Disk Manager dialog).</p><p>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.</p></source> <translation type="obsolete"><p>仮想マシンã§èµ·å‹•ãƒ‡ã‚£ã‚¹ã‚¯ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é¸æŠžã—ã¾ã™ã€‚<b>[æ–°è¦]</b>ボタンをクリックã—ã¦æ–°è¦ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’作æˆã™ã‚‹ã‹ã€ãƒ‰ãƒãƒƒãƒ—ダウンリストã¾ãŸã¯<b>[é¸æŠž]</b>ボタンをクリック(仮想ディスクマãƒãƒ¼ã‚¸ãƒ£ã‚’èµ·å‹•ã—ã¾ã™)ã—ã¦æ—¢å˜ã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é¸æŠžã—ã¾ã™ã€‚</p><p>より高度ãªãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯è¨å®šãŒå¿…è¦ã§ã‚ã‚Œã°ã€ã“ã®ã‚¹ãƒ†ãƒƒãƒ—をスã‚ップã—ã€å¾Œã§ä»®æƒ³ãƒžã‚·ãƒ³è¨å®šãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’使用ã—ã¦ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’割り当ã¦ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚</p></translation> </message> @@ -5816,6 +5532,8 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>完了(&F)</translation> </message> <message> + <location filename="../src/wizards/newvm/VBoxNewVMWzd.cpp" line="134"/> + <location filename="../src/wizards/newvm/VBoxNewVMWzd.cpp" line="136"/> <location filename="../src/wizards/newvm/VBoxNewVMWzd.cpp" line="150"/> <source>MB</source> <comment>megabytes</comment> @@ -5846,6 +5564,10 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>èµ·å‹• ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation> </message> <message> + <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="195"/> + <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="407"/> + <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="695"/> + <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="927"/> <location filename="../src/wizards/newvm/VBoxNewVMWzd.ui" line="1135"/> <source>Cancel</source> <translation>ã‚ャンセル</translation> @@ -5884,7 +5606,6 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>仮想マシンã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹OSã®ç¨®é¡žã‚’表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/widgets/VBoxOSTypeSelectorWidget.cpp" line="126"/> <source>V&ersion:</source> <translation type="obsolete">ãƒãƒ¼ã‚¸ãƒ§ãƒ³(&E):</translation> </message> @@ -5902,599 +5623,576 @@ step and attach hard disks later using the VM Settings dialog.</p></source <context> <name>VBoxProblemReporter</name> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="160"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="159"/> <source>VirtualBox - Information</source> <comment>msg box title</comment> <translation>VirtualBox - æƒ…å ±</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="164"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="163"/> <source>VirtualBox - Question</source> <comment>msg box title</comment> <translation>VirtualBox - 質å•</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="168"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="167"/> <source>VirtualBox - Warning</source> <comment>msg box title</comment> <translation>VirtualBox - è¦å‘Š</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="172"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="171"/> <source>VirtualBox - Error</source> <comment>msg box title</comment> <translation>VirtualBox - エラー</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="176"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="175"/> <source>VirtualBox - Critical Error</source> <comment>msg box title</comment> <translation>VirtualBox - é‡å¤§ãªã‚¨ãƒ©ãƒ¼</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="200"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="199"/> <source>Do not show this message again</source> <comment>msg box flag</comment> <translation>次回ã‹ã‚‰ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ãªã„</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="415"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="414"/> <source>Failed to open <tt>%1</tt>. Make sure your desktop environment can properly handle URLs of this type.</source> <translation><tt>%1</tt>ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚デスクトップ環境ãŒé©åˆ‡ã«URLを扱ãˆã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="465"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="464"/> <source><p>Failed to initialize COM or to find the VirtualBox COM server. Most likely, the VirtualBox server is not running or failed to start.</p><p>The application will now terminate.</p></source> <translation><p>COMã®åˆæœŸåŒ–ã«å¤±æ•—ã—ãŸã‹ã€ã¾ãŸã¯VirtualBox COMサーãƒãƒ¼ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚VirtualBoxサーãƒãŒèµ·å‹•ã—ã¦ã„ãªã„ã‹ã€ã¾ãŸã¯èµ·å‹•ã«å¤±æ•—ã—ã¦ã„ã¾ã™ã€‚</p><p>アプリケーションを終了ã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="475"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="474"/> <source><p>Failed to create the VirtualBox COM object.</p><p>The application will now terminate.</p></source> <translation><p>VirtualBox COMオブジェクトã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</p><p>アプリケーションを終了ã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="524"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="523"/> <source>Failed to set global VirtualBox properties.</source> <translation>ã‚°ãƒãƒ¼ãƒãƒ«ãªVirtualBoxã®ãƒ—ãƒãƒ‘ティã®è¨å®šã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="554"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="553"/> <source>Failed to access the USB subsystem.</source> <translation>USBサブシステムã®ã‚¢ã‚¯ã‚»ã‚¹ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="565"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="564"/> <source>Failed to create a new virtual machine.</source> <translation>æ–°è¦ä»®æƒ³ãƒžã‚·ãƒ³ã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="577"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="576"/> <source>Failed to create a new virtual machine <b>%1</b>.</source> <translation>æ–°è¦ä»®æƒ³ãƒžã‚·ãƒ³<b>"%1"</b>ã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="589"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="588"/> <source>Failed to apply the settings to the virtual machine <b>%1</b>.</source> <translation>仮想マシン<b>"%1"</b>ã®è¨å®šã®é©ç”¨ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="650"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="635"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="649"/> <source>Failed to start the virtual machine <b>%1</b>.</source> <translation>仮想マシン<b>"%1"</b>ã®èµ·å‹•ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="662"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="661"/> <source>Failed to pause the execution of the virtual machine <b>%1</b>.</source> <translation>仮想マシン<b>"%1"</b>ã®ä¸€æ™‚åœæ¢ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="673"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="672"/> <source>Failed to resume the execution of the virtual machine <b>%1</b>.</source> <translation>仮想マシン<b>"%1"</b>ã®å†é–‹ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="710"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="695"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="709"/> <source>Failed to save the state of the virtual machine <b>%1</b>.</source> <translation>仮想マシン<b>"%1"</b>ã®çŠ¶æ…‹ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="736"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="721"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="735"/> <source>Failed to create a snapshot of the virtual machine <b>%1</b>.</source> <translation>仮想マシン<b>"%1"</b>ã®ã‚¹ãƒŠãƒƒãƒ—ショット作æˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="760"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="747"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="759"/> <source>Failed to stop the virtual machine <b>%1</b>.</source> <translation>仮想マシン<b>"%1"</b>ã®åœæ¢ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="772"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="771"/> <source>Failed to remove the virtual machine <b>%1</b>.</source> <translation>仮想マシン<b>"%1"</b>ã®é™¤åŽ»ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="783"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="782"/> <source>Failed to discard the saved state of the virtual machine <b>%1</b>.</source> <translation>仮想マシン<b>"%1"</b>ã®ä¿å˜ã•ã‚ŒãŸçŠ¶æ…‹ã®ç ´æ£„ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="783"/> <source>Failed to discard the snapshot <b>%1</b> of the virtual machine <b>%2</b>.</source> <translation type="obsolete">仮想マシン<b>"%2"</b>ã®ã‚¹ãƒŠãƒƒãƒ—ショット <b>%1</b> ã®ç ´æ£„ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="783"/> <source>Failed to discard the current state of the virtual machine <b>%1</b>.</source> <translation type="obsolete">仮想マシン<b>"%1"</b>ã®æœ€æ–°ã®çŠ¶æ…‹ã®ç ´æ£„ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="783"/> <source>Failed to discard the current snapshot and the current state of the virtual machine <b>%1</b>.</source> <translation type="obsolete">仮想マシン<b>"%1"</b>ã®æœ€æ–°ã®ã‚¹ãƒŠãƒƒãƒ—ショットã¨çŠ¶æ…‹ã®ç ´æ£„ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="906"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="905"/> <source>There is no virtual machine named <b>%1</b>.</source> <translation>仮想マシン<b>"%1"</b>ãŒã‚ã‚Šã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="952"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="951"/> <source><p>Are you sure you want to permanently delete the virtual machine <b>%1</b>?</p><p>This operation cannot be undone.</p></source> <translation><p>仮想マシン<b>"%1"</b>を削除ã—ã¾ã™ã‹ï¼Ÿ</p><p>ã“ã®æ“作ã¯å…ƒã«æˆ»ã›ã¾ã›ã‚“。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="964"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="963"/> <source><p>Are you sure you want to unregister the inaccessible virtual machine <b>%1</b>?</p><p>You will not be able to register it again from GUI.</p></source> <translation><p>アクセスã§ããªã„仮想マシン<b>"%1"</b>ã®ç™»éŒ²ã‚’解除ã—ã¾ã™ã‹ï¼Ÿ</p><p>GUIã‹ã‚‰ãれを登録ã—ç›´ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。</p> </translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="979"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="978"/> <source><p>Are you sure you want to discard the saved state of the virtual machine <b>%1</b>?</p><p>This operation is equivalent to resetting or powering off the machine without doing a proper shutdown of the guest OS.</p></source> <translation><p>仮想マシン<b>"%1"</b>ã®ä¿å˜ã•ã‚ŒãŸçŠ¶æ…‹ã‚’ç ´æ£„ã—ã¾ã™ã‹ï¼Ÿ</p><p>ã“ã®æ“作ã¯ã‚²ã‚¹ãƒˆOSã‚’é©åˆ‡ã«ã‚·ãƒ£ãƒƒãƒˆãƒ€ã‚¦ãƒ³ã›ãšã«ãƒªã‚»ãƒƒãƒˆã¾ãŸã¯é›»æºã‚’オフã«ã™ã‚‹ã“ã¨ã¨åŒç‰ã§ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="979"/> <source><p>Releasing this media image will detach it from the following virtual machine(s): <b>%1</b>.</p><p>Continue?</p></source> <translation type="obsolete"><p>ã“ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’解放ã™ã‚‹ã¨ã€ä»¥ä¸‹ã®ä»®æƒ³ãƒžã‚·ãƒ³ã§ã®å‰²ã‚Šå½“ã¦ãŒè§£é™¤ã•ã‚Œã¾ã™:<b>%1</b>.</p><p>続行ã—ã¾ã™ã‹ï¼Ÿ</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="979"/> <source><p>The image file <b>%1</b> 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.</p><p>Please specify a different image file name.</p></source> <translation type="obsolete"><p>イメージファイル<b>"%1"</b>ã¯ã™ã§ã«å˜åœ¨ã—ã¾ã™ã€‚ä»–ã®ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã§ã“ã®åå‰ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã‚‹ãŸã‚ã€æ–°è¦ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’作æˆã§ãã¾ã›ã‚“。</p><p>別ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ•ã‚¡ã‚¤ãƒ«åを指定ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="979"/> <source>Failed to delete the virtual hard disk image <b>%1</b>.</source> <translation type="obsolete">仮想ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸<b>"%1"</b>ã®å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="979"/> <source><p>Do you want to remove (unregister) the virtual hard disk <nobr><b>%1</b>?</nobr></p></source> <translation type="obsolete"><p>仮想ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯<nobr><b>"%1"</b>を除去(登録解除)ã—ã¾ã™ã‹ï¼Ÿ</nobr></p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="979"/> <source>Failed to create the virtual hard disk image <nobr><b>%1</b>.</nobr></source> <translation type="obsolete">仮想ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸<nobr><b>"%1"</b>ã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="979"/> <source>hard disk</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="979"/> <source>CD/DVD image</source> <translation type="obsolete">CD/DVDイメージ</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="979"/> <source>floppy image</source> <translation type="obsolete">フãƒãƒƒãƒ”ーイメージ</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="979"/> <source>Failed to register the %1 <nobr><b>%2</b></nobr>.</source> <translation type="obsolete">%1 <nobr><b>%2</b></nobr>ã®ç™»éŒ²ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ </translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="979"/> <source>Failed to unregister the %1 <nobr><b>%2</b></nobr>.</source> <translation type="obsolete">%1 <nobr><b>%2</b></nobr>ã®ç™»éŒ²è§£é™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1278"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1277"/> <source>Failed to create a new session.</source> <translation>æ–°è¦ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1296"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1295"/> <source>Failed to open a session for the virtual machine <b>%1</b>.</source> <translation>仮想マシン<b>"%1"</b>ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1296"/> <source>Failed to determine the accessibility state of the media <nobr><b>%1</b></nobr>. Some of the registered media may become inaccessible.</source> <translation type="obsolete">メディア<nobr><b>"%1"</b></nobr>ã®ã‚¢ã‚¯ã‚»ã‚¹å¯å¦çŠ¶æ…‹ã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚登録ã•ã‚ŒãŸãƒ¡ãƒ‡ã‚£ã‚¢ã®ã„ãã¤ã‹ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1296"/> <source>Failed to create the host network interface <b>%1</b>.</source> <translation type="obsolete">ホスト ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ インターフェース<b>"%1"</b>ã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1358"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1348"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1357"/> <source>Failed to remove the host network interface <b>%1</b>.</source> <translation>ホスト ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ インターフェース<b>"%1"</b>ã‚’å–り除ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1382"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1369"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1381"/> <source>Failed to attach the USB device <b>%1</b> to the virtual machine <b>%2</b>.</source> <translation>USB デãƒã‚¤ã‚¹<b>"%1"</b>ã®ä»®æƒ³ãƒžã‚·ãƒ³<b>"%2"</b>ã¸ã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1408"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1395"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1407"/> <source>Failed to detach the USB device <b>%1</b> from the virtual machine <b>%2</b>.</source> <translation>USB デãƒã‚¤ã‚¹<b>"%1"</b>ã®ä»®æƒ³ãƒžã‚·ãƒ³<b>"%2"</b>ã‹ã‚‰ã®å‰²ã‚Šå½“ã¦è§£é™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1460"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1423"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1459"/> <source>Failed to create the shared folder <b>%1</b> (pointing to <nobr><b>%2</b></nobr>) for the virtual machine <b>%3</b>.</source> <translation>仮想マシン<b>"%3"</b>ã®å…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€<b>"%1"</b>(å‚照先 <nobr><b>%2</b></nobr>)ã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1442"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1441"/> <source>Failed to remove the shared folder <b>%1</b> (pointing to <nobr><b>%2</b></nobr>) from the virtual machine <b>%3</b>.</source> <translation>仮想マシン<b>"%3"</b>ã®å…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€<b>"%1"</b>(å‚照先 <nobr><b>%2</b></nobr>)ã®é™¤åŽ»ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1442"/> <source><p>You have <b>clicked the mouse</b> inside the Virtual Machine display or pressed the <b>host key</b>. This will cause the Virtual Machine to <b>capture</b> the host mouse pointer (only if the mouse pointer integration is not currently supported by the guest OS) and the keyboard, which will make them unavailable to other applications running on your host machine.</p><p>You can press the <b>host key</b> at any time to <b>uncapture</b> the keyboard and mouse (if it is captured) and return them to normal operation. The currently assigned host key is shown on the status bar at the bottom of the Virtual Machine window, next to the&nbsp;<img src=hostkey_16px.png/>&nbsp;icon. This icon, together with the mouse icon placed nearby, indicate the current keyboard and mouse capture state.</p></source> <translation type="obsolete"><p>仮想マシンã®ç”»é¢ã‚’<b>マウスクリック</b>ã™ã‚‹ã‹ã€ã¾ãŸã¯<b>ホストã‚ー</b>を押ã™ã¨ã€ä»®æƒ³ãƒžã‚·ãƒ³ã¯ãƒžã‚¦ã‚¹ãƒã‚¤ãƒ³ã‚¿(マウス統åˆæ©Ÿèƒ½ãŒã‚²ã‚¹ãƒˆOSã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ã¨ãã ã‘)ã¨ã‚ーボードを<b>ã‚ャプãƒãƒ£</b>ã—ã¾ã™ã€‚仮想マシンã«ã‚ーボードã¨ãƒžã‚¦ã‚¹ãŒã‚ャプãƒãƒ£ã•ã‚Œã‚‹ã¨ãƒ›ã‚¹ãƒˆPCã§å‹•ä½œã™ã‚‹ä»–ã®ã‚¢ãƒ—リケーションã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。</p><p></p><p><b>ホストã‚ー</b>を押ã™ã¨ã€ã‚ーボードã¨ãƒžã‚¦ã‚¹(ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã‚‹ã¨ã)ã¯<b>ã‚ャプãƒãƒ£è§£é™¤</b>ã•ã‚Œã€é€šå¸¸ã®æ“作ã«æˆ»ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ç¾åœ¨å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„るホストã‚ーã¯ä»®æƒ³ãƒžã‚·ãƒ³ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ä¸‹éƒ¨ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒãƒ¼ã«&nbsp;<img src=hostkey_16px.png/>&nbsp;アイコンã§è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã“ã®ã‚¢ã‚¤ã‚³ãƒ³ã¯ãƒžã‚¦ã‚¹ã‚¢ã‚¤ã‚³ãƒ³ã¨å…±ã«ç¾åœ¨ã®ã‚ーボ−ドã¨ãƒžã‚¦ã‚¹ã®ã‚ャプãƒãƒ£çŠ¶æ…‹ã‚’表示ã—ã¾ã™ã€‚.</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1442"/> <source><p>You have the <b>Auto capture keyboard</b> option turned on. This will cause the Virtual Machine to automatically <b>capture</b> the keyboard every time the VM window is activated and make it unavailable to other applications running on your host machine: when the keyboard is captured, all keystrokes (including system ones like Alt-Tab) will be directed to the VM.</p><p>You can press the <b>host key</b> at any time to <b>uncapture</b> the keyboard and mouse (if it is captured) and return them to normal operation. The currently assigned host key is shown on the status bar at the bottom of the Virtual Machine window, next to the&nbsp;<img src=hostkey_16px.png/>&nbsp;icon. This icon, together with the mouse icon placed nearby, indicate the current keyboard and mouse capture state.</p></source> <translation type="obsolete"><p><b>ã‚ーボードã®è‡ªå‹•ã‚ャプãƒãƒ£</b>機能ãŒæœ‰åŠ¹ã§ã™ã€‚仮想マシンã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã®ã¨ãã€ä»®æƒ³ãƒžã‚·ãƒ³ã¯ã‚ーボードを自動的ã«<b>ã‚ャプãƒãƒ£</b>ã—ã¾ã™ã€‚ã‚ーボードãŒã‚ャプãƒãƒ£ã•ã‚Œã‚‹ã¨ã€ã™ã¹ã¦ã®ã‚ーストãƒãƒ¼ã‚¯(Alt-Tabãªã©ã‚’å«ã‚€)ãŒä»®æƒ³ãƒžã‚·ãƒ³ã«é€ã‚‰ã‚Œã‚‹ãŸã‚ã€ãƒ›ã‚¹ãƒˆPCã§å‹•ä½œã™ã‚‹ä»–ã®ã‚¢ãƒ—リケーションã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。</p><p><b>ホストã‚ー</b>を押ã™ã¨ã€ã‚ーボードã¨ãƒžã‚¦ã‚¹(ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã‚‹ã¨ã)ã¯<b>ã‚ャプãƒãƒ£è§£é™¤</b>ã•ã‚Œã€é€šå¸¸ã®æ“作ã«æˆ»ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ç¾åœ¨å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„るホストã‚ーã¯ä»®æƒ³ãƒžã‚·ãƒ³ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ä¸‹éƒ¨ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒãƒ¼ã«&nbsp;<img src=hostkey_16px.png/>&nbsp;アイコンã§è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã“ã®ã‚¢ã‚¤ã‚³ãƒ³ã¯ãƒžã‚¦ã‚¹ã‚¢ã‚¤ã‚³ãƒ³ã¨å…±ã«ç¾åœ¨ã®ã‚ーボ−ドã¨ãƒžã‚¦ã‚¹ã®ã‚ャプãƒãƒ£çŠ¶æ…‹ã‚’表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1442"/> <source><p>The Virtual Machine reports that the guest OS supports <b>mouse pointer integration</b>. This means that you do not need to <i>capture</i> the mouse pointer to be able to use it in your guest OS -- all mouse actions you perform when the mouse pointer is over the Virtual Machine's display are directly sent to the guest OS. If the mouse is currently captured, it will be automatically uncaptured.</p><p>The mouse icon on the status bar will look like&nbsp;<img src=mouse_seamless_16px.png/>&nbsp;to inform you that mouse pointer integration is supported by the guest OS and is currently turned on.</p><p><b>Note</b>: Some applications may behave incorrectly in mouse pointer integration mode. You can always disable it for the current session (and enable it again) by selecting the corresponding action from the menu bar.</p></source> <translation type="obsolete"><p>ゲストOSã§<b>マウス統åˆ</b>機能ãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™ã€‚ゲストOSã§ãƒžã‚¦ã‚¹ãƒã‚¤ãƒ³ã‚¿ã‚’<i>ã‚ャプãƒãƒ£</i>ã™ã‚‹ã“ã¨ãªã使用ã§ãã¾ã™ã€‚仮想マシンã®ç”»é¢ä¸Šã«ãƒžã‚¦ã‚¹ãƒã‚¤ãƒ³ã‚¿ãŒã‚ã‚‹ã¨ãã€ã™ã¹ã¦ã®ãƒžã‚¦ã‚¹ã®å‹•ä½œã¯ç›´æŽ¥ã‚²ã‚¹ãƒˆOSã«é€ã‚‰ã‚Œã¾ã™ã€‚ç¾åœ¨ãƒžã‚¦ã‚¹ãŒã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã‚‹ã¨ãã¯ã€è‡ªå‹•çš„ã«ã‚ャプãƒãƒ£è§£é™¤ã•ã‚Œã¾ã™ã€‚ステータスãƒãƒ¼ã®ãƒžã‚¦ã‚¹ã‚¢ã‚¤ã‚³ãƒ³ã¯ã€ãƒžã‚¦ã‚¹çµ±åˆæ©Ÿèƒ½ãŒã‚²ã‚¹ãƒˆOSã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œã€ç¾åœ¨æœ‰åŠ¹ã§ã‚ã‚‹ã“ã¨ã‚’示ã™ãŸã‚&nbsp;<img src=mouse_seamless_16px.png/>&nbsp;ã®ã‚ˆã†ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ </p><p><b>注</b>: マウス統åˆæ©Ÿèƒ½ãŒæœ‰åŠ¹ãªã¨ãã€ã„ãã¤ã‹ã®ã‚¢ãƒ—リケーションã®å‹•ä½œãŒä¸æ£ã«ãªã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。メニューãƒãƒ¼ã‹ã‚‰å¯¾å¿œã™ã‚‹å‹•ä½œã‚’é¸æŠžã—ã¦ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®ãƒžã‚¦ã‚¹çµ±åˆæ©Ÿèƒ½ã‚’無効化(ã¾ãŸã¯æœ‰åŠ¹åŒ–)ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1772"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1771"/> <source><p>The Virtual Machine reports that the guest OS does not support <b>mouse pointer integration</b> 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.</p></source> <translation><p>ç¾åœ¨ã®ãƒ“デオモードã§ã¯ã‚²ã‚¹ãƒˆOSã§<b>マウス統åˆ</b>機能ãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“。ゲストOSã§ãƒžã‚¦ã‚¹ã‚’使用ã™ã‚‹ãŸã‚ã«ã¯ãƒžã‚¦ã‚¹ã‚’ã‚ャプãƒãƒ£(仮想マシンã®ç”»é¢ã‚’クリックã™ã‚‹ã‹ã€ã¾ãŸã¯ãƒ›ã‚¹ãƒˆã‚ーを押ã™)ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1790"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1789"/> <source><p>The Virtual Machine is currently in the <b>Paused</b> state and not able to see any keyboard or mouse input. If you want to continue to work inside the VM, you need to resume it by selecting the corresponding action from the menu bar.</p></source> <translation><p>仮想マシンã¯ç¾åœ¨<b>"一時åœæ¢"</b>状態ã®ãŸã‚ã€ã‚ーボードã¨ãƒžã‚¦ã‚¹æ“作をå—ã‘付ã‘ã¾ã›ã‚“。仮想マシンã§ã®ä½œæ¥ã‚’続ã‘ãŸã„å ´åˆã¯ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒãƒ¼ã‹ã‚‰å¯¾å¿œã™ã‚‹å‹•ä½œã‚’é¸æŠžã—ã¦ã€ä»®æƒ³ãƒžã‚·ãƒ³ã‚’å†é–‹ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2017"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2016"/> <source><p>Cannot run VirtualBox in <i>VM Selector</i> mode due to local restrictions.</p><p>The application will now terminate.</p></source> <translation><p>ãƒãƒ¼ã‚«ãƒ«ã®åˆ¶é™ã®ãŸã‚〠<i>VM Selector</i>モードã§VirtualBoxを実行ã§ãã¾ã›ã‚“。</p><p>アプリケーションを終了ã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2151"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2150"/> <source><nobr>Fatal Error</nobr></source> <comment>runtime error info</comment> <translation><nobr>致命的ãªã‚¨ãƒ©ãƒ¼</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2157"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2156"/> <source><nobr>Non-Fatal Error</nobr></source> <comment>runtime error info</comment> <translation><nobr>致命的ã§ãªã„エラー</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2163"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2162"/> <source><nobr>Warning</nobr></source> <comment>runtime error info</comment> <translation><nobr>è¦å‘Š</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2180"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2179"/> <source><nobr>Error ID: </nobr></source> <comment>runtime error info</comment> <translation><nobr>エラーID: </nobr></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2182"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2181"/> <source>Severity: </source> <comment>runtime error info</comment> <translation>é‡è¦åº¦:</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2193"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2192"/> <source><p>A fatal error has occurred during virtual machine execution! The virtual machine will be powered off. Please copy the following error message using the clipboard to help diagnose the problem:</p></source> <translation><p>仮想マシンã®å®Ÿè¡Œä¸ã«è‡´å‘½çš„ãªã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸï¼ä»®æƒ³ãƒžã‚·ãƒ³ã®é›»æºã‚’オフã«ã—ã¾ã™ã€‚調査ã®ãŸã‚ã«ä»¥ä¸‹ã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’クリップボードã«ã‚³ãƒ”ーã—ã¦ä½¿ç”¨ã—ã¦ãã ã•ã„:</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2205"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2204"/> <source><p>An error has occurred during virtual machine execution! The error details are shown below. You may try to correct the error and resume the virtual machine execution.</p></source> <translation><p>仮想マシンã®å®Ÿè¡Œä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸï¼ã‚¨ãƒ©ãƒ¼ã®è©³ç´°ã‚’以下ã«ç¤ºã—ã¾ã™ã€‚説明ã•ã‚ŒãŸã‚¨ãƒ©ãƒ¼ã‚’ä¿®æ£ã—ã€ä»®æƒ³ãƒžã‚·ãƒ³ã®å†å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2214"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2213"/> <source><p>The virtual machine execution may run into an error condition as described below. We suggest that you take an appropriate action to avert the error.</p></source> <translation><p>仮想マシンã®å®Ÿè¡Œä¸ã€ä»¥ä¸‹ã§èª¬æ˜Žã•ã‚Œã‚‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ç„¡è¦–ã§ãã¾ã™ãŒã€å‹•ä½œã‚’確実ã«ã™ã‚‹ãŸã‚ã«ã€èª¬æ˜Žã•ã‚ŒãŸèª¤ã‚Šã‚’対ç–ã™ã‚‹ã“ã¨ãŒæŽ¨å¥¨ã•ã‚Œã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2351"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2350"/> <source>Result&nbsp;Code: </source> <comment>error info</comment> <translation>終了コード&nbsp;: </translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2357"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2356"/> <source>Component: </source> <comment>error info</comment> <translation>コンãƒãƒ¼ãƒãƒ³ãƒˆ: </translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2365"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2364"/> <source>Interface: </source> <comment>error info</comment> <translation>インターフェース: </translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2374"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2373"/> <source>Callee: </source> <comment>error info</comment> <translation>呼ã³å‡ºã—å…ˆ: </translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2382"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2381"/> <source>Callee&nbsp;RC: </source> <comment>error info</comment> <translation>呼ã³å‡ºã—å…ˆ&nbsp;RC: </translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="440"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="439"/> <source><p>Could not find a language file for the language <b>%1</b> in the directory <b><nobr>%2</nobr></b>.</p><p>The language will be temporarily reset to the system default language. Please go to the <b>Preferences</b> dialog which you can open from the <b>File</b> menu of the main VirtualBox window, and select one of the existing languages on the <b>Language</b> page.</p></source> <translation><p>言語ファイル<b>"%1"</b>ãŒ<b><nobr>%2</nobr></b>ディレクトリä¸ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。</p><p>言語ã¯ä¸€æ™‚çš„ã«ã‚·ã‚¹ãƒ†ãƒ ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆè¨€èªžã«è¨å®šã•ã‚Œã¾ã™ã€‚VirtualBoxメインウィンドウã®<b>[ファイル]</b>メニューã‹ã‚‰<b>[環境è¨å®š]</b>ダイアãƒã‚°ã‚’é–‹ãã€<b>[言語]</b>ページã§è¡¨ç¤ºã•ã‚Œã¦ã„る言語をé¸æŠžã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="453"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="452"/> <source><p>Could not load the language file <b><nobr>%1</nobr></b>. <p>The language will be temporarily reset to English (built-in). Please go to the <b>Preferences</b> dialog which you can open from the <b>File</b> menu of the main VirtualBox window, and select one of the existing languages on the <b>Language</b> page.</p></source> <translation><p>言語ファイル<b><nobr>"%1"</nobr></b>ãŒèªã¿è¾¼ã‚ã¾ã›ã‚“。</p><p>言語ã¯ä¸€æ™‚çš„ã«English(内蔵)ã«è¨å®šã•ã‚Œã¾ã™ã€‚VirtualBoxメインウィンドウã®<b>[ファイル]</b>メニューã‹ã‚‰<b>[環境è¨å®š]</b>ダイアãƒã‚°ã‚’é–‹ãã€<b>[言語]</b>ページã§è¡¨ç¤ºã•ã‚Œã¦ã„る言語をé¸æŠžã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1554"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1553"/> <source><p>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.</p><p>Please update the Guest Additions to the current version by choosing <b>Install Guest Additions</b> from the <b>Devices</b> menu.</p></source> <translation><p>ゲストOSã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸVirtualBox Guest Additionsã¯å¤ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™:インストールã•ã‚ŒãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯%1ã§ã™ã€‚期待ã•ã‚Œã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯%2ã§ã™ã€‚Guest Additionsã‚’å¿…è¦ã¨ã™ã‚‹ã„ãã¤ã‹ã®æ©Ÿèƒ½(マウス統åˆã€ç”»é¢ã®ãƒªã‚µã‚¤ã‚º)ã¯å‹•ä½œã—ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。</p><p><b>[デãƒã‚¤ã‚¹]</b>メニューã‹ã‚‰<b>[Guest Additions ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«]</b>ã‚’é¸æŠžã—ã€Guest Additionsを最新版ã«ã‚¢ãƒƒãƒ—デートã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1571"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1570"/> <source><p>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.</p><p>It is recommended to update the Guest Additions to the current version by choosing <b>Install Guest Additions</b> from the <b>Devices</b> menu.</p></source> <translation><p>ゲストOSã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸVirtualBox Guest Additionsã¯å¤ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™:インストールã•ã‚ŒãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯%1ã§ã™ã€‚期待ã•ã‚Œã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯%2ã§ã™ã€‚Guest Additionsã‚’å¿…è¦ã¨ã™ã‚‹ã„ãã¤ã‹ã®æ©Ÿèƒ½(マウス統åˆã€ç”»é¢ã®ãƒªã‚µã‚¤ã‚º)ã¯å‹•ä½œã—ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。</p><p><b>[デãƒã‚¤ã‚¹]</b>メニューã‹ã‚‰<b>[Guest Additions ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«]</b>ã‚’é¸æŠžã—ã€Guest Additionsを最新版ã«ã‚¢ãƒƒãƒ—デートã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1587"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1586"/> <source><p>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.</p><p>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 <b>Install Guest Additions</b> from the <b>Devices</b> menu.</p></source> <translation><p>ゲストOSã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸVirtualBox Guest Additionsã¯ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®VirtualBoxより新ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™:インストールã•ã‚ŒãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯%1ã§ã™ã€‚期待ã•ã‚Œã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯%2ã§ã™ã€‚</p><p>æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®Guest Additionsã®å¤ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®VirtualBoxã§ã®ä½¿ç”¨ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“。<p><b>[デãƒã‚¤ã‚¹]</b>メニューã‹ã‚‰<b>[Guest Additions ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«]</b>ã‚’é¸æŠžã—ã€ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®Guest Additionsをインストールã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="826"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="825"/> <source>Failed to change the snapshot folder path of the virtual machine <b>%1<b> to <nobr><b>%2</b></nobr>.</source> <translation>仮想マシン<b>%1<b>ã®ã‚¹ãƒŠãƒƒãƒ—ショットä¿å˜ãƒ•ã‚©ãƒ«ãƒ€ã®ãƒ‘スを<nobr><b>%2</b></nobr>ã«å¤‰æ›´ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1478"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1477"/> <source><p>Failed to remove the shared folder <b>%1</b> (pointing to <nobr><b>%2</b></nobr>) from the virtual machine <b>%3</b>.</p><p>Please close all programs in the guest OS that may be using this shared folder and try again.</p></source> <translation><p>仮想マシン<b>%3</b>ã®å…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€<b>%1</b>(å‚照先:<nobr><b>%2</b></nobr>)ã®å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</p><p>ã“ã®å…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€ã‚’使用ã—ã¦ã„るゲストOSã®ã™ã¹ã¦ã®ãƒ—ãƒã‚°ãƒ©ãƒ を終了ã—ã€å†å®Ÿè¡Œã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1493"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1492"/> <source><p>Could not find the VirtualBox Guest Additions CD image file <nobr><b>%1</b></nobr> or <nobr><b>%2</b>.</nobr></p><p>Do you wish to download this CD image from the Internet?</p></source> <translation><p>VirtualBox Guest Additions CDイメージファイル<nobr><b>%1</b></nobr>ã¾ãŸã¯<nobr><b>%2</b>ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。</nobr></p><p>インターãƒãƒƒãƒˆã‹ã‚‰CDイメージをダウンãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1507"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1506"/> <source><p>Failed to download the VirtualBox Guest Additions CD image from <nobr><a href="%1">%2</a>.</nobr></p><p>%3</p></source> <translation><p><nobr><a href="%1">%2</a>ã‹ã‚‰VirtualBox Guest Additions CDイメージをダウンãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。</nobr></p><p>%3</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1526"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1525"/> <source><p>Are you sure you want to download the VirtualBox Guest Additions CD image from <nobr><a href="%1">%2</a></nobr> (size %3 bytes)?</p></source> <translation><p>VirtualBox Guest Additions CDイメージを<nobr><a href="%1">%2</a></nobr> (サイズ %3ãƒã‚¤ãƒˆ)ã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1538"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1537"/> <source><p>The VirtualBox Guest Additions CD image has been successfully downloaded from <nobr><a href="%1">%2</a></nobr> and saved locally as <nobr><b>%3</b>.</nobr></p><p>Do you wish to register this CD image and mount it on the virtual CD/DVD drive?</p></source> <translation><p>VirtualBox Guest Additions CDイメージを<nobr><a href="%1">%2</a></nobr>ã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã€<nobr><b>%3</b>ã«ä¿å˜ã—ã¾ã—ãŸã€‚</nobr></p><p>CDイメージを登録ã—ã€ä»®æƒ³CD/DVDドライブã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã‹ï¼Ÿ</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1538"/> <source><p>The virtual machine window will be now switched to <b>fullscreen</b> mode. You can go back to windowed mode at any time by pressing <b>%1</b>. Note that the <i>Host</i> key is currently defined as <b>%1</b>.</p><p>Note that the main menu bar is hidden in fullscreen mode. You can access it by pressing <b>Host+Home</b>.</p></source> <translation type="obsolete"><p>仮想マシンã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’"フルスクリーン"モードã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚<b>%1</b>ã‚ーを押ã™ã¨ã„ã¤ã§ã‚‚ウィンドウモードã«æˆ»ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚注:ホストã‚ーã¯ç¾åœ¨<b>%2</b>ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚</p><p> 注:フルスクリーンモードã§ã¯ãƒ¡ã‚¤ãƒ³ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒãƒ¼ã¯è¡¨ç¤ºã•ã‚Œã¾ã›ã‚“。メニューãƒãƒ¼ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ <b>Host+Home</b>ã‚ーを押ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1538"/> <source><p>The virtual machine window will be now switched to <b>Seamless</b> mode. You can go back to windowed mode at any time by pressing <b>%1</b>. Note that the <i>Host</i> key is currently defined as <b>%1</b>.</p><p>Note that the main menu bar is hidden in seamless mode. You can access it by pressing <b>Host+Home</b>.</p></source> <translation type="obsolete"><p>仮想マシンã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’"シームレス"モードã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚<b>%1</b>ã‚ーを押ã™ã¨ã„ã¤ã§ã‚‚ウィンドウ表示ã«æˆ»ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚注:ホストã‚ーã¯ç¾åœ¨<b>%2</b>ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚</p><p>注:シームレスモードã§ã¯ãƒ¡ã‚¤ãƒ³ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒãƒ¼ã¯è¡¨ç¤ºã•ã‚Œã¾ã›ã‚“。メニューãƒãƒ¼ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ <b>Host+Home</b>ã‚ーを押ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1928"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1927"/> <source><p>The virtual machine window is optimized to work in <b>%1&nbsp;bit</b> color mode but the virtual display is currently set to <b>%2&nbsp;bit</b>.</p><p>Please open the display properties dialog of the guest OS and select a <b>%3&nbsp;bit</b> color mode, if it is available, for best possible performance of the virtual video subsystem.</p><p><b>Note</b>. Some operating systems, like OS/2, may actually work in 32&nbsp;bit mode but report it as 24&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&nbsp;bit) is not available in the guest OS.</p></source> <translation><p>仮想マシンウィンドウã¯<b>%1&nbsp;ビット</b>カラーモードã«æœ€é©åŒ–ã•ã‚Œã¾ã™ãŒã€ç¾åœ¨ä»®æƒ³ãƒ‡ã‚£ã‚¹ãƒ—レイã¯<b>%2&nbsp;ビット</b>ã«è¨å®šã•ã‚Œã¦ã„ã¾ã™ã€‚</p><p>最良ã®ä»®æƒ³ãƒ“デオサブシステム性能を得るãŸã‚ã€åˆ©ç”¨å¯èƒ½ã§ã‚ã‚‹ãªã‚‰ã°ã‚²ã‚¹ãƒˆOSã®ç”»é¢è¨å®šãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’é–‹ãã€<b>%3&nbsp;ビット</b>カラーモードをé¸æŠžã—ã¦ãã ã•ã„。</p><p><b>注:OS/2ãªã©ã€ã„ãã¤ã‹ã®ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ã¯32&nbsp;ビットモードã®å‹•ä½œã‚’24&nbsp;ビット(ç´„1600万色)ã¨ã—ã¦å ±å‘Šã—ã¾ã™ã€‚ ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒæ¶ˆãˆã‚‹ã‹ã€ã¾ãŸã¯ã‚²ã‚¹ãƒˆOSã§å¿…è¦ãªè‰²æ·±åº¦(%4&nbsp;ビット) ãŒåˆ©ç”¨ã§ããªã„ã“ã¨ãŒåˆ†ã‹ã£ã¦ã„ã‚‹ãªã‚‰ã°ã€å˜ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’無効ã«ã§ãã‚‹ã‹ç¢ºèªã™ã‚‹ãŸã‚ã«ç•°ãªã£ãŸè‰²æ·±åº¦ã‚’é¸æŠžã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1928"/> <source><p>A critical error has occurred while running the virtual machine and the machine execution has been stopped.</p><p>For help, please see the Community section on <a href=http://www.virtualbox.org>http://www.virtualbox.org</a> or your support contract. Please provide the contents of the log file <tt>VBox.log</tt> and the image file <tt>VBox.png</tt>, which you can find in the <nobr><b>%1</b></nobr> 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 <b>Show Log</b> from the <b>Machine</b> menu of the main VirualBox window.</p><p>Press <b>OK</b> if you want to power off the machine or press <b>Ignore</b> 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 <b>OK</b> now.</p></source> <translation type="obsolete"><p>仮想マシン実行ä¸ã«é‡å¤§ãªã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸãŸã‚ã€ä»®æƒ³ãƒžã‚·ãƒ³ã¯åœæ¢ã—ã¾ã—ãŸã€‚</p><p>å•é¡Œã®è§£æ±ºã®ãŸã‚ã€<a href=http://www.virtualbox.org>http://www.virtualbox.org</a>ã®Communityセクションをå‚ç…§ã™ã‚‹ã‹ã€ã‚µãƒãƒ¼ãƒˆå¥‘ç´„ã‚’ç· çµã—ã¦ãã ã•ã„。ã‚ãªãŸãŒã‚¨ãƒ©ãƒ¼ç™ºç”Ÿæ™‚ã«è¡Œã£ãŸæ“作ã¨å…±ã«ã€<nobr><b>%1</b></nobr>ディレクトリã«æ ¼ç´ã•ã‚Œã¦ã„ã‚‹ãƒã‚°ãƒ•ã‚¡ã‚¤ãƒ«(<tt>VBox.log</tt>)ã¨ã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ•ã‚¡ã‚¤ãƒ«(<tt>VBox.png</tt>)ã‚’æä¾›ã—ã¦ãã ã•ã„。注:VirualBoxメインウィンドウã®<b>[仮想マシン]</b>メニューã‹ã‚‰[ãƒã‚°ã‚’å‚ç…§]ã‚’é¸æŠžã—ã¦ã€ä¸Šè¨˜ãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p><p>仮想マシンを電æºã‚ªãƒ•ã™ã‚‹ã«ã¯<b>[OK]</b>ボタンをクリックã—ã¦ãã ã•ã„。ã“ã®ã¾ã¾ãƒ‡ãƒãƒƒã‚°ã‚’è¡Œã†ã«ã¯<b>[無視]</b>ボタンをクリックã—ã¦ãã ã•ã„。デãƒãƒƒã‚°ã«ã¯ç‰¹åˆ¥ãªçŸ¥è˜ã¨ãƒ„ールを必è¦ã¨ã™ã‚‹ãŸã‚ã€<b>[OK]</b>ボタンをクリックã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2001"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2000"/> <source><p>You didn'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.</p><p>Do you wish to continue?</p></source> <translation><p>æ–°è¦ä»®æƒ³ãƒžã‚·ãƒ³ã«ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。仮想マシンè¨å®šãƒ€ã‚¤ã‚¢ãƒã‚°ã‹åˆå›žèµ·å‹•ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã‚’使用ã—ã¦ã‚²ã‚¹ãƒˆOSをインストールã—ãŸãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã¾ãŸã¯ä»–ã®èµ·å‹•å¯èƒ½ãªãƒ¡ãƒ‡ã‚£ã‚¢ã‚’割り当ã¦ãªã„ã¨ä»®æƒ³ãƒžã‚·ãƒ³ã¯èµ·å‹•ã—ã¾ã›ã‚“。</p><p>続行ã—ã¾ã™ã‹ï¼Ÿ</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="395"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="394"/> <source>Failed to find license files in <nobr><b>%1</b></nobr>.</source> <translation><nobr><b>"%1"</b></nobr>ã«ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="405"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="404"/> <source>Failed to open the license file <nobr><b>%1</b></nobr>. Check file permissions.</source> <translation>ライセンスファイル<nobr><b>"%1"</b></nobr>ãŒé–‹ã‘ã¾ã›ã‚“。ファイルã®ãƒ‘ーミッションを確èªã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="684"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="683"/> <source>Failed to send the ACPI Power Button press event to the virtual machine <b>%1</b>.</source> <translation>仮想マシン<b>"%1"</b>ã¸ã®é›»æºãƒœã‚¿ãƒ³ オフã®ACPIイベントé€ä¿¡ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="684"/> <source><p>Failed to connect to the VirtualBox online registration service.</p><p>%1</p></source> <translation type="obsolete"><p>VirtualBox オンライン登録サービスã¸ã®æŽ¥ç¶šã«å¤±æ•—ã—ã¾ã—ãŸã€‚</p><p>%1</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1619"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1618"/> <source><p>Congratulations! You have been successfully registered as a user of VirtualBox.</p><p>Thank you for finding time to fill out the registration form!</p></source> <translation><p>VirtualBox ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ç™»éŒ²ãŒå®Œäº†ã—ã¾ã—ãŸã€‚</p><p>登録フォームã«æ›¸ã込む時間を割ã„ã¦ãã ã•ã‚Šã€ã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã—ãŸï¼</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1619"/> <source><p>Failed to register the VirtualBox product</p><p>%1</p></source> <translation type="obsolete"><p>VirtualBox ã®è£½å“登録ã«å¤±æ•—ã—ã¾ã—ãŸ</p><p>%1</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="487"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="486"/> <source><p>Failed to save the global VirtualBox settings to <b><nobr>%1</nobr></b>.</p></source> <translation><p>ã‚°ãƒãƒ¼ãƒãƒ«ãªVirtualBoxè¨å®šã®<b><nobr>"%1"</nobr></b>ã¸ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="500"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="499"/> <source><p>Failed to load the global GUI configuration from <b><nobr>%1</nobr></b>.</p><p>The application will now terminate.</p></source> <translation><p>ã‚°ãƒãƒ¼ãƒãƒ«ãªGUI構æˆã®<b><nobr>"%1"</nobr></b>ã‹ã‚‰ã®èªã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</p> <p>アプリケーションを終了ã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="514"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="513"/> <source><p>Failed to save the global GUI configuration to <b><nobr>%1</nobr></b>.</p><p>The application will now terminate.</p></source> <translation><p>ã‚°ãƒãƒ¼ãƒãƒ«ãªGUI構æˆã®<b><nobr>"%1"</nobr></b>ã¸ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</p> <p>アプリケーションを終了ã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="602"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="601"/> <source>Failed to save the settings of the virtual machine <b>%1</b> to <b><nobr>%2</nobr></b>.</source> <translation>仮想マシン<b>"%1"</b>ã®è¨å®šã®<b><nobr>"%2"</nobr></b>ã¸ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="624"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="623"/> <source>Failed to load the settings of the virtual machine <b>%1</b> from <b><nobr>%2</nobr></b>.</source> <translation>仮想マシン<b>"%1"</b>ã®è¨å®šã®<b><nobr>"%2â€</nobr></b>ã‹ã‚‰ã®èªã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="956"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="955"/> <source>Delete</source> <comment>machine</comment> <translation>削除</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="969"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="968"/> <source>Unregister</source> <comment>machine</comment> <translation>登録解除</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="986"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="985"/> <source>Discard</source> <comment>saved state</comment> <translation>ç ´æ£„</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="986"/> <source>Continue</source> <comment>detach image</comment> <translation type="obsolete">続ã‘ã‚‹</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="986"/> <source><p>Do you want to delete this hard disk's image file <nobr><b>%1</b>?</nobr></p><p>If you select <b>Delete</b> then the image file will be permanently deleted after unregistering the hard disk. This operation cannot be undone.</p><p>If you select <b>Unregister</b> then the virtual hard disk will be unregistered and removed from the collection, but the image file will be left on your physical disk.</p></source> <translation type="obsolete"><p>ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ•ã‚¡ã‚¤ãƒ«<nobr><b>"%1"</b>を削除ã—ã¾ã™ã‹ï¼Ÿ</nobr></p> <p><b>[削除]</b>ã‚’é¸æŠžã™ã‚‹ã¨ã€ã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ•ã‚¡ã‚¤ãƒ«ã¯ãƒªã‚¹ãƒˆã‹ã‚‰å–り除ã‹ã‚ŒãŸå¾Œã€æ°¸ä¹…ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ã“ã®æ“作ã¯å…ƒã«æˆ»ã›ã¾ã›ã‚“。</p> <p><b>[登録解除]</b>ã‚’é¸æŠžã™ã‚‹ã¨ã€ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã¯ãƒªã‚¹ãƒˆã‹ã‚‰å–り除ã‹ã‚Œã¾ã™ãŒã€ã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ•ã‚¡ã‚¤ãƒ«ã¯ç‰©ç†ãƒ‡ã‚£ã‚¹ã‚¯ä¸Šã«æ®‹ã•ã‚Œã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="986"/> <source>Delete</source> <comment>hard disk</comment> <translation type="obsolete">削除</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="986"/> <source>Unregister</source> <comment>hard disk</comment> <translation type="obsolete">登録解除</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="986"/> <source><p>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.</p><p>Are you sure that you want to disable the SATA controller?</p></source> <translation type="obsolete"><p>ã“ã®ä»®æƒ³ãƒžã‚·ãƒ³ã®SATAãƒãƒ¼ãƒˆã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãŒã‚ã‚Šã¾ã™ã€‚SATA コントãƒãƒ¼ãƒ©ã‚’無効ã«ã™ã‚‹ã¨ã€ãれらã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã¯è‡ªå‹•çš„ã«å‰²ã‚Šå½“ã¦è§£é™¤ã•ã‚Œã¾ã™ã€‚</p> <p>SATA コントãƒãƒ¼ãƒ©ã‚’無効ã«ã—ã¾ã™ã‹ï¼Ÿ</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1099"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1098"/> <source>Disable</source> <comment>hard disk</comment> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1099"/> <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 <b>%5</b>.</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸(UUID %1)ã®ã€ä»®æƒ³ãƒžã‚·ãƒ³<b>"%5"</b>ã®ãƒã‚¹ %4 ã®ãƒãƒ£ãƒ³ãƒãƒ« %3 ã®ãƒ‡ãƒã‚¤ã‚¹ã‚¹ãƒãƒƒãƒˆ %2 ã¸ã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1099"/> <source>Failed to detach a hard disk image from device slot %1 on channel %2 of the %3 bus of the machine <b>%4</b>.</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ã®ã€ä»®æƒ³ãƒžã‚·ãƒ³<b>"%4"</b>ã®ãƒã‚¹ %3 ã®ãƒãƒ£ãƒ³ãƒãƒ« %2 ã®ãƒ‡ãƒã‚¤ã‚¹ã‚¹ãƒãƒƒãƒˆ %1 ã‹ã‚‰ã®å‰²ã‚Šå½“ã¦è§£é™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1531"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1530"/> <source>Download</source> <comment>additions</comment> <translation>ダウンãƒãƒ¼ãƒ‰</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1546"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1545"/> <source>Mount</source> <comment>additions</comment> <translation>マウント</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1721"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1687"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1720"/> <source><p>The host key is currently defined as <b>%1</b>.</p></source> <comment>additional message box paragraph</comment> <translation><p>ç¾åœ¨ãƒ›ã‚¹ãƒˆã‚ーã¯<b>%1</b>ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1695"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1694"/> <source>Capture</source> <comment>do input capture</comment> <translation>ã‚ャプãƒãƒ£</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1695"/> <source><p>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.</p><p>Press <b>Check</b> to open the Virtual Disk Manager window and see what media are inaccessible, or press <b>Ignore</b> to ignore this message.</p></source> <translation type="obsolete"><p>登録ã•ã‚ŒãŸä¸€ã¤ä»¥ä¸Šã®ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã€CD/DVDã¾ãŸã¯ãƒ•ãƒãƒƒãƒ”ーメディアã®ã«ç¾åœ¨ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“。アクセスå¯èƒ½ã«ãªã‚‹ã¾ã§ã“れらã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’使用ã™ã‚‹ä»®æƒ³ãƒžã‚·ãƒ³ã‚’æ“作ã§ãã¾ã›ã‚“。</p> <p><b>[確èª]</b>ボタンをクリックã—ã¦ä»®æƒ³ãƒ‡ã‚£ã‚¹ã‚¯ãƒžãƒãƒ¼ã‚¸ãƒ£ã‚’èµ·å‹•ã—ã€ã©ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„ã®ã‹ç¢ºèªã—ã¦ãã ã•ã„。ã¾ãŸã¯<b>[無視]</b>ボタンをクリックã—ã¦ã€ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’無視ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1816"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1815"/> <source>Check</source> <comment>inaccessible media message box</comment> <translation>確èª</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1816"/> <source><p>The following VirtualBox settings files have been automatically converted to the new settings file format version <b>%1</b>.</p><p>However, the results of the conversion were not saved back to disk yet. Please press:</p><ul><li><b>Save</b> 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);</li><li><b>Backup</b> to create backup copies of the settings files in the old format before saving them in the new format;</li><li><b>Cancel</b> to not save the auto-converted settings files now.<li></ul><p>Note that if you select <b>Cancel</b>, 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 <b>no</b> backup copies will be created in this case.</p></source> <translation type="obsolete"><p>次ã®VirtualBoxè¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã¯è‡ªå‹•çš„ã«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ <b>%1</b> ã®æ–°ã—ã„è¨å®šãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ã«å¤‰æ›ã•ã‚Œã¾ã—ãŸã€‚</p> <p>ã—ã‹ã—ãªãŒã‚‰ã€å¤‰æ›å¾Œã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã¾ã ディスクã«ä¿å˜ã•ã‚Œã¦ã„ã¾ã›ã‚“。ボタンをクリックã—ã¦ãã ã•ã„:</p> @@ -6504,123 +6202,116 @@ step and attach hard disks later using the VM Settings dialog.</p></source <p>注:<b>[ã‚ャンセル]</b> ã®é¸æŠžæ™‚ã€è¨å®šã‚’変更ã™ã‚‹ã‹ä»®æƒ³ãƒžã‚·ãƒ³ã‚’èµ·å‹•ã™ã‚‹ã¨è‡ªå‹•å¤‰æ›ã•ã‚ŒãŸè¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã¯æš—黙的ã«ä¿å˜ã•ã‚Œã¾ã™ãŒã€ã“ã®å ´åˆã©ã‚“ãªãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コピーも<b>作æˆã•ã‚Œã¾ã›ã‚“</b>。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1816"/> <source>&Save</source> <comment>warnAboutAutoConvertedSettings message box</comment> <translation type="obsolete">ä¿å˜(&S)</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1816"/> <source>&Backup</source> <comment>warnAboutAutoConvertedSettings message box</comment> <translation type="obsolete">ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—(&B)</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1816"/> <source>Cancel</source> <comment>warnAboutAutoConvertedSettings message box</comment> <translation type="obsolete">ã‚ャンセル</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1889"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1888"/> <source>Switch</source> <comment>fullscreen</comment> <translation>切り替ãˆ</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1911"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1910"/> <source>Switch</source> <comment>seamless</comment> <translation>切り替ãˆ</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1987"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1986"/> <source><p>Do you really want to reset the virtual machine?</p><p>This will cause any unsaved data in applications running inside it to be lost.</p></source> <translation><p>仮想マシンを本当ã«ãƒªã‚»ãƒƒãƒˆã—ã¾ã™ã‹ï¼Ÿ</p><p>仮想マシンをリセットã™ã‚‹ã¨ã€ãã®ä¸ã§ç¨¼å‹•ä¸ã®ã™ã¹ã¦ã®ã‚¢ãƒ—リケーションã®ä¿å˜ã•ã‚Œã¦ã„ãªã„データã¯å¤±ã‚ã‚Œã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1991"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1990"/> <source>Reset</source> <comment>machine</comment> <translation>リセット</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2010"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2009"/> <source>Continue</source> <comment>no hard disk attached</comment> <translation>続ã‘ã‚‹</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2011"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2010"/> <source>Go Back</source> <comment>no hard disk attached</comment> <translation>戻る</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="431"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="430"/> <source>Failed to copy file <b><nobr>%1</nobr></b> to <b><nobr>%2</nobr></b> (%3).</source> <translation>ファイル<b><nobr>"%1"</nobr></b>ã®<b><nobr>"%2"</nobr></b>ã¸ã®ã‚³ãƒ”ーã«å¤±æ•—ã—ã¾ã—ãŸ(%3)。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="431"/> <source><p>There are no unused hard disks available for the newly created attachment.</p><p>Press the <b>Create</b> button to start the <i>New Virtual Disk</i> wizard and create a new hard disk, or press the <b>Select</b> if you wish to open the <i>Virtual Disk Manager</i>.</p></source> <translation type="obsolete"><p>æ–°è¦ã®å‰²ã‚Šå½“ã¦ã«åˆ©ç”¨ã§ãる未使用ã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãŒã‚ã‚Šã¾ã›ã‚“。</p> <p><b>[作æˆ]</b>ボタンをクリックã—ã€<i>æ–°è¦ä»®æƒ³ãƒ‡ã‚£ã‚¹ã‚¯ä½œæˆã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰</i>ã‚’èµ·å‹•ã—ã¦æ–°è¦ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’作æˆã™ã‚‹ã‹ã€<b>[é¸æŠž]</b>ボタンをクリックã—ã¦ã€<i>仮想ディスクマãƒãƒ¼ã‚¸ãƒ£</i>ã‚’é–‹ãã€å‹•ä½œã‚’é¸æŠžã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="431"/> <source>&Create</source> <comment>hard disk</comment> <translation type="obsolete">作æˆ(&C)</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="431"/> <source>Select</source> <comment>hard disk</comment> <translation type="obsolete">é¸æŠž</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="918"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="917"/> <source><p>Could not enter seamless mode due to insufficient guest video memory.</p><p>You should configure the virtual machine to have at least <b>%1</b> of video memory.</p></source> <translation><p>ゲストOSã®ãƒ“デオメモリä¸è¶³ã®ãŸã‚ã€ã‚·ãƒ¼ãƒ レスモードã«åˆ‡ã‚Šæ›¿ãˆã§ãã¾ã›ã‚“。</p><p>仮想マシンã®è¨å®šã§ãƒ“デオメモリを <b>%1</b>以上ã«è¨å®šã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="931"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="930"/> <source><p>Could not switch the guest display to fullscreen mode due to insufficient guest video memory.</p><p>You should configure the virtual machine to have at least <b>%1</b> of video memory.</p><p>Press <b>Ignore</b> to switch to fullscreen mode anyway or press <b>Cancel</b> to cancel the operation.</p></source> <translation><p>ゲストOSã®ãƒ“デオメモリä¸è¶³ã®ãŸã‚ã€ã‚²ã‚¹ãƒˆç”»é¢ã‚’フルスクリーンモードã«åˆ‡ã‚Šæ›¿ãˆã§ãã¾ã›ã‚“。</p><p>仮想マシンã®è¨å®šã§ãƒ“デオメモリを <b>%1</b>以上ã«è¨å®šã—ã¦ãã ã•ã„。</p><p><b>[無視]</b>ボタンをクリックã—ã¦ãƒ•ãƒ«ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ãƒ¢ãƒ¼ãƒ‰ã«åˆ‡ã‚Šæ›ãˆã‚‹ã‹ã€<b>[ã‚ャンセル]</b>ボタンをクリックã—ã¦æ“作をå–り消ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="931"/> <source><p>Unable to obtain the new version information due to the following network error:</p><p><b>%1</b></p></source> <translation type="obsolete"><p>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼ã®ãŸã‚ã€æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±ã‚’å–å¾—ã§ãã¾ã›ã‚“:</p><p><b>%1</b></p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1661"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1660"/> <source>You are already running the most recent version of VirtualBox.</source> <translation>最新ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®VirtualBoxãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã™ã€‚ 後ã§ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç¢ºèªã‚’è¡Œã£ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1673"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1672"/> <source><p>You have <b>clicked the mouse</b> inside the Virtual Machine display or pressed the <b>host key</b>. This will cause the Virtual Machine to <b>capture</b> the host mouse pointer (only if the mouse pointer integration is not currently supported by the guest OS) and the keyboard, which will make them unavailable to other applications running on your host machine.</p><p>You can press the <b>host key</b> at any time to <b>uncapture</b> the keyboard and mouse (if it is captured) and return them to normal operation. The currently assigned host key is shown on the status bar at the bottom of the Virtual Machine window, next to the&nbsp;<img src=:/hostkey_16px.png/>&nbsp;icon. This icon, together with the mouse icon placed nearby, indicate the current keyboard and mouse capture state.</p></source> <translation><p>仮想マシンã®ç”»é¢ã‚’<b>マウスクリック</b>ã™ã‚‹ã‹ã€ã¾ãŸã¯<b>ホストã‚ー</b>を押ã™ã¨ã€ä»®æƒ³ãƒžã‚·ãƒ³ã¯ãƒžã‚¦ã‚¹ãƒã‚¤ãƒ³ã‚¿(マウス統åˆæ©Ÿèƒ½ãŒã‚²ã‚¹ãƒˆOSã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ã¨ãã ã‘)ã¨ã‚ーボードを<b>ã‚ャプãƒãƒ£</b>ã—ã¾ã™ã€‚仮想マシンã«ã‚ーボードã¨ãƒžã‚¦ã‚¹ãŒã‚ャプãƒãƒ£ã•ã‚Œã‚‹ã¨ãƒ›ã‚¹ãƒˆPCã§å‹•ä½œã™ã‚‹ä»–ã®ã‚¢ãƒ—リケーションã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。</p><p></p><p><b>ホストã‚ー</b>を押ã™ã¨ã€ã‚ーボードã¨ãƒžã‚¦ã‚¹(ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã‚‹ã¨ã)ã¯<b>ã‚ャプãƒãƒ£è§£é™¤</b>ã•ã‚Œã€é€šå¸¸ã®æ“作ã«æˆ»ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ç¾åœ¨å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„るホストã‚ーã¯ä»®æƒ³ãƒžã‚·ãƒ³ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ä¸‹éƒ¨ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒãƒ¼ã«&nbsp;<img src=:/hostkey_16px.png/>&nbsp;アイコンã§è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã“ã®ã‚¢ã‚¤ã‚³ãƒ³ã¯ãƒžã‚¦ã‚¹ã‚¢ã‚¤ã‚³ãƒ³ã¨å…±ã«ç¾åœ¨ã®ã‚ーボ−ドã¨ãƒžã‚¦ã‚¹ã®ã‚ャプãƒãƒ£çŠ¶æ…‹ã‚’表示ã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1706"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1705"/> <source><p>You have the <b>Auto capture keyboard</b> option turned on. This will cause the Virtual Machine to automatically <b>capture</b> the keyboard every time the VM window is activated and make it unavailable to other applications running on your host machine: when the keyboard is captured, all keystrokes (including system ones like Alt-Tab) will be directed to the VM.</p><p>You can press the <b>host key</b> at any time to <b>uncapture</b> the keyboard and mouse (if it is captured) and return them to normal operation. The currently assigned host key is shown on the status bar at the bottom of the Virtual Machine window, next to the&nbsp;<img src=:/hostkey_16px.png/>&nbsp;icon. This icon, together with the mouse icon placed nearby, indicate the current keyboard and mouse capture state.</p></source> <translation><p><b>ã‚ーボードã®è‡ªå‹•ã‚ャプãƒãƒ£</b>機能ãŒæœ‰åŠ¹ã§ã™ã€‚仮想マシンã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã®ã¨ãã€ä»®æƒ³ãƒžã‚·ãƒ³ã¯ã‚ーボードを自動的ã«<b>ã‚ャプãƒãƒ£</b>ã—ã¾ã™ã€‚ã‚ーボードãŒã‚ャプãƒãƒ£ã•ã‚Œã‚‹ã¨ã€ã™ã¹ã¦ã®ã‚ーストãƒãƒ¼ã‚¯(Alt-Tabãªã©ã‚’å«ã‚€)ãŒä»®æƒ³ãƒžã‚·ãƒ³ã«é€ã‚‰ã‚Œã‚‹ãŸã‚ã€ãƒ›ã‚¹ãƒˆPCã§å‹•ä½œã™ã‚‹ä»–ã®ã‚¢ãƒ—リケーションã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。</p><p><b>ホストã‚ー</b>を押ã™ã¨ã€ã‚ーボードã¨ãƒžã‚¦ã‚¹(ã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã‚‹ã¨ã)ã¯<b>ã‚ャプãƒãƒ£è§£é™¤</b>ã•ã‚Œã€é€šå¸¸ã®æ“作ã«æˆ»ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ç¾åœ¨å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„るホストã‚ーã¯ä»®æƒ³ãƒžã‚·ãƒ³ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ä¸‹éƒ¨ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒãƒ¼ã«&nbsp;<img src=:/hostkey_16px.png/>&nbsp;アイコンã§è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã“ã®ã‚¢ã‚¤ã‚³ãƒ³ã¯ãƒžã‚¦ã‚¹ã‚¢ã‚¤ã‚³ãƒ³ã¨å…±ã«ç¾åœ¨ã®ã‚ーボ−ドã¨ãƒžã‚¦ã‚¹ã®ã‚ャプãƒãƒ£çŠ¶æ…‹ã‚’表示ã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1748"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1747"/> <source><p>The Virtual Machine reports that the guest OS supports <b>mouse pointer integration</b>. This means that you do not need to <i>capture</i> the mouse pointer to be able to use it in your guest OS -- all mouse actions you perform when the mouse pointer is over the Virtual Machine's display are directly sent to the guest OS. If the mouse is currently captured, it will be automatically uncaptured.</p><p>The mouse icon on the status bar will look like&nbsp;<img src=:/mouse_seamless_16px.png/>&nbsp;to inform you that mouse pointer integration is supported by the guest OS and is currently turned on.</p><p><b>Note</b>: Some applications may behave incorrectly in mouse pointer integration mode. You can always disable it for the current session (and enable it again) by selecting the corresponding action from the menu bar.</p></source> <translation><p>ゲストOSã§<b>マウス統åˆ</b>機能ãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™ã€‚ゲストOSã§ãƒžã‚¦ã‚¹ãƒã‚¤ãƒ³ã‚¿ã‚’<i>ã‚ャプãƒãƒ£</i>ã™ã‚‹ã“ã¨ãªã使用ã§ãã¾ã™ã€‚仮想マシンã®ç”»é¢ä¸Šã«ãƒžã‚¦ã‚¹ãƒã‚¤ãƒ³ã‚¿ãŒã‚ã‚‹ã¨ãã€ã™ã¹ã¦ã®ãƒžã‚¦ã‚¹ã®å‹•ä½œã¯ç›´æŽ¥ã‚²ã‚¹ãƒˆOSã«é€ã‚‰ã‚Œã¾ã™ã€‚ç¾åœ¨ãƒžã‚¦ã‚¹ãŒã‚ャプãƒãƒ£ã•ã‚Œã¦ã„ã‚‹ã¨ãã¯ã€è‡ªå‹•çš„ã«ã‚ャプãƒãƒ£è§£é™¤ã•ã‚Œã¾ã™ã€‚ステータスãƒãƒ¼ã®ãƒžã‚¦ã‚¹ã‚¢ã‚¤ã‚³ãƒ³ã¯ã€ãƒžã‚¦ã‚¹çµ±åˆæ©Ÿèƒ½ãŒã‚²ã‚¹ãƒˆOSã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œã€ç¾åœ¨æœ‰åŠ¹ã§ã‚ã‚‹ã“ã¨ã‚’示ã™ãŸã‚&nbsp;<img src=:/mouse_seamless_16px.png/>&nbsp;ã®ã‚ˆã†ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ </p><p><b>注</b>: マウス統åˆæ©Ÿèƒ½ãŒæœ‰åŠ¹ãªã¨ãã€ã„ãã¤ã‹ã®ã‚¢ãƒ—リケーションã®å‹•ä½œãŒä¸æ£ã«ãªã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。メニューãƒãƒ¼ã‹ã‚‰å¯¾å¿œã™ã‚‹å‹•ä½œã‚’é¸æŠžã—ã¦ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®ãƒžã‚¦ã‚¹çµ±åˆæ©Ÿèƒ½ã‚’無効化(ã¾ãŸã¯æœ‰åŠ¹åŒ–)ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1879"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1878"/> <source><p>The virtual machine window will be now switched to <b>fullscreen</b> mode. You can go back to windowed mode at any time by pressing <b>%1</b>. Note that the <i>Host</i> key is currently defined as <b>%2</b>.</p><p>Note that the main menu bar is hidden in fullscreen mode. You can access it by pressing <b>Host+Home</b>.</p></source> <translation><p>仮想マシンã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’"フルスクリーン"モードã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚<b>%1</b>ã‚ーを押ã™ã¨ã„ã¤ã§ã‚‚ウィンドウモードã«æˆ»ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚注:ホストã‚ーã¯ç¾åœ¨<b>%2</b>ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚</p><p>注:フルスクリーンモードã§ã¯ãƒ¡ã‚¤ãƒ³ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒãƒ¼ã¯è¡¨ç¤ºã•ã‚Œã¾ã›ã‚“。メニューãƒãƒ¼ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ <b>Host+Home</b>ã‚ーを押ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1901"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1900"/> <source><p>The virtual machine window will be now switched to <b>Seamless</b> mode. You can go back to windowed mode at any time by pressing <b>%1</b>. Note that the <i>Host</i> key is currently defined as <b>%2</b>.</p><p>Note that the main menu bar is hidden in seamless mode. You can access it by pressing <b>Host+Home</b>.</p></source> <translation><p>仮想マシンã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’"シームレス"モードã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚<b>%1</b>ã‚ーを押ã™ã¨ã„ã¤ã§ã‚‚ウィンドウ表示ã«æˆ»ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚注:ホストã‚ーã¯ç¾åœ¨<b>%2</b>ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚</p><p>注:シームレスモードã§ã¯ãƒ¡ã‚¤ãƒ³ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒãƒ¼ã¯è¡¨ç¤ºã•ã‚Œã¾ã›ã‚“。メニューãƒãƒ¼ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ <b>Host+Home</b>ã‚ーを押ã—ã¦ãã ã•ã„。</p></translation> </message> @@ -6685,524 +6376,515 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>製å“æƒ…å ±ãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’表示</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1643"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1642"/> <source><p>A new version of VirtualBox has been released! Version <b>%1</b> is available at <a href="http://www.virtualbox.org/">virtualbox.org</a>.</p><p>You can download this version using the link:</p><p><a href=%2>%3</a></p></source> <translation><p>VirtualBoxã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒãƒªãƒªãƒ¼ã‚¹ã•ã‚Œã¾ã—ãŸï¼ ãƒãƒ¼ã‚¸ãƒ§ãƒ³ <b>%1</b>ã¯<a href="http://www.virtualbox.org/">virtualbox.org</a>ã‹ã‚‰å…¥æ‰‹ã§ãã¾ã™ã€‚</p><p>ã“ã®ãƒªãƒ³ã‚¯ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã§ãã¾ã™ã€‚: </p><p><a href=%2>%3</a></p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="996"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="995"/> <source><p>Are you sure you want to release the %1 <nobr><b>%2</b></nobr>?</p><p>This will detach it from the following virtual machine(s): <b>%3</b>.</p></source> <translation><p>"%1 <nobr><b>%2</b></nobr>"を解放ã—ã¾ã™ã‹ï¼Ÿ</p><p>以下ã®ä»®æƒ³ãƒžã‚·ãƒ³ã‹ã‚‰è§£æ”¾ã•ã‚Œã¾ã™: <b>%3</b></p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1004"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1003"/> <source>Release</source> <comment>detach medium</comment> <translation>解放</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1013"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1012"/> <source><p>Are you sure you want to remove the %1 <nobr><b>%2</b></nobr> from the list of known media?</p></source> <translation><p>メディアã®ãƒªã‚¹ãƒˆã‹ã‚‰"%1 <nobr><b>%2</b></nobr>"を除去ã—ã¾ã™ã‹ï¼Ÿ</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1022"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1021"/> <source>Note that as this hard disk is inaccessible its storage unit cannot be deleted right now.</source> <translation>注:ã“ã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„ãŸã‚ã€ç¾åœ¨ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ 装置を削除ã§ãã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1026"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1025"/> <source>The next dialog will let you choose whether you also want to delete the storage unit of this hard disk or keep it for later usage.</source> <translation>次ã®ãƒ€ã‚¤ã‚¢ãƒã‚°ã§ã€ã“ã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸è£…置を削除ã™ã‚‹ã‹ã€å¾Œã§ä½¿ç”¨ã™ã‚‹ãŸã‚ä¿æŒã™ã‚‹ã‹ã‚’é¸æŠžã§ãã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1032"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1031"/> <source><p>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.</p></source> <translation><p>注:ã“ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸è£…ç½®ã¯å‰Šé™¤ã•ã‚Œã¾ã›ã‚“。後ã§ãƒªã‚¹ãƒˆã«å†åº¦è¿½åŠ ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1038"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1037"/> <source>Remove</source> <comment>medium</comment> <translation>除去</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1045"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1044"/> <source><p>The hard disk storage unit at location <b>%1</b> 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.</p><p>Please specify a different location.</p></source> <translation><p>ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ ストレージ装置ã®å ´æ‰€ <b>"%1"</b>ã¯ã™ã§ã«å˜åœ¨ã—ã¾ã™ã€‚別ã®ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãŒä½¿ç”¨ã—ã¦ã„ã‚‹ãŸã‚ã€ã“ã®å ´æ‰€ã«æ–°è¦ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’作æˆã§ãã¾ã›ã‚“。</p><p>別ã®å ´æ‰€ã‚’指定ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1057"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1056"/> <source><p>Do you want to delete the storage unit of the hard disk <nobr><b>%1</b></nobr>?</p><p>If you select <b>Delete</b> then the specified storage unit will be permanently deleted. This operation <b>cannot be undone</b>.</p><p>If you select <b>Keep</b> then the hard disk will be only removed from the list of known hard disks, but the storage unit will be left untouched which makes it possible to add this hard disk to the list later again.</p></source> <translation><p>ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯<nobr><b>"%1"</b></nobr>ã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸è£…置を削除ã—ã¾ã™ã‹ï¼Ÿ</p><p><b>[削除]</b>ã‚’é¸æŠžã™ã‚‹ã¨ã€æŒ‡å®šã•ã‚ŒãŸã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸è£…ç½®ã¯æ°¸ä¹…ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ã“ã®æ“作ã¯<b>å…ƒã«æˆ»ã›ã¾ã›ã‚“</b>。</p><p><b>[ä¿æŒ]</b>ã‚’é¸æŠžã™ã‚‹ã¨ã€ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã¯ãƒªã‚¹ãƒˆã‹ã‚‰å–り除ã‹ã‚Œã¾ã™ãŒã€ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸è£…ç½®ã¯å¾Œã§ãƒªã‚¹ãƒˆã«å†åº¦è¿½åŠ ã§ãるよã†ã«ã€ãã®ã¾ã¾ç½®ã‹ã‚Œã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1071"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1070"/> <source>Delete</source> <comment>hard disk storage</comment> <translation>削除</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1072"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1071"/> <source>Keep</source> <comment>hard disk storage</comment> <translation>ä¿æŒ</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1083"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1082"/> <source>Failed to delete the storage unit of the hard disk <b>%1</b>.</source> <translation>ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ ストレージ装置<b>"%1"</b>ã®å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1083"/> <source><p>There are no unused hard disks available for the newly created attachment.</p><p>Press the <b>Create</b> button to start the <i>New Virtual Disk</i> wizard and create a new hard disk, or press the <b>Select</b> if you wish to open the <i>Virtual Media Manager</i>.</p></source> <translation type="obsolete"><p>æ–°è¦ã®å‰²ã‚Šå½“ã¦ã«åˆ©ç”¨ã§ãる未使用ã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãŒã‚ã‚Šã¾ã›ã‚“。</p><p><b>[作æˆ]</b>ボタンをクリックã—ã€<i>æ–°è¦ä»®æƒ³ãƒ‡ã‚£ã‚¹ã‚¯ä½œæˆã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰</i>ã‚’èµ·å‹•ã—ã¦æ–°è¦ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’作æˆã™ã‚‹ã‹ã€<b>[é¸æŠž]</b>ボタンをクリックã—ã¦ã€<i>仮想メディアマãƒãƒ¼ã‚¸ãƒ£</i>ã‚’é–‹ãã€å‹•ä½œã‚’é¸æŠžã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1162"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1161"/> <source>Failed to create the hard disk storage <nobr><b>%1</b>.</nobr></source> <translation>ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ ストレージ<nobr><b>"%1"</b>ã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</nobr></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1162"/> <source>Failed to attach the hard disk <nobr><b>%1</b></nobr> to slot <i>%2</i> of the machine <b>%3</b>.</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯<nobr><b>"%1"</b></nobr>ã®ã€ä»®æƒ³ãƒžã‚·ãƒ³<b>"%3"</b>ã®ã‚¹ãƒãƒƒãƒˆ<i>"%2"</i> ã¸ã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1162"/> <source>Failed to detach the hard disk <nobr><b>%1</b></nobr> from slot <i>%2</i> of the machine <b>%3</b>.</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯<nobr><b>"%1"</b></nobr>ã®ã€ä»®æƒ³ãƒžã‚·ãƒ³<b>"%3"</b>ã®ã‚¹ãƒãƒƒãƒˆ<i>"%2"</i> ã¸ã®å‰²ã‚Šå½“ã¦è§£é™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1162"/> <source>Failed to mount the %1 <nobr><b>%2</b></nobr> on the machine <b>%3</b>.</source> <translation type="obsolete">"%1 <nobr><b>%2</b></nobr>"ã®ã€ä»®æƒ³ãƒžã‚·ãƒ³<b>"%3"</b>ã¸ã®ãƒžã‚¦ãƒ³ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1162"/> <source>Failed to unmount the %1 <nobr><b>%2</b></nobr> from the machine <b>%3</b>.</source> <translation type="obsolete">"%1 <nobr><b>%2</b></nobr>"ã®ã€ä»®æƒ³ãƒžã‚·ãƒ³<b>"%3"</b>ã‹ã‚‰ã®ãƒžã‚¦ãƒ³ãƒˆè§£é™¤ã«å¤±æ•—ã—ã‹ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1245"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1244"/> <source>Failed to open the %1 <nobr><b>%2</b></nobr>.</source> <translation>"%1 <nobr><b>%2</b></nobr>"ã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1257"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1256"/> <source>Failed to close the %1 <nobr><b>%2</b></nobr>.</source> <translation>"%1 <nobr><b>%2</b></nobr>"ã®ã‚¯ãƒãƒ¼ã‚ºã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1306"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1305"/> <source>Failed to determine the accessibility state of the medium <nobr><b>%1</b></nobr>.</source> <translation>メディア<nobr><b>"%1"</b></nobr>ã®ã‚¢ã‚¯ã‚»ã‚¹å¯å¦çŠ¶æ…‹ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1607"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1606"/> <source><p>Failed to connect to the VirtualBox online registration service due to the following error:</p><p><b>%1</b></p></source> <translation><p>VirtualBoxã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ç™»éŒ²ã‚µãƒ¼ãƒ“スã«æŽ¥ç¶šã§ãã¾ã›ã‚“。エラー:</p><p><b>%1</b></p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1653"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1652"/> <source><p>Unable to obtain the new version information due to the following error:</p><p><b>%1</b></p></source> <translation><p>æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®æƒ…å ±ã‚’å–å¾—ã§ãã¾ã›ã‚“。エラー:</p><p><b>%1</b></p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1805"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1804"/> <source><p>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.</p><p>Press <b>Check</b> to open the Virtual Media Manager window and see what media are inaccessible, or press <b>Ignore</b> to ignore this message.</p></source> <translation><p>一ã¤ä»¥ä¸Šã®ä»®æƒ³ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã€CD/DVDã¾ãŸã¯ãƒ•ãƒãƒƒãƒ”ーメディアã®ã«ç¾åœ¨ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“。アクセスå¯èƒ½ã«ãªã‚‹ã¾ã§ã“れらã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’使用ã™ã‚‹ä»®æƒ³ãƒžã‚·ãƒ³ã‚’æ“作ã§ãã¾ã›ã‚“。</p><p><b>[確èª]</b>ボタンをクリックã—ã¦ä»®æƒ³ãƒ¡ãƒ‡ã‚£ã‚¢ãƒžãƒãƒ¼ã‚¸ãƒ£ã‚’èµ·å‹•ã—ã€ã©ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„ã®ã‹ç¢ºèªã—ã¦ãã ã•ã„。ã¾ãŸã¯<b>[無視]</b>ボタンをクリックã—ã¦ã€ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’無視ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1805"/> <source><p>Your existing VirtualBox settings files were automatically converted from the old format to a new format required by the new version of VirtualBox.</p><p>Press <b>OK</b> to start VirtualBox now or press <b>More</b> if you want to get more information about what files were converted and access additional actions.</p><p>Press <b>Exit</b> to terminate the VirtualBox application without saving the results of the conversion to disk.</p></source> <translation type="obsolete"><p>æ—¢å˜ã®VirtualBoxè¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã¯å¤ã„å½¢å¼ã‹ã‚‰VirtualBoxã®æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«å¿…è¦ãªå½¢å¼ã«è‡ªå‹•å¤‰æ›ã•ã‚Œã¾ã—ãŸã€‚</p><p>ã™ãã«VirtualBoxã‚’èµ·å‹•ã™ã‚‹ã«ã¯<b>[OK]</b>ボタンをクリックã—ã¦ãã ã•ã„。変æ›ã•ã‚ŒãŸè¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã«ã¤ã„ã¦ã€è©³ã—ã„æƒ…å ±ã‚’å¾—ãŸã„å ´åˆã¯<b>[詳細]</b>ボタンをクリックã—ã¦ãã ã•ã„。</p><p><b>[終了]</b>ボタンをクリックã™ã‚‹ã¨ã€å¤‰æ›çµæžœã‚’ディスクã«ä¿å˜ã™ã‚‹ã“ã¨ãªãã€VirtualBoxアプリケーションを終了ã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1805"/> <source>&More</source> <comment>warnAboutAutoConvertedSettings message box</comment> <translation type="obsolete">詳細(&M)</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1805"/> <source>E&xit</source> <comment>warnAboutAutoConvertedSettings message box</comment> <translation type="obsolete">終了(&X)</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1805"/> <source><p>The following VirtualBox settings files have been automatically converted to the new settings file format version <b>%1</b>.</p><p>However, the results of the conversion were not saved back to disk yet. Please press:</p><ul><li><b>Backup</b> to create backup copies of the settings files in the old format before saving them in the new format;</li><li><b>Overwrite</b> 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);</li>%2</ul><p>It is recommended to always select <b>Backup</b> 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.</p></source> <translation type="obsolete"><p>次ã®VirtualBoxè¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã¯è‡ªå‹•çš„ã«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ <b>"%1"</b> ã®æ–°ã—ã„è¨å®šãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ã«å¤‰æ›ã•ã‚Œã¾ã—ãŸã€‚</p><p>ã—ã‹ã—ãªãŒã‚‰ã€å¤‰æ›å¾Œã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã¾ã ディスクã«ä¿å˜ã•ã‚Œã¦ã„ã¾ã›ã‚“。ボタンをクリックã—ã¦ãã ã•ã„:</p><ul><li><b>[ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—]</b>: æ–°ã—ã„å½¢å¼ã§è¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä¿å˜ã™ã‚‹å‰ã«ã€å¤ã„å½¢å¼ã§è¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コピーを作æˆã—ã¾ã™ã€‚</li><li><b>[上書ã]</b>:ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コピーを作æˆã›ãšã«ã€ã™ã¹ã¦ã®å¤‰æ›æ¸ˆã¿ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä¿å˜ã—ã¾ã™ã€‚(æ—§ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®VirtualBoxã§ã“れらã®è¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“)</li>%2</ul><p>(å¿…è¦ãªã‚‰ã°) æ—§ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®VirtualBoxã«ç¾åœ¨ã®è¨å®šã‚’失ã†ã“ã¨ãªã戻るã“ã¨ãŒã§ãã‚‹ã®ã§ã€<b>[ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—]</b> ã‚’é¸æŠžã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚ダウングレードã«é–¢ã™ã‚‹è©³ç´°ã¯VirtualBoxマニュアルをå‚ç…§ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1805"/> <source><li><b>Exit</b> to terminate VirtualBox without saving the results of the conversion to disk.</li></source> <translation type="obsolete"><li><b>[終了]</b>:変æ›çµæžœã‚’ディスクã«ä¿å˜ã›ãšã«VirtualBoxを終了ã—ã¾ã™ã€‚</li></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1805"/> <source>O&verwrite</source> <comment>warnAboutAutoConvertedSettings message box</comment> <translation type="obsolete">上書ã(&V)</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1954"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1953"/> <source><p>A critical error has occurred while running the virtual machine and the machine execution has been stopped.</p><p>For help, please see the Community section on <a href=http://www.virtualbox.org>http://www.virtualbox.org</a> or your support contract. Please provide the contents of the log file <tt>VBox.log</tt> and the image file <tt>VBox.png</tt>, which you can find in the <nobr><b>%1</b></nobr> 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 <b>Show Log</b> from the <b>Machine</b> menu of the main VirtualBox window.</p><p>Press <b>OK</b> if you want to power off the machine or press <b>Ignore</b> 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 <b>OK</b> now.</p></source> <translation><p>仮想マシン実行ä¸ã«é‡å¤§ãªã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸãŸã‚ã€ä»®æƒ³ãƒžã‚·ãƒ³ã¯åœæ¢ã—ã¾ã—ãŸã€‚</p><p>å•é¡Œã®è§£æ±ºã®ãŸã‚ã€<a href=http://www.virtualbox.org>http://www.virtualbox.org</a>ã®Communityセクションをå‚ç…§ã™ã‚‹ã‹ã€ã‚µãƒãƒ¼ãƒˆã«é€£çµ¡ã—ã¦ãã ã•ã„。ã‚ãªãŸãŒã‚¨ãƒ©ãƒ¼ç™ºç”Ÿæ™‚ã«è¡Œã£ãŸæ“作ã¨å…±ã«ã€<nobr><b>%1</b></nobr>ディレクトリã«æ ¼ç´ã•ã‚Œã¦ã„ã‚‹ãƒã‚°ãƒ•ã‚¡ã‚¤ãƒ«(<tt>VBox.log</tt>)ã¨ã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ•ã‚¡ã‚¤ãƒ«(<tt>VBox.png</tt>)ã‚’æä¾›ã—ã¦ãã ã•ã„。注:VirualBoxメインウィンドウã®<b>[仮想マシン]</b>メニューã‹ã‚‰[ãƒã‚°ã‚’å‚ç…§]ã‚’é¸æŠžã—ã¦ã€ä¸Šè¨˜ãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p><p>仮想マシンを電æºã‚ªãƒ•ã™ã‚‹ã«ã¯<b>[OK]</b>ボタンをクリックã—ã¦ãã ã•ã„。ã“ã®ã¾ã¾ãƒ‡ãƒãƒƒã‚°ã‚’è¡Œã†ã«ã¯<b>[無視]</b>ボタンをクリックã—ã¦ãã ã•ã„。デãƒãƒƒã‚°ã«ã¯ç‰¹åˆ¥ãªçŸ¥è˜ã¨ãƒ„ールを必è¦ã¨ã™ã‚‹ãŸã‚ã€<b>[OK]</b>ボタンをクリックã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1954"/> <source>hard disk</source> <comment>failed to close ...</comment> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1954"/> <source>CD/DVD image</source> <comment>failed to close ...</comment> <translation type="obsolete">CD/DVDイメージ</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1954"/> <source>floppy image</source> <comment>failed to close ...</comment> <translation type="obsolete">フãƒãƒƒãƒ”ーイメージ</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1954"/> <source>A file named <b>%1</b> already exists. Are you sure you want to replace it?<br /><br />The file already exists in "%2". Replacing it will overwrite its contents.</source> <translation type="obsolete">ファイルå<b>"%1"</b>ã¯ã™ã§ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚ファイルを置ãæ›ãˆã¾ã™ã‹ï¼Ÿ<br /><br />ファイルã¯"%2"ã«å˜åœ¨ã—ã¾ã™ã€‚ファイルã®å†…容ã¯ä¸Šæ›¸ãã•ã‚Œã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="306"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="305"/> <source>The following files already exist:<br /><br />%1<br /><br />Are you sure you want to replace them? Replacing them will overwrite their contents.</source> <translation>以下ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã™ã§ã«å˜åœ¨ã—ã¦ã„ã¾ã™:<br /><br />%1<br /><br />ファイルを置ãæ›ãˆã¾ã™ã‹ï¼Ÿãƒ•ã‚¡ã‚¤ãƒ«ã®å†…容ã¯ä¸Šæ›¸ãã•ã‚Œã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="341"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="340"/> <source>Failed to remove the file <b>%1</b>.<br /><br />Please try to remove the file yourself and try again.</source> <translation><b>"%1"</b>ã®é™¤åŽ»ã«å¤±æ•—ã—ã¾ã—ãŸã€‚<br /><br />手作æ¥ã§ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å–り除ãã€å†å®Ÿè¡Œã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="378"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="377"/> <source>You are running a prerelease version of VirtualBox. This version is not suitable for production use.</source> <translation>ã“ã‚Œã¯VirtualBoxã®ãƒ—レリリースãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™ã€‚ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯å®Ÿå‹™ä½œæ¥ã«ã¯é©ã—ã¦ã„ã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="543"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="542"/> <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>USBファイルシステム(usbfs)ã‚‚DBusã¨halサービスも利用ã§ããªã„ãŸã‚ã€ãƒ›ã‚¹ãƒˆã‚·ã‚¹ãƒ†ãƒ ã§USBã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ ゲストOSã§ãƒ›ã‚¹ãƒˆUSB デãƒã‚¤ã‚¹ã‚’使用ã™ã‚‹ã«ã¯ã€ã“れを修æ£ã—ã¦VirtualBoxã‚’å†èµ·å‹•ã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="791"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="790"/> <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イベントã§ã‚²ã‚¹ãƒˆOSをシャットダウンã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ゲストOSãŒACPIサブシステムを使用ã—ãªã„ãŸã‚シャットダウンã§ãã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="799"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="798"/> <source><p>VT-x/AMD-V hardware acceleration has been enabled, but is not operational. Your 64-bit guest will fail to detect a 64-bit CPU and will not be able to boot.</p><p>Please ensure that you have enabled VT-x/AMD-V properly in the BIOS of your host computer.</p></source> <translation><p>仮想化支æ´æ©Ÿèƒ½(VT-x/AMD-V)を有効化ã§ãã¾ã›ã‚“。64ビット ゲストOSã¯64ビットCPUを検出ã§ããšã€èµ·å‹•ã§ãã¾ã›ã‚“。</p><p>ホストマシンã®BIOSè¨å®šã§VT-x/AMD-Vを有効化ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="817"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="804"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="816"/> <source>Close VM</source> <translation>仮想マシンを閉ã˜ã‚‹</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="817"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="804"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="816"/> <source>Continue</source> <translation>続ã‘ã‚‹</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="817"/> <source><p>Are you sure you wish to delete the selected snapshot and saved state?</p></source> <translation type="obsolete"><p>é¸æŠžã•ã‚ŒãŸã‚¹ãƒŠãƒƒãƒ—ショットã¨ä¿å˜ã•ã‚ŒãŸçŠ¶æ…‹ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="817"/> <source>Discard</source> <translation type="obsolete">ç ´æ£„</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="853"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="840"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="852"/> <source>Cancel</source> <translation>ã‚ャンセル</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1093"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1092"/> <source><p>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.</p><p>Are you sure you want to disable the additional controller?</p></source> <translation><p>è¿½åŠ ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ã®ãƒãƒ¼ãƒˆã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãŒã‚ã‚Šã¾ã™ã€‚è¿½åŠ ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ã‚’無効ã«ã™ã‚‹ã¨ã€ãれらã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã¯è‡ªå‹•çš„ã«å‰²ã‚Šå½“ã¦è§£é™¤ã•ã‚Œã¾ã™ã€‚</p><p>è¿½åŠ ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ã‚’無効ã«ã—ã¾ã™ã‹ï¼Ÿ</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1105"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1104"/> <source><p>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.</p><p>Are you sure you want to change the additional controller?</p></source> <translation><p>è¿½åŠ ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ã®ãƒãƒ¼ãƒˆã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãŒã‚ã‚Šã¾ã™ã€‚è¿½åŠ ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ã‚’変更ã™ã‚‹ã¨ã€ãれらã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã¯è‡ªå‹•çš„ã«å‰²ã‚Šå½“ã¦è§£é™¤ã•ã‚Œã¾ã™ã€‚</p><p>è¿½åŠ ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ã‚’変更ã—ã¾ã™ã‹ï¼Ÿ</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1111"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1110"/> <source>Change</source> <comment>hard disk</comment> <translation>変更</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1111"/> <source><p>Do you want to remove the selected host network interface <nobr><b>%1</b>?</nobr></p><p><b>Note:</b> 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.</p></source> <translation type="obsolete"><p>é¸æŠžã—ãŸãƒ›ã‚¹ãƒˆ ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ インターフェース ;<nobr><b>"%1"</b>を除去ã—ã¾ã™ã‹ï¼Ÿ</nobr></p><p><b>注:</b> ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¯è¤‡æ•°ã®ä»®æƒ³ãƒžã‚·ãƒ³ã®1ã¤ä»¥ä¸Šã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アタプタã§ä½¿ç”¨ä¸ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。除去ã™ã‚‹ã¨ã€ä»–ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹åã‚’é¸ã¶ã‹ã€åˆ¥ã®å‰²ã‚Šå½“ã¦æ–¹æ³•ã‚’æ£ã—ãè¨å®šã™ã‚‹ã¾ã§ãれらã®ã‚¢ãƒ€ãƒ—ã‚¿ã¯å‹•ä½œã—ã¾ã›ã‚“。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1341"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1332"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1340"/> <source>Failed to create the host-only network interface.</source> <translation>ホストオンリー ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ インターフェースã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1837"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1836"/> <source><p>Your existing VirtualBox settings files will be automatically converted from the old format to a new format required by the new version of VirtualBox.</p><p>Press <b>OK</b> to start VirtualBox now or press <b>Exit</b> if you want to terminate the VirtualBox application without any further actions.</p></source> <translation><p>æ—¢å˜ã®VirtualBoxè¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã¯å¤ã„å½¢å¼ã‹ã‚‰VirtualBoxã®æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«å¿…è¦ãªå½¢å¼ã«è‡ªå‹•å¤‰æ›ã•ã‚Œã¾ã™ã€‚</p><p>ã™ãã«VirtualBoxã‚’èµ·å‹•ã™ã‚‹ã«ã¯<b>[OK]</b>ボタンをクリックã—ã¦ãã ã•ã„。変æ›çµæžœã‚’ä¿å˜ã›ãšã«VirtualBoxアプリケーションを終了ã™ã‚‹ã«ã¯<b>[終了]</b>ボタンをクリックã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2028"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2027"/> <source>Failed to open appliance.</source> <translation>仮想アプライアンスã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2044"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2043"/> <source>Failed to open/interpret appliance <b>%1</b>.</source> <translation>仮想アプライアンス<b>"%1"</b>ã®ã‚ªãƒ¼ãƒ—ンã¾ãŸã¯è§£æžã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2056"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2055"/> <source>Failed to import appliance <b>%1</b>.</source> <translation>仮想アプライアンス<b>"%1"</b>ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2086"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2085"/> <source>Failed to create appliance.</source> <translation>仮想アプライアンスã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2111"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2093"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2110"/> <source>Failed to prepare the export of the appliance <b>%1</b>.</source> <translation>仮想アプライアンス<b>"%1"</b>ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã®å‰å‡¦ç†ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2106"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2105"/> <source>Failed to create an appliance.</source> <translation>仮想アプライアンスã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2122"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2121"/> <source>Failed to export appliance <b>%1</b>.</source> <translation>仮想アプライアンス<b>"%1"</b>ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1316"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1315"/> <source><p>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 <nobr><b>%1</b>?</nobr></p><p><b>Note:</b> 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.</p></source> <translation><p>ã“ã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã‚’削除ã™ã‚‹ã¨ã€ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ãŒåŸºã¥ã„ã¦ã„るホストオンリー ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ インタフェースãŒå‰Šé™¤ã•ã‚Œã¾ã™ã€‚ホストオンリー ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ インタフェース<nobr><b>%1</b></nobr>を削除ã—ã¾ã™ã‹ï¼Ÿ</p><p><b>注:</b>ã“ã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã¯ä»–ã®ä»®æƒ³ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタã§ä½¿ç”¨ã—ã¦ã„ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。削除ã—ãŸå ´åˆã€ãれらã®ã‚¢ãƒ€ãƒ—ã‚¿ã¯ã€ä»–ã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹åã‚’é¸ã¶ã‹ã€åˆ¥ã®ã‚¢ãƒ€ãƒ—ã‚¿ タイプをé¸ã‚“ã§è¨å®šã‚’変更ã™ã‚‹ã¾ã§ä½¿ç”¨ã§ãã¾ã›ã‚“。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="297"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="296"/> <source>A file named <b>%1</b> already exists. Are you sure you want to replace it?<br /><br />Replacing it will overwrite its contents.</source> <translation>ファイルå<b>"%1"</b>ã¯ã™ã§ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚ファイルを置ãæ›ãˆã¾ã™ã‹ï¼Ÿ<br /><br />ファイルã®å†…容ã¯ä¸Šæ›¸ãã•ã‚Œã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="811"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="810"/> <source><p>VT-x/AMD-V hardware acceleration has been enabled, but is not operational. Certain guests (e.g. OS/2 and QNX) require this feature.</p><p>Please ensure that you have enabled VT-x/AMD-V properly in the BIOS of your host computer.</p></source> <translation><p>仮想化支æ´æ©Ÿèƒ½(VT-x/AMD-V)ãŒæœ‰åŠ¹åŒ–ã•ã‚Œã¾ã—ãŸãŒä½¿ç”¨ã§ãã¾ã›ã‚“。ã„ãã¤ã‹ã®ã‚²ã‚¹ãƒˆOS(OS/2ã‚„QNXãªã©))ã¯æœ¬æ©Ÿèƒ½ã‚’å¿…è¦ã¨ã—ã¾ã™ã€‚</p><p>ホストマシンã®BIOSè¨å®šã§VT-x/AMD-Vを有効化ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1630"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1629"/> <source><p>Invalid e-mail address or password specified.</p></source> <translation><p>無効ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¾ãŸã¯ãƒ‘スワードãŒæŒ‡å®šã•ã‚Œã¾ã—ãŸã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1633"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1632"/> <source><p>Failed to register the VirtualBox product.</p><p>%1</p></source> <translation><p>VirtualBoxã®ç™»éŒ²ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</p><p>%1</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2066"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2065"/> <source>Failed to check files.</source> <translation>ファイルã®ç¢ºèªã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2076"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2075"/> <source>Failed to remove file.</source> <translation>ファイルã®é™¤åŽ»ä¸ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="363"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="362"/> <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>USBFS ファイルシステムを/sys/bus/usb/driversã«ãƒžã‚¦ãƒ³ãƒˆã—ã¦ã„ã¾ã™ã€‚ã“れを変更ã™ã‚‹ã“ã¨ã‚’å¼·ã勧ã‚ã¾ã™ã€‚誤ã£ãŸã‚·ã‚¹ãƒ†ãƒ 構æˆã«ã‚ˆã‚ŠUSB デãƒã‚¤ã‚¹ã®ä½¿ç”¨ã«å¤±æ•—ã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="386"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="385"/> <source>You are running an EXPERIMENTAL build of VirtualBox. This version is not suitable for production use.</source> <translation>ã“ã‚Œã¯VirtualBoxã®è©¦é¨“的ビルドã§ã™ã€‚ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯å®Ÿå‹™ä½œæ¥ã«ã¯é©ã—ã¦ã„ã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="836"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="835"/> <source><p>Are you sure you want to restore snapshot <b>%1</b>? This will cause you to lose your current machine state, which cannot be recovered.</p></source> <translation><p>スナップショット<b>"%1"</b>ã«å¾©å…ƒã—ã¾ã™ã‹ï¼Ÿç¾åœ¨ã®ä»®æƒ³ãƒžã‚·ãƒ³ã®çŠ¶æ…‹ã¯å¤±ã‚ã‚Œã€ãれを回復ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="841"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="840"/> <source>Restore</source> <translation>復元</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="847"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="846"/> <source><p>Deleting the snapshot will cause the state information saved in it to be lost, and disk data spread over several image files that VirtualBox has created together with the snapshot will be merged into one file. This can be a lengthy process, and the information in the snapshot cannot be recovered.</p></p>Are you sure you want to delete the selected snapshot <b>%1</b>?</p></source> <translation><p>スナップショットを削除ã™ã‚‹ã¨ã€ã‚¹ãƒŠãƒƒãƒ—ショットã«æ ¼ç´ã•ã‚Œã¦ã„ã‚‹æƒ…å ±ã¯å¤±ã‚ã‚Œã€VirtualBoxãŒã‚¹ãƒŠãƒƒãƒ—ショットã¨å…±ã«ä½œæˆã—ãŸè¤‡æ•°ã®ãƒ‡ã‚£ã‚¹ã‚¯ データã¯ã²ã¨ã¤ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ãƒžãƒ¼ã‚¸ã•ã‚Œã¾ã™ã€‚ã“ã‚Œã«ã¯é•·ã„時間ãŒã‹ã‹ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。ãã—ã¦ã‚¹ãƒŠãƒƒãƒ—ショットã®æƒ…å ±ã‚’å›žå¾©ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。</p><p>スナップショット<b>"%1"</b>を削除ã—ã¾ã™ã‹ï¼Ÿã€‚</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="853"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="852"/> <source>Delete</source> <translation>削除</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="872"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="859"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="871"/> <source>Failed to restore the snapshot <b>%1</b> of the virtual machine <b>%2</b>.</source> <translation>仮想マシン<b>"%2"</b>ã®ã‚¹ãƒŠãƒƒãƒ—ショット<b>"%1"</b>ã¸ã®å¾©å…ƒã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="894"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="881"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="893"/> <source>Failed to delete the snapshot <b>%1</b> of the virtual machine <b>%2</b>.</source> <translation>仮想マシン<b>"%2"</b>ã®ã‚¹ãƒŠãƒƒãƒ—ショット<b>"%1"</b>ã®å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1120"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1119"/> <source><p>There are no unused media available for the newly created attachment.</p><p>Press the <b>Create</b> button to start the <i>New Virtual Disk</i> wizard and create a new medium, or press the <b>Select</b> if you wish to open the <i>Virtual Media Manager</i>.</p></source> <translation><p>æ–°è¦ã®å‰²ã‚Šå½“ã¦ã«åˆ©ç”¨ã§ãる未使用ã®ãƒ¡ãƒ‡ã‚£ã‚¢ãŒã‚ã‚Šã¾ã›ã‚“。</p><p><b>[作æˆ]</b>ボタンをクリックã—ã€<i>æ–°è¦ä»®æƒ³ãƒ‡ã‚£ã‚¹ã‚¯ä½œæˆã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰</i>ã‚’èµ·å‹•ã—ã¦æ–°è¦ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’作æˆã™ã‚‹ã‹ã€<b>[é¸æŠž]</b>ボタンをクリックã—ã¦ã€<i>仮想メディアマãƒãƒ¼ã‚¸ãƒ£</i>ã‚’é–‹ã„ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1130"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1129"/> <source>&Create</source> <comment>medium</comment> <translation>作æˆ(&C)</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1142"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1130"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1141"/> <source>&Select</source> <comment>medium</comment> <translation>é¸æŠž(&S)</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1134"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1133"/> <source><p>There are no unused media available for the newly created attachment.</p><p>Press the <b>Select</b> if you wish to open the <i>Virtual Media Manager</i>.</p></source> <translation><p>æ–°è¦ã®å‰²ã‚Šå½“ã¦ã«åˆ©ç”¨ã§ãる未使用ã®ãƒ¡ãƒ‡ã‚£ã‚¢ãŒã‚ã‚Šã¾ã›ã‚“。</p><p><b>[é¸æŠž]</b>ボタンをクリックã—ã¦ã€<i>仮想メディアマãƒãƒ¼ã‚¸ãƒ£</i>ã‚’é–‹ã„ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1150"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1149"/> <source><p>Are you sure you want to delete the CD/DVD-ROM device?</p><p>You will not be able to mount any CDs or ISO images or install the Guest Additions without it!</p></source> <translation><p>CD/DVD-ROM デãƒã‚¤ã‚¹ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ</p><p>デãƒã‚¤ã‚¹ãŒãªã„å ´åˆã€CD/DVDメディアやISOイメージファイルã®ãƒžã‚¦ãƒ³ãƒˆãŠã‚ˆã³Guest Additions ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¯ã§ãã¾ã›ã‚“ï¼</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1154"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1153"/> <source>&Remove</source> <comment>medium</comment> <translation>除去(&R)</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1179"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1178"/> <source>Failed to attach the %1 to slot <i>%2</i> of the machine <b>%3</b>.</source> <translation>"%1"ã®ä»®æƒ³ãƒžã‚·ãƒ³<b>"%3"</b>ã®ã‚¹ãƒãƒƒãƒˆ<i>"%2"</i>ã¸ã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1195"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1194"/> <source>Failed to detach the %1 from slot <i>%2</i> of the machine <b>%3</b>.</source> <translation>"%1"ã®ä»®æƒ³ãƒžã‚·ãƒ³<b>"%3"</b>ã®ã‚¹ãƒãƒƒãƒˆ<i>"%2"</i>ã¸ã®å‰²ã‚Šå½“ã¦è§£é™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1210"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1209"/> <source>Unable to mount the %1 <nobr><b>%2</b></nobr> on the machine <b>%3</b>.</source> <translation>%1 <nobr><b>%2</b></nobr>を仮想マシン<b>"%3"</b>ã«ãƒžã‚¦ãƒ³ãƒˆã§ãã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1211"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1210"/> <source> Would you like to force mounting of this medium?</source> <translation>メディアを強制マウントã—ã¾ã™ã‹ï¼Ÿ</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1215"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1214"/> <source>Unable to unmount the %1 <nobr><b>%2</b></nobr> from the machine <b>%3</b>.</source> <translation>%1 <nobr><b>%2</b></nobr>を仮想マシン<b>"%3"</b>ã‹ã‚‰ãƒžã‚¦ãƒ³ãƒˆè§£é™¤ã§ãã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1216"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1215"/> <source> Would you like to force unmounting of this medium?</source> <translation>メディアを強制マウント解除ã—ã¾ã™ã‹ï¼Ÿ</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1226"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1225"/> <source>Force Unmount</source> <translation>強制マウント解除</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1266"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1265"/> <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>仮想ドライブã®ãƒ‡ã‚£ã‚¹ã‚¯ã®å–り出ã—ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã“ã®ãƒ‰ãƒ©ã‚¤ãƒ–ã¯ã‚²ã‚¹ãƒˆOSã«ã‚ˆã£ã¦ãƒãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚確èªå¾Œã€å†å®Ÿè¡Œã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1515"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1514"/> <source><p>Could not insert the VirtualBox Guest Additions installer CD image into the virtual machine <b>%1</b>, as the machine has no CD/DVD-ROM drives. Please add a drive using the storage page of the virtual machine settings dialog.</p></source> <translation><p>仮想マシン<b>"%1"</b>ãŒCD/DVD-ROMドライブをæŒãŸãªã„ãŸã‚ã€VirtualBox Guest Additionsã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«CDイメージを仮想マシンã«ã‚¤ãƒ³ã‚µãƒ¼ãƒˆã§ãã¾ã›ã‚“。 仮想マシンè¨å®šãƒ€ã‚¤ã‚¢ãƒã‚°ã®[ストレージ]ページã§ãƒ‰ãƒ©ã‚¤ãƒ–ã‚’è¿½åŠ ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1866"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1847"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1865"/> <source>E&xit</source> <comment>warnAboutSettingsAutoConversion message box</comment> <translation>終了(&X)</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="1854"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="1853"/> <source><p>The following VirtualBox settings files will be automatically converted from the old format to a new format required by the new version of VirtualBox.</p><p>Press <b>OK</b> to start VirtualBox now or press <b>Exit</b> if you want to terminate the VirtualBox application without any further actions.</p></source> <translation><p>次ã®VirtualBoxè¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã¯å¤ã„å½¢å¼ã‹ã‚‰æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®VirtualBoxBoxãŒå¿…è¦ã¨ã™ã‚‹æ–°ã—ã„å½¢å¼ã«è‡ªå‹•çš„ã«å¤‰æ›´ã•ã‚Œã¾ã™ã€‚</p><p><b>[OK]</b>ボタンをクリックã—ã¦VirtualBoxã‚’èµ·å‹•ã™ã‚‹ã‹ã€è¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã®å¤‰æ›´ã‚’è¡Œã‚ãšã«VirtualBoxアプリケーションを終了ã•ã›ãŸã„ãªã‚‰<b>[終了]</b>ボタンをクリックã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2230"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2229"/> <source>hard disk</source> <comment>failed to mount ...</comment> <translation>ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2232"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2231"/> <source>CD/DVD</source> <comment>failed to mount ... host-drive</comment> <translation>CD/DVD</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2234"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2233"/> <source>CD/DVD image</source> <comment>failed to mount ...</comment> <translation>CD/DVD イメージ</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2236"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2235"/> <source>floppy</source> <comment>failed to mount ... host-drive</comment> <translation>フãƒãƒƒãƒ”ー</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2238"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2237"/> <source>floppy image</source> <comment>failed to mount ...</comment> <translation>フãƒãƒƒãƒ”ー イメージ</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2250"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2249"/> <source>hard disk</source> <comment>failed to attach ...</comment> <translation>ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2252"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2251"/> <source>CD/DVD device</source> <comment>failed to attach ...</comment> <translation>CD/DVD デãƒã‚¤ã‚¹</translation> </message> <message> - <location filename="../src/globals/VBoxProblemReporter.cpp" line="2254"/> + <location filename="../src/globals/VBoxProblemReporter.cpp" line="2253"/> <source>floppy device</source> <comment>failed to close ...</comment> <translation>フãƒãƒƒãƒ”ー デãƒã‚¤ã‚¹</translation> @@ -7216,72 +6898,58 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>ã‚ャンセル(&C)</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>Time remaining: %1</source> <translation type="obsolete">残り時間: %1</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>%1 days, %2 hours remaining</source> <translation type="obsolete">残り時間 %1日㨠%2時間</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>%1 days, %2 minutes remaining</source> <translation type="obsolete">残り時間 %1日㨠%2分</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>%1 days remaining</source> <translation type="obsolete">残り時間 %1æ—¥</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>1 day, %1 hours remaining</source> <translation type="obsolete">残り時間 1日㨠%1時間</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>1 day, %1 minutes remaining</source> <translation type="obsolete">残り時間 1日㨠%1分</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>1 day remaining</source> <translation type="obsolete">残り時間 1æ—¥</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>%1 hours, %2 minutes remaining</source> <translation type="obsolete">残り時間 %1時間㨠%2分</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>1 hour, %1 minutes remaining</source> <translation type="obsolete">残り時間 1時間㨠%1分</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>1 hour remaining</source> <translation type="obsolete">残り時間 1時間</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>%1 minutes remaining</source> <translation type="obsolete">残り時間 %1分</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>1 minute, %2 seconds remaining</source> <translation type="obsolete">残り時間 1分㨠%2秒</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>1 minute remaining</source> <translation type="obsolete">残り時間 1分</translation> </message> <message> - <location filename="../src/widgets/VBoxProgressDialog.cpp" line="118"/> <source>%1 seconds remaining</source> <translation type="obsolete">残り時間 %1秒</translation> </message> @@ -7316,170 +6984,138 @@ step and attach hard disks later using the VM Settings dialog.</p></source <context> <name>VBoxRegistrationDlg</name> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="30"/> <source>VirtualBox Registration Dialog</source> - <translation>VirtualBox 登録ダイアãƒã‚°</translation> + <translation type="obsolete">VirtualBox 登録ダイアãƒã‚°</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="30"/> <source>&Name</source> <translation type="obsolete">åå‰(&N)</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="376"/> <source>Enter your full name using Latin characters.</source> - <translation>フルãƒãƒ¼ãƒ を英å—ã§å…¥åŠ›ã—ã¦ãã ã•ã„。</translation> + <translation type="obsolete">フルãƒãƒ¼ãƒ を英å—ã§å…¥åŠ›ã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="376"/> <source>&E-mail</source> <translation type="obsolete">メールアドレス(&E)</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="184"/> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>メールアドレスを入力ã—ã¦ãã ã•ã„。</translation> + <translation type="obsolete">メールアドレスを入力ã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="184"/> <source>&Please do not use this information to contact me</source> <translation type="obsolete">æƒ…å ±ãƒ¡ãƒ¼ãƒ«ä¸è¦(&P)</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="63"/> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>よã†ã“ã VirtualBox 登録フォームã¸ï¼</translation> + <translation type="obsolete">よã†ã“ã VirtualBox 登録フォームã¸ï¼</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="63"/> <source>&Confirm</source> <translation type="obsolete">確èª(&C)</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="63"/> <source>Connection timed out.</source> <translation type="obsolete">接続ãŒã‚¿ã‚¤ãƒ アウトã«ãªã‚Šã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="63"/> <source>Could not locate the registration form on the server (response: %1).</source> <translation type="obsolete">サーãƒãƒ¼ä¸Šã«ç™»éŒ²ãƒ•ã‚©ãƒ¼ãƒ ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ(å¿œç”: %1)。</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.cpp" line="416"/> <source>Could not perform connection handshake.</source> - <translation>接続を確立ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚</translation> + <translation type="obsolete">接続を確立ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.cpp" line="416"/> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> <translation type="obsolete"><p>登録フォームã«å…¥åŠ›ã—ã€ã‚ãªãŸãŒ VirtualBox を使用ã—ã¦ã„ã‚‹ã“ã¨ã‚’我々ã«çŸ¥ã‚‰ã›ã¦ãã ã•ã„。VirtualBox ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ã¨æ›´æ–°æƒ…å ±ã‚’ãŠçŸ¥ã‚‰ã›ã—ã¾ã™(ä»»æ„)。</p><p>フルãƒãƒ¼ãƒ (英å—)ã¨ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’下ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å…¥åŠ›ã—ã¦ãã ã•ã„。注:Sun Microsystems ã¯ã€ã“ã®æƒ…å ±ã‚’è£½å“使用ã®çµ±è¨ˆã‚’åŽé›†ã—ã€VirtualBox ニュースレターをé€ä¿¡ã™ã‚‹ãŸã‚ã ã‘ã«ä½¿ç”¨ã—ã¾ã™ã€‚Sun Microsystems ãŒå€‹äººæƒ…å ±ã‚’ç¬¬ä¸‰è€…ã«æ¸¡ã™ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“ã€‚å€‹äººæƒ…å ±ã®æ‰±ã„ã«é–¢ã™ã‚‹è©³ç´°æƒ…å ±ã¯ã€VirtualBox マニュアルã®"<b>Privacy Policy</b>" セクションã¾ãŸã¯ VirtualBox webサイトã®"<a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a>"ページをå‚ç…§ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.cpp" line="416"/> <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">Sun Microsystems ã‹ã‚‰ã®æƒ…å ±ãƒ¡ãƒ¼ãƒ«ã‚’å—ã‘å–ã‚ŠãŸããªã„å ´åˆã€ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚’オンã«ã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.cpp" line="416"/> <source>C&onfirm</source> <translation type="obsolete">確èª(&O)</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="434"/> <source>Cancel</source> - <translation>ã‚ャンセル</translation> + <translation type="obsolete">ã‚ャンセル</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.cpp" line="308"/> <source>Select Country/Territory</source> - <translation>国/地域をé¸æŠž</translation> + <translation type="obsolete">国/地域をé¸æŠž</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="108"/> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>登録フォームã«å…¥åŠ›ã—ã€ã‚ãªãŸãŒ VirtualBox を使用ã—ã¦ã„ã‚‹ã“ã¨ã‚’我々ã«çŸ¥ã‚‰ã›ã¦ãã ã•ã„。VirtualBox ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ã¨æ›´æ–°æƒ…å ±ã‚’ãŠçŸ¥ã‚‰ã›ã—ã¾ã™(ä»»æ„)。</p><p>フルãƒãƒ¼ãƒ (英å—)ã¨ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’下ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å…¥åŠ›ã—ã¦ãã ã•ã„。注:Sun Microsystems ã¯ã€ã“ã®æƒ…å ±ã‚’è£½å“使用ã®çµ±è¨ˆã‚’åŽé›†ã—ã€VirtualBox ニュースレターをé€ä¿¡ã™ã‚‹ãŸã‚ã ã‘ã«ä½¿ç”¨ã—ã¾ã™ã€‚Sun Microsystems ãŒå€‹äººæƒ…å ±ã‚’ç¬¬ä¸‰è€…ã«æ¸¡ã™ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“ã€‚å€‹äººæƒ…å ±ã®æ‰±ã„ã«é–¢ã™ã‚‹è©³ç´°æƒ…å ±ã¯ã€VirtualBox マニュアルã®"<b>Privacy Policy</b>" セクションã¾ãŸã¯ VirtualBox webサイトã®"<a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a>"ページをå‚ç…§ã—ã¦ãã ã•ã„。</p></translation> + <translation type="obsolete"><p>登録フォームã«å…¥åŠ›ã—ã€ã‚ãªãŸãŒ VirtualBox を使用ã—ã¦ã„ã‚‹ã“ã¨ã‚’我々ã«çŸ¥ã‚‰ã›ã¦ãã ã•ã„。VirtualBox ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ã¨æ›´æ–°æƒ…å ±ã‚’ãŠçŸ¥ã‚‰ã›ã—ã¾ã™(ä»»æ„)。</p><p>フルãƒãƒ¼ãƒ (英å—)ã¨ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’下ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å…¥åŠ›ã—ã¦ãã ã•ã„。注:Sun Microsystems ã¯ã€ã“ã®æƒ…å ±ã‚’è£½å“使用ã®çµ±è¨ˆã‚’åŽé›†ã—ã€VirtualBox ニュースレターをé€ä¿¡ã™ã‚‹ãŸã‚ã ã‘ã«ä½¿ç”¨ã—ã¾ã™ã€‚Sun Microsystems ãŒå€‹äººæƒ…å ±ã‚’ç¬¬ä¸‰è€…ã«æ¸¡ã™ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“ã€‚å€‹äººæƒ…å ±ã®æ‰±ã„ã«é–¢ã™ã‚‹è©³ç´°æƒ…å ±ã¯ã€VirtualBox マニュアルã®"<b>Privacy Policy</b>" セクションã¾ãŸã¯ VirtualBox webサイトã®"<a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a>"ページをå‚ç…§ã—ã¦ãã ã•ã„。</p></translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="125"/> <source>I &already have a Sun Online account:</source> - <translation>Sun オンライン アカウントã«ç™»éŒ²æ¸ˆã¿ã§ã™(&H):</translation> + <translation type="obsolete">Sun オンライン アカウントã«ç™»éŒ²æ¸ˆã¿ã§ã™(&H):</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="151"/> <source>&E-mail:</source> - <translation>メールアドレス:</translation> + <translation type="obsolete">メールアドレス:</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="171"/> <source>&Password:</source> - <translation>パスワード:</translation> + <translation type="obsolete">パスワード:</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="201"/> <source>I &would like to create a new Sun Online account:</source> - <translation>Sun オンライン アカウントを作æˆã—ã¦ç™»éŒ²ã—ã¾ã™(&W):</translation> + <translation type="obsolete">Sun オンライン アカウントを作æˆã—ã¦ç™»éŒ²ã—ã¾ã™(&W):</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="224"/> <source>&First Name:</source> - <translation>åå‰(&F):</translation> + <translation type="obsolete">åå‰(&F):</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="244"/> <source>&Last Name:</source> - <translation>姓(&L):</translation> + <translation type="obsolete">姓(&L):</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="264"/> <source>&Company:</source> - <translation>会社(&C):</translation> + <translation type="obsolete">会社(&C):</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="284"/> <source>Co&untry:</source> - <translation>国/地域(&U):</translation> + <translation type="obsolete">国/地域(&U):</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="320"/> <source>E-&mail:</source> - <translation>メールアドレス(&M):</translation> + <translation type="obsolete">メールアドレス(&M):</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="340"/> <source>P&assword:</source> - <translation>パスワード(&A):</translation> + <translation type="obsolete">パスワード(&A):</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="363"/> <source>Co&nfirm Password:</source> - <translation>パスワード確èª(&N):</translation> + <translation type="obsolete">パスワード確èª(&N):</translation> </message> <message> - <location filename="../src/VBoxRegistrationDlg.ui" line="408"/> <source>&Register</source> - <translation>登録(R)</translation> + <translation type="obsolete">登録(R)</translation> </message> </context> <context> <name>VBoxSFDialog</name> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3812"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3847"/> <source>Shared Folders</source> <translation>共有フォルダ</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3812"/> <source>Cancel</source> <translation type="obsolete">ã‚ャンセル</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3812"/> <source>Help</source> <translation type="obsolete">ヘルプ</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3812"/> <source>&OK</source> <translation type="obsolete">OK(&O)</translation> </message> @@ -7515,28 +7151,25 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>詳細(&D)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1309"/> <source>Virtual &Disk Manager...</source> <translation type="obsolete">仮想ディスクマãƒãƒ¼ã‚¸ãƒ£(&D)...</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1309"/> <source>Ctrl+D</source> <translation type="obsolete">Ctrl+D</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1309"/> <source>Display the Virtual Disk Manager dialog</source> <translation type="obsolete">仮想ディスクマãƒãƒ¼ã‚¸ãƒ£ ダイアãƒã‚°ã‚’表示</translation> </message> <message> + <location filename="../src/VBoxSelectorWnd.cpp" line="1339"/> <location filename="../src/VBoxSelectorWnd.cpp" line="1346"/> <source>&Preferences...</source> <comment>global settings</comment> <translation>環境è¨å®š(&P)...</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1346"/> <source>Ctrl+G</source> <translation type="obsolete">Ctrl+G</translation> </message> @@ -7551,7 +7184,6 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>終了(&X)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1351"/> <source>Ctrl+Q</source> <translation type="obsolete">Ctrl+Q</translation> </message> @@ -7566,12 +7198,10 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>æ–°è¦(&N)...</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1355"/> <source>New</source> <translation type="obsolete">æ–°è¦</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1355"/> <source>Ctrl+N</source> <translation type="obsolete">Ctrl+N</translation> </message> @@ -7586,12 +7216,10 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>è¨å®š(&S)...</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1361"/> <source>Settings</source> <translation type="obsolete">è¨å®š</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1361"/> <source>Ctrl+S</source> <translation type="obsolete">Ctrl+S</translation> </message> @@ -7606,7 +7234,6 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>削除(&D)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1367"/> <source>Delete</source> <translation type="obsolete">削除</translation> </message> @@ -7621,7 +7248,6 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>ç ´æ£„(&I)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1373"/> <source>Discard</source> <translation type="obsolete">ç ´æ£„</translation> </message> @@ -7631,17 +7257,14 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>é¸æŠžã—ãŸä»®æƒ³ãƒžã‚·ãƒ³ã‚’ç ´æ£„</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1375"/> <source>&Refresh</source> <translation type="obsolete">最新ã®æƒ…å ±ã«æ›´æ–°(&R)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1375"/> <source>Refresh</source> <translation type="obsolete">最新ã®æƒ…å ±ã«æ›´æ–°</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1375"/> <source>Ctrl+R</source> <translation type="obsolete">Ctrl+R</translation> </message> @@ -7651,47 +7274,38 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>é¸æŠžã—ãŸä»®æƒ³ãƒžã‚·ãƒ³ã®ã‚¢ã‚¯ã‚»ã‚¹å¯å¦çŠ¶æ…‹ã‚’最新ã®æƒ…å ±ã«æ›´æ–°ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1383"/> <source>&Contents...</source> <translation type="obsolete">ヘルプを表示(&C)...</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1383"/> <source>F1</source> <translation type="obsolete">F1</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1383"/> <source>Show the online help contents</source> <translation type="obsolete">オンラインヘルプを表示</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1383"/> <source>&VirtualBox Web Site...</source> <translation type="obsolete">VirtualBox Webサイト(&V)...</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1383"/> <source>Open the browser and go to the VirtualBox product web site</source> <translation type="obsolete">Webブラウザã§VirtualBox製å“ã®Webサイトを開ã</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1383"/> <source>&About VirtualBox...</source> <translation type="obsolete">VirtualBox ã«ã¤ã„ã¦(&A)...</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1383"/> <source>Show a dialog with product information</source> <translation type="obsolete">製å“æƒ…å ±ãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’表示</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1383"/> <source>&Reset All Warnings</source> <translation type="obsolete">ã™ã¹ã¦ã®è¦å‘Šã‚’リセット(&R)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1383"/> <source>Go back to showing all suppressed warnings and messages</source> <translation type="obsolete">ã™ã¹ã¦ã®æŠ‘æ¢ã•ã‚ŒãŸè¦å‘Šã¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’å†åº¦è¡¨ç¤ºã•ã›ã‚‹</translation> </message> @@ -7706,11 +7320,13 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>ヘルプ(&H)</translation> </message> <message> + <location filename="../src/VBoxSelectorWnd.cpp" line="1443"/> <location filename="../src/VBoxSelectorWnd.cpp" line="1578"/> <source>&Snapshots</source> <translation>スナップショット(&S)</translation> </message> <message> + <location filename="../src/VBoxSelectorWnd.cpp" line="1457"/> <location filename="../src/VBoxSelectorWnd.cpp" line="1582"/> <source>D&escription</source> <translation>説明(&E)</translation> @@ -7726,7 +7342,6 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>表示(&H)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1497"/> <source>Show</source> <translation type="obsolete">表示</translation> </message> @@ -7736,22 +7351,22 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>é¸æŠžã—ãŸä»®æƒ³ãƒžã‚·ãƒ³ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã«åˆ‡ã‚Šæ›¿ãˆ</translation> </message> <message> + <location filename="../src/VBoxSelectorWnd.cpp" line="1483"/> <location filename="../src/VBoxSelectorWnd.cpp" line="1592"/> <source>S&tart</source> <translation>èµ·å‹•(&T)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1592"/> <source>Start</source> <translation type="obsolete">èµ·å‹•</translation> </message> <message> + <location filename="../src/VBoxSelectorWnd.cpp" line="1491"/> <location filename="../src/VBoxSelectorWnd.cpp" line="1594"/> <source>Start the selected virtual machine</source> <translation>é¸æŠžã—ãŸä»®æƒ³ãƒžã‚·ãƒ³ã‚’èµ·å‹•</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1594"/> <source><h3>Welcome to VirtualBox!</h3><p>The left part of this window is a list of all virtual machines on your computer. The list is empty now because you haven't created any virtual machines yet.<img src=welcome.png align=right/></p><p>In order to create a new virtual machine, press the <b>New</b> button in the main tool bar located at the top of the window.</p><p>You can press the <b>%1</b> key to get instant help, or visit <a href=http://www.virtualbox.org>www.virtualbox.org</a> for the latest information and news.</p></source> <translation type="obsolete"><h3>よã†ã“ãVirtualBoxã¸ï¼</h3><p>ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®å·¦å´ã«ã‚³ãƒ³ãƒ”ュータ上ã®ã™ã¹ã¦ã®ä»®æƒ³ãƒžã‚·ãƒ³ãŒãƒªã‚¹ãƒˆè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã¾ã 仮想マシンãŒä½œæˆã•ã‚Œã¦ã„ãªã„ãŸã‚ã€ãƒªã‚¹ãƒˆã¯ç©ºã§ã™ã€‚<img src=welcome.png align=right/></p><p>æ–°è¦ä»®æƒ³ãƒžã‚·ãƒ³ã‚’作æˆã™ã‚‹ã«ã¯ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ä¸Šéƒ¨ã«ã‚るメインツールãƒãƒ¼ã®<b>[æ–°è¦]</b>ボタンをクリックã—ã¦ãã ã•ã„。</p><p><b>%1</b>ã‚ーã§ãƒ˜ãƒ«ãƒ—を表示ã§ãã¾ã™ã€‚ã¾ãŸã¯æœ€æ–°ã®æƒ…å ±ã¨ãƒ‹ãƒ¥ãƒ¼ã‚¹ã‚’å–å¾—ã™ã‚‹ãŸã‚ <a href=http://www.virtualbox.org>www.virtualbox.org</a> を訪å•ã—ã¦ãã ã•ã„。</p></translation> </message> @@ -7766,12 +7381,10 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>ãƒã‚°ã‚’å‚ç…§(&L)...</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1385"/> <source>Show Log...</source> <translation type="obsolete">ãƒã‚°ã‚’å‚ç…§...</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1385"/> <source>Ctrl+L</source> <translation type="obsolete">Ctrl+L</translation> </message> @@ -7781,12 +7394,10 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>é¸æŠžã—ãŸä»®æƒ³ãƒžã‚·ãƒ³ã®ãƒã‚°ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å‚ç…§ã™ã‚‹</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1389"/> <source>R&egister VirtualBox...</source> <translation type="obsolete">VirtualBox を登録(&E)...</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1389"/> <source>Open VirtualBox registration form</source> <translation type="obsolete">VirtualBox 登録フォームを開ã</translation> </message> @@ -7796,12 +7407,10 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>å†é–‹(&E)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1515"/> <source>Resume</source> <translation type="obsolete">å†é–‹</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1515"/> <source>Ctrl+P</source> <translation type="obsolete">Ctrl+P</translation> </message> @@ -7811,16 +7420,17 @@ step and attach hard disks later using the VM Settings dialog.</p></source <translation>仮想マシンã®å®Ÿè¡Œã‚’å†é–‹ã™ã‚‹</translation> </message> <message> + <location filename="../src/VBoxSelectorWnd.cpp" line="1377"/> <location filename="../src/VBoxSelectorWnd.cpp" line="1525"/> <source>&Pause</source> <translation>一時åœæ¢(&P)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="1525"/> <source>Pause</source> <translation type="obsolete">一時åœæ¢</translation> </message> <message> + <location filename="../src/VBoxSelectorWnd.cpp" line="1379"/> <location filename="../src/VBoxSelectorWnd.cpp" line="1528"/> <source>Suspend the execution of the virtual machine</source> <translation>仮想マシンã®å®Ÿè¡Œã‚’一時åœæ¢ã™ã‚‹</translation> @@ -7908,22 +7518,18 @@ step and attach hard disks later using the VM Settings dialog.</p></source <context> <name>VBoxSharedFoldersSettings</name> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Name</source> <translation type="obsolete">åå‰</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Path</source> <translation type="obsolete">パス</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Shared &Folders</source> <translation type="obsolete">共有フォルダ(&F)</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source><qt>Lists all shared folders accessible to this machine. Use <tt>net use x: \\vboxsvr\share</tt> @@ -7936,78 +7542,63 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs 本機能を使用ã™ã‚‹ã«ã¯ Guest Additions ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå¿…è¦ã§ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Adds a new shared folder definition.</source> <translation type="obsolete">æ–°è¦å…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€ã‚’è¿½åŠ ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Removes the selected shared folder definition.</source> <translation type="obsolete">é¸æŠžã—ãŸå…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€ã®è¨å®šã‚’削除ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source> Machine Folders</source> <translation type="obsolete">共有フォルダ</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source> Transient Folders</source> <translation type="obsolete">一時的ãªå…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Edits the selected shared folder definition.</source> <translation type="obsolete">é¸æŠžã—ãŸå…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€ã®è¨å®šã‚’編集ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>VBoxSharedFoldersSettings</source> <comment>don't translate</comment> <translation type="obsolete">VBoxSharedFoldersSettings</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Ins</source> <translation type="obsolete">Ins</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Add a new shared folder (Ins)</source> <translation type="obsolete">æ–°è¦å…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€ã‚’è¿½åŠ (Ins)</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Del</source> <translation type="obsolete">Del</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Remove the selected shared folder (Del)</source> <translation type="obsolete">é¸æŠžã—ãŸå…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€ã‚’削除(Del)</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Access</source> <translation type="obsolete">アクセス権</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Ctrl+Space</source> <translation type="obsolete">Ctrl+スペース</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Edit the selected shared folder (Ctrl+Space)</source> <translation type="obsolete">é¸æŠžã—ãŸå…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€ã®è¨å®šã‚’編集(Ctrl+スペース)</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Full</source> <translation type="obsolete">完全</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Read-only</source> <translation type="obsolete">èªã¿è¾¼ã¿å°‚用</translation> </message> @@ -8015,47 +7606,38 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs <context> <name>VBoxSnapshotDetailsDlg</name> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>VBoxSnapshotDetailsDlg</source> <translation type="obsolete">VBoxSnapshotDetailsDlg</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source> Snapshot Details </source> <translation type="obsolete">スナップショット詳細</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>&Name</source> <translation type="obsolete">åå‰(&N)</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>&Description</source> <translation type="obsolete">説明(&D)</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>&Machine Details</source> <translation type="obsolete">仮想マシン詳細(&M)</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Help</source> <translation type="obsolete">ヘルプ</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>F1</source> <translation type="obsolete">F1</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>&OK</source> <translation type="obsolete">OK(&O)</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialog.cpp" line="143"/> <source>Cancel</source> <translation type="obsolete">ã‚ャンセル</translation> </message> @@ -8065,7 +7647,6 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs <translation>%1 (%2)ã®è©³ç´°</translation> </message> <message> - <location filename="../src/VBoxSnapshotDetailsDlg.cpp" line="121"/> <source>Snapshot Details</source> <translation type="obsolete">スナップショット詳細</translation> </message> @@ -8098,7 +7679,6 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs <context> <name>VBoxSnapshotsWgt</name> <message> - <location filename="../src/VBoxSnapshotDetailsDlg.ui" line="124"/> <source>[snapshot]</source> <translation type="obsolete">[snapshot]</translation> </message> @@ -8108,32 +7688,26 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs <translation>VBoxSnapshotsWgt</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.ui" line="30"/> <source>snapshotActionGroup</source> <translation type="obsolete">snapshotActionGroup</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.ui" line="30"/> <source>Discard Snapshot</source> <translation type="obsolete">ã‚¹ãƒŠãƒƒãƒ—ã‚·ãƒ§ãƒƒãƒˆã‚’ç ´æ£„</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.ui" line="30"/> <source>&Discard Snapshot</source> <translation type="obsolete">ã‚¹ãƒŠãƒƒãƒ—ã‚·ãƒ§ãƒƒãƒˆã‚’ç ´æ£„(&D)</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.ui" line="30"/> <source>Ctrl+Shift+D</source> <translation type="obsolete">Ctrl+Shift+D</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.ui" line="30"/> <source>curStateActionGroup</source> <translation type="obsolete">curStateActionGroup</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.ui" line="30"/> <source>Take Snapshot</source> <translation type="obsolete">スナップショット作æˆ</translation> </message> @@ -8143,17 +7717,14 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs <translation>スナップショット作æˆ(&S)</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="696"/> <source>Discard Current Snapshot and State</source> <translation type="obsolete">最新ã®ã‚¹ãƒŠãƒƒãƒ—ショットã¨çŠ¶æ…‹ã‚’ç ´æ£„</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="696"/> <source>D&iscard Current Snapshot and State</source> <translation type="obsolete">最新ã®ã‚¹ãƒŠãƒƒãƒ—ショットã¨çŠ¶æ…‹ã‚’ç ´æ£„(&I)</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="696"/> <source>Show Details</source> <translation type="obsolete">詳細を表示</translation> </message> @@ -8185,6 +7756,9 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs <translation>最新ã®çŠ¶æ…‹ã¯æœ€æ–°ã®ã‚¹ãƒŠãƒƒãƒ—ショットã«ä¿å˜ã•ã‚Œã¦ã„る状態ã¨åŒã˜ã§ã™</translation> </message> <message> + <location filename="../src/VBoxSnapshotsWgt.cpp" line="189"/> + <location filename="../src/VBoxSnapshotsWgt.cpp" line="194"/> + <location filename="../src/VBoxSnapshotsWgt.cpp" line="199"/> <location filename="../src/VBoxSnapshotsWgt.cpp" line="204"/> <source> (%1 ago)</source> <translation>(%1å‰)</translation> @@ -8231,12 +7805,10 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs <translation>スナップショット %1</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="585"/> <source>Discard the selected snapshot of the virtual machine</source> <translation type="obsolete">é¸æŠžã—ãŸä»®æƒ³ãƒžã‚·ãƒ³ã®ã‚¹ãƒŠãƒƒãƒ—ã‚·ãƒ§ãƒƒãƒˆã‚’ç ´æ£„</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="585"/> <source>Ctrl+Shift+S</source> <translation type="obsolete">Ctrl+Shift+S</translation> </message> @@ -8246,32 +7818,26 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs <translation>ç¾åœ¨ã®ä»®æƒ³ãƒžã‚·ãƒ³ã®çŠ¶æ…‹ã®ã‚¹ãƒŠãƒƒãƒ—ショットを作æˆ</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="701"/> <source>Revert to Current Snapshot</source> <translation type="obsolete">最新ã®ã‚¹ãƒŠãƒƒãƒ—ショットã®çŠ¶æ…‹ã«æˆ»ã™</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="701"/> <source>&Revert to Current Snapshot</source> <translation type="obsolete">最新ã®ã‚¹ãƒŠãƒƒãƒ—ショットã®çŠ¶æ…‹ã«æˆ»ã™(&R)</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="701"/> <source>Ctrl+Shift+R</source> <translation type="obsolete">Ctrl+Shift+R</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="701"/> <source>Restore the virtual machine state from the state stored in the current snapshot</source> <translation type="obsolete">仮想マシンã®çŠ¶æ…‹ã‚’最新ã®ã‚¹ãƒŠãƒƒãƒ—ショットã«ä¿å˜ã•ã‚ŒãŸçŠ¶æ…‹ã«å¾©å…ƒ</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="701"/> <source>Ctrl+Shift+B</source> <translation type="obsolete">Ctrl+Shift+B</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="701"/> <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> @@ -8281,7 +7847,6 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs <translation>é¸æŠžã—ãŸã‚¹ãƒŠãƒƒãƒ—ショットã®è©³ç´°ã‚’表示</translation> </message> <message> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="700"/> <source>Ctrl+Space</source> <translation type="obsolete">Ctrl+スペース</translation> </message> @@ -8291,28 +7856,24 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs <translation> (%1)</translation> </message> <message numerus="yes"> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="184"/> <source> (%n day(s) ago)</source> <translation type="obsolete"> <numerusform> (%n æ—¥å‰)</numerusform> </translation> </message> <message numerus="yes"> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="184"/> <source> (%n hour(s) ago)</source> <translation type="obsolete"> <numerusform> (%n 時間å‰)</numerusform> </translation> </message> <message numerus="yes"> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="184"/> <source> (%n minute(s) ago)</source> <translation type="obsolete"> <numerusform> (%n 分å‰)</numerusform> </translation> </message> <message numerus="yes"> - <location filename="../src/VBoxSnapshotsWgt.cpp" line="184"/> <source> (%n second(s) ago)</source> <translation type="obsolete"> <numerusform> (%n 秒å‰)</numerusform> @@ -8342,17 +7903,16 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs <context> <name>VBoxSwitchMenu</name> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="5110"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="5130"/> <source>Disable</source> <translation>無効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="5110"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="5130"/> <source>Enable</source> <translation>有効</translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="5110"/> <source>%1 %2</source> <translation type="obsolete">%1 %2</translation> </message> @@ -8375,22 +7935,18 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs <translation>スナップショットã®èª¬æ˜Ž(&D)</translation> </message> <message> - <location filename="../src/VBoxTakeSnapshotDlg.ui" line="88"/> <source>Help</source> <translation type="obsolete">ヘルプ</translation> </message> <message> - <location filename="../src/VBoxTakeSnapshotDlg.ui" line="88"/> <source>F1</source> <translation type="obsolete">F1</translation> </message> <message> - <location filename="../src/VBoxTakeSnapshotDlg.ui" line="88"/> <source>&OK</source> <translation type="obsolete">OK(&O)</translation> </message> <message> - <location filename="../src/VBoxTakeSnapshotDlg.ui" line="88"/> <source>Cancel</source> <translation type="obsolete">ã‚ャンセル</translation> </message> @@ -8462,86 +8018,70 @@ DOS系ゲストOSã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ <tt>net use x:¥¥vboxs <context> <name>VBoxUSBFilterSettings</name> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>VBoxUSBFilterSettings</source> <comment>don't translate</comment> <translation type="obsolete">VBoxUSBFilterSettings</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>&Name</source> <translation type="obsolete">åå‰(&N)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>Displays the filter name.</source> <translation type="obsolete">フィルタåを表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>&Manufacturer</source> <translation type="obsolete">メーカー(&M)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>Pro&duct</source> <translation type="obsolete">製å“å(&D)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>&Serial No.</source> <translation type="obsolete">シリアル No.(&S)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>R&emote</source> <translation type="obsolete">リモート(&E)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>&Action</source> <translation type="obsolete">動作(&A)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>&Vendor ID</source> <translation type="obsolete">ベンダーID(&V)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>&Product ID</source> <translation type="obsolete">プãƒãƒ€ã‚¯ãƒˆID(&P)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>&Revision</source> <translation type="obsolete">リビジョン(&R)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>Por&t</source> <translation type="obsolete">ãƒãƒ¼ãƒˆ(&T)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>Any</source> <comment>remote</comment> <translation type="obsolete">ä»»æ„</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>Yes</source> <comment>remote</comment> <translation type="obsolete">ã¯ã„</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source>No</source> <comment>remote</comment> <translation type="obsolete">ã„ã„ãˆ</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source><qt>Defines the manufacturer filter as an <i>exact match</i> string. An empty string will match any value.</qt></source> @@ -8549,7 +8089,6 @@ value.</qt></source> 空ã®æ–‡å—列ã¯ã™ã¹ã¦ã®å€¤ã¨ä¸€è‡´ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source><qt>Defines the product name filter as an <i>exact match</i> string. An empty string will match any value.</qt></source> @@ -8557,7 +8096,6 @@ value.</qt></source> 空ã®æ–‡å—列ã¯ã™ã¹ã¦ã®å€¤ã¨ä¸€è‡´ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source><qt>Defines the serial number filter as an <i>exact match</i> string. An empty string will match any value.</qt></source> @@ -8565,7 +8103,6 @@ value.</qt></source> 空ã®æ–‡å—列ã¯ã™ã¹ã¦ã®å€¤ã¨ä¸€è‡´ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source><qt>Defines whether this filter applies to USB devices attached locally to the host computer (<i>No</i>), to a VRDP client's computer (<i>Yes</i>), @@ -8575,7 +8112,6 @@ or both (<i>Any</i>).</qt></source> 両方((<i>ä»»æ„</i>))。</qt></translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source><qt>Defines an action performed by the host computer when a matching device is attached: give it up to the host OS (<i>Ignore</i>) or grab it for later usage by virtual machines @@ -8584,7 +8120,6 @@ computer when a matching device is attached: give it up to the host OS ホストOSã«è²ã‚‹(<i>無視</i>) ã€ä»®æƒ³ãƒžã‚·ãƒ³ã§ä½¿ç”¨ã™ã‚‹ãŸã‚ã«æ•æ‰(<i>ä¿æŒ</i>)。</qt></translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source><qt>Defines the vendor ID filter. The <i>exact match</i> string format is <tt>XXXX</tt> where <tt>X</tt> is a hexadecimal digit. An empty string will match any @@ -8594,7 +8129,6 @@ value.</qt></source> 空ã®æ–‡å—列ã¯ã™ã¹ã¦ã®å€¤ã¨ä¸€è‡´ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source><qt>Defines the product ID filter. The <i>exact match</i> string format is <tt>XXXX</tt> where <tt>X</tt> is a hexadecimal digit. An empty string will match any @@ -8604,7 +8138,6 @@ value.</qt></source> 空ã®æ–‡å—列ã¯ã™ã¹ã¦ã®å€¤ã¨ä¸€è‡´ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source><qt>Defines the revision number filter. The <i>exact match</i> string format is <tt>IIFF</tt> where <tt>I</tt> is a decimal digit of the integer part and <tt>F</tt> @@ -8616,7 +8149,6 @@ value.</qt></source> 空ã®æ–‡å—列ã¯ã™ã¹ã¦ã®å€¤ã¨ä¸€è‡´ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="2038"/> <source><qt>Defines the host USB port filter as an <i>exact match</i> string. An empty string will match any value.</qt></source> @@ -8627,13 +8159,13 @@ value.</qt></source> <context> <name>VBoxUSBMenu</name> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="5040"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="5060"/> <source><no devices available></source> <comment>USB devices</comment> <translation><利用ã§ãるデãƒã‚¤ã‚¹ãŒã‚ã‚Šã¾ã›ã‚“></translation> </message> <message> - <location filename="../src/globals/VBoxGlobal.cpp" line="5042"/> + <location filename="../src/globals/VBoxGlobal.cpp" line="5062"/> <source>No supported devices connected to the host PC</source> <comment>USB device tooltip</comment> <translation>ホストPCã«æŽ¥ç¶šã•ã‚ŒãŸãƒ‡ãƒã‚¤ã‚¹ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“</translation> @@ -8642,124 +8174,121 @@ value.</qt></source> <context> <name>VBoxUpdateDlg</name> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="191"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="81"/> <source>1 day</source> <translation>1æ—¥</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="192"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="82"/> <source>2 days</source> <translation>2æ—¥</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="193"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="83"/> <source>3 days</source> <translation>3æ—¥</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="194"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="84"/> <source>4 days</source> <translation>4æ—¥</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="195"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="85"/> <source>5 days</source> <translation>5æ—¥</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="196"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="86"/> <source>6 days</source> <translation>6æ—¥</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="199"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="89"/> <source>1 week</source> <translation>1週間</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="200"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="90"/> <source>2 weeks</source> <translation>2週間</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="201"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="91"/> <source>3 weeks</source> <translation>3週間</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="204"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="94"/> <source>1 month</source> <translation>1月</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="253"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="143"/> <source>Never</source> <translation>確èªã—ãªã„</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="253"/> <source>Connection timed out.</source> <translation type="obsolete">接続ãŒã‚¿ã‚¤ãƒ アウトã«ãªã‚Šã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="253"/> <source>Could not locate the latest version list on the server (response: %1).</source> <translation type="obsolete">サーãƒãƒ¼ä¸Šã«æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ(å¿œç”: %1)。</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="410"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="300"/> <source>Chec&k</source> <translation>確èª(&K)</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="414"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="304"/> <source>&Close</source> <translation>é–‰ã˜ã‚‹(&C)</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="407"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="297"/> <source>VirtualBox Update Wizard</source> <translation>VirtualBox アップデート ウィザード</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="409"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="299"/> <source>Check for Updates</source> <translation>アップデートを確èª</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="409"/> <source><p>This wizard will connect to the VirtualBox web-site and check if a newer version of VirtualBox is available.</p> <p>Use the <b>Check</b> button to check for a new version now or the <b>Cancel</b> button if you do not want to perform this check.</p> <p>You can run this wizard at any time by choosing <b>Check for Updates...</b> from the <b>Help</b> menu.</p></source> <translation type="obsolete"><p>ã“ã®ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã¯ã€VirtualBox Webサイトã«æŽ¥ç¶šã—ã¦ã€VirtualBoxã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã‹ã©ã†ã‹ç¢ºèªã—ã¾ã™ã€‚</p><p><b>[確èª]</b>ボタンをクリックã—ã¦æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’今ã™ã確èªã—ã¦ãã ã•ã„。確èªã—ãªã„å ´åˆã¯<b>[ã‚ャンセル]</b>ボタンをクリックã—ã¦ãã ã•ã„。</p><p>ã“ã®ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã¯<b>[ヘルプ]</b>メニューã‹ã‚‰<b>[アップデートを確èª...]</b>ã‚’é¸ã¶ã“ã¨ã§ã€ã„ã¤ã§ã‚‚実行ã§ãã¾ã™ã€‚</p></translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="411"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="301"/> <source>Cancel</source> <translation>ã‚ャンセル</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="413"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="303"/> <source>Summary</source> <translation>概è¦</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="425"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="315"/> <source><p>A new version of VirtualBox has been released! Version <b>%1</b> is available at <a href="http://www.virtualbox.org/">virtualbox.org</a>.</p><p>You can download this version using the link:</p><p><a href=%2>%3</a></p></source> <translation><p>VirtualBoxã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒãƒªãƒªãƒ¼ã‚¹ã•ã‚Œã¾ã—ãŸï¼ãƒãƒ¼ã‚¸ãƒ§ãƒ³ <b>%1</b>ã¯<a href="http://www.virtualbox.org/">virtualbox.org</a>ã‹ã‚‰å…¥æ‰‹ã§ãã¾ã™ã€‚</p><p>ã“ã®ãƒªãƒ³ã‚¯ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã§ãã¾ã™ã€‚: </p><p><a href=%2>%3</a></p></translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="431"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="321"/> <source><p>Unable to obtain the new version information due to the following network error:</p><p><b>%1</b></p></source> <translation><p>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼ã®ãŸã‚ã€æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±ã‚’å–å¾—ã§ãã¾ã›ã‚“:</p><p><b>%1</b></p></translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="434"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="324"/> <source>You are already running the most recent version of VirtualBox.</source> <translation>最新ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®VirtualBoxãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã™ã€‚ 後ã§ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç¢ºèªã‚’è¡Œã£ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/VBoxUpdateDlg.cpp" line="416"/> + <location filename="../src/VBoxUpdateDlg.cpp" line="306"/> <source><p>This wizard will connect to the VirtualBox web-site and check if a newer version of VirtualBox is available.</p><p>Use the <b>Check</b> button to check for a new version now or the <b>Cancel</b> button if you do not want to perform this check.</p><p>You can run this wizard at any time by choosing <b>Check for Updates...</b> from the <b>Help</b> menu.</p></source> <translation><p>ã“ã®ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã¯ã€VirtualBox Webサイトã«æŽ¥ç¶šã—ã¦ã€VirtualBoxã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã‹ã©ã†ã‹ç¢ºèªã—ã¾ã™ã€‚</p><p><b>[確èª]</b>ボタンをクリックã—ã¦æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’今ã™ã確èªã—ã¦ãã ã•ã„。確èªã—ãªã„å ´åˆã¯<b>[ã‚ャンセル]</b>ボタンをクリックã—ã¦ãã ã•ã„。</p><p>ã“ã®ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã¯<b>[ヘルプ]</b>メニューã‹ã‚‰<b>[アップデートを確èª...]</b>ã‚’é¸ã¶ã“ã¨ã§ã€ã„ã¤ã§ã‚‚実行ã§ãã¾ã™ã€‚</p></translation> </message> @@ -8782,7 +8311,6 @@ value.</qt></source> <translation>編集(Ctrl+E)</translation> </message> <message> - <location filename="../src/VBoxSelectorWnd.cpp" line="331"/> <source>Ctrl+E</source> <translation type="obsolete">Ctrl+E</translation> </message> @@ -8843,17 +8371,14 @@ value.</qt></source> <translation>メディア ソース</translation> </message> <message> - <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="439"/> <source>&Host Drive</source> <translation type="obsolete">ホスト デãƒã‚¤ã‚¹(&H)</translation> </message> <message> - <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="439"/> <source>&Image File</source> <translation type="obsolete">イメージファイル(&I)</translation> </message> <message> - <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="439"/> <source>VDM</source> <translation type="obsolete">VDM</translation> </message> @@ -8888,12 +8413,10 @@ value.</qt></source> <translation>フãƒãƒƒãƒ”ー デãƒã‚¤ã‚¹</translation> </message> <message> - <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.cpp" line="86"/> <source>Host Drive %1</source> <translation type="obsolete">ホスト ドライブ %1</translation> </message> <message> - <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.cpp" line="86"/> <source><table><tr><td>Type:</td><td>%1</td></tr><tr><td>Source:</td><td>%2</td></tr></table></source> <translation type="obsolete"><table><tr><td>タイプ:</td><td>%1</td></tr><tr><td>ソース:</td><td>%2</td></tr></table> </translation> @@ -8924,17 +8447,19 @@ value.</qt></source> <translation><p>上記ãŒæ£ã—ã„ãªã‚‰ã€<b>[完了]</b>ボタンをクリックã—ã¦ãã ã•ã„。 é¸æŠžã•ã‚ŒãŸãƒ¡ãƒ‡ã‚£ã‚¢ã¯ä»®æƒ³ãƒžã‚·ãƒ³ã«å–り付ã‘られã€ä»®æƒ³ãƒžã‚·ãƒ³ã¯å®Ÿè¡Œã‚’開始ã—ã¾ã™ã€‚</p></translation> </message> <message> + <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="198"/> + <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="500"/> <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="758"/> <source>< &Back</source> <translation>< 戻る(&B)</translation> </message> <message> + <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="205"/> <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="507"/> <source>&Next ></source> <translation>次ã¸(&N) ></translation> </message> <message> - <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="507"/> <source><html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Arial'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -8961,6 +8486,8 @@ p, li { white-space: pre-wrap; } <translation>ソース</translation> </message> <message> + <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="228"/> + <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="530"/> <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="788"/> <source>Cancel</source> <translation>ã‚ャンセル</translation> @@ -8969,12 +8496,10 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxVMInformationDlg</name> <message> - <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="788"/> <source>Session Information Dialog</source> <translation type="obsolete">ã‚»ãƒƒã‚·ãƒ§ãƒ³æƒ…å ±ãƒ€ã‚¤ã‚¢ãƒã‚°</translation> </message> <message> - <location filename="../src/wizards/firstrun/VBoxVMFirstRunWzd.ui" line="788"/> <source>&Close</source> <translation type="obsolete">é–‰ã˜ã‚‹(&C)</translation> </message> @@ -8984,16 +8509,19 @@ p, li { white-space: pre-wrap; } <translation>%1 - ã‚»ãƒƒã‚·ãƒ§ãƒ³æƒ…å ±</translation> </message> <message> + <location filename="../src/VBoxVMInformationDlg.ui" line="41"/> <location filename="../src/VBoxVMInformationDlg.cpp" line="154"/> <source>&Details</source> <translation>詳細(&D)</translation> </message> <message> + <location filename="../src/VBoxVMInformationDlg.ui" line="76"/> <location filename="../src/VBoxVMInformationDlg.cpp" line="155"/> <source>&Runtime</source> <translation>ランタイム(&R)</translation> </message> <message> + <location filename="../src/VBoxVMInformationDlg.cpp" line="178"/> <location filename="../src/VBoxVMInformationDlg.cpp" line="215"/> <source>DMA Transfers</source> <translation>DMA 転é€</translation> @@ -9004,11 +8532,15 @@ p, li { white-space: pre-wrap; } <translation>PIO 転é€</translation> </message> <message> + <location filename="../src/VBoxVMInformationDlg.cpp" line="182"/> + <location filename="../src/VBoxVMInformationDlg.cpp" line="217"/> <location filename="../src/VBoxVMInformationDlg.cpp" line="244"/> <source>Data Read</source> <translation>データèªã¿è¾¼ã¿</translation> </message> <message> + <location filename="../src/VBoxVMInformationDlg.cpp" line="184"/> + <location filename="../src/VBoxVMInformationDlg.cpp" line="219"/> <location filename="../src/VBoxVMInformationDlg.cpp" line="246"/> <source>Data Written</source> <translation>データ書ãè¾¼ã¿</translation> @@ -9034,12 +8566,10 @@ p, li { white-space: pre-wrap; } <translation>ç”»é¢è§£åƒåº¦</translation> </message> <message> - <location filename="../src/VBoxVMInformationDlg.cpp" line="482"/> <source>CD/DVD-ROM Statistics</source> <translation type="obsolete">CD/DVD-ROM 統計</translation> </message> <message> - <location filename="../src/VBoxVMInformationDlg.cpp" line="482"/> <source>Network Adapter Statistics</source> <translation type="obsolete">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタ統計</translation> </message> @@ -9072,12 +8602,10 @@ p, li { white-space: pre-wrap; } <translation>ゲストOSã®ã‚¿ã‚¤ãƒ—</translation> </message> <message> - <location filename="../src/VBoxVMInformationDlg.cpp" line="486"/> <source>Hard Disk Statistics</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯çµ±è¨ˆ</translation> </message> <message> - <location filename="../src/VBoxVMInformationDlg.cpp" line="486"/> <source>No Hard Disks</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãªã—</translation> </message> @@ -9087,29 +8615,27 @@ p, li { white-space: pre-wrap; } <translation>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタãªã—</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3162"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3196"/> <source>Enabled</source> <comment>nested paging</comment> <translation>有効</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3163"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3197"/> <source>Disabled</source> <comment>nested paging</comment> <translation>無効</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3171"/> + <location filename="../src/VBoxConsoleWnd.cpp" line="3205"/> <source>Nested Paging</source> <translation>ãƒã‚¹ãƒ†ãƒƒãƒ‰ãƒšãƒ¼ã‚¸ãƒ³ã‚°</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3171"/> <source>Enabled</source> <translation type="obsolete">有効</translation> </message> <message> - <location filename="../src/VBoxConsoleWnd.cpp" line="3171"/> <source>Disabled</source> <translation type="obsolete">無効</translation> </message> @@ -9143,19 +8669,16 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxVMListBox</name> <message> - <location filename="../src/VBoxVMInformationDlg.cpp" line="577"/> <source><nobr>%1<br></nobr><nobr>%2 since %3</nobr><br><nobr>Session %4</nobr></source> <comment>VM tooltip (name, last state change, session state)</comment> <translation type="obsolete"><nobr>%1<br></nobr><nobr>%3ã‹ã‚‰ã®çŠ¶æ…‹ %2</nobr><br><nobr>セッション %4</nobr></translation> </message> <message> - <location filename="../src/VBoxVMInformationDlg.cpp" line="577"/> <source><nobr><b>%1</b><br></nobr><nobr>Inaccessible since %2</nobr></source> <comment>Inaccessible VM tooltip (name, last state change)</comment> <translation type="obsolete"><nobr><b>%1</b><br></nobr><nobr>%2ã‹ã‚‰ã®çŠ¶æ…‹ アクセスã§ãã¾ã›ã‚“</nobr></translation> </message> <message> - <location filename="../src/VBoxVMInformationDlg.cpp" line="577"/> <source>Inaccessible</source> <translation type="obsolete">アクセスã§ãã¾ã›ã‚“</translation> </message> @@ -9190,11 +8713,13 @@ p, li { white-space: pre-wrap; } <translation>é¸æŠžã—ãŸä»®æƒ³ãƒžã‚·ãƒ³ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã«åˆ‡ã‚Šæ›¿ãˆ</translation> </message> <message> + <location filename="../src/VBoxSelectorWnd.cpp" line="1907"/> <location filename="../src/VBoxSelectorWnd.cpp" line="1975"/> <source>S&tart</source> <translation>èµ·å‹•(&T)</translation> </message> <message> + <location filename="../src/VBoxSelectorWnd.cpp" line="1909"/> <location filename="../src/VBoxSelectorWnd.cpp" line="1977"/> <source>Start the selected virtual machine</source> <translation>é¸æŠžã—ãŸä»®æƒ³ãƒžã‚·ãƒ³ã‚’èµ·å‹•</translation> @@ -9253,12 +8778,10 @@ p, li { white-space: pre-wrap; } <translation>åå‰ã‚’ã¤ã‘ã¦VirtualBox ãƒã‚°ã‚’ä¿å˜</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="227"/> <source>Help</source> <translation type="obsolete">ヘルプ</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="227"/> <source>F1</source> <translation type="obsolete">F1</translation> </message> @@ -9276,147 +8799,118 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxVMNetworkSettings</name> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>VBoxVMNetworkSettings</source> <translation type="obsolete">VBoxVMNetworkSettings</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&Enable Network Adapter</source> <translation type="obsolete">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタを有効化(&E)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&Attached to</source> <translation type="obsolete">割り当ã¦(&A)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&MAC Address</source> <translation type="obsolete">MACアドレス(&M)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&Generate</source> <translation type="obsolete">生æˆ(&G)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Generates a new random MAC address.</source> <translation type="obsolete">MACアドレスをランダムã«ç”Ÿæˆã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Ca&ble Connected</source> <translation type="obsolete">接続(&B)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Host Interface Settings</source> <translation type="obsolete">ホスト インターフェースã®è¨å®š</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&Interface Name</source> <translation type="obsolete">インターフェースå(&I)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&File Descriptor</source> <translation type="obsolete">ファイルè˜åˆ¥å(&F)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&Setup Application</source> <translation type="obsolete">è¨å®šã‚¢ãƒ—リケーション(&S)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Select</source> <translation type="obsolete">é¸æŠž</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&Terminate Application</source> <translation type="obsolete">終了アプリケーション(&T)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Select TAP setup application</source> <translation type="obsolete">TAPè¨å®šã‚¢ãƒ—リケーションをé¸æŠž</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Select TAP terminate application</source> <translation type="obsolete">TAP終了アプリケーションをé¸æŠž</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>When checked, plugs this virtual network adapter into the virtual machine.</source> <translation type="obsolete">仮想ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタを仮想マシンã«æŽ¥ç¶šã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Controls how this virtual adapter is attached to the real network of the Host OS.</source> <translation type="obsolete">仮想アダプタをホストOSã®å®Ÿéš›ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«å‰²ã‚Šå½“ã¦ã‚‹æ–¹å¼ã‚’指定ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Indicates whether the virtual network cable is plugged in on machine startup or not.</source> <translation type="obsolete">仮想マシンã®èµ·å‹•æ™‚ã«ä»®æƒ³ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚±ãƒ¼ãƒ–ルãŒæŽ¥ç¶šã•ã‚Œã‚‹ã‹ã©ã†ã‹ã‚’示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Displays the name of the host interface selected for this adapter.</source> <translation type="obsolete">ã“ã®ã‚¢ãƒ€ãƒ—タ用ã«é¸æŠžã—ãŸãƒ›ã‚¹ãƒˆ インターフェースåを表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Displays the TAP interface name.</source> <translation type="obsolete">TAPインターフェースåを表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Displays the command executed to set up the TAP interface.</source> <translation type="obsolete">TAPインターフェースè¨å®šæ™‚ã«å®Ÿè¡Œã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã‚’表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Selects the setup application.</source> <translation type="obsolete">è¨å®šã‚¢ãƒ—リケーションをé¸æŠžã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Displays the command executed to terminate the TAP interface.</source> <translation type="obsolete">TAPインターフェース終了時ã«å®Ÿè¡Œã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã‚’表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Selects the terminate application.</source> <translation type="obsolete">終了アプリケーションをé¸æŠžã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <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アドレスを表示ã—ã¾ã™ã€‚MACアドレスã¯{0-9,A-F}ã‹ã‚‰é¸æŠžã•ã‚ŒãŸ12æ–‡å—ã§æ§‹æˆã•ã‚Œã¾ã™ã€‚注:2番目ã®æ–‡å—ã¯å¶æ•°ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&Network Name</source> <translation type="obsolete">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯å(&N)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Adapter &Type</source> <translation type="obsolete">アダプタ タイプ(&T)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <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> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Displays the name of the internal network selected for this adapter.</source> <translation type="obsolete">ã“ã®ã‚¢ãƒ€ãƒ—タ用ã«é¸æŠžã—ãŸå†…部ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯åを表示ã—ã¾ã™ã€‚</translation> </message> @@ -9424,57 +8918,46 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxVMParallelPortSettings</name> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>VBoxVMParallelPortSettings</source> <translation type="obsolete">VBoxVMParallelPortSettings</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&Enable Parallel Port</source> <translation type="obsolete">パラレルãƒãƒ¼ãƒˆã‚’有効化(&E)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>When checked, enables the given parallel port of the virtual machine.</source> <translation type="obsolete">仮想マシンã®ãƒ‘ラレルãƒãƒ¼ãƒˆã‚’有効ã«ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Port &Number</source> <translation type="obsolete">ãƒãƒ¼ãƒˆç•ªå·(&N)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Displays the parallel port number. You can choose one of the standard parallel ports or select <b>User-defined</b> and specify port parameters manually.</source> <translation type="obsolete">パラレルãƒãƒ¼ãƒˆç•ªå·ã‚’表示ã—ã¾ã™ã€‚ 標準ã®ãƒ‘ラレルãƒãƒ¼ãƒˆã‹<b>[ユーザー定義]</b>ã‚’é¸æŠžã—ã€æ‰‹å‹•ã§ãƒãƒ¼ãƒˆãƒ‘ラメタを指定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&IRQ</source> <translation type="obsolete">IRQ(&I)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Displays the IRQ number of this parallel port. Valid values are integer numbers in range from <tt>0</tt> to <tt>255</tt>. Values greater than <tt>15</tt> may only be used if the <b>IO APIC</b> is enabled for this virtual machine.</source> <translation type="obsolete">ã“ã®ãƒ‘ラレルãƒãƒ¼ãƒˆã®IRQ番å·ã‚’表示ã—ã¾ã™ã€‚有効値ã¯<tt>0</tt>ã‹ã‚‰<tt>255</tt>ã¾ã§ã®ç¯„囲ã®æ•´æ•°ã§ã™ã€‚<tt>15</tt>以上ã®å€¤ã¯ã“ã®ä»®æƒ³ãƒžã‚·ãƒ³ã§<b>IO APIC</b>ãŒæœ‰åŠ¹ãªã¨ã使用ã•ã‚Œã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>I/O Po&rt</source> <translation type="obsolete">I/Oãƒãƒ¼ãƒˆ(&R)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Displays the base I/O port address of this parallel port. This should be a whole number between <tt>0</tt> and <tt>0xFFFF</tt>.</source> <translation type="obsolete">ã“ã®ãƒ‘ラレルãƒãƒ¼ãƒˆã®ãƒ™ãƒ¼ã‚¹I/Oãƒãƒ¼ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’表示ã—ã¾ã™ã€‚ 有効値ã¯<tt>0</tt>ã‹ã‚‰<tt>0xFFFF</tt>ã®ç¯„囲ã®æ•´æ•°ã§ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Port &Path</source> <translation type="obsolete">ãƒãƒ¼ãƒˆ パス(&P)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Displays the host parallel device name.</source> <translation type="obsolete">ホストã®ãƒ‘ラレル デãƒã‚¤ã‚¹åを表示ã—ã¾ã™ã€‚</translation> </message> @@ -9482,77 +8965,62 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxVMSerialPortSettings</name> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>VBoxVMSerialPortSettings</source> <translation type="obsolete">VBoxVMSerialPortSettings</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&Enable Serial Port</source> <translation type="obsolete">シリアルãƒãƒ¼ãƒˆã‚’有効化(&E)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>When checked, enables the given serial port of the virtual machine.</source> <translation type="obsolete">仮想マシンã®ã‚·ãƒªã‚¢ãƒ«ãƒãƒ¼ãƒˆã‚’有効ã«ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Port &Number</source> <translation type="obsolete">ãƒãƒ¼ãƒˆç•ªå·(&N)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Displays the serial port number. You can choose one of the standard serial ports or select <b>User-defined</b> and specify port parameters manually.</source> <translation type="obsolete">シリアルãƒãƒ¼ãƒˆç•ªå·ã‚’表示ã—ã¾ã™ã€‚ 標準ã®ã‚·ãƒªã‚¢ãƒ«ãƒãƒ¼ãƒˆã‹<b>[ユーザー定義]</b>ã‚’é¸æŠžã—ã€æ‰‹å‹•ã§ãƒãƒ¼ãƒˆãƒ‘ラメタを指定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&IRQ</source> <translation type="obsolete">IRQ(&I)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Displays the IRQ number of this serial port. Valid values are integer numbers in range from <tt>0</tt> to <tt>255</tt>. Values greater than <tt>15</tt> may only be used if the <b>IO APIC</b> is enabled for this virtual machine.</source> <translation type="obsolete">ã“ã®ã‚·ãƒªã‚¢ãƒ«ãƒãƒ¼ãƒˆã®IRQ番å·ã‚’表示ã—ã¾ã™ã€‚有効値ã¯<tt>0</tt>ã‹ã‚‰<tt>255</tt>ã¾ã§ã®ç¯„囲ã®æ•´æ•°ã§ã™ã€‚<tt>15</tt>以上ã®å€¤ã¯ã“ã®ä»®æƒ³ãƒžã‚·ãƒ³ã§<b>IO APIC</b>ãŒæœ‰åŠ¹ãªã¨ã使用ã•ã‚Œã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>I/O Po&rt</source> <translation type="obsolete">I/Oãƒãƒ¼ãƒˆ(&R)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Displays the base I/O port address of this serial port. This should be a whole number between <tt>0</tt> and <tt>0xFFFF</tt>.</source> <translation type="obsolete">ã“ã®ã‚·ãƒªã‚¢ãƒ«ãƒãƒ¼ãƒˆã®ãƒ™ãƒ¼ã‚¹I/Oãƒãƒ¼ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’表示ã—ã¾ã™ã€‚ 有効値ã¯<tt>0</tt>ã‹ã‚‰<tt>0xFFFF</tt>ã®ç¯„囲ã®æ•´æ•°ã§ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Port &Mode</source> <translation type="obsolete">ãƒãƒ¼ãƒˆ モード(&M)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Controls the working mode of this serial port. If you select <b>Disconnected</b>, the guest OS will detect the serial port but will not be able to operate it.</source> <translation type="obsolete">ã“ã®ã‚·ãƒªã‚¢ãƒ«ãƒãƒ¼ãƒˆã®å‹•ä½œãƒ¢ãƒ¼ãƒ‰ã‚’指定ã—ã¾ã™ã€‚ <b>[切æ–]</b>ã‚’é¸æŠžã™ã‚‹ã¨ã€ã‚²ã‚¹ãƒˆOSã¯ã‚·ãƒªã‚¢ãƒ«ãƒãƒ¼ãƒˆã‚’検出ã—ã¾ã™ãŒã€ãれをæ“作ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>&Create Pipe</source> <translation type="obsolete">パイプ作æˆ(&C)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>If checked, the pipe specified in the <b>Port Path</b> 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">オンã®å ´åˆã€ä»®æƒ³ãƒžã‚·ãƒ³ã®èµ·å‹•æ™‚ã« <b>[ãƒãƒ¼ãƒˆ パス]</b>フィールドã§æŒ‡å®šã•ã‚ŒãŸãƒ‘イプãŒä½œæˆã•ã‚Œã¾ã™ã€‚ãã†ã§ãªã‘ã‚Œã°ä»®æƒ³ãƒžã‚·ãƒ³ã¯æ—¢å˜ã®ãƒ‘イプを使用ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Port &Path</source> <translation type="obsolete">ãƒãƒ¼ãƒˆ パス(&P)</translation> </message> <message> - <location filename="../src/VBoxVMLogViewer.cpp" line="268"/> <source>Displays the path to the serial port's pipe on the host when the port is working in <b>Host Pipe</b> mode, or the host serial device name when the port is working in <b>Host Device</b> mode.</source> <translation type="obsolete">ãƒãƒ¼ãƒˆãŒ<b>[ホスト パイプ]</b>モードã§å‹•ä½œã—ã¦ã„ã‚‹ã¨ãã€ã‚·ãƒªã‚¢ãƒ«ãƒãƒ¼ãƒˆã®ãƒ‘イプã®ãƒ‘スを表示ã—ã¾ã™ã€‚ãƒãƒ¼ãƒˆãŒ<b>[ホスト デãƒã‚¤ã‚¹]</b>モードã§å‹•ä½œã—ã¦ã„ã‚‹ã¨ãã€ãƒ›ã‚¹ãƒˆ シリアル デãƒã‚¤ã‚¹åを表示ã—ã¾ã™ã€‚</translation> </message> @@ -9593,72 +9061,58 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxVMSettingsCD</name> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <source>Host CD/DVD drive is not selected</source> <translation type="obsolete">ホスト CD/DVDドライブãŒé¸æŠžã•ã‚Œã¦ã„ãªã„</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <source>CD/DVD image file is not selected</source> <translation type="obsolete">CD/DVDイメージファイルãŒé¸æŠžã•ã‚Œã¦ã„ãªã„</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <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">指定ã—ãŸãƒ¡ãƒ‡ã‚£ã‚¢ã‚’仮想マシンã®CD/DVDドライブã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚注:CD/DVDドライブã¯å¸¸ã«ä»®æƒ³ãƒžã‚·ãƒ³ã®ã‚»ã‚«ãƒ³ãƒ€ãƒªIDE コントãƒãƒ¼ãƒ©ã®ãƒžã‚¹ã‚¿ãƒ¼ã‚¹ãƒãƒƒãƒˆã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <source>&Mount CD/DVD Drive</source> <translation type="obsolete">CD/DVD ドライブã®ãƒžã‚¦ãƒ³ãƒˆ(&M)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <source>Mounts the specified CD/DVD drive to the virtual CD/DVD drive.</source> <translation type="obsolete">指定ã—ãŸCD/DVDドライブを仮想CD/DVDドライブã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <source>Host CD/DVD &Drive</source> <translation type="obsolete">ホスト CD/DVDドライブ(&D)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <source>Lists host CD/DVD drives available to mount to the virtual machine.</source> <translation type="obsolete">仮想マシンã«ãƒžã‚¦ãƒ³ãƒˆã™ã‚‹ãŸã‚ã«åˆ©ç”¨å¯èƒ½ãªãƒ›ã‚¹ãƒˆã®CD/DVDドライブをリスト表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <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/DVDライターを使用å¯èƒ½ã«ã™ã‚‹ãŸã‚ã€ã‚²ã‚¹ãƒˆOSã®ATAPIコマンドを直接ホスト ドライブã«é€ã‚Šã¾ã™ã€‚注:仮想マシンã‹ã‚‰éŸ³æ¥½CDã¸ã®æ›¸ãè¾¼ã¿ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <source>Enable &Passthrough</source> <translation type="obsolete">パススルーを有効化(&P)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <source>Mounts the specified CD/DVD image to the virtual CD/DVD drive.</source> <translation type="obsolete">指定ã—ãŸCD/DVDイメージを仮想CD/DVDドライブã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <source>&ISO Image File</source> <translation type="obsolete">ISO イメージファイル(&I)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <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">仮想CD/DVDドライブã«ãƒžã‚¦ãƒ³ãƒˆã•ã‚ŒãŸã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ•ã‚¡ã‚¤ãƒ«ã‚’表示ã—ã¾ã™ã€‚ã¾ãŸã€ä»–ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’ç´ æ—©ãé¸æŠžã§ãã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <source>Invokes the Virtual Disk Manager to select a CD/DVD image to mount.</source> <translation type="obsolete">仮想ディスクマãƒãƒ¼ã‚¸ãƒ£ã‚’èµ·å‹•ã—ã€é¸æŠžã—ãŸCD/DVDイメージをマウントã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsAudio.ui" line="110"/> <source>Invokes the Virtual Media Manager to select a CD/DVD image to mount.</source> <translation type="obsolete">仮想メディアマãƒãƒ¼ã‚¸ãƒ£ã‚’èµ·å‹•ã—ã€é¸æŠžã—ãŸCD/DVDイメージをマウントã—ã¾ã™ã€‚</translation> </message> @@ -9671,6 +9125,7 @@ p, li { white-space: pre-wrap; } <translation>仮想マシンをフルスクリーンã¾ãŸã¯ã‚·ãƒ¼ãƒ レスモードã«åˆ‡ã‚Šæ›ãˆã‚‹ãŸã‚ã«å¿…è¦ãªå€¤(%1)より少ãªã„ビデオメモリãŒä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚</translation> </message> <message> + <location filename="../src/settings/vm/VBoxVMSettingsDisplay.cpp" line="242"/> <location filename="../src/settings/vm/VBoxVMSettingsDisplay.cpp" line="243"/> <source><qt>%1&nbsp;MB</qt></source> <translation><qt>%1&nbsp;MB</qt></translation> @@ -9686,6 +9141,7 @@ p, li { white-space: pre-wrap; } <translation>ビデオメモリ(&M):</translation> </message> <message> + <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="74"/> <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="134"/> <source>Controls the amount of video memory provided to the virtual machine.</source> <translation>仮想マシンã«å‰²ã‚Šå½“ã¦ã‚‹ãƒ“デオメモリã®ã‚µã‚¤ã‚ºã‚’指定ã—ã¾ã™ã€‚</translation> @@ -9731,7 +9187,6 @@ p, li { white-space: pre-wrap; } <translation>サーãƒãƒ¼ã®ãƒãƒ¼ãƒˆç•ªå·(&P):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="277"/> <source>Displays the VRDP Server port number. You may specify <tt>0</tt> (zero) to reset the port to the default value.</source> <translation type="obsolete">VRDPサーãƒãƒ¼ã®ãƒãƒ¼ãƒˆç•ªå·ã‚’表示ã—ã¾ã™ã€‚ãƒãƒ¼ãƒˆã‚’デフォルト値ã«ãƒªã‚»ãƒƒãƒˆã™ã‚‹ã«ã¯<tt>0</tt>(ゼãƒ)を指定ã—ã¾ã™ã€‚</translation> </message> @@ -9779,701 +9234,563 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxVMSettingsDlg</name> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Category</source> <translation type="obsolete">カテゴリ</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>[id]</source> <translation type="obsolete">[id]</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>[link]</source> <translation type="obsolete">[link]</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>[name]</source> <translation type="obsolete">[name]</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>VBoxVMSettingsDlg</source> <translation type="obsolete">VBoxVMSettingsDlg</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source><i>Select a settings category from the list on the left-hand side and move the mouse over a settings item to get more information<i>.</source> <translation type="obsolete"><i>å·¦å´ã®ãƒªã‚¹ãƒˆã‹ã‚‰è¨å®šã®ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã—ã€è¨å®šé …目をマウスオーãƒãƒ¼ã—ã¦è©³ç´°ãªæƒ…å ±ã‚’å‚ç…§ã—ã¦ãã ã•ã„<i>。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> General </source> <translation type="obsolete">一般</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> Hard Disks </source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> Floppy </source> <translation type="obsolete">フãƒãƒƒãƒ”ー</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> CD/DVD-ROM </source> <translation type="obsolete">CD/DVD-ROM</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> Audio </source> <translation type="obsolete">オーディオ</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> Network </source> <translation type="obsolete">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> USB </source> <translation type="obsolete"> USB </translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> Remote Display </source> <translation type="obsolete">リモートディスプレイ</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> Shared Folders </source> <translation type="obsolete">共有フォルダ</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Identification</source> <translation type="obsolete">ID(&I)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Name</source> <translation type="obsolete">åå‰(&N)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Displays the name of the virtual machine.</source> <translation type="obsolete">仮想マシンã®åå‰ã‚’表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>OS &Type</source> <translation type="obsolete">OSタイプ(&T)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Base &Memory Size</source> <translation type="obsolete">メインメモリã®ã‚µã‚¤ã‚º(&M)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source><</source> <translation type="obsolete"><</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>=</source> <translation type="obsolete">=</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>></source> <translation type="obsolete">></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>MB</source> <translation type="obsolete">MB</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Video Memory Size</source> <translation type="obsolete">ビデオメモリã®ã‚µã‚¤ã‚º(&V)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Controls the amount of video memory provided to the virtual machine.</source> <translation type="obsolete">仮想マシンã«å‰²ã‚Šå½“ã¦ã‚‹ãƒ“デオメモリã®ã‚µã‚¤ã‚ºã‚’指定ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Basic</source> <translation type="obsolete">基本(&B)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Select</source> <translation type="obsolete">é¸æŠž</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Selects the snapshot folder path.</source> <translation type="obsolete">スナップショットã®ä¿å˜å…ˆãƒ•ã‚©ãƒ«ãƒ€ã®ãƒ‘スをé¸æŠžã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Reset</source> <translation type="obsolete">リセット</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Extended Features</source> <translation type="obsolete">拡張機能</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Enable A&CPI</source> <translation type="obsolete">ACPIを有効化(&C)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Enable IO A&PIC</source> <translation type="obsolete">IO APICを有効化(&P)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Boo&t Order</source> <translation type="obsolete">èµ·å‹•é †åº(&T)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Advanced</source> <translation type="obsolete">高度(&A)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Description</source> <translation type="obsolete">コメント(&D)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Mount Floppy Drive</source> <translation type="obsolete">フãƒãƒƒãƒ”ードライブã®ãƒžã‚¦ãƒ³ãƒˆ(&M)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Host Floppy &Drive</source> <translation type="obsolete">ホスト フãƒãƒƒãƒ”ードライブ(&D)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Mounts the specified host Floppy drive to the virtual Floppy drive.</source> <translation type="obsolete">指定ã—ãŸãƒ›ã‚¹ãƒˆ フãƒãƒƒãƒ”ードライブを仮想フãƒãƒƒãƒ”ードライブã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Image File</source> <translation type="obsolete">イメージファイル(&I)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Mounts the specified Floppy image to the virtual Floppy drive.</source> <translation type="obsolete">指定ã—ãŸãƒ•ãƒãƒƒãƒ”ーイメージを仮想フãƒãƒƒãƒ”ードライブã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Mount CD/DVD Drive</source> <translation type="obsolete">CD/DVD ドライブã®ãƒžã‚¦ãƒ³ãƒˆ(&M)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Host CD/DVD &Drive</source> <translation type="obsolete">ホスト CD/DVDドライブ(&D)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Mounts the specified CD/DVD drive to the virtual CD/DVD drive.</source> <translation type="obsolete">指定ã—ãŸCD/DVDドライブを仮想CD/DVDドライブã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&ISO Image File</source> <translation type="obsolete">ISO イメージファイル(&I)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Mounts the specified CD/DVD image to the virtual CD/DVD drive.</source> <translation type="obsolete">指定ã—ãŸCD/DVDイメージを仮想CD/DVDドライブã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Enable Audio</source> <translation type="obsolete">オーディオを有効化(&E)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Host Audio &Driver</source> <translation type="obsolete">ホスト オーディオ ドライãƒ(&D)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Enable &USB Controller</source> <translation type="obsolete">USB コントãƒãƒ¼ãƒ©ã‚’有効化(&U)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>USB Device &Filters</source> <translation type="obsolete">USB デãƒã‚¤ã‚¹ フィルタ(&F)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Ins</source> <translation type="obsolete">Ins</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Alt+Ins</source> <translation type="obsolete">Alt+Ins</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Del</source> <translation type="obsolete">Del</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Ctrl+Up</source> <translation type="obsolete">Ctrl+Up</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Ctrl+Down</source> <translation type="obsolete">Ctrl+Down</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Enable VRDP Server</source> <translation type="obsolete">VRDPサーãƒã‚’有効化(&E)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Defines the VRDP authentication method.</source> <translation type="obsolete">VRDPã®èªè¨¼æ–¹å¼ã‚’指定ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Specifies the timeout for guest authentication, in milliseconds.</source> <translation type="obsolete">ゲストèªè¨¼ã®ã‚¿ã‚¤ãƒ アウト値をミリ秒å˜ä½ã§æŒ‡å®šã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Help</source> <translation type="obsolete">ヘルプ</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>F1</source> <translation type="obsolete">F1</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Displays the dialog help.</source> <translation type="obsolete">ダイアãƒã‚°ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Invalid settings detected</source> <translation type="obsolete">無効ãªè¨å®šãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&OK</source> <translation type="obsolete">OK(&O)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Accepts (saves) changes and closes the dialog.</source> <translation type="obsolete">変更をä¿å˜ã—ã¦ãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’é–‰ã˜ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Cancel</source> <translation type="obsolete">ã‚ャンセル</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Cancels changes and closes the dialog.</source> <translation type="obsolete">å¤‰æ›´ã‚’ç ´æ£„ã—ã¦ãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’é–‰ã˜ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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">指定ã—ãŸãƒ¡ãƒ‡ã‚£ã‚¢ã‚’仮想マシンã®CD/DVDドライブã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚注:CD/DVDドライブã¯å¸¸ã«ä»®æƒ³ãƒžã‚·ãƒ³ã®ã‚»ã‚«ãƒ³ãƒ€ãƒªIDE コントãƒãƒ¼ãƒ©ã®ãƒžã‚¹ã‚¿ãƒ¼ã‚¹ãƒãƒƒãƒˆã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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">仮想CD/DVDドライブã«ãƒžã‚¦ãƒ³ãƒˆã•ã‚ŒãŸã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ•ã‚¡ã‚¤ãƒ«ã‚’表示ã—ã¾ã™ã€‚ã¾ãŸã€ä»–ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’ç´ æ—©ãé¸æŠžã§ãã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>When checked, mounts the specified media to the Floppy drive of the virtual machine.</source> <translation type="obsolete">指定ã—ãŸãƒ¡ãƒ‡ã‚£ã‚¢ã‚’仮想マシンã®ãƒ•ãƒãƒƒãƒ”ードライブã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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">指定ã•ã‚ŒãŸãƒ‰ãƒ©ã‚¤ãƒã‚’使用ã—ã¦ãƒ›ã‚¹ãƒˆã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚«ãƒ¼ãƒ‰ã¨é€šä¿¡ã™ã‚‹ä»®æƒ³PCIオーディオカードを仮想マシンã«æŽ¥ç¶šã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source><qt>%1&nbsp;MB</qt></source> <translation type="obsolete"><qt>%1&nbsp;MB</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source><not attached></source> <comment>hard disk</comment> <translation type="obsolete"><割り当ã¦ã‚‰ã‚Œã¦ã„ã¾ã›ã‚“></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> - Settings</source> <translation type="obsolete">- è¨å®š</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>New Filter %1</source> <comment>usb</comment> <translation type="obsolete">æ–°è¦ãƒ•ã‚£ãƒ«ã‚¿ %1</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Shared Clipboard</source> <translation type="obsolete">クリップボードã®å…±æœ‰(&S)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>S&napshot Folder</source> <translation type="obsolete">スナップショットã®ä¿å˜å…ˆ(&N)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Displays the operating system type that you plan to install into this virtual machine (called a guest operating system).</source> <translation type="obsolete">仮想マシンã§å®Ÿè¡Œã™ã‚‹OS(ゲストOSã¨å‘¼ã³ã¾ã™)ã®ã‚¿ã‚¤ãƒ—を表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source><qt>When checked, the virtual machine will support the Advanced Configuration and Power Management Interface (ACPI). <b>Note:</b> don't disable this feature after having installed a Windows guest operating system!</qt></source> <translation type="obsolete"><qt>仮想マシンã§ACPI(Advanced Configuration and Power Management Interface)サãƒãƒ¼ãƒˆã‚’有効ã«ã—ã¾ã™ã€‚<b>注:</b> Windows ゲストOSをインストールã—ãŸå¾Œã§æœ¬æ©Ÿèƒ½ã‚’無効ã«ã—ãªã„ã§ãã ã•ã„ï¼</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source><qt>When checked, the virtual machine will support the Input Output APIC (IO APIC), which may slightly decrease performance. <b>Note:</b> don't disable this feature after having installed a Windows guest operating system!</qt></source> <translation type="obsolete"><qt>仮想マシンã§IO APIC(Input Output APIC)サãƒãƒ¼ãƒˆã‚’有効ã«ã—ã¾ã™ã€‚ã“ã‚Œã¯ä»®æƒ³ãƒžã‚·ãƒ³ã®æ€§èƒ½ã‚’ã‚ãšã‹ã«ä½Žä¸‹ã•ã›ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。<b>注:</b>Windows ゲストOSをインストールã—ãŸå¾Œã§æœ¬æ©Ÿèƒ½ã‚’無効ã«ã—ãªã„ã§ãã ã•ã„ï¼</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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">ゲストOSã¨ãƒ›ã‚¹ãƒˆOSã®é–“ã§ã‚¯ãƒªãƒƒãƒ—ボードを共有ã™ã‚‹ãƒ¢ãƒ¼ãƒ‰ã‚’定義ã—ã¾ã™ã€‚注:本機能ã®åˆ©ç”¨ã«ã¯ã‚²ã‚¹ãƒˆOSã« Guest Additions ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå¿…è¦ã§ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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">仮想マシンã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’表示ã—ã¾ã™ã€‚コメントã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸã‚²ã‚¹ãƒˆOSã®è©³ç´°ãªæ§‹æˆã«é–¢ã™ã‚‹æ³¨é‡ˆã¨ã—ã¦å½¹ç«‹ã¡ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Lists host Floppy drives available to mount to the virtual machine.</source> <translation type="obsolete">仮想マシンã«ãƒžã‚¦ãƒ³ãƒˆã™ã‚‹ãŸã‚ã«åˆ©ç”¨å¯èƒ½ãªãƒ›ã‚¹ãƒˆ フãƒãƒƒãƒ”ードライブをリスト表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Invokes the Virtual Disk Manager to select a Floppy image to mount.</source> <translation type="obsolete">仮想ディスクマãƒãƒ¼ã‚¸ãƒ£ã‚’èµ·å‹•ã—ã€é¸æŠžã—ãŸãƒ•ãƒãƒƒãƒ”ーイメージをマウントã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Lists host CD/DVD drives available to mount to the virtual machine.</source> <translation type="obsolete">仮想マシンã«ãƒžã‚¦ãƒ³ãƒˆã™ã‚‹ãŸã‚ã«åˆ©ç”¨å¯èƒ½ãªãƒ›ã‚¹ãƒˆã®CD/DVDドライブをリスト表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Invokes the Virtual Disk Manager to select a CD/DVD image to mount.</source> <translation type="obsolete">仮想ディスクマãƒãƒ¼ã‚¸ãƒ£ã‚’èµ·å‹•ã—ã€é¸æŠžã—ãŸCD/DVDイメージをマウントã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source><qt>Controls the audio output driver. The <b>Null Audio Driver</b> makes the guest see an audio card, however every access to it will be ignored.</qt></source> <translation type="obsolete"><qt>オーディオ出力ドライãƒã‚’é¸æŠžã—ã¾ã™ã€‚<b>Null Audio Driver</b>ã¯ã‚²ã‚¹ãƒˆOSã‹ã‚‰ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚«ãƒ¼ãƒ‰ã¨ã—ã¦èªè˜ã•ã‚Œã¾ã™ãŒã€ãƒ‡ãƒã‚¤ã‚¹ã¸ã®ã™ã¹ã¦ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>When checked, enables the virtual USB controller of this machine.</source> <translation type="obsolete">ã“ã®ä»®æƒ³ãƒžã‚·ãƒ³ã®ä»®æƒ³USB コントãƒãƒ¼ãƒ©ã‚’有効ã«ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Adapter %1</source> <comment>network</comment> <translation type="obsolete">アダプタ %1</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Host &Interfaces</source> <translation type="obsolete">ホスト インターフェース(&I)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Lists all available host interfaces.</source> <translation type="obsolete">利用å¯èƒ½ãªãƒ›ã‚¹ãƒˆ インターフェースをリスト表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Adds a new host interface.</source> <translation type="obsolete">æ–°è¦ãƒ›ã‚¹ãƒˆ ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚’è¿½åŠ ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Removes the selected host interface.</source> <translation type="obsolete">é¸æŠžã—ãŸãƒ›ã‚¹ãƒˆ インターフェースを除去ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source><No suitable interfaces></source> <translation type="obsolete"><é©åˆ‡ãªã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ãŒã‚ã‚Šã¾ã›ã‚“></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Add</source> <translation type="obsolete">è¿½åŠ </translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Remove</source> <translation type="obsolete">除去</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>VirtualBox Host Interface %1</source> <translation type="obsolete">VirtualBox ホスト インターフェース %1</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source><p>Do you want to remove the selected host network interface <nobr><b>%1</b>?</nobr></p><p><b>Note:</b> 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.</p></source> <translation type="obsolete"><p>é¸æŠžã—ãŸãƒ›ã‚¹ãƒˆ インターフェース<nobr><b>"%1"</b>を除去ã—ã¾ã™ã‹ï¼Ÿ</nobr></p><p><b>注:</b> ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¯è¤‡æ•°ã®ä»®æƒ³ãƒžã‚·ãƒ³ã®1ã¤ä»¥ä¸Šã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アタプタã§ä½¿ç”¨ä¸ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。除去ã™ã‚‹ã¨ã€ä»–ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹åã‚’é¸ã¶ã‹ã€åˆ¥ã®å‰²ã‚Šå½“ã¦æ–¹æ³•ã‚’æ£ã—ãè¨å®šã™ã‚‹ã¾ã§ãれらã®ã‚¢ãƒ€ãƒ—ã‚¿ã¯å‹•ä½œã—ã¾ã›ã‚“。</p></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> Serial Ports </source> <translation type="obsolete">シリアルãƒãƒ¼ãƒˆ</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>#serialPorts</source> <translation type="obsolete">#serialPorts</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Enable &VT-x/AMD-V</source> <translation type="obsolete">VT-x/AMD-Vを有効化(&V)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>When checked, the virtual machine will try to make use of the host CPU'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">仮想マシンã¯Intel VT-x/AMD-Vã®ã‚ˆã†ãªãƒ›ã‚¹ãƒˆCPUã®ä»®æƒ³åŒ–支æ´æ©Ÿèƒ½ã‚’使用ã—ã¾ã™ã€‚ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ãŒã‚°ãƒ¬ã‚¤ã®ã¨ãã¯ã‚°ãƒãƒ¼ãƒãƒ«è¨å®šã®æŒ‡å®šå€¤ãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Other &Settings</source> <translation type="obsolete">ãã®ä»–ã®è¨å®š(&S)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Remember Media Mounted at Runtime</source> <translation type="obsolete">実行ä¸ã«ãƒžã‚¦ãƒ³ãƒˆã—ãŸãƒ¡ãƒ‡ã‚£ã‚¢ã‚’記録(&R)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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">仮想マシン実行ä¸ã«å¤‰æ›´ã—ãŸCD/DVDã¾ãŸã¯ãƒ•ãƒãƒƒãƒ”ーメディアã®æ§‹æˆã‚’è¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã«ä¿å˜ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>O&ther</source> <translation type="obsolete">ãã®ä»–(&T)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Enable Passthrough</source> <translation type="obsolete">パススルーを有効化(&E)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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/DVDライターを使用å¯èƒ½ã«ã™ã‚‹ãŸã‚ã€ã‚²ã‚¹ãƒˆOSã®ATAPIコマンドを直接ホスト ドライブã«é€ã‚Šã¾ã™ã€‚注:仮想マシンã‹ã‚‰éŸ³æ¥½CDã¸ã®æ›¸ãè¾¼ã¿ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Server Port </source> <translation type="obsolete">サーãƒãƒ¼ã®ãƒãƒ¼ãƒˆç•ªå·</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Authentication &Method </source> <translation type="obsolete">èªè¨¼æ–¹æ³•(&M)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Authentication &Timeout </source> <translation type="obsolete">èªè¨¼ã‚¿ã‚¤ãƒ アウト値(&T)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source><qt>Displays the VRDP Server port number. You may specify <tt>0</tt> (zero) to reset the port to the default value.</qt></source> <translation type="obsolete"><qt>VRDPサームãƒãƒ¼ãƒˆç•ªå·ã‚’表示ã—ã¾ã™ã€‚ãƒãƒ¼ãƒˆã‚’デフォルト値ã«ãƒªã‚»ãƒƒãƒˆã™ã‚‹ã«ã¯<tt>0</tt>(ゼãƒ)を指定ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>CD/DVD image file is not selected</source> <translation type="obsolete">CD/DVDイメージファイルãŒé¸æŠžã•ã‚Œã¦ã„ãªã„</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Floppy image file is not selected</source> <translation type="obsolete">フãƒãƒƒãƒ”ーイメージファイルãŒé¸æŠžã•ã‚Œã¦ã„ãªã„</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Incorrect host network interface is selected</source> <translation type="obsolete">é¸æŠžã—ãŸãƒ›ã‚¹ãƒˆ ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ インターフェースãŒä¸æ£</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Duplicate port number selected </source> <translation type="obsolete">é¸æŠžã—ãŸãƒãƒ¼ãƒˆç•ªå·ã¯ã™ã§ã«ä½¿ç”¨ã•ã‚Œã¦ã„ã‚‹</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Duplicate port path entered </source> <translation type="obsolete">指定ã—ãŸãƒãƒ¼ãƒˆ パスã¯ã™ã§ã«ä½¿ç”¨ã•ã‚Œã¦ã„ã‚‹</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>%1 on the <b>%2</b> page.</source> <translation type="obsolete"><b>%2</b>ページã®%1。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Port %1</source> <comment>serial ports</comment> <translation type="obsolete">ãƒãƒ¼ãƒˆ %1</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>00</source> <translation type="obsolete">00</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>01</source> <translation type="obsolete">01</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>02</source> <translation type="obsolete">02</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>03</source> <translation type="obsolete">03</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>04</source> <translation type="obsolete">04</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>05</source> <translation type="obsolete">05</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>08</source> <translation type="obsolete">08</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>10</source> <translation type="obsolete">10</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>09</source> <translation type="obsolete">09</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>06</source> <translation type="obsolete">06</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> Parallel Ports </source> <translation type="obsolete">パラレルãƒãƒ¼ãƒˆ</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>07</source> <translation type="obsolete">07</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>#parallelPorts</source> <translation type="obsolete">#parallelPorts</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Enable PA&E/NX</source> <translation type="obsolete">PAE/NXを有効化(&E)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source><qt>When checked, the Physical Address Extension @@ -10485,37 +9802,30 @@ makes the guest see an audio card, however every access to it will be ignored.&l <translation type="obsolete"><qt>ホストCPUã®ç‰©ç†ã‚¢ãƒ‰ãƒ¬ã‚¹æ‹¡å¼µæ©Ÿèƒ½(PAE)を仮想マシンã§æœ‰åŠ¹ã«ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&IDE Controller Type</source> <translation type="obsolete">IDE コントãƒãƒ¼ãƒ© タイプ(&I)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ デãƒã‚¤ã‚¹ã‚’ゲストOSã«æä¾›ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Audio &Controller</source> <translation type="obsolete">オーディオ コントãƒãƒ¼ãƒ©(&C)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Enable USB &2.0 Controller</source> <translation type="obsolete">USB 2.0 コントãƒãƒ¼ãƒ©ã‚’有効化(&2)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <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 EHCI コントãƒãƒ¼ãƒ©ã¯USB 2.0 サãƒãƒ¼ãƒˆã‚’æä¾›ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> <qt>Lists all USB filters of this machine. The checkbox to the @@ -10530,17 +9840,14 @@ makes the guest see an audio card, however every access to it will be ignored.&l USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニューã‹å³å´ã®ãƒœã‚¿ãƒ³ã‚’使用ã—ã¦ãã ã•ã„。</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Add Empty Filter</source> <translation type="obsolete">空ã®ãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ </translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Add Empty Filter</source> <translation type="obsolete">空ã®ãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã™ã‚‹(&A)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> <qt>Adds a new USB filter with all fields initially set to empty strings. Note that such a filter will match any attached USB @@ -10549,17 +9856,14 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation type="obsolete"><qt>ã™ã¹ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒç©ºã®æ–°è¦USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã—ã¾ã™ã€‚注:ã“ã®ãƒ•ã‚£ãƒ«ã‚¿ã¯ã™ã¹ã¦ã®æŽ¥ç¶šã•ã‚ŒãŸUSB デãƒã‚¤ã‚¹ã«é©åˆã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Add Filter From Device</source> <translation type="obsolete">デãƒã‚¤ã‚¹ã‹ã‚‰ãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ </translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>A&dd Filter From Device</source> <translation type="obsolete">デãƒã‚¤ã‚¹ã‹ã‚‰ãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã™ã‚‹(&D)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source><qt>Adds a new USB filter with all fields set to the values of the selected USB device attached to the host PC.</qt> @@ -10567,74 +9871,61 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation type="obsolete"><qt>é¸æŠžã—ãŸãƒ›ã‚¹ãƒˆPCã®USB デãƒã‚¤ã‚¹ã®å€¤ã‚’ã™ã¹ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«è¨å®šã—ãŸæ–°è¦USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Remove Filter</source> <translation type="obsolete">フィルタを除去</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Remove Filter</source> <translation type="obsolete">フィルタを除去ã™ã‚‹(&R)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> <qt>Removes the highlighted USB filter.</qt> </source> <translation type="obsolete"><qt>ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•ã‚ŒãŸUSBフィルタを除去ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Move Filter Up</source> <translation type="obsolete">フィルタを上ã«ç§»å‹•</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>&Move Filter Up</source> <translation type="obsolete">フィルタを上ã«ç§»å‹•ã™ã‚‹(&M)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> <qt>Moves the highlighted USB filter up.</qt> </source> <translation type="obsolete"><qt>ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•ã‚ŒãŸUSBフィルタを上ã«ç§»å‹•ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Move Filter Down</source> <translation type="obsolete">フィルタを下ã«ç§»å‹•</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>M&ove Filter Down</source> <translation type="obsolete">フィルタを下ã«ç§»å‹•(&O)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source> <qt>Moves the highlighted USB filter down.</qt> </source> <translation type="obsolete"><qt>ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•ã‚ŒãŸUSBフィルタを下ã«ç§»å‹•ã—ã¾ã™ã€‚</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Internal network name is not set</source> <translation type="obsolete">内部ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯åãŒè¨å®šã•ã‚Œã¦ã„ãªã„</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Port path not specified </source> <translation type="obsolete">ãƒãƒ¼ãƒˆ パスãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã„</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>Port %1</source> <comment>parallel ports</comment> <translation type="obsolete">ãƒãƒ¼ãƒˆ %1</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsDisplay.ui" line="290"/> <source>USBActionGroup</source> <translation type="obsolete">USBActionGroup</translation> </message> @@ -10699,7 +9990,6 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>共有フォルダ</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="481"/> <source>Remote Display</source> <translation type="obsolete">リモートディスプレイ</translation> </message> @@ -10709,7 +9999,6 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>%1 - %2</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="499"/> <source>On the <b>%1</b> page, %2</source> <translation type="obsolete"><b>%1</b>ページã®%2</translation> </message> @@ -10742,62 +10031,50 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<context> <name>VBoxVMSettingsFD</name> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="553"/> <source>Host floppy drive is not selected</source> <translation type="obsolete">ホスト フãƒãƒƒãƒ”ードライブãŒé¸æŠžã•ã‚Œã¦ã„ãªã„</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="553"/> <source>Floppy image file is not selected</source> <translation type="obsolete">フãƒãƒƒãƒ”ーイメージファイルãŒé¸æŠžã•ã‚Œã¦ã„ãªã„</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="553"/> <source>When checked, mounts the specified media to the Floppy drive of the virtual machine.</source> <translation type="obsolete">指定ã—ãŸãƒ¡ãƒ‡ã‚£ã‚¢ã‚’仮想マシンã®ãƒ•ãƒãƒƒãƒ”ードライブã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="553"/> <source>&Mount Floppy Drive</source> <translation type="obsolete">フãƒãƒƒãƒ”ードライブã®ãƒžã‚¦ãƒ³ãƒˆ(&M)</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="553"/> <source>Mounts the specified host Floppy drive to the virtual Floppy drive.</source> <translation type="obsolete">指定ã—ãŸãƒ›ã‚¹ãƒˆ フãƒãƒƒãƒ”ードライブを仮想フãƒãƒƒãƒ”ードライブã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="553"/> <source>Host Floppy &Drive</source> <translation type="obsolete">ホスト フãƒãƒƒãƒ”ードライブ(&D)</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="553"/> <source>Lists host Floppy drives available to mount to the virtual machine.</source> <translation type="obsolete">仮想マシンã«ãƒžã‚¦ãƒ³ãƒˆã™ã‚‹ãŸã‚ã«åˆ©ç”¨å¯èƒ½ãªãƒ›ã‚¹ãƒˆ フãƒãƒƒãƒ”ードライブをリスト表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="553"/> <source>Mounts the specified Floppy image to the virtual Floppy drive.</source> <translation type="obsolete">指定ã—ãŸãƒ•ãƒãƒƒãƒ”ーイメージを仮想フãƒãƒƒãƒ”ードライブã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="553"/> <source>&Image File</source> <translation type="obsolete">イメージファイル(&I)</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="553"/> <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> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="553"/> <source>Invokes the Virtual Disk Manager to select a Floppy image to mount.</source> <translation type="obsolete">仮想ディスクマãƒãƒ¼ã‚¸ãƒ£ã‚’èµ·å‹•ã—ã€é¸æŠžã—ãŸãƒ•ãƒãƒƒãƒ”ーイメージをマウントã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="553"/> <source>Invokes the Virtual Media Manager to select a Floppy image to mount.</source> <translation type="obsolete">仮想メディアマãƒãƒ¼ã‚¸ãƒ£ã‚’èµ·å‹•ã—ã€é¸æŠžã—ãŸãƒ•ãƒãƒƒãƒ”ーイメージをマウントã—ã¾ã™ã€‚</translation> </message> @@ -10805,7 +10082,6 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<context> <name>VBoxVMSettingsGeneral</name> <message> - <location filename="../src/settings/VBoxSettingsDialogSpecific.cpp" line="553"/> <source><qt>%1&nbsp;MB</qt></source> <translation type="obsolete"><qt>%1&nbsp;MB</qt></translation> </message> @@ -10820,7 +10096,6 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>基本(&B)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="37"/> <source>Identification</source> <translation type="obsolete">詳細</translation> </message> @@ -10835,47 +10110,38 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>仮想マシンã®åå‰ã‚’表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="65"/> <source>OS &Type:</source> <translation type="obsolete">OSタイプ(&T):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="65"/> <source>Displays the operating system type that you plan to install into this virtual machine (called a guest operating system).</source> <translation type="obsolete">仮想マシンã§å®Ÿè¡Œã™ã‚‹OS(ゲストOSã¨å‘¼ã³ã¾ã™)ã®ã‚¿ã‚¤ãƒ—を表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="65"/> <source>Base &Memory Size</source> <translation type="obsolete">メインメモリã®ã‚µã‚¤ã‚º(&M)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="65"/> <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> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="65"/> <source><</source> <translation type="obsolete"><</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="65"/> <source>></source> <translation type="obsolete">></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="65"/> <source>MB</source> <translation type="obsolete">MB</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="65"/> <source>&Video Memory Size</source> <translation type="obsolete">ビデオメモリã®ã‚µã‚¤ã‚º(&V)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="65"/> <source>Controls the amount of video memory provided to the virtual machine.</source> <translation type="obsolete">仮想マシンã«å‰²ã‚Šå½“ã¦ã‚‹ãƒ“デオメモリã®ã‚µã‚¤ã‚ºã‚’指定ã—ã¾ã™ã€‚</translation> </message> @@ -10885,82 +10151,66 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>高度(&A)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>Boo&t Order:</source> <translation type="obsolete">èµ·å‹•é †åº(&T):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <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> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>[device]</source> <translation type="obsolete">[デãƒã‚¤ã‚¹]</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>Move Up (Ctrl-Up)</source> <translation type="obsolete">上ã«ç§»å‹•(Ctrl-Up)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>Moves the selected boot device up.</source> <translation type="obsolete">é¸æŠžã—ãŸèµ·å‹•ãƒ‡ãƒã‚¤ã‚¹ã‚’上ã«ç§»å‹•ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>Move Down (Ctrl-Down)</source> <translation type="obsolete">下ã«ç§»å‹•(Ctrl-Down)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>Moves the selected boot device down.</source> <translation type="obsolete">é¸æŠžã—ãŸèµ·å‹•ãƒ‡ãƒã‚¤ã‚¹ã‚’下ã«ç§»å‹•ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>Extended Features:</source> <translation type="obsolete">拡張機能:</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>When checked, the virtual machine will support the Advanced Configuration and Power Management Interface (ACPI). <b>Note:</b> don't disable this feature after having installed a Windows guest operating system!</source> <translation type="obsolete">仮想マシンã§ACPI(Advanced Configuration and Power Management Interface)サãƒãƒ¼ãƒˆã‚’有効ã«ã—ã¾ã™ã€‚<b>注:</b> Windows ゲストOSをインストールã—ãŸå¾Œã§æœ¬æ©Ÿèƒ½ã‚’無効ã«ã—ãªã„ã§ãã ã•ã„ï¼</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>Enable A&CPI</source> <translation type="obsolete">ACPIを有効化(&C)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>When checked, the virtual machine will support the Input Output APIC (IO APIC), which may slightly decrease performance. <b>Note:</b> don't disable this feature after having installed a Windows guest operating system!</source> <translation type="obsolete">仮想マシンã§IO APIC(Input Output APIC)サãƒãƒ¼ãƒˆã‚’有効ã«ã—ã¾ã™ã€‚ã“ã‚Œã¯ä»®æƒ³ãƒžã‚·ãƒ³ã®æ€§èƒ½ã‚’ã‚ãšã‹ã«ä½Žä¸‹ã•ã›ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。<b>注:</b>Windows ゲストOSをインストールã—ãŸå¾Œã§æœ¬æ©Ÿèƒ½ã‚’無効ã«ã—ãªã„ã§ãã ã•ã„ï¼</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>Enable IO A&PIC</source> <translation type="obsolete">IO APICを有効化(&P)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>When checked, the virtual machine will try to make use of the host CPU's hardware virtualization extensions such as Intel VT-x and AMD-V.</source> <translation type="obsolete">仮想マシンã§ãƒ›ã‚¹ãƒˆCPUã®ä»®æƒ³åŒ–支æ´æ©Ÿèƒ½(Intel VT-xã¾ãŸã¯AMD-V)を有効ã«ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>Enable &VT-x/AMD-V</source> <translation type="obsolete">VT-x/AMD-Vを有効化(&V)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>When checked, the Physical Address Extension (PAE) feature of the host CPU will be exposed to the virtual machine.</source> <translation type="obsolete">仮想マシンã§ãƒ›ã‚¹ãƒˆCPUã®PAE(物ç†ã‚¢ãƒ‰ãƒ¬ã‚¹æ‹¡å¼µæ©Ÿèƒ½)を有効ã«ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="92"/> <source>Enable PA&E/NX</source> <translation type="obsolete">PAE/NXを有効化(&E)</translation> </message> @@ -10975,12 +10225,10 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>ゲストOSã¨ãƒ›ã‚¹ãƒˆOSã®é–“ã§ã‚¯ãƒªãƒƒãƒ—ボードを共有ã™ã‚‹ãƒ¢ãƒ¼ãƒ‰ã‚’定義ã—ã¾ã™ã€‚注:本機能ã®åˆ©ç”¨ã«ã¯ã‚²ã‚¹ãƒˆOSã« Guest Additions ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå¿…è¦ã§ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="149"/> <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ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ デãƒã‚¤ã‚¹ã‚’ゲストOSã«æä¾›ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="149"/> <source>&IDE Controller Type:</source> <translation type="obsolete">IDE コントãƒãƒ¼ãƒ© タイプ(&I):</translation> </message> @@ -11000,7 +10248,6 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>仮想マシンã®èª¬æ˜Žã‚’表示ã—ã¾ã™ã€‚ã“れインストールã•ã‚ŒãŸã‚²ã‚¹ãƒˆOSã®è©³ç´°ãªæ§‹æˆã«é–¢ã™ã‚‹æ³¨é‡ˆã¨ã—ã¦å½¹ç«‹ã¡ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="272"/> <source>&Other</source> <translation type="obsolete">ãã®ä»–(&O)</translation> </message> @@ -11010,62 +10257,50 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>仮想マシン実行ä¸ã«å¤‰æ›´ã—ãŸCD/DVDã¾ãŸã¯ãƒ•ãƒãƒƒãƒ”ーメディアã®æ§‹æˆã‚’è¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã«ä¿å˜ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="185"/> <source>&Remember Mounted Media</source> <translation type="obsolete">マウントã—ãŸãƒ¡ãƒ‡ã‚£ã‚¢ã‚’記録(&R)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="185"/> <source>Runtime:</source> <translation type="obsolete">実行時:</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="185"/> <source>you have assigned more than <b>75%</b> of your computer's memory (<b>%1</b>) to the virtual machine. Not enough memory is left for your host operating system. Please select a smaller amount.</source> <translation type="obsolete">実メモリ(<b>%1</b)ã®<b>75%</b>を超ãˆã‚‹ãƒ¡ãƒ¢ãƒªãŒä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚ ホストOSãŒå分ãªãƒ¡ãƒ¢ãƒªã‚’使用ã§ãã¾ã›ã‚“。割り当ã¦ãƒ¡ãƒ¢ãƒªã‚’減らã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="185"/> <source>you have assigned more than <b>50%</b> of your computer's memory (<b>%1</b>) 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">実メモリ(<b>%1</b)ã®<b>50%</b>を超ãˆã‚‹ãƒ¡ãƒ¢ãƒªãŒä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚ ホストOSãŒå分ãªãƒ¡ãƒ¢ãƒªã‚’使用ã§ãã¾ã›ã‚“。割り当ã¦ãƒ¡ãƒ¢ãƒªã‚’減らã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="185"/> <source>you have assigned less than <b>%1</b> of video memory which is the minimum amount required to switch the virtual machine to fullscreen or seamless mode.</source> <translation type="obsolete">仮想マシンをフルスクリーンã¾ãŸã¯ã‚·ãƒ¼ãƒ レスモードã«åˆ‡ã‚Šæ›ãˆã‚‹ãŸã‚ã«å¿…è¦ãªå€¤(%1)より少ãªã„ビデオメモリãŒä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="185"/> <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> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="185"/> <source>Enable &3D Acceleration</source> <translation type="obsolete">3Dアクセラレーションを有効化(&3)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="185"/> <source>you have assigned more than <b>%1%</b> of your computer's memory (<b>%2</b>) to the virtual machine. Not enough memory is left for your host operating system. Please select a smaller amount.</source> <translation type="obsolete">実メモリ(<b>%2</b)ã®<b>%1%</b>を超ãˆã‚‹ãƒ¡ãƒ¢ãƒªãŒä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚ ホストOSãŒå分ãªãƒ¡ãƒ¢ãƒªã‚’使用ã§ãã¾ã›ã‚“。割り当ã¦ãƒ¡ãƒ¢ãƒªã‚’減らã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="185"/> <source>you have assigned more than <b>%1%</b> of your computer's memory (<b>%2</b>) 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">実メモリ(<b>%2</b)ã®<b>%1%</b>を超ãˆã‚‹ãƒ¡ãƒ¢ãƒªãŒä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚ ホストOSã«å分ãªãƒ¡ãƒ¢ãƒªãŒæ®‹ã•ã‚Œã¦ã„ã¾ã›ã‚“。自己ã®è²¬ä»»ã§ç¶šè¡Œã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="185"/> <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'll accept VM Settings by pressing OK button.</source> <translation type="obsolete">64ビット ゲストOSタイプを指定ã—ãŸä»®æƒ³ãƒžã‚·ãƒ³ã¯ã€ä»®æƒ³åŒ–支æ´æ©Ÿèƒ½(VT-x/AMD-V)を有効化ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ãã†ã§ãªã‘ã‚Œã°ã‚²ã‚¹ãƒˆOSã¯64ビットCPUを検出ã§ããšã€èµ·å‹•ã§ãã¾ã›ã‚“。ã“ã®ãŸã‚[OK]ボタンを押ã—ã¦ä»®æƒ³ãƒžã‚·ãƒ³è¨å®šã‚’ä¿å˜ã™ã‚‹ã¨ãã€ä»®æƒ³åŒ–支æ´æ©Ÿèƒ½ã‚’自動的ã«æœ‰åŠ¹åŒ–ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="185"/> <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">仮想マシンã§ãƒ›ã‚¹ãƒˆCPUã®ãƒã‚¹ãƒ†ãƒƒãƒ‰ãƒšãƒ¼ã‚¸ãƒ³ã‚°(Intel VT-xã¾ãŸã¯AMD-V)を有効ã«ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="185"/> <source>Enable Nested Pa&ging</source> <translation type="obsolete">ãƒã‚¹ãƒ†ãƒƒãƒ‰ãƒšãƒ¼ã‚¸ãƒ³ã‚°ã‚’有効化(&G)</translation> </message> @@ -11108,67 +10343,54 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<context> <name>VBoxVMSettingsHD</name> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="236"/> <source>No hard disk is selected for <i>%1</i></source> <translation type="obsolete"> <i>%1</i>ã®ãŸã‚ã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ãŒé¸æŠžã•ã‚Œã¦ã„ãªã„</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="236"/> <source><i>%1</i> uses the hard disk that is already attached to <i>%2</i></source> <translation type="obsolete"><i>%1</i>ã¯ã™ã§ã«<i>%2</i>ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã‚‹</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="236"/> <source>&Add Attachment</source> <translation type="obsolete">割り当ã¦ã‚’è¿½åŠ ã™ã‚‹(&A)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="236"/> <source>&Remove Attachment</source> <translation type="obsolete">割り当ã¦ã‚’除去ã™ã‚‹(&R)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="236"/> <source>&Select Hard Disk</source> <translation type="obsolete">ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’é¸æŠžã™ã‚‹(&S)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="236"/> <source>Adds a new hard disk attachment.</source> <translation type="obsolete">æ–°è¦ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®å‰²ã‚Šå½“ã¦ã‚’è¿½åŠ ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="236"/> <source>Removes the highlighted hard disk attachment.</source> <translation type="obsolete">ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•ã‚ŒãŸãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®å‰²ã‚Šå½“ã¦ã‚’除去ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="236"/> <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> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="236"/> <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 コントãƒãƒ¼ãƒ©ãŒç„¡åŠ¹ãªå ´åˆã€SATAãƒãƒ¼ãƒˆã«ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’割り当ã¦ã§ãã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="236"/> <source>&Enable SATA Controller</source> <translation type="obsolete">SATA コントãƒãƒ¼ãƒ©ã‚’有効化(&E)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="236"/> <source>&Attachments</source> <translation type="obsolete">割り当ã¦(&A)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="236"/> <source>Lists all hard disks attached to this machine. Use a mouse click or the <tt>Space</tt> 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">ã“ã®ä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸã™ã¹ã¦ã®ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’リスト表示ã—ã¾ã™ã€‚ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•ã‚ŒãŸé …目をマウスクリックã™ã‚‹ã‹ã€<tt>[スペース]</tt>ã‚ーを使用ã—ã¦ã€ãƒ‰ãƒãƒƒãƒ—ダウンリストã‹ã‚‰ä½¿ç”¨ã™ã‚‹ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’é¸æŠžã—ã¦ãã ã•ã„。コンテã‚ストメニューã‹å³ã®ãƒœã‚¿ãƒ³ã‚’使ã£ã¦ã€ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®å‰²ã‚Šå½“ã¦ã®è¿½åŠ ã¾ãŸã¯é™¤åŽ»ãŒè¡Œãˆã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsGeneral.ui" line="236"/> <source>Invokes the Virtual Media Manager to select a hard disk to attach to the currently highlighted slot.</source> <translation type="obsolete">仮想メディアマãƒãƒ¼ã‚¸ãƒ£ã‚’èµ·å‹•ã—ã€ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’ç¾åœ¨ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•ã‚ŒãŸã‚¹ãƒãƒƒãƒˆã«å‰²ã‚Šå½“ã¦ã¾ã™ã€‚</translation> </message> @@ -11178,27 +10400,22 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>実際ã®ãƒ™ãƒ¼ã‚¹ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã®ä»£ã‚ã‚Šã«ã‚¹ãƒãƒƒãƒˆã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸå·®åˆ†ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’表示ã—ã¾ã™(間接的ãªå‰²ã‚Šå½“ã¦æ™‚)。 高度ãªãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯è¨å®šãŒå¿…è¦ãªå ´åˆã®ã¿ã€ã‚ªãƒ³ã«ã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsHD.ui" line="325"/> <source>&Show Differencing Hard Disks</source> <translation type="obsolete">差分ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’表示(&S)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsHD.ui" line="325"/> <source>When checked, enables an additional virtual controller (either SATA or SCSI) of this machine.</source> <translation type="obsolete">ã“ã®ä»®æƒ³ãƒžã‚·ãƒ³ã®è¿½åŠ ã®ä»®æƒ³ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©(SATAã¾ãŸã¯SCSI)を有効ã«ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsHD.ui" line="325"/> <source>&Enable Additional Controller</source> <translation type="obsolete">è¿½åŠ ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ã‚’有効化(&E)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsHD.ui" line="325"/> <source>IDE &Controller Type</source> <translation type="obsolete">IDE コントãƒãƒ¼ãƒ© タイプ(&C)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsHD.ui" line="325"/> <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ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ デãƒã‚¤ã‚¹ã‚’ゲストOSã«æä¾›ã—ã¾ã™ã€‚</translation> </message> @@ -11313,6 +10530,7 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•ã‚ŒãŸã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ ツリーã®å‰²ã‚Šå½“ã¦ã‚’除去ã—ã¾ã™ã€‚</translation> </message> <message> + <location filename="../src/settings/vm/VBoxVMSettingsHD.cpp" line="1901"/> <location filename="../src/wizards/newvm/VBoxNewVMWzd.cpp" line="357"/> <source>IDE Controller</source> <translation>IDE コントãƒãƒ¼ãƒ©</translation> @@ -11328,6 +10546,7 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>SCSI コントãƒãƒ¼ãƒ©</translation> </message> <message> + <location filename="../src/settings/vm/VBoxVMSettingsHD.cpp" line="1916"/> <location filename="../src/wizards/newvm/VBoxNewVMWzd.cpp" line="358"/> <source>Floppy Controller</source> <translation>フãƒãƒƒãƒ”ー コントãƒãƒ¼ãƒ©</translation> @@ -11358,6 +10577,7 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>ã“ã®ä»®æƒ³ãƒžã‚·ãƒ³ã®ã™ã¹ã¦ã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ コントãƒãƒ¼ãƒ©ã¨ä»®æƒ³ã‚¤ãƒ¡ãƒ¼ã‚¸ã€å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸãƒ›ã‚¹ãƒˆ デãƒã‚¤ã‚¹ã‚’å«ã¿ã¾ã™ã€‚</translation> </message> <message> + <location filename="../src/settings/vm/VBoxVMSettingsHD.ui" line="119"/> <location filename="../src/settings/vm/VBoxVMSettingsHD.ui" line="351"/> <source>Information</source> <translation>æƒ…å ±</translation> @@ -11368,6 +10588,7 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>ストレージ ツリーã¯ç•°ãªã£ãŸç¨®é¡žã®è¤‡æ•°ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ã‚’å«ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®ä»®æƒ³ãƒžã‚·ãƒ³ã«ã¯ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ãŒã‚ã‚Šã¾ã›ã‚“。</translation> </message> <message> + <location filename="../src/settings/vm/VBoxVMSettingsHD.ui" line="165"/> <location filename="../src/settings/vm/VBoxVMSettingsHD.ui" line="247"/> <source>Attributes</source> <translation>属性</translation> @@ -11466,12 +10687,10 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<context> <name>VBoxVMSettingsNetwork</name> <message> - <location filename="../src/settings/vm/VBoxVMSettingsHD.ui" line="458"/> <source>Select TAP setup application</source> <translation type="obsolete">TAPè¨å®šã‚¢ãƒ—リケーションをé¸æŠž</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsHD.ui" line="458"/> <source>Select TAP terminate application</source> <translation type="obsolete">TAP終了アプリケーションをé¸æŠž</translation> </message> @@ -11486,7 +10705,6 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタを有効化(&E)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="36"/> <source>A&dapter Type:</source> <translation type="obsolete">アダプタ タイプ(&D):</translation> </message> @@ -11506,17 +10724,14 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>仮想アダプタをホストOSã®å®Ÿéš›ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«å‰²ã‚Šå½“ã¦ã‚‹æ–¹å¼ã‚’指定ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="87"/> <source>&Network Name:</source> <translation type="obsolete">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯å(&N):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="87"/> <source>Displays the name of the internal network selected for this adapter.</source> <translation type="obsolete">ã“ã®ã‚¢ãƒ€ãƒ—タ用ã«é¸æŠžã—ãŸå†…部ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯åを表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="87"/> <source>&MAC Address:</source> <translation type="obsolete">MACアドレス(&M):</translation> </message> @@ -11531,7 +10746,6 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>MACアドレスをランダムã«ç”Ÿæˆã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="202"/> <source>&Generate</source> <translation type="obsolete">生æˆ(&G)</translation> </message> @@ -11541,103 +10755,84 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>仮想マシンã®èµ·å‹•æ™‚ã«ä»®æƒ³ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚±ãƒ¼ãƒ–ルãŒæŽ¥ç¶šã•ã‚Œã‚‹ã‹ã©ã†ã‹ã‚’示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Ca&ble Connected</source> <translation type="obsolete">接続(&B)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>&Interface Name:</source> <translation type="obsolete">インターフェースå(&I):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Displays the TAP interface name.</source> <translation type="obsolete">TAPインターフェースåを表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>&Setup Application:</source> <translation type="obsolete">è¨å®šã‚¢ãƒ—リケーション(&S):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Displays the command executed to set up the TAP interface.</source> <translation type="obsolete">TAPインターフェースè¨å®šæ™‚ã«å®Ÿè¡Œã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã‚’表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Selects the setup application.</source> <translation type="obsolete">è¨å®šã‚¢ãƒ—リケーションをé¸æŠžã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>&Terminate Application:</source> <translation type="obsolete">終了アプリケーション(&T):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Displays the command executed to terminate the TAP interface.</source> <translation type="obsolete">TAPインターフェース終了時ã«å®Ÿè¡Œã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã‚’表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Selects the terminate application.</source> <translation type="obsolete">終了アプリケーションをé¸æŠžã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Host Interface Settings</source> <translation type="obsolete">ホスト インターフェースã®è¨å®š</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Adapter</source> <comment>network</comment> <translation type="obsolete">アダプタ</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Not selected</source> <comment>adapter</comment> <translation type="obsolete">未é¸æŠž</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Network</source> <comment>internal</comment> <translation type="obsolete">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Not selected</source> <comment>network</comment> <translation type="obsolete">未é¸æŠž</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>MAC Address</source> <translation type="obsolete">MACアドレス</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Not selected</source> <comment>address</comment> <translation type="obsolete">未é¸æŠž</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Cable</source> <translation type="obsolete">ケーブル</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Connected</source> <comment>cable</comment> <translation type="obsolete">接続</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="216"/> <source>Not connected</source> <comment>cable</comment> <translation type="obsolete">未接続</translation> @@ -11648,7 +10843,6 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>アダプタ タイプ(&T):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="150"/> <source>Open extended settings dialog for current attachment type.</source> <translation type="obsolete">ç¾åœ¨ã®å‰²ã‚Šå½“ã¦ã‚¿ã‚¤ãƒ—ã®ãŸã‚ã®æ‹¡å¼µè¨å®šãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’é–‹ãã¾ã™ã€‚</translation> </message> @@ -11668,13 +10862,13 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>ホストオンリー ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタãŒæœªé¸æŠž</translation> </message> <message> + <location filename="../src/settings/vm/VBoxVMSettingsNetwork.cpp" line="349"/> <location filename="../src/settings/vm/VBoxVMSettingsNetwork.cpp" line="351"/> <source>Not selected</source> <comment>network adapter name</comment> <translation>未é¸æŠž</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.cpp" line="351"/> <source>Open additional options dialog for current attachment type.</source> <translation type="obsolete">ç¾åœ¨ã®å‰²ã‚Šå½“ã¦ã‚¿ã‚¤ãƒ—ã®ãŸã‚ã®è¿½åŠ オプションダイアãƒã‚°ã‚’é–‹ãã¾ã™ã€‚</translation> </message> @@ -11712,112 +10906,90 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<context> <name>VBoxVMSettingsNetworkDetails</name> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>no bridged network adapter is selected</source> <translation type="obsolete">ブリッジ ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタãŒæœªé¸æŠž</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>no internal network name is specified</source> <translation type="obsolete">内部ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯åãŒæœªæŒ‡å®š</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>no host-only adapter is selected</source> <translation type="obsolete">ホストオンリー アダプタãŒæœªé¸æŠž</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Basic Details</source> <translation type="obsolete">è©³ç´°æƒ…å ±</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Bridged Network Details</source> <translation type="obsolete">ブリッジ ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯è©³ç´°</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Internal Network Details</source> <translation type="obsolete">内部ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯è©³ç´°</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Host-only Network Details</source> <translation type="obsolete">ホストオンリー ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯è©³ç´°</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Not selected</source> <translation type="obsolete">未é¸æŠž</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Host Settings</source> <translation type="obsolete">ホストè¨å®š</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>&Bridged Network Adapter:</source> <translation type="obsolete">ブリッジ ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ アダプタ(&B):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Displays the name of the host network adapter selected for bridged networking.</source> <translation type="obsolete">ブリッジ ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ç”¨ã«é¸æŠžã—ãŸãƒ›ã‚¹ãƒˆ ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¢ãƒ€ãƒ—ã‚¿åを表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Internal &Network:</source> <translation type="obsolete">内部ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯(&N):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Displays the name of the internal network selected for this adapter.</source> <translation type="obsolete">ã“ã®ã‚¢ãƒ€ãƒ—タ用ã«é¸æŠžã—ãŸå†…部ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯åを表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Host-only &Network Adapter:</source> <translation type="obsolete">ホストオンリー ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¢ãƒ€ãƒ—ã‚¿(&N):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Displays the name of the VirtualBox network adapter selected for host-only networking.</source> <translation type="obsolete">ホストオンリー ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ç”¨ã«é¸æŠžã—ãŸVirtualBox ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¢ãƒ€ãƒ—ã‚¿åを表示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Guest Settings</source> <translation type="obsolete">ゲストè¨å®š</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Guest &MAC Address:</source> <translation type="obsolete">ゲストMACアドレス:</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <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アドレスを表示ã—ã¾ã™ã€‚MACアドレスã¯{0-9,A-F}ã‹ã‚‰é¸æŠžã•ã‚ŒãŸ12æ–‡å—ã§æ§‹æˆã•ã‚Œã¾ã™ã€‚注:2番目ã®æ–‡å—ã¯å¶æ•°ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Generates a new random MAC address.</source> <translation type="obsolete">MACアドレスをランダムã«ç”Ÿæˆã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>&Cable connected</source> <translation type="obsolete">ケーブル接続(&C)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Indicates whether the virtual network cable is plugged in on machine startup or not.</source> <translation type="obsolete">仮想マシンã®èµ·å‹•æ™‚ã«ä»®æƒ³ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚±ãƒ¼ãƒ–ルを接続ã™ã‚‹ã‹ã©ã†ã‹ã‚’示ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Additional Options</source> <translation type="obsolete">è¿½åŠ ã‚ªãƒ—ã‚·ãƒ§ãƒ³</translation> </message> @@ -11825,12 +10997,10 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<context> <name>VBoxVMSettingsNetworkPage</name> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>No host network interface is selected</source> <translation type="obsolete">ホスト インターフェースãŒé¸æŠžã•ã‚Œã¦ã„ãªã„</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsNetwork.ui" line="219"/> <source>Internal network name is not set</source> <translation type="obsolete">内部ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯åãŒè¨å®šã•ã‚Œã¦ã„ãªã„</translation> </message> @@ -11869,7 +11039,6 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>IRQ(&I):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsParallel.ui" line="97"/> <source>Displays the IRQ number of this parallel port. Valid values are integer numbers in range from <tt>0</tt> to <tt>255</tt>. Values greater than <tt>15</tt> may only be used if the <b>IO APIC</b> is enabled for this virtual machine.</source> <translation type="obsolete">ã“ã®ãƒ‘ラレルãƒãƒ¼ãƒˆã®IRQ番å·ã‚’表示ã—ã¾ã™ã€‚有効値ã¯<tt>0</tt>ã‹ã‚‰<tt>255</tt>ã¾ã§ã®ç¯„囲ã®æ•´æ•°ã§ã™ã€‚<tt>15</tt>以上ã®å€¤ã¯ã“ã®ä»®æƒ³ãƒžã‚·ãƒ³ã§<b>IO APIC</b>ãŒæœ‰åŠ¹ãªã¨ã使用ã•ã‚Œã¾ã™ã€‚</translation> </message> @@ -11879,7 +11048,6 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>I/Oãƒãƒ¼ãƒˆ(&R):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsParallel.ui" line="120"/> <source>Displays the base I/O port address of this parallel port. This should be a whole number between <tt>0</tt> and <tt>0xFFFF</tt>.</source> <translation type="obsolete">ã“ã®ãƒ‘ラレルãƒãƒ¼ãƒˆã®ãƒ™ãƒ¼ã‚¹I/Oãƒãƒ¼ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’表示ã—ã¾ã™ã€‚ 有効値ã¯<tt>0</tt>ã‹ã‚‰<tt>0xFFFF</tt>ã®ç¯„囲ã®æ•´æ•°ã§ã™ã€‚</translation> </message> @@ -11925,17 +11093,14 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<context> <name>VBoxVMSettingsSF</name> <message> - <location filename="../src/settings/vm/VBoxVMSettingsParallel.cpp" line="240"/> <source>&Add New Shared Folder</source> <translation type="obsolete">æ–°è¦å…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€ã‚’è¿½åŠ (&A)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsParallel.cpp" line="240"/> <source>&Edit Selected Shared Folder</source> <translation type="obsolete">é¸æŠžã—ãŸå…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€ã‚’編集(&E)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsParallel.cpp" line="240"/> <source>&Remove Selected Shared Folder</source> <translation type="obsolete">é¸æŠžã—ãŸå…±æœ‰ãƒ•ã‚©ãƒ«ãƒ€ã‚’除去(&R)</translation> </message> @@ -12102,7 +11267,6 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>IRQ(&I):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSerial.ui" line="97"/> <source>Displays the IRQ number of this serial port. Valid values are integer numbers in range from <tt>0</tt> to <tt>255</tt>. Values greater than <tt>15</tt> may only be used if the <b>IO APIC</b> is enabled for this virtual machine.</source> <translation type="obsolete">ã“ã®ã‚·ãƒªã‚¢ãƒ«ãƒãƒ¼ãƒˆã®IRQ番å·ã‚’表示ã—ã¾ã™ã€‚有効値ã¯<tt>0</tt>ã‹ã‚‰<tt>255</tt>ã¾ã§ã®ç¯„囲ã®æ•´æ•°ã§ã™ã€‚<tt>15</tt>以上ã®å€¤ã¯ã“ã®ä»®æƒ³ãƒžã‚·ãƒ³ã§<b>IO APIC</b>ãŒæœ‰åŠ¹ãªã¨ã使用ã•ã‚Œã¾ã™ã€‚</translation> </message> @@ -12112,7 +11276,6 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>I/Oãƒãƒ¼ãƒˆ(&R):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSerial.ui" line="120"/> <source>Displays the base I/O port address of this serial port. This should be a whole number between <tt>0</tt> and <tt>0xFFFF</tt>.</source> <translation type="obsolete">ã“ã®ã‚·ãƒªã‚¢ãƒ«ãƒãƒ¼ãƒˆã®ãƒ™ãƒ¼ã‚¹I/Oãƒãƒ¼ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’表示ã—ã¾ã™ã€‚ 有効値ã¯<tt>0</tt>ã‹ã‚‰<tt>0xFFFF</tt>ã®ç¯„囲ã®æ•´æ•°ã§ã™ã€‚</translation> </message> @@ -12137,7 +11300,6 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>パイプ作æˆ(&C)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSerial.ui" line="179"/> <source>Port &Path:</source> <translation type="obsolete">ãƒãƒ¼ãƒˆ パス(&P):</translation> </message> @@ -12183,48 +11345,48 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<context> <name>VBoxVMSettingsSystem</name> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="262"/> + <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="266"/> <source>you have assigned more than <b>%1%</b> of your computer's memory (<b>%2</b>) to the virtual machine. Not enough memory is left for your host operating system. Please select a smaller amount.</source> <translation>実メモリ(<b>%2</b)ã®<b>%1ï¼…</b>を超ãˆã‚‹ãƒ¡ãƒ¢ãƒªãŒä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚ ホストOSãŒå分ãªãƒ¡ãƒ¢ãƒªã‚’使用ã§ãã¾ã›ã‚“。割り当ã¦ãƒ¡ãƒ¢ãƒªã‚’減らã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="272"/> + <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="276"/> <source>you have assigned more than <b>%1%</b> of your computer's memory (<b>%2</b>) to the virtual machine. There might not be enough memory left for your host operating system. Continue at your own risk.</source> <translation>実メモリ(<b>%2</b)ã®<b>%1ï¼…</b>を超ãˆã‚‹ãƒ¡ãƒ¢ãƒªãŒä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚ ホストOSã«å分ãªãƒ¡ãƒ¢ãƒªãŒæ®‹ã•ã‚Œã¦ã„ã¾ã›ã‚“。自己ã®è²¬ä»»ã§ç¶šè¡Œã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="285"/> + <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="289"/> <source>for performance reasons, the number of virtual CPUs attached to the virtual machine may not be more than twice the number of physical CPUs on the host (<b>%1</b>). Please reduce the number of virtual CPUs.</source> <translation>性能上ã®ç†ç”±ã‹ã‚‰ã€ä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‹CPUæ•°ã¯ãƒ›ã‚¹ãƒˆãƒžã‚·ãƒ³ã®ç‰©ç†CPUæ•°(<b>%1</b>)ã®2å€ã‚’超ãˆã¦ã¯ãªã‚Šã¾ã›ã‚“。仮想CPUã®æ•°ã‚’減らã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="294"/> + <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="298"/> <source>you have assigned more virtual CPUs to the virtual machine than the number of physical CPUs on your host system (<b>%1</b>). This is likely to degrade the performance of your virtual machine. Please consider reducing the number of virtual CPUs.</source> <translation>ホストマシンã®ç‰©ç†CPUæ•° (<b>%1</b>)より多ã„CPUãŒä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚ã“ã‚Œã¯ä»®æƒ³ãƒžã‚·ãƒ³ã®æ€§èƒ½ã‚’低下ã•ã›ã¾ã™ã€‚仮想CPUã®æ•°ã‚’減らã—ã¦ãã ã•ã„。</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="306"/> + <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="310"/> <source>you have assigned more than one virtual CPU to this VM. This will not work 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>2個以上ã®CPUãŒä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚IO APICãŒç„¡åŠ¹ãªå ´åˆã€ã“ã‚Œã¯å‹•ä½œã—ã¾ã›ã‚“。[OK]ボタンを押ã™ã¨è‡ªå‹•çš„ã«IO APICãŒæœ‰åŠ¹åŒ–ã•ã‚Œã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="317"/> + <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="321"/> <source>you have assigned more than one virtual CPU to this VM. This will not work unless hardware virtualization (VT-x/AMD-V) is also enabled. This will be done automatically when you accept the VM Settings by pressing the OK button.</source> <translation>2個以上ã®CPUãŒä»®æƒ³ãƒžã‚·ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚仮想化支æ´æ©Ÿèƒ½(VT-x/AMD-V)ãŒç„¡åŠ¹ãªå ´åˆã€ã“ã‚Œã¯å‹•ä½œã—ã¾ã›ã‚“。[OK]ボタンを押ã™ã¨è‡ªå‹•çš„ã«ä»®æƒ³åŒ–支æ´æ©Ÿèƒ½ãŒæœ‰åŠ¹åŒ–ã•ã‚Œã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="372"/> + <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="375"/> + <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="376"/> <source><qt>%1&nbsp;MB</qt></source> <translation><qt>%1&nbsp;MB</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="375"/> + <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="379"/> <source><qt>%1&nbsp;CPU</qt></source> <comment>%1 is 1 for now</comment> <translation><qt>%1&nbsp;CPU</qt></translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="375"/> <source><qt>%1&nbsp;CPUs</qt></source> <comment>%1 is 32 for now</comment> <translation type="obsolete"><qt>%1&nbsp;CPUs</qt></translation> @@ -12240,6 +11402,7 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>メインメモリ(&M):</translation> </message> <message> + <location filename="../src/settings/vm/VBoxVMSettingsSystem.ui" line="68"/> <location filename="../src/settings/vm/VBoxVMSettingsSystem.ui" line="134"/> <source>Controls the amount of memory provided to the virtual machine. If you assign too much, the machine might not start.</source> <translation>仮想マシンã«å‰²ã‚Šå½“ã¦ã‚‹ãƒ¡ã‚¤ãƒ³ãƒ¡ãƒ¢ãƒªã®ã‚µã‚¤ã‚ºã‚’指定ã—ã¾ã™ã€‚割り当ã¦é‡ãŒå¤šã™ãŽã‚‹ã¨ä»®æƒ³ãƒžã‚·ãƒ³ã¯èµ·å‹•ã—ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。</translation> @@ -12280,17 +11443,16 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>é¸æŠžã—ãŸèµ·å‹•ãƒ‡ãƒã‚¤ã‚¹ã‚’上ã«ç§»å‹•ã—ã¾ã™ã€‚</translation> </message> <message> + <location filename="../src/settings/vm/VBoxVMSettingsSystem.ui" line="306"/> <location filename="../src/settings/vm/VBoxVMSettingsSystem.ui" line="472"/> <source>Extended Features:</source> <translation>拡張機能:</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSystem.ui" line="472"/> <source>When checked, the virtual machine will support the Advanced Configuration and Power Management Interface (ACPI). <b>Note:</b> don't disable this feature after having installed a Windows guest operating system!</source> <translation type="obsolete">仮想マシンã§ACPI(Advanced Configuration and Power Management Interface)サãƒãƒ¼ãƒˆã‚’有効ã«ã—ã¾ã™ã€‚<b>注:</b> Windows ゲストOSをインストールã—ãŸå¾Œã§æœ¬æ©Ÿèƒ½ã‚’無効ã«ã—ãªã„ã§ãã ã•ã„ï¼</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSystem.ui" line="472"/> <source>Enable &ACPI</source> <translation type="obsolete">ACPIを有効化(&A)</translation> </message> @@ -12315,8 +11477,9 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>プãƒã‚»ãƒƒã‚µæ•°(&P):</translation> </message> <message> + <location filename="../src/settings/vm/VBoxVMSettingsSystem.ui" line="392"/> <location filename="../src/settings/vm/VBoxVMSettingsSystem.ui" line="465"/> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>仮想マシンã«å‰²ã‚Šå½“ã¦ã‚‹CPUã®æ•°ã‚’指定ã—ã¾ã™ã€‚</translation> </message> <message> @@ -12360,7 +11523,7 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<translation>ãƒã‚¹ãƒ†ãƒƒãƒ‰ãƒšãƒ¼ã‚¸ãƒ³ã‚°ã‚’有効化(&G)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="376"/> + <location filename="../src/settings/vm/VBoxVMSettingsSystem.cpp" line="380"/> <source><qt>%1&nbsp;CPUs</qt></source> <comment>%1 is host cpu count * 2 for now</comment> <translation><qt>%1&nbsp;CPUs</qt></translation> @@ -12609,42 +11772,34 @@ USBãƒ•ã‚£ãƒ«ã‚¿ã‚’è¿½åŠ ã¾ãŸã¯é™¤åŽ»ã™ã‚‹ã«ã¯ã‚³ãƒ³ãƒ†ã‚ストメニュム<context> <name>VBoxVMSettingsVRDP</name> <message> - <location filename="../src/settings/vm/VBoxVMSettingsUSBFilterDetails.ui" line="36"/> <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> - <location filename="../src/settings/vm/VBoxVMSettingsUSBFilterDetails.ui" line="36"/> <source>&Enable VRDP Server</source> <translation type="obsolete">VRDPサーãƒãƒ¼ã‚’有効化(&E)</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsUSBFilterDetails.ui" line="36"/> <source>Server &Port:</source> <translation type="obsolete">サーãƒãƒ¼ã®ãƒãƒ¼ãƒˆç•ªå·(&P):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsUSBFilterDetails.ui" line="36"/> <source>Displays the VRDP Server port number. You may specify <tt>0</tt> (zero) to reset the port to the default value.</source> <translation type="obsolete">VRDPサーãƒãƒ¼ã®ãƒãƒ¼ãƒˆç•ªå·ã‚’表示ã—ã¾ã™ã€‚ãƒãƒ¼ãƒˆã‚’デフォルト値ã«ãƒªã‚»ãƒƒãƒˆã™ã‚‹ã«ã¯<tt>0</tt>(ゼãƒ)を指定ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsUSBFilterDetails.ui" line="36"/> <source>Authentication &Method:</source> <translation type="obsolete">èªè¨¼æ–¹å¼(&M):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsUSBFilterDetails.ui" line="36"/> <source>Defines the VRDP authentication method.</source> <translation type="obsolete">VRDPã®èªè¨¼æ–¹å¼ã‚’指定ã—ã¾ã™ã€‚</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsUSBFilterDetails.ui" line="36"/> <source>Authentication &Timeout:</source> <translation type="obsolete">èªè¨¼ã‚¿ã‚¤ãƒ アウト値(&T):</translation> </message> <message> - <location filename="../src/settings/vm/VBoxVMSettingsUSBFilterDetails.ui" line="36"/> <source>Specifies the timeout for guest authentication, in milliseconds.</source> <translation type="obsolete">ゲストèªè¨¼ã®ã‚¿ã‚¤ãƒ アウト値をミリ秒å˜ä½ã§æŒ‡å®šã—ã¾ã™ã€‚</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 9c8c5a5b8..3a144c5e2 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts @@ -26,22 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Sun Microsystems, Inc.</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> + <translation type="obsolete">Sun Microsystems, Inc.</translation> </message> </context> <context> @@ -68,68 +53,61 @@ </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 type="unfinished"></translation> + <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<br/><br/> <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>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="unfinished"></translation> + <translation>កម្ម​វិធី​ážážºâ€‹ážŽáŸ‚ល​លីនុច​ VirtualBox (vboxdrv) មិនážáŸ’រូវ​បាន​ផ្ទុក​ ឬ​មាន​បញ្ហា​សិទ្ធិ​ជាមួយ​ /dev/vboxdrv ។ សូម​ដំឡើង​ឡើង​វិញ​ម៉ូ​​ឌុល​ážážºâ€‹ážŽáŸ‚ល​​​ដោយ​ការ​ប្រážáž·áž”ážáŸ’ážáž·â€‹â€‹ <br/><br/> <font color=blue>'/etc/init.d/vboxdrv ដំឡើ​ង</font><br/><br/>​ដូច Root ។ អ្នក​ប្រើ​យូប៊ុន​ទូ​ Fedora ឬ​ Mandriva គួរ​ážáŸ‚ដំឡើង​កញ្ចប់​ដំបូង​របស់​ DKMS ។ កញ្ចប់​នáŸáŸ‡â€‹â€‹ážáž¶áž˜â€‹ážŠáž¶áž“​​រក្សា​ទុក​​នៃ​ការ​ផ្លាស់​ប្ážáž¼ážšâ€‹ážážºâ€‹ážŽáŸ‚ល​លីនុច​ និងចង​​ក្រង​ឡើងវិញ​នៃ​​ម៉ូឌុល​ážážºážŽáŸ‚ល​របស់​ vboxdrv ប្រសិន​បើ​ចាំ​បាច់ ។</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 type="unfinished"></translation> + <translation>ម៉ូ​ឌុល​ážážºâ€‹ážŽáŸ‚ល​របស់​ VirtualBox មិន​ផ្គូផ្គង​​កំណែ​របស់​ VirtualBox áž“áŸáŸ‡â€‹áž‘áŸâ€‹ ។ ជាក់​ស្ážáŸ‚ង​ការ​ដំឡើង VirtualBox ​​​មិន​ទទួល​បាន​ជោគជáŸáž™â€‹áž“ោះ​ទáŸÂ ។ សូម​ព្យាយាម​លុប​​ ហើយ​​ដំឡើង​ VirtualBox ឡើង​វិញ ។</translation> </message> <message> <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing<br/><br/> <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>may correct this. Make sure that you do not mix the OSE version and the PUEL version of VirtualBox.</source> - <translation type="unfinished"></translation> + <translation>ម៉ូឌុល​ážážºâ€‹ážŽáŸ‚ល​របស់​ VirtualBox មិន​ផ្គូផ្គង​កំណែ​របស់​ VirtualBox áž“áŸáŸ‡áž‘០។ ជាក់​ស្ážáŸ‚ង​ការ​ដំឡើង​របស់​ VirtualBox មិន​ទទួល​បាន​ជោគជáŸáž™â€‹áž“ោះ​ទ០។ ការ​ប្រážáž·áž”ážáŸ’ážáž·â€‹<br/><br/> <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>áž“áŸáŸ‡â€‹áž¢áž¶áž…​ážáŸ’រឹមážáŸ’រូវ​ ។ សូម​ប្រាកដ​ážáž¶â€‹ អ្នក​មិនបញ្ចូល​កំណែ​ OSE និង​​កំណែ​ PUEL របស់​ VirtualBox ចូល​គ្នា​ឡើយ ។</translation> </message> <message> <source>Make sure the kernel module has been loaded successfully.</source> - <translation type="unfinished"></translation> + <translation>ប្រាកដ​ážáž¶ ​ម៉ូឌុល​ážážºážŽáŸ‚ល​ážáŸ’រូវ​បាន​ផ្ទុក​ដោយ​​ជោគ​ជáŸáž™â€‹Â ។</translation> </message> <message> <source>VirtualBox - Runtime Error</source> - <translation type="unfinished"></translation> + <translation>VirtualBox - កំហុស Runtime</translation> </message> <message> <source><b>Cannot access the kernel driver!</b><br/><br/></source> - <translation type="unfinished"></translation> + <translation><b>មិន​អាច​ដំណើរ​ការ​កម្មវិធី​បញ្ជា​ážážºâ€‹â€‹ážŽáŸ‚ល​​​បាន​ទáŸÂ !</b><br/><br/></translation> </message> <message> <source>Kernel driver not accessible</source> - <translation type="unfinished"></translation> + <translation>កម្ម​វិធី​បញ្ជា​ážážºâ€‹ážŽáŸ‚ល​​មិន​អាច​ដំណើរ​ការបាន​​ឡើ​យ​</translation> </message> <message> <source>Unknown error %2 during initialization of the Runtime</source> - <translation type="unfinished"></translation> + <translation>មិន​ស្គាល់​កំហុស​ %2 អំឡុង​ពáŸáž›â€‹ážŠáŸ‚លការ​ចាប់​ផ្ážáž¾áž˜áž–áŸáž›ážœáŸáž›áž¶â€‹ážšážáŸ‹â€‹</translation> </message> </context> <context> <name>QIArrowSplitter</name> <message> <source>&Back</source> - <translation type="unfinished"></translation> + <translation>ážáž™â€‹áž€áŸ’រោយ​</translation> </message> <message> <source>&Next</source> - <translation type="unfinished">បន្ទាប់</translation> + <translation>បន្ទាប់​</translation> </message> </context> <context> <name>QIFileDialog</name> <message> <source>Select a directory</source> - <translation type="unfinished">ជ្រើស​ážáž</translation> + <translation>ជ្រើស​ážáž</translation> </message> <message> <source>Select a file</source> - <translation type="unfinished">ជ្រើស​ឯកសារ</translation> - </message> -</context> -<context> - <name>QIHelpButton</name> - <message> - <source>&Help</source> - <translation type="obsolete">ជំនួយ</translation> + <translation>ជ្រើស​ឯកសារ</translation> </message> </context> <context> @@ -326,14 +304,7 @@ <name>QILabel</name> <message> <source>&Copy</source> - <translation type="unfinished">ចម្លង</translation> - </message> -</context> -<context> - <name>QILabelPrivate</name> - <message> - <source>&Copy</source> - <translation type="obsolete">ចម្លង</translation> + <translation>ចម្លង</translation> </message> </context> <context> @@ -360,11 +331,11 @@ </message> <message> <source>&Details</source> - <translation type="unfinished">សáŸáž…ក្ដី​លម្អិáž</translation> + <translation>សáŸáž…ក្ដី​លម្អិáž</translation> </message> <message> <source>&Details (%1 of %2)</source> - <translation type="unfinished"></translation> + <translation>សáŸáž…​ក្ážáž¸â€‹áž›áž˜áŸ’អិážâ€‹ (%1 នៃ %2)</translation> </message> </context> <context> @@ -404,29 +375,6 @@ </message> </context> <context> - <name>VBoxAddNIDialog</name> - <message> - <source>Add Host Interface</source> - <translation type="obsolete">បន្ážáŸ‚ម​ចំណុច​ប្រទាក់​ម៉ាស៊ីន</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>&OK</source> - <translation type="obsolete">យល់ព្រម</translation> - </message> - <message> - <source>Cancel</source> - <translation type="obsolete">បោះពុម្ព</translation> - </message> -</context> -<context> <name>VBoxAdditionsDownloader</name> <message> <source>Cancel</source> @@ -453,107 +401,107 @@ <name>VBoxApplianceEditorWgt</name> <message> <source>Virtual System %1</source> - <translation type="unfinished"></translation> + <translation>ប្រ​ពáŸáž“្ធ​​និម្មិážâ€‹ %1</translation> </message> <message> <source>Name</source> - <translation type="unfinished">ឈ្មោះ</translation> + <translation>ឈ្មោះ</translation> </message> <message> <source>Product</source> - <translation type="unfinished"></translation> + <translation>ផលិážâ€‹áž•áž›â€‹</translation> </message> <message> <source>Product-URL</source> - <translation type="unfinished"></translation> + <translation>ផលិážáž•áž›â€‹-URL</translation> </message> <message> <source>Vendor</source> - <translation type="unfinished"></translation> + <translation>ក្រុម​ហ៊ុន​លក់​</translation> </message> <message> <source>Vendor-URL</source> - <translation type="unfinished"></translation> + <translation>ក្រុម​ហ៊ុន​លក់​​-URL</translation> </message> <message> <source>Version</source> - <translation type="unfinished"></translation> + <translation>កំណែ​</translation> </message> <message> <source>Description</source> - <translation type="unfinished"></translation> + <translation>សáŸáž…​ក្ážáž¸â€‹áž–ិណណ៌នា​</translation> </message> <message> <source>License</source> - <translation type="unfinished"></translation> + <translation>អជ្ញាបណ្ណ</translation> </message> <message> <source>Guest OS Type</source> - <translation type="unfinished">ប្រភáŸáž‘​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹ážšáž”ស់​ម៉ាស៊ីន​ភ្ញៀវ</translation> + <translation>ប្រភáŸáž‘​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹ážšáž”ស់​ម៉ាស៊ីន​ភ្ញៀវ</translation> </message> <message> <source>CPU</source> - <translation type="unfinished"></translation> + <translation>ស៊ី​ភី​យូ</translation> </message> <message> <source>RAM</source> - <translation type="unfinished"></translation> + <translation>សážáž·</translation> </message> <message> <source>Hard Disk Controller (IDE)</source> - <translation type="unfinished"></translation> + <translation>ឧបករណáŸáž”ញ្ជា​​ážáž¶ážŸâ€‹ážšáž¹áž„ (IDE)</translation> </message> <message> <source>Hard Disk Controller (SATA)</source> - <translation type="unfinished"></translation> + <translation>ឧបករណáŸáž”ញ្ជា​​ážáž¶ážŸâ€‹ážšáž¹áž„ (SATA)</translation> </message> <message> <source>Hard Disk Controller (SCSI)</source> - <translation type="unfinished"></translation> + <translation>ឧបករណáŸâ€‹áž”ញ្ជា​ážáž¶ážŸâ€‹ážšáž¹áž„ (SCSI)</translation> </message> <message> <source>DVD</source> - <translation type="unfinished"></translation> + <translation>ឌីវីឌី​</translation> </message> <message> <source>Floppy</source> - <translation type="unfinished">ážáž¶ážŸáž‘ន់</translation> + <translation>ážáž¶ážŸáž‘ន់</translation> </message> <message> <source>Network Adapter</source> - <translation type="unfinished"></translation> + <translation>អាដាប់​ទáŸážšâ€‹áž”ណ្ážáž¶áž‰â€‹</translation> </message> <message> <source>USB Controller</source> - <translation type="unfinished"></translation> + <translation>ឧបករណáŸâ€‹áž”ញ្ជា​ USB</translation> </message> <message> <source>Sound Card</source> - <translation type="unfinished"></translation> + <translation>កាážâ€‹ážŸáŸ†áž¡áŸáž„​</translation> </message> <message> <source>Virtual Disk Image</source> - <translation type="unfinished"></translation> + <translation>រូបភាព​ážáž¶ážŸâ€‹áž“ិម្មិážâ€‹</translation> </message> <message> <source>Unknown Hardware Item</source> - <translation type="unfinished"></translation> + <translation>មិនស្គាល់​ធាážáž»â€‹áž•áŸ’នែក​រឹង​</translation> </message> <message> <source>MB</source> - <translation type="unfinished">មáŸáž€áž¶áž”ៃ</translation> + <translation>មáŸáž€áž¶áž”ៃ</translation> </message> <message> <source><b>Original Value:</b> %1</source> - <translation type="unfinished"></translation> + <translation><b>ážáž˜áŸ’លៃ​​ដើម​ ៖</b> %1</translation> </message> <message> <source>Configuration</source> - <translation type="unfinished"></translation> + <translation>ការ​កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ</translation> </message> <message> <source>Warnings:</source> - <translation type="unfinished"></translation> + <translation>ការ​ព្រមាន​ ៖</translation> </message> </context> <context> @@ -575,14 +523,6 @@ <translation>បិទ​ម៉ាស៊ីន</translation> </message> <message> - <source>&Revert to the current snapshot</source> - <translation type="obsolete">ដាក់​បញ្ច្រាស​រូបážážâ€‹áž”ច្ចុប្បន្ន</translation> - </message> - <message> - <source>Revert the machine state to the state stored in the current snapshot</source> - <translation type="obsolete">ដាក់​បញ្ច្រាស​ស្ážáž¶áž“ភាព​ម៉ាស៊ីន​ទៅ​ស្ážáž¶áž“ភាព​ដែលបានទុក​នៅ​ក្នុង​រូបážážâ€‹áž”ច្ចុប្បន្ន</translation> - </message> - <message> <source>S&end the shutdown signal</source> <translation>ផ្ញើ​សញ្ញា​បិទ</translation> </message> @@ -604,11 +544,11 @@ </message> <message> <source>Restore the machine state stored in the current snapshot</source> - <translation type="unfinished"></translation> + <translation>ស្ážáž¶ážšâ€‹â€‹ážŸáŸ’ážáž¶áž“​ភាព​ម៉ាស៊ីន​ដែល​បាន​រក្សា​ទុក​ក្នុង​រូប​ážážâ€‹áž”ច្ចុប្បន្ន</translation> </message> <message> <source>&Restore current snapshot '%1'</source> - <translation type="unfinished"></translation> + <translation>ស្ážáž¶ážšâ€‹ážšáž¼áž”​ážážâ€‹áž”ច្ចុប្បន្ន​ '%1'</translation> </message> </context> <context> @@ -700,42 +640,6 @@ <translation>យក​រូបážážâ€‹ážšáž”ស់​ម៉ាស៊ីន​និម្មិáž</translation> </message> <message> - <source>&Floppy Image...</source> - <translation type="obsolete">រូបភាព​ážáž¶ážŸâ€‹áž‘ន់...</translation> - </message> - <message> - <source>Mount a floppy image file</source> - <translation type="obsolete">ម៉ោន​ឯកសារ​រូបភាព​ážáž¶ážŸâ€‹áž‘ន់</translation> - </message> - <message> - <source>Unmount F&loppy</source> - <translation type="obsolete">អាន់ម៉ោន​ážáž¶ážŸâ€‹áž‘ន់</translation> - </message> - <message> - <source>Unmount the currently mounted floppy media</source> - <translation type="obsolete">អាន់ម៉ោន​មáŸážŒáŸ€â€‹ážáž¶ážŸâ€‹áž‘ាន់​ដែល​បាន​ម៉ោន​បច្ចុប្បន្ន</translation> - </message> - <message> - <source>&CD/DVD-ROM Image...</source> - <translation type="obsolete">រូបភាព​ស៊ីឌី/ឌីវីឌី​រ៉ូម...</translation> - </message> - <message> - <source>Mount a CD/DVD-ROM image file</source> - <translation type="obsolete">ម៉ោន​ឯកសារ​រូបភាព​ស៊ីឌី/ឌីវីឌី​រ៉ូម</translation> - </message> - <message> - <source>Unmount C&D/DVD-ROM</source> - <translation type="obsolete">អាន់ម៉ោន​ស៊ីឌី/ឌីវីឌីរ៉ូម</translation> - </message> - <message> - <source>Unmount the currently mounted CD/DVD-ROM media</source> - <translation type="obsolete">អាន់ម៉ោន​មáŸážŒáŸ€â€‹ážŸáŸŠáž¸ážŒáž¸/ឌីវីឌីរ៉ូម​ដែល​បាន​ម៉ោន​បច្ចុប្បន្ន</translation> - </message> - <message> - <source>Remote Dis&play</source> - <translation type="obsolete">កា​រ​បង្ហាញ​ពី​ចម្ងាយ</translation> - </message> - <message> <source>Enable or disable remote desktop (RDP) connections to this machine</source> <translation>បើក ឬ​បិទ​ការ​ážáž—្ជាប់​ផ្ទៃážáž»â€‹áž–ី​ចម្ងាយ (RDP) ទៅ​កាន់​ម៉ាស៊ីន​នáŸáŸ‡</translation> </message> @@ -756,14 +660,6 @@ <translation>ម៉ោន​រូបភាព​ដំឡើង​បន្ážáŸ‚ម​ភ្ញៀវ</translation> </message> <message> - <source>Mount &Floppy</source> - <translation type="obsolete">ម៉ោន​ážáž¶ážŸâ€‹áž‘ន់</translation> - </message> - <message> - <source>Mount &CD/DVD-ROM</source> - <translation type="obsolete">ម៉ោន​ស៊ីឌី/ឌីវីឌី​រ៉ូម</translation> - </message> - <message> <source>&USB Devices</source> <translation>ឧបករណáŸâ€‹ USB</translation> </message> @@ -820,41 +716,10 @@ <translation>រូបážáž %1</translation> </message> <message> - <source>Host Drive </source> - <translation type="obsolete">ដ្រាយ​ម៉ាស៊ីន</translation> - </message> - <message> <source>&Machine</source> <translation>ម៉ាស៊ីន</translation> </message> <message> - <source>&Network Adapters</source> - <translation type="obsolete">អាដាប់ទáŸážšâ€‹áž”ណ្ដាញ</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&less Mode</source> <translation>របៀប​គ្មាន​ážáŸ’áž“áŸážš</translation> </message> @@ -863,61 +728,11 @@ <translation>ប្ដូរ​ទៅ​របៀប​បញ្ចូល​ផ្ទៃážáž»â€‹áž‚្មាន​ážáŸ’áž“áŸážš</translation> </message> <message> - <source><qt><nobr>Indicates the activity of the floppy media:</nobr>%1</qt></source> - <comment>Floppy tooltip</comment> - <translation type="obsolete"><qt><nobr>បង្ហាញ​សកម្មភាព​របស់​មáŸážŒáŸ€â€‹ážáž¶ážŸâ€‹áž‘ន់ ៖</nobr>%1</qt></translation> - </message> - <message> - <source><br><nobr><b>Host Drive</b>: %1</nobr></source> - <comment>Floppy tooltip</comment> - <translation type="obsolete"><br><nobr><b>ដ្រាយ​ម៉ាស៊ីន</b> ៖ %1</nobr></translation> - </message> - <message> - <source><br><nobr><b>Image</b>: %1</nobr></source> - <comment>Floppy tooltip</comment> - <translation type="obsolete"><br><nobr><b>រូបភាព</b> ៖ %1</nobr></translation> - </message> - <message> - <source><br><nobr><b>No media mounted</b></nobr></source> - <comment>Floppy tooltip</comment> - <translation type="obsolete"><br><nobr><b>គ្មាន​មáŸážŒáŸ€â€‹áž”ានម៉ោន​ទáŸ</b></nobr></translation> - </message> - <message> - <source><qt><nobr>Indicates the activity of the CD/DVD-ROM media:</nobr>%1</qt></source> - <comment>DVD-ROM tooltip</comment> - <translation type="obsolete"><qt><nobr>បង្ហាញ​សកម្មភាព​របស់​មáŸážŒáŸ€â€‹ážŸáŸŠáž¸ážŒáž¸/ឌីវីឌីរ៉ូម ៖</nobr>%1</qt></translation> - </message> - <message> - <source><br><nobr><b>Host Drive</b>: %1</nobr></source> - <comment>DVD-ROM tooltip</comment> - <translation type="obsolete"><br><nobr><b>ដ្រាយ​ម៉ាស៊ីន</b> ៖ %1</nobr></translation> - </message> - <message> - <source><br><nobr><b>Image</b>: %1</nobr></source> - <comment>DVD-ROM tooltip</comment> - <translation type="obsolete"><br><nobr><b>រូបភាព</b> ៖ %1</nobr></translation> - </message> - <message> - <source><br><nobr><b>No media mounted</b></nobr></source> - <comment>DVD-ROM tooltip</comment> - <translation type="obsolete"><br><nobr><b>គ្មាន​មáŸážŒáŸ€â€‹áž”ានម៉ោន​ទáŸ</b></nobr></translation> - </message> - <message> - <source><qt><nobr>Indicates activity on the the virtual hard disks:</nobr>%1</qt></source> - <comment>HDD tooltip</comment> - <translation type="obsolete"><qt><nobr>បង្ហាញ​សកម្មភាព​របស់​ážáž¶ážŸážšáž¹áž„​និម្មិážÂ ៖</nobr>%1</qt></translation> - </message> - <message> <source><br><nobr><b>No hard disks attached</b></nobr></source> <comment>HDD tooltip</comment> <translation><br><nobr><b>គ្មាន​ážáž¶ážŸâ€‹ážšáž¹áž„​បាន​ភ្ជាប់​ទáŸ</b></nobr></translation> </message> <message> - <source><qt><nobr>Indicates the activity of the network interfaces:</nobr>%1</qt></source> - <comment>Network adapters tooltip</comment> - <translation type="obsolete"><qt><nobr>បង្ហាញ​សកម្មភាព​របស់​ចំណុច​ប្រទាក់​បណ្ដាញ ៖</nobr>%1</qt></translation> - </message> - <message> <source><br><nobr><b>Adapter %1 (%2)</b>: cable %3</nobr></source> <comment>Network adapters tooltip</comment> <translation><br><nobr><b>អាដាប់ទáŸážš %1 (%2)</b> ៖ ážáŸ’សែ %3</nobr></translation> @@ -938,11 +753,6 @@ <translation><br><nobr><b>អាដាប់ទáŸážšâ€‹áž”ណ្ដាញ​ទាំង​អស់​ážáŸ’រូវ​បានបិទ</b></nobr></translation> </message> <message> - <source><qt><nobr>Indicates the activity of the attached USB devices:</nobr>%1</qt></source> - <comment>USB device tooltip</comment> - <translation type="obsolete"><qt><nobr>បង្ហាញ​សកម្មភាព​របស់​ឧបករណ០USB ដែល​បានផ្ដាច់ ៖</nobr>%1</qt></translation> - </message> - <message> <source><br><nobr><b>No USB devices attached</b></nobr></source> <comment>USB device tooltip</comment> <translation><br><nobr><b>គ្មាន​ឧបករណ០USB បាន​ផ្ដាច់</b></nobr></translation> @@ -953,20 +763,11 @@ <translation><br><nobr><b>ážœážáŸ’ážáž»â€‹áž”ញ្ជា USB ážáŸ’រូវ​បាន​បិទ</b></nobr></translation> </message> <message> - <source><qt><nobr>Indicates the activity of the machineof the machine'sapos;s shared folders: shared folders:</nobr>%1</qt></source> - <comment>Shared folders tooltip</comment> - <translation type="obsolete"><qt><nobr>បង្ហាញ​សកម្មភាព​របស់​ážážâ€‹ážŠáŸ‚ល​បានចែករំលែក ៖</nobr>%1</qt></translation> - </message> - <message> <source><br><nobr><b>No shared folders</b></nobr></source> <comment>Shared folders tooltip</comment> <translation><br><nobr><b>គ្មាន​ážážâ€‹áž”ាន​ចែករំលែក​ទáŸ</b></nobr></translation> </message> <message> - <source>Sun xVM VirtualBox</source> - <translation type="obsolete">Sun xVM VirtualBox</translation> - </message> - <message> <source>Session I&nformation Dialog</source> <translation>ប្រអប់​ពáŸážáŸŒáž˜áž¶áž“​សមáŸáž™</translation> </message> @@ -1011,110 +812,181 @@ </message> <message> <source>Sun VirtualBox</source> - <translation type="unfinished"></translation> + <translation>Sun VirtualBox</translation> </message> <message> <source> EXPERIMENTAL build %1r%2 - %3</source> - <translation type="unfinished"></translation> + <translation> ស្ážáž¶áž”នា​ពិសោធ %1r%2 - %3</translation> </message> <message> <source>&CD/DVD Devices</source> - <translation type="unfinished"></translation> + <translation>ឧបករណáŸâ€‹ážŸáŸŠáž¸â€‹ážŒáž¸â€‹/ឌីវីឌី</translation> </message> <message> <source>&Floppy Devices</source> - <translation type="unfinished"></translation> + <translation>ឧបករណáŸâ€‹ážáž¶ážŸáž‘ន់​</translation> </message> <message> <source>&Network Adapters...</source> - <translation type="unfinished"></translation> + <translation>អាដាប់ទáŸážšâ€‹â€‹â€‹áž”ណ្ážáž¶áž‰â€‹...</translation> </message> <message> <source>Change the settings of network adapters</source> - <translation type="unfinished"></translation> + <translation>ផ្លាស់​ប្ážáž¼ážšâ€‹áž€áž¶ážšâ€‹áž€áŸ†ážŽážáŸ‹â€‹ážšáž”ស់​​អាដាប់ទáŸážšâ€‹â€‹áž”ណ្ážáž¶áž‰</translation> </message> <message> <source>&Remote Display</source> - <translation type="unfinished"></translation> + <translation>ការ​បង្ហាញ​ពី​ចម្ងាយ</translation> </message> <message> <source>Remote Desktop (RDP) Server</source> - <comment>enable/disable...</comment> - <translation type="unfinished"></translation> + <comment> +enable/disable...</comment> + <translation type="obsolete">ម៉ាស៊ីន​បម្រើ​ផ្ទៃážáž»â€‹áž–ី​ចម្ងាយ (RDP)​</translation> </message> <message> <source>More CD/DVD Images...</source> - <translation type="unfinished"></translation> + <translation>រូបភាព​ស៊ីឌី/ឌីវីឌី​ផ្សáŸáž„​ទៀáž...</translation> </message> <message> <source>Unmount CD/DVD Device</source> - <translation type="unfinished"></translation> + <translation>អាន់ម៉ោន​ឧបករណáŸâ€‹ážŸáŸŠáž¸ážŒáž¸/ឌីវីឌី</translation> </message> <message> <source>More Floppy Images...</source> - <translation type="unfinished"></translation> + <translation>រូបភាព​ážáž¶ážŸáž‘ន់​ផ្សáŸáž„​ទៀáž...</translation> </message> <message> <source>Unmount Floppy Device</source> - <translation type="unfinished"></translation> + <translation>អាន់ម៉ោន​ឧបករណáŸâ€‹ážáž¶ážŸâ€‹áž‘ន់​</translation> </message> <message> <source>No CD/DVD Devices Attached</source> - <translation type="unfinished"></translation> + <translation>គ្មាន​ឧបករណáŸâ€‹ážŸáŸŠáž¸ážŒáž¸/ឌីវីឌី​បាន​ភ្ជាប់​ទáŸ</translation> </message> <message> <source>No Floppy Devices Attached</source> - <translation type="unfinished"></translation> + <translation>គ្មាន​ឧបករណáŸâ€‹ážáž¶ážŸâ€‹áž‘ន់​បាន​ភ្ជាប់​ទáŸ</translation> + </message> + <message> + <source><p style='white-space:pre'><nobr>Indicates the activity of the virtual hard disks:</nobr>%1</p></source> + <comment> +HDD tooltip</comment> + <translation type="obsolete"><p style='white-space:pre'><nobr>បង្ហាញ​សកម្មភាព​របស់​ážáž¶ážŸážšáž¹áž„​និម្មិážÂ ៖</nobr>%1</p></translation> + </message> + <message> + <source><p style='white-space:pre'><nobr>Indicates the activity of the CD/DVD devices:</nobr>%1</p></source> + <comment> +CD/DVD tooltip</comment> + <translation type="obsolete"><p style='white-space:pre'><nobr>បង្ហាញ​​សកម្ម​ភាព​​​របស់​ឧបករណáŸâ€‹â€‹ážŸáŸŠáž¸â€‹ážŒáž¸â€‹â€‹/ឌីវីឌី ៖</nobr>%1</p></translation> + </message> + <message> + <source><br><nobr><b>No CD/DVD devices attached</b></nobr></source> + <comment> +CD/DVD tooltip</comment> + <translation type="obsolete"><br><nobr><b>គ្មាន​ឧបករណáŸâ€‹ážŸáŸŠáž¸ážŒáž¸/ឌីវីឌី​បានភ្ជាប់​ទáŸ</b></nobr></translation> + </message> + <message> + <source><p style='white-space:pre'><nobr>Indicates the activity of the floppy devices:</nobr>%1</p></source> + <comment> +FD tooltip</comment> + <translation type="obsolete"><p style='white-space:pre'><nobr>បង្ហាញ​សកម្មភាព​របស់​ឧបករណáŸâ€‹ážáž¶ážŸâ€‹áž‘ន់ ៖</nobr>%1</p></translation> + </message> + <message> + <source><br><nobr><b>No floppy devices attached</b></nobr></source> + <comment> +FD tooltip</comment> + <translation type="obsolete"><br><nobr><b>គ្មាន​ឧបករណáŸâ€‹ážáž¶ážŸâ€‹áž‘ន់​បានភ្ជាប់​ទáŸ</b></nobr></translation> + </message> + <message> + <source><p style='white-space:pre'><nobr>Indicates the activity of the network interfaces:</nobr>%1</p></source> + <comment> +Network adapters tooltip</comment> + <translation type="obsolete"><p style='white-space:pre'><nobr>បង្ហាញ​សកម្មភាព​របស់​ចំណុច​ប្រទាក់​បណ្ដាញ ៖</nobr>%1</p></translation> + </message> + <message> + <source><p style='white-space:pre'><nobr>Indicates the activity of the attached USB devices:</nobr>%1</p></source> + <comment> +USB device tooltip</comment> + <translation type="obsolete"><p style='white-space:pre'><nobr>បង្ហាញ​សកម្មភាព​របស់​ឧបករណ០USB ដែល​បាន​ភ្ជាប់ ៖</nobr>%1</p></translation> + </message> + <message> + <source><p style='white-space:pre'><nobr>Indicates the activity of the machine's shared folders:</nobr>%1</p></source> + <comment> +Shared folders tooltip</comment> + <translation type="obsolete"><p style='white-space:pre'><nobr>បង្ហាញ​សកម្មភាព​របស់​ážážâ€‹ážŠáŸ‚ល​បានចែករំលែក​របស់​ម៉ាស៊ីន ៖</nobr>%1</p></translation> + </message> + <message> + <source>Indicates the status of the hardware virtualization features used by this virtual machine:<br><nobr><b>%1:</b>&nbsp;%2</nobr><br><nobr><b>%3:</b>&nbsp;%4</nobr></source> + <comment> + + + + + +Virtualization Stuff LED</comment> + <translation type="obsolete">បង្ហាញážáž¶ ​ស្ážáž¶áž“​ភាព​របស់​លក្ážážŽáŸˆáž–ិសáŸážŸâ€‹áž“ិម្មិážâ€‹áž•áŸ’នែក​រឹង​ážáŸ’រូ​វបាន​ប្រើ​ដោយ​ម៉ាស៊ីន​និម្មិážâ€‹áž“áŸáŸ‡Â ៖​<br><nobr><b>%1:</b>&nbsp;%2</nobr><br><nobr><b>%3:</b>&nbsp;%4</nobr></translation> + </message> + <message> + <source><br><nobr><b>%1:</b>&nbsp;%2</nobr></source> + <comment> +Virtualization Stuff LED</comment> + <translation type="obsolete"><br><nobr><b>%1:</b>&nbsp;%2</nobr></translation> + </message> + <message> + <source>Remote Desktop (RDP) Server</source> + <comment>enable/disable...</comment> + <translation type="unfinished">ម៉ាស៊ីន​បម្រើ​ផ្ទៃážáž»â€‹áž–ី​ចម្ងាយ (RDP)​</translation> </message> <message> <source><p style='white-space:pre'><nobr>Indicates the activity of the virtual hard disks:</nobr>%1</p></source> <comment>HDD tooltip</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><p style='white-space:pre'><nobr>បង្ហាញ​សកម្មភាព​របស់​ážáž¶ážŸážšáž¹áž„​និម្មិážÂ ៖</nobr>%1</p></translation> </message> <message> <source><p style='white-space:pre'><nobr>Indicates the activity of the CD/DVD devices:</nobr>%1</p></source> <comment>CD/DVD tooltip</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><p style='white-space:pre'><nobr>បង្ហាញ​​សកម្ម​ភាព​​​របស់​ឧបករណáŸâ€‹â€‹ážŸáŸŠáž¸â€‹ážŒáž¸â€‹â€‹/ឌីវីឌី ៖</nobr>%1</p></translation> </message> <message> <source><br><nobr><b>No CD/DVD devices attached</b></nobr></source> <comment>CD/DVD tooltip</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><br><nobr><b>គ្មាន​ឧបករណáŸâ€‹ážŸáŸŠáž¸ážŒáž¸/ឌីវីឌី​បានភ្ជាប់​ទáŸ</b></nobr></translation> </message> <message> <source><p style='white-space:pre'><nobr>Indicates the activity of the floppy devices:</nobr>%1</p></source> <comment>FD tooltip</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><p style='white-space:pre'><nobr>បង្ហាញ​សកម្មភាព​របស់​ឧបករណáŸâ€‹ážáž¶ážŸâ€‹áž‘ន់ ៖</nobr>%1</p></translation> </message> <message> <source><br><nobr><b>No floppy devices attached</b></nobr></source> <comment>FD tooltip</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><br><nobr><b>គ្មាន​ឧបករណáŸâ€‹ážáž¶ážŸâ€‹áž‘ន់​បានភ្ជាប់​ទáŸ</b></nobr></translation> </message> <message> <source><p style='white-space:pre'><nobr>Indicates the activity of the network interfaces:</nobr>%1</p></source> <comment>Network adapters tooltip</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><p style='white-space:pre'><nobr>បង្ហាញ​សកម្មភាព​របស់​ចំណុច​ប្រទាក់​បណ្ដាញ ៖</nobr>%1</p></translation> </message> <message> <source><p style='white-space:pre'><nobr>Indicates the activity of the attached USB devices:</nobr>%1</p></source> <comment>USB device tooltip</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><p style='white-space:pre'><nobr>បង្ហាញ​សកម្មភាព​របស់​ឧបករណ០USB ដែល​បាន​ភ្ជាប់ ៖</nobr>%1</p></translation> </message> <message> <source><p style='white-space:pre'><nobr>Indicates the activity of the machine's shared folders:</nobr>%1</p></source> <comment>Shared folders tooltip</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><p style='white-space:pre'><nobr>បង្ហាញ​សកម្មភាព​របស់​ážážâ€‹ážŠáŸ‚ល​បានចែករំលែក​របស់​ម៉ាស៊ីន ៖</nobr>%1</p></translation> </message> <message> <source>Indicates the status of the hardware virtualization features used by this virtual machine:<br><nobr><b>%1:</b>&nbsp;%2</nobr><br><nobr><b>%3:</b>&nbsp;%4</nobr></source> <comment>Virtualization Stuff LED</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">បង្ហាញážáž¶ ​ស្ážáž¶áž“​ភាព​របស់​លក្ážážŽáŸˆáž–ិសáŸážŸâ€‹áž“ិម្មិážâ€‹áž•áŸ’នែក​រឹង​ážáŸ’រូ​វបាន​ប្រើ​ដោយ​ម៉ាស៊ីន​និម្មិážâ€‹áž“áŸáŸ‡Â ៖​<br><nobr><b>%1:</b>&nbsp;%2</nobr><br><nobr><b>%3:</b>&nbsp;%4</nobr></translation> </message> <message> <source><br><nobr><b>%1:</b>&nbsp;%2</nobr></source> <comment>Virtualization Stuff LED</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><br><nobr><b>%1:</b>&nbsp;%2</nobr></translation> </message> </context> <context> @@ -1128,54 +1000,54 @@ <name>VBoxEmptyFileSelector</name> <message> <source>&Choose...</source> - <translation type="unfinished"></translation> + <translation>ជ្រើស​រើស... </translation> </message> </context> <context> <name>VBoxExportApplianceWzd</name> <message> <source>Select a file to export into</source> - <translation type="unfinished"></translation> + <translation>ជ្រើស​ឯកសាážâ€‹ážáŸ’រូវ​នាំចáŸáž‰</translation> </message> <message> <source>Open Virtualization Format (%1)</source> - <translation type="unfinished"></translation> + <translation>Open Virtualization Format (%1)</translation> </message> <message> <source>Appliance</source> - <translation type="unfinished"></translation> + <translation>ឧបករណáŸâ€‹</translation> </message> <message> <source>Please choose a filename to export the OVF to.</source> - <translation type="unfinished"></translation> + <translation>សូម​ជ្រើស​ឈ្មោះ​ឯកសារ​​ ដើម្បី​នាំ​ចូល​ OVF ។</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>សូម​បំពáŸáž‰â€‹â€‹ážœáž¶áž›â€‹â€‹ážŠáŸ‚ល​បន្ážáŸ‚ម ​ដូចជា​​ឈ្មោះ​អ្នក​ប្រើ​ ពាក្យ​សម្ងាážáŸ‹â€‹ និងសញ្ញា​សម្គាល់​​ ហើយ​​​ផ្ážáž›áŸ‹â€‹ážˆáŸ’មោះ​​ឯកសារ​សម្រាប់​គោលដៅ ​OVF ។</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>សូម​បំពáŸáž‰â€‹ážœáž¶áž›â€‹ážŠáŸ‚ល​បន្ážáŸ‚ម ​ដូចជា​​ឈ្មោះ​អ្នក​ប្រើ​ ពាក្យ​សម្ងាážáŸ‹â€‹ ឈ្មោះ​ម៉ាស៊ីន​ និង​សញ្ញា​សម្គាល់​ ហើយ​​​ផ្ážáž›áŸ‹â€‹ážˆáŸ’មោះ​ឯកសារ​សម្រាប់​គោល​ដៅ​ OVF ។</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>Appliance Export Wizard</source> - <translation type="unfinished"></translation> + <translation>អ្នក​ជំនួយការ​នាំចáŸáž‰â€‹áž§áž”ករណáŸ</translation> </message> <message> <source>Welcome to the Appliance Export Wizard!</source> - <translation type="unfinished"></translation> + <translation>ស្វា​គមនáŸâ€‹áž˜áž€â€‹â€‹áž€áž¶áž“់​អ្នក​​ជំនួយ​ការ​នាំ​ចáŸáž‰â€‹áž§áž”ករណáŸâ€‹ !</translation> </message> <message> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -1185,79 +1057,85 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This wizard will guide you through the process of exporting an appliance. </p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use the <span style=" font-weight:600;">Next</span> button to go the next page of the wizard and the <span style=" font-weight:600;">Back</span> button to return to the previous page.</p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">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.</p></body></html></source> - <translation type="unfinished"></translation> + <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">អ្នក​ជំនួយ​កា​រនáŸáŸ‡â€‹áž“ឹង​នាំអ្នក​ážáž¶áž˜ážšáž™áŸˆâ€‹ážŠáŸ†ážŽáž¾ážšáž€áž¶ážšâ€‹áž“ាំចáŸáž‰â€‹áž§áž”ករណáŸÂ ។</p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ប្រើ​ប៊ូážáž»áž„ <span style=" font-weight:600;">បន្ទាប់</span> ដើម្បី​ទៅ​កាន់​ទំពáŸážšâ€‹áž”ន្ទាប់​របស់​អ្នក​ជំនួយ​ការ​ ហើយ​ប៊ូážáž»áž„ <span style=" font-weight:600;">ážáž™áž€áŸ’រោយ</span> ដើម្បី​ážáŸ’រឡប់​ទៅ​ទំពáŸážšâ€‹áž˜áž»áž“ ។</p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">សូម​ជ្រើស​ម៉ាស៊ីន​និម្មិហដែល​អ្នក​ចង់បាន​ឧបករណáŸÂ ។ អ្នក​អាចជ្រើស​ច្រើនជាង​មួយ​បាន ។ សូម​ចំណាំážáž¶ ម៉ាស៊ីន​ទាំង​នáŸáŸ‡â€‹ážáŸ’រូវ​ážáŸ‚​បិទ មុន​នឹង​ពួកវា​អាច​ážáŸ’រូវ​បាន​នាំចáŸáž‰Â ។</p></body></html></translation> </message> <message> <source>< &Back</source> - <translation type="unfinished"></translation> + <translation><ážáž™â€‹áž€áŸ’រោយ​</translation> </message> <message> <source>&Next ></source> - <translation type="unfinished">បន្ទាប់ ></translation> + <translation>បន្ទាប់></translation> </message> <message> <source>Cancel</source> - <translation type="unfinished"></translation> + <translation>បោះបង់​</translation> </message> <message> <source>Appliance Export Settings</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> <message> <source>Restore Defaults</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"></translation> + <translation>សូម​បញ្ជាក់​គោល​ដៅ​សម្រាប់​នាំ​ចáŸáž‰â€‹â€‹ OVF ។ អ្នក​អាច​ជ្រើស​​រវាង​​ការ​នាំ​ចáŸáž‰â€‹áž”្រពáŸáž“្ធ​ឯកសារ​មូល​ដ្ឋាន​​ ការ​ផ្ទុក​ OVF ឡើង​ទៅ​​កាន់​ Sun អាច​ជា​​សáŸážœáž¶â€‹ ឬម៉ា​ស៊ីន​បម្រើ​ផ្ទុក S3 ។</translation> </message> <message> <source>&Local Filesystem </source> - <translation type="unfinished"></translation> + <translation>ប្រពáŸáž“្ធ​ឯកសារ​មូលដ្ឋាន ​</translation> </message> <message> <source>Sun &Cloud</source> - <translation type="unfinished"></translation> + <translation>ពពក​របស់ Sun</translation> </message> <message> <source>&Simple Storage System (S3)</source> - <translation type="unfinished"></translation> + <translation>ប្រពáŸáž“្ធ​ផ្ទុក​ធម្មážáž¶ (S3)</translation> </message> <message> <source>&Username:</source> - <translation type="unfinished"></translation> + <translation>ឈ្មោះ​អ្នក​ប្រើ​ ៖</translation> </message> <message> <source>&Password:</source> - <translation type="unfinished"></translation> + <translation>ពាក្យ​សម្ងាážáŸ‹â€‹ ៖</translation> </message> <message> <source>&File:</source> - <translation type="unfinished"></translation> + <translation>ឯកសារ​ ៖</translation> </message> <message> <source>&Bucket:</source> - <translation type="unfinished"></translation> + <translation>ធុង​ ៖</translation> </message> <message> <source>&Hostname:</source> - <translation type="unfinished"></translation> + <translation>ឈ្មោះ​ម៉ាស៊ីន​ ៖</translation> </message> <message> <source>Write in legacy OVF 0.9 format for compatibility with other virtualization products.</source> - <translation type="unfinished"></translation> + <translation>សរ​សáŸážšâ€‹áž€áŸ’នុង​​ទ្រង់​ទ្រាយ​ OVF 0.9 ​ចាស់ៗ​ សម្រាប់​ភាព​ឆប​គ្នា​ជាមួយផលិážâ€‹áž•áž›áž“ិម្មិážâ€‹áž•áŸ’សáŸáž„​ទៀážâ€‹ ។</translation> </message> <message> <source>&Write legacy OVF 0.9</source> - <translation type="unfinished"></translation> + <translation>សáŸážšâ€‹ážŸáŸážšâ€‹ OVF 0.9 ចាស់ៗ</translation> </message> <message> <source>&Export ></source> - <translation type="unfinished"></translation> + <translation>នាំ​ចáŸáž‰></translation> </message> </context> <context> @@ -1343,7 +1221,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Network</source> - <translation type="unfinished">បណ្ដាញ</translation> + <translation>បណ្ដាញ</translation> </message> </context> <context> @@ -1382,15 +1260,15 @@ p, li { white-space: pre-wrap; } </message> <message> <source>When checked, the Dock Icon will reflect the VM window content in realtime.</source> - <translation type="unfinished"></translation> + <translation>នៅពáŸáž›áž”ានគូស​ធីក រូប​ážáŸ†ážŽáž¶áž„​ចូលផែ​នឹង​ជះឥទ្ធិពល​លើ​មាážáž·áž€áž¶â€‹áž”ង្អួច​ VM នៅ​ក្នុង realtime ។</translation> </message> <message> <source>&Dock Icon Realtime Preview</source> - <translation type="unfinished"></translation> + <translation>មើល​រូបážáŸ†ážŽáž¶áž„​ចូលផែ Realtime ជា​មុន</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> - <translation type="unfinished"></translation> + <source>&Auto show Dock and Menubar in fullscreen</source> + <translation>បង្ហាញ​ចážâ€‹ážŠáŸ„យ​ស្វáŸáž™â€‹áž”្រវážáŸ’ážáž·â€‹ និងរបារ​ម៉ឺនុយ​​អáŸáž€áŸ’រង់​ពáŸáž‰â€‹</translation> </message> </context> <context> @@ -1460,251 +1338,340 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Author</source> - <translation>អ្នកបកប្រែ</translation> + <translation>អ្នកនិពន្ធ</translation> </message> <message> <source>Author(s):</source> - <translation>យុážáŸ’កា ៖</translation> + <translation>អ្នកនិពន្ធ ៖</translation> </message> </context> <context> <name>VBoxGLSettingsNetwork</name> <message> <source>%1 network</source> - <comment><adapter name> network</comment> - <translation type="unfinished"></translation> + <comment> + + +<adapter name> network</comment> + <translation type="obsolete">%1 បណ្ដាញ</translation> </message> <message> <source>host IPv4 address of <b>%1</b> is wrong</source> - <translation type="unfinished"></translation> + <translation>អាសយដ្ឋាន IPv4 ម៉ាស៊ីន​របស់ <b>%1</b> មិន​ážáŸ’រឹមážáŸ’រូវ</translation> </message> <message> <source>host IPv4 network mask of <b>%1</b> is wrong</source> - <translation type="unfinished"></translation> + <translation>របាំង​បណ្ដាញ​ម៉ាស៊ីន IPv4 របស់ <b>%1</b> មិន​ážáŸ’រឹមážáŸ’រូវទáŸ</translation> </message> <message> <source>host IPv6 address of <b>%1</b> is wrong</source> - <translation type="unfinished"></translation> + <translation>អាសយដ្ឋាន​ម៉ាស៊ីន IPv6 របស់ <b>%1</b> មិន​ážáŸ’រឹមážáŸ’រូវ​ទáŸ</translation> </message> <message> <source>DHCP server address of <b>%1</b> is wrong</source> - <translation type="unfinished"></translation> + <translation>អាសយដ្ឋាន​ម៉ាស៊ីន​បម្រើ DHCP របស់<b>%1</b> មិន​ážáŸ’រឹមážáŸ’រូវ​ទáŸ</translation> </message> <message> <source>DHCP server network mask of <b>%1</b> is wrong</source> - <translation type="unfinished"></translation> + <translation>របាំង​បណ្ដាញ​ម៉ាស៊ីន​បម្រើ DHCP​ របស់<b>%1</b> មិន​ážáŸ’រឹមážáŸ’រូវទáŸ</translation> </message> <message> <source>DHCP lower address bound of <b>%1</b> is wrong</source> - <translation type="unfinished"></translation> + <translation>ដែន​អាសយដ្ឋាន​ទាប​របស់ DHCP នៃ<b>%1</b> មិន​ážáŸ’រឹមážáŸ’រូវ​ទáŸ</translation> </message> <message> <source>DHCP upper address bound of <b>%1</b> is wrong</source> - <translation type="unfinished"></translation> + <translation>ដែន​អាសយដ្ឋាន​ážáŸ’ពស់​របស់ DHCP នៃ<b>%1</b> មិន​ážáŸ’រឹមážáŸ’រូវ​ទáŸ</translation> </message> <message> <source>Adapter</source> - <translation type="unfinished"></translation> + <translation>អាដាប់​ទáŸážš</translation> </message> <message> <source>Automatically configured</source> - <comment>interface</comment> - <translation type="unfinished"></translation> + <comment> + + + +interface</comment> + <translation type="obsolete">បាន​កំណážáŸ‹â€‹ážšáž…នាសម្ពáŸáž“្ធ​ដោយ​ស្វáŸáž™â€‹áž”្រវážáŸ’ážáž·</translation> </message> <message> <source>Manually configured</source> - <comment>interface</comment> - <translation type="unfinished"></translation> + <comment> + + + +interface</comment> + <translation type="obsolete">បាន​កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​​ដោយ​ដៃ​</translation> </message> <message> <source>IPv4 Address</source> - <translation type="unfinished"></translation> + <translation>អាសយ​ដ្ឋាន IPv4​</translation> </message> <message> <source>Not set</source> - <comment>address</comment> - <translation type="unfinished"></translation> + <comment> + + + +address</comment> + <translation type="obsolete">មិន​បាន​​កំណážáŸ‹â€‹</translation> </message> <message> <source>IPv4 Network Mask</source> - <translation type="unfinished"></translation> + <translation>របាំង​បណ្ážáž¶áž‰â€‹ IPv4</translation> </message> <message> <source>Not set</source> - <comment>mask</comment> - <translation type="unfinished"></translation> + <comment> + + + +mask</comment> + <translation type="obsolete">មិនបាន​​កំណážáŸ‹â€‹</translation> </message> <message> <source>IPv6 Address</source> - <translation type="unfinished"></translation> + <translation>អាសយ​ដ្ឋាន​ IPv6</translation> </message> <message> <source>IPv6 Network Mask Length</source> - <translation type="unfinished"></translation> + <translation>ប្រវែង​របាំង​បណ្ážáž¶áž‰â€‹ IPv6</translation> </message> <message> <source>Not set</source> - <comment>length</comment> - <translation type="unfinished"></translation> + <comment> + + + +length</comment> + <translation type="obsolete">មិន​បាន​​កំណážáŸ‹â€‹</translation> </message> <message> <source>DHCP Server</source> - <translation type="unfinished"></translation> + <translation>ម៉ាស៊ីន​បម្រើ​ DHCP</translation> </message> <message> <source>Enabled</source> - <comment>server</comment> - <translation type="unfinished">បានបើក</translation> + <comment> + + + +server</comment> + <translation type="obsolete">បាន​បើក</translation> </message> <message> <source>Disabled</source> - <comment>server</comment> - <translation type="unfinished"></translation> + <comment> + + + +server</comment> + <translation type="obsolete">​បាន​បើក</translation> </message> <message> <source>Address</source> - <translation type="unfinished"></translation> + <translation>អាសយដ្ឋាន​</translation> </message> <message> <source>Network Mask</source> - <translation type="unfinished"></translation> + <translation>របាំង​បណ្ážáž¶áž‰â€‹</translation> </message> <message> <source>Lower Bound</source> - <translation type="unfinished"></translation> + <translation>ព្រំ​ដែន​ទាប​​</translation> </message> <message> <source>Not set</source> - <comment>bound</comment> - <translation type="unfinished"></translation> + <comment> + + + +bound</comment> + <translation type="obsolete">មិន​បាន​កំណážáŸ‹â€‹</translation> </message> <message> <source>Upper Bound</source> - <translation type="unfinished"></translation> + <translation>ព្រំ​ដែន​ážáŸ’ពស់​</translation> </message> <message> <source>&Add host-only network</source> - <translation type="unfinished"></translation> + <translation>សម្រាប់​ážáŸ‚​បណ្ដាញ​ម៉ាស៊ីនប៉ុណ្ណោះ</translation> </message> <message> <source>&Remove host-only network</source> - <translation type="unfinished"></translation> + <translation>យក​បណ្ដាញ​ម៉ាស៊ីន​ចáŸáž‰â€‹áž”៉ុណ្ណោះ</translation> </message> <message> <source>&Edit host-only network</source> - <translation type="unfinished"></translation> + <translation>កែសម្រួល​បណ្ដាញម៉ាស៊ីន​ប៉ុណ្ណោះ​</translation> </message> <message> <source>Performing</source> - <comment>creating/removing host-only network</comment> - <translation type="unfinished"></translation> + <comment> + + + +creating/removing host-only network</comment> + <translation type="obsolete">ការ​អនុវážáŸ’ážâ€‹</translation> </message> <message> <source>&Host-only Networks:</source> - <translation type="unfinished"></translation> + <translation>បណ្ដាញ​ម៉ាស៊ីន​ប៉ុណ្ណោះ ៖</translation> </message> <message> <source>Lists all available host-only networks.</source> - <translation type="unfinished"></translation> + <translation>រាយ​បណ្ដាញ​ម៉ាស៊ីន​ដែលអាច​ប្រើបាន ។</translation> </message> <message> <source>Name</source> - <translation type="unfinished">ឈ្មោះ</translation> + <translation>ឈ្មោះ</translation> + </message> + <message> + <source>%1 network</source> + <comment><adapter name> network</comment> + <translation type="unfinished">%1 បណ្ដាញ</translation> + </message> + <message> + <source>Automatically configured</source> + <comment>interface</comment> + <translation type="unfinished">បាន​កំណážáŸ‹â€‹ážšáž…នាសម្ពáŸáž“្ធ​ដោយ​ស្វáŸáž™â€‹áž”្រវážáŸ’ážáž·</translation> + </message> + <message> + <source>Manually configured</source> + <comment>interface</comment> + <translation type="unfinished">បាន​កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​​ដោយ​ដៃ​</translation> + </message> + <message> + <source>Not set</source> + <comment>address</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Not set</source> + <comment>mask</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Not set</source> + <comment>length</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enabled</source> + <comment>server</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disabled</source> + <comment>server</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Not set</source> + <comment>bound</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Performing</source> + <comment>creating/removing host-only network</comment> + <translation type="unfinished">ការ​អនុវážáŸ’ážâ€‹</translation> </message> </context> <context> <name>VBoxGLSettingsNetworkDetails</name> <message> <source>Host-only Network Details</source> - <translation type="unfinished"></translation> + <translation>សáŸáž…​ក្ážáž¸â€‹áž›áž˜áŸ’អិážâ€‹áž”ណ្ážáž¶áž‰â€‹â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​</translation> </message> <message> <source>&Adapter</source> - <translation type="unfinished"></translation> + <translation>អាដាប់ទáŸážš</translation> </message> <message> <source>Manual &Configuration</source> - <translation type="unfinished"></translation> + <translation>ការ​កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​ដោយ​ដៃ​</translation> </message> <message> <source>Use manual configuration for this host-only network adapter.</source> - <translation type="unfinished"></translation> + <translation>ប្រើ​ការ​កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​​ដោយ​ដៃ ​សម្រាប់​​​អាដាប់​ទáŸážšâ€‹â€‹áž”ណ្ážáž¶áž‰â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​​-ážáŸ‚​​មួយ​នáŸáŸ‡â€‹ ។</translation> </message> <message> <source>&IPv4 Address:</source> - <translation type="unfinished"></translation> + <translation>អា​សយ​ដ្ឋាន​ IPv4 ៖</translation> </message> <message> <source>Displays the host IPv4 address for this adapter.</source> - <translation type="unfinished"></translation> + <translation>បង្ហាញ​អា​សយ​ដ្ឋាន​​ម៉ាស៊ីន​ IPv4 សម្រាប់​​អាដាប់​ទáŸážšâ€‹â€‹áž“áŸáŸ‡â€‹ ។</translation> </message> <message> <source>IPv4 Network &Mask:</source> - <translation type="unfinished"></translation> + <translation>របាំង​បណ្ážáž¶áž‰â€‹ IPv4 ៖</translation> </message> <message> <source>Displays the host IPv4 network mask for this adapter.</source> - <translation type="unfinished"></translation> + <translation>បង្ហាញ​របាំង​បណ្ážáž¶áž‰â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​ IPv4 សម្រាប់​អាដាប់​ទáŸážšâ€‹áž“áŸáŸ‡â€‹Â ។</translation> </message> <message> <source>I&Pv6 Address:</source> - <translation type="unfinished"></translation> + <translation>អាសយដ្ឋាន​ IPv6 ៖</translation> </message> <message> <source>Displays the host IPv6 address for this adapter if IPv6 is supported.</source> - <translation type="unfinished"></translation> + <translation>បង្ហាញ​​អា​សយដ្ឋាន​ម៉ាស៊ីន​ IPv6 សម្រាប់​​អាដាប់​ទáŸážšâ€‹â€‹áž“áŸáŸ‡ ​ប្រ​សិន​បើ​​ IPv6 ážáŸ’រូវ​បាន​គាំ​ទ្រ ។</translation> </message> <message> <source>IPv6 Network Mask &Length:</source> - <translation type="unfinished"></translation> + <translation>ប្រ​វែង​របាំង​បណ្ážáž¶áž‰â€‹ IPv6 ៖</translation> </message> <message> <source>Displays the host IPv6 network mask prefix length for this adapter if IPv6 is supported.</source> - <translation type="unfinished"></translation> + <translation>បង្ហាញ​ប្រ​វែង​​បុព្វបទ​របាំង​បណ្ážáž¶áž‰â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​ IPv6​ សម្រាប់​​អាដាប់​ទáŸážšâ€‹â€‹áž“áŸáŸ‡ ​ប្រ​សិន​បើ​ IPv6 ážáŸ’រូវ​បាន​គាំ​ទ្រ​ ។</translation> </message> <message> <source>&DHCP Server</source> - <translation type="unfinished"></translation> + <translation>ម៉ាស៊ីន​បម្រើ​ DHCP</translation> </message> <message> <source>&Enable Server</source> - <translation type="unfinished"></translation> + <translation>បើក​ម៉ាស៊ីន​បម្រើ​</translation> </message> <message> <source>Indicates whether the DHCP Server is enabled on machine startup or not.</source> - <translation type="unfinished"></translation> + <translation>បង្ហាញ​​ážáž¶â€‹ážáž¾â€‹áž˜áŸ‰áž¶â€‹ážŸáŸŠáž¸áž“​បម្រើ​​ DHCP ážáŸ’រូវ​បាន​បើក​នៅពáŸáž›â€‹áž…ាប់ផ្ដើម​ដែរ​ឬទáŸÂ ។</translation> </message> <message> <source>Server Add&ress:</source> - <translation type="unfinished"></translation> + <translation>អាសយដ្ឋាន​ម៉ាស៊ីន​បម្រើ​ ៖</translation> </message> <message> <source>Displays the address of the DHCP server servicing the network associated with this host-only adapter.</source> - <translation type="unfinished"></translation> + <translation>បង្ហាញ​អាសយដ្ឋាន​បម្រើ​ម៉ាស៊ីន​​របស់​ DHCP ដែល​ភ្ជាប់​​បណ្ážáž¶áž‰â€‹áž‡áž¶áž˜áž½áž™â€‹áž€áž˜áŸ’ម​វិធី​សម្រួល​​ម៉ាស៊ីន​​-ážáŸ‚​មួយនáŸáŸ‡â€‹â€‹ ។</translation> </message> <message> <source>Server &Mask:</source> - <translation type="unfinished"></translation> + <translation>របាំង​ម៉ា​ស៊ីនបម្រើ​ ៖</translation> </message> <message> <source>Displays the network mask of the DHCP server servicing the network associated with this host-only adapter.</source> - <translation type="unfinished"></translation> + <translation>បង្ហាញ​របាំង​បណ្ážáž¶áž‰â€‹â€‹ážŸáŸážœáž¶â€‹â€‹áž”ម្រើ​ម៉ា​ស៊ីន​របស់​ DHCP ដែល​ភ្ជាប់​​​ជា​មួយ​កម្ម​វិធី​សម្រួល​ម៉ា​ស៊ីន​​-​ážáŸ‚​មួយ​នáŸáŸ‡â€‹Â ។</translation> </message> <message> <source>&Lower Address Bound:</source> - <translation type="unfinished"></translation> + <translation>ព្រំ​ដែន​អា​សយ​ដ្ឋាន​ទាប​ ៖</translation> </message> <message> <source>Displays the lower address bound offered by the DHCP server servicing the network associated with this host-only adapter.</source> - <translation type="unfinished"></translation> + <translation>បង្ហាញ​ព្រំដែន​អាសយដ្ឋានទាប​ដែល​បានផ្ដល់ដោយ​សáŸážœáž¶â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​បម្រើ DHCP ដែល​បានភ្ជាប់​ជា​មួយនឹងកម្មវិធី​សម្រួល​ម៉ាស៊ីន​ ។</translation> </message> <message> <source>&Upper Address Bound:</source> - <translation type="unfinished"></translation> + <translation>ព្រំដែន​អា​សយដ្ឋានážáŸ’ពស់​ ៖</translation> </message> <message> <source>Displays the upper address bound offered by the DHCP server servicing the network associated with this host-only adapter.</source> - <translation type="unfinished"></translation> + <translation>បង្ហាញ​ព្រំដែន​អាសយដ្ឋាន​ážáŸ’ពស់​ដែលបានផ្ដល់​ដោយ​ម៉ាស៊ីន​បម្រើ DHCP ដោយ​ផ្ដល់​សáŸážœáž¶â€‹áž”ណ្ដាញ​ភ្ជាប់​ជា​មួយ​នឹង​អាដាប់ទáŸážšâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​ ។</translation> </message> </context> <context> @@ -1731,31 +1698,31 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Check for:</source> - <translation type="unfinished"></translation> + <translation>áž–áž·áž“áž·ážáŸ’យ​មើល ៖</translation> </message> <message> <source><p>Choose this if you only wish to be notified about stable updates to VirtualBox.</p></source> - <translation type="unfinished"></translation> + <translation><p>ជ្រើសវា​ ប្រសិនបើ​អ្នក​ចង់​ឲ្យ​ជូន​ដំណឹង​អំពី​ភាព​ទាន់សមáŸáž™â€‹ážŸáŸ’ážáž·ážážŸáŸ’ážáŸážšâ€‹ážŠáž›áŸ‹ VirtualBox ។</p></translation> </message> <message> <source>&Stable release versions</source> - <translation type="unfinished"></translation> + <translation>កំណែ​ចáŸáž‰â€‹áž•áŸ’សាយ​ស្ážáž·ážážŸáŸ’ážáŸážšâ€‹</translation> </message> <message> <source><p>Choose this if you wish to be notified about all new VirtualBox releases.</p></source> - <translation type="unfinished"></translation> + <translation><p>ជ្រើសវា​ ប្រសិន​បើ​អ្នក​ចង់​ឲ្យ​ជូន​ដំណឹង​អំពី​ការ​ចáŸáž‰áž•áŸ’សាយ​ VirtualBox ážáŸ’មី ។</p></translation> </message> <message> <source>&All new releases</source> - <translation type="unfinished"></translation> + <translation>ការ​ចáŸáž‰áž•áŸ’សាយ​ážáŸ’មី​ទាំងអស់​</translation> </message> <message> <source><p>Choose this to be notified about all new VirtualBox releases and pre-release versions of VirtualBox.</p></source> - <translation type="unfinished"></translation> + <translation><p>ជ្រើស​វាដើម្បី​ឲ្យ​ជូន​ដំណឹង​អំពី​​កំណែ​​ចáŸáž‰áž•áŸ’សាយ​​​របស់ VirtualBox និង​និងចáŸáž‰â€‹áž•áŸ’សាយ​មុន​របស់ VirtualBox ។</p></translation> </message> <message> <source>All new releases and &pre-releases</source> - <translation type="unfinished"></translation> + <translation>ការ​ចáŸáž‰â€‹áž•áŸ’សាយ​ážáŸ’មី និង​ចáŸáž‰â€‹áž•áŸ’សាយ​មុន​ទាំងអស់</translation> </message> </context> <context> @@ -1796,11 +1763,6 @@ p, li { white-space: pre-wrap; } <translation>សážáž·â€‹áž˜áž¼áž›ážŠáŸ’ឋាន</translation> </message> <message> - <source><nobr>%3 MB</nobr></source> - <comment>details report</comment> - <translation type="obsolete"><nobr>%3 មáŸáž€áž¶áž”ៃ</nobr></translation> - </message> - <message> <source>General</source> <comment>details report</comment> <translation>ទូទៅ</translation> @@ -1811,11 +1773,6 @@ p, li { white-space: pre-wrap; } <translation>សážáž·â€‹ážœáž¸ážŠáŸáž¢áž¼</translation> </message> <message> - <source><nobr>%4 MB</nobr></source> - <comment>details report</comment> - <translation type="obsolete"><nobr>%4 មáŸáž€áž¶áž”ៃ</nobr></translation> - </message> - <message> <source>Boot Order</source> <comment>details report</comment> <translation>លំដាប់​ចាប់ផ្ដើម</translation> @@ -1831,16 +1788,6 @@ p, li { white-space: pre-wrap; } <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> @@ -1861,46 +1808,6 @@ p, li { white-space: pre-wrap; } <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>Disabled</source> <comment>details report (audio)</comment> <translation>បានបិទ</translation> @@ -1941,30 +1848,6 @@ p, li { white-space: pre-wrap; } <translation>បានបិទ</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">បើក​ URLs ដែល​មិនážáŸ’រូវ​បាន​អនុវážáŸ’ážâ€‹áž“ៅ​ឡើយ​ទáŸÂ ។</translation> - </message> - <message> <source>Powered Off</source> <comment>MachineState</comment> <translation>បិទ</translation> @@ -2010,11 +1893,6 @@ p, li { white-space: pre-wrap; } <translation>ស្ដារឡើងវិញ</translation> </message> <message> - <source>Discarding</source> - <comment>MachineState</comment> - <translation type="obsolete">បដិសáŸáž’</translation> - </message> - <message> <source>Closed</source> <comment>SessionState</comment> <translation>បានបិទ</translation> @@ -2140,11 +2018,6 @@ p, li { white-space: pre-wrap; } <translation>NAT</translation> </message> <message> - <source>Host Interface</source> - <comment>NetworkAttachmentType</comment> - <translation type="obsolete">ចំណុច​ប្រទាក់​ម៉ាស៊ីន</translation> - </message> - <message> <source>Internal Network</source> <comment>NetworkAttachmentType</comment> <translation>បណ្ដាញ​អ៊ីនធឺណិáž</translation> @@ -2200,14 +2073,6 @@ p, li { white-space: pre-wrap; } <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> @@ -2233,11 +2098,6 @@ p, li { white-space: pre-wrap; } <translation>ážážâ€‹ážŠáŸ‚ល​បានចែករំលែក</translation> </message> <message> - <source>%1</source> - <comment>details report (shadef folders)</comment> - <translation type="obsolete">%1</translation> - </message> - <message> <source>None</source> <comment>details report (shared folders)</comment> <translation>គ្មាន</translation> @@ -2248,11 +2108,6 @@ p, li { white-space: pre-wrap; } <translation>ážážâ€‹ážŠáŸ‚លបានចែករំលែក</translation> </message> <message> - <source>Stuck</source> - <comment>MachineState</comment> - <translation type="obsolete">គាំង</translation> - </message> - <message> <source>Disconnected</source> <comment>PortMode</comment> <translation>បានផ្ដាច់</translation> @@ -2408,16 +2263,6 @@ p, li { white-space: pre-wrap; } <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> - </message> - <message> <source>Intel PRO/1000 T Server (82543GC)</source> <comment>NetworkAdapterType</comment> <translation>Intel PRO/1000 T Server (82543GC)</translation> @@ -2463,51 +2308,11 @@ p, li { white-space: pre-wrap; } <translation><nobr>ស្ážáž¶áž“ភាព ៖ %1</nobr></translation> </message> <message> - <source>host interface, %1</source> - <comment>details report (network)</comment> - <translation type="obsolete">ចំណុច​ប្រទាក់​ម៉ាស៊ីន %1</translation> - </message> - <message> - <source>internal network, '%1'</source> - <comment>details report (network)</comment> - <translation type="obsolete">បណ្ដាញ​ážáž¶áž„​ក្នុង '%1'</translation> - </message> - <message> <source>Adapter %1</source> <comment>network</comment> <translation>អាដាប់ទáŸážš %1</translation> </message> <message> - <source><br><nobr>Type&nbsp;(Format):&nbsp;&nbsp;%2&nbsp;(%3)</nobr></source> - <comment>hard disk</comment> - <translation type="obsolete"><br><nobr>ប្រភáŸáž‘&nbsp;(ទ្រង់ទ្រាយ) ៖&nbsp;&nbsp;%2&nbsp;(%3)</nobr></translation> - </message> - <message> - <source><br><nobr>Attached to:&nbsp;&nbsp;%1</nobr></source> - <comment>medium</comment> - <translation type="obsolete"><br><nobr>បាន​ភ្ជាប់​ទៅ​កាន់ ៖&nbsp;&nbsp;%1</nobr></translation> - </message> - <message> - <source><i>Not&nbsp;Attached</i></source> - <comment>medium</comment> - <translation type="obsolete"><i>មិនបាន​ភ្ជាប់​ទáŸ</i></translation> - </message> - <message> - <source><br><i>Checking accessibility...</i></source> - <comment>medium</comment> - <translation type="obsolete"><br><i>កំពុង​ពិនិážáŸ’យ​មើលភាព​ចូលដំណើរការ​បាន...</i></translation> - </message> - <message> - <source><hr>Failed to check media accessibility.<br>%1.</source> - <comment>medium</comment> - <translation type="obsolete"><hr>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងការ​ពិនិážáŸ’យ​មើល​ភាព​អាច​ចូលដំណើរការ​បាន ។<br>%1 ។</translation> - </message> - <message> - <source><hr><img src=%1/>&nbsp;Attaching this hard disk will be performed indirectly using a newly created differencing hard disk.</source> - <comment>medium</comment> - <translation type="obsolete"><hr><img src=%1/>&nbsp;ការ​ភ្ជាប់​ážáž¶ážŸážšáž¹áž„​នáŸáŸ‡â€‹áž“ឹង​ážáŸ’រូ​វបាន​អនុវážáŸ’ážâ€‹ážŠáŸ„យ​ប្រយោល​ដោយ​ប្រើ​ážáž¶ážŸážšáž¹áž„​ផ្សáŸáž„​ដែលបាន​បង្កើážÂ ។</translation> - </message> - <message> <source>Checking...</source> <comment>medium</comment> <translation>កំពុង​ពិនិážáŸ’យ​មើល...</translation> @@ -2518,14 +2323,6 @@ p, li { white-space: pre-wrap; } <translation>មិនអាច​ចូលដំណើរការ​បាន</translation> </message> <message> - <source><hr>Some of the media in this hard disk chain are inaccessible. Please use the Virtual Media Manager in <b>Show Differencing Hard Disks</b> mode to inspect these media.</source> - <translation type="obsolete"><hr>មáŸážŒáŸ€â€‹áž˜áž½áž™â€‹áž…ំនួន​នៅ​ក្នុង​ážáž¶ážŸâ€‹ážšáž¹áž„​​មិនអាច​ដំណើរកា​របានទáŸÂ ។ សូម​ប្រើ​កម្មវិធី​គ្រប់គ្រង​មáŸážŒáŸ€â€‹áž“ិម្មិážâ€‹áž“ៅ​ក្នុង​របៀប <b>បង្ហាញ​ážáž¶ážŸâ€‹ážšáž¹áž„​ផ្សáŸáž„ៗ</b> ដើម្បី​ពិនិážáŸ’យ​មើល​មáŸážŒáŸ€â€‹áž‘ាំង​នោះ ។</translation> - </message> - <message> - <source>%1<hr>This base hard disk is indirectly attached using the following differencing hard disk:<br>%2%3</source> - <translation type="obsolete">%1<hr>ážáž¶ážŸážšáž¹áž„​មូលដ្ឋាន​នáŸáŸ‡â€‹ážáŸ’រូវ​បានភ្ជាប់​ដោយ​ប្រយោល ដោយ​ប្រើ​ážáž¶ážŸážšáž¹áž„​ផ្សáŸáž„ៗ​ដូច​ážáž¶áž„ក្រោម ៖<br>%2%3</translation> - </message> - <message> <source>3D Acceleration</source> <comment>details report</comment> <translation>បង្កើន​ល្បឿន​ážáŸ’រីមាážáŸ’ážš</translation> @@ -2552,357 +2349,910 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Enabled</source> - <comment>details report (Nested Paging)</comment> - <translation type="unfinished">បានបើក</translation> + <comment> + + + +details report (Nested Paging)</comment> + <translation type="obsolete">បានបើក</translation> </message> <message> <source>Disabled</source> - <comment>details report (Nested Paging)</comment> - <translation type="unfinished"></translation> + <comment> + + + +details report (Nested Paging)</comment> + <translation type="obsolete">​បាន​បើក​</translation> </message> <message> <source><nobr>%1 MB</nobr></source> - <comment>details report</comment> - <translation type="unfinished"></translation> + <comment> + + + +details report</comment> + <translation type="obsolete"><nobr>%1 មáŸáž€áž¶áž”ៃ​</nobr></translation> </message> <message> <source>Processor(s)</source> - <comment>details report</comment> - <translation type="unfinished"></translation> + <comment> + + + +details report</comment> + <translation type="obsolete">ប្រពáŸáž“្ធ​ដំណើរ​ការ​</translation> </message> <message> <source><nobr>%1</nobr></source> - <comment>details report</comment> - <translation type="unfinished"></translation> + <comment> + + + +details report</comment> + <translation type="obsolete"><nobr>%1</nobr></translation> </message> <message> <source>Nested Paging</source> - <comment>details report</comment> - <translation type="unfinished">áž—áŸáž™áž¸áž„​ážáž¶áž„​ក្នុង</translation> + <comment> + + + +details report</comment> + <translation type="obsolete">Paging ážáž¶áž„​ក្នុង</translation> </message> <message> <source>System</source> - <comment>details report</comment> - <translation type="unfinished"></translation> + <comment> + + + +details report</comment> + <translation type="obsolete">ប្រពáŸáž“្ធ</translation> </message> <message> <source>Enabled</source> - <comment>details report (2D Video Acceleration)</comment> - <translation type="unfinished">បានបើក</translation> + <comment> + + + +details report (2D Video Acceleration)</comment> + <translation type="obsolete">បានបើក</translation> </message> <message> <source>Disabled</source> - <comment>details report (2D Video Acceleration)</comment> - <translation type="unfinished"></translation> + <comment> + + + +details report (2D Video Acceleration)</comment> + <translation type="obsolete">បាន​បិទ​</translation> </message> <message> <source>2D Video Acceleration</source> - <comment>details report</comment> - <translation type="unfinished"></translation> + <comment> + + + +details report</comment> + <translation type="obsolete">ការ​បង្កើន​ល្បឿន​វីដáŸáž¢áž¼â€‹â€‹áž‘្វáŸâ€‹áž˜áž¶ážáŸ’ážš</translation> </message> <message> <source>Remote Display Server Port</source> - <comment>details report (VRDP Server)</comment> - <translation type="unfinished"></translation> + <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="unfinished"></translation> + <comment> + + + +details report (VRDP Server)</comment> + <translation type="obsolete">ម៉ា​ស៊ីន​បម្រើ​បង្ហាញ​ពី​ចម្ងាយ​</translation> </message> <message> <source>Disabled</source> - <comment>details report (VRDP Server)</comment> - <translation type="unfinished"></translation> + <comment> + + + +details report (VRDP Server)</comment> + <translation type="obsolete">បាន​បិទ</translation> </message> <message> <source>Display</source> - <comment>details report</comment> - <translation type="unfinished"></translation> + <comment> + + + +details report</comment> + <translation type="obsolete">បង្ហាញ​</translation> </message> <message> <source>Not Attached</source> - <comment>details report (Storage)</comment> - <translation type="unfinished">មិន​បានភ្ជាប់</translation> + <comment> + + + +details report (Storage)</comment> + <translation type="obsolete">មិន​បានភ្ជាប់</translation> </message> <message> <source>Storage</source> - <comment>details report</comment> - <translation type="unfinished">កា​រផ្ទុក</translation> + <comment> + + + +details report</comment> + <translation type="obsolete">ផ្ទុក</translation> </message> <message> <source>Bridged adapter, %1</source> - <comment>details report (network)</comment> - <translation type="unfinished"></translation> + <comment> + + + +details report (network)</comment> + <translation type="obsolete">​អាដាប់​ទáŸážšáž”្រ៊ីដ្យ​​ %1</translation> </message> <message> <source>Internal network, '%1'</source> - <comment>details report (network)</comment> - <translation type="unfinished"></translation> + <comment> + + + +details report (network)</comment> + <translation type="obsolete">បណ្ážáž¶áž‰â€‹ážáž¶áž„​ក្នុង '%1'</translation> </message> <message> <source>Host-only adapter, '%1'</source> - <comment>details report (network)</comment> - <translation type="unfinished"></translation> + <comment> + + + +details report (network)</comment> + <translation type="obsolete">​អាដាប់​ទáŸážšâ€‹â€‹ ម៉ាស៊ីន​​-​ážáŸ‚​មួយ '%1'​</translation> </message> <message> <source>Teleported</source> - <comment>MachineState</comment> - <translation type="unfinished"></translation> + <comment> + + + +MachineState</comment> + <translation type="obsolete">បញ្ជួន​</translation> </message> <message> <source>Guru Meditation</source> - <comment>MachineState</comment> - <translation type="unfinished"></translation> + <comment> + + + +MachineState</comment> + <translation type="obsolete">ការ​វិភាគ​រក​ Guru</translation> </message> <message> <source>Teleporting</source> - <comment>MachineState</comment> - <translation type="unfinished"></translation> + <comment> + + + +MachineState</comment> + <translation type="obsolete">ការ​បញ្ជួន​</translation> </message> <message> <source>Taking Live Snapshot</source> - <comment>MachineState</comment> - <translation type="unfinished"></translation> + <comment> + + + +MachineState</comment> + <translation type="obsolete">​ážážážšáž¼áž”​​ផ្ទាល់​</translation> </message> <message> <source>Teleporting Paused VM</source> - <comment>MachineState</comment> - <translation type="unfinished"></translation> + <comment> + + + +MachineState</comment> + <translation type="obsolete">ការ​បញ្ជូនបានផ្អាក VM</translation> </message> <message> <source>Restoring Snapshot</source> - <comment>MachineState</comment> - <translation type="unfinished"></translation> + <comment> + + + +MachineState</comment> + <translation type="obsolete">ការ​ស្ážáž¶ážšâ€‹ážšáž¼áž”​ážážâ€‹</translation> </message> <message> <source>Deleting Snapshot</source> - <comment>MachineState</comment> - <translation type="unfinished"></translation> + <comment> + + + +MachineState</comment> + <translation type="obsolete">ការ​លុប​រូប​ážážâ€‹</translation> </message> <message> <source>SCSI</source> - <comment>StorageBus</comment> - <translation type="unfinished"></translation> + <comment> + + + +StorageBus</comment> + <translation type="obsolete">SCSI</translation> </message> <message> <source>Floppy</source> - <comment>StorageBus</comment> - <translation type="unfinished">ážáž¶ážŸáž‘ន់</translation> + <comment> + + + +StorageBus</comment> + <translation type="obsolete">ážáž¶áž‘ន់</translation> </message> <message> <source>Device %1</source> - <comment>StorageBusDevice</comment> - <translation type="unfinished"></translation> + <comment> + + + +StorageBusDevice</comment> + <translation type="obsolete">ឧបករណáŸâ€‹â€‹â€‹â€‹ %1</translation> </message> <message> <source>IDE Primary Master</source> - <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <comment> + + + +New Storage UI : Slot Name</comment> + <translation type="obsolete">មáŸâ€‹áž…ម្បង​ IDE</translation> </message> <message> <source>IDE Primary Slave</source> - <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <comment> + + + +New Storage UI : Slot Name</comment> + <translation type="obsolete">កូន​ចៅ​ចម្បង​ IDE</translation> </message> <message> <source>IDE Secondary Master</source> - <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <comment> + + + +New Storage UI : Slot Name</comment> + <translation type="obsolete">មáŸâ€‹ážšáž„ IDE​</translation> </message> <message> <source>IDE Secondary Slave</source> - <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <comment> + + + +New Storage UI : Slot Name</comment> + <translation type="obsolete">កូន​ចៅ​រង​ IDE</translation> </message> <message> <source>SATA Port %1</source> - <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <comment> + + + +New Storage UI : Slot Name</comment> + <translation type="obsolete">ច្រក SATA​ %1</translation> </message> <message> <source>SCSI Port %1</source> - <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <comment> + + + +New Storage UI : Slot Name</comment> + <translation type="obsolete">ច្រក​ SCSI​ %1</translation> </message> <message> <source>Floppy Device %1</source> - <comment>New Storage UI : Slot Name</comment> - <translation type="unfinished"></translation> + <comment> + + + +New Storage UI : Slot Name</comment> + <translation type="obsolete">ឧបករណáŸážáž¶â€‹â€‹áž‘ន់​​ %1</translation> </message> <message> <source>Raw File</source> - <comment>PortMode</comment> - <translation type="unfinished"></translation> + <comment> + + + +PortMode</comment> + <translation type="obsolete">ឯកសារ​ដើម​</translation> </message> <message> <source>Intel PRO/1000 MT Server (82545EM)</source> - <comment>NetworkAdapterType</comment> - <translation type="unfinished"></translation> + <comment> + + + +NetworkAdapterType</comment> + <translation type="obsolete">ម៉ាស៊ីន​បម្រើ​ Intel PRO/1000 MT ​(82545EM)</translation> </message> <message> <source>Paravirtualized Network (virtio-net)</source> - <comment>NetworkAdapterType</comment> - <translation type="unfinished"></translation> + <comment> + + + +NetworkAdapterType</comment> + <translation type="obsolete">បណ្ážáž¶áž‰â€‹ Paravirtualized (virtio-net)</translation> </message> <message> <source>Bridged Adapter</source> - <comment>NetworkAttachmentType</comment> - <translation type="unfinished"></translation> + <comment> + + + +NetworkAttachmentType</comment> + <translation type="obsolete">អាដាប់​​ទáŸážšâ€‹â€‹áž”្រ៊ីដ្យ​​</translation> </message> <message> <source>Host-only Adapter</source> - <comment>NetworkAttachmentType</comment> - <translation type="unfinished"></translation> + <comment> + + + +NetworkAttachmentType</comment> + <translation type="obsolete">អាដាប់​ទáŸážšâ€‹â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​​-​ážáŸ‚​មួយ​</translation> </message> <message> <source>PIIX3</source> - <comment>StorageControllerType</comment> - <translation type="unfinished">PIIX3</translation> + <comment> + + + +StorageControllerType</comment> + <translation type="obsolete">PIIX3</translation> </message> <message> <source>PIIX4</source> - <comment>StorageControllerType</comment> - <translation type="unfinished">PIIX4</translation> + <comment> + + + +StorageControllerType</comment> + <translation type="obsolete">PIIX4</translation> </message> <message> <source>ICH6</source> - <comment>StorageControllerType</comment> - <translation type="unfinished"></translation> + <comment> + + + +StorageControllerType</comment> + <translation type="obsolete">ICH6</translation> </message> <message> <source>AHCI</source> - <comment>StorageControllerType</comment> - <translation type="unfinished"></translation> + <comment> + + + +StorageControllerType</comment> + <translation type="obsolete">AHCI</translation> </message> <message> <source>Lsilogic</source> - <comment>StorageControllerType</comment> - <translation type="unfinished"></translation> + <comment> + + + +StorageControllerType</comment> + <translation type="obsolete">Lsilogic</translation> </message> <message> <source>BusLogic</source> - <comment>StorageControllerType</comment> - <translation type="unfinished"></translation> + <comment> + + + +StorageControllerType</comment> + <translation type="obsolete">BusLogic</translation> </message> <message> <source>I82078</source> - <comment>StorageControllerType</comment> - <translation type="unfinished"></translation> + <comment> + + + +StorageControllerType</comment> + <translation type="obsolete">I82078</translation> </message> <message> <source>Empty</source> - <comment>medium</comment> - <translation type="unfinished"></translation> + <comment> + + + +medium</comment> + <translation type="obsolete">áž‘áž‘áŸ</translation> </message> <message> <source>Host Drive '%1'</source> - <comment>medium</comment> - <translation type="unfinished"></translation> + <comment> + + + +medium</comment> + <translation type="obsolete">ដ្រាយ​ម៉ាស៊ីន​​ '%1'</translation> </message> <message> <source>Host Drive %1 (%2)</source> - <comment>medium</comment> - <translation type="unfinished"></translation> + <comment> + + + +medium</comment> + <translation type="obsolete">ដ្រាយ​ម៉ាស៊ីន​​ %1 (%2)</translation> </message> <message> <source><p style=white-space:pre>Type (Format): %1 (%2)</p></source> - <comment>medium</comment> - <translation type="unfinished"></translation> + <comment> + + + +medium</comment> + <translation type="obsolete"><p style=white-space:pre>ប្រភáŸáž‘​(​ទ្រង់​ទ្រាយ​) ៖ %1 (%2)</p></translation> </message> <message> <source><p>Attached to: %1</p></source> - <comment>image</comment> - <translation type="unfinished"></translation> + <comment> + + + +image</comment> + <translation type="obsolete"><p>បាន​​ភ្ជាប់​ទៅ​កាន់ ៖ %1</p></translation> </message> <message> <source><i>Not Attached</i></source> - <comment>image</comment> - <translation type="unfinished"></translation> + <comment> + + + +image</comment> + <translation type="obsolete"><i>មិន​បានភ្ជាប់</i></translation> </message> <message> <source><i>Checking accessibility...</i></source> - <comment>medium</comment> - <translation type="unfinished"></translation> + <comment> + + + +medium</comment> + <translation type="obsolete"><i>កំពុង​ពិនិážáŸ’យមើល​​​មធ្យោបាយ​ងាយ​ស្រួល​​...</i></translation> </message> <message> <source>Failed to check media accessibility.</source> - <comment>medium</comment> - <translation type="unfinished"></translation> + <comment> + + + +medium</comment> + <translation type="obsolete">បានបរាជáŸáž™â€‹áž€áŸ’នុងកា​រ​ពិនិážáŸ’យ​មើល​មធ្យោ​បាយ​ងាយ​ស្រួល​​របស់​មáŸážŒáŸ€Â ។​</translation> </message> <message> <source><b>No medium selected</b></source> - <comment>medium</comment> - <translation type="unfinished"></translation> + <comment> + + + +medium</comment> + <translation type="obsolete"><b>គ្មាន​ឧបករណáŸâ€‹ážáŸ’រូវ​បាន​ជ្រើស​ទáŸ</b></translation> </message> <message> <source>You can also change this while the machine is running.</source> - <translation type="unfinished"></translation> + <translation>អ្នក​កáŸáž¢áž¶áž…​ផ្លាស់ប្ដូរ​វា ážážŽáŸˆáž–áŸáž›â€‹ážŠáŸ‚ល​ម៉ាស៊ីន​កំពុង​រážáŸ‹Â ។</translation> </message> <message> <source><b>No media available</b></source> - <comment>medium</comment> - <translation type="unfinished"></translation> + <comment> + + + +medium</comment> + <translation type="obsolete"><b>មិនមាន​មáŸážŒáŸ€â€‹áž‘áŸ</b></translation> </message> <message> <source>You can create media images using the virtual media manager.</source> - <translation type="unfinished"></translation> + <translation>អ្នក​អាច​បង្កើážâ€‹ážšáž¼áž”ភាព​មáŸážŒáŸ€ ដោយ​ប្រើ​កម្មវិធី​គ្រប់គ្រង​មáŸážŒáŸ€â€‹áž“ិម្មិážÂ ។</translation> </message> <message> <source>Attaching this hard disk will be performed indirectly using a newly created differencing hard disk.</source> - <comment>medium</comment> - <translation type="unfinished"></translation> + <comment> + + + + +medium</comment> + <translation type="obsolete">ការ​ភ្ជាប់​ជា​មួយ​នឹង​ážáž¶ážŸâ€‹ážšáž¹áž„​នáŸáŸ‡ នឹង​ážáŸ’រូវ​បាន​អនុវážáŸ’ážâ€‹ážŠáŸ„យ​ប្រយោល​ ដោយ​ប្រើ​ážáž¶ážŸážšáž¹áž„​ផ្សáŸáž„​ដែលបានបង្កើážâ€‹ážáŸ’មីៗ ។</translation> </message> <message> <source>Some of the media in this hard disk chain are inaccessible. Please use the Virtual Media Manager in <b>Show Differencing Hard Disks</b> mode to inspect these media.</source> - <comment>medium</comment> - <translation type="unfinished"></translation> + <comment> + + + + + +medium</comment> + <translation type="obsolete">មáŸážŒáŸ€â€‹áž˜áž½áž™â€‹áž…ំនួន​នៅ​ក្នុង​ស្រឡាយ​ផ្នែក​រឹង​នáŸáŸ‡â€‹áž˜áž·áž“អាច​ចូល​ដំណើរការ​បាន​ទáŸÂ ។ សូម​ប្រើ​កម្មវិធី​គ្រប់គ្រង​មáŸážŒáŸ€â€‹áž“ិម្មិážâ€‹áž“ៅ​ក្នុង​របៀប <b>បង្ហាញ​ážáž¶ážŸážšáž¹áž„​ផ្សáŸáž„ៗ​គ្នា</b> ដើម្បី​ពិនិážáŸ’យមើល​មáŸážŒáŸ€â€‹áž‘ាំង​នáŸáŸ‡Â ។</translation> </message> <message> <source>This base hard disk is indirectly attached using the following differencing hard disk:</source> - <comment>medium</comment> - <translation type="unfinished"></translation> + <comment> + + + + +medium</comment> + <translation type="obsolete">ážáž¶ážŸážšáž¹áž„​មូលដ្ឋាន​នáŸáŸ‡â€‹ážáŸ’រូវ​បាន​ភ្ជាប់​ដោយ​ប្រយោល​ ដោយ​ប្រើ​ážáž¶ážŸážšáž¹áž„​ផ្សáŸáž„ ៖</translation> </message> <message numerus="yes"> <source>%n year(s)</source> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform>%n ឆ្នាំ</numerusform> </translation> </message> <message numerus="yes"> <source>%n month(s)</source> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform>%n ážáŸ‚</numerusform> </translation> </message> <message numerus="yes"> <source>%n day(s)</source> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform>%n ážáŸ’ងៃ</numerusform> </translation> </message> <message numerus="yes"> <source>%n hour(s)</source> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform>%n ម៉ោង</numerusform> </translation> </message> <message numerus="yes"> <source>%n minute(s)</source> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform>%n នាទី​</numerusform> </translation> </message> <message numerus="yes"> <source>%n second(s)</source> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform>%n វិនាទី</numerusform> </translation> </message> <message> <source>(CD/DVD)</source> + <translation>(ស៊ីឌី​/​ឌី​វីឌី​)</translation> + </message> + <message> + <source>Processor(s)</source> + <comment>details report</comment> + <translation type="unfinished">ប្រពáŸáž“្ធ​ដំណើរ​ការ​</translation> + </message> + <message> + <source>Empty</source> + <comment>medium</comment> + <translation type="unfinished">áž‘áž‘áŸ</translation> + </message> + <message> + <source>Host Drive '%1'</source> + <comment>medium</comment> + <translation type="unfinished">ដ្រាយ​ម៉ាស៊ីន​​ '%1'</translation> + </message> + <message> + <source>Host Drive %1 (%2)</source> + <comment>medium</comment> + <translation type="unfinished">ដ្រាយ​ម៉ាស៊ីន​​ %1 (%2)</translation> + </message> + <message> + <source><p style=white-space:pre>Type (Format): %1 (%2)</p></source> + <comment>medium</comment> + <translation type="unfinished"><p style=white-space:pre>ប្រភáŸáž‘​(​ទ្រង់​ទ្រាយ​) ៖ %1 (%2)</p></translation> + </message> + <message> + <source><p>Attached to: %1</p></source> + <comment>image</comment> + <translation type="unfinished"><p>បាន​​ភ្ជាប់​ទៅ​កាន់ ៖ %1</p></translation> + </message> + <message> + <source><i>Not Attached</i></source> + <comment>image</comment> + <translation type="unfinished"><i>មិន​បានភ្ជាប់</i></translation> + </message> + <message> + <source><i>Checking accessibility...</i></source> + <comment>medium</comment> + <translation type="unfinished"><i>កំពុង​ពិនិážáŸ’យមើល​​​មធ្យោបាយ​ងាយ​ស្រួល​​...</i></translation> + </message> + <message> + <source>Failed to check media accessibility.</source> + <comment>medium</comment> + <translation type="unfinished">បានបរាជáŸáž™â€‹áž€áŸ’នុងកា​រ​ពិនិážáŸ’យ​មើល​មធ្យោ​បាយ​ងាយ​ស្រួល​​របស់​មáŸážŒáŸ€Â ។​</translation> + </message> + <message> + <source><b>No medium selected</b></source> + <comment>medium</comment> + <translation type="unfinished"><b>គ្មាន​ឧបករណáŸâ€‹ážáŸ’រូវ​បាន​ជ្រើស​ទáŸ</b></translation> + </message> + <message> + <source><b>No media available</b></source> + <comment>medium</comment> + <translation type="unfinished"><b>មិនមាន​មáŸážŒáŸ€â€‹áž‘áŸ</b></translation> + </message> + <message> + <source>Attaching this hard disk will be performed indirectly using a newly created differencing hard disk.</source> + <comment>medium</comment> + <translation type="unfinished">ការ​ភ្ជាប់​ជា​មួយ​នឹង​ážáž¶ážŸâ€‹ážšáž¹áž„​នáŸáŸ‡ នឹង​ážáŸ’រូវ​បាន​អនុវážáŸ’ážâ€‹ážŠáŸ„យ​ប្រយោល​ ដោយ​ប្រើ​ážáž¶ážŸážšáž¹áž„​ផ្សáŸáž„​ដែលបានបង្កើážâ€‹ážáŸ’មីៗ ។</translation> + </message> + <message> + <source>Some of the media in this hard disk chain are inaccessible. Please use the Virtual Media Manager in <b>Show Differencing Hard Disks</b> mode to inspect these media.</source> + <comment>medium</comment> + <translation type="unfinished">មáŸážŒáŸ€â€‹áž˜áž½áž™â€‹áž…ំនួន​នៅ​ក្នុង​ស្រឡាយ​ផ្នែក​រឹង​នáŸáŸ‡â€‹áž˜áž·áž“អាច​ចូល​ដំណើរការ​បាន​ទáŸÂ ។ សូម​ប្រើ​កម្មវិធី​គ្រប់គ្រង​មáŸážŒáŸ€â€‹áž“ិម្មិážâ€‹áž“ៅ​ក្នុង​របៀប <b>បង្ហាញ​ážáž¶ážŸážšáž¹áž„​ផ្សáŸáž„ៗ​គ្នា</b> ដើម្បី​ពិនិážáŸ’យមើល​មáŸážŒáŸ€â€‹áž‘ាំង​នáŸáŸ‡Â ។</translation> + </message> + <message> + <source>This base hard disk is indirectly attached using the following differencing hard disk:</source> + <comment>medium</comment> + <translation type="unfinished">ážáž¶ážŸážšáž¹áž„​មូលដ្ឋាន​នáŸáŸ‡â€‹ážáŸ’រូវ​បាន​ភ្ជាប់​ដោយ​ប្រយោល​ ដោយ​ប្រើ​ážáž¶ážŸážšáž¹áž„​ផ្សáŸáž„ ៖</translation> + </message> + <message> + <source>Enabled</source> + <comment>details report (Nested Paging)</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disabled</source> + <comment>details report (Nested Paging)</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Nested Paging</source> + <comment>details report</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Remote Display Server Port</source> + <comment>details report (VRDP Server)</comment> + <translation type="unfinished">ច្រក​ម៉ាស៊ីនបម្រើ​បង្ហាញ​ពី​ចម្ងាយ</translation> + </message> + <message> + <source><nobr>%1 MB</nobr></source> + <comment>details report</comment> + <translation type="unfinished"><nobr>%1 មáŸáž€áž¶áž”ៃ​</nobr></translation> + </message> + <message> + <source><nobr>%1</nobr></source> + <comment>details report</comment> + <translation type="unfinished"><nobr>%1</nobr></translation> + </message> + <message> + <source>System</source> + <comment>details report</comment> + <translation type="unfinished">ប្រពáŸáž“្ធ</translation> + </message> + <message> + <source>Enabled</source> + <comment>details report (2D Video Acceleration)</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Disabled</source> + <comment>details report (2D Video Acceleration)</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>2D Video Acceleration</source> + <comment>details report</comment> + <translation type="unfinished">ការ​បង្កើន​ល្បឿន​វីដáŸáž¢áž¼â€‹â€‹áž‘្វáŸâ€‹áž˜áž¶ážáŸ’ážš</translation> + </message> + <message> + <source>Remote Display Server</source> + <comment>details report (VRDP Server)</comment> + <translation type="unfinished">ម៉ា​ស៊ីន​បម្រើ​បង្ហាញ​ពី​ចម្ងាយ​</translation> + </message> + <message> + <source>Disabled</source> + <comment>details report (VRDP Server)</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Display</source> + <comment>details report</comment> + <translation type="unfinished">បង្ហាញ​</translation> + </message> + <message> + <source>Not Attached</source> + <comment>details report (Storage)</comment> + <translation type="unfinished">មិន​បានភ្ជាប់</translation> + </message> + <message> + <source>Storage</source> + <comment>details report</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Bridged adapter, %1</source> + <comment>details report (network)</comment> + <translation type="unfinished">​អាដាប់​ទáŸážšáž”្រ៊ីដ្យ​​ %1</translation> + </message> + <message> + <source>Internal network, '%1'</source> + <comment>details report (network)</comment> + <translation type="unfinished">បណ្ážáž¶áž‰â€‹ážáž¶áž„​ក្នុង '%1'</translation> + </message> + <message> + <source>Host-only adapter, '%1'</source> + <comment>details report (network)</comment> + <translation type="unfinished">​អាដាប់​ទáŸážšâ€‹â€‹ ម៉ាស៊ីន​​-​ážáŸ‚​មួយ '%1'​</translation> + </message> + <message> + <source>Teleported</source> + <comment>MachineState</comment> + <translation type="unfinished">បញ្ជួន​</translation> + </message> + <message> + <source>Guru Meditation</source> + <comment>MachineState</comment> + <translation type="unfinished">ការ​វិភាគ​រក​ Guru</translation> + </message> + <message> + <source>Teleporting</source> + <comment>MachineState</comment> + <translation type="unfinished">ការ​បញ្ជួន​</translation> + </message> + <message> + <source>Taking Live Snapshot</source> + <comment>MachineState</comment> + <translation type="unfinished">​ážážážšáž¼áž”​​ផ្ទាល់​</translation> + </message> + <message> + <source>Teleporting Paused VM</source> + <comment>MachineState</comment> + <translation type="unfinished">ការ​បញ្ជូនបានផ្អាក VM</translation> + </message> + <message> + <source>Restoring Snapshot</source> + <comment>MachineState</comment> + <translation type="unfinished">ការ​ស្ážáž¶ážšâ€‹ážšáž¼áž”​ážážâ€‹</translation> + </message> + <message> + <source>Deleting Snapshot</source> + <comment>MachineState</comment> + <translation type="unfinished">ការ​លុប​រូប​ážážâ€‹</translation> + </message> + <message> + <source>SCSI</source> + <comment>StorageBus</comment> + <translation type="unfinished">SCSI</translation> + </message> + <message> + <source>Floppy</source> + <comment>StorageBus</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Device %1</source> + <comment>StorageBusDevice</comment> + <translation type="unfinished">ឧបករណáŸâ€‹â€‹â€‹â€‹ %1</translation> + </message> + <message> + <source>IDE Primary Master</source> + <comment>New Storage UI : Slot Name</comment> + <translation type="unfinished">មáŸâ€‹áž…ម្បង​ IDE</translation> + </message> + <message> + <source>IDE Primary Slave</source> + <comment>New Storage UI : Slot Name</comment> + <translation type="unfinished">កូន​ចៅ​ចម្បង​ IDE</translation> + </message> + <message> + <source>IDE Secondary Master</source> + <comment>New Storage UI : Slot Name</comment> + <translation type="unfinished">មáŸâ€‹ážšáž„ IDE​</translation> + </message> + <message> + <source>IDE Secondary Slave</source> + <comment>New Storage UI : Slot Name</comment> + <translation type="unfinished">កូន​ចៅ​រង​ IDE</translation> + </message> + <message> + <source>SATA Port %1</source> + <comment>New Storage UI : Slot Name</comment> + <translation type="unfinished">ច្រក SATA​ %1</translation> + </message> + <message> + <source>SCSI Port %1</source> + <comment>New Storage UI : Slot Name</comment> + <translation type="unfinished">ច្រក​ SCSI​ %1</translation> + </message> + <message> + <source>Floppy Device %1</source> + <comment>New Storage UI : Slot Name</comment> + <translation type="unfinished">ឧបករណáŸážáž¶â€‹â€‹áž‘ន់​​ %1</translation> + </message> + <message> + <source>Raw File</source> + <comment>PortMode</comment> + <translation type="unfinished">ឯកសារ​ដើម​</translation> + </message> + <message> + <source>Intel PRO/1000 MT Server (82545EM)</source> + <comment>NetworkAdapterType</comment> + <translation type="unfinished">ម៉ាស៊ីន​បម្រើ​ Intel PRO/1000 MT ​(82545EM)</translation> + </message> + <message> + <source>Paravirtualized Network (virtio-net)</source> + <comment>NetworkAdapterType</comment> + <translation type="unfinished">បណ្ážáž¶áž‰â€‹ Paravirtualized (virtio-net)</translation> + </message> + <message> + <source>Bridged Adapter</source> + <comment>NetworkAttachmentType</comment> + <translation type="unfinished">អាដាប់​​ទáŸážšâ€‹â€‹áž”្រ៊ីដ្យ​​</translation> + </message> + <message> + <source>Host-only Adapter</source> + <comment>NetworkAttachmentType</comment> + <translation type="unfinished">អាដាប់​ទáŸážšâ€‹â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​​-​ážáŸ‚​មួយ​</translation> + </message> + <message> + <source>PIIX3</source> + <comment>StorageControllerType</comment> + <translation type="unfinished">PIIX3</translation> + </message> + <message> + <source>PIIX4</source> + <comment>StorageControllerType</comment> + <translation type="unfinished">PIIX4</translation> + </message> + <message> + <source>ICH6</source> + <comment>StorageControllerType</comment> + <translation type="unfinished">ICH6</translation> + </message> + <message> + <source>AHCI</source> + <comment>StorageControllerType</comment> + <translation type="unfinished">AHCI</translation> + </message> + <message> + <source>Lsilogic</source> + <comment>StorageControllerType</comment> + <translation type="unfinished">Lsilogic</translation> + </message> + <message> + <source>BusLogic</source> + <comment>StorageControllerType</comment> + <translation type="unfinished">BusLogic</translation> + </message> + <message> + <source>I82078</source> + <comment>StorageControllerType</comment> + <translation type="unfinished">I82078</translation> + </message> </context> <context> <name>VBoxGlobalSettings</name> @@ -2923,37 +3273,37 @@ p, li { white-space: pre-wrap; } <name>VBoxHelpButton</name> <message> <source>&Help</source> - <translation type="unfinished">ជំនួយ</translation> + <translation>ជំនួយ</translation> </message> </context> <context> <name>VBoxImportApplianceWgt</name> <message> <source>Reading Appliance ...</source> - <translation type="unfinished"></translation> + <translation>កំពុង​អាន​ឧបករណáŸâ€‹...</translation> </message> <message> <source>Importing Appliance ...</source> - <translation type="unfinished"></translation> + <translation>កំពុង​នាំ​ចូល​ឧបករណáŸâ€‹...</translation> </message> </context> <context> <name>VBoxImportApplianceWzd</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>Open Virtualization Format (%1)</translation> </message> <message> <source>Appliance Import Wizard</source> - <translation type="unfinished"></translation> + <translation>អ្នក​ជំនួយ​ការ​នាំ​ចូល​ឧបករណáŸâ€‹</translation> </message> <message> <source>Welcome to the Appliance Import Wizard!</source> - <translation type="unfinished"></translation> + <translation>សូម​ស្វាគមនáŸâ€‹áž˜áž€â€‹áž€áž¶áž“់​អ្នក​ជំនួយកា​រនាំចូល​ឧបករណáŸÂ !</translation> </message> <message> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2963,70 +3313,76 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This wizard will guide you through importing an appliance. </p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use the <span style=" font-weight:600;">Next</span> button to go the next page of the wizard and the <span style=" font-weight:600;">Back</span> button to return to the previous page.</p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">VirtualBox currently supports importing appliances saved in the Open Virtualization Format (OVF). To continue, select the file to import below:</p></body></html></source> - <translation type="unfinished"></translation> + <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">អ្នក​ជំនួយ​ការ​នáŸáŸ‡â€‹áž“ឹង​នាំយក​​ážáž¶áž˜â€‹ážšáž™áŸˆâ€‹áž€áž¶ážšâ€‹áž“ាំចូល​ឧបករណáŸÂ ។</p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ប្រើ​ប៊ូážáž»áž„ <span style=" font-weight:600;">បន្ទាប់</span> ទៅ​ទំពáŸážšâ€‹áž”ន្ទាប់​របស់​អ្នក​ជំនួយ​ការ និងប៊ូážáž»áž„​ <span style=" font-weight:600;">ážáž™áž€áŸ’រោយ</span> ដើម្បី​ážáŸ’រឡប់​ទៅ​ទំពáŸážšâ€‹áž˜áž»áž“ ។</p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">បច្ចុប្បន្ន VirtualBox គាំទ្រ​ការ​នាំចូល​ឧបករណ០ដែលបាន​រក្សាទុក​នៅ​ក្នុង​ទ្រង់ទ្រាយ Open Virtualization Format (OVF) ។ ដើម្បី​បន្ហជ្រើស​ឯកសារ​​ážáŸ’រូវ​នាំ​ចូល​ážáž¶áž„​ក្រោម ៖</p></body></html></translation> </message> <message> <source>< &Back</source> - <translation type="unfinished"></translation> + <translation><ážáž™â€‹áž€áŸ’រោយ​</translation> </message> <message> <source>&Next ></source> - <translation type="unfinished">បន្ទាប់ ></translation> + <translation>បន្ទាប់></translation> </message> <message> <source>Cancel</source> - <translation type="unfinished"></translation> + <translation>បោះបង់​</translation> </message> <message> <source>Appliance Import Settings</source> - <translation type="unfinished"></translation> + <translation>​កំណážáŸ‹â€‹áž€áž¶ážšâ€‹â€‹áž“ាំ​ចូល​ឧបករណáŸâ€‹</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="unfinished"></translation> + <translation>មាន​ម៉ាស៊ីន​និម្មិážâ€‹ážŠáŸ‚ល​មាន​នៅ​ក្នុង​ឧបករណáŸâ€‹ និង​ការ​កំណážáŸ‹â€‹ážŠáŸ‚លបាន​ស្នើ​របស់ម៉ាស៊ីន VirtualBox ដែល​បាននាំចូល ។ អ្នក​អាច​ផ្លាស់ប្ដូរ​លក្ážážŽážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹ážŠáŸ‚លបានបង្ហាញ​ដោយ​ចុច​ទ្វáŸážŠáž„​លើ​ធាážáž» និងបិទ​​លក្ážážŽážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹áž•áŸ’សáŸáž„ៗ​ទៀហដោយ​ប្រើ​ប្រ​អប់ធីក​ážáž¶áž„​ក្រោម ។</translation> </message> <message> <source>Restore Defaults</source> - <translation type="unfinished"></translation> + <translation>ស្ážáž¶ážšâ€‹áž›áŸ†áž“ាំដើម</translation> </message> <message> <source>&Import ></source> - <translation type="unfinished"></translation> + <translation>នាំ​ចូល​​></translation> </message> </context> <context> <name>VBoxImportLicenseViewer</name> <message> <source><b>The virtual system "%1" requires that you agree to the terms and conditions of the software license agreement shown below.</b><br /><br />Click <b>Agree</b> to continue or click <b>Disagree</b> to cancel the import.</source> - <translation type="unfinished"></translation> + <translation><b>ប្រ​ពáŸáž“្ធ​ជាក់​ស្ážáŸ‚ង​របស់​​ "%1" ážáž˜áŸ’រូវ​ការ​ដែល​អ្នក​យល់​ព្រមទៅ​កាន់ពáŸáž›â€‹áž€áŸ†ážŽážáŸ‹â€‹ និ​ងលក្ážâ€‹ážáŸážŽáŸ’នៃអាជ្ញាបណ្ណ​​ផ្នែកទន់​កិច្ច​ព្រម​ព្រៀង​​បង្ហាញ​ážáž¶áž„​ក្រោម​ ។</b><br /><br />ចុច​​ <b>យល់​ព្រម​​</b> ទៅ​បន្ážâ€‹ ឬ​<b>មិន​យល់​ព្រម​​</b> ទៅ​​បោះ​បង់​កា​រនាំចូល​ ។</translation> </message> <message> <source>Software License Agreement</source> - <translation type="unfinished"></translation> + <translation>កិច្ច​ព្រមព្រៀង​អាជ្ញាបណ្ណ​​កម្មវិធី​</translation> </message> <message> <source>&Disagree</source> - <translation type="unfinished"></translation> + <translation>មិន​យល់ព្រម​</translation> </message> <message> <source>&Agree</source> - <translation type="unfinished"></translation> + <translation>យល់ព្រម​</translation> </message> <message> <source>&Print...</source> - <translation type="unfinished"></translation> + <translation>បោះពុម្ព...</translation> </message> <message> <source>&Save...</source> - <translation type="unfinished"></translation> + <translation>រក្សាទុក...</translation> </message> <message> <source>Text (*.txt)</source> - <translation type="unfinished"></translation> + <translation>អážáŸ’ážáž”ទ​​ (*.txt)</translation> </message> <message> <source>Save license to file...</source> - <translation type="unfinished"></translation> + <translation>រក្សាទុក​អាជ្ញា​បណ្ណទៅ​ឯកសារ...</translation> </message> </context> <context> @@ -3048,7 +3404,7 @@ p, li { white-space: pre-wrap; } <name>VBoxLineTextEdit</name> <message> <source>&Edit</source> - <translation type="unfinished"></translation> + <translation>កែសម្រួល​</translation> </message> </context> <context> @@ -3095,17 +3451,6 @@ p, li { white-space: pre-wrap; } </message> </context> <context> - <name>VBoxMediaComboBox</name> - <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><no media></source> - <translation type="obsolete"><គ្មាន​មáŸážŒáŸ€></translation> - </message> -</context> -<context> <name>VBoxMediaManagerDlg</name> <message> <source>&Actions</source> @@ -3242,75 +3587,67 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Attached to</source> - <comment>VMM: Virtual Disk</comment> - <translation type="unfinished">បាន​ភ្ជាប់​ទៅកាន់</translation> + <comment> + + + +VMM: Virtual Disk</comment> + <translation type="obsolete">បាន​ភ្ជាប់​ទៅកាន់</translation> </message> <message> <source>Attached to</source> - <comment>VMM: CD/DVD Image</comment> - <translation type="unfinished">បាន​ភ្ជាប់​ទៅកាន់</translation> + <comment> + + + +VMM: CD/DVD Image</comment> + <translation type="obsolete">បានភ្ជាប់​ទៅ​កាន់</translation> </message> <message> <source>Attached to</source> - <comment>VMM: Floppy Image</comment> - <translation type="unfinished">បាន​ភ្ជាប់​ទៅកាន់</translation> + <comment> + + + +VMM: Floppy Image</comment> + <translation type="obsolete">បាន​ភ្ជាប់​ទៅកាន់</translation> </message> -</context> -<context> - <name>VBoxMiniToolBar</name> <message> - <source>Always show the toolbar</source> + <source>Attached to</source> + <comment>VMM: Virtual Disk</comment> <translation type="unfinished"></translation> </message> <message> - <source>Exit Full Screen or Seamless Mode</source> + <source>Attached to</source> + <comment>VMM: CD/DVD Image</comment> <translation type="unfinished"></translation> </message> <message> - <source>Close VM</source> + <source>Attached to</source> + <comment>VMM: Floppy Image</comment> <translation type="unfinished"></translation> </message> </context> <context> - <name>VBoxNIList</name> - <message> - <source>VirtualBox Host Interface %1</source> - <translation type="obsolete">ចំណុច​ប្រទាក់​ម៉ាស៊ីន VirtualBox %1</translation> - </message> - <message> - <source><p>Do you want to remove the selected host network interface <nobr><b>%1</b>?</nobr></p><p><b>Note:</b> 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.</p></source> - <translation type="obsolete"><p>ážáž¾â€‹áž¢áŸ’នកចង់​យក​ចំណុច​ប្រទាក់​បណ្ដាញ​ម៉ាស៊ីន​ដែល​បាន​ជ្រើស​ចáŸáž‰â€‹áž–ី <nobr><b>%1</b>ឬ?</nobr></p><p><b>ចំណាំ ៖</b> ចំណុច​ប្រទាក់​នáŸáŸ‡â€‹áž¢áž¶áž…​កំពុង​ប្រើ​ដោយ​អាដាប់ទáŸážšâ€‹áž”ណ្ដាញ​មួយ ឬ​ច្រើន​ VM áž“áŸáŸ‡ ឬ​ផ្សáŸáž„​ទៀážÂ ។ បន្ទាប់​ពី​បាន​យកចáŸáž‰áž ើយ អាដាប់ទáŸážšâ€‹áž‘ាំង​នáŸáŸ‡â€‹áž“ឹង​មិន​ដំណើរការ​ទៀážáž‘áŸâ€‹ážšáž áž¼ážâ€‹ážŠáž›áŸ‹â€‹áž¢áŸ’នក​កែ​ការ​កំណážáŸ‹â€‹ážšáž”ស់​ពួកវា​ដោយ​ជ្រើស​ឈ្មោះ​ចំណុច​ប្រទាក់​ផ្សáŸáž„ ឬ​ប្រភáŸáž‘​ភ្ជាប់​អាដាប់ទáŸážšâ€‹áž•áŸ’សáŸáž„ ។</p></translation> - </message> - <message> - <source>Host &Interfaces</source> - <translation type="obsolete">ចំណុច​ប្រទាក់​ម៉ាស៊ីន</translation> - </message> - <message> - <source>Lists all available host interfaces.</source> - <translation type="obsolete">រាយ​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ដែលអាច​ប្រើបានទាំង​អស់ ។</translation> - </message> - <message> - <source>A&dd New Host Interface</source> - <translation type="obsolete">បន្ážáŸ‚ម​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ážáŸ’មី</translation> - </message> + <name>VBoxMiniToolBar</name> <message> - <source>&Remove Selected Host Interface</source> - <translation type="obsolete">យក​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ដែល​បានជ្រើស</translation> + <source>Always show the toolbar</source> + <translation>​បង្ហាញ​របារ​ឧបករណáŸâ€‹áž‡áž¶áž“ិច្ច​</translation> </message> <message> - <source>Adds a new host interface.</source> - <translation type="obsolete">បន្ážáŸ‚ម​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ážáŸ’មី ។</translation> + <source>Exit Full Screen or Seamless Mode</source> + <translation>áž…áŸáž‰áž–ី​របៀប​ពáŸáž‰â€‹â€‹áž¢áŸâ€‹áž€áŸ’រង់​​ ឬពង្រីក​</translation> </message> <message> - <source>Removes the selected host interface.</source> - <translation type="obsolete">យក​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ដែល​បានជ្រើស ។</translation> + <source>Close VM</source> + <translation>បិទ VM</translation> </message> </context> <context> <name>VBoxNetworkDialog</name> <message> <source>Network Adapters</source> - <translation type="unfinished"></translation> + <translation>អាដាប់​ទáŸážšâ€‹áž”ណ្ážáž¶áž‰</translation> </message> </context> <context> @@ -3467,14 +3804,6 @@ p, li { white-space: pre-wrap; } <translation>សážáž·</translation> </message> <message> - <source>N&ew...</source> - <translation type="obsolete">ážáŸ’មី...</translation> - </message> - <message> - <source>E&xisting...</source> - <translation type="obsolete">មាន​ស្រាប់...</translation> - </message> - <message> <source>Virtual Hard Disk</source> <translation>ážáž¶ážŸážšáž¹áž„​និម្មិáž</translation> </message> @@ -3557,11 +3886,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>&Create new hard disk</source> - <translation type="unfinished"></translation> + <translation>បង្កើážâ€‹ážáž¶ážŸâ€‹ážšáž¹áž„​ážáŸ’មី</translation> </message> <message> <source>&Use existing hard disk</source> - <translation type="unfinished"></translation> + <translation>ប្រើ​ážáž¶ážŸâ€‹ážšáž¹áž„​ដែល​មាន​ស្រាប់​</translation> </message> </context> <context> @@ -3575,16 +3904,12 @@ p, li { white-space: pre-wrap; } <translation>បង្ហាញ​ក្រុមគ្រួសារ​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹ážŠáŸ‚ល​អ្នក​មានគម្រោង​ដំឡើង​ក្នុង​ម៉ាស៊ីន​និម្មិážâ€‹áž“áŸáŸ‡Â ។</translation> </message> <message> - <source>V&ersion:</source> - <translation type="obsolete">កំណែ ៖</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> <message> <source>&Version:</source> - <translation type="unfinished"></translation> + <translation>កំណែ ៖</translation> </message> </context> <context> @@ -3684,18 +4009,6 @@ p, li { white-space: pre-wrap; } <translation>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងការ​បោះបង់​ស្ážáž¶áž“ភាព​របស់​ម៉ាស៊ីន​និម្មិážâ€‹ážŠáŸ‚លបាន​រក្សាទុក <b>%1</b> ។</translation> </message> <message> - <source>Failed to discard the snapshot <b>%1</b> of the virtual machine <b>%2</b>.</source> - <translation type="obsolete">បាន​បរាជáŸáž™â€‹áž€áŸ’នុងកា​រ​បោះបង់​រូបážáž <b>%1</b> របស់​ម៉ាស៊ីន​និម្មិហ<b>%2</b> ។</translation> - </message> - <message> - <source>Failed to discard the current state of the virtual machine <b>%1</b>.</source> - <translation type="obsolete">បាន​បរាជáŸáž™â€‹áž€áŸ’នុងកា​របោះបង់​ស្ážáž¶áž“ភាព​បច្ចុប្បន្ន​របស់​ម៉ាស៊ីន​និម្មិហ<b>%1</b> ។</translation> - </message> - <message> - <source>Failed to discard the current snapshot and the current state of the virtual machine <b>%1</b>.</source> - <translation type="obsolete">បានបរាជáŸáž™â€‹áž€áŸ’នុងការ​បោះបង់​រូបážážâ€‹áž¢áŸáž€áŸ’រង់ និង​ស្ážáž¶áž“ភាព​បច្ចុប្បន្ន​របស់​ម៉ាស៊ីន​និម្មិហ<b>%1</b> ។</translation> - </message> - <message> <source>There is no virtual machine named <b>%1</b>.</source> <translation>គ្មាន​ម៉ាស៊ីន​និម្មិážâ€‹ážŠáŸ‚ល​មាន​ឈ្មោះ <b>%1</b> នោះ​ទáŸÂ ។</translation> </message> @@ -3720,10 +4033,6 @@ p, li { white-space: pre-wrap; } <translation>បានបរាជáŸáž™â€‹áž€áŸ’នុងកា​របើក​សមáŸáž™â€‹ážŸáž˜áŸ’រាប់​ម៉ាស៊ីន​និម្មិហ<b>%1</b> ។</translation> </message> <message> - <source>Failed to create the host network interface <b>%1</b>.</source> - <translation type="obsolete">បាន​បរាជáŸáž™â€‹áž€áŸ’នុងការ​បង្កើážâ€‹áž…ំណុច​ប្រទាក់​បណ្ដាញ <b>%1</b> ។</translation> - </message> - <message> <source>Failed to remove the host network interface <b>%1</b>.</source> <translation>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងការ​យក​ចំណុច​ប្រទាក់​បណ្ដាញ​ម៉ាស៊ីន​ <b>%1</b> áž…áŸáž‰Â ។</translation> </message> @@ -3886,10 +4195,6 @@ p, li { white-space: pre-wrap; } <translation><p>សូមអបអរសាទរ ! អ្នក​បានចុះឈ្មោះ​ជា​អ្នក​ប្រើ VirtualBox ដោយ​ជោគជáŸáž™â€‹áž ើយ ។ </p><p>សូម​អរគុណ​ចំពោះ​ការ​ចំណាយ​ពáŸáž›ážœáŸáž›áž¶â€‹áž”ំពáŸáž‰â€‹ážŸáŸ†ážŽáž»áŸ†áž”ែបបទ​ចុះឈ្មោះ !</p></translation> </message> <message> - <source><p>Failed to register the VirtualBox product</p><p>%1</p></source> - <translation type="obsolete"><p>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងការ​ចុះឈ្មោះ​ផលិážáž•áž› VirtualBox​</p><p>%1</p></translation> - </message> - <message> <source><p>Failed to save the global VirtualBox settings to <b><nobr>%1</nobr></b>.</p></source> <translation><p>បានបរាជáŸáž™â€‹áž€áŸ’នុងកា​ររក្សាទុក​ការ​កំណážáŸ‹ VirtualBox សកល​ទៅ​កាន់ <b><nobr>%1</nobr></b> ។</p></translation> </message> @@ -3925,10 +4230,6 @@ p, li { white-space: pre-wrap; } <translation>បោះបង់</translation> </message> <message> - <source><p>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.</p><p>Are you sure that you want to disable the SATA controller?</p></source> - <translation type="obsolete"><p>មាន​ážáž¶ážŸážšáž¹áž„​បាន​ážáž—្ជាប់​ទៅ​ច្រក SATA របស់ម៉ាស៊ីន​និម្មិážâ€‹áž“áŸáŸ‡Â ។ ប្រសិន​បើ​អ្នក​បិទ​វážáŸ’ážáž»â€‹áž”ញ្ជា SATA ážáž¶ážŸážšáž¹áž„​ទាំង​នáŸáŸ‡â€‹áž“ឹង​ážáŸ’រូវ​បាន​ផ្ដាច់​ដោយ​ស្វáŸáž™â€‹áž”្រវážáŸ’ážáž·Â ។</p><p>ážáž¾â€‹áž¢áŸ’នក​ប្រាកដ​ជា​ចង់​បិទ​វážáŸ’ážáž»â€‹áž”ញ្ជា SATA ដែរឬទáŸÂ ?</p></translation> - </message> - <message> <source>Disable</source> <comment>hard disk</comment> <translation>បានបិទ</translation> @@ -3959,11 +4260,6 @@ p, li { white-space: pre-wrap; } <translation>áž–áž·áž“áž·ážáŸ’យ​មើល</translation> </message> <message> - <source>&Backup</source> - <comment>warnAboutAutoConvertedSettings message box</comment> - <translation type="obsolete">បម្រុងទុក</translation> - </message> - <message> <source>Switch</source> <comment>fullscreen</comment> <translation>ប្ដូរ</translation> @@ -3997,16 +4293,6 @@ p, li { white-space: pre-wrap; } <translation>បានបរាជáŸáž™â€‹áž€áŸ’នុងកា​រចម្លង​ឯកសារ <b><nobr>%1</nobr></b> ទៅ <b><nobr>%2</nobr></b> (%3) ។</translation> </message> <message> - <source>&Create</source> - <comment>hard disk</comment> - <translation type="obsolete">បង្កើáž</translation> - </message> - <message> - <source>Select</source> - <comment>hard disk</comment> - <translation type="obsolete">ជ្រើស</translation> - </message> - <message> <source><p>Could not enter seamless mode due to insufficient guest video memory.</p><p>You should configure the virtual machine to have at least <b>%1</b> of video memory.</p></source> <translation><p>មិនអាច​ចូល​របៀប​គ្មាន​ážáŸážš ដោយសារ​ážáŸ‚​សážáž·â€‹ážœáž¸ážŠáŸáž¢áž¼â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​ភ្ញៀវ​មិន​គ្រប់គ្រាន់ ។</p><p>អ្នក​គួរ​កំណážáŸ‹â€‹ážšáž…នាសម្ពáŸáž“្ធ​ម៉ាស៊ីន​និម្មិážâ€‹áž™áŸ‰áž¶áž„​ហោចណាស់​មានសážáž·â€‹ážœáž¸ážŠáŸáž¢áž¼ <b>%1</b> ។</p></translation> </message> @@ -4143,30 +4429,10 @@ p, li { white-space: pre-wrap; } <translation>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងការ​លុប​ការ​ផ្ទុក​របស់​ážáž¶ážŸážšáž¹áž„ <b>%1</b> ។</translation> </message> <message> - <source><p>There are no unused hard disks available for the newly created attachment.</p><p>Press the <b>Create</b> button to start the <i>New Virtual Disk</i> wizard and create a new hard disk, or press the <b>Select</b> if you wish to open the <i>Virtual Media Manager</i>.</p></source> - <translation type="obsolete"><p>មិនមាន​ážáž¶ážŸážšáž¹áž„​ដែល​មិនបានប្រើទáŸâ€‹ សម្រាប់​ការ​ភ្ជាប់​ដែល​បាន​បង្កើážâ€‹ážáŸ’មីៗ ។</p><p>ចុច​ប៊ូážáž»áž„ <b>បង្កើáž</b> ដើម្បី​ចាប់ផ្ដើម​អ្នក​ជំនួយការ <i>ážáž¶ážŸâ€‹áž“ិម្មិážâ€‹ážáŸ’មី</i> ហើយ​បង្កើážâ€‹ážáž¶ážŸážšáž¹áž„​ážáŸ’មី ឬ​ចុច​ប៊ូážáž»áž„ <b>ជ្រើស</b> ដើម្បី​បើក​ <i>កម្មវិធី​គ្រប់គ្រង​មáŸážŒáŸ€â€‹áž“ិម្មិáž</i> ហើយ​ជ្រើស​អ្វី​ážáŸ’រូវ​ធ្វើ ។</p></translation> - </message> - <message> <source>Failed to create the hard disk storage <nobr><b>%1</b>.</nobr></source> <translation>បានបរាជáŸáž™â€‹áž€áŸ’នុង​​ការ​បង្កើážâ€‹áž€áž¶ážšâ€‹áž•áŸ’ទុក​ážáž¶ážŸážšáž¹áž„ <nobr><b>%1</b> ។</nobr></translation> </message> <message> - <source>Failed to attach the hard disk <nobr><b>%1</b></nobr> to slot <i>%2</i> of the machine <b>%3</b>.</source> - <translation type="obsolete">បានបរាជáŸáž™áž€áŸ’នុងកា​រភ្ជាប់ <nobr><b>%1</b></nobr> ទៅ​រន្ធ <i>%2</i> របស់​ម៉ាស៊ីន <b>%3</b> ។</translation> - </message> - <message> - <source>Failed to detach the hard disk <nobr><b>%1</b></nobr> from slot <i>%2</i> of the machine <b>%3</b>.</source> - <translation type="obsolete">បាន​បរាជáŸáž™â€‹áž€áŸ’នុងកា​រផ្ដាច់​ážáž¶ážŸážšáž¹áž„ <nobr><b>%1</b></nobr> ពី​រន្ធ <i>%2</i> របស់​ម៉ាស៊ីន <b>%3</b> ។</translation> - </message> - <message> - <source>Failed to mount the %1 <nobr><b>%2</b></nobr> on the machine <b>%3</b>.</source> - <translation type="obsolete">បាន​បរាជáŸáž™â€‹áž€áŸ’នុងកា​រម៉ោន​ %1 <nobr><b>%2</b></nobr> ទៅ​ម៉ាស៊ីន <b>%3</b> ។</translation> - </message> - <message> - <source>Failed to unmount the %1 <nobr><b>%2</b></nobr> from the machine <b>%3</b>.</source> - <translation type="obsolete">បានបរាជáŸáž™â€‹áž€áŸ’នុងការ​អាន់ម៉ោន​ %1 <nobr><b>%2</b></nobr> ពី​ម៉ាស៊ីន <b>%3</b> ។</translation> - </message> - <message> <source>Failed to open the %1 <nobr><b>%2</b></nobr>.</source> <translation>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងការ​បើក %1 <nobr><b>%2</b></nobr> ។</translation> </message> @@ -4191,258 +4457,352 @@ p, li { white-space: pre-wrap; } <translation><p>ážáž¶ážŸážšáž¹áž„​និម្មិážâ€‹áž˜áž½áž™ ឬ​ច្រើន ស៊ីឌី/ឌីវីឌី ឬ​មáŸážŒáŸ€â€‹ážáž¶ážŸáž‘ន់​បច្ចុប្បន្ន​មិនអាច​ចូលដំណើរការ​បានទáŸÂ ។ ជា​លទ្ធផល អ្នកនឹង​មិនអាច​ប្រážáž·áž”ážáŸ’ážáž·â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​និម្មិážâ€‹ ដែល​ប្រើ​មáŸážŒáŸ€â€‹áž“áŸáŸ‡â€‹áž”ាន​ទ០រហូážâ€‹ážŠáž›áŸ‹â€‹áž–ួកវា​អាច​ចូលដំណើរការ​បាននៅពáŸáž›â€‹áž€áŸ’រោយ ។</p><p>ចុច <b>áž–áž·áž“áž·ážáŸ’យ​មើល</b> ដើម្បី​ប្រើ​បង្អួច​កម្មវិធី​គ្រប់គ្រង​មáŸážŒáŸ€â€‹áž“ិម្មិហហើយ​មើល​អ្វី​ដែល​មáŸážŒáŸ€â€‹áž˜áž·áž“អាច​ចូលដំណើរការ​បាន ឬ​ចុច <b>មិនអើពើ</b> ដើម្បី​មិនអើពើ​នឹង​សារ​នáŸáŸ‡Â ។</p></translation> </message> <message> - <source><p>Your existing VirtualBox settings files were automatically converted from the old format to a new format required by the new version of VirtualBox.</p><p>Press <b>OK</b> to start VirtualBox now or press <b>More</b> if you want to get more information about what files were converted and access additional actions.</p><p>Press <b>Exit</b> to terminate the VirtualBox application without saving the results of the conversion to disk.</p></source> - <translation type="obsolete"><p>ឯកសារ​កំណážáŸ‹â€‹ážšáž”ស់​ VirtualBox ដែល​មានស្រាប់​របស់​អ្នក​ážáŸ’រូវ​បាន​បម្លែង​ដោយ​ស្វáŸáž™â€‹áž”្រវážáŸ’ážáž·â€‹áž–ី​ទ្រង់ទ្រាយ​ចាស់​ទៅ​ទ្រង់ទ្រាយ​ážáŸ’មី​ដែល​ចាំបាច់​សម្រាប់​កំណែ​ážáŸ’មី​របស់ VirtualBox ។</p><p>ចុច <b>យល់ព្រម</b> ដើម្បី​ចាប់ផ្ដើម​ VirtualBox ឥឡូវ ឬ​ចុច​ <b>ផ្សáŸáž„​ទៀáž</b> ប្រសិន​បើ​អ្នក​ចង់​យក​ពáŸážáŸŒáž˜áž¶áž“​បន្ážáŸ‚ម​ទៀážâ€‹áž–ី​ឯកសារ​ដែល​ážáŸ’រូវ​បានបម្លែង​ និង​ចូលដំណើរការ​សកម្មភាព​បន្ážáŸ‚ម ។</p><p>ចុច <b>áž…áŸáž‰</b> ដើម្បី​ចáŸáž‰â€‹áž–ី​កម្មវិធី VirtualBox ដោយ​មិន​រក្សាទុក​លទ្ធផល​នៃ​ការ​បម្លែង​ទៅ​កាន់​ážáž¶ážŸážšáž¹áž„ ។</p></translation> - </message> - <message> - <source>&More</source> - <comment>warnAboutAutoConvertedSettings message box</comment> - <translation type="obsolete">ផ្សáŸáž„ៗ​ទៀáž</translation> - </message> - <message> - <source>E&xit</source> - <comment>warnAboutAutoConvertedSettings message box</comment> - <translation type="obsolete">áž…áŸáž‰</translation> - </message> - <message> - <source><p>The following VirtualBox settings files have been automatically converted to the new settings file format version <b>%1</b>.</p><p>However, the results of the conversion were not saved back to disk yet. Please press:</p><ul><li><b>Backup</b> to create backup copies of the settings files in the old format before saving them in the new format;</li><li><b>Overwrite</b> 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);</li>%2</ul><p>It is recommended to always select <b>Backup</b> 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.</p></source> - <translation type="obsolete"><p>ឯកសារ​កំណážáŸ‹â€‹ VirtualBox ដូច​ážáž¶áž„ក្រោម​ážáŸ’រូ​វបានបម្លែង​ទៅ​​ទ្រង់ទ្រាយ​ឯកសារ​ážáŸ’មី​​កំណែ​ <b>%1</b> ដោយ​ស្វáŸáž™â€‹áž”្រវážáŸ’ážáž·Â ។.</p><p>ទោះ​ជា​យ៉ាង​ណា​កáŸâ€‹ážŠáŸ„áž™ លទ្ធផល​នៃការ​បម្លែង​មិន​ážáŸ’រូវ​បានរក្សាទុក​ទៅ​ážáž¶ážŸâ€‹ážœáž·áž‰áž‘áŸÂ ។ សូម​ចុច ៖</p><ul><li><b>បម្រុង​ទុក</b> ដើម្បីបង្កើážâ€‹áž…្បាប់ចម្លង​បម្រុង​​នៃ​ឯកសារ​ការ​កំណážáŸ‹â€‹áž“ៅ​ក្នុង​ទ្រង់ទ្រាយ​ចាស់ៗ​មុននឹង​រក្សាទុក​វា​នៅ​ក្នុង​ទ្រង់ទ្រាយ​ážáŸ’មី</li><li><b>បដិសáŸáž’</b> ដើម្បី​រក្សាទុក​ឯកសារ​ដែល​បាន​បម្លែង​ដោយ​ស្វáŸáž™â€‹áž”្រវážáŸ’ážáž·â€‹ážŠáŸ„យ​មិនបង្កើážâ€‹áž…្បាប់​ចម្លង​បម្រុង​ទុក​ទ០(វា​នឹង​មិនអាច​ប្រើ​ឯកសា​រកំណážáŸ‹â€‹áž‘ាំង​នáŸáŸ‡â€‹áž‡áž¶â€‹áž˜áž½áž™â€‹áž“ឹង​កំណែ​ចាស់ៗ​របស់ VirtualBox បាន​ទáŸ)</li>%2</ul><p>វា​ážáŸ’រូវ​បាន​ផ្ដល់​អនុសាសនáŸâ€‹áž²áŸ’យ​ជ្រើស <b>បម្រុង​ទុក</b> ជា​និច្ច ពីព្រោះ​ក្នុងករណី​នáŸáŸ‡â€‹â€‹ážœáž¶â€‹áž“ឹង​មិនអាច​ážáŸ’រឡប់ក្រោយ​ទៅ​កំណែ​មុន​របស់ VirtualBox (ប្រសិនបើ​ចាំចាប់) ដោយ​មិនបាážáŸ‹áž”ង់​ការ​កំណážáŸ‹â€‹áž”ច្ចុប្បន្ន​របស់​អ្នក​ទáŸÂ ។ សូមមើល​សៀវដៅ VirtualBox សម្រាប់​សáŸáž…ក្ដី​លម្អិážâ€‹áž¢áŸ†áž–ី​ការ​ធ្វើ​ឲ្យ​ប្រសើ​រឡើង ។</p></translation> - </message> - <message> - <source><li><b>Exit</b> to terminate VirtualBox without saving the results of the conversion to disk.</li></source> - <translation type="obsolete"><li><b>áž…áŸáž‰</b> ដើម្បី​បញ្ចប់​ VirtualBox ដោយ​មិន​រក្សាទុក​លទ្ធផល​នៃ​ការ​បម្លែង​ážáž¶ážŸÂ ។</li></translation> - </message> - <message> - <source>O&verwrite</source> - <comment>warnAboutAutoConvertedSettings message box</comment> - <translation type="obsolete">បដិសáŸáž’</translation> - </message> - <message> <source><p>A critical error has occurred while running the virtual machine and the machine execution has been stopped.</p><p>For help, please see the Community section on <a href=http://www.virtualbox.org>http://www.virtualbox.org</a> or your support contract. Please provide the contents of the log file <tt>VBox.log</tt> and the image file <tt>VBox.png</tt>, which you can find in the <nobr><b>%1</b></nobr> 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 <b>Show Log</b> from the <b>Machine</b> menu of the main VirtualBox window.</p><p>Press <b>OK</b> if you want to power off the machine or press <b>Ignore</b> 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 <b>OK</b> now.</p></source> <translation><p>កំហុស​ធ្ងន់ធ្ងរ​បាន​កើážâ€‹áž¡áž¾áž„​ážážŽáŸˆáž–áŸáž›â€‹áž€áŸ†áž–ុង​រážáŸ‹â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“និម្មិហហើយ​ការ​ប្រážáž·áž”ážáŸ’ážáž·â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​ážáŸ’រូ​វបានបញ្ឈប់ ។</p><p>ចំពោះ​ជំនួយ សូមមើល​ផ្នែក​សហគមនáŸâ€‹áž“ៅ​លើ <a href=http://www.virtualbox.org>http://www.virtualbox.org</a> ឬ​កិច្ចសន្យា​គាំទ្រ​របស់​អ្នក ។ សូម​ផ្ដល់​នូវ​ážáŸ’លឹមសារ​របស់​ឯកសារ​កំណážáŸ‹áž áŸážáž» <tt>VBox.log</tt> ហើយ​នឹង​ឯកសារ​រូបភាព <tt>VBox.png</tt> ដែល​អ្នក​អាច​រក​បាន​នៅ​ក្នុង​ážáž <nobr><b>%1</b></nobr> ព្រមទាំង​សáŸáž…ក្ដីពិពណ៌នា​នូវ​អ្វីដែល​អ្នក​កំពុង​ធ្វើ នៅពáŸáž›â€‹áž€áŸ†áž ុស​កើážâ€‹áž¡áž¾áž„ ។ ចំណាំ​ážáž¶ អ្នក​កáŸáž¢áž¶áž…​ចូលដំណើរការ​ឯកសារ​ážáž¶áž„​លើ ដោយ​ជ្រើស <b>បង្ហាញ​កំណážáŸ‹â€‹áž áŸážáž»</b> ពី​ម៉ឺនុយ <b>ម៉ាស៊ីន</b> របស់​បង្អួច VirtualBox មáŸÂ ។</p><p>ចុច <b>យល់ព្រម</b> ប្រសិនបើ​​អ្នក​ចង់​បិទ​ម៉ាស៊ីន ឬ​ចុច <b>មិនអើពើ</b> ប្រសិន​បើ​អ្នក​ទុក​វា​សម្រាប់បំបាážáŸ‹â€‹áž€áŸ†áž ុស ។ សូម​ចំណាំážáž¶â€‹áž€áž¶â€‹ážšáž”ំបាážáŸ‹â€‹áž€áŸ†áž ុស​ទាមទារចំណáŸáŸ‡ážŠáž¹áž„ និង​កម្មវិធី​ពិសáŸážŸ ដូច្នáŸáŸ‡â€‹ážáŸ’រូវ​បានផ្ដល់​អនុសាសនáŸâ€‹áž²áŸ’យ​ចុច <b>យល់ព្រម</b> ឥឡូវ ។</p></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 <b>%1</b> already exists. Are you sure you want to replace it?<br /><br />Replacing it will overwrite its contents.</source> - <translation type="unfinished"></translation> + <translation>​មាន​ឈ្មោះ​ឯកសាររបស់​<b>%1</b>រួច​ហើយ​ ។ ážáž¾â€‹áž¢áŸ’នក​ពិážâ€‹áž‡áž¶áž…ង់​ជំនួស​វា​​ឬ ?<br /><br />​ការ​ជំនួស​វា​នឹង​សរសáŸážšâ€‹áž‡áž¶áž“់​លើ​ +មាážáž·áž€áž¶â€‹â€‹ážšáž”ស់​វា​ ។</translation> </message> <message> <source>The following files already exist:<br /><br />%1<br /><br />Are you sure you want to replace them? Replacing them will overwrite their contents.</source> - <translation type="unfinished"></translation> + <translation>មាន​ឯកសារ​​ជាបន្ážâ€‹áž”ន្ទាប់​រួច​ហើយ​ ៖<br /><br />%1<br /><br />ážáž¾â€‹â€‹áž¢áŸ’នក​ពិážâ€‹áž‡áž¶áž…ង់​ជំនួស​​​ពួកវា​ឬ ? ការ​ជំនួស​វា​នឹង​សរសáŸážšâ€‹áž‡áž¶áž”់​លើ​មាážáž·áž€áž¶â€‹ážšáž”ស់វា ។</translation> </message> <message> <source>Failed to remove the file <b>%1</b>.<br /><br />Please try to remove the file yourself and try again.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងកា​រយក​ឯកសារ <b>%1</b>áž…áŸáž‰Â ។<br /><br />សូម​ព្យាយាម​យក​ឯកសារ​ចáŸáž‰â€‹ážŠáŸ„យ​ážáŸ’លួន​ឯង ហើយ​ព្យាយាម​ម្ដង​ទៀážÂ ។</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 type="unfinished"></translation> + <translation>អ្នក​ហាក់​បី​ដូច​ជា​មាន​ប្រពáŸáž“្ធ​ឯកសារ USBFS បាន​ម៉ោន​នៅ /sys/bus/usb/drivers ។ យើ​ង​ផ្ដល់​អនុសាសនáŸâ€‹áž²áŸ’យ​ផ្លាស់ប្ដូរ​វា ព្រោះ​ážáž¶â€‹ážœáž¶â€‹áž‡áž¶â€‹áž€áž¶â€‹ážšáž€áŸ†ážŽážáŸ‹â€‹ážšáž…នាសម្ពáŸáž“្ធ​មិន​ážáŸ’រឹមážáŸ’រូវ​នៃ​ប្រពáŸáž“្ធ​របស់​អ្នក ដែល​អាច​ធ្វើ​ឲ្យ​ឧបករណ០USB បរាជáŸáž™â€‹â€‹ážáž¶áž˜â€‹ážœáž·áž’ី​ដែល​មិនបាន​រំពឹង​ទុក ។</translation> </message> <message> <source>You are running a prerelease version of VirtualBox. This version is not suitable for production use.</source> - <translation type="unfinished"></translation> + <translation>អ្នក​កំពុង​ដំណើរការ​កំណែ​ចáŸáž‰â€‹áž•áŸ’សាយ​មុន​របស់ VirtualBox ។ កំណែ​នáŸáŸ‡â€‹áž˜áž·áž“​សម​សម្រាប់​ការ​ប្រើផលិážáž•áž›â€‹áž“áŸáŸ‡â€‹áž‘áŸÂ ។</translation> </message> <message> <source>You are running an EXPERIMENTAL build of VirtualBox. This version is not suitable for production use.</source> - <translation type="unfinished"></translation> + <translation>អ្នកកំពុង​ដំណើរការ​ការ​ស្ážáž¶áž”នា​ពិសោធនáŸážšáž”ស់ VirtualBox ។ កំណែ​នáŸáŸ‡â€‹áž˜áž·áž“​សម​សម្រាប់ការ​ប្រើ​ផលិážáž•áž›â€‹áž“áŸáŸ‡â€‹áž‘áŸÂ ។</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="unfinished"></translation> + <translation>មិនអាច​ដំណើរការ​ USB ក្នុង​ប្រពáŸáž“្ធ​របស់​ម៉ាស៊ីនបាន​ទ០ពីព្រោះប្រពáŸáž“្ធ​ឯកសារ USB (usbfs) ឬ DBus និង​សáŸážœáž¶ hal បច្ចុប្បន្ននáŸáŸ‡áž¢áž¶áž…​ប្រើ​បាន ។ ប្រសិនបើ​អ្នក​ចង់​ប្រើ​ឧបករណáŸâ€‹ USB របស់​ម៉ាស៊ីន អ្នក​ážáŸ’រូវ​ážáŸ‚​កែវា ហើយ​ចាប់ផ្ដើម VirtualBox ឡើង​វិញ ។</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 type="unfinished"></translation> + <translation>អ្នក​កំពុង​ព្យាយាប​បិទ​ម៉ាស៊ីន​ដោយ​ប្រើប៊ូážáž»áž„​ážáž¶áž˜áž–áž› ACPI  ហើយ ។ បច្ចុប្បន្ន​នáŸáŸ‡â€‹áž˜áž·áž“អាច​ប្រើបាន​ទ០ពីព្រោះ​ម៉ាស៊ីន​​មិន​គាំទ្រ​​កម្មវិធី​បិទ​​ទáŸÂ ។</translation> </message> <message> <source><p>VT-x/AMD-V hardware acceleration has been enabled, but is not operational. Your 64-bit guest will fail to detect a 64-bit CPU and will not be able to boot.</p><p>Please ensure that you have enabled VT-x/AMD-V properly in the BIOS of your host computer.</p></source> - <translation type="unfinished"></translation> + <translation><p>ការ​បង្កើន​ល្បឿន​ផ្នែក​រឹង VT-x/AMD-V ážáŸ’រូវ​បានបើក ប៉ុន្ážáŸ‚​មិន​ដំណើរការ​ទáŸÂ ។ ម៉ាស៊ីន​ ៦៤ ប៊ីážâ€‹ážšáž”ស់​អ្នក​នឹង​បរាជáŸáž™â€‹áž€áŸ’នុង​រក​ស៊ីភីយូ ៦៤ ប៊ីហហើយ​មិន​អាច​ចាប់ផ្ដើម​បាន​ទáŸÂ ។</p><p>សូម​ប្រាកដ​ážáž¶ អ្នក​បានបើក VT-x/AMD-V យ៉ាង​ážáŸ’រាមážáŸ’រូវ​នៅ​ក្នុង BIOS នៃ​កុំព្យូទáŸážšâ€‹ážšáž”ស់​អ្នក ។</p></translation> </message> <message> <source>Close VM</source> - <translation type="unfinished"></translation> + <translation>បិទ VM</translation> </message> <message> <source>Continue</source> - <translation type="unfinished">បន្áž</translation> + <translation>បន្áž</translation> </message> <message> <source><p>VT-x/AMD-V hardware acceleration has been enabled, but is not operational. Certain guests (e.g. OS/2 and QNX) require this feature.</p><p>Please ensure that you have enabled VT-x/AMD-V properly in the BIOS of your host computer.</p></source> - <translation type="unfinished"></translation> + <translation><p>ការ​បង្កើន​ល្បឿន​ផ្នែក​រឹង VT-x/AMD-V ážáŸ’រូវ​បានបើក ប៉ុន្ážáŸ‚​មិន​អាច​ដំណើរការ​បាន​ទ០។ ម៉ាស៊ីន​ជាក់លាក់ (ឧ. OS/2 áž“áž·áž„ QNX) ទាមទារ​លក្ážážŽáŸˆáž–ិសáŸážŸâ€‹áž“áŸáŸ‡Â ។</p><p>សូម​ប្រាកដ​ážáž¶ អ្នក​បានបើក​ VT-x/AMD-V យ៉ាង​ážáŸ’រឹមážáŸ’រូវ​នៅ​ក្នុង BIOS នៃ​​កុំព្យូទáŸážšâ€‹ážšáž”ស់​អ្នក ។</p></translation> </message> <message> <source><p>Are you sure you want to restore snapshot <b>%1</b>? This will cause you to lose your current machine state, which cannot be recovered.</p></source> - <translation type="unfinished"></translation> + <translation><p>ážáž¾â€‹áž¢áŸ’នក​ប្រាក​ដ​ជា​ចង់​ស្ដារ​រូបážážâ€‹ <b>%1</b>ឬ ? វា​នឹង​ធ្វើ​ឲ្យ​អ្នក​បាážáŸ‹áž”ង់​ស្ážáž¶áž“ភាព​ម៉ាស៊ីន​បច្ចុប្បន្ន​របស់​អ្នក ដែល​មិនអាច​សង្គ្រោះ​បាន​ទáŸÂ ។</p></translation> </message> <message> <source>Restore</source> - <translation type="unfinished"></translation> + <translation>ស្ážáž¶ážšâ€‹</translation> </message> <message> <source>Cancel</source> - <translation type="unfinished"></translation> + <translation>បោះបង់​</translation> </message> <message> <source><p>Deleting the snapshot will cause the state information saved in it to be lost, and disk data spread over several image files that VirtualBox has created together with the snapshot will be merged into one file. This can be a lengthy process, and the information in the snapshot cannot be recovered.</p></p>Are you sure you want to delete the selected snapshot <b>%1</b>?</p></source> - <translation type="unfinished"></translation> + <translation><p>ការ​លុប​រូប​ážážâ€‹áž“ឹង​បណ្ážáž¶áž›â€‹áž²áŸ’យពáŸážáŸŒâ€‹áž˜áž¶áž“áž…áŸáž‰â€‹â€‹ážŠáŸ‚ល​បាន​រ​ក្សា​ទុក​ážáŸ’រូវ​បាន​បាážáŸ‹â€‹áž”ង់​ និងការ​ផ្សាយ​​ទិន្ននáŸáž™â€‹ážáž¶ážŸâ€‹â€‹â€‹áž›áž¾â€‹áž¯áž€ážŸáž¶ážšâ€‹ážšáž¼áž”​ភាពបី​បួន​​ដែល​ VirtualBox ážáŸ’រូវ​បានបង្កើážâ€‹áž‡áž¶áž˜áž½áž™â€‹áž‚្នា ​រូប​ážážâ€‹áž“ឹង​ážáŸ’រូវ​បានបញ្ចូល​ចូល​​គ្នា​​ទៅ​ក្នុង​ឯកសារ​ážáŸ‚​មួយ​ ។​ វាអាច​ដំណើរ​ការ​យូរ​ និង​ពáŸážáŸŒâ€‹áž˜áž¶áž“​ក្នុង​រូប​ážážâ€‹áž˜áž·áž“​អាច​ážáŸ’រូវ​បានយកបាន​​ឡើយ ។</p></p>ážáž¾â€‹áž¢áŸ’នក​ប្រាកដ​ជា​ចង់​លុប​រូប​ážážâ€‹ážŠáŸ‚លបាន​​ជ្រើស​<b>%1</b> ឬ ?</p></translation> </message> <message> <source>Delete</source> - <translation type="unfinished">លុប</translation> + <translation>លុប</translation> </message> <message> <source>Failed to restore the snapshot <b>%1</b> of the virtual machine <b>%2</b>.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™áž€áŸ’នុងការ​​​ស្ážáž¶ážšâ€‹ážšáž¼áž”ážážâ€‹â€‹ <b>%1</b> របស់​ម៉ាស៊ីននិម្មិ​áž<b>%2</b> ។</translation> </message> <message> <source>Failed to delete the snapshot <b>%1</b> of the virtual machine <b>%2</b>.</source> - <translation type="unfinished"></translation> + <translation>បានបរាជáŸáž™áž€áŸ’នុងការ​​​លុប​រូបážážâ€‹â€‹<b>%1</b> របស់​​ម៉ាស៊ីន​​និម្មិážâ€‹â€‹<b>%2</b> ។</translation> </message> <message> <source><p>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.</p><p>Are you sure you want to disable the additional controller?</p></source> - <translation type="unfinished"></translation> + <translation><p>មានážáž¶ážŸâ€‹ážšáž¹áž„​​ដែ​ល​ភ្ជាប់​ជា​មួយច្រក​របស់​ឧបករណáŸâ€‹áž”ញ្ជា​បន្ážáŸ‚ម​ ។ ប្រ​សិន​បើ​អ្នកបិទ​​ឧបករណáŸâ€‹áž”ញ្ជា​បន្ážáŸ‚ម​ គ្រប់​ážáž¶ážŸâ€‹ážšáž¹áž„​ទាំង​នáŸáŸ‡â€‹áž“ឹង​ážáŸ’រូវ​បាន​ផ្ážáž¶áž…់​ដោយ​ស្វáŸáž™â€‹áž”្រ​វážáŸ’ážáž·â€‹ ។</p><p>​ážáž¾â€‹â€‹áž¢áŸ’នក​ប្រាកដ​​ជា​​ចង់បិទ​​ឧបករណáŸâ€‹áž”ញ្ជា​បន្ážáŸ‚ម​ ឬ ?</p></translation> </message> <message> <source><p>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.</p><p>Are you sure you want to change the additional controller?</p></source> - <translation type="unfinished"></translation> + <translation><p>មាន​ážáž¶ážŸážšáž¹áž„​ដែល​ភ្ជាប់​ជាមួយ​ច្រក​របស់​ឧបករណáŸâ€‹áž”ញ្ជា​បន្ážáŸ‚ម​ ។ ប្រ​សិន​បើ​អ្នក​​ផ្លាស់​ប្ážáž¼ážšâ€‹áž§áž”រណáŸâ€‹áž”ញ្ញា​បន្ážáŸ‚ម​​ គ្រប់​ážáž¶ážŸâ€‹ážšáž¹áž„​ទាំង​នáŸáŸ‡â€‹áž“ឹង​ážáŸ’រូវ​បាន​ផ្ážáž¶áž…់​ដោយ​ស្វáŸáž™â€‹áž”្រវážáŸ’ážáž·â€‹ ។​</p><p>​ážáž¾â€‹áž¢áŸ’នក​ប្រាកដជា​​ចង់​ផ្លាស់​ប្ážáž¼ážšâ€‹â€‹áž§áž”ករណáŸâ€‹áž”ញ្ជា​បន្ážáŸ‚ម​ឬ ?</p></translation> </message> <message> <source>Change</source> - <comment>hard disk</comment> - <translation type="unfinished"></translation> + <comment> + + + +hard disk</comment> + <translation type="obsolete">ផ្លាស់ប្ážáž¼ážšâ€‹</translation> </message> <message> <source><p>There are no unused media available for the newly created attachment.</p><p>Press the <b>Create</b> button to start the <i>New Virtual Disk</i> wizard and create a new medium, or press the <b>Select</b> if you wish to open the <i>Virtual Media Manager</i>.</p></source> - <translation type="unfinished"></translation> + <translation><p>មិនមាន​មáŸážŒáŸ€â€‹ážŠáŸ‚ល​មិនបានប្រើ​​សម្រាប់​​​ឯក​សារ​ភ្ជាប់​ដែល​បង្កើážážáŸ’មី​ ។​</p><p>ចុច​ <b>បង្កើážâ€‹â€‹</b> ប៊ូážáž»áž„​ទៅ​ចាប់​ផ្ážáž¾áž˜ <i>​ážáž¶ážŸâ€‹áž“ិម្មិážâ€‹ážáŸ’មី</i> អ្នក​ជំនួយ​ការ​ និង​បង្កើážáž§áž”ករណáŸâ€‹áž•áŸ’ទុកážáŸ’មី​ ឬ​ចុច​​ <b>ជ្រើស​​</b> ប្រ​សិន​បើ​​អ្នក​មាន​បំណង​ទៅ​បើក​ <i>កម្ម​វិធី​គ្រប់​គ្រង​មáŸážŒáŸ€â€‹áž“ិម្មិážâ€‹â€‹</i>.</p></translation> </message> <message> <source>&Create</source> - <comment>medium</comment> - <translation type="unfinished">បង្កើáž</translation> + <comment> + + + +medium</comment> + <translation type="obsolete">បង្កើáž</translation> </message> <message> <source>&Select</source> - <comment>medium</comment> - <translation type="unfinished">ជ្រើស</translation> + <comment> + + + +medium</comment> + <translation type="obsolete">ជ្រើស</translation> </message> <message> <source><p>There are no unused media available for the newly created attachment.</p><p>Press the <b>Select</b> if you wish to open the <i>Virtual Media Manager</i>.</p></source> - <translation type="unfinished"></translation> + <translation><p>មិនមាន​មáŸážŒáŸ€â€‹áž˜áž·áž“​បាន​ប្រើទ០សម្រាប់​ឯកសារ​ភ្ជាប់​ដែលបានបង្កើážâ€‹ážáŸ’មី ។</p><p>ចុច <b>ជ្រើស</b> ប្រសិន​បើ​អ្នក​ចង់​បើក <i>កម្មវិធី​គ្រប់គ្រង​មáŸážŒáŸ€â€‹áž“ិម្មិáž</i> ។</p></translation> </message> <message> <source>Failed to attach the %1 to slot <i>%2</i> of the machine <b>%3</b>.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងការ​ភ្ជាប់ %1 ទៅ​រន្ធ <i>%2</i> របស់​ម៉ាស៊ីន<b>%3</b> ។</translation> </message> <message> <source>Failed to detach the %1 from slot <i>%2</i> of the machine <b>%3</b>.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ផ្ដាច់​ %1 ពី​រន្ធ <i>%2</i> របស់​ម៉ាស៊ីន<b>%3</b> ។</translation> </message> <message> <source>Unable to mount the %1 <nobr><b>%2</b></nobr> on the machine <b>%3</b>.</source> - <translation type="unfinished"></translation> + <translation>មិនអាច​ម៉ោន %1 <nobr><b>%2</b></nobr> នៅ​លើ​ម៉ាស៊ីន <b>%3</b>បាន​ទáŸÂ ។</translation> </message> <message> <source> Would you like to force mounting of this medium?</source> - <translation type="unfinished"></translation> + <translation> ážáž¾â€‹áž¢áŸ’នក​ចង់​បង្ážáŸ†â€‹áž˜áŸ‰áŸ„ន​ឧបករណáŸâ€‹áž•áŸ’ទុក​នáŸáŸ‡â€‹ážŠáŸ‚រឬទáŸÂ ?</translation> </message> <message> <source>Unable to unmount the %1 <nobr><b>%2</b></nobr> from the machine <b>%3</b>.</source> - <translation type="unfinished"></translation> + <translation>មិនអាច​អាន់ម៉ោន​ %1 <nobr><b>%2</b></nobr> ពី​ម៉ាស៊ីន <b>%3</b> ។</translation> </message> <message> <source> Would you like to force unmounting of this medium?</source> - <translation type="unfinished"></translation> + <translation> ážáž¾â€‹áž¢áŸ’នក​ចង់​បង្ážáŸ†â€‹áž¢áž¶áž“់ម៉ោន​ឧបករណáŸâ€‹áž•áŸ’ទុក​នáŸáŸ‡â€‹ážŠáŸ‚រឬទáŸÂ ?</translation> </message> <message> <source>Force Unmount</source> - <translation type="unfinished"></translation> + <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="unfinished"></translation> + <translation>បានបរាជáŸáž™â€‹â€‹áž€áŸ’នុង​កា​រច្រាន​ážáž¶ážŸâ€‹áž…áŸáž‰â€‹áž–ី​ដ្រាយ​និម្មិážÂ ។ ដ្រាយ​អាច​ážáŸ’រូវ​បានចាក់​សោ​ដោយ​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​ភ្ញៀវ ។ សូម​ពិនិážáŸ’យ​មើល​វា ហើយ​ព្យាយាម​ម្ដង​ទៀážÂ ។</translation> </message> <message> <source><p>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 <nobr><b>%1</b>?</nobr></p><p><b>Note:</b> 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.</p></source> - <translation type="unfinished"></translation> + <translation><p>ការ​លុប​បណ្ážáž¶áž‰â€‹ ម៉ា​ស៊ីន​​-ážáŸ‚​មួយ​​ áž“áŸáŸ‡â€‹áž“ឹង​យក​ចáŸáž‰â€‹ សំអាង​ទៅ​លើ​បណ្ážáž¶áž‰â€‹áž…ំនុច​ប្រទាក់​ ម៉ាស៊ីន​​-ážáŸ‚​មួយ​ áž“áŸáŸ‡ ។ ​ážáž¾â€‹áž¢áŸ’នកពិážâ€‹áž‡áž¶â€‹áž…ង់​យក​ចáŸáž‰â€‹â€‹ (បណ្ážáž¶áž‰ ម៉ាស៊ីន​​-​ážáŸ‚​មួយ​​) ចំណុច​ប្រទាក់​​<nobr><b>%1</b>?</nobr></p><p><b>សម្គាល់​ ៖</b> ចំណុច​ប្រ​ទាក់​នáŸáŸ‡â€‹áž¢áž¶áž…ប្រើ​​មួយ​ ឬ​​ច្រើន​​អាដាប់​ទáŸážšâ€‹áž”ណ្ážáž¶áž‰áž“ិម្មិážâ€‹â€‹â€‹áž‡áž¶áž€áž˜áŸ’ម​សិទ្ធ​មួយ​នៃ​​​ VMs របស់​អ្នក​ ។ ក្រោយ​ពáŸáž›â€‹ážœáž¶â€‹ážáŸ’រូវ​បាន​យក​ចáŸáž‰â€‹ អាដាប់​ទáŸážšâ€‹áž‘ាំង​នáŸáŸ‡â€‹áž“ឹង​មិន​អាច​ប្រើ​បាន​យូរ​ឡើយ​​ ážšáž áž¼ážâ€‹ážŠáž›áŸ‹â€‹áž¢áŸ’នក​​កែ​ការ​កំណážáŸ‹â€‹â€‹ážšáž”ស់​វា​មួយ​ណា​កáŸáž˜áž¶áž“​​​ឈ្មោះ​ážáž»ážŸâ€‹áž‚្នា​​ចំណុច​ប្រទាក់​ ឬ​ប្រ​ភáŸáž‘​ážáž»ážŸâ€‹áž‚្នា​នៃ​​​ឯកសារ​​ភ្ជាប់​អាដាប់​ទáŸážšâ€‹ ។</p></translation> </message> <message> <source>Failed to create the host-only network interface.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងការ​​​បង្កើážâ€‹áž…ំណុច​ប្រ​ទាក់​បណ្ážáž¶áž‰â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​​-ážáŸ‚​មួយ​</translation> </message> <message> <source><p>Could not insert the VirtualBox Guest Additions installer CD image into the virtual machine <b>%1</b>, as the machine has no CD/DVD-ROM drives. Please add a drive using the storage page of the virtual machine settings dialog.</p></source> - <translation type="unfinished"></translation> + <translation><p>មិនអាច​បញ្ចូល​រូបភាព​ស៊ីឌី​កម្មវិធី​ដំឡើង​បន្ážáŸ‚ម​របស់​ម៉ាស៊ីន VirtualBox ​ទៅ​ក្នុង​ម៉ាស៊ីន​និម្មិážâ€‹<b>%1</b>បាន​ទ០ព្រោះ​ážáž¶â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​មាន​ដ្រាយ​ស៊ីឌី/ឌីវីឌី​រ៉ូម ។ សូម​បន្ážáŸ‚ម​ដ្រាយ ដោយ​ប្រើ​ទំពáŸážšâ€‹áž•áŸ’ទុក​នៃ​ប្រអប់​កំណážáŸ‹â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​និម្មិážÂ ។</p></translation> </message> <message> <source><p>Invalid e-mail address or password specified.</p></source> - <translation type="unfinished"></translation> + <translation><p>អាសយដ្ឋាន​អ៊ីមែល ឬ​ពាក្យ​សម្ងាážáŸ‹â€‹ážŠáŸ‚លបាន​បញ្ជាក់មិន​ážáŸ’រឹមážáŸ’រូវ ។</p></translation> </message> <message> <source><p>Failed to register the VirtualBox product.</p><p>%1</p></source> - <translation type="unfinished"></translation> + <translation><p>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងកា​រចុះឈ្មោះផលិážáž•áž› VirtualBox ។</p><p>%1</p></translation> </message> <message> <source><p>Your existing VirtualBox settings files will be automatically converted from the old format to a new format required by the new version of VirtualBox.</p><p>Press <b>OK</b> to start VirtualBox now or press <b>Exit</b> if you want to terminate the VirtualBox application without any further actions.</p></source> - <translation type="unfinished"></translation> + <translation><p>ឯកសារ​កំណážáŸ‹â€‹ VirtualBox មាន​ស្រាប់​​របស់​អ្នក នឹង​ážáŸ’រូវ​បានបម្លែង​ដោយ​ស្វáŸáž™â€‹áž”្រវážáŸ’ážáž·â€‹áž–ី​ទ្រង់ទ្រាយ​ចាស់ ទៅ​ទ្រង់ទ្រាយ​ážáŸ’មី​ដែលបានទាមទារ​ដោយ​កំណែ​ážáŸ’មី​របស់ VirtualBox ​។</p><p>ចុច <b>យល់</b> ដើម្បី​ចាប់ផ្ដើម VirtualBox ឥឡូវ ឬ​ចុច <b>ចាកចáŸáž‰</b> ប្រសិនបើ​អ្នក​ចង់​បញ្ចប់​កម្មវិធី​របស់ VirtualBox ដោយ​គ្មាន​សកម្មភាព​បន្ážáŸ‚ម​ផ្សáŸáž„​ទៀážÂ ។</p></translation> </message> <message> <source>E&xit</source> - <comment>warnAboutSettingsAutoConversion message box</comment> - <translation type="unfinished">áž…áŸáž‰</translation> + <comment> + + + +warnAboutSettingsAutoConversion message box</comment> + <translation type="obsolete">áž…áŸáž‰</translation> </message> <message> <source><p>The following VirtualBox settings files will be automatically converted from the old format to a new format required by the new version of VirtualBox.</p><p>Press <b>OK</b> to start VirtualBox now or press <b>Exit</b> if you want to terminate the VirtualBox application without any further actions.</p></source> - <translation type="unfinished"></translation> + <translation><p>ឯកសារ​កំណážáŸ‹ VirtualBox ដូច​ážáž¶áž„ក្រោម​នឹង​ážáŸ’រូវ​បានបម្លែង​ដោយ​ស្វáŸáž™â€‹áž”្រវážáŸ’ážáž·â€‹áž–ី​ទ្រង់ទ្រាយ​ចាស់​ទៅ​ទ្រង់ទ្រាយ​ážáŸ’មី​របស់ VirtualBox ។</p><p>ចុច <b>យល់</b> ដើម្បី​ចាប់ផ្ដើម VirtualBox ឥឡូវ ឬ​ចុច <b>ចាកចáŸáž‰</b> ប្រសិនបើ​អ្នក​ចង់​បញ្ចប់​កម្មវិធី VirtualBox ដោយ​គ្មាន​សកម្មភាព​បន្ážáŸ‚ម​ទៀážÂ ។</p></translation> </message> <message> <source>Failed to open appliance.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងកា​របើក​ឧបករណáŸÂ ។</translation> </message> <message> <source>Failed to open/interpret appliance <b>%1</b>.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងកា​របើក/បកប្រែ​ឧបករណáŸ<b>%1</b> ។</translation> </message> <message> <source>Failed to import appliance <b>%1</b>.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងកា​រនាំចូល​ឧបករណáŸ<b>%1</b> ។</translation> </message> <message> <source>Failed to check files.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™â€‹áž‘ៅ​ពិនិážáŸ’យ​មើល​ឯកសារ​ ។</translation> </message> <message> <source>Failed to remove file.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™â€‹áž€áŸ’នុងកា​រយក​ឯកសារ​ចáŸáž‰Â ។</translation> </message> <message> <source>Failed to create appliance.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™â€‹áž‘ៅ​បង្កើážáž§áž”ករណáŸÂ ។</translation> </message> <message> <source>Failed to prepare the export of the appliance <b>%1</b>.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™â€‹áž‘ៅ​រៀប​ចំ​នាំ​ចូលឧបករណáŸâ€‹ <b>%1</b> ។</translation> </message> <message> <source>Failed to create an appliance.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™â€‹áž‘ៅ​បង្កើážáž§áž”ករណáŸâ€‹ ។</translation> </message> <message> <source>Failed to export appliance <b>%1</b>.</source> - <translation type="unfinished"></translation> + <translation>បាន​បរាជáŸáž™â€‹áž‘ៅ​នាំ​ចáŸáž‰áž§áž”ករណáŸâ€‹â€‹ <b>%1</b> ។</translation> + </message> + <message> + <source>hard disk</source> + <comment> + + + + +failed to mount ...</comment> + <translation type="obsolete">ážáž¶ážŸážšáž¹áž„</translation> + </message> + <message> + <source>CD/DVD</source> + <comment> + + + + +failed to mount ... host-drive</comment> + <translation type="obsolete">ស៊ីឌី​​​/​ឌីវីឌី​​</translation> + </message> + <message> + <source>CD/DVD image</source> + <comment> + + + + +failed to mount ...</comment> + <translation type="obsolete">រូបភាព​ស៊ីឌី/ឌីវីឌី</translation> + </message> + <message> + <source>floppy</source> + <comment> + + + + +failed to mount ... host-drive</comment> + <translation type="obsolete">ážáž¶ážŸáž‘ន់​</translation> + </message> + <message> + <source>floppy image</source> + <comment> + + + + +failed to mount ...</comment> + <translation type="obsolete">រូបភាព​ážáž¶ážŸáž‘ន់</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><p>Are you sure you want to delete the CD/DVD-ROM device?</p><p>You will not be able to mount any CDs or ISO images or install the Guest Additions without it!</p></source> + <translation><p>ážáž¾â€‹â€‹â€‹áž¢áŸ’នក​ប្រាកដ​ជា​ចង់​លុប​ឧបករណáŸâ€‹â€‹ážŸáŸŠáž¸â€‹ážŒáž¸â€‹â€‹/​ឌី​វីឌី​-រ៉ូម​ឬ​​?</p><p>អ្នក​នឹង​​មិន​អាច​ម៉ោន​ស៊ី​ឌី​ ឬ​រូប​ភាព ISO ឬ​ដំឡើង​​ការ​បន្ážáŸ‚ម​ម៉ាស៊ីន​ភ្ញៀវ​​ដោយ​គ្មាន​វា​បាន​​ទáŸÂ ​​!</p></translation> + </message> + <message> + <source>&Remove</source> + <comment> + + + + +medium</comment> + <translation type="obsolete">យកចáŸáž‰â€‹</translation> + </message> + <message> + <source>Change</source> + <comment>hard disk</comment> + <translation type="unfinished">ផ្លាស់ប្ážáž¼ážšâ€‹</translation> + </message> + <message> + <source>&Create</source> + <comment>medium</comment> + <translation type="unfinished">បង្កើáž</translation> + </message> + <message> + <source>&Select</source> + <comment>medium</comment> + <translation type="unfinished">ជ្រើស</translation> + </message> + <message> + <source>&Remove</source> + <comment>medium</comment> + <translation type="unfinished">យកចáŸáž‰â€‹</translation> + </message> + <message> + <source>E&xit</source> + <comment>warnAboutSettingsAutoConversion message box</comment> + <translation type="unfinished">áž…áŸáž‰</translation> </message> <message> <source>hard disk</source> @@ -4452,7 +4812,7 @@ p, li { white-space: pre-wrap; } <message> <source>CD/DVD</source> <comment>failed to mount ... host-drive</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">ស៊ីឌី​​​/​ឌីវីឌី​​</translation> </message> <message> <source>CD/DVD image</source> @@ -4462,12 +4822,12 @@ p, li { white-space: pre-wrap; } <message> <source>floppy</source> <comment>failed to mount ... host-drive</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">ážáž¶ážŸáž‘ន់​</translation> </message> <message> <source>floppy image</source> <comment>failed to mount ...</comment> - <translation type="unfinished">រូបភាព​ážáž¶ážŸâ€‹áž‘ន់</translation> + <translation type="unfinished">រូបភាព​ážáž¶ážŸáž‘ន់</translation> </message> <message> <source>hard disk</source> @@ -4477,179 +4837,166 @@ p, li { white-space: pre-wrap; } <message> <source>CD/DVD device</source> <comment>failed to attach ...</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">ឧបករណáŸâ€‹ážŸáŸŠáž¸ážŒáž¸â€‹â€‹/​ឌីវីឌី​</translation> </message> <message> <source>floppy device</source> <comment>failed to close ...</comment> - <translation type="unfinished"></translation> - </message> - <message> - <source><p>Are you sure you want to delete the CD/DVD-ROM device?</p><p>You will not be able to mount any CDs or ISO images or install the Guest Additions without it!</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Remove</source> - <comment>medium</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">ឧបករណáŸâ€‹ážáž¶ážŸáž‘ន់​</translation> </message> </context> <context> <name>VBoxProgressDialog</name> <message> <source>A few seconds remaining</source> - <translation type="unfinished"></translation> + <translation>នៅ​សល់​ពីរ​ ​បី​​វិនាទី​</translation> </message> <message> <source>Canceling...</source> - <translation type="unfinished"></translation> + <translation>កំពុង​បោះបង់...</translation> </message> <message> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>បោះបង់​</translation> </message> <message> <source>Cancel the current operation</source> - <translation type="unfinished"></translation> + <translation>បោះ​បង់​ប្រ​ážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž”ច្ចុប្បន្ន</translation> + </message> + <message> + <source>%1, %2 remaining</source> + <comment> + + + + +You may wish to translate this more like "Time remaining: %1, %2"</comment> + <translation type="obsolete">នៅ​សល់​ %1, %2</translation> + </message> + <message> + <source>%1 remaining</source> + <comment> + + + + +You may wish to translate this more like "Time remaining: %1"</comment> + <translation type="obsolete">នៅ​សល់​ %1</translation> </message> <message> <source>%1, %2 remaining</source> <comment>You may wish to translate this more like "Time remaining: %1, %2"</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">នៅ​សល់​ %1, %2</translation> </message> <message> <source>%1 remaining</source> <comment>You may wish to translate this more like "Time remaining: %1"</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">នៅ​សល់​ %1</translation> </message> </context> <context> <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>ប្រអប់​ចុះឈ្មោះ VirtualBox</translation> - </message> - <message> - <source>&Name</source> - <translation type="obsolete">ឈ្មោះ</translation> + <translation type="obsolete">ប្រអប់​ចុះឈ្មោះ VirtualBox</translation> </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>បញ្ចូល​ឈ្មោះ​ពáŸáž‰â€‹ ដោយ​ប្រើ​ážáž½áž¢áž€áŸ’សរ​ឡាážáž¶áŸ†áž„ ។</translation> - </message> - <message> - <source>&E-mail</source> - <translation type="obsolete">អ៊ីមែល</translation> + <translation type="obsolete">បញ្ចូល​ឈ្មោះ​ពáŸáž‰â€‹ ដោយ​ប្រើ​ážáž½áž¢áž€áŸ’សរ​ឡាážáž¶áŸ†áž„ ។</translation> </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>បញ្ចូល​អាសយដ្ឋាន​អ៊ីមែល​ដែល​ážáŸ’រឹមážáŸ’រូវ​របស់អ្នក ។</translation> - </message> - <message> - <source>&Please do not use this information to contact me</source> - <translation type="obsolete">សូម​កុំ​ប្រើ​ពáŸážáŸŒáž˜áž¶áž“​នáŸáŸ‡â€‹ážŠáž¾áž˜áŸ’បីទាក់ទង​ážáŸ’ញុំ</translation> + <translation type="obsolete">បញ្ចូល​អាសយដ្ឋាន​អ៊ីមែល​ដែល​ážáŸ’រឹមážáŸ’រូវ​របស់អ្នក ។</translation> </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>សូម​ស្វាគមនáŸâ€‹áž˜áž€â€‹áž€áž¶áž“់​សំណុំ​បែបបទ​ចុះឈ្មោះ​របស់ VirtualBox !</translation> + <translation type="obsolete">សូម​ស្វាគមនáŸâ€‹áž˜áž€â€‹áž€áž¶áž“់​សំណុំ​បែបបទ​ចុះឈ្មោះ​របស់ VirtualBox !</translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>មិនអាច​អនុវážáŸ’ážâ€‹áž€áž¶ážšâ€‹ážáž—្ជាប់​ចាប់ដៃ​បានទáŸÂ ។</translation> - </message> - <message> - <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation type="obsolete"><p>សូមបំពáŸáž‰â€‹ážŸáŸ†ážŽáž»áŸ†â€‹áž”ែបបទ​ចុះឈ្មោះនáŸáŸ‡ ដើម្បីអនុញ្ញាážâ€‹áž²áŸ’យ​យើង​ដឹង​ážáž¶â€‹ អ្នកប្រើ VirtualBox និង​ជា​ជម្រើស​ážáŸ’រូវ​ជូនដំណឹង​អ្នក​អំពី​ពáŸážáŸŒáž˜áž¶áž“ និង​ភាព​ទាន់សមáŸáž™â€‹ážšáž”ស់ VirtualBox ។</p><p>បញ្ចូល​ឈ្មោះ​ពáŸáž‰áž›áŸáž‰â€‹ážšáž”ស់​អ្នកដោយ​ប្រើ​ážáž½áž¢áž€áŸ’សរ​ឡាážáž¶áŸ†áž„ ហើយអាសយដ្ឋាន​អ៊ីមែល​របស់អ្នកក្នុង​វាល​ážáž¶áž„​ក្រោម ។ សូម​ចំណាំ​ážáž¶ Sun Microsystems នឹង​ប្រើ​ពáŸážáŸŒáž˜áž¶áž“áž“áŸáŸ‡ážŠáž¾áž˜áŸ’បី​ប្រមូល​ážáŸ‚​​ស្ážáž·ážáž·â€‹áž”្រើ​ផលិážáž•áž› ហើយ​ផ្ញើ​ព្រឹážáŸ’ážáž·áž”ážáŸ’រ​ VirtualBox ឲ្យ​អ្នក ។ ជា​ទូទៅ Sun Microsystems នឹង​មិន​ចម្លង​ទិន្ននáŸáž™â€‹ážšáž”ស់​អ្នក​ទៅ​ភាគីទីបី​បានទáŸÂ ។ áž–áŸážáŸŒáž˜áž¶áž“​លម្អិážâ€‹áž¢áŸ†áž–ី​​វិធី​ដែល​យើង​ប្រើ​ទិន្ននáŸáž™â€‹áž•áŸ’ទាល់ážáŸ’លួន​របស់​អ្នក អាច​រក​បាននៅ​ក្នុង​ផ្នែក <b>គោលនយោបាយ​ឯកជន</b> របស់​សៀវភៅ​ដៃ VirtualBox ឬ​នៅ​លើ​ទំពáŸážš <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>គោលនយោបាយ​ឯកជន</a> របស់​ážáŸ†áž”ន់បណ្ដាញ VirtualBox ។</p></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">គូស​ធីក​ប្រអប់​នáŸáŸ‡ ប្រសិនបើ​អ្នក​មិន​ចង់​ទទួល​សំបុážáŸ’រ​ពី​ Sun Microsystems ážáž¶áž˜â€‹áž¢áž¶ážŸáž™ážŠáŸ’ឋាន​អ៊ីមែល​ដែល​បាន​បញ្ជាក់​ážáž¶áž„​លើ ។</translation> - </message> - <message> - <source>C&onfirm</source> - <translation type="obsolete">អះអាង</translation> + <translation type="obsolete">មិនអាច​អនុវážáŸ’ážâ€‹áž€áž¶ážšâ€‹ážáž—្ជាប់​ចាប់ដៃ​បានទáŸÂ ។</translation> </message> <message> <source>Cancel</source> - <translation>បោះបង់</translation> + <translation type="obsolete">បោះបង់</translation> </message> <message> <source>Select Country/Territory</source> - <translation type="unfinished"></translation> + <translation type="obsolete">ជ្រើស​​​ដែន​ដី​​/​ប្រ​ទáŸážŸâ€‹</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation type="unfinished"></translation> + <translation type="obsolete"><p>សូម​បំ​ពáŸáž‰â€‹ážŸáŸ†ážŽáž»áŸ†â€‹â€‹áž”ែប​បទ​ការ​ចុះ​ឈ្មោះ​នáŸáŸ‡â€‹â€‹ážŠáž¾áž˜áŸ’បី​អនុ​ញ្ញាážâ€‹áž–ួក​យើង​ដឹង​ážáž¶â€‹áž¢áŸ’នក​ប្រើ​ VirtualBox áž“áž·áž„ ដោយ​ជម្រើស​ ​ដើម្បី​រក្សា​ទុកដែល​អ្នក​បាន​អង្កáŸážâ€‹áž¢áŸ†áž–ី​​ពáŸážáŸŒâ€‹áž˜áž¶áž“ និងភាព​ទាន់​សមáŸáž™â€‹ážšáž”ស់​​​ VirtualBox ។</p><p>សូម​ប្រើ​ážáž¼â€‹áž¢áž€áŸ’សរ​ឡាážáž¶áŸ†áž„​ážáŸ‚​មួយ​​ដើម្បី​បំ​ពáŸáž‰â€‹áž€áŸ’នុង​វាល​ážáž¶áž„​ក្រោម​ ។ ប្រ​ពáŸáž“្ធ​ម៉ៃ​​​ក្រូ​ Sun នឹង​ប្រើ​ពáŸážáŸŒâ€‹áž˜áž¶áž“ស្ážáž·ážáž·â€‹â€‹áž”្រើ​ផលិážáž•áž›â€‹áž‡áž¶áž˜áž½áž™â€‹áž‚្នា​ និង​​​ផ្ញើ​​សំបុážáŸ’រ​ពáŸážáŸŒâ€‹áž˜áž¶áž“ឲ្យ​អ្នក​​របស់​​ VirtualBox ។ ពិសáŸážŸâ€‹â€‹ ប្រពáŸáž“្ធ​ម៉ៃ​ក្រូ​ Sun ​នឹង​មិន​ហុច​ទិន្ន​នáŸáž™â€‹áž—ាគី​ទី​បី​ ។ បាន​រៀប​រាប់​ពáŸážáŸŒâ€‹áž˜áž¶áž“​អំពី​ យើង​ប្រើ​យ៉ាង​ដូចម្ážáŸáž…​នៃ​ទិន្ន​នáŸáž™â€‹áž•áŸ’ទាល់​ដែល​ážáŸ’រូវ​បាន​ស្វែង​រក​ក្នុង​ <b>នយោ​បាយ​ផ្ទាស់​ážáŸ’លួន​​</b> ភាគ​របស់​ VirtualBox សៀវ​ភៅ​ដៃ​ ឬ​លើ​​ <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>នយោ​បាយ​ឯក​ជន​​</a> ទំពáŸážšâ€‹â€‹ បណ្ážáž¶áž‰â€‹-​ážáŸ†áž”ន់​បណ្ážáž¶áž‰â€‹ážšáž”ស់​ VirtualBox ។</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation type="unfinished"></translation> + <translation type="obsolete">ážáŸ’ញុំ​មាន​គណនី​លើបណ្ážáž¶áž‰â€‹ážšáž”ស់​​ Sun រួច​ហើយ ៖</translation> </message> <message> <source>&E-mail:</source> - <translation type="unfinished"></translation> + <translation type="obsolete">អ៊ី​មែល​ ៖</translation> </message> <message> <source>&Password:</source> - <translation type="unfinished"></translation> + <translation type="obsolete">​ពាក្យ​សម្ងាážáŸ‹â€‹Â ៖</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation type="unfinished"></translation> + <translation type="obsolete">ážáŸ’ញុំ​ចង់​បង្កើážâ€‹â€‹áž‚ណនី​លើ​បណ្ážáž¶áž‰â€‹ážšáž”ស់​ Sun ážáŸ’មី ៖</translation> </message> <message> <source>&First Name:</source> - <translation type="unfinished"></translation> + <translation type="obsolete">នាម​ážáŸ’លួន​ ៖</translation> </message> <message> <source>&Last Name:</source> - <translation type="unfinished"></translation> + <translation type="obsolete">នាម​ážáŸ’រ​កូល​ ៖</translation> </message> <message> <source>&Company:</source> - <translation type="unfinished"></translation> + <translation type="obsolete">ក្រុម​ហ៊ុន​​ ៖</translation> </message> <message> <source>Co&untry:</source> - <translation type="unfinished"></translation> + <translation type="obsolete">ប្រ​ទáŸážŸâ€‹Â ៖</translation> </message> <message> <source>E-&mail:</source> - <translation type="unfinished"></translation> + <translation type="obsolete">អ៊ី​មែល​ ៖</translation> </message> <message> <source>P&assword:</source> - <translation type="unfinished"></translation> + <translation type="obsolete">ពាក្យសម្ងាážáŸ‹â€‹Â ៖</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation type="unfinished"></translation> + <translation type="obsolete">បញ្ជាក់​ពាក្យ​សម្ងាážáŸ‹Â ៖</translation> </message> <message> <source>&Register</source> - <translation type="unfinished"></translation> + <translation type="obsolete">ចុះ​ឈ្មោះ​</translation> </message> </context> <context> <name>VBoxSFDialog</name> <message> <source>Shared Folders</source> - <translation>ážážâ€‹ážŠáŸ‚លបានចែករំលែក</translation> + <translation>ážážâ€‹ážŠáŸ‚ល​បាន​ចែករំលែក</translation> </message> </context> <context> <name>VBoxScreenshotViewer</name> <message> <source>Screenshot of %1 (%2)</source> - <translation type="unfinished"></translation> + <translation>រូប​ážážâ€‹áž¢áŸâ€‹áž€áŸ’រង់​របស់​ %1 (%2)</translation> </message> <message> <source>Click to view non-scaled screenshot.</source> - <translation type="unfinished"></translation> + <translation>ចុច​ ដើម្បី​មើល​រូបážážâ€‹áž¢áŸáž€áŸ’រង់​គ្មានមាážáŸ’រដ្ឋាន ។</translation> </message> <message> <source>Click to view scaled screenshot.</source> - <translation type="unfinished"></translation> + <translation>ចុច ដើម្បី​​មើល​រូប​ážážâ€‹áž¢áŸáž€áŸ’រង់​ដែល​មានមាážáŸ’រ​ដ្ឋាន​ ។</translation> </message> </context> <context> @@ -4712,10 +5059,6 @@ p, li { white-space: pre-wrap; } <translation>បោះបង់​ស្ážáž¶áž“ភាព​របស់​ម៉ាស៊ីន​និម្មិážâ€‹ážŠáŸ‚ល​ជ្រើស​ដែលបាន​រក្សាទុក</translation> </message> <message> - <source>&Refresh</source> - <translation type="obsolete">ធ្វើ​ឲ្យ​ស្រស់</translation> - </message> - <message> <source>Refresh the accessibility state of the selected virtual machine</source> <translation>ធ្វើ​ឲ្យ​ស្ážáž¶áž“ភាព​ចូលដំណើរការ​ស្រស់​របស់​ម៉ាស៊ីន​និម្មិážâ€‹ážŠáŸ‚លបានជ្រើស</translation> </message> @@ -4768,10 +5111,6 @@ p, li { white-space: pre-wrap; } <translation>បង្ហាញ​​ឯកសារ​កំណážáŸ‹áž áŸážáž»â€‹ážšáž”ស់​ម៉ាស៊ីន​និម្មិážâ€‹ážŠáŸ‚ល​បានជ្រើស</translation> </message> <message> - <source>Sun xVM VirtualBox</source> - <translation type="obsolete">Sun xVM VirtualBox</translation> - </message> - <message> <source>R&esume</source> <translation>បន្áž</translation> </message> @@ -4788,10 +5127,6 @@ p, li { white-space: pre-wrap; } <translation>ផ្អាក​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹ážšáž”ស់​ម៉ាស៊ីននិម្មិáž</translation> </message> <message> - <source><h3>Welcome to VirtualBox!</h3><p>The left part of this window is a list of all virtual machines on your computer. The list is empty now because you haven't created any virtual machines yet.<img src=:/welcome.png align=right/></p><p>In order to create a new virtual machine, press the <b>New</b> button in the main tool bar located at the top of the window.</p><p>You can press the <b>F1</b> key to get instant help, or visit <a href=http://www.virtualbox.org>www.virtualbox.org</a> for the latest information and news.</p></source> - <translation type="obsolete"><h3>សូម​ស្វាគមនáŸâ€‹áž˜áž€â€‹áž€áž¶áž“់​ VirtualBox!</h3><p>ផ្នែក​ដែល​នៅ​សល់​របស់​បង្អួច​នáŸáŸ‡â€‹â€‹áž˜áž¶áž“បំណង​បង្ហាញ​បញ្ជី​ម៉ាស៊ីន​និម្មិážâ€‹áž“ៅ​លើ​កុំព្យូទáŸážšâ€‹ážšáž”ស់​អ្នក ។ បញ្ជី​ទទáŸâ€‹áž¥áž¡áž¼ážœâ€‹ ពីព្រោះ​អ្នក​មិន​បានបង្កើážâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​និម្មិážâ€‹ážŽáž¶áž˜áž½áž™â€‹áž“ៅ​ឡើយ​ទáŸÂ ។<img src=:/welcome.png align=right/></p><p>ដើម្បី​បង្កើážâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​និម្មិážâ€‹ážáŸ’មី ចុច​ប៊ុážáž»áž„ <b>ážáŸ’មី</b> នៅ​ក្នុង​របារ​ឧបករណáŸâ€‹áž˜áŸâ€‹ ដែល​មាន​ទីážáž¶áŸ†áž„​នៅ​ផ្នែក​ážáž¶áž„​លើ​របស់​បង្អួច ។</p><p>អ្នក​អាច​ចុច​គ្រាប់ចុច <b>F1</b> ដើម្បី​រកជំនួយ ឬ​ទស្សនាážáŸ†áž”់​បណ្ដាញ <a href=http://www.virtualbox.org>www.virtualbox.org</a> សម្រាប់​រក​ពáŸážáŸŒáž˜áž¶áž“​ដែល​ážáŸ’មីៗ​បំផុážÂ ។</p></translation> - </message> - <message> <source>&Virtual Media Manager...</source> <translation>កម្មវិធី​គ្រប់គ្រង​ម៉ាស៊ីន​និម្មិáž...</translation> </message> @@ -4806,31 +5141,31 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Sun VirtualBox</source> - <translation type="unfinished"></translation> + <translation>Sun VirtualBox</translation> </message> <message> <source>&Import Appliance...</source> - <translation type="unfinished"></translation> + <translation>នាំ​ចូល​ឧបករណáŸâ€‹...</translation> </message> <message> <source>Import an appliance into VirtualBox</source> - <translation type="unfinished"></translation> + <translation>នាំ​ចូលឧបករណáŸâ€‹áž‘ៅ​ក្នុង​ VirtualBox</translation> </message> <message> <source>&Export Appliance...</source> - <translation type="unfinished"></translation> + <translation>នាំចáŸáž‰áž§áž”ករណáŸ...</translation> </message> <message> <source>Export one or more VirtualBox virtual machines as an appliance</source> - <translation type="unfinished"></translation> + <translation>នាំ​ចáŸáž‰â€‹â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​និម្មិážâ€‹áž˜áž½áž™â€‹ ឬ​ច្រើន​របស់​ VirtualBox ជាឧបករណáŸâ€‹</translation> </message> <message> <source>Re&fresh</source> - <translation type="unfinished">ធ្វើ​ឲ្យ​ស្រស់</translation> + <translation>ធ្វើ​ឲ្យ​ស្រស់</translation> </message> <message> <source><h3>Welcome to VirtualBox!</h3><p>The left part of this window is a list of all virtual machines on your computer. The list is empty now because you haven't created any virtual machines yet.<img src=:/welcome.png align=right/></p><p>In order to create a new virtual machine, press the <b>New</b> button in the main tool bar located at the top of the window.</p><p>You can press the <b>%1</b> key to get instant help, or visit <a href=http://www.virtualbox.org>www.virtualbox.org</a> for the latest information and news.</p></source> - <translation type="unfinished"></translation> + <translation><h3>សូមស្វាគមនáŸâ€‹â€‹áž˜áž€â€‹áž€áž¶áž“់ VirtualBox !</h3><p>ផ្នែកដែល​នៅ​សល់​របស់​បង្អួច​នáŸáŸ‡ គឺជា​បញ្ជី​ម៉ាស៊ីន​និម្មិážâ€‹áž“ៅ​ក្នុង​កុំព្យូទáŸážšâ€‹ážšáž”ស់​អ្នក ។ បញ្ជី​ទទáŸâ€‹áž¥áž¡áž¼ážœâ€‹áž“áŸáŸ‡ ពីព្រោះ​អ្នកមិនបានបង្កើážâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“និម្មិážâ€‹áž“ៅ​ឡើយ​ទáŸÂ ។<img src=:/welcome.png align=right/></p><p>ដើម្បី​បង្កើážâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​និម្មិហចុច​ប៊ូážáž»áž„ <b>ážáŸ’មី</b> ក្នុង​របារ​ឧបករណáŸâ€‹ážŠáŸ‚ល​មាននៅ​​ផ្នែក​ážáž¶áž„​លើ​នៃ​បង្អួច ។</p><p>អ្នក​អាច​ចុច​គ្រាប់ចុច <b>%1</b> ដើម្បីទទួល​បាន​ជំនួយ​ភ្លាមៗ ឬ​ចំពោះ​ពáŸážáŸŒáž˜áž¶áž“​បន្ážáŸ‚ម ​សូម​មើល <a href=http://www.virtualbox.org>www.virtualbox.org</a> ។</p></translation> </message> </context> <context> @@ -4853,63 +5188,39 @@ p, li { white-space: pre-wrap; } </message> <message> <source>On the <b>%1</b> page, %2</source> - <translation type="unfinished">នៅ​លើ​ទំពáŸážš <b>%1</b> %2</translation> + <translation>នៅ​លើទំពáŸážš <b>%1</b> %2</translation> </message> </context> <context> <name>VBoxSnapshotDetailsDlg</name> <message> - <source>VBoxSnapshotDetailsDlg</source> - <translation type="obsolete">VBoxSnapshotDetailsDlg</translation> - </message> - <message> - <source>&Name</source> - <translation type="obsolete">ឈ្មោះ</translation> - </message> - <message> - <source>&Description</source> - <translation type="obsolete">សáŸáž…ក្ដី​ពិពណ៌នា</translation> - </message> - <message> - <source>&Machine Details</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 type="unfinished"></translation> + <translation>ចុច ដើម្បី​ពង្រីក​រូប​ážážâ€‹áž¢áŸâ€‹áž€áŸ’រង់​ ។</translation> </message> <message> <source>&Name:</source> - <translation type="unfinished">ឈ្មោះ ៖</translation> + <translation>ឈ្មោះ ៖</translation> </message> <message> <source>Taken:</source> - <translation type="unfinished"></translation> + <translation>បាន​ážážÂ ៖</translation> </message> <message> <source>&Description:</source> - <translation type="unfinished"></translation> + <translation>សáŸáž…ក្ážáž¸â€‹áž–ិពណ៌នា​ ៖</translation> </message> <message> <source>D&etails:</source> - <translation type="unfinished"></translation> + <translation>សáŸáž…​ក្ážáž¸â€‹áž›áž˜áŸ’អិážâ€‹Â ៖</translation> </message> </context> <context> <name>VBoxSnapshotsWgt</name> <message> - <source>[snapshot]</source> - <translation type="obsolete">[រូបážáž]</translation> - </message> - <message> <source>VBoxSnapshotsWgt</source> <translation>VBoxSnapshotsWgt</translation> </message> @@ -4966,68 +5277,44 @@ p, li { white-space: pre-wrap; } <translation>រូបážáž %1</translation> </message> <message> - <source>&Discard Snapshot</source> - <translation type="obsolete">បោះបង់​រូបážáž</translation> - </message> - <message> <source>Take &Snapshot</source> <translation>យក​រូបážáž</translation> </message> <message> - <source>&Revert to Current Snapshot</source> - <translation type="obsolete">ážáŸ’រឡប់​ទៅ​រូបážážâ€‹áž”ច្ចុប្បន្ន</translation> - </message> - <message> - <source>D&iscard Current Snapshot and State</source> - <translation type="obsolete">បោះបង់​ស្ážáž¶áž“ភាព និង​រូបážážâ€‹áž”ច្ចុប្បន្ន</translation> - </message> - <message> <source>S&how Details</source> <translation>បង្ហាញ​សáŸáž…ក្ដី​លម្អិáž</translation> </message> <message> - <source>Discard the selected snapshot of the virtual machine</source> - <translation type="obsolete">បោះបង់​រូបážážâ€‹ážŠáŸ‚ល​បានជ្រើស​របស់ម៉ាស៊ីន​និម្មិáž</translation> - </message> - <message> <source>Take a snapshot of the current virtual machine state</source> <translation>យក​រូបážážâ€‹ážšáž”ស់​ស្ážáž¶áž“ភាព​ម៉ាស៊ីន​និម្មិážâ€‹áž”ច្ចុប្បន្ន</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>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> (%1)</source> - <translation type="unfinished"></translation> + <translation> (%1)</translation> </message> <message> <source>&Restore Snapshot</source> - <translation type="unfinished"></translation> + <translation>ស្ážáž¶ážšâ€‹ážšáž¼áž”​ážážâ€‹</translation> </message> <message> <source>&Delete Snapshot</source> - <translation type="unfinished"></translation> + <translation>លុប​រូបážážâ€‹</translation> </message> <message> <source>Restore the selected snapshot of the virtual machine</source> - <translation type="unfinished"></translation> + <translation>ស្ážáž¶ážšâ€‹ážšáž¼áž”​ážážâ€‹ážŠáŸ‚ល​បាន​ជ្រើស​របស់​​ម៉ាស៊ីន​និម្មិážâ€‹</translation> </message> <message> <source>Delete the selected snapshot of the virtual machine</source> - <translation type="unfinished"></translation> + <translation>លុប​រូប​ážážâ€‹ážŠáŸ‚ល​បាន​ជ្រើស​របស់​​ម៉ាស៊ីន​និម្មិážâ€‹</translation> </message> <message> <source> (%1 ago)</source> - <translation type="unfinished"></translation> + <translation> (%1 កន្លង​ទៅ)</translation> </message> </context> <context> @@ -5058,7 +5345,7 @@ p, li { white-space: pre-wrap; } <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> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform>ការ​ព្រមាន ៖ អ្នកកំពុង​ážážâ€‹ážšáž¼áž”​របស់​ម៉ាស៊ីន​ដែល​កំពុង​រážáŸ‹ ដែលមាន​រូបភាព​មិនប្រែប្រួល %n បានភ្ជាប់​ទៅកាន់​វា ។ ដáŸážšáž¶áž”​ណា​អ្នកកំពុង​ធ្វើការ​​ពី​រូបភាព​ដែល​មិនប្រែប្រួល​នáŸáŸ‡ នឹង​មិន​ážáŸ’រូ​វបានកំណážáŸ‹â€‹áž¡áž¾áž„វិញ​ ដើម្បី​ចៀសវាង​ពី​ការ​បាážáŸ‹áž”ង់​ទិន្ននáŸáž™â€‹áž‘áŸÂ ។</numerusform> </translation> </message> </context> @@ -5066,23 +5353,23 @@ p, li { white-space: pre-wrap; } <name>VBoxTextEditor</name> <message> <source>Edit text</source> - <translation type="unfinished"></translation> + <translation>កែសម្រួល​អážáŸ’ážáž”ទ​</translation> </message> <message> <source>&Replace...</source> - <translation type="unfinished"></translation> + <translation>ជំនួស​...</translation> </message> <message> <source>Replaces the current text with the content of a file.</source> - <translation type="unfinished"></translation> + <translation>ជំនួស​អážáŸ’ážáž”ទ​បច្ចុប្បន្ន​ដោយ​មាážáž·áž€áž¶â€‹ážšáž”ស់​ឯកសារ​មួយ ។</translation> </message> <message> <source>Text (*.txt);;All (*.*)</source> - <translation type="unfinished"></translation> + <translation>អážáŸ’ážáž”áž‘ (*.txt);;All (*.*)</translation> </message> <message> <source>Select a file to open...</source> - <translation type="unfinished"></translation> + <translation>ជ្រើស​ឯកសារážáŸ’រូវ​បើក...</translation> </message> </context> <context> @@ -5270,14 +5557,6 @@ p, li { white-space: pre-wrap; } <translation>ប្រភព​មáŸážŒáŸ€</translation> </message> <message> - <source>&Host Drive</source> - <translation type="obsolete">ដ្រាយ​ម៉ាស៊ីន</translation> - </message> - <message> - <source>&Image File</source> - <translation type="obsolete">ឯកសារ​រូបភាព</translation> - </message> - <message> <source>Select Installation Media</source> <translation>ជ្រើស​មáŸážŒáŸ€â€‹ážŠáŸ†áž¡áž¾áž„</translation> </message> @@ -5298,10 +5577,6 @@ p, li { white-space: pre-wrap; } <translation>ឧបករណáŸâ€‹ážáž¶ážŸâ€‹áž‘ន់</translation> </message> <message> - <source>Host Drive %1</source> - <translation type="obsolete">ដ្រាយ​ម៉ាស៊ីន %1</translation> - </message> - <message> <source><p>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.</p><p>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 <b>Settings</b> from the <b>Machine</b> menu of the main VirtualBox window to access the settings dialog of this machine and change the hard disk configuration.</p><p>Use the <b>Next</b> button to go to the next page of the wizard and the <b>Back</b> button to return to the previous page. You can also press <b>Cancel</b> if you want to cancel the execution of this wizard.</p></source> <translation><p>អ្នក​បាន​ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិážâ€‹ážŠáŸ‚ល​ទើប​បានបង្កើážâ€‹ážáŸ’មី​ជា​លើក​ដំបូង ។ អ្នក​ជំនួយ​ការ​នáŸáŸ‡â€‹áž“ឹង​ជួយ​អ្នក​ក្នុងការ​អនុវážáŸ’ážâ€‹áž‡áŸ†áž ាន​ដែល​ចាំបាច់​សម្រាប់​ចាប់ផ្ដើម​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž‡áž¶â€‹áž‡áž˜áŸ’រើស​របស់​អ្នក​នៅ​លើ​ម៉ាស៊ីន​និម្មិážÂ ។</p><p>ចំណាំ​ážáž¶ អ្នក​នឹង​មិន​អាច​ដំឡើង​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž€áŸ’នុង​ម៉ាស៊ីន​និម្មិážâ€‹áž¥áž¡áž¼ážœâ€‹áž”ានទ០ពីព្រោះ​អ្នក​មិន​បាន​ភ្ជាប់​ážáž¶ážŸážšáž¹áž„​ ។ ប្រសិន​បើ​នáŸáŸ‡â€‹áž˜áž·áž“មែន​ជា​អ្វី​ដែល​អ្នក​ចង់​បានទ០អ្នក​អាច​បោះបង់​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž“ៃ​អ្នក​ជំនួយ​ការ​នáŸáŸ‡â€‹áž”ាន ដោយ​ជ្រើស <b>ការ​កំណážáŸ‹</b> ពី​ម៉ឺនុយ​ <b>ម៉ាស៊ីន</b> របស់​បង្អួច​ VirtualBox ម០ដើម្បី​ចូលដំណើរការ​ប្រអប់​កំណážáŸ‹â€‹ážšáž”ស់​ម៉ាស៊ីន​នáŸáŸ‡ ហើយ​ផ្លាស់ប្ដូរ​កា​រកំណážáŸ‹â€‹ážšáž…នាសម្ពáŸáž“្ធ​ážáž¶ážŸážšáž¹áž„ ។</p><p>ប្រើ​ប៊ូážáž»áž„ <b>បន្ទាប់</b> ដើម្បី​ទៅ​ទំពáŸážšâ€‹áž”ន្ទាប់​របស់​អ្នក​ជំនួយការ ហើយ​ប៊ូážáž»áž„ <b>ážáž™áž€áŸ’រោយ</b> ដើម្បីážáŸ’រឡប់​ទៅ​ទំពáŸážšâ€‹áž˜áž»áž“ ។ អ្នក​កáŸáž¢áž¶â€‹áž…​ចុច <b>បោះបង់</b> ប្រសិន​បើ​អ្នក​បោះបង់​ប្រážáŸ’ážáž·áž€áž¶ážšâ€‹áž¢áŸ’នក​ជំនួយការ​នáŸáŸ‡Â ។</p></translation> </message> @@ -5330,20 +5605,6 @@ p, li { white-space: pre-wrap; } <translation>បន្ទាប់ ></translation> </message> <message> - <source><html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If the above is correct, press the <span style=" font-weight:600;">Finish</span> button. Once you press it, the selected media will be temporarily mounted on the virtual machine and the machine will start execution.</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">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.</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">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 <span style=" font-weight:600;">Unmount...</span> action in the <span style=" font-weight:600;">Devices</span> menu<span style=" font-weight:600;">.</span></p></body></html></source> - <translation type="obsolete"><html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ប្រសិន​បើ​អ្វី​នៅ​ážáž¶áž„​លើ​ážáŸ’រឹមážáŸ’រូវ ចុចប៊ូážáž»áž„ <span style=" font-weight:600;">បញ្ចប់</span> ។ នៅពáŸáž›â€‹áž¢áŸ’នក​ចុច​វា មáŸážŒáŸ€â€‹ážŠáŸ‚ល​បានជ្រើស​នឹង​ážáŸ’រូវ​បានម៉ោន​នៅ​លើ​ម៉ាស៊ីន​និម្មិážâ€‹áž‡áž¶â€‹áž”ណ្ដោះអាសន្ន ហើយ​ម៉ាស៊ីននឹង​ចាប់ផ្ដើម​ប្រážáž·áž”ážáŸ’ážáž·Â ។</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">សូម​ចំណាំ​ážáž¶ នៅពáŸáž›â€‹áž¢áŸ’នក​បិទ​ម៉ាស៊ីន​និម្មិហមáŸážŒáŸ€â€‹ážŠáŸ‚ល​បាន​បញ្ជាក់​នឹង​ážáŸ’រូវ​បានអាន់ម៉ោន​ដោយ​ស្វáŸáž™â€‹áž”្រវážáŸ’ážáž· ហើយ​ឧបករណáŸâ€‹áž…ាប់ផ្ដើម​នឹង​កំណážáŸ‹â€‹ážáž™â€‹áž‘ៅ​ážáž¶ážŸážšáž¹áž„​ដំបូង​វិញ ។</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ដោយ​អាស្រáŸáž™â€‹áž›áž¾â€‹áž”្រភáŸáž‘​កម្មវិធី អ្នក​ážáŸ’រូវ​អាន់ម៉ោន​ (ច្រានចáŸáž‰) មáŸážŒáŸ€â€‹ážŠáŸ„យ​ដៃ បន្ទាប់​ពី​កម្មវិធី​រៀបចំ​ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិážâ€‹áž¡áž¾áž„​វិញ ដើម្បីការពារ​ដំណើរការ​ដំឡើង​ពី​​ការ​ចាប់ផ្ដើម​ម្ដងទៀážÂ ។ អ្នក​អាច​ធ្វើ​វា​ដោយ​ជ្រើស​សកម្មភាព <span style=" font-weight:600;">អាន់ម៉ោន...</span> ដែល​ទាក់ទង​​នៅម៉ឺនុយ <span style=" font-weight:600;">ឧករណáŸ</span> <span style=" font-weight:600;"> ។</span></p></body></html></translation> - </message> - <message> <source>&Finish</source> <translation>បញ្ចប់</translation> </message> @@ -5363,7 +5624,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source><p>If the above is correct, press the <b>Finish</b> button. Once you press it, the selected media will be temporarily mounted on the virtual machine and the machine will start execution.</p><p>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.</p><p>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 <b>Unmount...</b> action in the <b>Devices</b> menu.</p></source> - <translation type="unfinished"></translation> + <translation><p>​​ចុច​ ប្រ​សិន​បើ​ážáž¶áž„លើ​​ážáŸ’រឹម​ážáŸ’រូវ​ <b>​បញ្ចប់​​</b> ប៊ូážáž»áž„​ ។​ លើ​ទី​មួយ​ដែល​អ្នក​ចុច​វា​Once you press it, the selected media will be temporarily mounted on the virtual machine and the machine will start execution.</p><p>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.</p><p>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 <b>Unmount...</b> action in the <b>Devices</b> menu.</p></translation> </message> </context> <context> @@ -5413,14 +5674,6 @@ p, li { white-space: pre-wrap; } <translation>គុណភាព​បង្ហាញ​របស់​អáŸáž€áŸ’រង់</translation> </message> <message> - <source>CD/DVD-ROM Statistics</source> - <translation type="obsolete">ស្ážáž·ážáž·â€‹ážŸáŸŠáž¸ážŒáž¸/ឌីវីឌីរ៉ូម</translation> - </message> - <message> - <source>Network Adapter Statistics</source> - <translation type="obsolete">ស្ážáž·ážáž·â€‹áž¢áž¶ážŠáž¶áž”់ទáŸážšâ€‹áž”ណ្ដាញ</translation> - </message> - <message> <source>Version %1.%2</source> <comment>guest additions</comment> <translation>កំណែ %1.%2</translation> @@ -5444,14 +5697,6 @@ p, li { white-space: pre-wrap; } <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> @@ -5475,27 +5720,35 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Not Available</source> - <comment>details report (VRDP server port)</comment> - <translation type="unfinished"></translation> + <comment> + + +details report (VRDP server port)</comment> + <translation type="obsolete">មិនអាច​ប្រើបាន​</translation> </message> <message> <source>Storage Statistics</source> - <translation type="unfinished"></translation> + <translation>ស្ážáž·ážáž·â€‹áž•áŸ’ទុក​</translation> </message> <message> <source>No Storage Devices</source> - <translation type="unfinished"></translation> + <translation>គ្មាន​ឧបករណáŸâ€‹áž•áŸ’ទុក​ទáŸâ€‹</translation> </message> <message> <source>Network Statistics</source> - <translation type="unfinished"></translation> + <translation>ស្ážáž·ážáž·â€‹áž”ណ្ដាញ</translation> + </message> + <message> + <source>Not Available</source> + <comment>details report (VRDP server port)</comment> + <translation type="unfinished">មិនអាច​ប្រើបាន​</translation> </message> </context> <context> <name>VBoxVMListView</name> <message> <source>Inaccessible</source> - <translation>មិនអាច​ចូលដំណើរការបាន</translation> + <translation>មិនអាច​ចូលដំណើរការ​បាន</translation> </message> <message> <source><nobr>%1<br></nobr><nobr>%2 since %3</nobr><br><nobr>Session %4</nobr></source> @@ -5603,145 +5856,90 @@ p, li { white-space: pre-wrap; } </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>&Mount CD/DVD Drive</source> - <translation type="obsolete">ម៉ោន​ដ្រាយ​ស៊ីឌី/ឌីវីឌី</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 &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>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">នៅពáŸáž›â€‹áž”ាន​គូស​ធីក អនុញ្ញាážâ€‹áž²áŸ’យ​ម៉ាស៊ីន​ភ្ញៀវ​ផ្ញើ​ពាក្យ​បញ្ជា ATAPI ទៅ​ដ្រាយ​ម៉ាស៊ីន​ដែល​ធ្វើ​ឲ្យ​វា​អាច​ប្រើ​កម្មវិធីសរសáŸážšážŸáŸŠáž¸ážŒáž¸/ឌីវីឌី​ទៅ​ážáž¶áž„​ក្នុង​ម៉ាស៊ីន​ VM ។ ចំណាំ​ážáž¶ ការ​សរសáŸážšâ€‹ážŸáŸŠáž¸ážŒáž¸â€‹áž¢áž¼ážŒáž¸áž™áŸ‰áž¼â€‹ážáž¶â€‹áž„ក្នុង VM មិន​ážáŸ’រូវ​បានគាំទ្រ​នៅ​ឡើយ​ទáŸÂ ។</translation> - </message> - <message> - <source>Enable &Passthrough</source> - <translation type="obsolete">បើក​ការ​ពិនិážáŸ’យ​ឆ្លង</translation> - </message> - <message> - <source>Mounts the specified CD/DVD image to the virtual CD/DVD drive.</source> - <translation type="obsolete">ម៉ោន​រូបភាព​ស៊ីឌី/ឌីវីឌី​ដែល​បានបញ្ជាក់​ទៅដ្រាយ​ស៊ីឌី/ឌីវីឌី​​និម្មិážÂ ។</translation> - </message> - <message> - <source>&ISO Image File</source> - <translation type="obsolete">ឯកសារ​រូបភាព​​អាយអáŸážŸáž¢áž¼</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 Media Manager to select a CD/DVD image to mount.</source> - <translation type="obsolete">ដកហូážâ€‹áž€áž˜áŸ’មវិធី​គ្រប់គ្រង​មáŸážŒáŸ€â€‹áž“ិម្មិážâ€‹ážŠáž¾áž˜áŸ’បី​ជ្រើស​រូបភាព​ស៊ីឌី/ឌីវីឌី​ដើម្បី​ម៉ោន ។</translation> - </message> -</context> -<context> <name>VBoxVMSettingsDisplay</name> <message> <source>you have assigned less than <b>%1</b> of video memory which is the minimum amount required to switch the virtual machine to fullscreen or seamless mode.</source> - <translation type="unfinished">អ្នក​បាន​ផ្ដល់​សážáž·â€‹ážœáž¸ážŠáŸáž¢áž¼â€‹ážáž·áž…ជាង <b>%1</b> សម្រាប់​សážáž·â€‹ážœáž¸ážŠáŸáž¢áž¼â€‹ážŠáŸ‚ល​ជា​ចំនួន​អប្បបរមា​ដែល​បានទាមទារ​ឲ្យ​ប្ដូរ​ម៉ាស៊ីន​និម្មិážâ€‹áž‘ៅ​​របៀប​ពáŸáž‰áž¢áŸáž€áŸ’រង់ ឬ​គ្មាន​ážáŸ’áž“áŸážšÂ ។</translation> + <translation>អ្នកបានផ្ដល់​សážáž·ážœáž¸ážŠáŸáž¢áž¼ážáž·áž…​ជាង <b>%1</b> ដែល​ជា​ចំនួន​អប្បបរមាដែលបានទាមទារ​ដើម្បី​ប្ដូរ​ម៉ាស៊ីន​និម្មិážâ€‹áž‘ៅរបៀប​​ពáŸáž‰áž¢áŸáž€áŸ’រង់ ឬ​ពង្រីក ។</translation> </message> <message> <source>you have assigned less than <b>%1</b> of video memory which is the minimum amount required for HD Video to be played efficiently.</source> - <translation type="unfinished"></translation> + <translation>អ្នក​បានផ្ដល់​សážáž·â€‹ážœáž¸ážŠáŸáž¢áž¼ážáž·áž…​ជាង <b>%1</b> ដែលជា​ចំនួន​អប្បបរមា​សម្រាប់​វីដáŸáž¢áž¼ HD ដើម្បីចាក់​ឲ្យ​មាន​ប្រសិទ្ធភាព ។</translation> </message> <message> <source><qt>%1&nbsp;MB</qt></source> - <translation type="unfinished"><qt>%1&nbsp;មáŸáž€áž¶áž”ៃ</qt></translation> + <translation><qt>%1&nbsp;មáŸáž€áž¶áž”ៃ</qt></translation> </message> <message> <source>&Video</source> - <translation type="unfinished"></translation> + <translation>វីដáŸáž¢áž¼â€‹</translation> </message> <message> <source>Video &Memory:</source> - <translation type="unfinished"></translation> + <translation>សážáž·â€‹ážœáž¸ážŠáŸáž¢áž¼â€‹Â ៖</translation> </message> <message> <source>Controls the amount of video memory provided to the virtual machine.</source> - <translation type="unfinished">ážáŸ’ážšáž½ážáž–áž·áž“áž·ážáŸ’យ​ចំនួន​សážáž·â€‹ážœáž¸ážŒáž¸áž¢áž¼â€‹ážŸážšáž»áž”​ដែល​បានផ្ដល់​ឲ្យ​ម៉ាស៊ីន​និម្មិážÂ ។</translation> + <translation>ážáŸ’ážšáž½ážáž–áž·áž“áž·ážáŸ’យ​ចំនួន​សážáž·â€‹ážœáž¸ážŠáŸâ€‹áž¢áž¼â€‹â€‹ážŠáŸ‚ល​បានផ្ដល់​ឲ្យ​​ម៉ាស៊ីន​និម្មិážÂ ។</translation> </message> <message> <source>MB</source> - <translation type="unfinished">មáŸáž€áž¶áž”ៃ</translation> + <translation>មáŸáž€áž¶áž”ៃ</translation> </message> <message> <source>Extended Features:</source> - <translation type="unfinished">លក្ážážŽáŸˆážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹ážŠáŸ‚ល​បានពង្រីក ៖</translation> + <translation>លក្ážážŽážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹ážŠáŸ‚ល​បានពង្រីក ៖</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="unfinished">នៅពáŸáž›â€‹áž”ាន​គូស​ធីគ ម៉ាស៊ីន​និម្មិážâ€‹áž“ឹង​ចូលដំណើរការ​សមážáŸ’ážáž—ាព​ក្រាហ្វិក​ážáŸ’រីមាážáŸ’រ​ដែល​មាន​នៅ​លើ​ម៉ាស៊ីន ។</translation> + <translation>នៅពáŸáž›â€‹áž”ាន​គូស​ធីក ម៉ាស៊ីន​និម្មិážâ€‹áž“ឹង​ចូលដំណើរការ​សមážáŸ’ážáž—ាព​ក្រាហ្វិក​ážáŸ’រីមាážáŸ’រ​ដែល​​អាច​រក​បាន​​នៅ​លើ​ម៉ាស៊ីន ។</translation> </message> <message> <source>Enable &3D Acceleration</source> - <translation type="unfinished">បើក​ការបង្កើន​ល្បឿន​ážáŸ’រីមាážáŸ’រ​</translation> + <translation>បើក​ការបង្កើន​ល្បឿន​ážáŸ’រីមាážáŸ’រ​</translation> </message> <message> <source>When checked, the virtual machine will be given access to the Video Acceleration capabilities available on the host.</source> - <translation type="unfinished"></translation> + <translation>នៅ​ពáŸáž›â€‹ážŠáŸ‚ល​បាន​គូស​ធីក​ ម៉ាស៊ីន​​និម្មិážâ€‹â€‹áž“ឹង​ចូល​ដំណើរ​ការ​សមážáŸ’ážâ€‹áž—ាព​​បង្កើនល្បឿន​វីដáŸáž¢áž¼â€‹ážŠáŸ‚ល​អាច​ប្រើ​​បាន​​លើម៉ាស៊ីន​ ។</translation> </message> <message> <source>Enable &2D Video Acceleration</source> - <translation type="unfinished"></translation> + <translation>បើក​ការ​បង្កើន​ល្បឿន​ទ្វáŸáž˜áž¶ážáŸ’ážš</translation> </message> <message> <source>&Remote Display</source> - <translation type="unfinished"></translation> + <translation>កា​របង្ហាញ​ពី​ចម្ងាយ​</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="unfinished">នៅពáŸáž›â€‹áž”ាន​គូស​ធីក VM នឹង​ដើរážáž½â€‹áž‡áž¶â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​បម្រើ​ពិធីការ​ផ្ទៃážáž»â€‹áž–ី​ចម្ងាយ (RDP) ដោយ​អនុញ្ញាážâ€‹áž²áŸ’យ​ម៉ាស៊ីនភ្ញៀវ​ពី​ចម្ងាយ​ážáž—្ជាប់​ ហើយ​ប្រážáž·áž”ážáŸ’ážáž·â€‹ VM (នៅ​ពáŸáž›â€‹áž€áŸ†áž–ុង​រážáŸ‹) ដោយ​ប្រើ​ម៉ាស៊ីន​ភ្ញៀវ RDP ស្ážáž„់ដារ ។</translation> + <translation>នៅពáŸáž›â€‹áž”ាន​គូស​ធីក VM នឹង​ដើរážáž½â€‹áž‡áž¶â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​បម្រើ​ពិធីការ​ផ្ទៃážáž»â€‹áž–ី​ចម្ងាយ (RDP) ដោយ​អនុញ្ញាážâ€‹áž²áŸ’យ​ម៉ាស៊ីនភ្ញៀវ​ពី​ចម្ងាយ​ážáž—្ជាប់​ និង​ប្រážáž·áž”ážáŸ’ážáž·â€‹ VM (នៅ​ពáŸáž›â€‹áž€áŸ†áž–ុង​រážáŸ‹) ដោយ​ប្រើ​ម៉ាស៊ីន​ភ្ញៀវ RDP ស្ážáž„់ដារ ។</translation> </message> <message> <source>&Enable Server</source> - <translation type="unfinished"></translation> + <translation>បើក​ម៉ាស៊ីនបម្រើ​</translation> </message> <message> <source>Server &Port:</source> - <translation type="unfinished">ច្រក​ម៉ាស៊ីន​បម្រើ ៖</translation> + <translation>ច្រក​ម៉ាស៊ីនបម្រើ ៖</translation> </message> <message> <source>The VRDP Server port number. You may specify <tt>0</tt> (zero), to select port 3389, the standard port for RDP.</source> - <translation type="unfinished"></translation> + <translation>áž›áŸážâ€‹â€‹áž…្រក​ម៉ាស៊ីន​​បម្រើ​ VRDP ។ អ្នក​អាច​បញ្ជាក់​​ <tt>0</tt> (សូន្យ​) ដើម្បី​ជ្រើស​ច្រក​ ៣៣៨៩ ច្រក​ស្ážáž„់​ដារ​សម្រាប់​ RDP ។</translation> </message> <message> <source>Authentication &Method:</source> - <translation type="unfinished">វិធីសាស្ážáŸ’រ​ផ្ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ ៖</translation> + <translation>វិធីសាស្ážáŸ’រ​ផ្ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ ៖</translation> </message> <message> <source>Defines the VRDP authentication method.</source> - <translation type="unfinished">កំណážáŸ‹â€‹ážœáž·áž’ីសាស្ážáŸ’រ​ផ្ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ​របស់ VRDP ។</translation> + <translation>កំណážáŸ‹â€‹ážœáž·áž’ីសាស្ážáŸ’រ​ផ្ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ​របស់ VRDP ។</translation> </message> <message> <source>Authentication &Timeout:</source> - <translation type="unfinished">អស់ពáŸáž›â€‹áž•áŸ’ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ ៖</translation> + <translation>អស់ពáŸáž›â€‹áž€áŸ’នុងការ​​​ផ្ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ ៖</translation> </message> <message> <source>Specifies the timeout for guest authentication, in milliseconds.</source> - <translation type="unfinished">បញ្ជាក់​ការ​អស់ពáŸáž›ážœáŸáž›áž¶â€‹ážŸáž˜áŸ’រាប់​ការ​ផ្ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ áž‚áž·ážâ€‹â€‹áž‡áž¶â€‹áž˜áž·áž›áŸ’លី​វិនាទី ។</translation> + <translation>បញ្ជាក់​ការ​អស់ពáŸáž› ​សម្រាប់​ការ​ផ្ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ áž‚áž·ážâ€‹â€‹áž‡áž¶â€‹áž˜áž·áž›áŸ’លី​វិនាទី ។</translation> </message> </context> <context> @@ -5795,92 +5993,33 @@ p, li { white-space: pre-wrap; } <translation>ážážâ€‹ážŠáŸ‚ល​បានចែករំលែក</translation> </message> <message> - <source>Remote Display</source> - <translation type="obsolete">ការ​បង្ហាញ​ពី​ចម្ងាយ</translation> - </message> - <message> <source>%1 - %2</source> <translation>%1 - %2</translation> </message> <message> - <source>On the <b>%1</b> page, %2</source> - <translation type="obsolete">នៅ​លើ​ទំពáŸážš <b>%1</b> %2</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>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"></translation> + <translation>អ្នក​បាន​​ជ្រើស​ប្រ​ភáŸáž‘​ប្រ​ពáŸáž“្ធ​ប្រ​ážáž·áž”ážáŸ’ážáž·â€‹â€‹áž€áž¶ážšâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​ភ្ញៀវ​ ៦៤​-​ប៊ីážâ€‹ សម្រាប់​​ VM áž“áŸáŸ‡â€‹ ។ ជាក់​ស្ážáŸ‚ង​ ដូច​ម៉ាស៊ីន​ភ្ញៀវ​ទាមទារ​ážáž¶ážŸážšáž¹áž„​ (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="unfinished"></translation> + <translation>អ្នក​​បាន​ជ្រើស​​ប្រ​ភáŸáž‘​ប្រ​ពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​ភ្ញៀវ​ ៦៤​-​ប៊ីážâ€‹ សម្រាប់​​ VM áž“áŸáŸ‡â€‹ ។ បច្ចុប្បន្ន​ VirtualBox មិន​គាំ​ទ្រ​​ស៊ី​ភី​យូ​និម្មិážâ€‹áž…្រើន​ជាង​មួយសម្រាប់​​ម៉ាស៊ីន​ភ្ញៀវ​ ៦៤​-​ប៊ីážâ€‹â€‹ážŠáŸ‚ល​បាន​ប្រážáž·áž”ážáŸ’ážáž·â€‹áž€áž¶ážšâ€‹áž›áž¾â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​​ ៣២​-​ប៊ីážâ€‹ ។</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"></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>&Mount Floppy Drive</source> - <translation type="obsolete">ម៉ោន​ដ្រាយ​ážáž¶ážŸâ€‹áž‘ន់</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 &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>Mounts the specified Floppy image to the virtual Floppy drive.</source> - <translation type="obsolete">ម៉ោន​រូបភាព​ážáž¶ážŸáž‘ន់​ដែល​បាន​បញ្ជាក់ទៅដ្រាយ​ážáž¶ážŸáž‘ន់​និម្មិážÂ ។</translation> - </message> - <message> - <source>&Image File</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>Invokes the Virtual Media Manager to select a Floppy image to mount.</source> - <translation type="obsolete">ដកហូážâ€‹áž€áž˜áŸ’មវិធី​គ្រប់គ្រង​មáŸážŒáŸ€â€‹áž“ិម្មិážâ€‹ ដើម្បី​ជ្រើស​រូបភាព​ážáž¶ážŸáž‘ន់​ដើម្បី​ម៉ោន ។</translation> + <translation>អ្នកបាន​បើក​បង្កើនល្បឿន​​វី​ដáŸáž¢áž¼â€‹â€‹áž‘្វáŸâ€‹â€‹áž˜áž¶ážáŸ’រ​ ។ បង្កើនល្បឿន​វីដáŸáž¢áž¼â€‹â€‹áž‘្វáŸâ€‹áž˜áž¶ážáŸ’រ​​ážáŸ’រូវ​បាន​គាំ​ទ្រ​សម្រាប់​​​ម៉ាស៊ីន​វីនដូ​ážáŸ‚​ប៉ុ​ណ្ណោះ​ លក្ážážŽáŸˆâ€‹áž–ិសáŸážŸáž“áŸáŸ‡â€‹â€‹áž“ឹង​​មិន​ážáŸ’រូវ​បាន​អនុញ្ញាážâ€‹ ។​</translation> </message> </context> <context> <name>VBoxVMSettingsGeneral</name> <message> - <source><qt>%1&nbsp;MB</qt></source> - <translation type="obsolete"><qt>%1&nbsp;មáŸáž€áž¶áž”ៃ</qt></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> @@ -5889,10 +6028,6 @@ p, li { white-space: pre-wrap; } <translation>មូលដ្ឋាន</translation> </message> <message> - <source>Identification</source> - <translation type="obsolete">ការ​កំណážáŸ‹â€‹áž¢ážáŸ’ážážŸáž‰áŸ’ញាណ</translation> - </message> - <message> <source>&Name:</source> <translation>ឈ្មោះ ៖</translation> </message> @@ -5901,102 +6036,10 @@ p, li { white-space: pre-wrap; } <translation>បង្ហាញ​ឈ្មោះ​របស់​ម៉ាស៊ីន​និម្មិážÂ ។</translation> </message> <message> - <source>Base &Memory Size</source> - <translation type="obsolete">ទំហំ​សážáž·â€‹áž˜áž¼áž›ážŠáŸ’ឋាន</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><</source> - <translation type="obsolete"><</translation> - </message> - <message> - <source>></source> - <translation type="obsolete">></translation> - </message> - <message> - <source>MB</source> - <translation type="obsolete">មáŸáž€áž¶áž”ៃ</translation> - </message> - <message> - <source>&Video Memory Size</source> - <translation type="obsolete">ទំហំ​សážáž·â€‹ážœáž¸ážŠáŸáž¢áž¼</translation> - </message> - <message> - <source>Controls the amount of video memory provided to the virtual machine.</source> - <translation type="obsolete">ážáŸ’ážšáž½ážáž–áž·áž“áž·ážáŸ’យ​ចំនួន​សážáž·â€‹ážœáž¸ážŒáž¸áž¢áž¼â€‹ážŸážšáž»áž”​ដែល​បានផ្ដល់​ឲ្យ​ម៉ាស៊ីន​និម្មិážÂ ។</translation> - </message> - <message> <source>&Advanced</source> <translation>កម្រិážážáŸ’ពស់</translation> </message> <message> - <source>Boo&t Order:</source> - <translation type="obsolete">លំដាប់​ចាប់ផ្ដើម ៖</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">[ឧបករណáŸ]</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">លក្ážážŽáŸˆážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹ážŠáŸ‚ល​បានពង្រីក ៖</translation> - </message> - <message> - <source>When checked, the virtual machine will support the Advanced Configuration and Power Management Interface (ACPI). <b>Note:</b> don't disable this feature after having installed a Windows guest operating system!</source> - <translation type="obsolete">នៅពáŸáž›â€‹áž”ានគូស​ធីក​ ម៉ាស៊ីន​និម្មិážâ€‹áž“ឹង​គាំទ្រ​ការ​កំណážáŸ‹â€‹ážšáž…នាសម្ពáŸáž“្ធ​កម្រិážâ€‹ážáŸ’ពស់ និង​ចំណុច​ប្រទាក់​គ្រប់គ្រង​ážáž¶áž˜áž–áž› (ACPI) ។ <b>ចំណាំ ៖</b> កុំ​បិទ​លក្ážážŽáŸˆáž–ិសáŸážŸâ€‹áž“áŸáŸ‡â€‹ បន្ទាប់​ពី​បានដំឡើង​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹ážœáž¸áž“ដូ​របស់ម៉ាស៊ីន​ភ្ញៀវ !</translation> - </message> - <message> - <source>Enable A&CPI</source> - <translation type="obsolete">បើក ACPI</translation> - </message> - <message> - <source>When checked, the virtual machine will support the Input Output APIC (IO APIC), which may slightly decrease performance. <b>Note:</b> don't disable this feature after having installed a Windows guest operating system!</source> - <translation type="obsolete">នៅពáŸáž›â€‹áž”ាន​គូស​ធីក ម៉ាស៊ីន​និម្មិážâ€‹áž“ឹង​គាំទ្រ​ Input Output APIC (IO APIC) ដែល​អាច​បន្ážáž™â€‹áž€áž¶ážšâ€‹áž¢áž“ុវážáŸ’ážâ€‹ážšáž”ស់ VM ážáž·áž…ážáž½áž… ។ <b>ចំណាំ ៖</b> កុំ​បិទ​លក្ážážŽáŸˆâ€‹áž–ិសáŸážŸâ€‹áž“áŸáŸ‡â€‹áž”ន្ទាប់ពី​ដំឡើង​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹ážœáž¸áž“ដូ​របស់ម៉ាស៊ីន​ភ្ញៀវ !</translation> - </message> - <message> - <source>Enable IO A&PIC</source> - <translation type="obsolete">បើក IO APIC</translation> - </message> - <message> - <source>When checked, the virtual machine will try to make use of the host CPU's hardware virtualization extensions such as Intel VT-x and AMD-V.</source> - <translation type="obsolete">នៅពáŸáž›â€‹áž”ាន​គូស​ធីគ ម៉ាស៊ីន​និម្មិážâ€‹áž“ឹង​ព្យាយាម​ប្រាកដ​ážáž¶â€‹áž•áŸ’នែក​បន្ážáŸ‚ម​និម្មិážâ€‹áž•áŸ’នែក​រឹង​របស់​ស៊ីភីយូ​របស់ម៉ាស៊ីន​ដូចជា Intel VT-x áž“áž·áž„ AMD-V ។</translation> - </message> - <message> - <source>Enable &VT-x/AMD-V</source> - <translation type="obsolete">បើក 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">នៅពáŸáž›â€‹áž”ាន​គូស​ធីក លក្ážážŽáŸˆáž–ិសáŸážŸâ€‹ážšáž”ស់ Physical Address Extension (PAE) នៃ​ស៊ីភីយូ​របស់​ម៉ាស៊ីន​នឹង​ážáŸ’រូវ​បានបង្ហាញ​ដល់​ម៉ាស៊ីន​និម្មិážÂ ។</translation> - </message> - <message> - <source>Enable PA&E/NX</source> - <translation type="obsolete">បើក PAE/NX</translation> - </message> - <message> <source>&Shared Clipboard:</source> <translation>ក្ដារážáž˜áŸ’បៀážážáŸ’ទាស់​ដែល​បាន​ចែករំលែក ៖</translation> </message> @@ -6005,14 +6048,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>&IDE Controller Type:</source> - <translation type="obsolete">ប្រភáŸáž‘​វážáŸ’ážáž»â€‹áž”ញ្ជា IDE ៖</translation> - </message> - <message> <source>S&napshot Folder:</source> <translation>ážážâ€‹ážšáž¼áž”ážážÂ ៖</translation> </message> @@ -6025,348 +6060,256 @@ p, li { white-space: pre-wrap; } <translation>បង្ហាញ​សáŸáž…ក្ដីពិពណ៌នា​របស់ម៉ាស៊ីន​និម្មិážÂ ។ វាល​សáŸáž…ក្ដី​ពិពន៌នា​មានប្រយោជនáŸâ€‹ážŸáž˜áŸ’រាប់​ផ្ដល់​យោបល់​អំពី​សáŸáž…ក្ដី​លម្អិážâ€‹áž€áŸ†ážŽážáŸ‹â€‹ážšáž…នាសម្ពáŸáž“្ធ​របស់​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​ភ្ញៀវ​ដែល​បាន​ដំឡើង ។</translation> </message> <message> - <source>&Other</source> - <translation type="obsolete">ផ្សáŸáž„ៗ</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>&Remember Mounted Media</source> - <translation type="obsolete">មáŸážŒáŸ€â€‹ážŠáŸ‚លបាន​ម៉ោន​សមាជិក</translation> - </message> - <message> - <source>Runtime:</source> - <translation type="obsolete">áž–áŸáž›ážœáŸáž›áž¶â€‹ážšážáŸ‹áŸ–</translation> - </message> - <message> - <source>you have assigned more than <b>75%</b> of your computer's memory (<b>%1</b>) to the virtual machine. Not enough memory is left for your host operating system. Please select a smaller amount.</source> - <translation type="obsolete">អ្នក​បានផ្ដល់​សážáž·â€‹áž€áž»áŸ†áž–្យូទáŸážšâ€‹áž…្រើនជាង <b>75%</b> នៃកុំព្យូទáŸážšâ€‹ážšáž”ស់ (<b>%1</b>) ដល់​ម៉ាស៊ីន​និម្មមិážÂ ។ គ្មាន​សážáž·â€‹áž“ៅសល់​គ្រប់គ្រាន់​សម្រាប់ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​របស់​អ្នក​ទáŸÂ ។ សូម​ជ្រើស​ចំនួន​សážáž·â€‹ážáž¼áž…ជាង​នáŸáŸ‡Â ។</translation> - </message> - <message> - <source>you have assigned more than <b>50%</b> of your computer's memory (<b>%1</b>) 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">អ្នក​បានផ្ដល់​សិážâ€‹áž€áž»áŸ†áž–្យូទáŸážšâ€‹áž…្រើនជាង <b>50%</b> នៃ​សážáž·â€‹áž€áž»áŸ†áž–្យូទáŸážšâ€‹ážšáž”ស់​អ្នក (<b>%1</b>) ដល់​ម៉ាស៊ីន​និម្មិážÂ ។ គ្មាន​សážáž·â€‹áž‚្រប់គ្រាន់​នៅ​សល់​សម្រាប់​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶â€‹ážšáž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​របស់​អ្នក​ទáŸÂ ។ បន្ážâ€‹â€‹áž‘ាំង​គ្រោះážáŸ’នាក់ឬ ?</translation> - </message> - <message> - <source>you have assigned less than <b>%1</b> of video memory which is the minimum amount required to switch the virtual machine to fullscreen or seamless mode.</source> - <translation type="obsolete">អ្នក​បាន​ផ្ដល់​សážáž·â€‹ážœáž¸ážŠáŸáž¢áž¼â€‹ážáž·áž…ជាង <b>%1</b> សម្រាប់​សážáž·â€‹ážœáž¸ážŠáŸáž¢áž¼â€‹ážŠáŸ‚ល​ជា​ចំនួន​អប្បបរមា​ដែល​បានទាមទារ​ឲ្យ​ប្ដូរ​ម៉ាស៊ីន​និម្មិážâ€‹áž‘ៅ​​របៀប​ពáŸáž‰áž¢áŸáž€áŸ’រង់ ឬ​គ្មាន​ážáŸ’áž“áŸážšÂ ។</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">នៅពáŸáž›â€‹áž”ាន​គូស​ធីគ ម៉ាស៊ីន​និម្មិážâ€‹áž“ឹង​ចូលដំណើរការ​សមážáŸ’ážáž—ាព​ក្រាហ្វិក​ážáŸ’រីមាážáŸ’រ​ដែល​មាន​នៅ​លើ​ម៉ាស៊ីន ។</translation> - </message> - <message> - <source>Enable &3D Acceleration</source> - <translation type="obsolete">បើក​ការបង្កើន​ល្បឿន​ážáŸ’រីមាážáŸ’រ​</translation> - </message> - <message> <source>Removable Media:</source> - <translation type="unfinished"></translation> + <translation>មáŸážŒáŸ€â€‹áž…áž›áŸáž ៖</translation> </message> <message> <source>&Remember Runtime Changes</source> - <translation type="unfinished"></translation> + <translation>ចង់​ចាំ​ការផ្លាស់​ប្ážáž¼ážšâ€‹áž–áŸáž›â€‹ážŠáŸ†ážŽáž¾ážšâ€‹áž€áž¶ážšâ€‹</translation> </message> <message> <source>Mini ToolBar:</source> - <translation type="unfinished"></translation> + <translation>របារ​ឧបករណáŸâ€‹ážáž¼áž…​ ៖</translation> </message> <message> <source>If checked, show the Mini ToolBar in Fullscreen and Seamless modes.</source> - <translation type="unfinished"></translation> + <translation>ប្រ​សិន​បើ​ធីក​ បង្ហាញ​របារ​ឧបករណáŸâ€‹ážáž¼áž…​ក្នុងរបៀប​​អáŸâ€‹â€‹áž€áŸ’រង់​ពáŸáž‰â€‹ និង​​​ព​ង្រីក​ ។</translation> </message> <message> <source>Show In &Fullscreen/Seamless</source> - <translation type="unfinished"></translation> + <translation>​បង្ហាញ​អáŸâ€‹áž€áŸ’រង់​ពáŸáž‰â€‹â€‹/​ពង្រីក​</translation> </message> <message> <source>If checked, show the Mini ToolBar at the top of the screen, rather than in its default position at the bottom of the screen.</source> - <translation type="unfinished"></translation> + <translation>ប្រ​សិន​បើ​ធីក​ បង្ហាញ​របារឧបករណáŸâ€‹ážáž¼áž…​​នៅ​ផ្នែកážáž¶áž„​លើ​​អáŸáž€áŸ’រង់​ ជា​ជាង​ក្នុង​ទី​ážáž¶áŸ†áž„​លំនាំ​ដើម​នៃ​ប៊ូážáž»áž„​របស់​អáŸáž€áŸ’រង់​ ។</translation> </message> <message> <source>Show At &Top Of Screen</source> - <translation type="unfinished"></translation> + <translation>បង្ហាញ​កំពូល​​អáŸáž€áŸ’រង់​</translation> </message> </context> <context> <name>VBoxVMSettingsHD</name> <message> - <source>No hard disk is selected for <i>%1</i></source> - <translation type="obsolete">គ្មាន​ážáž¶ážŸážšáž¹áž„​ážáŸ’រូវ​បាន​​ជ្រើស​សម្រាប់ <i>%1</i> នោះទáŸ</translation> - </message> - <message> - <source><i>%1</i> uses the hard disk that is already attached to <i>%2</i></source> - <translation type="obsolete"><i>%1</i> ប្រើážáž¶ážŸážšáž¹áž„​ដែល​ážáŸ’រូវ​បាន​ភ្ជាប់​ទៅ កាន់ <i>%2</i> រួច​​ហើយ</translation> - </message> - <message> - <source>&Add Attachment</source> - <translation type="obsolete">បន្ážáŸ‚ម​ការ​ភ្ជាប់</translation> - </message> - <message> - <source>&Remove Attachment</source> - <translation type="obsolete">យក​កា​រភ្ជាប់​ចáŸáž‰</translation> - </message> - <message> - <source>&Select Hard Disk</source> - <translation type="obsolete">ជ្រើស​ážáž¶ážŸážšáž¹áž„​ážáŸ’មី</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>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 បាន​ទ០នៅពáŸáž›â€‹ážŠáŸ‚ល​បិទ​ឧបករណáŸâ€‹ážáŸ’ážšáž½ážáž–áž·áž“áž·ážáŸ’យ​ SATA និម្មិážÂ ។</translation> - </message> - <message> - <source>&Enable SATA Controller</source> - <translation type="obsolete">បើក​​ឧបករណáŸâ€‹ážáŸ’ážšáž½ážáž–áž·áž“áž·ážáŸ’យ​ SATA</translation> - </message> - <message> - <source>&Attachments</source> - <translation type="obsolete">ការ​ភ្ជាប់</translation> - </message> - <message> - <source>Lists all hard disks attached to this machine. Use a mouse click or the <tt>Space</tt> 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">រាយ​ážáž¶ážŸážšáž¹áž„​ទាំង​អស់​ដែលបានភ្ជាប់​ទៅ​ម៉ាស៊ីននáŸáŸ‡Â ។ ប្រើ​ការ​ចុច​កណ្ដុរ​​ឬ​គ្រាប់ចុច​ <tt>ចន្លោះ​មិនឃើញ (Space)</tt> នៅ​លើ​ធាážáž»â€‹ážŠáŸ‚ល​បាន​បន្លិច ដើម្បី​ធ្វើ​ឲ្យ​បញ្ជីទម្លាក់ចុះ​សកម្ម ហើយ​ជ្រើស​ážáž˜áŸ’លៃ​ដែល​ចង់​បាន ។ ប្រើម៉ឺនុយ​បរិបទ​ ឬ​ប៊ូážáž»áž„​​នៅ​ážáž¶áž„​ស្ដាំ​ ដើម្បី​បន្ážáŸ‚ម​ ឬ​យក​ការ​ភ្ជាប់​ážáž¶ážŸážšáž¹áž„​ចáŸáž‰Â ។</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>ប្រសិនបើ​បានគូសធីគ វា​នឹង​បង្ហាញ​ážáž¶ážŸážšáž¹áž„​ផ្សáŸáž„ៗ​ដែល​បានភ្ជាប់​ទៅ​រន្ធ​ជំនួស​ឲ្យ​ážáž¶ážŸážšáž¹áž„​មូលដ្ឋាន​​របស់​ពួកវា (បង្ហាញážáŸ‚​ក្នុងករណី​ដែល​មានការ​ភ្ជាប់​ដោយ​ប្រយោល​ប៉ុណ្ណោះ) ហើយ​នឹង​អនុញ្ញាážâ€‹áž²áŸ’យ​ភ្ជាប់​ážáž¶ážŸážšáž¹áž„​ផ្សáŸáž„ៗ​ផងដែរ ។ គូស​ធីក​ážáŸ‚​ក្នុងករណី​ដែល​អ្នក​ážáŸ’រូវការ​ការ​រៀបចំ​ážáž¶ážŸážšáž¹áž„​ស្មុគស្មាញ​ប៉ុណ្ណោះ ។</translation> </message> <message> - <source>&Show Differencing Hard Disks</source> - <translation type="obsolete">បង្ហាញ​ážáž¶ážŸážšáž¹áž„​ផ្សáŸáž„ៗ​គ្នា</translation> - </message> - <message> <source><nobr><b>%1</b></nobr><br><nobr>Bus:&nbsp;&nbsp;%2</nobr><br><nobr>Type:&nbsp;&nbsp;%3</nobr></source> - <translation type="unfinished"></translation> + <translation><nobr><b>%1</b></nobr><br><nobr>​ážáŸ’សែ​បញ្ជួន​ ៖ &nbsp;&nbsp;%2</nobr><br><nobr>ប្រភáŸáž‘​ ៖&nbsp;&nbsp;%3</nobr></translation> </message> <message> <source><nobr>Expand/Collapse&nbsp;Item</nobr></source> - <translation type="unfinished"></translation> + <translation><nobr>ពង្រីក​​/​វáŸáž‰&nbsp; ធាážáž»â€‹</nobr></translation> </message> <message> <source><nobr>Add&nbsp;Hard&nbsp;Disk</nobr></source> - <translation type="unfinished"></translation> + <translation><nobr>បន្ážáŸ‚ម&nbsp;ážáž¶ážŸážšáž¹áž„&nbsp;</nobr></translation> </message> <message> <source><nobr>Add&nbsp;CD/DVD&nbsp;Device</nobr></source> - <translation type="unfinished"></translation> + <translation><nobr>បន្ážáŸ‚ម​ឧបករណáŸ&nbsp;ស៊ីឌី/ឌីវឌី&nbsp;</nobr></translation> </message> <message> <source><nobr>Add&nbsp;Floppy&nbsp;Device</nobr></source> - <translation type="unfinished"></translation> + <translation><nobr>បន្ážáŸ‚ម​ឧបករណáŸ&nbsp;ážáž¶ážŸáž‘ន់&nbsp;</nobr></translation> </message> <message> <source>No hard disk is selected for <i>%1</i>.</source> - <translation type="unfinished"></translation> + <translation>មិន​មាន​ážáž¶ážŸâ€‹ážšáž¹áž„​​ážáŸ’រូវ​បាន​ជ្រើស​​សម្រាប់<i>%1</i> នោះ​ទáŸÂ ។</translation> </message> <message> <source><i>%1</i> uses a medium that is already attached to <i>%2</i>.</source> - <translation type="unfinished"></translation> + <translation><i>%1</i>ប្រើážáŸ’នាážâ€‹â€‹áž˜áž’្យម​ដែល​ភ្ជាប់​ទៅ​កាន់<i>%2</i>រួច​ហើយ​​​ ។</translation> </message> <message> <source>Add Controller</source> - <translation type="unfinished"></translation> + <translation>បន្ážáŸ‚ម​ឧបករណáŸâ€‹áž”ញ្ជា​</translation> </message> <message> <source>Add IDE Controller</source> - <translation type="unfinished"></translation> + <translation>បន្ážáŸ‚ម​វážáŸ’ážáž»â€‹áž”ញ្ជា IDE</translation> </message> <message> <source>Add SATA Controller</source> - <translation type="unfinished"></translation> + <translation>បន្ážáŸ‚ម​វážáŸ’ážáž»â€‹áž”ញ្ជា SATA</translation> </message> <message> <source>Add SCSI Controller</source> - <translation type="unfinished"></translation> + <translation>បន្ážáŸ‚ម​វážáŸ’ážáž»â€‹áž”ញ្ជា​ SCSI</translation> </message> <message> <source>Add Floppy Controller</source> - <translation type="unfinished"></translation> + <translation>បន្ážáŸ‚ម​ឧបករណáŸâ€‹áž”ញ្ជា​ážáž¶ážŸáž‘ន់​</translation> </message> <message> <source>Remove Controller</source> - <translation type="unfinished"></translation> + <translation>យក​វážáŸ’ážáž»â€‹áž”ញ្ជា​ចáŸáž‰â€‹</translation> </message> <message> <source>Add Attachment</source> - <translation type="unfinished"></translation> + <translation>បន្ážáŸ‚ម​ឯកសារ​ភ្ជាប់​</translation> </message> <message> <source>Add Hard Disk</source> - <translation type="unfinished"></translation> + <translation>បន្ážáŸ‚ម​ážáž¶ážŸâ€‹ážšáž¹áž„​</translation> </message> <message> <source>Add CD/DVD Device</source> - <translation type="unfinished"></translation> + <translation>បន្ážáŸ‚ម​ឧបករណáŸâ€‹ážŸáŸŠáž¸ážŒáž¸/ឌីវីឌី</translation> </message> <message> <source>Add Floppy Device</source> - <translation type="unfinished"></translation> + <translation>បន្ážáŸ‚ម​ឧបករណáŸâ€‹ážáž¶ážŸâ€‹áž‘ន់​</translation> </message> <message> <source>Remove Attachment</source> - <translation type="unfinished"></translation> + <translation>យក​ឯកសារ​ភ្ជាប់​ចáŸáž‰â€‹</translation> </message> <message> <source>Adds a new controller to the end of the Storage Tree.</source> - <translation type="unfinished"></translation> + <translation>បន្ážáŸ‚ម​វážáŸ’ážáž»â€‹áž”ញ្ជា​ážáŸ’មី​ទៅ​ចុង​មែកធាង​ផ្ទុក ។</translation> </message> <message> <source>Removes the controller highlighted in the Storage Tree.</source> - <translation type="unfinished"></translation> + <translation>យក​ឧបករណáŸâ€‹áž”ញ្ជា​ដែលបានបន្លិច​ចáŸáž‰â€‹áž“ៅ​ក្នុង​មែកធាង​ផ្ទុក ។</translation> </message> <message> <source>Adds a new attachment to the Storage Tree using currently selected controller as parent.</source> - <translation type="unfinished"></translation> + <translation>បន្ážáŸ‚ម​ឯកសារ​ភ្ជាប់ážáŸ’មី​ទៅ​​មែក​ធាង​ផ្ទុក ដោយ​ប្រើ​​កម្មវិធីបញ្ជាដែលបានជ្រើស​ជា​មáŸâ€‹Â ។</translation> </message> <message> <source>Removes the attachment highlighted in the Storage Tree.</source> - <translation type="unfinished"></translation> + <translation>យក​ឯកសារ​ភ្ជាប់​ដែល​បាន​បន្លិច​ចáŸáž‰â€‹áž“ៅ​ក្នុង​មែកធាង​ផ្ទុក ។</translation> </message> <message> <source>IDE Controller</source> - <translation type="unfinished"></translation> + <translation>ឧបករណáŸâ€‹áž”ញ្ជា​ IDE</translation> </message> <message> <source>SATA Controller</source> - <translation type="unfinished"></translation> + <translation>ឧបករណáŸâ€‹áž”ញ្ជា​ SATA</translation> </message> <message> <source>SCSI Controller</source> - <translation type="unfinished"></translation> + <translation>ឧបករណáŸâ€‹â€‹â€‹áž”ញ្ជា​ SCSI</translation> </message> <message> <source>Floppy Controller</source> - <translation type="unfinished"></translation> + <translation>ឧបករណáŸâ€‹áž”ញ្ជា​ážáž¶ážŸâ€‹áž‘ន់​</translation> </message> <message> <source>Hard &Disk:</source> - <translation type="unfinished"></translation> + <translation>ážáž¶ážŸâ€‹ážšáž¹áž„​ ៖</translation> </message> <message> <source>&CD/DVD Device:</source> - <translation type="unfinished"></translation> + <translation>ឧបករណáŸâ€‹â€‹ážŸáŸŠáž¸â€‹ážŒáž¸â€‹â€‹/ឌីវីឌី ៖</translation> </message> <message> <source>&Floppy Device:</source> - <translation type="unfinished"></translation> + <translation>ឧបករណáŸážáž¶ážŸáž‘ន់ ៖</translation> </message> <message> <source>&Storage Tree</source> - <translation type="unfinished"></translation> + <translation>មែក​ធាង​ផ្ទុក​</translation> </message> <message> <source>Contains all storage controllers for this machine and the virtual images and host drives attached to them.</source> - <translation type="unfinished"></translation> + <translation>មាន​ឧបករណáŸâ€‹áž”ញ្ជា​ផ្ទុក​ទាំង​អស់​សម្រាប់​ម៉ាស៊ី​ននáŸáŸ‡â€‹ និង​រូប​ភាព​និម្មិážâ€‹ និងដ្រាយ​​ម៉ាស៊ីន​ដែល​បាន​​ភ្ជាប់​​ទៅកាន់​ពួកវា ។</translation> </message> <message> <source>Information</source> - <translation type="unfinished"></translation> + <translation>​ពáŸážáŸŒâ€‹áž˜áž¶áž“​</translation> </message> <message> <source>The Storage Tree can contain several controllers of different types. This machine currently has no controllers.</source> - <translation type="unfinished"></translation> + <translation>មែក​ធាង​ផ្ទុក​អាច​មាន​ឧបករណáŸâ€‹áž”ញ្ជា​​​បី​ បួន​​​​ប្រ​ភáŸáž‘​ážáž»ážŸáŸ—​គ្នា​ ។ ម៉ាស៊ីន​បច្ចុប្បន្ន​នáŸáŸ‡ មិន​មាន​ឧបករណáŸâ€‹áž”ញ្ជា​ឡើយ​ ។</translation> </message> <message> <source>Attributes</source> - <translation type="unfinished"></translation> + <translation>គុណ​លក្ážážŽáŸˆ</translation> </message> <message> <source>&Name:</source> - <translation type="unfinished">ឈ្មោះ ៖</translation> + <translation>ឈ្មោះ ៖</translation> </message> <message> <source>Changes the name of the storage controller currently selected in the Storage Tree.</source> - <translation type="unfinished"></translation> + <translation>ប្ážáž¼ážšâ€‹ážˆáŸ’មោះ​របស់​ឧបករណáŸâ€‹áž”ញ្ជា​ផ្ទុក ​បច្ចុប្បន្ន​ដែល​បានជ្រើស​ក្នុ​ងមែក​ធាង​ផ្ទុក ។</translation> </message> <message> <source>&Type:</source> - <translation type="unfinished"></translation> + <translation>ប្រភáŸáž‘ ៖</translation> </message> <message> <source>Selects the sub-type of the storage controller currently selected in the Storage Tree.</source> - <translation type="unfinished"></translation> + <translation>​ជ្រើស​ប្រ​ភáŸáž‘​រង​​របស់​ឧបករណáŸâ€‹áž”ញ្ជា​ផ្ទុក​បច្ចុប្បន្ន​ដែល​បាន​ជ្រើស​ក្នុ​ង​មែក​ធាង​ផ្ទុក ។</translation> </message> <message> <source>S&lot:</source> - <translation type="unfinished"></translation> + <translation>រន្ធ ៖</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 type="unfinished"></translation> + <translation>ជ្រើស​រន្ធ​លើ​ឧបករណáŸâ€‹áž”ញ្ជា​ផ្ទុក ​ដែល​បាន​ប្រើ​ដោយ​ឯកសារ​ភ្ជាប់​នáŸáŸ‡â€‹ ។​ ​រន្ធ​ដែលអាចរកបានអាស្រáŸáž™â€‹â€‹áž›áž¾â€‹áž”្រ​ភáŸáž‘​របស់​ឧបករណáŸáž”ញ្ជា​ និង​ឯកសារ​ភ្ជាប់​​​​លើ​វាផ្សáŸáž„​ទៀážâ€‹â€‹Â ។</translation> </message> <message> <source>Selects the virtual disk image or the host drive used by this attachment.</source> - <translation type="unfinished"></translation> + <translation>ជ្រើស​រូប​ភាព​ážáž¶ážŸâ€‹â€‹áž“ិម្មិážâ€‹ ឬ​ដ្រាយ​ម៉ាស៊ីន​ដែល​បាន​ប្រើ ​ដោយ​ឯក​សារ​ភ្ជាប់​នáŸáŸ‡â€‹ ។</translation> </message> <message> <source>Opens the Virtual Media Manager to select a virtual image for this attachment.</source> - <translation type="unfinished"></translation> + <translation>បើក​កម្មវិធី​គ្រប់គ្រង​មáŸážŒáŸ€â€‹áž“ិម្មិហដើម្បី​ជ្រើស​រូបភាព​​និម្មិážâ€‹ážŸáž˜áŸ’រាប់​ឯកសារ​ភ្ជាប់​នáŸáŸ‡Â ។</translation> </message> <message> <source>Open Virtual Media Manager</source> - <translation type="unfinished"></translation> + <translation>បើក​កម្មវិធី​គ្រប់គ្រង​មáŸážŒáŸ€â€‹áž“ិម្មិážâ€‹</translation> </message> <message> <source>D&ifferencing Disks</source> - <translation type="unfinished"></translation> + <translation>ážáž¶ážŸáž•áŸ’សáŸáž„ៗ​គ្នា​</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="unfinished"></translation> + <translation>នៅ​ពáŸáž›â€‹ážŠáŸ‚ល​បាន​ធីក​ អនុញ្ញាážâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​ភ្ញៀវ​ផ្ញើពាក្យ​បញ្ជា​​ ATAPI ដោយ​ផ្ទាល់​​ទៅ​ដ្រាយ​ម៉ាស៊ីន ដែល​​​ធ្វើ​ឲ្យ​វា​អាច​ប្រើ​​ឧបករណáŸâ€‹â€‹â€‹ážŸážšážŸáŸážšâ€‹ážŸáŸŠáž¸â€‹ážŒáž¸â€‹â€‹/​ឌី​វី​ឌី​ ​ដែល​បាន​ážáž—្ជាប់​ទៅ​ម៉ាស៊ីន​នៅ​​ក្នុង​ VM ។ ចំណាំážáž¶ ​ការ​សរសáŸážšážŸáŸŠáž¸ážŒáž¸áž¢áž¼ážŒáž¸áž™áŸ‰áž¼â€‹ážáž¶áž„​ក្នុង​ VM មិន​ážáŸ’រូវ​បាន​គាំ​ទ្រ​នៅ​ឡើយ​ទáŸâ€‹Â ។</translation> </message> <message> <source>&Passthrough</source> - <translation type="unfinished"></translation> + <translation>ហុចážáž¶áž˜â€‹</translation> </message> <message> <source>Virtual Size:</source> - <translation type="unfinished"></translation> + <translation>ទំហំនិម្មិážâ€‹Â ៖</translation> </message> <message> <source>Actual Size:</source> - <translation type="unfinished"></translation> + <translation>ទំហំ​ពិážâ€‹Â ៖</translation> </message> <message> <source>Size:</source> - <translation type="unfinished"></translation> + <translation>ទំហំ​ ៖</translation> </message> <message> <source>Location:</source> - <translation type="unfinished"></translation> + <translation>ទី​ážáž¶áŸ†áž„​ ៖</translation> </message> <message> <source>Type (Format):</source> - <translation type="unfinished"></translation> + <translation>ប្រ​ភáŸáž‘​​ (ទ្រង់​ទ្រាយ​) ៖</translation> </message> <message> <source>Attached To:</source> - <translation type="unfinished"></translation> + <translation>បាន​​ភ្ជាប់ទៅកាន់ ៖</translation> </message> </context> <context> <name>VBoxVMSettingsNetwork</name> <message> - <source>Select TAP setup application</source> - <translation type="obsolete">ជ្រើស​កម្មវិធី​រៀបចំ TAP</translation> - </message> - <message> - <source>Select TAP terminate application</source> - <translation type="obsolete">ជ្រើស​កម្មវិធី​បញ្ចប់ TAP</translation> - </message> - <message> <source>When checked, plugs this virtual network adapter into the virtual machine.</source> <translation>នៅពáŸáž›â€‹áž‚ូស​ធីក ដោážâ€‹áž¢áž¶ážŠáž¶áž”់ទáŸážšâ€‹áž”ណ្ដាញ​និម្មិážâ€‹áž‘ៅ​ក្នុងម៉ាស៊ីន​នកម្មិážÂ ។</translation> </message> @@ -6375,10 +6318,6 @@ p, li { white-space: pre-wrap; } <translation>បើក​អាដាប់ទáŸážšâ€‹áž”ណ្ដាញ</translation> </message> <message> - <source>A&dapter Type:</source> - <translation type="obsolete">ប្រភáŸáž‘​អាដាប់ទáŸážšÂ ៖</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>ជ្រើស​ប្រភáŸáž‘​អាដាប់ទáŸážšâ€‹áž”ណ្ដាញ​និម្មិážÂ ។ អាស្រáŸáž™â€‹áž›áž¾â€‹ážáž˜áŸ’លៃ​នáŸáŸ‡ VirtualBox នឹង​ផ្ដល់​នូវ​ផ្នែករឹង​​បណ្ដាញ​ផ្សáŸáž„​ទៅ​ឲ្យ​ម៉ាស៊ីន​និម្មិážÂ ។</translation> </message> @@ -6387,22 +6326,6 @@ p, li { white-space: pre-wrap; } <translation>បាន​ភ្ជាប់​ទៅ ៖</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>&Network Name:</source> - <translation type="obsolete">ឈ្មោះ​បណ្ដាញ ៖</translation> - </message> - <message> - <source>Displays the name of the internal network selected for this adapter.</source> - <translation type="obsolete">បង្ហាញ​ឈ្មោះ​របស់​បណ្ដាញ​ážáž¶áž„​ក្នុង​ដែល​បាន​ជ្រើស​សម្រាប់​អាដាប់ទáŸážšâ€‹áž“áŸáŸ‡Â ។</translation> - </message> - <message> - <source>&MAC Address:</source> - <translation type="obsolete">អាសយដ្ឋាន MAC ៖</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 របស់​អាដាប់ទáŸážšâ€‹áž“áŸáŸ‡Â ។ វា​មាន​ážáž½áž¢áž€áŸ’សរ​យ៉ាង​ជាក់លាក់​ចំនួន​ ១២ ដែល​បាន​ជ្រើស​ពី {0-9,A-F} ។ ចំណាំ​ážáž¶â€‹ážáž½áž¢áž€áŸ’សរ​ទីពីរ​ážáŸ’រូវ​ážáŸ‚​ជា​​ážáž½áž›áŸážâ€‹áž‚ូ ។</translation> </message> @@ -6411,112 +6334,64 @@ p, li { white-space: pre-wrap; } <translation>បង្កើážâ€‹áž¢áž¶ážŸáž™ážŠáŸ’ឋាន MAC ចៃដន្យ​ážáŸ’មី ។</translation> </message> <message> - <source>&Generate</source> - <translation type="obsolete">បង្កើáž</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&ble Connected</source> - <translation type="obsolete">បាន​ážáž—្ជាប់​ážáŸ’សែ</translation> - </message> - <message> - <source>&Interface Name:</source> - <translation type="obsolete">ឈ្មោះ​ចំណុច​ប្រទាក់ ៖</translation> - </message> - <message> - <source>Displays the TAP interface name.</source> - <translation type="obsolete">បង្ហាញ​ឈ្មោះ​ចំណុច​ប្រទាក់ TAP ។</translation> - </message> - <message> - <source>&Setup Application:</source> - <translation type="obsolete">រៀបចំ​កម្មវិធី ៖</translation> - </message> - <message> - <source>Displays the command executed to set up the TAP interface.</source> - <translation type="obsolete">បង្ហាញ​ពាក្យ​បញ្ជា​បានប្រážáž·áž”ážáŸ’ážáž·â€‹ážŠáž¾áž˜áŸ’បី​រៀបចំ​​ចំណុច​ប្រទាក់ TAP ។</translation> - </message> - <message> - <source>Selects the setup application.</source> - <translation type="obsolete">ជ្រើស​ការរៀបចំ​កម្មវិធី ។</translation> - </message> - <message> - <source>&Terminate Application:</source> - <translation type="obsolete">បញ្ចប់​កម្មវិធី ៖</translation> - </message> - <message> - <source>Displays the command executed to terminate the TAP interface.</source> - <translation type="obsolete">បង្ហាញ​ពាក្យ​បញ្ជា​ដែលបាន​ប្រážáž·áž”ážáŸ’ážáž·â€‹ážŠáž¾áž˜áŸ’បីបញ្ចប់​ចំណុច​ប្រទាក់ TAP ។</translation> - </message> - <message> - <source>Selects the terminate application.</source> - <translation type="obsolete">ជ្រើស​កម្មវិធី​បញ្ចប់ ។</translation> - </message> - <message> - <source>Host Interface Settings</source> - <translation type="obsolete">កា​រ​កំណážáŸ‹â€‹áž…ំណុច​ប្រទាក់​ម៉ាស៊ីន</translation> - </message> - <message> <source>no bridged network adapter is selected</source> - <translation type="unfinished"></translation> + <translation>មិន​​​មាន​អាដាប់​ទáŸážšâ€‹áž”ណ្ážáž¶áž‰áž”្រ៊ីដ្យ​ážáŸ’រូវ​បានជ្រើស​រើស​ទáŸâ€‹</translation> </message> <message> <source>no internal network name is specified</source> - <translation type="unfinished"></translation> + <translation>មិនមាន​ឈ្មោះ​បណ្ដាញ​ážáž¶áž„​ក្នុង​ážáŸ’រូវ​បានបញ្ជាក់ទáŸ</translation> </message> <message> <source>no host-only network adapter is selected</source> - <translation type="unfinished"></translation> + <translation>មិនមាន​អាដាប់ទំពáŸážšâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​ážáŸ’រូវ​បាន​ជ្រើស​ទáŸ</translation> </message> <message> <source>Not selected</source> - <comment>network adapter name</comment> - <translation type="unfinished"></translation> + <comment> + +network adapter name</comment> + <translation type="obsolete">មិន​​បាន​ជ្រើស​ឡើយ​</translation> </message> <message> <source>Controls how this virtual adapter is attached to the real network of the Host OS.</source> - <translation type="unfinished"></translation> + <translation>ážáŸ’ážšáž½ážáž–áž·áž“áž·ážáŸ’យ​វិធី​ដែល​អាដាប់ទáŸážšâ€‹áž“ិម្មិážâ€‹áž“áŸáŸ‡â€‹ážáŸ’រូវ​បាន​ភ្ជាប់​ទៅ​បណ្ដាញ​ពិážáž”្រាកដ​​របស់​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“ ។</translation> </message> <message> <source>&Name:</source> - <translation type="unfinished">ឈ្មោះ ៖</translation> + <translation>ឈ្មោះ ៖</translation> </message> <message> <source>Selects the name of the network adapter for <b>Bridged Adapter</b> or <b>Host-only Adapter</b> attachments and the name of the network <b>Internal Network</b> attachments.</source> - <translation type="unfinished"></translation> + <translation>ជ្រើស​ឈ្មោះ​អាដាប់ទáŸážšâ€‹áž”ណ្ដាញ​សម្រាប់ <b>អាដាប់ទáŸážšâ€‹áž”្រ៊ីដ្យ</b> ឬ <b>អាដាប់ទáŸážšáž˜áŸ‰áž¶ážŸáŸŠáž¸áž“</b> ការ​ភ្ជាប់ និង​ឈ្មោះ​​របស់​បណ្ដាញ ការ​ភ្ជាប់<b>បណ្ដាញ​ážáž¶áž„​ក្នុង</b> ។</translation> </message> <message> <source>A&dvanced</source> - <translation type="unfinished"></translation> + <translation>កម្រិážâ€‹ážáŸ’ពស់​</translation> </message> <message> <source>Shows or hides additional network adapter options.</source> - <translation type="unfinished"></translation> + <translation>បង្ហាញ​ ឬ​លាក់​ជម្រើស​អាដាប់ទáŸážšâ€‹áž”ណ្ដាញ​បន្ážáŸ‚ម ។</translation> </message> <message> <source>Adapter &Type:</source> - <translation type="unfinished"></translation> + <translation>ប្រភáŸáž‘​អាដាប់​ទáŸážšâ€‹Â ៖</translation> </message> <message> <source>&Mac Address:</source> - <translation type="unfinished"></translation> + <translation>អាសយដ្ឋាន Mac ៖</translation> </message> <message> <source>&Cable connected</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>VBoxVMSettingsNetworkPage</name> - <message> - <source>No host network interface is selected</source> - <translation type="obsolete">គ្មាន​ចំណុច​ប្រទាក់​បណ្ដាញ​ម៉ាស៊ីន​បាន​ជ្រើស​ទáŸ</translation> + <translation> បាន​ážáž—្ជាប់​ážáŸ’សែ​</translation> </message> <message> - <source>Internal network name is not set</source> - <translation type="obsolete">ឈ្មោះ​បណ្ដាញ​ážáž¶â€‹áž„ក្នុង​មិន​ážáŸ’រូវ​បានកំណážáŸ‹â€‹ážáŸ‚</translation> + <source>Not selected</source> + <comment>network adapter name</comment> + <translation type="unfinished">មិន​​បាន​ជ្រើស​ឡើយ​</translation> </message> </context> <context> @@ -6585,18 +6460,6 @@ p, li { white-space: pre-wrap; } <context> <name>VBoxVMSettingsSF</name> <message> - <source>&Add New Shared Folder</source> - <translation type="obsolete">បន្ážáŸ‚ម​ážážâ€‹ážŠáŸ‚ល​បានចែកចរំលែក​ážáŸ’មី</translation> - </message> - <message> - <source>&Edit Selected Shared Folder</source> - <translation type="obsolete">កែសម្រួល​ážážâ€‹ážŠáŸ‚លបានចែករំលែក​ដែល​បានជ្រើស</translation> - </message> - <message> - <source>&Remove Selected Shared Folder</source> - <translation type="obsolete">យក​ážážâ€‹ážŠáŸ‚លបានចែករំលែក​ដែល​បាន​ជ្រើស</translation> - </message> - <message> <source>Adds a new shared folder definition.</source> <translation>បន្ážáŸ‚ម​កា​រកំណážáŸ‹â€‹ážážâ€‹ážŠáŸ‚លបានចែករំលែកážáŸ’មី ។</translation> </message> @@ -6642,23 +6505,23 @@ p, li { white-space: pre-wrap; } </message> <message> <source> Global Folders</source> - <translation type="unfinished"></translation> + <translation> ážážâ€‹ážŸáž€áž›â€‹</translation> </message> <message> <source>&Add Shared Folder</source> - <translation type="unfinished"></translation> + <translation>បន្ážáŸ‚ម​ážážâ€‹ážŠáŸ‚ល​បាន​ចែករំលែក​</translation> </message> <message> <source>&Edit Shared Folder</source> - <translation type="unfinished"></translation> + <translation>កែសម្រួល​ážážâ€‹ážŠáŸ‚លបានចែករំលែក​</translation> </message> <message> <source>&Remove Shared Folder</source> - <translation type="unfinished"></translation> + <translation>យក​ážážâ€‹ážŠáŸ‚លបានចែករំលែក​ចáŸáž‰â€‹</translation> </message> <message> <source>&Folders List</source> - <translation type="unfinished"></translation> + <translation>បញ្ជី​ážážâ€‹</translation> </message> </context> <context> @@ -6756,16 +6619,12 @@ p, li { white-space: pre-wrap; } <translation>បង្កើážâ€‹áž”ំពង់</translation> </message> <message> - <source>Port &Path:</source> - <translation type="obsolete">ផ្លូវ​ច្រក ៖</translation> - </message> - <message> <source>Displays the path to the serial port's pipe on the host when the port is working in <b>Host Pipe</b> mode, or the host serial device name when the port is working in <b>Host Device</b> mode.</source> <translation>បង្ហាញ​ផ្លូវ​ទៅកាន់​ច្រក​ស៊áŸážšáŸ€áž›â€‹áž“ៅ​លើ​ម៉ាស៊ីន នៅពáŸáž›â€‹áž…្រក​ដំណើការ​ក្នុង​របៀប <b>បំពង់​ម៉ាស៊ីន</b> ឬ​ឈ្មោះ​ឧបករណáŸâ€‹ážŸáŸŠáŸážšáŸ€áž›â€‹áž“ៅពáŸáž›â€‹áž…្រក​ដំណើរការ​ក្នុង​របៀប <b>ឧបករណáŸâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“</b> ។</translation> </message> <message> <source>Port/File &Path:</source> - <translation type="unfinished"></translation> + <translation>ផ្លូវ​ ច្រក​​/ឯកសារ​ ៖</translation> </message> </context> <context> @@ -6787,145 +6646,159 @@ p, li { white-space: pre-wrap; } <name>VBoxVMSettingsSystem</name> <message> <source>you have assigned more than <b>%1%</b> of your computer's memory (<b>%2</b>) to the virtual machine. Not enough memory is left for your host operating system. Please select a smaller amount.</source> - <translation type="unfinished"></translation> + <translation>អ្នកបាន​ផ្ដល់សážáž·â€‹áž€áž»áŸ†áž–្យូទáŸážšážšáž”ស់​អ្នក​ច្រើនជាង <b>%1%</b> (<b>%2</b>) ដល់​ម៉ាស៊ីន​និម្មិážÂ ។ មិនមាន​សážáž·â€‹áž‚្រប់គ្រាន់​នៅ​សល់​សម្រាប់​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​របស់​អ្នក​ទáŸÂ ។ សូម​ជ្រើស​​ចំនួន​សážáž·â€‹ážáž¼áž…​ជាង​​នáŸáŸ‡Â ។</translation> </message> <message> <source>you have assigned more than <b>%1%</b> of your computer's memory (<b>%2</b>) to the virtual machine. There might not be enough memory left for your host operating system. Continue at your own risk.</source> - <translation type="unfinished"></translation> + <translation>អ្នក​បាន​ផ្ដល់​សážáž·â€‹áž€áž»áŸ†áž–្យូទáŸážšâ€‹áž…្រើន <b>%1%</b> (<b>%2</b>) ដល់​ម៉ាស៊ីន​និម្មិážÂ ។ វា​ប្រហែលជា​មិន​គ្រប់គ្រាន់​​សម្រាប់​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​របស់​អ្នក​ទáŸÂ ។ បន្ážâ€‹ážŠáŸ„យ​មានគ្រោះážáŸ’នាក់ ។</translation> </message> <message> <source>for performance reasons, the number of virtual CPUs attached to the virtual machine may not be more than twice the number of physical CPUs on the host (<b>%1</b>). Please reduce the number of virtual CPUs.</source> - <translation type="unfinished"></translation> + <translation>សម្រាប់​អនុវážáŸ’ហចំនួន​ស៊ីភីយូ​ដែល​បាន​ភ្ជាប់​ទៅ​ម៉ាស៊ីន​មិន​អាច​លើស​ពី​​ចំនួន​ពីរ​នៃ​ស៊ីភីយូ​ហ្វីស៊ីážáž›â€‹áž“ៅ​លើ​ម៉ាស៊ីន (<b>%1</b>) ។ សូម​កាážáŸ‹â€‹áž”ន្ážáž™â€‹áž…ំនួន​ស៊ីភីយូ​និម្មិážÂ ។</translation> </message> <message> <source>you have assigned more virtual CPUs to the virtual machine than the number of physical CPUs on your host system (<b>%1</b>). This is likely to degrade the performance of your virtual machine. Please consider reducing the number of virtual CPUs.</source> - <translation type="unfinished"></translation> + <translation>អ្នក​បានផ្ដល់​ស៊ីភីយូ​និម្មិážâ€‹áž…្រើន​ដល់​ម៉ាស៊ីន​និម្មិážâ€‹áž‡áž¶áž„​ចំនួន​ស៊ីភីយូ​ហ្វីស៊ីážáž›â€‹áž“ៅ​ក្នុង​ប្រពáŸáž“្ធ​ម៉ាស៊ីន​របស់​អ្នក (<b>%1</b>) ។ វា​ទំនង​ជា​បន្ážáž™â€‹áž€áž¶ážšâ€‹áž¢áž“ុវážáŸ’ážâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“និម្មិážâ€‹ážšáž”ស់​អ្នក ។ សូម​ពិចារណា​លើការ​កាážáŸ‹áž”ន្ážáž™â€‹áž…ំនួន​ស៊ីភីយូ​និម្មិážÂ ។</translation> </message> <message> <source>you have assigned more than one virtual CPU to this VM. This will not work 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>អ្នកបានផ្ដល់​ស៊ីភីយូ​និម្មិážâ€‹áž…្រើនជាង​ដល់ VM áž“áŸáŸ‡ ។ វា​នឹង​មិន​ដំណើរការ​ទ០លុះážáŸ’រា​ážáŸ‚​លក្ážážŽáŸˆáž–ិសáŸážŸâ€‹ážšáž”ស់ IO-APIC ážáŸ’រូវ​បានបើក ។ វា​នឹង​ážáŸ’រូវ​បាន​ធ្វើ​ដោយ​ស្វáŸáž™â€‹áž”្រវážáŸ’ážáž· នៅពáŸáž›â€‹áž¢áŸ’នក​ទទួល​យក​ការ​កំណážáŸ‹ VM ដោយ​ចុច​ប៊ូážáž»áž„​យល់ព្រម ។</translation> </message> <message> <source>you have assigned more than one virtual CPU to this VM. This will not work unless hardware virtualization (VT-x/AMD-V) 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>អ្នក​បានផ្ដល់​ស៊ីភីយូ​និម្មិážâ€‹áž…្រើនជាង​មួយ​ដល់ VM ។ វា​នឹង​មិនដំណើរការ​ទ០លុះážáŸ’រា​ážáŸ‚​ផ្នែក​រឹង​និម្មិហ(VT-x/AMD-V) ážáŸ’រូវ​បានបើក​ដែរ ។ វា​នឹង​ážáŸ’រូវ​បានធ្វើ​ដោយ​ស្វáŸáž™â€‹áž”្រវážáŸ’ážáž· នៅពáŸáž›â€‹áž¢áŸ’នក​ទទួល​យក​ការ​កំណážáŸ‹ VM ដោយ​ចុច​ប៊ូážáž»áž„យល់ព្រម ។</translation> </message> <message> <source><qt>%1&nbsp;MB</qt></source> - <translation type="unfinished"><qt>%1&nbsp;មáŸáž€áž¶áž”ៃ</qt></translation> + <translation><qt>%1&nbsp;មáŸáž€áž¶áž”ៃ</qt></translation> </message> <message> <source><qt>%1&nbsp;CPU</qt></source> - <comment>%1 is 1 for now</comment> - <translation type="unfinished"></translation> + <comment> + +%1 is 1 for now</comment> + <translation type="obsolete"><qt>%1&nbsp; ស៊ី​ភី​យូ</qt></translation> </message> <message> <source><qt>%1&nbsp;CPUs</qt></source> - <comment>%1 is host cpu count * 2 for now</comment> - <translation type="unfinished"></translation> + <comment> + +%1 is host cpu count * 2 for now</comment> + <translation type="obsolete"><qt>%1&nbsp; ស៊ី​ភី​យូ​</qt></translation> </message> <message> <source>&Motherboard</source> - <translation type="unfinished"></translation> + <translation>បន្ទះ​មáŸâ€‹</translation> </message> <message> <source>Base &Memory:</source> - <translation type="unfinished"></translation> + <translation>សážáž·â€‹áž‚ោល​ ៖</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="unfinished">ážáŸ’ážšáž½ážáž–áž·áž“áž·ážáŸ’យ​ចំនួន​សážáž·â€‹ážŠáŸ‚លបានផ្ដល់​ទៅ​ម៉ាស៊ីន​និម្មិážÂ ។ ប្រសិនបើ​អ្នក​ផ្ដល់​ច្រើនពáŸáž€ ម៉ាស៊ីន​មិនអាច​ចាប់ផ្ដើម​បានទáŸÂ ។</translation> + <translation>ážáŸ’ážšáž½ážáž–áž·áž“áž·ážáŸ’យ​ចំនួន​សážáž·â€‹ážŠáŸ‚លបានផ្ដល់​ទៅ​ម៉ាស៊ីន​និម្មិážÂ ។ ប្រសិនបើ​អ្នក​ផ្ដល់​ច្រើនពáŸáž€ ម៉ាស៊ីន​មិនអាច​ចាប់ផ្ដើម​បានទáŸÂ ។</translation> </message> <message> <source>MB</source> - <translation type="unfinished">មáŸáž€áž¶áž”ៃ</translation> + <translation>មáŸáž€áž¶áž”ៃ</translation> </message> <message> <source>&Boot Order:</source> - <translation type="unfinished"></translation> + <translation>លំដាប់​ចាប់ផ្ដើម ៖</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="unfinished">កំណážáŸ‹â€‹áž›áŸ†ážŠáž¶áž”់​ឧបករណáŸâ€‹áž…ាប់ផ្ដើម ។ ប្រើ​ប្រអប់​គូសធីក​នៅ​ážáž¶â€‹áž„ឆ្វáŸáž„​ដើម្បី​បើក ​ឬ​បិទ​ឧបករណáŸâ€‹áž…ាប់ផ្ដើម​នីមួយៗ ។ ផ្លាស់ទីធាážáž»â€‹áž¡áž¾áž„​លើ និង​ចុះក្រោម​ដើម្បី​ផ្លាស់ប្ដូរ​លំដាប់​ឧបករណáŸÂ ។</translation> + <translation>កំណážáŸ‹â€‹áž›áŸ†ážŠáž¶áž”់​ឧបករណáŸâ€‹áž…ាប់ផ្ដើម​ឡើង ។ ប្រើ​ប្រអប់​ធីក​នៅ​ážáž¶áž„​ឆ្វáŸáž„ ដើម្បី​បើក ឬ​បិទ​ឧបករណáŸâ€‹áž…ាប់ផ្ដើមឡើង ។ ផ្លាស់ទី​វា​ឡើង​លើ និង​ចុះក្រោម​ ដើម្បី​ផ្លាស់ប្ដូរ​លំដាប់​ឧបករណáŸÂ ។</translation> </message> <message> <source>Move Up (Ctrl-Up)</source> - <translation type="unfinished">ផ្លាស់ទីឡើង​លើ (បញ្ជា(Ctrl)-Up)</translation> + <translation>ផ្លាស់ទី​ឡើង​លើ (Ctrl-Up)</translation> </message> <message> <source>Moves the selected boot device up.</source> - <translation type="unfinished">ផ្លាស់ទី​ឧបករណáŸâ€‹áž…ាប់ផ្ដើម​ដែល​បានជ្រើ​សឡើង​លើ ។</translation> + <translation>ផ្លាស់ទី​ឧបករណáŸâ€‹áž…ាប់ផ្ដើម​ដែលបាន​ជ្រើស​ឡើង​លើ ។</translation> </message> <message> <source>Move Down (Ctrl-Down)</source> - <translation type="unfinished">ផ្លាស់ទី​ចុះក្រោម (បញ្ជា(Ctrl)-Down)</translation> + <translation>ផ្លាស់ទី​ចុះក្រោម (Ctrl-Down)</translation> </message> <message> <source>Moves the selected boot device down.</source> - <translation type="unfinished">ផ្លាស់ទី​ឧបករណáŸâ€‹áž…ាប់ផ្ដើម​ដែល​បាន​ជ្រើស​ចុះក្រោម ។</translation> + <translation>ផ្លាស់ទី​ឧបករណáŸâ€‹áž…ាប់ផ្ដើម​ដែល​បាន​ជ្រើស​ចុះក្រោម</translation> </message> <message> <source>Extended Features:</source> - <translation type="unfinished">លក្ážážŽáŸˆážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹ážŠáŸ‚ល​បានពង្រីក ៖</translation> + <translation>លក្ážážŽáŸˆâ€‹áž–ិសáŸážŸâ€‹ážŠáŸ‚ល​បានពង្រីក ៖</translation> </message> <message> <source>When checked, the virtual machine will support the Input Output APIC (IO APIC), which may slightly decrease performance. <b>Note:</b> don't disable this feature after having installed a Windows guest operating system!</source> - <translation type="unfinished">នៅពáŸáž›â€‹áž”ាន​គូស​ធីក ម៉ាស៊ីន​និម្មិážâ€‹áž“ឹង​គាំទ្រ​ Input Output APIC (IO APIC) ដែល​អាច​បន្ážáž™â€‹áž€áž¶ážšâ€‹áž¢áž“ុវážáŸ’ážâ€‹ážšáž”ស់ VM ážáž·áž…ážáž½áž… ។ <b>ចំណាំ ៖</b> កុំ​បិទ​លក្ážážŽáŸˆâ€‹áž–ិសáŸážŸâ€‹áž“áŸáŸ‡â€‹áž”ន្ទាប់ពី​ដំឡើង​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹ážœáž¸áž“ដូ​របស់ម៉ាស៊ីន​ភ្ញៀវ !</translation> + <translation>នៅ​ពáŸáž›â€‹áž”ានគូស​ធីក ម៉ាស៊ីន​និម្មិážâ€‹áž“ឹង​គាំទ្រ​ Input Output APIC (IO APIC) ដែលអាច​បន្ážáž™â€‹áž€áž¶ážšâ€‹áž¢áž“ុវážáŸ’ážâ€‹áž”ន្ážáž·áž…បន្ážáž½áž… ។ <b>ចំណាំ ៖</b> កុំ​បិទ​លក្ážážŽáŸˆáž–ិសáŸážŸâ€‹áž“áŸáŸ‡ បន្ទាប់​ពី​ដំឡើង​ប្រពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​ភ្ញៀវ​វីនដូ !</translation> </message> <message> <source>Enable &IO APIC</source> - <translation type="unfinished"></translation> + <translation>បើក IO APIC</translation> </message> <message> <source>When checked, the guest will support the Extended Firmware Interface (EFI), which is required to boot certain guest OSes. Non-EFI aware OSes will not be able to boot if this option is activated.</source> - <translation type="unfinished"></translation> + <translation>​នៅ​ពáŸáž›â€‹â€‹ážŠáŸ‚លបាន​គូស​ធីក​ ម៉ាស៊ីន​ភ្ញៀវ​នឹង​គាំ​ទ្រ Extended Firmware Interface (EFI) ដែល​ážáŸ’រូវ​បាន​ទាម​ទារ​ដើម្បី​ចាប់ផ្ដើម​ប្រ​ពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·â€‹â€‹áž€áž¶ážšâ€‹â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​ភ្ញៀវពិážâ€‹áž”្រាកដ ។​ ប្រ​ពáŸáž“្ធ​ប្រážáž·áž”ážáŸ’ážáž·â€‹áž€áž¶ážšâ€‹â€‹ážŠáŸ‚ល​មិនមែន​ ​EFI ​​នឹង​មិនអាច​ទៅ​ចាប់ផ្ážáž¾áž˜â€‹â€‹áž”ាន​ទ០​​ប្រ​សិន​បើ​ជម្រើស​ážáŸ’រូវ​បាន​ធ្វើ​ឲ្យ​សកម្ម​ ។</translation> </message> <message> <source>Enable &EFI (special OSes only)</source> - <translation type="unfinished"></translation> + <translation>បើក EFI (ážáŸ‚ OSes ប៉ុណ្ណោះ)</translation> </message> <message> <source>&Processor</source> - <translation type="unfinished"></translation> + <translation>ប្រ​ពáŸáž“្ធ​ដំណើរ​ការ​</translation> </message> <message> <source>&Processor(s):</source> - <translation type="unfinished"></translation> + <translation>ប្រ​ពáŸáž“្ធ​ដំណើរ​ការ​​ ៖</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> - <translation type="unfinished"></translation> + <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>ážáŸ’ážšáž½ážâ€‹áž–áž·áž“áž·ážáŸ’យចំនួន​ស៊ីភីយូ​និម្មិážâ€‹áž“ៅ​ក្នុង​ម៉ាស៊ីន​និម្មិážÂ ។</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="unfinished">នៅពáŸáž›â€‹áž”ាន​គូស​ធីក លក្ážážŽáŸˆáž–ិសáŸážŸâ€‹ážšáž”ស់ Physical Address Extension (PAE) នៃ​ស៊ីភីយូ​របស់​ម៉ាស៊ីន​នឹង​ážáŸ’រូវ​បានបង្ហាញ​ដល់​ម៉ាស៊ីន​និម្មិážÂ ។</translation> + <translation>នៅពáŸáž›â€‹áž”ាន​គូស​ធីក លក្ážážŽáŸˆáž–ិសáŸážŸ Physical Address Extension (PAE) របស់​ស៊ីភីយូ​​ម៉ាស៊ីន​នឹង​ážáŸ’រូវ​បានបង្ហាញ​​ម៉ាស៊ីន​និម្មិážÂ ។</translation> </message> <message> <source>Enable PA&E/NX</source> - <translation type="unfinished">បើក PAE/NX</translation> + <translation>បើក PAE/NX</translation> </message> <message> <source>Acce&leration</source> - <translation type="unfinished"></translation> + <translation>ការ​បង្កើន​ល្បឿន​</translation> </message> <message> <source>Hardware Virtualization:</source> - <translation type="unfinished"></translation> + <translation>ការ​ធ្វើ​ផ្នែក​រឹង​និម្មិážÂ ៖</translation> </message> <message> <source>When checked, the virtual machine will try to make use of the host CPU's hardware virtualization extensions such as Intel VT-x and AMD-V.</source> - <translation type="unfinished">នៅពáŸáž›â€‹áž”ាន​គូស​ធីគ ម៉ាស៊ីន​និម្មិážâ€‹áž“ឹង​ព្យាយាម​ប្រាកដ​ážáž¶â€‹áž•áŸ’នែក​បន្ážáŸ‚ម​និម្មិážâ€‹áž•áŸ’នែក​រឹង​របស់​ស៊ីភីយូ​របស់ម៉ាស៊ីន​ដូចជា Intel VT-x áž“áž·áž„ AMD-V ។</translation> + <translation>នៅ​ពáŸáž›áž”ាន​គូស​ធីក ម៉ាស៊ីននិម្មិážâ€‹áž“ឹង​ព្យាយាម​ប្រាកដážáž¶â€‹ ការ​ប្រើ​ប្រាស់​ផ្នែកបន្ážáŸ‚ម​និម្មិážâ€‹áž•áŸ’នែក​រឹង​របស់​ស៊ីភីយូ ដូ​ចជា Intel VT-x áž“áž·áž„ AMD-V ។</translation> </message> <message> <source>Enable &VT-x/AMD-V</source> - <translation type="unfinished">បើក VT-x/AMD-V</translation> + <translation>បើក VT-x/AMD-V</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="unfinished"></translation> + <translation>នៅពáŸáž›â€‹ážŠáŸ‚លបានគូស​ធីក ម៉ាស៊ីន​និម្មិážâ€‹áž“ឹង​ព្យាយាម​ប្រាកដ​ážáž¶â€‹áž•áŸ’នែក​បន្ážáŸ‚ម paging ážáž¶áž„​ក្នុង​របស់ Intel VT-x áž“áž·áž„ AMD-V ។</translation> </message> <message> <source>Enable Nested Pa&ging</source> - <translation type="unfinished"></translation> + <translation>បើកការ​ដាក់​ទំពáŸážšâ€‹áž€áŸ’នុង​</translation> + </message> + <message> + <source><qt>%1&nbsp;CPU</qt></source> + <comment>%1 is 1 for now</comment> + <translation type="unfinished"><qt>%1&nbsp; ស៊ី​ភី​យូ</qt></translation> + </message> + <message> + <source><qt>%1&nbsp;CPUs</qt></source> + <comment>%1 is host cpu count * 2 for now</comment> + <translation type="unfinished"><qt>%1&nbsp; ស៊ី​ភី​យូ​</qt></translation> </message> </context> <context> @@ -7114,39 +6987,4 @@ p, li { white-space: pre-wrap; } <translation>សáŸáž…ក្ដី​លម្អិážâ€‹ážáž˜áŸ’ážšáž„ USB</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">នៅពáŸáž›â€‹áž”ាន​គូស​ធីក VM នឹង​ដើរážáž½â€‹áž‡áž¶â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​បម្រើ​ពិធីការ​ផ្ទៃážáž»â€‹áž–ី​ចម្ងាយ (RDP) ដោយ​អនុញ្ញាážâ€‹áž²áŸ’យ​ម៉ាស៊ីនភ្ញៀវ​ពី​ចម្ងាយ​ážáž—្ជាប់​ ហើយ​ប្រážáž·áž”ážáŸ’ážáž·â€‹ VM (នៅ​ពáŸáž›â€‹áž€áŸ†áž–ុង​រážáŸ‹) ដោយ​ប្រើ​ម៉ាស៊ីន​ភ្ញៀវ RDP ស្ážáž„់ដារ ។</translation> - </message> - <message> - <source>&Enable VRDP Server</source> - <translation type="obsolete">បើក​ម៉ាស៊ីនបម្រើ VRDP</translation> - </message> - <message> - <source>Server &Port:</source> - <translation type="obsolete">ច្រក​ម៉ាស៊ីន​បម្រើ ៖</translation> - </message> - <message> - <source>Displays the VRDP Server port number. You may specify <tt>0</tt> (zero) to reset the port to the default value.</source> - <translation type="obsolete">បង្ហាញ​លáŸážâ€‹áž…្រក​ម៉ាស៊ីនបម្រើ VRDP ។ អ្នកអាច​បញ្ជាក់ <tt>0</tt> (សូន្យ) ដើម្បី​កំណážáŸ‹â€‹áž…្រក​ទៅ​ážáž˜áŸ’លៃ​លំនាំដើម​ឡើង​វិញ ។</translation> - </message> - <message> - <source>Authentication &Method:</source> - <translation type="obsolete">វិធីសាស្ážáŸ’រ​ផ្ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ ៖</translation> - </message> - <message> - <source>Defines the VRDP authentication method.</source> - <translation type="obsolete">កំណážáŸ‹â€‹ážœáž·áž’ីសាស្ážáŸ’រ​ផ្ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ​របស់ VRDP ។</translation> - </message> - <message> - <source>Authentication &Timeout:</source> - <translation type="obsolete">អស់ពáŸáž›â€‹áž•áŸ’ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ ៖</translation> - </message> - <message> - <source>Specifies the timeout for guest authentication, in milliseconds.</source> - <translation type="obsolete">បញ្ជាក់​ការ​អស់ពáŸáž›ážœáŸáž›áž¶â€‹ážŸáž˜áŸ’រាប់​ការ​ផ្ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ áž‚áž·ážâ€‹â€‹áž‡áž¶â€‹áž˜áž·áž›áŸ’លី​វិនាទី ។</translation> - </message> -</context> </TS> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts index 464a41fa4..69c7dd99d 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Park Shinjo</translation> + <translation type="obsolete">Park Shinjo</translation> </message> </context> <context> @@ -1399,7 +1399,7 @@ p, li { white-space: pre-wrap; } <translation>실시간으로 ë… ì•„ì´ì½˜ ê°±ì‹ í•˜ê¸°(&D)</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation type="unfinished"></translation> </message> </context> @@ -4493,7 +4493,7 @@ p, li { white-space: pre-wrap; } <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>VirtualBox ë“±ë¡ ëŒ€í™”ìƒìž</translation> + <translation type="obsolete">VirtualBox ë“±ë¡ ëŒ€í™”ìƒìž</translation> </message> <message> <source>&Name</source> @@ -4501,7 +4501,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>ì˜ë¬¸ìžë¥¼ 사용하셔서 ì „ì²´ ì´ë¦„ì„ ìž…ë ¥í•˜ì‹ì‹œì˜¤.</translation> + <translation type="obsolete">ì˜ë¬¸ìžë¥¼ 사용하셔서 ì „ì²´ ì´ë¦„ì„ ìž…ë ¥í•˜ì‹ì‹œì˜¤.</translation> </message> <message> <source>&E-mail</source> @@ -4509,7 +4509,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>올바른 ì „ìž ìš°íŽ¸ 주소를 ìž…ë ¥í•´ 주ì‹ì‹œì˜¤.</translation> + <translation type="obsolete">올바른 ì „ìž ìš°íŽ¸ 주소를 ìž…ë ¥í•´ 주ì‹ì‹œì˜¤.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -4517,11 +4517,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>VirtualBox ë“±ë¡ ì–‘ì‹ì— ì˜¤ì‹ ê²ƒì„ í™˜ì˜í•©ë‹ˆë‹¤!</translation> + <translation type="obsolete">VirtualBox ë“±ë¡ ì–‘ì‹ì— ì˜¤ì‹ ê²ƒì„ í™˜ì˜í•©ë‹ˆë‹¤!</translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>ì—°ê²° 협ìƒì„ ì§„í–‰í• ìˆ˜ 없습니다.</translation> + <translation type="obsolete">ì—°ê²° 협ìƒì„ ì§„í–‰í• ìˆ˜ 없습니다.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -4537,63 +4537,63 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Cancel</source> - <translation>취소</translation> + <translation type="obsolete">취소</translation> </message> <message> <source>Select Country/Territory</source> - <translation>êµê°€ ë° ì§€ì— ì„ íƒ</translation> + <translation type="obsolete">êµê°€ ë° ì§€ì— ì„ íƒ</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>ì´ ë“±ë¡ ì–‘ì‹ì„ 작성하셔서 VirtualBox를 ì‚¬ìš©í•˜ê³ ìžˆë‹¤ëŠ” ê²ƒì„ ì•Œë ¤ 주ì‹ì‹œì˜¤. ì„ íƒì 으로 VirtualBox 뉴스와 ì—…ë°ì´íŠ¸ë¥¼ ë°›ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p><p>ì˜ë¬¸ìžë¡œ ì „ì²´ ì´ë¦„ì„ ìž‘ì„±í•˜ì‹œê³ ì „ìž ìš°íŽ¸ 주소를 ì ì–´ 주ì‹ì‹œì˜¤. Sun 마ì´í¬ë¡œì‹œìŠ¤í…œì¦ˆì—서는 수집한 ê°œì¸ ì •ë³´ë¥¼ ì œ 3ìžì—게 보내지 않으며, ì´ ì •ë³´ë¥¼ 사용하여 VirtualBox 사용 통계를 ëª¨ìœ¼ê³ ì—°ë½í•˜ëŠ” ë°ë§Œ ì‚¬ìš©í• ê²ƒìž…ë‹ˆë‹¤. ê°œì¸ ì •ë³´ë¥¼ 어떻게 ì‚¬ìš©í•˜ëŠ”ê°€ì— ëŒ€í•´ì„œ ì•Œì•„ë³´ì‹œë ¤ë©´ VirtualBox ì„¤ëª…ì„œì˜ <b>ê°œì¸ ì •ë³´ ì •ì±…</b> 섹션ì´ë‚˜ VirtualBox 웹 사ì´íŠ¸ì˜ <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>ê°œì¸ ì •ë³´ ì •ì±…</a>ì„ ì°¸ê³ í•˜ì‹ì‹œì˜¤.</p></translation> + <translation type="obsolete"><p>ì´ ë“±ë¡ ì–‘ì‹ì„ 작성하셔서 VirtualBox를 ì‚¬ìš©í•˜ê³ ìžˆë‹¤ëŠ” ê²ƒì„ ì•Œë ¤ 주ì‹ì‹œì˜¤. ì„ íƒì 으로 VirtualBox 뉴스와 ì—…ë°ì´íŠ¸ë¥¼ ë°›ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</p><p>ì˜ë¬¸ìžë¡œ ì „ì²´ ì´ë¦„ì„ ìž‘ì„±í•˜ì‹œê³ ì „ìž ìš°íŽ¸ 주소를 ì ì–´ 주ì‹ì‹œì˜¤. Sun 마ì´í¬ë¡œì‹œìŠ¤í…œì¦ˆì—서는 수집한 ê°œì¸ ì •ë³´ë¥¼ ì œ 3ìžì—게 보내지 않으며, ì´ ì •ë³´ë¥¼ 사용하여 VirtualBox 사용 통계를 ëª¨ìœ¼ê³ ì—°ë½í•˜ëŠ” ë°ë§Œ ì‚¬ìš©í• ê²ƒìž…ë‹ˆë‹¤. ê°œì¸ ì •ë³´ë¥¼ 어떻게 ì‚¬ìš©í•˜ëŠ”ê°€ì— ëŒ€í•´ì„œ ì•Œì•„ë³´ì‹œë ¤ë©´ VirtualBox ì„¤ëª…ì„œì˜ <b>ê°œì¸ ì •ë³´ ì •ì±…</b> 섹션ì´ë‚˜ VirtualBox 웹 사ì´íŠ¸ì˜ <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>ê°œì¸ ì •ë³´ ì •ì±…</a>ì„ ì°¸ê³ í•˜ì‹ì‹œì˜¤.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>Sun 온ë¼ì¸ ê³„ì •ì´ ì´ë¯¸ 있습니다(&H):</translation> + <translation type="obsolete">Sun 온ë¼ì¸ ê³„ì •ì´ ì´ë¯¸ 있습니다(&H):</translation> </message> <message> <source>&E-mail:</source> - <translation>ì „ìž ìš°íŽ¸ 주소(&E):</translation> + <translation type="obsolete">ì „ìž ìš°íŽ¸ 주소(&E):</translation> </message> <message> <source>&Password:</source> - <translation>암호(&P):</translation> + <translation type="obsolete">암호(&P):</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Sun 온ë¼ì¸ ê³„ì •ì„ ë“±ë¡í•˜ê² 습니다(&W):</translation> + <translation type="obsolete">Sun 온ë¼ì¸ ê³„ì •ì„ ë“±ë¡í•˜ê² 습니다(&W):</translation> </message> <message> <source>&First Name:</source> - <translation>ì´ë¦„(&F):</translation> + <translation type="obsolete">ì´ë¦„(&F):</translation> </message> <message> <source>&Last Name:</source> - <translation>성(&L):</translation> + <translation type="obsolete">성(&L):</translation> </message> <message> <source>&Company:</source> - <translation>회사(&C):</translation> + <translation type="obsolete">회사(&C):</translation> </message> <message> <source>Co&untry:</source> - <translation>êµê°€(&U):</translation> + <translation type="obsolete">êµê°€(&U):</translation> </message> <message> <source>E-&mail:</source> - <translation>ì „ìž ìš°íŽ¸ 주소(&M):</translation> + <translation type="obsolete">ì „ìž ìš°íŽ¸ 주소(&M):</translation> </message> <message> <source>P&assword:</source> - <translation>암호(&A):</translation> + <translation type="obsolete">암호(&A):</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>암호 확ì¸(&N):</translation> + <translation type="obsolete">암호 확ì¸(&N):</translation> </message> <message> <source>&Register</source> - <translation>등ë¡(&R)</translation> + <translation type="obsolete">등ë¡(&R)</translation> </message> </context> <context> @@ -6941,7 +6941,7 @@ p, li { white-space: pre-wrap; } <translation>프로세서 갯수(&P):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>ê°€ìƒ ë¨¸ì‹ ì˜ CPU 갯수를 ì¡°ì •í•©ë‹ˆë‹¤.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts index 4ab19ea85..d7c08e704 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Ebel Geertsema, Alexander L. de Goeij</translation> + <translation type="obsolete">Ebel Geertsema, Alexander L. de Goeij</translation> </message> </context> <context> @@ -1377,7 +1377,7 @@ p, li { white-space: pre-wrap; } <translation>Actueel voorbeeld &Dock ikoon</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>&Automatische Dock laten zien && Menubarlk bij schermvullend</translation> </message> </context> @@ -4468,84 +4468,84 @@ p, li { white-space: pre-wrap; } <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>VirtualBox registratie</translation> + <translation type="obsolete">VirtualBox registratie</translation> </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Geef uw volledige naam op.</translation> + <translation type="obsolete">Geef uw volledige naam op.</translation> </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Geef een geldig e-mail adres op.</translation> + <translation type="obsolete">Geef een geldig e-mail adres op.</translation> </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Welkom bij hetVirtualBox registratieformulier!</translation> + <translation type="obsolete">Welkom bij hetVirtualBox registratieformulier!</translation> </message> <message> <source>Could not perform connection handshake.</source> <translatorcomment>handshake?</translatorcomment> - <translation>Dan de ... verbinding niet uitvoeren.</translation> + <translation type="obsolete">Dan de ... verbinding niet uitvoeren.</translation> </message> <message> <source>Cancel</source> - <translation>Annuleren</translation> + <translation type="obsolete">Annuleren</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Vul aub het registratieformulier in en laat ons daarmee weten dat u VirtualBox gebruikt. We kunnen u dan, als u dat wenst, op de hoogte houden van nieuws en bijgewerkte versies.<p><p>Gebruikt aub Latijnse letterschrift voor de onderstaande velden. Let op: Sun Microsystems gebruikt deze informatie alleen voor statistische doeleinden over dit product en stuurt u VirtualBox nieuwsbrieven. In geen geval zal Sun Microsystems uw gegeven doorgeven aan derde partijen. Nadere informatie over hoe we uw persoonlijke gegeven gebruiken is te vinden in de <b>Privacy Policy</b> sectie van het VirtualBox handboek of bijr <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> pagina van de VirtualBox website.</p></translation> + <translation type="obsolete"><p>Vul aub het registratieformulier in en laat ons daarmee weten dat u VirtualBox gebruikt. We kunnen u dan, als u dat wenst, op de hoogte houden van nieuws en bijgewerkte versies.<p><p>Gebruikt aub Latijnse letterschrift voor de onderstaande velden. Let op: Sun Microsystems gebruikt deze informatie alleen voor statistische doeleinden over dit product en stuurt u VirtualBox nieuwsbrieven. In geen geval zal Sun Microsystems uw gegeven doorgeven aan derde partijen. Nadere informatie over hoe we uw persoonlijke gegeven gebruiken is te vinden in de <b>Privacy Policy</b> sectie van het VirtualBox handboek of bijr <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> pagina van de VirtualBox website.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>Ik &heb al een online Sun account:</translation> + <translation type="obsolete">Ik &heb al een online Sun account:</translation> </message> <message> <source>&E-mail:</source> - <translation>&E-mail:</translation> + <translation type="obsolete">&E-mail:</translation> </message> <message> <source>&Password:</source> - <translation>&Wachtwoord:</translation> + <translation type="obsolete">&Wachtwoord:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Ik &wil me graag registreren en een nieuw online Sun account aanmaken:</translation> + <translation type="obsolete">Ik &wil me graag registreren en een nieuw online Sun account aanmaken:</translation> </message> <message> <source>&First Name:</source> - <translation>&Voornaam:</translation> + <translation type="obsolete">&Voornaam:</translation> </message> <message> <source>&Last Name:</source> - <translation>&Achternaam:</translation> + <translation type="obsolete">&Achternaam:</translation> </message> <message> <source>&Company:</source> - <translation>&Bedrijf:</translation> + <translation type="obsolete">&Bedrijf:</translation> </message> <message> <source>Co&untry:</source> - <translation>&Land:</translation> + <translation type="obsolete">&Land:</translation> </message> <message> <source>E-&mail:</source> - <translation>E-&mail:</translation> + <translation type="obsolete">E-&mail:</translation> </message> <message> <source>P&assword:</source> - <translation>W&achtwoord:</translation> + <translation type="obsolete">W&achtwoord:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Wa&chtwoord bevestigen:</translation> + <translation type="obsolete">Wa&chtwoord bevestigen:</translation> </message> <message> <source>&Register</source> - <translation>&Registreren</translation> + <translation type="obsolete">&Registreren</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Kies het land/gebied</translation> + <translation type="obsolete">Kies het land/gebied</translation> </message> </context> <context> @@ -6661,7 +6661,7 @@ p, li {white-space: pre-wrap; } <translation>&Processor(en):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Controleert het aantal virtuele CPU in de virtuele machine.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts index 375bef0f6..ee080386b 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Dawid Wrobel, Adrian Lubik, Wiktor Wandachowicz</translation> + <translation type="obsolete">Dawid Wrobel, Adrian Lubik, Wiktor Wandachowicz</translation> </message> </context> <context> @@ -2050,7 +2050,7 @@ p, li { white-space: pre-wrap; } <translation>&PodglÄ…d na żywo wewnÄ…trz ikony w obszarze Dock</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>&Automatycznie pokazuj Dock oraz pasek menu w trybie peÅ‚noekranowym</translation> </message> </context> @@ -6186,7 +6186,7 @@ BÄ™dzie ona używana przez wszystkie moduÅ‚y VirtualBox, aby móc rozróżnić t <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>Okno rejestracji programu VirtualBox</translation> + <translation type="obsolete">Okno rejestracji programu VirtualBox</translation> </message> <message> <source><p>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.</p><p>Enter your full name using Latin characters and your e-mail address to the fields below. Please note that innotek will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, innotek will never pass your data to third parties. Detailed information about how we use your personal data can be found in the <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6198,7 +6198,7 @@ BÄ™dzie ona używana przez wszystkie moduÅ‚y VirtualBox, aby móc rozróżnić t </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Wprowadź swoje peÅ‚ne imiÄ™ i nazwisko używajÄ…c znaków alfabetu Å‚aciÅ„skiego.</translation> + <translation type="obsolete">Wprowadź swoje peÅ‚ne imiÄ™ i nazwisko używajÄ…c znaków alfabetu Å‚aciÅ„skiego.</translation> </message> <message> <source>&E-mail</source> @@ -6206,7 +6206,7 @@ BÄ™dzie ona używana przez wszystkie moduÅ‚y VirtualBox, aby móc rozróżnić t </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Wprowadź swój adres e-mail. Wymagany jest poprawny, dziaÅ‚ajÄ…cy adres.</translation> + <translation type="obsolete">Wprowadź swój adres e-mail. Wymagany jest poprawny, dziaÅ‚ajÄ…cy adres.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -6218,7 +6218,7 @@ BÄ™dzie ona używana przez wszystkie moduÅ‚y VirtualBox, aby móc rozróżnić t </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Formularz rejestracyjny programu VirtualBox</translation> + <translation type="obsolete">Formularz rejestracyjny programu VirtualBox</translation> </message> <message> <source>&Confirm</source> @@ -6234,7 +6234,7 @@ BÄ™dzie ona używana przez wszystkie moduÅ‚y VirtualBox, aby móc rozróżnić t </message> <message> <source>Could not perform connection handshake.</source> - <translation>Nie udaÅ‚o siÄ™ ustanowić poÅ‚Ä…czenia.</translation> + <translation type="obsolete">Nie udaÅ‚o siÄ™ ustanowić poÅ‚Ä…czenia.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6250,63 +6250,63 @@ BÄ™dzie ona używana przez wszystkie moduÅ‚y VirtualBox, aby móc rozróżnić t </message> <message> <source>Cancel</source> - <translation>Anuluj</translation> + <translation type="obsolete">Anuluj</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Wybierz kraj/region</translation> + <translation type="obsolete">Wybierz kraj/region</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>WypeÅ‚nij ten formularz w celu poinformowania nas, że korzystasz z programu VirtualBox oraz, opcjonalnie, aby być informowanym o jego uaktualnieniach i nowoÅ›ciach.</p><p>Prosimy o używanie wyÅ‚Ä…cznie znaków alfabetu Å‚aciÅ„skiego podczas wypeÅ‚niania poniższych pól. Firma Sun Microsystems bÄ™dzie używać tych danych tylko w celu gromadzenia statystyk popularnoÅ›ci programu i wysyÅ‚ania biuletynów. W szczególnoÅ›ci, Sun Microsystems nigdy nie przekaże Twoich danych osobowych podmiotom trzecim. Szczegółowe informacje na temat tego jak korzystamy z Twoich danych osobowych można znaleźć w sekcji <b>Privacy Policy</b> instrukcji obsÅ‚ugi programu VirtualBox, lub na stronie <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> strony internetowej programu VirtualBox.</p></translation> + <translation type="obsolete"><p>WypeÅ‚nij ten formularz w celu poinformowania nas, że korzystasz z programu VirtualBox oraz, opcjonalnie, aby być informowanym o jego uaktualnieniach i nowoÅ›ciach.</p><p>Prosimy o używanie wyÅ‚Ä…cznie znaków alfabetu Å‚aciÅ„skiego podczas wypeÅ‚niania poniższych pól. Firma Sun Microsystems bÄ™dzie używać tych danych tylko w celu gromadzenia statystyk popularnoÅ›ci programu i wysyÅ‚ania biuletynów. W szczególnoÅ›ci, Sun Microsystems nigdy nie przekaże Twoich danych osobowych podmiotom trzecim. Szczegółowe informacje na temat tego jak korzystamy z Twoich danych osobowych można znaleźć w sekcji <b>Privacy Policy</b> instrukcji obsÅ‚ugi programu VirtualBox, lub na stronie <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> strony internetowej programu VirtualBox.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>&Posiadam już konto Sun Online:</translation> + <translation type="obsolete">&Posiadam już konto Sun Online:</translation> </message> <message> <source>&E-mail:</source> - <translation>&E-mail:</translation> + <translation type="obsolete">&E-mail:</translation> </message> <message> <source>&Password:</source> - <translation>&HasÅ‚o:</translation> + <translation type="obsolete">&HasÅ‚o:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>&ChcÄ™ zaÅ‚ożyć nowe konto Sun Online:</translation> + <translation type="obsolete">&ChcÄ™ zaÅ‚ożyć nowe konto Sun Online:</translation> </message> <message> <source>&First Name:</source> - <translation>&ImiÄ™:</translation> + <translation type="obsolete">&ImiÄ™:</translation> </message> <message> <source>&Last Name:</source> - <translation>&Nazwisko:</translation> + <translation type="obsolete">&Nazwisko:</translation> </message> <message> <source>&Company:</source> - <translation>&Firma:</translation> + <translation type="obsolete">&Firma:</translation> </message> <message> <source>Co&untry:</source> - <translation>&Kraj:</translation> + <translation type="obsolete">&Kraj:</translation> </message> <message> <source>E-&mail:</source> - <translation>E-&mail:</translation> + <translation type="obsolete">E-&mail:</translation> </message> <message> <source>P&assword:</source> - <translation>H&asÅ‚o:</translation> + <translation type="obsolete">H&asÅ‚o:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>P&otwierdź hasÅ‚o:</translation> + <translation type="obsolete">P&otwierdź hasÅ‚o:</translation> </message> <message> <source>&Register</source> - <translation>&Rejestruj</translation> + <translation type="obsolete">&Rejestruj</translation> </message> </context> <context> @@ -10372,7 +10372,7 @@ makes the guest see an audio card, however every access to it will be ignored.&l <translation>P&rocesor(y):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Kontroluje ilość wirtualnych CPU dla maszyny wirtualnej.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts index d77485b1f..e0c39cd07 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>José Melo <mmodem00@gmail.com>, Marcelo Coelho <marcelocoelho@gmail.com></translation> + <translation type="obsolete">José Melo <mmodem00@gmail.com>, Marcelo Coelho <marcelocoelho@gmail.com></translation> </message> </context> <context> @@ -2037,7 +2037,7 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation type="unfinished"></translation> </message> </context> @@ -3343,7 +3343,7 @@ p, li { white-space: pre-wrap; } <message> <source><nobr>%1 MB</nobr></source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><nobr>%4 MB</nobr> {1 ?}</translation> </message> <message> <source>Processor(s)</source> @@ -6134,7 +6134,7 @@ diálogo de Configurações da MV.</p></translation> <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>Diálogo de Registo Virtualbox</translation> + <translation type="obsolete">Diálogo de Registo Virtualbox</translation> </message> <message> <source><p>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.</p><p>Enter your full name using Latin characters and your e-mail address to the fields below. Please note that innotek will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, innotek will never pass your data to third parties. Detailed information about how we use your personal data can be found in the <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6146,7 +6146,7 @@ diálogo de Configurações da MV.</p></translation> </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Indique o seu nome completo usando caracteres latinos.</translation> + <translation type="obsolete">Indique o seu nome completo usando caracteres latinos.</translation> </message> <message> <source>&E-mail</source> @@ -6154,7 +6154,7 @@ diálogo de Configurações da MV.</p></translation> </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Indique o seu endereço electrónico válido.</translation> + <translation type="obsolete">Indique o seu endereço electrónico válido.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -6166,7 +6166,7 @@ diálogo de Configurações da MV.</p></translation> </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Bem-vindo ao Formulário de Registo VirtualBox!</translation> + <translation type="obsolete">Bem-vindo ao Formulário de Registo VirtualBox!</translation> </message> <message> <source>&Confirm</source> @@ -6182,7 +6182,7 @@ diálogo de Configurações da MV.</p></translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>Não foi possÃvel estabelecer uma ligação.</translation> + <translation type="obsolete">Não foi possÃvel estabelecer uma ligação.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6198,63 +6198,7 @@ diálogo de Configurações da MV.</p></translation> </message> <message> <source>Cancel</source> - <translation>Cancelar</translation> - </message> - <message> - <source>Select Country/Territory</source> - <translation type="unfinished"></translation> - </message> - <message> - <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &already have a Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&E-mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &would like to create a new Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&First Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Last Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Company:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&untry:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>E-&mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>P&assword:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&nfirm Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Register</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Cancelar</translation> </message> </context> <context> @@ -10400,7 +10344,7 @@ USB seleccionado ligado à máquina.</qt> <translation type="unfinished"></translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts index c1349f399..0aa8277cf 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts @@ -27,7 +27,7 @@ <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> <translatorcomment>O ponto final não faz sentido...</translatorcomment> - <translation>Érico Mendonça <erico.mendonca@gmail.com></translation> + <translation type="obsolete">Érico Mendonça <erico.mendonca@gmail.com></translation> </message> </context> <context> @@ -2110,7 +2110,7 @@ p, li { white-space: pre-wrap; } <translation>Atualização em Tempo Real do Ãcone da Barra (&D)</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translatorcomment>Mostrar Dock e Barra de Menus &automaticamente em tela cheia</translatorcomment> <translation></translation> </message> @@ -6398,7 +6398,7 @@ utilizando o diálogo de Configurações da MV.</p></translation> <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>Diálogo de Registro do VirtualBox</translation> + <translation type="obsolete">Diálogo de Registro do VirtualBox</translation> </message> <message> <source><p>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.</p><p>Enter your full name using Latin characters and your e-mail address to the fields below. Please note that innotek will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, innotek will never pass your data to third parties. Detailed information about how we use your personal data can be found in the <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6410,7 +6410,7 @@ utilizando o diálogo de Configurações da MV.</p></translation> </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Entre com o seu nome completo em caracteres Latinos (sem acentos ou sÃmbolos).</translation> + <translation type="obsolete">Entre com o seu nome completo em caracteres Latinos (sem acentos ou sÃmbolos).</translation> </message> <message> <source>&E-mail</source> @@ -6418,7 +6418,7 @@ utilizando o diálogo de Configurações da MV.</p></translation> </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Entre com o seu endereço de e-mail válido.</translation> + <translation type="obsolete">Entre com o seu endereço de e-mail válido.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -6430,7 +6430,7 @@ utilizando o diálogo de Configurações da MV.</p></translation> </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Bem-vindo ao Formulário de Registro do VirtualBox!</translation> + <translation type="obsolete">Bem-vindo ao Formulário de Registro do VirtualBox!</translation> </message> <message> <source>&Confirm</source> @@ -6446,7 +6446,7 @@ utilizando o diálogo de Configurações da MV.</p></translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>Não foi possÃvel estabelecer negociação da conexão.</translation> + <translation type="obsolete">Não foi possÃvel estabelecer negociação da conexão.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6462,63 +6462,63 @@ utilizando o diálogo de Configurações da MV.</p></translation> </message> <message> <source>Cancel</source> - <translation>Cancelar</translation> + <translation type="obsolete">Cancelar</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Selecione o PaÃs/Território</translation> + <translation type="obsolete">Selecione o PaÃs/Território</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Por favor preencha este formulário de registro para que nós possamos ser informados que você utiliza o VirtualBox, e opcionalmente podermos mantê-lo informado sobre eventuais novidades e atualizações do VirtualBox.</p><p>Por favor use caracteres acentuados nos campos abaixo. A Sun Microsystems garante que irá utilizar esta informação apenas para obter estatÃsticas de uso do produto e para enviar newsletters do VirtualBox para você. A Sun Microsystems nunca irá repassar seus dados para terceiros. Informações detalhadas sobre como utilizamos os seus dados pessoais podem ser encontradas na seção <b>PolÃtica de Privacidade</b> do Manual do VirtualBox, ou na <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>página de PolÃtica de Privacidade</a> no site do VirtualBox.</p></translation> + <translation type="obsolete"><p>Por favor preencha este formulário de registro para que nós possamos ser informados que você utiliza o VirtualBox, e opcionalmente podermos mantê-lo informado sobre eventuais novidades e atualizações do VirtualBox.</p><p>Por favor use caracteres acentuados nos campos abaixo. A Sun Microsystems garante que irá utilizar esta informação apenas para obter estatÃsticas de uso do produto e para enviar newsletters do VirtualBox para você. A Sun Microsystems nunca irá repassar seus dados para terceiros. Informações detalhadas sobre como utilizamos os seus dados pessoais podem ser encontradas na seção <b>PolÃtica de Privacidade</b> do Manual do VirtualBox, ou na <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>página de PolÃtica de Privacidade</a> no site do VirtualBox.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>Eu já possuo uma conta Sun Online (&H):</translation> + <translation type="obsolete">Eu já possuo uma conta Sun Online (&H):</translation> </message> <message> <source>&E-mail:</source> - <translation>&E-mail:</translation> + <translation type="obsolete">&E-mail:</translation> </message> <message> <source>&Password:</source> - <translation>Senha (&P):</translation> + <translation type="obsolete">Senha (&P):</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Eu gostaria de me registrar criando uma nova conta no Sun Online (&W):</translation> + <translation type="obsolete">Eu gostaria de me registrar criando uma nova conta no Sun Online (&W):</translation> </message> <message> <source>&First Name:</source> - <translation>Primeiro Nome (&F):</translation> + <translation type="obsolete">Primeiro Nome (&F):</translation> </message> <message> <source>&Last Name:</source> - <translation>Sobrenome (&L):</translation> + <translation type="obsolete">Sobrenome (&L):</translation> </message> <message> <source>&Company:</source> - <translation>Empresa (&C):</translation> + <translation type="obsolete">Empresa (&C):</translation> </message> <message> <source>Co&untry:</source> - <translation>PaÃs (&U):</translation> + <translation type="obsolete">PaÃs (&U):</translation> </message> <message> <source>E-&mail:</source> - <translation>E-&mail:</translation> + <translation type="obsolete">E-&mail:</translation> </message> <message> <source>P&assword:</source> - <translation>Senh&a:</translation> + <translation type="obsolete">Senh&a:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Co&nfirme a Senha:</translation> + <translation type="obsolete">Co&nfirme a Senha:</translation> </message> <message> <source>&Register</source> - <translation>&Registrar</translation> + <translation type="obsolete">&Registrar</translation> </message> </context> <context> @@ -10954,7 +10954,7 @@ faz com que o convidado veja uma placa de som, mas todos os acessos a ela serão <translation>&Processador(es):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Controla a quantidade de CPUs virtuais que serão disponibilizadas na máquina virtual.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts index 2867365bd..3b62d26d0 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Alex Eftimie</translation> + <translation type="obsolete">Alex Eftimie</translation> </message> </context> <context> @@ -2171,7 +2171,7 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci cà <translation>Previzualizare în timp re&al</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation type="unfinished"></translation> </message> </context> @@ -6393,7 +6393,7 @@ din listă apăsând butonul <b>Existent</b> (pentru a invoca dialog <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>Dialog înregistrare VirtualBox</translation> + <translation type="obsolete">Dialog înregistrare VirtualBox</translation> </message> <message> <source><p>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.</p><p>Enter your full name using Latin characters and your e-mail address to the fields below. Please note that innotek will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, innotek will never pass your data to third parties. Detailed information about how we use your personal data can be found in the <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6405,7 +6405,7 @@ din listă apăsând butonul <b>Existent</b> (pentru a invoca dialog </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>IntroduceÈ›i numele dvs complet utilizând caractere latine.</translation> + <translation type="obsolete">IntroduceÈ›i numele dvs complet utilizând caractere latine.</translation> </message> <message> <source>&E-mail</source> @@ -6413,7 +6413,7 @@ din listă apăsând butonul <b>Existent</b> (pentru a invoca dialog </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>IntroduceÈ›i adresa dvs de e-mail validă.</translation> + <translation type="obsolete">IntroduceÈ›i adresa dvs de e-mail validă.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -6425,7 +6425,7 @@ din listă apăsând butonul <b>Existent</b> (pentru a invoca dialog </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Bine aÈ›i venit la Formularul de înregistrare al VirtualBox!</translation> + <translation type="obsolete">Bine aÈ›i venit la Formularul de înregistrare al VirtualBox!</translation> </message> <message> <source>&Confirm</source> @@ -6441,7 +6441,7 @@ din listă apăsând butonul <b>Existent</b> (pentru a invoca dialog </message> <message> <source>Could not perform connection handshake.</source> - <translation>Nu am putut efectua strângerea de mâini necesară conexiunii.</translation> + <translation type="obsolete">Nu am putut efectua strângerea de mâini necesară conexiunii.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6461,63 +6461,51 @@ din listă apăsând butonul <b>Existent</b> (pentru a invoca dialog </message> <message> <source>Cancel</source> - <translation>Renunță</translation> + <translation type="obsolete">Renunță</translation> </message> <message> <source>Select Country/Territory</source> - <translation>AlegeÈ›i Èšara/Zona</translation> - </message> - <message> - <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &already have a Sun Online account:</source> - <translation type="unfinished"></translation> + <translation type="obsolete">AlegeÈ›i Èšara/Zona</translation> </message> <message> <source>&E-mail:</source> - <translation>&E-mail:</translation> + <translation type="obsolete">&E-mail:</translation> </message> <message> <source>&Password:</source> - <translation>&Parolă:</translation> - </message> - <message> - <source>I &would like to create a new Sun Online account:</source> - <translation type="unfinished"></translation> + <translation type="obsolete">&Parolă:</translation> </message> <message> <source>&First Name:</source> - <translation>&Prenume:</translation> + <translation type="obsolete">&Prenume:</translation> </message> <message> <source>&Last Name:</source> - <translation>&Nume:</translation> + <translation type="obsolete">&Nume:</translation> </message> <message> <source>&Company:</source> - <translation>&Companie:</translation> + <translation type="obsolete">&Companie:</translation> </message> <message> <source>Co&untry:</source> - <translation>Èš&ara:</translation> + <translation type="obsolete">Èš&ara:</translation> </message> <message> <source>E-&mail:</source> - <translation>E-&mail:</translation> + <translation type="obsolete">E-&mail:</translation> </message> <message> <source>P&assword:</source> - <translation>Pa&rolă:</translation> + <translation type="obsolete">Pa&rolă:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>&Confirmare parolă:</translation> + <translation type="obsolete">&Confirmare parolă:</translation> </message> <message> <source>&Register</source> - <translation>&ÃŽnregistrare</translation> + <translation type="obsolete">&ÃŽnregistrare</translation> </message> </context> <context> @@ -11063,7 +11051,7 @@ makes the guest see an audio card, however every access to it will be ignored.&l <translation>&Procesoare:</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts index a51399a5f..0f6ba5306 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Sun Microsystems, Inc., Igor Gorbounov, Egor Morozov</translation> + <translation type="obsolete">Sun Microsystems, Inc., Igor Gorbounov, Egor Morozov</translation> </message> </context> <context> @@ -1403,7 +1403,7 @@ p, li { white-space: pre-wrap; } <translation>ОбновлÑÑ‚ÑŒ иконку &дока</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>&Показывать Док и Менюбар в режиме полного Ñкрана</translation> </message> </context> @@ -4641,7 +4641,7 @@ p, li { white-space: pre-wrap; } <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>Диалог региÑтрации VirtualBox</translation> + <translation type="obsolete">Диалог региÑтрации VirtualBox</translation> </message> <message> <source>&Name</source> @@ -4649,7 +4649,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Впишите Ваше полное имÑ, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñимволы латиницы.</translation> + <translation type="obsolete">Впишите Ваше полное имÑ, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñимволы латиницы.</translation> </message> <message> <source>&E-mail</source> @@ -4657,7 +4657,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Впишите дейÑтвительный Ð°Ð´Ñ€ÐµÑ Ð’Ð°ÑˆÐµÐ¹ Ñлектронной почты.</translation> + <translation type="obsolete">Впишите дейÑтвительный Ð°Ð´Ñ€ÐµÑ Ð’Ð°ÑˆÐµÐ¹ Ñлектронной почты.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -4665,11 +4665,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° VirtualBox</translation> + <translation type="obsolete">РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° VirtualBox</translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>Ðе удалоÑÑŒ уÑтановить Ñоединение.</translation> + <translation type="obsolete">Ðе удалоÑÑŒ уÑтановить Ñоединение.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -4685,63 +4685,63 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Cancel</source> - <translation>Отмена</translation> + <translation type="obsolete">Отмена</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Укажите Страну/Территорию</translation> + <translation type="obsolete">Укажите Страну/Территорию</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>ПожалуйÑта, заполните предлагаемую региÑтрационную форму. Тем Ñамым, Ð’Ñ‹ извеÑтите Ð½Ð°Ñ Ð¾ том, что пользуетеÑÑŒ нашим продуктом, а также получите возможноÑÑ‚ÑŒ быть в курÑе новоÑтей и обновлений VirtualBox (по желанию).</p><p>Впишите Ваше полное имÑ, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð´Ð»Ñ Ñтого Ñимволы латиницы, а также Ð°Ð´Ñ€ÐµÑ Ñлектронной почты в раÑположенные ниже полÑ. ПожалуйÑта, примите к Ñведению, что Ñта Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ иÑпользована только Ð´Ð»Ñ Ñбора ÑтатиÑтики о количеÑтве пользователей и Ð´Ð»Ñ Ñ€Ð°ÑÑылки новоÑтей VirtualBox. Иными Ñловами, Sun Microsystems никогда не передаÑÑ‚ данные о Ð’Ð°Ñ ÐºÐ°ÐºÐ¾Ð¹-либо третьей Ñтороне. Более подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ том, как мы будем иÑпользовать Ваши личные данные, можно найти в разделе <b>Политика конфиденциальноÑти</b> (Privacy Policy) РуководÑтва Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ VirtualBox или на Ñтранице <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> веб-Ñайта VirtualBox.</p></translation> + <translation type="obsolete"><p>ПожалуйÑта, заполните предлагаемую региÑтрационную форму. Тем Ñамым, Ð’Ñ‹ извеÑтите Ð½Ð°Ñ Ð¾ том, что пользуетеÑÑŒ нашим продуктом, а также получите возможноÑÑ‚ÑŒ быть в курÑе новоÑтей и обновлений VirtualBox (по желанию).</p><p>Впишите Ваше полное имÑ, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð´Ð»Ñ Ñтого Ñимволы латиницы, а также Ð°Ð´Ñ€ÐµÑ Ñлектронной почты в раÑположенные ниже полÑ. ПожалуйÑта, примите к Ñведению, что Ñта Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ иÑпользована только Ð´Ð»Ñ Ñбора ÑтатиÑтики о количеÑтве пользователей и Ð´Ð»Ñ Ñ€Ð°ÑÑылки новоÑтей VirtualBox. Иными Ñловами, Sun Microsystems никогда не передаÑÑ‚ данные о Ð’Ð°Ñ ÐºÐ°ÐºÐ¾Ð¹-либо третьей Ñтороне. Более подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ том, как мы будем иÑпользовать Ваши личные данные, можно найти в разделе <b>Политика конфиденциальноÑти</b> (Privacy Policy) РуководÑтва Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ VirtualBox или на Ñтранице <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> веб-Ñайта VirtualBox.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>&У Ð¼ÐµÐ½Ñ ÑƒÐ¶Ðµ имеетÑÑ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Sun Online:</translation> + <translation type="obsolete">&У Ð¼ÐµÐ½Ñ ÑƒÐ¶Ðµ имеетÑÑ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Sun Online:</translation> </message> <message> <source>&E-mail:</source> - <translation>ÐÐ´Ñ€ÐµÑ &Ñлектронной почты:</translation> + <translation type="obsolete">ÐÐ´Ñ€ÐµÑ &Ñлектронной почты:</translation> </message> <message> <source>&Password:</source> - <translation>&Пароль:</translation> + <translation type="obsolete">&Пароль:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>&Я бы хотел зарегиÑтрироватьÑÑ, Ñоздав новую учётную запиÑÑŒ Sun Online:</translation> + <translation type="obsolete">&Я бы хотел зарегиÑтрироватьÑÑ, Ñоздав новую учётную запиÑÑŒ Sun Online:</translation> </message> <message> <source>&First Name:</source> - <translation>&ИмÑ:</translation> + <translation type="obsolete">&ИмÑ:</translation> </message> <message> <source>&Last Name:</source> - <translation>&ФамилиÑ:</translation> + <translation type="obsolete">&ФамилиÑ:</translation> </message> <message> <source>&Company:</source> - <translation>&КомпаниÑ:</translation> + <translation type="obsolete">&КомпаниÑ:</translation> </message> <message> <source>Co&untry:</source> - <translation>&Страна:</translation> + <translation type="obsolete">&Страна:</translation> </message> <message> <source>E-&mail:</source> - <translation>ÐÐ´Ñ€ÐµÑ Ñ&лектронной почты:</translation> + <translation type="obsolete">ÐÐ´Ñ€ÐµÑ Ñ&лектронной почты:</translation> </message> <message> <source>P&assword:</source> - <translation>П&ароль:</translation> + <translation type="obsolete">П&ароль:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>П&одтвердить пароль:</translation> + <translation type="obsolete">П&одтвердить пароль:</translation> </message> <message> <source>&Register</source> - <translation>&РегиÑтрациÑ</translation> + <translation type="obsolete">&РегиÑтрациÑ</translation> </message> </context> <context> @@ -7209,7 +7209,7 @@ p, li { white-space: pre-wrap; } <translation>&ПроцеÑÑор(Ñ‹):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>ОпределÑет чиÑло виртуальных процеÑÑоров виртуальной машины.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts index 043d7e718..31e59ad3d 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Ivan Masár <helix84@centrum.sk>, Jozef ŘÃha <jose1711@gmail.com></translation> + <translation type="obsolete">Ivan Masár <helix84@centrum.sk>, Jozef ŘÃha <jose1711@gmail.com></translation> </message> </context> <context> @@ -1929,7 +1929,7 @@ p, li { white-space: pre-wrap; } <translation>&Náhľad v systémovej oblasti</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation type="unfinished"></translation> </message> </context> @@ -5804,7 +5804,7 @@ preskoÄiÅ¥ a pripojiÅ¥ pevné disky neskôr pomocou dialógu Nastavenia virtuá <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>RegistraÄný formulár pre VirtualBox</translation> + <translation type="obsolete">RegistraÄný formulár pre VirtualBox</translation> </message> <message> <source>&Name</source> @@ -5812,83 +5812,75 @@ preskoÄiÅ¥ a pripojiÅ¥ pevné disky neskôr pomocou dialógu Nastavenia virtuá </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Zadajte vaÅ¡e celé meno bez diakritiky.</translation> + <translation type="obsolete">Zadajte vaÅ¡e celé meno bez diakritiky.</translation> </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Zadajte vaÅ¡u platnú e-mailovú adresu.</translation> + <translation type="obsolete">Zadajte vaÅ¡u platnú e-mailovú adresu.</translation> </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Vitajte vo formulári na registráciu VirtualBoxu!</translation> + <translation type="obsolete">Vitajte vo formulári na registráciu VirtualBoxu!</translation> </message> <message> <source>Connection timed out.</source> <translation type="obsolete">ÄŒas spojenia vyprÅ¡al.</translation> </message> <message> - <source>Could not perform connection handshake.</source> - <translation type="unfinished"></translation> - </message> - <message> <source>Cancel</source> - <translation>ZruÅ¡iÅ¥</translation> + <translation type="obsolete">ZruÅ¡iÅ¥</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Vyberte krajinu/teritórium</translation> - </message> - <message> - <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation type="unfinished"></translation> + <translation type="obsolete">Vyberte krajinu/teritórium</translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>Už &som vlastnÃkom úÄtu Sun Online:</translation> + <translation type="obsolete">Už &som vlastnÃkom úÄtu Sun Online:</translation> </message> <message> <source>&E-mail:</source> - <translation>&E-mail:</translation> + <translation type="obsolete">&E-mail:</translation> </message> <message> <source>&Password:</source> - <translation>&Heslo:</translation> + <translation type="obsolete">&Heslo:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Rá&d by som si vytvoril nový úÄet u Sun Online:</translation> + <translation type="obsolete">Rá&d by som si vytvoril nový úÄet u Sun Online:</translation> </message> <message> <source>&First Name:</source> - <translation>&Krstné meno:</translation> + <translation type="obsolete">&Krstné meno:</translation> </message> <message> <source>&Last Name:</source> - <translation>&Priezvisko:</translation> + <translation type="obsolete">&Priezvisko:</translation> </message> <message> <source>&Company:</source> - <translation>&SpoloÄnosÅ¥:</translation> + <translation type="obsolete">&SpoloÄnosÅ¥:</translation> </message> <message> <source>Co&untry:</source> - <translation>Kr&ajina:</translation> + <translation type="obsolete">Kr&ajina:</translation> </message> <message> <source>E-&mail:</source> - <translation>E-&mail:</translation> + <translation type="obsolete">E-&mail:</translation> </message> <message> <source>P&assword:</source> - <translation>&Heslo:</translation> + <translation type="obsolete">&Heslo:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>&PotvrdiÅ¥ heslo:</translation> + <translation type="obsolete">&PotvrdiÅ¥ heslo:</translation> </message> <message> <source>&Register</source> - <translation>&RegistrovaÅ¥ sa</translation> + <translation type="obsolete">&RegistrovaÅ¥ sa</translation> </message> </context> <context> @@ -6648,6 +6640,8 @@ preskoÄiÅ¥ a pripojiÅ¥ pevné disky neskôr pomocou dialógu Nastavenia virtuá <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> <translation type="unfinished"> <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> </translation> </message> </context> @@ -8950,7 +8944,7 @@ preskoÄiÅ¥ a pripojiÅ¥ pevné disky neskôr pomocou dialógu Nastavenia virtuá </message> <message> <source>Port &Number:</source> - <translation type="unfinished"></translation> + <translation type="unfinished">ÄŒÃ&slo portu:</translation> </message> <message> <source>Displays the parallel port number. You can choose one of the standard parallel ports or select <b>User-defined</b> and specify port parameters manually.</source> @@ -8958,11 +8952,11 @@ preskoÄiÅ¥ a pripojiÅ¥ pevné disky neskôr pomocou dialógu Nastavenia virtuá </message> <message> <source>&IRQ:</source> - <translation type="unfinished"></translation> + <translation type="unfinished">&IRQ:</translation> </message> <message> <source>I/O Po&rt:</source> - <translation type="unfinished"></translation> + <translation type="unfinished">I/O Po&rt:</translation> </message> <message> <source>Port &Path:</source> @@ -9281,7 +9275,7 @@ preskoÄiÅ¥ a pripojiÅ¥ pevné disky neskôr pomocou dialógu Nastavenia virtuá <translation>P&rocesor(y):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Ovláda poÄet virtuálnych CPU vo virtuálnom stroji.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts index 4260a2d5c..ec7817db1 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS><TS version="1.1" language="sr_YU"> -<defaultcodec></defaultcodec> +<!DOCTYPE TS> +<TS version="2.0" language="sr_YU"> <context> <name>@@@</name> <message> @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Оzzii.translate@gmail.com</translation> + <translation type="obsolete">Оzzii.translate@gmail.com</translation> </message> </context> <context> @@ -1397,7 +1397,7 @@ p, li { white-space: pre-wrap; } <translation>Dock икона реални преглед</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>Ðуто покажи Dock траку у пуном-екрану</translation> </message> </context> @@ -4631,7 +4631,7 @@ p, li { white-space: pre-wrap; } <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>РегиÑтровање VirtualBox-а</translation> + <translation type="obsolete">РегиÑтровање VirtualBox-а</translation> </message> <message> <source>&Name</source> @@ -4639,7 +4639,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Унети ваше име кориÑтећи латинÑка Ñлова.</translation> + <translation type="obsolete">Унети ваше име кориÑтећи латинÑка Ñлова.</translation> </message> <message> <source>&E-mail</source> @@ -4647,7 +4647,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Унети ваш имејл. Унети важечу адреÑу.</translation> + <translation type="obsolete">Унети ваш имејл. Унети важечу адреÑу.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -4655,11 +4655,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Добродошли у формулар региÑтровања VirtualBox -а!</translation> + <translation type="obsolete">Добродошли у формулар региÑтровања VirtualBox -а!</translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>ÐеуÑпешно пријављивање везе.</translation> + <translation type="obsolete">ÐеуÑпешно пријављивање везе.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -4675,63 +4675,63 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Cancel</source> - <translation>Поништи</translation> + <translation type="obsolete">Поништи</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Одабрати земљу/територију</translation> + <translation type="obsolete">Одабрати земљу/територију</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Молимо Ð²Ð°Ñ Ð´Ð° попунити овај формулар да би знали да кориÑтите VirtualBox и, необавезно, да будете информиÑани о ажурирања VirtualBox-а.</p><p>Унети Ñамо латинÑке карактере. Sun Microsystems кориÑти ове информације Ñамо за ÑтатиÑтике и да вам пошаље VirtualBox новоÑти. Sun Microsystems неће никада попуÑтити Ваше податке другима. Детаљи о употреби личних информацијама може Ñе наћи у <b>Политика приватноÑти</b> руковника или на <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Политика приватноÑти</a> Ñајта.</p></translation> + <translation type="obsolete"><p>Молимо Ð²Ð°Ñ Ð´Ð° попунити овај формулар да би знали да кориÑтите VirtualBox и, необавезно, да будете информиÑани о ажурирања VirtualBox-а.</p><p>Унети Ñамо латинÑке карактере. Sun Microsystems кориÑти ове информације Ñамо за ÑтатиÑтике и да вам пошаље VirtualBox новоÑти. Sun Microsystems неће никада попуÑтити Ваше податке другима. Детаљи о употреби личних информацијама може Ñе наћи у <b>Политика приватноÑти</b> руковника или на <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Политика приватноÑти</a> Ñајта.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>Већ имам Sun Online рачун:</translation> + <translation type="obsolete">Већ имам Sun Online рачун:</translation> </message> <message> <source>&E-mail:</source> - <translation>Имејл</translation> + <translation type="obsolete">Имејл</translation> </message> <message> <source>&Password:</source> - <translation>Лозинка:</translation> + <translation type="obsolete">Лозинка:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Желим да креирам нов Sun Online рачун:</translation> + <translation type="obsolete">Желим да креирам нов Sun Online рачун:</translation> </message> <message> <source>&First Name:</source> - <translation>Име:</translation> + <translation type="obsolete">Име:</translation> </message> <message> <source>&Last Name:</source> - <translation>Презиме:</translation> + <translation type="obsolete">Презиме:</translation> </message> <message> <source>&Company:</source> - <translation>Фирма:</translation> + <translation type="obsolete">Фирма:</translation> </message> <message> <source>Co&untry:</source> - <translation>Земља:</translation> + <translation type="obsolete">Земља:</translation> </message> <message> <source>E-&mail:</source> - <translation>Имејл:</translation> + <translation type="obsolete">Имејл:</translation> </message> <message> <source>P&assword:</source> - <translation>Лозинка:</translation> + <translation type="obsolete">Лозинка:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Потврда лозинке:</translation> + <translation type="obsolete">Потврда лозинке:</translation> </message> <message> <source>&Register</source> - <translation>РегиÑтруј</translation> + <translation type="obsolete">РегиÑтруј</translation> </message> </context> <context> @@ -7078,7 +7078,7 @@ p, li { white-space: pre-wrap; } <translation>ПроцеÑор(и):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Контролише број виртуелних ЦПУ-а у виртуелној машини.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts index cef400796..609d62124 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Daniel Nylander.</translation> + <translation type="obsolete">Daniel Nylander.</translation> </message> </context> <context> @@ -1665,7 +1665,7 @@ p, li { white-space: pre-wrap; } <translation>Realtidsvisning för &dockningsikon</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>V&isa automatiskt docka och menyrad i helskärm</translation> </message> </context> @@ -5116,7 +5116,7 @@ p, li { white-space: pre-wrap; } <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>Registreringsdialog för VirtualBox</translation> + <translation type="obsolete">Registreringsdialog för VirtualBox</translation> </message> <message> <source>&Name</source> @@ -5124,7 +5124,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Ange ditt fullständiga namn med latinska bokstäver.</translation> + <translation type="obsolete">Ange ditt fullständiga namn med latinska bokstäver.</translation> </message> <message> <source>&E-mail</source> @@ -5132,7 +5132,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Ange din giltiga e-postadress.</translation> + <translation type="obsolete">Ange din giltiga e-postadress.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -5140,7 +5140,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Välkommen till registreringsformuläret för VirtualBox!</translation> + <translation type="obsolete">Välkommen till registreringsformuläret för VirtualBox!</translation> </message> <message> <source>Connection timed out.</source> @@ -5152,7 +5152,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Could not perform connection handshake.</source> - <translation>Kunde inte genomföra anslutningshandskakning.</translation> + <translation type="obsolete">Kunde inte genomföra anslutningshandskakning.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -5168,63 +5168,63 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Cancel</source> - <translation>Avbryt</translation> + <translation type="obsolete">Avbryt</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Välj land/region</translation> + <translation type="obsolete">Välj land/region</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Fyll i detta registreringsformulär för att informera oss om att du använder VirtualBox och, upp till dig själv, för att hÃ¥lla dig informerad om nyheter och uppdateringar för VirtualBox.</p><p>Observera att Sun Microsystems endast kommer att använda denna information för att samla in statistik om användningen av produkten och för att skicka ut nyhetsbrev om VirtualBox. Sun Microsystems kommer aldrig att skicka vidare din information till tredje part. Detaljerad information om hur vi använder din personliga information kan hittas i <b>Privacy Policy</b>-avsnittet i VirtualBox-handboken eller pÃ¥ sidan <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> pÃ¥ VirtualBox webbplats.</p></translation> + <translation type="obsolete"><p>Fyll i detta registreringsformulär för att informera oss om att du använder VirtualBox och, upp till dig själv, för att hÃ¥lla dig informerad om nyheter och uppdateringar för VirtualBox.</p><p>Observera att Sun Microsystems endast kommer att använda denna information för att samla in statistik om användningen av produkten och för att skicka ut nyhetsbrev om VirtualBox. Sun Microsystems kommer aldrig att skicka vidare din information till tredje part. Detaljerad information om hur vi använder din personliga information kan hittas i <b>Privacy Policy</b>-avsnittet i VirtualBox-handboken eller pÃ¥ sidan <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> pÃ¥ VirtualBox webbplats.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>Jag &har ett Sun Online-konto redan:</translation> + <translation type="obsolete">Jag &har ett Sun Online-konto redan:</translation> </message> <message> <source>&E-mail:</source> - <translation>&E-post:</translation> + <translation type="obsolete">&E-post:</translation> </message> <message> <source>&Password:</source> - <translation>&Lösenord:</translation> + <translation type="obsolete">&Lösenord:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Jag &vill registrera och skapa ett nytt Sun Online-konto:</translation> + <translation type="obsolete">Jag &vill registrera och skapa ett nytt Sun Online-konto:</translation> </message> <message> <source>&First Name:</source> - <translation>&Förnamn:</translation> + <translation type="obsolete">&Förnamn:</translation> </message> <message> <source>&Last Name:</source> - <translation>&Efternamn:</translation> + <translation type="obsolete">&Efternamn:</translation> </message> <message> <source>&Company:</source> - <translation>F&öretag:</translation> + <translation type="obsolete">F&öretag:</translation> </message> <message> <source>Co&untry:</source> - <translation>La&nd:</translation> + <translation type="obsolete">La&nd:</translation> </message> <message> <source>E-&mail:</source> - <translation>E-&post:</translation> + <translation type="obsolete">E-&post:</translation> </message> <message> <source>P&assword:</source> - <translation>&Lösenord:</translation> + <translation type="obsolete">&Lösenord:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>&Bekräfta lösenordet:</translation> + <translation type="obsolete">&Bekräfta lösenordet:</translation> </message> <message> <source>&Register</source> - <translation>&Registrera</translation> + <translation type="obsolete">&Registrera</translation> </message> </context> <context> @@ -7772,7 +7772,7 @@ serial ports</comment> <translation>&Processor(er):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Kontrollerar antalet virtuella processorer i den virtuella maskinen.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts index a54b0464c..77184a8d9 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Serdar SOYTETÄ°R <tulliana@gmail.com> .</translation> + <translation type="obsolete">Serdar SOYTETÄ°R <tulliana@gmail.com> .</translation> </message> </context> <context> @@ -1914,7 +1914,7 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation type="unfinished"></translation> </message> </context> @@ -3215,7 +3215,7 @@ p, li { white-space: pre-wrap; } <message> <source><nobr>%1 MB</nobr></source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><nobr>%4 MB</nobr> {1 ?}</translation> </message> <message> <source>Processor(s)</source> @@ -5882,7 +5882,7 @@ Bu Sanal Makinenin fare iÅŸaretçinizi ve klavyenizi <b>yakalamasına</ <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>VirtualBox Kayıt Formu</translation> + <translation type="obsolete">VirtualBox Kayıt Formu</translation> </message> <message> <source><p>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.</p><p>Enter your full name using Latin characters and your e-mail address to the fields below. Please note that innotek will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, innotek will never pass your data to third parties. Detailed information about how we use your personal data can be found in the <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -5894,7 +5894,7 @@ Bu Sanal Makinenin fare iÅŸaretçinizi ve klavyenizi <b>yakalamasına</ </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Latin harflerini kullanarak tam adınızı girin.</translation> + <translation type="obsolete">Latin harflerini kullanarak tam adınızı girin.</translation> </message> <message> <source>&E-mail</source> @@ -5902,7 +5902,7 @@ Bu Sanal Makinenin fare iÅŸaretçinizi ve klavyenizi <b>yakalamasına</ </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Geçerli e-posta adresinizi girin.</translation> + <translation type="obsolete">Geçerli e-posta adresinizi girin.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -5914,7 +5914,7 @@ Bu Sanal Makinenin fare iÅŸaretçinizi ve klavyenizi <b>yakalamasına</ </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>VirtualBox Kayıt Formununa HoÅŸgeldiniz!</translation> + <translation type="obsolete">VirtualBox Kayıt Formununa HoÅŸgeldiniz!</translation> </message> <message> <source>&Confirm</source> @@ -5930,7 +5930,7 @@ Bu Sanal Makinenin fare iÅŸaretçinizi ve klavyenizi <b>yakalamasına</ </message> <message> <source>Could not perform connection handshake.</source> - <translation>BaÄŸlantı anlaÅŸması yapılamadı.</translation> + <translation type="obsolete">BaÄŸlantı anlaÅŸması yapılamadı.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -5946,63 +5946,7 @@ Bu Sanal Makinenin fare iÅŸaretçinizi ve klavyenizi <b>yakalamasına</ </message> <message> <source>Cancel</source> - <translation>Ä°ptal</translation> - </message> - <message> - <source>Select Country/Territory</source> - <translation type="unfinished"></translation> - </message> - <message> - <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &already have a Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&E-mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &would like to create a new Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&First Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Last Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Company:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&untry:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>E-&mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>P&assword:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&nfirm Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Register</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Ä°ptal</translation> </message> </context> <context> @@ -9677,7 +9621,7 @@ makes the guest see an audio card, however every access to it will be ignored.&l <translation type="unfinished"></translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts index 3a07e0e7a..00e800e04 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Daniel Korostil.</translation> + <translation type="obsolete">Daniel Korostil.</translation> </message> </context> <context> @@ -1398,6 +1398,10 @@ p, li { white-space: pre-wrap; } <source>&Dock Icon Realtime Preview</source> <translation>&Попередній переглÑд піктограми реального чаÑу</translation> </message> + <message> + <source>&Auto show Dock && Menubar in fullscreen</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>VBoxGLSettingsInput</name> @@ -2869,6 +2873,58 @@ p, li { white-space: pre-wrap; } <comment>medium</comment> <translation>Цей базовий жорÑткий диÑк не напрÑму під'єднано, викориÑтовуючи такі обчиÑÐ»ÐµÐ½Ð½Ñ Ð¶Ð¾Ñ€Ñткого диÑка:</translation> </message> + <message numerus="yes"> + <source>%n year(s)</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source>%n month(s)</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source>%n day(s)</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source>%n hour(s)</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source>%n minute(s)</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source>%n second(s)</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message> + <source>(CD/DVD)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>VBoxGlobalSettings</name> @@ -4347,7 +4403,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source><p>By deleting a snapshot, the state information stored in the snapshot will be thrown away, and disk data spread over several image files that VirtualBox has created together with the snapshot will be merged into one file. This can be a lengthy process, and the information in the snapshot cannot be recovered.</p></p>Are you sure you want to delete the selected snapshot <b>%1</b>?</p></source> - <translation><p>Вилучивши зріз, Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ Ñтан, Ñкий збережено в зрізі, буде відкинуто, Ñ– дані диÑка розподілено декілька файлів зображеннÑ, Ñкі VirtualBox Ñтворив разом зі зрізом, буде об'єднано в один файл. Це може бути тривалим процеÑом, та інформацію в зрізі неможливо відновити.</p></p>Ви впевнені, що бажаєте вилучити вибраний зріз <b>%1</b>?</p></translation> + <translation type="obsolete"><p>Вилучивши зріз, Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ Ñтан, Ñкий збережено в зрізі, буде відкинуто, Ñ– дані диÑка розподілено декілька файлів зображеннÑ, Ñкі VirtualBox Ñтворив разом зі зрізом, буде об'єднано в один файл. Це може бути тривалим процеÑом, та інформацію в зрізі неможливо відновити.</p></p>Ви впевнені, що бажаєте вилучити вибраний зріз <b>%1</b>?</p></translation> </message> <message> <source>Delete</source> @@ -4464,6 +4520,19 @@ p, li { white-space: pre-wrap; } <comment>failed to close ...</comment> <translation>приÑтрій диÑкети</translation> </message> + <message> + <source><p>Deleting the snapshot will cause the state information saved in it to be lost, and disk data spread over several image files that VirtualBox has created together with the snapshot will be merged into one file. This can be a lengthy process, and the information in the snapshot cannot be recovered.</p></p>Are you sure you want to delete the selected snapshot <b>%1</b>?</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <source><p>Are you sure you want to delete the CD/DVD-ROM device?</p><p>You will not be able to mount any CDs or ISO images or install the Guest Additions without it!</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <source>&Remove</source> + <comment>medium</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>VBoxProgressDialog</name> @@ -4473,55 +4542,55 @@ p, li { white-space: pre-wrap; } </message> <message> <source>%1 days, %2 hours remaining</source> - <translation>залишилоÑÑŒ %1 днів, %2 годин</translation> + <translation type="obsolete">залишилоÑÑŒ %1 днів, %2 годин</translation> </message> <message> <source>%1 days, %2 minutes remaining</source> - <translation>залишилоÑÑŒ %1 днів, %2 хвилин</translation> + <translation type="obsolete">залишилоÑÑŒ %1 днів, %2 хвилин</translation> </message> <message> <source>%1 days remaining</source> - <translation>залишилоÑÑŒ %1 днів</translation> + <translation type="obsolete">залишилоÑÑŒ %1 днів</translation> </message> <message> <source>1 day, %1 hours remaining</source> - <translation>залишивÑÑ 1 день, %1 годин</translation> + <translation type="obsolete">залишивÑÑ 1 день, %1 годин</translation> </message> <message> <source>1 day, %1 minutes remaining</source> - <translation>залишивÑÑ 1 день, %1 хвилин</translation> + <translation type="obsolete">залишивÑÑ 1 день, %1 хвилин</translation> </message> <message> <source>1 day remaining</source> - <translation>залишивÑÑ 1 день</translation> + <translation type="obsolete">залишивÑÑ 1 день</translation> </message> <message> <source>%1 hours, %2 minutes remaining</source> - <translation>залишилоÑÑŒ %1 годин, %2 хвилин</translation> + <translation type="obsolete">залишилоÑÑŒ %1 годин, %2 хвилин</translation> </message> <message> <source>1 hour, %1 minutes remaining</source> - <translation>залишилаÑÑŒ 1 година, %1 хвилин</translation> + <translation type="obsolete">залишилаÑÑŒ 1 година, %1 хвилин</translation> </message> <message> <source>1 hour remaining</source> - <translation>залишилаÑÑŒ 1 година</translation> + <translation type="obsolete">залишилаÑÑŒ 1 година</translation> </message> <message> <source>%1 minutes remaining</source> - <translation>залишилоÑÑŒ %1 хвилин</translation> + <translation type="obsolete">залишилоÑÑŒ %1 хвилин</translation> </message> <message> <source>1 minute, %2 seconds remaining</source> - <translation>залишилаÑÑŒ 1 хвилина, %2 Ñекунд</translation> + <translation type="obsolete">залишилаÑÑŒ 1 хвилина, %2 Ñекунд</translation> </message> <message> <source>1 minute remaining</source> - <translation>залишилаÑÑŒ 1 хвилина</translation> + <translation type="obsolete">залишилаÑÑŒ 1 хвилина</translation> </message> <message> <source>%1 seconds remaining</source> - <translation>залишилоÑÑŒ %1 Ñекунд</translation> + <translation type="obsolete">залишилоÑÑŒ %1 Ñекунд</translation> </message> <message> <source>A few seconds remaining</source> @@ -4539,12 +4608,22 @@ p, li { white-space: pre-wrap; } <source>Cancel the current operation</source> <translation>СкаÑувати поточну операцію</translation> </message> + <message> + <source>%1, %2 remaining</source> + <comment>You may wish to translate this more like "Time remaining: %1, %2"</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 remaining</source> + <comment>You may wish to translate this more like "Time remaining: %1"</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>Діалог реєÑтрації VirtualBox</translation> + <translation type="obsolete">Діалог реєÑтрації VirtualBox</translation> </message> <message> <source>&Name</source> @@ -4552,7 +4631,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Введіть ваше повне ім'Ñ, викориÑтовуючи лише латинÑькі Ñимволи.</translation> + <translation type="obsolete">Введіть ваше повне ім'Ñ, викориÑтовуючи лише латинÑькі Ñимволи.</translation> </message> <message> <source>&E-mail</source> @@ -4560,7 +4639,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Введіть дійÑну адреÑу вашої електронної пошти.</translation> + <translation type="obsolete">Введіть дійÑну адреÑу вашої електронної пошти.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -4568,11 +4647,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>ЛаÑкаво проÑимо до реєÑтраційної форми VirtualBox!</translation> + <translation type="obsolete">ЛаÑкаво проÑимо до реєÑтраційної форми VirtualBox!</translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>Ðе вдалоÑÑŒ здійÑнити вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð²'Ñзку.</translation> + <translation type="obsolete">Ðе вдалоÑÑŒ здійÑнити вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð²'Ñзку.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -4588,63 +4667,63 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Cancel</source> - <translation>СкаÑувати</translation> + <translation type="obsolete">СкаÑувати</translation> </message> <message> <source>Select Country/Territory</source> - <translation>Виберіть країну/територію</translation> + <translation type="obsolete">Виберіть країну/територію</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>Будь лаÑка, заповніть цю реєÑтраційну форму, щоб ми знали, що ви викориÑтуєте VirtualBox, Ñ–, за вашим бажаннÑм, ми триматимемо Ð²Ð°Ñ Ñƒ курÑÑ– вÑÑ–Ñ… новин Ñ– оновлень щодо VirtualBox.</p><p>Будь лаÑка, викориÑтовуйте латинÑькі Ñимволи Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¿Ð¾Ð»Ñ–Ð² нижче. Будь лаÑка, майте на увазі, Sun Microsystems викориÑтовуватиме цю інформацію лише Ð´Ð»Ñ Ð·Ð±Ð¾Ñ€Ñƒ ÑтатиÑтичної інформації та розÑилки новин. ВлаÑне, Sun Microsystems ніколи не надаÑÑ‚ÑŒ ваших даних третій оÑобі. Детальна Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ викориÑÑ‚Ð°Ð½Ð½Ñ Ð²Ð°ÑˆÐ¸Ñ… оÑобиÑтих даних можна знайти в довідці VirtualBox у розділі <b>Privacy Policy</b> або на <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> Ñторінці Ñайта VirtualBox.</p></translation> + <translation type="obsolete"><p>Будь лаÑка, заповніть цю реєÑтраційну форму, щоб ми знали, що ви викориÑтуєте VirtualBox, Ñ–, за вашим бажаннÑм, ми триматимемо Ð²Ð°Ñ Ñƒ курÑÑ– вÑÑ–Ñ… новин Ñ– оновлень щодо VirtualBox.</p><p>Будь лаÑка, викориÑтовуйте латинÑькі Ñимволи Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¿Ð¾Ð»Ñ–Ð² нижче. Будь лаÑка, майте на увазі, Sun Microsystems викориÑтовуватиме цю інформацію лише Ð´Ð»Ñ Ð·Ð±Ð¾Ñ€Ñƒ ÑтатиÑтичної інформації та розÑилки новин. ВлаÑне, Sun Microsystems ніколи не надаÑÑ‚ÑŒ ваших даних третій оÑобі. Детальна Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ викориÑÑ‚Ð°Ð½Ð½Ñ Ð²Ð°ÑˆÐ¸Ñ… оÑобиÑтих даних можна знайти в довідці VirtualBox у розділі <b>Privacy Policy</b> або на <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> Ñторінці Ñайта VirtualBox.</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>&Я вже маю зареєÑтрований акаунт у Sun:</translation> + <translation type="obsolete">&Я вже маю зареєÑтрований акаунт у Sun:</translation> </message> <message> <source>&E-mail:</source> - <translation>&Електронна пошта:</translation> + <translation type="obsolete">&Електронна пошта:</translation> </message> <message> <source>&Password:</source> - <translation>&Пароль:</translation> + <translation type="obsolete">&Пароль:</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>Я &бажаю зареєÑтруватиÑÑŒ, Ñтворивши акаунт Sun:</translation> + <translation type="obsolete">Я &бажаю зареєÑтруватиÑÑŒ, Ñтворивши акаунт Sun:</translation> </message> <message> <source>&First Name:</source> - <translation>&Ім'Ñ:</translation> + <translation type="obsolete">&Ім'Ñ:</translation> </message> <message> <source>&Last Name:</source> - <translation>&Прізвище:</translation> + <translation type="obsolete">&Прізвище:</translation> </message> <message> <source>&Company:</source> - <translation>&Фірма:</translation> + <translation type="obsolete">&Фірма:</translation> </message> <message> <source>Co&untry:</source> - <translation>&Країна:</translation> + <translation type="obsolete">&Країна:</translation> </message> <message> <source>E-&mail:</source> - <translation>&Електронна пошта:</translation> + <translation type="obsolete">&Електронна пошта:</translation> </message> <message> <source>P&assword:</source> - <translation>П&ароль:</translation> + <translation type="obsolete">П&ароль:</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>Під&Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ:</translation> + <translation type="obsolete">Під&Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ:</translation> </message> <message> <source>&Register</source> - <translation>&ЗареєÑтрувати</translation> + <translation type="obsolete">&ЗареєÑтрувати</translation> </message> </context> <context> @@ -5028,7 +5107,7 @@ p, li { white-space: pre-wrap; } </message> <message numerus="yes"> <source> (%n day(s) ago)</source> - <translation> + <translation type="obsolete"> <numerusform> (%n день тому)</numerusform> <numerusform> (%n дні тому)</numerusform> <numerusform> (%n днів тому)</numerusform> @@ -5036,7 +5115,7 @@ p, li { white-space: pre-wrap; } </message> <message numerus="yes"> <source> (%n hour(s) ago)</source> - <translation> + <translation type="obsolete"> <numerusform> (%n година тому)</numerusform> <numerusform> (%n години тому)</numerusform> <numerusform> (%n годин тому)</numerusform> @@ -5044,7 +5123,7 @@ p, li { white-space: pre-wrap; } </message> <message numerus="yes"> <source> (%n minute(s) ago)</source> - <translation> + <translation type="obsolete"> <numerusform> (%n хвилина тому)</numerusform> <numerusform> (%n хвилини тому)</numerusform> <numerusform> (%n хвилин тому)</numerusform> @@ -5052,7 +5131,7 @@ p, li { white-space: pre-wrap; } </message> <message numerus="yes"> <source> (%n second(s) ago)</source> - <translation> + <translation type="obsolete"> <numerusform> (%n Ñекунда тому)</numerusform> <numerusform> (%n Ñекунди тому)</numerusform> <numerusform> (%n Ñекунд тому)</numerusform> @@ -5074,6 +5153,10 @@ p, li { white-space: pre-wrap; } <source>Delete the selected snapshot of the virtual machine</source> <translation>Вилучити вибраний зріз віртуальної машини</translation> </message> + <message> + <source> (%1 ago)</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>VBoxSwitchMenu</name> @@ -5100,6 +5183,14 @@ p, li { white-space: pre-wrap; } <source>Snapshot &Description</source> <translation>&ÐžÐ¿Ð¸Ñ Ð·Ñ€Ñ–Ð·Ñƒ</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> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> </context> <context> <name>VBoxTextEditor</name> @@ -6993,7 +7084,7 @@ p, li { white-space: pre-wrap; } <translation>&ПроцеÑор(и):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>Контролює чиÑлом віртуальних процеÑорів у віртуальній машині.</translation> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts index 899ce0246..6264c94e0 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts @@ -23,11 +23,6 @@ <comment>Language country name, in English (empty if native country name is empty)</comment> <translation type="unfinished"></translation> </message> - <message> - <source>Sun Microsystems, Inc.</source> - <comment>Comma-separated list of translators</comment> - <translation type="unfinished"></translation> - </message> </context> <context> <name>QApplication</name> @@ -1190,7 +1185,7 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation type="unfinished"></translation> </message> </context> @@ -3996,89 +3991,6 @@ p, li { white-space: pre-wrap; } </message> </context> <context> - <name>VBoxRegistrationDlg</name> - <message> - <source>VirtualBox Registration Dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Enter your full name using Latin characters.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Enter your e-mail address. Please use a valid address here.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Welcome to the VirtualBox Registration Form!</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Could not perform connection handshake.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Select Country/Territory</source> - <translation type="unfinished"></translation> - </message> - <message> - <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &already have a Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&E-mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &would like to create a new Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&First Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Last Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Company:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&untry:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>E-&mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>P&assword:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&nfirm Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Register</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>VBoxSFDialog</name> <message> <source>Shared Folders</source> @@ -5824,7 +5736,7 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts index 7aa44031e..219092975 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>Victor Wang</translation> + <translation type="obsolete">Victor Wang</translation> </message> </context> <context> @@ -2115,7 +2115,7 @@ p, li { white-space: pre-wrap; } <translation>æ‰˜ç›˜å›¾æ ‡å®žæ—¶é¢„è§ˆ(&D)</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation type="unfinished"></translation> </message> </context> @@ -3429,7 +3429,7 @@ p, li { white-space: pre-wrap; } <message> <source><nobr>%1 MB</nobr></source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation type="unfinished"><nobr>%4 MB</nobr> {1 ?}</translation> </message> <message> <source>Processor(s)</source> @@ -6328,7 +6328,7 @@ step and attach hard disks later using the VM Settings dialog.</p></source <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>VirtualBox Registration Dialog</translation> + <translation type="obsolete">VirtualBox Registration Dialog</translation> </message> <message> <source>&Name</source> @@ -6336,7 +6336,7 @@ step and attach hard disks later using the VM Settings dialog.</p></source </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>Enter your full name using Latin characters.</translation> + <translation type="obsolete">Enter your full name using Latin characters.</translation> </message> <message> <source>&E-mail</source> @@ -6344,7 +6344,7 @@ step and attach hard disks later using the VM Settings dialog.</p></source </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>Enter your e-mail address. Please use a valid address here.</translation> + <translation type="obsolete">Enter your e-mail address. Please use a valid address here.</translation> </message> <message> <source>&Please do not use this information to contact me</source> @@ -6352,7 +6352,7 @@ step and attach hard disks later using the VM Settings dialog.</p></source </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>Welcome to the VirtualBox Registration Form!</translation> + <translation type="obsolete">Welcome to the VirtualBox Registration Form!</translation> </message> <message> <source>&Confirm</source> @@ -6368,7 +6368,7 @@ step and attach hard disks later using the VM Settings dialog.</p></source </message> <message> <source>Could not perform connection handshake.</source> - <translation>Could not perform connection handshake.</translation> + <translation type="obsolete">Could not perform connection handshake.</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> @@ -6384,63 +6384,7 @@ step and attach hard disks later using the VM Settings dialog.</p></source </message> <message> <source>Cancel</source> - <translation>å–消</translation> - </message> - <message> - <source>Select Country/Territory</source> - <translation type="unfinished"></translation> - </message> - <message> - <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &already have a Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&E-mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>I &would like to create a new Sun Online account:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&First Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Last Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Company:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&untry:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>E-&mail:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>P&assword:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Co&nfirm Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>&Register</source> - <translation type="unfinished"></translation> + <translation type="obsolete">å–消</translation> </message> </context> <context> @@ -10938,7 +10882,7 @@ makes the guest see an audio card, however every access to it will be ignored.&l <translation type="unfinished"></translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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> </message> <message> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts index 9f4b945f3..d0f074d99 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts @@ -26,7 +26,7 @@ <message> <source>Sun Microsystems, Inc.</source> <comment>Comma-separated list of translators</comment> - <translation>alan@stable</translation> + <translation type="obsolete">alan@stable</translation> </message> </context> <context> @@ -45,7 +45,7 @@ </message> <message> <source><html><b>%1 (rc=%2)</b><br/><br/></source> - <translation type="unfinished"></translation> + <translation><html><b>%1 (rc=%2)</b><br/><br/></translation> </message> <message> <source>Please try reinstalling VirtualBox.</source> @@ -158,127 +158,127 @@ </message> <message> <source>Alt Gr</source> - <translation type="unfinished"></translation> + <translation>Alt Gr</translation> </message> <message> <source>Caps Lock</source> - <translation type="unfinished"></translation> + <translation>Caps Lock</translation> </message> <message> <source>Scroll Lock</source> - <translation type="unfinished"></translation> + <translation>Scroll Lock</translation> </message> <message> <source><key_%1></source> - <translation type="unfinished"></translation> + <translation><key_%1></translation> </message> <message> <source>Pause</source> - <translation type="unfinished"></translation> + <translation>Pause</translation> </message> <message> <source>Print Screen</source> - <translation type="unfinished"></translation> + <translation>Print Screen</translation> </message> <message> <source>F1</source> - <translation type="unfinished"></translation> + <translation>F1</translation> </message> <message> <source>F2</source> - <translation type="unfinished"></translation> + <translation>F2</translation> </message> <message> <source>F3</source> - <translation type="unfinished"></translation> + <translation>F3</translation> </message> <message> <source>F4</source> - <translation type="unfinished"></translation> + <translation>F4</translation> </message> <message> <source>F5</source> - <translation type="unfinished"></translation> + <translation>F5</translation> </message> <message> <source>F6</source> - <translation type="unfinished"></translation> + <translation>F6</translation> </message> <message> <source>F7</source> - <translation type="unfinished"></translation> + <translation>F7</translation> </message> <message> <source>F8</source> - <translation type="unfinished"></translation> + <translation>F8</translation> </message> <message> <source>F9</source> - <translation type="unfinished"></translation> + <translation>F9</translation> </message> <message> <source>F10</source> - <translation type="unfinished"></translation> + <translation>F10</translation> </message> <message> <source>F11</source> - <translation type="unfinished"></translation> + <translation>F11</translation> </message> <message> <source>F12</source> - <translation type="unfinished"></translation> + <translation>F12</translation> </message> <message> <source>F13</source> - <translation type="unfinished"></translation> + <translation>F13</translation> </message> <message> <source>F14</source> - <translation type="unfinished"></translation> + <translation>F14</translation> </message> <message> <source>F15</source> - <translation type="unfinished"></translation> + <translation>F15</translation> </message> <message> <source>F16</source> - <translation type="unfinished"></translation> + <translation>F16</translation> </message> <message> <source>F17</source> - <translation type="unfinished"></translation> + <translation>F17</translation> </message> <message> <source>F18</source> - <translation type="unfinished"></translation> + <translation>F18</translation> </message> <message> <source>F19</source> - <translation type="unfinished"></translation> + <translation>F19</translation> </message> <message> <source>F20</source> - <translation type="unfinished"></translation> + <translation>F20</translation> </message> <message> <source>F21</source> - <translation type="unfinished"></translation> + <translation>F21</translation> </message> <message> <source>F22</source> - <translation type="unfinished"></translation> + <translation>F22</translation> </message> <message> <source>F23</source> - <translation type="unfinished"></translation> + <translation>F23</translation> </message> <message> <source>F24</source> - <translation type="unfinished"></translation> + <translation>F24</translation> </message> <message> <source>Num Lock</source> - <translation type="unfinished"></translation> + <translation>Num Lock</translation> </message> <message> <source>Forward</source> @@ -437,15 +437,15 @@ </message> <message> <source>Guest OS Type</source> - <translation>客體 OS é¡žåž‹</translation> + <translation>客體作æ¥ç³»çµ±é¡žåž‹</translation> </message> <message> <source>CPU</source> - <translation type="unfinished"></translation> + <translation>CPU</translation> </message> <message> <source>RAM</source> - <translation type="unfinished"></translation> + <translation>RAM</translation> </message> <message> <source>Hard Disk Controller (IDE)</source> @@ -461,7 +461,7 @@ </message> <message> <source>DVD</source> - <translation type="unfinished"></translation> + <translation>DVD</translation> </message> <message> <source>Floppy</source> @@ -489,7 +489,7 @@ </message> <message> <source>MB</source> - <translation type="unfinished"></translation> + <translation>MB</translation> </message> <message> <source><b>Original Value:</b> %1</source> @@ -812,7 +812,7 @@ </message> <message> <source>Sun VirtualBox</source> - <translation type="unfinished"></translation> + <translation>Sun VirtualBox</translation> </message> <message> <source>Indicates the status of the hardware virtualization features used by this virtual machine:<br><nobr><b>%1:</b>&nbsp;%2</nobr><br><nobr><b>%3:</b>&nbsp;%4</nobr></source> @@ -822,7 +822,7 @@ <message> <source><br><nobr><b>%1:</b>&nbsp;%2</nobr></source> <comment>Virtualization Stuff LED</comment> - <translation type="unfinished"></translation> + <translation><br><nobr><b>%1:</b>&nbsp;%2</nobr></translation> </message> <message> <source> EXPERIMENTAL build %1r%2 - %3</source> @@ -1040,11 +1040,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Sun &Cloud</source> - <translation type="unfinished"></translation> + <translation>Sun &Cloud</translation> </message> <message> <source>&Simple Storage System (S3)</source> - <translation>簡單儲å˜ç³»çµ± (S3)(&S)</translation> + <translation>ç°¡å–®å˜æ”¾ç³»çµ± (S3)(&S)</translation> </message> <message> <source>&Username:</source> @@ -1142,11 +1142,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>USB</source> - <translation type="unfinished"></translation> + <translation>USB</translation> </message> <message> <source>VirtualBox - %1</source> - <translation type="unfinished"></translation> + <translation>VirtualBox - %1</translation> </message> <message> <source>Network</source> @@ -1196,7 +1196,7 @@ p, li { white-space: pre-wrap; } <translation>åœé§åœ–示å³æ™‚é 覽(&D)</translation> </message> <message> - <source>&Auto show Dock && Menubar in fullscreen</source> + <source>&Auto show Dock and Menubar in fullscreen</source> <translation>在全螢幕自動顯示åœé§ && 功能表列(&A)</translation> </message> </context> @@ -1259,7 +1259,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Id</source> - <translation type="unfinished"></translation> + <translation>Id</translation> </message> <message> <source>Language</source> @@ -1620,12 +1620,12 @@ p, li { white-space: pre-wrap; } <message> <source>ACPI</source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation>ACPI</translation> </message> <message> <source>IO APIC</source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation>IO APIC</translation> </message> <message> <source>Enabled</source> @@ -1765,7 +1765,7 @@ p, li { white-space: pre-wrap; } <message> <source>CD/DVD-ROM</source> <comment>DeviceType</comment> - <translation type="unfinished"></translation> + <translation>CD/DVD-ROM</translation> </message> <message> <source>Hard Disk</source> @@ -1840,12 +1840,12 @@ p, li { white-space: pre-wrap; } <message> <source>Windows DirectSound</source> <comment>AudioDriverType</comment> - <translation type="unfinished"></translation> + <translation>Windows DirectSound</translation> </message> <message> <source>CoreAudio</source> <comment>AudioDriverType</comment> - <translation type="unfinished"></translation> + <translation>CoreAudio</translation> </message> <message> <source>Not attached</source> @@ -1855,7 +1855,7 @@ p, li { white-space: pre-wrap; } <message> <source>NAT</source> <comment>NetworkAttachmentType</comment> - <translation type="unfinished"></translation> + <translation>NAT</translation> </message> <message> <source>Internal Network</source> @@ -1930,7 +1930,7 @@ p, li { white-space: pre-wrap; } <message> <source>USB</source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation>USB</translation> </message> <message> <source>Shared Folders</source> @@ -1970,12 +1970,12 @@ p, li { white-space: pre-wrap; } <message> <source>VT-x/AMD-V</source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation>VT-x/AMD-V</translation> </message> <message> <source>PAE/NX</source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation>PAE/NX</translation> </message> <message> <source>Enabled</source> @@ -2025,7 +2025,7 @@ p, li { white-space: pre-wrap; } <message> <source>USB</source> <comment>DeviceType</comment> - <translation type="unfinished"></translation> + <translation>USB</translation> </message> <message> <source>Shared Folder</source> @@ -2035,12 +2035,12 @@ p, li { white-space: pre-wrap; } <message> <source>IDE</source> <comment>StorageBus</comment> - <translation type="unfinished"></translation> + <translation>IDE</translation> </message> <message> <source>SATA</source> <comment>StorageBus</comment> - <translation type="unfinished"></translation> + <translation>SATA</translation> </message> <message> <source>Primary</source> @@ -2075,37 +2075,37 @@ p, li { white-space: pre-wrap; } <message> <source>PulseAudio</source> <comment>AudioDriverType</comment> - <translation type="unfinished"></translation> + <translation>PulseAudio</translation> </message> <message> <source>ICH AC97</source> <comment>AudioControllerType</comment> - <translation type="unfinished"></translation> + <translation>ICH AC97</translation> </message> <message> <source>SoundBlaster 16</source> <comment>AudioControllerType</comment> - <translation type="unfinished"></translation> + <translation>SoundBlaster 16</translation> </message> <message> <source>PCnet-PCI II (Am79C970A)</source> <comment>NetworkAdapterType</comment> - <translation type="unfinished"></translation> + <translation>PCnet-PCI II (Am79C970A)</translation> </message> <message> <source>PCnet-FAST III (Am79C973)</source> <comment>NetworkAdapterType</comment> - <translation type="unfinished"></translation> + <translation>PCnet-FAST III (Am79C973)</translation> </message> <message> <source>Intel PRO/1000 MT Desktop (82540EM)</source> <comment>NetworkAdapterType</comment> - <translation type="unfinished"></translation> + <translation>Intel PRO/1000 MT Desktop (82540EM)</translation> </message> <message> <source>Intel PRO/1000 T Server (82543GC)</source> <comment>NetworkAdapterType</comment> - <translation type="unfinished"></translation> + <translation>Intel PRO/1000 T Server (82543GC)</translation> </message> <message> <source><nobr>Vendor ID: %1</nobr></source> @@ -2210,37 +2210,37 @@ p, li { white-space: pre-wrap; } <message> <source>SCSI</source> <comment>StorageBus</comment> - <translation type="unfinished"></translation> + <translation>SCSI</translation> </message> <message> <source>PIIX3</source> <comment>StorageControllerType</comment> - <translation type="unfinished"></translation> + <translation>PIIX3</translation> </message> <message> <source>PIIX4</source> <comment>StorageControllerType</comment> - <translation type="unfinished"></translation> + <translation>PIIX4</translation> </message> <message> <source>ICH6</source> <comment>StorageControllerType</comment> - <translation type="unfinished"></translation> + <translation>ICH6</translation> </message> <message> <source>AHCI</source> <comment>StorageControllerType</comment> - <translation type="unfinished"></translation> + <translation>AHCI</translation> </message> <message> <source>Lsilogic</source> <comment>StorageControllerType</comment> - <translation type="unfinished"></translation> + <translation>Lsilogic</translation> </message> <message> <source>BusLogic</source> <comment>StorageControllerType</comment> - <translation type="unfinished"></translation> + <translation>BusLogic</translation> </message> <message> <source>Bridged adapter, %1</source> @@ -2255,7 +2255,7 @@ p, li { white-space: pre-wrap; } <message> <source>Intel PRO/1000 MT Server (82545EM)</source> <comment>NetworkAdapterType</comment> - <translation type="unfinished"></translation> + <translation>Intel PRO/1000 MT Server (82545EM)</translation> </message> <message> <source>Bridged Adapter</source> @@ -2270,7 +2270,7 @@ p, li { white-space: pre-wrap; } <message> <source><nobr>%1 MB</nobr></source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation><nobr>%1 MB</nobr></translation> </message> <message> <source>Processor(s)</source> @@ -2280,7 +2280,7 @@ p, li { white-space: pre-wrap; } <message> <source><nobr>%1</nobr></source> <comment>details report</comment> - <translation type="unfinished"></translation> + <translation><nobr>%1</nobr></translation> </message> <message> <source>System</source> @@ -2335,7 +2335,7 @@ p, li { white-space: pre-wrap; } <message> <source>Storage</source> <comment>details report</comment> - <translation>儲å˜</translation> + <translation>å˜æ”¾è£ç½®</translation> </message> <message> <source>Teleported</source> @@ -2345,7 +2345,7 @@ p, li { white-space: pre-wrap; } <message> <source>Guru Meditation</source> <comment>MachineState</comment> - <translation type="unfinished"></translation> + <translation>Guru Meditation</translation> </message> <message> <source>Teleporting</source> @@ -2425,7 +2425,7 @@ p, li { white-space: pre-wrap; } <message> <source>I82078</source> <comment>StorageControllerType</comment> - <translation type="unfinished"></translation> + <translation>I82078</translation> </message> <message> <source>Empty</source> @@ -2450,7 +2450,7 @@ p, li { white-space: pre-wrap; } <message> <source><p>Attached to: %1</p></source> <comment>image</comment> - <translation><p>é™„åŠ è‡³: %1</p></translation> + <translation><p>é™„åŠ åˆ°: %1</p></translation> </message> <message> <source><i>Not Attached</i></source> @@ -2502,43 +2502,43 @@ p, li { white-space: pre-wrap; } </message> <message numerus="yes"> <source>%n year(s)</source> - <translation> - <numerusform></numerusform> + <translation type="unfinished"> + <numerusform>%n å¹´</numerusform> </translation> </message> <message numerus="yes"> <source>%n month(s)</source> - <translation> - <numerusform></numerusform> + <translation type="unfinished"> + <numerusform>%n 月</numerusform> </translation> </message> <message numerus="yes"> <source>%n day(s)</source> - <translation> - <numerusform></numerusform> + <translation type="unfinished"> + <numerusform>%n æ—¥</numerusform> </translation> </message> <message numerus="yes"> <source>%n hour(s)</source> - <translation> - <numerusform></numerusform> + <translation type="unfinished"> + <numerusform>%n å°æ™‚</numerusform> </translation> </message> <message numerus="yes"> <source>%n minute(s)</source> - <translation> - <numerusform></numerusform> + <translation type="unfinished"> + <numerusform>%n 分é˜</numerusform> </translation> </message> <message numerus="yes"> <source>%n second(s)</source> - <translation> - <numerusform></numerusform> + <translation type="unfinished"> + <numerusform>%n 秒</numerusform> </translation> </message> <message> <source>(CD/DVD)</source> - <translation type="unfinished"></translation> + <translation>(CD/DVD)</translation> </message> </context> <context> @@ -2821,7 +2821,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Select a CD/DVD-ROM disk image file</source> - <translation>é¸å–一個 CD/DVD-ROM æ˜ åƒæª”</translation> + <translation>é¸å–一個 CD/DVD-ROM å…‰ç¢Ÿæ˜ åƒæª”</translation> </message> <message> <source>Floppy images (*.img);;All files (*)</source> @@ -2838,7 +2838,7 @@ p, li { white-space: pre-wrap; } <message> <source>--</source> <comment>no info</comment> - <translation type="unfinished"></translation> + <translation>--</translation> </message> <message> <source>Virtual Media Manager</source> @@ -2922,7 +2922,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Virtual Disk Location and Size</source> - <translation>虛擬ç£ç¢Ÿä½ç½®å’Œå¤§å°</translation> + <translation>虛擬ç£ç¢Ÿä½ç½®èˆ‡å¤§å°</translation> </message> <message> <source>Summary</source> @@ -2970,7 +2970,7 @@ p, li { white-space: pre-wrap; } <message> <source>Bytes</source> <comment>summary</comment> - <translation type="unfinished"></translation> + <translation>Bytes</translation> </message> <message> <source>Cancel</source> @@ -2982,27 +2982,27 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Hard Disk Storage Type</source> - <translation>硬碟儲å˜é¡žåž‹</translation> + <translation>硬碟å˜æ”¾é¡žåž‹</translation> </message> <message> <source><p>Select the type of virtual hard disk you want to create.</p><p>A <b>dynamically expanding storage</b> 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.</p><p>A <b>fixed-size storage</b> 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.</p></source> - <translation><p>é¸æ“‡æ‚¨è¦å»ºç«‹çš„虛擬硬碟類型。 </p><p><b>動態延伸儲å˜</b>最åˆåœ¨æ‚¨çš„實體硬碟佔用éžå¸¸å°‘的空間。 它將會動態æˆé•· (直到指定的大å°) 作為客體作æ¥ç³»çµ±ç´¢å–çš„ç£ç¢Ÿç©ºé–“。 </p><p><b>固定大å°å„²å˜</b>ä¸æœƒæˆé•·ã€‚ 它儲å˜åœ¨èˆ‡è™›æ“¬ç¡¬ç¢Ÿå¤§å°å¤§ç´„相åŒçš„檔案大å°ã€‚ 固定大å°å„²å˜å¯èƒ½éœ€è¦é•·æ™‚間的建立,å–決於儲å˜å¤§å°èˆ‡æ‚¨ç¡¬ç¢Ÿçš„寫入性能。</p></translation> + <translation><p>é¸æ“‡æ‚¨è¦å»ºç«‹çš„虛擬硬碟類型。 </p><p><b>動態延伸å˜æ”¾</b>最åˆåœ¨æ‚¨çš„實體硬碟佔用éžå¸¸å°‘的空間。 它將會動態æˆé•· (直到指定的大å°) 作為客體作æ¥ç³»çµ±ç´¢å–çš„ç£ç¢Ÿç©ºé–“。 </p><p><b>固定大å°å˜æ”¾</b>ä¸æœƒæˆé•·ã€‚ 它儲å˜åœ¨èˆ‡è™›æ“¬ç¡¬ç¢Ÿå¤§å°å¤§ç´„相åŒçš„檔案大å°ã€‚ 固定大å°å˜æ”¾å¯èƒ½éœ€è¦é•·æ™‚間的建立,å–決於å˜æ”¾å¤§å°èˆ‡æ‚¨ç¡¬ç¢Ÿçš„寫入性能。</p></translation> </message> <message> <source>Storage Type</source> - <translation>儲å˜é¡žåž‹</translation> + <translation>å˜æ”¾è£ç½®é¡žåž‹</translation> </message> <message> <source>&Dynamically expanding storage</source> - <translation>動態延伸儲å˜(&D)</translation> + <translation>動態延伸å˜æ”¾(&D)</translation> </message> <message> <source>&Fixed-size storage</source> - <translation>固定大å°å„²å˜(&F)</translation> + <translation>固定大å°å˜æ”¾(&F)</translation> </message> <message> <source><p>Press the <b>Select</b> button to select the location of a file to store the hard disk data or type a file name in the entry field.</p></source> - <translation><p>按下 [<b>é¸å–</b>] 按鈕以é¸å–儲å˜ç¡¬ç¢Ÿè³‡æ–™çš„檔案ä½ç½®æˆ–在欄ä½ä¸è¼¸å…¥æª”案å稱。</p></translation> + <translation><p>按下 [<b>é¸å–</b>] 按鈕é¸å–儲å˜ç¡¬ç¢Ÿè³‡æ–™çš„檔案ä½ç½®æˆ–在欄ä½ä¸è¼¸å…¥æª”案å稱。</p></translation> </message> <message> <source>&Location</source> @@ -3010,7 +3010,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source><p>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.</p></source> - <translation><p>以 MB 為單ä½é¸å–虛擬硬碟的大å°ã€‚這個大å°å°‡å›žå ±çµ¦å®¢é«” OS 為硬碟的最大容é‡ã€‚</p></translation> + <translation><p>以 MB 為單ä½é¸å–虛擬硬碟的大å°ã€‚這個大å°å°‡å›žå ±è‡³å®¢é«”作æ¥ç³»çµ±ä½œç‚ºç¡¬ç¢Ÿçš„最大容é‡ã€‚</p></translation> </message> <message> <source>&Size</source> @@ -3018,11 +3018,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>You are going to create a new virtual hard disk with the following parameters:</source> - <translation>您è¦ä½¿ç”¨ä»¥ä¸‹åƒæ•¸æ–°å»ºè™›æ“¬ç¡¬ç¢Ÿ:</translation> + <translation>您å³å°‡ä½¿ç”¨ä»¥ä¸‹åƒæ•¸æ–°å»ºè™›æ“¬ç¡¬ç¢Ÿ:</translation> </message> <message> <source>If the above settings are correct, press the <b>Finish</b> button. Once you press it, a new hard disk will be created.</source> - <translation>如果上方è¨å®šå€¼æ£ç¢ºï¼ŒæŒ‰ä¸‹ [<b>完æˆ</b>] 按鈕。 一旦您按下,將建立新硬碟。</translation> + <translation>如果上方è¨å®šå€¼æ£ç¢ºï¼ŒæŒ‰ä¸‹ [<b>完æˆ</b>] 按鈕。 一旦您按下後,將建立新硬碟。</translation> </message> </context> <context> @@ -3057,7 +3057,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>MB</source> - <translation type="unfinished"></translation> + <translation>MB</translation> </message> <message> <source>Memory</source> @@ -3101,7 +3101,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source><p>If the above is correct press the <b>Finish</b> button. Once you press it, a new virtual machine will be created. </p><p>Note that you can alter these and all other setting of the created virtual machine at any time using the <b>Settings</b> dialog accessible through the menu of the main window.</p></source> - <translation><p>如果以上æ£ç¢ºæŒ‰ä¸‹ [<b>完æˆ</b>] 按鈕。 一旦您按下,將新建虛擬機器。 </p><p>請注æ„您å¯ä»¥é€šéŽä¸»è¦–窗的功能表å˜å– <b>è¨å®šå€¼</b> å°è©±æ–¹å¡Šï¼Œéš¨æ™‚變更建立虛擬機器的這些和所有其它è¨å®šå€¼ã€‚</p></translation> + <translation><p>如果以上æ£ç¢ºæŒ‰ä¸‹ [<b>完æˆ</b>] 按鈕。 一旦您按下後,將新建虛擬機器。 </p><p>請注æ„您å¯ä»¥é€šéŽä¸»è¦–窗的功能表å˜å– <b>è¨å®šå€¼</b> å°è©±æ–¹å¡Šï¼Œéš¨æ™‚變更建立虛擬機器的這些和所有其它è¨å®šå€¼ã€‚</p></translation> </message> <message> <source>&Finish</source> @@ -3110,7 +3110,7 @@ p, li { white-space: pre-wrap; } <message> <source>MB</source> <comment>megabytes</comment> - <translation type="unfinished"></translation> + <translation>MB</translation> </message> <message> <source>Name</source> @@ -3314,7 +3314,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source><p>The Virtual Machine reports that the guest OS does not support <b>mouse pointer integration</b> 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.</p></source> - <translation><p>è™›æ“¬æ©Ÿå™¨å›žå ±åœ¨ç›®å‰çš„視訊模å¼ä¸ï¼Œå®¢é«”作æ¥ç³»çµ±ä¸æ”¯æ´<b>æ»‘é¼ æ¸¸æ¨™æ•´åˆ</b>。 為了在客體作æ¥ç³»çµ±ä¹‹å…§ä½¿ç”¨æ»‘é¼ ï¼Œæ‚¨éœ€è¦æ“·å–æ»‘é¼ (在虛擬機器顯示上方按一下或按下 Host éµ) 。</p></translation> + <translation><p>è™›æ“¬æ©Ÿå™¨å›žå ±åœ¨ç›®å‰çš„視訊模å¼ä¸ï¼Œå®¢é«”作æ¥ç³»çµ±ä¸æ”¯æ´<b>æ»‘é¼ æŒ‡æ¨™æ•´åˆ</b>。 為了在客體作æ¥ç³»çµ±ä¹‹å…§ä½¿ç”¨æ»‘é¼ ï¼Œæ‚¨éœ€è¦æ“·å–æ»‘é¼ (在虛擬機器顯示上方按一下或按下 Host éµ) 。</p></translation> </message> <message> <source><p>The Virtual Machine is currently in the <b>Paused</b> state and not able to see any keyboard or mouse input. If you want to continue to work inside the VM, you need to resume it by selecting the corresponding action from the menu bar.</p></source> @@ -3574,7 +3574,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source><p>The Virtual Machine reports that the guest OS supports <b>mouse pointer integration</b>. This means that you do not need to <i>capture</i> the mouse pointer to be able to use it in your guest OS -- all mouse actions you perform when the mouse pointer is over the Virtual Machine's display are directly sent to the guest OS. If the mouse is currently captured, it will be automatically uncaptured.</p><p>The mouse icon on the status bar will look like&nbsp;<img src=:/mouse_seamless_16px.png/>&nbsp;to inform you that mouse pointer integration is supported by the guest OS and is currently turned on.</p><p><b>Note</b>: Some applications may behave incorrectly in mouse pointer integration mode. You can always disable it for the current session (and enable it again) by selecting the corresponding action from the menu bar.</p></source> - <translation><p>è™›æ“¬æ©Ÿå™¨å›žå ±å®¢é«” OS 支æ´<b>æ»‘é¼ æ¸¸æ¨™æ•´åˆ</b>。 這æ„味著您ä¸éœ€è¦åœ¨å®¢é«” OS ä¸ä½¿ç”¨<i>æ“·å–</i>æ»‘é¼ æ¸¸æ¨™ä¾†ä½¿ç”¨å®ƒ -- ç•¶æ»‘é¼ æ¸¸æ¨™ä½æ–¼è™›æ“¬æ©Ÿå™¨çš„é¡¯ç¤ºä¸Šæ–¹æ™‚ï¼Œæ‰€æœ‰æ‚¨åŸ·è¡Œçš„æ»‘é¼ å‹•ä½œå°‡ç›´æŽ¥å‚³é€åˆ°å®¢é«”作æ¥ç³»çµ±ã€‚ 如果目å‰å·²æ“·å–æ»‘é¼ ï¼Œå°‡æœƒè‡ªå‹•å–消擷å–。</p><p>ç‹€æ…‹åˆ—çš„æ»‘é¼ åœ–ç¤ºå°‡çœ‹èµ·ä¾†åƒ&nbsp;< img src=:/mouse_seamless_16px.png/ >&nbsp;以通知您客體作æ¥ç³»çµ±æ”¯æ´æ»‘é¼ æ¸¸æ¨™æ•´åˆä¸¦ä¸”ç›®å‰å·²é–‹å•Ÿã€‚ </p><p><b>注æ„</b>: æŸäº›æ‡‰ç”¨ç¨‹å¼å¯èƒ½åœ¨æ»‘é¼ æ¸¸æ¨™æ•´åˆæ¨¡å¼ä¸‹çš„行為ä¸æ£ç¢ºã€‚ 您å¯ä»¥å¾žåŠŸèƒ½è¡¨åˆ—ä¸é¸å–相å°æ‡‰çš„動作於目å‰å·¥ä½œéšŽæ®µå§‹çµ‚åœç”¨å®ƒ (與å†æ¬¡å•Ÿç”¨) 。</p></translation> + <translation><p>è™›æ“¬æ©Ÿå™¨å›žå ±å®¢é«”ä½œæ¥ç³»çµ±æ”¯æ´<b>æ»‘é¼ æŒ‡æ¨™æ•´åˆ</b>。 這æ„味著您ä¸éœ€è¦åœ¨å®¢é«”作æ¥ç³»çµ±ä¸ä½¿ç”¨<i>æ“·å–</i>æ»‘é¼ æŒ‡æ¨™ä¾†ä½¿ç”¨å®ƒ -- ç•¶æ»‘é¼ æŒ‡æ¨™ä½æ–¼è™›æ“¬æ©Ÿå™¨çš„é¡¯ç¤ºä¸Šæ–¹æ™‚ï¼Œæ‰€æœ‰æ‚¨åŸ·è¡Œçš„æ»‘é¼ å‹•ä½œå°‡ç›´æŽ¥å‚³é€åˆ°å®¢é«”作æ¥ç³»çµ±ã€‚ 如果目å‰å·²æ“·å–æ»‘é¼ ï¼Œå°‡æœƒè‡ªå‹•å–消擷å–。</p><p>ç‹€æ…‹åˆ—çš„æ»‘é¼ åœ–ç¤ºå°‡çœ‹èµ·ä¾†åƒ&nbsp;< img src=:/mouse_seamless_16px.png/ >&nbsp;以通知您客體作æ¥ç³»çµ±æ”¯æ´æ»‘é¼ æŒ‡æ¨™æ•´åˆä¸¦ä¸”ç›®å‰å·²é–‹å•Ÿã€‚ </p><p><b>注æ„</b>: æŸäº›æ‡‰ç”¨ç¨‹å¼å¯èƒ½åœ¨æ»‘é¼ æŒ‡æ¨™æ•´åˆæ¨¡å¼ä¸‹çš„行為ä¸æ£ç¢ºã€‚ 您å¯ä»¥å¾žåŠŸèƒ½è¡¨åˆ—ä¸é¸å–相å°æ‡‰çš„動作於目å‰å·¥ä½œéšŽæ®µä¸€å¾‹åœç”¨å®ƒ (與å†æ¬¡å•Ÿç”¨) 。</p></translation> </message> <message> <source><p>The virtual machine window will be now switched to <b>fullscreen</b> mode. You can go back to windowed mode at any time by pressing <b>%1</b>. Note that the <i>Host</i> key is currently defined as <b>%2</b>.</p><p>Note that the main menu bar is hidden in fullscreen mode. You can access it by pressing <b>Host+Home</b>.</p></source> @@ -3606,7 +3606,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Go back to showing all suppressed warnings and messages</source> - <translation>返回以顯示所有ç¦æ¢æŠ‘制的è¦å‘Šèˆ‡è¨Šæ¯</translation> + <translation>返回以顯示所有抑制的è¦å‘Šèˆ‡è¨Šæ¯</translation> </message> <message> <source>R&egister VirtualBox...</source> @@ -3655,11 +3655,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>The next dialog will let you choose whether you also want to delete the storage unit of this hard disk or keep it for later usage.</source> - <translation>下一個å°è©±æ–¹å¡Šæœƒè®“您é¸æ“‡æ˜¯å¦ä¹Ÿè¦åˆªé™¤é€™å€‹ç¡¬ç¢Ÿå„²å˜å–®å…ƒæˆ–ä¿ç•™å®ƒä¾›ä»¥å¾Œä½¿ç”¨ã€‚</translation> + <translation>下一個å°è©±æ–¹å¡Šæœƒè®“您é¸æ“‡æ˜¯å¦ä¹Ÿè¦åˆªé™¤é€™å€‹ç¡¬ç¢Ÿå˜æ”¾å–®å…ƒæˆ–ä¿ç•™å®ƒä¾›ä»¥å¾Œä½¿ç”¨ã€‚</translation> </message> <message> <source><p>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.</p></source> - <translation><p>請注æ„,這個媒體的儲å˜å–®å…ƒå°‡ä¸æœƒåˆªé™¤ä¸”這將有å¯èƒ½å†æ¬¡å°‡å…¶åŠ 入到清單ä¸ã€‚</p></translation> + <translation><p>請注æ„,這個媒體的å˜æ”¾å–®å…ƒå°‡ä¸æœƒåˆªé™¤ä¸”這將有å¯èƒ½ç¨å¾Œå†æ¬¡å°‡å…¶åŠ 入到清單ä¸ã€‚</p></translation> </message> <message> <source>Remove</source> @@ -3668,11 +3668,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source><p>The hard disk storage unit at location <b>%1</b> 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.</p><p>Please specify a different location.</p></source> - <translation><p>硬碟儲å˜å–®å…ƒæ–¼ä½ç½® <b>%1</b> 已經å˜åœ¨ã€‚ 您ä¸èƒ½ä½¿ç”¨é€™å€‹ä½ç½®æ–°å»ºè™›æ“¬ç¡¬ç¢Ÿå› 為å¦ä¸€å€‹è™›æ“¬ç¡¬ç¢Ÿå·²ç¶“使用ä¸ã€‚</p><p>請指定ä¸åŒçš„ä½ç½®ã€‚</p></translation> + <translation><p>硬碟å˜æ”¾å–®å…ƒæ–¼ä½ç½® <b>%1</b> 已經å˜åœ¨ã€‚ 您ä¸èƒ½ä½¿ç”¨é€™å€‹ä½ç½®æ–°å»ºè™›æ“¬ç¡¬ç¢Ÿå› 為å¦ä¸€å€‹è™›æ“¬ç¡¬ç¢Ÿå·²ç¶“使用ä¸ã€‚</p><p>請指定ä¸åŒçš„ä½ç½®ã€‚</p></translation> </message> <message> <source><p>Do you want to delete the storage unit of the hard disk <nobr><b>%1</b></nobr>?</p><p>If you select <b>Delete</b> then the specified storage unit will be permanently deleted. This operation <b>cannot be undone</b>.</p><p>If you select <b>Keep</b> then the hard disk will be only removed from the list of known hard disks, but the storage unit will be left untouched which makes it possible to add this hard disk to the list later again.</p></source> - <translation><p>您è¦åˆªé™¤ç¡¬ç¢Ÿçš„儲å˜å–®å…ƒ <nobr><b>%1</b></nobr>å—Ž?</p><p>如果您é¸å– [<b>刪除</b>] 將永久刪除指定的儲å˜å–®å…ƒã€‚ 這個æ“作<b>無法復原</b>。 </p><p>如果您é¸å– [<b>ä¿ç•™</b>] 硬碟將åªå¾žæœªçŸ¥ç¡¬ç¢Ÿæ¸…å–®ä¸ç§»é™¤ï¼Œä½†å„²å˜å–®å…ƒå°‡ä¿æŒæœªæŽ¥è§¸ï¼Œä½¿å¾—ç¨å¾Œå¯ä»¥å†æ¬¡åŠ 入這個硬碟到清單。</p></translation> + <translation><p>您è¦åˆªé™¤ç¡¬ç¢Ÿçš„å˜æ”¾å–®å…ƒ <nobr><b>%1</b></nobr>å—Ž?</p><p>如果您é¸å– [<b>刪除</b>] 將永久刪除指定的å˜æ”¾å–®å…ƒã€‚ 這個æ“作<b>無法復原</b>。 </p><p>如果您é¸å– [<b>ä¿ç•™</b>] 硬碟將åªå¾žæœªçŸ¥ç¡¬ç¢Ÿæ¸…å–®ä¸ç§»é™¤ï¼Œä½†å˜æ”¾å–®å…ƒå°‡ä¿æŒæœªæŽ¥è§¸ï¼Œä½¿å¾—ç¨å¾Œå¯ä»¥å†æ¬¡åŠ 入這個硬碟到清單。</p></translation> </message> <message> <source>Delete</source> @@ -3686,11 +3686,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Failed to delete the storage unit of the hard disk <b>%1</b>.</source> - <translation>刪除硬碟 <b>%1</b> 的儲å˜å–®å…ƒæ™‚失敗。</translation> + <translation>刪除硬碟 <b>%1</b> çš„å˜æ”¾å–®å…ƒæ™‚失敗。</translation> </message> <message> <source>Failed to create the hard disk storage <nobr><b>%1</b>.</nobr></source> - <translation>å»ºç«‹ç¡¬ç¢Ÿå„²å˜ <nobr><b>%1</b> 失敗。</nobr></translation> + <translation>建立硬碟å˜æ”¾ <nobr><b>%1</b> 失敗。</nobr></translation> </message> <message> <source>Failed to open the %1 <nobr><b>%2</b></nobr>.</source> @@ -3742,7 +3742,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source><p>VT-x/AMD-V hardware acceleration has been enabled, but is not operational. Your 64-bit guest will fail to detect a 64-bit CPU and will not be able to boot.</p><p>Please ensure that you have enabled VT-x/AMD-V properly in the BIOS of your host computer.</p></source> - <translation><p>VT-x/AMD-V ç¡¬é«”åŠ é€Ÿå·²å•Ÿç”¨ï¼Œä½†æ˜¯æœªæ“作。 您的 64-bit 客體將åµæ¸¬ 64-bit CPU 失敗且將無法開機。</p><p>請確èªåœ¨æ‚¨ä¸»æ©Ÿé›»è…¦çš„ BIOS ä¸å·²æ£ç¢ºå•Ÿç”¨ VT-x/AMD-V 。</p></translation> + <translation><p>VT-x/AMD-V ç¡¬é«”åŠ é€Ÿå·²å•Ÿç”¨ï¼Œä½†æ˜¯ä¸å¯æ“作。 您的 64-bit 客體將åµæ¸¬ 64-bit CPU 失敗且將無法開機。</p><p>請確èªåœ¨æ‚¨ä¸»æ©Ÿé›»è…¦çš„ BIOS ä¸å·²æ£ç¢ºå•Ÿç”¨ VT-x/AMD-V 。</p></translation> </message> <message> <source>Close VM</source> @@ -3815,7 +3815,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source><p>VT-x/AMD-V hardware acceleration has been enabled, but is not operational. Certain guests (e.g. OS/2 and QNX) require this feature.</p><p>Please ensure that you have enabled VT-x/AMD-V properly in the BIOS of your host computer.</p></source> - <translation><p>VT-x/AMD-V ç¡¬é«”åŠ é€Ÿå·²å•Ÿç”¨ï¼Œä½†æ˜¯æœªæ“作。 æŸäº›å®¢é«” (例如 OS/2 與 QNX) 需è¦é€™å€‹åŠŸèƒ½ã€‚</p><p>請確èªåœ¨æ‚¨ä¸»æ©Ÿé›»è…¦çš„ BIOS ä¸å·²æ£ç¢ºå•Ÿç”¨ VT-x/AMD-V 。</p></translation> + <translation><p>VT-x/AMD-V ç¡¬é«”åŠ é€Ÿå·²å•Ÿç”¨ï¼Œä½†æ˜¯ä¸å¯æ“作。 æŸäº›å®¢é«” (例如 OS/2 與 QNX) 需è¦é€™å€‹åŠŸèƒ½ã€‚</p><p>請確èªåœ¨æ‚¨ä¸»æ©Ÿé›»è…¦çš„ BIOS ä¸å·²æ£ç¢ºå•Ÿç”¨ VT-x/AMD-V 。</p></translation> </message> <message> <source><p>Invalid e-mail address or password specified.</p></source> @@ -3917,7 +3917,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source><p>Could not insert the VirtualBox Guest Additions installer CD image into the virtual machine <b>%1</b>, as the machine has no CD/DVD-ROM drives. Please add a drive using the storage page of the virtual machine settings dialog.</p></source> - <translation><p>無法æ’å…¥ VirtualBox Guest Additions 安è£ç¨‹å¼ CD æ˜ åƒè‡³è™›æ“¬æ©Ÿå™¨ <b>%1</b>,由於機器沒有 CD/DVD-ROM 光碟機。 請使用虛擬機器è¨å®šå°è©±æ–¹å¡Šçš„儲å˜é é¢åŠ 入一個光碟機。</p></translation> + <translation><p>無法æ’å…¥ VirtualBox Guest Additions 安è£ç¨‹å¼ CD æ˜ åƒè‡³è™›æ“¬æ©Ÿå™¨ <b>%1</b>,由於機器沒有 CD/DVD-ROM 光碟機。 請使用虛擬機器è¨å®šå°è©±æ–¹å¡Šçš„å˜æ”¾è£ç½®é é¢åŠ 入一個光碟機。</p></translation> </message> <message> <source>E&xit</source> @@ -3936,7 +3936,7 @@ p, li { white-space: pre-wrap; } <message> <source>CD/DVD</source> <comment>failed to mount ... host-drive</comment> - <translation type="unfinished"></translation> + <translation>CD/DVD</translation> </message> <message> <source>CD/DVD image</source> @@ -4011,83 +4011,83 @@ p, li { white-space: pre-wrap; } <name>VBoxRegistrationDlg</name> <message> <source>VirtualBox Registration Dialog</source> - <translation>VirtualBox 註冊å°è©±æ–¹å¡Š</translation> + <translation type="obsolete">VirtualBox 註冊å°è©±æ–¹å¡Š</translation> </message> <message> <source>Enter your full name using Latin characters.</source> - <translation>使用拉ä¸å—æ¯è¼¸å…¥æ‚¨çš„å…¨å。</translation> + <translation type="obsolete">使用拉ä¸å—æ¯è¼¸å…¥æ‚¨çš„å…¨å。</translation> </message> <message> <source>Enter your e-mail address. Please use a valid address here.</source> - <translation>輸入您的電å郵件ä½å€ã€‚ 請在æ¤ä½¿ç”¨æœ‰æ•ˆçš„ä½å€ã€‚</translation> + <translation type="obsolete">輸入您的電å郵件ä½å€ã€‚ 請在æ¤ä½¿ç”¨æœ‰æ•ˆçš„ä½å€ã€‚</translation> </message> <message> <source>Welcome to the VirtualBox Registration Form!</source> - <translation>æ¡è¿Žä½¿ç”¨ VirtualBox 註冊表單!</translation> + <translation type="obsolete">æ¡è¿Žä½¿ç”¨ VirtualBox 註冊表單!</translation> </message> <message> <source>Could not perform connection handshake.</source> - <translation>無法執行連線交æ¡ã€‚</translation> + <translation type="obsolete">無法執行連線交æ¡ã€‚</translation> </message> <message> <source>Cancel</source> - <translation>å–消</translation> + <translation type="obsolete">å–消</translation> </message> <message> <source>Select Country/Territory</source> - <translation>é¸å–國家/地å€</translation> + <translation type="obsolete">é¸å–國家/地å€</translation> </message> <message> <source><p>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.</p><p>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 <b>Privacy Policy</b> section of the VirtualBox Manual or on the <a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy</a> page of the VirtualBox web-site.</p></source> - <translation><p>請填寫這個註冊表單å¯ä»¥è®“我們知é“您使用 VirtualBox ,並é¸æ“‡æ€§çš„ä¿æŒé€šçŸ¥æ‚¨æœ‰é—œ VirtualBox æ–°èžèˆ‡æ›´æ–°ã€‚</p><p>è«‹åªä½¿ç”¨æ‹‰ä¸å—元填寫以下欄ä½ã€‚ Sun Microsystems åªä½¿ç”¨é€™å€‹è³‡è¨Šï¼Œæ”¶é›†ç”¢å“使用情æ³çµ±è¨ˆè³‡è¨Šä¸¦å‘æ‚¨å‚³é€ VirtualBox é›»åå ±ã€‚ 特別是, Sun Microsystems 將永ä¸å‚³éžæ‚¨çš„資料給å”åŠ›å» å•†ã€‚ VirtualBox 手冊的 <b> éš±ç§æ¬ŠåŽŸå‰‡</b> 單元或 VirtualBox 的網站 <a href=http://www.virtualbox.org/wiki/PrivacyPolicy> éš±ç§æ¬ŠåŽŸå‰‡ </a> ä¸å¯ä»¥æ‰¾åˆ°æœ‰é—œæˆ‘們如何使用您個人資料的詳細資訊。</p></translation> + <translation type="obsolete"><p>請填寫這個註冊表單å¯ä»¥è®“我們知é“您使用 VirtualBox ,並é¸æ“‡æ€§çš„ä¿æŒé€šçŸ¥æ‚¨æœ‰é—œ VirtualBox æ–°èžèˆ‡æ›´æ–°ã€‚</p><p>è«‹åªä½¿ç”¨æ‹‰ä¸å—元填寫以下欄ä½ã€‚ Sun Microsystems åªä½¿ç”¨é€™å€‹è³‡è¨Šï¼Œæ”¶é›†ç”¢å“使用情æ³çµ±è¨ˆè³‡è¨Šä¸¦å‘æ‚¨å‚³é€ VirtualBox é›»åå ±ã€‚ 特別是, Sun Microsystems 將永ä¸å‚³éžæ‚¨çš„資料給å”åŠ›å» å•†ã€‚ VirtualBox 手冊的 <b> éš±ç§æ¬ŠåŽŸå‰‡</b> 單元或 VirtualBox 的網站 <a href=http://www.virtualbox.org/wiki/PrivacyPolicy> éš±ç§æ¬ŠåŽŸå‰‡ </a> ä¸å¯ä»¥æ‰¾åˆ°æœ‰é—œæˆ‘們如何使用您個人資料的詳細資訊。</p></translation> </message> <message> <source>I &already have a Sun Online account:</source> - <translation>我已經有 Sun Online 帳戶(&A):</translation> + <translation type="obsolete">我已經有 Sun Online 帳戶(&A):</translation> </message> <message> <source>&E-mail:</source> - <translation>é›»å郵件(&E):</translation> + <translation type="obsolete">é›»å郵件(&E):</translation> </message> <message> <source>&Password:</source> - <translation>密碼(&P):</translation> + <translation type="obsolete">密碼(&P):</translation> </message> <message> <source>I &would like to create a new Sun Online account:</source> - <translation>我希望新建 Sun Online 帳戶(&W):</translation> + <translation type="obsolete">我希望新建 Sun Online 帳戶(&W):</translation> </message> <message> <source>&First Name:</source> - <translation>åå—(&F):</translation> + <translation type="obsolete">åå—(&F):</translation> </message> <message> <source>&Last Name:</source> - <translation>姓æ°(&L):</translation> + <translation type="obsolete">姓æ°(&L):</translation> </message> <message> <source>&Company:</source> - <translation>å…¬å¸(&C):</translation> + <translation type="obsolete">å…¬å¸(&C):</translation> </message> <message> <source>Co&untry:</source> - <translation>國家(&U):</translation> + <translation type="obsolete">國家(&U):</translation> </message> <message> <source>E-&mail:</source> - <translation>é›»å郵件(&M):</translation> + <translation type="obsolete">é›»å郵件(&M):</translation> </message> <message> <source>P&assword:</source> - <translation>密碼(&A):</translation> + <translation type="obsolete">密碼(&A):</translation> </message> <message> <source>Co&nfirm Password:</source> - <translation>確èªå¯†ç¢¼(&N):</translation> + <translation type="obsolete">確èªå¯†ç¢¼(&N):</translation> </message> <message> <source>&Register</source> - <translation>註冊(&R)</translation> + <translation type="obsolete">註冊(&R)</translation> </message> </context> <context> @@ -4258,7 +4258,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Sun VirtualBox</source> - <translation type="unfinished"></translation> + <translation>Sun VirtualBox</translation> </message> <message> <source>&Import Appliance...</source> @@ -4285,7 +4285,7 @@ p, li { white-space: pre-wrap; } <name>VBoxSettingsDialog</name> <message> <source><i>Select a settings category from the list on the left-hand side and move the mouse over a settings item to get more information</i>.</source> - <translation><i>請從左手邊的清單é¸å–è¨å®šå€¼åˆ†é¡žä¸¦å°‡æ»‘é¼ ç§»è‡³è¨å®šé …目上方以å–得更多資訊</i>。</translation> + <translation><i>請從左手邊的清單é¸å–è¨å®šåˆ†é¡žä¸¦å°‡æ»‘é¼ ç§»è‡³è¨å®šé …目上方以å–得更多資訊</i>。</translation> </message> <message> <source>Invalid settings detected</source> @@ -4335,7 +4335,7 @@ p, li { white-space: pre-wrap; } <name>VBoxSnapshotsWgt</name> <message> <source>VBoxSnapshotsWgt</source> - <translation type="unfinished"></translation> + <translation>VBoxSnapshotsWgt</translation> </message> <message> <source>Current State (changed)</source> @@ -4407,7 +4407,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source> (%1)</source> - <translation type="unfinished"></translation> + <translation>(%1)</translation> </message> <message> <source>&Restore Snapshot</source> @@ -4803,11 +4803,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Guest Additions</source> - <translation type="unfinished"></translation> + <translation>Guest Additions</translation> </message> <message> <source>Guest OS Type</source> - <translation>客體 OS é¡žåž‹</translation> + <translation>客體作æ¥ç³»çµ±é¡žåž‹</translation> </message> <message> <source>No Network Adapters</source> @@ -4829,7 +4829,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>VBoxVMInformationDlg</source> - <translation type="unfinished"></translation> + <translation>VBoxVMInformationDlg</translation> </message> <message> <source>Not Available</source> @@ -4838,11 +4838,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Storage Statistics</source> - <translation>儲å˜çµ±è¨ˆ</translation> + <translation>å˜æ”¾è£ç½®çµ±è¨ˆ</translation> </message> <message> <source>No Storage Devices</source> - <translation>無儲å˜è£ç½®</translation> + <translation>ç„¡å˜æ”¾è£ç½®</translation> </message> <message> <source>Network Statistics</source> @@ -4968,7 +4968,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source><qt>%1&nbsp;MB</qt></source> - <translation type="unfinished"></translation> + <translation><qt>%1&nbsp;MB</qt></translation> </message> <message> <source>&Video</source> @@ -4984,7 +4984,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>MB</source> - <translation type="unfinished"></translation> + <translation>MB</translation> </message> <message> <source>Extended Features:</source> @@ -5004,7 +5004,7 @@ p, li { white-space: pre-wrap; } </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>勾é¸æ™‚,虛擬機器將扮演é 端桌é¢å”定 (RDP) 伺æœå™¨ï¼Œå…許é 端用戶端使用標準的 RDP 用戶端從é 端連線與æ“作虛擬機器 (如果它在執行ä¸)。</translation> + <translation>勾é¸æ™‚,虛擬機器將作為é 端桌é¢å”定 (RDP) 伺æœå™¨ï¼Œå…許é 端用戶端使用標準的 RDP 用戶端連線與æ“作虛擬機器 (當它æ£åœ¨åŸ·è¡Œæ™‚)。</translation> </message> <message> <source>&Enable Server</source> @@ -5044,7 +5044,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>The VRDP Server port number. You may specify <tt>0</tt> (zero), to select port 3389, the standard port for RDP.</source> - <translation>VRDP 伺æœå™¨é€£æŽ¥åŸ 號。 您應指定 <tt>0</tt> (零),來é¸æ“‡é€£æŽ¥åŸ 3389, RDP çš„æ¨™æº–é€£æŽ¥åŸ ã€‚</translation> + <translation>VRDP 伺æœå™¨é€£æŽ¥åŸ 號。 您å¯ä»¥æŒ‡å®š <tt>0</tt> (零),來é¸æ“‡é€£æŽ¥åŸ 3389, RDP çš„æ¨™æº–é€£æŽ¥åŸ ã€‚</translation> </message> </context> <context> @@ -5055,7 +5055,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Storage</source> - <translation>儲å˜</translation> + <translation>å˜æ”¾è£ç½®</translation> </message> <message> <source>Hard Disks</source> @@ -5063,7 +5063,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>CD/DVD-ROM</source> - <translation type="unfinished"></translation> + <translation>CD/DVD-ROM</translation> </message> <message> <source>Floppy</source> @@ -5091,7 +5091,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>USB</source> - <translation type="unfinished"></translation> + <translation>USB</translation> </message> <message> <source>Shared Folders</source> @@ -5099,7 +5099,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>%1 - %2</source> - <translation type="unfinished"></translation> + <translation>%1 - %2</translation> </message> <message> <source>System</source> @@ -5111,11 +5111,11 @@ p, li { white-space: pre-wrap; } </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>您已é¸å– 64 ä½å…ƒçš„客體 OS é¡žåž‹å°æ–¼é€™å€‹ VM 。 如æ¤çš„來賓需è¦ç¡¬é«”虛擬化 (VT-x/AMD-V),這個功能將會自動啟用。</translation> + <translation>您已é‡å°é€™å€‹ VM é¸å– 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>您已é¸å– 64 ä½å…ƒçš„客體 OS é¡žåž‹å°æ–¼é€™å€‹ VM 。 VirtualBox ç›®å‰ä¸æ”¯æ´å¤šå€‹è™›æ“¬ CPU çš„ 64 ä½å…ƒä¾†è³“執行在 32 ä½å…ƒä¸»æ©Ÿã€‚</translation> + <translation>您已é‡å°é€™å€‹ VM é¸å– 64 ä½å…ƒçš„客體作æ¥ç³»çµ±é¡žåž‹ã€‚ VirtualBox ç›®å‰ä¸æ”¯æ´åœ¨ 32 ä½å…ƒä¸»æ©ŸåŸ·è¡Œå¤šå€‹è™›æ“¬ CPU çš„ 64 ä½å…ƒå®¢é«”。</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> @@ -5277,19 +5277,19 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Adds a new controller to the end of the Storage Tree.</source> - <translation>新增控制器至儲å˜æ¨¹çš„çµå°¾ã€‚</translation> + <translation>新增控制器至å˜æ”¾è£ç½®æ¨¹çš„çµå°¾ã€‚</translation> </message> <message> <source>Removes the controller highlighted in the Storage Tree.</source> - <translation>移除儲å˜æ¨¹ä¸å白的控制器。</translation> + <translation>移除å˜æ”¾è£ç½®æ¨¹ä¸å白的控制器。</translation> </message> <message> <source>Adds a new attachment to the Storage Tree using currently selected controller as parent.</source> - <translation>使用目å‰é¸å–的控制器新增附件至儲å˜æ¨¹ç‚ºä¸Šå±¤ã€‚</translation> + <translation>使用目å‰é¸å–的控制器新增附件至å˜æ”¾è£ç½®æ¨¹ç‚ºä¸Šå±¤ã€‚</translation> </message> <message> <source>Removes the attachment highlighted in the Storage Tree.</source> - <translation>移除儲å˜æ¨¹ä¸å白的附件。</translation> + <translation>移除å˜æ”¾è£ç½®æ¨¹ä¸å白的附件。</translation> </message> <message> <source>IDE Controller</source> @@ -5321,11 +5321,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>&Storage Tree</source> - <translation>儲å˜æ¨¹(&S)</translation> + <translation>å˜æ”¾è£ç½®æ¨¹(&S)</translation> </message> <message> <source>Contains all storage controllers for this machine and the virtual images and host drives attached to them.</source> - <translation>包å«é€™å€‹æ©Ÿå™¨çš„所有儲å˜æŽ§åˆ¶å™¨èˆ‡é™„åŠ åˆ°å®ƒå€‘çš„è™›æ“¬æ©Ÿå™¨åŠä¸»æ©Ÿè£ç½®ã€‚</translation> + <translation>包å«é€™å€‹æ©Ÿå™¨çš„所有å˜æ”¾æŽ§åˆ¶å™¨èˆ‡é™„åŠ åˆ°å®ƒå€‘çš„è™›æ“¬æ©Ÿå™¨åŠä¸»æ©Ÿè£ç½®ã€‚</translation> </message> <message> <source>Information</source> @@ -5333,7 +5333,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>The Storage Tree can contain several controllers of different types. This machine currently has no controllers.</source> - <translation>儲å˜æ¨¹èƒ½åŒ…å«æ•¸å€‹ä¸åŒé¡žåž‹çš„控制器。 這個機器目å‰æ²’有控制器。</translation> + <translation>å˜æ”¾è£ç½®æ¨¹èƒ½åŒ…å«æ•¸å€‹ä¸åŒé¡žåž‹çš„控制器。 這個機器目å‰æ²’有控制器。</translation> </message> <message> <source>Attributes</source> @@ -5345,7 +5345,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Changes the name of the storage controller currently selected in the Storage Tree.</source> - <translation>變更目å‰åœ¨å„²å˜æ¨¹é¸å–的儲å˜æŽ§åˆ¶å™¨å稱。</translation> + <translation>變更目å‰åœ¨å˜æ”¾è£ç½®æ¨¹é¸å–的儲å˜æŽ§åˆ¶å™¨å稱。</translation> </message> <message> <source>&Type:</source> @@ -5353,7 +5353,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Selects the sub-type of the storage controller currently selected in the Storage Tree.</source> - <translation>é¸å–ç›®å‰åœ¨å„²å˜æ¨¹é¸å–的儲å˜æŽ§åˆ¶å™¨çš„å類型。</translation> + <translation>é¸å–ç›®å‰åœ¨å˜æ”¾è£ç½®æ¨¹é¸å–çš„å˜æ”¾æŽ§åˆ¶å™¨çš„å類型。</translation> </message> <message> <source>S&lot:</source> @@ -5361,7 +5361,7 @@ p, li { white-space: pre-wrap; } </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> + <translation>é¸å–這個附件所使用的å˜æ”¾æŽ§åˆ¶å™¨çš„æ’槽。 å¯ç”¨æ’æ§½æ ¹æ“šæŽ§åˆ¶å™¨çš„é¡žåž‹èˆ‡å…¶å®ƒé™„åŠ çš„é™„ä»¶è€Œå®šã€‚</translation> </message> <message> <source>Selects the virtual disk image or the host drive used by this attachment.</source> @@ -5517,7 +5517,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>&IRQ:</source> - <translation type="unfinished"></translation> + <translation>&IRQ:</translation> </message> <message> <source>I/O Po&rt:</source> @@ -5634,7 +5634,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Dialog</source> - <translation type="unfinished"></translation> + <translation>Dialog</translation> </message> <message> <source>Folder Path:</source> @@ -5686,7 +5686,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>&IRQ:</source> - <translation type="unfinished"></translation> + <translation>&IRQ:</translation> </message> <message> <source>I/O Po&rt:</source> @@ -5698,7 +5698,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Controls the working mode of this serial port. If you select <b>Disconnected</b>, the guest OS will detect the serial port but will not be able to operate it.</source> - <translation>控制這個åºåˆ—åŸ çš„å·¥ä½œæ¨¡å¼ã€‚如果您é¸å– <b>已離線</b>,客體作æ¥ç³»çµ±å°‡æœƒåµæ¸¬åˆ°åºåˆ—åŸ ä½†ç„¡æ³•æ“作它。</translation> + <translation>控制這個åºåˆ—åŸ çš„å·¥ä½œæ¨¡å¼ã€‚如果您é¸å–<b>å·²ä¸æ–·é€£æŽ¥</b>,客體作æ¥ç³»çµ±å°‡æœƒåµæ¸¬åˆ°åºåˆ—åŸ ä½†ç„¡æ³•æ“作它。</translation> </message> <message> <source>If checked, the pipe specified in the <b>Port Path</b> 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> @@ -5710,7 +5710,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Displays the path to the serial port's pipe on the host when the port is working in <b>Host Pipe</b> mode, or the host serial device name when the port is working in <b>Host Device</b> mode.</source> - <translation>顯示主機ä¸åºåˆ—åŸ ç®¡ç·šçš„è·¯å¾‘ç•¶é€£æŽ¥åŸ å·¥ä½œåœ¨<b>主機管線</b>模å¼æ™‚,或主機åºåˆ—è£ç½®åç¨±ç•¶é€£æŽ¥åŸ å·¥ä½œåœ¨<b>主機è£ç½®</b>模å¼æ™‚。</translation> + <translation>ç•¶é€£æŽ¥åŸ å·¥ä½œåœ¨<b>主機管線</b>模å¼æ™‚顯示主機ä¸åºåˆ—åŸ ç®¡ç·šçš„è·¯å¾‘ï¼Œæˆ–è€…ç•¶é€£æŽ¥åŸ å·¥ä½œåœ¨<b>主機è£ç½®</b>模å¼æ™‚顯示主機åºåˆ—è£ç½®å稱。</translation> </message> <message> <source>Port/File &Path:</source> @@ -5764,16 +5764,16 @@ p, li { white-space: pre-wrap; } </message> <message> <source>you have assigned more than one virtual CPU to this VM. This will not work unless hardware virtualization (VT-x/AMD-V) is also enabled. This will be done automatically when you accept the VM Settings by pressing the OK button.</source> - <translation>您已指派一個以上虛擬 CPU åˆ°æ¤ VM。 除éžä¹Ÿå•Ÿç”¨ç¡¬é«”虛擬化 (VT-x/AMD-V) 這將ä¸æœƒå‹•ä½œã€‚ 當您按下 [確定] æŒ‰éˆ•æŽ¥å— VM è¨å®šå€¼é€™å°‡è‡ªå‹•å®Œæˆã€‚</translation> + <translation>您已指派一個以上虛擬 CPU åˆ°æ¤ VM。 除éžä¹Ÿå•Ÿç”¨ç¡¬é«”虛擬化 (VT-x/AMD-V) å¦å‰‡é€™å°‡ä¸æœƒå‹•ä½œã€‚ 當您按下 [確定] æŒ‰éˆ•æŽ¥å— VM è¨å®šå€¼é€™å°‡è‡ªå‹•å®Œæˆã€‚</translation> </message> <message> <source><qt>%1&nbsp;MB</qt></source> - <translation type="unfinished"></translation> + <translation><qt>%1&nbsp;MB</qt></translation> </message> <message> <source><qt>%1&nbsp;CPU</qt></source> <comment>%1 is 1 for now</comment> - <translation type="unfinished"></translation> + <translation><qt>%1&nbsp;CPU</qt></translation> </message> <message> <source>&Motherboard</source> @@ -5789,7 +5789,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>MB</source> - <translation type="unfinished"></translation> + <translation>MB</translation> </message> <message> <source>&Boot Order:</source> @@ -5836,7 +5836,7 @@ p, li { white-space: pre-wrap; } <translation>處ç†å™¨(&P):</translation> </message> <message> - <source>Controls the number of virtual CPUs in the virtual machine.</source> + <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>控制虛擬機器ä¸çš„虛擬 CPU 數。</translation> </message> <message> @@ -5857,7 +5857,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>When checked, the virtual machine will try to make use of the host CPU's hardware virtualization extensions such as Intel VT-x and AMD-V.</source> - <translation>勾é¸æ™‚,虛擬機器將儘é‡ä½¿ç”¨ä¸»æ©Ÿ CPU 的硬體虛擬化擴充如 Intel VT-x å’Œ AMD-V 。</translation> + <translation>勾é¸æ™‚,虛擬機器將嘗試使用主機 CPU 的硬體虛擬化擴充比如 Intel VT-x å’Œ AMD-V 。</translation> </message> <message> <source>Enable &VT-x/AMD-V</source> @@ -5865,7 +5865,7 @@ 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 的巢狀分é 延伸。</translation> + <translation>勾é¸æ™‚,虛擬機器將嘗試使用 Intel VT-x å’Œ AMD-V 的巢狀分é 擴充。</translation> </message> <message> <source>Enable Nested Pa&ging</source> @@ -5874,7 +5874,7 @@ p, li { white-space: pre-wrap; } <message> <source><qt>%1&nbsp;CPUs</qt></source> <comment>%1 is host cpu count * 2 for now</comment> - <translation type="unfinished"></translation> + <translation><qt>%1&nbsp;CPUs</qt></translation> </message> <message> <source>When checked, the guest will support the Extended Firmware Interface (EFI), which is required to boot certain guest OSes. Non-EFI aware OSes will not be able to boot if this option is activated.</source> @@ -5913,11 +5913,11 @@ p, li { white-space: pre-wrap; } </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>åŠ å…¥ä¸€å€‹æ–°çš„ USB 篩é¸å™¨èˆ‡æœ€åˆè¨å®šç‚ºç©ºå—串的所有欄ä½ã€‚ 請注æ„這些篩é¸å™¨æœƒç¬¦åˆä»»ä½•é™„åŠ çš„ USB è£ç½®ã€‚</translation> + <translation>åŠ å…¥ä¸€å€‹æ–°çš„ 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>åŠ å…¥ä¸€å€‹æ–°çš„ USB 篩é¸å™¨æ‰€æœ‰æ¬„ä½è¨å®šç‚ºé¸å– USB è£ç½®é™„åŠ åˆ°ä¸»æ©Ÿ PC 的值。</translation> + <translation>åŠ å…¥ä¸€å€‹æ–°çš„ USB 篩é¸å™¨ï¼Œå…¶æ‰€æœ‰æ¬„ä½è¨å®šç‚ºé¸å– USB è£ç½®é™„åŠ åˆ°ä¸»æ©Ÿ PC 的值。</translation> </message> <message> <source>Edits the selected USB filter.</source> @@ -6000,7 +6000,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Defines the vendor ID filter. The <i>exact match</i> string format is <tt>XXXX</tt> where <tt>X</tt> is a hexadecimal digit. An empty string will match any value.</source> - <translation>定義供應商 ID 篩é¸å™¨ã€‚ <i>完全相符</i> å—ä¸²æ ¼å¼ç‚º <tt>XXXX</tt> å…¶ä¸ <tt>X</tt> 是åå…進ä½æ•¸å—。 空å—串將與任何值相符。</translation> + <translation>定義供應商 ID 篩é¸å™¨ã€‚ <i>完全相符</i> å—ä¸²æ ¼å¼ç‚º <tt>XXXX</tt> å…¶ä¸ <tt>X</tt> 是åå…進ä½æ•¸å—。 空å—串將符åˆä»»ä½•å€¼ã€‚</translation> </message> <message> <source>&Product ID:</source> @@ -6008,7 +6008,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Defines the product ID filter. The <i>exact match</i> string format is <tt>XXXX</tt> where <tt>X</tt> is a hexadecimal digit. An empty string will match any value.</source> - <translation>å®šç¾©ç”¢å“ ID 篩é¸å™¨ã€‚ <i>完全相符</i> å—ä¸²æ ¼å¼ç‚º <tt>XXXX</tt> å…¶ä¸ <tt>X</tt> 是åå…進ä½æ•¸å—。 空å—串將與任何值相符。</translation> + <translation>å®šç¾©ç”¢å“ ID 篩é¸å™¨ã€‚ <i>完全相符</i> å—ä¸²æ ¼å¼ç‚º <tt>XXXX</tt> å…¶ä¸ <tt>X</tt> 是åå…進ä½æ•¸å—。 空å—串將符åˆä»»ä½•å€¼ã€‚</translation> </message> <message> <source>&Revision:</source> @@ -6016,7 +6016,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Defines the revision number filter. The <i>exact match</i> string format is <tt>IIFF</tt> where <tt>I</tt> is a decimal digit of the integer part and <tt>F</tt> is a decimal digit of the fractional part. An empty string will match any value.</source> - <translation>定義修訂號篩é¸å™¨ã€‚<i>完全相符</i> å—ä¸²æ ¼å¼ç‚º <tt>IIFF</tt> å…¶ä¸ <tt>I</tt> 是å進ä½æ•¸å—的整數部分 <tt>F</tt> 是å進ä½æ•¸å—çš„å°æ•¸éƒ¨åˆ†ã€‚ 空å—串將與任何值相符。</translation> + <translation>定義修訂號篩é¸å™¨ã€‚<i>完全相符</i> å—ä¸²æ ¼å¼ç‚º <tt>IIFF</tt> å…¶ä¸ <tt>I</tt> 是å進ä½æ•¸å—的整數部分 <tt>F</tt> 是å進ä½æ•¸å—çš„å°æ•¸éƒ¨åˆ†ã€‚ 空å—串將符åˆä»»ä½•å€¼ã€‚</translation> </message> <message> <source>&Manufacturer:</source> @@ -6024,7 +6024,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Defines the manufacturer filter as an <i>exact match</i> string. An empty string will match any value.</source> - <translation>å®šç¾©è£½é€ å•†ç¯©é¸å™¨ç‚º <i>完全相符</i> å—串。 空å—串將與任何值相符。</translation> + <translation>å®šç¾©è£½é€ å•†ç¯©é¸å™¨ç‚º <i>完全相符</i> å—串。 空å—串將符åˆä»»ä½•å€¼ã€‚</translation> </message> <message> <source>Pro&duct:</source> @@ -6032,7 +6032,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Defines the product name filter as an <i>exact match</i> string. An empty string will match any value.</source> - <translation>定義產å“å稱篩é¸å™¨ç‚º <i>完全相符</i> å—串。 空å—串將與任何值相符。</translation> + <translation>定義產å“å稱篩é¸å™¨ç‚º <i>完全相符</i> å—串。 空å—串將符åˆä»»ä½•å€¼ã€‚</translation> </message> <message> <source>&Serial No.:</source> @@ -6040,7 +6040,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Defines the serial number filter as an <i>exact match</i> string. An empty string will match any value.</source> - <translation>定義產åºè™Ÿç¯©é¸å™¨ç‚º <i>完全相符</i> å—串。 空å—串將與任何值相符。</translation> + <translation>定義產åºè™Ÿç¯©é¸å™¨ç‚º <i>完全相符</i> å—串。 空å—串將符åˆä»»ä½•å€¼ã€‚</translation> </message> <message> <source>Por&t:</source> @@ -6048,7 +6048,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Defines the host USB port filter as an <i>exact match</i> string. An empty string will match any value.</source> - <translation>定義主機 USB 篩é¸å™¨ç‚º <i>完全相符</i> å—串。 空å—串將與任何值相符。</translation> + <translation>定義主機 USB é€£æŽ¥åŸ ç¯©é¸å™¨ç‚º <i>完全相符</i> å—串。 空å—串將符åˆä»»ä½•å€¼ã€‚</translation> </message> <message> <source>R&emote:</source> @@ -6064,7 +6064,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Defines an action performed by the host computer when a matching device is attached: give it up to the host OS (<i>Ignore</i>) or grab it for later usage by virtual machines (<i>Hold</i>).</source> - <translation>å®šç¾©ç•¶é™„åŠ ç›¸ç¬¦çš„è£ç½®æ™‚主機電腦執行的動作: æ供它至主機作æ¥ç³»çµ± (<i>忽略</i>) 或以虛擬機器ç²å–它作為之後使用 (<i>ä¿ç•™</i>)。</translation> + <translation>å®šç¾©ç•¶é™„åŠ ç›¸ç¬¦çš„è£ç½®æ™‚主機電腦執行的動作: 在主機作æ¥ç³»çµ±æ”¾æ£„ (<i>忽略</i>) 或由虛擬機器擷å–它作為之後使用 (<i>ä¿ç•™</i>)。</translation> </message> <message> <source>USB Filter Details</source> diff --git a/src/VBox/Frontends/VirtualBox/nls/qt_hu.ts b/src/VBox/Frontends/VirtualBox/nls/qt_hu.ts index 0ec7887bf..9a1ea5c3b 100644 --- a/src/VBox/Frontends/VirtualBox/nls/qt_hu.ts +++ b/src/VBox/Frontends/VirtualBox/nls/qt_hu.ts @@ -13,7 +13,7 @@ </message> <message> <source>Revert back to device '%1'</source> - <translation type="unfinished"></translation> + <translation>Visszaállás a(z) '%1' eszközre</translation> </message> </context> <context> @@ -1301,7 +1301,7 @@ Biztosan törlöd?</translation> </message> <message> <source>Demi</source> - <translation type="unfinished">Fél</translation> + <translation>Fél</translation> </message> <message> <source>Light</source> @@ -1329,7 +1329,7 @@ Biztosan törlöd?</translation> </message> <message> <source>Cyrillic</source> - <translation type="unfinished">Cirill</translation> + <translation>Cirill</translation> </message> <message> <source>Armenian</source> @@ -1994,7 +1994,7 @@ Biztosan törlöd?</translation> </message> <message> <source>%1: Unknown error %2</source> - <translation>%1: A kÃvánt socket művelet nem támogatott</translation> + <translation>%1: Ismeretlen hiba: %2</translation> </message> </context> <context> @@ -2196,7 +2196,7 @@ Biztosan törlöd?</translation> </message> <message> <source><h3>About Qt</h3>%1<p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is a Nokia product. See <a href="http://www.trolltech.com/qt/">www.trolltech.com/qt/</a> for more information.</p></source> - <translation type="unfinished"></translation> + <translation><h3>A Qt névjegye</h3>%1<p>A Qt egy C++ eszközkészlet a kereszt-platformos alkalmazásfejlesztéshez.</p><p>A Qt egy-forrású hordozhatóságot biztosÃt az MS&nbsp;Windows, a Mac&nbsp;OS&nbsp;X, a Linux, és az összes nagyobb kereskedelmi Unix változat között. A Qt mobileszközökhöz is elérhetÅ‘, pl. Qtopia Core.</p><p>A Qt a Trolltech terméke. További információk: <a href="http://www.trolltech.com/qt/">www.trolltech.com/qt/</a> .</p></translation> </message> </context> <context> @@ -2436,7 +2436,7 @@ Biztosan törlöd?</translation> </message> <message> <source>Unable to execute select statement</source> - <translation type="unfinished"></translation> + <translation>A SELECT utasÃtás nem végrehajtható</translation> </message> <message> <source>Unable to execute statement</source> @@ -2451,7 +2451,7 @@ Biztosan törlöd?</translation> </message> <message> <source>Unable to connect - Driver doesn't support all needed functionality</source> - <translation type="unfinished"></translation> + <translation>Nem sikerült kapcsolódni - A driver nem támogat minden szükséges szolgáltatást</translation> </message> <message> <source>Unable to disable autocommit</source> @@ -2884,7 +2884,7 @@ Válassz másik fájlnevet.</translation> </message> <message> <source>Next page</source> - <translation type="unfinished">KövetkezÅ‘ oldal</translation> + <translation>KövetkezÅ‘ oldal</translation> </message> <message> <source>Previous page</source> @@ -2936,7 +2936,7 @@ Válassz másik fájlnevet.</translation> </message> <message> <source>Print</source> - <translation type="unfinished">Nyomtatás</translation> + <translation>Nyomtatás</translation> </message> <message> <source>Page setup</source> @@ -3084,14 +3084,14 @@ Válassz másik fájlnevet.</translation> <name>QProgressDialog</name> <message> <source>Cancel</source> - <translation type="unfinished">Mégsem</translation> + <translation>Mégsem</translation> </message> </context> <context> <name>QPushButton</name> <message> <source>Open</source> - <translation type="unfinished">Megnyitás</translation> + <translation>Megnyitás</translation> </message> </context> <context> @@ -3248,15 +3248,15 @@ Válassz másik fájlnevet.</translation> </message> <message> <source>Page up</source> - <translation type="unfinished">Oldal felfelé</translation> + <translation>Oldal felfelé</translation> </message> <message> <source>Page right</source> - <translation type="unfinished">Oldal jobbra</translation> + <translation>Oldal jobbra</translation> </message> <message> <source>Page down</source> - <translation type="unfinished">Oldal lefelé</translation> + <translation>Oldal lefelé</translation> </message> <message> <source>Scroll left</source> @@ -3358,55 +3358,55 @@ Válassz másik fájlnevet.</translation> </message> <message> <source>Esc</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <source>Tab</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <source>Backtab</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <source>Backspace</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <source>Return</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <source>Enter</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <source>Ins</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <source>Del</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <source>Pause</source> - <translation type="unfinished">Szünet</translation> + <translation></translation> </message> <message> <source>Print</source> - <translation type="unfinished">Nyomtatás</translation> + <translation>Print Screen</translation> </message> <message> <source>SysReq</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <source>Home</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <source>End</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <source>Left</source> @@ -3853,7 +3853,7 @@ Válassz másik fájlnevet.</translation> </message> <message> <source>Private key does not certificate public key, %1</source> - <translation type="unfinished"></translation> + <translation>A privát és a publikus kulcs nem illik össze: %1</translation> </message> </context> <context> @@ -3972,35 +3972,35 @@ Válassz másik fájlnevet.</translation> </message> <message> <source>ZWJ Zero width joiner</source> - <translation type="unfinished"></translation> + <translation>ZWJ Nulla szélességű egyesÃtÅ‘ jelölÅ‘</translation> </message> <message> <source>ZWNJ Zero width non-joiner</source> - <translation type="unfinished"></translation> + <translation>ZWN Nulla szélességű nem-egyesÃtÅ‘ jelölÅ‘</translation> </message> <message> <source>ZWSP Zero width space</source> - <translation type="unfinished"></translation> + <translation>ZWSP Nulla szélességű szóköz</translation> </message> <message> <source>LRE Start of left-to-right embedding</source> - <translation type="unfinished"></translation> + <translation>LRE balról-jobbra beágyazás kezdete</translation> </message> <message> <source>RLE Start of right-to-left embedding</source> - <translation type="unfinished"></translation> + <translation>RLE jobbról-balra beágyazás kezdete</translation> </message> <message> <source>LRO Start of left-to-right override</source> - <translation type="unfinished"></translation> + <translation>LRO balról-jobbra felülbÃrálás kezdete</translation> </message> <message> <source>RLO Start of right-to-left override</source> - <translation type="unfinished"></translation> + <translation>RLO Jobbról-balra felülbÃrálás kezdete</translation> </message> <message> <source>PDF Pop directional formatting</source> - <translation type="unfinished"></translation> + <translation>PDF normál irányú formázási jelölÅ‘</translation> </message> <message> <source>Insert Unicode control character</source> @@ -4173,7 +4173,7 @@ Válassz másik fájlnevet.</translation> <message> <source>Ignore</source> <comment>Ignore Grammar context menu item</comment> - <translation type="unfinished">Kihagyás</translation> + <translation>Kihagyás</translation> </message> <message> <source>Spelling</source> @@ -4398,7 +4398,7 @@ Válassz másik fájlnevet.</translation> </message> <message> <source>Close</source> - <translation type="unfinished">Bezárás</translation> + <translation>Bezárás</translation> </message> <message> <source>&Unshade</source> @@ -4413,7 +4413,7 @@ Válassz másik fájlnevet.</translation> </message> <message> <source>error triggered by consumer</source> - <translation type="unfinished"></translation> + <translation>feldolgozó által kiváltott hiba</translation> </message> <message> <source>unexpected end of file</source> @@ -4481,11 +4481,11 @@ Válassz másik fájlnevet.</translation> </message> <message> <source>external parsed general entity reference not allowed in attribute value</source> - <translation type="unfinished"></translation> + <translation>külsÅ‘ feldolgozású általános entitáshivatkozás nem engedélyezett attribútum értékében</translation> </message> <message> <source>external parsed general entity reference not allowed in DTD</source> - <translation type="unfinished"></translation> + <translation>külsÅ‘ feldolgozású általános entitáshivatkozás nem engedélyezett a DTD-ben</translation> </message> <message> <source>unparsed entity reference in wrong context</source> @@ -4624,23 +4624,23 @@ Válassz másik fájlnevet.</translation> </message> <message> <source>Reference to external entity '%1' in attribute value.</source> - <translation type="unfinished"></translation> + <translation>Hivatkozás '%1' külsÅ‘ entitásra attribútum értékben.</translation> </message> <message> <source>Invalid character reference.</source> - <translation type="unfinished"></translation> + <translation>Érvénytelen karakterhivatkozás.</translation> </message> <message> <source>Encountered incorrectly encoded content.</source> - <translation type="unfinished"></translation> + <translation>Hibás kódolású tartalom.</translation> </message> <message> <source>The standalone pseudo attribute must appear after the encoding.</source> - <translation type="unfinished"></translation> + <translation>Az egyedülálló pszeudo-attribútumnak a kódolás után kell szerepelnie.</translation> </message> <message> <source>%1 is an invalid PUBLIC identifier.</source> - <translation type="unfinished">%1 egy érvénytelen publikus azonosÃtó.</translation> + <translation>%1 egy érvénytelen publikus azonosÃtó.</translation> </message> </context> <context> diff --git a/src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts b/src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts index 21d946c54..bb0292d7e 100644 --- a/src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts +++ b/src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts @@ -123,11 +123,11 @@ have libgstreamer-plugins-base installed.</source> <name>Q3DataTable</name> <message> <source>True</source> - <translation type="unfinished"></translation> + <translation>True</translation> </message> <message> <source>False</source> - <translation type="unfinished"></translation> + <translation>False</translation> </message> <message> <source>Insert</source> @@ -262,7 +262,7 @@ have libgstreamer-plugins-base installed.</source> </message> <message> <source>Dir</source> - <translation type="unfinished"></translation> + <translation>Dir</translation> </message> <message> <source>Special</source> @@ -682,7 +682,7 @@ to <message> <source>QT_LAYOUT_DIRECTION</source> <comment>Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.</comment> - <translation type="unfinished"></translation> + <translation>QT_LAYOUT_DIRECTION</translation> </message> <message> <source>Activates the program's main window</source> @@ -708,15 +708,15 @@ to <name>QColorDialog</name> <message> <source>Hu&e:</source> - <translation type="unfinished"></translation> + <translation>Hu&e:</translation> </message> <message> <source>&Sat:</source> - <translation type="unfinished"></translation> + <translation>&Sat:</translation> </message> <message> <source>&Val:</source> - <translation type="unfinished"></translation> + <translation>&Val:</translation> </message> <message> <source>&Red:</source> @@ -759,11 +759,11 @@ to </message> <message> <source>False</source> - <translation type="unfinished"></translation> + <translation>False</translation> </message> <message> <source>True</source> - <translation type="unfinished"></translation> + <translation>True</translation> </message> <message> <source>Close</source> @@ -863,34 +863,34 @@ to <name>QDateTimeEdit</name> <message> <source>AM</source> - <translation type="unfinished"></translation> + <translation>AM</translation> </message> <message> <source>am</source> - <translation type="unfinished"></translation> + <translation>am</translation> </message> <message> <source>PM</source> - <translation type="unfinished"></translation> + <translation>PM</translation> </message> <message> <source>pm</source> - <translation type="unfinished"></translation> + <translation>pm</translation> </message> </context> <context> <name>QDial</name> <message> <source>QDial</source> - <translation type="unfinished"></translation> + <translation>QDial</translation> </message> <message> <source>SpeedoMeter</source> - <translation type="unfinished"></translation> + <translation>SpeedoMeter</translation> </message> <message> <source>SliderHandle</source> - <translation type="unfinished"></translation> + <translation>SliderHandle</translation> </message> </context> <context> @@ -1262,23 +1262,23 @@ Do you want to delete it anyway?</source> </message> <message> <source>%1 TB</source> - <translation type="unfinished"></translation> + <translation>%1 TB</translation> </message> <message> <source>%1 GB</source> - <translation type="unfinished"></translation> + <translation>%1 GB</translation> </message> <message> <source>%1 MB</source> - <translation type="unfinished"></translation> + <translation>%1 MB</translation> </message> <message> <source>%1 KB</source> - <translation type="unfinished"></translation> + <translation>%1 KB</translation> </message> <message> <source>%1 bytes</source> - <translation type="unfinished"></translation> + <translation>%1 bytes</translation> </message> </context> <context> @@ -1293,7 +1293,7 @@ Do you want to delete it anyway?</source> </message> <message> <source>Demi Bold</source> - <translation type="unfinished"></translation> + <translation>Demi Bold</translation> </message> <message> <source>Black</source> @@ -1301,11 +1301,11 @@ Do you want to delete it anyway?</source> </message> <message> <source>Demi</source> - <translation type="unfinished"></translation> + <translation>Demi</translation> </message> <message> <source>Light</source> - <translation type="unfinished"></translation> + <translation>Light</translation> </message> <message> <source>Italic</source> @@ -1437,7 +1437,7 @@ Do you want to delete it anyway?</source> </message> <message> <source>Symbol</source> - <translation type="unfinished"></translation> + <translation>Symbol</translation> </message> <message> <source>Ogham</source> @@ -1837,7 +1837,7 @@ Do you want to delete it anyway?</source> <name>QInputContext</name> <message> <source>XIM</source> - <translation type="unfinished"></translation> + <translation>XIM</translation> </message> <message> <source>XIM input method</source> @@ -2077,7 +2077,7 @@ Do you want to delete it anyway?</source> <name>QMdiSubWindow</name> <message> <source>%1 - [%2]</source> - <translation type="unfinished"></translation> + <translation>%1 - [%2]</translation> </message> <message> <source>Close</source> @@ -2121,7 +2121,7 @@ Do you want to delete it anyway?</source> </message> <message> <source>- [%1]</source> - <translation type="unfinished"></translation> + <translation>- [%1]</translation> </message> <message> <source>Maximize</source> @@ -2720,99 +2720,99 @@ Please choose a different file name.</source> </message> <message> <source>A0</source> - <translation type="unfinished"></translation> + <translation>A0</translation> </message> <message> <source>A1</source> - <translation type="unfinished"></translation> + <translation>A1</translation> </message> <message> <source>A2</source> - <translation type="unfinished"></translation> + <translation>A2</translation> </message> <message> <source>A3</source> - <translation type="unfinished"></translation> + <translation>A3</translation> </message> <message> <source>A4</source> - <translation type="unfinished"></translation> + <translation>A4</translation> </message> <message> <source>A5</source> - <translation type="unfinished"></translation> + <translation>A5</translation> </message> <message> <source>A6</source> - <translation type="unfinished"></translation> + <translation>A6</translation> </message> <message> <source>A7</source> - <translation type="unfinished"></translation> + <translation>A7</translation> </message> <message> <source>A8</source> - <translation type="unfinished"></translation> + <translation>A8</translation> </message> <message> <source>A9</source> - <translation type="unfinished"></translation> + <translation>A9</translation> </message> <message> <source>B0</source> - <translation type="unfinished"></translation> + <translation>B0</translation> </message> <message> <source>B1</source> - <translation type="unfinished"></translation> + <translation>B1</translation> </message> <message> <source>B2</source> - <translation type="unfinished"></translation> + <translation>B2</translation> </message> <message> <source>B3</source> - <translation type="unfinished"></translation> + <translation>B3</translation> </message> <message> <source>B4</source> - <translation type="unfinished"></translation> + <translation>B4</translation> </message> <message> <source>B5</source> - <translation type="unfinished"></translation> + <translation>B5</translation> </message> <message> <source>B6</source> - <translation type="unfinished"></translation> + <translation>B6</translation> </message> <message> <source>B7</source> - <translation type="unfinished"></translation> + <translation>B7</translation> </message> <message> <source>B8</source> - <translation type="unfinished"></translation> + <translation>B8</translation> </message> <message> <source>B9</source> - <translation type="unfinished"></translation> + <translation>B9</translation> </message> <message> <source>B10</source> - <translation type="unfinished"></translation> + <translation>B10</translation> </message> <message> <source>C5E</source> - <translation type="unfinished"></translation> + <translation>C5E</translation> </message> <message> <source>DLE</source> - <translation type="unfinished"></translation> + <translation>DLE</translation> </message> <message> <source>Executive</source> - <translation type="unfinished"></translation> + <translation>Executive</translation> </message> <message> <source>Folio</source> @@ -2820,19 +2820,19 @@ Please choose a different file name.</source> </message> <message> <source>Ledger</source> - <translation type="unfinished"></translation> + <translation>Ledger</translation> </message> <message> <source>Legal</source> - <translation type="unfinished"></translation> + <translation>Legal</translation> </message> <message> <source>Letter</source> - <translation type="unfinished"></translation> + <translation>Letter</translation> </message> <message> <source>Tabloid</source> - <translation type="unfinished"></translation> + <translation>Tabloid</translation> </message> <message> <source>US Common #10 Envelope</source> @@ -3076,7 +3076,7 @@ Please choose a different file name.</source> </message> <message> <source>...</source> - <translation type="unfinished"></translation> + <translation>...</translation> </message> </context> <context> @@ -3353,23 +3353,23 @@ Please choose a different file name.</source> <name>QShortcut</name> <message> <source>Space</source> - <translation type="unfinished"></translation> + <translation>Space</translation> </message> <message> <source>Esc</source> - <translation type="unfinished"></translation> + <translation>Esc</translation> </message> <message> <source>Tab</source> - <translation type="unfinished"></translation> + <translation>Tab</translation> </message> <message> <source>Backtab</source> - <translation type="unfinished"></translation> + <translation>Backtab</translation> </message> <message> <source>Backspace</source> - <translation type="unfinished"></translation> + <translation>Backspace</translation> </message> <message> <source>Return</source> @@ -3377,19 +3377,19 @@ Please choose a different file name.</source> </message> <message> <source>Enter</source> - <translation type="unfinished"></translation> + <translation>Enter</translation> </message> <message> <source>Ins</source> - <translation type="unfinished"></translation> + <translation>Ins</translation> </message> <message> <source>Del</source> - <translation type="unfinished"></translation> + <translation>Del</translation> </message> <message> <source>Pause</source> - <translation type="unfinished"></translation> + <translation>Pause</translation> </message> <message> <source>Print</source> @@ -3397,15 +3397,15 @@ Please choose a different file name.</source> </message> <message> <source>SysReq</source> - <translation type="unfinished"></translation> + <translation>SysReq</translation> </message> <message> <source>Home</source> - <translation type="unfinished"></translation> + <translation>Home</translation> </message> <message> <source>End</source> - <translation type="unfinished"></translation> + <translation>End</translation> </message> <message> <source>Left</source> @@ -3425,23 +3425,23 @@ Please choose a different file name.</source> </message> <message> <source>PgUp</source> - <translation type="unfinished"></translation> + <translation>PgUp</translation> </message> <message> <source>PgDown</source> - <translation type="unfinished"></translation> + <translation>PgDown</translation> </message> <message> <source>CapsLock</source> - <translation type="unfinished"></translation> + <translation>CapsLock</translation> </message> <message> <source>NumLock</source> - <translation type="unfinished"></translation> + <translation>NumLock</translation> </message> <message> <source>ScrollLock</source> - <translation type="unfinished"></translation> + <translation>ScrollLock</translation> </message> <message> <source>Menu</source> @@ -3493,11 +3493,11 @@ Please choose a different file name.</source> </message> <message> <source>Treble Up</source> - <translation type="unfinished"></translation> + <translation>Treble Up</translation> </message> <message> <source>Treble Down</source> - <translation type="unfinished"></translation> + <translation>Treble Down</translation> </message> <message> <source>Media Play</source> @@ -3609,7 +3609,7 @@ Please choose a different file name.</source> </message> <message> <source>Print Screen</source> - <translation type="unfinished"></translation> + <translation>Print Screen</translation> </message> <message> <source>Page Up</source> @@ -3621,11 +3621,11 @@ Please choose a different file name.</source> </message> <message> <source>Caps Lock</source> - <translation type="unfinished"></translation> + <translation>Caps Lock</translation> </message> <message> <source>Num Lock</source> - <translation type="unfinished"></translation> + <translation>Num Lock</translation> </message> <message> <source>Number Lock</source> @@ -3633,7 +3633,7 @@ Please choose a different file name.</source> </message> <message> <source>Scroll Lock</source> - <translation type="unfinished"></translation> + <translation>Scroll Lock</translation> </message> <message> <source>Insert</source> @@ -3645,7 +3645,7 @@ Please choose a different file name.</source> </message> <message> <source>Escape</source> - <translation type="unfinished"></translation> + <translation>Escape</translation> </message> <message> <source>System Request</source> @@ -3665,19 +3665,19 @@ Please choose a different file name.</source> </message> <message> <source>Context1</source> - <translation type="unfinished"></translation> + <translation>Context1</translation> </message> <message> <source>Context2</source> - <translation type="unfinished"></translation> + <translation>Context2</translation> </message> <message> <source>Context3</source> - <translation type="unfinished"></translation> + <translation>Context3</translation> </message> <message> <source>Context4</source> - <translation type="unfinished"></translation> + <translation>Context4</translation> </message> <message> <source>Call</source> @@ -3685,7 +3685,7 @@ Please choose a different file name.</source> </message> <message> <source>Hangup</source> - <translation type="unfinished"></translation> + <translation>Hangup</translation> </message> <message> <source>Flip</source> @@ -3693,27 +3693,27 @@ Please choose a different file name.</source> </message> <message> <source>Ctrl</source> - <translation type="unfinished"></translation> + <translation>Ctrl</translation> </message> <message> <source>Shift</source> - <translation type="unfinished"></translation> + <translation>Shift</translation> </message> <message> <source>Alt</source> - <translation type="unfinished"></translation> + <translation>Alt</translation> </message> <message> <source>Meta</source> - <translation type="unfinished"></translation> + <translation>Meta</translation> </message> <message> <source>+</source> - <translation type="unfinished"></translation> + <translation>+</translation> </message> <message> <source>F%1</source> - <translation type="unfinished"></translation> + <translation>F%1</translation> </message> <message> <source>Home Page</source> @@ -4242,12 +4242,12 @@ Please choose a different file name.</source> <message> <source>LTR</source> <comment>Left to Right context menu item</comment> - <translation type="unfinished"></translation> + <translation>LTR</translation> </message> <message> <source>RTL</source> <comment>Right to Left context menu item</comment> - <translation type="unfinished"></translation> + <translation>RTL</translation> </message> <message> <source>Inspect</source> @@ -4295,7 +4295,7 @@ Please choose a different file name.</source> <name>QWidget</name> <message> <source>*</source> - <translation type="unfinished"></translation> + <translation>*</translation> </message> </context> <context> @@ -4385,7 +4385,7 @@ Please choose a different file name.</source> </message> <message> <source>%1 - [%2]</source> - <translation type="unfinished"></translation> + <translation>%1 - [%2]</translation> </message> <message> <source>Minimize</source> @@ -4682,7 +4682,7 @@ Please choose a different file name.</source> </message> <message> <source>Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; </source> - <translation>時間 24:%1:%2.%3 無效。 å°æ™‚是 24,但分é˜ã€ 秒,和毫秒ä¸æ˜¯æ‰€æœ‰ 0;</translation> + <translation>時間 24:%1:%2.%3 無效。 å°æ™‚是 24,但分é˜ã€ 秒,和毫秒ä¸æ˜¯å…¨éƒ¨ 0;</translation> </message> <message> <source>Time %1:%2:%3.%4 is invalid.</source> @@ -4846,7 +4846,7 @@ Please choose a different file name.</source> </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> - <translation>在處ç†æŒ‡ç¤ºçš„目標å稱ä¸èƒ½ç‚º %1 上的任æ„組åˆçš„å’Œå°å¯«ã€‚ å› æ¤ï¼Œç„¡æ•ˆçš„ %2。</translation> + <translation>在處ç†æŒ‡ç¤ºçš„目標å稱ä¸èƒ½ç‚º %1 上的任æ„組åˆçš„å’Œå°å¯«ã€‚ å› æ¤ï¼Œ %2 無效。</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> @@ -4974,7 +4974,7 @@ Please choose a different file name.</source> </message> <message> <source>A zone offset must be in the range %1..%2 inclusive. %3 is out of range.</source> - <translation>å€åŸŸçš„å移é‡å¿…é ˆåœ¨ 1%範åœå…§...%2 å…±èžã€‚ %3 超出了範åœã€‚</translation> + <translation>å€åŸŸçš„å移é‡å¿…é ˆåœ¨ç¯„åœ %1..%2 包容。 %3 超出範åœã€‚</translation> </message> <message> <source>%1 is not a whole number of minutes.</source> @@ -5038,7 +5038,7 @@ Please choose a different file name.</source> </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> - <translation>å¯ä»¥å®£å‘Šå—首 %1 繫çµå‘½å‘½å空間 2%。 é è¨ï¼Œå®ƒå·²ç¶“繫çµè‡³å—首 %1。</translation> + <translation>åªæœ‰å—首 %1 å¯ä»¥å®£å‘Šç¹«çµå‘½å空間 %2。 é è¨ï¼Œå®ƒå·²ç¶“繫çµè‡³å—首 %1。</translation> </message> <message> <source>Prefix %1 is already declared in the prolog.</source> @@ -5050,7 +5050,7 @@ Please choose a different file name.</source> </message> <message> <source>The Schema Import feature is not supported, and therefore %1 declarations cannot occur.</source> - <translation>ä¸æ”¯æ´æž¶æ§‹å°Žå…¥åŠŸèƒ½ï¼Œå’Œ %1 çš„è²æ˜Žä¸æœƒç™¼ç”Ÿçš„å› æ¤ã€‚</translation> + <translation>架構匯入功能ä¸æ”¯æ´ï¼Œä¸”å› æ¤ %1 的宣告ä¸èƒ½ç™¼ç”Ÿã€‚</translation> </message> <message> <source>The target namespace of a %1 cannot be empty.</source> @@ -5094,7 +5094,7 @@ Please choose a different file name.</source> </message> <message> <source>The Schema Validation Feature is not supported. Hence, %1-expressions may not be used.</source> - <translation>ä¸æ”¯æ´æž¶æ§‹é©—è‰ç‰¹å¾µã€‚ å› æ¤ï¼Œ1-ä¸èƒ½ä½¿ç”¨é‹ç®—å¼ã€‚</translation> + <translation>架構驗è‰åŠŸèƒ½ä¸æ”¯æ´ã€‚ å› æ¤ï¼Œ%1-é‹ç®—å¼ä¸èƒ½ä½¿ç”¨ã€‚</translation> </message> <message> <source>None of the pragma expressions are supported. Therefore, a fallback expression must be present</source> @@ -5214,7 +5214,7 @@ Please choose a different file name.</source> </message> <message> <source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source> - <translation>Unicode Codepoint Collation åªæ”¯æ´ (%1)。 ä¸æ”¯æ´ %2 。</translation> + <translation>Unicode Codepoint Collation åªæ”¯æ´ (%1)。 ä¸æ”¯æ´ %2。</translation> </message> <message> <source>Attribute %1 can't be serialized because it appears at the top level.</source> diff --git a/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp index c182bed88..54667cea2 100644 --- a/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp +++ b/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp @@ -1260,6 +1260,10 @@ bool VBoxConsoleView::event (QEvent *e) re->width(), re->height(), re->bitsPerPixel())); #endif + bool notifyMainWnd = mFrameBuf->width() != re->width() + || mFrameBuf->height() != re->height(); + + /* Store the new size to prevent unwanted resize hints being * sent back. */ storeConsoleSize(re->width(), re->height()); @@ -1346,7 +1350,8 @@ bool VBoxConsoleView::event (QEvent *e) mIgnoreFrameBufferResize = false; } - mMainWnd->onDisplayResize (re->width(), re->height()); + if (notifyMainWnd) + mMainWnd->onDisplayResize (re->width(), re->height()); return true; } diff --git a/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp index da42b21cc..ea634effc 100644 --- a/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp +++ b/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp @@ -957,7 +957,7 @@ bool VBoxConsoleWnd::openView (const CSession &aSession) if (usbctl.isNull()) { /* hide usb_menu & usb_separator & usb_status_led */ - mDevicesUSBMenu->setVisible (false); + mDevicesUSBMenu->menuAction()->setVisible (false); mUSBLed->setHidden (true); } else @@ -1229,14 +1229,20 @@ void VBoxConsoleWnd::clearMask() #endif } -void VBoxConsoleWnd::onDisplayResize (ulong aHeight, ulong aWidth) +void VBoxConsoleWnd::onDisplayResize (ulong aWidth, ulong aHeight) { - if (mIsSeamless && QApplication::desktop()->availableGeometry (this).size() != QSize (aHeight, aWidth)) + if (mIsSeamless) { - mVmSeamlessAction->setChecked (false); - /* should be cleared already, but just in case */ - if (mIsSeamless) - toggleFullscreenMode (false, true); + const QRect & geo = QApplication::desktop()->availableGeometry (this); + int dW = geo.width() - (int)aWidth; + int dH = geo.height() - (int)aHeight; + if (RT_ABS (dW) > 16 || RT_ABS (dH) > 16) + { + mVmSeamlessAction->setChecked (false); + /* should be cleared already, but just in case */ + if (mIsSeamless) + toggleFullscreenMode (false, true); + } } } diff --git a/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.h b/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.h index bb5556765..4dcdd0cdc 100644 --- a/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.h +++ b/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.h @@ -112,7 +112,7 @@ public: void clearMask(); /* informs that the guest display is resized */ - void onDisplayResize (ulong aHeight, ulong aWidth); + void onDisplayResize (ulong aWidth, ulong aHeight); signals: diff --git a/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp b/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp index 7ddf57b27..98198c85d 100644 --- a/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp +++ b/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp @@ -58,6 +58,7 @@ #include <QTimer> #include <QDir> #include <QHelpEvent> +#include <QLocale> #include <math.h> @@ -1616,6 +1617,9 @@ QString VBoxGlobal::detailsReport (const CMachine &aMachine, bool aWithLinks) /* BIOS Settings holder */ CBIOSSettings biosSettings = aMachine.GetBIOSSettings(); + /* System details row count: */ + int iRowCount = 2; /* Memory & CPU details rows initially. */ + /* Boot order */ QString bootOrder; for (ulong i = 1; i <= mVBox.GetSystemProperties().GetMaxBootPosition(); ++ i) @@ -1630,6 +1634,8 @@ QString VBoxGlobal::detailsReport (const CMachine &aMachine, bool aWithLinks) if (bootOrder.isEmpty()) bootOrder = toString (KDeviceType_Null); + iRowCount += 1; /* Boot-order row. */ + #ifdef VBOX_WITH_FULL_DETAILS_REPORT /* ACPI */ QString acpi = biosSettings.GetACPIEnabled() @@ -1645,6 +1651,8 @@ QString VBoxGlobal::detailsReport (const CMachine &aMachine, bool aWithLinks) QString pae = aMachine.GetCpuProperty(KCpuPropertyType_PAE) ? tr ("Enabled", "details report (PAE/NX)") : tr ("Disabled", "details report (PAE/NX)"); + + iRowCount += 3; /* Full report rows. */ #endif /* VBOX_WITH_FULL_DETAILS_REPORT */ /* VT-x/AMD-V */ @@ -1657,6 +1665,12 @@ QString VBoxGlobal::detailsReport (const CMachine &aMachine, bool aWithLinks) ? tr ("Enabled", "details report (Nested Paging)") : tr ("Disabled", "details report (Nested Paging)"); + /* VT-x/AMD-V availability: */ + bool fVTxAMDVSupported = virtualBox().GetHost().GetProcessorFeature(KProcessorFeature_HWVirtEx); + + if (fVTxAMDVSupported) + iRowCount += 2; /* VT-x/AMD-V items. */ + QString item = QString (sSectionItemTpl2).arg (tr ("Base Memory", "details report"), tr ("<nobr>%1 MB</nobr>", "details report")) .arg (aMachine.GetMemorySize()) @@ -1669,16 +1683,14 @@ QString VBoxGlobal::detailsReport (const CMachine &aMachine, bool aWithLinks) + QString (sSectionItemTpl2).arg (tr ("IO APIC", "details report"), ioapic) + QString (sSectionItemTpl2).arg (tr ("PAE/NX", "details report"), pae) #endif /* VBOX_WITH_FULL_DETAILS_REPORT */ - + QString (sSectionItemTpl2).arg (tr ("VT-x/AMD-V", "details report"), virt) - + QString (sSectionItemTpl2).arg (tr ("Nested Paging", "details report"), nested) ; + if (fVTxAMDVSupported) + item += QString (sSectionItemTpl2).arg (tr ("VT-x/AMD-V", "details report"), virt) + + QString (sSectionItemTpl2).arg (tr ("Nested Paging", "details report"), nested); + report += sectionTpl -#ifdef VBOX_WITH_FULL_DETAILS_REPORT - .arg (2 + 8) /* rows */ -#else - .arg (2 + 5) /* rows */ -#endif /* VBOX_WITH_FULL_DETAILS_REPORT */ + .arg (2 + iRowCount) /* rows */ .arg (":/chipset_16px.png", /* icon */ "#system", /* link */ tr ("System", "details report"), /* title */ @@ -4352,6 +4364,8 @@ void VBoxGlobal::showRegistrationDialog (bool aForce) mRegDlg->show(); } } +#else + Q_UNUSED(aForce); #endif } diff --git a/src/VBox/Frontends/VirtualBox/src/globals/VBoxProblemReporter.cpp b/src/VBox/Frontends/VirtualBox/src/globals/VBoxProblemReporter.cpp index adde0f277..6034de7f8 100644 --- a/src/VBox/Frontends/VirtualBox/src/globals/VBoxProblemReporter.cpp +++ b/src/VBox/Frontends/VirtualBox/src/globals/VBoxProblemReporter.cpp @@ -501,7 +501,7 @@ void VBoxProblemReporter::cannotLoadGlobalConfig (const CVirtualBox &vbox, "<p>The application will now terminate.</p>") .arg (vbox.GetSettingsFilePath()), !res.isOk() ? formatErrorInfo (res) - : QString ("<p>%1.</p>").arg (vboxGlobal().emphasize (error))); + : QString ("<!--EOM--><p>%1</p>").arg (vboxGlobal().emphasize (error))); } void VBoxProblemReporter::cannotSaveGlobalConfig (const CVirtualBox &vbox) diff --git a/src/VBox/Frontends/VirtualBox/src/settings/global/VBoxGLSettingsGeneral.ui b/src/VBox/Frontends/VirtualBox/src/settings/global/VBoxGLSettingsGeneral.ui index eecec0bf8..4ec42f386 100644 --- a/src/VBox/Frontends/VirtualBox/src/settings/global/VBoxGLSettingsGeneral.ui +++ b/src/VBox/Frontends/VirtualBox/src/settings/global/VBoxGLSettingsGeneral.ui @@ -156,7 +156,7 @@ <item row="7" column="1" colspan="2"> <widget class="QCheckBox" name="mCbCheckPresentationMode"> <property name="text"> - <string>&Auto show Dock && Menubar in fullscreen</string> + <string>&Auto show Dock and Menubar in fullscreen</string> </property> </widget> </item> diff --git a/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsSystem.cpp b/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsSystem.cpp index 5700f2d1b..d56c64825 100644 --- a/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsSystem.cpp +++ b/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsSystem.cpp @@ -182,6 +182,10 @@ void VBoxVMSettingsSystem::getFrom (const CMachine &aMachine) mCbPae->setEnabled (fPAESupported); mCbPae->setChecked (aMachine.GetCpuProperty(KCpuPropertyType_PAE)); + /* VT-x/AMD-V page */ + if (!fVTxAMDVSupported) + mTwSystem->removeTab(2); + /* VT-x/AMD-V */ mCbVirt->setEnabled (fVTxAMDVSupported); mCbVirt->setChecked (aMachine.GetHWVirtExProperty(KHWVirtExPropertyType_Enabled)); diff --git a/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsSystem.ui b/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsSystem.ui index 695767f10..b79d9c6e7 100644 --- a/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsSystem.ui +++ b/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsSystem.ui @@ -389,7 +389,7 @@ <item> <widget class="QIAdvancedSlider" name="mSlCPU"> <property name="whatsThis"> - <string>Controls the number of virtual CPUs in the virtual machine.</string> + <string>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.</string> </property> <property name="maximum"> <number>4096</number> @@ -462,7 +462,7 @@ </sizepolicy> </property> <property name="whatsThis"> - <string>Controls the number of virtual CPUs in the virtual machine.</string> + <string>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.</string> </property> </widget> </item> diff --git a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c index c7073369f..32160e77a 100644 --- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c +++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c @@ -1,4 +1,4 @@ -/* $Rev: 55982 $ */ +/* $Rev: 58763 $ */ /** @file * VBoxDrv - The VirtualBox Support Driver - Linux specifics. */ @@ -221,8 +221,10 @@ static struct miscdevice gMiscDevice = # if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30) static struct dev_pm_ops gPlatformPMOps = { - .suspend = VBoxDrvSuspend, - .resume = VBoxDrvResume, + .suspend = VBoxDrvSuspend, /* before entering deep sleep */ + .resume = VBoxDrvResume, /* after wakeup from deep sleep */ + .freeze = VBoxDrvSuspend, /* before creating hibernation image */ + .restore = VBoxDrvResume, /* after wakeing up from hibernation */ }; # endif @@ -231,7 +233,7 @@ static struct platform_driver gPlatformDriver = .probe = VBoxDrvProbe, # if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 30) .suspend = VBoxDrvSuspend, - .resume = VBoxDrvResume, + .resume = VBoxDrvResume, # endif /** @todo .shutdown? */ .driver = diff --git a/src/VBox/Installer/solaris/Makefile.kmk b/src/VBox/Installer/solaris/Makefile.kmk index 12403c64f..357ce2646 100644 --- a/src/VBox/Installer/solaris/Makefile.kmk +++ b/src/VBox/Installer/solaris/Makefile.kmk @@ -186,7 +186,7 @@ SOLARIS_STRIP_EXES = \ VBoxSVC \ $(if $(VBOX_WITH_CROGL),VBoxTestOGL,) \ VBoxXPCOMIPCD \ - kchmviewer + $(if $(VBOX_WITH_KCHMVIEWER),kchmviewer,) ifdef VBOX_WITH_USB ifndef VBOX_WITH_NEW_USB_CODE_ON_SOLARIS @@ -223,11 +223,12 @@ SOLARIS_STRIP_BINS = \ $(if $(VBOX_WITH_GUEST_PROPS),VBoxGuestPropSvc.so,) \ $(if $(VBOX_WITH_QTGUI),\ VBoxKeyboard.so \ - libQtCoreVBox.so.4 \ - libQtGuiVBox.so.4 \ - libQtNetworkVBox.so.4 \ - $(if $(VBOX_GUI_USE_QGL), libQtOpenGLVBox.so.4,) \ - accessible/libqtaccessiblewidgets.so,) \ + $(if $(VBOX_WITH_QT4_SUN),\ + libQtCoreVBox.so.4 \ + libQtGuiVBox.so.4 \ + libQtNetworkVBox.so.4 \ + $(if $(VBOX_GUI_USE_QGL),libQtOpenGLVBox.so.4,) \ + accessible/libqtaccessiblewidgets.so,)) \ $(if $(VBOX_WITH_DEBUGGER_GUI),VBoxDbg.so,) \ $(if $(VBOX_WITH_CROGL),\ VBoxOGLhostcrutil.so \ @@ -299,9 +300,10 @@ SOLARIS_EXTRAS = \ # These extra Qt libs are purely for running VBoxQtconfig ifdef VBOX_WITH_QTGUI SOLARIS_QTLIBS = \ - libQtXmlVBox.so.4 \ - libQtSqlVBox.so.4 \ - libQt3SupportVBox.so.4 + $(if $(VBOX_WITH_QT4_SUN),\ + libQtXmlVBox.so.4 \ + libQtSqlVBox.so.4 \ + libQt3SupportVBox.so.4,) endif @@ -530,14 +532,16 @@ endif $(QUIET)$(if $(VBOX_OSE),,$(INSTALL) -m 0644 $(PATH_BIN)/LICENSE $(SOLARIS_VBOXINST_DIR)/LICENSE) $(QUIET)$(if $(VBOX_OSE),,$(INSTALL) -m 0644 $(PATH_BIN)/LICENSE $(SOLARIS_BASEINST_DIR)/vbox.copyright) ifdef VBOX_WITH_COMBINED_PACKAGE + ifndef VBOX_OSE $(QUIET)$(if $(VBOX_WITH_VBOXSDL),$(INSTALL) -m 0644 $(PATH_DEVTOOLS)/solaris.x86/libSDL/v1.2.13/lib/libSDL-1.2.so.0.11.2 $(SOLARIS_VBOXINST_DIR_32)/libSDL-1.2.so.0,) $(QUIET)$(if $(VBOX_WITH_VBOXSDL),$(INSTALL) -m 0644 $(PATH_DEVTOOLS)/solaris.amd64/libSDL/v1.2.13/lib/libSDL-1.2.so.0.11.2 $(SOLARIS_VBOXINST_DIR_64)/libSDL-1.2.so.0,) + endif @# @todo -XXX- how to get rid of this manual MKDIR ? $(QUIET)$(MKDIR) -p $(SOLARIS_VBOXINST_DIR)/$(VBOX_SOL_PYTHON_DIR_64) $(QUIET)$(if $(VBOX_WITH_PYTHON),$(INSTALL) -m 0644 $(if $(VBOX_DO_STRIP),-s) $(wildcard $(SOLARIS_OUT_BIN_32)/VBoxPython*.so) $(SOLARIS_VBOXINST_DIR)/,) $(QUIET)$(if $(VBOX_WITH_PYTHON),$(INSTALL) -m 0644 $(if $(VBOX_DO_STRIP),-s) $(wildcard $(SOLARIS_OUT_BIN_64)/VBoxPython*.so) $(SOLARIS_VBOXINST_DIR)/$(VBOX_SOL_PYTHON_DIR_64)/,) - $(QUIET)$(if $(VBOX_WITH_QTGUI),$(INSTALL) -m 0755 $(SOLARIS_PATH_QT_32)/bin/qtconfig $(SOLARIS_VBOXINST_DIR_32)/VBoxQtconfig,) - $(QUIET)$(if $(VBOX_WITH_QTGUI),$(INSTALL) -m 0755 $(SOLARIS_PATH_QT_64)/bin/qtconfig $(SOLARIS_VBOXINST_DIR_64)/VBoxQtconfig,) + $(QUIET)$(if $(VBOX_WITH_QTGUI),$(if ($VBOX_WITH_QT4_SUN),$(INSTALL) -m 0755 $(SOLARIS_PATH_QT_32)/bin/qtconfig $(SOLARIS_VBOXINST_DIR_32)/VBoxQtconfig,),) + $(QUIET)$(if $(VBOX_WITH_QTGUI),$(if $(VBOX_WITH_QT4_SUN),$(INSTALL) -m 0755 $(SOLARIS_PATH_QT_64)/bin/qtconfig $(SOLARIS_VBOXINST_DIR_64)/VBoxQtconfig,),) $(QUIET)$(INSTALL) -m 0755 $(SOLARIS_OUT_BIN_32)/VBoxISAExec $(SOLARIS_VBOXINST_DIR)/VBoxISAExec $(QUIET)$(if $(VBOX_WITH_QTGUI),$(LN_SYMLINK) -f ../rdesktop-vrdp-keymaps $(SOLARIS_VBOXINST_DIR_32)/rdesktop-vrdp-keymaps,) $(QUIET)$(if $(VBOX_WITH_QTGUI),$(LN_SYMLINK) -f ../rdesktop-vrdp-keymaps $(SOLARIS_VBOXINST_DIR_64)/rdesktop-vrdp-keymaps,) @@ -550,13 +554,15 @@ ifdef VBOX_WITH_COMBINED_PACKAGE $(QUIET)$(if $(VBOX_WITH_EFIFW_PACKING),$(LN_SYMLINK) -f ../VBoxEFI64.fd $(SOLARIS_VBOXINST_DIR_64)/VBoxEFI64.fd,) $(QUIET)$(if $(VBOX_WITH_EFIFW_PACKING),$(LN_SYMLINK) -f ../VBoxEFI64.fd $(SOLARIS_VBOXINST_DIR_32)/VBoxEFI64.fd,) else + ifndef VBOX_OSE $(QUIET)$(if $(VBOX_WITH_VBOXSDL),$(INSTALL) -m 0644 $(PATH_DEVTOOLS_TRG)/libSDL/v1.2.13/lib/libSDL-1.2.so.0.11.2 $(SOLARIS_VBOXINST_DIR_ISA)/libSDL-1.2.so.0,) + endif @# @todo -XXX- how to get rid of this manual MKDIR ? ifdef VBOX_WITH_PYTHON $(QUIET)$(if $(SOL64_PKG),$(MKDIR) -p $(SOLARIS_VBOXINST_DIR)/$(VBOX_SOL_PYTHON_DIR_64),) $(QUIET)$(INSTALL) -m 0644 $(if $(VBOX_DO_STRIP),-s) $(wildcard $(SOLARIS_OUT_BIN)/VBoxPython*.so) $(SOLARIS_VBOXINST_DIR)/$(if $(SOL64_PKG),$(VBOX_SOL_PYTHON_DIR_64)/,) endif - $(QUIET)$(if $(VBOX_WITH_QTGUI),$(INSTALL) -m 0755 $(VBOX_PATH_QT4)/bin/qtconfig $(SOLARIS_VBOXINST_DIR_ISA)/VBoxQtconfig,) + $(QUIET)$(if $(VBOX_WITH_QTGUI),$(if $(VBOX_WITH_QT4_SUN),$(INSTALL) -m 0755 $(VBOX_PATH_QT4)/bin/qtconfig $(SOLARIS_VBOXINST_DIR_ISA)/VBoxQtconfig,),) $(QUIET)$(INSTALL) -m 0755 $(SOLARIS_OUT_BIN)/VBoxISAExec $(SOLARIS_VBOXINST_DIR)/VBoxISAExec $(QUIET)$(if $(VBOX_WITH_QTGUI),$(LN_SYMLINK) -f ../rdesktop-vrdp-keymaps $(SOLARIS_VBOXINST_DIR_ISA)/rdesktop-vrdp-keymaps,) $(QUIET)$(if $(VBOX_WITH_QTGUI),$(LN_SYMLINK) -f ../additions $(SOLARIS_VBOXINST_DIR_ISA)/additions,) diff --git a/src/VBox/Installer/solaris/vboxconfig.sh b/src/VBox/Installer/solaris/vboxconfig.sh index dc9ca94ea..45b96bf5d 100755 --- a/src/VBox/Installer/solaris/vboxconfig.sh +++ b/src/VBox/Installer/solaris/vboxconfig.sh @@ -29,6 +29,7 @@ HOST_OS_MAJORVERSION=`uname -r` HOST_OS_MINORVERSION=`uname -v | sed -e "s/snv_//" -e "s/[^0-9]//"` DIR_VBOXBASE=/opt/VirtualBox +DIR_CONF="/platform/i86pc/kernel/drv" DIR_MOD_32="/platform/i86pc/kernel/drv" DIR_MOD_64=$DIR_MOD_32/amd64 @@ -348,12 +349,17 @@ load_module() # !! failure is always fatal install_drivers() { - if test -n "_HARDENED_"; then - add_driver "$MOD_VBOXDRV" "$DESC_VBOXDRV" "$FATALOP" "not-$NULLOP" "'* 0600 root sys'" + if test -f "$DIR_CONF/vboxdrv.conf"; then + if test -n "_HARDENED_"; then + add_driver "$MOD_VBOXDRV" "$DESC_VBOXDRV" "$FATALOP" "not-$NULLOP" "'* 0600 root sys'" + else + add_driver "$MOD_VBOXDRV" "$DESC_VBOXDRV" "$FATALOP" "not-$NULLOP" "'* 0666 root sys'" + fi + load_module "drv/$MOD_VBOXDRV" "$DESC_VBOXDRV" "$FATALOP" else - add_driver "$MOD_VBOXDRV" "$DESC_VBOXDRV" "$FATALOP" "not-$NULLOP" "'* 0666 root sys'" + errorprint "Extreme error! Missing $DIR_CONF/vboxdrv.conf, aborting." + return 1 fi - load_module "drv/$MOD_VBOXDRV" "$DESC_VBOXDRV" "$FATALOP" # Add vboxdrv to devlink.tab sed -e '/name=vboxdrv/d' /etc/devlink.tab > /etc/devlink.vbox @@ -365,17 +371,17 @@ install_drivers() if test $? -eq 0 && test -h "/dev/vboxdrv"; then - if test -f /platform/i86pc/kernel/drv/vboxnet.conf; then + if test -f "$DIR_CONF/vboxnet.conf"; then add_driver "$MOD_VBOXNET" "$DESC_VBOXNET" "$FATALOP" load_module "drv/$MOD_VBOXNET" "$DESC_VBOXNET" "$FATALOP" fi - if test -f /platform/i86pc/kernel/drv/vboxflt.conf; then + if test -f "$DIR_CONF/vboxflt.conf"; then add_driver "$MOD_VBOXFLT" "$DESC_VBOXFLT" "$FATALOP" load_module "drv/$MOD_VBOXFLT" "$DESC_VBOXFLT" "$FATALOP" fi - if test -f /platform/i86pc/kernel/drv/vboxusbmon.conf && test "$HOST_OS_MAJORVERSION" != "5.10"; then + if test -f "$DIR_CONF/vboxusbmon.conf" && test "$HOST_OS_MAJORVERSION" != "5.10"; then # For VirtualBox 3.1 the new USB code requires Nevada > 123 if test "$HOST_OS_MINORVERSION" -gt 123; then add_driver "$MOD_VBOXUSBMON" "$DESC_VBOXUSBMON" "$FATALOP" "not-$NULLOP" "'* 0666 root sys'" @@ -397,7 +403,7 @@ install_drivers() # This driver is special, we need it in the boot-archive but since there is no # USB device to attach to now (it's done at runtime) it will fail to attach so # redirect attaching failure output to /dev/null - if test -f /platform/i86pc/kernel/drv/vboxusb.conf; then + if test -f "$DIR_CONF/vboxusb.conf"; then add_driver "$MOD_VBOXUSB" "$DESC_VBOXUSB" "$FATALOP" "$NULLOP" load_module "drv/$MOD_VBOXUSB" "$DESC_VBOXUSB" "$FATALOP" fi @@ -467,6 +473,14 @@ remove_drivers() mv -f $nwambackupfile $nwamfile fi + # remove netmask configuration + nmaskfile=/etc/netmasks + nmaskbackupfile=$nmaskfile.vbox + if test -f "$nmaskfile"; then + sed -e '/#VirtualBox_SectionStart/,/#VirtualBox_SectionEnd/d' $nmaskfile > $nmaskbackupfile + mv -f $nmaskbackupfile $nmaskfile + fi + return 0 } @@ -565,7 +579,7 @@ postinstall() install_drivers if test "$?" -eq 0; then - if test -f /platform/i86pc/kernel/drv/vboxnet.conf; then + if test -f "$DIR_CONF/vboxnet.conf"; then # nwam/dhcpagent fix nwamfile=/etc/nwam/llp nwambackupfile=$nwamfile.vbox @@ -579,6 +593,23 @@ postinstall() $BIN_IFCONFIG vboxnet0 plumb up if test "$?" -eq 0; then $BIN_IFCONFIG vboxnet0 192.168.56.1 netmask 255.255.255.0 up + + # add the netmask to stay persistent across host reboots + nmaskfile=/etc/netmasks + nmaskbackupfile=$nmaskfile.vbox + if test -f $nmaskfile; then + sed -e '/#VirtualBox_SectionStart/,/#VirtualBox_SectionEnd/d' $nmaskfile > $nmaskbackupfile + echo "#VirtualBox_SectionStart" >> $nmaskbackupfile + inst=0 + networkn=56 + while test $inst -ne 1; do + echo "192.168.$networkn.0 255.255.255.0" >> $nmaskbackupfile + inst=`expr $inst + 1` + networkn=`expr $networkn + 1` + done + echo "#VirtualBox_SectionEnd" >> $nmaskbackupfile + mv -f $nmaskbackupfile $nmaskfile + fi else # Should this be fatal? warnprint "Failed to bring up vboxnet0!!" @@ -685,7 +716,7 @@ find_bins while test $# -gt 0; do case "$1" in - --postinstall | --preremove | --installdrivers | --removedrivers) + --postinstall | --preremove | --installdrivers | --removedrivers | --setupdrivers) drvop="$1" ;; --fatal) @@ -697,6 +728,10 @@ do --ips) ISIPS="$IPSOP" ;; + --altkerndir) + # Use alternate kernel driver config folder (dev only) + DIR_CONF="/usr/kernel/drv" + ;; *) break ;; @@ -719,6 +754,10 @@ case "$drvop" in --removedrivers) remove_drivers "$fatal" ;; +--setupdrivers) + remove_drivers "$fatal" + install_drivers + ;; *) errorprint "Invalid operation $drvop" exit 1 diff --git a/src/VBox/Main/ConsoleImpl2.cpp b/src/VBox/Main/ConsoleImpl2.cpp index c49d11534..be9b14867 100644 --- a/src/VBox/Main/ConsoleImpl2.cpp +++ b/src/VBox/Main/ConsoleImpl2.cpp @@ -260,11 +260,13 @@ DECLCALLBACK(int) Console::configConstructor(PVM pVM, void *pvConsole) rc = CFGMR3InsertInteger(pRoot, "RamHoleSize", cbRamHole); RC_CHECK(); rc = CFGMR3InsertInteger(pRoot, "NumCPUs", cCpus); RC_CHECK(); rc = CFGMR3InsertInteger(pRoot, "TimerMillies", 10); RC_CHECK(); +#ifdef VBOX_WITH_RAW_MODE rc = CFGMR3InsertInteger(pRoot, "RawR3Enabled", 1); /* boolean */ RC_CHECK(); rc = CFGMR3InsertInteger(pRoot, "RawR0Enabled", 1); /* boolean */ RC_CHECK(); /** @todo Config: RawR0, PATMEnabled and CSAMEnabled needs attention later. */ rc = CFGMR3InsertInteger(pRoot, "PATMEnabled", 1); /* boolean */ RC_CHECK(); rc = CFGMR3InsertInteger(pRoot, "CSAMEnabled", 1); /* boolean */ RC_CHECK(); +#endif /* cpuid leaf overrides. */ static uint32_t const s_auCpuIdRanges[] = @@ -304,21 +306,25 @@ DECLCALLBACK(int) Console::configConstructor(PVM pVM, void *pvConsole) /* hardware virtualization extensions */ BOOL fHWVirtExEnabled; + BOOL fHwVirtExtForced; +#ifdef VBOX_WITH_RAW_MODE hrc = pMachine->GetHWVirtExProperty(HWVirtExPropertyType_Enabled, &fHWVirtExEnabled); H(); if (cCpus > 1) /** @todo SMP: This isn't nice, but things won't work on mac otherwise. */ fHWVirtExEnabled = TRUE; - -#ifdef RT_OS_DARWIN - rc = CFGMR3InsertInteger(pRoot, "HwVirtExtForced", fHWVirtExEnabled); RC_CHECK(); -#else +# ifdef RT_OS_DARWIN + fHwVirtExtForced = fHWVirtExEnabled; +# else /* - With more than 4GB PGM will use different RAMRANGE sizes for raw mode and hv mode to optimize lookup times. - With more than one virtual CPU, raw-mode isn't a fallback option. */ - BOOL fHwVirtExtForced = fHWVirtExEnabled - && ( cbRam > (_4G - cbRamHole) - || cCpus > 1); + fHwVirtExtForced = fHWVirtExEnabled + && ( cbRam > (_4G - cbRamHole) + || cCpus > 1); +# endif +#else /* !VBOX_WITH_RAW_MODE */ + fHWVirtExEnabled = fHwVirtExtForced = TRUE; +#endif /* !VBOX_WITH_RAW_MODE */ rc = CFGMR3InsertInteger(pRoot, "HwVirtExtForced", fHwVirtExtForced); RC_CHECK(); -#endif PCFGMNODE pHWVirtExt; rc = CFGMR3InsertNode(pRoot, "HWVirtExt", &pHWVirtExt); RC_CHECK(); @@ -355,7 +361,7 @@ DECLCALLBACK(int) Console::configConstructor(PVM pVM, void *pvConsole) } #endif - /* @todo Not exactly pretty to check strings; VBOXOSTYPE would be better, but that requires quite a bit of API change in Main. */ + /** @todo Not exactly pretty to check strings; VBOXOSTYPE would be better, but that requires quite a bit of API change in Main. */ if ( !fIs64BitGuest && fIOAPIC && ( osTypeId == "WindowsNT4" @@ -2263,7 +2269,13 @@ DECLCALLBACK(int) Console::configConstructor(PVM pVM, void *pvConsole) char *pszColon = (char *)memchr(szTrunk, ':', sizeof(szTrunk)); if (!pszColon) { - hrc = aNetworkAdapter->Detach(); H(); + /* + * Dynamic changing of attachment causes an attempt to configure + * network with invalid host adapter (as it is must be changed before + * the attachment), calling Detach here will cause a deadlock. + * See #4750. + * hrc = aNetworkAdapter->Detach(); H(); + */ return VMSetError(pVM, VERR_INTERNAL_ERROR, RT_SRC_POS, N_("Malformed host interface networking name '%ls'"), HifName.raw()); @@ -2616,7 +2628,6 @@ DECLCALLBACK(int) Console::configConstructor(PVM pVM, void *pvConsole) Utf8Str HifNameUtf8(HifName); const char *pszHifName = HifNameUtf8.raw(); - LogRel(("NetworkAttachmentType_HostOnly: COMGETTER(HostInterface): %s\n", pszHifName)); ComPtr<IHostNetworkInterface> hostInterface; rc = host->FindHostNetworkInterfaceByName(HifName, hostInterface.asOutParam()); if (!SUCCEEDED(rc)) @@ -2810,7 +2821,7 @@ DECLCALLBACK(int) Console::configConstructor(PVM pVM, void *pvConsole) if (fAttachDetach) { rc = PDMR3DriverAttach(pVM, pszDevice, uInstance, uLun, 0 /*fFlags*/, NULL /* ppBase */); - AssertRC(rc); + //AssertRC(rc); } { diff --git a/src/VBox/Main/DHCPServerImpl.cpp b/src/VBox/Main/DHCPServerImpl.cpp index df2e4aabc..9d95a54d4 100644 --- a/src/VBox/Main/DHCPServerImpl.cpp +++ b/src/VBox/Main/DHCPServerImpl.cpp @@ -249,10 +249,10 @@ STDMETHODIMP DHCPServer::Start(IN_BSTR aNetworkName, IN_BSTR aTrunkName, IN_BSTR m.dhcp.setOption(DHCPCFG_TRUNKTYPE, Utf8Str(aTrunkType), true); //temporary hack for testing // DHCPCFG_NAME - char strMAC[13]; + char strMAC[32]; Guid guid; guid.create(); - RTStrPrintf (strMAC, sizeof(strMAC), "080027%02X%02X%02X", + RTStrPrintf (strMAC, sizeof(strMAC), "08:00:27:%02X:%02X:%02X", guid.ptr()->au8[0], guid.ptr()->au8[1], guid.ptr()->au8[2]); m.dhcp.setOption(DHCPCFG_MACADDRESS, strMAC, true); m.dhcp.setOption(DHCPCFG_IPADDRESS, Utf8Str(m.IPAddress), true); diff --git a/src/VBox/Main/DisplayImpl.cpp b/src/VBox/Main/DisplayImpl.cpp index f4ca9d71f..fc64c5b43 100644 --- a/src/VBox/Main/DisplayImpl.cpp +++ b/src/VBox/Main/DisplayImpl.cpp @@ -430,8 +430,14 @@ Display::displaySSMSaveScreenshot(PSSMHANDLE pSSM, void *pvUser) int rc = that->mpDrv->pUpPort->pfnTakeScreenshot (that->mpDrv->pUpPort, &pu8Data, &cbData, &cx, &cy); #endif /* !VBOX_WITH_OLD_VBVA_LOCK */ - if (RT_SUCCESS(rc)) + /* + * It is possible that success is returned but everything is 0 or NULL. + * (no display attached if a VM is running with VBoxHeadless on OSE for example) + */ + if (RT_SUCCESS(rc) && pu8Data) { + Assert(cx && cy); + /* Prepare a small thumbnail and a PNG screenshot. */ displayMakeThumbnail(pu8Data, cx, cy, &pu8Thumbnail, &cbThumbnail, &cxThumbnail, &cyThumbnail); displayMakePNG(pu8Data, cx, cy, &pu8PNG, &cbPNG, &cxPNG, &cyPNG); diff --git a/src/VBox/Main/MachineImpl.cpp b/src/VBox/Main/MachineImpl.cpp index fb2792d06..18a7dce3c 100644 --- a/src/VBox/Main/MachineImpl.cpp +++ b/src/VBox/Main/MachineImpl.cpp @@ -1368,10 +1368,12 @@ STDMETHODIMP Machine::SetCpuProperty(CpuPropertyType_T property, BOOL aVal) switch(property) { case CpuPropertyType_PAE: + mHWData.backup(); mHWData->mPAEEnabled = !!aVal; break; case CpuPropertyType_Synthetic: + mHWData.backup(); mHWData->mSyntheticCpu = !!aVal; break; @@ -1466,6 +1468,7 @@ STDMETHODIMP Machine::SetCpuIdLeaf(ULONG aId, ULONG aValEax, ULONG aValEbx, ULON case 0xA: AssertCompile(RT_ELEMENTS(mHWData->mCpuIdStdLeafs) == 0xA); AssertRelease(aId < RT_ELEMENTS(mHWData->mCpuIdStdLeafs)); + mHWData.backup(); mHWData->mCpuIdStdLeafs[aId].ulId = aId; mHWData->mCpuIdStdLeafs[aId].ulEax = aValEax; mHWData->mCpuIdStdLeafs[aId].ulEbx = aValEbx; @@ -1486,6 +1489,7 @@ STDMETHODIMP Machine::SetCpuIdLeaf(ULONG aId, ULONG aValEax, ULONG aValEbx, ULON case 0x8000000A: AssertCompile(RT_ELEMENTS(mHWData->mCpuIdExtLeafs) == 0xA); AssertRelease(aId - 0x80000000 < RT_ELEMENTS(mHWData->mCpuIdExtLeafs)); + mHWData.backup(); mHWData->mCpuIdExtLeafs[aId - 0x80000000].ulId = aId; mHWData->mCpuIdExtLeafs[aId - 0x80000000].ulEax = aValEax; mHWData->mCpuIdExtLeafs[aId - 0x80000000].ulEbx = aValEbx; @@ -1524,6 +1528,7 @@ STDMETHODIMP Machine::RemoveCpuIdLeaf(ULONG aId) case 0xA: AssertCompile(RT_ELEMENTS(mHWData->mCpuIdStdLeafs) == 0xA); AssertRelease(aId < RT_ELEMENTS(mHWData->mCpuIdStdLeafs)); + mHWData.backup(); /* Invalidate leaf. */ mHWData->mCpuIdStdLeafs[aId].ulId = UINT32_MAX; break; @@ -1541,6 +1546,7 @@ STDMETHODIMP Machine::RemoveCpuIdLeaf(ULONG aId) case 0x8000000A: AssertCompile(RT_ELEMENTS(mHWData->mCpuIdExtLeafs) == 0xA); AssertRelease(aId - 0x80000000 < RT_ELEMENTS(mHWData->mCpuIdExtLeafs)); + mHWData.backup(); /* Invalidate leaf. */ mHWData->mCpuIdExtLeafs[aId - 0x80000000].ulId = UINT32_MAX; break; @@ -1561,6 +1567,8 @@ STDMETHODIMP Machine::RemoveAllCpuIdLeafs() HRESULT rc = checkStateDependency(MutableStateDep); CheckComRCReturnRC(rc); + mHWData.backup(); + /* Invalidate all standard leafs. */ for (unsigned i = 0; i < RT_ELEMENTS(mHWData->mCpuIdStdLeafs); i++) mHWData->mCpuIdStdLeafs[i].ulId = UINT32_MAX; @@ -2290,11 +2298,9 @@ STDMETHODIMP Machine::AttachDevice(IN_BSTR aControllerName, AutoCaller autoCaller(this); CheckComRCReturnRC(autoCaller.rc()); - /* VirtualBox::findHardDisk() and the corresponding other methods for - * DVD and floppy media need *write* lock (for getting rid of unneeded - * host drives which got enumerated); also we want to make sure the - * media object we pick up doesn't get unregistered before we finish. */ - AutoMultiWriteLock2 alock(mParent, this); + // request the host lock first, since might be calling Host methods for getting host drives; + // next, protect the media tree all the while we're in here, as well as our member variables + AutoMultiWriteLock3 alock(mParent->host(), mParent, this); HRESULT rc = checkStateDependency(MutableStateDep); CheckComRCReturnRC(rc); @@ -6108,11 +6114,6 @@ HRESULT Machine::loadStorageControllers(const settings::Storage &data, HRESULT rc = S_OK; - /* Make sure the attached hard disks don't get unregistered until we - * associate them with tis machine (important for VMs loaded (opened) after - * VirtualBox startup) */ - AutoReadLock vboxLock(mParent); - for (settings::StorageControllersList::const_iterator it = data.llStorageControllers.begin(); it != data.llStorageControllers.end(); ++it) @@ -9720,7 +9721,6 @@ bool SessionMachine::hasMatchingUSBFilter (const ComObjPtr<HostUSBDevice> &aDevi if (!autoCaller.isOk()) return false; - AssertReturn(isWriteLockOnCurrentThread(), false); #ifdef VBOX_WITH_USB switch (mData->mMachineState) diff --git a/src/VBox/Main/Makefile.kmk b/src/VBox/Main/Makefile.kmk index c48836ca8..dfe861592 100644 --- a/src/VBox/Main/Makefile.kmk +++ b/src/VBox/Main/Makefile.kmk @@ -44,7 +44,7 @@ ifdef VBOX_ONLY_SDK # I'm Evil! Dr. Evil. include $(KBUILD_PATH)/tools/VCC70.kmk include $(KBUILD_PATH)/sdks/WINPSDK.kmk -endif #!VBOX_ONLY_SDK +endif # !VBOX_ONLY_SDK # Construct VBOX_MAIN_DEFS @@ -55,10 +55,11 @@ ifneq ($(KBUILD_TARGET),win) $(error "VBox: VBOX_WITH_XPCOM isn't defined") endif ifneq ($(KBUILD_TARGET),os2) - VBOX_MAIN_DEFS+= VBOX_WITH_SYS_V_IPC_SESSION_WATCHER + VBOX_MAIN_DEFS += VBOX_WITH_SYS_V_IPC_SESSION_WATCHER endif endif VBOX_MAIN_DEFS += \ + $(if $(VBOX_WITH_RAW_MODE),VBOX_WITH_RAW_MODE,) \ $(if $(VBOX_WITH_NETFLT),VBOX_WITH_NETFLT,) \ $(if $(VBOX_WITH_CROGL),VBOX_WITH_CROGL,) \ $(if $(VBOX_WITH_GUEST_PROPS),VBOX_WITH_GUEST_PROPS,) \ diff --git a/src/VBox/Main/MediumImpl.cpp b/src/VBox/Main/MediumImpl.cpp index 81b94e385..b03eb882e 100644 --- a/src/VBox/Main/MediumImpl.cpp +++ b/src/VBox/Main/MediumImpl.cpp @@ -6,7 +6,7 @@ */ /* - * Copyright (C) 2008-2009 Sun Microsystems, Inc. + * Copyright (C) 2008-2010 Sun Microsystems, Inc. * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -388,9 +388,12 @@ public: { AutoWriteLock alock(*it); Assert((*it)->m->state == MediumState_LockedWrite || + (*it)->m->state == MediumState_LockedRead || (*it)->m->state == MediumState_Deleting); if ((*it)->m->state == MediumState_LockedWrite) (*it)->UnlockWrite(NULL); + else if ((*it)->m->state == MediumState_LockedRead) + (*it)->UnlockRead(NULL); else (*it)->m->state = MediumState_Created; @@ -446,6 +449,20 @@ public: mParent = aMedium->mParent; } + + /* Include all images from base to source. */ + ComObjPtr <Medium> pParent = aMedium->getParent(); + while (!pParent.isNull()) + { + rc = pParent->addCaller(); + if (FAILED(rc)) return rc; + + rc = pParent->LockRead(NULL); + if (FAILED(rc)) return rc; + + push_front(pParent); + pParent = pParent->getParent(); + } } else { @@ -469,6 +486,8 @@ public: } } + mSource = aMedium; + return S_OK; } @@ -499,6 +518,8 @@ public: push_front(aMedium); + mTarget = aMedium; + return S_OK; } @@ -532,15 +553,53 @@ public: return S_OK; } + int targetIdx() + { + Assert(!mTarget.isNull()); + int idx = 0; + + for (List::const_iterator it = begin(); it != end(); ++it) + { + ComObjPtr<Medium> pMedium = *it; + + /* Do we have the target? */ + if (pMedium == mTarget) + break; + + idx++; + } + + return idx; + } + + int sourceIdx() + { + Assert(!mSource.isNull()); + int idx = 0; + + for (List::const_iterator it = begin(); it != end(); ++it) + { + ComObjPtr<Medium> pMedium = *it; + + /* Do we have the source? */ + if (pMedium == mSource) + break; + + idx++; + } + + return idx; + } + bool isForward() const { return mForward; } Medium *parent() const { return mParent; } const List &children() const { return mChildren; } Medium *source() const - { AssertReturn(size() > 0, NULL); return mForward ? front() : back(); } + { AssertReturn(size() > 0, NULL); return mSource; } Medium *target() const - { AssertReturn(size() > 0, NULL); return mForward ? back() : front(); } + { AssertReturn(size() > 0, NULL); return mTarget; } protected: @@ -606,6 +665,10 @@ private: ComObjPtr <Medium> mParent; /** Children of the source when backward merge (if any) */ List mChildren; + /** Source image */ + ComObjPtr <Medium> mSource; + /** Target image */ + ComObjPtr <Medium> mTarget; }; //////////////////////////////////////////////////////////////////////////////// @@ -822,6 +885,8 @@ HRESULT Medium::FinalConstruct() m->vdIfCallsTcpNet.pfnRead = RTTcpRead; m->vdIfCallsTcpNet.pfnWrite = RTTcpWrite; m->vdIfCallsTcpNet.pfnFlush = RTTcpFlush; + m->vdIfCallsTcpNet.pfnGetLocalAddress = RTTcpGetLocalAddress; + m->vdIfCallsTcpNet.pfnGetPeerAddress = RTTcpGetPeerAddress; /* Initialize the per-disk interface chain */ int vrc; @@ -2002,20 +2067,13 @@ STDMETHODIMP Medium::UnlockWrite(MediumState_T *aState) STDMETHODIMP Medium::Close() { - AutoMayUninitSpan mayUninitSpan(this); - CheckComRCReturnRC(mayUninitSpan.rc()); - - if (mayUninitSpan.alreadyInProgress()) - return S_OK; - /* unregisterWithVirtualBox() is assumed to always need a write mVirtualBox - * lock as it is intenede to modify its internal structires. Also, we want + * lock as it is intended to modify its internal structires. Also, we want * to unregister ourselves atomically after detecting that closure is * possible to make sure that we don't do that after another thread has done * VirtualBox::find*() but before it starts using us (provided that it holds - * a mVirtualBox lock of course). */ - - AutoWriteLock vboxLock(mVirtualBox); + * a mVirtualBox lock of course). Additionally get hard disk tree lock. */ + AutoMultiWriteLock2 alock(mVirtualBox->lockHandle(), this->getTreeLock()); bool wasCreated = true; @@ -2049,8 +2107,9 @@ STDMETHODIMP Medium::Close() CheckComRCReturnRC(rc); } - /* cause uninit() to happen on success */ - mayUninitSpan.acceptUninit(); + /* Keep the locks held, as otherwise the consistency of the medium tree + * cannot be guaranteed. Just continue with uninitialization. */ + uninit(); return S_OK; } @@ -4618,9 +4677,6 @@ HRESULT Medium::setFormat(CBSTR aFormat) } /** - * @note Called from this object's AutoMayUninitSpan and from under mVirtualBox - * write lock. - * * @note Also reused by Medium::Reset(). * * @note Locks getTreeLock() for reading. @@ -4639,9 +4695,6 @@ HRESULT Medium::canClose() } /** - * @note Called from within this object's AutoMayUninitSpan (or AutoCaller) and - * from under mVirtualBox write lock. - * * @note Locks getTreeLock() for writing. */ HRESULT Medium::unregisterWithVirtualBox() @@ -5199,28 +5252,41 @@ DECLCALLBACK(int) Medium::taskThread(RTTHREAD thread, void *pvUser) for (MergeChain::const_iterator it = chain->begin(); it != chain->end(); ++ it) { - /* complex sanity (sane complexity) */ - Assert((chain->isForward() && - ((*it != chain->back() && - (*it)->m->state == MediumState_Deleting) || - (*it == chain->back() && - (*it)->m->state == MediumState_LockedWrite))) || - (!chain->isForward() && - ((*it != chain->front() && - (*it)->m->state == MediumState_Deleting) || - (*it == chain->front() && - (*it)->m->state == MediumState_LockedWrite)))); - - Assert(*it == chain->target() || - (*it)->m->backRefs.size() == 0); - - /* open the first image with VDOPEN_FLAGS_INFO because - * it's not necessarily the base one */ + /* + * complex sanity (sane complexity) + * + * The current image must be in the Deleting (image is merged) + * or LockedRead (parent image) state if it is not the target. + * If it is the target it must be in the LockedWrite state. + */ + Assert( ( *it != chain->target() + && ( (*it)->m->state == MediumState_Deleting + || (*it)->m->state == MediumState_LockedRead)) + || ( *it == chain->target() + && (*it)->m->state == MediumState_LockedWrite)); + + /* + * Image must be the target, in the LockedRead state + * or Deleting state where it is not allowed to be attached + * to a virtual machine. + */ + Assert( *it == chain->target() + || (*it)->m->state == MediumState_LockedRead + || ( (*it)->m->backRefs.size() == 0 + && (*it)->m->state == MediumState_Deleting) + ); + + unsigned uOpenFlags = 0; + + if ( (*it)->m->state == MediumState_LockedRead + || (*it)->m->state == MediumState_Deleting) + uOpenFlags = VD_OPEN_FLAGS_READONLY; + + /* Open the image */ vrc = VDOpen(hdd, (*it)->m->strFormat.c_str(), - (*it)->m->strLocationFull.c_str(), - it == chain->begin() ? - VD_OPEN_FLAGS_INFO : 0, - (*it)->m->vdDiskIfaces); + (*it)->m->strLocationFull.c_str(), + uOpenFlags, + (*it)->m->vdDiskIfaces); if (RT_FAILURE(vrc)) throw vrc; #if 0 @@ -5228,29 +5294,17 @@ DECLCALLBACK(int) Medium::taskThread(RTTHREAD thread, void *pvUser) #endif } - unsigned start = chain->isForward() ? - 0 : (unsigned)chain->size() - 1; - unsigned end = chain->isForward() ? - (unsigned)chain->size() - 1 : 0; #if 0 - LogFlow(("*** MERGE from %d to %d\n", start, end)); + LogFlow(("*** MERGE from %d to %d\n", chain->sourceIdx(), chain->targetIdx())); #endif - vrc = VDMerge(hdd, start, end, vdOperationIfaces); + vrc = VDMerge(hdd, chain->sourceIdx(), chain->targetIdx(), vdOperationIfaces); if (RT_FAILURE(vrc)) throw vrc; /* update parent UUIDs */ - /// @todo VDMerge should be taught to do so, including the + /// @todo VDMerge should handle the /// multiple children case - if (chain->isForward()) - { - /* target's UUID needs to be updated (note that target - * is the only image in the container on success) */ - vrc = VDSetParentUuid(hdd, 0, chain->parent()->m->id); - if (RT_FAILURE(vrc)) - throw vrc; - } - else + if (!chain->isForward()) { /* we need to update UUIDs of all source's children * which cannot be part of the container at once so @@ -5381,7 +5435,8 @@ DECLCALLBACK(int) Medium::taskThread(RTTHREAD thread, void *pvUser) for (MergeChain::iterator it = chain->begin(); it != chain->end();) { - if (*it == chain->target()) + if ( *it == chain->target() + || (*it)->m->state == MediumState_LockedRead) { ++ it; continue; diff --git a/src/VBox/Main/MouseImpl.cpp b/src/VBox/Main/MouseImpl.cpp index c9f3a2b44..b59ff58b2 100644 --- a/src/VBox/Main/MouseImpl.cpp +++ b/src/VBox/Main/MouseImpl.cpp @@ -254,8 +254,8 @@ STDMETHODIMP Mouse::PutMouseEvent(LONG dx, LONG dy, LONG dz, LONG dw, LONG butto * when the required guest support has been installed. * * @returns COM status code - * @param x X position (pixel) - * @param y Y position (pixel) + * @param x X position (pixel), starting from 1 + * @param y Y position (pixel), starting from 1 * @param dz Z movement * @param buttonState The mouse button state */ @@ -302,8 +302,8 @@ STDMETHODIMP Mouse::PutMouseEventAbsolute(LONG x, LONG y, LONG dz, LONG dw, rc = pDisplay->COMGETTER(Height)(&displayHeight); ComAssertComRCRet (rc, rc); - uint32_t mouseXAbs = displayWidth? (x * 0xFFFF) / displayWidth: 0; - uint32_t mouseYAbs = displayHeight? (y * 0xFFFF) / displayHeight: 0; + uint32_t mouseXAbs = displayWidth? ((x - 1) * 0xFFFF) / displayWidth: 0; + uint32_t mouseYAbs = displayHeight? ((y - 1) * 0xFFFF) / displayHeight: 0; /* * Send the absolute mouse position to the VMM device. diff --git a/src/VBox/Main/NetworkAdapterImpl.cpp b/src/VBox/Main/NetworkAdapterImpl.cpp index 0632659eb..294324739 100644 --- a/src/VBox/Main/NetworkAdapterImpl.cpp +++ b/src/VBox/Main/NetworkAdapterImpl.cpp @@ -435,7 +435,7 @@ STDMETHODIMP NetworkAdapter::COMSETTER(HostInterface)(IN_BSTR aHostInterface) /* leave the lock before informing callbacks */ alock.unlock(); - mParent->onNetworkAdapterChange (this, FALSE); + mParent->onNetworkAdapterChange (this, TRUE); } return S_OK; @@ -483,7 +483,7 @@ STDMETHODIMP NetworkAdapter::COMSETTER(InternalNetwork) (IN_BSTR aInternalNetwor /* leave the lock before informing callbacks */ alock.unlock(); - mParent->onNetworkAdapterChange (this, FALSE); + mParent->onNetworkAdapterChange (this, TRUE); } return S_OK; diff --git a/src/VBox/Main/VirtualBoxBase.cpp b/src/VBox/Main/VirtualBoxBase.cpp index 43413e371..e0aef4773 100644 --- a/src/VBox/Main/VirtualBoxBase.cpp +++ b/src/VBox/Main/VirtualBoxBase.cpp @@ -6,7 +6,7 @@ */ /* - * Copyright (C) 2006-2009 Sun Microsystems, Inc. + * Copyright (C) 2006-2010 Sun Microsystems, Inc. * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -126,12 +126,6 @@ RWLockHandle *VirtualBoxBaseProto::lockHandle() const * until the AutoInitSpan destructor signals that it has finished * initialization. * - * Also, addCaller() will block if the object is probing uninitialization on - * another thread with AutoMayUninitSpan (i.e. the object state is MayUninit). - * And again, the block will last until the AutoMayUninitSpan destructor signals - * that it has finished probing and the object is either ready again or will - * uninitialize shortly (so that addCaller() will fail). - * * When this method returns a failure, the caller must not use the object * and should return the failed result code to its own caller. * @@ -163,31 +157,25 @@ HRESULT VirtualBoxBaseProto::addCaller (State *aState /* = NULL */, rc = S_OK; } else - if (mState == InInit || mState == MayUninit || mState == InUninit) + if (mState == InInit || mState == InUninit) { if (mStateChangeThread == RTThreadSelf()) { /* Called from the same thread that is doing AutoInitSpan or - * AutoUninitSpan or AutoMayUninitSpan, just succeed */ + * AutoUninitSpan, just succeed */ rc = S_OK; } - else if (mState == InInit || mState == MayUninit) + else if (mState == InInit) { - /* One of the two: - * - * 1) addCaller() is called by a "child" thread while the "parent" - * thread is still doing AutoInitSpan/AutoReinitSpan, so wait for - * the state to become either Ready/Limited or InitFailed (in - * case of init failure). - * - * 2) addCaller() is called while another thread is in - * AutoMayUninitSpan, so wait for the state to become either - * Ready or WillUninit. + /* addCaller() is called by a "child" thread while the "parent" + * thread is still doing AutoInitSpan/AutoReinitSpan, so wait for + * the state to become either Ready/Limited or InitFailed (in + * case of init failure). * - * Note that in either case we increase the number of callers anyway - * -- to prevent AutoUninitSpan from early completion if we are - * still not scheduled to pick up the posted semaphore when uninit() - * is called. + * Note that we increase the number of callers anyway -- to + * prevent AutoUninitSpan from early completion if we are + * still not scheduled to pick up the posted semaphore when + * uninit() is called. */ ++ mCallers; @@ -200,10 +188,7 @@ HRESULT VirtualBoxBaseProto::addCaller (State *aState /* = NULL */, ++ mInitUninitWaiters; - LogFlowThisFunc((mState == InInit ? - "Waiting for AutoInitSpan/AutoReinitSpan to " - "finish...\n" : - "Waiting for AutoMayUninitSpan to finish...\n")); + LogFlowThisFunc(("Waiting for AutoInitSpan/AutoReinitSpan to finish...\n")); stateLock.leave(); RTSemEventMultiWait (mInitUninitSem, RT_INDEFINITE_WAIT); @@ -256,19 +241,18 @@ void VirtualBoxBaseProto::releaseCaller() return; } - if (mState == InInit || mState == MayUninit || mState == InUninit) + if (mState == InInit || mState == InUninit) { if (mStateChangeThread == RTThreadSelf()) { - /* Called from the same thread that is doing AutoInitSpan, - * AutoMayUninitSpan or AutoUninitSpan: just succeed */ + /* Called from the same thread that is doing AutoInitSpan or + * AutoUninitSpan: just succeed */ return; } - if (mState == MayUninit || mState == InUninit) + if (mState == InUninit) { - /* the caller is being released after AutoUninitSpan or - * AutoMayUninitSpan has begun */ + /* the caller is being released after AutoUninitSpan has begun */ AssertMsgReturn (mCallers != 0, ("mCallers is ZERO!"), (void) 0); -- mCallers; @@ -529,113 +513,7 @@ VirtualBoxBaseProto::AutoUninitSpan::~AutoUninitSpan() mObj->setState (NotReady); } -// VirtualBoxBaseProto::AutoMayUninitSpan methods //////////////////////////////////////////////////////////////////////////////// - -/** - * Creates a smart initialization span object that places the object to - * MayUninit state. - * - * Please see the AutoMayUninitSpan class description for more info. - * - * @param aObj |this| pointer of the managed VirtualBoxBase object whose - * uninit() method to be probably called. - */ -VirtualBoxBaseProto::AutoMayUninitSpan:: -AutoMayUninitSpan (VirtualBoxBaseProto *aObj) - : mObj (aObj), mRC (E_FAIL), mAlreadyInProgress (false) - , mAcceptUninit (false) -{ - Assert (aObj); - - AutoWriteLock stateLock (mObj->mStateLock); - - AssertReturnVoid (mObj->mState != InInit && - mObj->mState != InUninit); - - switch (mObj->mState) - { - case Ready: - break; - case MayUninit: - /* Nothing to be done if already in MayUninit. */ - mAlreadyInProgress = true; - mRC = S_OK; - return; - default: - /* Abuse mObj->addCaller() to get the extended error info possibly - * set by reimplementations of addCaller() and return it to the - * caller. Note that this abuse is supposed to be safe because we - * should've filtered out all states where addCaller() would do - * something else but set error info. */ - mRC = mObj->addCaller(); - Assert (FAILED (mRC)); - return; - } - - /* go to MayUninit to cause new callers to wait until we finish */ - mObj->setState (MayUninit); - mRC = S_OK; - - /* wait for already existing callers to drop to zero */ - if (mObj->mCallers > 0) - { - /* lazy creation */ - Assert (mObj->mZeroCallersSem == NIL_RTSEMEVENT); - RTSemEventCreate (&mObj->mZeroCallersSem); - - /* wait until remaining callers release the object */ - LogFlowFunc (("{%p}: Waiting for callers (%d) to drop to zero...\n", - mObj, mObj->mCallers)); - - stateLock.leave(); - RTSemEventWait (mObj->mZeroCallersSem, RT_INDEFINITE_WAIT); - } -} - -/** - * Places the managed VirtualBoxBase object back to Ready state if - * #acceptUninit() was not called, or places it to WillUninit state and calls - * the object's uninit() method. - * - * Please see the AutoMayUninitSpan class description for more info. - */ -VirtualBoxBaseProto::AutoMayUninitSpan::~AutoMayUninitSpan() -{ - /* if we did nothing in the constructor, do nothing here */ - if (mAlreadyInProgress || FAILED (mRC)) - return; - - AutoWriteLock stateLock (mObj->mStateLock); - - Assert (mObj->mState == MayUninit); - - if (mObj->mCallers > 0) - { - Assert (mObj->mInitUninitWaiters > 0); - - /* We have some pending addCaller() calls on other threads made after - * going to during MayUnit, signal that MayUnit is finished and they may - * go on. */ - RTSemEventMultiSignal (mObj->mInitUninitSem); - } - - if (!mAcceptUninit) - { - mObj->setState (Ready); - } - else - { - mObj->setState (WillUninit); - /* leave the lock to prevent nesting when uninit() is called */ - stateLock.leave(); - /* call uninit() to let the object uninit itself */ - mObj->uninit(); - /* Note: the object may no longer exist here (for example, it can call - * the destructor in uninit()) */ - } -} - // VirtualBoxBase methods //////////////////////////////////////////////////////////////////////////////// diff --git a/src/VBox/Main/darwin/NetIf-darwin.cpp b/src/VBox/Main/darwin/NetIf-darwin.cpp index 3ddb23262..9ba45ef97 100644 --- a/src/VBox/Main/darwin/NetIf-darwin.cpp +++ b/src/VBox/Main/darwin/NetIf-darwin.cpp @@ -339,7 +339,7 @@ int NetIfList(std::list <ComObjPtr<HostNetworkInterface> > &list) if ( !strncmp(pSdl->sdl_data, pNIC->szBSDName, pSdl->sdl_nlen) && pNIC->szBSDName[pSdl->sdl_nlen] == '\0') { - cbNameLen = strlen(pEtherNICs->szName) + 1; + cbNameLen = strlen(pNIC->szName) + 1; break; } PNETIFINFO pNew = (PNETIFINFO)RTMemAllocZ(RT_OFFSETOF(NETIFINFO, szName[cbNameLen])); diff --git a/src/VBox/Main/include/MediumImpl.h b/src/VBox/Main/include/MediumImpl.h index 2fbe8d40a..1ccdd03be 100644 --- a/src/VBox/Main/include/MediumImpl.h +++ b/src/VBox/Main/include/MediumImpl.h @@ -5,7 +5,7 @@ */ /* - * Copyright (C) 2008-2009 Sun Microsystems, Inc. + * Copyright (C) 2008-2010 Sun Microsystems, Inc. * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -277,14 +277,13 @@ private: /** * Performs extra checks if the medium can be closed and returns S_OK in * this case. Otherwise, returns a respective error message. Called by - * Close() from within this object's AutoMayUninitSpan and from under - * mVirtualBox write lock. + * Close() under the medium tree lock and the medium lock. */ HRESULT canClose(); /** - * Unregisters this medium with mVirtualBox. Called by Close() from within - * this object's AutoMayUninitSpan and from under mVirtualBox write lock. + * Unregisters this medium with mVirtualBox. Called by Close() under + * the medium tree lock. */ HRESULT unregisterWithVirtualBox(); diff --git a/src/VBox/Main/include/VirtualBoxBase.h b/src/VBox/Main/include/VirtualBoxBase.h index ee9bd7bc3..78bd803b1 100644 --- a/src/VBox/Main/include/VirtualBoxBase.h +++ b/src/VBox/Main/include/VirtualBoxBase.h @@ -4,7 +4,7 @@ */ /* - * Copyright (C) 2006-2009 Sun Microsystems, Inc. + * Copyright (C) 2006-2010 Sun Microsystems, Inc. * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -507,11 +507,11 @@ public: * | ^ | | * v | v | * [*] ---> NotReady ----> (InInit) -----> Ready -----> (InUninit) ----+ - * ^ | ^ | ^ - * | v | v | - * | Limited | (MayUninit) --> (WillUninit) - * | | | | - * +-------+ +-------+ + * ^ | + * | v + * | Limited + * | | + * +-------+ * * The object is fully operational only when its state is Ready. The Limited * state means that only some vital part of the object is operational, and it @@ -529,12 +529,8 @@ public: * Limited->InInit->InitFailed transition is done by the AutoReinitSpan smart * class. * - * The Ready->InUninit->NotReady, InitFailed->InUninit->NotReady and - * WillUninit->InUninit->NotReady transitions are done by the AutoUninitSpan - * smart class. - * - * The Ready->MayUninit->Ready and Ready->MayUninit->WillUninit transitions are - * done by the AutoMayUninitSpan smart class. + * The Ready->InUninit->NotReady and InitFailed->InUninit->NotReady + * transitions are done by the AutoUninitSpan smart class. * * In order to maintain the primary state integrity and declared functionality * all subclasses must: @@ -552,9 +548,7 @@ public: class ATL_NO_VTABLE VirtualBoxBaseProto : public Lockable { public: - - enum State { NotReady, Ready, InInit, InUninit, InitFailed, Limited, - MayUninit, WillUninit }; + enum State { NotReady, Ready, InInit, InUninit, InitFailed, Limited }; protected: diff --git a/src/VBox/Main/webservice/vboxweb.cpp b/src/VBox/Main/webservice/vboxweb.cpp index 9c8131d63..6041d6f2d 100644 --- a/src/VBox/Main/webservice/vboxweb.cpp +++ b/src/VBox/Main/webservice/vboxweb.cpp @@ -30,8 +30,6 @@ #include <VBox/com/EventQueue.h> #include <VBox/VRDPAuth.h> #include <VBox/version.h> - -#include <iprt/lock.h> #include <iprt/rand.h> #include <iprt/initterm.h> #include <iprt/getopt.h> @@ -39,6 +37,7 @@ #include <iprt/process.h> #include <iprt/string.h> #include <iprt/ldr.h> +#include <iprt/semaphore.h> // workaround for compile problems on gcc 4.1 #ifdef __GNUC__ @@ -50,6 +49,7 @@ // standard headers #include <map> +#include <list> #ifdef __GNUC__ #pragma GCC visibility pop @@ -99,6 +99,7 @@ int g_iWatchdogCheckInterval = 5; const char *g_pcszBindToHost = NULL; // host; NULL = current machine unsigned int g_uBindToPort = 18083; // port unsigned int g_uBacklog = 100; // backlog = max queue size for requests +unsigned int g_cMaxWorkerThreads = 100; // max. no. of worker threads bool g_fVerbose = false; // be verbose PRTSTREAM g_pstrLog = NULL; @@ -113,18 +114,27 @@ bool g_fDaemonize = false; // run in background. * ****************************************************************************/ -RTLockMtx g_mutexAuthLib; +// The one global SOAP queue created by main(). +class SoapQ; +SoapQ *g_pSoapQ = NULL; + +// this mutex protects the auth lib and authentication +RTLockMtx *g_pAuthLibLockHandle; // this mutex protects all of the below -RTLockMtx g_mutexSessions; +RTLockMtx *g_pSessionsLockHandle; SessionsMap g_mapSessions; ULONG64 g_iMaxManagedObjectID = 0; ULONG64 g_cManagedObjects = 0; +// Threads map, so we can quickly map an RTTHREAD struct to a logger prefix +typedef std::map<RTTHREAD, com::Utf8Str> ThreadsMap; +ThreadsMap g_mapThreads; + /**************************************************************************** * - * main + * Command line help * ****************************************************************************/ @@ -138,6 +148,7 @@ static const RTGETOPTDEF g_aOptions[] { "--port", 'p', RTGETOPT_REQ_UINT32 }, { "--timeout", 't', RTGETOPT_REQ_UINT32 }, { "--check-interval", 'i', RTGETOPT_REQ_UINT32 }, + { "--threads", 'T', RTGETOPT_REQ_UINT32 }, { "--verbose", 'v', RTGETOPT_REQ_NOTHING }, { "--logfile", 'F', RTGETOPT_REQ_STRING }, }; @@ -180,6 +191,10 @@ void DisplayHelp() pcszDescr = "Session timeout in seconds; 0 = disable timeouts (" DEFAULT_TIMEOUT_SECS_STRING ")."; break; + case 'T': + pcszDescr = "Maximum number of worker threads to run in parallel (100)."; + break; + case 'i': pcszDescr = "Frequency of timeout checks in seconds (5)."; break; @@ -197,6 +212,229 @@ void DisplayHelp() } } +/**************************************************************************** + * + * SoapQ, SoapThread (multithreading) + * + ****************************************************************************/ + +class SoapQ; + +class SoapThread +{ +public: + /** + * Constructor. Creates the new thread and makes it call process() for processing the queue. + * @param u Thread number. (So we can count from 1 and be readable.) + * @param q SoapQ instance which has the queue to process. + * @param soap struct soap instance from main() which we copy here. + */ + SoapThread(size_t u, + SoapQ &q, + const struct soap *soap) + : m_u(u), + m_pQ(&q) + { + // make a copy of the soap struct for the new thread + m_soap = soap_copy(soap); + + if (!RT_SUCCESS(RTThreadCreate(&m_pThread, + fntWrapper, + this, // pvUser + 0, // cbStack, + RTTHREADTYPE_MAIN_HEAVY_WORKER, + 0, + "SoapQWorker"))) + { + RTStrmPrintf(g_pStdErr, "[!] Cannot start worker thread %d\n", u); + exit(1); + } + } + + void process(); + + /** + * Static function that can be passed to RTThreadCreate and that calls + * process() on the SoapThread instance passed as the thread parameter. + * @param pThread + * @param pvThread + * @return + */ + static int fntWrapper(RTTHREAD pThread, void *pvThread) + { + SoapThread *pst = (SoapThread*)pvThread; + pst->process(); // this never returns really + return 0; + } + + size_t m_u; // thread number + SoapQ *m_pQ; // the single SOAP queue that all the threads service + struct soap *m_soap; // copy of the soap structure for this thread (from soap_copy()) + RTTHREAD m_pThread; // IPRT thread struct for this thread +}; + +/** + * SOAP queue encapsulation. There is only one instance of this, to + * which add() adds a queue item (called on the main thread), + * and from which get() fetch items, called from each queue thread. + */ +class SoapQ +{ +public: + + /** + * Constructor. Creates the soap queue. + * @param pSoap + */ + SoapQ(const struct soap *pSoap) + : m_soap(pSoap), + m_cIdleThreads(0) + { + RTSemEventMultiCreate(&m_event); + } + + ~SoapQ() + { + RTSemEventMultiDestroy(m_event); + } + + /** + * Adds the given socket to the SOAP queue and posts the + * member event sem to wake up the workers. Called on the main thread + * whenever a socket has work to do. Creates a new SOAP thread on the + * first call or when all existing threads are busy. + * @param s Socket from soap_accept() which has work to do. + */ + uint32_t add(int s) + { + uint32_t cItems; + RTLock qlock(m_mutex); + + // if no threads have yet been created, or if all threads are busy, + // create a new SOAP thread + if ( !m_cIdleThreads + // but only if we're not exceeding the global maximum (default is 100) + && (m_llAllThreads.size() < g_cMaxWorkerThreads) + ) + { + SoapThread *pst = new SoapThread(m_llAllThreads.size() + 1, + *this, + m_soap); + m_llAllThreads.push_back(pst); + g_mapThreads[pst->m_pThread] = com::Utf8StrFmt("[%3u]", pst->m_u); + ++m_cIdleThreads; + } + + // enqueue the socket of this connection and post eventsem so that + // one of the threads (possibly the one just creatd) can pick it up + m_llSocketsQ.push_back(s); + cItems = m_llSocketsQ.size(); + qlock.release(); + + // unblock one of the worker threads + RTSemEventMultiSignal(m_event); + + return cItems; + } + + /** + * Blocks the current thread until work comes in; then returns + * the SOAP socket which has work to do. This reduces m_cIdleThreads + * by one, and the caller MUST call done() when it's done processing. + * Called from the worker threads. + * @param cIdleThreads out: no. of threads which are currently idle (not counting the caller) + * @param cThreads out: total no. of SOAP threads running + * @return + */ + int get(size_t &cIdleThreads, size_t &cThreads) + { + while (1) + { + // wait for something to happen + RTSemEventMultiWait(m_event, RT_INDEFINITE_WAIT); + + RTLock qlock(m_mutex); + if (m_llSocketsQ.size()) + { + int socket = m_llSocketsQ.front(); + m_llSocketsQ.pop_front(); + cIdleThreads = --m_cIdleThreads; + cThreads = m_llAllThreads.size(); + + // reset the multi event only if the queue is now empty; otherwise + // another thread will also wake up when we release the mutex and + // process another one + if (m_llSocketsQ.size() == 0) + RTSemEventMultiReset(m_event); + + qlock.release(); + + return socket; + } + + // nothing to do: keep looping + } + } + + /** + * To be called by a worker thread after fetching an item from the + * queue via get() and having finished its lengthy processing. + */ + void done() + { + RTLock qlock(m_mutex); + ++m_cIdleThreads; + } + + const struct soap *m_soap; // soap structure created by main(), passed to constructor + + RTLockMtx m_mutex; + RTSEMEVENTMULTI m_event; // posted by add(), blocked on by get() + + std::list<SoapThread*> m_llAllThreads; // all the threads created by the constructor + size_t m_cIdleThreads; // threads which are currently idle (statistics) + + // A std::list abused as a queue; this contains the actual jobs to do, + // each int being a socket from soap_accept() + std::list<int> m_llSocketsQ; +}; + +/** + * Thread function for each of the SOAP queue worker threads. This keeps + * running, blocks on the event semaphore in SoapThread.SoapQ and picks + * up a socket from the queue therein, which has been put there by + * beginProcessing(). + */ +void SoapThread::process() +{ + WebLog("New SOAP thread started\n"); + + while (1) + { + // wait for a socket to arrive on the queue + size_t cIdleThreads, cThreads; + m_soap->socket = m_pQ->get(cIdleThreads, cThreads); + + WebLog("Processing connection from IP=%lu.%lu.%lu.%lu socket=%d (%d out of %d threads idle)\n", + (m_soap->ip >> 24) & 0xFF, + (m_soap->ip >> 16) & 0xFF, + (m_soap->ip >> 8) & 0xFF, + m_soap->ip & 0xFF, + m_soap->socket, + cIdleThreads, + cThreads); + + // process the request; this goes into the COM code in methodmaps.cpp + soap_serve(m_soap); + + soap_destroy(m_soap); // clean up class instances + soap_end(m_soap); // clean up everything and close socket + + // tell the queue we're idle again + m_pQ->done(); + } +} + /** * Implementation for WEBLOG macro defined in vboxweb.h; this prints a message * to the console and optionally to the file that may have been given to the @@ -211,18 +449,23 @@ void WebLog(const char *pszFormat, ...) RTStrAPrintfV(&psz, pszFormat, args); va_end(args); + const char *pcszPrefix = "[ ]"; + ThreadsMap::iterator it = g_mapThreads.find(RTThreadSelf()); + if (it != g_mapThreads.end()) + pcszPrefix = it->second.c_str(); + // terminal - RTPrintf("%s", psz); + RTPrintf("%s %s", pcszPrefix, psz); // log file if (g_pstrLog) { - RTStrmPrintf(g_pstrLog, "%s", psz); + RTStrmPrintf(g_pstrLog, "%s %s", pcszPrefix, psz); RTStrmFlush(g_pstrLog); } // logger instance - RTLogLoggerEx(LOG_INSTANCE, RTLOGGRPFLAGS_DJ, LOG_GROUP, "%s", psz); + RTLogLoggerEx(LOG_INSTANCE, RTLOGGRPFLAGS_DJ, LOG_GROUP, "%s %s", pcszPrefix, psz); RTStrFree(psz); } @@ -246,6 +489,75 @@ void WebLogSoapError(struct soap *soap) (ppcszDetail && *ppcszDetail) ? *ppcszDetail : "no details available"); } +/**************************************************************************** + * + * SOAP queue pumper thread + * + ****************************************************************************/ + +void doQueuesLoop() +{ + // set up gSOAP + struct soap soap; + soap_init(&soap); + + soap.bind_flags |= SO_REUSEADDR; + // avoid EADDRINUSE on bind() + + int m, s; // master and slave sockets + m = soap_bind(&soap, + g_pcszBindToHost, // host: current machine + g_uBindToPort, // port + g_uBacklog); // backlog = max queue size for requests + if (m < 0) + WebLogSoapError(&soap); + else + { + WebLog("Socket connection successful: host = %s, port = %u, master socket = %d\n", + (g_pcszBindToHost) ? g_pcszBindToHost : "default (localhost)", + g_uBindToPort, + m); + + // initialize thread queue, mutex and eventsem + g_pSoapQ = new SoapQ(&soap); + + // start the SOAP processing thread + + for (uint64_t i = 1; + ; + i++) + { + // call gSOAP to handle incoming SOAP connection + s = soap_accept(&soap); + if (s < 0) + { + WebLogSoapError(&soap); + break; + } + + // add the socket to the queue and tell worker threads to + // pick up the jobn + size_t cItemsOnQ = g_pSoapQ->add(s); + WebLog("Request %llu on socket %d queued for processing (%d items on Q)\n", i, s, cItemsOnQ); + } + } + soap_done(&soap); // close master socket and detach environment +} + +/** + * Thread function for the "queue pumper" thread started from main(). This implements + * the loop that takes SOAP calls from HTTP and serves them by handing sockets to the + * SOAP queue worker threads. + */ +int fntQPumper(RTTHREAD ThreadSelf, void *pvUser) +{ + // store a log prefix for this thread + g_mapThreads[RTThreadSelf()] = "[ P ]"; + + doQueuesLoop(); + + return 0; +} /** * Start up the webservice server. This keeps running and waits @@ -264,7 +576,10 @@ int main(int argc, char* argv[]) // intialize runtime RTR3Init(); - RTStrmPrintf(g_pStdErr, VBOX_PRODUCT " Webservice Version " VBOX_VERSION_STRING "\n" + // store a log prefix for this thread + g_mapThreads[RTThreadSelf()] = "[M ]"; + + RTStrmPrintf(g_pStdErr, VBOX_PRODUCT " web service version " VBOX_VERSION_STRING "\n" "(C) 2005-" VBOX_C_YEAR " " VBOX_VENDOR "\n" "All rights reserved.\n"); @@ -306,6 +621,10 @@ int main(int argc, char* argv[]) } break; + case 'T': + g_cMaxWorkerThreads = ValueUnion.u32; + break; + case 'h': DisplayHelp(); exit(0); @@ -389,6 +708,25 @@ int main(int argc, char* argv[]) return rc; } + // create the global mutexes + g_pAuthLibLockHandle = new RTLockMtx(); + g_pSessionsLockHandle = new RTLockMtx(); + + // SOAP queue pumper thread + RTTHREAD tQPumper; + if (RTThreadCreate(&tQPumper, + fntQPumper, + NULL, // pvUser + 0, // cbStack (default) + RTTHREADTYPE_MAIN_WORKER, + 0, // flags + "SoapQPumper")) + { + RTStrmPrintf(g_pStdErr, "[!] Cannot start SOAP queue pumper thread\n"); + exit(1); + } + + // watchdog thread if (g_iWatchdogTimeoutSecs > 0) { // start our watchdog thread @@ -396,7 +734,7 @@ int main(int argc, char* argv[]) if (RTThreadCreate(&tWatchdog, fntWatchdog, NULL, - 32*1024, + 0, RTTHREADTYPE_MAIN_WORKER, 0, "Watchdog")) @@ -406,71 +744,19 @@ int main(int argc, char* argv[]) } } - // set up gSOAP - struct soap soap; - soap_init(&soap); - - soap.bind_flags |= SO_REUSEADDR; - // avoid EADDRINUSE on bind() - - int m, s; // master and slave sockets - m = soap_bind(&soap, - g_pcszBindToHost, // host: current machine - g_uBindToPort, // port - g_uBacklog); // backlog = max queue size for requests - if (m < 0) - WebLogSoapError(&soap); - else + com::EventQueue *pQ = com::EventQueue::getMainEventQueue(); + while (1) { - WebLog("Socket connection successful: host = %s, port = %u, master socket = %d\n", - (g_pcszBindToHost) ? g_pcszBindToHost : "default (localhost)", - g_uBindToPort, - m); - - for (uint64_t i = 1; - ; - i++) - { - // call gSOAP to handle incoming SOAP connection - s = soap_accept(&soap); - if (s < 0) - { - WebLogSoapError(&soap); - break; - } - - WebLog("%llu: accepted connection from IP=%lu.%lu.%lu.%lu socket=%d... ", - i, - (soap.ip>>24)&0xFF, - (soap.ip>>16)&0xFF, - (soap.ip>>8)&0xFF, - soap.ip&0xFF, - s); - - // enclose the entire RPC call in the sessions lock - // so that the watchdog cannot destroy COM objects - // while the RPC is ongoing - RTLock lock(g_mutexSessions); - // now process the RPC request (this goes into the - // generated code in methodmaps.cpp with all the COM calls) - if (soap_serve(&soap) != SOAP_OK) - { - WebLogSoapError(&soap); - } - lock.release(); - - WebLog("Request served\n"); - - soap_destroy(&soap); // clean up class instances - soap_end(&soap); // clean up everything and close socket - - // we have to process main event queue - int vrc = com::EventQueue::getMainEventQueue()->processEventQueue(0); - } + // we have to process main event queue + WEBDEBUG(("Pumping COM event queue\n")); + int vrc = pQ->processEventQueue(RT_INDEFINITE_WAIT); + if (FAILED(vrc)) + com::GluePrintRCMessage(vrc); } - soap_done(&soap); // close master socket and detach environment com::Shutdown(); + + return 0; } /**************************************************************************** @@ -488,6 +774,9 @@ int main(int argc, char* argv[]) */ int fntWatchdog(RTTHREAD ThreadSelf, void *pvUser) { + // store a log prefix for this thread + g_mapThreads[RTThreadSelf()] = "[W ]"; + WEBDEBUG(("Watchdog thread started\n")); while (1) @@ -498,12 +787,13 @@ int fntWatchdog(RTTHREAD ThreadSelf, void *pvUser) time_t tNow; time(&tNow); - RTLock lock(g_mutexSessions); + // lock the sessions while we're iterating; this blocks + // out the COM code from messing with it + RTLock lock(*g_pSessionsLockHandle); WEBDEBUG(("Watchdog: checking %d sessions\n", g_mapSessions.size())); - SessionsMap::iterator - it = g_mapSessions.begin(), - itEnd = g_mapSessions.end(); + SessionsMap::iterator it = g_mapSessions.begin(), + itEnd = g_mapSessions.end(); while (it != itEnd) { WebServiceSession *pSession = it->second; @@ -519,7 +809,6 @@ int fntWatchdog(RTTHREAD ThreadSelf, void *pvUser) else ++it; } - lock.release(); } WEBDEBUG(("Watchdog thread ending\n")); @@ -616,8 +905,7 @@ std::string ConvertComString(const com::Bstr &bstr) */ std::string ConvertComString(const com::Guid &uuid) { - com::Bstr bstr(uuid); - com::Utf8Str ustr(bstr); + com::Utf8Str ustr(uuid.toString()); const char *pcsz; if ((pcsz = ustr.raw())) return pcsz; @@ -738,7 +1026,7 @@ class WebServiceSessionPrivate /** * Constructor for the session object. * - * Preconditions: Caller must have locked g_mutexSessions. + * Preconditions: Caller must have locked g_pSessionsLockHandle in write mode. * * @param username * @param password @@ -758,7 +1046,7 @@ WebServiceSession::WebServiceSession() /** * Destructor. Cleans up and destroys all contained managed object references on the way. * - * Preconditions: Caller must have locked g_mutexSessions. + * Preconditions: Caller must have locked g_pSessionsLockHandle in write mode. */ WebServiceSession::~WebServiceSession() { @@ -777,9 +1065,8 @@ WebServiceSession::~WebServiceSession() // _pISession = NULL; // } - ManagedObjectsMapById::iterator - it, - end = _pp->_mapManagedObjectsById.end(); + ManagedObjectsMapById::iterator it, + end = _pp->_mapManagedObjectsById.end(); for (it = _pp->_mapManagedObjectsById.begin(); it != end; ++it) @@ -803,7 +1090,7 @@ int WebServiceSession::authenticate(const char *pcszUsername, { int rc = VERR_WEB_NOT_AUTHENTICATED; - RTLock lock(g_mutexAuthLib); + RTLock lock(*g_pAuthLibLockHandle); static bool fAuthLibLoaded = false; static PVRDPAUTHENTRY pfnAuthEntry = NULL; @@ -874,6 +1161,8 @@ int WebServiceSession::authenticate(const char *pcszUsername, WEBDEBUG(("Could not resolve VRDPAuth2 or VRDPAuth entry point")); } + lock.release(); + if (!rc) { do @@ -911,13 +1200,15 @@ int WebServiceSession::authenticate(const char *pcszUsername, * ComPtr<IVirtualBox>, for example. As we store the ComPtr<IUnknown> in * our private hash table, we must search for one too. * - * Preconditions: Caller must have locked g_mutexSessions. + * Preconditions: Caller must have locked g_pSessionsLockHandle in read mode. * * @param pcu pointer to a COM object. * @return The existing ManagedObjectRef that represents the COM object, or NULL if there's none yet. */ ManagedObjectRef* WebServiceSession::findRefFromPtr(const ComPtr<IUnknown> &pcu) { + // Assert(g_pSessionsLockHandle->isReadLockOnCurrentThread()); // @todo + IUnknown *p = pcu; uintptr_t ulp = (uintptr_t)p; ManagedObjectRef *pRef; @@ -939,13 +1230,15 @@ ManagedObjectRef* WebServiceSession::findRefFromPtr(const ComPtr<IUnknown> &pcu) * object reference was created, by splitting the reference into the session and * object IDs and then looking up the session object for that session ID. * - * Preconditions: Caller must have locked g_mutexSessions. + * Preconditions: Caller must have locked g_pSessionsLockHandle in read mode. * * @param id Managed object reference (with combined session and object IDs). * @return */ WebServiceSession* WebServiceSession::findSessionFromRef(const WSDLT_ID &id) { + // Assert(g_pSessionsLockHandle->isReadLockOnCurrentThread()); // @todo + WebServiceSession *pSession = NULL; uint64_t sessid; if (SplitManagedObjectRef(id, @@ -1009,7 +1302,7 @@ void WebServiceSession::DumpRefs() /** * Constructor, which assigns a unique ID to this managed object - * reference and stores it two global hashs: + * reference and stores it two global hashes: * * a) G_mapManagedObjectsById, which maps ManagedObjectID's to * instances of this class; this hash is then used by the @@ -1029,7 +1322,7 @@ void WebServiceSession::DumpRefs() * createRefFromObject() template function in vboxweb.h, which * does perform that check. * - * Preconditions: Caller must have locked g_mutexSessions. + * Preconditions: Caller must have locked g_pSessionsLockHandle in write mode. * * @param pObj */ @@ -1063,7 +1356,7 @@ ManagedObjectRef::ManagedObjectRef(WebServiceSession &session, * Destructor; removes the instance from the global hash of * managed objects. * - * Preconditions: Caller must have locked g_mutexSessions. + * Preconditions: Caller must have locked g_pSessionsLockHandle in write mode. */ ManagedObjectRef::~ManagedObjectRef() { @@ -1293,6 +1586,9 @@ int __vbox__IWebsessionManager_USCORElogon( WEBDEBUG(("\n-- entering %s\n", __FUNCTION__)); do { + // WebServiceSession constructor tinkers with global MOR map and requires a write lock + RTLock lock(*g_pSessionsLockHandle); + // create new session; the constructor stores the new session // in the global map automatically WebServiceSession *pSession = new WebServiceSession(); diff --git a/src/VBox/Main/webservice/vboxweb.h b/src/VBox/Main/webservice/vboxweb.h index 37ff43c3b..352ada7b6 100644 --- a/src/VBox/Main/webservice/vboxweb.h +++ b/src/VBox/Main/webservice/vboxweb.h @@ -2,7 +2,7 @@ * vboxweb.h: * header file for "real" web server code. * - * Copyright (C) 2006-2007 Sun Microsystems, Inc. + * Copyright (C) 2006-2010 Sun Microsystems, Inc. * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -35,11 +35,12 @@ void WebLog(const char *pszFormat, ...); #include <VBox/err.h> +#include "iprt/lock.h" + #include <iprt/stream.h> #include <string> - /**************************************************************************** * * global variables @@ -51,6 +52,10 @@ extern bool g_fVerbose; extern PRTSTREAM g_pstrLog; +extern RTLockMtx *g_pAuthLibLockHandle; + +extern RTLockMtx *g_pSessionsLockHandle; + /**************************************************************************** * * typedefs @@ -223,6 +228,10 @@ int findComPtrFromId(struct soap *soap, ComPtr<T> &pComPtr, bool fNullAllowed) { + // we're only reading the MOR maps, not modifying them, so a readlock is good enough + // (allow concurrency, this code gets called from everywhere in methodmaps.cpp) + RTLock lock(*g_pSessionsLockHandle); + int rc; ManagedObjectRef *pRef; if ((rc = ManagedObjectRef::findRefFromId(id, &pRef, fNullAllowed))) @@ -269,6 +278,8 @@ WSDLT_ID createOrFindRefFromComPtr(const WSDLT_ID &idParent, return ""; } + // we might be modifying the MOR maps below, so request write lock now + RTLock lock(*g_pSessionsLockHandle); WebServiceSession *pSession; if ((pSession = WebServiceSession::findSessionFromRef(idParent))) { @@ -280,6 +291,8 @@ WSDLT_ID createOrFindRefFromComPtr(const WSDLT_ID &idParent, return pRef->toWSDL(); } - return 0; + // session has expired, return an empty MOR instead of allocating a + // new reference which couldn't be used anyway. + return ""; } diff --git a/src/VBox/Main/webservice/websrv-php.xsl b/src/VBox/Main/webservice/websrv-php.xsl index 00d7d9888..026807852 100644 --- a/src/VBox/Main/webservice/websrv-php.xsl +++ b/src/VBox/Main/webservice/websrv-php.xsl @@ -43,20 +43,82 @@ <xsl:param name="safearray" /> <xsl:choose> - <xsl:when test="$type='wstring' or $type='uuid'">(string)<xsl:value-of select="$value" /></xsl:when> - <xsl:when test="$type='boolean'">(bool)<xsl:value-of select="$value" /></xsl:when> - <xsl:when test="$type='long' or $type='unsigned long' or $type='long long' or $type='short' or $type='unsigned short' or $type='unsigned long long' or $type='result'">(int)<xsl:value-of select="$value" /></xsl:when> - <xsl:when test="$type='double' or $type='float'">(float)<xsl:value-of select="$value" /></xsl:when> - <xsl:when test="$type='octet'"><xsl:value-of select="$value" /></xsl:when> + <xsl:when test="$type='wstring' or $type='uuid'"> + <xsl:call-template name="emitPrimitive"> + <xsl:with-param name="type">string</xsl:with-param> + <xsl:with-param name="value" select="$value" /> + <xsl:with-param name="safearray" select="$safearray"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$type='boolean'"> + <xsl:call-template name="emitPrimitive"> + <xsl:with-param name="type">bool</xsl:with-param> + <xsl:with-param name="value" select="$value" /> + <xsl:with-param name="safearray" select="$safearray"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$type='long' or $type='unsigned long' or $type='long long' or $type='short' or $type='unsigned short' or $type='unsigned long long' or $type='result'"> + <xsl:call-template name="emitPrimitive"> + <xsl:with-param name="type">int</xsl:with-param> + <xsl:with-param name="value" select="$value" /> + <xsl:with-param name="safearray" select="$safearray"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$type='double' or $type='float'"> + <xsl:call-template name="emitPrimitive"> + <xsl:with-param name="type">float</xsl:with-param> + <xsl:with-param name="value" select="$value" /> + <xsl:with-param name="safearray" select="$safearray"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$type='octet'"> + <xsl:call-template name="emitPrimitive"> + <xsl:with-param name="type">octet</xsl:with-param> + <xsl:with-param name="value" select="$value" /> + <xsl:with-param name="safearray" select="$safearray"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$type='$unknown'"> + <xsl:call-template name="emitObject"> + <xsl:with-param name="type">VBox_ManagedObject</xsl:with-param> + <xsl:with-param name="value" select="$value" /> + <xsl:with-param name="safearray" select="$safearray"/> + </xsl:call-template> + </xsl:when> <xsl:otherwise> - <xsl:choose> - <xsl:when test="$safearray='yes'"> - <xsl:text>new </xsl:text><xsl:value-of select="$type" />Collection ($this->connection, <xsl:value-of select="$value"/><xsl:text>)</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:text>new </xsl:text><xsl:value-of select="$type" /> ($this->connection, <xsl:value-of select="$value"/><xsl:text>)</xsl:text> - </xsl:otherwise> - </xsl:choose> + <xsl:call-template name="emitObject"> + <xsl:with-param name="type" select="$type" /> + <xsl:with-param name="value" select="$value" /> + <xsl:with-param name="safearray" select="$safearray"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="emitObject"> + <xsl:param name="type" /> + <xsl:param name="value" /> + <xsl:param name="safearray" /> + <xsl:choose> + <xsl:when test="$safearray='yes'"> + <xsl:text>new </xsl:text><xsl:value-of select="$type" />Collection ($this->connection, (array)<xsl:value-of select="$value"/><xsl:text>)</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>new </xsl:text><xsl:value-of select="$type" /> ($this->connection, <xsl:value-of select="$value"/><xsl:text>)</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="emitPrimitive"> + <xsl:param name="type" /> + <xsl:param name="value" /> + <xsl:param name="safearray" /> + <xsl:choose> + <xsl:when test="$safearray='yes'"> + <xsl:text>(array)</xsl:text><xsl:value-of select="$value"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>(</xsl:text><xsl:value-of select="$type" /><xsl:text>)</xsl:text><xsl:value-of select="$value"/> </xsl:otherwise> </xsl:choose> </xsl:template> @@ -87,7 +149,7 @@ <xsl:param name="attrsafearray" /> <xsl:variable name="fname"><xsl:call-template name="makeSetterName"><xsl:with-param name="attrname" select="$attrname"/></xsl:call-template></xsl:variable> public function <xsl:value-of select="$fname"/>($value) { - $request = stdClass(); + $request = new stdClass(); $request->_this = $this->handle; if (is_int($value) || is_string($value) || is_bool($value)) { $request-><xsl:value-of select="$attrname"/> = $value; @@ -185,15 +247,21 @@ class <xsl:value-of select="$ifname"/> extends VBox_Struct { <xsl:for-each select="attribute"> protected $<xsl:value-of select="@name"/>; </xsl:for-each> - public function __construct($connection, $handle) { + public function __construct($connection, $values) { + $this->connection = $connection; <xsl:for-each select="attribute"> - $this-><xsl:value-of select="@name"/> = $handle-><xsl:value-of select="@name"/><xsl:text>;</xsl:text> + $this-><xsl:value-of select="@name"/> = $values-><xsl:value-of select="@name"/><xsl:text>;</xsl:text> </xsl:for-each> } <xsl:for-each select="attribute"> public function <xsl:call-template name="makeGetterName"><xsl:with-param name="attrname" select="@name"/></xsl:call-template>() { - return $this-><xsl:value-of select="@name"/>; + <xsl:text>return </xsl:text> + <xsl:call-template name="emitOutParam"> + <xsl:with-param name="type" select="@type" /> + <xsl:with-param name="value" select="concat('$this->',@name)" /> + <xsl:with-param name="safearray" select="@safearray"/> + </xsl:call-template>; } </xsl:for-each> @@ -285,7 +353,7 @@ class <xsl:value-of select="@name"/> extends VBox_Enum { * This file is autogenerated from VirtualBox.xidl, DO NOT EDIT! */ -abstract class VBox_ManagedObject +class VBox_ManagedObject { protected $connection; protected $handle; @@ -324,6 +392,15 @@ abstract class VBox_ManagedObject return $this->handle; } + public function cast($class) + { + if (is_subclass_of($class, 'VBox_ManagedObject')) + { + return new $class($this->connection, $this->handle); + } + throw new Exception('Cannot cast VBox_ManagedObject to non-child class VBox_ManagedObject'); + } + public function releaseRemote() { try @@ -335,7 +412,7 @@ abstract class VBox_ManagedObject } } -abstract class VBox_ManagedObjectCollection implements Iterator { +class VBox_ManagedObjectCollection implements Iterator, Countable { protected $connection; protected $handles; protected $_interfaceName = null; @@ -372,9 +449,15 @@ abstract class VBox_ManagedObjectCollection implements Iterator { $handle = $this->current() !== false; return $handle; } + + public function count() { + return count($this->handles); + } } abstract class VBox_Struct { + protected $connection; + public function __get($attr) { $methodName = "get" . $attr; @@ -413,6 +496,7 @@ abstract class VBox_Enum { </xsl:for-each> <xsl:for-each select="//enum"> <xsl:call-template name="enum"/> + <xsl:call-template name="collection"/> </xsl:for-each> </xsl:template> diff --git a/src/VBox/Main/xml/Settings.cpp b/src/VBox/Main/xml/Settings.cpp index e2fbe1d23..fcf52138f 100644 --- a/src/VBox/Main/xml/Settings.cpp +++ b/src/VBox/Main/xml/Settings.cpp @@ -1350,7 +1350,7 @@ void MachineConfigFile::readNetworkAdapters(const xml::ElementNode &elmNetwork, if ((pelmAdapterChild = pelmAdapter->findChildElement("NAT"))) { nic.mode = NetworkAttachmentType_NAT; - pelmAdapterChild->getAttributeValue("name", nic.strName); // optional network name + pelmAdapterChild->getAttributeValue("network", nic.strName); // optional network name } else if ( ((pelmAdapterChild = pelmAdapter->findChildElement("HostInterface"))) || ((pelmAdapterChild = pelmAdapter->findChildElement("BridgedInterface"))) diff --git a/src/VBox/NetworkServices/DHCP/VBoxNetDHCP.cpp b/src/VBox/NetworkServices/DHCP/VBoxNetDHCP.cpp index d16e93104..d76894e93 100644 --- a/src/VBox/NetworkServices/DHCP/VBoxNetDHCP.cpp +++ b/src/VBox/NetworkServices/DHCP/VBoxNetDHCP.cpp @@ -838,7 +838,9 @@ int VBoxNetDhcp::parseArgs(int argc, char **argv) return 1; default: - break; + rc = RTGetOptPrintError(rc, &Val); + RTPrintf("Use --help for more information.\n"); + return rc; } } diff --git a/src/VBox/Runtime/Makefile.kmk b/src/VBox/Runtime/Makefile.kmk index c199e78c0..3fac0c7ac 100644 --- a/src/VBox/Runtime/Makefile.kmk +++ b/src/VBox/Runtime/Makefile.kmk @@ -4,7 +4,7 @@ # # -# Copyright (C) 2006-2007 Sun Microsystems, Inc. +# Copyright (C) 2006-2010 Sun Microsystems, Inc. # # This file is part of VirtualBox Open Source Edition (OSE), as # available from http://www.virtualbox.org. This file is free software; @@ -57,7 +57,10 @@ else # !VBOX_ONLY_ADDITIONS && !VBOX_ONLY_DOCS include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk BLDPROGS += uniread - LIBRARIES += RuntimeR3 RuntimeR0 RuntimeGC RuntimeEFCPP RuntimeR3NoCRTGCC + LIBRARIES += RuntimeR3 RuntimeR0 RuntimeEFCPP RuntimeR3NoCRTGCC + ifdef VBOX_WITH_RAW_MODE + LIBRARIES += RuntimeGC + endif ifdef VBOX_WITH_VBOXDRV LIBRARIES += RuntimeR0Drv endif @@ -358,8 +361,11 @@ endif # Some versions of GCC might require this. RuntimeR3_SOURCES.x86 += \ + common/asm/ASMAtomicXchgU64.asm \ common/asm/ASMAtomicCmpXchgU64.asm \ - common/asm/ASMAtomicReadU64.asm + common/asm/ASMAtomicCmpXchgExU64.asm \ + common/asm/ASMAtomicReadU64.asm \ + common/asm/ASMAtomicUoReadU64.asm ifdef IPRT_WITH_KSTUFF RuntimeR3_SOURCES += \ @@ -1474,13 +1480,14 @@ RuntimeGuestR0NT4_EXTENDS_BY = appending RuntimeGuestR0NT4_DEFS = IPRT_TARGET_NT4 -# -# RuntimeGC - Guest context library. -# -RuntimeGC_TEMPLATE = VBOXGC -RuntimeGC_DEFS = IN_RT_GC RT_WITH_VBOX -RuntimeGC_INCS = include -RuntimeGC_SOURCES = \ +ifdef VBOX_WITH_RAW_MODE + # + # RuntimeGC - Guest context library. + # + RuntimeGC_TEMPLATE = VBOXGC + RuntimeGC_DEFS = IN_RT_GC RT_WITH_VBOX + RuntimeGC_INCS = include + RuntimeGC_SOURCES = \ common/log/log.cpp \ common/log/logellipsis.cpp \ common/log/logrel.cpp \ @@ -1516,20 +1523,20 @@ RuntimeGC_SOURCES = \ \ $(RuntimeNoCrt_SOURCES) -#if1of ($(KBUILD_TARGET_ARCH),amd64 x86) -# RuntimeGC_SOURCES += common/time/timesupA.asm -#else - RuntimeGC_SOURCES += common/time/timesupref.cpp -#endif + #if1of ($(KBUILD_TARGET_ARCH),amd64 x86) + # RuntimeGC_SOURCES += common/time/timesupA.asm + #else + RuntimeGC_SOURCES += common/time/timesupref.cpp + #endif -RuntimeGC_SOURCES.win.x86 = $(RuntimeWin32ASM_SOURCES) + RuntimeGC_SOURCES.win.x86 = $(RuntimeWin32ASM_SOURCES) -ifeq ($(VBOX_LDR_FMT32),lx) - RuntimeGC_SOURCES += os2/sys0.asm -endif + ifeq ($(VBOX_LDR_FMT32),lx) + RuntimeGC_SOURCES += os2/sys0.asm + endif -if1of ($(KBUILD_TARGET), darwin solaris freebsd) -RuntimeGC_SOURCES += \ + if1of ($(KBUILD_TARGET), darwin solaris freebsd) + RuntimeGC_SOURCES += \ common/math/gcc/adddi3.c \ common/math/gcc/anddi3.c \ common/math/gcc/ashldi3.c \ @@ -1549,7 +1556,8 @@ RuntimeGC_SOURCES += \ common/math/gcc/udivdi3.c \ common/math/gcc/umoddi3.c \ common/math/gcc/xordi3.c -endif + endif +endif # VBOX_WITH_RAW_MODE # diff --git a/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgExU64.asm b/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgExU64.asm new file mode 100644 index 000000000..80f9e244f --- /dev/null +++ b/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgExU64.asm @@ -0,0 +1,88 @@ +; $Id: ASMAtomicCmpXchgExU64.asm 56380 2010-01-06 04:19:49Z bird $
+;; @file
+; IPRT - ASMAtomicCmpXchgExU64().
+;
+
+;
+; Copyright (C) 2006-2010 Sun Microsystems, Inc.
+;
+; 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.
+;
+; Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
+; Clara, CA 95054 USA or visit http://www.sun.com if you need
+; additional information or have any questions.
+;
+
+;*******************************************************************************
+;* Header Files *
+;*******************************************************************************
+%include "iprt/asmdefs.mac"
+
+BEGINCODE
+
+;;
+; Atomically Exchange an unsigned 64-bit value, ordered.
+;
+; @param pu64 x86:ebp+8 gcc:rdi msc:rcx
+; @param u64New x86:ebp+c gcc:rsi msc:rdx
+; @param u64Old x86:ebp+14 gcc:rcx msc:r8
+; @param u64Old x86:ebp+1c gcc:rdx msc:r9
+;
+; @returns bool result: true if succesfully exchanged, false if not.
+; x86:al
+;
+BEGINPROC_EXPORTED ASMAtomicCmpXchgExU64
+%ifdef RT_ARCH_AMD64
+ %ifdef ASM_CALL64_MSC
+ mov rax, r8
+ lock cmpxchg [rcx], rdx
+ mov [r9], rax
+ %else
+ mov rax, rcx
+ lock cmpxchg [rdi], rsi
+ mov [rdx], rax
+ %endif
+ setz al
+ movzx eax, al
+ ret
+%endif
+%ifdef RT_ARCH_X86
+ push ebp
+ mov ebp, esp
+ push ebx
+ push edi
+
+ mov ebx, dword [ebp+0ch]
+ mov ecx, dword [ebp+0ch + 4]
+ mov edi, [ebp+08h]
+ mov eax, dword [ebp+14h]
+ mov edx, dword [ebp+14h + 4]
+ lock cmpxchg8b [edi]
+ mov edi, [ebp + 1ch]
+ mov [edi], eax
+ mov [edi + 4], edx
+ setz al
+ movzx eax, al
+
+ pop edi
+ pop ebx
+ leave
+ ret
+%endif
+ENDPROC ASMAtomicCmpXchgExU64
+
diff --git a/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgU64.asm b/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgU64.asm index 51eecc4d6..d53ad5718 100644 --- a/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgU64.asm +++ b/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgU64.asm @@ -4,7 +4,7 @@ ; ; -; Copyright (C) 2006-2009 Sun Microsystems, Inc. +; Copyright (C) 2006-2010 Sun Microsystems, Inc. ; ; This file is part of VirtualBox Open Source Edition (OSE), as ; available from http://www.virtualbox.org. This file is free software; @@ -38,17 +38,27 @@ BEGINCODE ;; ; Atomically compares and exchanges an unsigned 64-bit int. ; -; @param pu64 x86:ebp+8 -; @param u64New x86:ebp+c -; @param u64Old x86:ebp+14 +; @param pu64 x86:ebp+8 gcc:rdi msc:rcx +; @param u64New x86:ebp+c gcc:rsi msc:rdx +; @param u64Old x86:ebp+14 gcc:rcx msc:r8 ; ; @returns bool result: true if succesfully exchanged, false if not. ; x86:al ; BEGINPROC_EXPORTED ASMAtomicCmpXchgU64 -%ifndef RT_ARCH_X86 - %error port me +%ifdef RT_ARCH_AMD64 + %ifdef ASM_CALL64_MSC + mov rax, r8 + lock cmpxchg [rcx], rdx + %else + mov rax, rcx + lock cmpxchg [rdi], rsi + %endif + setz al + movzx eax, al + ret %endif +%ifdef RT_ARCH_X86 push ebp mov ebp, esp push ebx @@ -67,5 +77,6 @@ BEGINPROC_EXPORTED ASMAtomicCmpXchgU64 pop ebx leave ret +%endif ENDPROC ASMAtomicCmpXchgU64 diff --git a/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgU8.asm b/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgU8.asm new file mode 100644 index 000000000..8a41c2b3c --- /dev/null +++ b/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgU8.asm @@ -0,0 +1,67 @@ +; $Id: ASMAtomicCmpXchgU8.asm 56163 2009-12-18 15:22:16Z bird $
+;; @file
+; IPRT - ASMAtomicCmpXchgU8().
+;
+
+;
+; Copyright (C) 2006-2009 Sun Microsystems, Inc.
+;
+; 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.
+;
+; Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
+; Clara, CA 95054 USA or visit http://www.sun.com if you need
+; additional information or have any questions.
+;
+
+;*******************************************************************************
+;* Header Files *
+;*******************************************************************************
+%include "iprt/asmdefs.mac"
+
+BEGINCODE
+
+;;
+; Atomically compares and exchanges an unsigned 8-bit int.
+;
+; @param pu8 x86:esp+4 msc:rcx gcc:rdi
+; @param u8New x86:esp+8 msc:dl gcc:sil
+; @param u8Old x86:esp+c msc:r8l gcc:dl
+;
+; @returns bool result: true if succesfully exchanged, false if not.
+; x86:al
+;
+BEGINPROC_EXPORTED ASMAtomicCmpXchgU8
+%ifdef RT_ARCH_AMD64
+ %ifdef ASM_CALL64_MSC
+ mov al, r8b
+ lock cmpxchg [rcx], dl
+ %else
+ mov al, dl
+ lock cmpxchg [rdi], sil
+ %endif
+%else
+ mov ecx, [esp + 04h]
+ mov dl, [esp + 08h]
+ mov al, [esp + 0ch]
+ lock cmpxchg [ecx], dl
+%endif
+ setz al
+ movzx eax, al
+ ret
+ENDPROC ASMAtomicCmpXchgU8
+
diff --git a/src/VBox/Runtime/common/asm/ASMAtomicReadU64.asm b/src/VBox/Runtime/common/asm/ASMAtomicReadU64.asm index 2f34952ef..128acd21a 100644 --- a/src/VBox/Runtime/common/asm/ASMAtomicReadU64.asm +++ b/src/VBox/Runtime/common/asm/ASMAtomicReadU64.asm @@ -44,9 +44,16 @@ BEGINCODE ; ; BEGINPROC_EXPORTED ASMAtomicReadU64 -%ifndef RT_ARCH_X86 - %error port me +%ifdef RT_ARCH_AMD64 + mfence ; ASSUME its present. + %ifdef ASM_CALL64_MSC + mov rax, [rcx] + %else + mov rax, [rdi] + %endif + ret %endif +%ifdef RT_ARCH_X86 push ebp mov ebp, esp push ebx @@ -63,5 +70,6 @@ BEGINPROC_EXPORTED ASMAtomicReadU64 pop ebx leave ret +%endif ENDPROC ASMAtomicReadU64 diff --git a/src/VBox/Runtime/common/asm/ASMAtomicUoReadU64.asm b/src/VBox/Runtime/common/asm/ASMAtomicUoReadU64.asm new file mode 100644 index 000000000..1e4180438 --- /dev/null +++ b/src/VBox/Runtime/common/asm/ASMAtomicUoReadU64.asm @@ -0,0 +1,74 @@ +; $Id: ASMAtomicUoReadU64.asm 56386 2010-01-06 06:01:40Z bird $
+;; @file
+; IPRT - ASMAtomicUoReadU64().
+;
+
+;
+; Copyright (C) 2006-2010 Sun Microsystems, Inc.
+;
+; 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.
+;
+; Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
+; Clara, CA 95054 USA or visit http://www.sun.com if you need
+; additional information or have any questions.
+;
+
+;*******************************************************************************
+;* Header Files *
+;*******************************************************************************
+%include "iprt/asmdefs.mac"
+
+BEGINCODE
+
+;;
+; Atomically reads 64-bit value.
+;
+; @param pu64 x86:ebp+8
+;
+; @returns The current value. (x86:eax+edx)
+;
+;
+BEGINPROC_EXPORTED ASMAtomicUoReadU64
+%ifdef RT_ARCH_AMD64
+ %ifdef ASM_CALL64_MSC
+ mov rax, [rcx]
+ %else
+ mov rax, [rdi]
+ %endif
+ ret
+%endif
+%ifdef RT_ARCH_X86
+ push ebp
+ mov ebp, esp
+ push ebx
+ push edi
+
+ xor eax, eax
+ xor edx, edx
+ mov edi, [ebp+08h]
+ xor ecx, ecx
+ xor ebx, ebx
+ lock cmpxchg8b [edi]
+
+ pop edi
+ pop ebx
+ leave
+ ret
+%endif
+ENDPROC ASMAtomicUoReadU64
+
diff --git a/src/VBox/Runtime/common/asm/ASMAtomicXchgU64.asm b/src/VBox/Runtime/common/asm/ASMAtomicXchgU64.asm new file mode 100644 index 000000000..d7d1a329d --- /dev/null +++ b/src/VBox/Runtime/common/asm/ASMAtomicXchgU64.asm @@ -0,0 +1,80 @@ +; $Id: ASMAtomicXchgU64.asm 56380 2010-01-06 04:19:49Z bird $
+;; @file
+; IPRT - ASMAtomicXchgU64().
+;
+
+;
+; Copyright (C) 2006-2010 Sun Microsystems, Inc.
+;
+; 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.
+;
+; Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
+; Clara, CA 95054 USA or visit http://www.sun.com if you need
+; additional information or have any questions.
+;
+
+;*******************************************************************************
+;* Header Files *
+;*******************************************************************************
+%include "iprt/asmdefs.mac"
+
+BEGINCODE
+
+;;
+; Atomically Exchange an unsigned 64-bit value, ordered.
+;
+; @param pu64 x86:ebp+8 gcc:rdi msc:rcx
+; @param u64New x86:ebp+c gcc:rsi msc:rdx
+;
+; @returns bool result: true if succesfully exchanged, false if not.
+; x86:al
+;
+BEGINPROC_EXPORTED ASMAtomicXchgU64
+%ifdef RT_ARCH_AMD64
+ %ifdef ASM_CALL64_MSC
+ mov rax, r8
+.try_again:
+ lock cmpxchg [rcx], rdx
+ %else
+.try_again:
+ mov rax, rcx
+ lock cmpxchg [rdi], rsi
+ %endif
+ jnz .try_again
+ ret
+%endif
+%ifdef RT_ARCH_X86
+ push ebp
+ mov ebp, esp
+ push ebx
+ push edi
+
+.try_again:
+ mov ebx, dword [ebp+0ch]
+ mov ecx, dword [ebp+0ch + 4]
+ mov edi, [ebp+08h]
+ lock cmpxchg8b [edi]
+ jnz .try_again
+
+ pop edi
+ pop ebx
+ leave
+ ret
+%endif
+ENDPROC ASMAtomicXchgU64
+
diff --git a/src/VBox/Runtime/common/string/strformatrt.cpp b/src/VBox/Runtime/common/string/strformatrt.cpp index a05ed8e87..0cca92bdd 100644 --- a/src/VBox/Runtime/common/string/strformatrt.cpp +++ b/src/VBox/Runtime/common/string/strformatrt.cpp @@ -51,6 +51,7 @@ * - \%RTiop - Takes a #RTIOPORT value. * - \%RTldrm - Takes a #RTLDRMOD value. * - \%RTmac - Takes a #PCRTMAC pointer. + * - \%RTnaddr - Takes a #PCRTNETADDR value. * - \%RTnaipv4 - Takes a #RTNETADDRIPV4 value. * - \%RTnaipv6 - Takes a #PCRTNETADDRIPV6 value. * - \%RTnthrd - Takes a #RTNATIVETHREAD value. @@ -213,6 +214,7 @@ size_t rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **p RTSF_IPV4, RTSF_IPV6, RTSF_MAC, + RTSF_NETADDR, RTSF_UUID } RTSF; static const struct @@ -264,6 +266,7 @@ size_t rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **p { STRMEM("Tiop"), sizeof(RTIOPORT), 16, RTSF_INTW, 0 }, { STRMEM("Tldrm"), sizeof(RTLDRMOD), 16, RTSF_INTW, 0 }, { STRMEM("Tmac"), sizeof(PCRTMAC), 16, RTSF_MAC, 0 }, + { STRMEM("Tnaddr"), sizeof(PCRTNETADDR), 10, RTSF_NETADDR,0 }, { STRMEM("Tnaipv4"), sizeof(RTNETADDRIPV4), 10, RTSF_IPV4, 0 }, { STRMEM("Tnaipv6"), sizeof(PCRTNETADDRIPV6),16, RTSF_IPV6, 0 }, { STRMEM("Tnthrd"), sizeof(RTNATIVETHREAD), 16, RTSF_INTW, 0 }, @@ -314,6 +317,7 @@ size_t rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **p PCRTMAC pMac; RTNETADDRIPV4 Ipv4Addr; PCRTNETADDRIPV6 pIpv6Addr; + PCRTNETADDR pNetAddr; PCRTUUID pUuid; } u; char szBuf[80]; @@ -530,6 +534,87 @@ size_t rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **p return pfnOutput(pvArgOutput, s_szNull, sizeof(s_szNull) - 1); } + case RTSF_NETADDR: + { + if (VALID_PTR(u.pNetAddr)) + { + switch (u.pNetAddr->enmType) + { + case RTNETADDRTYPE_IPV4: + if (u.pNetAddr->uPort == RTNETADDR_PORT_NA) + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%u.%u.%u.%u", + u.pNetAddr->uAddr.IPv4.au8[0], + u.pNetAddr->uAddr.IPv4.au8[1], + u.pNetAddr->uAddr.IPv4.au8[2], + u.pNetAddr->uAddr.IPv4.au8[3]); + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%u.%u.%u.%u:%u", + u.pNetAddr->uAddr.IPv4.au8[0], + u.pNetAddr->uAddr.IPv4.au8[1], + u.pNetAddr->uAddr.IPv4.au8[2], + u.pNetAddr->uAddr.IPv4.au8[3], + u.pNetAddr->uPort); + + case RTNETADDRTYPE_IPV6: + if (u.pNetAddr->uPort == RTNETADDR_PORT_NA) + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x", + u.pNetAddr->uAddr.IPv6.au8[0], + u.pNetAddr->uAddr.IPv6.au8[1], + u.pNetAddr->uAddr.IPv6.au8[2], + u.pNetAddr->uAddr.IPv6.au8[3], + u.pNetAddr->uAddr.IPv6.au8[4], + u.pNetAddr->uAddr.IPv6.au8[5], + u.pNetAddr->uAddr.IPv6.au8[6], + u.pNetAddr->uAddr.IPv6.au8[7], + u.pNetAddr->uAddr.IPv6.au8[8], + u.pNetAddr->uAddr.IPv6.au8[9], + u.pNetAddr->uAddr.IPv6.au8[10], + u.pNetAddr->uAddr.IPv6.au8[11], + u.pNetAddr->uAddr.IPv6.au8[12], + u.pNetAddr->uAddr.IPv6.au8[13], + u.pNetAddr->uAddr.IPv6.au8[14], + u.pNetAddr->uAddr.IPv6.au8[15]); + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x %u", + u.pNetAddr->uAddr.IPv6.au8[0], + u.pNetAddr->uAddr.IPv6.au8[1], + u.pNetAddr->uAddr.IPv6.au8[2], + u.pNetAddr->uAddr.IPv6.au8[3], + u.pNetAddr->uAddr.IPv6.au8[4], + u.pNetAddr->uAddr.IPv6.au8[5], + u.pNetAddr->uAddr.IPv6.au8[6], + u.pNetAddr->uAddr.IPv6.au8[7], + u.pNetAddr->uAddr.IPv6.au8[8], + u.pNetAddr->uAddr.IPv6.au8[9], + u.pNetAddr->uAddr.IPv6.au8[10], + u.pNetAddr->uAddr.IPv6.au8[11], + u.pNetAddr->uAddr.IPv6.au8[12], + u.pNetAddr->uAddr.IPv6.au8[13], + u.pNetAddr->uAddr.IPv6.au8[14], + u.pNetAddr->uAddr.IPv6.au8[15], + u.pNetAddr->uPort); + + case RTNETADDRTYPE_MAC: + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%02x:%02x:%02x:%02x:%02x:%02x", + u.pNetAddr->uAddr.Mac.au8[0], + u.pNetAddr->uAddr.Mac.au8[1], + u.pNetAddr->uAddr.Mac.au8[2], + u.pNetAddr->uAddr.Mac.au8[3], + u.pNetAddr->uAddr.Mac.au8[4], + u.pNetAddr->uAddr.Mac.au8[5]); + + default: + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "unsupported-netaddr-type=%u", u.pNetAddr->enmType); + + } + } + return pfnOutput(pvArgOutput, s_szNull, sizeof(s_szNull) - 1); + } + case RTSF_UUID: { if (VALID_PTR(u.pUuid)) diff --git a/src/VBox/Runtime/common/string/string.cpp b/src/VBox/Runtime/common/string/string.cpp index 447d669b7..0a938fe93 100644 --- a/src/VBox/Runtime/common/string/string.cpp +++ b/src/VBox/Runtime/common/string/string.cpp @@ -113,7 +113,7 @@ RTDECL(char *) RTStrDupN(const char *pszString, size_t cchMax) AssertPtr(pszString); char *pszEnd = (char *)memchr(pszString, '\0', cchMax); size_t cch = pszEnd ? (uintptr_t)pszEnd - (uintptr_t)pszString : cchMax; - char *pszDst = (char *)RTMemAlloc(cch); + char *pszDst = (char *)RTMemAlloc(cch + 1); if (pszDst) { memcpy(pszDst, pszString, cch); diff --git a/src/VBox/Runtime/r0drv/linux/memuserkernel-r0drv-linux.c b/src/VBox/Runtime/r0drv/linux/memuserkernel-r0drv-linux.c index d95812dd8..87469fa4c 100644 --- a/src/VBox/Runtime/r0drv/linux/memuserkernel-r0drv-linux.c +++ b/src/VBox/Runtime/r0drv/linux/memuserkernel-r0drv-linux.c @@ -75,9 +75,14 @@ RTR0DECL(bool) RTR0MemKernelIsValidAddr(void *pv) # endif #elif defined(RT_ARCH_AMD64) -# ifdef KERNEL_IMAGE_START - return (uintptr_t)pv >= KERNEL_IMAGE_START; +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + /* Linux 2.6.0 ... 2.6.10 set PAGE_OFFSET to 0x0000010000000000. + * Linux 2.6.11 sets PAGE_OFFSET to 0xffff810000000000. + * Linux 2.6.33 sets PAGE_OFFSET to 0xffff880000000000. */ + return (uintptr_t)pv >= PAGE_OFFSET; # else + /* Not correct (KERNEL_TEXT_START=0xffffffff80000000), + * VMALLOC_START (0xffffff0000000000) would be better */ return (uintptr_t)pv >= KERNEL_TEXT_START; # endif diff --git a/src/VBox/Runtime/r0drv/linux/timer-r0drv-linux.c b/src/VBox/Runtime/r0drv/linux/timer-r0drv-linux.c index c652e8bd9..870bbcbec 100644 --- a/src/VBox/Runtime/r0drv/linux/timer-r0drv-linux.c +++ b/src/VBox/Runtime/r0drv/linux/timer-r0drv-linux.c @@ -59,6 +59,11 @@ # error "RT_USE_LINUX_HRTIMER requires 2.6.16 or later, sorry." #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31) +# define mod_timer_pinned mod_timer +# define HRTIMER_MODE_ABS_PINNED HRTIMER_MODE_ABS +#endif + /******************************************************************************* * Structures and Typedefs * @@ -264,8 +269,10 @@ DECLINLINE(unsigned long) rtTimerLnxNanoToJiffies(uint64_t cNanoSecs) * @param pSubTimer The sub-timer to start. * @param u64Now The current timestamp (RTTimeNanoTS()). * @param u64First The interval from u64Now to the first time the timer should fire. + * @param fPinned true = timer pinned to a specific CPU, + * false = timer can migrate between CPUs */ -static void rtTimerLnxStartSubTimer(PRTTIMERLNXSUBTIMER pSubTimer, uint64_t u64Now, uint64_t u64First) +static void rtTimerLnxStartSubTimer(PRTTIMERLNXSUBTIMER pSubTimer, uint64_t u64Now, uint64_t u64First, bool fPinned) { /* * Calc when it should start firing. @@ -276,12 +283,18 @@ static void rtTimerLnxStartSubTimer(PRTTIMERLNXSUBTIMER pSubTimer, uint64_t u64N pSubTimer->iTick = 0; #ifdef RT_USE_LINUX_HRTIMER - hrtimer_start(&pSubTimer->LnxTimer, rtTimerLnxNanoToKt(u64NextTS), HRTIMER_MODE_ABS); + hrtimer_start(&pSubTimer->LnxTimer, rtTimerLnxNanoToKt(u64NextTS), + fPinned ? HRTIMER_MODE_ABS_PINNED : HRTIMER_MODE_ABS); #else { unsigned long cJiffies = !u64First ? 0 : rtTimerLnxNanoToJiffies(u64First); pSubTimer->ulNextJiffies = jiffies + cJiffies; - mod_timer(&pSubTimer->LnxTimer, pSubTimer->ulNextJiffies); +# ifdef CONFIG_SMP + if (fPinned) + mod_timer_pinned(&pSubTimer->LnxTimer, pSubTimer->ulNextJiffies); + else +# endif + mod_timer(&pSubTimer->LnxTimer, pSubTimer->ulNextJiffies); } #endif @@ -414,7 +427,12 @@ static void rtTimerLinuxCallback(unsigned long ulUser) pSubTimer->ulNextJiffies = jiffies + rtTimerLnxNanoToJiffies(pSubTimer->u64NextTS - u64NanoTS); } - mod_timer(&pSubTimer->LnxTimer, pSubTimer->ulNextJiffies); +# ifdef CONFIG_SMP + if (pTimer->fSpecificCpu || pTimer->fAllCpus) + mod_timer_pinned(&pSubTimer->LnxTimer, pSubTimer->ulNextJiffies); + else +# endif + mod_timer(&pSubTimer->LnxTimer, pSubTimer->ulNextJiffies); #endif /* @@ -443,7 +461,7 @@ static DECLCALLBACK(void) rtTimerLnxStartAllOnCpu(RTCPUID idCpu, void *pvUser1, PRTTIMERLINUXSTARTONCPUARGS pArgs = (PRTTIMERLINUXSTARTONCPUARGS)pvUser2; PRTTIMER pTimer = (PRTTIMER)pvUser1; Assert(idCpu < pTimer->cCpus); - rtTimerLnxStartSubTimer(&pTimer->aSubTimers[idCpu], pArgs->u64Now, pArgs->u64First); + rtTimerLnxStartSubTimer(&pTimer->aSubTimers[idCpu], pArgs->u64Now, pArgs->u64First, true /*fPinned*/); } @@ -595,7 +613,7 @@ static DECLCALLBACK(void) rtTimerLinuxMpStartOnCpu(RTCPUID idCpu, void *pvUser1, /* We're sane and the timer is not suspended yet. */ PRTTIMERLNXSUBTIMER pSubTimer = &pTimer->aSubTimers[idCpu]; if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_MP_STARTING, RTTIMERLNXSTATE_STOPPED)) - rtTimerLnxStartSubTimer(pSubTimer, pArgs->u64Now, pArgs->u64First); + rtTimerLnxStartSubTimer(pSubTimer, pArgs->u64Now, pArgs->u64First, true /*fPinned*/); } RTSpinlockRelease(hSpinlock, &Tmp); @@ -648,7 +666,7 @@ static DECLCALLBACK(void) rtTimerLinuxMpEvent(RTMPEVENT enmEvent, RTCPUID idCpu, Args.u64First = 0; if (RTMpCpuId() == idCpu) - rtTimerLnxStartSubTimer(pSubTimer, Args.u64Now, Args.u64First); + rtTimerLnxStartSubTimer(pSubTimer, Args.u64Now, Args.u64First, true /*fPinned*/); else { rtTimerLnxSetState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED); /* we'll recheck it. */ @@ -696,7 +714,7 @@ static DECLCALLBACK(void) rtTimerLnxStartOnSpecificCpu(RTCPUID idCpu, void *pvUs { PRTTIMERLINUXSTARTONCPUARGS pArgs = (PRTTIMERLINUXSTARTONCPUARGS)pvUser2; PRTTIMER pTimer = (PRTTIMER)pvUser1; - rtTimerLnxStartSubTimer(&pTimer->aSubTimers[0], pArgs->u64Now, pArgs->u64First); + rtTimerLnxStartSubTimer(&pTimer->aSubTimers[0], pArgs->u64Now, pArgs->u64First, true /*fPinned*/); } @@ -730,7 +748,7 @@ RTDECL(int) RTTimerStart(PRTTIMER pTimer, uint64_t u64First) rtTimerLnxSetState(&pTimer->aSubTimers[0].enmState, RTTIMERLNXSTATE_STARTING); ASMAtomicWriteBool(&pTimer->fSuspended, false); if (!pTimer->fSpecificCpu) - rtTimerLnxStartSubTimer(&pTimer->aSubTimers[0], Args.u64Now, Args.u64First); + rtTimerLnxStartSubTimer(&pTimer->aSubTimers[0], Args.u64Now, Args.u64First, false /*fPinned*/); else { rc2 = RTMpOnSpecific(pTimer->idCpu, rtTimerLnxStartOnSpecificCpu, pTimer, &Args); diff --git a/src/VBox/Runtime/r3/alloc-ef.cpp b/src/VBox/Runtime/r3/alloc-ef.cpp index af115fcae..5a4d07dcb 100644 --- a/src/VBox/Runtime/r3/alloc-ef.cpp +++ b/src/VBox/Runtime/r3/alloc-ef.cpp @@ -4,7 +4,7 @@ */ /* - * Copyright (C) 2006-2007 Sun Microsystems, Inc. + * Copyright (C) 2006-2010 Sun Microsystems, Inc. * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -291,6 +291,12 @@ void *rtMemAlloc(const char *pszOp, RTMEMTYPE enmType, size_t cb, void *pvCaller cb = 1; #endif } +#ifndef RTALLOC_EFENCE_IN_FRONT + /* Alignment decreases fence accuracy, but this is at least partially + * counteracted by filling and checking the alignment padding. When the + * fence is in front then then no extra alignment is needed. */ + size_t cbAlign = RT_ALIGN_Z(cb, RTALLOC_EFENCE_ALIGNMENT); +#endif #ifdef RTALLOC_EFENCE_TRACE /* @@ -318,10 +324,21 @@ void *rtMemAlloc(const char *pszOp, RTMEMTYPE enmType, size_t cb, void *pvCaller #ifdef RTALLOC_EFENCE_IN_FRONT void *pvEFence = pvBlock; void *pv = (char *)pvEFence + RTALLOC_EFENCE_SIZE; +#ifdef RTALLOC_EFENCE_NOMAN_FILLER + memset((char *)pv + cb, RTALLOC_EFENCE_NOMAN_FILLER, cbBlock - RTALLOC_EFENCE_SIZE - cb); +#endif #else void *pvEFence = (char *)pvBlock + (cbBlock - RTALLOC_EFENCE_SIZE); - void *pv = (char *)pvEFence - cb; + void *pv = (char *)pvEFence - cbAlign; +#ifdef RTALLOC_EFENCE_NOMAN_FILLER + memset(pvBlock, RTALLOC_EFENCE_NOMAN_FILLER, cbBlock - RTALLOC_EFENCE_SIZE - cbAlign); + memset((char *)pv + cb, RTALLOC_EFENCE_NOMAN_FILLER, cbAlign - cb); +#endif #endif + +#ifdef RTALLOC_EFENCE_FENCE_FILLER + memset(pvEFence, RTALLOC_EFENCE_FENCE_FILLER, RTALLOC_EFENCE_SIZE); +#endif int rc = RTMemProtect(pvEFence, RTALLOC_EFENCE_SIZE, RTMEM_PROT_NONE); if (!rc) { @@ -379,6 +396,30 @@ void rtMemFree(const char *pszOp, RTMEMTYPE enmType, void *pv, void *pvCaller, u if (gfRTMemFreeLog) RTLogPrintf("RTMem %s: pv=%p pvCaller=%p cb=%#x\n", pszOp, pv, pvCaller, pBlock->cb); +#ifdef RTALLOC_EFENCE_NOMAN_FILLER + /* + * Check whether the no man's land is untouched. + */ +# ifdef RTALLOC_EFENCE_IN_FRONT + void *p = ASMMemIsAll8((char *)pv + pBlock->cb, + RT_ALIGN_Z(pBlock->cb, PAGE_SIZE) - pBlock->cb, + RTALLOC_EFENCE_NOMAN_FILLER); +# else + /* Alignment must match allocation alignment in rtMemAlloc(). */ + size_t cbAlign = RT_ALIGN_Z(pBlock->cb, RTALLOC_EFENCE_ALIGNMENT); + void *p = ASMMemIsAll8((char *)pv + pBlock->cb, + cbAlign - pBlock->cb, + RTALLOC_EFENCE_NOMAN_FILLER); + if (p) + RTAssertDoPanic(); + p = ASMMemIsAll8((void *)((uintptr_t)pv & ~PAGE_OFFSET_MASK), + RT_ALIGN_Z(cbAlign, PAGE_SIZE) - cbAlign, + RTALLOC_EFENCE_NOMAN_FILLER); +# endif + if (p) + RTAssertDoPanic(); +#endif + #ifdef RTALLOC_EFENCE_FREE_FILL /* * Fill the user part of the block. diff --git a/src/VBox/Runtime/r3/alloc-ef.h b/src/VBox/Runtime/r3/alloc-ef.h index 83e0d47c0..c0a4ea84e 100644 --- a/src/VBox/Runtime/r3/alloc-ef.h +++ b/src/VBox/Runtime/r3/alloc-ef.h @@ -4,7 +4,7 @@ */ /* - * Copyright (C) 2006-2007 Sun Microsystems, Inc. + * Copyright (C) 2006-2010 Sun Microsystems, Inc. * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -53,6 +53,20 @@ */ #define RTALLOC_EFENCE_SIZE PAGE_SIZE +/** @def RTALLOC_EFENCE_ALIGNMENT + * The allocation alignment, power of two of course. + * + * Normally, 1 would be the perfect choice here, except that there is code, like + * the atomic operations in iprt/asm.h, that makes assumptions about naturally + * aligned data members. If the code you're working against doesn't have strict + * alignment requirements, changing this to 1 is highly desirable. + */ +#if 1 +# define RTALLOC_EFENCE_ALIGNMENT (ARCH_BITS / 8) +#else +# define RTALLOC_EFENCE_ALIGNMENT 1 +#endif + /** @def RTALLOC_EFENCE_IN_FRONT * Define this to put the fence up in front of the block. * The default (when this isn't defined) is to up it up after the block. @@ -80,7 +94,7 @@ * decommitted. * Requires RTALLOC_EFENCE_TRACE. */ -#if defined(RT_OS_LINUX) +#if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) # define RTALLOC_EFENCE_FREE_FILL 'f' #endif @@ -90,6 +104,18 @@ */ #define RTALLOC_EFENCE_FILLER 0xef +/** @def RTALLOC_EFENCE_NOMAN_FILLER + * This define will enable memset(,RTALLOC_EFENCE_NOMAN_FILLER,)'ing the + * unprotected but not allocated area of memory, the so called no man's land. + */ +#define RTALLOC_EFENCE_NOMAN_FILLER 0xaa + +/** @def RTALLOC_EFENCE_FENCE_FILLER + * This define will enable memset(,RTALLOC_EFENCE_FENCE_FILLER,)'ing the + * fence itself, as debuggers can usually read them. + */ +#define RTALLOC_EFENCE_FENCE_FILLER 0xcc + #if defined(__DOXYGEN__) /** @def RTALLOC_EFENCE_CPP * This define will enable the new and delete wrappers. diff --git a/src/VBox/Runtime/r3/solaris/fileaio-solaris.cpp b/src/VBox/Runtime/r3/solaris/fileaio-solaris.cpp new file mode 100644 index 000000000..980b39152 --- /dev/null +++ b/src/VBox/Runtime/r3/solaris/fileaio-solaris.cpp @@ -0,0 +1,534 @@ +/* $Id: fileaio-solaris.cpp $ */ +/** @file + * IPRT - File async I/O, native implementation for the Solaris host platform. + */ + +/* + * Copyright (C) 2006-2007 Sun Microsystems, Inc. + * + * Sun Microsystems, Inc. confidential + * All rights reserved + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_FILE +#include <iprt/asm.h> +#include <iprt/file.h> +#include <iprt/mem.h> +#include <iprt/assert.h> +#include <iprt/string.h> +#include <iprt/err.h> +#include <iprt/log.h> +#include "internal/fileaio.h" + +#include <port.h> +#include <aio.h> +#include <errno.h> +#include <unistd.h> + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** + * Async I/O completion context state. + */ +typedef struct RTFILEAIOCTXINTERNAL +{ + /** Handle to the port. */ + int iPort; + /** Current number of requests active on this context. */ + volatile int32_t cRequests; + /** Magic value (RTFILEAIOCTX_MAGIC). */ + uint32_t u32Magic; +} RTFILEAIOCTXINTERNAL; +/** Pointer to an internal context structure. */ +typedef RTFILEAIOCTXINTERNAL *PRTFILEAIOCTXINTERNAL; + +/** + * Async I/O request state. + */ +typedef struct RTFILEAIOREQINTERNAL +{ + /** The aio control block. Must be the FIRST + * element. */ + struct aiocb AioCB; + /** Current state the request is in. */ + RTFILEAIOREQSTATE enmState; + /** Flag whether this is a flush request. */ + bool fFlush; + /** Port notifier object to associate a request to a port. */ + port_notify_t PortNotifier; + /** Opaque user data. */ + void *pvUser; + /** Completion context we are assigned to. */ + PRTFILEAIOCTXINTERNAL pCtxInt; + /** Magic value (RTFILEAIOREQ_MAGIC). */ + uint32_t u32Magic; +} RTFILEAIOREQINTERNAL; +/** Pointer to an internal request structure. */ +typedef RTFILEAIOREQINTERNAL *PRTFILEAIOREQINTERNAL; + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +/** The max number of events to get in one call. */ +#define AIO_MAXIMUM_REQUESTS_PER_CONTEXT 64 +/** Id for the wakeup event. */ +#define AIO_CONTEXT_WAKEUP_EVENT 1 + +RTR3DECL(int) RTFileAioGetLimits(PRTFILEAIOLIMITS pAioLimits) +{ + int rcBSD = 0; + AssertPtrReturn(pAioLimits, VERR_INVALID_POINTER); + + /* No limits known. */ + pAioLimits->cReqsOutstandingMax = RTFILEAIO_UNLIMITED_REQS; + pAioLimits->cbBufferAlignment = 0; + + return VINF_SUCCESS; +} + +RTR3DECL(int) RTFileAioReqCreate(PRTFILEAIOREQ phReq) +{ + AssertPtrReturn(phReq, VERR_INVALID_POINTER); + + PRTFILEAIOREQINTERNAL pReqInt = (PRTFILEAIOREQINTERNAL)RTMemAllocZ(sizeof(RTFILEAIOREQINTERNAL)); + if (RT_UNLIKELY(!pReqInt)) + return VERR_NO_MEMORY; + + /* Ininitialize static parts. */ + pReqInt->AioCB.aio_sigevent.sigev_notify = SIGEV_PORT; + pReqInt->AioCB.aio_sigevent.sigev_value.sival_ptr = &pReqInt->PortNotifier; + pReqInt->PortNotifier.portnfy_user = pReqInt; + pReqInt->pCtxInt = NULL; + pReqInt->u32Magic = RTFILEAIOREQ_MAGIC; + RTFILEAIOREQ_SET_STATE(pReqInt, COMPLETED); + + *phReq = (RTFILEAIOREQ)pReqInt; + + return VINF_SUCCESS; +} + +RTDECL(int) RTFileAioReqDestroy(RTFILEAIOREQ hReq) +{ + /* + * Validate the handle and ignore nil. + */ + if (hReq == NIL_RTFILEAIOREQ) + return VINF_SUCCESS; + PRTFILEAIOREQINTERNAL pReqInt = hReq; + RTFILEAIOREQ_VALID_RETURN(pReqInt); + RTFILEAIOREQ_NOT_STATE_RETURN_RC(pReqInt, SUBMITTED, VERR_FILE_AIO_IN_PROGRESS); + + /* + * Trash the magic and free it. + */ + ASMAtomicUoWriteU32(&pReqInt->u32Magic, ~RTFILEAIOREQ_MAGIC); + RTMemFree(pReqInt); + return VINF_SUCCESS; +} + +/** + * Worker setting up the request. + */ +DECLINLINE(int) rtFileAioReqPrepareTransfer(RTFILEAIOREQ hReq, RTFILE hFile, + unsigned uTransferDirection, + RTFOFF off, void *pvBuf, size_t cbTransfer, + void *pvUser) +{ + /* + * Validate the input. + */ + PRTFILEAIOREQINTERNAL pReqInt = hReq; + RTFILEAIOREQ_VALID_RETURN(pReqInt); + RTFILEAIOREQ_NOT_STATE_RETURN_RC(pReqInt, SUBMITTED, VERR_FILE_AIO_IN_PROGRESS); + Assert(hFile != NIL_RTFILE); + AssertPtr(pvBuf); + Assert(off >= 0); + Assert(cbTransfer > 0); + + pReqInt->AioCB.aio_lio_opcode = uTransferDirection; + pReqInt->AioCB.aio_fildes = (int)hFile; + pReqInt->AioCB.aio_offset = off; + pReqInt->AioCB.aio_nbytes = cbTransfer; + pReqInt->AioCB.aio_buf = pvBuf; + pReqInt->fFlush = false; + pReqInt->pvUser = pvUser; + pReqInt->pCtxInt = NULL; + RTFILEAIOREQ_SET_STATE(pReqInt, PREPARED); + + return VINF_SUCCESS; +} + +RTDECL(int) RTFileAioReqPrepareRead(RTFILEAIOREQ hReq, RTFILE hFile, RTFOFF off, + void *pvBuf, size_t cbRead, void *pvUser) +{ + return rtFileAioReqPrepareTransfer(hReq, hFile, LIO_READ, + off, pvBuf, cbRead, pvUser); +} + +RTDECL(int) RTFileAioReqPrepareWrite(RTFILEAIOREQ hReq, RTFILE hFile, RTFOFF off, + void *pvBuf, size_t cbWrite, void *pvUser) +{ + return rtFileAioReqPrepareTransfer(hReq, hFile, LIO_WRITE, + off, pvBuf, cbWrite, pvUser); +} + +RTDECL(int) RTFileAioReqPrepareFlush(RTFILEAIOREQ hReq, RTFILE hFile, void *pvUser) +{ + PRTFILEAIOREQINTERNAL pReqInt = (PRTFILEAIOREQINTERNAL)hReq; + + RTFILEAIOREQ_VALID_RETURN(pReqInt); + RTFILEAIOREQ_NOT_STATE_RETURN_RC(pReqInt, SUBMITTED, VERR_FILE_AIO_IN_PROGRESS); + Assert(hFile != NIL_RTFILE); + + pReqInt->fFlush = true; + pReqInt->AioCB.aio_fildes = (int)hFile; + pReqInt->pvUser = pvUser; + RTFILEAIOREQ_SET_STATE(pReqInt, PREPARED); + + return VINF_SUCCESS; +} + +RTDECL(void *) RTFileAioReqGetUser(RTFILEAIOREQ hReq) +{ + PRTFILEAIOREQINTERNAL pReqInt = hReq; + RTFILEAIOREQ_VALID_RETURN_RC(pReqInt, NULL); + + return pReqInt->pvUser; +} + +RTDECL(int) RTFileAioReqCancel(RTFILEAIOREQ hReq) +{ + PRTFILEAIOREQINTERNAL pReqInt = hReq; + RTFILEAIOREQ_VALID_RETURN(pReqInt); + RTFILEAIOREQ_STATE_RETURN_RC(pReqInt, SUBMITTED, VERR_FILE_AIO_NOT_SUBMITTED); + + int rcSolaris = aio_cancel(pReqInt->AioCB.aio_fildes, &pReqInt->AioCB); + + if (rcSolaris == AIO_CANCELED) + { + /* + * Decrement request count because the request will never arrive at the + * completion port. + */ + AssertMsg(VALID_PTR(pReqInt->pCtxInt), + ("Invalid state. Request was canceled but wasn't submitted\n")); + + ASMAtomicDecS32(&pReqInt->pCtxInt->cRequests); + RTFILEAIOREQ_SET_STATE(pReqInt, COMPLETED); + return VINF_SUCCESS; + } + else if (rcSolaris == AIO_ALLDONE) + return VERR_FILE_AIO_COMPLETED; + else if (rcSolaris == AIO_NOTCANCELED) + return VERR_FILE_AIO_IN_PROGRESS; + else + return RTErrConvertFromErrno(errno); +} + +RTDECL(int) RTFileAioReqGetRC(RTFILEAIOREQ hReq, size_t *pcbTransfered) +{ + PRTFILEAIOREQINTERNAL pReqInt = hReq; + RTFILEAIOREQ_VALID_RETURN(pReqInt); + RTFILEAIOREQ_NOT_STATE_RETURN_RC(pReqInt, SUBMITTED, VERR_FILE_AIO_IN_PROGRESS); + RTFILEAIOREQ_NOT_STATE_RETURN_RC(pReqInt, PREPARED, VERR_FILE_AIO_NOT_SUBMITTED); + AssertPtrNull(pcbTransfered); + + int rcSol = aio_error(&pReqInt->AioCB); + Assert(rcSol != EINPROGRESS); /* Handled by our own state handling. */ + + if (rcSol == 0) + { + if (pcbTransfered) + *pcbTransfered = aio_return(&pReqInt->AioCB); + return VINF_SUCCESS; + } + + /* An error occurred. */ + return RTErrConvertFromErrno(rcSol); +} + +RTDECL(int) RTFileAioCtxCreate(PRTFILEAIOCTX phAioCtx, uint32_t cAioReqsMax) +{ + int rc = VINF_SUCCESS; + PRTFILEAIOCTXINTERNAL pCtxInt; + AssertPtrReturn(phAioCtx, VERR_INVALID_POINTER); + + pCtxInt = (PRTFILEAIOCTXINTERNAL)RTMemAllocZ(sizeof(RTFILEAIOCTXINTERNAL)); + if (RT_UNLIKELY(!pCtxInt)) + return VERR_NO_MEMORY; + + /* Init the event handle. */ + pCtxInt->iPort = port_create(); + if (RT_LIKELY(pCtxInt->iPort > 0)) + { + pCtxInt->u32Magic = RTFILEAIOCTX_MAGIC; + *phAioCtx = (RTFILEAIOCTX)pCtxInt; + } + else + { + RTMemFree(pCtxInt); + rc = RTErrConvertFromErrno(errno); + } + + return rc; +} + +RTDECL(int) RTFileAioCtxDestroy(RTFILEAIOCTX hAioCtx) +{ + /* Validate the handle and ignore nil. */ + if (hAioCtx == NIL_RTFILEAIOCTX) + return VINF_SUCCESS; + PRTFILEAIOCTXINTERNAL pCtxInt = hAioCtx; + RTFILEAIOCTX_VALID_RETURN(pCtxInt); + + /* Cannot destroy a busy context. */ + if (RT_UNLIKELY(pCtxInt->cRequests)) + return VERR_FILE_AIO_BUSY; + + close(pCtxInt->iPort); + ASMAtomicUoWriteU32(&pCtxInt->u32Magic, RTFILEAIOCTX_MAGIC_DEAD); + RTMemFree(pCtxInt); + + return VINF_SUCCESS; +} + +RTDECL(uint32_t) RTFileAioCtxGetMaxReqCount(RTFILEAIOCTX hAioCtx) +{ + return RTFILEAIO_UNLIMITED_REQS; +} + +RTDECL(int) RTFileAioCtxAssociateWithFile(RTFILEAIOCTX hAioCtx, RTFILE hFile) +{ + return VINF_SUCCESS; +} + +RTDECL(int) RTFileAioCtxSubmit(RTFILEAIOCTX hAioCtx, PRTFILEAIOREQ pahReqs, size_t cReqs) +{ + /* + * Parameter validation. + */ + int rc = VINF_SUCCESS; + PRTFILEAIOCTXINTERNAL pCtxInt = hAioCtx; + RTFILEAIOCTX_VALID_RETURN(pCtxInt); + AssertReturn(cReqs > 0, VERR_INVALID_PARAMETER); + AssertPtrReturn(pahReqs, VERR_INVALID_POINTER); + size_t i = cReqs; + + do + { + int rcSol = 0; + size_t cReqsSubmit = 0; + PRTFILEAIOREQINTERNAL pReqInt; + + while(i-- > 0) + { + pReqInt = pahReqs[i]; + if (RTFILEAIOREQ_IS_NOT_VALID(pReqInt)) + { + /* Undo everything and stop submitting. */ + for (size_t iUndo = 0; iUndo < i; iUndo++) + { + pReqInt = pahReqs[iUndo]; + RTFILEAIOREQ_SET_STATE(pReqInt, PREPARED); + pReqInt->pCtxInt = NULL; + } + rc = VERR_INVALID_HANDLE; + break; + } + + pReqInt->PortNotifier.portnfy_port = pCtxInt->iPort; + pReqInt->pCtxInt = pCtxInt; + RTFILEAIOREQ_SET_STATE(pReqInt, SUBMITTED); + + if (pReqInt->fFlush) + break; + + cReqsSubmit++; + } + + if (cReqsSubmit) + { + rcSol = lio_listio(LIO_NOWAIT, (struct aiocb **)pahReqs, cReqsSubmit, NULL); + if (RT_UNLIKELY(rcSol < 0)) + { + if (rcSol == EAGAIN) + rc = VERR_FILE_AIO_INSUFFICIENT_RESSOURCES; + else + rc = RTErrConvertFromErrno(errno); + + /* Check which requests got actually submitted and which not. */ + for (i = 0; i < cReqs; i++) + { + pReqInt = pahReqs[i]; + rcSol = aio_error(&pReqInt->AioCB); + if (rcSol == EINVAL) + { + /* Was not submitted. */ + RTFILEAIOREQ_SET_STATE(pReqInt, PREPARED); + pReqInt->pCtxInt = NULL; + } + else if (rcSol != EINPROGRESS) + { + /* The request encountered an error. */ + RTFILEAIOREQ_SET_STATE(pReqInt, COMPLETED); + } + } + break; + } + + ASMAtomicAddS32(&pCtxInt->cRequests, cReqsSubmit); + cReqs -= cReqsSubmit; + pahReqs += cReqsSubmit; + } + + if (cReqs) + { + pReqInt = pahReqs[0]; + RTFILEAIOREQ_VALID_RETURN(pReqInt); + + /* + * If there are still requests left we have a flush request. + * lio_listio does not work with this requests so + * we have to use aio_fsync directly. + */ + rcSol = aio_fsync(O_SYNC, &pReqInt->AioCB); + if (RT_UNLIKELY(rcSol < 0)) + { + RTFILEAIOREQ_SET_STATE(pReqInt, COMPLETED); + rc = RTErrConvertFromErrno(errno); + break; + } + + ASMAtomicIncS32(&pCtxInt->cRequests); + cReqs--; + pahReqs++; + } + } while (cReqs); + + return rc; +} + +RTDECL(int) RTFileAioCtxWait(RTFILEAIOCTX hAioCtx, size_t cMinReqs, unsigned cMillisTimeout, + PRTFILEAIOREQ pahReqs, size_t cReqs, uint32_t *pcReqs) +{ + int rc = VINF_SUCCESS; + int cRequestsCompleted = 0; + + /* + * Validate the parameters, making sure to always set pcReqs. + */ + AssertPtrReturn(pcReqs, VERR_INVALID_POINTER); + *pcReqs = 0; /* always set */ + PRTFILEAIOCTXINTERNAL pCtxInt = hAioCtx; + RTFILEAIOCTX_VALID_RETURN(pCtxInt); + AssertPtrReturn(pahReqs, VERR_INVALID_POINTER); + AssertReturn(cReqs != 0, VERR_INVALID_PARAMETER); + AssertReturn(cReqs >= cMinReqs, VERR_OUT_OF_RANGE); + + if (RT_UNLIKELY(ASMAtomicReadS32(&pCtxInt->cRequests) == 0)) + return VERR_FILE_AIO_NO_REQUEST; + + /* + * Convert the timeout if specified. + */ + struct timespec *pTimeout = NULL; + struct timespec Timeout = {0,0}; + uint64_t StartNanoTS = 0; + if (cMillisTimeout != RT_INDEFINITE_WAIT) + { + Timeout.tv_sec = cMillisTimeout / 1000; + Timeout.tv_nsec = cMillisTimeout % 1000 * 1000000; + pTimeout = &Timeout; + StartNanoTS = RTTimeNanoTS(); + } + + /* Wait for at least one. */ + if (!cMinReqs) + cMinReqs = 1; + + while ( cMinReqs + && RT_SUCCESS_NP(rc)) + { + port_event_t aPortEvents[AIO_MAXIMUM_REQUESTS_PER_CONTEXT]; + uint_t cRequests = cMinReqs; + int cRequestsToWait = cMinReqs < AIO_MAXIMUM_REQUESTS_PER_CONTEXT ? cReqs : AIO_MAXIMUM_REQUESTS_PER_CONTEXT; + int rcSol; + uint64_t StartTime; + + rcSol = port_getn(pCtxInt->iPort, &aPortEvents[0], cRequestsToWait, &cRequests, pTimeout); + + if (RT_UNLIKELY(rcSol < 0)) + rc = RTErrConvertFromErrno(errno); + + /* Process received events. */ + for (uint_t i = 0; i < cRequests; i++) + { + if (aPortEvents[i].portev_source == PORT_SOURCE_ALERT) + { + Assert(aPortEvents[i].portev_events == AIO_CONTEXT_WAKEUP_EVENT); + rc = VERR_INTERRUPTED; /* We've got interrupted. */ + /* Reset the port. */ + port_alert(pCtxInt->iPort, PORT_ALERT_SET, 0, NULL); + } + else + { + PRTFILEAIOREQINTERNAL pReqInt = (PRTFILEAIOREQINTERNAL)aPortEvents[i].portev_user; + AssertPtr(pReqInt); + Assert(pReqInt->u32Magic == RTFILEAIOREQ_MAGIC); + + /* A request has finished. */ + pahReqs[cRequestsCompleted++] = pReqInt; + + /* Mark the request as finished. */ + RTFILEAIOREQ_SET_STATE(pReqInt, COMPLETED); + } + } + + /* + * Done Yet? If not advance and try again. + */ + if (cRequests >= cMinReqs) + break; + cMinReqs -= cRequests; + cReqs -= cRequests; + + if (cMillisTimeout != RT_INDEFINITE_WAIT) + { + uint64_t NanoTS = RTTimeNanoTS(); + uint64_t cMilliesElapsed = (NanoTS - StartNanoTS) / 1000000; + + /* The syscall supposedly updates it, but we're paranoid. :-) */ + Timeout.tv_sec = (cMillisTimeout - (unsigned)cMilliesElapsed) / 1000; + Timeout.tv_nsec = (cMillisTimeout - (unsigned)cMilliesElapsed) % 1000 * 1000000; + } + } + + /* + * Update the context state and set the return value. + */ + *pcReqs = cRequestsCompleted; + ASMAtomicSubS32(&pCtxInt->cRequests, cRequestsCompleted); + + return rc; +} + +RTDECL(int) RTFileAioCtxWakeup(RTFILEAIOCTX hAioCtx) +{ + int rc = VINF_SUCCESS; + PRTFILEAIOCTXINTERNAL pCtxInt = hAioCtx; + RTFILEAIOCTX_VALID_RETURN(pCtxInt); + + rc = port_alert(pCtxInt->iPort, PORT_ALERT_UPDATE, AIO_CONTEXT_WAKEUP_EVENT, NULL); + if (RT_UNLIKELY((rc < 0) && (errno != EBUSY))) + return RTErrConvertFromErrno(errno); + + return VINF_SUCCESS; +} + diff --git a/src/VBox/Runtime/r3/tcp.cpp b/src/VBox/Runtime/r3/tcp.cpp index 1ed09111a..a72b37ece 100644 --- a/src/VBox/Runtime/r3/tcp.cpp +++ b/src/VBox/Runtime/r3/tcp.cpp @@ -42,6 +42,9 @@ # include <netinet/in.h> # include <netinet/tcp.h> # include <arpa/inet.h> +# ifdef IPRT_WITH_TCPIP_V6 +# include <netinet6/in6.h> +# endif # include <sys/un.h> # include <netdb.h> # include <unistd.h> @@ -140,6 +143,14 @@ typedef struct RTTCPSERVER void *pvUser; } RTTCPSERVER; +typedef union RTSOCKADDRUNION +{ + struct sockaddr Addr; + struct sockaddr_in Ipv4; +#ifdef IPRT_WITH_TCPIP_V6 + struct sockaddr_in6 Ipv6; +#endif +} RTSOCKADDRUNION; /******************************************************************************* * Internal Functions * @@ -149,6 +160,7 @@ static int rtTcpServerListen(PRTTCPSERVER pServer); static int rcTcpServerListenCleanup(PRTTCPSERVER pServer); static int rtTcpServerDestroySocket(RTSOCKET volatile *pSockClient, const char *pszMsg); static int rtTcpClose(RTSOCKET Sock, const char *pszMsg, bool fTryGracefulShutdown); +static int rtTcpConvertAddress(RTSOCKADDRUNION *pSrc, size_t cbSrc, PRTNETADDR pAddr); @@ -907,6 +919,68 @@ RTR3DECL(int) RTTcpSelectOne(RTSOCKET Sock, unsigned cMillies) } +static int rtTcpConvertAddress(RTSOCKADDRUNION *pSrc, size_t cbSrc, PRTNETADDR pAddr) +{ + /* + * Convert the address. + */ + if ( cbSrc == sizeof(struct sockaddr_in) + && pSrc->Addr.sa_family == AF_INET) + { + RT_ZERO(*pAddr); + pAddr->enmType = RTNETADDRTYPE_IPV4; + pAddr->uPort = RT_N2H_U16(pSrc->Ipv4.sin_port); + pAddr->uAddr.IPv4.u = pSrc->Ipv4.sin_addr.s_addr; + } +#ifdef IPRT_WITH_TCPIP_V6 + else if ( cbSrc == sizeof(struct sockaddr_in6) + && pSrc->Addr.sa_family == AF_INET6) + { + RT_ZERO(*pAddr); + pAddr->enmType = RTNETADDRTYPE_IPV6; + pAddr->uPort = RT_N2H_U16(pSrc->Ipv6.sin6_port); + pAddr->uAddr.IPv6.au32[0] = pSrc->Ipv6.sin6_addr.s6_addr32[0]; + pAddr->uAddr.IPv6.au32[1] = pSrc->Ipv6.sin6_addr.s6_addr32[1]; + pAddr->uAddr.IPv6.au32[2] = pSrc->Ipv6.sin6_addr.s6_addr32[2]; + pAddr->uAddr.IPv6.au32[3] = pSrc->Ipv6.sin6_addr.s6_addr32[3]; + } +#endif + else + return VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED; + return VINF_SUCCESS; +} + + +RTR3DECL(int) RTTcpGetLocalAddress(RTSOCKET Sock, PRTNETADDR pAddr) +{ + RTSOCKADDRUNION u; +#ifdef RT_OS_WINDOWS + int cbAddr = sizeof(u); +#else + socklen_t cbAddr = sizeof(u); +#endif + RT_ZERO(u); + if (!getsockname(Sock, &u.Addr, &cbAddr)) + return rtTcpConvertAddress(&u, cbAddr, pAddr); + return rtTcpError(); +} + + +RTR3DECL(int) RTTcpGetPeerAddress(RTSOCKET Sock, PRTNETADDR pAddr) +{ + RTSOCKADDRUNION u; +#ifdef RT_OS_WINDOWS + int cbAddr = sizeof(u); +#else + socklen_t cbAddr = sizeof(u); +#endif + RT_ZERO(u); + if (!getpeername(Sock, &u.Addr, &cbAddr)) + return rtTcpConvertAddress(&u, cbAddr, pAddr); + return rtTcpError(); +} + + RTR3DECL(int) RTTcpClientConnect(const char *pszAddress, uint32_t uPort, PRTSOCKET pSock) { int rc; diff --git a/src/VBox/Runtime/testcase/Makefile.kmk b/src/VBox/Runtime/testcase/Makefile.kmk index b06353132..5fae108bb 100644 --- a/src/VBox/Runtime/testcase/Makefile.kmk +++ b/src/VBox/Runtime/testcase/Makefile.kmk @@ -130,10 +130,12 @@ PROGRAMS.l4 += \ PROGRAMS.darwin += \ tstDarwinSched SYSMODS += \ - tstLdrObj \ tstLdrObjR0 \ tstRTR0MemUserKernel \ tstR0ThreadPreemption +ifdef VBOX_WITH_RAW_MODE + SYSMODS += tstLdrObj +endif if1of ($(VBOX_LDR_FMT)), lx pe) LIBRARIES += \ tstLdr-4Imp @@ -226,29 +228,31 @@ tstLdr-2_DEFS = IN_DIS tstLdr-2_LIBS = \ $(PATH_LIB)/DisasmR3$(VBOX_SUFF_LIB) -tstLdrObj_TEMPLATE = VBOXGC -tstLdrObj_INST = $(INST_TESTCASE) -tstLdrObj_SYSSUFF = .gc -tstLdrObj_SOURCES = tstLdrObj.cpp -tstLdrObj_DEFS = IN_DIS IN_RT_GC IN_RT_RC DIS_CORE_ONLY -ifeq ($(VBOX_LDR_FMT32),elf) -tstLdrObj_DEFS += VBOX_SOME_IMPORT_FUNCTION -endif -tstLdrObj_LIBS = \ - $(PATH_LIB)/DisasmGC$(VBOX_SUFF_LIB) \ - $(PATH_LIB)/RuntimeGC$(VBOX_SUFF_LIB) -ifeq ($(VBOX_LDR_FMT32),pe) -tstLdrObj_LDFLAGS = -Entry:Entrypoint -tstLdrObj_LIBS += \ - $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) -endif # PE -ifeq ($(VBOX_LDR_FMT32),elf) -tstLdrObj_LDFLAGS = -e Entrypoint -endif -ifeq ($(VBOX_LDR_FMT32),lx) -tstLdrObj_LIBS += \ - $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) -endif +ifdef VBOX_WITH_RAW_MODE + tstLdrObj_TEMPLATE = VBOXGC + tstLdrObj_INST = $(INST_TESTCASE) + tstLdrObj_SYSSUFF = .gc + tstLdrObj_SOURCES = tstLdrObj.cpp + tstLdrObj_DEFS = IN_DIS IN_RT_GC IN_RT_RC DIS_CORE_ONLY + ifeq ($(VBOX_LDR_FMT32),elf) + tstLdrObj_DEFS += VBOX_SOME_IMPORT_FUNCTION + endif + tstLdrObj_LIBS = \ + $(PATH_LIB)/DisasmGC$(VBOX_SUFF_LIB) \ + $(PATH_LIB)/RuntimeGC$(VBOX_SUFF_LIB) + ifeq ($(VBOX_LDR_FMT32),pe) + tstLdrObj_LDFLAGS = -Entry:Entrypoint + tstLdrObj_LIBS += \ + $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) + endif # PE + ifeq ($(VBOX_LDR_FMT32),elf) + tstLdrObj_LDFLAGS = -e Entrypoint + endif + ifeq ($(VBOX_LDR_FMT32),lx) + tstLdrObj_LIBS += \ + $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) + endif +endif # VBOX_WITH_RAW_MODE tstLdr-3_SOURCES = tstLdr-3.cpp tstLdr-3_DEFS = IN_DIS diff --git a/src/VBox/VMM/HWACCMInternal.h b/src/VBox/VMM/HWACCMInternal.h index 5c436ba32..b4c8b930d 100644 --- a/src/VBox/VMM/HWACCMInternal.h +++ b/src/VBox/VMM/HWACCMInternal.h @@ -121,10 +121,10 @@ RT_C_DECLS_BEGIN * Currently #NM and #PF only */ #ifdef VBOX_STRICT -#define HWACCM_VMX_TRAP_MASK RT_BIT(X86_XCPT_DE) | RT_BIT(X86_XCPT_NM) | RT_BIT(X86_XCPT_PF) | RT_BIT(X86_XCPT_UD) | RT_BIT(X86_XCPT_NP) | RT_BIT(X86_XCPT_SS) | RT_BIT(X86_XCPT_GP) | RT_BIT(X86_XCPT_MF) +#define HWACCM_VMX_TRAP_MASK RT_BIT(X86_XCPT_BP) | RT_BIT(X86_XCPT_DB) | RT_BIT(X86_XCPT_DE) | RT_BIT(X86_XCPT_NM) | RT_BIT(X86_XCPT_PF) | RT_BIT(X86_XCPT_UD) | RT_BIT(X86_XCPT_NP) | RT_BIT(X86_XCPT_SS) | RT_BIT(X86_XCPT_GP) | RT_BIT(X86_XCPT_MF) #define HWACCM_SVM_TRAP_MASK HWACCM_VMX_TRAP_MASK #else -#define HWACCM_VMX_TRAP_MASK RT_BIT(X86_XCPT_NM) | RT_BIT(X86_XCPT_PF) +#define HWACCM_VMX_TRAP_MASK RT_BIT(X86_XCPT_DB) | RT_BIT(X86_XCPT_NM) | RT_BIT(X86_XCPT_PF) #define HWACCM_SVM_TRAP_MASK RT_BIT(X86_XCPT_NM) | RT_BIT(X86_XCPT_PF) #endif /* All exceptions have to be intercept in emulated real-mode (minues NM & PF as they are always intercepted. */ diff --git a/src/VBox/VMM/Makefile.kmk b/src/VBox/VMM/Makefile.kmk index d8608c65c..dceabe3b8 100644 --- a/src/VBox/VMM/Makefile.kmk +++ b/src/VBox/VMM/Makefile.kmk @@ -4,7 +4,7 @@ # # -# Copyright (C) 2006-2007 Sun Microsystems, Inc. +# Copyright (C) 2006-2010 Sun Microsystems, Inc. # # This file is part of VirtualBox Open Source Edition (OSE), as # available from http://www.virtualbox.org. This file is free software; @@ -57,6 +57,9 @@ endif ifdef VBOX_WITH_LIVE_MIGRATION VMMR3_DEFS += VBOX_WITH_LIVE_MIGRATION endif +ifdef VBOX_WITH_RAW_MODE + VMMR3_DEFS += VBOX_WITH_RAW_MODE +endif VMMR3_DEFS.darwin = VMM_R0_SWITCH_STACK VMMR3_DEFS.darwin.x86 = \ VBOX_WITH_2X_4GB_ADDR_SPACE VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R3 \ @@ -178,18 +181,21 @@ ifdef VBOX_WITH_PDM_ASYNC_COMPLETION PDMAsyncCompletionFileCache.cpp endif -VMMR3_SOURCES.x86 += \ - VMMSwitcher/32BitTo32Bit.asm \ - VMMSwitcher/32BitToPAE.asm \ - VMMSwitcher/32BitToAMD64.asm \ - VMMSwitcher/PAETo32Bit.asm \ - VMMSwitcher/PAEToAMD64.asm \ - VMMSwitcher/PAEToPAE.asm -VMMR3_SOURCES.amd64 = \ - VMMSwitcher/AMD64To32Bit.asm \ - VMMSwitcher/AMD64ToPAE.asm -VMMR3_SOURCES.darwin.x86 += \ - VMMSwitcher/AMD64ToPAE.asm +ifdef VBOX_WITH_RAW_MODE + VMMR3_SOURCES.x86 += \ + VMMSwitcher/32BitTo32Bit.asm \ + VMMSwitcher/32BitToPAE.asm \ + VMMSwitcher/32BitToAMD64.asm \ + VMMSwitcher/PAETo32Bit.asm \ + VMMSwitcher/PAEToAMD64.asm \ + VMMSwitcher/PAEToPAE.asm + VMMR3_SOURCES.amd64 = \ + VMMSwitcher/AMD64To32Bit.asm \ + VMMSwitcher/AMD64ToPAE.asm + VMMR3_SOURCES.darwin.x86 += \ + VMMSwitcher/AMD64ToPAE.asm +endif + # SSM wish to know the build type, host os and arch. SSM.cpp_DEFS += \ @@ -240,32 +246,32 @@ SSMStandalone_DEFS = IN_VMM_R3 IN_VMM_STATIC SSM_STANDALONE SSMStandalone_SOURCES = SSM.cpp -if1of ($(VBOX_LDR_FMT32), pe lx) +if defined(VBOX_WITH_RAW_MODE) && $(intersects $(VBOX_LDR_FMT32), pe lx) -# -# VMMGCBuiltin.lib -# -LIBRARIES += VMMGCBuiltin -VMMGCBuiltin_TEMPLATE = VBOXGC + # + # VMMGCBuiltin.lib + # + LIBRARIES += VMMGCBuiltin + VMMGCBuiltin_TEMPLATE = VBOXGC ifeq ($(VBOX_LDR_FMT32),pe) -VMMGCBuiltin_SOURCES = VMMGC/VMMGCBuiltin.def + VMMGCBuiltin_SOURCES = VMMGC/VMMGCBuiltin.def endif ifeq ($(VBOX_LDR_FMT32),lx) -VMMGCBuiltin_SOURCES = $(PATH_VMMGCBuiltin)/VMMGCBuiltin.def -$$(PATH_VMMGCBuiltin)/VMMGCBuiltin.def: $(PATH_SUB_CURRENT)/VMMGC/VMMGCBuiltin.def | $$(dir $$@) + VMMGCBuiltin_SOURCES = $(PATH_VMMGCBuiltin)/VMMGCBuiltin.def + $$(PATH_VMMGCBuiltin)/VMMGCBuiltin.def: $(PATH_SUB_CURRENT)/VMMGC/VMMGCBuiltin.def | $$(dir $$@) $(SED) -e '/not-os2/d' -e 's/^[ \t][ \t]*\([a-zA-Z]\)/ _\1/' -e 's/[ \t]DATA[ \t]*/ /' --output $@ $< endif -# -# VMMGCImp.lib -# -LIBRARIES += VMMGCImp -VMMGCImp_TEMPLATE = VBOXGC -VMMGCImp_SOURCES = $(PATH_VMMGCImp)/VMMGC.def -VMMGCImp_CLEAN = $(PATH_VMMGCImp)/VMMGC.def + # + # VMMGCImp.lib + # + LIBRARIES += VMMGCImp + VMMGCImp_TEMPLATE = VBOXGC + VMMGCImp_SOURCES = $(PATH_VMMGCImp)/VMMGC.def + VMMGCImp_CLEAN = $(PATH_VMMGCImp)/VMMGC.def -$$(PATH_VMMGCImp)/VMMGC.def: $(PATH_SUB_CURRENT)/VMMGC/VMMGC.def | $$(dir $$@) + $$(PATH_VMMGCImp)/VMMGC.def: $(PATH_SUB_CURRENT)/VMMGC/VMMGC.def | $$(dir $$@) ifeq ($(VBOX_LDR_FMT32),lx) $(SED) \ -e '/not-os2/d' \ @@ -282,18 +288,19 @@ $$(PATH_VMMGCImp)/VMMGC.def: $(PATH_SUB_CURRENT)/VMMGC/VMMGC.def | $$(dir $$@) --output $@ $< endif -endif # RC: pe + lx +endif # RC && (pe || lx) -ifneq ($(filter pe lx,$(VBOX_LDR_FMT)),) -# -# VMMR0Imp.lib -# -LIBRARIES += VMMR0Imp -VMMR0Imp_TEMPLATE = VBOXR0 -VMMR0Imp_SOURCES = $(PATH_VMMR0Imp)/VMMR0.def -VMMR0Imp_CLEAN = $(PATH_VMMR0Imp)/VMMR0.def -$$(PATH_VMMR0Imp)/VMMR0.def: $(PATH_SUB_CURRENT)/VMMR0/VMMR0.def | $$(dir $$@) +if1of ($(VBOX_LDR_FMT), pe lx) + # + # VMMR0Imp.lib + # + LIBRARIES += VMMR0Imp + VMMR0Imp_TEMPLATE = VBOXR0 + VMMR0Imp_SOURCES = $(PATH_VMMR0Imp)/VMMR0.def + VMMR0Imp_CLEAN = $(PATH_VMMR0Imp)/VMMR0.def + + $$(PATH_VMMR0Imp)/VMMR0.def: $(PATH_SUB_CURRENT)/VMMR0/VMMR0.def | $$(dir $$@) ifeq ($(VBOX_LDR_FMT),lx) $(SED) \ -e '/not-os2/d' \ @@ -312,115 +319,117 @@ $$(PATH_VMMR0Imp)/VMMR0.def: $(PATH_SUB_CURRENT)/VMMR0/VMMR0.def | $$(dir $$@) endif # R0: pe + lx -# -# VMMGC.gc -# -SYSMODS += VMMGC -VMMGC_TEMPLATE = VBOXGC -VMMGC_SYSSUFF = .gc - -VMMGC_DEFS = IN_VMM_RC IN_RT_GC IN_RT_RC IN_DIS DIS_CORE_ONLY -ifdef VBOX_WITH_R0_LOGGING - VMMGC_DEFS += VBOX_WITH_R0_LOGGING -endif -ifdef VBOX_WITH_MULTI_CORE - VMMGC_DEFS += VBOX_WITH_MULTI_CORE -endif -ifdef VBOX_WITH_VMI - VMMGC_DEFS += VBOX_WITH_VMI -endif -ifeq ($(KBUILD_TARGET_ARCH),x86) - VMMGC_DEFS.darwin = VMM_R0_SWITCH_STACK - VMMGC_DEFS.darwin = \ - VBOX_WITH_2X_4GB_ADDR_SPACE VBOX_WITH_2X_4GB_ADDR_SPACE_IN_RC \ - VBOX_WITH_HYBRID_32BIT_KERNEL VBOX_WITH_HYBRID_32BIT_KERNEL_IN_RC -endif +ifdef VBOX_WITH_RAW_MODE + # + # VMMGC.gc + # + SYSMODS += VMMGC + VMMGC_TEMPLATE = VBOXGC + VMMGC_SYSSUFF = .gc -VMMGC_INCS := \ - . \ - VMMGC \ - PATM + VMMGC_DEFS = IN_VMM_RC IN_RT_GC IN_RT_RC IN_DIS DIS_CORE_ONLY VBOX_WITH_RAW_MODE + ifdef VBOX_WITH_R0_LOGGING + VMMGC_DEFS += VBOX_WITH_R0_LOGGING + endif + ifdef VBOX_WITH_MULTI_CORE + VMMGC_DEFS += VBOX_WITH_MULTI_CORE + endif + ifdef VBOX_WITH_VMI + VMMGC_DEFS += VBOX_WITH_VMI + endif + ifeq ($(KBUILD_TARGET_ARCH),x86) + VMMGC_DEFS.darwin = VMM_R0_SWITCH_STACK + VMMGC_DEFS.darwin = \ + VBOX_WITH_2X_4GB_ADDR_SPACE VBOX_WITH_2X_4GB_ADDR_SPACE_IN_RC \ + VBOX_WITH_HYBRID_32BIT_KERNEL VBOX_WITH_HYBRID_32BIT_KERNEL_IN_RC + endif -VMMGC_LIBS = \ - $(PATH_LIB)/DisasmGC$(VBOX_SUFF_LIB) \ - $(PATH_LIB)/RuntimeGC$(VBOX_SUFF_LIB) -ifneq ($(filter pe lx,$(VBOX_LDR_FMT32)),) - VMMGC_LIBS += \ - $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) -endif + VMMGC_INCS := \ + . \ + VMMGC \ + PATM + + VMMGC_LIBS = \ + $(PATH_LIB)/DisasmGC$(VBOX_SUFF_LIB) \ + $(PATH_LIB)/RuntimeGC$(VBOX_SUFF_LIB) + ifneq ($(filter pe lx,$(VBOX_LDR_FMT32)),) + VMMGC_LIBS += \ + $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) + endif -ifeq ($(VBOX_LDR_FMT32),pe) - VMMGC_LDFLAGS = -Entry:VMMGCEntry -endif + ifeq ($(VBOX_LDR_FMT32),pe) + VMMGC_LDFLAGS = -Entry:VMMGCEntry + endif -VMMGC_SOURCES = \ - VMMGC/VMMGC0.asm \ - VMMGC/VMMGCDeps.cpp \ - VMMGC/CPUMGC.cpp \ - VMMGC/CPUMGCA.asm \ - VMMGC/EMGCA.asm \ - VMMGC/IOMGC.cpp \ - VMMGC/MMRamGC.cpp \ - VMMGC/MMRamGCA.asm \ - VMMGC/PDMGCDevice.cpp \ - VMMGC/PGMGC.cpp \ - VMMGC/SELMGC.cpp \ - VMMGC/TRPMGC.cpp \ - VMMGC/TRPMGCHandlers.cpp \ - VMMGC/TRPMGCHandlersA.asm \ - VMMGC/VMMGC.cpp \ - VMMGC/VMMGCA.asm \ - VMMGC/HWACCMGCA.asm \ - VMMRZ/DBGFRZ.cpp \ - VMMRZ/VMMRZ.cpp \ - VMMAll/CPUMAllRegs.cpp \ - VMMAll/CPUMAllA.asm \ - VMMAll/DBGFAll.cpp \ - VMMAll/IOMAll.cpp \ - VMMAll/IOMAllMMIO.cpp \ - VMMAll/EMAll.cpp \ - VMMAll/EMAllA.asm \ - VMMAll/MMAll.cpp \ - VMMAll/MMAllHyper.cpp \ - VMMAll/PDMAll.cpp \ - VMMAll/PDMAllCritSect.cpp \ - VMMAll/PDMAllQueue.cpp \ - VMMAll/PGMAll.cpp \ - VMMAll/PGMAllHandler.cpp \ - VMMAll/PGMAllMap.cpp \ - VMMAll/PGMAllPhys.cpp \ - VMMAll/PGMAllPool.cpp \ - VMMAll/REMAll.cpp \ - VMMAll/SELMAll.cpp \ - VMMAll/TMAll.cpp \ - VMMAll/TMAllCpu.cpp \ - VMMAll/TMAllReal.cpp \ - VMMAll/TMAllVirtual.cpp \ - VMMAll/TRPMAll.cpp \ - VMMAll/VMAll.cpp \ - VMMAll/VMMAll.cpp \ - VMMAll/VMMAllA.asm \ - PATM/VMMGC/CSAMGC.cpp \ - PATM/VMMAll/CSAMAll.cpp \ - PATM/VMMGC/PATMGC.cpp \ - PATM/VMMAll/PATMAll.cpp -ifdef VBOX_WITH_VMI - VMMGC_SOURCES += \ - PARAV/PARAV.cpp \ - PARAV/PARAVAll.cpp -endif -ifeq ($(VBOX_LDR_FMT32),pe) - VMMGC_SOURCES += VMMGC/VMMGC.def -endif -ifeq ($(VBOX_LDR_FMT32),lx) - VMMGC_SOURCES += $(PATH_VMMGCImp)/VMMGC.def -endif + VMMGC_SOURCES = \ + VMMGC/VMMGC0.asm \ + VMMGC/VMMGCDeps.cpp \ + VMMGC/CPUMGC.cpp \ + VMMGC/CPUMGCA.asm \ + VMMGC/EMGCA.asm \ + VMMGC/IOMGC.cpp \ + VMMGC/MMRamGC.cpp \ + VMMGC/MMRamGCA.asm \ + VMMGC/PDMGCDevice.cpp \ + VMMGC/PGMGC.cpp \ + VMMGC/SELMGC.cpp \ + VMMGC/TRPMGC.cpp \ + VMMGC/TRPMGCHandlers.cpp \ + VMMGC/TRPMGCHandlersA.asm \ + VMMGC/VMMGC.cpp \ + VMMGC/VMMGCA.asm \ + VMMGC/HWACCMGCA.asm \ + VMMRZ/DBGFRZ.cpp \ + VMMRZ/VMMRZ.cpp \ + VMMAll/CPUMAllRegs.cpp \ + VMMAll/CPUMAllA.asm \ + VMMAll/DBGFAll.cpp \ + VMMAll/IOMAll.cpp \ + VMMAll/IOMAllMMIO.cpp \ + VMMAll/EMAll.cpp \ + VMMAll/EMAllA.asm \ + VMMAll/MMAll.cpp \ + VMMAll/MMAllHyper.cpp \ + VMMAll/PDMAll.cpp \ + VMMAll/PDMAllCritSect.cpp \ + VMMAll/PDMAllQueue.cpp \ + VMMAll/PGMAll.cpp \ + VMMAll/PGMAllHandler.cpp \ + VMMAll/PGMAllMap.cpp \ + VMMAll/PGMAllPhys.cpp \ + VMMAll/PGMAllPool.cpp \ + VMMAll/REMAll.cpp \ + VMMAll/SELMAll.cpp \ + VMMAll/TMAll.cpp \ + VMMAll/TMAllCpu.cpp \ + VMMAll/TMAllReal.cpp \ + VMMAll/TMAllVirtual.cpp \ + VMMAll/TRPMAll.cpp \ + VMMAll/VMAll.cpp \ + VMMAll/VMMAll.cpp \ + VMMAll/VMMAllA.asm \ + PATM/VMMGC/CSAMGC.cpp \ + PATM/VMMAll/CSAMAll.cpp \ + PATM/VMMGC/PATMGC.cpp \ + PATM/VMMAll/PATMAll.cpp + ifdef VBOX_WITH_VMI + VMMGC_SOURCES += \ + PARAV/PARAV.cpp \ + PARAV/PARAVAll.cpp + endif + ifeq ($(VBOX_LDR_FMT32),pe) + VMMGC_SOURCES += VMMGC/VMMGC.def + endif + ifeq ($(VBOX_LDR_FMT32),lx) + VMMGC_SOURCES += $(PATH_VMMGCImp)/VMMGC.def + endif -# the very last one. -VMMGC_SOURCES += VMMGC/VMMGC99.asm + # the very last one. + VMMGC_SOURCES += VMMGC/VMMGC99.asm -VMMGC/VMMGCDeps.cpp_CXXFLAGS.win = -Oi- -TC ## @todo rename VMMGCDeps.cpp to .c + VMMGC/VMMGCDeps.cpp_CXXFLAGS.win = -Oi- -TC ## @todo rename VMMGCDeps.cpp to .c +endif # VBOX_WITH_RAW_MODE # @@ -441,6 +450,9 @@ endif ifdef VBOX_WITH_MULTI_CORE VMMR0_DEFS += VBOX_WITH_MULTI_CORE endif +ifdef VBOX_WITH_RAW_MODE + VMMR0_DEFS += VBOX_WITH_RAW_MODE +endif VMMR0_DEFS.darwin = VMM_R0_SWITCH_STACK VMMR0_DEFS.darwin.x86 = \ VBOX_WITH_2X_4GB_ADDR_SPACE VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0 \ @@ -517,6 +529,7 @@ VMMR0_SOURCES.darwin.x86 = \ VMMR0/PGMR0DynMap.cpp # disable annoying warnings about array subscript above array bounds in aPages[] +PGMPool.cpp_CXXFLAGS = $(if-expr $(KBUILD_TARGET) == "win",,$(VBOX_GCC_Wno-array_bounds)) VMMAll/PGMAllPool.cpp_CXXFLAGS = $(if-expr $(KBUILD_TARGET) == "win",,$(VBOX_GCC_Wno-array_bounds)) diff --git a/src/VBox/VMM/PDMLdr.cpp b/src/VBox/VMM/PDMLdr.cpp index 65498931c..a8e8a7fdf 100644 --- a/src/VBox/VMM/PDMLdr.cpp +++ b/src/VBox/VMM/PDMLdr.cpp @@ -96,7 +96,7 @@ VMMR3DECL(int) PDMR3LdrLoadVMMR0U(PUVM pUVM) */ int pdmR3LdrInitU(PUVM pUVM) { -#ifdef PDMLDR_FAKE_MODE +#if defined(PDMLDR_FAKE_MODE) || !defined(VBOX_WITH_RAW_MODE) return VINF_SUCCESS; #else @@ -147,7 +147,9 @@ void pdmR3LdrTermU(PUVM pUVM) break; } +#ifdef VBOX_WITH_RAW_MODE case PDMMOD_TYPE_RC: +#endif case PDMMOD_TYPE_R3: /* MM will free this memory for us - it's alloc only memory. :-) */ break; @@ -176,6 +178,7 @@ void pdmR3LdrTermU(PUVM pUVM) */ VMMR3DECL(void) PDMR3LdrRelocateU(PUVM pUVM, RTGCINTPTR offDelta) { +#ifdef VBOX_WITH_RAW_MODE LogFlow(("PDMR3LdrRelocate: offDelta=%RGv\n", offDelta)); /* @@ -216,6 +219,7 @@ VMMR3DECL(void) PDMR3LdrRelocateU(PUVM pUVM, RTGCINTPTR offDelta) } } } +#endif } @@ -301,6 +305,7 @@ int pdmR3LoadR3U(PUVM pUVM, const char *pszFilename, const char *pszName) } +#ifdef VBOX_WITH_RAW_MODE /** * Resolve an external symbol during RTLdrGetBits() of a RC module. * @@ -537,6 +542,7 @@ VMMR3DECL(int) PDMR3LdrLoadRC(PVM pVM, const char *pszFilename, const char *pszN RTMemTmpFree(pszFile); return rc; } +#endif /* VBOX_WITH_RAW_MODE */ /** @@ -775,7 +781,7 @@ VMMR3DECL(int) PDMR3LdrGetSymbolR0Lazy(PVM pVM, const char *pszModule, const cha */ VMMR3DECL(int) PDMR3LdrGetSymbolRC(PVM pVM, const char *pszModule, const char *pszSymbol, PRTRCPTR pRCPtrValue) { -#ifdef PDMLDR_FAKE_MODE +#if defined(PDMLDR_FAKE_MODE) || !defined(VBOX_WITH_RAW_MODE) *pRCPtrValue = 0xfeedf00d; return VINF_SUCCESS; @@ -831,7 +837,7 @@ VMMR3DECL(int) PDMR3LdrGetSymbolRC(PVM pVM, const char *pszModule, const char *p */ VMMR3DECL(int) PDMR3LdrGetSymbolRCLazy(PVM pVM, const char *pszModule, const char *pszSymbol, PRTRCPTR pRCPtrValue) { -#ifdef PDMLDR_FAKE_MODE +#if defined(PDMLDR_FAKE_MODE) || !defined(VBOX_WITH_RAW_MODE) *pRCPtrValue = 0xfeedf00d; return VINF_SUCCESS; diff --git a/src/VBox/VMM/PGM.cpp b/src/VBox/VMM/PGM.cpp index a8012130e..058cb644d 100644 --- a/src/VBox/VMM/PGM.cpp +++ b/src/VBox/VMM/PGM.cpp @@ -1190,6 +1190,9 @@ VMMR3DECL(int) PGMR3Init(PVM pVM) /* * Init the structure. */ +#ifdef PGM_WITHOUT_MAPPINGS + pVM->pgm.s.fMappingsDisabled = true; +#endif pVM->pgm.s.offVM = RT_OFFSETOF(VM, pgm.s); pVM->pgm.s.offVCpuPGM = RT_OFFSETOF(VMCPU, pgm.s); @@ -3032,6 +3035,8 @@ VMMR3DECL(int) PGMR3ChangeMode(PVM pVM, PVMCPU pVCpu, PGMMODE enmGuestMode) */ VMMSWITCHER enmSwitcher; PGMMODE enmShadowMode = pgmR3CalcShadowMode(pVM, enmGuestMode, pVM->pgm.s.enmHostMode, pVCpu->pgm.s.enmShadowMode, &enmSwitcher); + +#ifdef VBOX_WITH_RAW_MODE if (enmSwitcher != VMMSWITCHER_INVALID) { /* @@ -3044,6 +3049,7 @@ VMMR3DECL(int) PGMR3ChangeMode(PVM pVM, PVMCPU pVCpu, PGMMODE enmGuestMode) return rc; } } +#endif /* * Exit old mode(s). diff --git a/src/VBox/VMM/PGMInternal.h b/src/VBox/VMM/PGMInternal.h index f7004e7da..452e766e8 100644 --- a/src/VBox/VMM/PGMInternal.h +++ b/src/VBox/VMM/PGMInternal.h @@ -4,7 +4,7 @@ */ /* - * Copyright (C) 2006-2007 Sun Microsystems, Inc. + * Copyright (C) 2006-2010 Sun Microsystems, Inc. * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -59,7 +59,7 @@ * Indicates that there are no guest mappings to care about. * Currently on raw-mode related code uses mappings, i.e. RC and R3 code. */ -#ifdef IN_RING0 +#if defined(IN_RING0) || !defined(VBOX_WITH_RAW_MODE) # define PGM_WITHOUT_MAPPINGS #endif @@ -3396,7 +3396,6 @@ DECLINLINE(int) pgmPoolTrackFlushGCPhys(PVM pVM, PPGMPAGE pPhysPage, bool *pfFlu uint16_t pgmPoolTrackPhysExtAddref(PVM pVM, uint16_t u16, uint16_t iShwPT); void pgmPoolTrackPhysExtDerefGCPhys(PPGMPOOL pPool, PPGMPOOLPAGE pPoolPage, PPGMPAGE pPhysPage); -void pgmPoolTracDerefGCPhysHint(PPGMPOOL pPool, PPGMPOOLPAGE pPage, RTHCPHYS HCPhys, RTGCPHYS GCPhysHint); #ifdef PGMPOOL_WITH_MONITORING void pgmPoolMonitorChainChanging(PVMCPU pVCpu, PPGMPOOL pPool, PPGMPOOLPAGE pPage, RTGCPHYS GCPhysFault, CTXTYPE(RTGCPTR, RTHCPTR, RTGCPTR) pvAddress, PDISCPUSTATE pCpu); int pgmPoolMonitorChainFlush(PPGMPOOL pPool, PPGMPOOLPAGE pPage); @@ -3427,6 +3426,10 @@ PX86PML4 pgmGstLazyMapPml4(PPGMCPU pPGM); RT_C_DECLS_END +/** @todo Split out all the inline stuff into a separate file. Then we can + * include it later when VM and VMCPU are defined and so avoid all that + * &pVM->pgm.s and &pVCpu->pgm.s stuff. It also chops ~1600 lines off + * this file and will make it somewhat easier to navigate... */ /** * Gets the PGMRAMRANGE structure for a guest page. diff --git a/src/VBox/VMM/VMM.cpp b/src/VBox/VMM/VMM.cpp index fe9e9450c..c326e4bb5 100644 --- a/src/VBox/VMM/VMM.cpp +++ b/src/VBox/VMM/VMM.cpp @@ -751,7 +751,9 @@ VMMR3DECL(void) VMMR3Relocate(PVM pVM, RTGCINTPTR offDelta) /* * Recalc the RC address. */ +#ifdef VBOX_WITH_RAW_MODE pVM->vmm.s.pvCoreCodeRC = MMHyperR3ToRC(pVM, pVM->vmm.s.pvCoreCodeR3); +#endif /* * The stack. diff --git a/src/VBox/VMM/VMMAll/PGMAll.cpp b/src/VBox/VMM/VMMAll/PGMAll.cpp index 555e029ee..cded57283 100644 --- a/src/VBox/VMM/VMMAll/PGMAll.cpp +++ b/src/VBox/VMM/VMMAll/PGMAll.cpp @@ -1878,16 +1878,19 @@ VMMDECL(int) PGMSyncCR3(PVMCPU pVCpu, uint64_t cr0, uint64_t cr3, uint64_t cr4, pVCpu->pgm.s.GCPhysCR3 = GCPhysCR3; rc = PGM_BTH_PFN(MapCR3, pVCpu)(pVCpu, GCPhysCR3); } + /* Make sure we check for pending pgm pool syncs as we clear VMCPU_FF_PGM_SYNC_CR3 later on! */ + if ( rc == VINF_PGM_SYNC_CR3 + || (pVCpu->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL)) + { + Log(("PGMSyncCR3: pending pgm pool sync after MapCR3!\n")); #ifdef IN_RING3 - if (rc == VINF_PGM_SYNC_CR3) rc = pgmPoolSyncCR3(pVCpu); #else - if (rc == VINF_PGM_SYNC_CR3) - { - pVCpu->pgm.s.GCPhysCR3 = GCPhysCR3Old; - return rc; - } + if (rc == VINF_PGM_SYNC_CR3) + pVCpu->pgm.s.GCPhysCR3 = GCPhysCR3Old; + return VINF_PGM_SYNC_CR3; #endif + } AssertRCReturn(rc, rc); AssertRCSuccessReturn(rc, VERR_INTERNAL_ERROR); } diff --git a/src/VBox/VMM/VMMAll/PGMAllBth.h b/src/VBox/VMM/VMMAll/PGMAllBth.h index 267f17aa1..4dc82dbc3 100644 --- a/src/VBox/VMM/VMMAll/PGMAllBth.h +++ b/src/VBox/VMM/VMMAll/PGMAllBth.h @@ -780,12 +780,14 @@ PGM_BTH_DECL(int, Trap0eHandler)(PVMCPU pVCpu, RTGCUINT uErr, PCPUMCTXCORE pRegF * to physical monitored regions, that are no longer valid. * Assume for now it only applies to the read/write flag. */ - if (RT_SUCCESS(rc) && (uErr & X86_TRAP_PF_RW)) + if ( RT_SUCCESS(rc) + && (uErr & X86_TRAP_PF_RW)) { if (PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED) { - Log(("PGM #PF: Make writable: %RGp %R[pgmpage] pvFault=%RGp uErr=%#x\n", - GCPhys, pPage, pvFault, uErr)); + Log(("PGM #PF: Make writable: %RGp %R[pgmpage] pvFault=%RGp uErr=%#x\n", GCPhys, pPage, pvFault, uErr)); + Assert(!PGM_PAGE_IS_ZERO(pPage)); + rc = pgmPhysPageMakeWritableUnlocked(pVM, pPage, GCPhys); if (rc != VINF_SUCCESS) { @@ -1403,9 +1405,13 @@ DECLINLINE(void) PGM_BTH_NAME(SyncPageWorkerTrackDeref)(PVMCPU pVCpu, PPGMPOOLPA if (PGM_PAGE_GET_HCPHYS(&pRam->aPages[iPage]) == HCPhys) { PPGMPOOL pPool = pVM->pgm.s.CTX_SUFF(pPool); - pgmTrackDerefGCPhys(pPool, pShwPage, &pRam->aPages[iPage]); + + Assert(pShwPage->cPresent); + Assert(pPool->cPresent); pShwPage->cPresent--; pPool->cPresent--; + + pgmTrackDerefGCPhys(pPool, pShwPage, &pRam->aPages[iPage]); STAM_PROFILE_STOP(&pVM->pgm.s.StatTrackDeref, a); return; } @@ -1503,13 +1509,17 @@ DECLINLINE(void) PGM_BTH_NAME(SyncPageWorker)(PVMCPU pVCpu, PSHWPTE pPteDst, GST if (RT_SUCCESS(rc)) { #ifndef VBOX_WITH_NEW_LAZY_PAGE_ALLOC - /* Try make the page writable if necessary. */ - if ( PteSrc.n.u1Write - && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED + /* Try to make the page writable if necessary. */ + if ( PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_RAM + && ( PGM_PAGE_IS_ZERO(pPage) + || ( PteSrc.n.u1Write + && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED # ifdef VBOX_WITH_REAL_WRITE_MONITORED_PAGES - && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_WRITE_MONITORED + && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_WRITE_MONITORED # endif - && PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_RAM) + ) + ) + ) { rc = pgmPhysPageMakeWritableUnlocked(pVM, pPage, PteSrc.u & GST_PTE_PG_MASK); AssertRC(rc); @@ -1596,6 +1606,8 @@ DECLINLINE(void) PGM_BTH_NAME(SyncPageWorker)(PVMCPU pVCpu, PSHWPTE pPteDst, GST && PteDst.n.u1Present && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED) { + /* Still applies to shared pages. */ + Assert(!PGM_PAGE_IS_ZERO(pPage)); PteDst.n.u1Write = 0; /** @todo this isn't quite working yet. */ Log3(("SyncPageWorker: write-protecting %RGp pPage=%R[pgmpage]at iPTDst=%d\n", (RTGCPHYS)(PteSrc.u & X86_PTE_PAE_PG_MASK), pPage, iPTDst)); } @@ -1896,13 +1908,17 @@ PGM_BTH_DECL(int, SyncPage)(PVMCPU pVCpu, GSTPDE PdeSrc, RTGCPTR GCPtrPage, unsi if (RT_SUCCESS(rc)) { # ifndef VBOX_WITH_NEW_LAZY_PAGE_ALLOC - /* Try make the page writable if necessary. */ - if ( PdeSrc.n.u1Write - && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED + /* Try to make the page writable if necessary. */ + if ( PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_RAM + && ( PGM_PAGE_IS_ZERO(pPage) + || ( PdeSrc.n.u1Write + && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED # ifdef VBOX_WITH_REAL_WRITE_MONITORED_PAGES - && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_WRITE_MONITORED + && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_WRITE_MONITORED # endif - && PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_RAM) + ) + ) + ) { rc = pgmPhysPageMakeWritableUnlocked(pVM, pPage, GCPhys); AssertRC(rc); @@ -1932,6 +1948,8 @@ PGM_BTH_DECL(int, SyncPage)(PVMCPU pVCpu, GSTPDE PdeSrc, RTGCPTR GCPtrPage, unsi && PteDst.n.u1Present && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED) { + /* Still applies to shared pages. */ + Assert(!PGM_PAGE_IS_ZERO(pPage)); PteDst.n.u1Write = 0; /** @todo this isn't quite working yet... */ Log3(("SyncPage: write-protecting %RGp pPage=%R[pgmpage] at %RGv\n", GCPhys, pPage, GCPtrPage)); } @@ -1949,7 +1967,8 @@ PGM_BTH_DECL(int, SyncPage)(PVMCPU pVCpu, GSTPDE PdeSrc, RTGCPTR GCPtrPage, unsi /** @todo r=bird: figure out why we need this here, SyncPT should've taken care of this already. * As for invlpg, it simply frees the whole shadow PT. * ...It's possibly because the guest clears it and the guest doesn't really tell us... */ - if (!PdeSrc.b.u1Dirty && PdeSrc.b.u1Write) + if ( !PdeSrc.b.u1Dirty + && PdeSrc.b.u1Write) { STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,DirtyPageBig)); PdeDst.u |= PGM_PDFLAGS_TRACK_DIRTY; @@ -2037,7 +2056,14 @@ PGM_BTH_DECL(int, SyncPage)(PVMCPU pVCpu, GSTPDE PdeSrc, RTGCPTR GCPtrPage, unsi Assert(pPDDst); PdeDst = pPDDst->a[iPDDst]; # endif - AssertMsg(PdeDst.n.u1Present, ("%#llx\n", (uint64_t)PdeDst.u)); + /* In the guest SMP case we could have blocked while another VCPU reused this page table. */ + if (!PdeDst.n.u1Present) + { + AssertMsg(pVM->cCpus > 1, ("Unexpected missing PDE %RX64\n", (uint64_t)PdeDst.u)); + Log(("CPU%d: SyncPage: Pde at %RGv changed behind our back!\n", GCPtrPage)); + return VINF_SUCCESS; /* force the instruction to be executed again. */ + } + PPGMPOOLPAGE pShwPage = pgmPoolGetPage(pPool, PdeDst.u & SHW_PDE_PG_MASK); PSHWPT pPTDst = (PSHWPT)PGMPOOL_PAGE_2_PTR(pVM, pShwPage); @@ -2703,7 +2729,8 @@ PGM_BTH_DECL(int, SyncPT)(PVMCPU pVCpu, unsigned iPDSrc, PGSTPD pPDSrc, RTGCPTR PdeDst.u = pShwPage->Core.Key | (PdeSrc.u & ~(GST_PDE_PG_MASK | X86_PDE_AVL_MASK | X86_PDE_PCD | X86_PDE_PWT | X86_PDE_PS | X86_PDE4M_G | X86_PDE4M_D)); /* (see explanation and assumptions further down.) */ - if (!PdeSrc.b.u1Dirty && PdeSrc.b.u1Write) + if ( !PdeSrc.b.u1Dirty + && PdeSrc.b.u1Write) { STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,DirtyPageBig)); PdeDst.u |= PGM_PDFLAGS_TRACK_DIRTY; @@ -2851,7 +2878,8 @@ PGM_BTH_DECL(int, SyncPT)(PVMCPU pVCpu, unsigned iPDSrc, PGSTPD pPDSrc, RTGCPTR */ /** @todo move the above stuff to a section in the PGM documentation. */ Assert(!(PdeDst.u & PGM_PDFLAGS_TRACK_DIRTY)); - if (!PdeSrc.b.u1Dirty && PdeSrc.b.u1Write) + if ( !PdeSrc.b.u1Dirty + && PdeSrc.b.u1Write) { STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,DirtyPageBig)); PdeDst.u |= PGM_PDFLAGS_TRACK_DIRTY; @@ -2892,13 +2920,17 @@ PGM_BTH_DECL(int, SyncPT)(PVMCPU pVCpu, unsigned iPDSrc, PGSTPD pPDSrc, RTGCPTR SHWPTE PteDst; # ifndef VBOX_WITH_NEW_LAZY_PAGE_ALLOC - /* Try make the page writable if necessary. */ - if ( PteDstBase.n.u1Write - && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED -# ifdef VBOX_WITH_REAL_WRITE_MONITORED_PAGES - && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_WRITE_MONITORED -# endif - && PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_RAM) + /* Try to make the page writable if necessary. */ + if ( PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_RAM + && ( PGM_PAGE_IS_ZERO(pPage) + || ( PteDstBase.n.u1Write + && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED +# ifdef VBOX_WITH_REAL_WRITE_MONITORED_PAGES + && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_WRITE_MONITORED +# endif + ) + ) + ) { rc = pgmPhysPageMakeWritableUnlocked(pVM, pPage, GCPhys); AssertRCReturn(rc, rc); @@ -2935,6 +2967,8 @@ PGM_BTH_DECL(int, SyncPT)(PVMCPU pVCpu, unsigned iPDSrc, PGSTPD pPDSrc, RTGCPTR && PteDst.n.u1Present && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED) { + /* Still applies to shared pages. */ + Assert(!PGM_PAGE_IS_ZERO(pPage)); PteDst.n.u1Write = 0; /** @todo this isn't quite working yet... */ Log3(("SyncPT: write-protecting %RGp pPage=%R[pgmpage] at %RGv\n", GCPhys, pPage, (RTGCPTR)(GCPtr | (iPTDst << SHW_PT_SHIFT)))); } diff --git a/src/VBox/VMM/VMMAll/PGMAllHandler.cpp b/src/VBox/VMM/VMMAll/PGMAllHandler.cpp index 833d54514..f16e0d7a7 100644 --- a/src/VBox/VMM/VMMAll/PGMAllHandler.cpp +++ b/src/VBox/VMM/VMMAll/PGMAllHandler.cpp @@ -429,6 +429,9 @@ void pgmHandlerPhysicalResetAliasedPage(PVM pVM, PPGMPAGE pPage, RTGCPHYS GCPhys PGM_PAGE_SET_PAGEID(pPage, NIL_GMM_PAGEID); PGM_PAGE_SET_HNDL_PHYS_STATE(pPage, PGM_PAGE_HNDL_PHYS_STATE_ALL); + /* Flush its TLB entry. */ + PGMPhysInvalidatePageMapTLBEntry(pVM, GCPhysPage); + NOREF(GCPhysPage); } @@ -843,7 +846,6 @@ VMMDECL(int) PGMHandlerPhysicalReset(PVM pVM, RTGCPHYS GCPhys) Assert(PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_MMIO); pPage++; } - PGMPhysInvalidatePageMapTLB(pVM); } else { @@ -1042,7 +1044,9 @@ VMMDECL(int) PGMHandlerPhysicalPageAlias(PVM pVM, RTGCPHYS GCPhys, RTGCPHYS GCP PGM_PAGE_SET_STATE(pPage, PGM_PAGE_STATE_ALLOCATED); PGM_PAGE_SET_PAGEID(pPage, PGM_PAGE_GET_PAGEID(pPageRemap)); PGM_PAGE_SET_HNDL_PHYS_STATE(pPage, PGM_PAGE_HNDL_PHYS_STATE_DISABLED); - PGMPhysInvalidatePageMapTLB(pVM); + + /* Flush its TLB entry. */ + PGMPhysInvalidatePageMapTLBEntry(pVM, GCPhysPage); LogFlow(("PGMHandlerPhysicalPageAlias: => %R[pgmpage]\n", pPage)); pgmUnlock(pVM); @@ -1143,7 +1147,10 @@ VMMDECL(int) PGMHandlerPhysicalPageAliasHC(PVM pVM, RTGCPHYS GCPhys, RTGCPHYS G */ PGM_PAGE_SET_PAGEID(pPage, NIL_GMM_PAGEID); PGM_PAGE_SET_HNDL_PHYS_STATE(pPage, PGM_PAGE_HNDL_PHYS_STATE_DISABLED); - PGMPhysInvalidatePageMapTLB(pVM); + + /* Flush its TLB entry. */ + PGMPhysInvalidatePageMapTLBEntry(pVM, GCPhysPage); + LogFlow(("PGMHandlerPhysicalPageAliasHC: => %R[pgmpage]\n", pPage)); pgmUnlock(pVM); return VINF_SUCCESS; diff --git a/src/VBox/VMM/VMMAll/PGMAllPool.cpp b/src/VBox/VMM/VMMAll/PGMAllPool.cpp index 3d8ecda37..c0554399c 100644 --- a/src/VBox/VMM/VMMAll/PGMAllPool.cpp +++ b/src/VBox/VMM/VMMAll/PGMAllPool.cpp @@ -72,6 +72,7 @@ int pgmPoolTrackFlushGCPhysPTsSlow(PVM pVM, PPGMPAGE pPhysPage); PPGMPOOLPHYSEXT pgmPoolTrackPhysExtAlloc(PVM pVM, uint16_t *piPhysExt); void pgmPoolTrackPhysExtFree(PVM pVM, uint16_t iPhysExt); void pgmPoolTrackPhysExtFreeList(PVM pVM, uint16_t iPhysExt); +static void pgmPoolTracDerefGCPhysHint(PPGMPOOL pPool, PPGMPOOLPAGE pPage, RTHCPHYS HCPhys, RTGCPHYS GCPhysHint); RT_C_DECLS_END @@ -709,28 +710,25 @@ void pgmPoolMonitorChainChanging(PVMCPU pVCpu, PPGMPOOL pPool, PPGMPOOLPAGE pPag * Hopefully this doesn't happen very often: * - messing with the bits of pd pointers without changing the physical address */ - if (!VMCPU_FF_ISSET(pVCpu, VMCPU_FF_PGM_SYNC_CR3)) + uShw.pv = PGMPOOL_PAGE_2_LOCKED_PTR(pVM, pPage); + const unsigned iShw = off / sizeof(X86PDPE); + if (uShw.pPDPT->a[iShw].n.u1Present) { - uShw.pv = PGMPOOL_PAGE_2_LOCKED_PTR(pVM, pPage); - const unsigned iShw = off / sizeof(X86PDPE); - if (uShw.pPDPT->a[iShw].n.u1Present) - { - LogFlow(("pgmPoolMonitorChainChanging: pdpt iShw=%#x: %RX64 -> freeing it!\n", iShw, uShw.pPDPT->a[iShw].u)); - pgmPoolFree(pVM, uShw.pPDPT->a[iShw].u & X86_PDPE_PG_MASK, pPage->idx, iShw); - ASMAtomicWriteSize(&uShw.pPDPT->a[iShw].u, 0); - } - /* paranoia / a bit assumptive. */ - if ( pDis - && (off & 7) - && (off & 7) + cbWrite > sizeof(X86PDPE)) + LogFlow(("pgmPoolMonitorChainChanging: pdpt iShw=%#x: %RX64 -> freeing it!\n", iShw, uShw.pPDPT->a[iShw].u)); + pgmPoolFree(pVM, uShw.pPDPT->a[iShw].u & X86_PDPE_PG_MASK, pPage->idx, iShw); + ASMAtomicWriteSize(&uShw.pPDPT->a[iShw].u, 0); + } + /* paranoia / a bit assumptive. */ + if ( pDis + && (off & 7) + && (off & 7) + cbWrite > sizeof(X86PDPE)) + { + const unsigned iShw2 = (off + cbWrite - 1) / sizeof(X86PDPE); + if (uShw.pPDPT->a[iShw2].n.u1Present) { - const unsigned iShw2 = (off + cbWrite - 1) / sizeof(X86PDPE); - if (uShw.pPDPT->a[iShw2].n.u1Present) - { - LogFlow(("pgmPoolMonitorChainChanging: pdpt iShw2=%#x: %RX64 -> freeing it!\n", iShw2, uShw.pPDPT->a[iShw2].u)); - pgmPoolFree(pVM, uShw.pPDPT->a[iShw2].u & X86_PDPE_PG_MASK, pPage->idx, iShw2); - ASMAtomicWriteSize(&uShw.pPDPT->a[iShw2].u, 0); - } + LogFlow(("pgmPoolMonitorChainChanging: pdpt iShw2=%#x: %RX64 -> freeing it!\n", iShw2, uShw.pPDPT->a[iShw2].u)); + pgmPoolFree(pVM, uShw.pPDPT->a[iShw2].u & X86_PDPE_PG_MASK, pPage->idx, iShw2); + ASMAtomicWriteSize(&uShw.pPDPT->a[iShw2].u, 0); } } break; @@ -743,28 +741,25 @@ void pgmPoolMonitorChainChanging(PVMCPU pVCpu, PPGMPOOL pPool, PPGMPOOLPAGE pPag * Hopefully this doesn't happen very often: * - messing with the bits of pd pointers without changing the physical address */ - if (!VMCPU_FF_ISSET(pVCpu, VMCPU_FF_PGM_SYNC_CR3)) + uShw.pv = PGMPOOL_PAGE_2_LOCKED_PTR(pVM, pPage); + const unsigned iShw = off / sizeof(X86PDPE); + if (uShw.pPML4->a[iShw].n.u1Present) { - uShw.pv = PGMPOOL_PAGE_2_LOCKED_PTR(pVM, pPage); - const unsigned iShw = off / sizeof(X86PDPE); - if (uShw.pPML4->a[iShw].n.u1Present) - { - LogFlow(("pgmPoolMonitorChainChanging: pml4 iShw=%#x: %RX64 -> freeing it!\n", iShw, uShw.pPML4->a[iShw].u)); - pgmPoolFree(pVM, uShw.pPML4->a[iShw].u & X86_PML4E_PG_MASK, pPage->idx, iShw); - ASMAtomicWriteSize(&uShw.pPML4->a[iShw].u, 0); - } - /* paranoia / a bit assumptive. */ - if ( pDis - && (off & 7) - && (off & 7) + cbWrite > sizeof(X86PDPE)) + LogFlow(("pgmPoolMonitorChainChanging: pml4 iShw=%#x: %RX64 -> freeing it!\n", iShw, uShw.pPML4->a[iShw].u)); + pgmPoolFree(pVM, uShw.pPML4->a[iShw].u & X86_PML4E_PG_MASK, pPage->idx, iShw); + ASMAtomicWriteSize(&uShw.pPML4->a[iShw].u, 0); + } + /* paranoia / a bit assumptive. */ + if ( pDis + && (off & 7) + && (off & 7) + cbWrite > sizeof(X86PDPE)) + { + const unsigned iShw2 = (off + cbWrite - 1) / sizeof(X86PML4E); + if (uShw.pPML4->a[iShw2].n.u1Present) { - const unsigned iShw2 = (off + cbWrite - 1) / sizeof(X86PML4E); - if (uShw.pPML4->a[iShw2].n.u1Present) - { - LogFlow(("pgmPoolMonitorChainChanging: pml4 iShw2=%#x: %RX64 -> freeing it!\n", iShw2, uShw.pPML4->a[iShw2].u)); - pgmPoolFree(pVM, uShw.pPML4->a[iShw2].u & X86_PML4E_PG_MASK, pPage->idx, iShw2); - ASMAtomicWriteSize(&uShw.pPML4->a[iShw2].u, 0); - } + LogFlow(("pgmPoolMonitorChainChanging: pml4 iShw2=%#x: %RX64 -> freeing it!\n", iShw2, uShw.pPML4->a[iShw2].u)); + pgmPoolFree(pVM, uShw.pPML4->a[iShw2].u & X86_PML4E_PG_MASK, pPage->idx, iShw2); + ASMAtomicWriteSize(&uShw.pPML4->a[iShw2].u, 0); } } break; @@ -1604,6 +1599,10 @@ static void pgmPoolFlushDirtyPage(PVM pVM, PPGMPOOL pPool, unsigned idxSlot, boo Assert(rc == VINF_SUCCESS); pPage->fDirty = false; +#ifdef VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0 + uint32_t iPrevSubset = PGMDynMapPushAutoSubset(VMMGetCpu(pVM)); +#endif + #ifdef VBOX_STRICT uint64_t fFlags = 0; RTHCPHYS HCPhys; @@ -1649,6 +1648,10 @@ static void pgmPoolFlushDirtyPage(PVM pVM, PPGMPOOL pPool, unsigned idxSlot, boo } else Log(("Removed dirty page %RGp cMods=%d cChanges=%d\n", pPage->GCPhys, pPage->cModifications, cChanges)); + +#ifdef VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0 + PGMDynMapPopAutoSubset(VMMGetCpu(pVM), iPrevSubset); +#endif } # ifndef IN_RING3 @@ -2405,7 +2408,7 @@ static int pgmPoolMonitorInsert(PPGMPOOL pPool, PPGMPOOLPAGE pPage) /** @todo we should probably deal with out-of-memory conditions here, but for now increasing * the heap size should suffice. */ AssertFatalMsgRC(rc, ("PGMHandlerPhysicalRegisterEx %RGp failed with %Rrc\n", GCPhysPage, rc)); - Assert(!(VMMGetCpu(pVM)->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL) || VMCPU_FF_ISSET(VMMGetCpu(pVM), VMCPU_FF_PGM_SYNC_CR3)); + AssertMsg(!(VMMGetCpu(pVM)->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL) || VMCPU_FF_ISSET(VMMGetCpu(pVM), VMCPU_FF_PGM_SYNC_CR3), ("fSyncFlags=%x syncff=%d\n", VMMGetCpu(pVM)->pgm.s.fSyncFlags, VMCPU_FF_ISSET(VMMGetCpu(pVM), VMCPU_FF_PGM_SYNC_CR3))); } pPage->fMonitored = true; return rc; @@ -2660,8 +2663,17 @@ int pgmPoolSyncCR3(PVMCPU pVCpu) } # endif /* !IN_RING3 */ else + { pgmPoolMonitorModifiedClearAll(pVM); + /* pgmPoolMonitorModifiedClearAll can cause a pgm pool flush (dirty page clearing), so make sure we handle this! */ + if (pVCpu->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL) + { + Log(("pgmPoolMonitorModifiedClearAll caused a pgm flush -> call pgmPoolSyncCR3 again!\n")); + return pgmPoolSyncCR3(pVCpu); + } + } + return VINF_SUCCESS; } @@ -3106,6 +3118,15 @@ static bool pgmPoolTrackFlushGCPhysPTInt(PVM pVM, PCPGMPAGE pPhysPage, bool fFlu else STAM_COUNTER_INC(&pPool->StatTrackFlushEntry); + /* Update the counter if we're removing references. */ + if (!u32AndMask) + { + Assert(pPage->cPresent >= cRefs); + Assert(pPool->cPresent >= cRefs); + pPage->cPresent -= cRefs; + pPool->cPresent -= cRefs; + } + for (unsigned i = pPage->iFirstPresent; i < RT_ELEMENTS(pPT->a); i++) if ((pPT->a[i].u & (X86_PTE_PG_MASK | X86_PTE_P)) == u32) { @@ -3129,7 +3150,7 @@ static bool pgmPoolTrackFlushGCPhysPTInt(PVM pVM, PCPGMPAGE pPhysPage, bool fFlu Log(("i=%d cRefs=%d\n", i, cRefs--)); } #endif - AssertFatalMsgFailed(("cRefs=%d iFirstPresent=%d cPresent=%d\n", cRefs, pPage->iFirstPresent, pPage->cPresent)); + AssertFatalMsgFailed(("cRefs=%d iFirstPresent=%d cPresent=%d u32=%RX32 poolkind=%x\n", cRefs, pPage->iFirstPresent, pPage->cPresent, u32, pPage->enmKind)); break; } @@ -3172,6 +3193,15 @@ static bool pgmPoolTrackFlushGCPhysPTInt(PVM pVM, PCPGMPAGE pPhysPage, bool fFlu else STAM_COUNTER_INC(&pPool->StatTrackFlushEntry); + /* Update the counter if we're removing references. */ + if (!u64AndMask) + { + Assert(pPage->cPresent >= cRefs); + Assert(pPool->cPresent >= cRefs); + pPage->cPresent -= cRefs; + pPool->cPresent -= cRefs; + } + for (unsigned i = pPage->iFirstPresent; i < RT_ELEMENTS(pPT->a); i++) if ((pPT->a[i].u & (X86_PTE_PAE_PG_MASK | X86_PTE_P)) == u64) { @@ -3195,7 +3225,7 @@ static bool pgmPoolTrackFlushGCPhysPTInt(PVM pVM, PCPGMPAGE pPhysPage, bool fFlu Log(("i=%d cRefs=%d\n", i, cRefs--)); } #endif - AssertFatalMsgFailed(("cRefs=%d iFirstPresent=%d cPresent=%d u64=%RX64\n", cRefs, pPage->iFirstPresent, pPage->cPresent, u64)); + AssertFatalMsgFailed(("cRefs=%d iFirstPresent=%d cPresent=%d u64=%RX64 poolkind=%x\n", cRefs, pPage->iFirstPresent, pPage->cPresent, u64, pPage->enmKind)); break; } @@ -3210,6 +3240,13 @@ static bool pgmPoolTrackFlushGCPhysPTInt(PVM pVM, PCPGMPAGE pPhysPage, bool fFlu STAM_COUNTER_INC(&pPool->StatTrackFlushEntry); pPT->a[i].u = 0; cRefs--; + + /* Update the counter as we're removing references. */ + Assert(pPage->cPresent); + Assert(pPool->cPresent); + pPage->cPresent--; + pPool->cPresent--; + if (!cRefs) return bRet; } @@ -3245,6 +3282,10 @@ static void pgmPoolTrackFlushGCPhysPT(PVM pVM, PPGMPAGE pPhysPage, bool fFlushPT { PPGMPOOL pPool = pVM->pgm.s.CTX_SUFF(pPool); NOREF(pPool); + /* We should only come here with when there's only one reference in this physical page. */ + Assert(PGMPOOL_TD_GET_CREFS(PGM_PAGE_GET_TRACKING(pPhysPage)) == 1); + Assert(cRefs == 1); + Log2(("pgmPoolTrackFlushGCPhysPT: pPhysPage=%RHp iShw=%d cRefs=%d\n", PGM_PAGE_GET_HCPHYS(pPhysPage), iShw, cRefs)); STAM_PROFILE_START(&pPool->StatTrackFlushGCPhysPT, f); bool fKeptPTEs = pgmPoolTrackFlushGCPhysPTInt(pVM, pPhysPage, fFlushPTEs, iShw, cRefs); @@ -3463,6 +3504,12 @@ int pgmPoolTrackFlushGCPhysPTsSlow(PVM pVM, PPGMPAGE pPhysPage) { //Log4(("pgmPoolTrackFlushGCPhysPTsSlow: idx=%d i=%d pte=%RX32\n", iPage, i, pPT->a[i])); pPT->a[i].u = 0; + + /* Update the counter as we're removing references. */ + Assert(pPage->cPresent); + Assert(pPool->cPresent); + pPage->cPresent--; + pPool->cPresent--; } if (!--cPresent) break; @@ -3485,12 +3532,45 @@ int pgmPoolTrackFlushGCPhysPTsSlow(PVM pVM, PPGMPAGE pPhysPage) { //Log4(("pgmPoolTrackFlushGCPhysPTsSlow: idx=%d i=%d pte=%RX64\n", iPage, i, pPT->a[i])); pPT->a[i].u = 0; + + /* Update the counter as we're removing references. */ + Assert(pPage->cPresent); + Assert(pPool->cPresent); + pPage->cPresent--; + pPool->cPresent--; } if (!--cPresent) break; } break; } + +#ifndef IN_RC + case PGMPOOLKIND_EPT_PT_FOR_PHYS: + { + unsigned cPresent = pPage->cPresent; + PEPTPT pPT = (PEPTPT)PGMPOOL_PAGE_2_PTR(pVM, pPage); + for (unsigned i = pPage->iFirstPresent; i < RT_ELEMENTS(pPT->a); i++) + if (pPT->a[i].n.u1Present) + { + if ((pPT->a[i].u & (EPT_PTE_PG_MASK | X86_PTE_P)) == u64) + { + //Log4(("pgmPoolTrackFlushGCPhysPTsSlow: idx=%d i=%d pte=%RX64\n", iPage, i, pPT->a[i])); + pPT->a[i].u = 0; + + /* Update the counter as we're removing references. */ + Assert(pPage->cPresent); + Assert(pPool->cPresent); + pPage->cPresent--; + pPool->cPresent--; + } + if (!--cPresent) + break; + } + break; + } +#endif + } if (!--cLeft) break; @@ -3955,11 +4035,15 @@ static void pgmPoolTracDerefGCPhys(PPGMPOOL pPool, PPGMPOOLPAGE pPage, RTHCPHYS const unsigned iPage = off >> PAGE_SHIFT; Assert(PGM_PAGE_GET_HCPHYS(&pRam->aPages[iPage])); #ifdef LOG_ENABLED -RTHCPHYS HCPhysPage = PGM_PAGE_GET_HCPHYS(&pRam->aPages[iPage]); -Log2(("pgmPoolTracDerefGCPhys %RHp vs %RHp\n", HCPhysPage, HCPhys)); + RTHCPHYS HCPhysPage = PGM_PAGE_GET_HCPHYS(&pRam->aPages[iPage]); + Log2(("pgmPoolTracDerefGCPhys %RHp vs %RHp\n", HCPhysPage, HCPhys)); #endif if (PGM_PAGE_GET_HCPHYS(&pRam->aPages[iPage]) == HCPhys) { + Assert(pPage->cPresent); + Assert(pPool->cPresent); + pPage->cPresent--; + pPool->cPresent--; pgmTrackDerefGCPhys(pPool, pPage, &pRam->aPages[iPage]); return; } @@ -3979,7 +4063,7 @@ Log2(("pgmPoolTracDerefGCPhys %RHp vs %RHp\n", HCPhysPage, HCPhys)); * @param HCPhys The host physical address corresponding to the guest page. * @param GCPhysHint The guest physical address which may corresponding to HCPhys. */ -void pgmPoolTracDerefGCPhysHint(PPGMPOOL pPool, PPGMPOOLPAGE pPage, RTHCPHYS HCPhys, RTGCPHYS GCPhysHint) +static void pgmPoolTracDerefGCPhysHint(PPGMPOOL pPool, PPGMPOOLPAGE pPage, RTHCPHYS HCPhys, RTGCPHYS GCPhysHint) { Log4(("pgmPoolTracDerefGCPhysHint %RHp %RGp\n", HCPhys, GCPhysHint)); @@ -3997,6 +4081,10 @@ void pgmPoolTracDerefGCPhysHint(PPGMPOOL pPool, PPGMPOOLPAGE pPage, RTHCPHYS HCP Assert(PGM_PAGE_GET_HCPHYS(&pRam->aPages[iPage])); if (PGM_PAGE_GET_HCPHYS(&pRam->aPages[iPage]) == HCPhys) { + Assert(pPage->cPresent); + Assert(pPool->cPresent); + pPage->cPresent--; + pPool->cPresent--; pgmTrackDerefGCPhys(pPool, pPage, &pRam->aPages[iPage]); return; } @@ -4019,6 +4107,10 @@ void pgmPoolTracDerefGCPhysHint(PPGMPOOL pPool, PPGMPOOLPAGE pPage, RTHCPHYS HCP { Log4(("pgmPoolTracDerefGCPhysHint: Linear HCPhys=%RHp GCPhysHint=%RGp GCPhysReal=%RGp\n", HCPhys, GCPhysHint, pRam->GCPhys + (iPage << PAGE_SHIFT))); + Assert(pPage->cPresent); + Assert(pPool->cPresent); + pPage->cPresent--; + pPool->cPresent--; pgmTrackDerefGCPhys(pPool, pPage, &pRam->aPages[iPage]); return; } @@ -4046,7 +4138,7 @@ DECLINLINE(void) pgmPoolTrackDerefPT32Bit32Bit(PPGMPOOL pPool, PPGMPOOLPAGE pPag Log4(("pgmPoolTrackDerefPT32Bit32Bit: i=%d pte=%RX32 hint=%RX32\n", i, pShwPT->a[i].u & X86_PTE_PG_MASK, pGstPT->a[i].u & X86_PTE_PG_MASK)); pgmPoolTracDerefGCPhysHint(pPool, pPage, pShwPT->a[i].u & X86_PTE_PG_MASK, pGstPT->a[i].u & X86_PTE_PG_MASK); - if (!--pPage->cPresent) + if (!pPage->cPresent) break; } } @@ -4068,7 +4160,7 @@ DECLINLINE(void) pgmPoolTrackDerefPTPae32Bit(PPGMPOOL pPool, PPGMPOOLPAGE pPage, Log4(("pgmPoolTrackDerefPTPae32Bit: i=%d pte=%RX64 hint=%RX32\n", i, pShwPT->a[i].u & X86_PTE_PAE_PG_MASK, pGstPT->a[i].u & X86_PTE_PG_MASK)); pgmPoolTracDerefGCPhysHint(pPool, pPage, pShwPT->a[i].u & X86_PTE_PAE_PG_MASK, pGstPT->a[i].u & X86_PTE_PG_MASK); - if (!--pPage->cPresent) + if (!pPage->cPresent) break; } } @@ -4090,7 +4182,7 @@ DECLINLINE(void) pgmPoolTrackDerefPTPaePae(PPGMPOOL pPool, PPGMPOOLPAGE pPage, P Log4(("pgmPoolTrackDerefPTPaePae: i=%d pte=%RX32 hint=%RX32\n", i, pShwPT->a[i].u & X86_PTE_PAE_PG_MASK, pGstPT->a[i].u & X86_PTE_PAE_PG_MASK)); pgmPoolTracDerefGCPhysHint(pPool, pPage, pShwPT->a[i].u & X86_PTE_PAE_PG_MASK, pGstPT->a[i].u & X86_PTE_PAE_PG_MASK); - if (!--pPage->cPresent) + if (!pPage->cPresent) break; } } @@ -4112,7 +4204,7 @@ DECLINLINE(void) pgmPoolTrackDerefPT32Bit4MB(PPGMPOOL pPool, PPGMPOOLPAGE pPage, Log4(("pgmPoolTrackDerefPT32Bit4MB: i=%d pte=%RX32 GCPhys=%RGp\n", i, pShwPT->a[i].u & X86_PTE_PG_MASK, GCPhys)); pgmPoolTracDerefGCPhys(pPool, pPage, pShwPT->a[i].u & X86_PTE_PG_MASK, GCPhys); - if (!--pPage->cPresent) + if (!pPage->cPresent) break; } } @@ -4134,7 +4226,7 @@ DECLINLINE(void) pgmPoolTrackDerefPTPaeBig(PPGMPOOL pPool, PPGMPOOLPAGE pPage, P Log4(("pgmPoolTrackDerefPTPaeBig: i=%d pte=%RX64 hint=%RGp\n", i, pShwPT->a[i].u & X86_PTE_PAE_PG_MASK, GCPhys)); pgmPoolTracDerefGCPhys(pPool, pPage, pShwPT->a[i].u & X86_PTE_PAE_PG_MASK, GCPhys); - if (!--pPage->cPresent) + if (!pPage->cPresent) break; } } @@ -4156,7 +4248,7 @@ DECLINLINE(void) pgmPoolTrackDerefPTEPT(PPGMPOOL pPool, PPGMPOOLPAGE pPage, PEPT Log4(("pgmPoolTrackDerefPTEPT: i=%d pte=%RX64 GCPhys=%RX64\n", i, pShwPT->a[i].u & EPT_PTE_PG_MASK, pPage->GCPhys)); pgmPoolTracDerefGCPhys(pPool, pPage, pShwPT->a[i].u & EPT_PTE_PG_MASK, GCPhys); - if (!--pPage->cPresent) + if (!pPage->cPresent) break; } } diff --git a/src/VBox/VMM/VMMR0/HWACCMR0.cpp b/src/VBox/VMM/VMMR0/HWACCMR0.cpp index e236eb519..8c732e2b6 100644 --- a/src/VBox/VMM/VMMR0/HWACCMR0.cpp +++ b/src/VBox/VMM/VMMR0/HWACCMR0.cpp @@ -1098,6 +1098,10 @@ VMMR0DECL(int) HWACCMR0Enter(PVM pVM, PVMCPU pVCpu) AssertRCReturn(rc, rc); } +#ifdef VBOX_WITH_2X_4GB_ADDR_SPACE + bool fStartedSet = PGMDynMapStartOrMigrateAutoSet(pVCpu); +#endif + rc = HWACCMR0Globals.pfnEnterSession(pVM, pVCpu, pCpu); AssertRC(rc); /* We must save the host context here (VT-x) as we might be rescheduled on a different cpu after a long jump back to ring 3. */ @@ -1106,14 +1110,13 @@ VMMR0DECL(int) HWACCMR0Enter(PVM pVM, PVMCPU pVCpu) rc |= HWACCMR0Globals.pfnLoadGuestState(pVM, pVCpu, pCtx); AssertRC(rc); - /* keep track of the CPU owning the VMCS for debugging scheduling weirdness and ring-3 calls. */ - if (RT_SUCCESS(rc)) - { #ifdef VBOX_WITH_2X_4GB_ADDR_SPACE - PGMDynMapMigrateAutoSet(pVCpu); + if (fStartedSet) + PGMDynMapReleaseAutoSet(pVCpu); #endif - } - else + + /* keep track of the CPU owning the VMCS for debugging scheduling weirdness and ring-3 calls. */ + if (RT_FAILURE(rc)) pVCpu->hwaccm.s.idEnteredCpu = NIL_RTCPUID; return rc; } diff --git a/src/VBox/VMM/VMMR0/HWVMXR0.cpp b/src/VBox/VMM/VMMR0/HWVMXR0.cpp index 51afab42a..ae026e58f 100644 --- a/src/VBox/VMM/VMMR0/HWVMXR0.cpp +++ b/src/VBox/VMM/VMMR0/HWVMXR0.cpp @@ -1275,15 +1275,6 @@ static void vmxR0UpdateExceptionBitmap(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx) pVCpu->hwaccm.s.fFPUOldStyleOverride = true; } -#ifdef DEBUG /* till after branching, enable it by default then. */ - /* Intercept X86_XCPT_DB if stepping is enabled */ - if ( DBGFIsStepping(pVCpu) - || CPUMIsHyperDebugStateActive(pVCpu)) - u32TrapMask |= RT_BIT(X86_XCPT_DB); - /** @todo Don't trap it unless the debugger has armed breakpoints. */ - u32TrapMask |= RT_BIT(X86_XCPT_BP); -#endif - #ifdef VBOX_STRICT Assert(u32TrapMask & RT_BIT(X86_XCPT_GP)); #endif @@ -2982,18 +2973,19 @@ ResumeExecution: STAM_COUNTER_INC(&pVCpu->hwaccm.s.StatExitGuestDB); /* Note that we don't support guest and host-initiated debugging at the same time. */ - Assert(DBGFIsStepping(pVCpu) || CPUMIsGuestInRealModeEx(pCtx) || CPUMIsHyperDebugStateActive(pVCpu)); uDR6 = X86_DR6_INIT_VAL; uDR6 |= (exitQualification & (X86_DR6_B0|X86_DR6_B1|X86_DR6_B2|X86_DR6_B3|X86_DR6_BD|X86_DR6_BS)); rc = DBGFRZTrap01Handler(pVM, pVCpu, CPUMCTX2CORE(pCtx), uDR6); if (rc == VINF_EM_RAW_GUEST_TRAP) { - /** @todo this isn't working, but we'll never get here normally. */ - /* Update DR6 here. */ pCtx->dr[6] = uDR6; + /* Resync DR6 if the debug state is active. */ + if (CPUMIsGuestDebugStateActive(pVCpu)) + ASMSetDR6(pCtx->dr[6]); + /* X86_DR7_GD will be cleared if drx accesses should be trapped inside the guest. */ pCtx->dr[7] &= ~X86_DR7_GD; @@ -3649,6 +3641,13 @@ ResumeExecution: rc = CPUMR0LoadGuestDebugState(pVM, pVCpu, pCtx, true /* include DR6 */); AssertRC(rc); +#ifdef LOG_ENABLED + if (VMX_EXIT_QUALIFICATION_DRX_DIRECTION(exitQualification) == VMX_EXIT_QUALIFICATION_DRX_DIRECTION_WRITE) + Log(("VMX_EXIT_DRX_MOVE: write DR%d genreg %d\n", VMX_EXIT_QUALIFICATION_DRX_REGISTER(exitQualification), VMX_EXIT_QUALIFICATION_DRX_GENREG(exitQualification))); + else + Log(("VMX_EXIT_DRX_MOVE: read DR%d\n", VMX_EXIT_QUALIFICATION_DRX_REGISTER(exitQualification))); +#endif + #ifdef VBOX_WITH_STATISTICS STAM_COUNTER_INC(&pVCpu->hwaccm.s.StatDRxContextSwitch); if (VMX_EXIT_QUALIFICATION_DRX_DIRECTION(exitQualification) == VMX_EXIT_QUALIFICATION_DRX_DIRECTION_WRITE) @@ -4182,6 +4181,7 @@ VMMR0DECL(int) VMXR0Leave(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx) if (CPUMIsHyperDebugStateActive(pVCpu)) { CPUMR0LoadHostDebugState(pVM, pVCpu); + Assert(pVCpu->hwaccm.s.vmx.proc_ctls & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT); } else #endif diff --git a/src/VBox/VMM/VMMR0/PGMR0DynMap.cpp b/src/VBox/VMM/VMMR0/PGMR0DynMap.cpp index 8ef487cd0..c24d5df22 100644 --- a/src/VBox/VMM/VMMR0/PGMR0DynMap.cpp +++ b/src/VBox/VMM/VMMR0/PGMR0DynMap.cpp @@ -1516,6 +1516,29 @@ VMMDECL(void) PGMDynMapStartAutoSet(PVMCPU pVCpu) /** + * Starts or migrates the autoset of a virtual CPU. + * + * This is used by HWACCMR0Enter. When we've longjumped out of the HWACCM + * execution loop with the set open, we'll migrate it when re-entering. While + * under normal circumstances, we'll start it so VMXR0LoadGuestState can access + * guest memory. + * + * @returns @c true if started, @c false if migrated. + * @param pVCpu The shared data for the current virtual CPU. + * @thread EMT + */ +VMMDECL(bool) PGMDynMapStartOrMigrateAutoSet(PVMCPU pVCpu) +{ + bool fStartIt = pVCpu->pgm.s.AutoSet.cEntries == PGMMAPSET_CLOSED; + if (fStartIt) + PGMDynMapStartAutoSet(pVCpu); + else + PGMDynMapMigrateAutoSet(pVCpu); + return fStartIt; +} + + +/** * Worker that performs the actual flushing of the set. * * @param pSet The set to flush. @@ -1724,6 +1747,8 @@ VMMDECL(uint32_t) PGMDynMapPushAutoSubset(PVMCPU pVCpu) PPGMMAPSET pSet = &pVCpu->pgm.s.AutoSet; AssertReturn(pSet->cEntries != PGMMAPSET_CLOSED, UINT32_MAX); uint32_t iPrevSubset = pSet->iSubset; + LogFlow(("PGMDynMapPushAutoSubset: pVCpu=%p iPrevSubset=%u\n", pVCpu, iPrevSubset)); + pSet->iSubset = pSet->cEntries; STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapSubsets); return iPrevSubset; @@ -1740,8 +1765,9 @@ VMMDECL(void) PGMDynMapPopAutoSubset(PVMCPU pVCpu, uint32_t iPrevSubset) { PPGMMAPSET pSet = &pVCpu->pgm.s.AutoSet; uint32_t cEntries = pSet->cEntries; + LogFlow(("PGMDynMapPopAutoSubset: pVCpu=%p iPrevSubset=%u iSubset=%u cEntries=%u\n", pVCpu, iPrevSubset, pSet->iSubset, cEntries)); AssertReturnVoid(cEntries != PGMMAPSET_CLOSED); - AssertReturnVoid(pSet->iSubset <= iPrevSubset || iPrevSubset == UINT32_MAX); + AssertReturnVoid(pSet->iSubset >= iPrevSubset || iPrevSubset == UINT32_MAX); STAM_COUNTER_INC(&pVCpu->pgm.s.aStatR0DynMapSetSize[(cEntries * 10 / RT_ELEMENTS(pSet->aEntries)) % 11]); if ( cEntries >= RT_ELEMENTS(pSet->aEntries) * 40 / 100 && cEntries != pSet->iSubset) @@ -1813,6 +1839,8 @@ static void pgmDynMapOptimizeAutoSet(PPGMMAPSET pSet) */ int pgmR0DynMapHCPageCommon(PVM pVM, PPGMMAPSET pSet, RTHCPHYS HCPhys, void **ppv) { + LogFlow(("pgmR0DynMapHCPageCommon: pVM=%p pSet=%p HCPhys=%RHp ppv=%p\n", + pVM, pSet, HCPhys, ppv)); #ifdef VBOX_WITH_STATISTICS PVMCPU pVCpu = VMMGetCpu(pVM); #endif diff --git a/src/VBox/VMM/VMMRZ/DBGFRZ.cpp b/src/VBox/VMM/VMMRZ/DBGFRZ.cpp index 86668182d..1594a7923 100644 --- a/src/VBox/VMM/VMMRZ/DBGFRZ.cpp +++ b/src/VBox/VMM/VMMRZ/DBGFRZ.cpp @@ -88,12 +88,14 @@ VMMRZDECL(int) DBGFRZTrap01Handler(PVM pVM, PVMCPU pVCpu, PCPUMCTXCORE pRegFrame return fInHyper ? VINF_EM_DBG_HYPER_STEPPED : VINF_EM_DBG_STEPPED; } +#ifdef IN_RC /* * Currently we only implement single stepping in the guest, * so we'll bitch if this is not a BS event. */ AssertMsg(uDr6 & X86_DR6_BS, ("hey! we're not doing guest BPs yet! dr6=%RTreg %04x:%RGv\n", uDr6, pRegFrame->cs, pRegFrame->rip)); +#endif LogFlow(("DBGFRZTrap01Handler: guest debug event %RTreg at %04x:%RGv!\n", uDr6, pRegFrame->cs, pRegFrame->rip)); return fInHyper ? VERR_INTERNAL_ERROR : VINF_EM_RAW_GUEST_TRAP; diff --git a/src/VBox/VMM/VMMSwitcher.cpp b/src/VBox/VMM/VMMSwitcher.cpp index a8d33198b..921340330 100644 --- a/src/VBox/VMM/VMMSwitcher.cpp +++ b/src/VBox/VMM/VMMSwitcher.cpp @@ -51,7 +51,8 @@ static PVMMSWITCHERDEF s_apSwitchers[VMMSWITCHER_MAX] = { NULL, /* invalid entry */ -#ifndef RT_ARCH_AMD64 +#ifdef VBOX_WITH_RAW_MODE +# ifndef RT_ARCH_AMD64 &vmmR3Switcher32BitTo32Bit_Def, &vmmR3Switcher32BitToPAE_Def, &vmmR3Switcher32BitToAMD64_Def, @@ -59,13 +60,13 @@ static PVMMSWITCHERDEF s_apSwitchers[VMMSWITCHER_MAX] = &vmmR3SwitcherPAEToPAE_Def, &vmmR3SwitcherPAEToAMD64_Def, NULL, //&vmmR3SwitcherPAETo32Bit_Def, -# ifdef VBOX_WITH_HYBRID_32BIT_KERNEL +# ifdef VBOX_WITH_HYBRID_32BIT_KERNEL &vmmR3SwitcherAMD64ToPAE_Def, -# else +# else NULL, //&vmmR3SwitcherAMD64ToPAE_Def, -# endif +# endif NULL //&vmmR3SwitcherAMD64ToAMD64_Def, -#else /* RT_ARCH_AMD64 */ +# else /* RT_ARCH_AMD64 */ NULL, //&vmmR3Switcher32BitTo32Bit_Def, NULL, //&vmmR3Switcher32BitToPAE_Def, NULL, //&vmmR3Switcher32BitToAMD64_Def, @@ -75,7 +76,18 @@ static PVMMSWITCHERDEF s_apSwitchers[VMMSWITCHER_MAX] = &vmmR3SwitcherAMD64To32Bit_Def, &vmmR3SwitcherAMD64ToPAE_Def, NULL //&vmmR3SwitcherAMD64ToAMD64_Def, -#endif /* RT_ARCH_AMD64 */ +# endif /* RT_ARCH_AMD64 */ +#else /* !VBOX_WITH_RAW_MODE */ + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +#endif /* !VBOX_WITH_RAW_MODE */ }; @@ -90,6 +102,9 @@ static PVMMSWITCHERDEF s_apSwitchers[VMMSWITCHER_MAX] = */ int vmmR3SwitcherInit(PVM pVM) { +#ifndef VBOX_WITH_RAW_MODE + return VINF_SUCCESS; +#else /* * Calc the size. */ @@ -210,6 +225,7 @@ int vmmR3SwitcherInit(PVM pVM) pVM->vmm.s.pvCoreCodeR0 = NIL_RTR0PTR; pVM->vmm.s.pvCoreCodeRC = 0; return rc; +#endif } /** @@ -220,6 +236,7 @@ int vmmR3SwitcherInit(PVM pVM) */ void vmmR3SwitcherRelocate(PVM pVM, RTGCINTPTR offDelta) { +#ifdef VBOX_WITH_RAW_MODE /* * Relocate all the switchers. */ @@ -250,6 +267,7 @@ void vmmR3SwitcherRelocate(PVM pVM, RTGCINTPTR offDelta) pVM->pfnVMMGCGuestToHostAsmGuestCtx = RCPtr + pSwitcher->offGCGuestToHostAsmGuestCtx; // AssertFailed(); +#endif } diff --git a/src/VBox/VMM/testcase/Makefile.kmk b/src/VBox/VMM/testcase/Makefile.kmk index 4be53f077..89b5203b1 100644 --- a/src/VBox/VMM/testcase/Makefile.kmk +++ b/src/VBox/VMM/testcase/Makefile.kmk @@ -25,9 +25,12 @@ include $(KBUILD_PATH)/subheader.kmk # # Target lists. # -PROGRAMS += tstVMStructSize tstVMStructGC tstAsmStructs tstAsmStructsGC tstVMM tstVMM-HwAccm tstGlobalConfig tstInstrEmul -ifneq ($(KBUILD_TARGET),win) -PROGRAMS += tstVMMFork +PROGRAMS += tstVMStructSize tstAsmStructs tstGlobalConfig tstInstrEmul +ifdef VBOX_WITH_RAW_MODE + PROGRAMS += tstVMStructRC tstAsmStructsRC tstVMM tstVMM-HwAccm + ifneq ($(KBUILD_TARGET),win) + PROGRAMS += tstVMMFork + endif endif ifdef VBOX_WITH_TESTCASES PROGRAMS += \ @@ -36,21 +39,22 @@ ifdef VBOX_WITH_TESTCASES tstSSM \ tstMMHyperHeap \ tstVMREQ \ - tstMicro \ tstCompiler \ tstVMMR0CallHost-1 \ tstVMMR0CallHost-2 ifneq ($(KBUILD_TARGET),l4) PROGRAMS += tstAnimate endif - SYSMODS += tstMicroGC + ifdef VBOX_WITH_RAW_MODE + PROGRAMS += tstMicro + SYSMODS += tstMicroGC + endif + ifdef VBOX_WITH_PDM_ASYNC_COMPLETION + PROGRAMS += tstPDMAsyncCompletion + PROGRAMS += tstPDMAsyncCompletionStress + endif endif # VBOX_WITH_TESTCASES -ifdef VBOX_WITH_PDM_ASYNC_COMPLETION - PROGRAMS += tstPDMAsyncCompletion - PROGRAMS += tstPDMAsyncCompletionStress -endif - # Where we put our temporary files (just for simplicity) VBOX_VMM_TESTCASE_OUT_DIR := $(PATH_TARGET)/VMM BLDDIRS += $(VBOX_VMM_TESTCASE_OUT_DIR) @@ -83,9 +87,9 @@ OTHER_CLEAN += \ $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac.o \ $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac.lst \ $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.h.dump \ - $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsGC.h \ + $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsRC.h \ $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h \ - $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructGC.h + $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructRC.h # # Globals @@ -95,54 +99,66 @@ VBOX_PATH_VMM_SRC = $(PATH_ROOT)/src/VBox/VMM # # Targets # -tstVMStructGC_TEMPLATE = VBOXGCEXE -tstVMStructGC_DEFS = IN_VMM_RC IN_DIS IN_RT_RC IN_RT_GC -ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),darwin.x86) -tstVMStructGC_DEFS += \ - VBOX_WITH_2X_4GB_ADDR_SPACE VBOX_WITH_2X_4GB_ADDR_SPACE_IN_RC \ - VBOX_WITH_HYBRID_32BIT_KERNEL VBOX_WITH_HYBRID_32BIT_KERNEL_IN_RC -endif -ifdef VBOX_WITH_R0_LOGGING -tstVMStructGC_DEFS += VBOX_WITH_R0_LOGGING +ifdef VBOX_WITH_RAW_MODE + tstVMStructRC_TEMPLATE = VBOXGCEXE + tstVMStructRC_DEFS = IN_VMM_RC IN_DIS IN_RT_RC IN_RT_GC VBOX_WITH_RAW_MODE + ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),darwin.x86) + tstVMStructRC_DEFS += \ + VBOX_WITH_2X_4GB_ADDR_SPACE VBOX_WITH_2X_4GB_ADDR_SPACE_IN_RC \ + VBOX_WITH_HYBRID_32BIT_KERNEL VBOX_WITH_HYBRID_32BIT_KERNEL_IN_RC + endif + ifdef VBOX_WITH_R0_LOGGING + tstVMStructRC_DEFS += VBOX_WITH_R0_LOGGING + endif + tstVMStructRC_SOURCES = tstVMStructRC.cpp + tstVMStructRC_INCS = $(VBOX_PATH_VMM_SRC) $(VBOX_PATH_VMM_SRC)/PATM endif -tstVMStructGC_SOURCES = tstVMStructGC.cpp -tstVMStructGC_INCS = $(VBOX_PATH_VMM_SRC) $(VBOX_PATH_VMM_SRC)/PATM tstVMStructSize_TEMPLATE= VBOXR3AUTOTST tstVMStructSize_DEFS = IN_VMM_R3 IN_DIS ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),darwin.x86) -tstVMStructSize_DEFS += \ - VBOX_WITH_2X_4GB_ADDR_SPACE VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R3 \ - VBOX_WITH_HYBRID_32BIT_KERNEL VBOX_WITH_HYBRID_32BIT_KERNEL_IN_R3 + tstVMStructSize_DEFS += \ + VBOX_WITH_2X_4GB_ADDR_SPACE VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R3 \ + VBOX_WITH_HYBRID_32BIT_KERNEL VBOX_WITH_HYBRID_32BIT_KERNEL_IN_R3 +endif +ifdef VBOX_WITH_RAW_MODE + tstVMStructSize_DEFS += VBOX_WITH_RAW_MODE endif tstVMStructSize_INCS = $(VBOX_PATH_VMM_SRC) $(VBOX_PATH_VMM_SRC)/PATM $(VBOX_VMM_TESTCASE_OUT_DIR) tstVMStructSize_SOURCES = tstVMStructSize.cpp -tstVMStructSize.cpp_DEPS= $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructGC.h +ifdef VBOX_WITH_RAW_MODE + tstVMStructSize.cpp_DEPS= $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructRC.h +endif ifdef VBOX_WITH_R0_LOGGING -tstVMStructSize_DEFS += VBOX_WITH_R0_LOGGING + tstVMStructSize_DEFS += VBOX_WITH_R0_LOGGING endif ifdef VBOX_WITH_VMI -tstVMStructSize_DEFS += VBOX_WITH_VMI -tstVMStructSize_INCS += $(VBOX_PATH_VMM_SRC)/PARAV + tstVMStructSize_DEFS += VBOX_WITH_VMI + tstVMStructSize_INCS += $(VBOX_PATH_VMM_SRC)/PARAV endif tstAsmStructs_TEMPLATE = VBOXR3AUTOTST tstAsmStructs_DEFS = IN_VMM_R3 IN_DIS +ifdef VBOX_WITH_RAW_MODE + tstAsmStructs_DEFS += VBOX_WITH_RAW_MODE +endif ifdef VBOX_WITH_R0_LOGGING -tstAsmStructs_DEFS += VBOX_WITH_R0_LOGGING + tstAsmStructs_DEFS += VBOX_WITH_R0_LOGGING endif tstAsmStructs_INCS = $(VBOX_PATH_VMM_SRC) $(VBOX_VMM_TESTCASE_OUT_DIR) tstAsmStructs_SOURCES = tstAsmStructs.cpp +tstAsmStructs.cpp_DEPS = $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h -tstAsmStructsGC_TEMPLATE= VBOXGCEXE -tstAsmStructsGC_DEFS = IN_VMM_RC IN_DIS IN_RT_RC IN_RT_GC -ifdef VBOX_WITH_R0_LOGGING -tstAsmStructsGC_DEFS += VBOX_WITH_R0_LOGGING -endif -tstAsmStructsGC_INCS = $(VBOX_PATH_VMM_SRC) $(VBOX_VMM_TESTCASE_OUT_DIR) -tstAsmStructsGC_SOURCES = tstAsmStructs.cpp - -tstAsmStructs.cpp_DEPS = $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsGC.h +ifdef VBOX_WITH_RAW_MODE + tstAsmStructsRC_TEMPLATE= VBOXGCEXE + tstAsmStructsRC_DEFS = IN_VMM_RC IN_DIS IN_RT_RC IN_RT_GC VBOX_WITH_RAW_MODE + ifdef VBOX_WITH_R0_LOGGING + tstAsmStructsRC_DEFS += VBOX_WITH_R0_LOGGING + endif + tstAsmStructsRC_INCS = $(VBOX_PATH_VMM_SRC) $(VBOX_VMM_TESTCASE_OUT_DIR) + tstAsmStructsRC_SOURCES = tstAsmStructs.cpp + tstAsmStructs.cpp_DEPS += $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsRC.h +endif # VBOX_WITH_RAW_MODE tstGlobalConfig_TEMPLATE= VBOXR3TSTEXE @@ -168,18 +184,6 @@ tstCFGM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) tstCompressionBenchmark_TEMPLATE = VBOXR3TSTEXE tstCompressionBenchmark_SOURCES = tstCompressionBenchmark.cpp -tstVMM_TEMPLATE = VBOXR3EXE -tstVMM_SOURCES = tstVMM.cpp -tstVMM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) - -tstVMM-HwAccm_TEMPLATE = VBOXR3EXE -tstVMM-HwAccm_SOURCES = tstVMM-HwAccm.cpp -tstVMM-HwAccm_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) - -tstVMMFork_TEMPLATE = VBOXR3EXE -tstVMMFork_SOURCES = tstVMMFork.cpp -tstVMMFork_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) - tstVMMR0CallHost-1_TEMPLATE = VBOXR3TSTEXE tstVMMR0CallHost-1_DEFS = VMM_R0_NO_SWITCH_STACK tstVMMR0CallHost-1_INCS = $(VBOX_PATH_VMM_SRC) @@ -205,37 +209,52 @@ tstCompiler_TEMPLATE = VBOXR3TSTEXE tstCompiler_SOURCES = tstCompiler.cpp tstCompiler_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) -tstMicro_TEMPLATE = VBOXR3EXE -tstMicro_SOURCES = tstMicro.cpp -tstMicro_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) - -# tstMicroGC.gc -tstMicroGC_TEMPLATE = VBOXGC -tstMicroGC_SOURCES = tstMicroGC.cpp tstMicroGCA.asm -tstMicroGC_DEFS = -tstMicroGC_INCS = $(VBOX_PATH_VMM_SRC)/testcase -ifeq ($(VBOX_LDR_FMT32),pe) -tstMicroGC_LDFLAGS = -Entry:tstMicroGC -endif -tstMicroGC_SYSSUFF = .gc -tstMicroGC_LIBS = \ - $(PATH_LIB)/DisasmGC$(VBOX_SUFF_LIB) \ - $(PATH_LIB)/RuntimeGC$(VBOX_SUFF_LIB) -ifeq ($(filter-out pe lx,$(VBOX_LDR_FMT32)),) -tstMicroGC_LIBS += \ - $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) \ - $(LIB_VMMGC) -endif -tstMicroGC_SOURCES.win = tstMicroGC.def +ifdef VBOX_WITH_RAW_MODE + + tstVMM_TEMPLATE = VBOXR3EXE + tstVMM_SOURCES = tstVMM.cpp + tstVMM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) + + tstVMM-HwAccm_TEMPLATE = VBOXR3EXE + tstVMM-HwAccm_SOURCES = tstVMM-HwAccm.cpp + tstVMM-HwAccm_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) + + tstVMMFork_TEMPLATE = VBOXR3EXE + tstVMMFork_SOURCES = tstVMMFork.cpp + tstVMMFork_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) + + tstMicro_TEMPLATE = VBOXR3EXE + tstMicro_SOURCES = tstMicro.cpp + tstMicro_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) + + tstMicroGC_TEMPLATE = VBOXGC + tstMicroGC_SOURCES = tstMicroGC.cpp tstMicroGCA.asm + tstMicroGC_DEFS = + tstMicroGC_INCS = $(VBOX_PATH_VMM_SRC)/testcase + ifeq ($(VBOX_LDR_FMT32),pe) + tstMicroGC_LDFLAGS = -Entry:tstMicroGC + endif + tstMicroGC_SYSSUFF = .gc + tstMicroGC_LIBS = \ + $(PATH_LIB)/DisasmGC$(VBOX_SUFF_LIB) \ + $(PATH_LIB)/RuntimeGC$(VBOX_SUFF_LIB) + ifeq ($(filter-out pe lx,$(VBOX_LDR_FMT32)),) + tstMicroGC_LIBS += \ + $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) \ + $(LIB_VMMGC) + endif + tstMicroGC_SOURCES.win = tstMicroGC.def + +endif # VBOX_WITH_RAW_MODE ifdef VBOX_WITH_PDM_ASYNC_COMPLETION -tstPDMAsyncCompletion_TEMPLATE = VBOXR3EXE -tstPDMAsyncCompletion_SOURCES = tstPDMAsyncCompletion.cpp -tstPDMAsyncCompletion_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) + tstPDMAsyncCompletion_TEMPLATE = VBOXR3EXE + tstPDMAsyncCompletion_SOURCES = tstPDMAsyncCompletion.cpp + tstPDMAsyncCompletion_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) -tstPDMAsyncCompletionStress_TEMPLATE = VBOXR3EXE -tstPDMAsyncCompletionStress_SOURCES = tstPDMAsyncCompletionStress.cpp -tstPDMAsyncCompletionStress_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) + tstPDMAsyncCompletionStress_TEMPLATE = VBOXR3EXE + tstPDMAsyncCompletionStress_SOURCES = tstPDMAsyncCompletionStress.cpp + tstPDMAsyncCompletionStress_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) endif include $(KBUILD_PATH)/subfooter.kmk @@ -332,19 +351,22 @@ $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h: $(VBOX_VMM_TESTCASE_OUT_DIR)/tst $(QUIET)$(MV) -f $@.tmp $@ $(QUIET)$(RM) -f $@.dump -# 3. transform the HC header into a GC one by omitting some HC only structures. -$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsGC.h: $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h +ifdef VBOX_WITH_RAW_MODE +# 3. transform the HC header into a RC one by omitting some HC only structures. +$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsRC.h: $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h $(call MSG_GENERATE,tstVMStructSize,$@,$<) $(QUIET)$(SED) -e '/VMMSWITCHERDEF/d' --output $@ $^ - -## @todo make this default kBuild behaviour. -.SECONDEXPANSION: +endif # 4. run it. -$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run: $$(INSTARGET_tstAsmStructs) $$(INSTARGET_tstAsmStructsGC) +$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run: \ + $$(INSTARGET_tstAsmStructs) \ + $(if-expr defined(VBOX_WITH_RAW_MODE),$$(INSTARGET_tstAsmStructsRC),) $(QUIET)$(RM) -f $@ $(INSTARGET_tstAsmStructs) - $(INSTARGET_tstAsmStructsGC) +ifdef VBOX_WITH_RAW_MODE + $(INSTARGET_tstAsmStructsRC) +endif $(QUIET)$(APPEND) "$@" "done" @@ -353,10 +375,12 @@ $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run: $$(INSTARGET_tstAsmStructs) $$(I # Run rule for tstVMStructSize. # +ifdef VBOX_WITH_RAW_MODE # 1. Manually dump selected structures and members. -$(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructGC.h: $$(INSTARGET_tstVMStructGC) | $$(dir $$@) +$(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructRC.h: $$(INSTARGET_tstVMStructRC) | $$(dir $$@) $(call MSG_GENERATE,tstVMStructSize,$@) $(QUIET)$(REDIRECT) -wo $@ -- $< +endif # VBOX_WITH_RAW_MODE # 2. run it. $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run: $$(INSTARGET_tstVMStructSize) | $$(dir $$@) diff --git a/src/VBox/VMM/testcase/tstAsmStructs.cpp b/src/VBox/VMM/testcase/tstAsmStructs.cpp index 40d198fe6..3705f8247 100644 --- a/src/VBox/VMM/testcase/tstAsmStructs.cpp +++ b/src/VBox/VMM/testcase/tstAsmStructs.cpp @@ -43,7 +43,7 @@ int main() #ifdef IN_RING3 # include "tstAsmStructsHC.h" #else -# include "tstAsmStructsGC.h" +# include "tstAsmStructsRC.h" #endif if (rc) diff --git a/src/VBox/VMM/testcase/tstVMStructGC.cpp b/src/VBox/VMM/testcase/tstVMStructRC.cpp index c0d3fa5e9..67836ba10 100644 --- a/src/VBox/VMM/testcase/tstVMStructGC.cpp +++ b/src/VBox/VMM/testcase/tstVMStructRC.cpp @@ -1,13 +1,14 @@ -/* $Id: tstVMStructGC.cpp $ */ +/* $Id: tstVMStructRC.cpp $ */ /** @file - * tstVMMStructGC - Generate structure member and size checks from the GC perspective. + * tstVMMStructGC - Generate structure member and size checks from the + * RC perspective. * - * This is built using the VBOXGC template but linked into a host + * This is built using the VBOXRC template but linked into a host * ring-3 executable, rather hacky. */ /* - * Copyright (C) 2006-2007 Sun Microsystems, Inc. + * Copyright (C) 2006-2010 Sun Microsystems, Inc. * * 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/VMM/testcase/tstVMStructSize.cpp b/src/VBox/VMM/testcase/tstVMStructSize.cpp index 993526284..480bccbdb 100644 --- a/src/VBox/VMM/testcase/tstVMStructSize.cpp +++ b/src/VBox/VMM/testcase/tstVMStructSize.cpp @@ -392,11 +392,13 @@ int main() printf("struct UVMCPU: %d bytes\n", (int)sizeof(UVMCPU)); CHECK_PADDING_UVMCPU(32, vm); +#ifdef VBOX_WITH_RAW_MODE /* - * Compare HC and GC. + * Compare HC and RC. */ - printf("tstVMStructSize: Comparing HC and GC...\n"); -#include "tstVMStructGC.h" + printf("tstVMStructSize: Comparing HC and RC...\n"); +# include "tstVMStructRC.h" +#endif /* VBOX_WITH_RAW_MODE */ /* * Report result. diff --git a/src/libs/xpcom18a4/ipc/ipcd/client/src/ipcdclient.cpp b/src/libs/xpcom18a4/ipc/ipcd/client/src/ipcdclient.cpp index 2c44652e5..0722b617e 100644 --- a/src/libs/xpcom18a4/ipc/ipcd/client/src/ipcdclient.cpp +++ b/src/libs/xpcom18a4/ipc/ipcd/client/src/ipcdclient.cpp @@ -404,6 +404,20 @@ WaitTarget(const nsID &aTarget, rv = NS_OK; break; } +#ifdef VBOX + else + { + /* Special client liveness check if there is no message to process. + * This is necessary as there might be several threads waiting for + * a message from a single client, and only one gets the DOWN msg. */ + PRBool alive = (aSelector)(aArg, td, NULL); + if (!alive) + { + *aMsg = NULL; + break; + } + } +#endif /* VBOX */ PRIntervalTime t = PR_IntervalNow(); if (t > timeEnd) // check if timeout has expired @@ -586,6 +600,10 @@ static nsresult nsresult_from_ipcm_result(PRInt32 status) static PRBool WaitIPCMResponseSelector(void *arg, ipcTargetData *td, const ipcMessage *msg) { +#ifdef VBOX + if (!msg) + return PR_TRUE; +#endif /* VBOX */ PRUint32 requestIndex = *(PRUint32 *) arg; return IPCM_GetRequestIndex(msg) == requestIndex; } @@ -913,6 +931,25 @@ struct WaitMessageSelectorData static PRBool WaitMessageSelector(void *arg, ipcTargetData *td, const ipcMessage *msg) { WaitMessageSelectorData *data = (WaitMessageSelectorData *) arg; +#ifdef VBOX + if (!msg) + { + /* Special NULL message which asks to check whether the client is + * still alive. Called when there is nothing suitable in the queue. */ + ipcIMessageObserver *obs = data->observer; + if (!obs) + obs = td->observer; + NS_ASSERTION(obs, "must at least have a default observer"); + + nsresult rv = obs->OnMessageAvailable(IPC_SENDER_ANY, nsID(), 0, 0); + if (rv != IPC_WAIT_NEXT_MESSAGE) + { + data->senderDead = PR_TRUE; + return PR_FALSE; + } + return PR_TRUE; + } +#endif /* VBOX */ // process the specially forwarded client state message to see if the // sender we're waiting a message from has died. @@ -942,7 +979,7 @@ static PRBool WaitMessageSelector(void *arg, ipcTargetData *td, const ipcMessage else { // otherwise inform the observer about the client death using a special - // null message with an emply target id, and fail IPC_WaitMessage call + // null message with an empty target id, and fail IPC_WaitMessage call // with NS_ERROR_xxx only if the observer accepts this message. ipcIMessageObserver *obs = data->observer; @@ -958,6 +995,36 @@ static PRBool WaitMessageSelector(void *arg, ipcTargetData *td, const ipcMessage } } } +#ifdef VBOX + else if ((data->senderID == IPC_SENDER_ANY || + status->ClientID() == data->senderID) && + status->ClientState() == IPCM_CLIENT_STATE_UP) + { + LOG(("sender (%d) we're waiting a message from (%d) has come up\n", + status->ClientID(), data->senderID)); + if (data->senderID == IPC_SENDER_ANY) + { + // inform the observer about the client appearance using a special + // null message with an empty target id, but a length of 1. + + ipcIMessageObserver *obs = data->observer; + if (!obs) + obs = td->observer; + NS_ASSERTION(obs, "must at least have a default observer"); + + nsresult rv = obs->OnMessageAvailable(status->ClientID(), nsID(), 0, 1); + /* VBoxSVC/VBoxXPCOMIPCD auto-start can cause that a client up + * message arrives while we're already waiting for a response + * from this client. Don't declare the connection as dead in + * this case. A client ID wraparound can't falsely trigger + * this, since the waiting thread would have hit the liveness + * check in the mean time. Also, DO NOT consume the message, + * otherwise it gets passed to the DConnect message handling + * without any further checks. IPCM messages are automatically + * discarded if they are left unclaimed. */ + } + } +#endif /* VBOX */ break; } default: diff --git a/src/libs/xpcom18a4/ipc/ipcd/extensions/dconnect/src/ipcDConnectService.cpp b/src/libs/xpcom18a4/ipc/ipcd/extensions/dconnect/src/ipcDConnectService.cpp index 24a0bdccb..fb27777ca 100644 --- a/src/libs/xpcom18a4/ipc/ipcd/extensions/dconnect/src/ipcDConnectService.cpp +++ b/src/libs/xpcom18a4/ipc/ipcd/extensions/dconnect/src/ipcDConnectService.cpp @@ -51,6 +51,11 @@ #include "nsDeque.h" #include "xptcall.h" +#ifdef VBOX +#include <map> +#include <list> +#endif /* VBOX */ + #if defined(DCONNECT_MULTITHREADED) #include "nsIThread.h" @@ -1254,6 +1259,29 @@ NewRequestIndex() //----------------------------------------------------------------------------- +#ifdef VBOX +typedef struct ClientDownInfo +{ + ClientDownInfo(PRUint32 aClient) + { + uClient = aClient; + uTimestamp = PR_IntervalNow(); + } + + PRUint32 uClient; + PRIntervalTime uTimestamp; +} ClientDownInfo; +typedef std::map<PRUint32, ClientDownInfo *> ClientDownMap; +typedef std::list<ClientDownInfo *> ClientDownList; + +#define MAX_CLIENT_DOWN_SIZE 10000 + +/* Protected by the queue monitor. */ +static ClientDownMap g_ClientDownMap; +static ClientDownList g_ClientDownList; + +#endif /* VBOX */ + class DConnectMsgSelector : public ipcIMessageObserver { public: @@ -1274,8 +1302,81 @@ public: { // accept special "client dead" messages for a given peer // (empty target id, zero data and data length) +#ifndef VBOX if (aSenderID == mPeer && aTarget.Equals(nsID()) && !aData && !aDataLen) return NS_OK; +#else /* VBOX */ + if (aSenderID != IPC_SENDER_ANY && aTarget.Equals(nsID()) && !aData && !aDataLen) + { + // Insert new client down information. Start by expiring outdated + // entries and free one element if there's still no space (if needed). + PRIntervalTime now = PR_IntervalNow(); + while (!g_ClientDownList.empty()) + { + ClientDownInfo *cInfo = g_ClientDownList.back(); + PRInt64 diff = (PRInt64)now - cInfo->uTimestamp; + if (diff < 0) + diff += (PRInt64)((PRIntervalTime)-1) + 1; + if (diff > PR_SecondsToInterval(15 * 60)) + { + g_ClientDownMap.erase(cInfo->uClient); + g_ClientDownList.pop_back(); + NS_ASSERTION(g_ClientDownMap.size() == g_ClientDownList.size(), + "client down info inconsistency during expiry"); + delete cInfo; + } + else + break; + } + + ClientDownMap::iterator it = g_ClientDownMap.find(aSenderID); + if (it == g_ClientDownMap.end()) + { + /* Getting size of a map is O(1), size of a list can be O(n). */ + while (g_ClientDownMap.size() >= MAX_CLIENT_DOWN_SIZE) + { + ClientDownInfo *cInfo = g_ClientDownList.back(); + g_ClientDownMap.erase(cInfo->uClient); + g_ClientDownList.pop_back(); + NS_ASSERTION(g_ClientDownMap.size() == g_ClientDownList.size(), + "client down info inconsistency during emergency evicting"); + delete cInfo; + } + + ClientDownInfo *cInfo = new ClientDownInfo(aSenderID); + g_ClientDownMap[aSenderID] = cInfo; + g_ClientDownList.push_front(cInfo); + NS_ASSERTION(g_ClientDownMap.size() == g_ClientDownList.size(), + "client down info inconsistency after adding entry"); + } + return (aSenderID == mPeer) ? NS_OK : IPC_WAIT_NEXT_MESSAGE; + } + // accept special "client up" messages for a given peer + // (empty target id, zero data and data length=1) + if (aTarget.Equals(nsID()) && !aData && aDataLen == 1) + { + ClientDownMap::iterator it = g_ClientDownMap.find(aSenderID); + if (it != g_ClientDownMap.end()) + { + ClientDownInfo *cInfo = it->second; + g_ClientDownMap.erase(it); + g_ClientDownList.remove(cInfo); + NS_ASSERTION(g_ClientDownMap.size() == g_ClientDownList.size(), + "client down info inconsistency in client up case"); + delete cInfo; + } + return (aSenderID == mPeer) ? NS_OK : IPC_WAIT_NEXT_MESSAGE; + } + // accept special "client check" messages for an anonymous sender + // (invalid sender id, empty target id, zero data and data length + if (aSenderID == IPC_SENDER_ANY && aTarget.Equals(nsID()) && !aData && !aDataLen) + { + LOG(("DConnectMsgSelector::OnMessageAvailable: poll liveness for mPeer=%d\n", + mPeer)); + ClientDownMap::iterator it = g_ClientDownMap.find(mPeer); + return (it == g_ClientDownMap.end()) ? IPC_WAIT_NEXT_MESSAGE : NS_OK; + } +#endif /* VBOX */ const DConnectOp *op = (const DConnectOp *) aData; // accept only reply messages with the given peer/opcode/index // (to prevent eating replies the other thread might be waiting for) diff --git a/src/libs/xpcom18a4/xpcom/base/nscore.h b/src/libs/xpcom18a4/xpcom/base/nscore.h index be5c3d655..b00e07af7 100644 --- a/src/libs/xpcom18a4/xpcom/base/nscore.h +++ b/src/libs/xpcom18a4/xpcom/base/nscore.h @@ -458,8 +458,8 @@ typedef PRUint32 nsresult; */ #if defined(__GNUC__) && (__GNUC__ > 2) -#define NS_LIKELY(x) (__builtin_expect((x), 1)) -#define NS_UNLIKELY(x) (__builtin_expect((x), 0)) +#define NS_LIKELY(x) (__builtin_expect(!!(x), 1)) +#define NS_UNLIKELY(x) (__builtin_expect(!!(x), 0)) #else #define NS_LIKELY(x) (x) #define NS_UNLIKELY(x) (x) |