summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Geyer <debfx-pkg@fobos.de>2009-08-07 22:19:59 +0200
committerFelix Geyer <debfx-pkg@fobos.de>2009-08-07 22:19:59 +0200
commitfd321f7f2afeecd1066ed399b8c33aed3964b228 (patch)
treee7ece73572e464e47857a6b4c40b7b6b082c28f0
parent29554628c63e586eb33ca746e8bdfadcc285b43d (diff)
downloadvirtualbox-fd321f7f2afeecd1066ed399b8c33aed3964b228.tar.gz
Imported Upstream version 3.0.4-dfsgupstream/3.0.4-dfsg
-rw-r--r--Config.kmk4
-rw-r--r--include/VBox/HostServices/VBoxCrOpenGLSvc.h19
-rw-r--r--include/VBox/mm.h7
-rw-r--r--include/VBox/shflsvc.h54
-rw-r--r--include/iprt/log.h11
-rw-r--r--src/VBox/Additions/common/VBoxService/Makefile.kmk4
-rw-r--r--src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp20
-rw-r--r--src/VBox/Additions/common/crOpenGL/stub.c6
-rw-r--r--src/VBox/Additions/common/crOpenGL/wgl.c15
-rw-r--r--src/VBox/Additions/common/crOpenGL/windows_getprocaddress.py6
-rwxr-xr-xsrc/VBox/Additions/linux/installer/autorun.sh13
-rw-r--r--src/VBox/Additions/x11/VBoxClient/clipboard.cpp34
-rw-r--r--src/VBox/Additions/x11/VBoxClient/main.cpp16
-rw-r--r--src/VBox/Additions/x11/VBoxClient/seamless-x11.cpp40
-rw-r--r--src/VBox/Additions/x11/VBoxClient/seamless-x11.h2
-rw-r--r--src/VBox/Additions/x11/VBoxClient/testcase/tstSeamlessX11-auto.cpp10
-rw-r--r--src/VBox/Additions/x11/vboxmouse/vboxmouse_15.c5
-rw-r--r--src/VBox/Additions/x11/vboxvideo/vboxutils.c8
-rw-r--r--src/VBox/Additions/x11/vboxvideo/vboxvideo.h2
-rw-r--r--src/VBox/Additions/x11/vboxvideo/vboxvideo_15.c50
-rw-r--r--src/VBox/Devices/Audio/solaudio.c1
-rw-r--r--src/VBox/Devices/Network/slirp/ip_icmp.c2
-rw-r--r--src/VBox/Devices/Network/slirp/libalias/alias_db.c21
-rw-r--r--src/VBox/Devices/Network/slirp/libalias/alias_ftp.c20
-rw-r--r--src/VBox/Devices/Network/slirp/libalias/alias_local.h6
-rw-r--r--src/VBox/Devices/Network/slirp/libalias/alias_mod.c45
-rw-r--r--src/VBox/Devices/Network/slirp/libalias/alias_mod.h11
-rw-r--r--src/VBox/Devices/Network/slirp/libalias/alias_nbt.c20
-rw-r--r--src/VBox/Devices/Network/slirp/slirp.c12
-rw-r--r--src/VBox/Devices/Network/slirp/slirp.h23
-rw-r--r--src/VBox/Devices/Network/slirp/slirp_state.h3
-rw-r--r--src/VBox/Devices/PC/DevACPI.cpp1
-rw-r--r--src/VBox/Devices/Storage/DevAHCI.cpp97
-rw-r--r--src/VBox/Devices/Storage/ISCSIHDDCore.cpp28
-rw-r--r--src/VBox/Frontends/VBoxManage/VBoxInternalManage.cpp17
-rwxr-xr-xsrc/VBox/Frontends/VBoxShell/vboxshell.py399
-rw-r--r--src/VBox/Frontends/VirtualBox/include/VBoxConsoleView.h3
-rw-r--r--src/VBox/Frontends/VirtualBox/include/VBoxConsoleWnd.h3
-rw-r--r--src/VBox/Frontends/VirtualBox/include/VBoxDefs.h1
-rw-r--r--src/VBox/Frontends/VirtualBox/include/VBoxProblemReporter.h1
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts8
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts6614
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts663
-rw-r--r--src/VBox/Frontends/VirtualBox/nls/qt_km_KH.ts5393
-rw-r--r--src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp33
-rw-r--r--src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp39
-rw-r--r--src/VBox/Frontends/VirtualBox/src/VBoxDefs.cpp1
-rw-r--r--src/VBox/Frontends/VirtualBox/src/VBoxFilePathSelectorWidget.cpp7
-rw-r--r--src/VBox/Frontends/VirtualBox/src/VBoxMiniToolBar.cpp32
-rw-r--r--src/VBox/Frontends/VirtualBox/src/VBoxProblemReporter.cpp8
-rw-r--r--src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsGeneral.cpp9
-rw-r--r--src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsSFDetails.cpp10
-rw-r--r--src/VBox/Frontends/VirtualBox/src/main.cpp62
-rw-r--r--src/VBox/Frontends/VirtualBox/ui/VBoxVMSettingsGeneral.ui38
-rw-r--r--src/VBox/GuestHost/OpenGL/include/cr_net.h2
-rw-r--r--src/VBox/GuestHost/OpenGL/include/cr_protocol.h5
-rw-r--r--src/VBox/GuestHost/OpenGL/include/cr_server.h5
-rw-r--r--src/VBox/GuestHost/OpenGL/include/cr_spu.h3
-rw-r--r--src/VBox/GuestHost/OpenGL/util/hash.c22
-rw-r--r--src/VBox/GuestHost/OpenGL/util/net.c1
-rw-r--r--src/VBox/GuestHost/OpenGL/util/vboxhgcm.c32
-rw-r--r--src/VBox/GuestHost/SharedClipboard/x11-clipboard.cpp80
-rw-r--r--src/VBox/HostDrivers/Support/SUPDrv.c6
-rw-r--r--src/VBox/HostDrivers/Support/SUPLib.cpp21
-rw-r--r--src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c49
-rw-r--r--src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c8
-rw-r--r--src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk2
-rw-r--r--src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFlt-solaris.c33
-rw-r--r--src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFlt-win.c8
-rw-r--r--src/VBox/HostServices/SharedClipboard/service.cpp62
-rw-r--r--src/VBox/HostServices/SharedClipboard/x11-clipboard.cpp30
-rw-r--r--src/VBox/HostServices/SharedFolders/service.cpp114
-rw-r--r--src/VBox/HostServices/SharedFolders/vbsf.cpp8
-rw-r--r--src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp62
-rw-r--r--src/VBox/HostServices/SharedOpenGL/crserverlib/server_context.c30
-rw-r--r--src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c49
-rw-r--r--src/VBox/HostServices/SharedOpenGL/crserverlib/server_window.c38
-rw-r--r--src/VBox/HostServices/SharedOpenGL/render/renderspu_agl.c11
-rwxr-xr-xsrc/VBox/Installer/linux/vboxdrv.sh.in4
-rw-r--r--src/VBox/Installer/solaris/Makefile.kmk134
-rwxr-xr-xsrc/VBox/Installer/solaris/ipsinstall.sh45
-rwxr-xr-xsrc/VBox/Installer/solaris/makepackage.sh5
-rwxr-xr-xsrc/VBox/Installer/solaris/postinstall.sh43
-rw-r--r--src/VBox/Installer/solaris/vbox.depend2
-rwxr-xr-xsrc/VBox/Installer/solaris/vboxdrv.sh7
-rw-r--r--src/VBox/Main/VFSExplorerImpl.cpp5
-rw-r--r--src/VBox/Main/generic/NetIf-generic.cpp3
-rw-r--r--src/VBox/Main/glue/vboxapi.py121
-rw-r--r--src/VBox/Main/idl/VirtualBox.xidl2
-rw-r--r--src/VBox/Main/include/ApplianceImpl.h1
-rw-r--r--src/VBox/Main/include/MachineImpl.h2
-rw-r--r--src/VBox/Main/linux/HostHardwareLinux.cpp37
-rw-r--r--src/VBox/Main/webservice/glue-jaxws.xsl23
-rw-r--r--src/VBox/Main/webservice/vboxweb.h6
-rw-r--r--src/VBox/Main/webservice/websrv-python.xsl427
-rw-r--r--src/VBox/Main/webservice/websrv-shared.inc.xsl2
-rw-r--r--src/VBox/Runtime/r3/dir.cpp14
-rw-r--r--src/VBox/VMM/MMHyper.cpp55
-rw-r--r--src/VBox/VMM/Makefile.kmk3
-rw-r--r--src/VBox/VMM/TM.cpp10
-rw-r--r--src/VBox/VMM/VMM.cpp17
-rw-r--r--src/VBox/VMM/VMMAll/PGMAllBth.h3
-rw-r--r--src/VBox/VMM/VMMAll/REMAll.cpp4
-rw-r--r--src/VBox/VMM/VMMR0/CPUMR0.cpp68
-rw-r--r--src/VBox/VMM/VMMR0/HWACCMR0A.asm6
-rw-r--r--src/VBox/VMM/VMMR0/HWSVMR0.cpp90
-rw-r--r--src/VBox/VMM/VMMR0/HWVMXR0.cpp15
-rw-r--r--src/VBox/VMM/VMMSwitcher.cpp4
-rw-r--r--src/VBox/VMM/VMMSwitcher/AMD64andLegacy.mac22
-rw-r--r--src/VBox/VMM/VMMSwitcher/PAEand32Bit.mac32
-rw-r--r--src/libs/xpcom18a4/ipc/ipcd/extensions/dconnect/src/ipcDConnectService.cpp93
-rw-r--r--src/libs/xpcom18a4/ipc/ipcd/extensions/dconnect/src/ipcDConnectService.h4
-rw-r--r--src/libs/xpcom18a4/nsprpub/pr/include/prtypes.h1
-rw-r--r--src/libs/xpcom18a4/xpcom/base/nscore.h6
-rw-r--r--src/libs/xpcom18a4/xpcom/ds/nsCheapSets.h4
-rw-r--r--src/libs/xpcom18a4/xpcom/ds/nsVoidArray.h2
-rw-r--r--src/libs/xpcom18a4/xpcom/io/nsFastLoadService.cpp8
-rw-r--r--src/recompiler/qemu-lock.h3
118 files changed, 7253 insertions, 8718 deletions
diff --git a/Config.kmk b/Config.kmk
index 6ee57e295..8ca2034dd 100644
--- a/Config.kmk
+++ b/Config.kmk
@@ -150,7 +150,7 @@ VBOX_VERSION_MINOR = 0
# 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 = 2
+VBOX_VERSION_BUILD = 4
# 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.
@@ -3783,7 +3783,7 @@ endif
SVN ?= svn$(HOSTSUFF_EXE)
VBOX_SVN_REV_KMK = $(PATH_OUT)/revision.kmk
ifndef VBOX_SVN_REV
- VBOX_SVN_REV_FALLBACK := $(patsubst %:,, $Rev: 49928 $ )
+ VBOX_SVN_REV_FALLBACK := $(patsubst %:,, $Rev: 50677 $ )
VBOX_SVN_DEP := $(wildcard $(PATH_ROOT)/.svn/entries)
ifeq ($(which $(SVN)),)
VBOX_SVN_DEP :=
diff --git a/include/VBox/HostServices/VBoxCrOpenGLSvc.h b/include/VBox/HostServices/VBoxCrOpenGLSvc.h
index 7e8648f7e..0ec2244cb 100644
--- a/include/VBox/HostServices/VBoxCrOpenGLSvc.h
+++ b/include/VBox/HostServices/VBoxCrOpenGLSvc.h
@@ -42,6 +42,7 @@
#define SHCRGL_GUEST_FN_WRITE (2)
#define SHCRGL_GUEST_FN_READ (3)
#define SHCRGL_GUEST_FN_WRITE_READ (4)
+#define SHCRGL_GUEST_FN_SET_VERSION (6)
/* Parameters count */
#define SHCRGL_CPARMS_SET_FRAMEBUFFER (1)
@@ -49,6 +50,7 @@
#define SHCRGL_CPARMS_WRITE (1)
#define SHCRGL_CPARMS_READ (2)
#define SHCRGL_CPARMS_WRITE_READ (3)
+#define SHCRGL_CPARMS_SET_VERSION (2)
/**
* SHCRGL_GUEST_FN_WRITE
@@ -104,4 +106,21 @@ typedef struct
} CRVBOXHGCMWRITEREAD;
+/** GUEST_FN_SET_VERSION Parameters structure. */
+typedef struct
+{
+ VBoxGuestHGCMCallInfo hdr;
+
+ /** 32bit, in
+ * Major version
+ */
+ HGCMFunctionParameter vMajor;
+
+ /** 32bit, in
+ * Minor version
+ */
+ HGCMFunctionParameter vMinor;
+
+} CRVBOXHGCMSETVERSION;
+
#endif
diff --git a/include/VBox/mm.h b/include/VBox/mm.h
index 45b7e2602..371896bd0 100644
--- a/include/VBox/mm.h
+++ b/include/VBox/mm.h
@@ -262,6 +262,13 @@ VMMR3DECL(void) MMR3ReleaseOwnedLocks(PVM pVM);
* @ingroup grp_mm_r3
* @{ */
VMMR3DECL(int) MMR3HyperAllocOnceNoRel(PVM pVM, size_t cb, uint32_t uAlignment, MMTAG enmTag, void **ppv);
+VMMR3DECL(int) MMR3HyperAllocOnceNoRelEx(PVM pVM, size_t cb, uint32_t uAlignment, MMTAG enmTag, uint32_t fFlags, void **ppv);
+/** @name MMR3HyperAllocOnceNoRelEx flags
+ * @{ */
+/** Must have kernel mapping.
+ * If not specified, the R0 pointer may point to the user process mapping. */
+#define MMHYPER_AONR_FLAGS_KERNEL_MAPPING RT_BIT(0)
+/** @} */
VMMR3DECL(int) MMR3HyperSetGuard(PVM pVM, void *pvStart, size_t cb, bool fSet);
VMMR3DECL(int) MMR3HyperMapHCPhys(PVM pVM, void *pvR3, RTR0PTR pvR0, RTHCPHYS HCPhys, size_t cb, const char *pszDesc, PRTGCPTR pGCPtr);
VMMR3DECL(int) MMR3HyperMapGCPhys(PVM pVM, RTGCPHYS GCPhys, size_t cb, const char *pszDesc, PRTGCPTR pGCPtr);
diff --git a/include/VBox/shflsvc.h b/include/VBox/shflsvc.h
index bc1e653a8..a9e501be7 100644
--- a/include/VBox/shflsvc.h
+++ b/include/VBox/shflsvc.h
@@ -138,19 +138,22 @@ typedef uint64_t SHFLHANDLE;
/** Hardcoded maximum number of shared folder mapping available to the guest. */
#define SHFL_MAX_MAPPINGS (64)
-/** Shared Folders strings. They can be either UTF8 or Unicode.
- * @{
+/** @name Shared Folders strings. They can be either UTF-8 or UTF-16.
+ * @{
*/
+/**
+ * Shared folder string buffer structure.
+ */
typedef struct _SHFLSTRING
{
- /** Size of string String buffer in bytes. */
+ /** Size of the String member in bytes. */
uint16_t u16Size;
/** Length of string without trailing nul in bytes. */
uint16_t u16Length;
- /** UTF8 or Unicode16 string. Nul terminated. */
+ /** UTF-8 or UTF-16 string. Nul terminated. */
union
{
uint8_t utf8[1];
@@ -158,15 +161,18 @@ typedef struct _SHFLSTRING
} String;
} SHFLSTRING;
+/** Pointer to a shared folder string buffer. */
typedef SHFLSTRING *PSHFLSTRING;
+/** Pointer to a const shared folder string buffer. */
+typedef const SHFLSTRING *PCSHFLSTRING;
/** Calculate size of the string. */
-DECLINLINE(uint32_t) ShflStringSizeOfBuffer (PSHFLSTRING pString)
+DECLINLINE(uint32_t) ShflStringSizeOfBuffer (PCSHFLSTRING pString)
{
return pString? sizeof (SHFLSTRING) - sizeof (pString->String) + pString->u16Size: 0;
}
-DECLINLINE(uint32_t) ShflStringLength (PSHFLSTRING pString)
+DECLINLINE(uint32_t) ShflStringLength (PCSHFLSTRING pString)
{
return pString? pString->u16Length: 0;
}
@@ -190,6 +196,42 @@ DECLINLINE(PSHFLSTRING) ShflStringInitBuffer(void *pvBuffer, uint32_t u32Size)
return pString;
}
+/**
+ * Validates a HGCM string parameter.
+ *
+ * @returns true if valid, false if not.
+ *
+ * @param pString The string buffer pointer.
+ * @param cbBuf The buffer size from the parameter.
+ */
+DECLINLINE(bool) ShflStringIsValid(PCSHFLSTRING pString, uint32_t cbBuf)
+{
+ if (RT_UNLIKELY(cbBuf <= RT_UOFFSETOF(SHFLSTRING, String)))
+ return false;
+ if (RT_UNLIKELY((uint32_t)pString->u16Size + RT_UOFFSETOF(SHFLSTRING, String) > cbBuf))
+ return false;
+ if (RT_UNLIKELY(pString->u16Length >= pString->u16Size))
+ return false;
+ return true;
+}
+
+/**
+ * Validates an optional HGCM string parameter.
+ *
+ * @returns true if valid, false if not.
+ *
+ * @param pString The string buffer pointer. Can be NULL.
+ * @param cbBuf The buffer size from the parameter.
+ */
+DECLINLINE(bool) ShflStringIsValidOrNull(PCSHFLSTRING pString, uint32_t cbBuf)
+{
+ if (pString)
+ return ShflStringIsValid(pString, cbBuf);
+ if (RT_UNLIKELY(cbBuf > 0))
+ return false;
+ return true;
+}
+
/** @} */
diff --git a/include/iprt/log.h b/include/iprt/log.h
index e05546f62..4de32dbe4 100644
--- a/include/iprt/log.h
+++ b/include/iprt/log.h
@@ -922,6 +922,17 @@ RTDECL(void) RTLogPrintfEx(void *pvInstance, unsigned fFlags, unsigned iGroup, c
*/
#define LogRelFlow(a) LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_FLOW, LOG_GROUP, a)
+/** @def LogRelFlowFunc
+ * Release logging. Macro to log the execution flow inside C/C++ functions.
+ *
+ * Prepends the given log message with the function name followed by
+ * a semicolon and space.
+ *
+ * @param a Log message in format <tt>("string\n" [, args])</tt>.
+ */
+# define LogRelFlowFunc(a) \
+ do { LogRelFlow((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRelFlow(a); } while (0)
+
/** @def LogRelFunc
* Release logging. Prepends the given log message with the function name
* followed by a semicolon and space.
diff --git a/src/VBox/Additions/common/VBoxService/Makefile.kmk b/src/VBox/Additions/common/VBoxService/Makefile.kmk
index 98efa22b7..f65426258 100644
--- a/src/VBox/Additions/common/VBoxService/Makefile.kmk
+++ b/src/VBox/Additions/common/VBoxService/Makefile.kmk
@@ -75,6 +75,10 @@ VBoxServiceNT_TEMPLATE = VBOXGUESTR3EXE
VBoxServiceNT_EXTENDS = VBoxService
VBoxServiceNT_DEFS.win = _WIN32_WINNT=0x0400 _UNICODE UNICODE TARGET_NT4
+#VBoxServiceVMInfo.cpp uses VBOX_SVN_REV.
+VBoxServiceVMInfo.cpp_DEFS = VBOX_SVN_REV=$(VBOX_SVN_REV)
+VBoxServiceVMInfo.cpp_DEPS = $(VBOX_SVN_REV_KMK)
+
#
# The icon is configurable.
#
diff --git a/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp b/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp
index 1bb9d4aa6..c61cc971e 100644
--- a/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp
+++ b/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp
@@ -51,6 +51,7 @@
#include <iprt/system.h>
#include <iprt/time.h>
#include <iprt/assert.h>
+#include <VBox/version.h>
#include <VBox/VBoxGuest.h>
#include "VBoxServiceInternal.h"
#include "VBoxServiceUtils.h"
@@ -66,7 +67,7 @@ static RTSEMEVENTMULTI g_VMInfoEvent = NIL_RTSEMEVENTMULTI;
/** The guest property service client ID. */
static uint32_t g_VMInfoGuestPropSvcClientID = 0;
/** Number of logged in users in OS. */
-static uint32_t g_VMInfoLoggedInUsers = 0;
+static uint32_t g_VMInfoLoggedInUsers = UINT32_MAX;
#ifdef RT_OS_WINDOWS
/** Function prototypes for dynamic loading. */
fnWTSGetActiveConsoleSessionId g_pfnWTSGetActiveConsoleSessionId = NULL;
@@ -173,7 +174,12 @@ DECLCALLBACK(int) VBoxServiceVMInfoWorker(bool volatile *pfShutdown)
rc = VboxServiceWinGetAddsVersion(g_VMInfoGuestPropSvcClientID);
rc = VboxServiceWinGetComponentVersions(g_VMInfoGuestPropSvcClientID);
#else
- /** @todo */
+ /* VboxServiceGetAddsVersion !RT_OS_WINDOWS */
+ VboxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestAdd/Version", VBOX_VERSION_STRING);
+
+ char szRevision[32] = {0};
+ RTStrPrintf(szRevision, sizeof(szRevision), "%lu", VBOX_SVN_REV);
+ VboxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestAdd/Revision", szRevision);
#endif
/* Now enter the loop retrieving runtime data continuously. */
@@ -228,7 +234,7 @@ DECLCALLBACK(int) VBoxServiceVMInfoWorker(bool volatile *pfShutdown)
::LocalFree (pLuid);
::LsaFreeReturnBuffer(pSessions);
- #endif /* TARGET_NT4 */
+ #endif /* TARGET_NT4 */
#else
utmp* ut_user;
rc = utmpname(UTMP_FILE);
@@ -256,15 +262,15 @@ DECLCALLBACK(int) VBoxServiceVMInfoWorker(bool volatile *pfShutdown)
VboxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/LoggedInUsersList", (uiUserCount > 0) ? szUserList : NULL);
VboxServiceWritePropInt(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/LoggedInUsers", uiUserCount);
- if (g_VMInfoLoggedInUsers != uiUserCount || g_VMInfoLoggedInUsers == INT32_MAX)
+ if (g_VMInfoLoggedInUsers != uiUserCount || g_VMInfoLoggedInUsers == UINT32_MAX)
{
/* Update this property ONLY if there is a real change from no users to
* users or vice versa. The only exception is that the initialization
- * of a_pCtx->cUsers forces an update, but only once. This ensures
- * consistent property settings even if the VM aborted previously. */
+ * forces an update, but only once. This ensures consistent property
+ * settings even if the VM aborted previously. */
if (uiUserCount == 0)
VboxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/NoLoggedInUsers", "true");
- else if (g_VMInfoLoggedInUsers == 0 || uiUserCount == INT32_MAX)
+ else if (g_VMInfoLoggedInUsers == 0)
VboxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/NoLoggedInUsers", "false");
}
g_VMInfoLoggedInUsers = uiUserCount;
diff --git a/src/VBox/Additions/common/crOpenGL/stub.c b/src/VBox/Additions/common/crOpenGL/stub.c
index 717513f7e..dedf49387 100644
--- a/src/VBox/Additions/common/crOpenGL/stub.c
+++ b/src/VBox/Additions/common/crOpenGL/stub.c
@@ -349,9 +349,6 @@ LRESULT CALLBACK stubCBWindowMessageHookProc(int nCode, WPARAM wParam, LPARAM lP
if (nCode>=0 && pMsgInfo)
{
-#ifdef CHROMIUM_THREADSAFE
- crLockMutex(&stub.mutex);
-#endif
switch (pMsgInfo->message)
{
case WM_MOVING:
@@ -377,9 +374,6 @@ LRESULT CALLBACK stubCBWindowMessageHookProc(int nCode, WPARAM wParam, LPARAM lP
break;
}
}
-#ifdef CHROMIUM_THREADSAFE
- crUnlockMutex(&stub.mutex);
-#endif
}
return CallNextHookEx(stub.hMessageHook, nCode, wParam, lParam);
diff --git a/src/VBox/Additions/common/crOpenGL/wgl.c b/src/VBox/Additions/common/crOpenGL/wgl.c
index f5580861b..d0587f5b5 100644
--- a/src/VBox/Additions/common/crOpenGL/wgl.c
+++ b/src/VBox/Additions/common/crOpenGL/wgl.c
@@ -696,12 +696,15 @@ BOOL WINAPI wglGetPixelFormatAttribfvEXT_prox
return 1;
}
-const GLubyte * WINAPI wglGetExtensionsStringEXT_prox( HDC hdc )
-{
- static GLubyte *retval = "WGL_EXT_pixel_format WGL_ARB_pixel_format WGL_ARB_multisample";
-
- (void) hdc;
+static GLubyte *gsz_wgl_extensions = "WGL_EXT_pixel_format WGL_ARB_pixel_format WGL_ARB_multisample";
- return retval;
+const GLubyte * WINAPI wglGetExtensionsStringEXT_prox()
+{
+ return gsz_wgl_extensions;
}
+const GLubyte * WINAPI wglGetExtensionsStringARB_prox(HDC hdc)
+{
+ (void) hdc;
+ return gsz_wgl_extensions;
+}
diff --git a/src/VBox/Additions/common/crOpenGL/windows_getprocaddress.py b/src/VBox/Additions/common/crOpenGL/windows_getprocaddress.py
index b2617fd02..67d91119f 100644
--- a/src/VBox/Additions/common/crOpenGL/windows_getprocaddress.py
+++ b/src/VBox/Additions/common/crOpenGL/windows_getprocaddress.py
@@ -91,7 +91,8 @@ print """
{ NULL, NULL }
};
-extern const GLubyte * WINAPI wglGetExtensionsStringEXT_prox( HDC hdc );
+extern const GLubyte * WINAPI wglGetExtensionsStringEXT_prox(void);
+extern const GLubyte * WINAPI wglGetExtensionsStringARB_prox(HDC hdc);
extern BOOL WINAPI wglChoosePixelFormatEXT_prox(HDC hdc, const int *piAttributes, const FLOAT *pfAttributes, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
extern BOOL WINAPI wglGetPixelFormatAttribivEXT_prox(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *pValues);
extern BOOL WINAPI wglGetPixelFormatAttribfvEXT_prox(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, float *pValues);
@@ -100,6 +101,7 @@ CR_PROC CR_APIENTRY crGetProcAddress( const char *name )
{
int i;
wglGetExtensionsStringEXTFunc_t wglGetExtensionsStringEXT = wglGetExtensionsStringEXT_prox;
+ wglGetExtensionsStringARBFunc_t wglGetExtensionsStringARB = wglGetExtensionsStringARB_prox;
wglChoosePixelFormatEXTFunc_t wglChoosePixelFormatEXT = wglChoosePixelFormatEXT_prox;
wglGetPixelFormatAttribivEXTFunc_t wglGetPixelFormatAttribivEXT = wglGetPixelFormatAttribivEXT_prox;
wglGetPixelFormatAttribfvEXTFunc_t wglGetPixelFormatAttribfvEXT = wglGetPixelFormatAttribfvEXT_prox;
@@ -114,7 +116,7 @@ CR_PROC CR_APIENTRY crGetProcAddress( const char *name )
}
if (!crStrcmp( name, "wglGetExtensionsStringEXT" )) return (CR_PROC) wglGetExtensionsStringEXT;
- if (!crStrcmp( name, "wglGetExtensionsStringARB" )) return (CR_PROC) wglGetExtensionsStringEXT;
+ if (!crStrcmp( name, "wglGetExtensionsStringARB" )) return (CR_PROC) wglGetExtensionsStringARB;
if (!crStrcmp( name, "wglChoosePixelFormatEXT" )) return (CR_PROC) wglChoosePixelFormatEXT;
if (!crStrcmp( name, "wglGetPixelFormatAttribivEXT" )) return (CR_PROC) wglGetPixelFormatAttribivEXT;
diff --git a/src/VBox/Additions/linux/installer/autorun.sh b/src/VBox/Additions/linux/installer/autorun.sh
index bcd978c22..6d5aa48c4 100755
--- a/src/VBox/Additions/linux/installer/autorun.sh
+++ b/src/VBox/Additions/linux/installer/autorun.sh
@@ -89,29 +89,28 @@ idepend=quit
rdepend=quit
space=quit
mail=
-" >> /tmp/vbox.autoinstall
+" > /tmp/vbox.autoinstall
# check gnome-terminal, use it if it exists.
if test -f "/usr/bin/gnome-terminal"; then
# use su/pfexec
if test -z "$subin"; then
- /usr/bin/gnome-terminal --title "Installing VirtualBox Additions" --command "/bin/sh -c '$pfexecbin $pkgaddbin -G -d $installfile -n -a /tmp/vbox.autoinstall SUNWvboxguest; /bin/echo press ENTER to close this window; /bin/read'"
+ /usr/bin/gnome-terminal --title "Installing VirtualBox Additions" --command "/bin/sh -c '$pfexecbin $pkgaddbin -G -d $installfile -n -a /tmp/vbox.autoinstall SUNWvboxguest; /bin/echo press ENTER to close this window; /bin/read; /bin/rm -f /tmp/vbox.autoinstall'"
else
- /usr/bin/gnome-terminal --title "Installing VirtualBox Additions: Root password required." --command "/bin/sh -c '$subin - root -c \"$pkgaddbin -G -d $installfile -n -a /tmp/vbox.autoinstall SUNWvboxguest\"; /bin/echo press ENTER to close this window; /bin/read'"
+ /usr/bin/gnome-terminal --title "Installing VirtualBox Additions: Root password required." --command "/bin/sh -c '$subin - root -c \"$pkgaddbin -G -d $installfile -n -a /tmp/vbox.autoinstall SUNWvboxguest\"; /bin/echo press ENTER to close this window; /bin/read; /bin/rm -f /tmp/vbox.autoinstall'"
fi
elif test -f "/usr/X11/bin/xterm"; then
# use xterm
if test -z "$subin"; then
- /usr/X11/bin/xterm -title "Installing VirtualBox Additions" -e "$pfexecbin $pkgaddbin -G -d $installfile -n -a /tmp/vbox.autoinstall SUNWvboxguest; /bin/echo press ENTER to close this window; /bin/read"
+ /usr/X11/bin/xterm -title "Installing VirtualBox Additions" -e "$pfexecbin $pkgaddbin -G -d $installfile -n -a /tmp/vbox.autoinstall SUNWvboxguest; /bin/echo press ENTER to close this window; /bin/read; /bin/rm -f /tmp/vbox.autoinstall"
else
- /usr/X11/bin/xterm -title "Installing VirtualBox Additions: Root password required." -e "$subin - root -c \"$pkgaddbin -G -d $installfile -n -a /tmp/vbox.autoinstall SUNWvboxguest\"; /bin/echo press ENTER to close this window; /bin/read"
+ /usr/X11/bin/xterm -title "Installing VirtualBox Additions: Root password required." -e "$subin - root -c \"$pkgaddbin -G -d $installfile -n -a /tmp/vbox.autoinstall SUNWvboxguest\"; /bin/echo press ENTER to close this window; /bin/read; /bin/rm -f /tmp/vbox.autoinstall"
fi
else
echo "No suitable terminal not found. -- install additions using pkgadd -d."
+ rm -f /tmp/vbox.autoinstall
fi
- # remove temporary autoinstall file
- rm -f /tmp/vbox.autoinstall
exit 0
fi
diff --git a/src/VBox/Additions/x11/VBoxClient/clipboard.cpp b/src/VBox/Additions/x11/VBoxClient/clipboard.cpp
index 525bc1acb..51aba5f06 100644
--- a/src/VBox/Additions/x11/VBoxClient/clipboard.cpp
+++ b/src/VBox/Additions/x11/VBoxClient/clipboard.cpp
@@ -69,9 +69,9 @@ static VBOXCLIPBOARDCONTEXT g_ctx;
static int vboxClipboardSendData(uint32_t u32Format, void *pv, uint32_t cb)
{
int rc;
- LogFlowFunc(("u32Format=%d, pv=%p, cb=%d\n", u32Format, pv, cb));
+ LogRelFlowFunc(("u32Format=%d, pv=%p, cb=%d\n", u32Format, pv, cb));
rc = VbglR3ClipboardWriteData(g_ctx.client, u32Format, pv, cb);
- LogFlowFunc(("rc=%Rrc\n", rc));
+ LogRelFlowFunc(("rc=%Rrc\n", rc));
return rc;
}
@@ -94,7 +94,7 @@ int ClipRequestDataForX11(VBOXCLIPBOARDCONTEXT *pCtx, uint32_t u32Format,
void *pv = RTMemAlloc(cb);
*ppv = 0;
- LogFlowFunc(("u32Format=%u\n", u32Format));
+ LogRelFlowFunc(("u32Format=%u\n", u32Format));
if (RT_UNLIKELY(!pv))
rc = VERR_NO_MEMORY;
if (RT_SUCCESS(rc))
@@ -127,9 +127,9 @@ int ClipRequestDataForX11(VBOXCLIPBOARDCONTEXT *pCtx, uint32_t u32Format,
if (pv != NULL)
RTMemFree(pv);
}
- LogFlowFunc(("returning %Rrc\n", rc));
+ LogRelFlowFunc(("returning %Rrc\n", rc));
if (RT_SUCCESS(rc))
- LogFlow((" *pcb=%d\n", *pcb));
+ LogRelFlow((" *pcb=%d\n", *pcb));
return rc;
}
@@ -150,9 +150,9 @@ struct _CLIPREADCBREQ
void ClipReportX11Formats(VBOXCLIPBOARDCONTEXT *pCtx, uint32_t u32Formats)
{
int rc;
- LogFlowFunc(("u32Formats=%d\n", u32Formats));
+ LogRelFlowFunc(("u32Formats=%d\n", u32Formats));
rc = VbglR3ClipboardReportFormats(g_ctx.client, u32Formats);
- LogFlowFunc(("rc=%Rrc\n", rc));
+ LogRelFlowFunc(("rc=%Rrc\n", rc));
}
/** This is called by the backend to tell us that a request for data from
@@ -184,7 +184,7 @@ void ClipCompleteDataRequestFromX11(VBOXCLIPBOARDCONTEXT *pCtx, int rc,
int vboxClipboardConnect(void)
{
int rc = VINF_SUCCESS;
- LogFlowFunc(("\n"));
+ LogRelFlowFunc(("\n"));
/* Sanity */
AssertReturn(g_ctx.client == 0, VERR_WRONG_ORDER);
@@ -207,7 +207,7 @@ int vboxClipboardConnect(void)
if (RT_FAILURE(rc) && g_ctx.pBackend)
ClipDestructX11(g_ctx.pBackend);
- LogFlowFunc(("g_ctx.client=%u rc=%Rrc\n", g_ctx.client, rc));
+ LogRelFlowFunc(("g_ctx.client=%u rc=%Rrc\n", g_ctx.client, rc));
return rc;
}
@@ -217,7 +217,7 @@ int vboxClipboardConnect(void)
int vboxClipboardMain(void)
{
int rc;
- LogFlowFunc(("Starting guest clipboard service\n"));
+ LogRelFlowFunc(("Starting guest clipboard service\n"));
bool fExiting = false;
while (!fExiting)
@@ -235,7 +235,7 @@ int vboxClipboardMain(void)
* Save the information so that it is available for
* future requests from guest applications.
*/
- LogFlowFunc(("VBOX_SHARED_CLIPBOARD_HOST_MSG_FORMATS fFormats=%x\n", fFormats));
+ LogRelFlowFunc(("VBOX_SHARED_CLIPBOARD_HOST_MSG_FORMATS fFormats=%x\n", fFormats));
ClipAnnounceFormatToX11(g_ctx.pBackend, fFormats);
break;
}
@@ -243,7 +243,7 @@ int vboxClipboardMain(void)
case VBOX_SHARED_CLIPBOARD_HOST_MSG_READ_DATA:
{
/* The host needs data in the specified format. */
- LogFlowFunc(("VBOX_SHARED_CLIPBOARD_HOST_MSG_READ_DATA fFormats=%x\n", fFormats));
+ LogRelFlowFunc(("VBOX_SHARED_CLIPBOARD_HOST_MSG_READ_DATA fFormats=%x\n", fFormats));
CLIPREADCBREQ *pReq;
pReq = (CLIPREADCBREQ *)RTMemAllocZ(sizeof(*pReq));
if (!pReq)
@@ -263,7 +263,7 @@ int vboxClipboardMain(void)
case VBOX_SHARED_CLIPBOARD_HOST_MSG_QUIT:
{
/* The host is terminating. */
- LogFlowFunc(("VBOX_SHARED_CLIPBOARD_HOST_MSG_QUIT\n"));
+ LogRelFlowFunc(("VBOX_SHARED_CLIPBOARD_HOST_MSG_QUIT\n"));
if (RT_SUCCESS(ClipStopX11(g_ctx.pBackend)))
ClipDestructX11(g_ctx.pBackend);
fExiting = true;
@@ -271,13 +271,13 @@ int vboxClipboardMain(void)
}
default:
- Log(("Unsupported message from host!!!\n"));
+ LogRel2(("Unsupported message from host!!!\n"));
}
}
- LogFlow(("processed host event rc = %d\n", rc));
+ LogRelFlow(("processed host event rc = %d\n", rc));
}
- LogFlowFunc(("rc=%d\n", rc));
+ LogRelFlowFunc(("rc=%d\n", rc));
return rc;
}
@@ -294,7 +294,7 @@ public:
if (RT_SUCCESS(rc))
rc = vboxClipboardMain();
if (RT_FAILURE(rc))
- LogFunc(("guest clipboard service terminated annormally: return code %Rrc\n", rc));
+ LogRelFunc(("guest clipboard service terminated annormally: return code %Rrc\n", rc));
return rc;
}
virtual void cleanup()
diff --git a/src/VBox/Additions/x11/VBoxClient/main.cpp b/src/VBox/Additions/x11/VBoxClient/main.cpp
index 7fd968740..b4fa5d524 100644
--- a/src/VBox/Additions/x11/VBoxClient/main.cpp
+++ b/src/VBox/Additions/x11/VBoxClient/main.cpp
@@ -87,22 +87,8 @@ int vboxClientXLibErrorHandler(Display *pDisplay, XErrorEvent *pError)
{
char errorText[1024];
- if (pError->error_code == BadAtom)
- {
- /* This can be triggered in debug builds if a guest application passes a bad atom
- in its list of supported clipboard formats. As such it is harmless. */
- Log(("VBoxClient: ignoring BadAtom error and returning\n"));
- return 0;
- }
- if (pError->error_code == BadWindow)
- {
- /* This can be triggered if a guest application destroys a window before we notice. */
- Log(("VBoxClient: ignoring BadWindow error and returning\n"));
- return 0;
- }
XGetErrorText(pDisplay, pError->error_code, errorText, sizeof(errorText));
- LogRel(("VBoxClient: an X Window protocol error occurred: %s (error code %d). Request code: %d, minor code: %d, serial number: %d\n", errorText, pError->error_code, pError->request_code, pError->minor_code, pError->serial));
- VBoxClient::CleanUp();
+ LogRelFlow(("VBoxClient: an X Window protocol error occurred: %s (error code %d). Request code: %d, minor code: %d, serial number: %d\n", errorText, pError->error_code, pError->request_code, pError->minor_code, pError->serial));
return 0; /* We should never reach this. */
}
diff --git a/src/VBox/Additions/x11/VBoxClient/seamless-x11.cpp b/src/VBox/Additions/x11/VBoxClient/seamless-x11.cpp
index e88e477ce..94174f010 100644
--- a/src/VBox/Additions/x11/VBoxClient/seamless-x11.cpp
+++ b/src/VBox/Additions/x11/VBoxClient/seamless-x11.cpp
@@ -151,6 +151,7 @@ void VBoxGuestSeamlessX11::rebuildWindowTree(void)
LogFlowThisFunc(("called\n"));
freeWindowTree();
addClients(DefaultRootWindow(mDisplay.get()));
+ mChanged = true;
}
@@ -198,17 +199,23 @@ void VBoxGuestSeamlessX11::addClientWindow(const Window hWin)
}
if (fAddWin && (winAttrib.map_state == IsUnmapped))
fAddWin = false;
- if (fAddWin && (XFetchName(mDisplay, hClient, &pszWinName) != 0) && (pszWinName != NULL))
- XFree(pszWinName);
- else
- /* kwin sometimes creates temporary fullscreen windows with no name. */
+ XSizeHints dummyHints;
+ long dummyLong;
+ if (fAddWin && (!XGetWMNormalHints(mDisplay, hClient, &dummyHints,
+ &dummyLong)))
+ {
+ LogFlowFunc(("window %lu, client window %lu has no size hints\n",
+ hWin, hClient));
fAddWin = false;
+ }
if (fAddWin)
{
VBoxGuestX11Pointer<XRectangle> rects;
int cRects = 0, iOrdering;
bool hasShape = false;
+ LogFlowFunc(("adding window %lu, client window %lu\n", hWin,
+ hClient));
if (mSupportsShape)
{
XShapeSelectInput(mDisplay, hWin, ShapeNotifyMask);
@@ -287,7 +294,9 @@ void VBoxGuestSeamlessX11::nextEvent(void)
LogFlowThisFunc(("\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. */
- mObserver->notify();
+ if (mChanged)
+ mObserver->notify();
+ mChanged = false;
XNextEvent(mDisplay, &event);
switch (event.type)
{
@@ -325,13 +334,12 @@ void VBoxGuestSeamlessX11::doConfigureEvent(Window hWin)
{
XWindowAttributes winAttrib;
- if (XGetWindowAttributes(mDisplay, hWin, &winAttrib))
- {
- iter->second->mX = winAttrib.x;
- iter->second->mY = winAttrib.y;
- iter->second->mWidth = winAttrib.width;
- iter->second->mHeight = winAttrib.height;
- }
+ if (!XGetWindowAttributes(mDisplay, hWin, &winAttrib))
+ return;
+ iter->second->mX = winAttrib.x;
+ iter->second->mY = winAttrib.y;
+ iter->second->mWidth = winAttrib.width;
+ iter->second->mHeight = winAttrib.height;
if (iter->second->mhasShape)
{
VBoxGuestX11Pointer<XRectangle> rects;
@@ -339,9 +347,12 @@ void VBoxGuestSeamlessX11::doConfigureEvent(Window hWin)
rects = XShapeGetRectangles(mDisplay, hWin, ShapeBounding,
&cRects, &iOrdering);
+ if (rects.get() == NULL)
+ cRects = 0;
iter->second->mcRects = cRects;
iter->second->mapRects = rects;
}
+ mChanged = true;
}
LogFlowThisFunc(("returning\n"));
}
@@ -360,6 +371,7 @@ void VBoxGuestSeamlessX11::doMapEvent(Window hWin)
if (mGuestWindows.end() == iter)
{
addClientWindow(hWin);
+ mChanged = true;
}
LogFlowThisFunc(("returning\n"));
}
@@ -383,9 +395,12 @@ void VBoxGuestSeamlessX11::doShapeEvent(Window hWin)
rects = XShapeGetRectangles(mDisplay, hWin, ShapeBounding, &cRects,
&iOrdering);
+ if (rects.get() == NULL)
+ cRects = 0;
iter->second->mhasShape = true;
iter->second->mcRects = cRects;
iter->second->mapRects = rects;
+ mChanged = true;
}
LogFlowThisFunc(("returning\n"));
}
@@ -404,6 +419,7 @@ void VBoxGuestSeamlessX11::doUnmapEvent(Window hWin)
if (mGuestWindows.end() != iter)
{
mGuestWindows.removeWindow(iter);
+ mChanged = true;
}
LogFlowThisFunc(("returning\n"));
}
diff --git a/src/VBox/Additions/x11/VBoxClient/seamless-x11.h b/src/VBox/Additions/x11/VBoxClient/seamless-x11.h
index 5ed8dcae0..399adba4a 100644
--- a/src/VBox/Additions/x11/VBoxClient/seamless-x11.h
+++ b/src/VBox/Additions/x11/VBoxClient/seamless-x11.h
@@ -288,6 +288,8 @@ private:
bool mSupportsShape;
/** Is seamles mode currently enabled? */
bool mEnabled;
+ /** Have there been changes since the last time we sent a notification? */
+ bool mChanged;
// Private methods
diff --git a/src/VBox/Additions/x11/VBoxClient/testcase/tstSeamlessX11-auto.cpp b/src/VBox/Additions/x11/VBoxClient/testcase/tstSeamlessX11-auto.cpp
index c4de3bbff..b0ee8e6d7 100644
--- a/src/VBox/Additions/x11/VBoxClient/testcase/tstSeamlessX11-auto.cpp
+++ b/src/VBox/Additions/x11/VBoxClient/testcase/tstSeamlessX11-auto.cpp
@@ -219,6 +219,16 @@ Status XFetchName(Display *display, Window w, char **window_name_return)
return 0;
}
+extern "C" Status XGetWMNormalHints(Display *display, Window w,
+ XSizeHints *hints_return,
+ long *supplied_return);
+
+Status XGetWMNormalHints(Display *display, Window w,
+ XSizeHints *hints_return, long *supplied_return)
+{
+ return 1;
+}
+
static void smlsSetWindowAttributes(XWindowAttributes *pAttribs,
Window *pWindows, unsigned cAttribs,
const char **paNames)
diff --git a/src/VBox/Additions/x11/vboxmouse/vboxmouse_15.c b/src/VBox/Additions/x11/vboxmouse/vboxmouse_15.c
index 71aa71fdc..e3fc6d7d5 100644
--- a/src/VBox/Additions/x11/vboxmouse/vboxmouse_15.c
+++ b/src/VBox/Additions/x11/vboxmouse/vboxmouse_15.c
@@ -65,7 +65,8 @@ VBoxReadInput(InputInfoPtr pInfo)
/* The first test here is a workaround for an apparant bug in Xorg Server 1.5 */
if ( miPointerGetScreen(pInfo->dev) != NULL
- && RT_SUCCESS(VbglR3GetMouseStatus(&fFeatures, &cx, &cy)))
+ && RT_SUCCESS(VbglR3GetMouseStatus(&fFeatures, &cx, &cy))
+ && (fFeatures & VBOXGUEST_MOUSE_HOST_CAN_ABSOLUTE))
/* send absolute movement */
xf86PostMotionEvent(pInfo->dev, 1, 0, 2, cx, cy);
}
@@ -232,6 +233,8 @@ VBoxPlug(pointer module,
int *errmin)
{
xf86AddInputDriver(&VBOXMOUSE, module, 0);
+ xf86Msg(X_CONFIG, "Load address of symbol \"VBOXMOUSE\" is %p\n",
+ (void *)&VBOXMOUSE);
return module;
}
diff --git a/src/VBox/Additions/x11/vboxvideo/vboxutils.c b/src/VBox/Additions/x11/vboxvideo/vboxutils.c
index feab6da41..fd9bcc5b8 100644
--- a/src/VBox/Additions/x11/vboxvideo/vboxutils.c
+++ b/src/VBox/Additions/x11/vboxvideo/vboxutils.c
@@ -140,9 +140,13 @@ vbox_host_uses_hwcursor(ScrnInfoPtr pScrn)
* to draw the pointer. */
if (rc)
{
+ if (fFeatures & VBOXGUEST_MOUSE_GUEST_CAN_ABSOLUTE)
+ /* Assume this will never be unloaded as long as the X session is
+ * running. */
+ pVBox->mouseDriverLoaded = TRUE;
if ( (fFeatures & VBOXGUEST_MOUSE_HOST_CANNOT_HWPOINTER)
- || !(fFeatures & VBOXGUEST_MOUSE_GUEST_CAN_ABSOLUTE)
- ||!(fFeatures & VBOXGUEST_MOUSE_HOST_CAN_ABSOLUTE)
+ || !pVBox->mouseDriverLoaded
+ || !(fFeatures & VBOXGUEST_MOUSE_HOST_CAN_ABSOLUTE)
)
rc = FALSE;
}
diff --git a/src/VBox/Additions/x11/vboxvideo/vboxvideo.h b/src/VBox/Additions/x11/vboxvideo/vboxvideo.h
index 2a0dd1c59..8202316f4 100644
--- a/src/VBox/Additions/x11/vboxvideo/vboxvideo.h
+++ b/src/VBox/Additions/x11/vboxvideo/vboxvideo.h
@@ -213,6 +213,8 @@ typedef struct _VBOXRec
size_t pointerSize;
Bool useDevice;
Bool forceSWCursor;
+ /** Do we know that the guest mouse driver was loaded successfully? */
+ Bool mouseDriverLoaded;
/** Are we currently switched to a virtual terminal? If so, it is not
* safe to touch the hardware. */
Bool vtSwitch;
diff --git a/src/VBox/Additions/x11/vboxvideo/vboxvideo_15.c b/src/VBox/Additions/x11/vboxvideo/vboxvideo_15.c
index cd0b5c23a..b84c4688c 100644
--- a/src/VBox/Additions/x11/vboxvideo/vboxvideo_15.c
+++ b/src/VBox/Additions/x11/vboxvideo/vboxvideo_15.c
@@ -144,7 +144,7 @@ static PciChipsets VBOXPCIchipsets[] = {
* this DriverRec be an upper-case version of the driver name.
*/
-_X_EXPORT DriverRec VBOXDRV = {
+_X_EXPORT DriverRec VBOXVIDEO = {
VBOX_VERSION,
VBOX_DRIVER_NAME,
VBOXIdentify,
@@ -205,15 +205,9 @@ VBOXCrtcResize(ScrnInfoPtr scrn, int width, int height)
Bool rc = TRUE;
TRACE_LOG("width=%d, height=%d\n", width, height);
- /* We only support horizontal resolutions which are a multiple of 8. Round down if
- necessary. */
- if (width % 8 != 0)
- {
- xf86DrvMsg(scrn->scrnIndex, X_WARNING,
- "VirtualBox only supports virtual screen widths which are a multiple of 8. Rounding down from %d to %d\n",
- width, width - (width % 8));
- width = width - (width % 8);
- }
+ /* We only support horizontal resolutions which are a multiple of 8.
+ * Round up if necessary. */
+ width = (width + 7) & ~7;
if (width * height * bpp / 8 >= scrn->videoRam * 1024)
{
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
@@ -580,10 +574,12 @@ vboxSetup(pointer Module, pointer Options, int *ErrorMajor, int *ErrorMinor)
{
Initialised = TRUE;
#ifdef PCIACCESS
- xf86AddDriver(&VBOXDRV, Module, HaveDriverFuncs);
+ xf86AddDriver(&VBOXVIDEO, Module, HaveDriverFuncs);
#else
- xf86AddDriver(&VBOXDRV, Module, 0);
+ xf86AddDriver(&VBOXVIDEO, Module, 0);
#endif
+ xf86Msg(X_CONFIG, "Load address of symbol \"VBOXVIDEO\" is %p\n",
+ (void *)&VBOXVIDEO);
LoaderRefSymLists(fbSymbols,
shadowfbSymbols,
vbeSymbols,
@@ -853,30 +849,8 @@ VBOXPreInit(ScrnInfoPtr pScrn, int flags)
/* Set up our single virtual output. */
output = xf86OutputCreate(pScrn, &VBOXOutputFuncs, "VBOX1");
- /* Set a sane minimum mode size and the maximum allowed by the available VRAM */
- {
-#if 0
- unsigned maxSize, trySize = 512;
-
- do {
- maxSize = trySize;
- trySize += 128;
- } while (trySize * trySize * pScrn->bitsPerPixel / 8 < pScrn->videoRam * 1024);
-#else
- unsigned maxSize = 32000;
-#endif
-
- xf86CrtcSetSizeRange(pScrn, 64, 64, maxSize, maxSize);
-
- /* I don't know exactly what these are for (and they are only used in a couple
- of places in the X server code), but due to a bug in RandR 1.2 they place
- an upper limit on possible resolutions. To add to the fun, they get set
- automatically if we don't do it ourselves. */
- pScrn->display->virtualX = maxSize;
- pScrn->display->virtualY = maxSize;
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "The maximum supported resolution is currently %dx%d\n", maxSize, maxSize);
- }
+ /* Set a sane minimum and maximum mode size */
+ xf86CrtcSetSizeRange(pScrn, 64, 64, 32000, 32000);
/* We are not interested in the monitor section in the configuration file. */
xf86OutputUseScreenMonitor(output, FALSE);
@@ -990,6 +964,7 @@ VBOXScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
return (FALSE);
/* Needed before we initialise DRI. */
+ pScrn->virtualX = (pScrn->virtualX + 7) & ~7;
pScrn->displayWidth = pScrn->virtualX;
#ifdef VBOX_DRI
@@ -1261,7 +1236,8 @@ VBOXSetMode(ScrnInfoPtr pScrn, DisplayModePtr pMode)
Bool rc = TRUE;
int bpp = pScrn->depth == 24 ? 32 : 16;
- TRACE_LOG("HDisplay=%d, VDisplay=%d\n", pMode->HDisplay, pMode->VDisplay);
+ TRACE_LOG("HDisplay=%d, VDisplay=%d, displayWidth=%d\n",
+ pMode->HDisplay, pMode->VDisplay, pScrn->displayWidth);
pVBox = VBOXGetRec(pScrn);
/* Don't fiddle with the hardware if we are switched
* to a virtual terminal. */
diff --git a/src/VBox/Devices/Audio/solaudio.c b/src/VBox/Devices/Audio/solaudio.c
index 350fbab32..629b1a281 100644
--- a/src/VBox/Devices/Audio/solaudio.c
+++ b/src/VBox/Devices/Audio/solaudio.c
@@ -32,7 +32,6 @@
#include <sys/mixer.h>
#define LOG_GROUP LOG_GROUP_DEV_AUDIO
-#define LOG_ENABLED
#include <VBox/log.h>
#include <iprt/env.h>
diff --git a/src/VBox/Devices/Network/slirp/ip_icmp.c b/src/VBox/Devices/Network/slirp/ip_icmp.c
index 0db2842cc..12b5d8e16 100644
--- a/src/VBox/Devices/Network/slirp/ip_icmp.c
+++ b/src/VBox/Devices/Network/slirp/ip_icmp.c
@@ -530,7 +530,7 @@ void icmp_error(PNATState pData, struct mbuf *msrc, u_char type, u_char code, in
int new_m_size;
m->m_data += if_maxlinkhdr;
new_m_size = sizeof(struct ip) + ICMP_MINLEN + msrc->m_len + ICMP_MAXDATALEN;
- if (new_m_size>m->m_size)
+ if (new_m_size > m->m_size)
m_inc(m, new_m_size);
}
diff --git a/src/VBox/Devices/Network/slirp/libalias/alias_db.c b/src/VBox/Devices/Network/slirp/libalias/alias_db.c
index f5ba53598..38a251cf3 100644
--- a/src/VBox/Devices/Network/slirp/libalias/alias_db.c
+++ b/src/VBox/Devices/Network/slirp/libalias/alias_db.c
@@ -328,8 +328,14 @@ struct alias_link { /* Main data structure */
#define LINK_PARTIALLY_SPECIFIED 0x03 /* logical-or of first two bits */
#define LINK_UNFIREWALLED 0x08
+#ifndef VBOX
int timestamp; /* Time link was last accessed */
int expire_time; /* Expire time for link */
+#else
+ unsigned int timestamp; /* Time link was last accessed */
+ unsigned int expire_time; /* Expire time for link */
+#endif
+
#ifndef NO_USE_SOCKETS
# ifndef VBOX
/*
@@ -755,9 +761,13 @@ GetSocket(struct libalias *la, u_short port_net, int *sockfd, int link_type)
so->s = sock;
fd_nonblock(so->s);
#endif
+ memset(&sock_addr, 0, sizeof(struct sockaddr_in));
sock_addr.sin_family = AF_INET;
sock_addr.sin_addr.s_addr = htonl(INADDR_ANY);
- sock_addr.sin_port = port_net;
+ sock_addr.sin_port = htons(port_net);
+#ifdef RT_OS_DARWIN
+ sock_addr.sin_len = sizeof(struct sockaddr_in);
+#endif
err = bind(sock,
(struct sockaddr *)&sock_addr,
@@ -925,7 +935,12 @@ IncrementalCleanup(struct libalias *la)
LIBALIAS_LOCK_ASSERT(la);
LIST_FOREACH_SAFE(lnk, &la->linkTableOut[la->cleanupIndex++],
list_out, lnk_tmp) {
+#ifndef VBOX
if (la->timeStamp - lnk->timestamp > lnk->expire_time)
+#else
+ /* libalias counts time in seconds while slirp in millis */
+ if (la->timeStamp - lnk->timestamp > (1000 * lnk->expire_time))
+#endif
DeleteLink(lnk);
}
@@ -2289,7 +2304,11 @@ HouseKeeping(struct libalias *la)
#endif
/* Compute number of spokes (output table link chains) to cover */
+#ifndef VBOX
n = LINK_TABLE_OUT_SIZE * (la->timeStamp - la->lastCleanupTime);
+#else
+ n = LINK_TABLE_OUT_SIZE * ((la->timeStamp - la->lastCleanupTime)/1000);
+#endif
n /= ALIAS_CLEANUP_INTERVAL_SECS;
/* Handle different cases */
diff --git a/src/VBox/Devices/Network/slirp/libalias/alias_ftp.c b/src/VBox/Devices/Network/slirp/libalias/alias_ftp.c
index 948ddddd7..f70a95e90 100644
--- a/src/VBox/Devices/Network/slirp/libalias/alias_ftp.c
+++ b/src/VBox/Devices/Network/slirp/libalias/alias_ftp.c
@@ -149,21 +149,21 @@ static struct proto_handler handlers[2];
static int
mod_handler(module_t mod, int type, void *data)
#else
-static int ftp_alias_handler(int type);
+static int ftp_alias_handler(PNATState pData, int type);
int
-ftp_alias_load(void)
+ftp_alias_load(PNATState pData)
{
- return ftp_alias_handler(MOD_LOAD);
+ return ftp_alias_handler(pData, MOD_LOAD);
}
int
-ftp_alias_unload(void)
+ftp_alias_unload(PNATState pData)
{
- return ftp_alias_handler(MOD_UNLOAD);
+ return ftp_alias_handler(pData, MOD_UNLOAD);
}
static int
-ftp_alias_handler(int type)
+ftp_alias_handler(PNATState pData, int type)
#endif
{
int error;
@@ -179,11 +179,19 @@ ftp_alias_handler(int type)
switch (type) {
case MOD_LOAD:
error = 0;
+#ifdef VBOX
+ LibAliasAttachHandlers(pData, handlers);
+#else
LibAliasAttachHandlers(handlers);
+#endif
break;
case MOD_UNLOAD:
error = 0;
+#ifdef VBOX
+ LibAliasDetachHandlers(pData, handlers);
+#else
LibAliasDetachHandlers(handlers);
+#endif
break;
default:
error = EINVAL;
diff --git a/src/VBox/Devices/Network/slirp/libalias/alias_local.h b/src/VBox/Devices/Network/slirp/libalias/alias_local.h
index cc43da8c1..22477c865 100644
--- a/src/VBox/Devices/Network/slirp/libalias/alias_local.h
+++ b/src/VBox/Devices/Network/slirp/libalias/alias_local.h
@@ -106,12 +106,16 @@ struct libalias {
int cleanupIndex; /* Index to chain of link table */
/* being inspected for old links */
-
+#ifndef VBOX
int timeStamp; /* System time in seconds for */
/* current packet */
int lastCleanupTime; /* Last time
* IncrementalCleanup() */
+#else
+ unsigned int timeStamp; /* System time in seconds for */
+ unsigned int lastCleanupTime; /* Last time */
+#endif
/* was called */
int deleteAllLinks; /* If equal to zero, DeleteLink() */
diff --git a/src/VBox/Devices/Network/slirp/libalias/alias_mod.c b/src/VBox/Devices/Network/slirp/libalias/alias_mod.c
index 63a70afc4..8676a133c 100644
--- a/src/VBox/Devices/Network/slirp/libalias/alias_mod.c
+++ b/src/VBox/Devices/Network/slirp/libalias/alias_mod.c
@@ -51,14 +51,14 @@ __FBSDID("$FreeBSD: src/sys/netinet/libalias/alias_mod.c,v 1.3.8.1 2009/04/15 03
#include "alias_local.h"
#include "alias_mod.h"
#endif
+
+/* Protocol and userland module handlers chains. */
+LIST_HEAD(handler_chain, proto_handler) handler_chain = LIST_HEAD_INITIALIZER(foo);
#else /* !VBOX */
# include <slirp.h>
# include "alias_local.h"
# include "alias_mod.h"
#endif /* VBOX */
-
-/* Protocol and userland module handlers chains. */
-LIST_HEAD(handler_chain, proto_handler) handler_chain = LIST_HEAD_INITIALIZER(foo);
#ifdef _KERNEL
struct rwlock handler_rw;
#endif
@@ -137,7 +137,11 @@ handler_chain_destroy(void)
}
static int
+#ifdef VBOX
+_attach_handler(PNATState pData, struct proto_handler *p)
+#else
_attach_handler(struct proto_handler *p)
+#endif
{
struct proto_handler *b = NULL;
@@ -161,7 +165,11 @@ _attach_handler(struct proto_handler *p)
}
static int
+#ifdef VBOX
+_detach_handler(PNATState pData, struct proto_handler *p)
+#else
_detach_handler(struct proto_handler *p)
+#endif
{
struct proto_handler *b, *b_tmp;;
@@ -176,7 +184,11 @@ _detach_handler(struct proto_handler *p)
}
int
+#ifdef VBOX
+LibAliasAttachHandlers(PNATState pData, struct proto_handler *_p)
+#else
LibAliasAttachHandlers(struct proto_handler *_p)
+#endif
{
int i, error = -1;
@@ -184,7 +196,11 @@ LibAliasAttachHandlers(struct proto_handler *_p)
for (i=0; 1; i++) {
if (*((int *)&_p[i]) == EOH)
break;
+#ifdef VBOX
+ error = _attach_handler(pData, &_p[i]);
+#else
error = _attach_handler(&_p[i]);
+#endif
if (error != 0)
break;
}
@@ -193,7 +209,11 @@ LibAliasAttachHandlers(struct proto_handler *_p)
}
int
+#ifdef VBOX
+LibAliasDetachHandlers(PNATState pData, struct proto_handler *_p)
+#else
LibAliasDetachHandlers(struct proto_handler *_p)
+#endif
{
int i, error = -1;
@@ -201,7 +221,11 @@ LibAliasDetachHandlers(struct proto_handler *_p)
for (i=0; 1; i++) {
if (*((int *)&_p[i]) == EOH)
break;
+#ifdef VBOX
+ error = _detach_handler(pData, &_p[i]);
+#else
error = _detach_handler(&_p[i]);
+#endif
if (error != 0)
break;
}
@@ -210,12 +234,20 @@ LibAliasDetachHandlers(struct proto_handler *_p)
}
int
+#ifdef VBOX
+detach_handler(PNATState pData, struct proto_handler *_p)
+#else
detach_handler(struct proto_handler *_p)
+#endif
{
int error = -1;
LIBALIAS_WLOCK();
+#ifdef VBOX
+ error = _detach_handler(pData, _p);
+#else
error = _detach_handler(_p);
+#endif
LIBALIAS_WUNLOCK();
return (error);
}
@@ -224,6 +256,9 @@ int
find_handler(int8_t dir, int8_t proto, struct libalias *la, struct ip *pip,
struct alias_data *ad)
{
+#ifdef VBOX
+ PNATState pData = la->pData;
+#endif
struct proto_handler *p;
int error = ENOENT;
@@ -241,7 +276,11 @@ find_handler(int8_t dir, int8_t proto, struct libalias *la, struct ip *pip,
}
struct proto_handler *
+#ifdef VBOX
+first_handler(PNATState pData)
+#else
first_handler(void)
+#endif
{
return (LIST_FIRST(&handler_chain));
diff --git a/src/VBox/Devices/Network/slirp/libalias/alias_mod.h b/src/VBox/Devices/Network/slirp/libalias/alias_mod.h
index 6049273af..9ee40fa03 100644
--- a/src/VBox/Devices/Network/slirp/libalias/alias_mod.h
+++ b/src/VBox/Devices/Network/slirp/libalias/alias_mod.h
@@ -115,12 +115,19 @@ struct dll {
void handler_chain_init(void);
void handler_chain_destroy(void);
+#ifdef VBOX
+int LibAliasAttachHandlers(PNATState pData, struct proto_handler *);
+int LibAliasDetachHandlers(PNATState pData, struct proto_handler *);
+int detach_handler(PNATState pData, struct proto_handler *);
+struct proto_handler *first_handler(PNATState pData);
+#else
int LibAliasAttachHandlers(struct proto_handler *);
int LibAliasDetachHandlers(struct proto_handler *);
int detach_handler(struct proto_handler *);
-int find_handler(int8_t, int8_t, struct libalias *,
- struct ip *, struct alias_data *);
struct proto_handler *first_handler(void);
+#endif
+int find_handler(int8_t, int8_t, struct libalias *,
+ struct ip *, struct alias_data *);
/* Functions used with dll module. */
diff --git a/src/VBox/Devices/Network/slirp/libalias/alias_nbt.c b/src/VBox/Devices/Network/slirp/libalias/alias_nbt.c
index 7ee6d1064..73161b3e8 100644
--- a/src/VBox/Devices/Network/slirp/libalias/alias_nbt.c
+++ b/src/VBox/Devices/Network/slirp/libalias/alias_nbt.c
@@ -168,21 +168,21 @@ static struct proto_handler handlers[4];
static int
mod_handler(module_t mod, int type, void *data)
#else /*!VBOX*/
-static int nbt_alias_handler(int type);
+static int nbt_alias_handler(PNATState pData, int type);
int
-nbt_alias_load()
+nbt_alias_load(PNATState pData)
{
- return nbt_alias_handler(MOD_LOAD);
+ return nbt_alias_handler(pData, MOD_LOAD);
}
int
-nbt_alias_unload()
+nbt_alias_unload(PNATState pData)
{
- return nbt_alias_handler(MOD_UNLOAD);
+ return nbt_alias_handler(pData, MOD_UNLOAD);
}
static int
-nbt_alias_handler(int type)
+nbt_alias_handler(PNATState pData, int type)
#endif /*VBOX*/
{
int error;
@@ -214,11 +214,19 @@ nbt_alias_handler(int type)
switch (type) {
case MOD_LOAD:
error = 0;
+#ifdef VBOX
+ LibAliasAttachHandlers(pData, handlers);
+#else
LibAliasAttachHandlers(handlers);
+#endif
break;
case MOD_UNLOAD:
error = 0;
+#ifdef VBOX
+ LibAliasDetachHandlers(pData, handlers);
+#else
LibAliasDetachHandlers(handlers);
+#endif
break;
default:
error = EINVAL;
diff --git a/src/VBox/Devices/Network/slirp/slirp.c b/src/VBox/Devices/Network/slirp/slirp.c
index 3f3ba26b6..32f5405e6 100644
--- a/src/VBox/Devices/Network/slirp/slirp.c
+++ b/src/VBox/Devices/Network/slirp/slirp.c
@@ -556,8 +556,8 @@ int slirp_init(PNATState *ppData, uint32_t u32NetAddr, uint32_t u32Netmask,
flags = LibAliasSetMode(pData->proxy_alias, flags, ~0);
proxy_addr.s_addr = htonl(ntohl(special_addr.s_addr) | CTL_ALIAS);
LibAliasSetAddress(pData->proxy_alias, proxy_addr);
- ftp_alias_load();
- nbt_alias_load();
+ ftp_alias_load(pData);
+ nbt_alias_load(pData);
}
#endif
@@ -656,9 +656,8 @@ void slirp_term(PNATState pData)
slirp_link_down(pData);
slirp_release_dns_list(pData);
-#ifdef RT_OS_WINDOWS
- WSACleanup();
-#endif
+ ftp_alias_unload(pData);
+ nbt_alias_unload(pData);
#ifdef VBOX_WITH_SLIRP_ALIAS
while(!LIST_EMPTY(&instancehead)) {
struct libalias *la = LIST_FIRST(&instancehead);
@@ -666,6 +665,9 @@ void slirp_term(PNATState pData)
LibAliasUninit(la);
}
#endif
+#ifdef RT_OS_WINDOWS
+ WSACleanup();
+#endif
#ifdef LOG_ENABLED
Log(("\n"
"NAT statistics\n"
diff --git a/src/VBox/Devices/Network/slirp/slirp.h b/src/VBox/Devices/Network/slirp/slirp.h
index 377845db4..4ab2d44a5 100644
--- a/src/VBox/Devices/Network/slirp/slirp.h
+++ b/src/VBox/Devices/Network/slirp/slirp.h
@@ -367,17 +367,17 @@ AssertCompileSize(struct ethhdr, 14);
# define strncasecmp RTStrNICmp
+# ifdef DEBUG
# define LIBALIAS_DEBUG
-
# ifdef fprintf
-# undef fprintf
-# endif /*fprintf*/
+# undef fprintf
+# endif
# ifdef fflush
-# undef fflush
-# endif /*fflush*/
+# undef fflush
+# endif
# ifdef printf
-# undef printf
-# endif /*printf*/
+# undef printf
+# endif
#define fflush(x) do{}while(0)
# define fprintf vbox_slirp_fprintf
# define printf vbox_slirp_printf
@@ -403,13 +403,14 @@ static void vbox_slirp_fprintf(void *ignored, char *format, ...)
vbox_slirp_printV(format, args);
va_end(args);
}
+# endif /* DEBUG */
#endif /*VBOX_WITH_SLIRP_ALIAS && VBOX_SLIRP_ALIAS*/
#ifdef VBOX_WITH_SLIRP_ALIAS
-int ftp_alias_load(void);
-int ftp_alias_unload(void);
-int nbt_alias_load(void);
-int nbt_alias_unload(void);
+int ftp_alias_load(PNATState);
+int ftp_alias_unload(PNATState);
+int nbt_alias_load(PNATState);
+int nbt_alias_unload(PNATState);
#endif /*VBOX_WITH_SLIRP_ALIAS*/
#endif
diff --git a/src/VBox/Devices/Network/slirp/slirp_state.h b/src/VBox/Devices/Network/slirp/slirp_state.h
index 353881f53..7a420413f 100644
--- a/src/VBox/Devices/Network/slirp/slirp_state.h
+++ b/src/VBox/Devices/Network/slirp/slirp_state.h
@@ -228,6 +228,7 @@ typedef struct NATState
#ifdef VBOX_WITH_SLIRP_ALIAS
LIST_HEAD(RT_NOTHING, libalias) instancehead;
struct libalias *proxy_alias;
+ LIST_HEAD(handler_chain, proto_handler) handler_chain;
#endif
#define PROFILE_COUNTER(name, dsc) STAMPROFILE Stat ## name
@@ -314,6 +315,8 @@ typedef struct NATState
#define our_addr pData->our_addr
#ifndef VBOX_SLIRP_ALIAS
# define alias_addr pData->alias_addr
+#else
+# define handler_chain pData->handler_chain
#endif
#define special_addr pData->special_addr
#define dns_addr pData->dns_addr
diff --git a/src/VBox/Devices/PC/DevACPI.cpp b/src/VBox/Devices/PC/DevACPI.cpp
index 6b15b9ace..40b0cc5ac 100644
--- a/src/VBox/Devices/PC/DevACPI.cpp
+++ b/src/VBox/Devices/PC/DevACPI.cpp
@@ -704,6 +704,7 @@ static void acpiSetupFADT(ACPIState *s, RTGCPHYS32 addr_acpi1, RTGCPHYS32 addr_a
/* Now the ACPI 1.0 version. */
fadt.header.u32Length = ACPITBLFADT_VERSION1_SIZE;
fadt.u8IntModel = INT_MODEL_DUAL_PIC;
+ fadt.header.u8Checksum = 0; /* Must be zeroed before recalculating checksum! */
fadt.header.u8Checksum = acpiChecksum((uint8_t *)&fadt, ACPITBLFADT_VERSION1_SIZE);
acpiPhyscpy(s, addr_acpi1, &fadt, ACPITBLFADT_VERSION1_SIZE);
}
diff --git a/src/VBox/Devices/Storage/DevAHCI.cpp b/src/VBox/Devices/Storage/DevAHCI.cpp
index 071afbcdc..e9571b342 100644
--- a/src/VBox/Devices/Storage/DevAHCI.cpp
+++ b/src/VBox/Devices/Storage/DevAHCI.cpp
@@ -293,7 +293,7 @@ typedef struct AHCIPort
/** FIS Base Address upper bits. */
uint32_t regFBU;
/** Interrupt Status. */
- uint32_t regIS;
+ volatile uint32_t regIS;
/** Interrupt Enable. */
uint32_t regIE;
/** Command. */
@@ -1028,12 +1028,17 @@ static int PortSActive_r(PAHCI ahci, PAHCIPort pAhciPort, uint32_t iReg, uint32_
static int PortSError_w(PAHCI ahci, PAHCIPort pAhciPort, uint32_t iReg, uint32_t u32Value)
{
ahciLog(("%s: write u32Value=%#010x\n", __FUNCTION__, u32Value));
- pAhciPort->regSERR &= ~u32Value;
- if (u32Value & AHCI_PORT_SERR_X)
+
+ if ( (u32Value & AHCI_PORT_SERR_X)
+ && (pAhciPort->regSERR & AHCI_PORT_SERR_X))
{
+ ASMAtomicAndU32(&pAhciPort->regIS, ~AHCI_PORT_IS_PCS);
pAhciPort->regTFD |= ATA_STAT_ERR;
pAhciPort->regTFD &= ~(ATA_STAT_DRQ | ATA_STAT_BUSY);
}
+
+ pAhciPort->regSERR &= ~u32Value;
+
return VINF_SUCCESS;
}
@@ -1097,14 +1102,14 @@ static int PortSControl_w(PAHCI ahci, PAHCIPort pAhciPort, uint32_t iReg, uint32
}
/* We received a COMINIT from the device. Tell the guest. */
- pAhciPort->regIS |= AHCI_PORT_IS_PCS;
+ ASMAtomicOrU32(&pAhciPort->regIS, AHCI_PORT_IS_PCS);
pAhciPort->regSERR |= AHCI_PORT_SERR_X;
pAhciPort->regTFD |= ATA_STAT_BUSY;
if ((pAhciPort->regCMD & AHCI_PORT_CMD_FRE) && (!pAhciPort->fFirstD2HFisSend))
{
ahciPostFirstD2HFisIntoMemory(pAhciPort);
- pAhciPort->regIS |= AHCI_PORT_IS_DHRS;
+ ASMAtomicOrU32(&pAhciPort->regIS, AHCI_PORT_IS_DHRS);
if (pAhciPort->regIE & AHCI_PORT_IE_DHRE)
ahciHbaSetInterrupt(pAhciPort->CTX_SUFF(pAhci), pAhciPort->iLUN);
@@ -1246,7 +1251,7 @@ static int PortCmd_w(PAHCI ahci, PAHCIPort pAhciPort, uint32_t iReg, uint32_t u3
return VINF_IOM_HC_MMIO_WRITE;
#else
ahciPostFirstD2HFisIntoMemory(pAhciPort);
- pAhciPort->regIS |= AHCI_PORT_IS_DHRS;
+ ASMAtomicOrU32(&pAhciPort->regIS, AHCI_PORT_IS_DHRS);
if (pAhciPort->regIE & AHCI_PORT_IE_DHRE)
ahciHbaSetInterrupt(pAhciPort->CTX_SUFF(pAhci), pAhciPort->iLUN);
@@ -1363,10 +1368,8 @@ static int PortIntrSts_r(PAHCI ahci, PAHCIPort pAhciPort, uint32_t iReg, uint32_
static int PortIntrSts_w(PAHCI ahci, PAHCIPort pAhciPort, uint32_t iReg, uint32_t u32Value)
{
ahciLog(("%s: write u32Value=%#010x\n", __FUNCTION__, u32Value));
- pAhciPort->regIS &= ~u32Value;
+ ASMAtomicAndU32(&pAhciPort->regIS, ~(u32Value & AHCI_PORT_IS_READONLY));
- if (u32Value & AHCI_PORT_IS_PCS)
- pAhciPort->regSERR &= ~AHCI_PORT_SERR_X;
return VINF_SUCCESS;
}
@@ -1501,10 +1504,36 @@ static int HbaInterruptStatus_w(PAHCI ahci, uint32_t iReg, uint32_t u32Value)
* an interrupt and the guest has cleared all set interrupt
* notification bits.
*/
+ bool fClear = true;
ahci->regHbaIs &= ~(u32Value);
- if ((!ahci->u32PortsInterrupted) && (!ahci->regHbaIs))
+ fClear = (!ahci->u32PortsInterrupted) && (!ahci->regHbaIs);
+ if (fClear)
+ {
+ unsigned i = 0;
+
+ /* Check if the cleared ports have a interrupt status bit set. */
+ while (u32Value > 0)
+ {
+ if (u32Value & 0x01)
+ {
+ PAHCIPort pAhciPort = &ahci->ahciPort[i];
+
+ if (pAhciPort->regIE & pAhciPort->regIS)
+ {
+ Log(("%s: Interrupt status of port %u set -> Set interrupt again\n", __FUNCTION__, i));
+ ASMAtomicOrU32(&ahci->u32PortsInterrupted, 1 << i);
+ fClear = false;
+ break;
+ }
+ }
+ u32Value = u32Value >> 1;
+ i++;
+ }
+ }
+
+ if (fClear)
ahciHbaClearInterrupt(ahci);
else
{
@@ -1760,8 +1789,6 @@ static void ahciPortSwReset(PAHCIPort pAhciPort)
pAhciPort->regIS = 0;
pAhciPort->regIE = 0;
pAhciPort->regCMD = AHCI_PORT_CMD_CPD | /* Cold presence detection */
- AHCI_PORT_CMD_ISP | /* Interlock switch attached (for hotplug) */
- AHCI_PORT_CMD_HPCP | /* Hotplug capable port */
AHCI_PORT_CMD_SUD | /* Device has spun up. */
AHCI_PORT_CMD_POD; /* Port is powered on. */
pAhciPort->regTFD = (1 << 8) | ATA_STAT_SEEK | ATA_STAT_WRERR;
@@ -1790,8 +1817,6 @@ static void ahciPortSwReset(PAHCIPort pAhciPort)
{
pAhciPort->regCMD |= AHCI_PORT_CMD_CPS; /* Indicate that there is a device on that port */
/* We received a COMINIT signal */
- pAhciPort->regSERR |= AHCI_PORT_SERR_X;
- pAhciPort->regIS |= AHCI_PORT_IS_PCS;
pAhciPort->regTFD |= ATA_STAT_BUSY;
if (pAhciPort->fPoweredOn)
@@ -1863,7 +1888,7 @@ static void ahciHBAReset(PAHCI pThis)
AssertMsgFailed(("%s: Failed to stop timer!\n", __FUNCTION__));
}
- /** Reset every port */
+ /* Reset every port */
for (i = 0; i < pThis->cPortsImpl; i++)
{
PAHCIPort pAhciPort = &pThis->ahciPort[i];
@@ -1872,12 +1897,11 @@ static void ahciHBAReset(PAHCI pThis)
ahciPortSwReset(pAhciPort);
}
- /** Init Global registers */
+ /* Init Global registers */
pThis->regHbaCap = AHCI_HBA_CAP_ISS_SHIFT(AHCI_HBA_CAP_ISS_GEN2) |
AHCI_HBA_CAP_S64A | /* 64bit addressing supported */
AHCI_HBA_CAP_SAM | /* AHCI mode only */
AHCI_HBA_CAP_SNCQ | /* Support native command queuing */
- AHCI_HBA_CAP_SIS | /* Interlock switch for hotplug operations */
AHCI_HBA_CAP_SSS | /* Staggered spin up */
AHCI_HBA_CAP_CCCS | /* Support command completion coalescing */
AHCI_HBA_CAP_NCS_SET(AHCI_NR_COMMAND_SLOTS) | /* Number of command slots we support */
@@ -1895,7 +1919,7 @@ static void ahciHBAReset(PAHCI pThis)
pThis->f64BitAddr = false;
pThis->u32PortsInterrupted = 0;
pThis->f8ByteMMIO4BytesWrittenSuccessfully = false;
- /** Clear the HBA Reset bit */
+ /* Clear the HBA Reset bit */
pThis->regHbaCtrl &= ~AHCI_HBA_CTRL_HR;
}
@@ -3821,14 +3845,14 @@ static void ahciSendD2HFis(PAHCIPort pAhciPort, PAHCIPORTTASKSTATE pAhciPortTask
if (pAhciPortTaskState->uATARegStatus & ATA_STAT_ERR)
{
/* Error bit is set. */
- pAhciPort->regIS |= AHCI_PORT_IS_TFES;
+ ASMAtomicOrU32(&pAhciPort->regIS, AHCI_PORT_IS_TFES);
if (pAhciPort->regIE & AHCI_PORT_IE_TFEE)
fAssertIntr = true;
}
if (fInterrupt)
{
- pAhciPort->regIS |= AHCI_PORT_IS_DHRS;
+ ASMAtomicOrU32(&pAhciPort->regIS, AHCI_PORT_IS_DHRS);
/* Check if we should assert an interrupt */
if (pAhciPort->regIE & AHCI_PORT_IE_DHRE)
fAssertIntr = true;
@@ -3872,14 +3896,14 @@ static void ahciSendSDBFis(PAHCIPort pAhciPort, uint32_t uFinishedTasks, PAHCIPO
if (pAhciPortTaskState->uATARegStatus & ATA_STAT_ERR)
{
/* Error bit is set. */
- pAhciPort->regIS |= AHCI_PORT_IS_TFES;
+ ASMAtomicOrU32(&pAhciPort->regIS, AHCI_PORT_IS_TFES);
if (pAhciPort->regIE & AHCI_PORT_IE_TFEE)
fAssertIntr = true;
}
if (fInterrupt)
{
- pAhciPort->regIS |= AHCI_PORT_IS_SDBS;
+ ASMAtomicOrU32(&pAhciPort->regIS, AHCI_PORT_IS_SDBS);
/* Check if we should assert an interrupt */
if (pAhciPort->regIE & AHCI_PORT_IE_SDBE)
fAssertIntr = true;
@@ -4942,6 +4966,24 @@ static void ahciPortTaskGetCommandFis(PAHCIPort pAhciPort, PAHCIPORTTASKSTATE pA
#ifdef DEBUG
/* Print some infos about the FIS. */
ahciDumpFisInfo(pAhciPort, &pAhciPortTaskState->cmdFis[0]);
+
+ /* Print the PRDT */
+ RTGCPHYS GCPhysAddrPRDTLEntryStart = AHCI_RTGCPHYS_FROM_U32(pAhciPortTaskState->cmdHdr.u32CmdTblAddrUp, pAhciPortTaskState->cmdHdr.u32CmdTblAddr) + AHCI_CMDHDR_PRDT_OFFSET;
+
+ ahciLog(("PRDT address %RGp number of entries %u\n", GCPhysAddrPRDTLEntryStart, AHCI_CMDHDR_PRDTL_ENTRIES(pAhciPortTaskState->cmdHdr.u32DescInf)));
+
+ for (unsigned i = 0; i < AHCI_CMDHDR_PRDTL_ENTRIES(pAhciPortTaskState->cmdHdr.u32DescInf); i++)
+ {
+ SGLEntry SGEntry;
+
+ ahciLog(("Entry %u at address %RGp\n", i, GCPhysAddrPRDTLEntryStart));
+ PDMDevHlpPhysRead(pAhciPort->CTX_SUFF(pDevIns), GCPhysAddrPRDTLEntryStart, &SGEntry, sizeof(SGLEntry));
+
+ RTGCPHYS GCPhysDataAddr = AHCI_RTGCPHYS_FROM_U32(SGEntry.u32DBAUp, SGEntry.u32DBA);
+ ahciLog(("GCPhysAddr=%RGp Size=%u\n", GCPhysDataAddr, SGEntry.u32DescInf & SGLENTRY_DESCINF_DBC));
+
+ GCPhysAddrPRDTLEntryStart += sizeof(SGLEntry);
+ }
#endif
}
@@ -5179,11 +5221,12 @@ static DECLCALLBACK(int) ahciAsyncIOLoop(PPDMDEVINS pDevIns, PPDMTHREAD pThread)
} while (true);
}
- ahciLog(("%s: Processing requests\n", __FUNCTION__));
ASMAtomicXchgBool(&pAhciPort->fNotificationSend, false);
uint32_t cTasksToProcess = ASMAtomicXchgU32(&pAhciPort->uActTasksActive, 0);
+ ahciLog(("%s: Processing %u requests\n", __FUNCTION__, cTasksToProcess));
+
/* Process commands. */
while ( (cTasksToProcess > 0)
&& RT_LIKELY(!pAhciPort->fPortReset))
@@ -5350,6 +5393,8 @@ static DECLCALLBACK(int) ahciAsyncIOLoop(PPDMDEVINS pDevIns, PPDMTHREAD pThread)
pAhciPort->uActReadPos %= RT_ELEMENTS(pAhciPort->ahciIOTasks);
ahciLog(("%s: After uActReadPos=%u\n", __FUNCTION__, pAhciPort->uActReadPos));
cTasksToProcess--;
+ if (!cTasksToProcess)
+ cTasksToProcess = ASMAtomicXchgU32(&pAhciPort->uActTasksActive, 0);
}
if (uQueuedTasksFinished && RT_LIKELY(!pAhciPort->fPortReset))
@@ -5417,7 +5462,7 @@ static DECLCALLBACK(void) ahciMountNotify(PPDMIMOUNTNOTIFY pInterface)
* Initialize registers
*/
pAhciPort->regCMD |= AHCI_PORT_CMD_CPS;
- pAhciPort->regIS |= AHCI_PORT_IS_CPDS | AHCI_PORT_IS_PRCS;
+ ASMAtomicOrU32(&pAhciPort->regIS, AHCI_PORT_IS_CPDS | AHCI_PORT_IS_PRCS);
pAhciPort->regSERR |= AHCI_PORT_SERR_N;
if (pAhciPort->regIE & AHCI_PORT_IE_CPDE)
ahciHbaSetInterrupt(pAhciPort->CTX_SUFF(pAhci), pAhciPort->iLUN);
@@ -5439,7 +5484,7 @@ static DECLCALLBACK(void) ahciUnmountNotify(PPDMIMOUNTNOTIFY pInterface)
*/
pAhciPort->regSSTS = 0;
pAhciPort->regCMD &= ~AHCI_PORT_CMD_CPS;
- pAhciPort->regIS |= AHCI_PORT_IS_CPDS | AHCI_PORT_IS_PRCS;
+ ASMAtomicOrU32(&pAhciPort->regIS, AHCI_PORT_IS_CPDS | AHCI_PORT_IS_PRCS);
pAhciPort->regSERR |= AHCI_PORT_SERR_N;
if (pAhciPort->regIE & AHCI_PORT_IE_CPDE)
ahciHbaSetInterrupt(pAhciPort->CTX_SUFF(pAhci), pAhciPort->iLUN);
@@ -5852,7 +5897,7 @@ static DECLCALLBACK(int) ahciLoadExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSMHandle,
SSMR3GetU32(pSSMHandle, &pAhci->ahciPort[i].regFBU);
SSMR3GetGCPhys(pSSMHandle, (RTGCPHYS *)&pAhci->ahciPort[i].GCPhysAddrClb);
SSMR3GetGCPhys(pSSMHandle, (RTGCPHYS *)&pAhci->ahciPort[i].GCPhysAddrFb);
- SSMR3GetU32(pSSMHandle, &pAhci->ahciPort[i].regIS);
+ SSMR3GetU32(pSSMHandle, (uint32_t *)&pAhci->ahciPort[i].regIS);
SSMR3GetU32(pSSMHandle, &pAhci->ahciPort[i].regIE);
SSMR3GetU32(pSSMHandle, &pAhci->ahciPort[i].regCMD);
SSMR3GetU32(pSSMHandle, &pAhci->ahciPort[i].regTFD);
diff --git a/src/VBox/Devices/Storage/ISCSIHDDCore.cpp b/src/VBox/Devices/Storage/ISCSIHDDCore.cpp
index c8d769fa6..ff5302e46 100644
--- a/src/VBox/Devices/Storage/ISCSIHDDCore.cpp
+++ b/src/VBox/Devices/Storage/ISCSIHDDCore.cpp
@@ -107,8 +107,11 @@ typedef enum SCSIDEVTYPE
#define SCSI_DEVTYPE_MASK 0x1f
+/** Maximum PDU payload size we can handle in one piece. */
+#define ISCSI_PDU_SIZE_MAX _256K
+
/** Maximum PDU size we can handle in one piece. */
-#define ISCSI_RECV_PDU_BUFFER_SIZE (65536 + ISCSI_BHS_SIZE)
+#define ISCSI_RECV_PDU_BUFFER_SIZE (ISCSI_PDU_SIZE_MAX + ISCSI_BHS_SIZE)
/** Version of the iSCSI standard which this initiator driver can handle. */
@@ -887,6 +890,8 @@ restart:
transit = true;
break;
case 0x0100: /* login operational negotiation, step 0: set parameters. */
+ char szMaxPDU[16];
+ RTStrPrintf(szMaxPDU, sizeof(szMaxPDU), "%u", ISCSI_PDU_SIZE_MAX);
rc = iscsiTextAddKeyValue(bBuf, sizeof(bBuf), &cbBuf, "HeaderDigest", "None", 0);
if (RT_FAILURE(rc))
goto out;
@@ -902,13 +907,13 @@ restart:
rc = iscsiTextAddKeyValue(bBuf, sizeof(bBuf), &cbBuf, "ImmediateData", "Yes", 0);
if (RT_FAILURE(rc))
goto out;
- rc = iscsiTextAddKeyValue(bBuf, sizeof(bBuf), &cbBuf, "MaxRecvDataSegmentLength", "65536", 0);
+ rc = iscsiTextAddKeyValue(bBuf, sizeof(bBuf), &cbBuf, "MaxRecvDataSegmentLength", szMaxPDU, 0);
if (RT_FAILURE(rc))
goto out;
- rc = iscsiTextAddKeyValue(bBuf, sizeof(bBuf), &cbBuf, "MaxBurstLength", "262144", 0);
+ rc = iscsiTextAddKeyValue(bBuf, sizeof(bBuf), &cbBuf, "MaxBurstLength", szMaxPDU, 0);
if (RT_FAILURE(rc))
goto out;
- rc = iscsiTextAddKeyValue(bBuf, sizeof(bBuf), &cbBuf, "FirstBurstLength", "65536", 0);
+ rc = iscsiTextAddKeyValue(bBuf, sizeof(bBuf), &cbBuf, "FirstBurstLength", szMaxPDU, 0);
if (RT_FAILURE(rc))
goto out;
rc = iscsiTextAddKeyValue(bBuf, sizeof(bBuf), &cbBuf, "DefaultTime2Wait", "0", 0);
@@ -2757,6 +2762,11 @@ static int iscsiRead(void *pBackendData, uint64_t uOffset, void *pvBuf,
goto out;
}
+ /*
+ * Clip read size to a value which is supported by many targets.
+ */
+ cbToRead = RT_MIN(cbToRead, ISCSI_PDU_SIZE_MAX);
+
lba = uOffset / pImage->cbSector;
tls = (uint16_t)(cbToRead / pImage->cbSector);
SCSIREQ sr;
@@ -2786,7 +2796,12 @@ static int iscsiRead(void *pBackendData, uint64_t uOffset, void *pvBuf,
rc = iscsiCommand(pImage, &sr);
if (RT_FAILURE(rc))
+ {
AssertMsgFailed(("iscsiCommand(%s, %#llx) -> %Rrc\n", pImage->pszTargetName, uOffset, rc));
+ *pcbActuallyRead = 0;
+ }
+ else
+ *pcbActuallyRead = cbToRead;
out:
LogFlowFunc(("returns %Rrc\n", rc));
@@ -2821,6 +2836,11 @@ static int iscsiWrite(void *pBackendData, uint64_t uOffset, const void *pvBuf,
*pcbPreRead = 0;
*pcbPostRead = 0;
+ /*
+ * Clip write size to a value which is supported by many targets.
+ */
+ cbToWrite = RT_MIN(cbToWrite, ISCSI_PDU_SIZE_MAX);
+
lba = uOffset / pImage->cbSector;
tls = (uint16_t)(cbToWrite / pImage->cbSector);
SCSIREQ sr;
diff --git a/src/VBox/Frontends/VBoxManage/VBoxInternalManage.cpp b/src/VBox/Frontends/VBoxManage/VBoxInternalManage.cpp
index 3cf0c998a..96f66942f 100644
--- a/src/VBox/Frontends/VBoxManage/VBoxInternalManage.cpp
+++ b/src/VBox/Frontends/VBoxManage/VBoxInternalManage.cpp
@@ -869,6 +869,9 @@ static int CmdCreateRawVMDK(int argc, char **argv, ComPtr<IVirtualBox> aVirtualB
if (!pszPartitions && pszMBRFilename)
return errorSyntax(USAGE_CREATERAWVMDK, "The parameter -mbr is only valid when the parameter -partitions is also present");
+#ifdef RT_OS_DARWIN
+ fRelative = true;
+#endif /* RT_OS_DARWIN */
RTFILE RawFile;
int vrc = RTFileOpen(&RawFile, rawdisk.raw(), RTFILE_O_OPEN | RTFILE_O_READ | RTFILE_O_DENY_WRITE);
if (RT_FAILURE(vrc))
@@ -1118,6 +1121,20 @@ static int CmdCreateRawVMDK(int argc, char **argv, ComPtr<IVirtualBox> aVirtualB
RawDescriptor.pPartitions[i].pszRawDevice = pszRawName;
RawDescriptor.pPartitions[i].uPartitionStartOffset = 0;
RawDescriptor.pPartitions[i].uPartitionStart = partitions.aPartitions[i].uStart * 512;
+#elif defined(RT_OS_DARWIN)
+ /* Refer to the correct partition and use offset 0. */
+ char *pszRawName;
+ vrc = RTStrAPrintf(&pszRawName, "%ss%u", rawdisk.raw(),
+ partitions.aPartitions[i].uIndex);
+ if (RT_FAILURE(vrc))
+ {
+ RTPrintf("Error creating reference to individual partition %u, rc=%Rrc\n",
+ partitions.aPartitions[i].uIndex, vrc);
+ goto out;
+ }
+ RawDescriptor.pPartitions[i].pszRawDevice = pszRawName;
+ RawDescriptor.pPartitions[i].uPartitionStartOffset = 0;
+ RawDescriptor.pPartitions[i].uPartitionStart = partitions.aPartitions[i].uStart * 512;
#else
/** @todo not implemented yet for Windows host. Treat just
* like not specified (this code is actually never reached). */
diff --git a/src/VBox/Frontends/VBoxShell/vboxshell.py b/src/VBox/Frontends/VBoxShell/vboxshell.py
index 3b51e98a4..c478daa80 100755
--- a/src/VBox/Frontends/VBoxShell/vboxshell.py
+++ b/src/VBox/Frontends/VBoxShell/vboxshell.py
@@ -28,15 +28,17 @@
import os,sys
import traceback
+import shlex
+import time
-# Simple implementation of IConsoleCallback, one can use it as skeleton
+# Simple implementation of IConsoleCallback, one can use it as skeleton
# for custom implementations
class GuestMonitor:
def __init__(self, mach):
self.mach = mach
def onMousePointerShapeChange(self, visible, alpha, xHot, yHot, width, height, shape):
- print "%s: onMousePointerShapeChange: visible=%d" %(self.mach.name, visible)
+ print "%s: onMousePointerShapeChange: visible=%d" %(self.mach.name, visible)
def onMouseCapabilityChange(self, supportsAbsolute, needsHostCursor):
print "%s: onMouseCapabilityChange: needsHostCursor=%d" %(self.mach.name, needsHostCursor)
@@ -99,10 +101,10 @@ class VBoxMonitor:
def onMachineDataChange(self,id):
print "onMachineDataChange: %s" %(id)
-
+
def onExtraDataCanChange(self, id, key, value):
print "onExtraDataCanChange: %s %s=>%s" %(id, key, value)
- return True, ""
+ return True, ""
def onExtraDataChange(self, id, key, value):
print "onExtraDataChange: %s %s=>%s" %(id, key, value)
@@ -126,7 +128,7 @@ class VBoxMonitor:
print "onSnapshotChange: %s %s" %(mach, id)
def onGuestPropertyChange(self, id, name, newValue, flags):
- print "onGuestPropertyChange: %s: %s=%s" %(id, name, newValue)
+ print "onGuestPropertyChange: %s: %s=%s" %(id, name, newValue)
g_hasreadline = 1
try:
@@ -201,16 +203,17 @@ def autoCompletion(commands, ctx):
g_verbose = True
def split_no_quotes(s):
- return s.split()
+ return shlex.split(s)
def createVm(ctx,name,kind,base):
mgr = ctx['mgr']
vb = ctx['vb']
- mach = vb.createMachine(name, kind, base,
- "00000000-0000-0000-0000-000000000000")
+ mach = vb.createMachine(name, kind, base, "")
mach.saveSettings()
print "created machine with UUID",mach.id
vb.registerMachine(mach)
+ # update cache
+ getMachines(ctx, True)
def removeVm(ctx,mach):
mgr = ctx['mgr']
@@ -218,13 +221,18 @@ def removeVm(ctx,mach):
id = mach.id
print "removing machine ",mach.name,"with UUID",id
session = ctx['global'].openMachineSession(id)
- mach=session.machine
- for d in mach.getHardDiskAttachments():
- mach.detachHardDisk(d.controller, d.port, d.device)
+ try:
+ mach = session.Machine
+ for d in ctx['global'].getArray(mach, 'hardDiskAttachments'):
+ mach.detachHardDisk(d.controller, d.port, d.device)
+ except:
+ traceback.print_exc()
ctx['global'].closeMachineSession(session)
mach = vb.unregisterMachine(id)
if mach:
mach.deleteSettings()
+ # update cache
+ getMachines(ctx, True)
def startVm(ctx,mach,type):
mgr = ctx['mgr']
@@ -255,8 +263,13 @@ def startVm(ctx,mach,type):
if not ctx['remote']:
print session.QueryErrorObject(rc)
-def getMachines(ctx):
- return ctx['global'].getArray(ctx['vb'], 'machines')
+def getMachines(ctx, invalidate = False):
+ if ctx['vb'] is not None:
+ if ctx['_machlist'] is None or invalidate:
+ ctx['_machlist'] = ctx['global'].getArray(ctx['vb'], 'machines')
+ return ctx['_machlist']
+ else:
+ return []
def asState(var):
if var:
@@ -274,7 +287,6 @@ def guestExec(ctx, machine, console, cmds):
exec cmds
def monitorGuest(ctx, machine, console, dur):
- import time
cb = ctx['global'].createCallback('IConsoleCallback', GuestMonitor, machine)
console.registerCallback(cb)
if dur == -1:
@@ -286,12 +298,11 @@ def monitorGuest(ctx, machine, console, dur):
ctx['global'].waitForEvents(500)
# We need to catch all exceptions here, otherwise callback will never be unregistered
except:
- pass
+ pass
console.unregisterCallback(cb)
def monitorVbox(ctx, dur):
- import time
vbox = ctx['vb']
cb = ctx['global'].createCallback('IVirtualBoxCallback', VBoxMonitor, vbox)
vbox.registerCallback(cb)
@@ -328,14 +339,15 @@ def cmdExistingVm(ctx,mach,cmd,args):
if ctx['remote'] and cmd == 'stats2':
print 'Trying to use local only functionality, ignored'
return
- console=session.console
- ops={'pause' : lambda: console.pause(),
- 'resume': lambda: console.resume(),
- 'powerdown': lambda: console.powerDown(),
- 'powerbutton': lambda: console.powerButton(),
- 'stats': lambda: guestStats(ctx, mach),
- 'guest': lambda: guestExec(ctx, mach, console, args),
- 'monitorGuest': lambda: monitorGuest(ctx, mach, console, args)
+ console=session.console
+ ops={'pause': lambda: console.pause(),
+ 'resume': lambda: console.resume(),
+ 'powerdown': lambda: console.powerDown(),
+ 'powerbutton': lambda: console.powerButton(),
+ 'stats': lambda: guestStats(ctx, mach),
+ 'guest': lambda: guestExec(ctx, mach, console, args),
+ 'monitorGuest': lambda: monitorGuest(ctx, mach, console, args),
+ 'save': lambda: console.saveState().waitForCompletion(-1)
}
try:
ops[cmd]()
@@ -346,7 +358,6 @@ def cmdExistingVm(ctx,mach,cmd,args):
session.close()
-# can cache known machines, if needed
def machById(ctx,id):
mach = None
for m in getMachines(ctx):
@@ -387,12 +398,29 @@ def helpCmd(ctx, args):
return 0
def listCmd(ctx, args):
- for m in getMachines(ctx):
+ for m in getMachines(ctx, True):
print "Machine '%s' [%s], state=%s" %(m.name,m.id,m.sessionState)
return 0
+def getControllerType(type):
+ if type == 0:
+ return "Null"
+ elif type == 1:
+ return "LsiLogic"
+ elif type == 2:
+ return "BusLogic"
+ elif type == 3:
+ return "IntelAhci"
+ elif type == 4:
+ return "PIIX3"
+ elif type == 5:
+ return "PIIX4"
+ elif type == 6:
+ return "ICH6"
+ else:
+ return "Unknown"
+
def infoCmd(ctx,args):
- import time
if (len(args) < 2):
print "usage: info [vmname|uuid]"
return 0
@@ -401,24 +429,76 @@ def infoCmd(ctx,args):
return 0
os = ctx['vb'].getGuestOSType(mach.OSTypeId)
print " One can use setvar <mach> <var> <value> to change variable, using name in []."
- print " Name [name]: ",mach.name
- print " ID [n/a]: ",mach.id
- print " OS Type [n/a]: ",os.description
- print " CPUs [CPUCount]: %d" %(mach.CPUCount)
- print " RAM [memorySize]: %dM" %(mach.memorySize)
- print " VRAM [VRAMSize]: %dM" %(mach.VRAMSize)
- print " Monitors [monitorCount]: %d" %(mach.monitorCount)
- print " Clipboard mode [clipboardMode]: %d" %(mach.clipboardMode)
- print " Machine status [n/a]: " ,mach.sessionState
+ print " Name [name]: %s" %(mach.name)
+ print " ID [n/a]: %s" %(mach.id)
+ print " OS Type [n/a]: %s" %(os.description)
+ print
+ print " CPUs [CPUCount]: %d" %(mach.CPUCount)
+ print " RAM [memorySize]: %dM" %(mach.memorySize)
+ print " VRAM [VRAMSize]: %dM" %(mach.VRAMSize)
+ print " Monitors [monitorCount]: %d" %(mach.monitorCount)
+ print
+ print " Clipboard mode [clipboardMode]: %d" %(mach.clipboardMode)
+ print " Machine status [n/a]: %d" % (mach.sessionState)
+ print
bios = mach.BIOSSettings
print " ACPI [BIOSSettings.ACPIEnabled]: %s" %(asState(bios.ACPIEnabled))
print " APIC [BIOSSettings.IOAPICEnabled]: %s" %(asState(bios.IOAPICEnabled))
- print " PAE [PAEEnabled]: %s" %(asState(mach.PAEEnabled))
- print " Hardware virtualization [HWVirtExEnabled]: ",asState(mach.HWVirtExEnabled)
- print " VPID support [HWVirtExVPIDEnabled]: ",asState(mach.HWVirtExVPIDEnabled)
- print " Hardware 3d acceleration[accelerate3DEnabled]: ",asState(mach.accelerate3DEnabled)
- print " Nested paging [HWVirtExNestedPagingEnabled]: ",asState(mach.HWVirtExNestedPagingEnabled)
- print " Last changed [n/a]: ",time.asctime(time.localtime(mach.lastStateChange/1000))
+ print " PAE [PAEEnabled]: %s" %(asState(int(mach.PAEEnabled)))
+ print " Hardware virtualization [HWVirtExEnabled]: " + asState(mach.HWVirtExEnabled)
+ print " VPID support [HWVirtExVPIDEnabled]: " + asState(mach.HWVirtExVPIDEnabled)
+ print " Hardware 3d acceleration[accelerate3DEnabled]: " + asState(mach.accelerate3DEnabled)
+ print " Nested paging [HWVirtExNestedPagingEnabled]: " + asState(mach.HWVirtExNestedPagingEnabled)
+ print " Last changed [n/a]: " + time.asctime(time.localtime(long(mach.lastStateChange)/1000))
+ print " VRDP server [VRDPServer.enabled]: %s" %(asState(mach.VRDPServer.enabled))
+
+ controllers = ctx['global'].getArray(mach, 'storageControllers')
+ if controllers:
+ print
+ print " Controllers:"
+ for controller in controllers:
+ print " %s %s bus: %d" % (controller.name, getControllerType(controller.controllerType), controller.bus)
+
+ disks = ctx['global'].getArray(mach, 'hardDiskAttachments')
+ if disks:
+ print
+ print " Hard disk(s):"
+ for disk in disks:
+ print " Controller: %s port: %d device: %d:" % (disk.controller, disk.port, disk.device)
+ hd = disk.hardDisk
+ print " id: %s" %(hd.id)
+ print " location: %s" %(hd.location)
+ print " name: %s" %(hd.name)
+ print " format: %s" %(hd.format)
+ print
+
+ dvd = mach.DVDDrive
+ if dvd.getHostDrive():
+ hdvd = dvd.getHostDrive()
+ print " DVD:"
+ print " Host disk: %s" %(hdvd.name)
+ print
+
+ if dvd.getImage():
+ vdvd = dvd.getImage()
+ print " DVD:"
+ print " Image at: %s" %(vdvd.location)
+ print " Size: %s" %(vdvd.size)
+ print
+
+ floppy = mach.floppyDrive
+ if floppy.getHostDrive():
+ hfloppy = floppy.getHostDrive()
+ print " Floppy:"
+ print " Host disk: %s" %(hfloppy.name)
+ print
+
+ if floppy.getImage():
+ vfloppy = floppy.getImage()
+ print " Floppy:"
+ print " Image at: %s" %(vfloppy.location)
+ print " Size: %s" %(vfloppy.size)
+ print
return 0
@@ -486,6 +566,13 @@ def resumeCmd(ctx, args):
cmdExistingVm(ctx, mach, 'resume', '')
return 0
+def saveCmd(ctx, args):
+ mach = argsToMach(ctx,args)
+ if mach == None:
+ return 0
+ cmdExistingVm(ctx, mach, 'save', '')
+ return 0
+
def statsCmd(ctx, args):
mach = argsToMach(ctx,args)
if mach == None:
@@ -527,7 +614,11 @@ def setvarCmd(ctx, args):
def quitCmd(ctx, args):
return 1
-def aliasesCmd(ctx, args):
+def aliasCmd(ctx, args):
+ if (len(args) == 3):
+ aliases[args[1]] = args[2]
+ return 0
+
for (k,v) in aliases.items():
print "'%s' is an alias for '%s'" %(k,v)
return 0
@@ -537,6 +628,22 @@ def verboseCmd(ctx, args):
g_verbose = not g_verbose
return 0
+def getUSBStateString(state):
+ if state == 0:
+ return "NotSupported"
+ elif state == 1:
+ return "Unavailable"
+ elif state == 2:
+ return "Busy"
+ elif state == 3:
+ return "Available"
+ elif state == 4:
+ return "Held"
+ elif state == 5:
+ return "Captured"
+ else:
+ return "Unknown"
+
def hostCmd(ctx, args):
host = ctx['vb'].host
cnt = host.processorCount
@@ -544,13 +651,31 @@ def hostCmd(ctx, args):
for i in range(0,cnt):
print "Processor #%d speed: %dMHz" %(i,host.getProcessorSpeed(i))
+ print "RAM: %dM (free %dM)" %(host.memorySize, host.memoryAvailable)
+ print "OS: %s (%s)" %(host.operatingSystem, host.OSVersion)
+ if host.Acceleration3DAvailable:
+ print "3D acceleration available"
+ else:
+ print "3D acceleration NOT available"
+
+ print "Network interfaces:"
+ for ni in ctx['global'].getArray(host, 'networkInterfaces'):
+ print " %s (%s)" %(ni.name, ni.IPAddress)
+
+ print "DVD drives:"
+ for dd in ctx['global'].getArray(host, 'DVDDrives'):
+ print " %s - %s" %(dd.name, dd.description)
+
+ print "USB devices:"
+ for ud in ctx['global'].getArray(host, 'USBDevices'):
+ print " %s (vendorId=%d productId=%d serial=%s) %s" %(ud.product, ud.vendorId, ud.productId, ud.serialNumber, getUSBStateString(ud.state))
+
if ctx['perf']:
for metric in ctx['perf'].query(["*"], [host]):
print metric['name'], metric['values_as_string']
return 0
-
def monitorGuestCmd(ctx, args):
if (len(args) < 2):
print "usage: monitorGuest name (duration)"
@@ -585,8 +710,8 @@ def getAdapterType(ctx, type):
elif (type == ctx['global'].constants.NetworkAdapterType_Null):
return None
else:
- raise Exception("Unknown adapter type: "+type)
-
+ raise Exception("Unknown adapter type: "+type)
+
def portForwardCmd(ctx, args):
if (len(args) != 5):
@@ -608,14 +733,14 @@ def portForwardCmd(ctx, args):
profile_name = proto+"_"+str(hostPort)+"_"+str(guestPort)
config = "VBoxInternal/Devices/" + adapterType + "/"
config = config + str(adapter.slot) +"/LUN#0/Config/" + profile_name
-
+
mach.setExtraData(config + "/Protocol", proto)
mach.setExtraData(config + "/HostPort", str(hostPort))
mach.setExtraData(config + "/GuestPort", str(guestPort))
mach.saveSettings()
session.close()
-
+
return 0
@@ -660,13 +785,110 @@ def reloadExtCmd(ctx, args):
autoCompletion(commands, ctx)
return 0
+
+def runScriptCmd(ctx, args):
+ if (len(args) != 2):
+ print "usage: runScript <script>"
+ return 0
+ try:
+ lf = open(args[1], 'r')
+ except IOError,e:
+ print "cannot open:",args[1], ":",e
+ return 0
+
+ try:
+ for line in lf:
+ done = runCommand(ctx, line)
+ if done != 0: break
+ except Exception,e:
+ print "error:",e
+ if g_verbose:
+ traceback.print_exc()
+ lf.close()
+ return 0
+
+def sleepCmd(ctx, args):
+ if (len(args) != 2):
+ print "usage: sleep <secs>"
+ return 0
+
+ try:
+ time.sleep(float(args[1]))
+ except:
+ # to allow sleep interrupt
+ pass
+ return 0
+
+
+def shellCmd(ctx, args):
+ if (len(args) < 2):
+ print "usage: shell <commands>"
+ return 0
+ cmd = ' '.join(args[1:])
+ try:
+ os.system(cmd)
+ except KeyboardInterrupt:
+ # to allow shell command interruption
+ pass
+ return 0
+
+
+def connectCmd(ctx, args):
+ if (len(args) > 4):
+ print "usage: connect [url] [username] [passwd]"
+ return 0
+
+ if ctx['vb'] is not None:
+ print "Already connected, disconnect first..."
+ return 0
+
+ if (len(args) > 1):
+ url = args[1]
+ else:
+ url = None
+
+ if (len(args) > 2):
+ user = args[2]
+ else:
+ user = ""
+
+ if (len(args) > 3):
+ passwd = args[3]
+ else:
+ passwd = ""
+
+ vbox = ctx['global'].platform.connect(url, user, passwd)
+ ctx['vb'] = vbox
+ print "Running VirtualBox version %s" %(vbox.version)
+ ctx['perf'] = ctx['global'].getPerfCollector(ctx['vb'])
+ return 0
+
+def disconnectCmd(ctx, args):
+ if (len(args) != 1):
+ print "usage: disconnect"
+ return 0
+
+ if ctx['vb'] is None:
+ print "Not connected yet."
+ return 0
+
+ try:
+ ctx['global'].platform.disconnect()
+ except:
+ ctx['vb'] = None
+ raise
+
+ ctx['vb'] = None
+ return 0
+
aliases = {'s':'start',
'i':'info',
'l':'list',
'h':'help',
- 'a':'aliases',
+ 'a':'alias',
'q':'quit', 'exit':'quit',
- 'v':'verbose'}
+ 'v':'verbose',
+ '!':'shell'}
commands = {'help':['Prints help information', helpCmd, 0],
'start':['Start virtual machine by name or uuid', startCmd, 0],
@@ -674,29 +896,30 @@ commands = {'help':['Prints help information', helpCmd, 0],
'remove':['Remove virtual machine', removeCmd, 0],
'pause':['Pause virtual machine', pauseCmd, 0],
'resume':['Resume virtual machine', resumeCmd, 0],
+ 'save':['Save execution state of virtual machine', saveCmd, 0],
'stats':['Stats for virtual machine', statsCmd, 0],
'powerdown':['Power down virtual machine', powerdownCmd, 0],
'powerbutton':['Effectively press power button', powerbuttonCmd, 0],
'list':['Shows known virtual machines', listCmd, 0],
'info':['Shows info on machine', infoCmd, 0],
- 'aliases':['Shows aliases', aliasesCmd, 0],
+ 'alias':['Control aliases', aliasCmd, 0],
'verbose':['Toggle verbosity', verboseCmd, 0],
'setvar':['Set VMs variable: setvar Fedora BIOSSettings.ACPIEnabled True', setvarCmd, 0],
- 'eval':['Evaluate arbitrary Python construction: eval for m in getMachines(ctx): print m.name,"has",m.memorySize,"M"', evalCmd, 0],
+ 'eval':['Evaluate arbitrary Python construction: eval \'for m in getMachines(ctx): print m.name,"has",m.memorySize,"M"\'', evalCmd, 0],
'quit':['Exits', quitCmd, 0],
'host':['Show host information', hostCmd, 0],
- 'guest':['Execute command for guest: guest Win32 console.mouse.putMouseEvent(20, 20, 0, 0)', guestCmd, 0],
+ 'guest':['Execute command for guest: guest Win32 \'console.mouse.putMouseEvent(20, 20, 0, 0)\'', guestCmd, 0],
'monitorGuest':['Monitor what happens with the guest for some time: monitorGuest Win32 10', monitorGuestCmd, 0],
'monitorVbox':['Monitor what happens with Virtual Box for some time: monitorVbox 10', monitorVboxCmd, 0],
'portForward':['Setup permanent port forwarding for a VM, takes adapter number host port and guest port: portForward Win32 0 8080 80', portForwardCmd, 0],
'showLog':['Show log file of the VM, : showLog Win32', showLogCmd, 0],
'reloadExt':['Reload custom extensions: reloadExt', reloadExtCmd, 0],
+ 'runScript':['Run VBox script: runScript script.vbox', runScriptCmd, 0],
+ 'sleep':['Sleep for specified number of seconds: sleep 3.14159', sleepCmd, 0],
+ 'shell':['Execute external shell command: shell "ls /etc/rc*"', shellCmd, 0]
}
-def runCommand(ctx, cmd):
- if len(cmd) == 0: return 0
- args = split_no_quotes(cmd)
- if len(args) == 0: return 0
+def runCommandArgs(ctx, args):
c = args[0]
if aliases.get(c, None) != None:
c = aliases[c]
@@ -706,6 +929,13 @@ def runCommand(ctx, cmd):
return 0
return ci[1](ctx, args)
+
+def runCommand(ctx, cmd):
+ if len(cmd) == 0: return 0
+ args = split_no_quotes(cmd)
+ if len(args) == 0: return 0
+ return runCommandArgs(ctx, args)
+
#
# To write your own custom commands to vboxshell, create
# file ~/.VirtualBox/shellext.py with content like
@@ -721,7 +951,7 @@ def runCommand(ctx, cmd):
# This file also will be read automatically on startup.
#
def checkUserExtensions(ctx, cmds, folder):
- name = os.path.join(folder, "shellext.py")
+ name = os.path.join(str(folder), "shellext.py")
if not os.path.isfile(name):
return
d = {}
@@ -736,11 +966,21 @@ def checkUserExtensions(ctx, cmds, folder):
traceback.print_exc()
def interpret(ctx):
+ if ctx['remote']:
+ commands['connect'] = ["Connect to remote VBox instance", connectCmd, 0]
+ commands['disconnect'] = ["Disconnect from remote VBox instance", disconnectCmd, 0]
+
vbox = ctx['vb']
- print "Running VirtualBox version %s" %(vbox.version)
- ctx['perf'] = ctx['global'].getPerfCollector(ctx['vb'])
- checkUserExtensions(ctx, commands, vbox.homeFolder)
+ if vbox is not None:
+ print "Running VirtualBox version %s" %(vbox.version)
+ ctx['perf'] = ctx['global'].getPerfCollector(ctx['vb'])
+ home = vbox.homeFolder
+ else:
+ ctx['perf'] = None
+ home = os.path.join(os.path.expanduser("~"), ".VirtualBox")
+
+ checkUserExtensions(ctx, commands, home)
autoCompletion(commands, ctx)
@@ -774,22 +1014,41 @@ def interpret(ctx):
except:
pass
+def runCommandCb(ctx, cmd, args):
+ args.insert(0, cmd)
+ return runCommandArgs(ctx, args)
-from vboxapi import VirtualBoxManager
-
-def main(argv):
+def main(argv):
style = None
- if len(argv) > 1:
- if argv[1] == "-w":
+ autopath = False
+ argv.pop(0)
+ while len(argv) > 0:
+ if argv[0] == "-w":
style = "WEBSERVICE"
-
+ if argv[0] == "-a":
+ autopath = True
+ argv.pop(0)
+
+ if autopath:
+ cwd = os.getcwd()
+ vpp = os.environ.get("VBOX_PROGRAM_PATH")
+ if vpp is None and (os.path.isfile(os.path.join(cwd, "VirtualBox")) or os.path.isfile(os.path.join(cwd, "VirtualBox.exe"))) :
+ vpp = cwd
+ print "Autodetected VBOX_PROGRAM_PATH as",vpp
+ os.environ["VBOX_PROGRAM_PATH"] = cwd
+ sys.path.append(os.path.join(vpp, "sdk", "installer"))
+
+ from vboxapi import VirtualBoxManager
g_virtualBoxManager = VirtualBoxManager(style, None)
ctx = {'global':g_virtualBoxManager,
'mgr':g_virtualBoxManager.mgr,
- 'vb':g_virtualBoxManager.vbox,
+ 'vb':g_virtualBoxManager.vbox,
'ifaces':g_virtualBoxManager.constants,
- 'remote':g_virtualBoxManager.remote,
- 'type':g_virtualBoxManager.type
+ 'remote':g_virtualBoxManager.remote,
+ 'type':g_virtualBoxManager.type,
+ 'run': lambda cmd,args: runCommandCb(ctx, cmd, args),
+ 'machById': lambda id: machById(ctx,id),
+ '_machlist':None
}
interpret(ctx)
g_virtualBoxManager.deinit()
diff --git a/src/VBox/Frontends/VirtualBox/include/VBoxConsoleView.h b/src/VBox/Frontends/VirtualBox/include/VBoxConsoleView.h
index 3c0eac970..27c014464 100644
--- a/src/VBox/Frontends/VirtualBox/include/VBoxConsoleView.h
+++ b/src/VBox/Frontends/VirtualBox/include/VBoxConsoleView.h
@@ -88,6 +88,9 @@ public:
bool isMouseAbsolute() const { return mMouseAbsolute; }
+ bool shouldHideHostPointer() const
+ { return mMouseCaptured || (mMouseAbsolute && mHideHostPointer); }
+
void setAutoresizeGuest (bool on);
void onFullscreenChange (bool on);
diff --git a/src/VBox/Frontends/VirtualBox/include/VBoxConsoleWnd.h b/src/VBox/Frontends/VirtualBox/include/VBoxConsoleWnd.h
index f37786fd9..5ae74d40a 100644
--- a/src/VBox/Frontends/VirtualBox/include/VBoxConsoleWnd.h
+++ b/src/VBox/Frontends/VirtualBox/include/VBoxConsoleWnd.h
@@ -36,6 +36,7 @@
#include <QColor>
#include <QDialog>
#include <QMenu>
+#include <QPointer>
#ifdef VBOX_WITH_DEBUGGER_GUI
# include <VBox/dbggui.h>
@@ -376,7 +377,7 @@ private:
bool mIsGraphicsSupported : 1;
bool mIsWaitingModeResize : 1;
bool was_max : 1;
- QObjectList hidden_children;
+ QList < QPointer <QWidget> > mHiddenChildren;
int console_style;
QPalette mErasePalette;
diff --git a/src/VBox/Frontends/VirtualBox/include/VBoxDefs.h b/src/VBox/Frontends/VirtualBox/include/VBoxDefs.h
index 7c239abe4..75362b8b3 100644
--- a/src/VBox/Frontends/VirtualBox/include/VBoxDefs.h
+++ b/src/VBox/Frontends/VirtualBox/include/VBoxDefs.h
@@ -150,6 +150,7 @@ struct VBoxDefs
static const char* GUI_FirstRun;
static const char* GUI_SaveMountedAtRuntime;
static const char* GUI_ShowMiniToolBar;
+ static const char* GUI_MiniToolBarAlignment;
static const char* GUI_MiniToolBarAutoHide;
static const char* GUI_LastCloseAction;
static const char* GUI_SuppressMessages;
diff --git a/src/VBox/Frontends/VirtualBox/include/VBoxProblemReporter.h b/src/VBox/Frontends/VirtualBox/include/VBoxProblemReporter.h
index 48a836b80..a6f0fdc23 100644
--- a/src/VBox/Frontends/VirtualBox/include/VBoxProblemReporter.h
+++ b/src/VBox/Frontends/VirtualBox/include/VBoxProblemReporter.h
@@ -262,6 +262,7 @@ public:
VBoxDefs::MediaType aType, const QString &aLocation);
void cannotCloseMedium (QWidget *aParent, const VBoxMedium &aMedium,
const COMResult &aResult);
+ void cannotEjectDrive();
void cannotOpenSession (const CSession &session);
void cannotOpenSession (const CVirtualBox &vbox, const CMachine &machine,
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts
index 7085de3ef..3e2dca281 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts
@@ -5090,6 +5090,14 @@ p, li {white-space: pre-wrap; }
<translation>Falls aktiviert wird die Mini-Toolbar im Vollbildmodus und im nahtlosen Modus gezeigt.</translation>
</message>
<message>
+ <source>If checked, show the Mini ToolBar at the top of the screen, rather than in it&apos;s default position at the bottom of the screen.</source>
+ <translation>Falls aktiviert wird die Mini-Toolbar am oberen Bildschirmrand gezeigt</translation>
+ </message>
+ <message>
+ <source>Show At &amp;Top Of Screen</source>
+ <translation>Zeige am oberen Bildschirmrand</translation>
+ </message>
+ <message>
<source>Show In &amp;Fullscreen/Seamless</source>
<translation>Zeige im &amp;Fullscreen/Seamless-Modus</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 4b11c0656..72f184ed6 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts
@@ -1,6269 +1,4873 @@
-<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
-<context>
+<TS>
+ <context>
<name>@@@</name>
<message>
- <source>English</source>
- <comment>Native language name</comment>
- <translation>អង់គ្លេស</translation>
+ <source>English</source>
+ <comment>Native language name</comment>
+ <translation>ខ្មែរ</translation>
</message>
<message>
- <source>--</source>
- <comment>Native language country name (empty if this language is for all countries)</comment>
- <translation>--</translation>
+ <source>--</source>
+ <comment>Native language country name (empty if this language is for all countries)</comment>
+ <translation>--</translation>
</message>
<message>
- <source>English</source>
- <comment>Language name, in English</comment>
- <translation>អង់គ្លេស</translation>
+ <source>English</source>
+ <comment>Language name, in English</comment>
+ <translation>Khmer</translation>
</message>
<message>
- <source>--</source>
- <comment>Language country name, in English (empty if native country name is empty)</comment>
- <translation>--</translation>
+ <source>--</source>
+ <comment>Language country name, in English (empty if native country name is empty)</comment>
+ <translation>--</translation>
</message>
<message>
- <source>Sun Microsystems, Inc.</source>
- <comment>Comma-separated list of translators</comment>
- <translation>Khoem Sokhem</translation>
+ <source>Sun Microsystems, Inc.</source>
+ <comment>Comma-separated list of translators</comment>
+ <translation>Sun Microsystems, Inc.</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>AttachmentsModel</name>
<message>
- <source>Double-click to add a new attachment</source>
- <translation>ចុច​ទ្វេដង​ដើម្បី​បន្ថែម​​ឯកសារ​ភ្ជាប់​ថ្មី</translation>
+ <source>Double-click to add a new attachment</source>
+ <translation>ចុច​ទ្វេដង​ដើម្បី​បន្ថែម​​ឯកសារ​ភ្ជាប់​ថ្មី</translation>
</message>
<message>
- <source>Hard Disk</source>
- <translation>ថាសរឹង</translation>
+ <source>Hard Disk</source>
+ <translation>ថាសរឹង</translation>
</message>
<message>
- <source>Slot</source>
- <translation>រន្ធ</translation>
+ <source>Slot</source>
+ <translation>រន្ធ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QApplication</name>
<message>
- <source>Executable &lt;b&gt;%1&lt;/b&gt; requires Qt %2.x, found Qt %3.</source>
- <translation>អាច​ប្រតិបត្តិបាន &lt;b&gt;%1&lt;/b&gt; ទាមទារ Qt %2.x រក​ឃើញ Qt %3 ។</translation>
+ <source>Executable &lt;b>%1&lt;/b> requires Qt %2.x, found Qt %3.</source>
+ <translation>អាច​ប្រតិបត្តិបាន &lt;b>%1&lt;/b> ទាមទារ Qt %2.x រក​ឃើញ Qt %3 ។</translation>
</message>
<message>
- <source>Incompatible Qt Library Error</source>
- <translation>កំហុស​បណ្ណាល័យ Qt មិន​ឆបគ្នា</translation>
+ <source>Incompatible Qt Library Error</source>
+ <translation>កំហុស​បណ្ណាល័យ Qt មិន​ឆបគ្នា</translation>
</message>
<message>
- <source>VirtualBox - Error In %1</source>
- <translation>VirtualBox - កំហុស​នៅ​ក្នុង %1</translation>
+ <source>VirtualBox - Error In %1</source>
+ <translation>VirtualBox - កំហុស​នៅ​ក្នុង %1</translation>
</message>
<message>
- <source>&lt;html&gt;&lt;b&gt;%1 (rc=%2)&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;</source>
- <translation>&lt;html&gt;&lt;b&gt;%1 (rc=%2)&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;</translation>
+ <source>&lt;html>&lt;b>%1 (rc=%2)&lt;/b>&lt;br/>&lt;br/></source>
+ <translation>&lt;html>&lt;b>%1 (rc=%2)&lt;/b>&lt;br/>&lt;br/></translation>
</message>
<message>
- <source>It may help to reinstall VirtualBox.</source>
- <translation>វា​អាច​ជួយ​ឲ្យ​ដំឡើង VirtualBox ឡើង​វិញ ។</translation>
+ <source>It may help to reinstall VirtualBox.</source>
+ <translation>វា​អាច​ជួយ​ឲ្យ​ដំឡើង VirtualBox ឡើង​វិញ ។</translation>
</message>
- <message>
- <source>This error means that the kernel driver was either not able to allocate enough memory or that some mapping operation failed.&lt;br/&gt;&lt;br/&gt;There are known problems with Linux 2.6.29. If you are running such a kernel, please edit /usr/src/vboxdrv-*/Makefile and enable &lt;i&gt;VBOX_USE_INSERT_PAGE = 1&lt;/i&gt;. After that, re-compile the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Re-setup the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root. Users of Ubuntu, Fedora or Mandriva should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Make sure the kernel module has been loaded successfully.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>VirtualBox - Runtime Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&lt;b&gt;Cannot access the kernel driver!&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Kernel driver not accessible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Unknown %2 error during initialization of the Runtime</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The VirtualBox kernel modules do not fit to this version of VirtualBox. The installation of VirtualBox was apparently not successful. It may help to completely uninstall and re-install VirtualBox.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The VirtualBox kernel modules do not fit to this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;should fix that problem. Make sure that you don&apos;t mix the OSE version and the PUEL version of VirtualBox.</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>QIArrowSplitter</name>
- <message>
- <source>&amp;Back</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Next</source>
- <translation type="unfinished">បន្ទាប់</translation>
- </message>
-</context>
-<context>
- <name>QIFileDialog</name>
- <message>
- <source>Select a directory</source>
- <translation type="unfinished">ជ្រើស​ថត</translation>
- </message>
- <message>
- <source>Select a file</source>
- <translation type="unfinished">ជ្រើស​ឯកសារ</translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>QIHelpButton</name>
<message>
- <source>&amp;Help</source>
- <translation>ជំនួយ</translation>
+ <source>&amp;Help</source>
+ <translation>ជំនួយ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QIHotKeyEdit</name>
<message>
- <source>Left </source>
- <translation>ឆ្វេង </translation>
+ <source>Left </source>
+ <translation>ឆ្វេង </translation>
</message>
<message>
- <source>Right </source>
- <translation>ស្ដាំ </translation>
+ <source>Right </source>
+ <translation>ស្ដាំ </translation>
</message>
<message>
- <source>Left Shift</source>
- <translation>ប្ដូរ(Shift) ឆ្វេង</translation>
+ <source>Left Shift</source>
+ <translation>ប្ដូរ(Shift) ឆ្វេង</translation>
</message>
<message>
- <source>Right Shift</source>
- <translation>ប្ដូរ(Shift) ស្ដាំ</translation>
+ <source>Right Shift</source>
+ <translation>ប្ដូរ(Shift) ស្ដាំ</translation>
</message>
<message>
- <source>Left Ctrl</source>
- <translation>បញ្ជា (Ctrl) ឆ្វេង</translation>
+ <source>Left Ctrl</source>
+ <translation>បញ្ជា (Ctrl) ឆ្វេង</translation>
</message>
<message>
- <source>Right Ctrl</source>
- <translation>បញ្ជា(Ctrl) ស្ដាំ</translation>
+ <source>Right Ctrl</source>
+ <translation>បញ្ជា(Ctrl) ស្ដាំ</translation>
</message>
<message>
- <source>Left Alt</source>
- <translation>ជំនួស​(Alt) ឆ្វេង</translation>
+ <source>Left Alt</source>
+ <translation>ជំនួស​(Alt) ឆ្វេង</translation>
</message>
<message>
- <source>Right Alt</source>
- <translation>ជំនួស​(Alt) ស្ដាំ</translation>
+ <source>Right Alt</source>
+ <translation>ជំនួស​(Alt) ស្ដាំ</translation>
</message>
<message>
- <source>Left WinKey</source>
- <translation>គ្រាប់ចុច(Win) ឆ្វេង</translation>
+ <source>Left WinKey</source>
+ <translation>គ្រាប់ចុច(Win) ឆ្វេង</translation>
</message>
<message>
- <source>Right WinKey</source>
- <translation>គ្រាប់ចុច(Win) ស្ដាំ</translation>
+ <source>Right WinKey</source>
+ <translation>គ្រាប់ចុច(Win) ស្ដាំ</translation>
</message>
<message>
- <source>Menu key</source>
- <translation>គ្រាប់ចុច​ម៉ឺនុយ</translation>
+ <source>Menu key</source>
+ <translation>គ្រាប់ចុច​ម៉ឺនុយ</translation>
</message>
<message>
- <source>Alt Gr</source>
- <translation>Alt Gr</translation>
+ <source>Alt Gr</source>
+ <translation>Alt Gr</translation>
</message>
<message>
- <source>Caps Lock</source>
- <translation>ប្ដូរ​ជាប់(Caps Lock)</translation>
+ <source>Caps Lock</source>
+ <translation>ប្ដូរ​ជាប់(Caps Lock)</translation>
</message>
<message>
- <source>Scroll Lock</source>
- <translation>Scroll Lock</translation>
+ <source>Scroll Lock</source>
+ <translation>Scroll Lock</translation>
</message>
<message>
- <source>&lt;key_%1&gt;</source>
- <translation>&lt;key_%1&gt;</translation>
+ <source>&lt;key_%1></source>
+ <translation>&lt;key_%1></translation>
</message>
<message>
- <source>Pause</source>
- <translation>ផ្អាក</translation>
+ <source>Pause</source>
+ <translation>ផ្អាក</translation>
</message>
<message>
- <source>Print Screen</source>
- <translation>បោះពុម្ព​អេក្រង់</translation>
+ <source>Print Screen</source>
+ <translation>បោះពុម្ព​អេក្រង់</translation>
</message>
<message>
- <source>F1</source>
- <translation>F1</translation>
+ <source>F1</source>
+ <translation>F1</translation>
</message>
<message>
- <source>F2</source>
- <translation>F2</translation>
+ <source>F2</source>
+ <translation>F2</translation>
</message>
<message>
- <source>F3</source>
- <translation>F3</translation>
+ <source>F3</source>
+ <translation>F3</translation>
</message>
<message>
- <source>F4</source>
- <translation>F4</translation>
+ <source>F4</source>
+ <translation>F4</translation>
</message>
<message>
- <source>F5</source>
- <translation>F5</translation>
+ <source>F5</source>
+ <translation>F5</translation>
</message>
<message>
- <source>F6</source>
- <translation>F6</translation>
+ <source>F6</source>
+ <translation>F6</translation>
</message>
<message>
- <source>F7</source>
- <translation>F7</translation>
+ <source>F7</source>
+ <translation>F7</translation>
</message>
<message>
- <source>F8</source>
- <translation>F8</translation>
+ <source>F8</source>
+ <translation>F8</translation>
</message>
<message>
- <source>F9</source>
- <translation>F9</translation>
+ <source>F9</source>
+ <translation>F9</translation>
</message>
<message>
- <source>F10</source>
- <translation>F10</translation>
+ <source>F10</source>
+ <translation>F10</translation>
</message>
<message>
- <source>F11</source>
- <translation>F11</translation>
+ <source>F11</source>
+ <translation>F11</translation>
</message>
<message>
- <source>F12</source>
- <translation>F12</translation>
+ <source>F12</source>
+ <translation>F12</translation>
</message>
<message>
- <source>F13</source>
- <translation>F13</translation>
+ <source>F13</source>
+ <translation>F13</translation>
</message>
<message>
- <source>F14</source>
- <translation>F14</translation>
+ <source>F14</source>
+ <translation>F14</translation>
</message>
<message>
- <source>F15</source>
- <translation>F15</translation>
+ <source>F15</source>
+ <translation>F15</translation>
</message>
<message>
- <source>F16</source>
- <translation>F16</translation>
+ <source>F16</source>
+ <translation>F16</translation>
</message>
<message>
- <source>F17</source>
- <translation>F17</translation>
+ <source>F17</source>
+ <translation>F17</translation>
</message>
<message>
- <source>F18</source>
- <translation>F18</translation>
+ <source>F18</source>
+ <translation>F18</translation>
</message>
<message>
- <source>F19</source>
- <translation>F19</translation>
+ <source>F19</source>
+ <translation>F19</translation>
</message>
<message>
- <source>F20</source>
- <translation>F20</translation>
+ <source>F20</source>
+ <translation>F20</translation>
</message>
<message>
- <source>F21</source>
- <translation>F21</translation>
+ <source>F21</source>
+ <translation>F21</translation>
</message>
<message>
- <source>F22</source>
- <translation>F22</translation>
+ <source>F22</source>
+ <translation>F22</translation>
</message>
<message>
- <source>F23</source>
- <translation>F23</translation>
+ <source>F23</source>
+ <translation>F23</translation>
</message>
<message>
- <source>F24</source>
- <translation>F24</translation>
+ <source>F24</source>
+ <translation>F24</translation>
</message>
<message>
- <source>Num Lock</source>
- <translation>ប្ដូរជាប់ (Num Lock)</translation>
+ <source>Num Lock</source>
+ <translation>ប្ដូរជាប់ (Num Lock)</translation>
</message>
<message>
- <source>Forward</source>
- <translation>បញ្ជូន​បន្ត</translation>
+ <source>Forward</source>
+ <translation>បញ្ជូន​បន្ត</translation>
</message>
<message>
- <source>Back</source>
- <translation>ថយក្រោយ</translation>
+ <source>Back</source>
+ <translation>ថយក្រោយ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QIHttp</name>
<message>
- <source>Connection timed out</source>
- <translation>អស់ពេល​តភ្ជាប់</translation>
+ <source>Connection timed out</source>
+ <translation>អស់ពេល​តភ្ជាប់</translation>
</message>
<message>
- <source>Could not locate the file on the server (response: %1)</source>
- <translation>មិនអាច​បម្រុង​ទុក​ឯកសារ​នៅ​លើ​ម៉ាស៊ីន​បម្រើ (ឆ្លើយតប ៖ %1)</translation>
+ <source>Could not locate the file on the server (response: %1)</source>
+ <translation>មិនអាច​បម្រុង​ទុក​ឯកសារ​នៅ​លើ​ម៉ាស៊ីន​បម្រើ (ឆ្លើយតប ៖ %1)</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QILabelPrivate</name>
<message>
- <source>&amp;Copy</source>
- <translation>ចម្លង</translation>
+ <source>&amp;Copy</source>
+ <translation>ចម្លង</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QIMessageBox</name>
<message>
- <source>OK</source>
- <translation>យល់ព្រម</translation>
+ <source>OK</source>
+ <translation>យល់ព្រម</translation>
</message>
<message>
- <source>Yes</source>
- <translation>បាទ/ចាស</translation>
+ <source>Yes</source>
+ <translation>បាទ/ចាស</translation>
</message>
<message>
- <source>No</source>
- <translation>ទេ</translation>
+ <source>No</source>
+ <translation>ទេ</translation>
</message>
<message>
- <source>Cancel</source>
- <translation>បោះបង់</translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>Ignore</source>
- <translation>មិនអើពើ</translation>
+ <source>Ignore</source>
+ <translation>មិនអើពើ</translation>
</message>
- <message>
- <source>&amp;Details</source>
- <translation type="unfinished">សេចក្ដី​លម្អិត</translation>
- </message>
- <message>
- <source>&amp;Details (%1 of %2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>QIWidgetValidator</name>
<message>
- <source>not complete</source>
- <comment>value state</comment>
- <translation>មិន​បញ្ចប់</translation>
+ <source>not complete</source>
+ <comment>value state</comment>
+ <translation>មិន​បញ្ចប់</translation>
</message>
<message>
- <source>invalid</source>
- <comment>value state</comment>
- <translation>មិន​ត្រឹមត្រូវ</translation>
+ <source>invalid</source>
+ <comment>value state</comment>
+ <translation>មិន​ត្រឹមត្រូវ</translation>
</message>
<message>
- <source>&lt;qt&gt;Value of the &lt;b&gt;%1&lt;/b&gt; field on the &lt;b&gt;%2&lt;/b&gt; page is %3.&lt;/qt&gt;</source>
- <translation>&lt;qt&gt;តម្លៃ​របស់​វាល &lt;b&gt;%1&lt;/b&gt; នៅ​លើ​ទំព័រ &lt;b&gt;%2&lt;/b&gt; គឺ %3 ។&lt;/qt&gt;</translation>
+ <source>&lt;qt>Value of the &lt;b>%1&lt;/b> field on the &lt;b>%2&lt;/b> page is %3.&lt;/qt></source>
+ <translation>&lt;qt>តម្លៃ​របស់​វាល &lt;b>%1&lt;/b> នៅ​លើ​ទំព័រ &lt;b>%2&lt;/b> គឺ %3 ។&lt;/qt></translation>
</message>
<message>
- <source>&lt;qt&gt;One of the values on the &lt;b&gt;%1&lt;/b&gt; page is %2.&lt;/qt&gt;</source>
- <translation>&lt;qt&gt;តម្លៃ​មួយ​ក្នុង​ចំណោមតម្លៃ​នៅ​លើ​ទំព័រ &lt;b&gt;%1&lt;/b&gt; គឺ %2 ។&lt;/qt&gt;</translation>
+ <source>&lt;qt>One of the values on the &lt;b>%1&lt;/b> page is %2.&lt;/qt></source>
+ <translation>&lt;qt>តម្លៃ​មួយ​ក្នុង​ចំណោមតម្លៃ​នៅ​លើ​ទំព័រ &lt;b>%1&lt;/b> គឺ %2 ។&lt;/qt></translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxAboutDlg</name>
<message>
- <source>VirtualBox - About</source>
- <translation>VirtualBox - អំពី</translation>
+ <source>VirtualBox - About</source>
+ <translation>VirtualBox - អំពី</translation>
</message>
<message>
- <source>VirtualBox Graphical User Interface</source>
- <translation>ចំណុច​ប្រទាក់​អ្នក​ប្រើ​ក្រាហ្វិក​របស់ VirtualBox</translation>
+ <source>VirtualBox Graphical User Interface</source>
+ <translation>ចំណុច​ប្រទាក់​អ្នក​ប្រើ​ក្រាហ្វិក​របស់ VirtualBox</translation>
</message>
<message>
- <source>Version %1</source>
- <translation>កំណែ %1</translation>
+ <source>Version %1</source>
+ <translation>កំណែ %1</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxAddNIDialog</name>
<message>
- <source>Add Host Interface</source>
- <translation type="obsolete">បន្ថែម​ចំណុច​ប្រទាក់​ម៉ាស៊ីន</translation>
+ <source>Add Host Interface</source>
+ <translation>បន្ថែម​ចំណុច​ប្រទាក់​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Interface Name</source>
- <translation type="obsolete">ឈ្មោះ​ចំណុច​ប្រទាក់</translation>
+ <source>Interface Name</source>
+ <translation>ឈ្មោះ​ចំណុច​ប្រទាក់</translation>
</message>
<message>
- <source>Descriptive name of the new network interface</source>
- <translation type="obsolete">ឈ្មោះ​សេចក្ដី​ពិពណ៌នា​របស់​ចំណុច​ប្រទាក់​បណ្ដាញ​ថ្មី</translation>
+ <source>Descriptive name of the new network interface</source>
+ <translation>ឈ្មោះ​សេចក្ដី​ពិពណ៌នា​របស់​ចំណុច​ប្រទាក់​បណ្ដាញ​ថ្មី</translation>
</message>
<message>
- <source>&amp;OK</source>
- <translation type="obsolete">យល់ព្រម</translation>
+ <source>&amp;OK</source>
+ <translation>យល់ព្រម</translation>
</message>
<message>
- <source>Cancel</source>
- <translation type="obsolete">បោះពុម្ព</translation>
+ <source>Cancel</source>
+ <translation>បោះពុម្ព</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxAdditionsDownloader</name>
<message>
- <source>Cancel</source>
- <translation>បោះពុម្ព</translation>
- </message>
- <message>
- <source>Downloading the VirtualBox Guest Additions CD image from &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;...&lt;/nobr&gt;</source>
- <translation>កំពុង​ទាញយក​រូបភាព​ស៊ីឌី​បន្ថែម​​ភ្ញៀវ​របស់ VirtualBox ពី &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;...&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>Cancel the VirtualBox Guest Additions CD image download</source>
- <translation>បោះបង់ការ​ទាញយក​រូបភាព​ស៊ីឌី​បន្ថែម​ភ្ញៀវ VirtualBox</translation>
- </message>
- <message>
- <source>&lt;p&gt;Failed to save the downloaded file as &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;</source>
- <translation>&lt;p&gt;បាន​បរាជ័យ​ក្នុងកា​ររក្សាទុក​ឯកសារ​ដែលបាន​ទាញ​យក​ជា &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt; ។&lt;/nobr&gt;&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Select folder to save Guest Additions image to</source>
- <translation>ជ្រើស​ថត​ដើម្បី​រក្សាទុក​រូបភាព​បន្ថែម​ភ្ញៀវ​ទៅ​កាន់</translation>
- </message>
-</context>
-<context>
- <name>VBoxApplianceEditorWgt</name>
- <message>
- <source>Virtual System %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Name</source>
- <translation type="unfinished">ឈ្មោះ</translation>
- </message>
- <message>
- <source>Product</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Product-URL</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Vendor</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Vendor-URL</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Version</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Description</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>License</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Guest OS Type</source>
- <translation type="unfinished">ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ</translation>
- </message>
- <message>
- <source>CPU</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>RAM</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Hard Disk Controller IDE</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Hard Disk Controller SATA</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Hard Disk Controller SCSI</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>DVD</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Floppy</source>
- <translation type="unfinished">ថាសទន់</translation>
- </message>
- <message>
- <source>Network Adapter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>USB Controller</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Sound Card</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Virtual Disk Image</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Unknown Hardware Item</source>
- <translation type="unfinished"></translation>
+ <source>Cancel</source>
+ <translation>បោះពុម្ព</translation>
</message>
<message>
- <source>MB</source>
- <translation type="unfinished">មេកាបៃ</translation>
+ <source>Downloading the VirtualBox Guest Additions CD image from &lt;nobr>&lt;b>%1&lt;/b>...&lt;/nobr></source>
+ <translation>កំពុង​ទាញយក​រូបភាព​ស៊ីឌី​បន្ថែម​​ភ្ញៀវ​របស់ VirtualBox ពី &lt;nobr>&lt;b>%1&lt;/b>...&lt;/nobr></translation>
</message>
<message>
- <source>&lt;b&gt;Original Value:&lt;/b&gt; %1</source>
- <translation type="unfinished"></translation>
+ <source>Cancel the VirtualBox Guest Additions CD image download</source>
+ <translation>បោះបង់ការ​ទាញយក​រូបភាព​ស៊ីឌី​បន្ថែម​ភ្ញៀវ VirtualBox</translation>
</message>
<message>
- <source>Configuration</source>
- <translation type="unfinished"></translation>
+ <source>&lt;p>Failed to save the downloaded file as &lt;nobr>&lt;b>%1&lt;/b>.&lt;/nobr>&lt;/p></source>
+ <translation>&lt;p>បាន​បរាជ័យ​ក្នុងកា​ររក្សាទុក​ឯកសារ​ដែលបាន​ទាញ​យក​ជា &lt;nobr>&lt;b>%1&lt;/b> ។&lt;/nobr>&lt;/p></translation>
</message>
<message>
- <source>Warnings:</source>
- <translation type="unfinished"></translation>
+ <source>Select folder to save Guest Additions image to</source>
+ <translation>ជ្រើស​ថត​ដើម្បី​រក្សាទុក​រូបភាព​បន្ថែម​ភ្ញៀវ​ទៅ​កាន់</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxCloseVMDlg</name>
<message>
- <source>Close Virtual Machine</source>
- <translation>បិទ​ម៉ាស៊ីន​និម្មិត</translation>
+ <source>Close Virtual Machine</source>
+ <translation>បិទ​ម៉ាស៊ីន​និម្មិត</translation>
</message>
<message>
- <source>You want to:</source>
- <translation>អ្នក​ចង់ ៖</translation>
+ <source>You want to:</source>
+ <translation>អ្នក​ចង់ ៖</translation>
</message>
<message>
- <source>&amp;Save the machine state</source>
- <translation>រក្សាទុក​ស្ថានភាព​ម៉ាស៊ីន</translation>
+ <source>&amp;Save the machine state</source>
+ <translation>រក្សាទុក​ស្ថានភាព​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>&amp;Power off the machine</source>
- <translation>បិទ​ម៉ាស៊ីន</translation>
+ <source>&amp;Power off the machine</source>
+ <translation>បិទ​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>&amp;Revert to the current snapshot</source>
- <translation>ដាក់​បញ្ច្រាស​រូបថត​បច្ចុប្បន្ន</translation>
+ <source>&amp;Revert to the current snapshot</source>
+ <translation>ដាក់​បញ្ច្រាស​រូបថត​បច្ចុប្បន្ន</translation>
</message>
<message>
- <source>Revert the machine state to the state stored in the current snapshot</source>
- <translation>ដាក់​បញ្ច្រាស​ស្ថានភាព​ម៉ាស៊ីន​ទៅ​ស្ថានភាព​ដែលបានទុក​នៅ​ក្នុង​រូបថត​បច្ចុប្បន្ន</translation>
+ <source>Revert the machine state to the state stored in the current snapshot</source>
+ <translation>ដាក់​បញ្ច្រាស​ស្ថានភាព​ម៉ាស៊ីន​ទៅ​ស្ថានភាព​ដែលបានទុក​នៅ​ក្នុង​រូបថត​បច្ចុប្បន្ន</translation>
</message>
<message>
- <source>S&amp;end the shutdown signal</source>
- <translation>ផ្ញើ​សញ្ញា​បិទ</translation>
+ <source>S&amp;end the shutdown signal</source>
+ <translation>ផ្ញើ​សញ្ញា​បិទ</translation>
</message>
<message>
- <source>&lt;p&gt;When checked, the machine state will be restored from the state stored in the current snapshot right after it is turned off. This is useful if you are sure that you want to discard the results of your last sessions and go back to the current snapshot.&lt;/p&gt;</source>
- <translation>&lt;p&gt;នៅពេល​គូស​ធីក ស្ថានភាព​ម៉ាស៊ីន​នឹង​ត្រូវ​បាន​ស្ដារ​ពី​ស្ថានភាព​ដែល​បាន​ទុក​នៅ​ក្នុង​រូបថត​បច្ចុប្បន្ន​ខាង​ស្ដាំ​បន្ទាប់​ពី​​បិទ ។ វា​មាន​ប្រយោជន៍​ប្រសិន​បើ​​អ្នក​ប្រាកដ​ថា អ្នក​ចង់​បោះបង់​លទ្ធផល​នៃ​សម័យ​ចុងក្រោយ​របស់​អ្នក ហើយ​ត្រឡប់​ទៅ​រូបថត​បច្ចុប្បន្ន ។&lt;/p&gt;</translation>
+ <source>&lt;p>When checked, the machine state will be restored from the state stored in the current snapshot right after it is turned off. This is useful if you are sure that you want to discard the results of your last sessions and go back to the current snapshot.&lt;/p></source>
+ <translation>&lt;p>នៅពេល​គូស​ធីក ស្ថានភាព​ម៉ាស៊ីន​នឹង​ត្រូវ​បាន​ស្ដារ​ពី​ស្ថានភាព​ដែល​បាន​ទុក​នៅ​ក្នុង​រូបថត​បច្ចុប្បន្ន​ខាង​ស្ដាំ​បន្ទាប់​ពី​​បិទ ។ វា​មាន​ប្រយោជន៍​ប្រសិន​បើ​​អ្នក​ប្រាកដ​ថា អ្នក​ចង់​បោះបង់​លទ្ធផល​នៃ​សម័យ​ចុងក្រោយ​របស់​អ្នក ហើយ​ត្រឡប់​ទៅ​រូបថត​បច្ចុប្បន្ន ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Saves the current execution state of the virtual machine to the physical hard disk of the host PC.&lt;/p&gt;&lt;p&gt;Next time this machine is started, it will be restored from the saved state and continue execution from the same place you saved it at, which will let you continue your work immediately.&lt;/p&gt;&lt;p&gt;Note that saving the machine state may take a long time, depending on the guest operating system type and the amount of memory you assigned to the virtual machine.&lt;/p&gt;</source>
- <translation>&lt;p&gt;រក្សាទុក​ស្ថានភាព​ប្រតិបត្តិ​បច្ចុប្បន្ន​របស់​ម៉ាស៊ីន​និម្មិត ទៅ​ថាសរឹង​ហ្វីស៊ីខល​របស់​ម៉ាស៊ីន ។&lt;/p&gt;&lt;p&gt;ពេល​​ចាប់ផ្ដើម​ម៉ាស៊ីន​នេះ​លើកក្រោយ វា​នឹង​ត្រូ​វបាន​ស្ដារ​ពី​ស្ថានភាព​ដែល​បាន​រក្សាទុក និង​បន្ត​ប្រតិបត្តិការ​ពី​កន្លែង​ដដែល​ដែល​អ្នក​បាន​រក្សាទុក​វា ដែល​នឹង​អនុញ្ញាត​ឲ្យ​អ្នក​បន្ត​ការងារ​របស់​អ្នក​បាន​ភ្លាមៗ ។&lt;/p&gt;&lt;p&gt;ចំណាំ​ថា ការ​រក្សាទុក​ស្ថានភាព​របស់​ម៉ាស៊ីន​អាច​ចំណាយ​ពេល​យូ ដោយអាស្រ័យ​លើ​ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ និង​ទំហំសតិ​ដែល​អ្នក​បានផ្ដល់​ឲ្យ​ម៉ាស៊ីន​និម្មិត ។&lt;/p&gt;</translation>
+ <source>&lt;p>Saves the current execution state of the virtual machine to the physical hard disk of the host PC.&lt;/p>&lt;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.&lt;/p>&lt;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.&lt;/p></source>
+ <translation>&lt;p>រក្សាទុក​ស្ថានភាព​ប្រតិបត្តិ​បច្ចុប្បន្ន​របស់​ម៉ាស៊ីន​និម្មិត ទៅ​ថាសរឹង​ហ្វីស៊ីខល​របស់​ម៉ាស៊ីន ។&lt;/p>&lt;p>ពេល​​ចាប់ផ្ដើម​ម៉ាស៊ីន​នេះ​លើកក្រោយ វា​នឹង​ត្រូ​វបាន​ស្ដារ​ពី​ស្ថានភាព​ដែល​បាន​រក្សាទុក និង​បន្ត​ប្រតិបត្តិការ​ពី​កន្លែង​ដដែល​ដែល​អ្នក​បាន​រក្សាទុក​វា ដែល​នឹង​អនុញ្ញាត​ឲ្យ​អ្នក​បន្ត​ការងារ​របស់​អ្នក​បាន​ភ្លាមៗ ។&lt;/p>&lt;p>ចំណាំ​ថា ការ​រក្សាទុក​ស្ថានភាព​របស់​ម៉ាស៊ីន​អាច​ចំណាយ​ពេល​យូ ដោយអាស្រ័យ​លើ​ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ និង​ទំហំសតិ​ដែល​អ្នក​បានផ្ដល់​ឲ្យ​ម៉ាស៊ីន​និម្មិត ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Sends the ACPI Power Button press event to the virtual machine.&lt;/p&gt;&lt;p&gt;Normally, the guest operating system running inside the virtual machine will detect this event and perform a clean shutdown procedure. This is a recommended way to turn off the virtual machine because all applications running inside it will get a chance to save their data and state.&lt;/p&gt;&lt;p&gt;If the machine doesn&apos;t respond to this action then the guest operating system may be misconfigured or doesn&apos;t understand ACPI Power Button events at all. In this case you should select the &lt;b&gt;Power off the machine&lt;/b&gt; action to stop virtual machine execution.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ផ្ញើ​ព្រឹត្តិការ​ចុច​ប៊ូតុង​ថាមពល ACPI ទៅកាន់​ម៉ាស៊ីន​និម្មិត ។&lt;/p&gt;&lt;p&gt;ជា​ធម្មតា ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ​រត់​ខាង​ក្នុង​ម៉ាស៊ីន​និម្មិត នឹង​រកឃើញ​ព្រឹត្តិការ​នេះ ហើយ​អនុវត្ត​នីតិវិធី​បិទ​ការ​ជម្រះ ។ នេះ​ជា​មធ្យោបាយ​ដែល​បានផ្ដល់​អនុសាសន៍ ឲ្យ​បិទ​ម៉ាស៊ីន​និម្មិត ពីព្រោះ​កម្មវិធី​ទាំង​អស់​ដែល​កំពុង​រត់​ខាង​ក្នុង​នឹង​មាន​ឱកាស​រក្សាទុក​ស្ថានភាព និង​ទិន្នន័យ​របស់​វា ។&lt;/p&gt;&lt;p&gt;ប្រសិន​បើ​ម៉ាស៊ីន​មិន​ឆ្លើយតប​នឹង​សកម្មភាព​នេះ​ទេ ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ​អាច​ត្រូវ​បាន​កំណត់​រចនាសម្ព័ន្ធ​ខុស ឬ​មិន​យល់​ព្រឹត្តិការណ៍​ប៊ូតុង​ថាមពល ACPI ទាល់តែសោះ ។ ក្នុងករណី​នេះ អ្នក​គួរ​ជ្រើស​សកម្មភាព &lt;b&gt;បិទ​ម៉ាស៊ីន&lt;/b&gt; ដើម្បី​បញ្ឈប់​ការ​ប្រតិបត្តិ​របស់​ម៉ាស៊ីន​និម្មិត ។&lt;/p&gt;</translation>
+ <source>&lt;p>Sends the ACPI Power Button press event to the virtual machine.&lt;/p>&lt;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.&lt;/p>&lt;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 &lt;b>Power off the machine&lt;/b> action to stop virtual machine execution.&lt;/p></source>
+ <translation>&lt;p>ផ្ញើ​ព្រឹត្តិការ​ចុច​ប៊ូតុង​ថាមពល ACPI ទៅកាន់​ម៉ាស៊ីន​និម្មិត ។&lt;/p>&lt;p>ជា​ធម្មតា ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ​រត់​ខាង​ក្នុង​ម៉ាស៊ីន​និម្មិត នឹង​រកឃើញ​ព្រឹត្តិការ​នេះ ហើយ​អនុវត្ត​នីតិវិធី​បិទ​ការ​ជម្រះ ។ នេះ​ជា​មធ្យោបាយ​ដែល​បានផ្ដល់​អនុសាសន៍ ឲ្យ​បិទ​ម៉ាស៊ីន​និម្មិត ពីព្រោះ​កម្មវិធី​ទាំង​អស់​ដែល​កំពុង​រត់​ខាង​ក្នុង​នឹង​មាន​ឱកាស​រក្សាទុក​ស្ថានភាព និង​ទិន្នន័យ​របស់​វា ។&lt;/p>&lt;p>ប្រសិន​បើ​ម៉ាស៊ីន​មិន​ឆ្លើយតប​នឹង​សកម្មភាព​នេះ​ទេ ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ​អាច​ត្រូវ​បាន​កំណត់​រចនាសម្ព័ន្ធ​ខុស ឬ​មិន​យល់​ព្រឹត្តិការណ៍​ប៊ូតុង​ថាមពល ACPI ទាល់តែសោះ ។ ក្នុងករណី​នេះ អ្នក​គួរ​ជ្រើស​សកម្មភាព &lt;b>បិទ​ម៉ាស៊ីន&lt;/b> ដើម្បី​បញ្ឈប់​ការ​ប្រតិបត្តិ​របស់​ម៉ាស៊ីន​និម្មិត ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Turns off the virtual machine.&lt;/p&gt;&lt;p&gt;Note that this action will stop machine execution immediately so that the guest operating system running inside it will not be able to perform a clean shutdown procedure which may result in &lt;i&gt;data loss&lt;/i&gt; inside the virtual machine. Selecting this action is recommended only if the virtual machine does not respond to the &lt;b&gt;Send the shutdown signal&lt;/b&gt; action.&lt;/p&gt;</source>
- <translation>&lt;p&gt;បិទ​ម៉ាស៊ីន​និម្មិត ។&lt;/p&gt;&lt;p&gt;ចំណាំ​ថា សកម្មភាព​នេះ​នឹង​បញ្ឈប់​កា​រប្រតិបត្តិ​របស់ម៉ាស៊ីន​ភ្លាមៗ​តែ​ម្ដង ដូច្នេះ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់ម៉ាស៊ីន​ភ្ញៀវ​កំពុង​រត់​ខាង​​ក្នុង​វា​នឹង​មិនអាច​អនុវត្ត​នីតិវិធី​បិទ​ការ​ជម្រះ​ដែល​អាច​បណ្ដាល​ឲ្យ &lt;i&gt;បាត់បង់​ទិន្នន័យ&lt;/i&gt; ខាង​ក្នុង​ម៉ាស៊ីន​និម្មិត​បានទេ ។ កា​រជ្រើស​សកម្ម​ភាព​នេះ​ត្រូវ​បានផ្ដល់​អនុសាសន៍​តែ​ក្នុងករណី​ដែល​ម៉ាស៊ីន​និមន្មិត​មិន​ឆ្លើយតប​នឹង​សកម្មភាព &lt;b&gt;ផ្ញើ​សញ្ញា​បិទ&lt;/b&gt; តែ​ប៉ុណ្ណោះ ។&lt;/p&gt;</translation>
+ <source>&lt;p>Turns off the virtual machine.&lt;/p>&lt;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 &lt;i>data loss&lt;/i> inside the virtual machine. Selecting this action is recommended only if the virtual machine does not respond to the &lt;b>Send the shutdown signal&lt;/b> action.&lt;/p></source>
+ <translation>&lt;p>បិទ​ម៉ាស៊ីន​និម្មិត ។&lt;/p>&lt;p>ចំណាំ​ថា សកម្មភាព​នេះ​នឹង​បញ្ឈប់​កា​រប្រតិបត្តិ​របស់ម៉ាស៊ីន​ភ្លាមៗ​តែ​ម្ដង ដូច្នេះ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់ម៉ាស៊ីន​ភ្ញៀវ​កំពុង​រត់​ខាង​​ក្នុង​វា​នឹង​មិនអាច​អនុវត្ត​នីតិវិធី​បិទ​ការ​ជម្រះ​ដែល​អាច​បណ្ដាល​ឲ្យ &lt;i>បាត់បង់​ទិន្នន័យ&lt;/i> ខាង​ក្នុង​ម៉ាស៊ីន​និម្មិត​បានទេ ។ កា​រជ្រើស​សកម្ម​ភាព​នេះ​ត្រូវ​បានផ្ដល់​អនុសាសន៍​តែ​ក្នុងករណី​ដែល​ម៉ាស៊ីន​និមន្មិត​មិន​ឆ្លើយតប​នឹង​សកម្មភាព &lt;b>ផ្ញើ​សញ្ញា​បិទ&lt;/b> តែ​ប៉ុណ្ណោះ ។&lt;/p></translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxConsoleWnd</name>
<message>
- <source>VirtualBox OSE</source>
- <translation>VirtualBox OSE</translation>
- </message>
- <message>
- <source>&amp;Fullscreen Mode</source>
- <translation>របៀប​ពេញអេក្រង់</translation>
+ <source>VirtualBox OSE</source>
+ <translation>VirtualBox OSE</translation>
</message>
<message>
- <source>Switch to fullscreen mode</source>
- <translation>ប្ដូរ​ទៅ​របៀប​ពេញអេក្រង់</translation>
+ <source>&amp;Fullscreen Mode</source>
+ <translation>របៀប​ពេញអេក្រង់</translation>
</message>
<message>
- <source>Mouse Integration</source>
- <comment>enable/disable...</comment>
- <translation>ការ​បញ្ចូល​កណ្ដុរ</translation>
+ <source>Switch to fullscreen mode</source>
+ <translation>ប្ដូរ​ទៅ​របៀប​ពេញអេក្រង់</translation>
</message>
<message>
- <source>Auto-resize Guest Display</source>
- <comment>enable/disable...</comment>
- <translation>បង្ហាញ​ភ្ញៀវ​ផ្លាស់ប្ដូរ​ទំហំ​​​ដោយស្វ័យ​ប្រវត្តិ</translation>
+ <source>Mouse Integration</source>
+ <comment>enable/disable...</comment>
+ <translation>ការ​បញ្ចូល​កណ្ដុរ</translation>
</message>
<message>
- <source>Auto-resize &amp;Guest Display</source>
- <translation>បង្ហាញ​ភ្ញៀវ​ផ្លាស់ប្ដូរ​ទំហំ​ដោយ​ស្វ័យ​ប្រវត្តិ</translation>
+ <source>Auto-resize Guest Display</source>
+ <comment>enable/disable...</comment>
+ <translation>បង្ហាញ​ភ្ញៀវ​ផ្លាស់ប្ដូរ​ទំហំ​​​ដោយស្វ័យ​ប្រវត្តិ</translation>
</message>
<message>
- <source>Automatically resize the guest display when the window is resized (requires Guest Additions)</source>
- <translation>បង្ហាញ​ភ្ញៀវ​​​ផ្លាស់ប្ដូរ​ទំហំ​ដោយ​ស្វ័យ​ប្រវត្តិ នៅពេល​បង្អួច​ត្រូវ​បាន​ផ្លាស់ប្ដូរ​ (ត្រូវការ​ភ្ញៀវ​បន្ថែម)</translation>
+ <source>Auto-resize &amp;Guest Display</source>
+ <translation>បង្ហាញ​ភ្ញៀវ​ផ្លាស់ប្ដូរ​ទំហំ​ដោយ​ស្វ័យ​ប្រវត្តិ</translation>
</message>
<message>
- <source>&amp;Adjust Window Size</source>
- <translation>លៃតម្រូវ​ទំហំ​បង្អួច</translation>
+ <source>Automatically resize the guest display when the window is resized (requires Guest Additions)</source>
+ <translation>បង្ហាញ​ភ្ញៀវ​​​ផ្លាស់ប្ដូរ​ទំហំ​ដោយ​ស្វ័យ​ប្រវត្តិ នៅពេល​បង្អួច​ត្រូវ​បាន​ផ្លាស់ប្ដូរ​ (ត្រូវការ​ភ្ញៀវ​បន្ថែម)</translation>
</message>
<message>
- <source>Adjust window size and position to best fit the guest display</source>
- <translation>លៃតម្រូវ​ទំហំ​បង្អួច និងទីតាំង​ទៅ​សម​បំផុត​​នឹង​ការ​បង្ហាញ​ភ្ញៀវ</translation>
+ <source>&amp;Adjust Window Size</source>
+ <translation>លៃតម្រូវ​ទំហំ​បង្អួច</translation>
</message>
<message>
- <source>&amp;Insert Ctrl-Alt-Del</source>
- <translation>បញ្ជាន់ (Insert) បញ្ជា(Ctrl)-ជំនួស(Alt)-លុប(Del)</translation>
+ <source>Adjust window size and position to best fit the guest display</source>
+ <translation>លៃតម្រូវ​ទំហំ​បង្អួច និងទីតាំង​ទៅ​សម​បំផុត​​នឹង​ការ​បង្ហាញ​ភ្ញៀវ</translation>
</message>
<message>
- <source>Send the Ctrl-Alt-Del sequence to the virtual machine</source>
- <translation>ផ្ញើ​លំដាប់​បញ្ជា(Ctrl)-ជំនួស(Alt)-លុប(Del) ទៅ​កាន់​ម៉ាស៊ីន​និម្មិត</translation>
+ <source>&amp;Insert Ctrl-Alt-Del</source>
+ <translation>បញ្ជាន់ (Insert) បញ្ជា(Ctrl)-ជំនួស(Alt)-លុប(Del)</translation>
</message>
<message>
- <source>&amp;Insert Ctrl-Alt-Backspace</source>
- <translation>បញ្ជាន់(Insert) បញ្ជា(Ctrl)-ជំនួស(Alt)-លុបថយក្រោយ(Backspace)</translation>
+ <source>Send the Ctrl-Alt-Del sequence to the virtual machine</source>
+ <translation>ផ្ញើ​លំដាប់​បញ្ជា(Ctrl)-ជំនួស(Alt)-លុប(Del) ទៅ​កាន់​ម៉ាស៊ីន​និម្មិត</translation>
</message>
<message>
- <source>Send the Ctrl-Alt-Backspace sequence to the virtual machine</source>
- <translation>ផ្ញើ​លំដាប់​បញ្ជា(Ctrl)-ជំនួស(Alt)-លុបថយក្រោយ(Backspace) ទៅ​កាន់​ម៉ាស៊ីន​និម្មិត</translation>
+ <source>&amp;Insert Ctrl-Alt-Backspace</source>
+ <translation>បញ្ជាន់(Insert) បញ្ជា(Ctrl)-ជំនួស(Alt)-លុបថយក្រោយ(Backspace)</translation>
</message>
<message>
- <source>&amp;Reset</source>
- <translation>កំណត់​ឡើង​វិញ</translation>
+ <source>Send the Ctrl-Alt-Backspace sequence to the virtual machine</source>
+ <translation>ផ្ញើ​លំដាប់​បញ្ជា(Ctrl)-ជំនួស(Alt)-លុបថយក្រោយ(Backspace) ទៅ​កាន់​ម៉ាស៊ីន​និម្មិត</translation>
</message>
<message>
- <source>Reset the virtual machine</source>
- <translation>កំណត់​ម៉ាស៊ីន​និម្មិត​ឡើង​វិញ</translation>
+ <source>&amp;Reset</source>
+ <translation>កំណត់​ឡើង​វិញ</translation>
</message>
<message>
- <source>ACPI S&amp;hutdown</source>
- <translation>បិទ ACPI</translation>
+ <source>Reset the virtual machine</source>
+ <translation>កំណត់​ម៉ាស៊ីន​និម្មិត​ឡើង​វិញ</translation>
</message>
<message>
- <source>Send the ACPI Power Button press event to the virtual machine</source>
- <translation>ផ្ញើព្រឹត្តិការណ៍​ចុច​ប៊ូតុង​ថាមពល ACPI ទៅ​កាន់​ម៉ាស៊ីន​និម្មិត</translation>
+ <source>ACPI S&amp;hutdown</source>
+ <translation>បិទ ACPI</translation>
</message>
<message>
- <source>&amp;Close...</source>
- <translation>បិទ...</translation>
+ <source>Send the ACPI Power Button press event to the virtual machine</source>
+ <translation>ផ្ញើព្រឹត្តិការណ៍​ចុច​ប៊ូតុង​ថាមពល ACPI ទៅ​កាន់​ម៉ាស៊ីន​និម្មិត</translation>
</message>
<message>
- <source>Close the virtual machine</source>
- <translation>បិទ​ម៉ាស៊ីន​និម្មិត</translation>
+ <source>&amp;Close...</source>
+ <translation>បិទ...</translation>
</message>
<message>
- <source>Take &amp;Snapshot...</source>
- <translation>យក​រូបថត...</translation>
+ <source>Close the virtual machine</source>
+ <translation>បិទ​ម៉ាស៊ីន​និម្មិត</translation>
</message>
<message>
- <source>Take a snapshot of the virtual machine</source>
- <translation>យក​រូបថត​របស់​ម៉ាស៊ីន​និម្មិត</translation>
+ <source>Take &amp;Snapshot...</source>
+ <translation>យក​រូបថត...</translation>
</message>
<message>
- <source>&amp;Floppy Image...</source>
- <translation>រូបភាព​ថាស​ទន់...</translation>
+ <source>Take a snapshot of the virtual machine</source>
+ <translation>យក​រូបថត​របស់​ម៉ាស៊ីន​និម្មិត</translation>
</message>
<message>
- <source>Mount a floppy image file</source>
- <translation>ម៉ោន​ឯកសារ​រូបភាព​ថាស​ទន់</translation>
+ <source>&amp;Floppy Image...</source>
+ <translation>រូបភាព​ថាស​ទន់...</translation>
</message>
<message>
- <source>Unmount F&amp;loppy</source>
- <translation>អាន់ម៉ោន​ថាស​ទន់</translation>
+ <source>Mount a floppy image file</source>
+ <translation>ម៉ោន​ឯកសារ​រូបភាព​ថាស​ទន់</translation>
</message>
<message>
- <source>Unmount the currently mounted floppy media</source>
- <translation>អាន់ម៉ោន​មេឌៀ​ថាស​ទាន់​ដែល​បាន​ម៉ោន​បច្ចុប្បន្ន</translation>
+ <source>Unmount F&amp;loppy</source>
+ <translation>អាន់ម៉ោន​ថាស​ទន់</translation>
</message>
<message>
- <source>&amp;CD/DVD-ROM Image...</source>
- <translation>រូបភាព​ស៊ីឌី/ឌីវីឌី​រ៉ូម...</translation>
+ <source>Unmount the currently mounted floppy media</source>
+ <translation>អាន់ម៉ោន​មេឌៀ​ថាស​ទាន់​ដែល​បាន​ម៉ោន​បច្ចុប្បន្ន</translation>
</message>
<message>
- <source>Mount a CD/DVD-ROM image file</source>
- <translation>ម៉ោន​ឯកសារ​រូបភាព​ស៊ីឌី/ឌីវីឌី​រ៉ូម</translation>
+ <source>&amp;CD/DVD-ROM Image...</source>
+ <translation>រូបភាព​ស៊ីឌី/ឌីវីឌី​រ៉ូម...</translation>
</message>
<message>
- <source>Unmount C&amp;D/DVD-ROM</source>
- <translation>អាន់ម៉ោន​ស៊ីឌី/ឌីវីឌីរ៉ូម</translation>
+ <source>Mount a CD/DVD-ROM image file</source>
+ <translation>ម៉ោន​ឯកសារ​រូបភាព​ស៊ីឌី/ឌីវីឌី​រ៉ូម</translation>
</message>
<message>
- <source>Unmount the currently mounted CD/DVD-ROM media</source>
- <translation>អាន់ម៉ោន​មេឌៀ​ស៊ីឌី/ឌីវីឌីរ៉ូម​ដែល​បាន​ម៉ោន​បច្ចុប្បន្ន</translation>
+ <source>Unmount C&amp;D/DVD-ROM</source>
+ <translation>អាន់ម៉ោន​ស៊ីឌី/ឌីវីឌីរ៉ូម</translation>
</message>
<message>
- <source>Remote Dis&amp;play</source>
- <translation>កា​រ​បង្ហាញ​ពី​ចម្ងាយ</translation>
+ <source>Unmount the currently mounted CD/DVD-ROM media</source>
+ <translation>អាន់ម៉ោន​មេឌៀ​ស៊ីឌី/ឌីវីឌីរ៉ូម​ដែល​បាន​ម៉ោន​បច្ចុប្បន្ន</translation>
</message>
<message>
- <source>Enable or disable remote desktop (RDP) connections to this machine</source>
- <translation>បើក ឬ​បិទ​ការ​តភ្ជាប់​ផ្ទៃតុ​ពី​ចម្ងាយ (RDP) ទៅ​កាន់​ម៉ាស៊ីន​នេះ</translation>
+ <source>Remote Dis&amp;play</source>
+ <translation>កា​រ​បង្ហាញ​ពី​ចម្ងាយ</translation>
</message>
<message>
- <source>&amp;Shared Folders...</source>
- <translation>ថត​ដែល​បានចែករំលែក...</translation>
+ <source>Enable or disable remote desktop (RDP) connections to this machine</source>
+ <translation>បើក ឬ​បិទ​ការ​តភ្ជាប់​ផ្ទៃតុ​ពី​ចម្ងាយ (RDP) ទៅ​កាន់​ម៉ាស៊ីន​នេះ</translation>
</message>
<message>
- <source>Open the dialog to operate on shared folders</source>
- <translation>បើក​ប្រអប់​ដើម្បី​ប្រតិបត្តិ​លើ​ថត​ដែល​បានចែករំលែក</translation>
+ <source>&amp;Shared Folders...</source>
+ <translation>ថត​ដែល​បានចែករំលែក...</translation>
</message>
<message>
- <source>&amp;Install Guest Additions...</source>
- <translation>ដំឡើង​ការ​បន្ថែម​ភ្ញៀវ...</translation>
+ <source>Open the dialog to operate on shared folders</source>
+ <translation>បើក​ប្រអប់​ដើម្បី​ប្រតិបត្តិ​លើ​ថត​ដែល​បានចែករំលែក</translation>
</message>
<message>
- <source>Mount the Guest Additions installation image</source>
- <translation>ម៉ោន​រូបភាព​ដំឡើង​បន្ថែម​ភ្ញៀវ</translation>
+ <source>&amp;Install Guest Additions...</source>
+ <translation>ដំឡើង​ការ​បន្ថែម​ភ្ញៀវ...</translation>
</message>
<message>
- <source>Mount &amp;Floppy</source>
- <translation>ម៉ោន​ថាស​ទន់</translation>
+ <source>Mount the Guest Additions installation image</source>
+ <translation>ម៉ោន​រូបភាព​ដំឡើង​បន្ថែម​ភ្ញៀវ</translation>
</message>
<message>
- <source>Mount &amp;CD/DVD-ROM</source>
- <translation>ម៉ោន​ស៊ីឌី/ឌីវីឌី​រ៉ូម</translation>
+ <source>Mount &amp;Floppy</source>
+ <translation>ម៉ោន​ថាស​ទន់</translation>
</message>
<message>
- <source>&amp;USB Devices</source>
- <translation>ឧបករណ៍​ USB</translation>
+ <source>Mount &amp;CD/DVD-ROM</source>
+ <translation>ម៉ោន​ស៊ីឌី/ឌីវីឌី​រ៉ូម</translation>
</message>
<message>
- <source>&amp;Devices</source>
- <translation>ឧបករណ៍</translation>
+ <source>&amp;USB Devices</source>
+ <translation>ឧបករណ៍​ USB</translation>
</message>
<message>
- <source>De&amp;bug</source>
- <translation>បំបាត់​កំហុស</translation>
+ <source>&amp;Devices</source>
+ <translation>ឧបករណ៍</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>ជំនួយ</translation>
+ <source>De&amp;bug</source>
+ <translation>បំបាត់​កំហុស</translation>
</message>
<message>
- <source>&lt;hr&gt;VRDP Server is listening on port %1</source>
- <translation>&lt;hr&gt;ម៉ាស៊ីន​បម្រើ VRDP កំពុង​ស្ដាប់​ច្រក %1</translation>
+ <source>&amp;Help</source>
+ <translation>ជំនួយ</translation>
</message>
<message>
- <source>&amp;Pause</source>
- <translation>ផ្អាក</translation>
+ <source>&lt;hr>VRDP Server is listening on port %1</source>
+ <translation>&lt;hr>ម៉ាស៊ីន​បម្រើ VRDP កំពុង​ស្ដាប់​ច្រក %1</translation>
</message>
<message>
- <source>Suspend the execution of the virtual machine</source>
- <translation>ផ្អាក​កា​រប្រតិបត្តិ​របស់​ម៉ាស៊ីន​និម្មិត</translation>
+ <source>&amp;Pause</source>
+ <translation>ផ្អាក</translation>
</message>
<message>
- <source>R&amp;esume</source>
- <translation>បន្ត</translation>
+ <source>Suspend the execution of the virtual machine</source>
+ <translation>ផ្អាក​កា​រប្រតិបត្តិ​របស់​ម៉ាស៊ីន​និម្មិត</translation>
</message>
<message>
- <source>Resume the execution of the virtual machine</source>
- <translation>បន្ត​ប្រតិបត្តិ​របស់​ម៉ាស៊ីន​និម្មិត</translation>
+ <source>R&amp;esume</source>
+ <translation>បន្ត</translation>
</message>
<message>
- <source>Disable &amp;Mouse Integration</source>
- <translation>បិទការ​រួម​បញ្ចូល​កណ្ដុរ</translation>
+ <source>Resume the execution of the virtual machine</source>
+ <translation>បន្ត​ប្រតិបត្តិ​របស់​ម៉ាស៊ីន​និម្មិត</translation>
</message>
<message>
- <source>Temporarily disable host mouse pointer integration</source>
- <translation>បិទ​ការ​រួមបញ្ចូល​ព្រួញ​កណ្ដុរ​របស់ម៉ាស៊ីន​ជា​បណ្ដោះអាសន្ន</translation>
+ <source>Disable &amp;Mouse Integration</source>
+ <translation>បិទការ​រួម​បញ្ចូល​កណ្ដុរ</translation>
</message>
<message>
- <source>Enable &amp;Mouse Integration</source>
- <translation>បើក​ការ​រួម​បញ្ចូល​កណ្ដុរ</translation>
+ <source>Temporarily disable host mouse pointer integration</source>
+ <translation>បិទ​ការ​រួមបញ្ចូល​ព្រួញ​កណ្ដុរ​របស់ម៉ាស៊ីន​ជា​បណ្ដោះអាសន្ន</translation>
</message>
<message>
- <source>Enable temporarily disabled host mouse pointer integration</source>
- <translation>បើក​​ការ​រួម​បញ្ចូល​ព្រួញកណ្ដុរ​របស់​ម៉ាស៊ីន​ដែលបាន​បិទ​ជា​បណ្ដោះអាសន្ន</translation>
+ <source>Enable &amp;Mouse Integration</source>
+ <translation>បើក​ការ​រួម​បញ្ចូល​កណ្ដុរ</translation>
</message>
<message>
- <source>Snapshot %1</source>
- <translation>រូបថត %1</translation>
+ <source>Enable temporarily disabled host mouse pointer integration</source>
+ <translation>បើក​​ការ​រួម​បញ្ចូល​ព្រួញកណ្ដុរ​របស់​ម៉ាស៊ីន​ដែលបាន​បិទ​ជា​បណ្ដោះអាសន្ន</translation>
</message>
<message>
- <source>Host Drive </source>
- <translation>ដ្រាយ​ម៉ាស៊ីន</translation>
+ <source>Snapshot %1</source>
+ <translation>រូបថត %1</translation>
</message>
<message>
- <source>&amp;Machine</source>
- <translation>ម៉ាស៊ីន</translation>
+ <source>Host Drive </source>
+ <translation>ដ្រាយ​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>&amp;Network Adapters</source>
- <translation>អាដាប់ទ័រ​បណ្ដាញ</translation>
+ <source>&amp;Machine</source>
+ <translation>ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Adapter %1</source>
- <comment>network</comment>
- <translation>អាដាប់ទ័រ %1</translation>
+ <source>&amp;Network Adapters</source>
+ <translation>អាដាប់ទ័រ​បណ្ដាញ</translation>
</message>
<message>
- <source>Mount the selected physical drive of the host PC</source>
- <comment>Floppy tip</comment>
- <translation>ម៉ោន​ដ្រាយ​ហ្វីស៊ីខល​ដែល​ជ្រើស​របស់​ម៉ាស៊ីន​</translation>
+ <source>Adapter %1</source>
+ <comment>network</comment>
+ <translation>អាដាប់ទ័រ %1</translation>
</message>
<message>
- <source>Mount the selected physical drive of the host PC</source>
- <comment>CD/DVD tip</comment>
- <translation>ម៉ោន​ដ្រាយ​ហ្វីស៊ីខល​ដែល​បាន​ជ្រើស​របស់ម៉ាស៊ីន</translation>
+ <source>Mount the selected physical drive of the host PC</source>
+ <comment>Floppy tip</comment>
+ <translation>ម៉ោន​ដ្រាយ​ហ្វីស៊ីខល​ដែល​ជ្រើស​របស់​ម៉ាស៊ីន​</translation>
</message>
<message>
- <source>Disconnect the cable from the selected virtual network adapter</source>
- <translation>ផ្ដាច់​ខ្សែ​ពី​អាដាប់ទ័រ​បណ្ដាញ​និម្មិត​ដែល​បាន​ជ្រើស</translation>
+ <source>Mount the selected physical drive of the host PC</source>
+ <comment>CD/DVD tip</comment>
+ <translation>ម៉ោន​ដ្រាយ​ហ្វីស៊ីខល​ដែល​បាន​ជ្រើស​របស់ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Connect the cable to the selected virtual network adapter</source>
- <translation>តភ្ជាប់​ខ្សែ​ទៅកាន់​អាដាប់ទ័រ​បណ្ដាញ​និម្មិត​ដែល​បានជ្រើស</translation>
+ <source>Disconnect the cable from the selected virtual network adapter</source>
+ <translation>ផ្ដាច់​ខ្សែ​ពី​អាដាប់ទ័រ​បណ្ដាញ​និម្មិត​ដែល​បាន​ជ្រើស</translation>
</message>
<message>
- <source>Seam&amp;less Mode</source>
- <translation>របៀប​គ្មាន​ថ្នេរ</translation>
+ <source>Connect the cable to the selected virtual network adapter</source>
+ <translation>តភ្ជាប់​ខ្សែ​ទៅកាន់​អាដាប់ទ័រ​បណ្ដាញ​និម្មិត​ដែល​បានជ្រើស</translation>
</message>
<message>
- <source>Switch to seamless desktop integration mode</source>
- <translation>ប្ដូរ​ទៅ​របៀប​បញ្ចូល​ផ្ទៃតុ​គ្មាន​ថ្នេរ</translation>
+ <source>Seam&amp;less Mode</source>
+ <translation>របៀប​គ្មាន​ថ្នេរ</translation>
</message>
<message>
- <source>&lt;qt&gt;&lt;nobr&gt;Indicates the activity of the floppy media:&lt;/nobr&gt;%1&lt;/qt&gt;</source>
- <comment>Floppy tooltip</comment>
- <translation>&lt;qt&gt;&lt;nobr&gt;បង្ហាញ​សកម្មភាព​របស់​មេឌៀ​ថាស​ទន់ ៖&lt;/nobr&gt;%1&lt;/qt&gt;</translation>
+ <source>Switch to seamless desktop integration mode</source>
+ <translation>ប្ដូរ​ទៅ​របៀប​បញ្ចូល​ផ្ទៃតុ​គ្មាន​ថ្នេរ</translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Host Drive&lt;/b&gt;: %1&lt;/nobr&gt;</source>
- <comment>Floppy tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;ដ្រាយ​ម៉ាស៊ីន&lt;/b&gt; ៖ %1&lt;/nobr&gt;</translation>
+ <source>&lt;qt>&lt;nobr>Indicates the activity of the floppy media:&lt;/nobr>%1&lt;/qt></source>
+ <comment>Floppy tooltip</comment>
+ <translation>&lt;qt>&lt;nobr>បង្ហាញ​សកម្មភាព​របស់​មេឌៀ​ថាស​ទន់ ៖&lt;/nobr>%1&lt;/qt></translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Image&lt;/b&gt;: %1&lt;/nobr&gt;</source>
- <comment>Floppy tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;រូបភាព&lt;/b&gt; ៖ %1&lt;/nobr&gt;</translation>
+ <source>&lt;br>&lt;nobr>&lt;b>Host Drive&lt;/b>: %1&lt;/nobr></source>
+ <comment>Floppy tooltip</comment>
+ <translation>&lt;br>&lt;nobr>&lt;b>ដ្រាយ​ម៉ាស៊ីន&lt;/b> ៖ %1&lt;/nobr></translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No media mounted&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>Floppy tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;គ្មាន​មេឌៀ​បានម៉ោន​ទេ&lt;/b&gt;&lt;/nobr&gt;</translation>
+ <source>&lt;br>&lt;nobr>&lt;b>Image&lt;/b>: %1&lt;/nobr></source>
+ <comment>Floppy tooltip</comment>
+ <translation>&lt;br>&lt;nobr>&lt;b>រូបភាព&lt;/b> ៖ %1&lt;/nobr></translation>
</message>
<message>
- <source>&lt;qt&gt;&lt;nobr&gt;Indicates the activity of the CD/DVD-ROM media:&lt;/nobr&gt;%1&lt;/qt&gt;</source>
- <comment>DVD-ROM tooltip</comment>
- <translation>&lt;qt&gt;&lt;nobr&gt;បង្ហាញ​សកម្មភាព​របស់​មេឌៀ​ស៊ីឌី/ឌីវីឌីរ៉ូម ៖&lt;/nobr&gt;%1&lt;/qt&gt;</translation>
+ <source>&lt;br>&lt;nobr>&lt;b>No media mounted&lt;/b>&lt;/nobr></source>
+ <comment>Floppy tooltip</comment>
+ <translation>&lt;br>&lt;nobr>&lt;b>គ្មាន​មេឌៀ​បានម៉ោន​ទេ&lt;/b>&lt;/nobr></translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Host Drive&lt;/b&gt;: %1&lt;/nobr&gt;</source>
- <comment>DVD-ROM tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;ដ្រាយ​ម៉ាស៊ីន&lt;/b&gt; ៖ %1&lt;/nobr&gt;</translation>
+ <source>&lt;qt>&lt;nobr>Indicates the activity of the CD/DVD-ROM media:&lt;/nobr>%1&lt;/qt></source>
+ <comment>DVD-ROM tooltip</comment>
+ <translation>&lt;qt>&lt;nobr>បង្ហាញ​សកម្មភាព​របស់​មេឌៀ​ស៊ីឌី/ឌីវីឌីរ៉ូម ៖&lt;/nobr>%1&lt;/qt></translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Image&lt;/b&gt;: %1&lt;/nobr&gt;</source>
- <comment>DVD-ROM tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;រូបភាព&lt;/b&gt; ៖ %1&lt;/nobr&gt;</translation>
+ <source>&lt;br>&lt;nobr>&lt;b>Host Drive&lt;/b>: %1&lt;/nobr></source>
+ <comment>DVD-ROM tooltip</comment>
+ <translation>&lt;br>&lt;nobr>&lt;b>ដ្រាយ​ម៉ាស៊ីន&lt;/b> ៖ %1&lt;/nobr></translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No media mounted&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>DVD-ROM tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;គ្មាន​មេឌៀ​បានម៉ោន​ទេ&lt;/b&gt;&lt;/nobr&gt;</translation>
+ <source>&lt;br>&lt;nobr>&lt;b>Image&lt;/b>: %1&lt;/nobr></source>
+ <comment>DVD-ROM tooltip</comment>
+ <translation>&lt;br>&lt;nobr>&lt;b>រូបភាព&lt;/b> ៖ %1&lt;/nobr></translation>
</message>
<message>
- <source>&lt;qt&gt;&lt;nobr&gt;Indicates the activity of virtual hard disks:&lt;/nobr&gt;%1&lt;/qt&gt;</source>
- <comment>HDD tooltip</comment>
- <translation>&lt;qt&gt;&lt;nobr&gt;បង្ហាញ​សកម្មភាព​របស់​ថាសរឹង​និម្មិត ៖&lt;/nobr&gt;%1&lt;/qt&gt;</translation>
+ <source>&lt;br>&lt;nobr>&lt;b>No media mounted&lt;/b>&lt;/nobr></source>
+ <comment>DVD-ROM tooltip</comment>
+ <translation>&lt;br>&lt;nobr>&lt;b>គ្មាន​មេឌៀ​បានម៉ោន​ទេ&lt;/b>&lt;/nobr></translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No hard disks attached&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>HDD tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;គ្មាន​ថាស​រឹង​បាន​ភ្ជាប់​ទេ&lt;/b&gt;&lt;/nobr&gt;</translation>
+ <source>&lt;qt>&lt;nobr>Indicates the activity of virtual hard disks:&lt;/nobr>%1&lt;/qt></source>
+ <comment>HDD tooltip</comment>
+ <translation>&lt;qt>&lt;nobr>បង្ហាញ​សកម្មភាព​របស់​ថាសរឹង​និម្មិត ៖&lt;/nobr>%1&lt;/qt></translation>
</message>
<message>
- <source>&lt;qt&gt;&lt;nobr&gt;Indicates the activity of the network interfaces:&lt;/nobr&gt;%1&lt;/qt&gt;</source>
- <comment>Network adapters tooltip</comment>
- <translation>&lt;qt&gt;&lt;nobr&gt;បង្ហាញ​សកម្មភាព​របស់​ចំណុច​ប្រទាក់​បណ្ដាញ ៖&lt;/nobr&gt;%1&lt;/qt&gt;</translation>
+ <source>&lt;br>&lt;nobr>&lt;b>No hard disks attached&lt;/b>&lt;/nobr></source>
+ <comment>HDD tooltip</comment>
+ <translation>&lt;br>&lt;nobr>&lt;b>គ្មាន​ថាស​រឹង​បាន​ភ្ជាប់​ទេ&lt;/b>&lt;/nobr></translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Adapter %1 (%2)&lt;/b&gt;: cable %3&lt;/nobr&gt;</source>
- <comment>Network adapters tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;អាដាប់ទ័រ %1 (%2)&lt;/b&gt; ៖ ខ្សែ %3&lt;/nobr&gt;</translation>
+ <source>&lt;qt>&lt;nobr>Indicates the activity of the network interfaces:&lt;/nobr>%1&lt;/qt></source>
+ <comment>Network adapters tooltip</comment>
+ <translation>&lt;qt>&lt;nobr>បង្ហាញ​សកម្មភាព​របស់​ចំណុច​ប្រទាក់​បណ្ដាញ ៖&lt;/nobr>%1&lt;/qt></translation>
</message>
<message>
- <source>connected</source>
- <comment>Network adapters tooltip</comment>
- <translation>បាន​តភ្ជាប់</translation>
+ <source>&lt;br>&lt;nobr>&lt;b>Adapter %1 (%2)&lt;/b>: cable %3&lt;/nobr></source>
+ <comment>Network adapters tooltip</comment>
+ <translation>&lt;br>&lt;nobr>&lt;b>អាដាប់ទ័រ %1 (%2)&lt;/b> ៖ ខ្សែ %3&lt;/nobr></translation>
</message>
<message>
- <source>disconnected</source>
- <comment>Network adapters tooltip</comment>
- <translation>បានផ្ដាច់</translation>
+ <source>connected</source>
+ <comment>Network adapters tooltip</comment>
+ <translation>បាន​តភ្ជាប់</translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;All network adapters are disabled&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>Network adapters tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;អាដាប់ទ័រ​បណ្ដាញ​ទាំង​អស់​ត្រូវ​បានបិទ&lt;/b&gt;&lt;/nobr&gt;</translation>
+ <source>disconnected</source>
+ <comment>Network adapters tooltip</comment>
+ <translation>បានផ្ដាច់</translation>
</message>
<message>
- <source>&lt;qt&gt;&lt;nobr&gt;Indicates the activity of the attached USB devices:&lt;/nobr&gt;%1&lt;/qt&gt;</source>
- <comment>USB device tooltip</comment>
- <translation>&lt;qt&gt;&lt;nobr&gt;បង្ហាញ​សកម្មភាព​របស់​ឧបករណ៍ USB ដែល​បានផ្ដាច់ ៖&lt;/nobr&gt;%1&lt;/qt&gt;</translation>
+ <source>&lt;br>&lt;nobr>&lt;b>All network adapters are disabled&lt;/b>&lt;/nobr></source>
+ <comment>Network adapters tooltip</comment>
+ <translation>&lt;br>&lt;nobr>&lt;b>អាដាប់ទ័រ​បណ្ដាញ​ទាំង​អស់​ត្រូវ​បានបិទ&lt;/b>&lt;/nobr></translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No USB devices attached&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>USB device tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;គ្មាន​ឧបករណ៍ USB បាន​ផ្ដាច់&lt;/b&gt;&lt;/nobr&gt;</translation>
+ <source>&lt;qt>&lt;nobr>Indicates the activity of the attached USB devices:&lt;/nobr>%1&lt;/qt></source>
+ <comment>USB device tooltip</comment>
+ <translation>&lt;qt>&lt;nobr>បង្ហាញ​សកម្មភាព​របស់​ឧបករណ៍ USB ដែល​បានផ្ដាច់ ៖&lt;/nobr>%1&lt;/qt></translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;USB Controller is disabled&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>USB device tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;វត្ថុ​បញ្ជា USB ត្រូវ​បាន​បិទ&lt;/b&gt;&lt;/nobr&gt;</translation>
+ <source>&lt;br>&lt;nobr>&lt;b>No USB devices attached&lt;/b>&lt;/nobr></source>
+ <comment>USB device tooltip</comment>
+ <translation>&lt;br>&lt;nobr>&lt;b>គ្មាន​ឧបករណ៍ USB បាន​ផ្ដាច់&lt;/b>&lt;/nobr></translation>
</message>
<message>
- <source>&lt;qt&gt;&lt;nobr&gt;Indicates the activity of shared folders:&lt;/nobr&gt;%1&lt;/qt&gt;</source>
- <comment>Shared folders tooltip</comment>
- <translation>&lt;qt&gt;&lt;nobr&gt;បង្ហាញ​សកម្មភាព​របស់​ថត​ដែល​បានចែករំលែក ៖&lt;/nobr&gt;%1&lt;/qt&gt;</translation>
+ <source>&lt;br>&lt;nobr>&lt;b>USB Controller is disabled&lt;/b>&lt;/nobr></source>
+ <comment>USB device tooltip</comment>
+ <translation>&lt;br>&lt;nobr>&lt;b>វត្ថុ​បញ្ជា USB ត្រូវ​បាន​បិទ&lt;/b>&lt;/nobr></translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No shared folders&lt;/b&gt;&lt;/nobr&gt;</source>
- <comment>Shared folders tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;គ្មាន​ថត​បាន​ចែករំលែក​ទេ&lt;/b&gt;&lt;/nobr&gt;</translation>
+ <source>&lt;qt>&lt;nobr>Indicates the activity of shared folders:&lt;/nobr>%1&lt;/qt></source>
+ <comment>Shared folders tooltip</comment>
+ <translation>&lt;qt>&lt;nobr>បង្ហាញ​សកម្មភាព​របស់​ថត​ដែល​បានចែករំលែក ៖&lt;/nobr>%1&lt;/qt></translation>
</message>
<message>
- <source>Session I&amp;nformation Dialog</source>
- <translation>ប្រអប់​ព័ត៌មាន​សម័យ</translation>
+ <source>&lt;br>&lt;nobr>&lt;b>No shared folders&lt;/b>&lt;/nobr></source>
+ <comment>Shared folders tooltip</comment>
+ <translation>&lt;br>&lt;nobr>&lt;b>គ្មាន​ថត​បាន​ចែករំលែក​ទេ&lt;/b>&lt;/nobr></translation>
</message>
<message>
- <source>Show Session Information Dialog</source>
- <translation>បង្ហាញ​ប្រអប់​ព័ត៌មាន​សម័យ</translation>
+ <source>Sun xVM VirtualBox</source>
+ <translation>Sun xVM VirtualBox</translation>
</message>
<message>
- <source>&amp;Statistics...</source>
- <comment>debug action</comment>
- <translation>ស្ថិតិ...</translation>
+ <source>Session I&amp;nformation Dialog</source>
+ <translation>ប្រអប់​ព័ត៌មាន​សម័យ</translation>
</message>
<message>
- <source>&amp;Command Line...</source>
- <comment>debug action</comment>
- <translation>បន្ទាត់​ពាក្យ​បញ្ជា...</translation>
+ <source>Show Session Information Dialog</source>
+ <translation>បង្ហាញ​ប្រអប់​ព័ត៌មាន​សម័យ</translation>
</message>
<message>
- <source>Indicates whether the guest display auto-resize function is On (&lt;img src=:/auto_resize_on_16px.png/&gt;) or Off (&lt;img src=:/auto_resize_off_16px.png/&gt;). Note that this function requires Guest Additions to be installed in the guest OS.</source>
- <translation>បង្ហាញ​ថាតើ​ការបង្ហាញ​ម៉ាស៊ីន​​ភ្ញៀវ​មុខងារ​ផ្លាស់ប្ដូរ​ទំហំ​ដោយ​ស្វ័យ​ប្រវត្តិ​បើក (&lt;img src=:/auto_resize_on_16px.png/&gt;) ឬ​បិទ (&lt;img src=:/auto_resize_off_16px.png/&gt;) ។ ចំណាំ​ថា មុខងារ​នេះ​ត្រូវការ​ការ​បន្ថែម​ភ្ញៀវ​ដើម្បី​ដំឡើង​នៅក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់ម៉ាស៊ីន​ភ្ញៀវ ។</translation>
+ <source>&amp;Statistics...</source>
+ <comment>debug action</comment>
+ <translation>ស្ថិតិ...</translation>
</message>
<message>
- <source>Indicates whether the host mouse pointer is captured by the guest OS:&lt;br&gt;&lt;nobr&gt;&lt;img src=:/mouse_disabled_16px.png/&gt;&amp;nbsp;&amp;nbsp;pointer is not captured&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;img src=:/mouse_16px.png/&gt;&amp;nbsp;&amp;nbsp;pointer is captured&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;img src=:/mouse_seamless_16px.png/&gt;&amp;nbsp;&amp;nbsp;mouse integration (MI) is On&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;img src=:/mouse_can_seamless_16px.png/&gt;&amp;nbsp;&amp;nbsp;MI is Off, pointer is captured&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;img src=:/mouse_can_seamless_uncaptured_16px.png/&gt;&amp;nbsp;&amp;nbsp;MI is Off, pointer is not captured&lt;/nobr&gt;&lt;br&gt;Note that the mouse integration feature requires Guest Additions to be installed in the guest OS.</source>
- <translation>បង្ហាញថា​តើ​ទស្សន៍​ទ្រនិច​កណ្ដុរ​របស់​ម៉ាស៊ីន​ត្រូ​វបាន​ចាប់យក​ដោយ​ប្រព័ន្ធ​ប្រតបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ដែរឬទេ ៖&lt;br&gt;&lt;nobr&gt;&lt;img src=:/mouse_disabled_16px.png/&gt;&amp;nbsp;&amp;nbsp;ទស្សន៍​ទ្រនិច​មិន​ត្រូ​វបាន​ចាប់យក​ទេ&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;img src=:/mouse_16px.png/&gt;&amp;nbsp;&amp;nbsp;ទស្សន៍​ទ្រនិច​ត្រូវ​បាន​ចាប់យក&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;img src=:/mouse_seamless_16px.png/&gt;&amp;nbsp;&amp;nbsp;ការ​រួម​បញ្ចូល​កណ្ដុរ (MI) គឺ​បាន​បើក&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;img src=:/mouse_can_seamless_16px.png/&gt;&amp;nbsp;&amp;nbsp;MI បានបិទ, ទស្សន៍​ទ្រនិច​ត្រូវ​បាន​ចាប់យក&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;img src=:/mouse_can_seamless_uncaptured_16px.png/&gt;&amp;nbsp;&amp;nbsp;MI បាន​បិទ, ទស្សន៍ទ្រនិច​មិន​ត្រូ​វបាន​ចាប់យក​ទេ​&lt;/nobr&gt;&lt;br&gt;ចំណាំ​ថា លក្ខណៈពិសេស​រួម​បញ្ចូល​កណ្ដុរតម្រូវ​ឲ្យ​ដំឡើង​​ផ្នែកបន្ថែម​របស់​ម៉ាស៊ីន​ភ្ញៀវ​នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ។</translation>
+ <source>&amp;Command Line...</source>
+ <comment>debug action</comment>
+ <translation>បន្ទាត់​ពាក្យ​បញ្ជា...</translation>
</message>
<message>
- <source>Indicates whether the keyboard is captured by the guest OS (&lt;img src=:/hostkey_captured_16px.png/&gt;) or not (&lt;img src=:/hostkey_16px.png/&gt;).</source>
- <translation>បង្ហាញ​ថាតើ​ក្ដារចុច​ត្រូវ​បានចាប់យក​ដោយ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ (&lt;img src=:/hostkey_captured_16px.png/&gt;) ឬ​មិនមែន (&lt;img src=:/hostkey_16px.png/&gt;) ។</translation>
+ <source>Indicates whether the guest display auto-resize function is On (&lt;img src=:/auto_resize_on_16px.png/>) or Off (&lt;img src=:/auto_resize_off_16px.png/>). Note that this function requires Guest Additions to be installed in the guest OS.</source>
+ <translation>បង្ហាញ​ថាតើ​ការបង្ហាញ​ម៉ាស៊ីន​​ភ្ញៀវ​មុខងារ​ផ្លាស់ប្ដូរ​ទំហំ​ដោយ​ស្វ័យ​ប្រវត្តិ​បើក (&lt;img src=:/auto_resize_on_16px.png/>) ឬ​បិទ (&lt;img src=:/auto_resize_off_16px.png/>) ។ ចំណាំ​ថា មុខងារ​នេះ​ត្រូវការ​ការ​បន្ថែម​ភ្ញៀវ​ដើម្បី​ដំឡើង​នៅក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់ម៉ាស៊ីន​ភ្ញៀវ ។</translation>
</message>
<message>
- <source>Indicates whether the Remote Display (VRDP Server) is enabled (&lt;img src=:/vrdp_16px.png/&gt;) or not (&lt;img src=:/vrdp_disabled_16px.png/&gt;).</source>
- <translation>បង្ហាញ​ថាតើ​ការ​បង្ហាញ​ពី​ចម្ងាយ (ម៉ាស៊ីន​បម្រើ VRDP) ត្រូវ​បានបើក (&lt;img src=:/vrdp_16px.png/&gt;) ឬ​អត់ (&lt;img src=:/vrdp_disabled_16px.png/&gt;) ។</translation>
+ <source>Indicates whether the host mouse pointer is captured by the guest OS:&lt;br>&lt;nobr>&lt;img src=:/mouse_disabled_16px.png/>&amp;nbsp;&amp;nbsp;pointer is not captured&lt;/nobr>&lt;br>&lt;nobr>&lt;img src=:/mouse_16px.png/>&amp;nbsp;&amp;nbsp;pointer is captured&lt;/nobr>&lt;br>&lt;nobr>&lt;img src=:/mouse_seamless_16px.png/>&amp;nbsp;&amp;nbsp;mouse integration (MI) is On&lt;/nobr>&lt;br>&lt;nobr>&lt;img src=:/mouse_can_seamless_16px.png/>&amp;nbsp;&amp;nbsp;MI is Off, pointer is captured&lt;/nobr>&lt;br>&lt;nobr>&lt;img src=:/mouse_can_seamless_uncaptured_16px.png/>&amp;nbsp;&amp;nbsp;MI is Off, pointer is not captured&lt;/nobr>&lt;br>Note that the mouse integration feature requires Guest Additions to be installed in the guest OS.</source>
+ <translation>បង្ហាញថា​តើ​ទស្សន៍​ទ្រនិច​កណ្ដុរ​របស់​ម៉ាស៊ីន​ត្រូ​វបាន​ចាប់យក​ដោយ​ប្រព័ន្ធ​ប្រតបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ដែរឬទេ ៖&lt;br>&lt;nobr>&lt;img src=:/mouse_disabled_16px.png/>&amp;nbsp;&amp;nbsp;ទស្សន៍​ទ្រនិច​មិន​ត្រូ​វបាន​ចាប់យក​ទេ&lt;/nobr>&lt;br>&lt;nobr>&lt;img src=:/mouse_16px.png/>&amp;nbsp;&amp;nbsp;ទស្សន៍​ទ្រនិច​ត្រូវ​បាន​ចាប់យក&lt;/nobr>&lt;br>&lt;nobr>&lt;img src=:/mouse_seamless_16px.png/>&amp;nbsp;&amp;nbsp;ការ​រួម​បញ្ចូល​កណ្ដុរ (MI) គឺ​បាន​បើក&lt;/nobr>&lt;br>&lt;nobr>&lt;img src=:/mouse_can_seamless_16px.png/>&amp;nbsp;&amp;nbsp;MI បានបិទ, ទស្សន៍​ទ្រនិច​ត្រូវ​បាន​ចាប់យក&lt;/nobr>&lt;br>&lt;nobr>&lt;img src=:/mouse_can_seamless_uncaptured_16px.png/>&amp;nbsp;&amp;nbsp;MI បាន​បិទ, ទស្សន៍ទ្រនិច​មិន​ត្រូ​វបាន​ចាប់យក​ទេ​&lt;/nobr>&lt;br>ចំណាំ​ថា លក្ខណៈពិសេស​រួម​បញ្ចូល​កណ្ដុរតម្រូវ​ឲ្យ​ដំឡើង​​ផ្នែកបន្ថែម​របស់​ម៉ាស៊ីន​ភ្ញៀវ​នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ។</translation>
</message>
<message>
- <source>&amp;Logging...</source>
- <comment>debug action</comment>
- <translation>កំពុង​ធ្វើ​កំណត់​ហេតុ...</translation>
+ <source>Indicates whether the keyboard is captured by the guest OS (&lt;img src=:/hostkey_captured_16px.png/>) or not (&lt;img src=:/hostkey_16px.png/>).</source>
+ <translation>បង្ហាញ​ថាតើ​ក្ដារចុច​ត្រូវ​បានចាប់យក​ដោយ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ (&lt;img src=:/hostkey_captured_16px.png/>) ឬ​មិនមែន (&lt;img src=:/hostkey_16px.png/>) ។</translation>
</message>
<message>
- <source>Shows the currently assigned Host key.&lt;br&gt;This key, when pressed alone, toggles the keyboard and mouse capture state. It can also be used in combination with other keys to quickly perform actions from the main menu.</source>
- <translation>បង្ហាញ​គ្រាប់ចុច​ម៉ាស៊ីន​ដែលបានផ្ដល់​បច្ចុប្បន្ន ។&lt;br&gt;គ្រាប់ចុច​នេះ នៅពេល​ចុច​យូរ បិទ/បើក​ក្ដារចុច ហើយ​ស្ថានភាព​ចាប់យក​កណ្ដុរ ។ វា​អាច​ត្រូវ​បាន​ប្រើ​ក្នុង​បន្សំ​ជា​មួយ​គ្រាប់ចុច​ផ្សេង ដើម្បី​អនុវត្ត​សកម្មភាព​យ៉ាង​លឿន ពី​ម៉ឺនុយ​ចម្បង ។</translation>
+ <source>Indicates whether the Remote Display (VRDP Server) is enabled (&lt;img src=:/vrdp_16px.png/>) or not (&lt;img src=:/vrdp_disabled_16px.png/>).</source>
+ <translation>បង្ហាញ​ថាតើ​ការ​បង្ហាញ​ពី​ចម្ងាយ (ម៉ាស៊ីន​បម្រើ VRDP) ត្រូវ​បានបើក (&lt;img src=:/vrdp_16px.png/>) ឬ​អត់ (&lt;img src=:/vrdp_disabled_16px.png/>) ។</translation>
</message>
<message>
- <source>Sun VirtualBox</source>
- <translation type="unfinished"></translation>
+ <source>&amp;Logging...</source>
+ <comment>debug action</comment>
+ <translation>កំពុង​ធ្វើ​កំណត់​ហេតុ...</translation>
</message>
<message>
- <source>Indicates the status of the hardware virtualization features used by this virtual machine:&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%1:&lt;/b&gt;&amp;nbsp;%2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%3:&lt;/b&gt;&amp;nbsp;%4&lt;/nobr&gt;</source>
- <comment>Virtualization Stuff LED</comment>
- <translation type="unfinished"></translation>
+ <source>Shows the currently assigned Host key.&lt;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>បង្ហាញ​គ្រាប់ចុច​ម៉ាស៊ីន​ដែលបានផ្ដល់​បច្ចុប្បន្ន ។&lt;br>គ្រាប់ចុច​នេះ នៅពេល​ចុច​យូរ បិទ/បើក​ក្ដារចុច ហើយ​ស្ថានភាព​ចាប់យក​កណ្ដុរ ។ វា​អាច​ត្រូវ​បាន​ប្រើ​ក្នុង​បន្សំ​ជា​មួយ​គ្រាប់ចុច​ផ្សេង ដើម្បី​អនុវត្ត​សកម្មភាព​យ៉ាង​លឿន ពី​ម៉ឺនុយ​ចម្បង ។</translation>
</message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;%1:&lt;/b&gt;&amp;nbsp;%2&lt;/nobr&gt;</source>
- <comment>Virtualization Stuff LED</comment>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxDownloaderWgt</name>
<message>
- <source>The download process has been cancelled by the user.</source>
- <translation>ដំណើរការ​​ទាញយក​ត្រូវ​បានបោះបង់​ដោយ​អ្នកប្រើ​ ។</translation>
- </message>
-</context>
-<context>
- <name>VBoxEmptyFileSelector</name>
- <message>
- <source>&amp;Choose...</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>VBoxExportApplianceWzd</name>
- <message>
- <source>Select a file to export into</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Open Virtualization Format (%1)</source>
- <translation type="unfinished"></translation>
+ <source>The download process has been cancelled by the user.</source>
+ <translation>ដំណើរការ​​ទាញយក​ត្រូវ​បានបោះបង់​ដោយ​អ្នកប្រើ​ ។</translation>
</message>
- <message>
- <source>Appliance</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Exporting Appliance ...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Appliance Export Wizard</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Welcome to the Appliance Export Wizard!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;This wizard will guide you through the process of exporting an appliance. &lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Use the &lt;span style=&quot; font-weight:600;&quot;&gt;Next&lt;/span&gt; button to go the next page of the wizard and the &lt;span style=&quot; font-weight:600;&quot;&gt;Back&lt;/span&gt; button to return to the previous page.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Please select the virtual machines that should be exported to the appliance. You can select more than one. Please note that these machines have to be turned off before they can be exported.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&lt; &amp;Back</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Next &gt;</source>
- <translation type="unfinished">បន្ទាប់ &gt;</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Appliance Export Settings</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Here you can change additional configuration values of the selected virtual machines. You can modify most of the shown properties by double-clicking on the items.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Restore Defaults</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Write in legacy OVF 0.9 format for compatibility with other virtualization products.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Write legacy OVF 0.9</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Export &gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Please choose a filename to export the OVF in.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Please complete the additionally fields like the username, password and the bucket. Finally you have to provide a filename for the OVF target.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Please complete the additionally fields like the username, password, hostname and the bucket. Finally you have to provide a filename for the OVF target.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Checking files ...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Removing files ...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Please specify the target for the OVF export. You can choose between a local file system export, the uploading of the OVF to the Sun Cloud service or an S3 storage server.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Local Filesystem </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Sun &amp;Cloud</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Simple Storage System (S3)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Username:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Password:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;File:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Bucket:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Hostname:</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxFilePathSelectorWidget</name>
<message>
- <source>&lt;reset to default&gt;</source>
- <translation>&lt;កំណត់​ទៅ​លំនាំដើម​ឡើងវិញ&gt;</translation>
+ <source>&lt;reset to default></source>
+ <translation>&lt;កំណត់​ទៅ​លំនាំដើម​ឡើងវិញ></translation>
</message>
<message>
- <source>The actual default path value will be displayed after accepting the changes and opening this dialog again.</source>
- <translation>តម្លៃ​ផ្លូវ​លំនាំដើម​ពិតប្រាកដ​នឹង​ត្រូវ​បានបង្ហាញ​បន្ទាប់ពី​ទទួល​ការ​ផ្លាស់ប្ដូរ និង​បើក​ប្រអប់នេះ​ម្ដង​ទៀត ។</translation>
+ <source>The actual default path value will be displayed after accepting the changes and opening this dialog again.</source>
+ <translation>តម្លៃ​ផ្លូវ​លំនាំដើម​ពិតប្រាកដ​នឹង​ត្រូវ​បានបង្ហាញ​បន្ទាប់ពី​ទទួល​ការ​ផ្លាស់ប្ដូរ និង​បើក​ប្រអប់នេះ​ម្ដង​ទៀត ។</translation>
</message>
<message>
- <source>&lt;not selected&gt;</source>
- <translation>&lt;មិន​បានជ្រើស&gt;</translation>
+ <source>&lt;not selected></source>
+ <translation>&lt;មិន​បានជ្រើស></translation>
</message>
<message>
- <source>Please use the &lt;b&gt;Other...&lt;/b&gt; item from the drop-down list to select a desired path.</source>
- <translation>សូម​ប្រើធាតុ &lt;b&gt;ផ្សេងៗ...&lt;/b&gt; ពី​បញ្ជី​ទម្លាក់ចុះ​ដើម្បី​ជ្រើស​ផ្លូវ​ដែល​ចង់​បាន ។</translation>
+ <source>Please use the &lt;b>Other...&lt;/b> item from the drop-down list to select a desired path.</source>
+ <translation>សូម​ប្រើធាតុ &lt;b>ផ្សេងៗ...&lt;/b> ពី​បញ្ជី​ទម្លាក់ចុះ​ដើម្បី​ជ្រើស​ផ្លូវ​ដែល​ចង់​បាន ។</translation>
</message>
<message>
- <source>Other...</source>
- <translation>ផ្សេងៗ...</translation>
+ <source>Other...</source>
+ <translation>ផ្សេងៗ...</translation>
</message>
<message>
- <source>Reset</source>
- <translation>កំណត់​ឡើង​វិញ</translation>
+ <source>Reset</source>
+ <translation>កំណត់​ឡើង​វិញ</translation>
</message>
<message>
- <source>Opens a dialog to select a different folder.</source>
- <translation>បើក​ប្រអប់ ដើម្បី​ជ្រើស​ថត​ផ្សេង ។</translation>
+ <source>Opens a dialog to select a different folder.</source>
+ <translation>បើក​ប្រអប់ ដើម្បី​ជ្រើស​ថត​ផ្សេង ។</translation>
</message>
<message>
- <source>Resets the folder path to the default value.</source>
- <translation>កំណត់​ផ្លូវថត​ទៅ​តម្លៃ​លំនាំដើម​ឡើង​វិញ ។</translation>
+ <source>Resets the folder path to the default value.</source>
+ <translation>កំណត់​ផ្លូវថត​ទៅ​តម្លៃ​លំនាំដើម​ឡើង​វិញ ។</translation>
</message>
<message>
- <source>Opens a dialog to select a different file.</source>
- <translation>បើក​ប្រអប់​ដើម្បី​ជ្រើស​ឯកសារ​ផ្សេង ។</translation>
+ <source>Opens a dialog to select a different file.</source>
+ <translation>បើក​ប្រអប់​ដើម្បី​ជ្រើស​ឯកសារ​ផ្សេង ។</translation>
</message>
<message>
- <source>Resets the file path to the default value.</source>
- <translation>កំណត់​ផ្លូវ​ឯកសារ​ទៅ​តម្លៃ​លំនាំដើម​ឡើង​វិញ ។</translation>
+ <source>Resets the file path to the default value.</source>
+ <translation>កំណត់​ផ្លូវ​ឯកសារ​ទៅ​តម្លៃ​លំនាំដើម​ឡើង​វិញ ។</translation>
</message>
<message>
- <source>&amp;Copy</source>
- <translation>ចម្លង</translation>
+ <source>&amp;Copy</source>
+ <translation>ចម្លង</translation>
</message>
<message>
- <source>Please type the desired folder path here.</source>
- <translation>សូម​វាយ​ផ្លូវ​ថត​ដែល​ចង់​បាននៅ​ទីនេះ ។</translation>
+ <source>Please type the desired folder path here.</source>
+ <translation>សូម​វាយ​ផ្លូវ​ថត​ដែល​ចង់​បាននៅ​ទីនេះ ។</translation>
</message>
<message>
- <source>Please type the desired file path here.</source>
- <translation>សូម​វាយ​ផ្លូវ​ឯកសារ​ដែល​ចង់​បាន​នៅ​ទីនេះ ។</translation>
+ <source>Please type the desired file path here.</source>
+ <translation>សូម​វាយ​ផ្លូវ​ឯកសារ​ដែល​ចង់​បាន​នៅ​ទីនេះ ។</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxGLSettingsDlg</name>
<message>
- <source>General</source>
- <translation>ទូទៅ</translation>
+ <source>General</source>
+ <translation>ទូទៅ</translation>
</message>
<message>
- <source>Input</source>
- <translation>បញ្ចូល</translation>
+ <source>Input</source>
+ <translation>បញ្ចូល</translation>
</message>
<message>
- <source>Update</source>
- <translation>ធ្វើ​ឲ្យ​ទាន់សម័យ</translation>
+ <source>Update</source>
+ <translation>ធ្វើ​ឲ្យ​ទាន់សម័យ</translation>
</message>
<message>
- <source>Language</source>
- <translation>ភាសា</translation>
+ <source>Language</source>
+ <translation>ភាសា</translation>
</message>
<message>
- <source>USB</source>
- <translation>USB</translation>
+ <source>USB</source>
+ <translation>USB</translation>
</message>
<message>
- <source>VirtualBox - %1</source>
- <translation>VirtualBox - %1</translation>
+ <source>VirtualBox - %1</source>
+ <translation>VirtualBox - %1</translation>
</message>
- <message>
- <source>Network</source>
- <translation type="unfinished">បណ្ដាញ</translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxGLSettingsGeneral</name>
<message>
- <source>Displays the path to the default virtual machine folder. This folder is used, if not explicitly specified otherwise, when creating new virtual machines.</source>
- <translation>បង្ហាញ​ផ្លូវ​ទៅ​កាន់​ថត​ម៉ាស៊ីន​និម្មិត​លំនាំដើម ។ ថត​នេះ​ត្រូវ​បាន​ប្រើ ប្រសិនបើ​មិន​បានបញ្ជាក់ជាក់លាក់​ទេ នៅពេល​បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី ។</translation>
- </message>
- <message>
- <source>Displays the path to the library that provides authentication for Remote Display (VRDP) clients.</source>
- <translation>បង្ហាញ​ផ្លូវ​ទៅ​បណ្ណាល័យ ដែល​ផ្ដល់​នូវ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​សម្រាប់​ម៉ាស៊ីន​ភ្ញៀវ​បង្ហាញ​ពី​ចម្ងាយ (​VRDP) ។</translation>
- </message>
- <message>
- <source>Default &amp;Hard Disk Folder:</source>
- <translation>ថត​ថាសរឹង​លំនាំដើម ៖</translation>
+ <source>Displays the path to the default virtual machine folder. This folder is used, if not explicitly specified otherwise, when creating new virtual machines.</source>
+ <translation>បង្ហាញ​ផ្លូវ​ទៅ​កាន់​ថត​ម៉ាស៊ីន​និម្មិត​លំនាំដើម ។ ថត​នេះ​ត្រូវ​បាន​ប្រើ ប្រសិនបើ​មិន​បានបញ្ជាក់ជាក់លាក់​ទេ នៅពេល​បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី ។</translation>
</message>
<message>
- <source>Default &amp;Machine Folder:</source>
- <translation>ថត​ម៉ាស៊ីន​លំនាំដើម ៖</translation>
+ <source>Displays the path to the library that provides authentication for Remote Display (VRDP) clients.</source>
+ <translation>បង្ហាញ​ផ្លូវ​ទៅ​បណ្ណាល័យ ដែល​ផ្ដល់​នូវ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​សម្រាប់​ម៉ាស៊ីន​ភ្ញៀវ​បង្ហាញ​ពី​ចម្ងាយ (​VRDP) ។</translation>
</message>
<message>
- <source>V&amp;RDP Authentication Library:</source>
- <translation>បណ្ណាល័យ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់ VRDP ៖</translation>
+ <source>Default &amp;Hard Disk Folder:</source>
+ <translation>ថត​ថាសរឹង​លំនាំដើម ៖</translation>
</message>
<message>
- <source>Displays the path to the default hard disk folder. This folder is used, if not explicitly specified otherwise, when adding existing or creating new virtual hard disks.</source>
- <translation>បង្ហាញ​ផ្លូវ​ទៅ​កាន់​ថត​ថាសរឹង​លំនាំដើម ។ ថត​នេះ​ត្រូ​វបានប្រើ ប្រសិនបើ​គ្មាន​ការ​កំណត់​ជាក់លាក់ នៅពេលបន្ថែម​ថាសរឹង​និម្មិត​ថ្មី​ ឬ​មាន​ស្រាប់ ។</translation>
+ <source>Default &amp;Machine Folder:</source>
+ <translation>ថត​ម៉ាស៊ីន​លំនាំដើម ៖</translation>
</message>
<message>
- <source>When checked, the application will provide an icon with the context menu in the system tray.</source>
- <translation>នៅពេល​បាន​គូស​ធីក កម្មវិធី​នឹង​ផ្ដល់​នូវ​រូបតំណាង​ដែល​មាន​ម៉ឺនុយ​បរិបទ​នៅ​ក្នុង​ថាស​ប្រព័ន្ធ ។</translation>
+ <source>V&amp;RDP Authentication Library:</source>
+ <translation>បណ្ណាល័យ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់ VRDP ៖</translation>
</message>
<message>
- <source>&amp;Show System Tray Icon</source>
- <translation>បង្ហាញ​រូបតំណាង​ថាស​ប្រព័ន្ធ</translation>
+ <source>Displays the path to the default hard disk folder. This folder is used, if not explicitly specified otherwise, when adding existing or creating new virtual hard disks.</source>
+ <translation>បង្ហាញ​ផ្លូវ​ទៅ​កាន់​ថត​ថាសរឹង​លំនាំដើម ។ ថត​នេះ​ត្រូ​វបានប្រើ ប្រសិនបើ​គ្មាន​ការ​កំណត់​ជាក់លាក់ នៅពេលបន្ថែម​ថាសរឹង​និម្មិត​ថ្មី​ ឬ​មាន​ស្រាប់ ។</translation>
</message>
<message>
- <source>When checked, the Dock Icon will reflect the VM window content in realtime.</source>
- <translation type="unfinished"></translation>
+ <source>When checked, the application will provide an icon with the context menu in the system tray.</source>
+ <translation>នៅពេល​បាន​គូស​ធីក កម្មវិធី​នឹង​ផ្ដល់​នូវ​រូបតំណាង​ដែល​មាន​ម៉ឺនុយ​បរិបទ​នៅ​ក្នុង​ថាស​ប្រព័ន្ធ ។</translation>
</message>
<message>
- <source>&amp;Dock Icon Realtime Preview</source>
- <translation type="unfinished"></translation>
+ <source>&amp;Show System Tray Icon</source>
+ <translation>បង្ហាញ​រូបតំណាង​ថាស​ប្រព័ន្ធ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxGLSettingsInput</name>
<message>
- <source>Host &amp;Key:</source>
- <translation>គ្រាប់ចុច​ម៉ាស៊ីន ៖</translation>
+ <source>Host &amp;Key:</source>
+ <translation>គ្រាប់ចុច​ម៉ាស៊ីន ៖</translation>
</message>
<message>
- <source>Displays the key used as a Host Key in the VM window. Activate the entry field and press a new Host Key. Note that alphanumeric, cursor movement and editing keys cannot be used as a Host Key.</source>
- <translation>បង្ហាញគ្រាប់ចុច​ដែល​បាន​ប្រើ​ជា​គ្រាប់​ចុច​ម៉ាស៊ីន​នៅ​ក្នុង​បង្អួច VM ។ ធ្វើ​ឲ្យ​វាល​ធាតុ​សកម្ម ហើយ​ចុច​គ្រាប់ចុច​ម៉ាស៊ីន​ថ្មី ។ ចំណាំថា​លេខ ចលនា​ទស្សន៍ទ្រនិច និង​គ្រាប់ចុចកែសម្រួល​មិនអាច​ត្រូវ​បាន​ប្រើ​ជា​គ្រាប់ចុច​ម៉ាស៊ីន​ទេ ។</translation>
+ <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 as a Host Key.</source>
+ <translation>បង្ហាញគ្រាប់ចុច​ដែល​បាន​ប្រើ​ជា​គ្រាប់​ចុច​ម៉ាស៊ីន​នៅ​ក្នុង​បង្អួច VM ។ ធ្វើ​ឲ្យ​វាល​ធាតុ​សកម្ម ហើយ​ចុច​គ្រាប់ចុច​ម៉ាស៊ីន​ថ្មី ។ ចំណាំថា​លេខ ចលនា​ទស្សន៍ទ្រនិច និង​គ្រាប់ចុចកែសម្រួល​មិនអាច​ត្រូវ​បាន​ប្រើ​ជា​គ្រាប់ចុច​ម៉ាស៊ីន​ទេ ។</translation>
</message>
<message>
- <source>When checked, the keyboard is automatically captured every time the VM window is activated. When the keyboard is captured, all keystrokes (including system ones like Alt-Tab) are directed to the VM.</source>
- <translation>នៅពេល​បានគូស​ធីក ក្ដារចុច​ត្រូ​វបាន​ចាប់យក​ដោយ​ស្វ័យ​ប្រវត្តិ​រាល់ពេល​ដែល​បង្អួច VM ត្រូវ​បាន​ធ្វើ​ឲ្យ​សកម្ម ។ នៅពេល​ក្ដារចុច​ត្រូវ​បាន​ចាប់យក keystrokes (រួម​មាន​ប្រព័ន្ធ​​មួយ ដូចជា ជំនួស(Alt)-ថេប(Tab)) ត្រូវ​បាន​បញ្ជូន​ទៅ​កាន់ VM ។</translation>
+ <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>នៅពេល​បានគូស​ធីក ក្ដារចុច​ត្រូ​វបាន​ចាប់យក​ដោយ​ស្វ័យ​ប្រវត្តិ​រាល់ពេល​ដែល​បង្អួច VM ត្រូវ​បាន​ធ្វើ​ឲ្យ​សកម្ម ។ នៅពេល​ក្ដារចុច​ត្រូវ​បាន​ចាប់យក keystrokes (រួម​មាន​ប្រព័ន្ធ​​មួយ ដូចជា ជំនួស(Alt)-ថេប(Tab)) ត្រូវ​បាន​បញ្ជូន​ទៅ​កាន់ VM ។</translation>
</message>
<message>
- <source>&amp;Auto Capture Keyboard</source>
- <translation>ចាប់យក​ក្ដារចុច​ដោយ​ស្វ័យ​ប្រវត្តិ</translation>
+ <source>&amp;Auto Capture Keyboard</source>
+ <translation>ចាប់យក​ក្ដារចុច​ដោយ​ស្វ័យ​ប្រវត្តិ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxGLSettingsLanguage</name>
<message>
- <source> (built-in)</source>
- <comment>Language</comment>
- <translation> (ជាប់)</translation>
- </message>
- <message>
- <source>&lt;unavailable&gt;</source>
- <comment>Language</comment>
- <translation>&lt;មិនអាច​ប្រើបាន&gt;</translation>
- </message>
- <message>
- <source>&lt;unknown&gt;</source>
- <comment>Author(s)</comment>
- <translation>&lt;មិនស្គាល់&gt;</translation>
- </message>
- <message>
- <source>Default</source>
- <comment>Language</comment>
- <translation>លំនាំដើម</translation>
- </message>
- <message>
- <source>Language:</source>
- <translation>ភាសា ៖</translation>
- </message>
- <message>
- <source>&amp;Interface Language:</source>
- <translation>ភាសា​ចំណុច​ប្រទាក់ ៖</translation>
- </message>
- <message>
- <source>Lists all available user interface languages. The effective language is written in &lt;b&gt;bold&lt;/b&gt;. Select &lt;i&gt;Default&lt;/i&gt; to reset to the system default language.</source>
- <translation>រាយ​ភាសា​ចំណុច​ប្រទាក់​អ្នក​ប្រើ​ដែល​អាច​ប្រើ​បាន ។ ភាសា​ដែល​មានប្រសិទ្ធភាព​ត្រូវ​បាន​សរសេរ​ &lt;b&gt;ដិត&lt;/b&gt; ។ ជ្រើស &lt;i&gt;លំនាំដើម&lt;/i&gt; ដើម្បី​កំណត់​ភាសា​លំនាំដើម​របស់​ប្រព័ន្ធ​ឡើង​វិញ ។</translation>
- </message>
- <message>
- <source>Name</source>
- <translation>ឈ្មោះ</translation>
- </message>
- <message>
- <source>Id</source>
- <translation>លេខសម្គាល់</translation>
- </message>
- <message>
- <source>Language</source>
- <translation>ភាសា</translation>
- </message>
- <message>
- <source>Author</source>
- <translation>យុថ្កា</translation>
- </message>
- <message>
- <source>Author(s):</source>
- <translation>យុថ្កា ៖</translation>
- </message>
-</context>
-<context>
- <name>VBoxGLSettingsNetwork</name>
- <message>
- <source>%1 network</source>
- <comment>&lt;adapter name&gt; network</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>host IPv4 address of &lt;b&gt;%1&lt;/b&gt; is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>host IPv4 network mask of &lt;b&gt;%1&lt;/b&gt; is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>host IPv6 address of &lt;b&gt;%1&lt;/b&gt; is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>DHCP server address of &lt;b&gt;%1&lt;/b&gt; is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>DHCP server network mask of &lt;b&gt;%1&lt;/b&gt; is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>DHCP lower address bound of &lt;b&gt;%1&lt;/b&gt; is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>DHCP upper address bound of &lt;b&gt;%1&lt;/b&gt; is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Adapter</source>
- <translation type="unfinished"></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>IPv4 Address</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Not set</source>
- <comment>address</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>IPv4 Network Mask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Not set</source>
- <comment>mask</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>IPv6 Address</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>IPv6 Network Mask Length</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Not set</source>
- <comment>length</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>DHCP Server</source>
- <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>Address</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Network Mask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Lower Bound</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Not set</source>
- <comment>bound</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Upper Bound</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Add host-only network</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Remove host-only network</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Edit host-only network</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Performing</source>
- <comment>creating/removing host-only network</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Host-only Networks:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Lists all available host-only networks.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Name</source>
- <translation type="unfinished">ឈ្មោះ</translation>
+ <source> (built-in)</source>
+ <comment>Language</comment>
+ <translation> (ជាប់)</translation>
</message>
-</context>
-<context>
- <name>VBoxGLSettingsNetworkDetails</name>
<message>
- <source>Host-only Network Details</source>
- <translation type="unfinished"></translation>
+ <source>&lt;unavailable></source>
+ <comment>Language</comment>
+ <translation>&lt;មិនអាច​ប្រើបាន></translation>
</message>
<message>
- <source>&amp;Adapter</source>
- <translation type="unfinished"></translation>
+ <source>&lt;unknown></source>
+ <comment>Author(s)</comment>
+ <translation>&lt;មិនស្គាល់></translation>
</message>
<message>
- <source>Manual &amp;Configuration</source>
- <translation type="unfinished"></translation>
+ <source>Default</source>
+ <comment>Language</comment>
+ <translation>លំនាំដើម</translation>
</message>
<message>
- <source>Use manual configuration for this host-only network adapter.</source>
- <translation type="unfinished"></translation>
+ <source>Language:</source>
+ <translation>ភាសា ៖</translation>
</message>
<message>
- <source>&amp;IPv4 Address:</source>
- <translation type="unfinished"></translation>
+ <source>&amp;Interface Language:</source>
+ <translation>ភាសា​ចំណុច​ប្រទាក់ ៖</translation>
</message>
<message>
- <source>Displays the host IPv4 address for this adapter.</source>
- <translation type="unfinished"></translation>
+ <source>Lists all available user interface languages. The effective language is written in &lt;b>bold&lt;/b>. Select &lt;i>Default&lt;/i> to reset to the system default language.</source>
+ <translation>រាយ​ភាសា​ចំណុច​ប្រទាក់​អ្នក​ប្រើ​ដែល​អាច​ប្រើ​បាន ។ ភាសា​ដែល​មានប្រសិទ្ធភាព​ត្រូវ​បាន​សរសេរ​ &lt;b>ដិត&lt;/b> ។ ជ្រើស &lt;i>លំនាំដើម&lt;/i> ដើម្បី​កំណត់​ភាសា​លំនាំដើម​របស់​ប្រព័ន្ធ​ឡើង​វិញ ។</translation>
</message>
<message>
- <source>IPv4 Network &amp;Mask:</source>
- <translation type="unfinished"></translation>
+ <source>Name</source>
+ <translation>ឈ្មោះ</translation>
</message>
<message>
- <source>Displays the host IPv4 network mask for this adapter.</source>
- <translation type="unfinished"></translation>
+ <source>Id</source>
+ <translation>លេខសម្គាល់</translation>
</message>
<message>
- <source>I&amp;Pv6 Address:</source>
- <translation type="unfinished"></translation>
+ <source>Language</source>
+ <translation>ភាសា</translation>
</message>
<message>
- <source>Displays the host IPv6 address for this adapter if IPv6 is supported.</source>
- <translation type="unfinished"></translation>
+ <source>Author</source>
+ <translation>អ្នកបកប្រែ</translation>
</message>
<message>
- <source>IPv6 Network Mask &amp;Length:</source>
- <translation type="unfinished"></translation>
+ <source>Author(s):</source>
+ <translation>យុថ្កា ៖</translation>
</message>
- <message>
- <source>Displays the host IPv6 network mask prefix length for this adapter if IPv6 is supported.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;DHCP Server</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Enable Server</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Indicates whether the DHCP Server is enabled on machine startup or not.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Server Add&amp;ress:</source>
- <translation type="unfinished"></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>
- </message>
- <message>
- <source>Server &amp;Mask:</source>
- <translation type="unfinished"></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>
- </message>
- <message>
- <source>&amp;Lower Address Bound:</source>
- <translation type="unfinished"></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>
- </message>
- <message>
- <source>&amp;Upper Address Bound:</source>
- <translation type="unfinished"></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>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxGLSettingsUpdate</name>
<message>
- <source>When checked, the application will periodically connect to the VirtualBox website and check whether a new VirtualBox version is available.</source>
- <translation>នៅពេល​បាន​គូសធីក កម្មវិធី​នឹង​តភ្ជាប់​ទៅ​កាន់តំបន់បណ្ដាញ VirtualBox តាម​កាល​កំណត់ ហើយ​ពិនិត្យ​មើល​ថាតើ​មានកំណែ VirtualBox ដែរឬទេ ។</translation>
+ <source>When checked, the application will periodically connect to the VirtualBox website and check whether a new VirtualBox version is available.</source>
+ <translation>នៅពេល​បាន​គូសធីក កម្មវិធី​នឹង​តភ្ជាប់​ទៅ​កាន់តំបន់បណ្ដាញ VirtualBox តាម​កាល​កំណត់ ហើយ​ពិនិត្យ​មើល​ថាតើ​មានកំណែ VirtualBox ដែរឬទេ ។</translation>
</message>
<message>
- <source>&amp;Check for updates</source>
- <translation>ពិនិត្យ​មើល​ភាព​ទាន់សម័យ</translation>
+ <source>&amp;Check for updates</source>
+ <translation>ពិនិត្យ​មើល​ភាព​ទាន់សម័យ</translation>
</message>
<message>
- <source>&amp;Once per:</source>
- <translation>ម្ដង​ក្នុង ៖</translation>
+ <source>&amp;Once per:</source>
+ <translation>ម្ដង​ក្នុង ៖</translation>
</message>
<message>
- <source>Specifies how often the new version check should be performed. Note that if you want to completely disable this check, just clear the above check box.</source>
- <translation>បញ្ជាក់​វិធី​ដែល​កំណែ​ថ្មី​ពិនិត្យ​មើល​គួរ​ត្រូវ​បាន​អនុវត្ត​ ។ ចំណាំថា ប្រសិនបើ​ង្នក​ចង់​បញ្ចប់ បិទ​ការ​ពិនិត្យនេះ គ្រាន់តែ​ជម្រះ​ប្រអប់​គូស​ធីក​ខាង​លើ ។</translation>
+ <source>Specifies how often the new version check should be performed. Note that if you want to completely disable this check, just clear the above check box.</source>
+ <translation>បញ្ជាក់​វិធី​ដែល​កំណែ​ថ្មី​ពិនិត្យ​មើល​គួរ​ត្រូវ​បាន​អនុវត្ត​ ។ ចំណាំថា ប្រសិនបើ​ង្នក​ចង់​បញ្ចប់ បិទ​ការ​ពិនិត្យនេះ គ្រាន់តែ​ជម្រះ​ប្រអប់​គូស​ធីក​ខាង​លើ ។</translation>
</message>
<message>
- <source>Next Check:</source>
- <translation>ការ​ពិនិត្យ​មើល​បន្ទាប់ ៖</translation>
+ <source>Next Check:</source>
+ <translation>ការ​ពិនិត្យ​មើល​បន្ទាប់ ៖</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxGlobal</name>
<message>
- <source>Unknown device %1:%2</source>
- <comment>USB device details</comment>
- <translation>មិនស្គាល់​ឧបករណ៍ %1 ៖ %2</translation>
- </message>
- <message>
- <source>&lt;nobr&gt;Vendor ID: %1&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Product ID: %2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Revision: %3&lt;/nobr&gt;</source>
- <comment>USB device tooltip</comment>
- <translation>&lt;nobr&gt;លេខសម្គាល់​អ្នកលក់ ៖ %1&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;លេខសម្គាល់​អ្នក​ផលិត ៖ %2&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;ការ​ពិនិត្យ​ឡើង​វិញ ៖ %3&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;Serial No. %1&lt;/nobr&gt;</source>
- <comment>USB device tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;លេខ​ស៊េរី %1&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>&lt;br&gt;&lt;nobr&gt;State: %1&lt;/nobr&gt;</source>
- <comment>USB device tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;ស្ថានភាព ៖ %1&lt;/nobr&gt;</translation>
- </message>
- <message>
- <source>Name</source>
- <comment>details report</comment>
- <translation>ឈ្មោះ</translation>
- </message>
- <message>
- <source>OS Type</source>
- <comment>details report</comment>
- <translation>ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ</translation>
- </message>
- <message>
- <source>Base Memory</source>
- <comment>details report</comment>
- <translation>សតិ​មូលដ្ឋាន</translation>
+ <source>Unknown device %1:%2</source>
+ <comment>USB device details</comment>
+ <translation>មិនស្គាល់​ឧបករណ៍ %1 ៖ %2</translation>
</message>
<message>
- <source>&lt;nobr&gt;%3 MB&lt;/nobr&gt;</source>
- <comment>details report</comment>
- <translation type="obsolete">&lt;nobr&gt;%3 មេកាបៃ&lt;/nobr&gt;</translation>
+ <source>&lt;nobr>Vendor ID: %1&lt;/nobr>&lt;br>&lt;nobr>Product ID: %2&lt;/nobr>&lt;br>&lt;nobr>Revision: %3&lt;/nobr></source>
+ <comment>USB device tooltip</comment>
+ <translation>&lt;nobr>លេខសម្គាល់​អ្នកលក់ ៖ %1&lt;/nobr>&lt;br>&lt;nobr>លេខសម្គាល់​អ្នក​ផលិត ៖ %2&lt;/nobr>&lt;br>&lt;nobr>ការ​ពិនិត្យ​ឡើង​វិញ ៖ %3&lt;/nobr></translation>
</message>
<message>
- <source>General</source>
- <comment>details report</comment>
- <translation>ទូទៅ</translation>
+ <source>&lt;br>&lt;nobr>Serial No. %1&lt;/nobr></source>
+ <comment>USB device tooltip</comment>
+ <translation>&lt;br>&lt;nobr>លេខ​ស៊េរី %1&lt;/nobr></translation>
</message>
<message>
- <source>Video Memory</source>
- <comment>details report</comment>
- <translation>សតិ​វីដេអូ</translation>
+ <source>&lt;br>&lt;nobr>State: %1&lt;/nobr></source>
+ <comment>USB device tooltip</comment>
+ <translation>&lt;br>&lt;nobr>ស្ថានភាព ៖ %1&lt;/nobr></translation>
</message>
<message>
- <source>&lt;nobr&gt;%4 MB&lt;/nobr&gt;</source>
- <comment>details report</comment>
- <translation type="obsolete">&lt;nobr&gt;%4 មេកាបៃ&lt;/nobr&gt;</translation>
+ <source>Name</source>
+ <comment>details report</comment>
+ <translation>ឈ្មោះ</translation>
</message>
<message>
- <source>Boot Order</source>
- <comment>details report</comment>
- <translation>លំដាប់​ចាប់ផ្ដើម</translation>
+ <source>OS Type</source>
+ <comment>details report</comment>
+ <translation>ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ</translation>
</message>
<message>
- <source>ACPI</source>
- <comment>details report</comment>
- <translation>ACPI</translation>
+ <source>Base Memory</source>
+ <comment>details report</comment>
+ <translation>សតិ​មូលដ្ឋាន</translation>
</message>
<message>
- <source>IO APIC</source>
- <comment>details report</comment>
- <translation>IO APIC</translation>
+ <source>&lt;nobr>%3 MB&lt;/nobr></source>
+ <comment>details report</comment>
+ <translation>&lt;nobr>%3 មេកាបៃ&lt;/nobr></translation>
</message>
<message>
- <source>Not Attached</source>
- <comment>details report (HDDs)</comment>
- <translation>មិន​បានភ្ជាប់</translation>
+ <source>General</source>
+ <comment>details report</comment>
+ <translation>ទូទៅ</translation>
</message>
<message>
- <source>Hard Disks</source>
- <comment>details report</comment>
- <translation>ថាសរឹង</translation>
+ <source>Video Memory</source>
+ <comment>details report</comment>
+ <translation>សតិ​វីដេអូ</translation>
</message>
<message>
- <source>Enabled</source>
- <comment>details report (ACPI)</comment>
- <translation>បានបើក</translation>
+ <source>&lt;nobr>%4 MB&lt;/nobr></source>
+ <comment>details report</comment>
+ <translation>&lt;nobr>%4 មេកាបៃ&lt;/nobr></translation>
</message>
<message>
- <source>Disabled</source>
- <comment>details report (ACPI)</comment>
- <translation>បាន​បិទ</translation>
+ <source>Boot Order</source>
+ <comment>details report</comment>
+ <translation>លំដាប់​ចាប់ផ្ដើម</translation>
</message>
<message>
- <source>Enabled</source>
- <comment>details report (IO APIC)</comment>
- <translation>បានបើក</translation>
+ <source>ACPI</source>
+ <comment>details report</comment>
+ <translation>ACPI</translation>
</message>
<message>
- <source>Disabled</source>
- <comment>details report (IO APIC)</comment>
- <translation>បាន​បិទ</translation>
+ <source>IO APIC</source>
+ <comment>details report</comment>
+ <translation>IO APIC</translation>
</message>
<message>
- <source>Not mounted</source>
- <comment>details report (floppy)</comment>
- <translation>មិនបានម៉ោនទេ</translation>
+ <source>Not Attached</source>
+ <comment>details report (HDDs)</comment>
+ <translation>មិន​បានភ្ជាប់</translation>
</message>
<message>
- <source>Image</source>
- <comment>details report (floppy)</comment>
- <translation>រូបភាព</translation>
+ <source>Hard Disks</source>
+ <comment>details report</comment>
+ <translation>ថាសរឹង</translation>
</message>
<message>
- <source>Host Drive</source>
- <comment>details report (floppy)</comment>
- <translation>ដ្រាយ​ម៉ាស៊ីន</translation>
+ <source>Enabled</source>
+ <comment>details report (ACPI)</comment>
+ <translation>បានបើក</translation>
</message>
<message>
- <source>Floppy</source>
- <comment>details report</comment>
- <translation>ថាសទន់</translation>
+ <source>Disabled</source>
+ <comment>details report (ACPI)</comment>
+ <translation>បាន​បិទ</translation>
</message>
<message>
- <source>Not mounted</source>
- <comment>details report (DVD)</comment>
- <translation>មិនបានម៉ោនទេ</translation>
+ <source>Enabled</source>
+ <comment>details report (IO APIC)</comment>
+ <translation>បានបើក</translation>
</message>
<message>
- <source>Image</source>
- <comment>details report (DVD)</comment>
- <translation>រូបភាព</translation>
+ <source>Disabled</source>
+ <comment>details report (IO APIC)</comment>
+ <translation>បាន​បិទ</translation>
</message>
<message>
- <source>Host Drive</source>
- <comment>details report (DVD)</comment>
- <translation>ដ្រាយ​ម៉ាស៊ីន</translation>
+ <source>Not mounted</source>
+ <comment>details report (floppy)</comment>
+ <translation>មិនបានម៉ោនទេ</translation>
</message>
<message>
- <source>CD/DVD-ROM</source>
- <comment>details report</comment>
- <translation>ស៊ីឌី/ឌីវីឌីរ៉ូម</translation>
+ <source>Image</source>
+ <comment>details report (floppy)</comment>
+ <translation>រូបភាព</translation>
</message>
<message>
- <source>Disabled</source>
- <comment>details report (audio)</comment>
- <translation>បានបិទ</translation>
+ <source>Host Drive</source>
+ <comment>details report (floppy)</comment>
+ <translation>ដ្រាយ​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Audio</source>
- <comment>details report</comment>
- <translation>អូឌីយ៉ូ</translation>
+ <source>Floppy</source>
+ <comment>details report</comment>
+ <translation>ថាសទន់</translation>
</message>
<message>
- <source>Adapter %1</source>
- <comment>details report (network)</comment>
- <translation>អាដាប់ទ័រ %1</translation>
+ <source>Not mounted</source>
+ <comment>details report (DVD)</comment>
+ <translation>មិនបានម៉ោនទេ</translation>
</message>
<message>
- <source>Disabled</source>
- <comment>details report (network)</comment>
- <translation>បានបិទ</translation>
+ <source>Image</source>
+ <comment>details report (DVD)</comment>
+ <translation>រូបភាព</translation>
</message>
<message>
- <source>Network</source>
- <comment>details report</comment>
- <translation>បណ្ដាញ</translation>
+ <source>Host Drive</source>
+ <comment>details report (DVD)</comment>
+ <translation>ដ្រាយ​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Device Filters</source>
- <comment>details report (USB)</comment>
- <translation>តម្រង​ឧបករណ៍</translation>
+ <source>CD/DVD-ROM</source>
+ <comment>details report</comment>
+ <translation>ស៊ីឌី/ឌីវីឌីរ៉ូម</translation>
</message>
<message>
- <source>%1 (%2 active)</source>
- <comment>details report (USB)</comment>
- <translation>%1 (%2 សកម្មភាព)</translation>
+ <source>Disabled</source>
+ <comment>details report (audio)</comment>
+ <translation>បានបិទ</translation>
</message>
<message>
- <source>Disabled</source>
- <comment>details report (USB)</comment>
- <translation>បានបិទ</translation>
+ <source>Audio</source>
+ <comment>details report</comment>
+ <translation>អូឌីយ៉ូ</translation>
</message>
<message>
- <source>VRDP Server Port</source>
- <comment>details report (VRDP)</comment>
- <translation type="obsolete">ច្រក​ម៉ាស៊ីនបម្រើ VRDP</translation>
+ <source>Adapter %1</source>
+ <comment>details report (network)</comment>
+ <translation>អាដាប់ទ័រ %1</translation>
</message>
<message>
- <source>%1</source>
- <comment>details report (VRDP)</comment>
- <translation type="obsolete">%1</translation>
+ <source>Disabled</source>
+ <comment>details report (network)</comment>
+ <translation>បានបិទ</translation>
</message>
<message>
- <source>Disabled</source>
- <comment>details report (VRDP)</comment>
- <translation type="obsolete">បានបិទ</translation>
+ <source>Network</source>
+ <comment>details report</comment>
+ <translation>បណ្ដាញ</translation>
</message>
<message>
- <source>Remote Display</source>
- <comment>details report</comment>
- <translation type="obsolete">បង្ហាញ​ពី​ចម្ងាយ</translation>
+ <source>Device Filters</source>
+ <comment>details report (USB)</comment>
+ <translation>តម្រង​ឧបករណ៍</translation>
</message>
<message>
- <source>Opening URLs is not implemented yet.</source>
- <translation type="obsolete">បើក​ URLs ដែល​មិនត្រូវ​បាន​អនុវត្ត​នៅ​ឡើយ​ទេ ។</translation>
+ <source>%1 (%2 active)</source>
+ <comment>details report (USB)</comment>
+ <translation>%1 (%2 សកម្មភាព)</translation>
</message>
<message>
- <source>Powered Off</source>
- <comment>MachineState</comment>
- <translation>បិទ</translation>
+ <source>Disabled</source>
+ <comment>details report (USB)</comment>
+ <translation>បានបិទ</translation>
</message>
<message>
- <source>Saved</source>
- <comment>MachineState</comment>
- <translation>បានរក្សាទុក</translation>
+ <source>VRDP Server Port</source>
+ <comment>details report (VRDP)</comment>
+ <translation>ច្រក​ម៉ាស៊ីនបម្រើ VRDP</translation>
</message>
<message>
- <source>Aborted</source>
- <comment>MachineState</comment>
- <translation>បានបោះបង់</translation>
+ <source>%1</source>
+ <comment>details report (VRDP)</comment>
+ <translation>%1</translation>
</message>
<message>
- <source>Running</source>
- <comment>MachineState</comment>
- <translation>រត់</translation>
+ <source>Disabled</source>
+ <comment>details report (VRDP)</comment>
+ <translation>បានបិទ</translation>
</message>
<message>
- <source>Paused</source>
- <comment>MachineState</comment>
- <translation>បានផ្អាក</translation>
+ <source>Remote Display</source>
+ <comment>details report</comment>
+ <translation>បង្ហាញ​ពី​ចម្ងាយ</translation>
</message>
<message>
- <source>Starting</source>
- <comment>MachineState</comment>
- <translation>ចាប់ផ្ដើម</translation>
+ <source>Opening URLs is not implemented yet.</source>
+ <translation>បើក​ URLs ដែល​មិនត្រូវ​បាន​អនុវត្ត​នៅ​ឡើយ​ទេ ។</translation>
</message>
<message>
- <source>Stopping</source>
- <comment>MachineState</comment>
- <translation>បញ្ឈប់</translation>
+ <source>Powered Off</source>
+ <comment>MachineState</comment>
+ <translation>បិទ</translation>
</message>
<message>
- <source>Saving</source>
- <comment>MachineState</comment>
- <translation>រក្សាទុក</translation>
+ <source>Saved</source>
+ <comment>MachineState</comment>
+ <translation>បានរក្សាទុក</translation>
</message>
<message>
- <source>Restoring</source>
- <comment>MachineState</comment>
- <translation>ស្ដារឡើងវិញ</translation>
+ <source>Aborted</source>
+ <comment>MachineState</comment>
+ <translation>បានបោះបង់</translation>
</message>
<message>
- <source>Discarding</source>
- <comment>MachineState</comment>
- <translation>បដិសេធ</translation>
+ <source>Running</source>
+ <comment>MachineState</comment>
+ <translation>រត់</translation>
</message>
<message>
- <source>Closed</source>
- <comment>SessionState</comment>
- <translation>បានបិទ</translation>
+ <source>Paused</source>
+ <comment>MachineState</comment>
+ <translation>បានផ្អាក</translation>
</message>
<message>
- <source>Open</source>
- <comment>SessionState</comment>
- <translation>បើក</translation>
+ <source>Starting</source>
+ <comment>MachineState</comment>
+ <translation>ចាប់ផ្ដើម</translation>
</message>
<message>
- <source>Spawning</source>
- <comment>SessionState</comment>
- <translation>ការ​ព្រមាន​សារ​ឥតបានការ</translation>
+ <source>Stopping</source>
+ <comment>MachineState</comment>
+ <translation>បញ្ឈប់</translation>
</message>
<message>
- <source>Closing</source>
- <comment>SessionState</comment>
- <translation>បិទ</translation>
+ <source>Saving</source>
+ <comment>MachineState</comment>
+ <translation>រក្សាទុក</translation>
</message>
<message>
- <source>None</source>
- <comment>DeviceType</comment>
- <translation>គ្មាន</translation>
+ <source>Restoring</source>
+ <comment>MachineState</comment>
+ <translation>ស្ដារឡើងវិញ</translation>
</message>
<message>
- <source>Floppy</source>
- <comment>DeviceType</comment>
- <translation>ថាសទន់</translation>
+ <source>Discarding</source>
+ <comment>MachineState</comment>
+ <translation>បដិសេធ</translation>
</message>
<message>
- <source>CD/DVD-ROM</source>
- <comment>DeviceType</comment>
- <translation>ស៊ីឌី/ឌីវីឌីរ៉ូម</translation>
+ <source>Closed</source>
+ <comment>SessionState</comment>
+ <translation>បានបិទ</translation>
</message>
<message>
- <source>Hard Disk</source>
- <comment>DeviceType</comment>
- <translation>ថាសរឹង</translation>
+ <source>Open</source>
+ <comment>SessionState</comment>
+ <translation>បើក</translation>
</message>
<message>
- <source>Network</source>
- <comment>DeviceType</comment>
- <translation>បណ្ដាញ</translation>
+ <source>Spawning</source>
+ <comment>SessionState</comment>
+ <translation>ការ​ព្រមាន​សារ​ឥតបានការ</translation>
</message>
<message>
- <source>Normal</source>
- <comment>DiskType</comment>
- <translation>ធម្មតា</translation>
+ <source>Closing</source>
+ <comment>SessionState</comment>
+ <translation>បិទ</translation>
</message>
<message>
- <source>Immutable</source>
- <comment>DiskType</comment>
- <translation>មិនអាច​ផ្លាស់ប្ដូរ​បាន</translation>
+ <source>None</source>
+ <comment>DeviceType</comment>
+ <translation>គ្មាន</translation>
</message>
<message>
- <source>Writethrough</source>
- <comment>DiskType</comment>
- <translation>សរសរ​កាត់</translation>
+ <source>Floppy</source>
+ <comment>DeviceType</comment>
+ <translation>ថាសទន់</translation>
</message>
<message>
- <source>Null</source>
- <comment>VRDPAuthType</comment>
- <translation>គ្មាន</translation>
+ <source>CD/DVD-ROM</source>
+ <comment>DeviceType</comment>
+ <translation>ស៊ីឌី/ឌីវីឌីរ៉ូម</translation>
</message>
<message>
- <source>External</source>
- <comment>VRDPAuthType</comment>
- <translation>ខាងក្រៅ</translation>
+ <source>Hard Disk</source>
+ <comment>DeviceType</comment>
+ <translation>ថាសរឹង</translation>
</message>
<message>
- <source>Guest</source>
- <comment>VRDPAuthType</comment>
- <translation>ម៉ាស៊ីន​ភ្ញៀវ</translation>
+ <source>Network</source>
+ <comment>DeviceType</comment>
+ <translation>បណ្ដាញ</translation>
</message>
<message>
- <source>Ignore</source>
- <comment>USBFilterActionType</comment>
- <translation>មិនអើពើ</translation>
+ <source>Normal</source>
+ <comment>DiskType</comment>
+ <translation>ធម្មតា</translation>
</message>
<message>
- <source>Hold</source>
- <comment>USBFilterActionType</comment>
- <translation>កាន់</translation>
+ <source>Immutable</source>
+ <comment>DiskType</comment>
+ <translation>មិនអាច​ផ្លាស់ប្ដូរ​បាន</translation>
</message>
<message>
- <source>Null Audio Driver</source>
- <comment>AudioDriverType</comment>
- <translation>គ្មាន​កម្មវិធី​បញ្ជា​អូឌីយ៉ូ​ទេ</translation>
+ <source>Writethrough</source>
+ <comment>DiskType</comment>
+ <translation>សរសរ​កាត់</translation>
</message>
<message>
- <source>Windows Multimedia</source>
- <comment>AudioDriverType</comment>
- <translation>ពហុមេឌៀ​វីនដូ</translation>
+ <source>Null</source>
+ <comment>VRDPAuthType</comment>
+ <translation>គ្មាន</translation>
</message>
<message>
- <source>OSS Audio Driver</source>
- <comment>AudioDriverType</comment>
- <translation>កម្មវិធី​បញ្ជា​អូឌីយ៉ូ OSS</translation>
+ <source>External</source>
+ <comment>VRDPAuthType</comment>
+ <translation>ខាងក្រៅ</translation>
</message>
<message>
- <source>ALSA Audio Driver</source>
- <comment>AudioDriverType</comment>
- <translation>កម្មវិធី​បញ្ជា​អូឌីយ៉ូ ALSA</translation>
+ <source>Guest</source>
+ <comment>VRDPAuthType</comment>
+ <translation>ម៉ាស៊ីន​ភ្ញៀវ</translation>
</message>
<message>
- <source>Windows DirectSound</source>
- <comment>AudioDriverType</comment>
- <translation>DirectSound វីនដូ</translation>
+ <source>Ignore</source>
+ <comment>USBFilterActionType</comment>
+ <translation>មិនអើពើ</translation>
</message>
<message>
- <source>CoreAudio</source>
- <comment>AudioDriverType</comment>
- <translation>CoreAudio</translation>
+ <source>Hold</source>
+ <comment>USBFilterActionType</comment>
+ <translation>កាន់</translation>
</message>
<message>
- <source>Not attached</source>
- <comment>NetworkAttachmentType</comment>
- <translation>មិន​បានភ្ជាប់</translation>
+ <source>Null Audio Driver</source>
+ <comment>AudioDriverType</comment>
+ <translation>គ្មាន​កម្មវិធី​បញ្ជា​អូឌីយ៉ូ​ទេ</translation>
</message>
<message>
- <source>NAT</source>
- <comment>NetworkAttachmentType</comment>
- <translation>NAT</translation>
+ <source>Windows Multimedia</source>
+ <comment>AudioDriverType</comment>
+ <translation>ពហុមេឌៀ​វីនដូ</translation>
</message>
<message>
- <source>Host Interface</source>
- <comment>NetworkAttachmentType</comment>
- <translation type="obsolete">ចំណុច​ប្រទាក់​ម៉ាស៊ីន</translation>
+ <source>OSS Audio Driver</source>
+ <comment>AudioDriverType</comment>
+ <translation>កម្មវិធី​បញ្ជា​អូឌីយ៉ូ OSS</translation>
</message>
<message>
- <source>Internal Network</source>
- <comment>NetworkAttachmentType</comment>
- <translation>បណ្ដាញ​អ៊ីនធឺណិត</translation>
+ <source>ALSA Audio Driver</source>
+ <comment>AudioDriverType</comment>
+ <translation>កម្មវិធី​បញ្ជា​អូឌីយ៉ូ ALSA</translation>
</message>
<message>
- <source>Not supported</source>
- <comment>USBDeviceState</comment>
- <translation>មិនបានគាំទ្រទេ</translation>
+ <source>Windows DirectSound</source>
+ <comment>AudioDriverType</comment>
+ <translation>DirectSound វីនដូ</translation>
</message>
<message>
- <source>Unavailable</source>
- <comment>USBDeviceState</comment>
- <translation>មិនអាច​ប្រើបាន</translation>
+ <source>CoreAudio</source>
+ <comment>AudioDriverType</comment>
+ <translation>CoreAudio</translation>
</message>
<message>
- <source>Busy</source>
- <comment>USBDeviceState</comment>
- <translation>រវល់</translation>
+ <source>Not attached</source>
+ <comment>NetworkAttachmentType</comment>
+ <translation>មិន​បានភ្ជាប់</translation>
</message>
<message>
- <source>Available</source>
- <comment>USBDeviceState</comment>
- <translation>អាច​ប្រើបាន</translation>
+ <source>NAT</source>
+ <comment>NetworkAttachmentType</comment>
+ <translation>NAT</translation>
</message>
<message>
- <source>Held</source>
- <comment>USBDeviceState</comment>
- <translation>កាន់</translation>
+ <source>Host Interface</source>
+ <comment>NetworkAttachmentType</comment>
+ <translation>ចំណុច​ប្រទាក់​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Captured</source>
- <comment>USBDeviceState</comment>
- <translation>បានចាប់យក</translation>
+ <source>Internal Network</source>
+ <comment>NetworkAttachmentType</comment>
+ <translation>បណ្ដាញ​អ៊ីនធឺណិត</translation>
</message>
<message>
- <source>Disabled</source>
- <comment>ClipboardType</comment>
- <translation>បានបិទ</translation>
+ <source>Not supported</source>
+ <comment>USBDeviceState</comment>
+ <translation>មិនបានគាំទ្រទេ</translation>
</message>
<message>
- <source>Host To Guest</source>
- <comment>ClipboardType</comment>
- <translation>ម៉ាស៊ីន​ទៅ​កាន់​ម៉ាស៊ីន​ភ្ញៀវ</translation>
+ <source>Unavailable</source>
+ <comment>USBDeviceState</comment>
+ <translation>មិនអាច​ប្រើបាន</translation>
</message>
<message>
- <source>Guest To Host</source>
- <comment>ClipboardType</comment>
- <translation>ម៉ាស៊ីន​ភ្ញៀវ​ទៅកាន់ម៉ាស៊ីន</translation>
+ <source>Busy</source>
+ <comment>USBDeviceState</comment>
+ <translation>រវល់</translation>
</message>
<message>
- <source>Bidirectional</source>
- <comment>ClipboardType</comment>
- <translation>ទ្វេទិស</translation>
+ <source>Available</source>
+ <comment>USBDeviceState</comment>
+ <translation>អាច​ប្រើបាន</translation>
</message>
<message>
- <source>Select a directory</source>
- <translation type="obsolete">ជ្រើស​ថត</translation>
+ <source>Held</source>
+ <comment>USBDeviceState</comment>
+ <translation>កាន់</translation>
</message>
<message>
- <source>Select a file</source>
- <translation type="obsolete">ជ្រើស​ឯកសារ</translation>
+ <source>Captured</source>
+ <comment>USBDeviceState</comment>
+ <translation>បានចាប់យក</translation>
</message>
<message>
- <source>Port %1</source>
- <comment>details report (serial ports)</comment>
- <translation>ច្រក %1</translation>
+ <source>Disabled</source>
+ <comment>ClipboardType</comment>
+ <translation>បានបិទ</translation>
</message>
<message>
- <source>Disabled</source>
- <comment>details report (serial ports)</comment>
- <translation>បាន​បិទ</translation>
+ <source>Host To Guest</source>
+ <comment>ClipboardType</comment>
+ <translation>ម៉ាស៊ីន​ទៅ​កាន់​ម៉ាស៊ីន​ភ្ញៀវ</translation>
</message>
<message>
- <source>Serial Ports</source>
- <comment>details report</comment>
- <translation>ច្រក​ស៊េរី</translation>
+ <source>Guest To Host</source>
+ <comment>ClipboardType</comment>
+ <translation>ម៉ាស៊ីន​ភ្ញៀវ​ទៅកាន់ម៉ាស៊ីន</translation>
</message>
<message>
- <source>USB</source>
- <comment>details report</comment>
- <translation>USB</translation>
+ <source>Bidirectional</source>
+ <comment>ClipboardType</comment>
+ <translation>ទ្វេទិស</translation>
</message>
<message>
- <source>Shared Folders</source>
- <comment>details report (shared folders)</comment>
- <translation>ថត​ដែល​បានចែករំលែក</translation>
+ <source>Select a directory</source>
+ <translation>ជ្រើស​ថត</translation>
</message>
<message>
- <source>%1</source>
- <comment>details report (shadef folders)</comment>
- <translation type="obsolete">%1</translation>
+ <source>Select a file</source>
+ <translation>ជ្រើស​ឯកសារ</translation>
</message>
<message>
- <source>None</source>
- <comment>details report (shared folders)</comment>
- <translation>គ្មាន</translation>
+ <source>Port %1</source>
+ <comment>details report (serial ports)</comment>
+ <translation>ច្រក %1</translation>
</message>
<message>
- <source>Shared Folders</source>
- <comment>details report</comment>
- <translation>ថត​ដែលបានចែករំលែក</translation>
+ <source>Disabled</source>
+ <comment>details report (serial ports)</comment>
+ <translation>បាន​បិទ</translation>
</message>
<message>
- <source>Stuck</source>
- <comment>MachineState</comment>
- <translation>គាំង</translation>
+ <source>Serial Ports</source>
+ <comment>details report</comment>
+ <translation>ច្រក​ស៊េរី</translation>
</message>
<message>
- <source>Disconnected</source>
- <comment>PortMode</comment>
- <translation>បានផ្ដាច់</translation>
+ <source>USB</source>
+ <comment>details report</comment>
+ <translation>USB</translation>
</message>
<message>
- <source>Host Pipe</source>
- <comment>PortMode</comment>
- <translation>បំពង់​ម៉ាស៊ីន</translation>
+ <source>Shared Folders</source>
+ <comment>details report (shared folders)</comment>
+ <translation>ថត​ដែល​បានចែករំលែក</translation>
</message>
<message>
- <source>Host Device</source>
- <comment>PortMode</comment>
- <translation>ឧបករណ៍​ម៉ាស៊ីន</translation>
+ <source>%1</source>
+ <comment>details report (shadef folders)</comment>
+ <translation>%1</translation>
</message>
<message>
- <source>User-defined</source>
- <comment>serial port</comment>
- <translation>កំណត់​ដោយ​អ្នកប្រើ</translation>
+ <source>None</source>
+ <comment>details report (shared folders)</comment>
+ <translation>គ្មាន</translation>
</message>
<message>
- <source>VT-x/AMD-V</source>
- <comment>details report</comment>
- <translation>VT-x/AMD-V</translation>
+ <source>Shared Folders</source>
+ <comment>details report</comment>
+ <translation>ថត​ដែលបានចែករំលែក</translation>
</message>
<message>
- <source>PAE/NX</source>
- <comment>details report</comment>
- <translation>PAE/NX</translation>
+ <source>Stuck</source>
+ <comment>MachineState</comment>
+ <translation>គាំង</translation>
</message>
<message>
- <source>Enabled</source>
- <comment>details report (VT-x/AMD-V)</comment>
- <translation>បានបើក</translation>
+ <source>Disconnected</source>
+ <comment>PortMode</comment>
+ <translation>បានផ្ដាច់</translation>
</message>
<message>
- <source>Disabled</source>
- <comment>details report (VT-x/AMD-V)</comment>
- <translation>បានបិទ</translation>
+ <source>Host Pipe</source>
+ <comment>PortMode</comment>
+ <translation>បំពង់​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Enabled</source>
- <comment>details report (PAE/NX)</comment>
- <translation>បានបើក</translation>
+ <source>Host Device</source>
+ <comment>PortMode</comment>
+ <translation>ឧបករណ៍​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Disabled</source>
- <comment>details report (PAE/NX)</comment>
- <translation>បានបិទ</translation>
+ <source>User-defined</source>
+ <comment>serial port</comment>
+ <translation>កំណត់​ដោយ​អ្នកប្រើ</translation>
</message>
<message>
- <source>Host Driver</source>
- <comment>details report (audio)</comment>
- <translation>កម្មវិធី​បញ្ជា​ម៉ាស៊ីន</translation>
+ <source>VT-x/AMD-V</source>
+ <comment>details report</comment>
+ <translation>VT-x/AMD-V</translation>
</message>
<message>
- <source>Controller</source>
- <comment>details report (audio)</comment>
- <translation>វត្ថុ​បញ្ជា</translation>
+ <source>PAE/NX</source>
+ <comment>details report</comment>
+ <translation>PAE/NX</translation>
</message>
<message>
- <source>Port %1</source>
- <comment>details report (parallel ports)</comment>
- <translation>ច្រក %1</translation>
+ <source>Enabled</source>
+ <comment>details report (VT-x/AMD-V)</comment>
+ <translation>បានបើក</translation>
</message>
<message>
- <source>Disabled</source>
- <comment>details report (parallel ports)</comment>
- <translation>បាន​បិទ</translation>
+ <source>Disabled</source>
+ <comment>details report (VT-x/AMD-V)</comment>
+ <translation>បានបិទ</translation>
</message>
<message>
- <source>Parallel Ports</source>
- <comment>details report</comment>
- <translation>ច្រក​ប៉ារ៉ាឡែល</translation>
+ <source>Enabled</source>
+ <comment>details report (PAE/NX)</comment>
+ <translation>បានបើក</translation>
</message>
<message>
- <source>USB</source>
- <comment>DeviceType</comment>
- <translation>USB</translation>
+ <source>Disabled</source>
+ <comment>details report (PAE/NX)</comment>
+ <translation>បានបិទ</translation>
</message>
<message>
- <source>Shared Folder</source>
- <comment>DeviceType</comment>
- <translation>ថត​ដែល​បាន​ចែករំលែក</translation>
+ <source>Host Driver</source>
+ <comment>details report (audio)</comment>
+ <translation>កម្មវិធី​បញ្ជា​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>IDE</source>
- <comment>StorageBus</comment>
- <translation>IDE</translation>
+ <source>Controller</source>
+ <comment>details report (audio)</comment>
+ <translation>វត្ថុ​បញ្ជា</translation>
</message>
<message>
- <source>SATA</source>
- <comment>StorageBus</comment>
- <translation>SATA</translation>
+ <source>Port %1</source>
+ <comment>details report (parallel ports)</comment>
+ <translation>ច្រក %1</translation>
</message>
<message>
- <source>Primary</source>
- <comment>StorageBusChannel</comment>
- <translation>ចម្បង</translation>
+ <source>Disabled</source>
+ <comment>details report (parallel ports)</comment>
+ <translation>បាន​បិទ</translation>
</message>
<message>
- <source>Secondary</source>
- <comment>StorageBusChannel</comment>
- <translation>រង</translation>
+ <source>Parallel Ports</source>
+ <comment>details report</comment>
+ <translation>ច្រក​ប៉ារ៉ាឡែល</translation>
</message>
<message>
- <source>Master</source>
- <comment>StorageBusDevice</comment>
- <translation>មេ</translation>
+ <source>USB</source>
+ <comment>DeviceType</comment>
+ <translation>USB</translation>
</message>
<message>
- <source>Slave</source>
- <comment>StorageBusDevice</comment>
- <translation>កូនចៅ</translation>
+ <source>Shared Folder</source>
+ <comment>DeviceType</comment>
+ <translation>ថត​ដែល​បាន​ចែករំលែក</translation>
</message>
<message>
- <source>Port %1</source>
- <comment>StorageBusChannel</comment>
- <translation>ច្រក %1</translation>
+ <source>IDE</source>
+ <comment>StorageBus</comment>
+ <translation>IDE</translation>
</message>
<message>
- <source>Solaris Audio</source>
- <comment>AudioDriverType</comment>
- <translation>អូឌីយ៉ូ Solaris</translation>
+ <source>SATA</source>
+ <comment>StorageBus</comment>
+ <translation>SATA</translation>
</message>
<message>
- <source>PulseAudio</source>
- <comment>AudioDriverType</comment>
- <translation>PulseAudio</translation>
+ <source>Primary</source>
+ <comment>StorageBusChannel</comment>
+ <translation>ចម្បង</translation>
</message>
<message>
- <source>ICH AC97</source>
- <comment>AudioControllerType</comment>
- <translation>ICH AC97</translation>
+ <source>Secondary</source>
+ <comment>StorageBusChannel</comment>
+ <translation>រង</translation>
</message>
<message>
- <source>SoundBlaster 16</source>
- <comment>AudioControllerType</comment>
- <translation>SoundBlaster 16</translation>
+ <source>Master</source>
+ <comment>StorageBusDevice</comment>
+ <translation>មេ</translation>
</message>
<message>
- <source>PCnet-PCI II (Am79C970A)</source>
- <comment>NetworkAdapterType</comment>
- <translation>PCnet-PCI II (Am79C970A)</translation>
+ <source>Slave</source>
+ <comment>StorageBusDevice</comment>
+ <translation>កូនចៅ</translation>
</message>
<message>
- <source>PCnet-FAST III (Am79C973)</source>
- <comment>NetworkAdapterType</comment>
- <translation>PCnet-FAST III (Am79C973)</translation>
+ <source>Port %1</source>
+ <comment>StorageBusChannel</comment>
+ <translation>ច្រក %1</translation>
</message>
<message>
- <source>Intel PRO/1000 MT Desktop (82540EM)</source>
- <comment>NetworkAdapterType</comment>
- <translation>Intel PRO/1000 MT Desktop (82540EM)</translation>
+ <source>Solaris Audio</source>
+ <comment>AudioDriverType</comment>
+ <translation>អូឌីយ៉ូ Solaris</translation>
</message>
<message>
- <source>PIIX3</source>
- <comment>IDEControllerType</comment>
- <translation type="obsolete">PIIX3</translation>
+ <source>PulseAudio</source>
+ <comment>AudioDriverType</comment>
+ <translation>PulseAudio</translation>
</message>
<message>
- <source>PIIX4</source>
- <comment>IDEControllerType</comment>
- <translation type="obsolete">PIIX4</translation>
+ <source>ICH AC97</source>
+ <comment>AudioControllerType</comment>
+ <translation>ICH AC97</translation>
</message>
<message>
- <source>Intel PRO/1000 T Server (82543GC)</source>
- <comment>NetworkAdapterType</comment>
- <translation>Intel PRO/1000 T Server (82543GC)</translation>
+ <source>SoundBlaster 16</source>
+ <comment>AudioControllerType</comment>
+ <translation>SoundBlaster 16</translation>
</message>
<message>
- <source>&lt;nobr&gt;Vendor ID: %1&lt;/nobr&gt;</source>
- <comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;លេខ​សម្គាល់​អ្នក​លក់ ៖ %1&lt;/nobr&gt;</translation>
+ <source>PCnet-PCI II (Am79C970A)</source>
+ <comment>NetworkAdapterType</comment>
+ <translation>PCnet-PCI II (Am79C970A)</translation>
</message>
<message>
- <source>&lt;nobr&gt;Product ID: %2&lt;/nobr&gt;</source>
- <comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;លេខសម្គាល់​ផលិតផល ៖ %2&lt;/nobr&gt;</translation>
+ <source>PCnet-FAST III (Am79C973)</source>
+ <comment>NetworkAdapterType</comment>
+ <translation>PCnet-FAST III (Am79C973)</translation>
</message>
<message>
- <source>&lt;nobr&gt;Revision: %3&lt;/nobr&gt;</source>
- <comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;កា​រពិនិត្យ​ឡើង​វិញ ៖ %3&lt;/nobr&gt;</translation>
+ <source>Intel PRO/1000 MT Desktop (82540EM)</source>
+ <comment>NetworkAdapterType</comment>
+ <translation>Intel PRO/1000 MT Desktop (82540EM)</translation>
</message>
<message>
- <source>&lt;nobr&gt;Product: %4&lt;/nobr&gt;</source>
- <comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;ផលិតផល ៖ %4&lt;/nobr&gt;</translation>
+ <source>PIIX3</source>
+ <comment>IDEControllerType</comment>
+ <translation>PIIX3</translation>
</message>
<message>
- <source>&lt;nobr&gt;Manufacturer: %5&lt;/nobr&gt;</source>
- <comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;ក្រុមហ៊ុន​ផលិត ៖ %5&lt;/nobr&gt;</translation>
+ <source>PIIX4</source>
+ <comment>IDEControllerType</comment>
+ <translation>PIIX4</translation>
</message>
<message>
- <source>&lt;nobr&gt;Serial No.: %1&lt;/nobr&gt;</source>
- <comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;លេខ​ស៊េរី ៖ %1&lt;/nobr&gt;</translation>
+ <source>Intel PRO/1000 T Server (82543GC)</source>
+ <comment>NetworkAdapterType</comment>
+ <translation>Intel PRO/1000 T Server (82543GC)</translation>
</message>
<message>
- <source>&lt;nobr&gt;Port: %1&lt;/nobr&gt;</source>
- <comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;ច្រក ៖ %1&lt;/nobr&gt;</translation>
+ <source>&lt;nobr>Vendor ID: %1&lt;/nobr></source>
+ <comment>USB filter tooltip</comment>
+ <translation>&lt;nobr>លេខ​សម្គាល់​អ្នក​លក់ ៖ %1&lt;/nobr></translation>
</message>
<message>
- <source>&lt;nobr&gt;State: %1&lt;/nobr&gt;</source>
- <comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;ស្ថានភាព ៖ %1&lt;/nobr&gt;</translation>
+ <source>&lt;nobr>Product ID: %2&lt;/nobr></source>
+ <comment>USB filter tooltip</comment>
+ <translation>&lt;nobr>លេខសម្គាល់​ផលិតផល ៖ %2&lt;/nobr></translation>
</message>
<message>
- <source>host interface, %1</source>
- <comment>details report (network)</comment>
- <translation type="obsolete">ចំណុច​ប្រទាក់​ម៉ាស៊ីន %1</translation>
+ <source>&lt;nobr>Revision: %3&lt;/nobr></source>
+ <comment>USB filter tooltip</comment>
+ <translation>&lt;nobr>កា​រពិនិត្យ​ឡើង​វិញ ៖ %3&lt;/nobr></translation>
</message>
<message>
- <source>internal network, &apos;%1&apos;</source>
- <comment>details report (network)</comment>
- <translation type="obsolete">បណ្ដាញ​ខាង​ក្នុង &apos;%1&apos;</translation>
+ <source>&lt;nobr>Product: %4&lt;/nobr></source>
+ <comment>USB filter tooltip</comment>
+ <translation>&lt;nobr>ផលិតផល ៖ %4&lt;/nobr></translation>
</message>
<message>
- <source>Adapter %1</source>
- <comment>network</comment>
- <translation>អាដាប់ទ័រ %1</translation>
+ <source>&lt;nobr>Manufacturer: %5&lt;/nobr></source>
+ <comment>USB filter tooltip</comment>
+ <translation>&lt;nobr>ក្រុមហ៊ុន​ផលិត ៖ %5&lt;/nobr></translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;Type&amp;nbsp;(Format):&amp;nbsp;&amp;nbsp;%2&amp;nbsp;(%3)&lt;/nobr&gt;</source>
- <comment>hard disk</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;ប្រភេទ&amp;nbsp;(ទ្រង់ទ្រាយ) ៖&amp;nbsp;&amp;nbsp;%2&amp;nbsp;(%3)&lt;/nobr&gt;</translation>
+ <source>&lt;nobr>Serial No.: %1&lt;/nobr></source>
+ <comment>USB filter tooltip</comment>
+ <translation>&lt;nobr>លេខ​ស៊េរី ៖ %1&lt;/nobr></translation>
</message>
<message>
- <source>&lt;br&gt;&lt;nobr&gt;Attached to:&amp;nbsp;&amp;nbsp;%1&lt;/nobr&gt;</source>
- <comment>medium</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;បាន​ភ្ជាប់​ទៅ​កាន់ ៖&amp;nbsp;&amp;nbsp;%1&lt;/nobr&gt;</translation>
+ <source>&lt;nobr>Port: %1&lt;/nobr></source>
+ <comment>USB filter tooltip</comment>
+ <translation>&lt;nobr>ច្រក ៖ %1&lt;/nobr></translation>
</message>
<message>
- <source>&lt;i&gt;Not&amp;nbsp;Attached&lt;/i&gt;</source>
- <comment>medium</comment>
- <translation>&lt;i&gt;មិនបាន​ភ្ជាប់​ទេ&lt;/i&gt;</translation>
+ <source>&lt;nobr>State: %1&lt;/nobr></source>
+ <comment>USB filter tooltip</comment>
+ <translation>&lt;nobr>ស្ថានភាព ៖ %1&lt;/nobr></translation>
</message>
<message>
- <source>&lt;br&gt;&lt;i&gt;Checking accessibility...&lt;/i&gt;</source>
- <comment>medium</comment>
- <translation>&lt;br&gt;&lt;i&gt;កំពុង​ពិនិត្យ​មើលភាព​ចូលដំណើរការ​បាន...&lt;/i&gt;</translation>
+ <source>host interface, %1</source>
+ <comment>details report (network)</comment>
+ <translation>ចំណុច​ប្រទាក់​ម៉ាស៊ីន %1</translation>
</message>
<message>
- <source>&lt;hr&gt;Failed to check media accessibility.&lt;br&gt;%1.</source>
- <comment>medium</comment>
- <translation>&lt;hr&gt;បាន​បរាជ័យ​ក្នុងការ​ពិនិត្យ​មើល​ភាព​អាច​ចូលដំណើរការ​បាន ។&lt;br&gt;%1 ។</translation>
+ <source>internal network, '%1'</source>
+ <comment>details report (network)</comment>
+ <translation>បណ្ដាញ​ខាង​ក្នុង '%1'</translation>
</message>
<message>
- <source>&lt;hr&gt;&lt;img src=%1/&gt;&amp;nbsp;Attaching this hard disk will be performed indirectly using a newly created differencing hard disk.</source>
- <comment>medium</comment>
- <translation>&lt;hr&gt;&lt;img src=%1/&gt;&amp;nbsp;ការ​ភ្ជាប់​ថាសរឹង​នេះ​នឹង​ត្រូ​វបាន​អនុវត្ត​ដោយ​ប្រយោល​ដោយ​ប្រើ​ថាសរឹង​ផ្សេង​ដែលបាន​បង្កើត ។</translation>
+ <source>Adapter %1</source>
+ <comment>network</comment>
+ <translation>អាដាប់ទ័រ %1</translation>
</message>
<message>
- <source>Checking...</source>
- <comment>medium</comment>
- <translation>កំពុង​ពិនិត្យ​មើល...</translation>
+ <source>&lt;br>&lt;nobr>Type&amp;nbsp;(Format):&amp;nbsp;&amp;nbsp;%2&amp;nbsp;(%3)&lt;/nobr></source>
+ <comment>hard disk</comment>
+ <translation>&lt;br>&lt;nobr>ប្រភេទ&amp;nbsp;(ទ្រង់ទ្រាយ) ៖&amp;nbsp;&amp;nbsp;%2&amp;nbsp;(%3)&lt;/nobr></translation>
</message>
<message>
- <source>Inaccessible</source>
- <comment>medium</comment>
- <translation>មិនអាច​ចូលដំណើរការ​បាន</translation>
+ <source>&lt;br>&lt;nobr>Attached to:&amp;nbsp;&amp;nbsp;%1&lt;/nobr></source>
+ <comment>medium</comment>
+ <translation>&lt;br>&lt;nobr>បាន​ភ្ជាប់​ទៅ​កាន់ ៖&amp;nbsp;&amp;nbsp;%1&lt;/nobr></translation>
</message>
<message>
- <source>&lt;hr&gt;Some of the media in this hard disk chain are inaccessible. Please use the Virtual Media Manager in &lt;b&gt;Show Differencing Hard Disks&lt;/b&gt; mode to inspect these media.</source>
- <translation>&lt;hr&gt;មេឌៀ​មួយ​ចំនួន​នៅ​ក្នុង​ថាស​រឹង​​មិនអាច​ដំណើរកា​របានទេ ។ សូម​ប្រើ​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត​នៅ​ក្នុង​របៀប &lt;b&gt;បង្ហាញ​ថាស​រឹង​ផ្សេងៗ&lt;/b&gt; ដើម្បី​ពិនិត្យ​មើល​មេឌៀ​ទាំង​នោះ ។</translation>
+ <source>&lt;i>Not&amp;nbsp;Attached&lt;/i></source>
+ <comment>medium</comment>
+ <translation>&lt;i>មិនបាន​ភ្ជាប់​ទេ&lt;/i></translation>
</message>
<message>
- <source>%1&lt;hr&gt;This base hard disk is indirectly attached using the following differencing hard disk:&lt;br&gt;%2%3</source>
- <translation>%1&lt;hr&gt;ថាសរឹង​មូលដ្ឋាន​នេះ​ត្រូវ​បានភ្ជាប់​ដោយ​ប្រយោល ដោយ​ប្រើ​ថាសរឹង​ផ្សេងៗ​ដូច​ខាងក្រោម ៖&lt;br&gt;%2%3</translation>
+ <source>&lt;br>&lt;i>Checking accessibility...&lt;/i></source>
+ <comment>medium</comment>
+ <translation>&lt;br>&lt;i>កំពុង​ពិនិត្យ​មើលភាព​ចូលដំណើរការ​បាន...&lt;/i></translation>
</message>
<message>
- <source>3D Acceleration</source>
- <comment>details report</comment>
- <translation>បង្កើន​ល្បឿន​ត្រីមាត្រ</translation>
+ <source>&lt;hr>Failed to check media accessibility.&lt;br>%1.</source>
+ <comment>medium</comment>
+ <translation>&lt;hr>បាន​បរាជ័យ​ក្នុងការ​ពិនិត្យ​មើល​ភាព​អាច​ចូលដំណើរការ​បាន ។&lt;br>%1 ។</translation>
</message>
<message>
- <source>Enabled</source>
- <comment>details report (3D Acceleration)</comment>
- <translation>បានបើក</translation>
+ <source>&lt;hr>&lt;img src=%1/>&amp;nbsp;Attaching this hard disk will be performed indirectly using a newly created differencing hard disk.</source>
+ <comment>medium</comment>
+ <translation>&lt;hr>&lt;img src=%1/>&amp;nbsp;ការ​ភ្ជាប់​ថាសរឹង​នេះ​នឹង​ត្រូ​វបាន​អនុវត្ត​ដោយ​ប្រយោល​ដោយ​ប្រើ​ថាសរឹង​ផ្សេង​ដែលបាន​បង្កើត ។</translation>
</message>
<message>
- <source>Disabled</source>
- <comment>details report (3D Acceleration)</comment>
- <translation>បានបិទ</translation>
+ <source>Checking...</source>
+ <comment>medium</comment>
+ <translation>កំពុង​ពិនិត្យ​មើល...</translation>
</message>
<message>
- <source>Setting Up</source>
- <comment>MachineState</comment>
- <translation>រៀបចំ</translation>
+ <source>Inaccessible</source>
+ <comment>medium</comment>
+ <translation>មិនអាច​ចូលដំណើរការ​បាន</translation>
</message>
<message>
- <source>Differencing</source>
- <comment>DiskType</comment>
- <translation>ភាព​ខុសគ្នា</translation>
+ <source>&lt;hr>Some of the media in this hard disk chain are inaccessible. Please use the Virtual Media Manager in &lt;b>Show Differencing Hard Disks&lt;/b> mode to inspect these media.</source>
+ <translation>&lt;hr>មេឌៀ​មួយ​ចំនួន​នៅ​ក្នុង​ថាស​រឹង​​មិនអាច​ដំណើរកា​របានទេ ។ សូម​ប្រើ​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត​នៅ​ក្នុង​របៀប &lt;b>បង្ហាញ​ថាស​រឹង​ផ្សេងៗ&lt;/b> ដើម្បី​ពិនិត្យ​មើល​មេឌៀ​ទាំង​នោះ ។</translation>
</message>
<message>
- <source>Nested Paging</source>
- <comment>details report</comment>
- <translation type="unfinished">ភេយីង​ខាង​ក្នុង</translation>
+ <source>%1&lt;hr>This base hard disk is indirectly attached using the following differencing hard disk:&lt;br>%2%3</source>
+ <translation>%1&lt;hr>ថាសរឹង​មូលដ្ឋាន​នេះ​ត្រូវ​បានភ្ជាប់​ដោយ​ប្រយោល ដោយ​ប្រើ​ថាសរឹង​ផ្សេងៗ​ដូច​ខាងក្រោម ៖&lt;br>%2%3</translation>
</message>
<message>
- <source>Enabled</source>
- <comment>details report (Nested Paging)</comment>
- <translation type="unfinished">បានបើក</translation>
+ <source>3D Acceleration</source>
+ <comment>details report</comment>
+ <translation>បង្កើន​ល្បឿន​ត្រីមាត្រ</translation>
</message>
<message>
- <source>Disabled</source>
- <comment>details report (Nested Paging)</comment>
- <translation type="unfinished"></translation>
+ <source>Enabled</source>
+ <comment>details report (3D Acceleration)</comment>
+ <translation>បានបើក</translation>
</message>
<message>
- <source>Bridged adapter, %1</source>
- <comment>details report (network)</comment>
- <translation type="unfinished"></translation>
+ <source>Disabled</source>
+ <comment>details report (3D Acceleration)</comment>
+ <translation>បានបិទ</translation>
</message>
<message>
- <source>Internal network, &apos;%1&apos;</source>
- <comment>details report (network)</comment>
- <translation type="unfinished"></translation>
+ <source>Setting Up</source>
+ <comment>MachineState</comment>
+ <translation>រៀបចំ</translation>
</message>
<message>
- <source>Host-only adapter, &apos;%1&apos;</source>
- <comment>details report (network)</comment>
- <translation type="unfinished"></translation>
+ <source>Differencing</source>
+ <comment>DiskType</comment>
+ <translation>ភាព​ខុសគ្នា</translation>
</message>
- <message>
- <source>SCSI</source>
- <comment>StorageBus</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Intel PRO/1000 MT Server (82545EM)</source>
- <comment>NetworkAdapterType</comment>
- <translation type="unfinished"></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"></translation>
- </message>
- <message>
- <source>AHCI</source>
- <comment>StorageControllerType</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Lsilogic</source>
- <comment>StorageControllerType</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>BusLogic</source>
- <comment>StorageControllerType</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&lt;nobr&gt;%1 MB&lt;/nobr&gt;</source>
- <comment>details report</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Processor(s)</source>
- <comment>details report</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&lt;nobr&gt;%1&lt;/nobr&gt;</source>
- <comment>details report</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>System</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>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>Raw File</source>
- <comment>PortMode</comment>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxGlobalSettings</name>
<message>
- <source>&apos;%1 (0x%2)&apos; is an invalid host key code.</source>
- <translation>&apos;%1 (0x%2)&apos; គឺជា​កូដ​គ្រាប់ចុច​ម៉ាស៊ីន​មិនត្រឹមត្រូវ ។</translation>
- </message>
- <message>
- <source>The value &apos;%1&apos; of the key &apos;%2&apos; doesn&apos;t match the regexp constraint &apos;%3&apos;.</source>
- <translation>តម្លៃ &apos;%1&apos; នៃ​សោ &apos;%2&apos; មិនផ្គូផ្គង​កម្រិត​ regexp &apos;%3&apos; ។</translation>
- </message>
- <message>
- <source>Cannot delete the key &apos;%1&apos;.</source>
- <translation>មិន​អាច​លុប​គ្រាប់ចុច &apos;%1&apos; បានទេ ។</translation>
- </message>
-</context>
-<context>
- <name>VBoxImportApplianceWgt</name>
- <message>
- <source>Importing Appliance ...</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>VBoxImportApplianceWzd</name>
- <message>
- <source>Select an appliance to import</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Open Virtualization Format (%1)</source>
- <translation type="unfinished"></translation>
+ <source>'%1 (0x%2)' is an invalid host key code.</source>
+ <translation>'%1 (0x%2)' គឺជា​កូដ​គ្រាប់ចុច​ម៉ាស៊ីន​មិនត្រឹមត្រូវ ។</translation>
</message>
<message>
- <source>Appliance Import Wizard</source>
- <translation type="unfinished"></translation>
+ <source>The value '%1' of the key '%2' doesn't match the regexp constraint '%3'.</source>
+ <translation>តម្លៃ '%1' នៃ​សោ '%2' មិនផ្គូផ្គង​កម្រិត​ regexp '%3' ។</translation>
</message>
<message>
- <source>Welcome to the Appliance Import Wizard!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;This wizard will guide you through importing an appliance. &lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Use the &lt;span style=&quot; font-weight:600;&quot;&gt;Next&lt;/span&gt; button to go the next page of the wizard and the &lt;span style=&quot; font-weight:600;&quot;&gt;Back&lt;/span&gt; button to return to the previous page.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;In order to import an appliance, you have to select a file describing the appliance first. Currently VirtualBox supports the Open Virtualization Format (OVF). To continue, select the file to import below:&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"></translation>
+ <source>Cannot delete the key '%1'.</source>
+ <translation>មិន​អាច​លុប​គ្រាប់ចុច '%1' បានទេ ។</translation>
</message>
- <message>
- <source>&lt; &amp;Back</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Next &gt;</source>
- <translation type="unfinished">បន្ទាប់ &gt;</translation>
- </message>
- <message>
- <source>Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Appliance Import Settings</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>These are the virtual machines as described in the appliance with their suggested mappings for importing into VirtualBox. You can change many of the shown properties by double-clicking on the items and disable others by using the check boxes below.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Restore Defaults</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Import &gt;</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>VBoxImportLicenseViewer</name>
- <message>
- <source>&lt;b&gt;The virtual system &quot;%1&quot; requires that you agree to the terms and conditions of the software license agreement shown below.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Click &lt;b&gt;Agree&lt;/b&gt; to continue or click &lt;b&gt;Disagree&lt;/b&gt; to cancel the import.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Software License Agreement</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Disagree</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Agree</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Print...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Save...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Text (*.txt)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Save license to file...</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxLicenseViewer</name>
<message>
- <source>VirtualBox License</source>
- <translation>អាជ្ញាបណ្ណ VirtualBox</translation>
+ <source>VirtualBox License</source>
+ <translation>អាជ្ញាបណ្ណ VirtualBox</translation>
</message>
<message>
- <source>I &amp;Agree</source>
- <translation>ខ្ញុំ​យល់ព្រម</translation>
+ <source>I &amp;Agree</source>
+ <translation>ខ្ញុំ​យល់ព្រម</translation>
</message>
<message>
- <source>I &amp;Disagree</source>
- <translation>ខ្ញុំ​មិន​យល់ព្រម​ទេ</translation>
+ <source>I &amp;Disagree</source>
+ <translation>ខ្ញុំ​មិន​យល់ព្រម​ទេ</translation>
</message>
-</context>
-<context>
- <name>VBoxLineTextEdit</name>
- <message>
- <source>&amp;Edit</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxLogSearchPanel</name>
<message>
- <source>Close the search panel</source>
- <translation>បិទ​បន្ទះ​ស្វែងរក</translation>
+ <source>Close the search panel</source>
+ <translation>បិទ​បន្ទះ​ស្វែងរក</translation>
</message>
<message>
- <source>Find </source>
- <translation>រក</translation>
+ <source>Find </source>
+ <translation>រក</translation>
</message>
<message>
- <source>Enter a search string here</source>
- <translation>បញ្ចូល​ខ្សែអក្សរ​ស្វែងរក​នៅ​ទីនេះ</translation>
+ <source>Enter a search string here</source>
+ <translation>បញ្ចូល​ខ្សែអក្សរ​ស្វែងរក​នៅ​ទីនេះ</translation>
</message>
<message>
- <source>&amp;Previous</source>
- <translation>មុន</translation>
+ <source>&amp;Previous</source>
+ <translation>មុន</translation>
</message>
<message>
- <source>Search for the previous occurrence of the string</source>
- <translation>ស្វែងរក​ការ​កើតឡើង​មុន​របស់​ខ្សែអក្សរ</translation>
+ <source>Search for the previous occurrence of the string</source>
+ <translation>ស្វែងរក​ការ​កើតឡើង​មុន​របស់​ខ្សែអក្សរ</translation>
</message>
<message>
- <source>&amp;Next</source>
- <translation>បន្ទាប់</translation>
+ <source>&amp;Next</source>
+ <translation>បន្ទាប់</translation>
</message>
<message>
- <source>Search for the next occurrence of the string</source>
- <translation>ស្វែងរក​ការ​កើតឡើង​បន្ទាប់​របស់​ខ្សែអក្សរ</translation>
+ <source>Search for the next occurrence of the string</source>
+ <translation>ស្វែងរក​ការ​កើតឡើង​បន្ទាប់​របស់​ខ្សែអក្សរ</translation>
</message>
<message>
- <source>C&amp;ase Sensitive</source>
- <translation>ប្រកាន់​អក្សរ​តូចធំ</translation>
+ <source>C&amp;ase Sensitive</source>
+ <translation>ប្រកាន់​អក្សរ​តូចធំ</translation>
</message>
<message>
- <source>Perform case sensitive search (when checked)</source>
- <translation>អនុវត្ត​ការ​ស្វែងរក​ប្រកាន់​អក្សរតូចធំ (នៅពេល​គូស​ធីក)</translation>
+ <source>Perform case sensitive search (when checked)</source>
+ <translation>អនុវត្ត​ការ​ស្វែងរក​ប្រកាន់​អក្សរតូចធំ (នៅពេល​គូស​ធីក)</translation>
</message>
<message>
- <source>String not found</source>
- <translation>រក​មិនឃើញ​ខ្សែអក្សរ</translation>
+ <source>String not found</source>
+ <translation>រក​មិនឃើញ​ខ្សែអក្សរ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxMediaComboBox</name>
<message>
- <source>No media available. Use the Virtual Media Manager to add media of the corresponding type.</source>
- <translation>រក​មិនឃើញ​មេឌៀ ។ ប្រើ​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត ដើម្បី​បន្ថែម​មេឌៀ​ប្រភេទ​ដែល​ទាក់ទង ។</translation>
+ <source>No media available. Use the Virtual Media Manager to add media of the corresponding type.</source>
+ <translation>រក​មិនឃើញ​មេឌៀ ។ ប្រើ​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត ដើម្បី​បន្ថែម​មេឌៀ​ប្រភេទ​ដែល​ទាក់ទង ។</translation>
</message>
<message>
- <source>&lt;no media&gt;</source>
- <translation>&lt;គ្មាន​មេឌៀ&gt;</translation>
+ <source>&lt;no media></source>
+ <translation>&lt;គ្មាន​មេឌៀ></translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxMediaManagerDlg</name>
<message>
- <source>&amp;Actions</source>
- <translation>សកម្មភាព</translation>
+ <source>&amp;Actions</source>
+ <translation>សកម្មភាព</translation>
</message>
<message>
- <source>&amp;New...</source>
- <translation>ថ្មី...</translation>
+ <source>&amp;New...</source>
+ <translation>ថ្មី...</translation>
</message>
<message>
- <source>&amp;Add...</source>
- <translation>បន្ថែម...</translation>
+ <source>&amp;Add...</source>
+ <translation>បន្ថែម...</translation>
</message>
<message>
- <source>R&amp;emove</source>
- <translation>យកចេញ</translation>
+ <source>R&amp;emove</source>
+ <translation>យកចេញ</translation>
</message>
<message>
- <source>Re&amp;lease</source>
- <translation>ចេញផ្សាយ</translation>
+ <source>Re&amp;lease</source>
+ <translation>ចេញផ្សាយ</translation>
</message>
<message>
- <source>Re&amp;fresh</source>
- <translation>ធ្វើ​ឲ្យ​ស្រស់</translation>
+ <source>Re&amp;fresh</source>
+ <translation>ធ្វើ​ឲ្យ​ស្រស់</translation>
</message>
<message>
- <source>Create a new virtual hard disk</source>
- <translation>បង្កើត​ថាសរឹង​និម្មិត​ថ្មី</translation>
+ <source>Create a new virtual hard disk</source>
+ <translation>បង្កើត​ថាសរឹង​និម្មិត​ថ្មី</translation>
</message>
<message>
- <source>Add an existing medium</source>
- <translation>បន្ថែម​ឧបករណ៍​ដែល​មាន​ស្រាប់</translation>
+ <source>Add an existing medium</source>
+ <translation>បន្ថែម​ឧបករណ៍​ដែល​មាន​ស្រាប់</translation>
</message>
<message>
- <source>Remove the selected medium</source>
- <translation>យក​ឧបករណ៍​ផ្ទុក​ដែល​បាន​ជ្រើស</translation>
+ <source>Remove the selected medium</source>
+ <translation>យក​ឧបករណ៍​ផ្ទុក​ដែល​បាន​ជ្រើស</translation>
</message>
<message>
- <source>Release the selected medium by detaching it from the machines</source>
- <translation>ចេញផ្សាយ​ឧបករណ៍​ផ្ទុក​ដែល​បានជ្រើស ដោយ​ផ្ដាច់​វា​ពី​ម៉ាស៊ីន</translation>
+ <source>Release the selected medium by detaching it from the machines</source>
+ <translation>ចេញផ្សាយ​ឧបករណ៍​ផ្ទុក​ដែល​បានជ្រើស ដោយ​ផ្ដាច់​វា​ពី​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Refresh the media list</source>
- <translation>ធ្វើ​ឲ្យ​បញ្ជី​មេឌៀ​ស្រស់</translation>
+ <source>Refresh the media list</source>
+ <translation>ធ្វើ​ឲ្យ​បញ្ជី​មេឌៀ​ស្រស់</translation>
</message>
<message>
- <source>Location</source>
- <translation>ទីតាំង</translation>
+ <source>Location</source>
+ <translation>ទីតាំង</translation>
</message>
<message>
- <source>Type (Format)</source>
- <translation>ប្រភេទ (ទ្រង់ទ្រាយ)</translation>
+ <source>Type (Format)</source>
+ <translation>ប្រភេទ (ទ្រង់ទ្រាយ)</translation>
</message>
<message>
- <source>Attached to</source>
- <translation>បាន​ភ្ជាប់​ទៅកាន់</translation>
+ <source>Attached to</source>
+ <translation>បាន​ភ្ជាប់​ទៅកាន់</translation>
</message>
<message>
- <source>Checking accessibility</source>
- <translation>ពិនិត្យ​មើល​ភាព​អាច​ដំណើរការ​បាន​ទេ</translation>
+ <source>Checking accessibility</source>
+ <translation>ពិនិត្យ​មើល​ភាព​អាច​ដំណើរការ​បាន​ទេ</translation>
</message>
<message>
- <source>&amp;Select</source>
- <translation>ជ្រើស</translation>
+ <source>&amp;Select</source>
+ <translation>ជ្រើស</translation>
</message>
<message>
- <source>All hard disk images (%1)</source>
- <translation>រូបភាព​ថាសរឹង​ទាំងអស់ (%1)</translation>
+ <source>All hard disk images (%1)</source>
+ <translation>រូបភាព​ថាសរឹង​ទាំងអស់ (%1)</translation>
</message>
<message>
- <source>All files (*)</source>
- <translation>ឯកសារ​ទាំង​អស់ (*)</translation>
+ <source>All files (*)</source>
+ <translation>ឯកសារ​ទាំង​អស់ (*)</translation>
</message>
<message>
- <source>Select a hard disk image file</source>
- <translation>ជ្រើស​ឯកសារ​រូបភាព​ថាសរឹង</translation>
+ <source>Select a hard disk image file</source>
+ <translation>ជ្រើស​ឯកសារ​រូបភាព​ថាសរឹង</translation>
</message>
<message>
- <source>CD/DVD-ROM images (*.iso);;All files (*)</source>
- <translation>រូបភាព​ស៊ីឌី/ឌីវីឌី​រ៉ូម (*.iso);; ឯកសារ​ទាំងអស់ (*)</translation>
+ <source>CD/DVD-ROM images (*.iso);;All files (*)</source>
+ <translation>រូបភាព​ស៊ីឌី/ឌីវីឌី​រ៉ូម (*.iso);; ឯកសារ​ទាំងអស់ (*)</translation>
</message>
<message>
- <source>Select a CD/DVD-ROM disk image file</source>
- <translation>ជ្រើស​ឯកសារ​រូបភាព​ថាស​ស៊ីឌី/ឌីវីឌីរ៉ូម</translation>
+ <source>Select a CD/DVD-ROM disk image file</source>
+ <translation>ជ្រើស​ឯកសារ​រូបភាព​ថាស​ស៊ីឌី/ឌីវីឌីរ៉ូម</translation>
</message>
<message>
- <source>Floppy images (*.img);;All files (*)</source>
- <translation>រូបភាព​ថាស​ទន់ (*.img);; ឯកសារ​ទាំង​អស់ (*)</translation>
+ <source>Floppy images (*.img);;All files (*)</source>
+ <translation>រូបភាព​ថាស​ទន់ (*.img);; ឯកសារ​ទាំង​អស់ (*)</translation>
</message>
<message>
- <source>Select a floppy disk image file</source>
- <translation>ជ្រើស​ឯកសារ​រូបភាព​ថាស​ទន់</translation>
+ <source>Select a floppy disk image file</source>
+ <translation>ជ្រើស​ឯកសារ​រូបភាព​ថាស​ទន់</translation>
</message>
<message>
- <source>&lt;i&gt;Not&amp;nbsp;Attached&lt;/i&gt;</source>
- <translation>&lt;i&gt;មិនបាន​ភ្ជាប់&lt;/i&gt;</translation>
+ <source>&lt;i>Not&amp;nbsp;Attached&lt;/i></source>
+ <translation>&lt;i>មិនបាន​ភ្ជាប់&lt;/i></translation>
</message>
<message>
- <source>--</source>
- <comment>no info</comment>
- <translation>--</translation>
+ <source>--</source>
+ <comment>no info</comment>
+ <translation>--</translation>
</message>
<message>
- <source>Virtual Media Manager</source>
- <translation>កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត</translation>
+ <source>Virtual Media Manager</source>
+ <translation>កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត</translation>
</message>
<message>
- <source>Hard &amp;Disks</source>
- <translation>ថាសរឹង</translation>
+ <source>Hard &amp;Disks</source>
+ <translation>ថាសរឹង</translation>
</message>
<message>
- <source>Name</source>
- <translation>ឈ្មោះ</translation>
+ <source>Name</source>
+ <translation>ឈ្មោះ</translation>
</message>
<message>
- <source>Virtual Size</source>
- <translation>ទំហំ​និម្មិត</translation>
+ <source>Virtual Size</source>
+ <translation>ទំហំ​និម្មិត</translation>
</message>
<message>
- <source>Actual Size</source>
- <translation>ទំហំ​ពិតប្រាកដ</translation>
+ <source>Actual Size</source>
+ <translation>ទំហំ​ពិតប្រាកដ</translation>
</message>
<message>
- <source>&amp;CD/DVD Images</source>
- <translation>រូបភាព​ស៊ីឌី/ឌីវីឌី</translation>
+ <source>&amp;CD/DVD Images</source>
+ <translation>រូបភាព​ស៊ីឌី/ឌីវីឌី</translation>
</message>
<message>
- <source>Size</source>
- <translation>ទំហំ</translation>
+ <source>Size</source>
+ <translation>ទំហំ</translation>
</message>
<message>
- <source>&amp;Floppy Images</source>
- <translation>រូបភាព​ថាសទន់</translation>
+ <source>&amp;Floppy Images</source>
+ <translation>រូបភាព​ថាសទន់</translation>
</message>
-</context>
-<context>
- <name>VBoxMiniToolBar</name>
- <message>
- <source>Always show the toolbar</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Exit Full Screen or Seamless Mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Close VM</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxNIList</name>
<message>
- <source>VirtualBox Host Interface %1</source>
- <translation type="obsolete">ចំណុច​ប្រទាក់​ម៉ាស៊ីន VirtualBox %1</translation>
+ <source>VirtualBox Host Interface %1</source>
+ <translation>ចំណុច​ប្រទាក់​ម៉ាស៊ីន VirtualBox %1</translation>
</message>
<message>
- <source>&lt;p&gt;Do you want to remove the selected host network interface &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This interface may be in use by one or more network adapters of this or another VM. After it is removed, these adapters will no longer work until you correct their settings by either choosing a different interface name or a different adapter attachment type.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;តើ​អ្នកចង់​យក​ចំណុច​ប្រទាក់​បណ្ដាញ​ម៉ាស៊ីន​ដែល​បាន​ជ្រើស​ចេញ​ពី &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;ឬ?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;ចំណាំ ៖&lt;/b&gt; ចំណុច​ប្រទាក់​នេះ​អាច​កំពុង​ប្រើ​ដោយ​អាដាប់ទ័រ​បណ្ដាញ​មួយ ឬ​ច្រើន​ VM នេះ ឬ​ផ្សេង​ទៀត ។ បន្ទាប់​ពី​បាន​យកចេញហើយ អាដាប់ទ័រ​ទាំង​នេះ​នឹង​មិន​ដំណើរការ​ទៀតទេ​រហូត​ដល់​អ្នក​កែ​ការ​កំណត់​របស់​ពួកវា​ដោយ​ជ្រើស​ឈ្មោះ​ចំណុច​ប្រទាក់​ផ្សេង ឬ​ប្រភេទ​ភ្ជាប់​អាដាប់ទ័រ​ផ្សេង ។&lt;/p&gt;</translation>
+ <source>&lt;p>Do you want to remove the selected host network interface &lt;nobr>&lt;b>%1&lt;/b>?&lt;/nobr>&lt;/p>&lt;p>&lt;b>Note:&lt;/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.&lt;/p></source>
+ <translation>&lt;p>តើ​អ្នកចង់​យក​ចំណុច​ប្រទាក់​បណ្ដាញ​ម៉ាស៊ីន​ដែល​បាន​ជ្រើស​ចេញ​ពី &lt;nobr>&lt;b>%1&lt;/b>ឬ?&lt;/nobr>&lt;/p>&lt;p>&lt;b>ចំណាំ ៖&lt;/b> ចំណុច​ប្រទាក់​នេះ​អាច​កំពុង​ប្រើ​ដោយ​អាដាប់ទ័រ​បណ្ដាញ​មួយ ឬ​ច្រើន​ VM នេះ ឬ​ផ្សេង​ទៀត ។ បន្ទាប់​ពី​បាន​យកចេញហើយ អាដាប់ទ័រ​ទាំង​នេះ​នឹង​មិន​ដំណើរការ​ទៀតទេ​រហូត​ដល់​អ្នក​កែ​ការ​កំណត់​របស់​ពួកវា​ដោយ​ជ្រើស​ឈ្មោះ​ចំណុច​ប្រទាក់​ផ្សេង ឬ​ប្រភេទ​ភ្ជាប់​អាដាប់ទ័រ​ផ្សេង ។&lt;/p></translation>
</message>
<message>
- <source>Host &amp;Interfaces</source>
- <translation type="obsolete">ចំណុច​ប្រទាក់​ម៉ាស៊ីន</translation>
+ <source>Host &amp;Interfaces</source>
+ <translation>ចំណុច​ប្រទាក់​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Lists all available host interfaces.</source>
- <translation type="obsolete">រាយ​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ដែលអាច​ប្រើបានទាំង​អស់ ។</translation>
+ <source>Lists all available host interfaces.</source>
+ <translation>រាយ​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ដែលអាច​ប្រើបានទាំង​អស់ ។</translation>
</message>
<message>
- <source>A&amp;dd New Host Interface</source>
- <translation type="obsolete">បន្ថែម​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ថ្មី</translation>
+ <source>A&amp;dd New Host Interface</source>
+ <translation>បន្ថែម​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ថ្មី</translation>
</message>
<message>
- <source>&amp;Remove Selected Host Interface</source>
- <translation type="obsolete">យក​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ដែល​បានជ្រើស</translation>
+ <source>&amp;Remove Selected Host Interface</source>
+ <translation>យក​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ដែល​បានជ្រើស</translation>
</message>
<message>
- <source>Adds a new host interface.</source>
- <translation type="obsolete">បន្ថែម​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ថ្មី ។</translation>
+ <source>Adds a new host interface.</source>
+ <translation>បន្ថែម​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ថ្មី ។</translation>
</message>
<message>
- <source>Removes the selected host interface.</source>
- <translation type="obsolete">យក​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ដែល​បានជ្រើស ។</translation>
+ <source>Removes the selected host interface.</source>
+ <translation>យក​ចំណុច​ប្រទាក់​ម៉ាស៊ីន​ដែល​បានជ្រើស ។</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxNewHDWzd</name>
<message>
- <source>Create New Virtual Disk</source>
- <translation>បង្កើត​ថាស​និម្មិត​ថ្មី</translation>
+ <source>Create New Virtual Disk</source>
+ <translation>បង្កើត​ថាស​និម្មិត​ថ្មី</translation>
</message>
<message>
- <source>Welcome to the Create New Virtual Disk Wizard!</source>
- <translation>សូម​ស្វាគមន៍​មក​កាន់​​អ្នក​ជំនួយការ​បង្កើត​ថាស​និម្មិ​តថ្មី !</translation>
+ <source>Welcome to the Create New Virtual Disk Wizard!</source>
+ <translation>សូម​ស្វាគមន៍​មក​កាន់​​អ្នក​ជំនួយការ​បង្កើត​ថាស​និម្មិ​តថ្មី !</translation>
</message>
<message>
- <source>Virtual Disk Location and Size</source>
- <translation>ទីតាំង និង​ទំហំ​ថាស​និម្មិត</translation>
+ <source>Virtual Disk Location and Size</source>
+ <translation>ទីតាំង និង​ទំហំ​ថាស​និម្មិត</translation>
</message>
<message>
- <source>Summary</source>
- <translation>សេចក្ដី​សង្ខេប</translation>
+ <source>Summary</source>
+ <translation>សេចក្ដី​សង្ខេប</translation>
</message>
<message>
- <source>&lt;nobr&gt;%1 Bytes&lt;/nobr&gt;</source>
- <translation>&lt;nobr&gt;%1 បៃ&lt;/nobr&gt;</translation>
+ <source>&lt;nobr>%1 Bytes&lt;/nobr></source>
+ <translation>&lt;nobr>%1 បៃ&lt;/nobr></translation>
</message>
<message>
- <source>Hard disk images (*.vdi)</source>
- <translation>រូបភាព​ថាសរឹង (*.vdi)</translation>
+ <source>Hard disk images (*.vdi)</source>
+ <translation>រូបភាព​ថាសរឹង (*.vdi)</translation>
</message>
<message>
- <source>Select a file for the new hard disk image file</source>
- <translation>ជ្រើស​ឯកសារ​សម្រាប់​ឯកសារ​រូបភាព​ថាស​រឹង</translation>
+ <source>Select a file for the new hard disk image file</source>
+ <translation>ជ្រើស​ឯកសារ​សម្រាប់​ឯកសារ​រូបភាព​ថាស​រឹង</translation>
</message>
<message>
- <source>&lt; &amp;Back</source>
- <translation>&lt; ថយក្រោយ</translation>
+ <source>&lt; &amp;Back</source>
+ <translation>&lt; ថយក្រោយ</translation>
</message>
<message>
- <source>&amp;Next &gt;</source>
- <translation>បន្ទាប់ &gt;</translation>
+ <source>&amp;Next ></source>
+ <translation>បន្ទាប់ ></translation>
</message>
<message>
- <source>&amp;Finish</source>
- <translation>បញ្ចប់</translation>
+ <source>&amp;Finish</source>
+ <translation>បញ្ចប់</translation>
</message>
<message>
- <source>Type</source>
- <comment>summary</comment>
- <translation>ប្រភេទ</translation>
+ <source>Type</source>
+ <comment>summary</comment>
+ <translation>ប្រភេទ</translation>
</message>
<message>
- <source>Location</source>
- <comment>summary</comment>
- <translation>ទីតាំង</translation>
+ <source>Location</source>
+ <comment>summary</comment>
+ <translation>ទីតាំង</translation>
</message>
<message>
- <source>Size</source>
- <comment>summary</comment>
- <translation>ទំហំ</translation>
+ <source>Size</source>
+ <comment>summary</comment>
+ <translation>ទំហំ</translation>
</message>
<message>
- <source>Bytes</source>
- <comment>summary</comment>
- <translation>បៃ</translation>
+ <source>Bytes</source>
+ <comment>summary</comment>
+ <translation>បៃ</translation>
</message>
<message>
- <source>Cancel</source>
- <translation>បោះបង់</translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>&lt;p&gt;This wizard will help you to create a new virtual hard disk for your virtual machine.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go to the next page of the wizard and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page.&lt;/p&gt;</source>
- <translation>&lt;p&gt;អ្នក​ជំនួយការ​នេះ​ជួយ​អ្នក​ក្នុងកា​របង្កើត​ថាសរឹង​និម្មិត​សម្រាប់​ម៉ាស៊ីន​និម្មិត​របស់​អ្នក ។&lt;/p&gt;&lt;p&gt;ប្រើប៊ូតុង &lt;b&gt;បន្ទាប់&lt;/b&gt; ដើម្បី​ទៅកាន់​ទំព័រ​បន្ទាប់​របស់​អ្នក​ជំនួយការ ប៊ូតុង&lt;b&gt;ថយក្រោយ&lt;/b&gt; ដើម្បី​ត្រឡប់​ទៅ​ទំព័រ​មុន ។&lt;/p&gt;</translation>
+ <source>&lt;p>This wizard will help you to create a new virtual hard disk for your virtual machine.&lt;/p>&lt;p>Use the &lt;b>Next&lt;/b> button to go to the next page of the wizard and the &lt;b>Back&lt;/b> button to return to the previous page.&lt;/p></source>
+ <translation>&lt;p>អ្នក​ជំនួយការ​នេះ​ជួយ​អ្នក​ក្នុងកា​របង្កើត​ថាសរឹង​និម្មិត​សម្រាប់​ម៉ាស៊ីន​និម្មិត​របស់​អ្នក ។&lt;/p>&lt;p>ប្រើប៊ូតុង &lt;b>បន្ទាប់&lt;/b> ដើម្បី​ទៅកាន់​ទំព័រ​បន្ទាប់​របស់​អ្នក​ជំនួយការ ប៊ូតុង&lt;b>ថយក្រោយ&lt;/b> ដើម្បី​ត្រឡប់​ទៅ​ទំព័រ​មុន ។&lt;/p></translation>
</message>
<message>
- <source>Hard Disk Storage Type</source>
- <translation>ប្រភេទ​ផ្ទុក​របស់​ថាសរឹង</translation>
+ <source>Hard Disk Storage Type</source>
+ <translation>ប្រភេទ​ផ្ទុក​របស់​ថាសរឹង</translation>
</message>
<message>
- <source>&lt;p&gt;Select the type of virtual hard disk you want to create.&lt;/p&gt;&lt;p&gt;A &lt;b&gt;dynamically expanding storage&lt;/b&gt; initially occupies a very small amount of space on your physical hard disk. It will grow dynamically (up to the size specified) as the Guest OS claims disk space.&lt;/p&gt;&lt;p&gt;A &lt;b&gt;fixed-size storage&lt;/b&gt; does not grow. It is stored in a file of approximately the same size as the size of the virtual hard disk. The creation of a fixed-size storage may take a long time depending on the storage size and the write performance of your harddisk.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ជ្រើស​ប្រភេទ​ថាសរឹង​និម្មិត​ដែល​អ្នក​ចង់​បង្កើត ។&lt;/p&gt;&lt;p&gt; &lt;b&gt;កា​រផ្ទុក​ពង្រីក​ជា​ថាមវន្ត&lt;/b&gt; ដំបូង​គ្រប់គ្រង​រាល់​ទំហំ​តូចៗ​របស់ចន្លោះ​នៅ​ក្នុង​ថាសរឹង​ហ្វីស៊ីខល​របស់​អ្នក ។ វា​នឹង​ពង្រីក​ដោយ​ថាមវន្ត (ដល់​ទំហំ​ដែល​បាន​បញ្ជាក់) ជា​ការ​អះអាង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ។&lt;/p&gt;&lt;p&gt; &lt;b&gt;កា​រផ្ទុក​ទំហំថេរ&lt;/b&gt; មិន​រីកចំរើន​ទេ ។ វា​ត្រូ​វបាន​ផ្ទុក​នៅ​ក្នុង​ឯកសារ​របស់​ទំហំ​​ប្រហែល​ ជា​ទំហំ​របស់​ថាសរឹង​និម្មិត ។ ការ​បង្កើត​ការ​ផ្ទុក​ទំហំថេរ អាច​ចំណាយ​ពេល​យូរ​ ដោយអាស្រ័យ​លើ​ទំហំ​ផ្ទុក និង​សរសេរ​ការ​អនុវត្ត​នៃ​ថាសរឹង​របស់​អ្នក ។&lt;/p&gt;</translation>
+ <source>&lt;p>Select the type of virtual hard disk you want to create.&lt;/p>&lt;p>A &lt;b>dynamically expanding storage&lt;/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.&lt;/p>&lt;p>A &lt;b>fixed-size storage&lt;/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.&lt;/p></source>
+ <translation>&lt;p>ជ្រើស​ប្រភេទ​ថាសរឹង​និម្មិត​ដែល​អ្នក​ចង់​បង្កើត ។&lt;/p>&lt;p> &lt;b>កា​រផ្ទុក​ពង្រីក​ជា​ថាមវន្ត&lt;/b> ដំបូង​គ្រប់គ្រង​រាល់​ទំហំ​តូចៗ​របស់ចន្លោះ​នៅ​ក្នុង​ថាសរឹង​ហ្វីស៊ីខល​របស់​អ្នក ។ វា​នឹង​ពង្រីក​ដោយ​ថាមវន្ត (ដល់​ទំហំ​ដែល​បាន​បញ្ជាក់) ជា​ការ​អះអាង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ។&lt;/p>&lt;p> &lt;b>កា​រផ្ទុក​ទំហំថេរ&lt;/b> មិន​រីកចំរើន​ទេ ។ វា​ត្រូ​វបាន​ផ្ទុក​នៅ​ក្នុង​ឯកសារ​របស់​ទំហំ​​ប្រហែល​ ជា​ទំហំ​របស់​ថាសរឹង​និម្មិត ។ ការ​បង្កើត​ការ​ផ្ទុក​ទំហំថេរ អាច​ចំណាយ​ពេល​យូរ​ ដោយអាស្រ័យ​លើ​ទំហំ​ផ្ទុក និង​សរសេរ​ការ​អនុវត្ត​នៃ​ថាសរឹង​របស់​អ្នក ។&lt;/p></translation>
</message>
<message>
- <source>Storage Type</source>
- <translation>ប្រភេទ​ផ្ទុក</translation>
+ <source>Storage Type</source>
+ <translation>ប្រភេទ​ផ្ទុក</translation>
</message>
<message>
- <source>&amp;Dynamically expanding storage</source>
- <translation>ពង្រីក​ការ​ផ្ទុក​ថាមវន្ត</translation>
+ <source>&amp;Dynamically expanding storage</source>
+ <translation>ពង្រីក​ការ​ផ្ទុក​ថាមវន្ត</translation>
</message>
<message>
- <source>&amp;Fixed-size storage</source>
- <translation>កា​រ​ផ្ទុក​ទំហំថេរ</translation>
+ <source>&amp;Fixed-size storage</source>
+ <translation>កា​រ​ផ្ទុក​ទំហំថេរ</translation>
</message>
<message>
- <source>&lt;p&gt;Press the &lt;b&gt;Select&lt;/b&gt; button to select the location of a file to store the hard disk data or type a file name in the entry field.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ចុច​ប៊ូតុង &lt;b&gt;ជ្រើស&lt;/b&gt; ដើម្បី​ជ្រើស​ទីតាំង​របស់​ឯកសារ​ដើម្បី​ផ្ទុក​ថាសរឹង ឬ​ប្រភេទ​ឈ្មោះ​ឯកសារ​នៅ​ក្នុង​វាល​ធាតុ ។&lt;/p&gt;</translation>
+ <source>&lt;p>Press the &lt;b>Select&lt;/b> button to select the location of a file to store the hard disk data or type a file name in the entry field.&lt;/p></source>
+ <translation>&lt;p>ចុច​ប៊ូតុង &lt;b>ជ្រើស&lt;/b> ដើម្បី​ជ្រើស​ទីតាំង​របស់​ឯកសារ​ដើម្បី​ផ្ទុក​ថាសរឹង ឬ​ប្រភេទ​ឈ្មោះ​ឯកសារ​នៅ​ក្នុង​វាល​ធាតុ ។&lt;/p></translation>
</message>
<message>
- <source>&amp;Location</source>
- <translation>ទីតាំង</translation>
+ <source>&amp;Location</source>
+ <translation>ទីតាំង</translation>
</message>
<message>
- <source>&lt;p&gt;Select the size of the virtual hard disk in megabytes. This size will be reported to the Guest OS as the maximum size of this hard disk.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ជ្រើស​ទំហំ​ថាសរឹង​និម្មិត​គិត​ជាមេកាបៃ ។ ទំហំ​នេះ​នឹង​ត្រូវ​បាន​រាយការណ៍​ទៅ​កាន់​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​តាម​ទំហំ​អតិបរមា​របស់​ថាសរឹង​នេះ ។&lt;/p&gt;</translation>
+ <source>&lt;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.&lt;/p></source>
+ <translation>&lt;p>ជ្រើស​ទំហំ​ថាសរឹង​និម្មិត​គិត​ជាមេកាបៃ ។ ទំហំ​នេះ​នឹង​ត្រូវ​បាន​រាយការណ៍​ទៅ​កាន់​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​តាម​ទំហំ​អតិបរមា​របស់​ថាសរឹង​នេះ ។&lt;/p></translation>
</message>
<message>
- <source>&amp;Size</source>
- <translation>ទំហំ</translation>
+ <source>&amp;Size</source>
+ <translation>ទំហំ</translation>
</message>
<message>
- <source>You are going to create a new virtual hard disk with the following parameters:</source>
- <translation>អ្នកនឹង​បង្កើត​ថាសរឹង​និម្មិត​ថ្មី​ដោយ​មាន​ប៉ារ៉ាម៉ែត្រ​ដូច​ខាងក្រោម ៖</translation>
+ <source>You are going to create a new virtual hard disk with the following parameters:</source>
+ <translation>អ្នកនឹង​បង្កើត​ថាសរឹង​និម្មិត​ថ្មី​ដោយ​មាន​ប៉ារ៉ាម៉ែត្រ​ដូច​ខាងក្រោម ៖</translation>
</message>
<message>
- <source>If the above settings are correct, press the &lt;b&gt;Finish&lt;/b&gt; button. Once you press it, a new hard disk will be created.</source>
- <translation>ប្រសិនបើ​កា​រកំណត់​ខាង​លើ​ត្រឹមត្រូវ ចុច​ប៊ូតុង &lt;b&gt;បញ្ចប់&lt;/b&gt; ។ នៅពេល​អ្នក​ចុចវា ថាសរឹង​ថ្មី​នឹង​ត្រូវ​បានបង្កើត​ឡើង ។</translation>
+ <source>If the above settings are correct, press the &lt;b>Finish&lt;/b> button. Once you press it, a new hard disk will be created.</source>
+ <translation>ប្រសិនបើ​កា​រកំណត់​ខាង​លើ​ត្រឹមត្រូវ ចុច​ប៊ូតុង &lt;b>បញ្ចប់&lt;/b> ។ នៅពេល​អ្នក​ចុចវា ថាសរឹង​ថ្មី​នឹង​ត្រូវ​បានបង្កើត​ឡើង ។</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxNewVMWzd</name>
<message>
- <source>Create New Virtual Machine</source>
- <translation>បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី</translation>
- </message>
- <message>
- <source>Welcome to the New Virtual Machine Wizard!</source>
- <translation>សូម​ស្វាគមន៍​មក​កាន់​អ្នក​ជំនួយការ​ម៉ាស៊ីន​និម្មិត​ថ្មី !</translation>
+ <source>Create New Virtual Machine</source>
+ <translation>បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី</translation>
</message>
<message>
- <source>N&amp;ame</source>
- <translation>ឈ្មោះ</translation>
+ <source>Welcome to the New Virtual Machine Wizard!</source>
+ <translation>សូម​ស្វាគមន៍​មក​កាន់​អ្នក​ជំនួយការ​ម៉ាស៊ីន​និម្មិត​ថ្មី !</translation>
</message>
<message>
- <source>OS &amp;Type</source>
- <translation>ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ</translation>
+ <source>N&amp;ame</source>
+ <translation>ឈ្មោះ</translation>
</message>
<message>
- <source>VM Name and OS Type</source>
- <translation>ឈ្មោះ​របស់ VM និង​ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ</translation>
+ <source>OS &amp;Type</source>
+ <translation>ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ</translation>
</message>
<message>
- <source>&lt;p&gt;Select the amount of base memory (RAM) in megabytes to be allocated to the virtual machine.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ជ្រើស​ចំនួន​សតិ (RAM) ​មូលដ្ឋាន​គិត​ជាមេកាបៃ ដែល​​ត្រូវ​បម្រុង​ទុក​សម្រាប់​ម៉ាស៊ីន​និម្មិត ។&lt;/p&gt;</translation>
+ <source>VM Name and OS Type</source>
+ <translation>ឈ្មោះ​របស់ VM និង​ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ</translation>
</message>
<message>
- <source>Base &amp;Memory Size</source>
- <translation>ទំហំ​សតិ​មូលដ្ឋាន</translation>
+ <source>&lt;p>Select the amount of base memory (RAM) in megabytes to be allocated to the virtual machine.&lt;/p></source>
+ <translation>&lt;p>ជ្រើស​ចំនួន​សតិ (RAM) ​មូលដ្ឋាន​គិត​ជាមេកាបៃ ដែល​​ត្រូវ​បម្រុង​ទុក​សម្រាប់​ម៉ាស៊ីន​និម្មិត ។&lt;/p></translation>
</message>
<message>
- <source>MB</source>
- <translation>មេកាបៃ</translation>
+ <source>Base &amp;Memory Size</source>
+ <translation>ទំហំ​សតិ​មូលដ្ឋាន</translation>
</message>
<message>
- <source>Memory</source>
- <translation>សតិ</translation>
+ <source>MB</source>
+ <translation>មេកាបៃ</translation>
</message>
<message>
- <source>N&amp;ew...</source>
- <translation type="obsolete">ថ្មី...</translation>
+ <source>Memory</source>
+ <translation>សតិ</translation>
</message>
<message>
- <source>E&amp;xisting...</source>
- <translation type="obsolete">មាន​ស្រាប់...</translation>
+ <source>N&amp;ew...</source>
+ <translation>ថ្មី...</translation>
</message>
<message>
- <source>Virtual Hard Disk</source>
- <translation>ថាសរឹង​និម្មិត</translation>
+ <source>E&amp;xisting...</source>
+ <translation>មាន​ស្រាប់...</translation>
</message>
<message>
- <source>Summary</source>
- <translation>សេចក្ដី​សង្ខេប</translation>
+ <source>Virtual Hard Disk</source>
+ <translation>ថាសរឹង​និម្មិត</translation>
</message>
<message>
- <source>The recommended base memory size is &lt;b&gt;%1&lt;/b&gt; MB.</source>
- <translation>ទំហំ​សតិ​មូលដ្ឋាន​ដែលបានផ្ដល់​អនុសាសន៍​គឺ &lt;b&gt;%1&lt;/b&gt; មេកាបៃ ។</translation>
+ <source>Summary</source>
+ <translation>សេចក្ដី​សង្ខេប</translation>
</message>
<message>
- <source>The recommended size of the boot hard disk is &lt;b&gt;%1&lt;/b&gt; MB.</source>
- <translation>ទំហំ​ដែល​បានផ្ដល់​អនុសាសន៍​របស់​ថាសរឹង​ចាប់ផ្ដើម​គឺ &lt;b&gt;%1&lt;/b&gt; មេកាបៃ ។</translation>
+ <source>The recommended base memory size is &lt;b>%1&lt;/b> MB.</source>
+ <translation>ទំហំ​សតិ​មូលដ្ឋាន​ដែលបានផ្ដល់​អនុសាសន៍​គឺ &lt;b>%1&lt;/b> មេកាបៃ ។</translation>
</message>
<message>
- <source>&lt;p&gt;This wizard will guide you through the steps that are necessary to create a new virtual machine for VirtualBox.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go the next page of the wizard and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page.&lt;/p&gt;</source>
- <translation>&lt;p&gt;អ្នក​ជំនួយ​កា​រនេះ​នឹង​នាំអ្នក​តាម​ជំហាន​ដែល​ចាំបាច់​ដើម្បីបង្កើត​ម៉ាស៊ីន​និម្មិ​តថ្មី​សម្រាប់ VirtualBox ។&lt;/p&gt;&lt;p&gt;ប្រើ​ប៊ូតុង &lt;b&gt;បន្ទាប់&lt;/b&gt; ដើម្បី​ទៅកាន់​ទំព័រ​បន្ទាប់​របស់​អ្នក​ជំនួយការ ហើយ​ប៊ូតុង &lt;b&gt;ថយក្រោយ&lt;/b&gt; ដើម្បី​ត្រឡប់​ទៅ​ទំព័រ​មុន ។&lt;/p&gt;</translation>
+ <source>The recommended size of the boot hard disk is &lt;b>%1&lt;/b> MB.</source>
+ <translation>ទំហំ​ដែល​បានផ្ដល់​អនុសាសន៍​របស់​ថាសរឹង​ចាប់ផ្ដើម​គឺ &lt;b>%1&lt;/b> មេកាបៃ ។</translation>
</message>
<message>
- <source>&lt; &amp;Back</source>
- <translation>&lt;ថយក្រោយ</translation>
+ <source>&lt;p>This wizard will guide you through the steps that are necessary to create a new virtual machine for VirtualBox.&lt;/p>&lt;p>Use the &lt;b>Next&lt;/b> button to go the next page of the wizard and the &lt;b>Back&lt;/b> button to return to the previous page.&lt;/p></source>
+ <translation>&lt;p>អ្នក​ជំនួយ​កា​រនេះ​នឹង​នាំអ្នក​តាម​ជំហាន​ដែល​ចាំបាច់​ដើម្បីបង្កើត​ម៉ាស៊ីន​និម្មិ​តថ្មី​សម្រាប់ VirtualBox ។&lt;/p>&lt;p>ប្រើ​ប៊ូតុង &lt;b>បន្ទាប់&lt;/b> ដើម្បី​ទៅកាន់​ទំព័រ​បន្ទាប់​របស់​អ្នក​ជំនួយការ ហើយ​ប៊ូតុង &lt;b>ថយក្រោយ&lt;/b> ដើម្បី​ត្រឡប់​ទៅ​ទំព័រ​មុន ។&lt;/p></translation>
</message>
<message>
- <source>&amp;Next &gt;</source>
- <translation>បន្ទាប់ &gt;</translation>
+ <source>&lt; &amp;Back</source>
+ <translation>&lt;ថយក្រោយ</translation>
</message>
<message>
- <source>&lt;p&gt;Enter a name for the new virtual machine and select the type of the guest operating system you plan to install onto the virtual machine.&lt;/p&gt;&lt;p&gt;The name of the virtual machine usually indicates its software and hardware configuration. It will be used by all VirtualBox components to identify your virtual machine.&lt;/p&gt;</source>
- <translation>&lt;p&gt;បញ្ចូល​ឈ្មោះ​ឲ្យ​ម៉ាស៊ីន​និម្មតិ​ថ្មី ហើយ​ជ្រើស​ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ ដែល​អ្នក​ចង់​ដំឡើង​ក្នុង​ម៉ាស៊ីន​និម្មិត ។ &lt;/p&gt;&lt;p&gt;ឈ្មោះ​របស់​ម៉ាស៊ីន​និម្មិត​តាមធម្មតា​បង្ហាញ​ការ​កំណត់​រចនាសម្ព័ន្ធ​ផ្នែក​រឹង និង​ផ្នែក​ទន់​របស់​វា ។ វា​នឹង​ត្រូវ​បាន​ប្រើ​ដោយ​សមាសធាតុ​ VirtualBox ដើម្បី​បញ្ជាក់​អត្តសញ្ញាណ​ម៉ាស៊ីន​និម្មិត​របស់​អ្នក ។&lt;/p&gt;</translation>
+ <source>&amp;Next ></source>
+ <translation>បន្ទាប់ ></translation>
</message>
<message>
- <source>&lt;p&gt;You are going to create a new virtual machine with the following parameters:&lt;/p&gt;</source>
- <translation>&lt;p&gt;អ្នករៀបនឹង​បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី​ដែល​មាន​ប៉ារ៉ាម៉ែត្រ​ដូច​ខាងក្រោម ៖&lt;/p&gt;</translation>
+ <source>&lt;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.&lt;/p>&lt;p>The name of the virtual machine usually indicates its software and hardware configuration. It will be used by all VirtualBox components to identify your virtual machine.&lt;/p></source>
+ <translation>&lt;p>បញ្ចូល​ឈ្មោះ​ឲ្យ​ម៉ាស៊ីន​និម្មតិ​ថ្មី ហើយ​ជ្រើស​ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ ដែល​អ្នក​ចង់​ដំឡើង​ក្នុង​ម៉ាស៊ីន​និម្មិត ។ &lt;/p>&lt;p>ឈ្មោះ​របស់​ម៉ាស៊ីន​និម្មិត​តាមធម្មតា​បង្ហាញ​ការ​កំណត់​រចនាសម្ព័ន្ធ​ផ្នែក​រឹង និង​ផ្នែក​ទន់​របស់​វា ។ វា​នឹង​ត្រូវ​បាន​ប្រើ​ដោយ​សមាសធាតុ​ VirtualBox ដើម្បី​បញ្ជាក់​អត្តសញ្ញាណ​ម៉ាស៊ីន​និម្មិត​របស់​អ្នក ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;If the above is correct press the &lt;b&gt;Finish&lt;/b&gt; button. Once you press it, a new virtual machine will be created. &lt;/p&gt;&lt;p&gt;Note that you can alter these and all other setting of the created virtual machine at any time using the &lt;b&gt;Settings&lt;/b&gt; dialog accessible through the menu of the main window.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ប្រសិនបើ​ខា​ងលើ​ត្រឹមត្រូវ​​ហើយ ចុច​ប៊ូតុង &lt;b&gt;បញ្ចប់&lt;/b&gt; ។ នៅពេល​អ្នក​ចុច​វា ម៉ាស៊ីន​និម្មិត​ថ្មី​នឹង​ត្រូវ​បាន​បង្កើត​ឡើង ។ &lt;/p&gt;&lt;p&gt;ចំណាំ​ថា អ្នក​អាច​ត្រង​ការ​កំណត់​ទាំង​នេះ និង​ការ​កំណត់​ផ្សេងៗ​របស់​ម៉ាស៊ីន​និម្មិត​ដែល​បានបង្កើត​​នៅពេល​ដែល​ប្រើ​ប្រអប់ &lt;b&gt;ការ​កំណត់&lt;/b&gt; ដែល​អាច​ចូល​ដំណើរ​ការ​បាន​តាមរយៈ​ម៉ឺនុយ​របស់​បង្អួច​មេ ។&lt;/p&gt;</translation>
+ <source>&lt;p>You are going to create a new virtual machine with the following parameters:&lt;/p></source>
+ <translation>&lt;p>អ្នករៀបនឹង​បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី​ដែល​មាន​ប៉ារ៉ាម៉ែត្រ​ដូច​ខាងក្រោម ៖&lt;/p></translation>
</message>
<message>
- <source>&amp;Finish</source>
- <translation>បញ្ចប់</translation>
+ <source>&lt;p>If the above is correct press the &lt;b>Finish&lt;/b> button. Once you press it, a new virtual machine will be created. &lt;/p>&lt;p>Note that you can alter these and all other setting of the created virtual machine at any time using the &lt;b>Settings&lt;/b> dialog accessible through the menu of the main window.&lt;/p></source>
+ <translation>&lt;p>ប្រសិនបើ​ខា​ងលើ​ត្រឹមត្រូវ​​ហើយ ចុច​ប៊ូតុង &lt;b>បញ្ចប់&lt;/b> ។ នៅពេល​អ្នក​ចុច​វា ម៉ាស៊ីន​និម្មិត​ថ្មី​នឹង​ត្រូវ​បាន​បង្កើត​ឡើង ។ &lt;/p>&lt;p>ចំណាំ​ថា អ្នក​អាច​ត្រង​ការ​កំណត់​ទាំង​នេះ និង​ការ​កំណត់​ផ្សេងៗ​របស់​ម៉ាស៊ីន​និម្មិត​ដែល​បានបង្កើត​​នៅពេល​ដែល​ប្រើ​ប្រអប់ &lt;b>ការ​កំណត់&lt;/b> ដែល​អាច​ចូល​ដំណើរ​ការ​បាន​តាមរយៈ​ម៉ឺនុយ​របស់​បង្អួច​មេ ។&lt;/p></translation>
</message>
<message>
- <source>MB</source>
- <comment>megabytes</comment>
- <translation>មេកាបៃ</translation>
+ <source>&amp;Finish</source>
+ <translation>បញ្ចប់</translation>
</message>
<message>
- <source>Name</source>
- <comment>summary</comment>
- <translation>ឈ្មោះ</translation>
+ <source>MB</source>
+ <comment>megabytes</comment>
+ <translation>មេកាបៃ</translation>
</message>
<message>
- <source>OS Type</source>
- <comment>summary</comment>
- <translation>ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ</translation>
+ <source>Name</source>
+ <comment>summary</comment>
+ <translation>ឈ្មោះ</translation>
</message>
<message>
- <source>Base Memory</source>
- <comment>summary</comment>
- <translation>សតិមូលដ្ឋាន</translation>
+ <source>OS Type</source>
+ <comment>summary</comment>
+ <translation>ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ</translation>
</message>
<message>
- <source>Boot Hard Disk</source>
- <comment>summary</comment>
- <translation>ថាសរឹង​ចាប់ផ្ដើម</translation>
+ <source>Base Memory</source>
+ <comment>summary</comment>
+ <translation>សតិមូលដ្ឋាន</translation>
</message>
<message>
- <source>Cancel</source>
- <translation>បោះបង់</translation>
+ <source>Boot Hard Disk</source>
+ <comment>summary</comment>
+ <translation>ថាសរឹង​ចាប់ផ្ដើម</translation>
</message>
<message>
- <source>&lt;p&gt;Select a hard disk image to be used as the boot hard disk of the virtual machine. You can either create a new hard disk using the &lt;b&gt;New&lt;/b&gt; button or select an existing hard disk image from the drop-down list or by pressing the &lt;b&gt;Existing&lt;/b&gt; button (to invoke the Virtual Media Manager dialog).&lt;/p&gt;&lt;p&gt;If you need a more complicated hard disk setup, you can also skip this step and attach hard disks later using the VM Settings dialog.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ជ្រើស​រូបភាព​ថាសរឹង​ត្រូវ​ប្រើ​ជា​ថាស​រឹង​ចាប់ផ្ដើម​របស់ម៉ាស៊ីន​និម្មិត ។ អ្នកអាច​បង្កើត​ថាសរឹង​ថ្មី​ដោយ​ប្រើ​ប៊ូតុង &lt;b&gt;ថ្មី&lt;/b&gt; ឬ​ជ្រើស​រូបភាព​ថាសរឹង​ដែលមាន​ស្រាប់​ពី​បញ្ជី​ទម្លាក់ចុះ ឬ​ដោយ​ចុច​ប៊ូតុង &lt;b&gt;មាន​ស្រាប់&lt;/b&gt; (ដើម្បីដកហូត​ប្រអប់​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត) ។&lt;/p&gt;&lt;p&gt;ប្រសិនបើ​អ្នក​ត្រូវការ​រៀបចំ​ថាសរឹង​ដែល​ស្មុគស្មាញ អ្នក​ក៏​អាច​រំលង​ជំហាន​នេះ ហើយ​ភ្ជាប់​ថាសរឹង​ពេលក្រោយ​ដោយ​ប្រើ​ប្រអប់​កំណត់របស់ VM ។&lt;/p&gt;</translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>Boot Hard &amp;Disk (Primary Master)</source>
- <translation>ថាសរឹង​ចាប់ផ្ដើម (Primary Master)</translation>
+ <source>&lt;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 &lt;b>New&lt;/b> button or select an existing hard disk image from the drop-down list or by pressing the &lt;b>Existing&lt;/b> button (to invoke the Virtual Media Manager dialog).&lt;/p>&lt;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.&lt;/p></source>
+ <translation>&lt;p>ជ្រើស​រូបភាព​ថាសរឹង​ត្រូវ​ប្រើ​ជា​ថាស​រឹង​ចាប់ផ្ដើម​របស់ម៉ាស៊ីន​និម្មិត ។ អ្នកអាច​បង្កើត​ថាសរឹង​ថ្មី​ដោយ​ប្រើ​ប៊ូតុង &lt;b>ថ្មី&lt;/b> ឬ​ជ្រើស​រូបភាព​ថាសរឹង​ដែលមាន​ស្រាប់​ពី​បញ្ជី​ទម្លាក់ចុះ ឬ​ដោយ​ចុច​ប៊ូតុង &lt;b>មាន​ស្រាប់&lt;/b> (ដើម្បីដកហូត​ប្រអប់​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត) ។&lt;/p>&lt;p>ប្រសិនបើ​អ្នក​ត្រូវការ​រៀបចំ​ថាសរឹង​ដែល​ស្មុគស្មាញ អ្នក​ក៏​អាច​រំលង​ជំហាន​នេះ ហើយ​ភ្ជាប់​ថាសរឹង​ពេលក្រោយ​ដោយ​ប្រើ​ប្រអប់​កំណត់របស់ VM ។&lt;/p></translation>
</message>
<message>
- <source>&amp;Create new hard disk</source>
- <translation type="unfinished"></translation>
+ <source>Boot Hard &amp;Disk (Primary Master)</source>
+ <translation>ថាសរឹង​ចាប់ផ្ដើម (Primary Master)</translation>
</message>
- <message>
- <source>&amp;Use existing hard disk</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxOSTypeSelectorWidget</name>
<message>
- <source>Operating &amp;System:</source>
- <translation>ប្រព័ន្ធ​ប្រតិបត្តិការ ៖</translation>
+ <source>Operating &amp;System:</source>
+ <translation>ប្រព័ន្ធ​ប្រតិបត្តិការ ៖</translation>
</message>
<message>
- <source>Displays the operating system family that you plan to install into this virtual machine.</source>
- <translation>បង្ហាញ​ក្រុមគ្រួសារ​ប្រព័ន្ធ​ប្រតិបត្តិការ​ដែល​អ្នក​មានគម្រោង​ដំឡើង​ក្នុង​ម៉ាស៊ីន​និម្មិត​នេះ ។</translation>
+ <source>Displays the operating system family that you plan to install into this virtual machine.</source>
+ <translation>បង្ហាញ​ក្រុមគ្រួសារ​ប្រព័ន្ធ​ប្រតិបត្តិការ​ដែល​អ្នក​មានគម្រោង​ដំឡើង​ក្នុង​ម៉ាស៊ីន​និម្មិត​នេះ ។</translation>
</message>
<message>
- <source>V&amp;ersion:</source>
- <translation type="obsolete">កំណែ ៖</translation>
+ <source>V&amp;ersion:</source>
+ <translation>កំណែ ៖</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>
+ <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>&amp;Version:</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxProblemReporter</name>
<message>
- <source>VirtualBox - Information</source>
- <comment>msg box title</comment>
- <translation>VirtualBox - ព័ត៌មាន</translation>
- </message>
- <message>
- <source>VirtualBox - Question</source>
- <comment>msg box title</comment>
- <translation>VirtualBox - សំណួរ</translation>
- </message>
- <message>
- <source>VirtualBox - Warning</source>
- <comment>msg box title</comment>
- <translation>VirtualBox - កា​រព្រមាន</translation>
- </message>
- <message>
- <source>VirtualBox - Error</source>
- <comment>msg box title</comment>
- <translation>VirtualBox - កំហុស</translation>
- </message>
- <message>
- <source>VirtualBox - Critical Error</source>
- <comment>msg box title</comment>
- <translation>VirtualBox - កំហុស​ធ្ងន់ធ្ងរ</translation>
- </message>
- <message>
- <source>Do not show this message again</source>
- <comment>msg box flag</comment>
- <translation>កុំ​បង្ហាញ​សារ​នេះ​ម្ដង​ទៀត</translation>
- </message>
- <message>
- <source>Failed to open &lt;tt&gt;%1&lt;/tt&gt;. Make sure your desktop environment can properly handle URLs of this type.</source>
- <translation>បានបរាជ័យ​ក្នុងការ​បើក &lt;tt&gt;%1&lt;/tt&gt; ។ ប្រាកដ​ថា​បរិស្ថាន​ផ្ទៃតុ​របស់​អ្នក​អាច​គ្រប់គ្រង URLs នៃ​ប្រភេទ​នេះ​យ៉ាង​ត្រឹមត្រូវ ។</translation>
- </message>
- <message>
- <source>&lt;p&gt;Failed to initialize COM or to find the VirtualBox COM server. Most likely, the VirtualBox server is not running or failed to start.&lt;/p&gt;&lt;p&gt;The application will now terminate.&lt;/p&gt;</source>
- <translation>&lt;p&gt;បានបរាជ័យ​ក្នុងកា​រចាប់ផ្ដើម COM ឬ​រកម៉ាស៊ីនបម្រើ VirtualBox COM ។ ភាគ​ច្រើន​ម៉ាស៊ីនបម្រើ VirtualBox មិន​រត់​ ឬ​បរាជ័យ​ក្នុងកា​រចាប់ផ្ដើម ។&lt;/p&gt;&lt;p&gt;កម្មវិធី​នឹង​បិទ​ឥឡូវ ។&lt;/p&gt;</translation>
- </message>
- <message>
- <source>&lt;p&gt;Failed to create the VirtualBox COM object.&lt;/p&gt;&lt;p&gt;The application will now terminate.&lt;/p&gt;</source>
- <translation>&lt;p&gt;បានបរាជ័យ​ក្នុងកា​របង្កើត​វត្ថុ VirtualBox COM ។&lt;/p&gt;&lt;p&gt;កម្មវិធី​នឹង​បិទ​ឥឡូវ​នេះ ។&lt;/p&gt;</translation>
- </message>
- <message>
- <source>Failed to set global VirtualBox properties.</source>
- <translation>បាន​បរាជ័យ​ក្នុង​ការ​កំណត់លក្ខណៈសម្បត្តិរបស់ VirtualBox ។</translation>
- </message>
- <message>
- <source>Failed to access the USB subsystem.</source>
- <translation>បាន​បរាជ័យ​ក្នុង​ការ​​ចូលដំណើរការ​ប្រព័ន្ធ​រង​របស់ USB ។</translation>
- </message>
- <message>
- <source>Failed to create a new virtual machine.</source>
- <translation>បាន​បរាជ័យ​ក្នុង​ការ​បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី ។</translation>
- </message>
- <message>
- <source>Failed to create a new virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បានបរាជ័យ​ក្នុងការ​បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី &lt;b&gt;%1&lt;/b&gt; ។</translation>
- </message>
- <message>
- <source>Failed to apply the settings to the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បានបរាជ័យ​ក្នុងការ​អនុវត្ត​ការ​កំណត់ទៅ​កាន់​ម៉ាស៊ីន​និម្មិត​ថ្មី &lt;b&gt;%1&lt;/b&gt; ។</translation>
- </message>
- <message>
- <source>Failed to start the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងការ​ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;/b&gt; ។</translation>
- </message>
- <message>
- <source>Failed to pause the execution of the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុង​កា​រផ្អាក​ប្រតិបត្តិការ​របស់ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;/b&gt; ។</translation>
- </message>
- <message>
- <source>Failed to resume the execution of the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បានបរាជ័យ​ក្នុងការ​បន្ត​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;/b&gt; ។</translation>
- </message>
- <message>
- <source>Failed to save the state of the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងកា​ររក្សាទុក​ស្ថានភាព​របស់​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;/b&gt; ។</translation>
- </message>
- <message>
- <source>Failed to create a snapshot of the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បានបរាជ័យ​ក្នុងការ​បង្កើត​រូបថត​អេក្រង់​របស់ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;/b&gt; ។</translation>
- </message>
- <message>
- <source>Failed to stop the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងការ​បញ្ឈប់​ម៉ាស៊ីននិម្មិត &lt;b&gt;%1&lt;/b&gt; ។</translation>
- </message>
- <message>
- <source>Failed to remove the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងកា​រយក​ម៉ាស៊ីន​និម្មិត​ចេញ &lt;b&gt;%1&lt;/b&gt; ។</translation>
- </message>
- <message>
- <source>Failed to discard the saved state of the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងការ​បោះបង់​ស្ថានភាព​របស់​ម៉ាស៊ីន​និម្មិត​ដែលបាន​រក្សាទុក &lt;b&gt;%1&lt;/b&gt; ។</translation>
- </message>
- <message>
- <source>Failed to discard the snapshot &lt;b&gt;%1&lt;/b&gt; of the virtual machine &lt;b&gt;%2&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងកា​រ​បោះបង់​រូបថត &lt;b&gt;%1&lt;/b&gt; របស់​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%2&lt;/b&gt; ។</translation>
- </message>
- <message>
- <source>Failed to discard the current state of the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងកា​របោះបង់​ស្ថានភាព​បច្ចុប្បន្ន​របស់​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;/b&gt; ។</translation>
- </message>
- <message>
- <source>Failed to discard the current snapshot and the current state of the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បានបរាជ័យ​ក្នុងការ​បោះបង់​រូបថត​អេក្រង់ និង​ស្ថានភាព​បច្ចុប្បន្ន​របស់​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;/b&gt; ។</translation>
- </message>
- <message>
- <source>There is no virtual machine named &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>គ្មាន​ម៉ាស៊ីន​និម្មិត​ដែល​មាន​ឈ្មោះ &lt;b&gt;%1&lt;/b&gt; នោះ​ទេ ។</translation>
- </message>
- <message>
- <source>&lt;p&gt;Are you sure you want to permanently delete the virtual machine &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;This operation cannot be undone.&lt;/p&gt;</source>
- <translation>&lt;p&gt;តើអ្នក​ប្រាកដ​ជា​ចង់​លុប​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;/b&gt; ជា​អចិន្ត្រៃយ៍​ឬ ?&lt;/p&gt;&lt;p&gt;ប្រតិបត្តិការ​នេះ​មិនអាច​ត្រូវ​បាន​ធ្វើ​វិញ​ទេ ។&lt;/p&gt;</translation>
+ <source>VirtualBox - Information</source>
+ <comment>msg box title</comment>
+ <translation>VirtualBox - ព័ត៌មាន</translation>
</message>
<message>
- <source>&lt;p&gt;Are you sure you want to unregister the inaccessible virtual machine &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;You will no longer be able to register it back from GUI.&lt;/p&gt;</source>
- <translation>&lt;p&gt;តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប​ឈ្មោះ​ម៉ាស៊ីននិម្មិត &lt;b&gt;%1&lt;/b&gt;​ដែល​មិនអាច​ចូលដំណើរការ​បាន​​ដែរឬទេ?&lt;/p&gt;&lt;p&gt;អ្នក​នឹង​មិនអាច​ចុះឈ្មោះ​វា​បានទៀតទេ​ពី GUI ។&lt;/p&gt;</translation>
+ <source>VirtualBox - Question</source>
+ <comment>msg box title</comment>
+ <translation>VirtualBox - សំណួរ</translation>
</message>
<message>
- <source>&lt;p&gt;Are you sure you want to discard the saved state of the virtual machine &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;This operation is equivalent to resetting or powering off the machine without doing a proper shutdown by means of the guest OS.&lt;/p&gt;</source>
- <translation>&lt;p&gt;តើ​អ្នក​ប្រាកដ​ជា​ចង់​បោះបង់​ស្ថានភាព​ដែលបានរក្សាទុក​របស់ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;/b&gt;ដែរឬទេ ?&lt;/p&gt;&lt;p&gt;ប្រតិបត្តិការ​នេះ​មិន​ស្មើ​នឹង​កា​រកំណត់​ឡើង​វិញ ឬ​បិទ​ម៉ាស៊ីន​​ដោ​​យ​មិន​បានចុច​ប៊ូតុង​ដោយ​សមរម្យ​តាម​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ។&lt;/p&gt;</translation>
+ <source>VirtualBox - Warning</source>
+ <comment>msg box title</comment>
+ <translation>VirtualBox - កា​រព្រមាន</translation>
</message>
<message>
- <source>Failed to create a new session.</source>
- <translation>បានបរាជ័យ​ក្នុងការ​បង្កើត​សម័យ​ថ្មី ។</translation>
+ <source>VirtualBox - Error</source>
+ <comment>msg box title</comment>
+ <translation>VirtualBox - កំហុស</translation>
</message>
<message>
- <source>Failed to open a session for the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បានបរាជ័យ​ក្នុងកា​របើក​សម័យ​សម្រាប់​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;/b&gt; ។</translation>
+ <source>VirtualBox - Critical Error</source>
+ <comment>msg box title</comment>
+ <translation>VirtualBox - កំហុស​ធ្ងន់ធ្ងរ</translation>
</message>
<message>
- <source>Failed to create the host network interface &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="obsolete">បាន​បរាជ័យ​ក្នុងការ​បង្កើត​ចំណុច​ប្រទាក់​បណ្ដាញ &lt;b&gt;%1&lt;/b&gt; ។</translation>
+ <source>Do not show this message again</source>
+ <comment>msg box flag</comment>
+ <translation>កុំ​បង្ហាញ​សារ​នេះ​ម្ដង​ទៀត</translation>
</message>
<message>
- <source>Failed to remove the host network interface &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងការ​យក​ចំណុច​ប្រទាក់​បណ្ដាញ​ម៉ាស៊ីន​ &lt;b&gt;%1&lt;/b&gt; ចេញ ។</translation>
+ <source>Failed to open &lt;tt>%1&lt;/tt>. Make sure your desktop environment can properly handle URLs of this type.</source>
+ <translation>បានបរាជ័យ​ក្នុងការ​បើក &lt;tt>%1&lt;/tt> ។ ប្រាកដ​ថា​បរិស្ថាន​ផ្ទៃតុ​របស់​អ្នក​អាច​គ្រប់គ្រង URLs នៃ​ប្រភេទ​នេះ​យ៉ាង​ត្រឹមត្រូវ ។</translation>
</message>
<message>
- <source>Failed to attach the USB device &lt;b&gt;%1&lt;/b&gt; to the virtual machine &lt;b&gt;%2&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងកា​រភ្ជាប់​ឧបករណ៍ USB &lt;b&gt;%1&lt;/b&gt; ទៅ​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%2&lt;/b&gt; ។</translation>
+ <source>&lt;p>Failed to initialize COM or to find the VirtualBox COM server. Most likely, the VirtualBox server is not running or failed to start.&lt;/p>&lt;p>The application will now terminate.&lt;/p></source>
+ <translation>&lt;p>បានបរាជ័យ​ក្នុងកា​រចាប់ផ្ដើម COM ឬ​រកម៉ាស៊ីនបម្រើ VirtualBox COM ។ ភាគ​ច្រើន​ម៉ាស៊ីនបម្រើ VirtualBox មិន​រត់​ ឬ​បរាជ័យ​ក្នុងកា​រចាប់ផ្ដើម ។&lt;/p>&lt;p>កម្មវិធី​នឹង​បិទ​ឥឡូវ ។&lt;/p></translation>
</message>
<message>
- <source>Failed to detach the USB device &lt;b&gt;%1&lt;/b&gt; from the virtual machine &lt;b&gt;%2&lt;/b&gt;.</source>
- <translation>បាន​ប​រាជ័យ​ក្នុងការ​ផ្ដាច់​ឧបករណ៍ USB &lt;b&gt;%1&lt;/b&gt; ពី​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%2&lt;/b&gt; ។</translation>
+ <source>&lt;p>Failed to create the VirtualBox COM object.&lt;/p>&lt;p>The application will now terminate.&lt;/p></source>
+ <translation>&lt;p>បានបរាជ័យ​ក្នុងកា​របង្កើត​វត្ថុ VirtualBox COM ។&lt;/p>&lt;p>កម្មវិធី​នឹង​បិទ​ឥឡូវ​នេះ ។&lt;/p></translation>
</message>
<message>
- <source>Failed to create a shared folder &lt;b&gt;%1&lt;/b&gt; (pointing to &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) for the virtual machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងកា​របង្កើត​ថត &lt;b&gt;%1&lt;/b&gt; (ចង្អុល​ទៅ​ &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) សម្រាប់​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%3&lt;/b&gt; ។</translation>
+ <source>Failed to set global VirtualBox properties.</source>
+ <translation>បាន​បរាជ័យ​ក្នុង​ការ​កំណត់លក្ខណៈសម្បត្តិរបស់ VirtualBox ។</translation>
</message>
<message>
- <source>Failed to remove the shared folder &lt;b&gt;%1&lt;/b&gt; (pointing to &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) from the virtual machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងកា​រយក​ថត​ដែល​បាន​ចែករំលែក​ចេញ &lt;b&gt;%1&lt;/b&gt; (ចង្អុល​ទៅ &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) ពី​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%3&lt;/b&gt; ។</translation>
+ <source>Failed to access the USB subsystem.</source>
+ <translation>បាន​បរាជ័យ​ក្នុង​ការ​​ចូលដំណើរការ​ប្រព័ន្ធ​រង​របស់ USB ។</translation>
</message>
<message>
- <source>&lt;p&gt;The Virtual Machine reports that the guest OS does not support &lt;b&gt;mouse pointer integration&lt;/b&gt; in the current video mode. You need to capture the mouse (by clicking over the VM display or pressing the host key) in order to use the mouse inside the guest OS.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ម៉ាស៊ីន​និម្មិត​រាយការណ៍​ថា​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​មិន​គាំទ្រទេ ។ &lt;b&gt;ការ​រួម​បញ្ចូល​ទ្រនិច​កណ្ដុរ&lt;/b&gt; នៅ​ក្នុង​របៀប​វីដេអូ​បច្ចុប្បន្ន ។ អ្នក​ត្រូវតែ​ចាប់យក​កណ្ដុរ (ដោយ​ចុច​លើ​ការ​បង្ហាញ VM ឬ​ចុច​គ្រាប់ចុច​លើ​ម៉ាស៊ីន) ដើម្បី​ប្រើ​កណ្ដុរ​ខាង​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ។&lt;/p&gt;</translation>
+ <source>Failed to create a new virtual machine.</source>
+ <translation>បាន​បរាជ័យ​ក្នុង​ការ​បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី ។</translation>
</message>
<message>
- <source>&lt;p&gt;The Virtual Machine is currently in the &lt;b&gt;Paused&lt;/b&gt; state and therefore does not accept 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.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ម៉ាស៊ីន​និម្មិត​បច្ចុប្បន្ន​ស្ថិត​ក្នុង​ស្ថានភាព &lt;b&gt;បាន​ផ្អាក&lt;/b&gt; ហើយ​ដូច្នេះ​មិន​ទទួល​​ក្ដារចុច​ ឬ​កណ្ដុរ​ណា​មួយ ។ ប្រសិន​បើ​អ្នក​ចង់​បន្ត​ដំណើរការ​ខាង​ក្នុង VM អ្នក​ត្រូវ​តែ​បន្តវា ដោយ​ជ្រើស​សកម្មភាព​ដែល​ទាក់ទង​ពីរបារ​ម៉ឺនុយ ។&lt;/p&gt;</translation>
+ <source>Failed to create a new virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បានបរាជ័យ​ក្នុងការ​បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;p&gt;Cannot run VirtualBox in &lt;i&gt;VM Selector&lt;/i&gt; mode due to local restrictions.&lt;/p&gt;&lt;p&gt;The application will now terminate.&lt;/p&gt;</source>
- <translation>&lt;p&gt;មិន​អាច​រត់ VirtualBox នៅ​ក្នុងរបៀប &lt;i&gt;កម្មវិធី​ជ្រើស VM​&lt;/i&gt; ដោយសារ​តែ​ការ​ដាក់កម្រិត​មូលដ្ឋាន ។&lt;/p&gt;&lt;p&gt;កម្មវិធី​នឹង​បញ្ចប់​ឥឡូវ ។&lt;/p&gt;</translation>
+ <source>Failed to apply the settings to the virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បានបរាជ័យ​ក្នុងការ​អនុវត្ត​ការ​កំណត់ទៅ​កាន់​ម៉ាស៊ីន​និម្មិត​ថ្មី &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;nobr&gt;Fatal Error&lt;/nobr&gt;</source>
- <comment>runtime error info</comment>
- <translation>&lt;nobr&gt;កំហុស​ធ្ងន់ធ្ងរ&lt;/nobr&gt;</translation>
+ <source>Failed to start the virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងការ​ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;nobr&gt;Non-Fatal Error&lt;/nobr&gt;</source>
- <comment>runtime error info</comment>
- <translation>&lt;nobr&gt;មិនមែន​កំហុស​ធ្ងន់ធ្ងរ&lt;/nobr&gt;</translation>
+ <source>Failed to pause the execution of the virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុង​កា​រផ្អាក​ប្រតិបត្តិការ​របស់ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;nobr&gt;Warning&lt;/nobr&gt;</source>
- <comment>runtime error info</comment>
- <translation>&lt;nobr&gt;កា​រព្រមាន&lt;/nobr&gt;</translation>
+ <source>Failed to resume the execution of the virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បានបរាជ័យ​ក្នុងការ​បន្ត​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;nobr&gt;Error ID: &lt;/nobr&gt;</source>
- <comment>runtime error info</comment>
- <translation>&lt;nobr&gt;លេខសម្គាល់​កំហុស ៖&lt;/nobr&gt;</translation>
+ <source>Failed to save the state of the virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងកា​ររក្សាទុក​ស្ថានភាព​របស់​ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>Severity: </source>
- <comment>runtime error info</comment>
- <translation>ភាព​ម៉ឺងម៉ាត់ ៖</translation>
+ <source>Failed to create a snapshot of the virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បានបរាជ័យ​ក្នុងការ​បង្កើត​រូបថត​អេក្រង់​របស់ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;p&gt;A fatal error has occurred during virtual machine execution! The virtual machine will be powered off. It is suggested to use the clipboard to copy the following error message for further examination:&lt;/p&gt;</source>
- <translation>&lt;p&gt;កំហុស​ធ្ងន់ធ្ងរ​មានកើត​ឡើង​កំឡុង​ពេល​ប្រតិបត្តិ​ម៉ាស៊ីន​និម្មិត ! ម៉ាស៊ីន​និម្មិត​នឹង​ត្រូវ​បាន​បិទ ។ វា​ត្រូ​វបាន​ស្នើ​ឲ្យ​ប្រើ​ក្ដារតម្បៀតខ្ទាស់​ដើម្បី​ចម្លង​សារ​កំហុស​ដើម្បីពិនិត្យ​មើល​បន្ថែម​ទេ ៖&lt;/p&gt;</translation>
+ <source>Failed to stop the virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងការ​បញ្ឈប់​ម៉ាស៊ីននិម្មិត &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;p&gt;An error has occurred during virtual machine execution! The error details are shown below. You can try to correct the described error and resume the virtual machine execution.&lt;/p&gt;</source>
- <translation>&lt;p&gt;កំហុស​បានកើត​ឡើង​កំឡុង​ពេល​ប្រតិបត្តិ​ម៉ាស៊ីន​និម្មិត ! សេចក្ដី​លម្អិត​កំហុស​ត្រូវ​បានបង្ហាញ​ខាង​ក្រោម ។ អ្នកអាច​ព្យាយាម​កែ​កំហុស​ដែល​ពិពណ៌នា ហើយ​បន្ត​ប្រតិបត្តិ​ម៉ាស៊ីន​និម្មិត ។&lt;/p&gt;</translation>
+ <source>Failed to remove the virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងកា​រយក​ម៉ាស៊ីន​និម្មិត​ចេញ &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;p&gt;The virtual machine execution may run into an error condition as described below. You may ignore this message, but it is suggested to perform an appropriate action to make sure the described error will not happen.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ការ​ប្រតិបត្តិ​ម៉ាស៊ីន​និម្មិត​អាច​រត់​ក្នុង​លក្ខខណ្ឌ​មាន​កំហុស​ដូច​បាន​ពិពណ៌នា​ខាង​ក្រោម ។ អ្នក​អាច​មិនអើពើ​សារ​នេះ​បាន ប៉ុន្តែ​វា​ត្រូវ​បាន​ស្នើ​ឲ្យ​អនុវត្ត​សកម្មភាព​ដែល​សមរម្យ ដើម្បីប្រាកដ​ថា​សារ​ដែលបានពិពណ៌នា​មិន​កើតឡើង​ទេ ។&lt;/p&gt;</translation>
+ <source>Failed to discard the saved state of the virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងការ​បោះបង់​ស្ថានភាព​របស់​ម៉ាស៊ីន​និម្មិត​ដែលបាន​រក្សាទុក &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>Result&amp;nbsp;Code: </source>
- <comment>error info</comment>
- <translation>កូដ​&amp;nbsp;លទ្ធផល ៖</translation>
+ <source>Failed to discard the snapshot &lt;b>%1&lt;/b> of the virtual machine &lt;b>%2&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងកា​រ​បោះបង់​រូបថត &lt;b>%1&lt;/b> របស់​ម៉ាស៊ីន​និម្មិត &lt;b>%2&lt;/b> ។</translation>
</message>
<message>
- <source>Component: </source>
- <comment>error info</comment>
- <translation>សមាសភាគ ៖</translation>
+ <source>Failed to discard the current state of the virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងកា​របោះបង់​ស្ថានភាព​បច្ចុប្បន្ន​របស់​ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>Interface: </source>
- <comment>error info</comment>
- <translation>ចំណុច​ប្រទាក់ ៖</translation>
+ <source>Failed to discard the current snapshot and the current state of the virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បានបរាជ័យ​ក្នុងការ​បោះបង់​រូបថត​អេក្រង់ និង​ស្ថានភាព​បច្ចុប្បន្ន​របស់​ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>Callee: </source>
- <comment>error info</comment>
- <translation>Callee ៖ </translation>
+ <source>There is no virtual machine named &lt;b>%1&lt;/b>.</source>
+ <translation>គ្មាន​ម៉ាស៊ីន​និម្មិត​ដែល​មាន​ឈ្មោះ &lt;b>%1&lt;/b> នោះ​ទេ ។</translation>
</message>
<message>
- <source>Callee&amp;nbsp;RC: </source>
- <comment>error info</comment>
- <translation>Callee&amp;nbsp;RC ៖ </translation>
+ <source>&lt;p>Are you sure you want to permanently delete the virtual machine &lt;b>%1&lt;/b>?&lt;/p>&lt;p>This operation cannot be undone.&lt;/p></source>
+ <translation>&lt;p>តើអ្នក​ប្រាកដ​ជា​ចង់​លុប​ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;/b> ជា​អចិន្ត្រៃយ៍​ឬ ?&lt;/p>&lt;p>ប្រតិបត្តិការ​នេះ​មិនអាច​ត្រូវ​បាន​ធ្វើ​វិញ​ទេ ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Could not find a language file for the language &lt;b&gt;%1&lt;/b&gt; in the directory &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;The language will be temporarily reset to the system default language. Please go to the &lt;b&gt;Preferences&lt;/b&gt; dialog which you can open from the &lt;b&gt;File&lt;/b&gt; menu of the main VirtualBox window, and select one of the existing languages on the &lt;b&gt;Language&lt;/b&gt; page.&lt;/p&gt;</source>
- <translation>&lt;p&gt;រក​មិន​ឃើញ​​ឯកសារ​ភាសា​សម្រាប់​ភាសា &lt;b&gt;%1&lt;/b&gt; នៅ​ក្នុង &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt;ទេ ។&lt;/p&gt;&lt;p&gt;ភាសា​នឹង​ត្រូវ​បានកំណត់​ឡើង​វិញជា​បណ្ដោះអាសន្ន​ទៅ​ភាសា​លំនាំដើម​របស់​ប្រព័ន្ធ ។ សូម​ចូល​ទៅ​ប្រអប់ &lt;b&gt;ចំណូលចិត្ត&lt;/b&gt; ដែល​អ្នក​អាច​បើក​ពី​ម៉ឺនុយ &lt;b&gt;ឯកសារ&lt;/b&gt; នៃ​បង្អួច​ VirtualBox មេ ហើយ​ជ្រើស​ភាសា​មួយ​ក្នុង​ចំណោម​ភាសា​ដែល​មាន​នៅ​លើ​ទំព័រ &lt;b&gt;ភាសា&lt;/b&gt; ។&lt;/p&gt;</translation>
+ <source>&lt;p>Are you sure you want to unregister the inaccessible virtual machine &lt;b>%1&lt;/b>?&lt;/p>&lt;p>You will no longer be able to register it back from GUI.&lt;/p></source>
+ <translation>&lt;p>តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប​ឈ្មោះ​ម៉ាស៊ីននិម្មិត &lt;b>%1&lt;/b>​ដែល​មិនអាច​ចូលដំណើរការ​បាន​​ដែរឬទេ?&lt;/p>&lt;p>អ្នក​នឹង​មិនអាច​ចុះឈ្មោះ​វា​បានទៀតទេ​ពី GUI ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Could not load the language file &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt;. &lt;p&gt;The language will be temporarily reset to English (built-in). Please go to the &lt;b&gt;Preferences&lt;/b&gt; dialog which you can open from the &lt;b&gt;File&lt;/b&gt; menu of the main VirtualBox window, and select one of the existing languages on the &lt;b&gt;Language&lt;/b&gt; page.&lt;/p&gt;</source>
- <translation>&lt;p&gt;មិនអាច​ផ្ទុក​ឯកសារ​ភាសា &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; បានទេ ។ &lt;p&gt;ភាសា​នឹង​ត្រូវ​បានកំណត់​ទៅ​ជា​ភាសា​អង់គ្លេស​ជា​បណ្ដោះអាសន្ន ។ សូម​ចូល​ទៅ​ប្រអប់ &lt;b&gt;ចំណូល​ចិត្ត&lt;/b&gt; ដែល​អ្នក​អាច​បើក​ពី​ម៉ឺនុយ​ &lt;b&gt;ឯកសារ&lt;/b&gt; នៃ​បង្អួច VirtualBox មេ ហើយ​ជ្រើស​ភាសា​មួយ​ក្នុងចំណោម​ភាសា​ដែល​មាន​ស្រាប់​នៅ​លើ​ទំព័រ &lt;b&gt;ភាសា&lt;/b&gt; ។&lt;/p&gt;</translation>
+ <source>&lt;p>Are you sure you want to discard the saved state of the virtual machine &lt;b>%1&lt;/b>?&lt;/p>&lt;p>This operation is equivalent to resetting or powering off the machine without doing a proper shutdown by means of the guest OS.&lt;/p></source>
+ <translation>&lt;p>តើ​អ្នក​ប្រាកដ​ជា​ចង់​បោះបង់​ស្ថានភាព​ដែលបានរក្សាទុក​របស់ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;/b>ដែរឬទេ ?&lt;/p>&lt;p>ប្រតិបត្តិការ​នេះ​មិន​ស្មើ​នឹង​កា​រកំណត់​ឡើង​វិញ ឬ​បិទ​ម៉ាស៊ីន​​ដោ​​យ​មិន​បានចុច​ប៊ូតុង​ដោយ​សមរម្យ​តាម​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;VirtualBox Guest Additions installed in the Guest OS are too old: the installed version is %1, the expected version is %2. Some features that require Guest Additions (mouse integration, guest display auto-resize) will most likely stop working properly.&lt;/p&gt;&lt;p&gt;Please update Guest Additions to the current version by choosing &lt;b&gt;Install Guest Additions&lt;/b&gt; from the &lt;b&gt;Devices&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ផ្នែក​បន្ថែម​ភាសា​ភ្ញៀវ​របស់ VirtualBox បាន​ដំឡើង​នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ចាស់​ពេក ៖ កំណែ​ដែល​បាន​ដំឡើង​គឺ %1 កំណែ​ដែល​រំពឹង​ទុកគឺ %2 ។ លក្ខណៈពិសេស​មួយ​ចំនួន​ត្រូវការ​ផ្នែកបន្ថែម​របស់​ម៉ាស៊ីន​ភ្ញៀវ (ការ​រួម​បញ្ចូល​កណ្ដុរ បង្ហាញ​ការ​ផ្លាស់ប្ដូរ​ទំហំ​ដោយ​ស្វ័យ​ប្រវត្តិ​របស់​ម៉ាស៊ីន​ភ្ញៀវ) នឹង​បញ្ឈប់​ដំណើរការ​យ៉ាង​ត្រឹមត្រូវ ។&lt;/p&gt;&lt;p&gt;សូម​ធ្វើ​ឲ្យ​ផ្នែក​បន្ថែម​របស់ម៉ាស៊ីន​ភ្ញៀវ​ទាន់សម័យ​ទៅ​កំណែ​បច្ចុប្បន្ន​ ដោយ​ជ្រើស &lt;b&gt;ដំឡើង​ផ្នែក​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ&lt;/b&gt; ពី​ម៉ឺនុយ &lt;b&gt;ឧបករណ៍&lt;/b&gt; ។&lt;/p&gt;</translation>
+ <source>Failed to create a new session.</source>
+ <translation>បានបរាជ័យ​ក្នុងការ​បង្កើត​សម័យ​ថ្មី ។</translation>
</message>
<message>
- <source>&lt;p&gt;VirtualBox Guest Additions installed in the Guest OS are outdated: the installed version is %1, the expected version is %2. Some features that require Guest Additions (mouse integration, guest display auto-resize) may not work as expected.&lt;/p&gt;&lt;p&gt;It is recommended to update Guest Additions to the current version by choosing &lt;b&gt;Install Guest Additions&lt;/b&gt; from the &lt;b&gt;Devices&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ផ្នែក​បន្ថែម​របស់ម៉ាស៊ីន​ភ្ញៀវ VirtualBox បានដំឡើង​នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ​គឺ​ហួស​សម័យ​ហើយ ៖ កំណែ​ដែលបានដំឡើង​គឺ %1 កំណែ​ដែល​រំពឹង​ទុក​គឺ %2 ។ លក្ខណៈ​ពិសេស​មួយ​ចំនួន​ដែល​ត្រូវការ​ផ្នែក​បន្ថែម​របស់​ម៉ាស៊ីន​ភ្ញៀវ (ការ​រួម​បញ្ចូល​កណ្ដុរ បង្ហាញ​កា​រផ្លាស់ប្ដូរ​ទំហំ​ដោយ​ស្វ័យ​ប្រវត្តិ​របស់ម៉ាស៊ីន​ភ្ញៀវ) មិនអាច​ដំណើរការ​ដូច​ដែល​បាន​រំពឹង​ទុក​ទេ ។&lt;/p&gt;&lt;p&gt;វា​ត្រូ​វបានផ្ដល់​អនុសាសន៍​ឲ្យ​ធ្វើ​ឲ្យ​ផ្នែកបន្ថែម​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ទាន់សម័យ​ទៅ​កណែ​បច្ចុប្បន្ន ដោយ​ជ្រើស​ &lt;b&gt;ដំឡើង​ផ្នែក​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ&lt;/b&gt; ពី​ម៉ឺនុយ &lt;b&gt;ឧបករណ៍&lt;/b&gt; ។&lt;/p&gt;</translation>
+ <source>Failed to open a session for the virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បានបរាជ័យ​ក្នុងកា​របើក​សម័យ​សម្រាប់​ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;p&gt;VirtualBox Guest Additions installed in the Guest OS are too recent for this version of VirtualBox: the installed version is %1, the expected version is %2.&lt;/p&gt;&lt;p&gt;Using a newer version of Additions with an older version of VirtualBox is not supported. Please install the current version of Guest Additions by choosing &lt;b&gt;Install Guest Additions&lt;/b&gt; from the &lt;b&gt;Devices&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ផ្នែក​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ​របស់ VirtualBox នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ថ្មីពេក​សម្រាប់​កំណែ​របស់ VirtualBox ៖ កំណែ​ដែល​បាន​ដំឡើង​គឺ %1 កំណែ​ដែល​រំពឹង​ទុក​គឺ %2 ។&lt;/p&gt;&lt;p&gt;កា​រប្រើកំណែ​ថ្មី​របស់​បន្ថែម​ផ្នែកបន្ថែម​ជាង​កំណែ​ចាស់​របស់ VirtualBox មិន​ត្រូវ​បានគាំទ្រទេ ។ សូម​ដំឡើង​កំណែ​បច្ចុប្បន្ន​របស់​ផ្នែកបន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ ដោយ​ជ្រើស​&lt;b&gt;ដំឡើង​ផ្នែក​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ&lt;/b&gt; ពី​ម៉ឺនុយ &lt;b&gt;ឧបករណ៍&lt;/b&gt; ។&lt;/p&gt;</translation>
+ <source>Failed to create the host network interface &lt;b>%1&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងការ​បង្កើត​ចំណុច​ប្រទាក់​បណ្ដាញ &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>Failed to change the snapshot folder path of the virtual machine &lt;b&gt;%1&lt;b&gt; to &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងការ​ផ្លាស់ប្ដូរ​ផ្លូវ​ថត​រូបថត​របស់​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;b&gt; ទៅ &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; ។</translation>
+ <source>Failed to remove the host network interface &lt;b>%1&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងការ​យក​ចំណុច​ប្រទាក់​បណ្ដាញ​ម៉ាស៊ីន​ &lt;b>%1&lt;/b> ចេញ ។</translation>
</message>
<message>
- <source>&lt;p&gt;Failed to remove the shared folder &lt;b&gt;%1&lt;/b&gt; (pointing to &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) from the virtual machine &lt;b&gt;%3&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Please close all programs in the guest OS that may be using this shared folder and try again.&lt;/p&gt;</source>
- <translation>&lt;p&gt;បានបរាជ័យ​ក្នុងកា​រយក​ថត​ដែល​បានចែករំលែក &lt;b&gt;%1&lt;/b&gt; ចេញ (ចង្អុល​ទៅ &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) ពី​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%3&lt;/b&gt; ។&lt;/p&gt;&lt;p&gt;សូម​បិទ​កម្មវិធី​ទាំង​អស់​នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់ម៉ាស៊ីន​ភ្ញៀវ​ដែល​អាច​កំពុង​ប្រើ​ថត​ដែលបានចែករំលែក​នេះ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។&lt;/p&gt;</translation>
+ <source>Failed to attach the USB device &lt;b>%1&lt;/b> to the virtual machine &lt;b>%2&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងកា​រភ្ជាប់​ឧបករណ៍ USB &lt;b>%1&lt;/b> ទៅ​ម៉ាស៊ីន​និម្មិត &lt;b>%2&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;p&gt;Could not find the VirtualBox Guest Additions CD image file &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; or &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;Do you want to download this CD image from the Internet?&lt;/p&gt;</source>
- <translation>&lt;p&gt;មិនអាច​រក​​ឯកសារ​រូបភាព​ស៊ីឌី​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ​របស់ VirtualBox &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; ឬ &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt; ។&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;តើអ្នក​ចង់​ទាញ​យក​រូបភាព​ស៊ីឌី​ពី​អ៊ីនធឺណិត​ដែរឬទេ ?&lt;/p&gt;</translation>
+ <source>Failed to detach the USB device &lt;b>%1&lt;/b> from the virtual machine &lt;b>%2&lt;/b>.</source>
+ <translation>បាន​ប​រាជ័យ​ក្នុងការ​ផ្ដាច់​ឧបករណ៍ USB &lt;b>%1&lt;/b> ពី​ម៉ាស៊ីន​និម្មិត &lt;b>%2&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;p&gt;Failed to download the VirtualBox Guest Additions CD image from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</source>
- <translation>&lt;p&gt;បាន​បរាជ័យ​ក្នុងកា​រទាញ​​​យក​រូបភាព​ស៊ីឌី​បន្ថែម​របស់ម៉ាស៊ីន​ភ្ញៀវ​របស់ VirtualBox ពី &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; ។&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;%3&lt;/p&gt;</translation>
+ <source>Failed to create a shared folder &lt;b>%1&lt;/b> (pointing to &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr>) for the virtual machine &lt;b>%3&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងកា​របង្កើត​ថត &lt;b>%1&lt;/b> (ចង្អុល​ទៅ​ &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr>) សម្រាប់​ម៉ាស៊ីន​និម្មិត &lt;b>%3&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;p&gt;Are you sure you want to download the VirtualBox Guest Additions CD image from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; (size %3 bytes)?&lt;/p&gt;</source>
- <translation>&lt;p&gt;តើ​អ្នក​ប្រាក​ដ​ជា​ចង់​ទាញ​យក​រូបភាព​ស៊ីឌី​បន្ថែម​របស់​ម៉ាស៊ីន​ភ្ញៀវ​របស់ VirtualBox ពី &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; (ទំហំ %3 បៃ) ដែរឬទេ?&lt;/p&gt;</translation>
+ <source>Failed to remove the shared folder &lt;b>%1&lt;/b> (pointing to &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr>) from the virtual machine &lt;b>%3&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងកា​រយក​ថត​ដែល​បាន​ចែករំលែក​ចេញ &lt;b>%1&lt;/b> (ចង្អុល​ទៅ &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr>) ពី​ម៉ាស៊ីន​និម្មិត &lt;b>%3&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;p&gt;The VirtualBox Guest Additions CD image has been successfully downloaded from &lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;&lt;/nobr&gt; and saved locally as &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;Do you want to register this CD image and mount it on the virtual CD/DVD drive?&lt;/p&gt;</source>
- <translation>&lt;p&gt;រូបភាពស៊ីឌីផ្នែក​នែក​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ VirtualBត្រូ​វបាន​ទាញយក​ដោយ​ជោគជ័យ​ពីr&lt;nobr&gt;&lt;a href=&quot;%1&quot;&gt;​%2&lt;/a&gt;&lt;/nobr&gt;bហើយ​បាន​រក្សាទុក​ក្នុង​មូលដ្ឋាន​ជា as &lt;nobr&gt;&lt;b&gt;%3&lt;/b&gt; ។&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;តើ​អ្នក​ចង់​ចុះឈ្មោះ​រូបភាព​ស៊ីឌី​នេះ ហើយ​ម៉ោន​វា​នៅ​លើ​ដ្រាយ​ស៊ីឌី/ឌីវីឌី​និម្មិតដែរឬទេ ?ve?&lt;/p&gt;</translation>
+ <source>&lt;p>The Virtual Machine reports that the guest OS does not support &lt;b>mouse pointer integration&lt;/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.&lt;/p></source>
+ <translation>&lt;p>ម៉ាស៊ីន​និម្មិត​រាយការណ៍​ថា​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​មិន​គាំទ្រទេ ។ &lt;b>ការ​រួម​បញ្ចូល​ទ្រនិច​កណ្ដុរ&lt;/b> នៅ​ក្នុង​របៀប​វីដេអូ​បច្ចុប្បន្ន ។ អ្នក​ត្រូវតែ​ចាប់យក​កណ្ដុរ (ដោយ​ចុច​លើ​ការ​បង្ហាញ VM ឬ​ចុច​គ្រាប់ចុច​លើ​ម៉ាស៊ីន) ដើម្បី​ប្រើ​កណ្ដុរ​ខាង​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;The virtual machine window is optimized to work in &lt;b&gt;%1&amp;nbsp;bit&lt;/b&gt; color mode but the color quality of the virtual display is currently set to &lt;b&gt;%2&amp;nbsp;bit&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Please open the display properties dialog of the guest OS and select a &lt;b&gt;%3&amp;nbsp;bit&lt;/b&gt; color mode, if it is available, for best possible performance of the virtual video subsystem.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note&lt;/b&gt;. Some operating systems, like OS/2, may actually work in 32&amp;nbsp;bit mode but report it as 24&amp;nbsp;bit (16 million colors). You may try to select a different color quality to see if this message disappears or you can simply disable the message now if you are sure the required color quality (%4&amp;nbsp;bit) is not available in the given guest OS.&lt;/p&gt;</source>
- <translation>&lt;p&gt;បង្អួច​ម៉ាស៊ីន​និម្មិត​ត្រូវ​បានធ្វើ​ឲ្យ​ប្រសើរ​ដើម្បី​ធ្វើការ​ក្នុងរបៀប​ពណ៌ &lt;b&gt;%1&amp;nbsp;ប៊ីត&lt;/b&gt; ប៉ុន្តែ​គុណភាពពណ៌​​នៃ​ការ​បង្ហាញ​និម្មិត​បច្ចុប្បន្ន​ត្រូវ​បានកំណត់​ទៅ &lt;b&gt;%2&amp;nbsp;ប៊ីត&lt;/b&gt; ។&lt;/p&gt;&lt;p&gt;សូម​បើក​ប្រអប់លក្ខណៈសម្បត្តិ​បង្ហាញ​របស់​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ហើយ​ជ្រើសរបៀប​ពណ៌ &lt;b&gt;%3&amp;nbsp;ប៊ីត&lt;/b&gt; ប្រសិនបើ​មាន សម្រាប់​ការអនុវត្ត​ដ៏​ល្អ​បំផុត​របស់​ប្រព័ន្ធ​រង​វីដែអូ​និម្មិត ។&lt;/p&gt;&lt;p&gt;&lt;b&gt;ចំណាំ&lt;/b&gt; ។ ប្រព័ន្ធ​ប្រតិបត្តិការ​មួយ​ចំនួន ដូចជា OS/2 អាច​ដំណើរការ​យ៉ាង​ពិតប្រាកដ​នៅ​ក្នុង​របៀប ៣២&amp;nbsp;ប៊ីត ប៉ុន្តែ​រាយការណ៍​ជា ២៤&amp;nbsp;ប៊ីត (១៦​ លាន​ពណ៌) ។ អ្នក​អាច​ព្យាយាម​ជ្រើស​គុណភាព​ពណ៌​ផ្សេង​ដើម្បីមើល​ថាតើ​សារ​នេះ​មិនបង្ហាញ​ ឬ​អ្នក​អាច​បិទ​សារ​យ៉ាង​សាមញ្ញ ឥឡូវ​ប្រសិនបើ​អ្នក​ប្រាកដ​គុណភាព​ពណ៌​ដែល​ត្រូវការ (%4&amp;nbsp;ប៊ីត) មិនអាច​ប្រើ​បាននៅ​ក្នុង​ប្រព័ន្ធ ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ​ដែល​បានផ្ដល់​ឲ្យ​ទេ ។&lt;/p&gt;</translation>
+ <source>&lt;p>The Virtual Machine is currently in the &lt;b>Paused&lt;/b> state and therefore does not accept 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.&lt;/p></source>
+ <translation>&lt;p>ម៉ាស៊ីន​និម្មិត​បច្ចុប្បន្ន​ស្ថិត​ក្នុង​ស្ថានភាព &lt;b>បាន​ផ្អាក&lt;/b> ហើយ​ដូច្នេះ​មិន​ទទួល​​ក្ដារចុច​ ឬ​កណ្ដុរ​ណា​មួយ ។ ប្រសិន​បើ​អ្នក​ចង់​បន្ត​ដំណើរការ​ខាង​ក្នុង VM អ្នក​ត្រូវ​តែ​បន្តវា ដោយ​ជ្រើស​សកម្មភាព​ដែល​ទាក់ទង​ពីរបារ​ម៉ឺនុយ ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;You didn&apos;t attach a hard disk to the new virtual machine. The machine will not be able to boot unless you attach a hard disk with a guest operating system or some other bootable media to it later using the machine settings dialog or the First Run Wizard.&lt;/p&gt;&lt;p&gt;Do you want to continue?&lt;/p&gt;</source>
- <translation>&lt;p&gt;អ្នកមិនបានភ្ជាប់​ថាសរឹង​ទៅកាន់​ម៉ាស៊ីន​និម្មិត​ថ្មីទេ ។ ម៉ាស៊ីន​នឹង​មិនអាច​ចាប់ផ្ដើម​បានទេ លុះត្រា​តែ​អ្នក​ភ្ជាប់​ថាសរឹង​ជា​មួយ​ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ ឬ​មេឌៀ​ចាប់ផ្ដើម​ផ្សេងៗ​មួយ​ចំនួន​ទៀត​ទៅវា​ ពេលក្រោយ​ប្រើ​ប្រអប់​កំណត់​ម៉ាស៊ីន​ ឬ​រត់​អ្នក​ជំនួយការ​សិន ។&lt;/p&gt;&lt;p&gt;តើអ្នក​ចង់​បន្ត​ដែរឬទេ ?&lt;/p&gt;</translation>
+ <source>&lt;p>Cannot run VirtualBox in &lt;i>VM Selector&lt;/i> mode due to local restrictions.&lt;/p>&lt;p>The application will now terminate.&lt;/p></source>
+ <translation>&lt;p>មិន​អាច​រត់ VirtualBox នៅ​ក្នុងរបៀប &lt;i>កម្មវិធី​ជ្រើស VM​&lt;/i> ដោយសារ​តែ​ការ​ដាក់កម្រិត​មូលដ្ឋាន ។&lt;/p>&lt;p>កម្មវិធី​នឹង​បញ្ចប់​ឥឡូវ ។&lt;/p></translation>
</message>
<message>
- <source>Failed to find license files in &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.</source>
- <translation>បាន​បរាជ័យ​យក្នុងកា​ររក​ឯកសារ​អាជ្ញាបណ្ណ​នៅ​ក្នុង &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; ។</translation>
+ <source>&lt;nobr>Fatal Error&lt;/nobr></source>
+ <comment>runtime error info</comment>
+ <translation>&lt;nobr>កំហុស​ធ្ងន់ធ្ងរ&lt;/nobr></translation>
</message>
<message>
- <source>Failed to open the license file &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;. Check file permissions.</source>
- <translation>បាន​បរាជ័យ​ក្នុងកា​របើក​ឯកសារ​អាជ្ញាប័ណ្ណ &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; ។ ពិនិត្យ​មើល​សិទ្ធិ​របស់​ឯកសារ ។</translation>
+ <source>&lt;nobr>Non-Fatal Error&lt;/nobr></source>
+ <comment>runtime error info</comment>
+ <translation>&lt;nobr>មិនមែន​កំហុស​ធ្ងន់ធ្ងរ&lt;/nobr></translation>
</message>
<message>
- <source>Failed to send the ACPI Power Button press event to the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងការ​ផ្ញើ​កា​រចុច​ប៊ូតុងថាមពល ACPI ទៅ​កាន់​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;/b&gt; ។</translation>
+ <source>&lt;nobr>Warning&lt;/nobr></source>
+ <comment>runtime error info</comment>
+ <translation>&lt;nobr>កា​រព្រមាន&lt;/nobr></translation>
</message>
<message>
- <source>&lt;p&gt;Congratulations! You have been successfully registered as a user of VirtualBox.&lt;/p&gt;&lt;p&gt;Thank you for finding time to fill out the registration form!&lt;/p&gt;</source>
- <translation>&lt;p&gt;សូមអបអរសាទរ ! អ្នក​បានចុះឈ្មោះ​ជា​អ្នក​ប្រើ VirtualBox ដោយ​ជោគជ័យ​ហើយ ។ &lt;/p&gt;&lt;p&gt;សូម​អរគុណ​ចំពោះ​ការ​ចំណាយ​ពេលវេលា​បំពេញ​សំណុំបែបបទ​ចុះឈ្មោះ !&lt;/p&gt;</translation>
+ <source>&lt;nobr>Error ID: &lt;/nobr></source>
+ <comment>runtime error info</comment>
+ <translation>&lt;nobr>លេខសម្គាល់​កំហុស ៖&lt;/nobr></translation>
</message>
<message>
- <source>&lt;p&gt;Failed to register the VirtualBox product&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;បាន​បរាជ័យ​ក្នុងការ​ចុះឈ្មោះ​ផលិតផល VirtualBox​&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</translation>
+ <source>Severity: </source>
+ <comment>runtime error info</comment>
+ <translation>ភាព​ម៉ឺងម៉ាត់ ៖</translation>
</message>
<message>
- <source>&lt;p&gt;Failed to save the global VirtualBox settings to &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt;.&lt;/p&gt;</source>
- <translation>&lt;p&gt;បានបរាជ័យ​ក្នុងកា​ររក្សាទុក​ការ​កំណត់ VirtualBox សកល​ទៅ​កាន់ &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; ។&lt;/p&gt;</translation>
+ <source>&lt;p>A fatal error has occurred during virtual machine execution! The virtual machine will be powered off. It is suggested to use the clipboard to copy the following error message for further examination:&lt;/p></source>
+ <translation>&lt;p>កំហុស​ធ្ងន់ធ្ងរ​មានកើត​ឡើង​កំឡុង​ពេល​ប្រតិបត្តិ​ម៉ាស៊ីន​និម្មិត ! ម៉ាស៊ីន​និម្មិត​នឹង​ត្រូវ​បាន​បិទ ។ វា​ត្រូ​វបាន​ស្នើ​ឲ្យ​ប្រើ​ក្ដារតម្បៀតខ្ទាស់​ដើម្បី​ចម្លង​សារ​កំហុស​ដើម្បីពិនិត្យ​មើល​បន្ថែម​ទេ ៖&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Failed to load the global GUI configuration from &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;The application will now terminate.&lt;/p&gt;</source>
- <translation>&lt;p&gt;បានបរាជ័យ​ក្នុងការ​ផ្ទុក​ការ​កំណត់​រចនាសម្ព័ន្ធ​ចំណុច​ប្រទាក់​អ្នក​ប្រើ​សកល​ពី &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; ។&lt;/p&gt;&lt;p&gt;កម្មវិធី​នឹង​បិទ​ឥឡូវ ។&lt;/p&gt;</translation>
+ <source>&lt;p>An error has occurred during virtual machine execution! The error details are shown below. You can try to correct the described error and resume the virtual machine execution.&lt;/p></source>
+ <translation>&lt;p>កំហុស​បានកើត​ឡើង​កំឡុង​ពេល​ប្រតិបត្តិ​ម៉ាស៊ីន​និម្មិត ! សេចក្ដី​លម្អិត​កំហុស​ត្រូវ​បានបង្ហាញ​ខាង​ក្រោម ។ អ្នកអាច​ព្យាយាម​កែ​កំហុស​ដែល​ពិពណ៌នា ហើយ​បន្ត​ប្រតិបត្តិ​ម៉ាស៊ីន​និម្មិត ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Failed to save the global GUI configuration to &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;The application will now terminate.&lt;/p&gt;</source>
- <translation>&lt;p&gt;បានបរាជ័យ​ក្នុងកា​ររក្សាទុក​ការកំណត់​រចនាសម្ព័ន្ធ​ចំណុច​ប្រទាក់​អ្នក​ប្រើសកល​ទៅ​&lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; ។&lt;/p&gt;&lt;p&gt;កម្មវិធី​នឹង​បិទ​ឥឡូវ ។&lt;/p&gt;</translation>
+ <source>&lt;p>The virtual machine execution may run into an error condition as described below. You may ignore this message, but it is suggested to perform an appropriate action to make sure the described error will not happen.&lt;/p></source>
+ <translation>&lt;p>ការ​ប្រតិបត្តិ​ម៉ាស៊ីន​និម្មិត​អាច​រត់​ក្នុង​លក្ខខណ្ឌ​មាន​កំហុស​ដូច​បាន​ពិពណ៌នា​ខាង​ក្រោម ។ អ្នក​អាច​មិនអើពើ​សារ​នេះ​បាន ប៉ុន្តែ​វា​ត្រូវ​បាន​ស្នើ​ឲ្យ​អនុវត្ត​សកម្មភាព​ដែល​សមរម្យ ដើម្បីប្រាកដ​ថា​សារ​ដែលបានពិពណ៌នា​មិន​កើតឡើង​ទេ ។&lt;/p></translation>
</message>
<message>
- <source>Failed to save the settings of the virtual machine &lt;b&gt;%1&lt;/b&gt; to &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt;.</source>
- <translation>បានបរាជ័យ​ក្នុង​ការ​រក្សាទុក​ការ​កំណត់​​របស់​ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;/b&gt; ទៅ&lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; ។</translation>
+ <source>Result&amp;nbsp;Code: </source>
+ <comment>error info</comment>
+ <translation>កូដ​&amp;nbsp;លទ្ធផល ៖</translation>
</message>
<message>
- <source>Failed to load the settings of the virtual machine &lt;b&gt;%1&lt;/b&gt; from &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt;.</source>
- <translation>បានបរាជ័យ​ក្នុងកា​រផ្ទុក​កា​រកំណត់​របស់ម៉ាស៊ីន​និម្មិត &lt;b&gt;%1&lt;/b&gt; ពី &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; ។</translation>
+ <source>Component: </source>
+ <comment>error info</comment>
+ <translation>សមាសភាគ ៖</translation>
</message>
<message>
- <source>Delete</source>
- <comment>machine</comment>
- <translation>លុប</translation>
+ <source>Interface: </source>
+ <comment>error info</comment>
+ <translation>ចំណុច​ប្រទាក់ ៖</translation>
</message>
<message>
- <source>Unregister</source>
- <comment>machine</comment>
- <translation>មិន​ចុះឈ្មោះ</translation>
+ <source>Callee: </source>
+ <comment>error info</comment>
+ <translation>Callee ៖ </translation>
</message>
<message>
- <source>Discard</source>
- <comment>saved state</comment>
- <translation>បោះបង់</translation>
+ <source>Callee&amp;nbsp;RC: </source>
+ <comment>error info</comment>
+ <translation>Callee&amp;nbsp;RC ៖ </translation>
</message>
<message>
- <source>&lt;p&gt;There are hard disks attached to SATA ports of this virtual machine. If you disable the SATA controller, all these hard disks will be automatically detached.&lt;/p&gt;&lt;p&gt;Are you sure that you want to disable the SATA controller?&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;មាន​ថាសរឹង​បាន​តភ្ជាប់​ទៅ​ច្រក SATA របស់ម៉ាស៊ីន​និម្មិត​នេះ ។ ប្រសិន​បើ​អ្នក​បិទ​វត្ថុ​បញ្ជា SATA ថាសរឹង​ទាំង​នេះ​នឹង​ត្រូវ​បាន​ផ្ដាច់​ដោយ​ស្វ័យ​ប្រវត្តិ ។&lt;/p&gt;&lt;p&gt;តើ​អ្នក​ប្រាកដ​ជា​ចង់​បិទ​វត្ថុ​បញ្ជា SATA ដែរឬទេ ?&lt;/p&gt;</translation>
+ <source>&lt;p>Could not find a language file for the language &lt;b>%1&lt;/b> in the directory &lt;b>&lt;nobr>%2&lt;/nobr>&lt;/b>.&lt;/p>&lt;p>The language will be temporarily reset to the system default language. Please go to the &lt;b>Preferences&lt;/b> dialog which you can open from the &lt;b>File&lt;/b> menu of the main VirtualBox window, and select one of the existing languages on the &lt;b>Language&lt;/b> page.&lt;/p></source>
+ <translation>&lt;p>រក​មិន​ឃើញ​​ឯកសារ​ភាសា​សម្រាប់​ភាសា &lt;b>%1&lt;/b> នៅ​ក្នុង &lt;b>&lt;nobr>%2&lt;/nobr>&lt;/b>ទេ ។&lt;/p>&lt;p>ភាសា​នឹង​ត្រូវ​បានកំណត់​ឡើង​វិញជា​បណ្ដោះអាសន្ន​ទៅ​ភាសា​លំនាំដើម​របស់​ប្រព័ន្ធ ។ សូម​ចូល​ទៅ​ប្រអប់ &lt;b>ចំណូលចិត្ត&lt;/b> ដែល​អ្នក​អាច​បើក​ពី​ម៉ឺនុយ &lt;b>ឯកសារ&lt;/b> នៃ​បង្អួច​ VirtualBox មេ ហើយ​ជ្រើស​ភាសា​មួយ​ក្នុង​ចំណោម​ភាសា​ដែល​មាន​នៅ​លើ​ទំព័រ &lt;b>ភាសា&lt;/b> ។&lt;/p></translation>
</message>
<message>
- <source>Disable</source>
- <comment>hard disk</comment>
- <translation>បានបិទ</translation>
+ <source>&lt;p>Could not load the language file &lt;b>&lt;nobr>%1&lt;/nobr>&lt;/b>. &lt;p>The language will be temporarily reset to English (built-in). Please go to the &lt;b>Preferences&lt;/b> dialog which you can open from the &lt;b>File&lt;/b> menu of the main VirtualBox window, and select one of the existing languages on the &lt;b>Language&lt;/b> page.&lt;/p></source>
+ <translation>&lt;p>មិនអាច​ផ្ទុក​ឯកសារ​ភាសា &lt;b>&lt;nobr>%1&lt;/nobr>&lt;/b> បានទេ ។ &lt;p>ភាសា​នឹង​ត្រូវ​បានកំណត់​ទៅ​ជា​ភាសា​អង់គ្លេស​ជា​បណ្ដោះអាសន្ន ។ សូម​ចូល​ទៅ​ប្រអប់ &lt;b>ចំណូល​ចិត្ត&lt;/b> ដែល​អ្នក​អាច​បើក​ពី​ម៉ឺនុយ​ &lt;b>ឯកសារ&lt;/b> នៃ​បង្អួច VirtualBox មេ ហើយ​ជ្រើស​ភាសា​មួយ​ក្នុងចំណោម​ភាសា​ដែល​មាន​ស្រាប់​នៅ​លើ​ទំព័រ &lt;b>ភាសា&lt;/b> ។&lt;/p></translation>
</message>
<message>
- <source>Download</source>
- <comment>additions</comment>
- <translation>ទាញយក</translation>
+ <source>&lt;p>VirtualBox Guest Additions installed in the Guest OS are too old: the installed version is %1, the expected version is %2. Some features that require Guest Additions (mouse integration, guest display auto-resize) will most likely stop working properly.&lt;/p>&lt;p>Please update Guest Additions to the current version by choosing &lt;b>Install Guest Additions&lt;/b> from the &lt;b>Devices&lt;/b> menu.&lt;/p></source>
+ <translation>&lt;p>ផ្នែក​បន្ថែម​ភាសា​ភ្ញៀវ​របស់ VirtualBox បាន​ដំឡើង​នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ចាស់​ពេក ៖ កំណែ​ដែល​បាន​ដំឡើង​គឺ %1 កំណែ​ដែល​រំពឹង​ទុកគឺ %2 ។ លក្ខណៈពិសេស​មួយ​ចំនួន​ត្រូវការ​ផ្នែកបន្ថែម​របស់​ម៉ាស៊ីន​ភ្ញៀវ (ការ​រួម​បញ្ចូល​កណ្ដុរ បង្ហាញ​ការ​ផ្លាស់ប្ដូរ​ទំហំ​ដោយ​ស្វ័យ​ប្រវត្តិ​របស់​ម៉ាស៊ីន​ភ្ញៀវ) នឹង​បញ្ឈប់​ដំណើរការ​យ៉ាង​ត្រឹមត្រូវ ។&lt;/p>&lt;p>សូម​ធ្វើ​ឲ្យ​ផ្នែក​បន្ថែម​របស់ម៉ាស៊ីន​ភ្ញៀវ​ទាន់សម័យ​ទៅ​កំណែ​បច្ចុប្បន្ន​ ដោយ​ជ្រើស &lt;b>ដំឡើង​ផ្នែក​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ&lt;/b> ពី​ម៉ឺនុយ &lt;b>ឧបករណ៍&lt;/b> ។&lt;/p></translation>
</message>
<message>
- <source>Mount</source>
- <comment>additions</comment>
- <translation>ម៉ោន</translation>
+ <source>&lt;p>VirtualBox Guest Additions installed in the Guest OS are outdated: the installed version is %1, the expected version is %2. Some features that require Guest Additions (mouse integration, guest display auto-resize) may not work as expected.&lt;/p>&lt;p>It is recommended to update Guest Additions to the current version by choosing &lt;b>Install Guest Additions&lt;/b> from the &lt;b>Devices&lt;/b> menu.&lt;/p></source>
+ <translation>&lt;p>ផ្នែក​បន្ថែម​របស់ម៉ាស៊ីន​ភ្ញៀវ VirtualBox បានដំឡើង​នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ​គឺ​ហួស​សម័យ​ហើយ ៖ កំណែ​ដែលបានដំឡើង​គឺ %1 កំណែ​ដែល​រំពឹង​ទុក​គឺ %2 ។ លក្ខណៈ​ពិសេស​មួយ​ចំនួន​ដែល​ត្រូវការ​ផ្នែក​បន្ថែម​របស់​ម៉ាស៊ីន​ភ្ញៀវ (ការ​រួម​បញ្ចូល​កណ្ដុរ បង្ហាញ​កា​រផ្លាស់ប្ដូរ​ទំហំ​ដោយ​ស្វ័យ​ប្រវត្តិ​របស់ម៉ាស៊ីន​ភ្ញៀវ) មិនអាច​ដំណើរការ​ដូច​ដែល​បាន​រំពឹង​ទុក​ទេ ។&lt;/p>&lt;p>វា​ត្រូ​វបានផ្ដល់​អនុសាសន៍​ឲ្យ​ធ្វើ​ឲ្យ​ផ្នែកបន្ថែម​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ទាន់សម័យ​ទៅ​កណែ​បច្ចុប្បន្ន ដោយ​ជ្រើស​ &lt;b>ដំឡើង​ផ្នែក​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ&lt;/b> ពី​ម៉ឺនុយ &lt;b>ឧបករណ៍&lt;/b> ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;The host key is currently defined as &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;</source>
- <comment>additional message box paragraph</comment>
- <translation>&lt;p&gt;គ្រាប់ចុច​ម៉ាស៊ីន​បច្ចុប្បន្ន​ត្រូវ​បាន​កំណត់​ជា &lt;b&gt;%1&lt;/b&gt; ។&lt;/p&gt;</translation>
+ <source>&lt;p>VirtualBox Guest Additions installed in the Guest OS are too recent for this version of VirtualBox: the installed version is %1, the expected version is %2.&lt;/p>&lt;p>Using a newer version of Additions with an older version of VirtualBox is not supported. Please install the current version of Guest Additions by choosing &lt;b>Install Guest Additions&lt;/b> from the &lt;b>Devices&lt;/b> menu.&lt;/p></source>
+ <translation>&lt;p>ផ្នែក​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ​របស់ VirtualBox នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ថ្មីពេក​សម្រាប់​កំណែ​របស់ VirtualBox ៖ កំណែ​ដែល​បាន​ដំឡើង​គឺ %1 កំណែ​ដែល​រំពឹង​ទុក​គឺ %2 ។&lt;/p>&lt;p>កា​រប្រើកំណែ​ថ្មី​របស់​បន្ថែម​ផ្នែកបន្ថែម​ជាង​កំណែ​ចាស់​របស់ VirtualBox មិន​ត្រូវ​បានគាំទ្រទេ ។ សូម​ដំឡើង​កំណែ​បច្ចុប្បន្ន​របស់​ផ្នែកបន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ ដោយ​ជ្រើស​&lt;b>ដំឡើង​ផ្នែក​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ&lt;/b> ពី​ម៉ឺនុយ &lt;b>ឧបករណ៍&lt;/b> ។&lt;/p></translation>
</message>
<message>
- <source>Capture</source>
- <comment>do input capture</comment>
- <translation>ចាប់យក</translation>
+ <source>Failed to change the snapshot folder path of the virtual machine &lt;b>%1&lt;b> to &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងការ​ផ្លាស់ប្ដូរ​ផ្លូវ​ថត​រូបថត​របស់​ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;b> ទៅ &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr> ។</translation>
</message>
<message>
- <source>Check</source>
- <comment>inaccessible media message box</comment>
- <translation>ពិនិត្យ​មើល</translation>
+ <source>&lt;p>Failed to remove the shared folder &lt;b>%1&lt;/b> (pointing to &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr>) from the virtual machine &lt;b>%3&lt;/b>.&lt;/p>&lt;p>Please close all programs in the guest OS that may be using this shared folder and try again.&lt;/p></source>
+ <translation>&lt;p>បានបរាជ័យ​ក្នុងកា​រយក​ថត​ដែល​បានចែករំលែក &lt;b>%1&lt;/b> ចេញ (ចង្អុល​ទៅ &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr>) ពី​ម៉ាស៊ីន​និម្មិត &lt;b>%3&lt;/b> ។&lt;/p>&lt;p>សូម​បិទ​កម្មវិធី​ទាំង​អស់​នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់ម៉ាស៊ីន​ភ្ញៀវ​ដែល​អាច​កំពុង​ប្រើ​ថត​ដែលបានចែករំលែក​នេះ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។&lt;/p></translation>
</message>
<message>
- <source>&amp;Backup</source>
- <comment>warnAboutAutoConvertedSettings message box</comment>
- <translation>បម្រុងទុក</translation>
+ <source>&lt;p>Could not find the VirtualBox Guest Additions CD image file &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr> or &lt;nobr>&lt;b>%2&lt;/b>.&lt;/nobr>&lt;/p>&lt;p>Do you want to download this CD image from the Internet?&lt;/p></source>
+ <translation>&lt;p>មិនអាច​រក​​ឯកសារ​រូបភាព​ស៊ីឌី​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ​របស់ VirtualBox &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr> ឬ &lt;nobr>&lt;b>%2&lt;/b> ។&lt;/nobr>&lt;/p>&lt;p>តើអ្នក​ចង់​ទាញ​យក​រូបភាព​ស៊ីឌី​ពី​អ៊ីនធឺណិត​ដែរឬទេ ?&lt;/p></translation>
</message>
<message>
- <source>Switch</source>
- <comment>fullscreen</comment>
- <translation>ប្ដូរ</translation>
+ <source>&lt;p>Failed to download the VirtualBox Guest Additions CD image from &lt;nobr>&lt;a href=&quot;%1&quot;>%2&lt;/a>.&lt;/nobr>&lt;/p>&lt;p>%3&lt;/p></source>
+ <translation>&lt;p>បាន​បរាជ័យ​ក្នុងកា​រទាញ​​​យក​រូបភាព​ស៊ីឌី​បន្ថែម​របស់ម៉ាស៊ីន​ភ្ញៀវ​របស់ VirtualBox ពី &lt;nobr>&lt;a href=&quot;%1&quot;>%2&lt;/a> ។&lt;/nobr>&lt;/p>&lt;p>%3&lt;/p></translation>
</message>
<message>
- <source>Switch</source>
- <comment>seamless</comment>
- <translation>ប្ដូរ</translation>
+ <source>&lt;p>Are you sure you want to download the VirtualBox Guest Additions CD image from &lt;nobr>&lt;a href=&quot;%1&quot;>%2&lt;/a>&lt;/nobr> (size %3 bytes)?&lt;/p></source>
+ <translation>&lt;p>តើ​អ្នក​ប្រាក​ដ​ជា​ចង់​ទាញ​យក​រូបភាព​ស៊ីឌី​បន្ថែម​របស់​ម៉ាស៊ីន​ភ្ញៀវ​របស់ VirtualBox ពី &lt;nobr>&lt;a href=&quot;%1&quot;>%2&lt;/a>&lt;/nobr> (ទំហំ %3 បៃ) ដែរឬទេ?&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Do you really want to reset the virtual machine?&lt;/p&gt;&lt;p&gt;When the machine is reset, unsaved data of all applications running inside it will be lost.&lt;/p&gt;</source>
- <translation>&lt;p&gt;តើ​អ្នក​ពិត​ជា​ចង់​កំណត់​ម៉ាស៊ីននិម្មិត​ឡើង​វិញ​ដែរឬទេ ?&lt;/p&gt;&lt;p&gt;នៅ​ពេល​ម៉ាស៊ីន​ត្រូវ​បាន​កំណត់​ឡើង​វិញ ទិន្នន័យ​របស់​កម្មវិធី​ដែល​មិនបានរក្សាទុកទាំង​អស់​ដែល​កំពុង​រត់​វា​នឹង​ត្រូវ​បានបាត់បង់ ។&lt;/p&gt;</translation>
+ <source>&lt;p>The VirtualBox Guest Additions CD image has been successfully downloaded from &lt;nobr>&lt;a href=&quot;%1&quot;>%2&lt;/a>&lt;/nobr> and saved locally as &lt;nobr>&lt;b>%3&lt;/b>.&lt;/nobr>&lt;/p>&lt;p>Do you want to register this CD image and mount it on the virtual CD/DVD drive?&lt;/p></source>
+ <translation>&lt;p>រូបភាពស៊ីឌីផ្នែក​នែក​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ VirtualBត្រូ​វបាន​ទាញយក​ដោយ​ជោគជ័យ​ពីr&lt;nobr>&lt;a href=&quot;%1&quot;>​%2&lt;/a>&lt;/nobr>bហើយ​បាន​រក្សាទុក​ក្នុង​មូលដ្ឋាន​ជា as &lt;nobr>&lt;b>%3&lt;/b> ។&lt;/nobr>&lt;/p>&lt;p>តើ​អ្នក​ចង់​ចុះឈ្មោះ​រូបភាព​ស៊ីឌី​នេះ ហើយ​ម៉ោន​វា​នៅ​លើ​ដ្រាយ​ស៊ីឌី/ឌីវីឌី​និម្មិតដែរឬទេ ?ve?&lt;/p></translation>
</message>
<message>
- <source>Reset</source>
- <comment>machine</comment>
- <translation>កំណត់​ឡើង​វិញ</translation>
+ <source>&lt;p>The virtual machine window is optimized to work in &lt;b>%1&amp;nbsp;bit&lt;/b> color mode but the color quality of the virtual display is currently set to &lt;b>%2&amp;nbsp;bit&lt;/b>.&lt;/p>&lt;p>Please open the display properties dialog of the guest OS and select a &lt;b>%3&amp;nbsp;bit&lt;/b> color mode, if it is available, for best possible performance of the virtual video subsystem.&lt;/p>&lt;p>&lt;b>Note&lt;/b>. Some operating systems, like OS/2, may actually work in 32&amp;nbsp;bit mode but report it as 24&amp;nbsp;bit (16 million colors). You may try to select a different color quality to see if this message disappears or you can simply disable the message now if you are sure the required color quality (%4&amp;nbsp;bit) is not available in the given guest OS.&lt;/p></source>
+ <translation>&lt;p>បង្អួច​ម៉ាស៊ីន​និម្មិត​ត្រូវ​បានធ្វើ​ឲ្យ​ប្រសើរ​ដើម្បី​ធ្វើការ​ក្នុងរបៀប​ពណ៌ &lt;b>%1&amp;nbsp;ប៊ីត&lt;/b> ប៉ុន្តែ​គុណភាពពណ៌​​នៃ​ការ​បង្ហាញ​និម្មិត​បច្ចុប្បន្ន​ត្រូវ​បានកំណត់​ទៅ &lt;b>%2&amp;nbsp;ប៊ីត&lt;/b> ។&lt;/p>&lt;p>សូម​បើក​ប្រអប់លក្ខណៈសម្បត្តិ​បង្ហាញ​របស់​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ហើយ​ជ្រើសរបៀប​ពណ៌ &lt;b>%3&amp;nbsp;ប៊ីត&lt;/b> ប្រសិនបើ​មាន សម្រាប់​ការអនុវត្ត​ដ៏​ល្អ​បំផុត​របស់​ប្រព័ន្ធ​រង​វីដែអូ​និម្មិត ។&lt;/p>&lt;p>&lt;b>ចំណាំ&lt;/b> ។ ប្រព័ន្ធ​ប្រតិបត្តិការ​មួយ​ចំនួន ដូចជា OS/2 អាច​ដំណើរការ​យ៉ាង​ពិតប្រាកដ​នៅ​ក្នុង​របៀប ៣២&amp;nbsp;ប៊ីត ប៉ុន្តែ​រាយការណ៍​ជា ២៤&amp;nbsp;ប៊ីត (១៦​ លាន​ពណ៌) ។ អ្នក​អាច​ព្យាយាម​ជ្រើស​គុណភាព​ពណ៌​ផ្សេង​ដើម្បីមើល​ថាតើ​សារ​នេះ​មិនបង្ហាញ​ ឬ​អ្នក​អាច​បិទ​សារ​យ៉ាង​សាមញ្ញ ឥឡូវ​ប្រសិនបើ​អ្នក​ប្រាកដ​គុណភាព​ពណ៌​ដែល​ត្រូវការ (%4&amp;nbsp;ប៊ីត) មិនអាច​ប្រើ​បាននៅ​ក្នុង​ប្រព័ន្ធ ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ​ដែល​បានផ្ដល់​ឲ្យ​ទេ ។&lt;/p></translation>
</message>
<message>
- <source>Continue</source>
- <comment>no hard disk attached</comment>
- <translation>បន្ត</translation>
+ <source>&lt;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.&lt;/p>&lt;p>Do you want to continue?&lt;/p></source>
+ <translation>&lt;p>អ្នកមិនបានភ្ជាប់​ថាសរឹង​ទៅកាន់​ម៉ាស៊ីន​និម្មិត​ថ្មីទេ ។ ម៉ាស៊ីន​នឹង​មិនអាច​ចាប់ផ្ដើម​បានទេ លុះត្រា​តែ​អ្នក​ភ្ជាប់​ថាសរឹង​ជា​មួយ​ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ ឬ​មេឌៀ​ចាប់ផ្ដើម​ផ្សេងៗ​មួយ​ចំនួន​ទៀត​ទៅវា​ ពេលក្រោយ​ប្រើ​ប្រអប់​កំណត់​ម៉ាស៊ីន​ ឬ​រត់​អ្នក​ជំនួយការ​សិន ។&lt;/p>&lt;p>តើអ្នក​ចង់​បន្ត​ដែរឬទេ ?&lt;/p></translation>
</message>
<message>
- <source>Go Back</source>
- <comment>no hard disk attached</comment>
- <translation>ទៅ​ក្រោយ</translation>
+ <source>Failed to find license files in &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr>.</source>
+ <translation>បាន​បរាជ័យ​យក្នុងកា​ររក​ឯកសារ​អាជ្ញាបណ្ណ​នៅ​ក្នុង &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr> ។</translation>
</message>
<message>
- <source>Failed to copy file &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; to &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; (%3).</source>
- <translation>បានបរាជ័យ​ក្នុងកា​រចម្លង​ឯកសារ &lt;b&gt;&lt;nobr&gt;%1&lt;/nobr&gt;&lt;/b&gt; ទៅ &lt;b&gt;&lt;nobr&gt;%2&lt;/nobr&gt;&lt;/b&gt; (%3) ។</translation>
+ <source>Failed to open the license file &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr>. Check file permissions.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងកា​របើក​ឯកសារ​អាជ្ញាប័ណ្ណ &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr> ។ ពិនិត្យ​មើល​សិទ្ធិ​របស់​ឯកសារ ។</translation>
</message>
<message>
- <source>&amp;Create</source>
- <comment>hard disk</comment>
- <translation>បង្កើត</translation>
+ <source>Failed to send the ACPI Power Button press event to the virtual machine &lt;b>%1&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងការ​ផ្ញើ​កា​រចុច​ប៊ូតុងថាមពល ACPI ទៅ​កាន់​ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;/b> ។</translation>
</message>
<message>
- <source>Select</source>
- <comment>hard disk</comment>
- <translation>ជ្រើស</translation>
+ <source>&lt;p>Congratulations! You have been successfully registered as a user of VirtualBox.&lt;/p>&lt;p>Thank you for finding time to fill out the registration form!&lt;/p></source>
+ <translation>&lt;p>សូមអបអរសាទរ ! អ្នក​បានចុះឈ្មោះ​ជា​អ្នក​ប្រើ VirtualBox ដោយ​ជោគជ័យ​ហើយ ។ &lt;/p>&lt;p>សូម​អរគុណ​ចំពោះ​ការ​ចំណាយ​ពេលវេលា​បំពេញ​សំណុំបែបបទ​ចុះឈ្មោះ !&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Could not enter seamless mode due to insufficient guest video memory.&lt;/p&gt;&lt;p&gt;You should configure the virtual machine to have at least &lt;b&gt;%1&lt;/b&gt; of video memory.&lt;/p&gt;</source>
- <translation>&lt;p&gt;មិនអាច​ចូល​របៀប​គ្មាន​ថេរ ដោយសារ​តែ​សតិ​វីដេអូ​ម៉ាស៊ីន​ភ្ញៀវ​មិន​គ្រប់គ្រាន់ ។&lt;/p&gt;&lt;p&gt;អ្នក​គួរ​កំណត់​រចនាសម្ព័ន្ធ​ម៉ាស៊ីន​និម្មិត​យ៉ាង​ហោចណាស់​មានសតិ​វីដេអូ &lt;b&gt;%1&lt;/b&gt; ។&lt;/p&gt;</translation>
+ <source>&lt;p>Failed to register the VirtualBox product&lt;/p>&lt;p>%1&lt;/p></source>
+ <translation>&lt;p>បាន​បរាជ័យ​ក្នុងការ​ចុះឈ្មោះ​ផលិតផល VirtualBox​&lt;/p>&lt;p>%1&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Could not switch the guest display to fullscreen mode due to insufficient guest video memory.&lt;/p&gt;&lt;p&gt;You should configure the virtual machine to have at least &lt;b&gt;%1&lt;/b&gt; of video memory.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;Ignore&lt;/b&gt; to switch to fullscreen mode anyway or press &lt;b&gt;Cancel&lt;/b&gt; to cancel the operation.&lt;/p&gt;</source>
- <translation>&lt;p&gt;មិនអាច​ប្ដូរ​ការ​បង្ហាញ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ទៅ​របៀប​ពេញ​អេក្រង់​បានទេ ដោយសារ​តែ​សតិ​វីដេអូ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​មិន​គ្រប់គ្រាន់ ។&lt;/p&gt;&lt;p&gt;អ្នក​គួរ​កំណត់​រចនាសម្ព័ន្ធ​ម៉ាស៊ីន​និម្មិត​ឲ្យ​មានសតិ​​យ៉ាង​ហោចណាស់​ &lt;b&gt;%1&lt;/b&gt; នៃ​សតិ​វីដេអូ ។&lt;/p&gt;&lt;p&gt;ចុច​ &lt;b&gt;មិនអើពើ&lt;/b&gt; ដើម្បី​ប្ដូរ​ទៅ​របៀប​ពេញអេក្រង់ ឬ​បើ​មិន​ដូច្នេះ​ទេ​ចុច &lt;b&gt;បោះបង់&lt;/b&gt; ដើម្បី​បោះបង់​ប្រតិបត្តិការ ។&lt;/p&gt;</translation>
+ <source>&lt;p>Failed to save the global VirtualBox settings to &lt;b>&lt;nobr>%1&lt;/nobr>&lt;/b>.&lt;/p></source>
+ <translation>&lt;p>បានបរាជ័យ​ក្នុងកា​ររក្សាទុក​ការ​កំណត់ VirtualBox សកល​ទៅ​កាន់ &lt;b>&lt;nobr>%1&lt;/nobr>&lt;/b> ។&lt;/p></translation>
</message>
<message>
- <source>You have already installed the latest VirtualBox version. Please repeat the version check later.</source>
- <translation>អ្នក​បាន​ដំឡើង​កំណែ VirtualBox ចុងក្រោយ​បំផុត​រួ​ចហើយ ។ សូម​​ពិនិត្យ​មើល​កំណែ​ពេលក្រោយ ។</translation>
+ <source>&lt;p>Failed to load the global GUI configuration from &lt;b>&lt;nobr>%1&lt;/nobr>&lt;/b>.&lt;/p>&lt;p>The application will now terminate.&lt;/p></source>
+ <translation>&lt;p>បានបរាជ័យ​ក្នុងការ​ផ្ទុក​ការ​កំណត់​រចនាសម្ព័ន្ធ​ចំណុច​ប្រទាក់​អ្នក​ប្រើ​សកល​ពី &lt;b>&lt;nobr>%1&lt;/nobr>&lt;/b> ។&lt;/p>&lt;p>កម្មវិធី​នឹង​បិទ​ឥឡូវ ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;You have &lt;b&gt;clicked the mouse&lt;/b&gt; inside the Virtual Machine display or pressed the &lt;b&gt;host key&lt;/b&gt;. This will cause the Virtual Machine to &lt;b&gt;capture&lt;/b&gt; 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.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;host key&lt;/b&gt; at any time to &lt;b&gt;uncapture&lt;/b&gt; 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&amp;nbsp;&lt;img src=:/hostkey_16px.png/&gt;&amp;nbsp;icon. This icon, together with the mouse icon placed nearby, indicate the current keyboard and mouse capture state.&lt;/p&gt;</source>
- <translation>&lt;p&gt;អ្នក​បាន &lt;b&gt;ចុចកណ្ដុរ&lt;/b&gt; ខាង​ក្នុង​ការ​បង្ហាញ​របស់​ម៉ាស៊ីន​និម្មិត ឬ​បាន​ចុច​ &lt;b&gt;គ្រាប់ចុច host&lt;/b&gt; ។ វា​នឹងធ្វើ​​ឲ្យ​ម៉ាស៊ីន​និម្មិត &lt;b&gt;ចាប់យក&lt;/b&gt; ទស្សន៍ទ្រនិច​កណ្ដុរ​របស់​ម៉ាស៊ីន (តែ​ក្នុងករណី​ដែល​ការ​រួម​បញ្ចូល​ទស្សន៍ទ្រនិច​បច្ចុប្បន្ន​មិន​ត្រូ​វបានគាំទ្រ​ដោយ​ប្រព័ន្ធប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ទេ ។) ហើយ​នឹង​ក្ដារចុច ដែល​នឹង​ធ្វើ​ឲ្យ​កម្មវិធី​ផ្សេងៗ​ដែល​កំពុង​រត់​ក្នុង​ម៉ាស៊ីន​របស់​​​មិនអាច​ប្រើបាន​ទេ ។&lt;/p&gt;&lt;p&gt;អ្នក​អាចចុច​ &lt;b&gt;គ្រាប់ចុច host&lt;/b&gt; នៅពេល​ណាមួយ​ដើម្បី​ &lt;b&gt;មិន​ចាប់យក&lt;/b&gt; ក្ដារចុច និងកណ្ដុរ (ប្រសិន​បើ​​ត្រូវ​បានចាប់​យក) ហើយ​ត្រឡប់​ទៅ​ប្រតិបត្តិការ​ធម្មតា​វិញ ។ បច្ចុប្បន្ន​បានផ្ដល់​គ្រាប់ចុច host ត្រូវ​បានបង្ហាញ​នៅ​ក្នុង​របារ​ស្ថានភាពនៅ​ផ្នែក​ខាងក្រោម​របស់​បង្អួច​ម៉ាស៊ីន​និម្មិត នៅជាប់​នឹងរូបតំណាង&amp;nbsp;&lt;img src=:/hostkey_16px.png/&gt;&amp;nbsp; ។ រូបតំណាង​នេះ រួម​ជា​មួយ​នឹង​រូបតំណាង​កណ្ដុរ​ដែល​នៅ​ជាប់នោះ បង្ហាញ​នូវ​ក្ដារចុច និង​ស្ថានភាព​ចាប់យក​កណ្ដុរ​បច្ចុប្បន្ន ។&lt;/p&gt;</translation>
+ <source>&lt;p>Failed to save the global GUI configuration to &lt;b>&lt;nobr>%1&lt;/nobr>&lt;/b>.&lt;/p>&lt;p>The application will now terminate.&lt;/p></source>
+ <translation>&lt;p>បានបរាជ័យ​ក្នុងកា​ររក្សាទុក​ការកំណត់​រចនាសម្ព័ន្ធ​ចំណុច​ប្រទាក់​អ្នក​ប្រើសកល​ទៅ​&lt;b>&lt;nobr>%1&lt;/nobr>&lt;/b> ។&lt;/p>&lt;p>កម្មវិធី​នឹង​បិទ​ឥឡូវ ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;You have the &lt;b&gt;Auto capture keyboard&lt;/b&gt; option turned on. This will cause the Virtual Machine to automatically &lt;b&gt;capture&lt;/b&gt; 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.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;host key&lt;/b&gt; at any time to &lt;b&gt;uncapture&lt;/b&gt; 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&amp;nbsp;&lt;img src=:/hostkey_16px.png/&gt;&amp;nbsp;icon. This icon, together with the mouse icon placed nearby, indicate the current keyboard and mouse capture state.&lt;/p&gt;</source>
- <translation>&lt;p&gt;អ្នក​បានបើក​ជម្រើស &lt;b&gt;ចាប់យក​ក្ដារចុច​ដោយ​ស្វ័យ​ប្រវត្តិ&lt;/b&gt; ។ វា​នឹង​​ធ្វើ​ឲ្យ​ម៉ាស៊ីន​និម្មិត​ &lt;b&gt;ចាប់យក&lt;/b&gt; ក្ដារចុច​ដោយ​ស្វ័យ​ប្រវត្តិ​រាល់ពេល​ដែល​បង្អួច VM ត្រូវ​បាន​ធ្វើ​ឲ្យ​សកម្ម​ ហើយ​ធ្វើ​ឲ្យ​វា​មិនអាច​ប្រើបាន​ចំពោះ​កម្មវិធី​ផ្សេងៗ​ដែល​កំពុង​រត់​ក្នុង​ម៉ាស៊ីន​របស់​អ្នក ៖ នៅពេល​ក្ដារចុច​ត្រូវ​បាន​ចាប់យក keystrokes ទាំង អស់ (រួម​មាន​ប្រព័ន្ធ​មួយ​ដូចជា ជំនួស(Alt)-ថេប(Tab)) នឹង​ត្រូវ​បញ្ជូន​បន្ត​ទៅ​ VM ។&lt;/p&gt;&lt;p&gt;អ្នក​អាច​ចុច &lt;b&gt;គ្រាប់ចុច host&lt;/b&gt; នៅពេល​ណាមួយ​ទៅ &lt;b&gt;មិន​ចាប់យក&lt;/b&gt; ​ក្ដារចុច​ និង​កណ្ដុរ (ប្រសិនបើ​ត្រូវ​បាន​ចាប់យក) និង​​ត្រឡប់​ពួកវា​ទៅ​ប្រតិបត្តិការ​ធម្មតា​វិញ ។ បច្ចុប្បន្នបានផ្ដល់​គ្រាប់ចុច host ត្រូវ​បានបង្ហាញ​នៅ​លើ​របារ​ស្ថានភាព​នៅផ្នែក​ខាងក្រោម​របស់​បង្អួច​និម្មិត នៅជាប់នឹងរូបតំណាង&amp;nbsp;&lt;img src=:/hostkey_16px.png/&gt;&amp;nbsp; ។ រូបតំណាង​នេះ​ រួម​ជា​មួយ​នឹង​រូបតំណាង​កណ្ដុរ​នៅជាប់​គ្នា​នោះ បង្ហាញក្ដារចុច និង​ស្ថានភាព​ចាប់យក​កណ្ដុរ​បច្ចុប្បន្ន ។&lt;/p&gt;</translation>
+ <source>Failed to save the settings of the virtual machine &lt;b>%1&lt;/b> to &lt;b>&lt;nobr>%2&lt;/nobr>&lt;/b>.</source>
+ <translation>បានបរាជ័យ​ក្នុង​ការ​រក្សាទុក​ការ​កំណត់​​របស់​ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;/b> ទៅ&lt;b>&lt;nobr>%2&lt;/nobr>&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;p&gt;The Virtual Machine reports that the guest OS supports &lt;b&gt;mouse pointer integration&lt;/b&gt;. This means that you do not need to &lt;i&gt;capture&lt;/i&gt; 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&apos;s display are directly sent to the guest OS. If the mouse is currently captured, it will be automatically uncaptured.&lt;/p&gt;&lt;p&gt;The mouse icon on the status bar will look like&amp;nbsp;&lt;img src=:/mouse_seamless_16px.png/&gt;&amp;nbsp;to inform you that mouse pointer integration is supported by the guest OS and is currently turned on.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: 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.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ម៉ាស៊ីន​និម្មិត​រាយការណ៍​ថា​ប្រព័ន្ធ​ប្រតិបត្តិការ​គាំទ្រ &lt;b&gt;ការ​រួម​បញ្ចូល​ទស្សន៍​ទ្រនិច​កណ្ដុរ&lt;/b&gt; ។ នេះ​មានន័យ​ថា អ្នក​មិន​ចាំបាច់ &lt;i&gt;ចាប់យក&lt;/i&gt; ទស្សន៍ទ្រនិ​ច​កណ្ដុរ ដើម្បី​អាច​ប្រើ​វា​នៅ​ក្នុង​ប្រព័ន្ធប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ​បានទេ -- សកម្មភាព​កណ្ដុរ​ទាំង​អស់​ដែល​អ្នក​អនុវត្ត​នៅពេល​ទស្សន៍ទ្រនិចកណ្ដុរ​នៅ​លើ​កា​របង្ហាញ​របស់​ម៉ាស៊ីន​និម្មិត ត្រូវ​បានបញ្ជូន​ដោយ​ផ្ទាល់​ទៅ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ។ ប្រសិនបើកណ្ដុរបច្ចុប្បន្ន​ត្រូវ​បាន​ចាប់យក វា​នឹង​​មិន​ត្រូ​វបាន​ចាប់យក​ដោយ​ស្វ័យ​ប្រវត្តិ​ទេ ។&lt;/p&gt;&lt;p&gt;រូបតំណាង​កណ្ដុរ​នៅ​លើ​របារ​ស្ថានភាព​នឹង​មាន​រូបរាង​ដូចជា&amp;nbsp;&lt;img src=:/mouse_seamless_16px.png/&gt;&amp;nbsp;ដើម្បី​ប្រាប់​អ្នក​ថា ការ​រួមបញ្ចូល​ទស្សន៍​ទ្រនិច​កណ្ដុរ​ត្រូវ​បានគាំទ្រ​ដោយ​ប្រព័ន្ធប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ និង​បច្ចុប្បន្ន​ត្រូវ​បានបើក ។&lt;/p&gt;&lt;p&gt;&lt;b&gt;ចំណាំ&lt;/b&gt; ៖ កម្មវិធី​មួយ​ចំនួន​អាច​មាន​ឥរិយាបទ​មិន​ត្រឹមត្រូវ​នៅ​ក្នុង​របៀប​រួម​បញ្ចូល​ទស្សន៍​ទ្រនិច​កណ្ដុរ ។ អ្នក​អាច​បិទ​វា​ជា​និច្ច​សម្រាប់​សម័យ​បច្ចុប្បន្ន (ហើយ​បើក​វា​ម្ដង​ទៀត) ដោយជ្រើសសកម្មភាព​ដែល​ទាក់ទង​ពី​របារ​ម៉ឺនុយ ។&lt;/p&gt;</translation>
+ <source>Failed to load the settings of the virtual machine &lt;b>%1&lt;/b> from &lt;b>&lt;nobr>%2&lt;/nobr>&lt;/b>.</source>
+ <translation>បានបរាជ័យ​ក្នុងកា​រផ្ទុក​កា​រកំណត់​របស់ម៉ាស៊ីន​និម្មិត &lt;b>%1&lt;/b> ពី &lt;b>&lt;nobr>%2&lt;/nobr>&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;p&gt;The virtual machine window will be now switched to &lt;b&gt;fullscreen&lt;/b&gt; mode. You can go back to windowed mode at any time by pressing &lt;b&gt;%1&lt;/b&gt;. Note that the &lt;i&gt;Host&lt;/i&gt; key is currently defined as &lt;b&gt;%2&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Note that the main menu bar is hidden in fullscreen mode. You can access it by pressing &lt;b&gt;Host+Home&lt;/b&gt;.&lt;/p&gt;</source>
- <translation>&lt;p&gt;បង្អួច​ម៉ាស៊ីន​និម្មិត​នឹង​ត្រូ​វបានប្ដូរ​ទៅ​របៀប &lt;b&gt;ពេញអេក្រង់&lt;/b&gt; ឥឡូវ ។ អ្នក​អាច​ត្រឡប់ក្រោយ​​ទៅ​របៀប​បង្អួច​ នៅពេល​ណាមួយ ដោយ​ចុច &lt;b&gt;%1&lt;/b&gt; ។ ចំណាំ​ថា គ្រាប់ចុច &lt;i&gt;ម៉ាស៊ីន&lt;/i&gt; បច្ចុប្បន្ន​ត្រូវ​បាន​កំណត់​ជា &lt;b&gt;%2&lt;/b&gt; ។&lt;/p&gt;&lt;p&gt;ចំណាំ​ថា របារ​ម៉ឺនុយ​មេ​​ត្រូវ​បានលាក់​ក្នុង​របៀប​ពេញអេក្រង់ ។​ អ្នក​អាច​ចូលដំណើរការ​វា​ដោយ​ចុច &lt;b&gt;ម៉ាស៊ីន(Host)+ដើម(Home)&lt;/b&gt;.&lt;/p&gt;</translation>
+ <source>Delete</source>
+ <comment>machine</comment>
+ <translation>លុប</translation>
</message>
<message>
- <source>&lt;p&gt;The virtual machine window will be now switched to &lt;b&gt;Seamless&lt;/b&gt; mode. You can go back to windowed mode at any time by pressing &lt;b&gt;%1&lt;/b&gt;. Note that the &lt;i&gt;Host&lt;/i&gt; key is currently defined as &lt;b&gt;%2&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Note that the main menu bar is hidden in seamless mode. You can access it by pressing &lt;b&gt;Host+Home&lt;/b&gt;.&lt;/p&gt;</source>
- <translation>&lt;p&gt;បង្អួច​ម៉ាស៊ីន​និម្មិត​​នឹង​ត្រូ​វបានប្ដូរ​ទៅ​របៀប &lt;b&gt;គ្មាន​ថ្នេរ&lt;/b&gt; ឥឡូវ ។ អ្នកអាច​ត្រឡប់​ទៅ​​របៀប​បង្អួច​នៅ​ពេល​ណាមួយ​ដោយចុច &lt;b&gt;%1&lt;/b&gt; ។ ចំណាំ​ថា គ្រាប់ចុច &lt;i&gt;Host&lt;/i&gt; បច្ចុប្បន្ន​ត្រូវ​បានកំណត់​ជា &lt;b&gt;%2&lt;/b&gt; ។&lt;/p&gt;&lt;p&gt;ចំណាំថា របារ​ម៉ឺនុយមេ​ត្រូវ​បានលាក់​នៅ​ក្នុង​របៀប​គ្មាន​ថ្នេរ ។ អ្នកអាច​ចូលដំណើរការ​វា ដោយ​ចុច​ &lt;b&gt;Host+ដើម(Home)&lt;/b&gt; ។&lt;/p&gt;</translation>
+ <source>Unregister</source>
+ <comment>machine</comment>
+ <translation>មិន​ចុះឈ្មោះ</translation>
</message>
<message>
- <source>&amp;Contents...</source>
- <translation>មាតិកា</translation>
+ <source>Discard</source>
+ <comment>saved state</comment>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>Show the online help contents</source>
- <translation>បង្ហាញ​មាតិកា​ជំនួយលើ​បណ្ដាញ</translation>
+ <source>&lt;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.&lt;/p>&lt;p>Are you sure that you want to disable the SATA controller?&lt;/p></source>
+ <translation>&lt;p>មាន​ថាសរឹង​បាន​តភ្ជាប់​ទៅ​ច្រក SATA របស់ម៉ាស៊ីន​និម្មិត​នេះ ។ ប្រសិន​បើ​អ្នក​បិទ​វត្ថុ​បញ្ជា SATA ថាសរឹង​ទាំង​នេះ​នឹង​ត្រូវ​បាន​ផ្ដាច់​ដោយ​ស្វ័យ​ប្រវត្តិ ។&lt;/p>&lt;p>តើ​អ្នក​ប្រាកដ​ជា​ចង់​បិទ​វត្ថុ​បញ្ជា SATA ដែរឬទេ ?&lt;/p></translation>
</message>
<message>
- <source>&amp;VirtualBox Web Site...</source>
- <translation>តំបន់បណ្ដាញ VirtualBox​...</translation>
+ <source>Disable</source>
+ <comment>hard disk</comment>
+ <translation>បានបិទ</translation>
</message>
<message>
- <source>Open the browser and go to the VirtualBox product web site</source>
- <translation>បើក​កម្មវិធី​រុករក ហើយ​ទៅ​កាន់​តំបន់បណ្ដាញ​ផលិតផល​របស់ VirtualBox</translation>
+ <source>Download</source>
+ <comment>additions</comment>
+ <translation>ទាញយក</translation>
</message>
<message>
- <source>&amp;Reset All Warnings</source>
- <translation>កំណត់​ការ​ព្រមាន​ទាំងអស់</translation>
+ <source>Mount</source>
+ <comment>additions</comment>
+ <translation>ម៉ោន</translation>
</message>
<message>
- <source>Cause all suppressed warnings and messages to be shown again</source>
- <translation>ធ្វើ​ឲ្យ​ការ​ព្រមាន​ទាំងអស់​ដែល​បានបង្ហាប់ ហើយសារ​ត្រូវ​បានបង្ហាញ​ម្ដង​ទៀត</translation>
+ <source>&lt;p>The host key is currently defined as &lt;b>%1&lt;/b>.&lt;/p></source>
+ <comment>additional message box paragraph</comment>
+ <translation>&lt;p>គ្រាប់ចុច​ម៉ាស៊ីន​បច្ចុប្បន្ន​ត្រូវ​បាន​កំណត់​ជា &lt;b>%1&lt;/b> ។&lt;/p></translation>
</message>
<message>
- <source>R&amp;egister VirtualBox...</source>
- <translation>ចុះឈ្មោះ VirtualBox...</translation>
+ <source>Capture</source>
+ <comment>do input capture</comment>
+ <translation>ចាប់យក</translation>
</message>
<message>
- <source>Open VirtualBox registration form</source>
- <translation>បើក​សំណុំ​បែបបទ​ចុះឈ្មោះ​របស់ VirtualBox</translation>
+ <source>Check</source>
+ <comment>inaccessible media message box</comment>
+ <translation>ពិនិត្យ​មើល</translation>
</message>
<message>
- <source>C&amp;heck for Updates...</source>
- <translation>ពិនិត្យ​មើល​ភាព​ទាន់សម័យ...</translation>
+ <source>&amp;Backup</source>
+ <comment>warnAboutAutoConvertedSettings message box</comment>
+ <translation>បម្រុងទុក</translation>
</message>
<message>
- <source>Check for a new VirtualBox version</source>
- <translation>ពិនិត្យ​មើល​កំណែ​របស់​ VirtualBox ថ្មី</translation>
+ <source>Switch</source>
+ <comment>fullscreen</comment>
+ <translation>ប្ដូរ</translation>
</message>
<message>
- <source>&amp;About VirtualBox...</source>
- <translation>អំពី VirtualBox...</translation>
+ <source>Switch</source>
+ <comment>seamless</comment>
+ <translation>ប្ដូរ</translation>
</message>
<message>
- <source>Show a dialog with product information</source>
- <translation>បង្ហាញ​ប្រអប់​ដែល​មាន​ព័ត៌មាន​ផលិតផល</translation>
+ <source>&lt;p>Do you really want to reset the virtual machine?&lt;/p>&lt;p>When the machine is reset, unsaved data of all applications running inside it will be lost.&lt;/p></source>
+ <translation>&lt;p>តើ​អ្នក​ពិត​ជា​ចង់​កំណត់​ម៉ាស៊ីននិម្មិត​ឡើង​វិញ​ដែរឬទេ ?&lt;/p>&lt;p>នៅ​ពេល​ម៉ាស៊ីន​ត្រូវ​បាន​កំណត់​ឡើង​វិញ ទិន្នន័យ​របស់​កម្មវិធី​ដែល​មិនបានរក្សាទុកទាំង​អស់​ដែល​កំពុង​រត់​វា​នឹង​ត្រូវ​បានបាត់បង់ ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;A new version of VirtualBox has been released! Version &lt;b&gt;%1&lt;/b&gt; is available at &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;virtualbox.org&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;You can download this version from this direct link:&lt;/p&gt;&lt;p&gt;&lt;a href=%2&gt;%3&lt;/a&gt;&lt;/p&gt;</source>
- <translation>&lt;p&gt;កំណែ​ថ្មី​របស់ VirtualBox ត្រូវ​បាន​ចេញ​ផ្សាយ ! គឺ​កំណែ &lt;b&gt;%1&lt;/b&gt; ដែលអាច​រក​បាន​នៅ &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;virtualbox.org&lt;/a&gt; ។&lt;/p&gt;&lt;p&gt;អ្នក​អាច​ទាញ​យក​កំណែ​នេះ​ពី​តំណ​នេះ​ដោយ​ផ្ទាល់ ៖&lt;/p&gt;&lt;p&gt;&lt;a href=%2&gt;%3&lt;/a&gt;&lt;/p&gt;</translation>
+ <source>Reset</source>
+ <comment>machine</comment>
+ <translation>កំណត់​ឡើង​វិញ</translation>
</message>
<message>
- <source>&lt;p&gt;Are you sure you want to release the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;?&lt;/p&gt;&lt;p&gt;This will detach it from the following virtual machine(s): &lt;b&gt;%3&lt;/b&gt;.&lt;/p&gt;</source>
- <translation>&lt;p&gt;តើ​អ្នក​ប្រាកដ​ជា​ចង់​ចេញផ្សាយ %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;?&lt;/p&gt;&lt;p&gt;វា​នឹង​ផ្ដាច់​វា​ពី​ម៉ាស៊ីន​និម្មិត​ដូច​ខាងក្រោម ៖ &lt;b&gt;%3&lt;/b&gt; ។&lt;/p&gt;</translation>
+ <source>Continue</source>
+ <comment>no hard disk attached</comment>
+ <translation>បន្ត</translation>
</message>
<message>
- <source>Release</source>
- <comment>detach medium</comment>
- <translation>ចេញផ្សាយ</translation>
+ <source>Go Back</source>
+ <comment>no hard disk attached</comment>
+ <translation>ទៅ​ក្រោយ</translation>
</message>
<message>
- <source>&lt;p&gt;Are you sure you want to remove the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; from the list of known media?&lt;/p&gt;</source>
- <translation>&lt;p&gt;តើអ្នក​ប្រាកដ​ជា​ចង់​យក %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; ចេញ​ពី​មេឌៀ​ដែលបាន​ស្គាល់​ដែរឬទេ ?&lt;/p&gt;</translation>
+ <source>Failed to copy file &lt;b>&lt;nobr>%1&lt;/nobr>&lt;/b> to &lt;b>&lt;nobr>%2&lt;/nobr>&lt;/b> (%3).</source>
+ <translation>បានបរាជ័យ​ក្នុងកា​រចម្លង​ឯកសារ &lt;b>&lt;nobr>%1&lt;/nobr>&lt;/b> ទៅ &lt;b>&lt;nobr>%2&lt;/nobr>&lt;/b> (%3) ។</translation>
</message>
<message>
- <source>Note that this hard disk is inaccessible so that its storage unit cannot be deleted right now.</source>
- <translation>ចំណាំថា ថាសរឹង​នេះ​មិនអាច​ចូលដំណើរការ​បានទេ ដូច្នេះ​ឯកតា​ផ្ទុក​របស់វា​មិនអាច​ត្រូវ​បានលុប​ឥឡូវ​ទេ ។</translation>
+ <source>&amp;Create</source>
+ <comment>hard disk</comment>
+ <translation>បង្កើត</translation>
</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>
+ <source>Select</source>
+ <comment>hard disk</comment>
+ <translation>ជ្រើស</translation>
</message>
<message>
- <source>&lt;p&gt;Note that the storage unit of this medium will not be deleted and therefore it will be possible to add it to the list later again.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ចំណាំ​ថា ឯកតា​ផ្ទុក​របស់​ឧបករណ៍​ផ្ទុក​នេះ​នឹង​មិន​ត្រូវ​បានលុប​ទេ ហើយ​ដូច្នេះ​វា​នឹង​អាច​បន្ថែម​ទៅ​កាន់​បញ្ជី​ពេល​ក្រោយ​ម្ដង​ទៀត ។&lt;/p&gt;</translation>
+ <source>&lt;p>Could not enter seamless mode due to insufficient guest video memory.&lt;/p>&lt;p>You should configure the virtual machine to have at least &lt;b>%1&lt;/b> of video memory.&lt;/p></source>
+ <translation>&lt;p>មិនអាច​ចូល​របៀប​គ្មាន​ថេរ ដោយសារ​តែ​សតិ​វីដេអូ​ម៉ាស៊ីន​ភ្ញៀវ​មិន​គ្រប់គ្រាន់ ។&lt;/p>&lt;p>អ្នក​គួរ​កំណត់​រចនាសម្ព័ន្ធ​ម៉ាស៊ីន​និម្មិត​យ៉ាង​ហោចណាស់​មានសតិ​វីដេអូ &lt;b>%1&lt;/b> ។&lt;/p></translation>
</message>
<message>
- <source>Remove</source>
- <comment>medium</comment>
- <translation>យកចេញ</translation>
+ <source>&lt;p>Could not switch the guest display to fullscreen mode due to insufficient guest video memory.&lt;/p>&lt;p>You should configure the virtual machine to have at least &lt;b>%1&lt;/b> of video memory.&lt;/p>&lt;p>Press &lt;b>Ignore&lt;/b> to switch to fullscreen mode anyway or press &lt;b>Cancel&lt;/b> to cancel the operation.&lt;/p></source>
+ <translation>&lt;p>មិនអាច​ប្ដូរ​ការ​បង្ហាញ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ទៅ​របៀប​ពេញ​អេក្រង់​បានទេ ដោយសារ​តែ​សតិ​វីដេអូ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​មិន​គ្រប់គ្រាន់ ។&lt;/p>&lt;p>អ្នក​គួរ​កំណត់​រចនាសម្ព័ន្ធ​ម៉ាស៊ីន​និម្មិត​ឲ្យ​មានសតិ​​យ៉ាង​ហោចណាស់​ &lt;b>%1&lt;/b> នៃ​សតិ​វីដេអូ ។&lt;/p>&lt;p>ចុច​ &lt;b>មិនអើពើ&lt;/b> ដើម្បី​ប្ដូរ​ទៅ​របៀប​ពេញអេក្រង់ ឬ​បើ​មិន​ដូច្នេះ​ទេ​ចុច &lt;b>បោះបង់&lt;/b> ដើម្បី​បោះបង់​ប្រតិបត្តិការ ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;The hard disk storage unit at location &lt;b&gt;%1&lt;/b&gt; already exists. You cannot create a new virtual hard disk that uses this location because it can be already used by another virtual hard disk.&lt;/p&gt;&lt;p&gt;Please specify a different location.&lt;/p&gt;</source>
- <translation>&lt;p&gt;មាន​ឯកតា​ផ្ទុក​​របស់​ថាសរឹង​នៅ​ទីតាំង &lt;b&gt;%1&lt;/b&gt; រួច​ហើយ ។ អ្នក​មិនអាច​បង្កើត​ថាសរឹង​និម្មិត​ថ្មី​បាន​ទេ ដែល​ប្រើ​ទីតាំង​នេះ ពីព្រោះ​វា​អាច​ត្រូវ​បានប្រើ​ដោយ​ថាសរឹង​និម្មិត​ផ្សេង ។&lt;/p&gt;&lt;p&gt;សូម​បញ្ជាក់​ទីតាំង​ផ្សេង ​។&lt;/p&gt;</translation>
+ <source>You have already installed the latest VirtualBox version. Please repeat the version check later.</source>
+ <translation>អ្នក​បាន​ដំឡើង​កំណែ VirtualBox ចុងក្រោយ​បំផុត​រួ​ចហើយ ។ សូម​​ពិនិត្យ​មើល​កំណែ​ពេលក្រោយ ។</translation>
</message>
<message>
- <source>&lt;p&gt;Do you want to delete the storage unit of the hard disk &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;?&lt;/p&gt;&lt;p&gt;If you select &lt;b&gt;Delete&lt;/b&gt; then the specified storage unit will be permanently deleted. This operation &lt;b&gt;cannot be undone&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;If you select &lt;b&gt;Keep&lt;/b&gt; 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.&lt;/p&gt;</source>
- <translation>&lt;p&gt;តើ​អ្នក​ចង់​លុប​ឯកតា​ផ្ទុក​របស់​ថាសរឹង​ &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;ដែរឬទេ?&lt;/p&gt;&lt;p&gt;ប្រសិនបើ​អ្នក​ជ្រើស &lt;b&gt;លុប&lt;/b&gt; បន្ទាប់​មក​ឯកតា​ផ្ទុក​ដែល​បានបញ្ជាក់​នឹង​ត្រូ​វបាន​លុប​ជា​អចិន្ត្រៃយ៍ ។ ប្រតិបត្តិការ​នេះ &lt;b&gt;មិនអាច​ត្រូ​វបាន​ធ្វើ​វិញ​បានទេ&lt;/b&gt; ។&lt;/p&gt;&lt;p&gt;ប្រសិនបើ​អ្នក​ជ្រើស &lt;b&gt;រក្សាទុក&lt;/b&gt; បន្ទាប់​មក​ថាសរឹង​នឹង​ត្រូវ​បានយកចេញ​តែ​ពី​បញ្ជី​របស់​ថាសរឹង​ដែល​ស្គាល់​ប៉ុណ្ណោះ ប៉ុន្តែ​ឯកតា​ផ្ទុក​នឹង​មិន​ត្រូ​វបាន​ប៉ះពាល់​ទេ ដែល​ធ្វើ​ឲ្យ​វា​អាច​បន្ថែម​ថាសរឹង​នេះ​ទៅកាន់​បញ្ជី​ពេលក្រោយ​ម្ដង​ទៀត​បាន ។&lt;/p&gt;</translation>
+ <source>&lt;p>You have &lt;b>clicked the mouse&lt;/b> inside the Virtual Machine display or pressed the &lt;b>host key&lt;/b>. This will cause the Virtual Machine to &lt;b>capture&lt;/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.&lt;/p>&lt;p>You can press the &lt;b>host key&lt;/b> at any time to &lt;b>uncapture&lt;/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&amp;nbsp;&lt;img src=:/hostkey_16px.png/>&amp;nbsp;icon. This icon, together with the mouse icon placed nearby, indicate the current keyboard and mouse capture state.&lt;/p></source>
+ <translation>&lt;p>អ្នក​បាន &lt;b>ចុចកណ្ដុរ&lt;/b> ខាង​ក្នុង​ការ​បង្ហាញ​របស់​ម៉ាស៊ីន​និម្មិត ឬ​បាន​ចុច​ &lt;b>គ្រាប់ចុច host&lt;/b> ។ វា​នឹងធ្វើ​​ឲ្យ​ម៉ាស៊ីន​និម្មិត &lt;b>ចាប់យក&lt;/b> ទស្សន៍ទ្រនិច​កណ្ដុរ​របស់​ម៉ាស៊ីន (តែ​ក្នុងករណី​ដែល​ការ​រួម​បញ្ចូល​ទស្សន៍ទ្រនិច​បច្ចុប្បន្ន​មិន​ត្រូ​វបានគាំទ្រ​ដោយ​ប្រព័ន្ធប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ទេ ។) ហើយ​នឹង​ក្ដារចុច ដែល​នឹង​ធ្វើ​ឲ្យ​កម្មវិធី​ផ្សេងៗ​ដែល​កំពុង​រត់​ក្នុង​ម៉ាស៊ីន​របស់​​​មិនអាច​ប្រើបាន​ទេ ។&lt;/p>&lt;p>អ្នក​អាចចុច​ &lt;b>គ្រាប់ចុច host&lt;/b> នៅពេល​ណាមួយ​ដើម្បី​ &lt;b>មិន​ចាប់យក&lt;/b> ក្ដារចុច និងកណ្ដុរ (ប្រសិន​បើ​​ត្រូវ​បានចាប់​យក) ហើយ​ត្រឡប់​ទៅ​ប្រតិបត្តិការ​ធម្មតា​វិញ ។ បច្ចុប្បន្ន​បានផ្ដល់​គ្រាប់ចុច host ត្រូវ​បានបង្ហាញ​នៅ​ក្នុង​របារ​ស្ថានភាពនៅ​ផ្នែក​ខាងក្រោម​របស់​បង្អួច​ម៉ាស៊ីន​និម្មិត នៅជាប់​នឹងរូបតំណាង&amp;nbsp;&lt;img src=:/hostkey_16px.png/>&amp;nbsp; ។ រូបតំណាង​នេះ រួម​ជា​មួយ​នឹង​រូបតំណាង​កណ្ដុរ​ដែល​នៅ​ជាប់នោះ បង្ហាញ​នូវ​ក្ដារចុច និង​ស្ថានភាព​ចាប់យក​កណ្ដុរ​បច្ចុប្បន្ន ។&lt;/p></translation>
</message>
<message>
- <source>Delete</source>
- <comment>hard disk storage</comment>
- <translation>លុប</translation>
+ <source>&lt;p>You have the &lt;b>Auto capture keyboard&lt;/b> option turned on. This will cause the Virtual Machine to automatically &lt;b>capture&lt;/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.&lt;/p>&lt;p>You can press the &lt;b>host key&lt;/b> at any time to &lt;b>uncapture&lt;/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&amp;nbsp;&lt;img src=:/hostkey_16px.png/>&amp;nbsp;icon. This icon, together with the mouse icon placed nearby, indicate the current keyboard and mouse capture state.&lt;/p></source>
+ <translation>&lt;p>អ្នក​បានបើក​ជម្រើស &lt;b>ចាប់យក​ក្ដារចុច​ដោយ​ស្វ័យ​ប្រវត្តិ&lt;/b> ។ វា​នឹង​​ធ្វើ​ឲ្យ​ម៉ាស៊ីន​និម្មិត​ &lt;b>ចាប់យក&lt;/b> ក្ដារចុច​ដោយ​ស្វ័យ​ប្រវត្តិ​រាល់ពេល​ដែល​បង្អួច VM ត្រូវ​បាន​ធ្វើ​ឲ្យ​សកម្ម​ ហើយ​ធ្វើ​ឲ្យ​វា​មិនអាច​ប្រើបាន​ចំពោះ​កម្មវិធី​ផ្សេងៗ​ដែល​កំពុង​រត់​ក្នុង​ម៉ាស៊ីន​របស់​អ្នក ៖ នៅពេល​ក្ដារចុច​ត្រូវ​បាន​ចាប់យក keystrokes ទាំង អស់ (រួម​មាន​ប្រព័ន្ធ​មួយ​ដូចជា ជំនួស(Alt)-ថេប(Tab)) នឹង​ត្រូវ​បញ្ជូន​បន្ត​ទៅ​ VM ។&lt;/p>&lt;p>អ្នក​អាច​ចុច &lt;b>គ្រាប់ចុច host&lt;/b> នៅពេល​ណាមួយ​ទៅ &lt;b>មិន​ចាប់យក&lt;/b> ​ក្ដារចុច​ និង​កណ្ដុរ (ប្រសិនបើ​ត្រូវ​បាន​ចាប់យក) និង​​ត្រឡប់​ពួកវា​ទៅ​ប្រតិបត្តិការ​ធម្មតា​វិញ ។ បច្ចុប្បន្នបានផ្ដល់​គ្រាប់ចុច host ត្រូវ​បានបង្ហាញ​នៅ​លើ​របារ​ស្ថានភាព​នៅផ្នែក​ខាងក្រោម​របស់​បង្អួច​និម្មិត នៅជាប់នឹងរូបតំណាង&amp;nbsp;&lt;img src=:/hostkey_16px.png/>&amp;nbsp; ។ រូបតំណាង​នេះ​ រួម​ជា​មួយ​នឹង​រូបតំណាង​កណ្ដុរ​នៅជាប់​គ្នា​នោះ បង្ហាញក្ដារចុច និង​ស្ថានភាព​ចាប់យក​កណ្ដុរ​បច្ចុប្បន្ន ។&lt;/p></translation>
</message>
<message>
- <source>Keep</source>
- <comment>hard disk storage</comment>
- <translation>រក្សាទុក</translation>
+ <source>&lt;p>The Virtual Machine reports that the guest OS supports &lt;b>mouse pointer integration&lt;/b>. This means that you do not need to &lt;i>capture&lt;/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.&lt;/p>&lt;p>The mouse icon on the status bar will look like&amp;nbsp;&lt;img src=:/mouse_seamless_16px.png/>&amp;nbsp;to inform you that mouse pointer integration is supported by the guest OS and is currently turned on.&lt;/p>&lt;p>&lt;b>Note&lt;/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.&lt;/p></source>
+ <translation>&lt;p>ម៉ាស៊ីន​និម្មិត​រាយការណ៍​ថា​ប្រព័ន្ធ​ប្រតិបត្តិការ​គាំទ្រ &lt;b>ការ​រួម​បញ្ចូល​ទស្សន៍​ទ្រនិច​កណ្ដុរ&lt;/b> ។ នេះ​មានន័យ​ថា អ្នក​មិន​ចាំបាច់ &lt;i>ចាប់យក&lt;/i> ទស្សន៍ទ្រនិ​ច​កណ្ដុរ ដើម្បី​អាច​ប្រើ​វា​នៅ​ក្នុង​ប្រព័ន្ធប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ​បានទេ -- សកម្មភាព​កណ្ដុរ​ទាំង​អស់​ដែល​អ្នក​អនុវត្ត​នៅពេល​ទស្សន៍ទ្រនិចកណ្ដុរ​នៅ​លើ​កា​របង្ហាញ​របស់​ម៉ាស៊ីន​និម្មិត ត្រូវ​បានបញ្ជូន​ដោយ​ផ្ទាល់​ទៅ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ។ ប្រសិនបើកណ្ដុរបច្ចុប្បន្ន​ត្រូវ​បាន​ចាប់យក វា​នឹង​​មិន​ត្រូ​វបាន​ចាប់យក​ដោយ​ស្វ័យ​ប្រវត្តិ​ទេ ។&lt;/p>&lt;p>រូបតំណាង​កណ្ដុរ​នៅ​លើ​របារ​ស្ថានភាព​នឹង​មាន​រូបរាង​ដូចជា&amp;nbsp;&lt;img src=:/mouse_seamless_16px.png/>&amp;nbsp;ដើម្បី​ប្រាប់​អ្នក​ថា ការ​រួមបញ្ចូល​ទស្សន៍​ទ្រនិច​កណ្ដុរ​ត្រូវ​បានគាំទ្រ​ដោយ​ប្រព័ន្ធប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ និង​បច្ចុប្បន្ន​ត្រូវ​បានបើក ។&lt;/p>&lt;p>&lt;b>ចំណាំ&lt;/b> ៖ កម្មវិធី​មួយ​ចំនួន​អាច​មាន​ឥរិយាបទ​មិន​ត្រឹមត្រូវ​នៅ​ក្នុង​របៀប​រួម​បញ្ចូល​ទស្សន៍​ទ្រនិច​កណ្ដុរ ។ អ្នក​អាច​បិទ​វា​ជា​និច្ច​សម្រាប់​សម័យ​បច្ចុប្បន្ន (ហើយ​បើក​វា​ម្ដង​ទៀត) ដោយជ្រើសសកម្មភាព​ដែល​ទាក់ទង​ពី​របារ​ម៉ឺនុយ ។&lt;/p></translation>
</message>
<message>
- <source>Failed to delete the storage unit of the hard disk &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងការ​លុប​ការ​ផ្ទុក​របស់​ថាសរឹង &lt;b&gt;%1&lt;/b&gt; ។</translation>
+ <source>&lt;p>The virtual machine window will be now switched to &lt;b>fullscreen&lt;/b> mode. You can go back to windowed mode at any time by pressing &lt;b>%1&lt;/b>. Note that the &lt;i>Host&lt;/i> key is currently defined as &lt;b>%2&lt;/b>.&lt;/p>&lt;p>Note that the main menu bar is hidden in fullscreen mode. You can access it by pressing &lt;b>Host+Home&lt;/b>.&lt;/p></source>
+ <translation>&lt;p>បង្អួច​ម៉ាស៊ីន​និម្មិត​នឹង​ត្រូ​វបានប្ដូរ​ទៅ​របៀប &lt;b>ពេញអេក្រង់&lt;/b> ឥឡូវ ។ អ្នក​អាច​ត្រឡប់ក្រោយ​​ទៅ​របៀប​បង្អួច​ នៅពេល​ណាមួយ ដោយ​ចុច &lt;b>%1&lt;/b> ។ ចំណាំ​ថា គ្រាប់ចុច &lt;i>ម៉ាស៊ីន&lt;/i> បច្ចុប្បន្ន​ត្រូវ​បាន​កំណត់​ជា &lt;b>%2&lt;/b> ។&lt;/p>&lt;p>ចំណាំ​ថា របារ​ម៉ឺនុយ​មេ​​ត្រូវ​បានលាក់​ក្នុង​របៀប​ពេញអេក្រង់ ។​ អ្នក​អាច​ចូលដំណើរការ​វា​ដោយ​ចុច &lt;b>ម៉ាស៊ីន(Host)+ដើម(Home)&lt;/b>.&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;There are no unused hard disks available for the newly created attachment.&lt;/p&gt;&lt;p&gt;Press the &lt;b&gt;Create&lt;/b&gt; button to start the &lt;i&gt;New Virtual Disk&lt;/i&gt; wizard and create a new hard disk, or press the &lt;b&gt;Select&lt;/b&gt; button to open the &lt;i&gt;Virtual Media Manager&lt;/i&gt; and select what to do.&lt;/p&gt;</source>
- <translation>&lt;p&gt;មិនមាន​ថាសរឹង​ដែល​មិនបានប្រើទេ​ សម្រាប់​ការ​ភ្ជាប់​ដែល​បាន​បង្កើត​ថ្មីៗ ។&lt;/p&gt;&lt;p&gt;ចុច​ប៊ូតុង &lt;b&gt;បង្កើត&lt;/b&gt; ដើម្បី​ចាប់ផ្ដើម​អ្នក​ជំនួយការ &lt;i&gt;ថាស​និម្មិត​ថ្មី&lt;/i&gt; ហើយ​បង្កើត​ថាសរឹង​ថ្មី ឬ​ចុច​ប៊ូតុង &lt;b&gt;ជ្រើស&lt;/b&gt; ដើម្បី​បើក​ &lt;i&gt;កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត&lt;/i&gt; ហើយ​ជ្រើស​អ្វី​ត្រូវ​ធ្វើ ។&lt;/p&gt;</translation>
+ <source>&lt;p>The virtual machine window will be now switched to &lt;b>Seamless&lt;/b> mode. You can go back to windowed mode at any time by pressing &lt;b>%1&lt;/b>. Note that the &lt;i>Host&lt;/i> key is currently defined as &lt;b>%2&lt;/b>.&lt;/p>&lt;p>Note that the main menu bar is hidden in seamless mode. You can access it by pressing &lt;b>Host+Home&lt;/b>.&lt;/p></source>
+ <translation>&lt;p>បង្អួច​ម៉ាស៊ីន​និម្មិត​​នឹង​ត្រូ​វបានប្ដូរ​ទៅ​របៀប &lt;b>គ្មាន​ថ្នេរ&lt;/b> ឥឡូវ ។ អ្នកអាច​ត្រឡប់​ទៅ​​របៀប​បង្អួច​នៅ​ពេល​ណាមួយ​ដោយចុច &lt;b>%1&lt;/b> ។ ចំណាំ​ថា គ្រាប់ចុច &lt;i>Host&lt;/i> បច្ចុប្បន្ន​ត្រូវ​បានកំណត់​ជា &lt;b>%2&lt;/b> ។&lt;/p>&lt;p>ចំណាំថា របារ​ម៉ឺនុយមេ​ត្រូវ​បានលាក់​នៅ​ក្នុង​របៀប​គ្មាន​ថ្នេរ ។ អ្នកអាច​ចូលដំណើរការ​វា ដោយ​ចុច​ &lt;b>Host+ដើម(Home)&lt;/b> ។&lt;/p></translation>
</message>
<message>
- <source>Failed to create the hard disk storage &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;.&lt;/nobr&gt;</source>
- <translation>បានបរាជ័យ​ក្នុង​​ការ​បង្កើត​ការ​ផ្ទុក​ថាសរឹង &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt; ។&lt;/nobr&gt;</translation>
+ <source>&amp;Contents...</source>
+ <translation>មាតិកា</translation>
</message>
<message>
- <source>Failed to attach the hard disk &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; to the slot &lt;i&gt;%2&lt;/i&gt; of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation>បានបរាជ័យក្នុងកា​រភ្ជាប់ &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; ទៅ​រន្ធ &lt;i&gt;%2&lt;/i&gt; របស់​ម៉ាស៊ីន &lt;b&gt;%3&lt;/b&gt; ។</translation>
+ <source>Show the online help contents</source>
+ <translation>បង្ហាញ​មាតិកា​ជំនួយលើ​បណ្ដាញ</translation>
</message>
<message>
- <source>Failed to detach the hard disk &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; from the slot &lt;i&gt;%2&lt;/i&gt; of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងកា​រផ្ដាច់​ថាសរឹង &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; ពី​រន្ធ &lt;i&gt;%2&lt;/i&gt; របស់​ម៉ាស៊ីន &lt;b&gt;%3&lt;/b&gt; ។</translation>
+ <source>&amp;VirtualBox Web Site...</source>
+ <translation>តំបន់បណ្ដាញ VirtualBox​...</translation>
</message>
<message>
- <source>Failed to mount the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; to the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងកា​រម៉ោន​ %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; ទៅ​ម៉ាស៊ីន &lt;b&gt;%3&lt;/b&gt; ។</translation>
+ <source>Open the browser and go to the VirtualBox product web site</source>
+ <translation>បើក​កម្មវិធី​រុករក ហើយ​ទៅ​កាន់​តំបន់បណ្ដាញ​ផលិតផល​របស់ VirtualBox</translation>
</message>
<message>
- <source>Failed to unmount the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; from the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation>បានបរាជ័យ​ក្នុងការ​អាន់ម៉ោន​ %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; ពី​ម៉ាស៊ីន &lt;b&gt;%3&lt;/b&gt; ។</translation>
+ <source>&amp;Reset All Warnings</source>
+ <translation>កំណត់​ការ​ព្រមាន​ទាំងអស់</translation>
</message>
<message>
- <source>Failed to open the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;.</source>
- <translation>បាន​បរាជ័យ​ក្នុងការ​បើក %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; ។</translation>
+ <source>Cause all suppressed warnings and messages to be shown again</source>
+ <translation>ធ្វើ​ឲ្យ​ការ​ព្រមាន​ទាំងអស់​ដែល​បានបង្ហាប់ ហើយសារ​ត្រូវ​បានបង្ហាញ​ម្ដង​ទៀត</translation>
</message>
<message>
- <source>Failed to close the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;.</source>
- <translation>បានបរាជ័យ​ក្នុងកា​របិទ %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt; ។</translation>
+ <source>R&amp;egister VirtualBox...</source>
+ <translation>ចុះឈ្មោះ VirtualBox...</translation>
</message>
<message>
- <source>Failed to get the accessibility state of the medium &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.</source>
- <translation>បានបរាជ័យ​ក្នុងកា​រ​ចូលដំណើរការ​ស្ថានភាព​របស់​ឧបករណ៍​ផ្ទុក &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; ។</translation>
+ <source>Open VirtualBox registration form</source>
+ <translation>បើក​សំណុំ​បែបបទ​ចុះឈ្មោះ​របស់ VirtualBox</translation>
</message>
<message>
- <source>&lt;p&gt;Failed to connect to the VirtualBox online registration service due to the following error:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</source>
- <translation>&lt;p&gt;បានបរាជ័យ​ក្នុងកា​រតភ្ជាប់​ទៅ​កាន់​សេវា​ចុះឈ្មោះ​លើ​បណ្ដាញ​របស់ VirtualBox ដោយ​សារ​តែ​កំហុស​ដូច​ខាងក្រោម ៖&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</translation>
+ <source>C&amp;heck for Updates...</source>
+ <translation>ពិនិត្យ​មើល​ភាព​ទាន់សម័យ...</translation>
</message>
<message>
- <source>&lt;p&gt;Unable to obtain the new version information due to the following error:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</source>
- <translation>&lt;p&gt;មិនអាច​ទទួល​យក​ព័ត៌មានកំណែ​ថ្មី​បាន​ទេ ដោយ​សារ​តែ​កំហុស​ដូច​ខាងក្រោម ៖&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</translation>
+ <source>Check for a new VirtualBox version</source>
+ <translation>ពិនិត្យ​មើល​កំណែ​របស់​ VirtualBox ថ្មី</translation>
</message>
<message>
- <source>&lt;p&gt;One or more virtual hard disks, CD/DVD or floppy media are not currently accessible. As a result, you will not be able to operate virtual machines that use these media until they become accessible later.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;Check&lt;/b&gt; to open the Virtual Media Manager window and see what media are inaccessible, or press &lt;b&gt;Ignore&lt;/b&gt; to ignore this message.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ថាសរឹង​និម្មិត​មួយ ឬ​ច្រើន ស៊ីឌី/ឌីវីឌី ឬ​មេឌៀ​ថាសទន់​បច្ចុប្បន្ន​មិនអាច​ចូលដំណើរការ​បានទេ ។ ជា​លទ្ធផល អ្នកនឹង​មិនអាច​ប្រតិបត្តិ​ម៉ាស៊ីន​និម្មិត​ ដែល​ប្រើ​មេឌៀ​នេះ​បាន​ទេ រហូត​ដល់​ពួកវា​អាច​ចូលដំណើរការ​បាននៅពេល​ក្រោយ ។&lt;/p&gt;&lt;p&gt;ចុច &lt;b&gt;ពិនិត្យ​មើល&lt;/b&gt; ដើម្បី​ប្រើ​បង្អួច​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត ហើយ​មើល​អ្វី​ដែល​មេឌៀ​មិនអាច​ចូលដំណើរការ​បាន ឬ​ចុច &lt;b&gt;មិនអើពើ&lt;/b&gt; ដើម្បី​មិនអើពើ​នឹង​សារ​នេះ ។&lt;/p&gt;</translation>
+ <source>&amp;About VirtualBox...</source>
+ <translation>អំពី VirtualBox...</translation>
</message>
<message>
- <source>&lt;p&gt;Your existing VirtualBox settings files were automatically converted from the old format to a new format necessary for the new version of VirtualBox.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;OK&lt;/b&gt; to start VirtualBox now or press &lt;b&gt;More&lt;/b&gt; if you want to get more information about what files were converted and access additional actions.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;Exit&lt;/b&gt; to terminate the VirtualBox application without saving the results of the conversion to disk.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ឯកសារ​កំណត់​របស់​ VirtualBox ដែល​មានស្រាប់​របស់​អ្នក​ត្រូវ​បាន​បម្លែង​ដោយ​ស្វ័យ​ប្រវត្តិ​ពី​ទ្រង់ទ្រាយ​ចាស់​ទៅ​ទ្រង់ទ្រាយ​ថ្មី​ដែល​ចាំបាច់​សម្រាប់​កំណែ​ថ្មី​របស់ VirtualBox ។&lt;/p&gt;&lt;p&gt;ចុច &lt;b&gt;យល់ព្រម&lt;/b&gt; ដើម្បី​ចាប់ផ្ដើម​ VirtualBox ឥឡូវ ឬ​ចុច​ &lt;b&gt;ផ្សេង​ទៀត&lt;/b&gt; ប្រសិន​បើ​អ្នក​ចង់​យក​ព័ត៌មាន​បន្ថែម​ទៀត​ពី​ឯកសារ​ដែល​ត្រូវ​បានបម្លែង​ និង​ចូលដំណើរការ​សកម្មភាព​បន្ថែម ។&lt;/p&gt;&lt;p&gt;ចុច &lt;b&gt;ចេញ&lt;/b&gt; ដើម្បី​ចេញ​ពី​កម្មវិធី VirtualBox ដោយ​មិន​រក្សាទុក​លទ្ធផល​នៃ​ការ​បម្លែង​ទៅ​កាន់​ថាសរឹង ។&lt;/p&gt;</translation>
+ <source>Show a dialog with product information</source>
+ <translation>បង្ហាញ​ប្រអប់​ដែល​មាន​ព័ត៌មាន​ផលិតផល</translation>
</message>
<message>
- <source>&amp;More</source>
- <comment>warnAboutAutoConvertedSettings message box</comment>
- <translation>ផ្សេងៗ​ទៀត</translation>
+ <source>&lt;p>A new version of VirtualBox has been released! Version &lt;b>%1&lt;/b> is available at &lt;a href=&quot;http://www.virtualbox.org/&quot;>virtualbox.org&lt;/a>.&lt;/p>&lt;p>You can download this version from this direct link:&lt;/p>&lt;p>&lt;a href=%2>%3&lt;/a>&lt;/p></source>
+ <translation>&lt;p>កំណែ​ថ្មី​របស់ VirtualBox ត្រូវ​បាន​ចេញ​ផ្សាយ ! គឺ​កំណែ &lt;b>%1&lt;/b> ដែលអាច​រក​បាន​នៅ &lt;a href=&quot;http://www.virtualbox.org/&quot;>virtualbox.org&lt;/a> ។&lt;/p>&lt;p>អ្នក​អាច​ទាញ​យក​កំណែ​នេះ​ពី​តំណ​នេះ​ដោយ​ផ្ទាល់ ៖&lt;/p>&lt;p>&lt;a href=%2>%3&lt;/a>&lt;/p></translation>
</message>
<message>
- <source>E&amp;xit</source>
- <comment>warnAboutAutoConvertedSettings message box</comment>
- <translation>ចេញ</translation>
+ <source>&lt;p>Are you sure you want to release the %1 &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr>?&lt;/p>&lt;p>This will detach it from the following virtual machine(s): &lt;b>%3&lt;/b>.&lt;/p></source>
+ <translation>&lt;p>តើ​អ្នក​ប្រាកដ​ជា​ចង់​ចេញផ្សាយ %1 &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr>?&lt;/p>&lt;p>វា​នឹង​ផ្ដាច់​វា​ពី​ម៉ាស៊ីន​និម្មិត​ដូច​ខាងក្រោម ៖ &lt;b>%3&lt;/b> ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;The following VirtualBox settings files have been automatically converted to the new settings file format version &lt;b&gt;%1&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;However, the results of the conversion were not saved back to disk yet. Please press:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Backup&lt;/b&gt; to create backup copies of the settings files in the old format before saving them in the new format;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Overwrite&lt;/b&gt; to save all auto-converted files without creating backup copies (it will not be possible to use these settings files with an older version of VirtualBox afterwards);&lt;/li&gt;%2&lt;/ul&gt;&lt;p&gt;It is recommended to always select &lt;b&gt;Backup&lt;/b&gt; because in this case it will be possible to go back to the previous version of VirtualBox (if necessary) without losing your current settings. See the VirtualBox Manual for more information about downgrading.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ឯកសារ​កំណត់​ VirtualBox ដូច​ខាងក្រោម​ត្រូ​វបានបម្លែង​ទៅ​​ទ្រង់ទ្រាយ​ឯកសារ​ថ្មី​​កំណែ​ &lt;b&gt;%1&lt;/b&gt; ដោយ​ស្វ័យ​ប្រវត្តិ ។.&lt;/p&gt;&lt;p&gt;ទោះ​ជា​យ៉ាង​ណា​ក៏​ដោយ លទ្ធផល​នៃការ​បម្លែង​មិន​ត្រូវ​បានរក្សាទុក​ទៅ​ថាស​វិញទេ ។ សូម​ចុច ៖&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;បម្រុង​ទុក&lt;/b&gt; ដើម្បីបង្កើត​ច្បាប់ចម្លង​បម្រុង​​នៃ​ឯកសារ​ការ​កំណត់​នៅ​ក្នុង​ទ្រង់ទ្រាយ​ចាស់ៗ​មុននឹង​រក្សាទុក​វា​នៅ​ក្នុង​ទ្រង់ទ្រាយ​ថ្មី&lt;/li&gt;&lt;li&gt;&lt;b&gt;បដិសេធ&lt;/b&gt; ដើម្បី​រក្សាទុក​ឯកសារ​ដែល​បាន​បម្លែង​ដោយ​ស្វ័យ​ប្រវត្តិ​ដោយ​មិនបង្កើត​ច្បាប់​ចម្លង​បម្រុង​ទុក​ទេ (វា​នឹង​មិនអាច​ប្រើ​ឯកសា​រកំណត់​ទាំង​នេះ​ជា​មួយ​នឹង​កំណែ​ចាស់ៗ​របស់ VirtualBox បាន​ទេ)&lt;/li&gt;%2&lt;/ul&gt;&lt;p&gt;វា​ត្រូវ​បាន​ផ្ដល់​អនុសាសន៍​ឲ្យ​ជ្រើស &lt;b&gt;បម្រុង​ទុក&lt;/b&gt; ជា​និច្ច ពីព្រោះ​ក្នុងករណី​នេះ​​វា​នឹង​មិនអាច​ត្រឡប់ក្រោយ​ទៅ​កំណែ​មុន​របស់ VirtualBox (ប្រសិនបើ​ចាំចាប់) ដោយ​មិនបាត់បង់​ការ​កំណត់​បច្ចុប្បន្ន​របស់​អ្នក​ទេ ។ សូមមើល​សៀវដៅ VirtualBox សម្រាប់​សេចក្ដី​លម្អិត​អំពី​ការ​ធ្វើ​ឲ្យ​ប្រសើ​រឡើង ។&lt;/p&gt;</translation>
+ <source>Release</source>
+ <comment>detach medium</comment>
+ <translation>ចេញផ្សាយ</translation>
</message>
<message>
- <source>&lt;li&gt;&lt;b&gt;Exit&lt;/b&gt; to terminate VirtualBox without saving the results of the conversion to disk.&lt;/li&gt;</source>
- <translation>&lt;li&gt;&lt;b&gt;ចេញ&lt;/b&gt; ដើម្បី​បញ្ចប់​ VirtualBox ដោយ​មិន​រក្សាទុក​លទ្ធផល​នៃ​ការ​បម្លែង​ថាស ។&lt;/li&gt;</translation>
+ <source>&lt;p>Are you sure you want to remove the %1 &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr> from the list of known media?&lt;/p></source>
+ <translation>&lt;p>តើអ្នក​ប្រាកដ​ជា​ចង់​យក %1 &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr> ចេញ​ពី​មេឌៀ​ដែលបាន​ស្គាល់​ដែរឬទេ ?&lt;/p></translation>
</message>
<message>
- <source>O&amp;verwrite</source>
- <comment>warnAboutAutoConvertedSettings message box</comment>
- <translation>បដិសេធ</translation>
+ <source>Note that this hard disk is inaccessible so that its storage unit cannot be deleted right now.</source>
+ <translation>ចំណាំថា ថាសរឹង​នេះ​មិនអាច​ចូលដំណើរការ​បានទេ ដូច្នេះ​ឯកតា​ផ្ទុក​របស់វា​មិនអាច​ត្រូវ​បានលុប​ឥឡូវ​ទេ ។</translation>
</message>
<message>
- <source>&lt;p&gt;A critical error has occurred while running the virtual machine and the machine execution has been stopped.&lt;/p&gt;&lt;p&gt;For help, please see the Community section on &lt;a href=http://www.virtualbox.org&gt;http://www.virtualbox.org&lt;/a&gt; or your support contract. Please provide the contents of the log file &lt;tt&gt;VBox.log&lt;/tt&gt; and the image file &lt;tt&gt;VBox.png&lt;/tt&gt;, which you can find in the &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; directory, as well as a description of what you were doing when this error happened. Note that you can also access the above files by selecting &lt;b&gt;Show Log&lt;/b&gt; from the &lt;b&gt;Machine&lt;/b&gt; menu of the main VirtualBox window.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;OK&lt;/b&gt; if you want to power off the machine or press &lt;b&gt;Ignore&lt;/b&gt; if you want to leave it as is for debugging. Please note that debugging requires special knowledge and tools, so it is recommended to press &lt;b&gt;OK&lt;/b&gt; now.&lt;/p&gt;</source>
- <translation>&lt;p&gt;កំហុស​ធ្ងន់ធ្ងរ​បាន​កើត​ឡើង​ខណៈពេល​កំពុង​រត់​ម៉ាស៊ីននិម្មិត ហើយ​ការ​ប្រតិបត្តិ​ម៉ាស៊ីន​ត្រូ​វបានបញ្ឈប់ ។&lt;/p&gt;&lt;p&gt;ចំពោះ​ជំនួយ សូមមើល​ផ្នែក​សហគមន៍​នៅ​លើ &lt;a href=http://www.virtualbox.org&gt;http://www.virtualbox.org&lt;/a&gt; ឬ​កិច្ចសន្យា​គាំទ្រ​របស់​អ្នក ។ សូម​ផ្ដល់​នូវ​ខ្លឹមសារ​របស់​ឯកសារ​កំណត់ហេតុ &lt;tt&gt;VBox.log&lt;/tt&gt; ហើយ​នឹង​ឯកសារ​រូបភាព &lt;tt&gt;VBox.png&lt;/tt&gt; ដែល​អ្នក​អាច​រក​បាន​នៅ​ក្នុង​ថត &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; ព្រមទាំង​សេចក្ដីពិពណ៌នា​នូវ​អ្វីដែល​អ្នក​កំពុង​ធ្វើ នៅពេល​កំហុស​កើត​ឡើង ។ ចំណាំ​ថា អ្នក​ក៏អាច​ចូលដំណើរការ​ឯកសារ​ខាង​លើ ដោយ​ជ្រើស &lt;b&gt;បង្ហាញ​កំណត់​ហេតុ&lt;/b&gt; ពី​ម៉ឺនុយ &lt;b&gt;ម៉ាស៊ីន&lt;/b&gt; របស់​បង្អួច VirtualBox មេ ។&lt;/p&gt;&lt;p&gt;ចុច &lt;b&gt;យល់ព្រម&lt;/b&gt; ប្រសិនបើ​​អ្នក​ចង់​បិទ​ម៉ាស៊ីន ឬ​ចុច &lt;b&gt;មិនអើពើ&lt;/b&gt; ប្រសិន​បើ​អ្នក​ទុក​វា​សម្រាប់បំបាត់​កំហុស ។ សូម​ចំណាំថា​កា​របំបាត់​កំហុស​ទាមទារចំណេះដឹង និង​កម្មវិធី​ពិសេស ដូច្នេះ​ត្រូវ​បានផ្ដល់​អនុសាសន៍​ឲ្យ​ចុច &lt;b&gt;យល់ព្រម&lt;/b&gt; ឥឡូវ ។&lt;/p&gt;</translation>
+ <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>
- <source>hard disk</source>
- <comment>failed to close ...</comment>
- <translation>ថាសរឹង</translation>
+ <source>&lt;p>Note that the storage unit of this medium will not be deleted and therefore it will be possible to add it to the list later again.&lt;/p></source>
+ <translation>&lt;p>ចំណាំ​ថា ឯកតា​ផ្ទុក​របស់​ឧបករណ៍​ផ្ទុក​នេះ​នឹង​មិន​ត្រូវ​បានលុប​ទេ ហើយ​ដូច្នេះ​វា​នឹង​អាច​បន្ថែម​ទៅ​កាន់​បញ្ជី​ពេល​ក្រោយ​ម្ដង​ទៀត ។&lt;/p></translation>
</message>
<message>
- <source>CD/DVD image</source>
- <comment>failed to close ...</comment>
- <translation>រូបភាព​ស៊ីឌី/ឌីវីឌី</translation>
+ <source>Remove</source>
+ <comment>medium</comment>
+ <translation>យកចេញ</translation>
</message>
<message>
- <source>floppy image</source>
- <comment>failed to close ...</comment>
- <translation>រូបភាព​ថាស​ទន់</translation>
+ <source>&lt;p>The hard disk storage unit at location &lt;b>%1&lt;/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.&lt;/p>&lt;p>Please specify a different location.&lt;/p></source>
+ <translation>&lt;p>មាន​ឯកតា​ផ្ទុក​​របស់​ថាសរឹង​នៅ​ទីតាំង &lt;b>%1&lt;/b> រួច​ហើយ ។ អ្នក​មិនអាច​បង្កើត​ថាសរឹង​និម្មិត​ថ្មី​បាន​ទេ ដែល​ប្រើ​ទីតាំង​នេះ ពីព្រោះ​វា​អាច​ត្រូវ​បានប្រើ​ដោយ​ថាសរឹង​និម្មិត​ផ្សេង ។&lt;/p>&lt;p>សូម​បញ្ជាក់​ទីតាំង​ផ្សេង ​។&lt;/p></translation>
</message>
<message>
- <source>The following files already exist:&lt;br /&gt;&lt;br /&gt;%1&lt;br /&gt;&lt;br /&gt;Are you sure you want to replace them? Replacing them will overwrite their contents.</source>
- <translation type="unfinished"></translation>
+ <source>&lt;p>Do you want to delete the storage unit of the hard disk &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr>?&lt;/p>&lt;p>If you select &lt;b>Delete&lt;/b> then the specified storage unit will be permanently deleted. This operation &lt;b>cannot be undone&lt;/b>.&lt;/p>&lt;p>If you select &lt;b>Keep&lt;/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.&lt;/p></source>
+ <translation>&lt;p>តើ​អ្នក​ចង់​លុប​ឯកតា​ផ្ទុក​របស់​ថាសរឹង​ &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr>ដែរឬទេ?&lt;/p>&lt;p>ប្រសិនបើ​អ្នក​ជ្រើស &lt;b>លុប&lt;/b> បន្ទាប់​មក​ឯកតា​ផ្ទុក​ដែល​បានបញ្ជាក់​នឹង​ត្រូ​វបាន​លុប​ជា​អចិន្ត្រៃយ៍ ។ ប្រតិបត្តិការ​នេះ &lt;b>មិនអាច​ត្រូ​វបាន​ធ្វើ​វិញ​បានទេ&lt;/b> ។&lt;/p>&lt;p>ប្រសិនបើ​អ្នក​ជ្រើស &lt;b>រក្សាទុក&lt;/b> បន្ទាប់​មក​ថាសរឹង​នឹង​ត្រូវ​បានយកចេញ​តែ​ពី​បញ្ជី​របស់​ថាសរឹង​ដែល​ស្គាល់​ប៉ុណ្ណោះ ប៉ុន្តែ​ឯកតា​ផ្ទុក​នឹង​មិន​ត្រូ​វបាន​ប៉ះពាល់​ទេ ដែល​ធ្វើ​ឲ្យ​វា​អាច​បន្ថែម​ថាសរឹង​នេះ​ទៅកាន់​បញ្ជី​ពេលក្រោយ​ម្ដង​ទៀត​បាន ។&lt;/p></translation>
</message>
<message>
- <source>Failed to remove the file &lt;b&gt;%1&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Please try to remove the file yourself and try again.</source>
- <translation type="unfinished"></translation>
+ <source>Delete</source>
+ <comment>hard disk storage</comment>
+ <translation>លុប</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>
+ <source>Keep</source>
+ <comment>hard disk storage</comment>
+ <translation>រក្សាទុក</translation>
</message>
<message>
- <source>Could not access USB on the host system, because neither the USB file system (usbfs) nor the DBus and hal services are currently available. If you wish to use host USB devices inside guest systems, you must correct this and restart VirtualBox.</source>
- <translation type="unfinished"></translation>
+ <source>Failed to delete the storage unit of the hard disk &lt;b>%1&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងការ​លុប​ការ​ផ្ទុក​របស់​ថាសរឹង &lt;b>%1&lt;/b> ។</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 use the ACPI subsystem.</source>
- <translation type="unfinished"></translation>
+ <source>&lt;p>There are no unused hard disks available for the newly created attachment.&lt;/p>&lt;p>Press the &lt;b>Create&lt;/b> button to start the &lt;i>New Virtual Disk&lt;/i> wizard and create a new hard disk, or press the &lt;b>Select&lt;/b> button to open the &lt;i>Virtual Media Manager&lt;/i> and select what to do.&lt;/p></source>
+ <translation>&lt;p>មិនមាន​ថាសរឹង​ដែល​មិនបានប្រើទេ​ សម្រាប់​ការ​ភ្ជាប់​ដែល​បាន​បង្កើត​ថ្មីៗ ។&lt;/p>&lt;p>ចុច​ប៊ូតុង &lt;b>បង្កើត&lt;/b> ដើម្បី​ចាប់ផ្ដើម​អ្នក​ជំនួយការ &lt;i>ថាស​និម្មិត​ថ្មី&lt;/i> ហើយ​បង្កើត​ថាសរឹង​ថ្មី ឬ​ចុច​ប៊ូតុង &lt;b>ជ្រើស&lt;/b> ដើម្បី​បើក​ &lt;i>កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត&lt;/i> ហើយ​ជ្រើស​អ្វី​ត្រូវ​ធ្វើ ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;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.&lt;/p&gt;&lt;p&gt;Please ensure that you have enabled VT-x/AMD-V properly in the BIOS of your host computer.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <source>Failed to create the hard disk storage &lt;nobr>&lt;b>%1&lt;/b>.&lt;/nobr></source>
+ <translation>បានបរាជ័យ​ក្នុង​​ការ​បង្កើត​ការ​ផ្ទុក​ថាសរឹង &lt;nobr>&lt;b>%1&lt;/b> ។&lt;/nobr></translation>
</message>
<message>
- <source>Close VM</source>
- <translation type="unfinished"></translation>
+ <source>Failed to attach the hard disk &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr> to the slot &lt;i>%2&lt;/i> of the machine &lt;b>%3&lt;/b>.</source>
+ <translation>បានបរាជ័យក្នុងកា​រភ្ជាប់ &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr> ទៅ​រន្ធ &lt;i>%2&lt;/i> របស់​ម៉ាស៊ីន &lt;b>%3&lt;/b> ។</translation>
</message>
<message>
- <source>Continue</source>
- <translation type="unfinished">បន្ត</translation>
+ <source>Failed to detach the hard disk &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr> from the slot &lt;i>%2&lt;/i> of the machine &lt;b>%3&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងកា​រផ្ដាច់​ថាសរឹង &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr> ពី​រន្ធ &lt;i>%2&lt;/i> របស់​ម៉ាស៊ីន &lt;b>%3&lt;/b> ។</translation>
</message>
<message>
- <source>&lt;p&gt;Are you sure you wish to delete the selected snapshot and saved state?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <source>Failed to mount the %1 &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr> to the machine &lt;b>%3&lt;/b>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងកា​រម៉ោន​ %1 &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr> ទៅ​ម៉ាស៊ីន &lt;b>%3&lt;/b> ។</translation>
</message>
<message>
- <source>Discard</source>
- <translation type="unfinished">បោះបង់</translation>
+ <source>Failed to unmount the %1 &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr> from the machine &lt;b>%3&lt;/b>.</source>
+ <translation>បានបរាជ័យ​ក្នុងការ​អាន់ម៉ោន​ %1 &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr> ពី​ម៉ាស៊ីន &lt;b>%3&lt;/b> ។</translation>
</message>
<message>
- <source>Cancel</source>
- <translation type="unfinished"></translation>
+ <source>Failed to open the %1 &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr>.</source>
+ <translation>បាន​បរាជ័យ​ក្នុងការ​បើក %1 &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr> ។</translation>
</message>
<message>
- <source>&lt;p&gt;There are hard disks attached to ports of the additional controller. If you disable the additional controller, all these hard disks will be automatically detached.&lt;/p&gt;&lt;p&gt;Are you sure you want to disable the additional controller?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <source>Failed to close the %1 &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr>.</source>
+ <translation>បានបរាជ័យ​ក្នុងកា​របិទ %1 &lt;nobr>&lt;b>%2&lt;/b>&lt;/nobr> ។</translation>
</message>
<message>
- <source>&lt;p&gt;There are hard disks attached to ports of the additional controller. If you change the additional controller, all these hard disks will be automatically detached.&lt;/p&gt;&lt;p&gt;Are you sure you want to change the additional controller?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <source>Failed to get the accessibility state of the medium &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr>.</source>
+ <translation>បានបរាជ័យ​ក្នុងកា​រ​ចូលដំណើរការ​ស្ថានភាព​របស់​ឧបករណ៍​ផ្ទុក &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr> ។</translation>
</message>
<message>
- <source>Change</source>
- <comment>hard disk</comment>
- <translation type="unfinished"></translation>
+ <source>&lt;p>Failed to connect to the VirtualBox online registration service due to the following error:&lt;/p>&lt;p>&lt;b>%1&lt;/b>&lt;/p></source>
+ <translation>&lt;p>បានបរាជ័យ​ក្នុងកា​រតភ្ជាប់​ទៅ​កាន់​សេវា​ចុះឈ្មោះ​លើ​បណ្ដាញ​របស់ VirtualBox ដោយ​សារ​តែ​កំហុស​ដូច​ខាងក្រោម ៖&lt;/p>&lt;p>&lt;b>%1&lt;/b>&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Deleting this host-only network will lead to the deleting of the host-only interface this network is based on. Do you want to remove the (host-only network) interface &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; this interface may be in use by one or more virtual network adapters belonging to one of your VMs. After it is removed, these adapters will no longer be usable until you correct their settings by either choosing a different interface name or a different adapter attachment type.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <source>&lt;p>Unable to obtain the new version information due to the following error:&lt;/p>&lt;p>&lt;b>%1&lt;/b>&lt;/p></source>
+ <translation>&lt;p>មិនអាច​ទទួល​យក​ព័ត៌មានកំណែ​ថ្មី​បាន​ទេ ដោយ​សារ​តែ​កំហុស​ដូច​ខាងក្រោម ៖&lt;/p>&lt;p>&lt;b>%1&lt;/b>&lt;/p></translation>
</message>
<message>
- <source>Failed to create the host-only network interface.</source>
- <translation type="unfinished"></translation>
+ <source>&lt;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.&lt;/p>&lt;p>Press &lt;b>Check&lt;/b> to open the Virtual Media Manager window and see what media are inaccessible, or press &lt;b>Ignore&lt;/b> to ignore this message.&lt;/p></source>
+ <translation>&lt;p>ថាសរឹង​និម្មិត​មួយ ឬ​ច្រើន ស៊ីឌី/ឌីវីឌី ឬ​មេឌៀ​ថាសទន់​បច្ចុប្បន្ន​មិនអាច​ចូលដំណើរការ​បានទេ ។ ជា​លទ្ធផល អ្នកនឹង​មិនអាច​ប្រតិបត្តិ​ម៉ាស៊ីន​និម្មិត​ ដែល​ប្រើ​មេឌៀ​នេះ​បាន​ទេ រហូត​ដល់​ពួកវា​អាច​ចូលដំណើរការ​បាននៅពេល​ក្រោយ ។&lt;/p>&lt;p>ចុច &lt;b>ពិនិត្យ​មើល&lt;/b> ដើម្បី​ប្រើ​បង្អួច​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត ហើយ​មើល​អ្វី​ដែល​មេឌៀ​មិនអាច​ចូលដំណើរការ​បាន ឬ​ចុច &lt;b>មិនអើពើ&lt;/b> ដើម្បី​មិនអើពើ​នឹង​សារ​នេះ ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Your existing VirtualBox settings files will be automatically converted from the old format to a new format necessary for the new version of VirtualBox.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;OK&lt;/b&gt; to start VirtualBox now or press &lt;b&gt;Exit&lt;/b&gt; if you want to terminate the VirtualBox application without any further actions.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <source>&lt;p>Your existing VirtualBox settings files were automatically converted from the old format to a new format necessary for the new version of VirtualBox.&lt;/p>&lt;p>Press &lt;b>OK&lt;/b> to start VirtualBox now or press &lt;b>More&lt;/b> if you want to get more information about what files were converted and access additional actions.&lt;/p>&lt;p>Press &lt;b>Exit&lt;/b> to terminate the VirtualBox application without saving the results of the conversion to disk.&lt;/p></source>
+ <translation>&lt;p>ឯកសារ​កំណត់​របស់​ VirtualBox ដែល​មានស្រាប់​របស់​អ្នក​ត្រូវ​បាន​បម្លែង​ដោយ​ស្វ័យ​ប្រវត្តិ​ពី​ទ្រង់ទ្រាយ​ចាស់​ទៅ​ទ្រង់ទ្រាយ​ថ្មី​ដែល​ចាំបាច់​សម្រាប់​កំណែ​ថ្មី​របស់ VirtualBox ។&lt;/p>&lt;p>ចុច &lt;b>យល់ព្រម&lt;/b> ដើម្បី​ចាប់ផ្ដើម​ VirtualBox ឥឡូវ ឬ​ចុច​ &lt;b>ផ្សេង​ទៀត&lt;/b> ប្រសិន​បើ​អ្នក​ចង់​យក​ព័ត៌មាន​បន្ថែម​ទៀត​ពី​ឯកសារ​ដែល​ត្រូវ​បានបម្លែង​ និង​ចូលដំណើរការ​សកម្មភាព​បន្ថែម ។&lt;/p>&lt;p>ចុច &lt;b>ចេញ&lt;/b> ដើម្បី​ចេញ​ពី​កម្មវិធី VirtualBox ដោយ​មិន​រក្សាទុក​លទ្ធផល​នៃ​ការ​បម្លែង​ទៅ​កាន់​ថាសរឹង ។&lt;/p></translation>
</message>
<message>
- <source>Failed to open appliance.</source>
- <translation type="unfinished"></translation>
+ <source>&amp;More</source>
+ <comment>warnAboutAutoConvertedSettings message box</comment>
+ <translation>ផ្សេងៗ​ទៀត</translation>
</message>
<message>
- <source>Failed to open/interpret appliance &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <source>E&amp;xit</source>
+ <comment>warnAboutAutoConvertedSettings message box</comment>
+ <translation>ចេញ</translation>
</message>
<message>
- <source>Failed to import appliance &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <source>&lt;p>The following VirtualBox settings files have been automatically converted to the new settings file format version &lt;b>%1&lt;/b>.&lt;/p>&lt;p>However, the results of the conversion were not saved back to disk yet. Please press:&lt;/p>&lt;ul>&lt;li>&lt;b>Backup&lt;/b> to create backup copies of the settings files in the old format before saving them in the new format;&lt;/li>&lt;li>&lt;b>Overwrite&lt;/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);&lt;/li>%2&lt;/ul>&lt;p>It is recommended to always select &lt;b>Backup&lt;/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.&lt;/p></source>
+ <translation>&lt;p>ឯកសារ​កំណត់​ VirtualBox ដូច​ខាងក្រោម​ត្រូ​វបានបម្លែង​ទៅ​​ទ្រង់ទ្រាយ​ឯកសារ​ថ្មី​​កំណែ​ &lt;b>%1&lt;/b> ដោយ​ស្វ័យ​ប្រវត្តិ ។.&lt;/p>&lt;p>ទោះ​ជា​យ៉ាង​ណា​ក៏​ដោយ លទ្ធផល​នៃការ​បម្លែង​មិន​ត្រូវ​បានរក្សាទុក​ទៅ​ថាស​វិញទេ ។ សូម​ចុច ៖&lt;/p>&lt;ul>&lt;li>&lt;b>បម្រុង​ទុក&lt;/b> ដើម្បីបង្កើត​ច្បាប់ចម្លង​បម្រុង​​នៃ​ឯកសារ​ការ​កំណត់​នៅ​ក្នុង​ទ្រង់ទ្រាយ​ចាស់ៗ​មុននឹង​រក្សាទុក​វា​នៅ​ក្នុង​ទ្រង់ទ្រាយ​ថ្មី&lt;/li>&lt;li>&lt;b>បដិសេធ&lt;/b> ដើម្បី​រក្សាទុក​ឯកសារ​ដែល​បាន​បម្លែង​ដោយ​ស្វ័យ​ប្រវត្តិ​ដោយ​មិនបង្កើត​ច្បាប់​ចម្លង​បម្រុង​ទុក​ទេ (វា​នឹង​មិនអាច​ប្រើ​ឯកសា​រកំណត់​ទាំង​នេះ​ជា​មួយ​នឹង​កំណែ​ចាស់ៗ​របស់ VirtualBox បាន​ទេ)&lt;/li>%2&lt;/ul>&lt;p>វា​ត្រូវ​បាន​ផ្ដល់​អនុសាសន៍​ឲ្យ​ជ្រើស &lt;b>បម្រុង​ទុក&lt;/b> ជា​និច្ច ពីព្រោះ​ក្នុងករណី​នេះ​​វា​នឹង​មិនអាច​ត្រឡប់ក្រោយ​ទៅ​កំណែ​មុន​របស់ VirtualBox (ប្រសិនបើ​ចាំចាប់) ដោយ​មិនបាត់បង់​ការ​កំណត់​បច្ចុប្បន្ន​របស់​អ្នក​ទេ ។ សូមមើល​សៀវដៅ VirtualBox សម្រាប់​សេចក្ដី​លម្អិត​អំពី​ការ​ធ្វើ​ឲ្យ​ប្រសើ​រឡើង ។&lt;/p></translation>
</message>
<message>
- <source>Failed to create appliance.</source>
- <translation type="unfinished"></translation>
+ <source>&lt;li>&lt;b>Exit&lt;/b> to terminate VirtualBox without saving the results of the conversion to disk.&lt;/li></source>
+ <translation>&lt;li>&lt;b>ចេញ&lt;/b> ដើម្បី​បញ្ចប់​ VirtualBox ដោយ​មិន​រក្សាទុក​លទ្ធផល​នៃ​ការ​បម្លែង​ថាស ។&lt;/li></translation>
</message>
<message>
- <source>Failed to prepare the export of the appliance &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <source>O&amp;verwrite</source>
+ <comment>warnAboutAutoConvertedSettings message box</comment>
+ <translation>បដិសេធ</translation>
</message>
<message>
- <source>Failed to create an appliance.</source>
- <translation type="unfinished"></translation>
+ <source>&lt;p>A critical error has occurred while running the virtual machine and the machine execution has been stopped.&lt;/p>&lt;p>For help, please see the Community section on &lt;a href=http://www.virtualbox.org>http://www.virtualbox.org&lt;/a> or your support contract. Please provide the contents of the log file &lt;tt>VBox.log&lt;/tt> and the image file &lt;tt>VBox.png&lt;/tt>, which you can find in the &lt;nobr>&lt;b>%1&lt;/b>&lt;/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 &lt;b>Show Log&lt;/b> from the &lt;b>Machine&lt;/b> menu of the main VirtualBox window.&lt;/p>&lt;p>Press &lt;b>OK&lt;/b> if you want to power off the machine or press &lt;b>Ignore&lt;/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 &lt;b>OK&lt;/b> now.&lt;/p></source>
+ <translation>&lt;p>កំហុស​ធ្ងន់ធ្ងរ​បាន​កើត​ឡើង​ខណៈពេល​កំពុង​រត់​ម៉ាស៊ីននិម្មិត ហើយ​ការ​ប្រតិបត្តិ​ម៉ាស៊ីន​ត្រូ​វបានបញ្ឈប់ ។&lt;/p>&lt;p>ចំពោះ​ជំនួយ សូមមើល​ផ្នែក​សហគមន៍​នៅ​លើ &lt;a href=http://www.virtualbox.org>http://www.virtualbox.org&lt;/a> ឬ​កិច្ចសន្យា​គាំទ្រ​របស់​អ្នក ។ សូម​ផ្ដល់​នូវ​ខ្លឹមសារ​របស់​ឯកសារ​កំណត់ហេតុ &lt;tt>VBox.log&lt;/tt> ហើយ​នឹង​ឯកសារ​រូបភាព &lt;tt>VBox.png&lt;/tt> ដែល​អ្នក​អាច​រក​បាន​នៅ​ក្នុង​ថត &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr> ព្រមទាំង​សេចក្ដីពិពណ៌នា​នូវ​អ្វីដែល​អ្នក​កំពុង​ធ្វើ នៅពេល​កំហុស​កើត​ឡើង ។ ចំណាំ​ថា អ្នក​ក៏អាច​ចូលដំណើរការ​ឯកសារ​ខាង​លើ ដោយ​ជ្រើស &lt;b>បង្ហាញ​កំណត់​ហេតុ&lt;/b> ពី​ម៉ឺនុយ &lt;b>ម៉ាស៊ីន&lt;/b> របស់​បង្អួច VirtualBox មេ ។&lt;/p>&lt;p>ចុច &lt;b>យល់ព្រម&lt;/b> ប្រសិនបើ​​អ្នក​ចង់​បិទ​ម៉ាស៊ីន ឬ​ចុច &lt;b>មិនអើពើ&lt;/b> ប្រសិន​បើ​អ្នក​ទុក​វា​សម្រាប់បំបាត់​កំហុស ។ សូម​ចំណាំថា​កា​របំបាត់​កំហុស​ទាមទារចំណេះដឹង និង​កម្មវិធី​ពិសេស ដូច្នេះ​ត្រូវ​បានផ្ដល់​អនុសាសន៍​ឲ្យ​ចុច &lt;b>យល់ព្រម&lt;/b> ឥឡូវ ។&lt;/p></translation>
</message>
<message>
- <source>Failed to export appliance &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <source>hard disk</source>
+ <comment>failed to close ...</comment>
+ <translation>ថាសរឹង</translation>
</message>
<message>
- <source>A file named &lt;b&gt;%1&lt;/b&gt; already exists. Are you sure you want to replace it?&lt;br /&gt;&lt;br /&gt;Replacing it will overwrite its contents.</source>
- <translation type="unfinished"></translation>
+ <source>CD/DVD image</source>
+ <comment>failed to close ...</comment>
+ <translation>រូបភាព​ស៊ីឌី/ឌីវីឌី</translation>
</message>
<message>
- <source>&lt;p&gt;VT-x/AMD-V hardware acceleration has been enabled, but is not operational. Certain guests (e.g. OS/2 and QNX) require this feature.&lt;/p&gt;&lt;p&gt;Please ensure that you have enabled VT-x/AMD-V properly in the BIOS of your host computer.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <source>floppy image</source>
+ <comment>failed to close ...</comment>
+ <translation>រូបភាព​ថាស​ទន់</translation>
</message>
- <message>
- <source>&lt;p&gt;Invalid e-mail address or password specified.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&lt;p&gt;Failed to register the VirtualBox product.&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Failed to check files.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Failed to remove file.</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>VBoxProgressDialog</name>
- <message>
- <source>Time remaining: %1</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxRegistrationDlg</name>
<message>
- <source>VirtualBox Registration Dialog</source>
- <translation>ប្រអប់​ចុះឈ្មោះ VirtualBox</translation>
- </message>
- <message>
- <source>&amp;Name</source>
- <translation type="obsolete">ឈ្មោះ</translation>
- </message>
- <message>
- <source>Enter your full name using Latin characters.</source>
- <translation>បញ្ចូល​ឈ្មោះ​ពេញ​ ដោយ​ប្រើ​តួអក្សរ​ឡាតាំង ។</translation>
- </message>
- <message>
- <source>&amp;E-mail</source>
- <translation type="obsolete">អ៊ីមែល</translation>
- </message>
- <message>
- <source>Enter your valid e-mail address.</source>
- <translation>បញ្ចូល​អាសយដ្ឋាន​អ៊ីមែល​ដែល​ត្រឹមត្រូវ​របស់អ្នក ។</translation>
- </message>
- <message>
- <source>&amp;Please do not use this information to contact me</source>
- <translation type="obsolete">សូម​កុំ​ប្រើ​ព័ត៌មាន​នេះ​ដើម្បីទាក់ទង​ខ្ញុំ</translation>
+ <source>VirtualBox Registration Dialog</source>
+ <translation>ប្រអប់​ចុះឈ្មោះ VirtualBox</translation>
</message>
<message>
- <source>Welcome to the VirtualBox Registration Form!</source>
- <translation>សូម​ស្វាគមន៍​មក​កាន់​សំណុំ​បែបបទ​ចុះឈ្មោះ​របស់ VirtualBox !</translation>
+ <source>&amp;Name</source>
+ <translation>ឈ្មោះ</translation>
</message>
<message>
- <source>Could not perform connection handshake.</source>
- <translation>មិនអាច​អនុវត្ត​ការ​តភ្ជាប់​ចាប់ដៃ​បានទេ ។</translation>
+ <source>Enter your full name using Latin characters.</source>
+ <translation>បញ្ចូល​ឈ្មោះ​ពេញ​ ដោយ​ប្រើ​តួអក្សរ​ឡាតាំង ។</translation>
</message>
<message>
- <source>&lt;p&gt;Please fill out this registration form to let us know that you use VirtualBox and, optionally, to keep you informed about VirtualBox news and updates.&lt;/p&gt;&lt;p&gt;Enter your full name using Latin characters and your e-mail address to the fields below. Please note that Sun Microsystems will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, Sun Microsystems will never pass your data to third parties. Detailed information about how we use your personal data can be found in the &lt;b&gt;Privacy Policy&lt;/b&gt; section of the VirtualBox Manual or on the &lt;a href=http://www.virtualbox.org/wiki/PrivacyPolicy&gt;Privacy Policy&lt;/a&gt; page of the VirtualBox web-site.&lt;/p&gt;</source>
- <translation type="obsolete">&lt;p&gt;សូមបំពេញ​សំណុំ​បែបបទ​ចុះឈ្មោះនេះ ដើម្បីអនុញ្ញាត​ឲ្យ​យើង​ដឹង​ថា​ អ្នកប្រើ VirtualBox និង​ជា​ជម្រើស​ត្រូវ​ជូនដំណឹង​អ្នក​អំពី​ព័ត៌មាន និង​ភាព​ទាន់សម័យ​របស់ VirtualBox ។&lt;/p&gt;&lt;p&gt;បញ្ចូល​ឈ្មោះ​ពេញលេញ​របស់​អ្នកដោយ​ប្រើ​តួអក្សរ​ឡាតាំង ហើយអាសយដ្ឋាន​អ៊ីមែល​របស់អ្នកក្នុង​វាល​ខាង​ក្រោម ។ សូម​ចំណាំ​ថា Sun Microsystems នឹង​ប្រើ​ព័ត៌មាននេះដើម្បី​ប្រមូល​តែ​​ស្ថិតិ​ប្រើ​ផលិតផល ហើយ​ផ្ញើ​ព្រឹត្តិបត្រ​ VirtualBox ឲ្យ​អ្នក ។ ជា​ទូទៅ Sun Microsystems នឹង​មិន​ចម្លង​ទិន្នន័យ​របស់​អ្នក​ទៅ​ភាគីទីបី​បានទេ ។ ព័ត៌មាន​លម្អិត​អំពី​​វិធី​ដែល​យើង​ប្រើ​ទិន្នន័យ​ផ្ទាល់ខ្លួន​របស់​អ្នក អាច​រក​បាននៅ​ក្នុង​ផ្នែក &lt;b&gt;គោលនយោបាយ​ឯកជន&lt;/b&gt; របស់​សៀវភៅ​ដៃ VirtualBox ឬ​នៅ​លើ​ទំព័រ &lt;a href=http://www.virtualbox.org/wiki/PrivacyPolicy&gt;គោលនយោបាយ​ឯកជន&lt;/a&gt; របស់​តំបន់បណ្ដាញ VirtualBox ។&lt;/p&gt;</translation>
+ <source>&amp;E-mail</source>
+ <translation>អ៊ីមែល</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>
+ <source>Enter your valid e-mail address.</source>
+ <translation>បញ្ចូល​អាសយដ្ឋាន​អ៊ីមែល​ដែល​ត្រឹមត្រូវ​របស់អ្នក ។</translation>
</message>
<message>
- <source>C&amp;onfirm</source>
- <translation type="obsolete">អះអាង</translation>
+ <source>&amp;Please do not use this information to contact me</source>
+ <translation>សូម​កុំ​ប្រើ​ព័ត៌មាន​នេះ​ដើម្បីទាក់ទង​ខ្ញុំ</translation>
</message>
<message>
- <source>Cancel</source>
- <translation>បោះបង់</translation>
+ <source>Welcome to the VirtualBox Registration Form!</source>
+ <translation>សូម​ស្វាគមន៍​មក​កាន់​សំណុំ​បែបបទ​ចុះឈ្មោះ​របស់ VirtualBox !</translation>
</message>
<message>
- <source>Select Country/Territory</source>
- <translation type="unfinished"></translation>
+ <source>Could not perform connection handshake.</source>
+ <translation>មិនអាច​អនុវត្ត​ការ​តភ្ជាប់​ចាប់ដៃ​បានទេ ។</translation>
</message>
<message>
- <source>&lt;p&gt;Please fill out this registration form to let us know that you use VirtualBox and, optionally, to keep you informed about VirtualBox news and updates.&lt;/p&gt;&lt;p&gt;Please use the Latin characters to fill the fields below. Please note that Sun Microsystems will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, Sun Microsystems will never pass your data to third parties. Detailed information about how we use your personal data can be found in the &lt;b&gt;Privacy Policy&lt;/b&gt; section of the VirtualBox Manual or on the &lt;a href=http://www.virtualbox.org/wiki/PrivacyPolicy&gt;Privacy Policy&lt;/a&gt; page of the VirtualBox web-site.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <source>&lt;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.&lt;/p>&lt;p>Enter your full name using Latin characters and your e-mail address to the fields below. Please note that Sun Microsystems will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, Sun Microsystems will never pass your data to third parties. Detailed information about how we use your personal data can be found in the &lt;b>Privacy Policy&lt;/b> section of the VirtualBox Manual or on the &lt;a href=http://www.virtualbox.org/wiki/PrivacyPolicy>Privacy Policy&lt;/a> page of the VirtualBox web-site.&lt;/p></source>
+ <translation>&lt;p>សូមបំពេញ​សំណុំ​បែបបទ​ចុះឈ្មោះនេះ ដើម្បីអនុញ្ញាត​ឲ្យ​យើង​ដឹង​ថា​ អ្នកប្រើ VirtualBox និង​ជា​ជម្រើស​ត្រូវ​ជូនដំណឹង​អ្នក​អំពី​ព័ត៌មាន និង​ភាព​ទាន់សម័យ​របស់ VirtualBox ។&lt;/p>&lt;p>បញ្ចូល​ឈ្មោះ​ពេញលេញ​របស់​អ្នកដោយ​ប្រើ​តួអក្សរ​ឡាតាំង ហើយអាសយដ្ឋាន​អ៊ីមែល​របស់អ្នកក្នុង​វាល​ខាង​ក្រោម ។ សូម​ចំណាំ​ថា Sun Microsystems នឹង​ប្រើ​ព័ត៌មាននេះដើម្បី​ប្រមូល​តែ​​ស្ថិតិ​ប្រើ​ផលិតផល ហើយ​ផ្ញើ​ព្រឹត្តិបត្រ​ VirtualBox ឲ្យ​អ្នក ។ ជា​ទូទៅ Sun Microsystems នឹង​មិន​ចម្លង​ទិន្នន័យ​របស់​អ្នក​ទៅ​ភាគីទីបី​បានទេ ។ ព័ត៌មាន​លម្អិត​អំពី​​វិធី​ដែល​យើង​ប្រើ​ទិន្នន័យ​ផ្ទាល់ខ្លួន​របស់​អ្នក អាច​រក​បាននៅ​ក្នុង​ផ្នែក &lt;b>គោលនយោបាយ​ឯកជន&lt;/b> របស់​សៀវភៅ​ដៃ VirtualBox ឬ​នៅ​លើ​ទំព័រ &lt;a href=http://www.virtualbox.org/wiki/PrivacyPolicy>គោលនយោបាយ​ឯកជន&lt;/a> របស់​តំបន់បណ្ដាញ VirtualBox ។&lt;/p></translation>
</message>
<message>
- <source>I &amp;have a Sun Online account already:</source>
- <translation type="unfinished"></translation>
+ <source>Check this box if you do not want to receive mail from Sun Microsystems at the e-mail address specified above.</source>
+ <translation>គូស​ធីក​ប្រអប់​នេះ ប្រសិនបើ​អ្នក​មិន​ចង់​ទទួល​សំបុត្រ​ពី​ Sun Microsystems តាម​អាសយដ្ឋាន​អ៊ីមែល​ដែល​បាន​បញ្ជាក់​ខាង​លើ ។</translation>
</message>
<message>
- <source>&amp;E-mail:</source>
- <translation type="unfinished"></translation>
+ <source>C&amp;onfirm</source>
+ <translation>អះអាង</translation>
</message>
<message>
- <source>&amp;Password:</source>
- <translation type="unfinished"></translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
- <message>
- <source>I &amp;would like to register creating a new Sun Online account:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;First Name:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Last Name:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Company:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Co&amp;untry:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>E-&amp;mail:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>P&amp;assword:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Co&amp;nfirm Password:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Register</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxSFDialog</name>
<message>
- <source>Shared Folders</source>
- <translation>ថត​ដែលបានចែករំលែក</translation>
+ <source>Shared Folders</source>
+ <translation>ថត​ដែលបានចែករំលែក</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxSelectorWnd</name>
<message>
- <source>VirtualBox OSE</source>
- <translation>VirtualBox OSE</translation>
- </message>
- <message>
- <source>&amp;Details</source>
- <translation>សេចក្ដី​លម្អិត</translation>
+ <source>VirtualBox OSE</source>
+ <translation>VirtualBox OSE</translation>
</message>
<message>
- <source>&amp;Preferences...</source>
- <comment>global settings</comment>
- <translation>ចំណូល​ចិត្ត...</translation>
+ <source>&amp;Details</source>
+ <translation>សេចក្ដី​លម្អិត</translation>
</message>
<message>
- <source>Display the global settings dialog</source>
- <translation>បង្ហាញ​ប្រអប់​កំណត់​សកល</translation>
+ <source>&amp;Preferences...</source>
+ <comment>global settings</comment>
+ <translation>ចំណូល​ចិត្ត...</translation>
</message>
<message>
- <source>E&amp;xit</source>
- <translation>ចេញ</translation>
+ <source>Display the global settings dialog</source>
+ <translation>បង្ហាញ​ប្រអប់​កំណត់​សកល</translation>
</message>
<message>
- <source>Close application</source>
- <translation>បិទ​កម្មវិធី</translation>
+ <source>E&amp;xit</source>
+ <translation>ចេញ</translation>
</message>
<message>
- <source>&amp;New...</source>
- <translation>ថ្មី...</translation>
+ <source>Close application</source>
+ <translation>បិទ​កម្មវិធី</translation>
</message>
<message>
- <source>Create a new virtual machine</source>
- <translation>បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី</translation>
+ <source>&amp;New...</source>
+ <translation>ថ្មី...</translation>
</message>
<message>
- <source>&amp;Settings...</source>
- <translation>ការ​កំណត់...</translation>
+ <source>Create a new virtual machine</source>
+ <translation>បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី</translation>
</message>
<message>
- <source>Configure the selected virtual machine</source>
- <translation>កំណត់​រចនាសម្ព័ន្ធ​ម៉ាស៊ីន​និម្មិត​ដែល​បានជ្រើស</translation>
+ <source>&amp;Settings...</source>
+ <translation>ការ​កំណត់...</translation>
</message>
<message>
- <source>&amp;Delete</source>
- <translation>លុប</translation>
+ <source>Configure the selected virtual machine</source>
+ <translation>កំណត់​រចនាសម្ព័ន្ធ​ម៉ាស៊ីន​និម្មិត​ដែល​បានជ្រើស</translation>
</message>
<message>
- <source>Delete the selected virtual machine</source>
- <translation>លុប​ម៉ាស៊ីននិម្មិត​ដែលបាន​ជ្រើស</translation>
+ <source>&amp;Delete</source>
+ <translation>លុប</translation>
</message>
<message>
- <source>D&amp;iscard</source>
- <translation>បោះបង់</translation>
+ <source>Delete the selected virtual machine</source>
+ <translation>លុប​ម៉ាស៊ីននិម្មិត​ដែលបាន​ជ្រើស</translation>
</message>
<message>
- <source>Discard the saved state of the selected virtual machine</source>
- <translation>បោះបង់​ស្ថានភាព​របស់​ម៉ាស៊ីន​និម្មិត​ដែល​ជ្រើស​ដែលបាន​រក្សាទុក</translation>
+ <source>D&amp;iscard</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>&amp;Refresh</source>
- <translation type="obsolete">ធ្វើ​ឲ្យ​ស្រស់</translation>
+ <source>Discard the saved state of the selected virtual machine</source>
+ <translation>បោះបង់​ស្ថានភាព​របស់​ម៉ាស៊ីន​និម្មិត​ដែល​ជ្រើស​ដែលបាន​រក្សាទុក</translation>
</message>
<message>
- <source>Refresh the accessibility state of the selected virtual machine</source>
- <translation>ធ្វើ​ឲ្យ​ស្ថានភាព​ចូលដំណើរការ​ស្រស់​របស់​ម៉ាស៊ីន​និម្មិត​ដែលបានជ្រើស</translation>
+ <source>&amp;Refresh</source>
+ <translation>ធ្វើ​ឲ្យ​ស្រស់</translation>
</message>
<message>
- <source>&amp;File</source>
- <translation>ឯកសារ</translation>
+ <source>Refresh the accessibility state of the selected virtual machine</source>
+ <translation>ធ្វើ​ឲ្យ​ស្ថានភាព​ចូលដំណើរការ​ស្រស់​របស់​ម៉ាស៊ីន​និម្មិត​ដែលបានជ្រើស</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>ជំនួយ</translation>
+ <source>&amp;File</source>
+ <translation>ឯកសារ</translation>
</message>
<message>
- <source>&amp;Snapshots</source>
- <translation>រូបថត</translation>
+ <source>&amp;Help</source>
+ <translation>ជំនួយ</translation>
</message>
<message>
- <source>D&amp;escription</source>
- <translation>សេចក្ដី​ពិពណ៌នា</translation>
+ <source>&amp;Snapshots</source>
+ <translation>រូបថត</translation>
</message>
<message>
- <source>D&amp;escription *</source>
- <translation>សេចក្ដី​ពិពណ៌នា *</translation>
+ <source>D&amp;escription</source>
+ <translation>សេចក្ដី​ពិពណ៌នា</translation>
</message>
<message>
- <source>S&amp;how</source>
- <translation>បង្ហាញ</translation>
+ <source>D&amp;escription *</source>
+ <translation>សេចក្ដី​ពិពណ៌នា *</translation>
</message>
<message>
- <source>Switch to the window of the selected virtual machine</source>
- <translation>ប្ដូរ​ទៅបង្អួច​របស់​ម៉ាស៊ីននិម្មិត​ដែលបានជ្រើស</translation>
+ <source>S&amp;how</source>
+ <translation>បង្ហាញ</translation>
</message>
<message>
- <source>S&amp;tart</source>
- <translation>ចាប់ផ្ដើម</translation>
+ <source>Switch to the window of the selected virtual machine</source>
+ <translation>ប្ដូរ​ទៅបង្អួច​របស់​ម៉ាស៊ីននិម្មិត​ដែលបានជ្រើស</translation>
</message>
<message>
- <source>Start the selected virtual machine</source>
- <translation>ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិត​ដែល​បានជ្រើស</translation>
+ <source>S&amp;tart</source>
+ <translation>ចាប់ផ្ដើម</translation>
</message>
<message>
- <source>&amp;Machine</source>
- <translation>ម៉ាស៊ីន</translation>
+ <source>Start the selected virtual machine</source>
+ <translation>ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិត​ដែល​បានជ្រើស</translation>
</message>
<message>
- <source>Show &amp;Log...</source>
- <translation>បង្ហាញ​កំណត់​ហេតុ...</translation>
+ <source>&amp;Machine</source>
+ <translation>ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Show the log files of the selected virtual machine</source>
- <translation>បង្ហាញ​​ឯកសារ​កំណត់ហេតុ​របស់​ម៉ាស៊ីន​និម្មិត​ដែល​បានជ្រើស</translation>
+ <source>Show &amp;Log...</source>
+ <translation>បង្ហាញ​កំណត់​ហេតុ...</translation>
</message>
<message>
- <source>R&amp;esume</source>
- <translation>បន្ត</translation>
+ <source>Show the log files of the selected virtual machine</source>
+ <translation>បង្ហាញ​​ឯកសារ​កំណត់ហេតុ​របស់​ម៉ាស៊ីន​និម្មិត​ដែល​បានជ្រើស</translation>
</message>
<message>
- <source>Resume the execution of the virtual machine</source>
- <translation>បន្ត​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​និម្មិត</translation>
+ <source>Sun xVM VirtualBox</source>
+ <translation>Sun xVM VirtualBox</translation>
</message>
<message>
- <source>&amp;Pause</source>
- <translation>ផ្អាក</translation>
+ <source>R&amp;esume</source>
+ <translation>បន្ត</translation>
</message>
<message>
- <source>Suspend the execution of the virtual machine</source>
- <translation>ផ្អាក​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីននិម្មិត</translation>
+ <source>Resume the execution of the virtual machine</source>
+ <translation>បន្ត​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​និម្មិត</translation>
</message>
<message>
- <source>&lt;h3&gt;Welcome to VirtualBox!&lt;/h3&gt;&lt;p&gt;The left part of this window is intended to display a list of all virtual machines on your computer. The list is empty now because you haven&apos;t created any virtual machines yet.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;In order to create a new virtual machine, press the &lt;b&gt;New&lt;/b&gt; button in the main tool bar located at the top of the window.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;%1&lt;/b&gt; key to get instant help, or visit &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; for the latest information and news.&lt;/p&gt;</source>
- <translation>&lt;h3&gt;សូម​ស្វាគមន៍​មក​កាន់​ VirtualBox!&lt;/h3&gt;&lt;p&gt;ផ្នែក​ដែល​នៅ​សល់​របស់​បង្អួច​នេះ​​មានបំណង​បង្ហាញ​បញ្ជី​ម៉ាស៊ីន​និម្មិត​នៅ​លើ​កុំព្យូទ័រ​របស់​អ្នក ។ បញ្ជី​ទទេ​ឥឡូវ​ ពីព្រោះ​អ្នក​មិន​បានបង្កើត​ម៉ាស៊ីន​និម្មិត​ណាមួយ​នៅ​ឡើយ​ទេ ។&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;ដើម្បី​បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី ចុច​ប៊ុតុង &lt;b&gt;ថ្មី&lt;/b&gt; នៅ​ក្នុង​របារ​ឧបករណ៍​មេ​ ដែល​មាន​ទីតាំង​នៅ​ផ្នែក​ខាង​លើ​របស់​បង្អួច ។&lt;/p&gt;&lt;p&gt;អ្នក​អាច​ចុច​គ្រាប់ចុច &lt;b&gt;%1&lt;/b&gt; ដើម្បី​រកជំនួយ ឬ​ទស្សនាតំប់​បណ្ដាញ &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; សម្រាប់​រក​ព័ត៌មាន​ដែល​ថ្មីៗ​បំផុត ។&lt;/p&gt;</translation>
+ <source>&amp;Pause</source>
+ <translation>ផ្អាក</translation>
</message>
<message>
- <source>&amp;Virtual Media Manager...</source>
- <translation>កម្មវិធី​គ្រប់គ្រង​ម៉ាស៊ីន​និម្មិត...</translation>
+ <source>Suspend the execution of the virtual machine</source>
+ <translation>ផ្អាក​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីននិម្មិត</translation>
</message>
<message>
- <source>Display the Virtual Media Manager dialog</source>
- <translation>បង្ហាញ​ប្រអប់​កម្មវិធី​គ្រប់គ្រង​​​មេឌៀ​និម្មិត</translation>
+ <source>&lt;h3>Welcome to VirtualBox!&lt;/h3>&lt;p>The left part of this window is intended to display a list of all virtual machines on your computer. The list is empty now because you haven't created any virtual machines yet.&lt;img src=:/welcome.png align=right/>&lt;/p>&lt;p>In order to create a new virtual machine, press the &lt;b>New&lt;/b> button in the main tool bar located at the top of the window.&lt;/p>&lt;p>You can press the &lt;b>F1&lt;/b> key to get instant help, or visit &lt;a href=http://www.virtualbox.org>www.virtualbox.org&lt;/a> for the latest information and news.&lt;/p></source>
+ <translation>&lt;h3>សូម​ស្វាគមន៍​មក​កាន់​ VirtualBox!&lt;/h3>&lt;p>ផ្នែក​ដែល​នៅ​សល់​របស់​បង្អួច​នេះ​​មានបំណង​បង្ហាញ​បញ្ជី​ម៉ាស៊ីន​និម្មិត​នៅ​លើ​កុំព្យូទ័រ​របស់​អ្នក ។ បញ្ជី​ទទេ​ឥឡូវ​ ពីព្រោះ​អ្នក​មិន​បានបង្កើត​ម៉ាស៊ីន​និម្មិត​ណាមួយ​នៅ​ឡើយ​ទេ ។&lt;img src=:/welcome.png align=right/>&lt;/p>&lt;p>ដើម្បី​បង្កើត​ម៉ាស៊ីន​និម្មិត​ថ្មី ចុច​ប៊ុតុង &lt;b>ថ្មី&lt;/b> នៅ​ក្នុង​របារ​ឧបករណ៍​មេ​ ដែល​មាន​ទីតាំង​នៅ​ផ្នែក​ខាង​លើ​របស់​បង្អួច ។&lt;/p>&lt;p>អ្នក​អាច​ចុច​គ្រាប់ចុច &lt;b>F1&lt;/b> ដើម្បី​រកជំនួយ ឬ​ទស្សនាតំប់​បណ្ដាញ &lt;a href=http://www.virtualbox.org>www.virtualbox.org&lt;/a> សម្រាប់​រក​ព័ត៌មាន​ដែល​ថ្មីៗ​បំផុត ។&lt;/p></translation>
</message>
<message>
- <source>Log</source>
- <comment>icon text</comment>
- <translation>កំណត់​ហេតុ</translation>
+ <source>&amp;Virtual Media Manager...</source>
+ <translation>កម្មវិធី​គ្រប់គ្រង​ម៉ាស៊ីន​និម្មិត...</translation>
</message>
<message>
- <source>Sun VirtualBox</source>
- <translation type="unfinished"></translation>
+ <source>Display the Virtual Media Manager dialog</source>
+ <translation>បង្ហាញ​ប្រអប់​កម្មវិធី​គ្រប់គ្រង​​​មេឌៀ​និម្មិត</translation>
</message>
<message>
- <source>&amp;Import Appliance...</source>
- <translation type="unfinished"></translation>
+ <source>Log</source>
+ <comment>icon text</comment>
+ <translation>កំណត់​ហេតុ</translation>
</message>
- <message>
- <source>Import an appliance into VirtualBox</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Export Appliance...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Export an appliance out of VM&apos;s from VirtualBox</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Re&amp;fresh</source>
- <translation type="unfinished">ធ្វើ​ឲ្យ​ស្រស់</translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxSettingsDialog</name>
<message>
- <source>&lt;i&gt;Select a settings category from the list on the left side and move the mouse over a settings item to get more information&lt;/i&gt;.</source>
- <translation>&lt;i&gt;ជ្រើស​ប្រភេទ​ការ​កំណត់​ពី​បញ្ជីនៅ​ខាង​ផ្នែកខាង​ឆ្វេង​ ហើយ​ផ្លាស់ទី​កណ្ដុរ​លើ​ធាតុ​កំណត់​ដើម្បី​ទទួល​យក​ព័ត៌មានបន្ថែម&lt;/i&gt; ។</translation>
- </message>
- <message>
- <source>Invalid settings detected</source>
- <translation>បានរក​ឃើញ​ការ​កំណត់​ដែល​មិន​ត្រឹមត្រូវ</translation>
+ <source>&lt;i>Select a settings category from the list on the left side and move the mouse over a settings item to get more information&lt;/i>.</source>
+ <translation>&lt;i>ជ្រើស​ប្រភេទ​ការ​កំណត់​ពី​បញ្ជីនៅ​ខាង​ផ្នែកខាង​ឆ្វេង​ ហើយ​ផ្លាស់ទី​កណ្ដុរ​លើ​ធាតុ​កំណត់​ដើម្បី​ទទួល​យក​ព័ត៌មានបន្ថែម&lt;/i> ។</translation>
</message>
<message>
- <source>Settings</source>
- <translation>កំណត់</translation>
+ <source>Invalid settings detected</source>
+ <translation>បានរក​ឃើញ​ការ​កំណត់​ដែល​មិន​ត្រឹមត្រូវ</translation>
</message>
<message>
- <source>Non-optimal settings detected</source>
- <translation>បា​ន​រកឃើញ​ការ​កំណត់​ដែល​មិន​ប្រសើរ</translation>
+ <source>Settings</source>
+ <translation>កំណត់</translation>
</message>
<message>
- <source>On the &lt;b&gt;%1&lt;/b&gt; page, %2</source>
- <translation type="unfinished">នៅ​លើ​ទំព័រ &lt;b&gt;%1&lt;/b&gt; %2</translation>
+ <source>Non-optimal settings detected</source>
+ <translation>បា​ន​រកឃើញ​ការ​កំណត់​ដែល​មិន​ប្រសើរ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxSnapshotDetailsDlg</name>
<message>
- <source>VBoxSnapshotDetailsDlg</source>
- <translation>VBoxSnapshotDetailsDlg</translation>
+ <source>VBoxSnapshotDetailsDlg</source>
+ <translation>VBoxSnapshotDetailsDlg</translation>
</message>
<message>
- <source>&amp;Name</source>
- <translation>ឈ្មោះ</translation>
+ <source>&amp;Name</source>
+ <translation>ឈ្មោះ</translation>
</message>
<message>
- <source>&amp;Description</source>
- <translation>សេចក្ដី​ពិពណ៌នា</translation>
+ <source>&amp;Description</source>
+ <translation>សេចក្ដី​ពិពណ៌នា</translation>
</message>
<message>
- <source>&amp;Machine Details</source>
- <translation>សេចក្ដី​លម្អិត​របស់​ម៉ាស៊ីន</translation>
+ <source>&amp;Machine Details</source>
+ <translation>សេចក្ដី​លម្អិត​របស់​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Details of %1 (%2)</source>
- <translation>សេចក្ដី​លម្អិត​របស់ %1 (%2)</translation>
+ <source>Details of %1 (%2)</source>
+ <translation>សេចក្ដី​លម្អិត​របស់ %1 (%2)</translation>
</message>
<message>
- <source>Snapshot Details</source>
- <translation>សេចក្ដីលម្អិត​របស់​​រូបថត</translation>
+ <source>Snapshot Details</source>
+ <translation>សេចក្ដីលម្អិត​របស់​​រូបថត</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxSnapshotsWgt</name>
<message>
- <source>[snapshot]</source>
- <translation>[រូបថត]</translation>
+ <source>[snapshot]</source>
+ <translation>[រូបថត]</translation>
</message>
<message>
- <source>VBoxSnapshotsWgt</source>
- <translation>VBoxSnapshotsWgt</translation>
+ <source>VBoxSnapshotsWgt</source>
+ <translation>VBoxSnapshotsWgt</translation>
</message>
<message>
- <source>Current State (changed)</source>
- <comment>Current State (Modified)</comment>
- <translation>ស្ថានភាព​បច្ចុប្បន្ន (បាន​ផ្លាស់ប្ដូរ)</translation>
+ <source>Current State (changed)</source>
+ <comment>Current State (Modified)</comment>
+ <translation>ស្ថានភាព​បច្ចុប្បន្ន (បាន​ផ្លាស់ប្ដូរ)</translation>
</message>
<message>
- <source>Current State</source>
- <comment>Current State (Unmodified)</comment>
- <translation>ស្ថានភាព​បច្ចុប្បន្ន</translation>
+ <source>Current State</source>
+ <comment>Current State (Unmodified)</comment>
+ <translation>ស្ថានភាព​បច្ចុប្បន្ន</translation>
</message>
<message>
- <source>The current state differs from the state stored in the current snapshot</source>
- <translation>ស្ថានភាព​បច្ចុប្បន្ន​ខុសពី​ស្ថានភាព​ដែល​បាន​ទុក​នៅក្នុង​រូបថត​បច្ចុប្បន្ន</translation>
+ <source>The current state differs from the state stored in the current snapshot</source>
+ <translation>ស្ថានភាព​បច្ចុប្បន្ន​ខុសពី​ស្ថានភាព​ដែល​បាន​ទុក​នៅក្នុង​រូបថត​បច្ចុប្បន្ន</translation>
</message>
<message>
- <source>The current state is identical to the state stored in the current snapshot</source>
- <translation>ស្ថានភាព​បច្ចុប្បន្ន​គឺ​ដូច​គ្នា​នឹង​ស្ថានភាព​ដែល​បាន​ទុក​នៅ​ក្នុង​រូបថត​បច្ចុប្បន្ន</translation>
+ <source>The current state is identical to the state stored in the current snapshot</source>
+ <translation>ស្ថានភាព​បច្ចុប្បន្ន​គឺ​ដូច​គ្នា​នឹង​ស្ថានភាព​ដែល​បាន​ទុក​នៅ​ក្នុង​រូបថត​បច្ចុប្បន្ន</translation>
</message>
<message>
- <source> (current, </source>
- <comment>Snapshot details</comment>
- <translation> (បច្ចុប្បន្ន </translation>
+ <source> (current, </source>
+ <comment>Snapshot details</comment>
+ <translation> (បច្ចុប្បន្ន </translation>
</message>
<message>
- <source>online)</source>
- <comment>Snapshot details</comment>
- <translation>លើ​បណ្ដាញ)</translation>
+ <source>online)</source>
+ <comment>Snapshot details</comment>
+ <translation>លើ​បណ្ដាញ)</translation>
</message>
<message>
- <source>offline)</source>
- <comment>Snapshot details</comment>
- <translation>ក្រៅបណ្ដាញ)</translation>
+ <source>offline)</source>
+ <comment>Snapshot details</comment>
+ <translation>ក្រៅបណ្ដាញ)</translation>
</message>
<message>
- <source>Taken at %1</source>
- <comment>Snapshot (time)</comment>
- <translation>បាន​ថត​នៅ %1</translation>
+ <source>Taken at %1</source>
+ <comment>Snapshot (time)</comment>
+ <translation>បាន​ថត​នៅ %1</translation>
</message>
<message>
- <source>Taken on %1</source>
- <comment>Snapshot (date + time)</comment>
- <translation>បានថត​នៅ​ថ្ងៃទី %1</translation>
+ <source>Taken on %1</source>
+ <comment>Snapshot (date + time)</comment>
+ <translation>បានថត​នៅ​ថ្ងៃទី %1</translation>
</message>
<message>
- <source>%1 since %2</source>
- <comment>Current State (time or date + time)</comment>
- <translation>%1 តាំង​ពី %2</translation>
+ <source>%1 since %2</source>
+ <comment>Current State (time or date + time)</comment>
+ <translation>%1 តាំង​ពី %2</translation>
</message>
<message>
- <source>Snapshot %1</source>
- <translation>រូបថត %1</translation>
+ <source>Snapshot %1</source>
+ <translation>រូបថត %1</translation>
</message>
<message>
- <source>&amp;Discard Snapshot</source>
- <translation>បោះបង់​រូបថត</translation>
+ <source>&amp;Discard Snapshot</source>
+ <translation>បោះបង់​រូបថត</translation>
</message>
<message>
- <source>Take &amp;Snapshot</source>
- <translation>យក​រូបថត</translation>
+ <source>Take &amp;Snapshot</source>
+ <translation>យក​រូបថត</translation>
</message>
<message>
- <source>&amp;Revert to Current Snapshot</source>
- <translation>ត្រឡប់​ទៅ​រូបថត​បច្ចុប្បន្ន</translation>
+ <source>&amp;Revert to Current Snapshot</source>
+ <translation>ត្រឡប់​ទៅ​រូបថត​បច្ចុប្បន្ន</translation>
</message>
<message>
- <source>D&amp;iscard Current Snapshot and State</source>
- <translation>បោះបង់​ស្ថានភាព និង​រូបថត​បច្ចុប្បន្ន</translation>
+ <source>D&amp;iscard Current Snapshot and State</source>
+ <translation>បោះបង់​ស្ថានភាព និង​រូបថត​បច្ចុប្បន្ន</translation>
</message>
<message>
- <source>S&amp;how Details</source>
- <translation>បង្ហាញ​សេចក្ដី​លម្អិត</translation>
+ <source>S&amp;how Details</source>
+ <translation>បង្ហាញ​សេចក្ដី​លម្អិត</translation>
</message>
<message>
- <source>Discard the selected snapshot of the virtual machine</source>
+ <source>Discard the selected snapshot of the virtual machine</source>
+ <translation>បោះបង់​រូបថត​ដែល​បានជ្រើស​របស់ម៉ាស៊ីន​និម្មិត</translation>
</message>
<message>
- <source>Take a snapshot of the current virtual machine state</source>
- <translation>យក​រូបថត​របស់​ស្ថានភាព​ម៉ាស៊ីន​និម្មិត​បច្ចុប្បន្ន</translation>
+ <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>ស្ដារ​ស្ថានភាព​​ម៉ាស៊ីន​និម្មិត​ពី​ស្ថានភាព​ដែលបាន​ទុក​នៅ​ក្នុង​រូបថត​បច្ចុប្បន្ន</translation>
+ <source>Restore the virtual machine state from the state stored in the current snapshot</source>
+ <translation>ស្ដារ​ស្ថានភាព​​ម៉ាស៊ីន​និម្មិត​ពី​ស្ថានភាព​ដែលបាន​ទុក​នៅ​ក្នុង​រូបថត​បច្ចុប្បន្ន</translation>
</message>
<message>
- <source>Discard the current snapshot and revert the machine to the state it had before the snapshot was taken</source>
- <translation>បោះបង់​រូបថត​បច្ចុប្បន្ន​ និង​ត្រឡប់​ម៉ាស៊ីន​ទៅ​ស្ថានភាព​ដែល​វា​មុន​នឹង​ថត​រូប</translation>
+ <source>Discard the current snapshot and revert the machine to the state it had before the snapshot was taken</source>
+ <translation>បោះបង់​រូបថត​បច្ចុប្បន្ន​ និង​ត្រឡប់​ម៉ាស៊ីន​ទៅ​ស្ថានភាព​ដែល​វា​មុន​នឹង​ថត​រូប</translation>
</message>
<message>
- <source>Show details of the selected snapshot</source>
- <translation>បង្ហាញ​សេចក្ដី​លម្អិត​របស់​រូបថត​ដែល​បានជ្រើស</translation>
+ <source>Show details of the selected snapshot</source>
+ <translation>បង្ហាញ​សេចក្ដី​លម្អិត​របស់​រូបថត​ដែល​បានជ្រើស</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxSwitchMenu</name>
<message>
- <source>Disable</source>
- <translation>បិទ</translation>
+ <source>Disable</source>
+ <translation>បិទ</translation>
</message>
<message>
- <source>Enable</source>
- <translation>បើក</translation>
+ <source>Enable</source>
+ <translation>បើក</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxTakeSnapshotDlg</name>
<message>
- <source>Take Snapshot of Virtual Machine</source>
- <translation>យក​រូបថត​របស់ម៉ាស៊ីន​និម្មិត</translation>
- </message>
- <message>
- <source>Snapshot &amp;Name</source>
- <translation>ឈ្មោះ​រូបថត</translation>
- </message>
- <message>
- <source>Snapshot &amp;Description</source>
- <translation>សេចក្ដី​ពិពណ៌នា​រូបថត</translation>
- </message>
-</context>
-<context>
- <name>VBoxTextEditor</name>
- <message>
- <source>Edit text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Replace...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Replaces the current text with the content of a given file.</source>
- <translation type="unfinished"></translation>
+ <source>Take Snapshot of Virtual Machine</source>
+ <translation>យក​រូបថត​របស់ម៉ាស៊ីន​និម្មិត</translation>
</message>
<message>
- <source>Text (*.txt);;All (*.*)</source>
- <translation type="unfinished"></translation>
+ <source>Snapshot &amp;Name</source>
+ <translation>ឈ្មោះ​រូបថត</translation>
</message>
<message>
- <source>Select a file to open...</source>
- <translation type="unfinished"></translation>
+ <source>Snapshot &amp;Description</source>
+ <translation>សេចក្ដី​ពិពណ៌នា​រូបថត</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxTrayIcon</name>
<message>
- <source>Show Selector Window</source>
- <translation>បង្ហាញ​បង្អួច​កម្មវិធី​​ជ្រើស</translation>
+ <source>Show Selector Window</source>
+ <translation>បង្ហាញ​បង្អួច​កម្មវិធី​​ជ្រើស</translation>
</message>
<message>
- <source>Show the selector window assigned to this menu</source>
- <translation>បង្ហាញ​បង្អួច​កម្មវិធី​ជ្រើស​ដែលបានផ្ដល់​ទៅ​ម៉ឺនុយ​នេះ</translation>
+ <source>Show the selector window assigned to this menu</source>
+ <translation>បង្ហាញ​បង្អួច​កម្មវិធី​ជ្រើស​ដែលបានផ្ដល់​ទៅ​ម៉ឺនុយ​នេះ</translation>
</message>
<message>
- <source>Hide Tray Icon</source>
- <translation>លាក់​រូបតំណាង​ថាស​ប្រព័ន្ធ</translation>
+ <source>Hide Tray Icon</source>
+ <translation>លាក់​រូបតំណាង​ថាស​ប្រព័ន្ធ</translation>
</message>
<message>
- <source>Remove this icon from the system tray</source>
- <translation>យក​រូបតំណាង​នេះ​ចេញ​ពី​ថាស​ប្រព័ន្ធ</translation>
+ <source>Remove this icon from the system tray</source>
+ <translation>យក​រូបតំណាង​នេះ​ចេញ​ពី​ថាស​ប្រព័ន្ធ</translation>
</message>
<message>
- <source>&amp;Other Machines...</source>
- <comment>tray menu</comment>
- <translation>ម៉ាស៊ីន​ផ្សេងៗ...</translation>
+ <source>&amp;Other Machines...</source>
+ <comment>tray menu</comment>
+ <translation>ម៉ាស៊ីន​ផ្សេងៗ...</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxUSBMenu</name>
<message>
- <source>&lt;no available devices&gt;</source>
- <comment>USB devices</comment>
- <translation>&lt;មិនមាន​ឧបករណ៍​ទេ&gt;</translation>
+ <source>&lt;no available devices></source>
+ <comment>USB devices</comment>
+ <translation>&lt;មិនមាន​ឧបករណ៍​ទេ></translation>
</message>
<message>
- <source>No supported devices connected to the host PC</source>
- <comment>USB device tooltip</comment>
- <translation>គ្មាន​ឧបករណ៍​ដែលបានគាំទ្រ​ទេ​ បានភ្ជាប់​ទៅកាន់​ម៉ាស៊ីន​ទេ</translation>
+ <source>No supported devices connected to the host PC</source>
+ <comment>USB device tooltip</comment>
+ <translation>គ្មាន​ឧបករណ៍​ដែលបានគាំទ្រ​ទេ​ បានភ្ជាប់​ទៅកាន់​ម៉ាស៊ីន​ទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxUpdateDlg</name>
<message>
- <source>1 day</source>
- <translation>១ ថ្ងៃ</translation>
+ <source>1 day</source>
+ <translation>១ ថ្ងៃ</translation>
</message>
<message>
- <source>2 days</source>
- <translation>២ ថ្ងៃ</translation>
+ <source>2 days</source>
+ <translation>២ ថ្ងៃ</translation>
</message>
<message>
- <source>3 days</source>
- <translation>៣ ថ្ងៃ</translation>
+ <source>3 days</source>
+ <translation>៣ ថ្ងៃ</translation>
</message>
<message>
- <source>4 days</source>
- <translation>៤ ថ្ងៃ</translation>
+ <source>4 days</source>
+ <translation>៤ ថ្ងៃ</translation>
</message>
<message>
- <source>5 days</source>
- <translation>៥ ថ្ងៃ</translation>
+ <source>5 days</source>
+ <translation>៥ ថ្ងៃ</translation>
</message>
<message>
- <source>6 days</source>
- <translation>៦ ថ្ងៃ</translation>
+ <source>6 days</source>
+ <translation>៦ ថ្ងៃ</translation>
</message>
<message>
- <source>1 week</source>
- <translation>១ សប្ដាហ៍</translation>
+ <source>1 week</source>
+ <translation>១ សប្ដាហ៍</translation>
</message>
<message>
- <source>2 weeks</source>
- <translation>២ សប្ដាហ៍</translation>
+ <source>2 weeks</source>
+ <translation>២ សប្ដាហ៍</translation>
</message>
<message>
- <source>3 weeks</source>
- <translation>៣ សប្ដាហ៍</translation>
+ <source>3 weeks</source>
+ <translation>៣ សប្ដាហ៍</translation>
</message>
<message>
- <source>1 month</source>
- <translation>១ ខែ</translation>
+ <source>1 month</source>
+ <translation>១ ខែ</translation>
</message>
<message>
- <source>Never</source>
- <translation>កុំ</translation>
+ <source>Never</source>
+ <translation>កុំ</translation>
</message>
<message>
- <source>Chec&amp;k</source>
- <translation>ពិនិត្យមើល</translation>
+ <source>Chec&amp;k</source>
+ <translation>ពិនិត្យមើល</translation>
</message>
<message>
- <source>&amp;Close</source>
- <translation>បិទ</translation>
+ <source>&amp;Close</source>
+ <translation>បិទ</translation>
</message>
<message>
- <source>VirtualBox Update Wizard</source>
- <translation>អ្នកជំនួយការ​ធ្វើ​ឲ្យ​ទាន់សម័យ​របស់ VirtualBox</translation>
+ <source>VirtualBox Update Wizard</source>
+ <translation>អ្នកជំនួយការ​ធ្វើ​ឲ្យ​ទាន់សម័យ​របស់ VirtualBox</translation>
</message>
<message>
- <source>Check for Updates</source>
- <translation>ពិនិត្យ​មើល​ភាព​ទាន់សម័យ</translation>
+ <source>Check for Updates</source>
+ <translation>ពិនិត្យ​មើល​ភាព​ទាន់សម័យ</translation>
</message>
<message>
- <source>Cancel</source>
- <translation>បោះបង់</translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>Summary</source>
- <translation>សេចក្ដី​សង្ខេប</translation>
+ <source>Summary</source>
+ <translation>សេចក្ដី​សង្ខេប</translation>
</message>
<message>
- <source>&lt;p&gt;A new version of VirtualBox has been released! Version &lt;b&gt;%1&lt;/b&gt; is available at &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;virtualbox.org&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;You can download this version from this direct link:&lt;/p&gt;&lt;p&gt;&lt;a href=%2&gt;%3&lt;/a&gt;&lt;/p&gt;</source>
- <translation>&lt;p&gt;កំណែ​ថ្មី​របស់ VirtualBox ត្រូ​វបាន​ចេញ​ផ្សាយ​ហើយ ! គឺ​កំណែ &lt;b&gt;%1&lt;/b&gt; ដែល​អាច​រក​បាននៅ &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;virtualbox.org&lt;/a&gt;។&lt;/p&gt;&lt;p&gt;អ្នកអាច​ទាញ​យក​កំណែ​នេះ​​ដោយ​ផ្ទាល់ពី​តំណ ៖&lt;/p&gt;&lt;p&gt;&lt;a href=%2&gt;%3&lt;/a&gt;&lt;/p&gt;</translation>
+ <source>&lt;p>A new version of VirtualBox has been released! Version &lt;b>%1&lt;/b> is available at &lt;a href=&quot;http://www.virtualbox.org/&quot;>virtualbox.org&lt;/a>.&lt;/p>&lt;p>You can download this version from this direct link:&lt;/p>&lt;p>&lt;a href=%2>%3&lt;/a>&lt;/p></source>
+ <translation>&lt;p>កំណែ​ថ្មី​របស់ VirtualBox ត្រូ​វបាន​ចេញ​ផ្សាយ​ហើយ ! គឺ​កំណែ &lt;b>%1&lt;/b> ដែល​អាច​រក​បាននៅ &lt;a href=&quot;http://www.virtualbox.org/&quot;>virtualbox.org&lt;/a>។&lt;/p>&lt;p>អ្នកអាច​ទាញ​យក​កំណែ​នេះ​​ដោយ​ផ្ទាល់ពី​តំណ ៖&lt;/p>&lt;p>&lt;a href=%2>%3&lt;/a>&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Unable to obtain the new version information due to the following network error:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</source>
- <translation>&lt;p&gt;មិនអាច​យក​ព័ត៌មានកំណែ​ថ្មី​បានទេ ដោយសារ​តែ​កំហុស​បណ្ដាញ​ដូច​ខាងក្រោម ៖&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</translation>
+ <source>&lt;p>Unable to obtain the new version information due to the following network error:&lt;/p>&lt;p>&lt;b>%1&lt;/b>&lt;/p></source>
+ <translation>&lt;p>មិនអាច​យក​ព័ត៌មានកំណែ​ថ្មី​បានទេ ដោយសារ​តែ​កំហុស​បណ្ដាញ​ដូច​ខាងក្រោម ៖&lt;/p>&lt;p>&lt;b>%1&lt;/b>&lt;/p></translation>
</message>
<message>
- <source>You have already installed the latest VirtualBox version. Please repeat the version check later.</source>
- <translation>អ្នក​បាន​ដំឡើង​កំណែ​របស់ VirtualBox ចុងក្រោយ​រួច​ហើយ ។ សូម​ធ្វើ​ការ​ពិនិត្យ​ពេលក្រោយ​ម្ដង​ទៀត ។</translation>
+ <source>You have already installed the latest VirtualBox version. Please repeat the version check later.</source>
+ <translation>អ្នក​បាន​ដំឡើង​កំណែ​របស់ VirtualBox ចុងក្រោយ​រួច​ហើយ ។ សូម​ធ្វើ​ការ​ពិនិត្យ​ពេលក្រោយ​ម្ដង​ទៀត ។</translation>
</message>
<message>
- <source>&lt;p&gt;This wizard will connect to the VirtualBox web-site and check if a newer version of VirtualBox is available.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Check&lt;/b&gt; button to check for a new version now or the &lt;b&gt;Cancel&lt;/b&gt; button if you do not want to perform this check.&lt;/p&gt;&lt;p&gt;You can run this wizard at any time by choosing &lt;b&gt;Check for Updates...&lt;/b&gt; from the &lt;b&gt;Help&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation>&lt;p&gt;អ្នក​ជំនួយ​ការ​នេះ​នឹង​តភ្ជាប់​ទៅ​កាន់​តំបន់​បណ្ដាញ​របស់ VirtualBox ហើយ​ពិនិត្យ​មើល​ប្រសិនបើ​មានកំណែ​ថ្មី​របស់​ VirtualBox ។&lt;/p&gt;&lt;p&gt;ប្រើ​ប៊ូតុង &lt;b&gt;ពិនិត្យ​មើល&lt;/b&gt; ដើម្បី​ពិនិត្យ​មើល​កំណែ​ថ្មី​ឥឡូវ ឬ​ប៊ូតុង &lt;b&gt;បោះបង់&lt;/b&gt; ប្រសិនបើ​អ្នក​មិន​ចង់​អនុវត្ត​ការ​ត្រួតពិនិត្យ​នេះ​ទេ ។&lt;/p&gt;&lt;p&gt;អ្នក​អាច​រត់​អ្នក​ជំនួយការ​នេះ​នៅពេល​ណាមួយ ដោយ​​ជ្រើស &lt;b&gt;ពិនិត្យ​រកមើល​ភាព​ទាន់សម័យ...&lt;/b&gt; ពី​ម៉ឺនុយ &lt;b&gt;ជំនួយ&lt;/b&gt; ។&lt;/p&gt;</translation>
+ <source>&lt;p>This wizard will connect to the VirtualBox web-site and check if a newer version of VirtualBox is available.&lt;/p>&lt;p>Use the &lt;b>Check&lt;/b> button to check for a new version now or the &lt;b>Cancel&lt;/b> button if you do not want to perform this check.&lt;/p>&lt;p>You can run this wizard at any time by choosing &lt;b>Check for Updates...&lt;/b> from the &lt;b>Help&lt;/b> menu.&lt;/p></source>
+ <translation>&lt;p>អ្នក​ជំនួយ​ការ​នេះ​នឹង​តភ្ជាប់​ទៅ​កាន់​តំបន់​បណ្ដាញ​របស់ VirtualBox ហើយ​ពិនិត្យ​មើល​ប្រសិនបើ​មានកំណែ​ថ្មី​របស់​ VirtualBox ។&lt;/p>&lt;p>ប្រើ​ប៊ូតុង &lt;b>ពិនិត្យ​មើល&lt;/b> ដើម្បី​ពិនិត្យ​មើល​កំណែ​ថ្មី​ឥឡូវ ឬ​ប៊ូតុង &lt;b>បោះបង់&lt;/b> ប្រសិនបើ​អ្នក​មិន​ចង់​អនុវត្ត​ការ​ត្រួតពិនិត្យ​នេះ​ទេ ។&lt;/p>&lt;p>អ្នក​អាច​រត់​អ្នក​ជំនួយការ​នេះ​នៅពេល​ណាមួយ ដោយ​​ជ្រើស &lt;b>ពិនិត្យ​រកមើល​ភាព​ទាន់សម័យ...&lt;/b> ពី​ម៉ឺនុយ &lt;b>ជំនួយ&lt;/b> ។&lt;/p></translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMDescriptionPage</name>
<message>
- <source>No description. Press the Edit button below to add it.</source>
- <translation>គ្មាន​សេចក្ដី​ពិពណ៌នា​ទេ ។ ចុច​ប៊ុតុង កែសម្រួល​ខា​ងក្រោម​ដើម្បី​បន្ថែម​វា ។</translation>
+ <source>No description. Press the Edit button below to add it.</source>
+ <translation>គ្មាន​សេចក្ដី​ពិពណ៌នា​ទេ ។ ចុច​ប៊ុតុង កែសម្រួល​ខា​ងក្រោម​ដើម្បី​បន្ថែម​វា ។</translation>
</message>
<message>
- <source>Edit</source>
- <translation>កែសម្រួល</translation>
+ <source>Edit</source>
+ <translation>កែសម្រួល</translation>
</message>
<message>
- <source>Edit (Ctrl+E)</source>
- <translation>កែសម្រួល (បញ្ជា(Ctrl)+E)</translation>
+ <source>Edit (Ctrl+E)</source>
+ <translation>កែសម្រួល (បញ្ជា(Ctrl)+E)</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMDetailsView</name>
<message>
- <source>The selected virtual machine is &lt;i&gt;inaccessible&lt;/i&gt;. Please inspect the error message shown below and press the &lt;b&gt;Refresh&lt;/b&gt; button if you want to repeat the accessibility check:</source>
- <translation>ម៉ាស៊ីន​និម្មិត​ដែល​បាន​ជ្រើស​ &lt;i&gt;មិន​អាច​ចូលដំណើរការ​បានទេ&lt;/i&gt; ។ សូម​ពិនិត្យ​មើល​សារ​កំហុស​ដែល​បានបង្ហាញ​ខាង​ក្រោម ហើយ​ចុច​ប៊ូតុង &lt;b&gt;ធ្វើ​ឲ្យ​ស្រស់&lt;/b&gt; ប្រសិន​បើ​អ្នក​ចង់​ធ្វើការ​ពិនិត្យ​ការ​ចូលដំណើរការ​​ឡើង​វិញ ៖</translation>
+ <source>The selected virtual machine is &lt;i>inaccessible&lt;/i>. Please inspect the error message shown below and press the &lt;b>Refresh&lt;/b> button if you want to repeat the accessibility check:</source>
+ <translation>ម៉ាស៊ីន​និម្មិត​ដែល​បាន​ជ្រើស​ &lt;i>មិន​អាច​ចូលដំណើរការ​បានទេ&lt;/i> ។ សូម​ពិនិត្យ​មើល​សារ​កំហុស​ដែល​បានបង្ហាញ​ខាង​ក្រោម ហើយ​ចុច​ប៊ូតុង &lt;b>ធ្វើ​ឲ្យ​ស្រស់&lt;/b> ប្រសិន​បើ​អ្នក​ចង់​ធ្វើការ​ពិនិត្យ​ការ​ចូលដំណើរការ​​ឡើង​វិញ ៖</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMFirstRunWzd</name>
<message>
- <source>First Run Wizard</source>
- <translation>អ្នក​ជំនួយកា​ររត់​ដំបូង</translation>
+ <source>First Run Wizard</source>
+ <translation>អ្នក​ជំនួយកា​ររត់​ដំបូង</translation>
</message>
<message>
- <source>&lt;p&gt;You have started a newly created virtual machine for the first time. This wizard will help you to perform the steps necessary for installing an operating system of your choice onto this virtual machine.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go to the next page of the wizard and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page. You can also press &lt;b&gt;Cancel&lt;/b&gt; if you want to cancel execution of this wizard.&lt;/p&gt;</source>
- <translation>&lt;p&gt;អ្នក​បាន​ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិត​ដែលបាន​បង្កើត​ថ្មីៗ​ពេល​ដំបូង​បាន​ ។ អ្នក​ជំនួយការ​នេះ​នឹង​ជួយ​អ្នក​ឲ្យ​អនុវត្ត​ជំហាន​ដែល​ចាំបាច់​សម្រាប់ដំឡើង​​ប្រព័ន្ធ​ប្រតិបត្តិការ​នៃ​ជម្រើស​របស់អ្នក​ក្នុង​​ម៉ាស៊ីន​និម្មិត​នេះ ។&lt;/p&gt;&lt;p&gt;ប្រើ​ប៊ូតុង &lt;b&gt;បន្ទាប់&lt;/b&gt; ដើម្បី​ទៅ​កាន់​ទំព័រ​បន្ទាប់​របស់​អ្នក​ជំនួយការ ហើយ​ប៊ូតុង​ &lt;b&gt;ថយក្រោយ&lt;/b&gt; ដើម្បីត្រឡប់​ទៅ​ទំព័រ​មុន ។ អ្នកក៏​អាច​ចុច &lt;b&gt;បោះបង់&lt;/b&gt; ប្រសិន​បើ​អ្នក​ចង់​បោះបង់​ប្រតិបត្តិការ​របស់​អ្នក​ជំនួយកា​រនេះ ។&lt;/p&gt;</translation>
+ <source>&lt;p>You have started a newly created virtual machine for the first time. This wizard will help you to perform the steps necessary for installing an operating system of your choice onto this virtual machine.&lt;/p>&lt;p>Use the &lt;b>Next&lt;/b> button to go to the next page of the wizard and the &lt;b>Back&lt;/b> button to return to the previous page. You can also press &lt;b>Cancel&lt;/b> if you want to cancel execution of this wizard.&lt;/p></source>
+ <translation>&lt;p>អ្នក​បាន​ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិត​ដែលបាន​បង្កើត​ថ្មីៗ​ពេល​ដំបូង​បាន​ ។ អ្នក​ជំនួយការ​នេះ​នឹង​ជួយ​អ្នក​ឲ្យ​អនុវត្ត​ជំហាន​ដែល​ចាំបាច់​សម្រាប់ដំឡើង​​ប្រព័ន្ធ​ប្រតិបត្តិការ​នៃ​ជម្រើស​របស់អ្នក​ក្នុង​​ម៉ាស៊ីន​និម្មិត​នេះ ។&lt;/p>&lt;p>ប្រើ​ប៊ូតុង &lt;b>បន្ទាប់&lt;/b> ដើម្បី​ទៅ​កាន់​ទំព័រ​បន្ទាប់​របស់​អ្នក​ជំនួយការ ហើយ​ប៊ូតុង​ &lt;b>ថយក្រោយ&lt;/b> ដើម្បីត្រឡប់​ទៅ​ទំព័រ​មុន ។ អ្នកក៏​អាច​ចុច &lt;b>បោះបង់&lt;/b> ប្រសិន​បើ​អ្នក​ចង់​បោះបង់​ប្រតិបត្តិការ​របស់​អ្នក​ជំនួយកា​រនេះ ។&lt;/p></translation>
</message>
<message>
- <source>Welcome to the First Run Wizard!</source>
- <translation>សូម​ស្វាគមន៍​មកកាន់​អ្នក​ជំនួយកា​រដំបូង !</translation>
+ <source>Welcome to the First Run Wizard!</source>
+ <translation>សូម​ស្វាគមន៍​មកកាន់​អ្នក​ជំនួយកា​រដំបូង !</translation>
</message>
<message>
- <source>&lt;p&gt;Select the type of the media you would like to use for installation purposes below.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ជ្រើស​ប្រភេទ​មេឌៀ​ដែល​អ្នក​ចង់​ប្រើ​សម្រាប់​ដំឡើងខាង​ក្រោម ។&lt;/p&gt;</translation>
+ <source>&lt;p>Select the type of the media you would like to use for installation purposes below.&lt;/p></source>
+ <translation>&lt;p>ជ្រើស​ប្រភេទ​មេឌៀ​ដែល​អ្នក​ចង់​ប្រើ​សម្រាប់​ដំឡើងខាង​ក្រោម ។&lt;/p></translation>
</message>
<message>
- <source>Media Type</source>
- <translation>ប្រភេទ​មេឌៀ</translation>
+ <source>Media Type</source>
+ <translation>ប្រភេទ​មេឌៀ</translation>
</message>
<message>
- <source>&amp;CD/DVD-ROM Device</source>
- <translation>ឧបករណ៍​ស៊ីឌី/ឌីវីឌី​រ៉ូម</translation>
+ <source>&amp;CD/DVD-ROM Device</source>
+ <translation>ឧបករណ៍​ស៊ីឌី/ឌីវីឌី​រ៉ូម</translation>
</message>
<message>
- <source>&amp;Floppy Device</source>
- <translation>ឧបករណ៍​ថាស​ទន់</translation>
+ <source>&amp;Floppy Device</source>
+ <translation>ឧបករណ៍​ថាស​ទន់</translation>
</message>
<message>
- <source>&lt;p&gt;Select the media which contains the setup program of the operating system you want to install. This media must be bootable, otherwise the setup program will not be able to start.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ជ្រើស​មេឌៀ​ដែល​មាន​កម្មវិធីរៀបចំ​របស់​ប្រព័ន្ធ​ប្រតិបត្តិការ​ដែល​អ្នក​ចង់​ដំឡើង ។ មេឌៀ​នេះ​ត្រូវ​តែ​អាច​ចាប់ផ្ដើម​បាន បើ​មិនដូច្នេះ​ទេ កម្មវិធី​រៀបចំ​នឹង​មិនអាច​ចាប់ផ្ដើម​បានទេ ។&lt;/p&gt;</translation>
+ <source>&lt;p>Select the media which contains the setup program of the operating system you want to install. This media must be bootable, otherwise the setup program will not be able to start.&lt;/p></source>
+ <translation>&lt;p>ជ្រើស​មេឌៀ​ដែល​មាន​កម្មវិធីរៀបចំ​របស់​ប្រព័ន្ធ​ប្រតិបត្តិការ​ដែល​អ្នក​ចង់​ដំឡើង ។ មេឌៀ​នេះ​ត្រូវ​តែ​អាច​ចាប់ផ្ដើម​បាន បើ​មិនដូច្នេះ​ទេ កម្មវិធី​រៀបចំ​នឹង​មិនអាច​ចាប់ផ្ដើម​បានទេ ។&lt;/p></translation>
</message>
<message>
- <source>Media Source</source>
- <translation>ប្រភព​មេឌៀ</translation>
+ <source>Media Source</source>
+ <translation>ប្រភព​មេឌៀ</translation>
</message>
<message>
- <source>&amp;Host Drive</source>
- <translation>ដ្រាយ​ម៉ាស៊ីន</translation>
+ <source>&amp;Host Drive</source>
+ <translation>ដ្រាយ​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>&amp;Image File</source>
- <translation>ឯកសារ​រូបភាព</translation>
+ <source>&amp;Image File</source>
+ <translation>ឯកសារ​រូបភាព</translation>
</message>
<message>
- <source>Select Installation Media</source>
- <translation>ជ្រើស​មេឌៀ​ដំឡើង</translation>
+ <source>Select Installation Media</source>
+ <translation>ជ្រើស​មេឌៀ​ដំឡើង</translation>
</message>
<message>
- <source>&lt;p&gt;You have selected the following media to boot from:&lt;/p&gt;</source>
- <translation>&lt;p&gt;អ្នក​បាន​ជ្រើស​មេឌៀ​ដូចខាងក្រោម​ដើម្បី​ចាប់ផ្ដើម ៖&lt;/p&gt;</translation>
+ <source>&lt;p>You have selected the following media to boot from:&lt;/p></source>
+ <translation>&lt;p>អ្នក​បាន​ជ្រើស​មេឌៀ​ដូចខាងក្រោម​ដើម្បី​ចាប់ផ្ដើម ៖&lt;/p></translation>
</message>
<message>
- <source>Summary</source>
- <translation>សេចក្ដីសង្ខេប</translation>
+ <source>Summary</source>
+ <translation>សេចក្ដីសង្ខេប</translation>
</message>
<message>
- <source>CD/DVD-ROM Device</source>
- <translation>ឧបករណ៍​ស៊ីឌី/ឌីវីឌីរ៉ូម</translation>
+ <source>CD/DVD-ROM Device</source>
+ <translation>ឧបករណ៍​ស៊ីឌី/ឌីវីឌីរ៉ូម</translation>
</message>
<message>
- <source>Floppy Device</source>
- <translation>ឧបករណ៍​ថាស​ទន់</translation>
+ <source>Floppy Device</source>
+ <translation>ឧបករណ៍​ថាស​ទន់</translation>
</message>
<message>
- <source>Host Drive %1</source>
- <translation>ដ្រាយ​ម៉ាស៊ីន %1</translation>
+ <source>Host Drive %1</source>
+ <translation>ដ្រាយ​ម៉ាស៊ីន %1</translation>
</message>
<message>
- <source>&lt;p&gt;You have started a newly created virtual machine for the first time. This wizard will help you to perform the steps necessary for booting an operating system of your choice on the virtual machine.&lt;/p&gt;&lt;p&gt;Note that you will not be able to install an operating system into this virtual machine right now because you did not attach any hard disk to it. If this is not what you want, you can cancel execution of this wizard, select &lt;b&gt;Settings&lt;/b&gt; from the &lt;b&gt;Machine&lt;/b&gt; menu of the main VirtualBox window to access the settings dialog of this machine and change the hard disk configuration.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go to the next page of the wizard and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page. You can also press &lt;b&gt;Cancel&lt;/b&gt; if you want to cancel execution of this wizard.&lt;/p&gt;</source>
- <translation>&lt;p&gt;អ្នក​បាន​ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិត​ដែល​ទើប​បានបង្កើត​ថ្មី​ជា​លើក​ដំបូង ។ អ្នក​ជំនួយ​ការ​នេះ​នឹង​ជួយ​អ្នក​ក្នុងការ​អនុវត្ត​ជំហាន​ដែល​ចាំបាច់​សម្រាប់​ចាប់ផ្ដើម​ប្រព័ន្ធ​ប្រតិបត្តិការ​ជា​ជម្រើស​របស់​អ្នក​នៅ​លើ​ម៉ាស៊ីន​និម្មិត ។&lt;/p&gt;&lt;p&gt;ចំណាំ​ថា អ្នក​នឹង​មិន​អាច​ដំឡើង​ប្រព័ន្ធ​ប្រតិបត្តិការ​ក្នុង​ម៉ាស៊ីន​និម្មិត​ឥឡូវ​បានទេ ពីព្រោះ​អ្នក​មិន​បាន​ភ្ជាប់​ថាសរឹង​ ។ ប្រសិន​បើ​នេះ​មិនមែន​ជា​អ្វី​ដែល​អ្នក​ចង់​បានទេ អ្នក​អាច​បោះបង់​ប្រតិបត្តិការ​នៃ​អ្នក​ជំនួយ​ការ​នេះ​បាន ដោយ​ជ្រើស &lt;b&gt;ការ​កំណត់&lt;/b&gt; ពី​ម៉ឺនុយ​ &lt;b&gt;ម៉ាស៊ីន&lt;/b&gt; របស់​បង្អួច​ VirtualBox មេ ដើម្បី​ចូលដំណើរការ​ប្រអប់​កំណត់​របស់​ម៉ាស៊ីន​នេះ ហើយ​ផ្លាស់ប្ដូរ​កា​រកំណត់​រចនាសម្ព័ន្ធ​ថាសរឹង ។&lt;/p&gt;&lt;p&gt;ប្រើ​ប៊ូតុង &lt;b&gt;បន្ទាប់&lt;/b&gt; ដើម្បី​ទៅ​ទំព័រ​បន្ទាប់​របស់​អ្នក​ជំនួយការ ហើយ​ប៊ូតុង &lt;b&gt;ថយក្រោយ&lt;/b&gt; ដើម្បីត្រឡប់​ទៅ​ទំព័រ​មុន ។ អ្នក​ក៏អា​ច​ចុច &lt;b&gt;បោះបង់&lt;/b&gt; ប្រសិន​បើ​អ្នក​បោះបង់​ប្រត្តិការ​អ្នក​ជំនួយការ​នេះ ។&lt;/p&gt;</translation>
+ <source>&lt;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.&lt;/p>&lt;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 execution of this wizard, select &lt;b>Settings&lt;/b> from the &lt;b>Machine&lt;/b> menu of the main VirtualBox window to access the settings dialog of this machine and change the hard disk configuration.&lt;/p>&lt;p>Use the &lt;b>Next&lt;/b> button to go to the next page of the wizard and the &lt;b>Back&lt;/b> button to return to the previous page. You can also press &lt;b>Cancel&lt;/b> if you want to cancel execution of this wizard.&lt;/p></source>
+ <translation>&lt;p>អ្នក​បាន​ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិត​ដែល​ទើប​បានបង្កើត​ថ្មី​ជា​លើក​ដំបូង ។ អ្នក​ជំនួយ​ការ​នេះ​នឹង​ជួយ​អ្នក​ក្នុងការ​អនុវត្ត​ជំហាន​ដែល​ចាំបាច់​សម្រាប់​ចាប់ផ្ដើម​ប្រព័ន្ធ​ប្រតិបត្តិការ​ជា​ជម្រើស​របស់​អ្នក​នៅ​លើ​ម៉ាស៊ីន​និម្មិត ។&lt;/p>&lt;p>ចំណាំ​ថា អ្នក​នឹង​មិន​អាច​ដំឡើង​ប្រព័ន្ធ​ប្រតិបត្តិការ​ក្នុង​ម៉ាស៊ីន​និម្មិត​ឥឡូវ​បានទេ ពីព្រោះ​អ្នក​មិន​បាន​ភ្ជាប់​ថាសរឹង​ ។ ប្រសិន​បើ​នេះ​មិនមែន​ជា​អ្វី​ដែល​អ្នក​ចង់​បានទេ អ្នក​អាច​បោះបង់​ប្រតិបត្តិការ​នៃ​អ្នក​ជំនួយ​ការ​នេះ​បាន ដោយ​ជ្រើស &lt;b>ការ​កំណត់&lt;/b> ពី​ម៉ឺនុយ​ &lt;b>ម៉ាស៊ីន&lt;/b> របស់​បង្អួច​ VirtualBox មេ ដើម្បី​ចូលដំណើរការ​ប្រអប់​កំណត់​របស់​ម៉ាស៊ីន​នេះ ហើយ​ផ្លាស់ប្ដូរ​កា​រកំណត់​រចនាសម្ព័ន្ធ​ថាសរឹង ។&lt;/p>&lt;p>ប្រើ​ប៊ូតុង &lt;b>បន្ទាប់&lt;/b> ដើម្បី​ទៅ​ទំព័រ​បន្ទាប់​របស់​អ្នក​ជំនួយការ ហើយ​ប៊ូតុង &lt;b>ថយក្រោយ&lt;/b> ដើម្បីត្រឡប់​ទៅ​ទំព័រ​មុន ។ អ្នក​ក៏អា​ច​ចុច &lt;b>បោះបង់&lt;/b> ប្រសិន​បើ​អ្នក​បោះបង់​ប្រត្តិការ​អ្នក​ជំនួយការ​នេះ ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Select the type of the media you would like to use for booting an operating system.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ជ្រើស​ប្រភេទ​មេឌៀ​ដែល​អ្នកចង់​ប្រើ​ដើម្បី​ចាប់ផ្ដើម​ប្រព័ន្ធ​ប្រតិបត្តិការ​ ។&lt;/p&gt;</translation>
+ <source>&lt;p>Select the type of the media you would like to use for booting an operating system.&lt;/p></source>
+ <translation>&lt;p>ជ្រើស​ប្រភេទ​មេឌៀ​ដែល​អ្នកចង់​ប្រើ​ដើម្បី​ចាប់ផ្ដើម​ប្រព័ន្ធ​ប្រតិបត្តិការ​ ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;Select the media that contains the operating system you want to work with. This media must be bootable, otherwise the operating system will not be able to start.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ជ្រើស​មេឌៀ​ដែល​មាន​ប្រព័ន្ធ​ប្រតិបត្តិការ​ដែល​អ្នក​ចង់​ធ្វើការ​ជា​មួយ ។ មេឌៀ​នេះ​ត្រូវទេ​អាច​ចាប់ផ្ដើម​បាន បើ​មិន​ដូច្នេះ​ទេ ប្រព័ន្ធ​ប្រតិបត្តិការ​មិនអាច​ចាប់ផ្ដើម​បានទេ ។&lt;/p&gt;</translation>
+ <source>&lt;p>Select the media that contains the operating system you want to work with. This media must be bootable, otherwise the operating system will not be able to start.&lt;/p></source>
+ <translation>&lt;p>ជ្រើស​មេឌៀ​ដែល​មាន​ប្រព័ន្ធ​ប្រតិបត្តិការ​ដែល​អ្នក​ចង់​ធ្វើការ​ជា​មួយ ។ មេឌៀ​នេះ​ត្រូវទេ​អាច​ចាប់ផ្ដើម​បាន បើ​មិន​ដូច្នេះ​ទេ ប្រព័ន្ធ​ប្រតិបត្តិការ​មិនអាច​ចាប់ផ្ដើម​បានទេ ។&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;You have selected the following media to boot an operating system from:&lt;/p&gt;</source>
- <translation>&lt;p&gt;អ្នក​បាន​ជ្រើស​មេឌៀ​ដូចខាង​ក្រោម​ដើម្បី​ចាប់ផ្ដើម​ប្រព័ន្ធ​ប្រតិបត្តិការ ៖&lt;/p&gt;</translation>
+ <source>&lt;p>You have selected the following media to boot an operating system from:&lt;/p></source>
+ <translation>&lt;p>អ្នក​បាន​ជ្រើស​មេឌៀ​ដូចខាង​ក្រោម​ដើម្បី​ចាប់ផ្ដើម​ប្រព័ន្ធ​ប្រតិបត្តិការ ៖&lt;/p></translation>
</message>
<message>
- <source>&lt;p&gt;If the above is correct, press the &lt;b&gt;Finish&lt;/b&gt; button. Once you press it, the selected media will be mounted on the virtual machine and the machine will start execution.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ប្រសិន​បើ​ខា​ងលើ​ត្រឹមត្រូវ​ហើយ ចុច​ប៊ូតុង &lt;b&gt;បញ្ចប់&lt;/b&gt; ។ នៅពេល​អ្នក​ចុច​វា មេឌៀ​ដែល​បាន​ជ្រើស​នឹង​ត្រូវ​បានម៉ោន​​លើ​ម៉ាស៊ីន​និម្មិត ហើយ​ម៉ាស៊ីន​នឹង​ចាប់ផ្ដើម​ប្រតិបត្តិ ។&lt;/p&gt;</translation>
+ <source>&lt;p>If the above is correct, press the &lt;b>Finish&lt;/b> button. Once you press it, the selected media will be mounted on the virtual machine and the machine will start execution.&lt;/p></source>
+ <translation>&lt;p>ប្រសិន​បើ​ខា​ងលើ​ត្រឹមត្រូវ​ហើយ ចុច​ប៊ូតុង &lt;b>បញ្ចប់&lt;/b> ។ នៅពេល​អ្នក​ចុច​វា មេឌៀ​ដែល​បាន​ជ្រើស​នឹង​ត្រូវ​បានម៉ោន​​លើ​ម៉ាស៊ីន​និម្មិត ហើយ​ម៉ាស៊ីន​នឹង​ចាប់ផ្ដើម​ប្រតិបត្តិ ។&lt;/p></translation>
</message>
<message>
- <source>&lt; &amp;Back</source>
- <translation>&lt; ថយក្រោយ</translation>
+ <source>&lt; &amp;Back</source>
+ <translation>&lt; ថយក្រោយ</translation>
</message>
<message>
- <source>&amp;Next &gt;</source>
- <translation>បន្ទាប់ &gt;</translation>
+ <source>&amp;Next ></source>
+ <translation>បន្ទាប់ ></translation>
</message>
<message>
- <source>&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+ <source>&lt;html>&lt;head>&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; />&lt;style type=&quot;text/css&quot;>
p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;If the above is correct, press the &lt;span style=&quot; font-weight:600;&quot;&gt;Finish&lt;/span&gt; button. Once you press it, the selected media will be temporarily mounted on the virtual machine and the machine will start execution.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Please note that when you close the virtual machine, the specified media will be automatically unmounted and the boot device will be set back to the first hard disk.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Depending on the type of the setup program, you may need to manually unmount (eject) the media after the setup program reboots the virtual machine, to prevent the installation process from starting again. You can do this by selecting the corresponding &lt;span style=&quot; font-weight:600;&quot;&gt;Unmount...&lt;/span&gt; action in the &lt;span style=&quot; font-weight:600;&quot;&gt;Devices&lt;/span&gt; menu&lt;span style=&quot; font-weight:600;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation>&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+&lt;/style>&lt;/head>&lt;body style=&quot; font-family:'Arial'; font-size:9pt; font-weight:400; font-style:normal;&quot;>
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;>If the above is correct, press the &lt;span style=&quot; font-weight:600;&quot;>Finish&lt;/span> button. Once you press it, the selected media will be temporarily mounted on the virtual machine and the machine will start execution.&lt;/p>
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;>Please note that when you close the virtual machine, the specified media will be automatically unmounted and the boot device will be set back to the first hard disk.&lt;/p>
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;>Depending on the type of the setup program, you may need to manually unmount (eject) the media after the setup program reboots the virtual machine, to prevent the installation process from starting again. You can do this by selecting the corresponding &lt;span style=&quot; font-weight:600;&quot;>Unmount...&lt;/span> action in the &lt;span style=&quot; font-weight:600;&quot;>Devices&lt;/span> menu&lt;span style=&quot; font-weight:600;&quot;>.&lt;/span>&lt;/p>&lt;/body>&lt;/html></source>
+ <translation>&lt;html>&lt;head>&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; />&lt;style type=&quot;text/css&quot;>
p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;ប្រសិន​បើ​អ្វី​នៅ​ខាង​លើ​ត្រឹមត្រូវ ចុចប៊ូតុង &lt;span style=&quot; font-weight:600;&quot;&gt;បញ្ចប់&lt;/span&gt; ។ នៅពេល​អ្នក​ចុច​វា មេឌៀ​ដែល​បានជ្រើស​នឹង​ត្រូវ​បានម៉ោន​នៅ​លើ​ម៉ាស៊ីន​និម្មិត​ជា​បណ្ដោះអាសន្ន ហើយ​ម៉ាស៊ីននឹង​ចាប់ផ្ដើម​ប្រតិបត្តិ ។&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;សូម​ចំណាំ​ថា នៅពេល​អ្នក​បិទ​ម៉ាស៊ីន​និម្មិត មេឌៀ​ដែល​បាន​បញ្ជាក់​នឹង​ត្រូវ​បានអាន់ម៉ោន​ដោយ​ស្វ័យ​ប្រវត្តិ ហើយ​ឧបករណ៍​ចាប់ផ្ដើម​នឹង​កំណត់​ថយ​ទៅ​ថាសរឹង​ដំបូង​វិញ ។&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;ដោយ​អាស្រ័យ​លើ​ប្រភេទ​កម្មវិធី អ្នក​ត្រូវ​អាន់ម៉ោន​ (ច្រានចេញ) មេឌៀ​ដោយ​ដៃ បន្ទាប់​ពី​កម្មវិធី​រៀបចំ​ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិត​ឡើង​វិញ ដើម្បីការពារ​ដំណើរការ​ដំឡើង​ពី​​ការ​ចាប់ផ្ដើម​ម្ដងទៀត ។ អ្នក​អាច​ធ្វើ​វា​ដោយ​ជ្រើស​សកម្មភាព &lt;span style=&quot; font-weight:600;&quot;&gt;អាន់ម៉ោន...&lt;/span&gt; ដែល​ទាក់ទង​​នៅម៉ឺនុយ &lt;span style=&quot; font-weight:600;&quot;&gt;ឧករណ៍&lt;/span&gt; &lt;span style=&quot; font-weight:600;&quot;&gt; ។&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+&lt;/style>&lt;/head>&lt;body style=&quot; font-family:'Arial'; font-size:9pt; font-weight:400; font-style:normal;&quot;>
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;>ប្រសិន​បើ​អ្វី​នៅ​ខាង​លើ​ត្រឹមត្រូវ ចុចប៊ូតុង &lt;span style=&quot; font-weight:600;&quot;>បញ្ចប់&lt;/span> ។ នៅពេល​អ្នក​ចុច​វា មេឌៀ​ដែល​បានជ្រើស​នឹង​ត្រូវ​បានម៉ោន​នៅ​លើ​ម៉ាស៊ីន​និម្មិត​ជា​បណ្ដោះអាសន្ន ហើយ​ម៉ាស៊ីននឹង​ចាប់ផ្ដើម​ប្រតិបត្តិ ។&lt;/p>
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;>សូម​ចំណាំ​ថា នៅពេល​អ្នក​បិទ​ម៉ាស៊ីន​និម្មិត មេឌៀ​ដែល​បាន​បញ្ជាក់​នឹង​ត្រូវ​បានអាន់ម៉ោន​ដោយ​ស្វ័យ​ប្រវត្តិ ហើយ​ឧបករណ៍​ចាប់ផ្ដើម​នឹង​កំណត់​ថយ​ទៅ​ថាសរឹង​ដំបូង​វិញ ។&lt;/p>
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;>ដោយ​អាស្រ័យ​លើ​ប្រភេទ​កម្មវិធី អ្នក​ត្រូវ​អាន់ម៉ោន​ (ច្រានចេញ) មេឌៀ​ដោយ​ដៃ បន្ទាប់​ពី​កម្មវិធី​រៀបចំ​ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិត​ឡើង​វិញ ដើម្បីការពារ​ដំណើរការ​ដំឡើង​ពី​​ការ​ចាប់ផ្ដើម​ម្ដងទៀត ។ អ្នក​អាច​ធ្វើ​វា​ដោយ​ជ្រើស​សកម្មភាព &lt;span style=&quot; font-weight:600;&quot;>អាន់ម៉ោន...&lt;/span> ដែល​ទាក់ទង​​នៅម៉ឺនុយ &lt;span style=&quot; font-weight:600;&quot;>ឧករណ៍&lt;/span> &lt;span style=&quot; font-weight:600;&quot;> ។&lt;/span>&lt;/p>&lt;/body>&lt;/html></translation>
</message>
<message>
- <source>&amp;Finish</source>
- <translation>បញ្ចប់</translation>
+ <source>&amp;Finish</source>
+ <translation>បញ្ចប់</translation>
</message>
<message>
- <source>Type</source>
- <comment>summary</comment>
- <translation>ប្រភេទ</translation>
+ <source>Type</source>
+ <comment>summary</comment>
+ <translation>ប្រភេទ</translation>
</message>
<message>
- <source>Source</source>
- <comment>summary</comment>
- <translation>ប្រភព</translation>
+ <source>Source</source>
+ <comment>summary</comment>
+ <translation>ប្រភព</translation>
</message>
<message>
- <source>Cancel</source>
- <translation>បោះបង់</translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMInformationDlg</name>
<message>
- <source>%1 - Session Information</source>
- <translation>%1 - ព័ត៌មាន​សម័យ</translation>
+ <source>%1 - Session Information</source>
+ <translation>%1 - ព័ត៌មាន​សម័យ</translation>
</message>
<message>
- <source>&amp;Details</source>
- <translation>សេចក្ដី​លម្អិត</translation>
+ <source>&amp;Details</source>
+ <translation>សេចក្ដី​លម្អិត</translation>
</message>
<message>
- <source>&amp;Runtime</source>
- <translation>ពេលវេលា​រត់</translation>
+ <source>&amp;Runtime</source>
+ <translation>ពេលវេលា​រត់</translation>
</message>
<message>
- <source>DMA Transfers</source>
- <translation>ការ​ផ្ទេរ DMA</translation>
+ <source>DMA Transfers</source>
+ <translation>ការ​ផ្ទេរ DMA</translation>
</message>
<message>
- <source>PIO Transfers</source>
- <translation>ការ​ផ្ទេរ PIO</translation>
+ <source>PIO Transfers</source>
+ <translation>ការ​ផ្ទេរ PIO</translation>
</message>
<message>
- <source>Data Read</source>
- <translation>អាន​ទិន្នន័យ</translation>
+ <source>Data Read</source>
+ <translation>អាន​ទិន្នន័យ</translation>
</message>
<message>
- <source>Data Written</source>
- <translation>សរសេរ​ទិន្នន័យ</translation>
+ <source>Data Written</source>
+ <translation>សរសេរ​ទិន្នន័យ</translation>
</message>
<message>
- <source>Data Transmitted</source>
- <translation>បានផ្ទេរ​ទិន្នន័យ</translation>
+ <source>Data Transmitted</source>
+ <translation>បានផ្ទេរ​ទិន្នន័យ</translation>
</message>
<message>
- <source>Data Received</source>
- <translation>បាន​ទទួល​ទិន្នន័យ</translation>
+ <source>Data Received</source>
+ <translation>បាន​ទទួល​ទិន្នន័យ</translation>
</message>
<message>
- <source>Runtime Attributes</source>
- <translation>គុណលក្ខណៈ​ពេលវេលា​រត់</translation>
+ <source>Runtime Attributes</source>
+ <translation>គុណលក្ខណៈ​ពេលវេលា​រត់</translation>
</message>
<message>
- <source>Screen Resolution</source>
- <translation>គុណភាព​បង្ហាញ​របស់​អេក្រង់</translation>
+ <source>Screen Resolution</source>
+ <translation>គុណភាព​បង្ហាញ​របស់​អេក្រង់</translation>
</message>
<message>
- <source>CD/DVD-ROM Statistics</source>
- <translation>ស្ថិតិ​ស៊ីឌី/ឌីវីឌីរ៉ូម</translation>
+ <source>CD/DVD-ROM Statistics</source>
+ <translation>ស្ថិតិ​ស៊ីឌី/ឌីវីឌីរ៉ូម</translation>
</message>
<message>
- <source>Network Adapter Statistics</source>
- <translation>ស្ថិតិ​អាដាប់ទ័រ​បណ្ដាញ</translation>
+ <source>Network Adapter Statistics</source>
+ <translation>ស្ថិតិ​អាដាប់ទ័រ​បណ្ដាញ</translation>
</message>
<message>
- <source>Version %1.%2</source>
- <comment>guest additions</comment>
- <translation>កំណែ %1.%2</translation>
+ <source>Version %1.%2</source>
+ <comment>guest additions</comment>
+ <translation>កំណែ %1.%2</translation>
</message>
<message>
- <source>Not Detected</source>
- <comment>guest additions</comment>
- <translation>រក​មិនឃើញ</translation>
+ <source>Not Detected</source>
+ <comment>guest additions</comment>
+ <translation>រក​មិនឃើញ</translation>
</message>
<message>
- <source>Not Detected</source>
- <comment>guest os type</comment>
- <translation>រក​មិន​ឃើញ</translation>
+ <source>Not Detected</source>
+ <comment>guest os type</comment>
+ <translation>រក​មិន​ឃើញ</translation>
</message>
<message>
- <source>Guest Additions</source>
- <translation>ការ​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ</translation>
+ <source>Guest Additions</source>
+ <translation>ការ​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ</translation>
</message>
<message>
- <source>Guest OS Type</source>
- <translation>ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ</translation>
+ <source>Guest OS Type</source>
+ <translation>ប្រភេទ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ</translation>
</message>
<message>
- <source>Hard Disk Statistics</source>
- <translation>ស្ថិតិ​ថាស​រឹង</translation>
+ <source>Hard Disk Statistics</source>
+ <translation>ស្ថិតិ​ថាស​រឹង</translation>
</message>
<message>
- <source>No Hard Disks</source>
- <translation>គ្មាន​ថាស​រឹង​ទេ</translation>
+ <source>No Hard Disks</source>
+ <translation>គ្មាន​ថាស​រឹង​ទេ</translation>
</message>
<message>
- <source>No Network Adapters</source>
- <translation>គ្មានអាដាប់ទ័រ​បណ្ដាញ​ទេ</translation>
+ <source>No Network Adapters</source>
+ <translation>គ្មានអាដាប់ទ័រ​បណ្ដាញ​ទេ</translation>
</message>
<message>
- <source>Enabled</source>
- <comment>nested paging</comment>
- <translation>បានបើក</translation>
+ <source>Enabled</source>
+ <comment>nested paging</comment>
+ <translation>បានបើក</translation>
</message>
<message>
- <source>Disabled</source>
- <comment>nested paging</comment>
- <translation>បានបិទ</translation>
+ <source>Disabled</source>
+ <comment>nested paging</comment>
+ <translation>បានបិទ</translation>
</message>
<message>
- <source>Nested Paging</source>
- <translation>ភេយីង​ខាង​ក្នុង</translation>
+ <source>Nested Paging</source>
+ <translation>ភេយីង​ខាង​ក្នុង</translation>
</message>
<message>
- <source>VBoxVMInformationDlg</source>
- <translation>VBoxVMInformationDlg</translation>
+ <source>VBoxVMInformationDlg</source>
+ <translation>VBoxVMInformationDlg</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMListView</name>
<message>
- <source>Inaccessible</source>
- <translation>មិនអាច​ចូលដំណើរការបាន</translation>
+ <source>Inaccessible</source>
+ <translation>មិនអាច​ចូលដំណើរការបាន</translation>
</message>
<message>
- <source>&lt;nobr&gt;%1&lt;br&gt;&lt;/nobr&gt;&lt;nobr&gt;%2 since %3&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Session %4&lt;/nobr&gt;</source>
- <comment>VM tooltip (name, last state change, session state)</comment>
- <translation>&lt;nobr&gt;%1&lt;br&gt;&lt;/nobr&gt;&lt;nobr&gt;%2 តាំងពី %3&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;សម័យ %4&lt;/nobr&gt;</translation>
+ <source>&lt;nobr>%1&lt;br>&lt;/nobr>&lt;nobr>%2 since %3&lt;/nobr>&lt;br>&lt;nobr>Session %4&lt;/nobr></source>
+ <comment>VM tooltip (name, last state change, session state)</comment>
+ <translation>&lt;nobr>%1&lt;br>&lt;/nobr>&lt;nobr>%2 តាំងពី %3&lt;/nobr>&lt;br>&lt;nobr>សម័យ %4&lt;/nobr></translation>
</message>
<message>
- <source>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;br&gt;&lt;/nobr&gt;&lt;nobr&gt;Inaccessible since %2&lt;/nobr&gt;</source>
- <comment>Inaccessible VM tooltip (name, last state change)</comment>
- <translation>&lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;br&gt;&lt;/nobr&gt;&lt;nobr&gt;មិនអាច​ចូលដំណើរការ​បានតាំងពីរ %2&lt;/nobr&gt;</translation>
+ <source>&lt;nobr>&lt;b>%1&lt;/b>&lt;br>&lt;/nobr>&lt;nobr>Inaccessible since %2&lt;/nobr></source>
+ <comment>Inaccessible VM tooltip (name, last state change)</comment>
+ <translation>&lt;nobr>&lt;b>%1&lt;/b>&lt;br>&lt;/nobr>&lt;nobr>មិនអាច​ចូលដំណើរការ​បានតាំងពីរ %2&lt;/nobr></translation>
</message>
<message>
- <source>S&amp;how</source>
- <translation>បង្ហាញ</translation>
+ <source>S&amp;how</source>
+ <translation>បង្ហាញ</translation>
</message>
<message>
- <source>Switch to the window of the selected virtual machine</source>
- <translation>ប្ដូរ​ទៅ​បង្អួច​របស់​ម៉ាស៊ីន​និម្មិត​ដែល​បានជ្រើស</translation>
+ <source>Switch to the window of the selected virtual machine</source>
+ <translation>ប្ដូរ​ទៅ​បង្អួច​របស់​ម៉ាស៊ីន​និម្មិត​ដែល​បានជ្រើស</translation>
</message>
<message>
- <source>S&amp;tart</source>
- <translation>ចាប់ផ្ដើម</translation>
+ <source>S&amp;tart</source>
+ <translation>ចាប់ផ្ដើម</translation>
</message>
<message>
- <source>Start the selected virtual machine</source>
- <translation>ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិត​ដែល​បានជ្រើស</translation>
+ <source>Start the selected virtual machine</source>
+ <translation>ចាប់ផ្ដើម​ម៉ាស៊ីន​និម្មិត​ដែល​បានជ្រើស</translation>
</message>
<message>
- <source>R&amp;esume</source>
- <translation>បន្ត</translation>
+ <source>R&amp;esume</source>
+ <translation>បន្ត</translation>
</message>
<message>
- <source>Resume the execution of the virtual machine</source>
- <translation>បន្ត​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​និម្មិត</translation>
+ <source>Resume the execution of the virtual machine</source>
+ <translation>បន្ត​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​និម្មិត</translation>
</message>
<message>
- <source>&amp;Pause</source>
- <translation>ផ្អាក</translation>
+ <source>&amp;Pause</source>
+ <translation>ផ្អាក</translation>
</message>
<message>
- <source>Suspend the execution of the virtual machine</source>
- <translation>ផ្អាក​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​និម្មិត</translation>
+ <source>Suspend the execution of the virtual machine</source>
+ <translation>ផ្អាក​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​និម្មិត</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMLogViewer</name>
<message>
- <source>Log Viewer</source>
- <translation>កម្មវិធី​មើល​កំណត់​ហេតុ</translation>
+ <source>Log Viewer</source>
+ <translation>កម្មវិធី​មើល​កំណត់​ហេតុ</translation>
</message>
<message>
- <source>&amp;Save</source>
- <translation>រក្សាទុក</translation>
+ <source>&amp;Save</source>
+ <translation>រក្សាទុក</translation>
</message>
<message>
- <source>&amp;Refresh</source>
- <translation>ធ្វើ​ឲ្យ​ស្រស់</translation>
+ <source>&amp;Refresh</source>
+ <translation>ធ្វើ​ឲ្យ​ស្រស់</translation>
</message>
<message>
- <source>%1 - VirtualBox Log Viewer</source>
- <translation>%1 - កម្មវិធីមើល​កំណត់​ហេតុ​របស់​ VirtualBox</translation>
+ <source>%1 - VirtualBox Log Viewer</source>
+ <translation>%1 - កម្មវិធីមើល​កំណត់​ហេតុ​របស់​ VirtualBox</translation>
</message>
<message>
- <source>&lt;p&gt;No log files found. Press the &lt;b&gt;Refresh&lt;/b&gt; button to rescan the log folder &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;.&lt;/p&gt;</source>
- <translation>&lt;p&gt;រក​មិនឃើញ​កំណត់ហេតុទេ ។ ចុច​ប៊ូតុង &lt;b&gt;ធ្វើ​ឲ្យ​ស្រស់&lt;/b&gt; ដើម្បី​វិភាគ​ថត​កំណត់ហេតុ​ម្ដង​ទៀត &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; ។&lt;/p&gt;</translation>
+ <source>&lt;p>No log files found. Press the &lt;b>Refresh&lt;/b> button to rescan the log folder &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr>.&lt;/p></source>
+ <translation>&lt;p>រក​មិនឃើញ​កំណត់ហេតុទេ ។ ចុច​ប៊ូតុង &lt;b>ធ្វើ​ឲ្យ​ស្រស់&lt;/b> ដើម្បី​វិភាគ​ថត​កំណត់ហេតុ​ម្ដង​ទៀត &lt;nobr>&lt;b>%1&lt;/b>&lt;/nobr> ។&lt;/p></translation>
</message>
<message>
- <source>Save VirtualBox Log As</source>
- <translation>រក្សាទុក​កំណត់ហេតុ VirtualBox ជា</translation>
+ <source>Save VirtualBox Log As</source>
+ <translation>រក្សាទុក​កំណត់ហេតុ VirtualBox ជា</translation>
</message>
<message>
- <source>&amp;Find</source>
- <translation>រក</translation>
+ <source>&amp;Find</source>
+ <translation>រក</translation>
</message>
<message>
- <source>Close</source>
- <translation>បិទ</translation>
+ <source>Close</source>
+ <translation>បិទ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsAudio</name>
<message>
- <source>When checked, the virtual PCI audio card is plugged into the virtual machine that uses the specified driver to communicate to the host audio card.</source>
- <translation>នៅពេល​បាន​គូស​ធីក កាត​អូឌីយ៉ូ PCI និម្មិត​នៅ​ក្នុង​ម៉ាស៊ីន​និម្មិត ​ដែល​ប្រើ​កម្មវិធី​បញ្ជា​ដែល​បានបញ្ជាក់​ទាក់ទង​ទៅ​កាត​អូឌីយ៉ូ​របស់​ម៉ាស៊ីន ។</translation>
+ <source>When checked, the virtual PCI audio card is plugged into the virtual machine that uses the specified driver to communicate to the host audio card.</source>
+ <translation>នៅពេល​បាន​គូស​ធីក កាត​អូឌីយ៉ូ PCI និម្មិត​នៅ​ក្នុង​ម៉ាស៊ីន​និម្មិត ​ដែល​ប្រើ​កម្មវិធី​បញ្ជា​ដែល​បានបញ្ជាក់​ទាក់ទង​ទៅ​កាត​អូឌីយ៉ូ​របស់​ម៉ាស៊ីន ។</translation>
</message>
<message>
- <source>Enable &amp;Audio</source>
- <translation>បើក​អូឌីយ៉ូ</translation>
+ <source>Enable &amp;Audio</source>
+ <translation>បើក​អូឌីយ៉ូ</translation>
</message>
<message>
- <source>Host Audio &amp;Driver:</source>
- <translation>កម្មវិធី​បញ្ជា​អូឌីយ៉ូ​របស់​ម៉ាស៊ីន ៖</translation>
+ <source>Host Audio &amp;Driver:</source>
+ <translation>កម្មវិធី​បញ្ជា​អូឌីយ៉ូ​របស់​ម៉ាស៊ីន ៖</translation>
</message>
<message>
- <source>Controls the audio output driver. The &lt;b&gt;Null Audio Driver&lt;/b&gt; makes the guest see an audio card, however every access to it will be ignored.</source>
- <translation>ត្រួតពិនិត្យ​កម្មវិធី​បញ្ជា​លទ្ធផល​អូឌីយ៉ូ ។ &lt;b&gt;គ្មាន​កម្មវិធី​បញ្ជា​អូឌីយ៉ូ&lt;/b&gt; ធ្វើ​ឲ្យ​ម៉ាស៊ីន​ភ្ញៀវ​ឃើញ​កាត​អូឌីយ៉ូ ទោះ​ជា​យ៉ាង​ណា​រាល់​ពេល​ចូលដំណើរការ​វា​នឹង​ត្រូ​វបាន​មិនអើពើ ។</translation>
+ <source>Controls the audio output driver. The &lt;b>Null Audio Driver&lt;/b> makes the guest see an audio card, however every access to it will be ignored.</source>
+ <translation>ត្រួតពិនិត្យ​កម្មវិធី​បញ្ជា​លទ្ធផល​អូឌីយ៉ូ ។ &lt;b>គ្មាន​កម្មវិធី​បញ្ជា​អូឌីយ៉ូ&lt;/b> ធ្វើ​ឲ្យ​ម៉ាស៊ីន​ភ្ញៀវ​ឃើញ​កាត​អូឌីយ៉ូ ទោះ​ជា​យ៉ាង​ណា​រាល់​ពេល​ចូលដំណើរការ​វា​នឹង​ត្រូ​វបាន​មិនអើពើ ។</translation>
</message>
<message>
- <source>Audio &amp;Controller:</source>
- <translation>វត្ថុ​បញ្ជា​អូឌីយ៉ូ ៖</translation>
+ <source>Audio &amp;Controller:</source>
+ <translation>វត្ថុ​បញ្ជា​អូឌីយ៉ូ ៖</translation>
</message>
<message>
- <source>Selects the type of the virtual sound card. Depending on this value, VirtualBox will provide different audio hardware to the virtual machine.</source>
- <translation>ជ្រើស​ប្រភេទ​កាត​សំឡេង​និម្មិត ។ ដោយ​អាស្រ័យ​លើ​តម្លៃនេះ VirtualBox នឹ​ងផ្ដល់​នូវ​ផ្នែក​រឹង​អូឌីយ៉ូ​ផ្សេងៗ​គ្នា​ដល់​ម៉ាស៊ីន​និម្មិត ។</translation>
+ <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>ជ្រើស​ប្រភេទ​កាត​សំឡេង​និម្មិត ។ ដោយ​អាស្រ័យ​លើ​តម្លៃនេះ VirtualBox នឹ​ងផ្ដល់​នូវ​ផ្នែក​រឹង​អូឌីយ៉ូ​ផ្សេងៗ​គ្នា​ដល់​ម៉ាស៊ីន​និម្មិត ។</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsCD</name>
<message>
- <source>Host CD/DVD drive is not selected</source>
- <translation>ដ្រាយ​ស៊ីឌី/ឌីវីឌី​របស់ម៉ាស៊ីន​មិន​ត្រូវ​បានជ្រើស​ទេ</translation>
+ <source>Host CD/DVD drive is not selected</source>
+ <translation>ដ្រាយ​ស៊ីឌី/ឌីវីឌី​របស់ម៉ាស៊ីន​មិន​ត្រូវ​បានជ្រើស​ទេ</translation>
</message>
<message>
- <source>CD/DVD image file is not selected</source>
- <translation>ឯកសារ​រូបភាព​ស៊ីឌី/ឌីវីឌី​មិន​ត្រូវ​បានជ្រើស​ទេ</translation>
+ <source>CD/DVD image file is not selected</source>
+ <translation>ឯកសារ​រូបភាព​ស៊ីឌី/ឌីវីឌី​មិន​ត្រូវ​បានជ្រើស​ទេ</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>នៅពេល​បាន​គូស​ធីក ចំនួន​មេឌៀ​ដែល​បាន​បញ្ជាក់​ទៅ​ដ្រាយ​ស៊ីឌី/ឌីវីឌី​របស់ម៉ាស៊ីន​និម្មិត ។ ចំណាំថា ដ្រាយ​ស៊ីឌី/ឌីវីឌី​ត្រូវ​បាន​តភ្ជាប់​ជា​និច្ច​ទៅកាន់​​ឧបករណ៍​បញ្ជា​ IDE មេ​ទីពីរ​របស់​ម៉ាស៊ីន ។</translation>
+ <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>នៅពេល​បាន​គូស​ធីក ចំនួន​មេឌៀ​ដែល​បាន​បញ្ជាក់​ទៅ​ដ្រាយ​ស៊ីឌី/ឌីវីឌី​របស់ម៉ាស៊ីន​និម្មិត ។ ចំណាំថា ដ្រាយ​ស៊ីឌី/ឌីវីឌី​ត្រូវ​បាន​តភ្ជាប់​ជា​និច្ច​ទៅកាន់​​ឧបករណ៍​បញ្ជា​ IDE មេ​ទីពីរ​របស់​ម៉ាស៊ីន ។</translation>
</message>
<message>
- <source>&amp;Mount CD/DVD Drive</source>
- <translation>ម៉ោន​ដ្រាយ​ស៊ីឌី/ឌីវីឌី</translation>
+ <source>&amp;Mount CD/DVD Drive</source>
+ <translation>ម៉ោន​ដ្រាយ​ស៊ីឌី/ឌីវីឌី</translation>
</message>
<message>
- <source>Mounts the specified CD/DVD drive to the virtual CD/DVD drive.</source>
- <translation>ម៉ោន​ដ្រាយ​ស៊ីឌី/ឌីវីឌី​ដែល​បាន​បញ្ជាក់​ទៅ​ដ្រាយ​ស៊ីឌី/ឌីវីឌី​និម្មិត ។</translation>
+ <source>Mounts the specified CD/DVD drive to the virtual CD/DVD drive.</source>
+ <translation>ម៉ោន​ដ្រាយ​ស៊ីឌី/ឌីវីឌី​ដែល​បាន​បញ្ជាក់​ទៅ​ដ្រាយ​ស៊ីឌី/ឌីវីឌី​និម្មិត ។</translation>
</message>
<message>
- <source>Host CD/DVD &amp;Drive</source>
- <translation>ដ្រាយ​ស៊ីឌី/ឌីវីឌី​ម៉ាស៊ីន</translation>
+ <source>Host CD/DVD &amp;Drive</source>
+ <translation>ដ្រាយ​ស៊ីឌី/ឌីវីឌី​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Lists host CD/DVD drives available to mount to the virtual machine.</source>
- <translation>រាយ​ដ្រាយ​ស៊ីឌី/ឌីវីឌី​ម៉ាស៊ីន​ដែលមាន​ដើម្បីម៉ោន​ទៅកាន់​ម៉ាស៊ីន​និម្មិត ។</translation>
+ <source>Lists host CD/DVD drives available to mount to the virtual machine.</source>
+ <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>នៅពេល​បាន​គូស​ធីក អនុញ្ញាត​ឲ្យ​ម៉ាស៊ីន​ភ្ញៀវ​ផ្ញើ​ពាក្យ​បញ្ជា ATAPI ទៅ​ដ្រាយ​ម៉ាស៊ីន​ដែល​ធ្វើ​ឲ្យ​វា​អាច​ប្រើ​កម្មវិធីសរសេរស៊ីឌី/ឌីវីឌី​ទៅ​ខាង​ក្នុង​ម៉ាស៊ីន​ VM ។ ចំណាំ​ថា ការ​សរសេរ​ស៊ីឌី​អូឌីយ៉ូ​ខា​ងក្នុង VM មិន​ត្រូវ​បានគាំទ្រ​នៅ​ឡើយ​ទេ ។</translation>
+ <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>នៅពេល​បាន​គូស​ធីក អនុញ្ញាត​ឲ្យ​ម៉ាស៊ីន​ភ្ញៀវ​ផ្ញើ​ពាក្យ​បញ្ជា ATAPI ទៅ​ដ្រាយ​ម៉ាស៊ីន​ដែល​ធ្វើ​ឲ្យ​វា​អាច​ប្រើ​កម្មវិធីសរសេរស៊ីឌី/ឌីវីឌី​ទៅ​ខាង​ក្នុង​ម៉ាស៊ីន​ VM ។ ចំណាំ​ថា ការ​សរសេរ​ស៊ីឌី​អូឌីយ៉ូ​ខា​ងក្នុង VM មិន​ត្រូវ​បានគាំទ្រ​នៅ​ឡើយ​ទេ ។</translation>
</message>
<message>
- <source>Enable &amp;Passthrough</source>
- <translation>បើក​ការ​ពិនិត្យ​ឆ្លង</translation>
+ <source>Enable &amp;Passthrough</source>
+ <translation>បើក​ការ​ពិនិត្យ​ឆ្លង</translation>
</message>
<message>
- <source>Mounts the specified CD/DVD image to the virtual CD/DVD drive.</source>
- <translation>ម៉ោន​រូបភាព​ស៊ីឌី/ឌីវីឌី​ដែល​បានបញ្ជាក់​ទៅដ្រាយ​ស៊ីឌី/ឌីវីឌី​​និម្មិត ។</translation>
+ <source>Mounts the specified CD/DVD image to the virtual CD/DVD drive.</source>
+ <translation>ម៉ោន​រូបភាព​ស៊ីឌី/ឌីវីឌី​ដែល​បានបញ្ជាក់​ទៅដ្រាយ​ស៊ីឌី/ឌីវីឌី​​និម្មិត ។</translation>
</message>
<message>
- <source>&amp;ISO Image File</source>
- <translation>ឯកសារ​រូបភាព​​អាយអេសអូ</translation>
+ <source>&amp;ISO Image File</source>
+ <translation>ឯកសារ​រូបភាព​​អាយអេសអូ</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>បង្ហាញ​ឯកសារ​រូបភាព​ដើម្បី​ម៉ោន​ទៅ​ដ្រាយ​ស៊ីឌី/ឌីវិឌី​និម្មិត ហើយ​អនុញ្ញាត​ឲ្យ​អ្នក​ជ្រើស​រូបភាព​ផ្សេង​យ៉ាង​លឿន ។</translation>
+ <source>Displays the image file to mount to the virtual CD/DVD drive and allows to quickly select a different image.</source>
+ <translation>បង្ហាញ​ឯកសារ​រូបភាព​ដើម្បី​ម៉ោន​ទៅ​ដ្រាយ​ស៊ីឌី/ឌីវិឌី​និម្មិត ហើយ​អនុញ្ញាត​ឲ្យ​អ្នក​ជ្រើស​រូបភាព​ផ្សេង​យ៉ាង​លឿន ។</translation>
</message>
<message>
- <source>Invokes the Virtual Media Manager to select a CD/DVD image to mount.</source>
- <translation>ដកហូត​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត​ដើម្បី​ជ្រើស​រូបភាព​ស៊ីឌី/ឌីវីឌី​ដើម្បី​ម៉ោន ។</translation>
+ <source>Invokes the Virtual Media Manager to select a CD/DVD image to mount.</source>
+ <translation>ដកហូត​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត​ដើម្បី​ជ្រើស​រូបភាព​ស៊ីឌី/ឌីវីឌី​ដើម្បី​ម៉ោន ។</translation>
</message>
-</context>
-<context>
- <name>VBoxVMSettingsDisplay</name>
- <message>
- <source>you have assigned less than &lt;b&gt;%1&lt;/b&gt; for video memory which is the minimum amount required to switch the virtual machine to fullscreen or seamless mode.</source>
- <translation type="unfinished">អ្នក​បាន​ផ្ដល់​សតិ​វីដេអូ​តិចជាង &lt;b&gt;%1&lt;/b&gt; សម្រាប់​សតិ​វីដេអូ​ដែល​ជា​ចំនួន​អប្បបរមា​ដែល​បានទាមទារ​ឲ្យ​ប្ដូរ​ម៉ាស៊ីន​និម្មិត​ទៅ​​របៀប​ពេញអេក្រង់ ឬ​គ្មាន​ថ្នេរ ។</translation>
- </message>
- <message>
- <source>&lt;qt&gt;%1&amp;nbsp;MB&lt;/qt&gt;</source>
- <translation type="unfinished">&lt;qt&gt;%1&amp;nbsp;មេកាបៃ&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&amp;Video</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video &amp;Memory:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Controls the amount of video memory provided to the virtual machine.</source>
- <translation type="unfinished">ត្រួតពិនិត្យ​ចំនួន​សតិ​វីឌីអូ​សរុប​ដែល​បានផ្ដល់​ឲ្យ​ម៉ាស៊ីន​និម្មិត ។</translation>
- </message>
- <message>
- <source>MB</source>
- <translation type="unfinished">មេកាបៃ</translation>
- </message>
- <message>
- <source>Extended Features:</source>
- <translation type="unfinished">លក្ខណៈសម្បត្តិ​ដែល​បានពង្រីក ៖</translation>
- </message>
- <message>
- <source>When checked, the virtual machine will get access to the 3D graphics capabilities available on the host.</source>
- <translation type="unfinished">នៅពេល​បាន​គូស​ធីគ ម៉ាស៊ីន​និម្មិត​នឹង​ចូលដំណើរការ​សមត្ថភាព​ក្រាហ្វិក​ត្រីមាត្រ​ដែល​មាន​នៅ​លើ​ម៉ាស៊ីន ។</translation>
- </message>
- <message>
- <source>Enable &amp;3D Acceleration</source>
- <translation type="unfinished">បើក​ការបង្កើន​ល្បឿន​ត្រីមាត្រ​</translation>
- </message>
- <message>
- <source>&amp;Remote Display</source>
- <translation type="unfinished"></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>
- </message>
- <message>
- <source>&amp;Enable Server</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Server &amp;Port:</source>
- <translation type="unfinished">ច្រក​ម៉ាស៊ីន​បម្រើ ៖</translation>
- </message>
- <message>
- <source>Displays the VRDP Server port number. You may specify &lt;tt&gt;0&lt;/tt&gt; (zero) to reset the port to the default value.</source>
- <translation type="unfinished">បង្ហាញ​លេខ​ច្រក​ម៉ាស៊ីនបម្រើ VRDP ។ អ្នកអាច​បញ្ជាក់ &lt;tt&gt;0&lt;/tt&gt; (សូន្យ) ដើម្បី​កំណត់​ច្រក​ទៅ​តម្លៃ​លំនាំដើម​ឡើង​វិញ ។</translation>
- </message>
- <message>
- <source>Authentication &amp;Method:</source>
- <translation type="unfinished">វិធីសាស្ត្រ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖</translation>
- </message>
- <message>
- <source>Defines the VRDP authentication method.</source>
- <translation type="unfinished">កំណត់​វិធីសាស្ត្រ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់ VRDP ។</translation>
- </message>
- <message>
- <source>Authentication &amp;Timeout:</source>
- <translation type="unfinished">អស់ពេល​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖</translation>
- </message>
- <message>
- <source>Specifies the timeout for guest authentication, in milliseconds.</source>
- <translation type="unfinished">បញ្ជាក់​ការ​អស់ពេលវេលា​សម្រាប់​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ គិត​​ជា​មិល្លី​វិនាទី ។</translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsDlg</name>
<message>
- <source>General</source>
- <translation>ទូទៅ</translation>
+ <source>General</source>
+ <translation>ទូទៅ</translation>
</message>
<message>
- <source>Storage</source>
- <translation>កា​រផ្ទុក</translation>
+ <source>Storage</source>
+ <translation>កា​រផ្ទុក</translation>
</message>
<message>
- <source>Hard Disks</source>
- <translation>ថាសរឹង</translation>
+ <source>Hard Disks</source>
+ <translation>ថាសរឹង</translation>
</message>
<message>
- <source>CD/DVD-ROM</source>
- <translation>ស៊ីឌី/ឌីវីឌី​រ៉ូម</translation>
+ <source>CD/DVD-ROM</source>
+ <translation>ស៊ីឌី/ឌីវីឌី​រ៉ូម</translation>
</message>
<message>
- <source>Floppy</source>
- <translation>ថាសទន់</translation>
+ <source>Floppy</source>
+ <translation>ថាសទន់</translation>
</message>
<message>
- <source>Audio</source>
- <translation>អូឌីយ៉ូ</translation>
+ <source>Audio</source>
+ <translation>អូឌីយ៉ូ</translation>
</message>
<message>
- <source>Network</source>
- <translation>បណ្ដាញ</translation>
+ <source>Network</source>
+ <translation>បណ្ដាញ</translation>
</message>
<message>
- <source>Ports</source>
- <translation>ច្រក</translation>
+ <source>Ports</source>
+ <translation>ច្រក</translation>
</message>
<message>
- <source>Serial Ports</source>
- <translation>ច្រកស៊េរៀល</translation>
+ <source>Serial Ports</source>
+ <translation>ច្រកស៊េរៀល</translation>
</message>
<message>
- <source>Parallel Ports</source>
- <translation>ច្រក​ស្រប</translation>
+ <source>Parallel Ports</source>
+ <translation>ច្រក​ស្រប</translation>
</message>
<message>
- <source>USB</source>
- <translation>USB</translation>
+ <source>USB</source>
+ <translation>USB</translation>
</message>
<message>
- <source>Shared Folders</source>
- <translation>ថត​ដែល​បានចែករំលែក</translation>
+ <source>Shared Folders</source>
+ <translation>ថត​ដែល​បានចែករំលែក</translation>
</message>
<message>
- <source>Remote Display</source>
- <translation type="obsolete">ការ​បង្ហាញ​ពី​ចម្ងាយ</translation>
+ <source>Remote Display</source>
+ <translation>ការ​បង្ហាញ​ពី​ចម្ងាយ</translation>
</message>
<message>
- <source>%1 - %2</source>
- <translation>%1 - %2</translation>
+ <source>%1 - %2</source>
+ <translation>%1 - %2</translation>
</message>
<message>
- <source>On the &lt;b&gt;%1&lt;/b&gt; page, %2</source>
- <translation type="obsolete">នៅ​លើ​ទំព័រ &lt;b&gt;%1&lt;/b&gt; %2</translation>
+ <source>On the &lt;b>%1&lt;/b> page, %2</source>
+ <translation>នៅ​លើ​ទំព័រ &lt;b>%1&lt;/b> %2</translation>
</message>
- <message>
- <source>System</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Display</source>
- <translation type="unfinished"></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>
- </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>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsFD</name>
<message>
- <source>Host floppy drive is not selected</source>
- <translation>ដ្រាយ​ថាស​ទន់​របស់ម៉ាស៊ីន​មិន​ត្រូវ​បាន​ជ្រើស​ទេ</translation>
+ <source>Host floppy drive is not selected</source>
+ <translation>ដ្រាយ​ថាស​ទន់​របស់ម៉ាស៊ីន​មិន​ត្រូវ​បាន​ជ្រើស​ទេ</translation>
</message>
<message>
- <source>Floppy image file is not selected</source>
- <translation>ឯកសារ​រូបភាព​ថាសទន់​មិន​ត្រូវ​បាន​ជ្រើស​ទេ</translation>
+ <source>Floppy image file is not selected</source>
+ <translation>ឯកសារ​រូបភាព​ថាសទន់​មិន​ត្រូវ​បាន​ជ្រើស​ទេ</translation>
</message>
<message>
- <source>When checked, mounts the specified media to the Floppy drive of the virtual machine.</source>
- <translation>នៅពេលបានគូសធីក ម៉ោន​មេឌៀ​ដែលបានបញ្ជាក់​ទៅ​ដ្រាយ​ថាស​ទន់​របស់​ម៉ាស៊ីន​និម្មិត ។</translation>
+ <source>When checked, mounts the specified media to the Floppy drive of the virtual machine.</source>
+ <translation>នៅពេលបានគូសធីក ម៉ោន​មេឌៀ​ដែលបានបញ្ជាក់​ទៅ​ដ្រាយ​ថាស​ទន់​របស់​ម៉ាស៊ីន​និម្មិត ។</translation>
</message>
<message>
- <source>&amp;Mount Floppy Drive</source>
- <translation>ម៉ោន​ដ្រាយ​ថាស​ទន់</translation>
+ <source>&amp;Mount Floppy Drive</source>
+ <translation>ម៉ោន​ដ្រាយ​ថាស​ទន់</translation>
</message>
<message>
- <source>Mounts the specified host Floppy drive to the virtual Floppy drive.</source>
- <translation>ម៉ោន​ដ្រាយ​ថាសទន់​របស់ម៉ាស៊ីន​ដែល​បាន​បញ្ជាក់​ទៅដ្រាយ​ថាសទន់​និម្មិត ។</translation>
+ <source>Mounts the specified host Floppy drive to the virtual Floppy drive.</source>
+ <translation>ម៉ោន​ដ្រាយ​ថាសទន់​របស់ម៉ាស៊ីន​ដែល​បាន​បញ្ជាក់​ទៅដ្រាយ​ថាសទន់​និម្មិត ។</translation>
</message>
<message>
- <source>Host Floppy &amp;Drive</source>
- <translation>ដ្រាយ​ថាសទន់​របស់​ម៉ាស៊ីន</translation>
+ <source>Host Floppy &amp;Drive</source>
+ <translation>ដ្រាយ​ថាសទន់​របស់​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Lists host Floppy drives available to mount to the virtual machine.</source>
- <translation>រាយ​ដ្រាយ​ថាសទន់​ម៉ាស៊ីន​ដែល​អាច​ម៉ោន​ទៅ​ម៉ាស៊ីន​និម្មិត​បាន ។</translation>
+ <source>Lists host Floppy drives available to mount to the virtual machine.</source>
+ <translation>រាយ​ដ្រាយ​ថាសទន់​ម៉ាស៊ីន​ដែល​អាច​ម៉ោន​ទៅ​ម៉ាស៊ីន​និម្មិត​បាន ។</translation>
</message>
<message>
- <source>Mounts the specified Floppy image to the virtual Floppy drive.</source>
- <translation>ម៉ោន​រូបភាព​ថាសទន់​ដែល​បាន​បញ្ជាក់ទៅដ្រាយ​ថាសទន់​និម្មិត ។</translation>
+ <source>Mounts the specified Floppy image to the virtual Floppy drive.</source>
+ <translation>ម៉ោន​រូបភាព​ថាសទន់​ដែល​បាន​បញ្ជាក់ទៅដ្រាយ​ថាសទន់​និម្មិត ។</translation>
</message>
<message>
- <source>&amp;Image File</source>
- <translation>ឯកសារ​រូបភាព</translation>
+ <source>&amp;Image File</source>
+ <translation>ឯកសារ​រូបភាព</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>បង្ហាញ​ឯកសារ​រូបភាព​ដើម្បីម៉ោន​ទៅកាន់ដ្រាយ​ថាសទន់​និម្មិត ហើយ​អនុញ្ញាត​ឲ្យ​ជ្រើស​រូបភាព​ផ្សេងៗ​យ៉ាង​លឿន ។</translation>
+ <source>Displays the image file to mount to the virtual Floppy drive and allows to quickly select a different image.</source>
+ <translation>បង្ហាញ​ឯកសារ​រូបភាព​ដើម្បីម៉ោន​ទៅកាន់ដ្រាយ​ថាសទន់​និម្មិត ហើយ​អនុញ្ញាត​ឲ្យ​ជ្រើស​រូបភាព​ផ្សេងៗ​យ៉ាង​លឿន ។</translation>
</message>
<message>
- <source>Invokes the Virtual Media Manager to select a Floppy image to mount.</source>
- <translation>ដកហូត​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត​ ដើម្បី​ជ្រើស​រូបភាព​ថាសទន់​ដើម្បី​ម៉ោន ។</translation>
+ <source>Invokes the Virtual Media Manager to select a Floppy image to mount.</source>
+ <translation>ដកហូត​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត​ ដើម្បី​ជ្រើស​រូបភាព​ថាសទន់​ដើម្បី​ម៉ោន ។</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsGeneral</name>
<message>
- <source>&lt;qt&gt;%1&amp;nbsp;MB&lt;/qt&gt;</source>
- <translation type="obsolete">&lt;qt&gt;%1&amp;nbsp;មេកាបៃ&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>Displays the path where snapshots of this virtual machine will be stored. Note that snapshots can take quite a lot of disk space.</source>
- <translation>បង្ហាញ​ផ្លូវ​ដែល​រូបថត​របស់ម៉ាស៊ីន​និម្មិត​នេះ​នឹង​ត្រូ​វបានផ្ទុក ។ ចំណាំ​ថា រូបថត​អាចចាប់យក​​ទំហំ​ថាស​ជា​ច្រើន​​យ៉ាង​ស្ងៀវស្ងាត់​ ។</translation>
- </message>
- <message>
- <source>&amp;Basic</source>
- <translation>មូលដ្ឋាន</translation>
- </message>
- <message>
- <source>Identification</source>
- <translation type="obsolete">ការ​កំណត់​អត្តសញ្ញាណ</translation>
- </message>
- <message>
- <source>&amp;Name:</source>
- <translation>ឈ្មោះ ៖</translation>
- </message>
- <message>
- <source>Displays the name of the virtual machine.</source>
- <translation>បង្ហាញ​ឈ្មោះ​របស់​ម៉ាស៊ីន​និម្មិត ។</translation>
+ <source>&lt;qt>%1&amp;nbsp;MB&lt;/qt></source>
+ <translation>&lt;qt>%1&amp;nbsp;មេកាបៃ&lt;/qt></translation>
</message>
<message>
- <source>Base &amp;Memory Size</source>
- <translation type="obsolete">ទំហំ​សតិ​មូលដ្ឋាន</translation>
+ <source>Displays the path where snapshots of this virtual machine will be stored. Note that snapshots can take quite a lot of disk space.</source>
+ <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="obsolete">ត្រួតពិនិត្យ​ចំនួន​សតិ​ដែលបានផ្ដល់​ទៅ​ម៉ាស៊ីន​និម្មិត ។ ប្រសិនបើ​អ្នក​ផ្ដល់​ច្រើនពេក ម៉ាស៊ីន​មិនអាច​ចាប់ផ្ដើម​បានទេ ។</translation>
+ <source>&amp;Basic</source>
+ <translation>មូលដ្ឋាន</translation>
</message>
<message>
- <source>&lt;</source>
- <translation type="obsolete">&lt;</translation>
+ <source>Identification</source>
+ <translation>ការ​កំណត់​អត្តសញ្ញាណ</translation>
</message>
<message>
- <source>&gt;</source>
- <translation type="obsolete">&gt;</translation>
+ <source>&amp;Name:</source>
+ <translation>ឈ្មោះ ៖</translation>
</message>
<message>
- <source>MB</source>
- <translation type="obsolete">មេកាបៃ</translation>
+ <source>Displays the name of the virtual machine.</source>
+ <translation>បង្ហាញ​ឈ្មោះ​របស់​ម៉ាស៊ីន​និម្មិត ។</translation>
</message>
<message>
- <source>&amp;Video Memory Size</source>
- <translation type="obsolete">ទំហំ​សតិ​វីដេអូ</translation>
+ <source>Base &amp;Memory Size</source>
+ <translation>ទំហំ​សតិ​មូលដ្ឋាន</translation>
</message>
<message>
- <source>Controls the amount of video memory provided to the virtual machine.</source>
- <translation type="obsolete">ត្រួតពិនិត្យ​ចំនួន​សតិ​វីឌីអូ​សរុប​ដែល​បានផ្ដល់​ឲ្យ​ម៉ាស៊ីន​និម្មិត ។</translation>
+ <source>Controls the amount of memory provided to the virtual machine. If you assign too much, the machine might not start.</source>
+ <translation>ត្រួតពិនិត្យ​ចំនួន​សតិ​ដែលបានផ្ដល់​ទៅ​ម៉ាស៊ីន​និម្មិត ។ ប្រសិនបើ​អ្នក​ផ្ដល់​ច្រើនពេក ម៉ាស៊ីន​មិនអាច​ចាប់ផ្ដើម​បានទេ ។</translation>
</message>
<message>
- <source>&amp;Advanced</source>
- <translation>កម្រិតខ្ពស់</translation>
+ <source>&lt;</source>
+ <translation>&lt;</translation>
</message>
<message>
- <source>Boo&amp;t Order:</source>
- <translation type="obsolete">លំដាប់​ចាប់ផ្ដើម ៖</translation>
+ <source>></source>
+ <translation>></translation>
</message>
<message>
- <source>Defines the boot device order. Use checkboxes to the left to enable or disable individual boot devices. Move items up and down to change the device order.</source>
- <translation type="obsolete">កំណត់​លំដាប់​ឧបករណ៍​ចាប់ផ្ដើម ។ ប្រើ​ប្រអប់​គូសធីក​នៅ​ខា​ងឆ្វេង​ដើម្បី​បើក ​ឬ​បិទ​ឧបករណ៍​ចាប់ផ្ដើម​នីមួយៗ ។ ផ្លាស់ទីធាតុ​ឡើង​លើ និង​ចុះក្រោម​ដើម្បី​ផ្លាស់ប្ដូរ​លំដាប់​ឧបករណ៍ ។</translation>
+ <source>MB</source>
+ <translation>មេកាបៃ</translation>
</message>
<message>
- <source>[device]</source>
- <translation type="obsolete">[ឧបករណ៍]</translation>
+ <source>&amp;Video Memory Size</source>
+ <translation>ទំហំ​សតិ​វីដេអូ</translation>
</message>
<message>
- <source>Move Up (Ctrl-Up)</source>
- <translation type="obsolete">ផ្លាស់ទីឡើង​លើ (បញ្ជា(Ctrl)-Up)</translation>
+ <source>Controls the amount of video memory provided to the virtual machine.</source>
+ <translation>ត្រួតពិនិត្យ​ចំនួន​សតិ​វីឌីអូ​សរុប​ដែល​បានផ្ដល់​ឲ្យ​ម៉ាស៊ីន​និម្មិត ។</translation>
</message>
<message>
- <source>Moves the selected boot device up.</source>
- <translation type="obsolete">ផ្លាស់ទី​ឧបករណ៍​ចាប់ផ្ដើម​ដែល​បានជ្រើ​សឡើង​លើ ។</translation>
+ <source>&amp;Advanced</source>
+ <translation>កម្រិតខ្ពស់</translation>
</message>
<message>
- <source>Move Down (Ctrl-Down)</source>
- <translation type="obsolete">ផ្លាស់ទី​ចុះក្រោម (បញ្ជា(Ctrl)-Down)</translation>
+ <source>Boo&amp;t Order:</source>
+ <translation>លំដាប់​ចាប់ផ្ដើម ៖</translation>
</message>
<message>
- <source>Moves the selected boot device down.</source>
- <translation type="obsolete">ផ្លាស់ទី​ឧបករណ៍​ចាប់ផ្ដើម​ដែល​បាន​ជ្រើស​ចុះក្រោម ។</translation>
+ <source>Defines the boot device order. Use checkboxes to the left to enable or disable individual boot devices. Move items up and down to change the device order.</source>
+ <translation>កំណត់​លំដាប់​ឧបករណ៍​ចាប់ផ្ដើម ។ ប្រើ​ប្រអប់​គូសធីក​នៅ​ខា​ងឆ្វេង​ដើម្បី​បើក ​ឬ​បិទ​ឧបករណ៍​ចាប់ផ្ដើម​នីមួយៗ ។ ផ្លាស់ទីធាតុ​ឡើង​លើ និង​ចុះក្រោម​ដើម្បី​ផ្លាស់ប្ដូរ​លំដាប់​ឧបករណ៍ ។</translation>
</message>
<message>
- <source>Extended Features:</source>
- <translation type="obsolete">លក្ខណៈសម្បត្តិ​ដែល​បានពង្រីក ៖</translation>
+ <source>[device]</source>
+ <translation>[ឧបករណ៍]</translation>
</message>
<message>
- <source>When checked, the virtual machine will support the Advanced Configuration and Power Management Interface (ACPI). &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable this feature after having installed a Windows guest operating system!</source>
- <translation type="obsolete">នៅពេល​បានគូស​ធីក​ ម៉ាស៊ីន​និម្មិត​នឹង​គាំទ្រ​ការ​កំណត់​រចនាសម្ព័ន្ធ​កម្រិត​ខ្ពស់ និង​ចំណុច​ប្រទាក់​គ្រប់គ្រង​ថាមពល (ACPI) ។ &lt;b&gt;ចំណាំ ៖&lt;/b&gt; កុំ​បិទ​លក្ខណៈពិសេស​នេះ​ បន្ទាប់​ពី​បានដំឡើង​ប្រព័ន្ធ​ប្រតិបត្តិការ​វីនដូ​របស់ម៉ាស៊ីន​ភ្ញៀវ !</translation>
+ <source>Move Up (Ctrl-Up)</source>
+ <translation>ផ្លាស់ទីឡើង​លើ (បញ្ជា(Ctrl)-Up)</translation>
</message>
<message>
- <source>Enable A&amp;CPI</source>
- <translation type="obsolete">បើក ACPI</translation>
+ <source>Moves the selected boot device up.</source>
+ <translation>ផ្លាស់ទី​ឧបករណ៍​ចាប់ផ្ដើម​ដែល​បានជ្រើ​សឡើង​លើ ។</translation>
</message>
<message>
- <source>When checked, the virtual machine will support the Input Output APIC (IO APIC), which may slightly decrease the VM performance. &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable this feature after having installed a Windows guest operating system!</source>
- <translation type="obsolete">នៅពេល​បាន​គូស​ធីក ម៉ាស៊ីន​និម្មិត​នឹង​គាំទ្រ​ Input Output APIC (IO APIC) ដែល​អាច​បន្ថយ​ការ​អនុវត្ត​របស់ VM តិចតួច ។ &lt;b&gt;ចំណាំ ៖&lt;/b&gt; កុំ​បិទ​លក្ខណៈ​ពិសេស​នេះ​បន្ទាប់ពី​ដំឡើង​ប្រព័ន្ធ​ប្រតិបត្តិការ​វីនដូ​របស់ម៉ាស៊ីន​ភ្ញៀវ !</translation>
+ <source>Move Down (Ctrl-Down)</source>
+ <translation>ផ្លាស់ទី​ចុះក្រោម (បញ្ជា(Ctrl)-Down)</translation>
</message>
<message>
- <source>Enable IO A&amp;PIC</source>
- <translation type="obsolete">បើក IO APIC</translation>
+ <source>Moves the selected boot device down.</source>
+ <translation>ផ្លាស់ទី​ឧបករណ៍​ចាប់ផ្ដើម​ដែល​បាន​ជ្រើស​ចុះក្រោម ។</translation>
</message>
<message>
- <source>When checked, the virtual machine will try to make use of the host CPU&apos;s hardware virtualization extensions such as Intel VT-x and AMD-V.</source>
- <translation type="obsolete">នៅពេល​បាន​គូស​ធីគ ម៉ាស៊ីន​និម្មិត​នឹង​ព្យាយាម​ប្រាកដ​ថា​ផ្នែក​បន្ថែម​និម្មិត​ផ្នែក​រឹង​របស់​ស៊ីភីយូ​របស់ម៉ាស៊ីន​ដូចជា Intel VT-x និង AMD-V ។</translation>
+ <source>Extended Features:</source>
+ <translation>លក្ខណៈសម្បត្តិ​ដែល​បានពង្រីក ៖</translation>
</message>
<message>
- <source>Enable &amp;VT-x/AMD-V</source>
- <translation type="obsolete">បើក VT-x/AMD-V</translation>
+ <source>When checked, the virtual machine will support the Advanced Configuration and Power Management Interface (ACPI). &lt;b>Note:&lt;/b> don't disable this feature after having installed a Windows guest operating system!</source>
+ <translation>នៅពេល​បានគូស​ធីក​ ម៉ាស៊ីន​និម្មិត​នឹង​គាំទ្រ​ការ​កំណត់​រចនាសម្ព័ន្ធ​កម្រិត​ខ្ពស់ និង​ចំណុច​ប្រទាក់​គ្រប់គ្រង​ថាមពល (ACPI) ។ &lt;b>ចំណាំ ៖&lt;/b> កុំ​បិទ​លក្ខណៈពិសេស​នេះ​ បន្ទាប់​ពី​បានដំឡើង​ប្រព័ន្ធ​ប្រតិបត្តិការ​វីនដូ​របស់ម៉ាស៊ីន​ភ្ញៀវ !</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>
+ <source>Enable A&amp;CPI</source>
+ <translation>បើក ACPI</translation>
</message>
<message>
- <source>Enable PA&amp;E/NX</source>
- <translation type="obsolete">បើក PAE/NX</translation>
+ <source>When checked, the virtual machine will support the Input Output APIC (IO APIC), which may slightly decrease the VM performance. &lt;b>Note:&lt;/b> don't disable this feature after having installed a Windows guest operating system!</source>
+ <translation>នៅពេល​បាន​គូស​ធីក ម៉ាស៊ីន​និម្មិត​នឹង​គាំទ្រ​ Input Output APIC (IO APIC) ដែល​អាច​បន្ថយ​ការ​អនុវត្ត​របស់ VM តិចតួច ។ &lt;b>ចំណាំ ៖&lt;/b> កុំ​បិទ​លក្ខណៈ​ពិសេស​នេះ​បន្ទាប់ពី​ដំឡើង​ប្រព័ន្ធ​ប្រតិបត្តិការ​វីនដូ​របស់ម៉ាស៊ីន​ភ្ញៀវ !</translation>
</message>
<message>
- <source>&amp;Shared Clipboard:</source>
- <translation>ក្ដារតម្បៀតខ្ទាស់​ដែល​បាន​ចែករំលែក ៖</translation>
+ <source>Enable IO A&amp;PIC</source>
+ <translation>បើក IO APIC</translation>
</message>
<message>
- <source>Defines the mode of sharing the clipboard between the guest and the host OS. Note that this feature requires Guest Additions to be installed in the guest OS.</source>
- <translation>កំណត់​របៀប​ចែករំលែក​ក្ដារតម្បៀតខ្ទាស់​រវាង​ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ និង​របស់ម៉ាស៊ីន ។ ចំណាំ​ថា លក្ខណៈពិសេស​នេះ​តម្រូវ​ឲ្យ​ដំឡើង​ផ្នែក​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ​ក្នុង​ប្រព័ន្ធប្រតិបត្តិការ​របស់​ម៉ាស៊ីន ។</translation>
+ <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>នៅពេល​បាន​គូស​ធីគ ម៉ាស៊ីន​និម្មិត​នឹង​ព្យាយាម​ប្រាកដ​ថា​ផ្នែក​បន្ថែម​និម្មិត​ផ្នែក​រឹង​របស់​ស៊ីភីយូ​របស់ម៉ាស៊ីន​ដូចជា Intel VT-x និង AMD-V ។</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>
+ <source>Enable &amp;VT-x/AMD-V</source>
+ <translation>បើក VT-x/AMD-V</translation>
</message>
<message>
- <source>&amp;IDE Controller Type:</source>
- <translation type="obsolete">ប្រភេទ​វត្ថុ​បញ្ជា IDE ៖</translation>
+ <source>When checked, the Physical Address Extension (PAE) feature of the host CPU will be exposed to the virtual machine.</source>
+ <translation>នៅពេល​បាន​គូស​ធីក លក្ខណៈពិសេស​របស់ Physical Address Extension (PAE) នៃ​ស៊ីភីយូ​របស់​ម៉ាស៊ីន​នឹង​ត្រូវ​បានបង្ហាញ​ដល់​ម៉ាស៊ីន​និម្មិត ។</translation>
</message>
<message>
- <source>S&amp;napshot Folder:</source>
- <translation>ថត​រូបថត ៖</translation>
+ <source>Enable PA&amp;E/NX</source>
+ <translation>បើក PAE/NX</translation>
</message>
<message>
- <source>&amp;Description</source>
- <translation>សេចក្ដី​ពិពណ៌នា</translation>
+ <source>&amp;Shared Clipboard:</source>
+ <translation>ក្ដារតម្បៀតខ្ទាស់​ដែល​បាន​ចែករំលែក ៖</translation>
</message>
<message>
- <source>Displays the description of the virtual machine. The description field is useful for commenting configuration details of the installed guest OS.</source>
- <translation>បង្ហាញ​សេចក្ដីពិពណ៌នា​របស់ម៉ាស៊ីន​និម្មិត ។ វាល​សេចក្ដី​ពិពន៌នា​មានប្រយោជន៍​សម្រាប់​ផ្ដល់​យោបល់​អំពី​សេចក្ដី​លម្អិត​កំណត់​រចនាសម្ព័ន្ធ​របស់​ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ​ដែល​បាន​ដំឡើង ។</translation>
+ <source>Defines the mode of sharing the clipboard between the guest and the host OS. Note that this feature requires Guest Additions to be installed in the guest OS.</source>
+ <translation>កំណត់​របៀប​ចែករំលែក​ក្ដារតម្បៀតខ្ទាស់​រវាង​ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ និង​របស់ម៉ាស៊ីន ។ ចំណាំ​ថា លក្ខណៈពិសេស​នេះ​តម្រូវ​ឲ្យ​ដំឡើង​ផ្នែក​បន្ថែម​ម៉ាស៊ីន​ភ្ញៀវ​ក្នុង​ប្រព័ន្ធប្រតិបត្តិការ​របស់​ម៉ាស៊ីន ។</translation>
</message>
<message>
- <source>&amp;Other</source>
- <translation type="obsolete">ផ្សេងៗ</translation>
+ <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>កំណត់ប្រភេទ​ឧបករណ៍​បញ្ជា IDE និម្មិត ។ ដោយ​អាស្រ័យ​លើ​តម្លៃ​នេះ VirtualBox នឹង​ផ្ដល់​នូវ​ឧបករណ៍​ផ្នែក​រឹង IDE ផ្សេងៗ​គ្នា​ដល់​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ។</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>
+ <source>&amp;IDE Controller Type:</source>
+ <translation>ប្រភេទ​វត្ថុ​បញ្ជា IDE ៖</translation>
</message>
<message>
- <source>&amp;Remember Mounted Media</source>
- <translation type="obsolete">មេឌៀ​ដែលបាន​ម៉ោន​សមាជិក</translation>
+ <source>S&amp;napshot Folder:</source>
+ <translation>ថត​រូបថត ៖</translation>
</message>
<message>
- <source>Runtime:</source>
- <translation type="obsolete">ពេលវេលា​រត់៖</translation>
+ <source>&amp;Description</source>
+ <translation>សេចក្ដី​ពិពណ៌នា</translation>
</message>
<message>
- <source>you have assigned more than &lt;b&gt;75%&lt;/b&gt; of your computer&apos;s memory (&lt;b&gt;%1&lt;/b&gt;) to the virtual machine. Not enough memory is left for your host operating system. Please select a smaller amount.</source>
- <translation type="obsolete">អ្នក​បានផ្ដល់​សតិ​កុំព្យូទ័រ​ច្រើនជាង &lt;b&gt;75%&lt;/b&gt; នៃកុំព្យូទ័រ​របស់ (&lt;b&gt;%1&lt;/b&gt;) ដល់​ម៉ាស៊ីន​និម្មមិត ។ គ្មាន​សតិ​នៅសល់​គ្រប់គ្រាន់​សម្រាប់ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​របស់​អ្នក​ទេ ។ សូម​ជ្រើស​ចំនួន​សតិ​តូចជាង​នេះ ។</translation>
+ <source>Displays the description of the virtual machine. The description field is useful for commenting configuration details of the installed guest OS.</source>
+ <translation>បង្ហាញ​សេចក្ដីពិពណ៌នា​របស់ម៉ាស៊ីន​និម្មិត ។ វាល​សេចក្ដី​ពិពន៌នា​មានប្រយោជន៍​សម្រាប់​ផ្ដល់​យោបល់​អំពី​សេចក្ដី​លម្អិត​កំណត់​រចនាសម្ព័ន្ធ​របស់​ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​ភ្ញៀវ​ដែល​បាន​ដំឡើង ។</translation>
</message>
<message>
- <source>you have assigned more than &lt;b&gt;50%&lt;/b&gt; of your computer&apos;s memory (&lt;b&gt;%1&lt;/b&gt;) to the virtual machine. Not enough memory might be left for your host operating system. Continue at your own risk.</source>
- <translation type="obsolete">អ្នក​បានផ្ដល់​សិត​កុំព្យូទ័រ​ច្រើនជាង &lt;b&gt;50%&lt;/b&gt; នៃ​សតិ​កុំព្យូទ័រ​របស់​អ្នក (&lt;b&gt;%1&lt;/b&gt;) ដល់​ម៉ាស៊ីន​និម្មិត ។ គ្មាន​សតិ​គ្រប់គ្រាន់​នៅ​សល់​សម្រាប់​ប្រព័ន្ធ​ប្រតិបត្តិកា​រម៉ាស៊ីន​របស់​អ្នក​ទេ ។ បន្ត​​ទាំង​គ្រោះថ្នាក់ឬ ?</translation>
+ <source>&amp;Other</source>
+ <translation>ផ្សេងៗ</translation>
</message>
<message>
- <source>you have assigned less than &lt;b&gt;%1&lt;/b&gt; for video memory which is the minimum amount required to switch the virtual machine to fullscreen or seamless mode.</source>
- <translation type="obsolete">អ្នក​បាន​ផ្ដល់​សតិ​វីដេអូ​តិចជាង &lt;b&gt;%1&lt;/b&gt; សម្រាប់​សតិ​វីដេអូ​ដែល​ជា​ចំនួន​អប្បបរមា​ដែល​បានទាមទារ​ឲ្យ​ប្ដូរ​ម៉ាស៊ីន​និម្មិត​ទៅ​​របៀប​ពេញអេក្រង់ ឬ​គ្មាន​ថ្នេរ ។</translation>
+ <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>When checked, the virtual machine will get access to the 3D graphics capabilities available on the host.</source>
- <translation type="obsolete">នៅពេល​បាន​គូស​ធីគ ម៉ាស៊ីន​និម្មិត​នឹង​ចូលដំណើរការ​សមត្ថភាព​ក្រាហ្វិក​ត្រីមាត្រ​ដែល​មាន​នៅ​លើ​ម៉ាស៊ីន ។</translation>
+ <source>&amp;Remember Mounted Media</source>
+ <translation>មេឌៀ​ដែលបាន​ម៉ោន​សមាជិក</translation>
</message>
<message>
- <source>Enable &amp;3D Acceleration</source>
- <translation type="obsolete">បើក​ការបង្កើន​ល្បឿន​ត្រីមាត្រ​</translation>
+ <source>Runtime:</source>
+ <translation>ពេលវេលា​រត់៖</translation>
</message>
<message>
- <source>Removable Media:</source>
- <translation type="unfinished"></translation>
+ <source>you have assigned more than &lt;b>75%&lt;/b> of your computer's memory (&lt;b>%1&lt;/b>) to the virtual machine. Not enough memory is left for your host operating system. Please select a smaller amount.</source>
+ <translation>អ្នក​បានផ្ដល់​សតិ​កុំព្យូទ័រ​ច្រើនជាង &lt;b>75%&lt;/b> នៃកុំព្យូទ័រ​របស់ (&lt;b>%1&lt;/b>) ដល់​ម៉ាស៊ីន​និម្មមិត ។ គ្មាន​សតិ​នៅសល់​គ្រប់គ្រាន់​សម្រាប់ប្រព័ន្ធ​ប្រតិបត្តិការ​ម៉ាស៊ីន​របស់​អ្នក​ទេ ។ សូម​ជ្រើស​ចំនួន​សតិ​តូចជាង​នេះ ។</translation>
</message>
<message>
- <source>&amp;Remember Runtime Changes</source>
- <translation type="unfinished"></translation>
+ <source>you have assigned more than &lt;b>50%&lt;/b> of your computer's memory (&lt;b>%1&lt;/b>) to the virtual machine. Not enough memory might be left for your host operating system. Continue at your own risk.</source>
+ <translation>អ្នក​បានផ្ដល់​សិត​កុំព្យូទ័រ​ច្រើនជាង &lt;b>50%&lt;/b> នៃ​សតិ​កុំព្យូទ័រ​របស់​អ្នក (&lt;b>%1&lt;/b>) ដល់​ម៉ាស៊ីន​និម្មិត ។ គ្មាន​សតិ​គ្រប់គ្រាន់​នៅ​សល់​សម្រាប់​ប្រព័ន្ធ​ប្រតិបត្តិកា​រម៉ាស៊ីន​របស់​អ្នក​ទេ ។ បន្ត​​ទាំង​គ្រោះថ្នាក់ឬ ?</translation>
</message>
<message>
- <source>Mini ToolBar:</source>
- <translation type="unfinished"></translation>
+ <source>you have assigned less than &lt;b>%1&lt;/b> for video memory which is the minimum amount required to switch the virtual machine to fullscreen or seamless mode.</source>
+ <translation>អ្នក​បាន​ផ្ដល់​សតិ​វីដេអូ​តិចជាង &lt;b>%1&lt;/b> សម្រាប់​សតិ​វីដេអូ​ដែល​ជា​ចំនួន​អប្បបរមា​ដែល​បានទាមទារ​ឲ្យ​ប្ដូរ​ម៉ាស៊ីន​និម្មិត​ទៅ​​របៀប​ពេញអេក្រង់ ឬ​គ្មាន​ថ្នេរ ។</translation>
</message>
<message>
- <source>If checked, show the Mini ToolBar in Fullscreen and Seamless modes.</source>
- <translation type="unfinished"></translation>
+ <source>When checked, the virtual machine will get access to the 3D graphics capabilities available on the host.</source>
+ <translation>នៅពេល​បាន​គូស​ធីគ ម៉ាស៊ីន​និម្មិត​នឹង​ចូលដំណើរការ​សមត្ថភាព​ក្រាហ្វិក​ត្រីមាត្រ​ដែល​មាន​នៅ​លើ​ម៉ាស៊ីន ។</translation>
</message>
<message>
- <source>Show In &amp;Fullscreen/Seamless</source>
- <translation type="unfinished"></translation>
+ <source>Enable &amp;3D Acceleration</source>
+ <translation>បើក​ការបង្កើន​ល្បឿន​ត្រីមាត្រ​</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsHD</name>
<message>
- <source>No hard disk is selected for &lt;i&gt;%1&lt;/i&gt;</source>
- <translation>គ្មាន​ថាសរឹង​ត្រូវ​បាន​​ជ្រើស​សម្រាប់ &lt;i&gt;%1&lt;/i&gt; នោះទេ</translation>
- </message>
- <message>
- <source>&lt;i&gt;%1&lt;/i&gt; uses the hard disk that is already attached to &lt;i&gt;%2&lt;/i&gt;</source>
- <translation>&lt;i&gt;%1&lt;/i&gt; ប្រើថាសរឹង​ដែល​ត្រូវ​បាន​ភ្ជាប់​ទៅ កាន់ &lt;i&gt;%2&lt;/i&gt; រួច​​ហើយ</translation>
- </message>
- <message>
- <source>&amp;Add Attachment</source>
- <translation>បន្ថែម​ការ​ភ្ជាប់</translation>
- </message>
- <message>
- <source>&amp;Remove Attachment</source>
- <translation>យក​កា​រភ្ជាប់​ចេញ</translation>
- </message>
- <message>
- <source>&amp;Select Hard Disk</source>
- <translation>ជ្រើស​ថាសរឹង​ថ្មី</translation>
+ <source>No hard disk is selected for &lt;i>%1&lt;/i></source>
+ <translation>គ្មាន​ថាសរឹង​ត្រូវ​បាន​​ជ្រើស​សម្រាប់ &lt;i>%1&lt;/i> នោះទេ</translation>
</message>
<message>
- <source>Adds a new hard disk attachment.</source>
- <translation>បន្ថែម​កា​រភ្ជាប់​ថាសរឹង​ថ្មី ។</translation>
+ <source>&lt;i>%1&lt;/i> uses the hard disk that is already attached to &lt;i>%2&lt;/i></source>
+ <translation>&lt;i>%1&lt;/i> ប្រើថាសរឹង​ដែល​ត្រូវ​បាន​ភ្ជាប់​ទៅ កាន់ &lt;i>%2&lt;/i> រួច​​ហើយ</translation>
</message>
<message>
- <source>Removes the highlighted hard disk attachment.</source>
- <translation>យក​កា​រភ្ជាប់​ថាសរឹង​ដែល​បាន​បន្លិច​ចេញ ។</translation>
+ <source>&amp;Add Attachment</source>
+ <translation>បន្ថែម​ការ​ភ្ជាប់</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>
+ <source>&amp;Remove Attachment</source>
+ <translation>យក​កា​រភ្ជាប់​ចេញ</translation>
</message>
<message>
- <source>&amp;Enable SATA Controller</source>
- <translation type="obsolete">បើក​​ឧបករណ៍​ត្រួតពិនិត្យ​ SATA</translation>
+ <source>&amp;Select Hard Disk</source>
+ <translation>ជ្រើស​ថាសរឹង​ថ្មី</translation>
</message>
<message>
- <source>&amp;Attachments</source>
- <translation>ការ​ភ្ជាប់</translation>
+ <source>Adds a new hard disk attachment.</source>
+ <translation>បន្ថែម​កា​រភ្ជាប់​ថាសរឹង​ថ្មី ។</translation>
</message>
<message>
- <source>Lists all hard disks attached to this machine. Use a mouse click or the &lt;tt&gt;Space&lt;/tt&gt; key on the highlighted item to activate the drop-down list and choose the desired value. Use the context menu or buttons to the right to add or remove hard disk attachments.</source>
- <translation>រាយ​ថាសរឹង​ទាំង​អស់​ដែលបានភ្ជាប់​ទៅ​ម៉ាស៊ីននេះ ។ ប្រើ​ការ​ចុច​កណ្ដុរ​​ឬ​គ្រាប់ចុច​ &lt;tt&gt;ចន្លោះ​មិនឃើញ (Space)&lt;/tt&gt; នៅ​លើ​ធាតុ​ដែល​បាន​បន្លិច ដើម្បី​ធ្វើ​ឲ្យ​បញ្ជីទម្លាក់ចុះ​សកម្ម ហើយ​ជ្រើស​តម្លៃ​ដែល​ចង់​បាន ។ ប្រើម៉ឺនុយ​បរិបទ​ ឬ​ប៊ូតុង​​នៅ​ខាង​ស្ដាំ​ ដើម្បី​បន្ថែម​ ឬ​យក​ការ​ភ្ជាប់​ថាសរឹង​ចេញ ។</translation>
+ <source>Removes the highlighted hard disk attachment.</source>
+ <translation>យក​កា​រភ្ជាប់​ថាសរឹង​ដែល​បាន​បន្លិច​ចេញ ។</translation>
</message>
<message>
- <source>Invokes the Virtual Media Manager to select a hard disk to attach to the currently highlighted slot.</source>
- <translation>ដកហូត​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត ដើម្បី​ជ្រើស​ថាសរឹង ត្រូវ​ភ្ជាប់​ទៅ​រន្ធ​ដែល​បាន​បន្លិច​បច្ចុប្បន្ន ។</translation>
+ <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>នៅពេល​បានគូស​ធីក បើក​ឧបករណ៍​ត្រួតពិនិត្យ​ SATA និម្មិត​របស់​ម៉ាស៊ីន​នេះ ។ ចំណាំ​ថា អ្នក​មិនអាច​ភ្ជាប់​ថាសរឹង​ទៅច្រក SATA បាន​ទេ នៅពេល​ដែល​បិទ​ឧបករណ៍​ត្រួតពិនិត្យ​ SATA និម្មិត ។</translation>
</message>
<message>
- <source>If checked, it will show differencing hard disks actually attached to the slots instead of their base hard disks (shown in case of indirect attachments) and will also let attach other differencing hard disks explicitly. Check this only if you need a complex hard disk setup.</source>
- <translation>ប្រសិនបើ​បានគូសធីគ វា​នឹង​បង្ហាញ​ថាសរឹង​ផ្សេងៗ​ដែល​បានភ្ជាប់​ទៅ​រន្ធ​ជំនួស​ឲ្យ​ថាសរឹង​មូលដ្ឋាន​​របស់​ពួកវា (បង្ហាញតែ​ក្នុងករណី​ដែល​មានការ​ភ្ជាប់​ដោយ​ប្រយោល​ប៉ុណ្ណោះ) ហើយ​នឹង​អនុញ្ញាត​ឲ្យ​ភ្ជាប់​ថាសរឹង​ផ្សេងៗ​ផងដែរ ។ គូស​ធីក​តែ​ក្នុងករណី​ដែល​អ្នក​ត្រូវការ​ការ​រៀបចំ​ថាសរឹង​ស្មុគស្មាញ​ប៉ុណ្ណោះ ។</translation>
+ <source>&amp;Enable SATA Controller</source>
+ <translation>បើក​​ឧបករណ៍​ត្រួតពិនិត្យ​ SATA</translation>
</message>
<message>
- <source>&amp;Show Differencing Hard Disks</source>
- <translation>បង្ហាញ​ថាសរឹង​ផ្សេងៗ​គ្នា</translation>
+ <source>&amp;Attachments</source>
+ <translation>ការ​ភ្ជាប់</translation>
</message>
<message>
- <source>When checked, enables an additional virtual controller (either SATA or SCSI) of this machine.</source>
- <translation type="unfinished"></translation>
+ <source>Lists all hard disks attached to this machine. Use a mouse click or the &lt;tt>Space&lt;/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>រាយ​ថាសរឹង​ទាំង​អស់​ដែលបានភ្ជាប់​ទៅ​ម៉ាស៊ីននេះ ។ ប្រើ​ការ​ចុច​កណ្ដុរ​​ឬ​គ្រាប់ចុច​ &lt;tt>ចន្លោះ​មិនឃើញ (Space)&lt;/tt> នៅ​លើ​ធាតុ​ដែល​បាន​បន្លិច ដើម្បី​ធ្វើ​ឲ្យ​បញ្ជីទម្លាក់ចុះ​សកម្ម ហើយ​ជ្រើស​តម្លៃ​ដែល​ចង់​បាន ។ ប្រើម៉ឺនុយ​បរិបទ​ ឬ​ប៊ូតុង​​នៅ​ខាង​ស្ដាំ​ ដើម្បី​បន្ថែម​ ឬ​យក​ការ​ភ្ជាប់​ថាសរឹង​ចេញ ។</translation>
</message>
<message>
- <source>&amp;Enable Additional Controller</source>
- <translation type="unfinished"></translation>
+ <source>Invokes the Virtual Media Manager to select a hard disk to attach to the currently highlighted slot.</source>
+ <translation>ដកហូត​កម្មវិធី​គ្រប់គ្រង​មេឌៀ​និម្មិត ដើម្បី​ជ្រើស​ថាសរឹង ត្រូវ​ភ្ជាប់​ទៅ​រន្ធ​ដែល​បាន​បន្លិច​បច្ចុប្បន្ន ។</translation>
</message>
<message>
- <source>IDE &amp;Controller Type</source>
- <translation type="unfinished"></translation>
+ <source>If checked, it will show differencing hard disks actually attached to the slots instead of their base hard disks (shown in case of indirect attachments) and will also let attach other differencing hard disks explicitly. Check this only if you need a complex hard disk setup.</source>
+ <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="unfinished">កំណត់ប្រភេទ​ឧបករណ៍​បញ្ជា IDE និម្មិត ។ ដោយ​អាស្រ័យ​លើ​តម្លៃ​នេះ VirtualBox នឹង​ផ្ដល់​នូវ​ឧបករណ៍​ផ្នែក​រឹង IDE ផ្សេងៗ​គ្នា​ដល់​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ ។</translation>
+ <source>&amp;Show Differencing Hard Disks</source>
+ <translation>បង្ហាញ​ថាសរឹង​ផ្សេងៗ​គ្នា</translation>
</message>
-</context>
-<context>
+ </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>
- <message>
- <source>&amp;Enable Network Adapter</source>
- <translation>បើក​អាដាប់ទ័រ​បណ្ដាញ</translation>
- </message>
- <message>
- <source>A&amp;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>
- <message>
- <source>&amp;Attached to:</source>
- <translation>បាន​ភ្ជាប់​ទៅ ៖</translation>
- </message>
- <message>
- <source>Controls how this virtual adapter is attached to the real network of the Host OS.</source>
- <translation>ត្រួតពិនិត្យ​វិធី​ដែល​អាដាប់ទ័រ​និម្មិត​នេះ​ត្រូវ​បាន​ភ្ជាប់​ទៅ​បណ្ដាញ​ពិតប្រាកដ​របស់​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន ។</translation>
- </message>
- <message>
- <source>&amp;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>&amp;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 type="obsolete">បង្ហាញ​អាសយដ្ឋាន MAC របស់​អាដាប់ទ័រ​នេះ ។ វា​មាន​តួអក្សរ​យ៉ាង​ជាក់លាក់​ចំនួន​ ១២ ដែល​បាន​ជ្រើស​ពី {0-9,A-F} ។ ចំណាំ​ថា​តួអក្សរ​ទីពីរ​ត្រូវ​តែ​ជា​​តួលេខ​គូ ។</translation>
+ <source>Select TAP setup application</source>
+ <translation>ជ្រើស​កម្មវិធី​រៀបចំ TAP</translation>
</message>
<message>
- <source>Generates a new random MAC address.</source>
- <translation type="obsolete">បង្កើត​អាសយដ្ឋាន MAC ចៃដន្យ​ថ្មី ។</translation>
+ <source>Select TAP terminate application</source>
+ <translation>ជ្រើស​កម្មវិធី​បញ្ចប់ TAP</translation>
</message>
<message>
- <source>&amp;Generate</source>
- <translation type="obsolete">បង្កើត</translation>
+ <source>When checked, plugs this virtual network adapter into the virtual machine.</source>
+ <translation>នៅពេល​គូស​ធីក ដោត​អាដាប់ទ័រ​បណ្ដាញ​និម្មិត​ទៅ​ក្នុងម៉ាស៊ីន​នកម្មិត ។</translation>
</message>
<message>
- <source>Indicates whether the virtual network cable is plugged in on machine startup or not.</source>
- <translation type="obsolete">បង្ហាញ​ថាតើ​ខ្សែ​បណ្ដាញ​និម្មិត​ត្រូ​វបានដោត​​នៅពេល​ម៉ាស៊ីន​ចាប់ផ្ដើម​ ឬ​ក៏អត់ ។</translation>
+ <source>&amp;Enable Network Adapter</source>
+ <translation>បើក​អាដាប់ទ័រ​បណ្ដាញ</translation>
</message>
<message>
- <source>Ca&amp;ble Connected</source>
- <translation type="obsolete">បាន​តភ្ជាប់​ខ្សែ</translation>
+ <source>A&amp;dapter Type:</source>
+ <translation>ប្រភេទ​អាដាប់ទ័រ ៖</translation>
</message>
<message>
- <source>&amp;Interface Name:</source>
- <translation type="obsolete">ឈ្មោះ​ចំណុច​ប្រទាក់ ៖</translation>
+ <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>
<message>
- <source>Displays the TAP interface name.</source>
- <translation type="obsolete">បង្ហាញ​ឈ្មោះ​ចំណុច​ប្រទាក់ TAP ។</translation>
+ <source>&amp;Attached to:</source>
+ <translation>បាន​ភ្ជាប់​ទៅ ៖</translation>
</message>
<message>
- <source>&amp;Setup Application:</source>
- <translation type="obsolete">រៀបចំ​កម្មវិធី ៖</translation>
+ <source>Controls the way how this virtual adapter is attached to the real network of the Host OS.</source>
+ <translation>ត្រួតពិនិត្យ​វិធី​ដែល​អាដាប់ទ័រ​និម្មិត​នេះ​ត្រូវ​បាន​ភ្ជាប់​ទៅ​បណ្ដាញ​ពិតប្រាកដ​របស់​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន ។</translation>
</message>
<message>
- <source>Displays the command executed to set up the TAP interface.</source>
- <translation type="obsolete">បង្ហាញ​ពាក្យ​បញ្ជា​បានប្រតិបត្តិ​ដើម្បី​រៀបចំ​​ចំណុច​ប្រទាក់ TAP ។</translation>
+ <source>&amp;Network Name:</source>
+ <translation>ឈ្មោះ​បណ្ដាញ ៖</translation>
</message>
<message>
- <source>Selects the setup application.</source>
- <translation type="obsolete">ជ្រើស​ការរៀបចំ​កម្មវិធី ។</translation>
+ <source>Displays the name of the internal network selected for this adapter.</source>
+ <translation>បង្ហាញ​ឈ្មោះ​របស់​បណ្ដាញ​ខាង​ក្នុង​ដែល​បាន​ជ្រើស​សម្រាប់​អាដាប់ទ័រ​នេះ ។</translation>
</message>
<message>
- <source>&amp;Terminate Application:</source>
- <translation type="obsolete">បញ្ចប់​កម្មវិធី ៖</translation>
+ <source>&amp;MAC Address:</source>
+ <translation>អាសយដ្ឋាន MAC ៖</translation>
</message>
<message>
- <source>Displays the command executed to terminate the TAP interface.</source>
- <translation type="obsolete">បង្ហាញ​ពាក្យ​បញ្ជា​ដែលបាន​ប្រតិបត្តិ​ដើម្បីបញ្ចប់​ចំណុច​ប្រទាក់ TAP ។</translation>
+ <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>
<message>
- <source>Selects the terminate application.</source>
- <translation type="obsolete">ជ្រើស​កម្មវិធី​បញ្ចប់ ។</translation>
+ <source>Generates a new random MAC address.</source>
+ <translation>បង្កើត​អាសយដ្ឋាន MAC ចៃដន្យ​ថ្មី ។</translation>
</message>
<message>
- <source>Host Interface Settings</source>
- <translation type="obsolete">កា​រ​កំណត់​ចំណុច​ប្រទាក់​ម៉ាស៊ីន</translation>
+ <source>&amp;Generate</source>
+ <translation>បង្កើត</translation>
</message>
<message>
- <source>no bridged network adapter is selected</source>
- <translation type="unfinished"></translation>
+ <source>Indicates whether the virtual network cable is plugged in on machine startup or not.</source>
+ <translation>បង្ហាញ​ថាតើ​ខ្សែ​បណ្ដាញ​និម្មិត​ត្រូ​វបានដោត​​នៅពេល​ម៉ាស៊ីន​ចាប់ផ្ដើម​ ឬ​ក៏អត់ ។</translation>
</message>
<message>
- <source>no internal network name is specified</source>
- <translation type="unfinished"></translation>
+ <source>Ca&amp;ble Connected</source>
+ <translation>បាន​តភ្ជាប់​ខ្សែ</translation>
</message>
<message>
- <source>no host-only network adapter is selected</source>
- <translation type="unfinished"></translation>
+ <source>&amp;Interface Name:</source>
+ <translation>ឈ្មោះ​ចំណុច​ប្រទាក់ ៖</translation>
</message>
<message>
- <source>Not selected</source>
- <comment>network adapter name</comment>
- <translation type="unfinished"></translation>
+ <source>Displays the TAP interface name.</source>
+ <translation>បង្ហាញ​ឈ្មោះ​ចំណុច​ប្រទាក់ TAP ។</translation>
</message>
<message>
- <source>Adapter &amp;Type:</source>
- <translation type="unfinished"></translation>
+ <source>&amp;Setup Application:</source>
+ <translation>រៀបចំ​កម្មវិធី ៖</translation>
</message>
<message>
- <source>Open additional options dialog for current attachment type.</source>
- <translation type="unfinished"></translation>
+ <source>Displays the command executed to set up the TAP interface.</source>
+ <translation>បង្ហាញ​ពាក្យ​បញ្ជា​បានប្រតិបត្តិ​ដើម្បី​រៀបចំ​​ចំណុច​ប្រទាក់ TAP ។</translation>
</message>
<message>
- <source>&amp;Name:</source>
- <translation type="unfinished">ឈ្មោះ ៖</translation>
+ <source>Selects the setup application.</source>
+ <translation>ជ្រើស​ការរៀបចំ​កម្មវិធី ។</translation>
</message>
<message>
- <source>Selects the name of the network adapter if attachment type is equivalent to &lt;b&gt;Bridged Adapter&lt;/b&gt; or &lt;b&gt;Host-only Adapter&lt;/b&gt; and the name of the internal network if attachment type is equivalent to &lt;b&gt;Internal Network&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <source>&amp;Terminate Application:</source>
+ <translation>បញ្ចប់​កម្មវិធី ៖</translation>
</message>
-</context>
-<context>
- <name>VBoxVMSettingsNetworkDetails</name>
<message>
- <source>Additional Options</source>
- <translation type="unfinished"></translation>
+ <source>Displays the command executed to terminate the TAP interface.</source>
+ <translation>បង្ហាញ​ពាក្យ​បញ្ជា​ដែលបាន​ប្រតិបត្តិ​ដើម្បីបញ្ចប់​ចំណុច​ប្រទាក់ TAP ។</translation>
</message>
<message>
- <source>Guest &amp;MAC Address:</source>
- <translation type="unfinished"></translation>
+ <source>Selects the terminate application.</source>
+ <translation>ជ្រើស​កម្មវិធី​បញ្ចប់ ។</translation>
</message>
<message>
- <source>Displays the MAC address of this adapter. It contains exactly 12 characters chosen from {0-9,A-F}. Note that the second character must be an even digit.</source>
- <translation type="unfinished">បង្ហាញ​អាសយដ្ឋាន MAC របស់​អាដាប់ទ័រ​នេះ ។ វា​មាន​តួអក្សរ​យ៉ាង​ជាក់លាក់​ចំនួន​ ១២ ដែល​បាន​ជ្រើស​ពី {0-9,A-F} ។ ចំណាំ​ថា​តួអក្សរ​ទីពីរ​ត្រូវ​តែ​ជា​​តួលេខ​គូ ។</translation>
+ <source>Host Interface Settings</source>
+ <translation>កា​រ​កំណត់​ចំណុច​ប្រទាក់​ម៉ាស៊ីន</translation>
</message>
- <message>
- <source>Generates a new random MAC address.</source>
- <translation type="unfinished">បង្កើត​អាសយដ្ឋាន MAC ចៃដន្យ​ថ្មី ។</translation>
- </message>
- <message>
- <source>&amp;Cable connected</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Indicates whether the virtual network cable is plugged in on machine startup or not.</source>
- <translation type="unfinished">បង្ហាញ​ថាតើ​ខ្សែ​បណ្ដាញ​និម្មិត​ត្រូ​វបានដោត​​នៅពេល​ម៉ាស៊ីន​ចាប់ផ្ដើម​ ឬ​ក៏អត់ ។</translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsNetworkPage</name>
<message>
- <source>No host network interface is selected</source>
- <translation type="obsolete">គ្មាន​ចំណុច​ប្រទាក់​បណ្ដាញ​ម៉ាស៊ីន​បាន​ជ្រើស​ទេ</translation>
+ <source>No host network interface is selected</source>
+ <translation>គ្មាន​ចំណុច​ប្រទាក់​បណ្ដាញ​ម៉ាស៊ីន​បាន​ជ្រើស​ទេ</translation>
</message>
<message>
- <source>Internal network name is not set</source>
- <translation type="obsolete">ឈ្មោះ​បណ្ដាញ​ខា​ងក្នុង​មិន​ត្រូវ​បានកំណត់​តែ</translation>
+ <source>Internal network name is not set</source>
+ <translation>ឈ្មោះ​បណ្ដាញ​ខា​ងក្នុង​មិន​ត្រូវ​បានកំណត់​តែ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsParallel</name>
<message>
- <source>Port %1</source>
- <comment>parallel ports</comment>
- <translation>ច្រក %1</translation>
+ <source>Port %1</source>
+ <comment>parallel ports</comment>
+ <translation>ច្រក %1</translation>
</message>
<message>
- <source>When checked, enables the given parallel port of the virtual machine.</source>
- <translation>នៅពេល​បាន​គូស​ធីក បើក​ច្រក​ប៉ារ៉ាឡែល​របស់​ម៉ាស៊ីន​និម្មិត ។</translation>
+ <source>When checked, enables the given parallel port of the virtual machine.</source>
+ <translation>នៅពេល​បាន​គូស​ធីក បើក​ច្រក​ប៉ារ៉ាឡែល​របស់​ម៉ាស៊ីន​និម្មិត ។</translation>
</message>
<message>
- <source>&amp;Enable Parallel Port</source>
- <translation>បើក​ច្រក​ស្រប</translation>
+ <source>&amp;Enable Parallel Port</source>
+ <translation>បើក​ច្រក​ស្រប</translation>
</message>
<message>
- <source>Port &amp;Number:</source>
- <translation>លេខ​ច្រក ៖</translation>
+ <source>Port &amp;Number:</source>
+ <translation>លេខ​ច្រក ៖</translation>
</message>
<message>
- <source>Displays the parallel port number. You can choose one of the standard parallel ports or select &lt;b&gt;User-defined&lt;/b&gt; and specify port parameters manually.</source>
- <translation>បង្ហាញលេចច្រក​ប៉ារ៉ាឡែល ។ អ្នកអាចជ្រើស​ច្រក​មួយ​ក្នុងចំណោម​ច្រក​ប៉ារ៉ាឡែល​ជា​ច្រើន ឬ​ជ្រើស &lt;b&gt;កំណត់​ដោយ​អ្នក​ប្រើ&lt;/b&gt; ហើយ​បញ្ញាក់​ប៉ារ៉ាម៉ែត្រ​ច្រក​ដោយ​ដៃ ។</translation>
+ <source>Displays the parallel port number. You can choose one of the standard parallel ports or select &lt;b>User-defined&lt;/b> and specify port parameters manually.</source>
+ <translation>បង្ហាញលេចច្រក​ប៉ារ៉ាឡែល ។ អ្នកអាចជ្រើស​ច្រក​មួយ​ក្នុងចំណោម​ច្រក​ប៉ារ៉ាឡែល​ជា​ច្រើន ឬ​ជ្រើស &lt;b>កំណត់​ដោយ​អ្នក​ប្រើ&lt;/b> ហើយ​បញ្ញាក់​ប៉ារ៉ាម៉ែត្រ​ច្រក​ដោយ​ដៃ ។</translation>
</message>
<message>
- <source>&amp;IRQ:</source>
- <translation>IRQ ៖</translation>
+ <source>&amp;IRQ:</source>
+ <translation>IRQ ៖</translation>
</message>
<message>
- <source>Displays the IRQ number of this parallel port. Valid values are integer numbers in range from &lt;tt&gt;0&lt;/tt&gt; to &lt;tt&gt;255&lt;/tt&gt;. Values greater than &lt;tt&gt;15&lt;/tt&gt; may be used only if the &lt;b&gt;IO APIC&lt;/b&gt; is enabled for this virtual machine.</source>
- <translation>បង្ហាញលេខ IRQ របស​ច្រក​ប៉ារ៉ាឡែល​នេះ ។ តម្លៃ​ត្រឹមត្រូវ​ជា​ចំនួន​គត់​ដែល​ស្ថិត​ក្នុងជួរពី &lt;tt&gt;0&lt;/tt&gt; ដល់ &lt;tt&gt;២៥៥&lt;/tt&gt; ។ តម្លៃ​ធំជាង &lt;tt&gt;១៥&lt;/tt&gt; អាច​ត្រូវ​បានប្រើ​តែ​ក្នុងករណី​ដែល &lt;b&gt;IO APIC&lt;/b&gt; ត្រូ​វបានបើក​សម្រាប់​ម៉ាស៊ីន​និម្មិត​នេះ​ប៉ុណ្ណោះ ។</translation>
+ <source>Displays the IRQ number of this parallel port. Valid values are integer numbers in range from &lt;tt>0&lt;/tt> to &lt;tt>255&lt;/tt>. Values greater than &lt;tt>15&lt;/tt> may be used only if the &lt;b>IO APIC&lt;/b> is enabled for this virtual machine.</source>
+ <translation>បង្ហាញលេខ IRQ របស​ច្រក​ប៉ារ៉ាឡែល​នេះ ។ តម្លៃ​ត្រឹមត្រូវ​ជា​ចំនួន​គត់​ដែល​ស្ថិត​ក្នុងជួរពី &lt;tt>0&lt;/tt> ដល់ &lt;tt>២៥៥&lt;/tt> ។ តម្លៃ​ធំជាង &lt;tt>១៥&lt;/tt> អាច​ត្រូវ​បានប្រើ​តែ​ក្នុងករណី​ដែល &lt;b>IO APIC&lt;/b> ត្រូ​វបានបើក​សម្រាប់​ម៉ាស៊ីន​និម្មិត​នេះ​ប៉ុណ្ណោះ ។</translation>
</message>
<message>
- <source>I/O Po&amp;rt:</source>
- <translation>ច្រក I/O ៖</translation>
+ <source>I/O Po&amp;rt:</source>
+ <translation>ច្រក I/O ៖</translation>
</message>
<message>
- <source>Displays the base I/O port address of this parallel port. Valid values are integer numbers in range from &lt;tt&gt;0&lt;/tt&gt; to &lt;tt&gt;0xFFFF&lt;/tt&gt;.</source>
- <translation>បង្ហាញអាសយដ្ឋាន​ច្រក​ I/O មូលដ្ឋាន ។ តម្លៃដែល​ត្រឹមត្រូវ​គឺ​ធំជាង​ចំនួន​ដែល​ស្ថិត​ក្នុងជួរ​ពី &lt;tt&gt;0&lt;/tt&gt;ដល់&lt;tt&gt;0xFFFF&lt;/tt&gt; ។</translation>
+ <source>Displays the base I/O port address of this parallel port. Valid values are integer numbers in range from &lt;tt>0&lt;/tt> to &lt;tt>0xFFFF&lt;/tt>.</source>
+ <translation>បង្ហាញអាសយដ្ឋាន​ច្រក​ I/O មូលដ្ឋាន ។ តម្លៃដែល​ត្រឹមត្រូវ​គឺ​ធំជាង​ចំនួន​ដែល​ស្ថិត​ក្នុងជួរ​ពី &lt;tt>0&lt;/tt>ដល់&lt;tt>0xFFFF&lt;/tt> ។</translation>
</message>
<message>
- <source>Port &amp;Path:</source>
- <translation>ផ្លូវ​ច្រក ៖</translation>
+ <source>Port &amp;Path:</source>
+ <translation>ផ្លូវ​ច្រក ៖</translation>
</message>
<message>
- <source>Displays the host parallel device name.</source>
- <translation>បង្ហាញ​ឈ្មោះ​ឧបករណ៍​ស្រប​គ្នា​​របស់​ម៉ាស៊ីន ។</translation>
+ <source>Displays the host parallel device name.</source>
+ <translation>បង្ហាញ​ឈ្មោះ​ឧបករណ៍​ស្រប​គ្នា​​របស់​ម៉ាស៊ីន ។</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsParallelPage</name>
<message>
- <source>Duplicate port number is selected </source>
- <translation>បាន​ជ្រើស​លេខ​ច្រក​ស្ទួន</translation>
+ <source>Duplicate port number is selected </source>
+ <translation>បាន​ជ្រើស​លេខ​ច្រក​ស្ទួន</translation>
</message>
<message>
- <source>Port path is not specified </source>
- <translation>មិន​បាន​បញ្ជាក់ផ្លូវ​ច្រក​ទេ</translation>
+ <source>Port path is not specified </source>
+ <translation>មិន​បាន​បញ្ជាក់ផ្លូវ​ច្រក​ទេ</translation>
</message>
<message>
- <source>Duplicate port path is entered </source>
- <translation>បាន​បញ្ចូល​ផ្លូវ​ច្រក​ស្ទួន</translation>
+ <source>Duplicate port path is entered </source>
+ <translation>បាន​បញ្ចូល​ផ្លូវ​ច្រក​ស្ទួន</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsSF</name>
<message>
- <source>&amp;Add New Shared Folder</source>
- <translation>បន្ថែម​ថត​ដែល​បានចែកចរំលែក​ថ្មី</translation>
+ <source>&amp;Add New Shared Folder</source>
+ <translation>បន្ថែម​ថត​ដែល​បានចែកចរំលែក​ថ្មី</translation>
</message>
<message>
- <source>&amp;Edit Selected Shared Folder</source>
- <translation>កែសម្រួល​ថត​ដែលបានចែករំលែក​ដែល​បានជ្រើស</translation>
+ <source>&amp;Edit Selected Shared Folder</source>
+ <translation>កែសម្រួល​ថត​ដែលបានចែករំលែក​ដែល​បានជ្រើស</translation>
</message>
<message>
- <source>&amp;Remove Selected Shared Folder</source>
- <translation>យក​ថត​ដែលបានចែករំលែក​ដែល​បាន​ជ្រើស</translation>
+ <source>&amp;Remove Selected Shared Folder</source>
+ <translation>យក​ថត​ដែលបានចែករំលែក​ដែល​បាន​ជ្រើស</translation>
</message>
<message>
- <source>Adds a new shared folder definition.</source>
- <translation>បន្ថែម​កា​រកំណត់​ថត​ដែលបានចែករំលែកថ្មី ។</translation>
+ <source>Adds a new shared folder definition.</source>
+ <translation>បន្ថែម​កា​រកំណត់​ថត​ដែលបានចែករំលែកថ្មី ។</translation>
</message>
<message>
- <source>Edits the selected shared folder definition.</source>
- <translation>កែសម្រួល​កា​រកំណត់​ថត​ដែល​បានចែករំលែក​ដែល​បានជ្រើស ។</translation>
+ <source>Edits the selected shared folder definition.</source>
+ <translation>កែសម្រួល​កា​រកំណត់​ថត​ដែល​បានចែករំលែក​ដែល​បានជ្រើស ។</translation>
</message>
<message>
- <source>Removes the selected shared folder definition.</source>
- <translation>យក​កា​រកំណត់​ថត​ដែលបានចែករំលែក​ដែល​បានជ្រើ​សចេញ</translation>
+ <source>Removes the selected shared folder definition.</source>
+ <translation>យក​កា​រកំណត់​ថត​ដែលបានចែករំលែក​ដែល​បានជ្រើ​សចេញ</translation>
</message>
<message>
- <source> Machine Folders</source>
- <translation> ថត​ម៉ាស៊ីន</translation>
+ <source> Machine Folders</source>
+ <translation> ថត​ម៉ាស៊ីន</translation>
</message>
<message>
- <source> Transient Folders</source>
- <translation> ថត​បណ្ដោះអាសន្ន</translation>
+ <source> Transient Folders</source>
+ <translation> ថត​បណ្ដោះអាសន្ន</translation>
</message>
<message>
- <source>Full</source>
- <translation>ពេញលេញ</translation>
+ <source>Full</source>
+ <translation>ពេញលេញ</translation>
</message>
<message>
- <source>Read-only</source>
- <translation>បាន​តែ​អាន</translation>
+ <source>Read-only</source>
+ <translation>បាន​តែ​អាន</translation>
</message>
<message>
- <source>Lists all shared folders accessible to this machine. Use &apos;net use x: \\vboxsvr\share&apos; to access a shared folder named &lt;i&gt;share&lt;/i&gt; from a DOS-like OS, or &apos;mount -t vboxsf share mount_point&apos; to access it from a Linux OS. This feature requires Guest Additions.</source>
- <translation>រាយ​ថត​ដែល​បានចែករំលែក​ទាំង​អស់​ដែល​អាច​ចូលដំណើរការ​បានទៅ​ម៉ាស៊ីន​នេះ ។ ប្រើ​ &apos;net ប្រើ x: \\vboxsvr\share&apos; ដើម្បី​ចូលដំណើរការ​ថត​ដែល​បានចែករំលែក​ដែលមាន​ឈ្មោះ &lt;i&gt;ចែករំលែក&lt;/i&gt; ពីប្រព័ន្ធ​ប្រតិបត្តិការ​ដូចនឹង DOS ដែរ ឬ​ &apos;mount -t vboxsf share mount_point&apos; ដើម្បីចូលដំណើរការ​វា​ពី​ប្រព័ន្ធ​ប្រតិបត្តិការ​លីនុច ។ លក្ខណៈពិសេស​នេះ​ត្រូវការ​ផ្នែក​បន្ថែម​របស់ម៉ាស៊ីន​ភ្ញៀវ ។</translation>
+ <source>Lists all shared folders accessible to this machine. Use 'net use x: \\vboxsvr\share' to access a shared folder named &lt;i>share&lt;/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>រាយ​ថត​ដែល​បានចែករំលែក​ទាំង​អស់​ដែល​អាច​ចូលដំណើរការ​បានទៅ​ម៉ាស៊ីន​នេះ ។ ប្រើ​ 'net ប្រើ x: \\vboxsvr\share' ដើម្បី​ចូលដំណើរការ​ថត​ដែល​បានចែករំលែក​ដែលមាន​ឈ្មោះ &lt;i>ចែករំលែក&lt;/i> ពីប្រព័ន្ធ​ប្រតិបត្តិការ​ដូចនឹង DOS ដែរ ឬ​ 'mount -t vboxsf share mount_point' ដើម្បីចូលដំណើរការ​វា​ពី​ប្រព័ន្ធ​ប្រតិបត្តិការ​លីនុច ។ លក្ខណៈពិសេស​នេះ​ត្រូវការ​ផ្នែក​បន្ថែម​របស់ម៉ាស៊ីន​ភ្ញៀវ ។</translation>
</message>
<message>
- <source>Name</source>
- <translation>ឈ្មោះ</translation>
+ <source>Name</source>
+ <translation>ឈ្មោះ</translation>
</message>
<message>
- <source>Path</source>
- <translation>ផ្លូវ</translation>
+ <source>Path</source>
+ <translation>ផ្លូវ</translation>
</message>
<message>
- <source>Access</source>
- <translation>ចូលដំណើរការ</translation>
+ <source>Access</source>
+ <translation>ចូលដំណើរការ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsSFDetails</name>
<message>
- <source>Add Share</source>
- <translation>បន្ថែម​ការ​ចែករំលែក</translation>
+ <source>Add Share</source>
+ <translation>បន្ថែម​ការ​ចែករំលែក</translation>
</message>
<message>
- <source>Edit Share</source>
- <translation>កែសម្រួល​ការ​ចែករំលែក</translation>
+ <source>Edit Share</source>
+ <translation>កែសម្រួល​ការ​ចែករំលែក</translation>
</message>
<message>
- <source>Dialog</source>
- <translation>ប្រអប់</translation>
+ <source>Dialog</source>
+ <translation>ប្រអប់</translation>
</message>
<message>
- <source>Folder Path:</source>
- <translation>ផ្លូវ​ថត ៖</translation>
+ <source>Folder Path:</source>
+ <translation>ផ្លូវ​ថត ៖</translation>
</message>
<message>
- <source>Folder Name:</source>
- <translation>ឈ្មោះ​ថត ៖</translation>
+ <source>Folder Name:</source>
+ <translation>ឈ្មោះ​ថត ៖</translation>
</message>
<message>
- <source>Displays the name of the shared folder (as it will be seen by the guest OS).</source>
- <translation>បង្ហាញ​ឈ្មោះ​របស់​ថត​ដែលបានចែករំលែក (ព្រោះថា​វា​នឹង​ត្រូវ​បានឃើញ​ដោយ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ) ។</translation>
+ <source>Displays the name of the shared folder (as it will be seen by the guest OS).</source>
+ <translation>បង្ហាញ​ឈ្មោះ​របស់​ថត​ដែលបានចែករំលែក (ព្រោះថា​វា​នឹង​ត្រូវ​បានឃើញ​ដោយ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ) ។</translation>
</message>
<message>
- <source>When checked, the guest OS will not be able to write to the specified shared folder.</source>
- <translation>នៅពេល​បានគូសធីក ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​មិនអាច​សរសេរ​ទៅកាន​ថត​ដែល​បានចែករំលែក​​ដែល​បាន​បញ្ជាក់​ទេ ។</translation>
+ <source>When checked, the guest OS will not be able to write to the specified shared folder.</source>
+ <translation>នៅពេល​បានគូសធីក ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​មិនអាច​សរសេរ​ទៅកាន​ថត​ដែល​បានចែករំលែក​​ដែល​បាន​បញ្ជាក់​ទេ ។</translation>
</message>
<message>
- <source>&amp;Read-only</source>
- <translation>បានតែ​អាន</translation>
+ <source>&amp;Read-only</source>
+ <translation>បានតែ​អាន</translation>
</message>
<message>
- <source>&amp;Make Permanent</source>
- <translation>ធ្វើ​ឲ្យ​អចិន្ត្រៃយ៍</translation>
+ <source>&amp;Make Permanent</source>
+ <translation>ធ្វើ​ឲ្យ​អចិន្ត្រៃយ៍</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsSerial</name>
<message>
- <source>Port %1</source>
- <comment>serial ports</comment>
- <translation>ច្រក %1</translation>
- </message>
- <message>
- <source>When checked, enables the given serial port of the virtual machine.</source>
- <translation>នៅពេល​គូសធីក បើក​ច្រក​ស៊េរី​ដែល​បានផ្ដល់​របស់ម៉ាស៊ីននិម្មិត ។</translation>
+ <source>Port %1</source>
+ <comment>serial ports</comment>
+ <translation>ច្រក %1</translation>
</message>
<message>
- <source>&amp;Enable Serial Port</source>
- <translation>បើក​ច្រក​ស៊េរី</translation>
+ <source>When checked, enables the given serial port of the virtual machine.</source>
+ <translation>នៅពេល​គូសធីក បើក​ច្រក​ស៊េរី​ដែល​បានផ្ដល់​របស់ម៉ាស៊ីននិម្មិត ។</translation>
</message>
<message>
- <source>Port &amp;Number:</source>
- <translation>លេខ​ច្រក ៖</translation>
+ <source>&amp;Enable Serial Port</source>
+ <translation>បើក​ច្រក​ស៊េរី</translation>
</message>
<message>
- <source>Displays the serial port number. You can choose one of the standard serial ports or select &lt;b&gt;User-defined&lt;/b&gt; and specify port parameters manually.</source>
- <translation>បង្ហាញលេខ​ច្រក​ស៊េរៀល ។ អ្នកអាច​ជ្រើ​ស​ច្រក​ស៊េរៀល​ស្តង់ដារ​មួយ​ក្នុងចំណោម​ច្រកជា​ច្រើន ឬ​ជ្រើស &lt;b&gt;កំណត់​ដោយ​អ្នក​ប្រើ&lt;/b&gt; ហើយ​បញ្ជាក់​ប៉ារ៉ាម៉ែត្រ​ច្រក​ដោយដៃ ។</translation>
+ <source>Port &amp;Number:</source>
+ <translation>លេខ​ច្រក ៖</translation>
</message>
<message>
- <source>&amp;IRQ:</source>
- <translation>IRQ ៖</translation>
+ <source>Displays the serial port number. You can choose one of the standard serial ports or select &lt;b>User-defined&lt;/b> and specify port parameters manually.</source>
+ <translation>បង្ហាញលេខ​ច្រក​ស៊េរៀល ។ អ្នកអាច​ជ្រើ​ស​ច្រក​ស៊េរៀល​ស្តង់ដារ​មួយ​ក្នុងចំណោម​ច្រកជា​ច្រើន ឬ​ជ្រើស &lt;b>កំណត់​ដោយ​អ្នក​ប្រើ&lt;/b> ហើយ​បញ្ជាក់​ប៉ារ៉ាម៉ែត្រ​ច្រក​ដោយដៃ ។</translation>
</message>
<message>
- <source>Displays the IRQ number of this serial port. Valid values are integer numbers in range from &lt;tt&gt;0&lt;/tt&gt; to &lt;tt&gt;255&lt;/tt&gt;. Values greater than &lt;tt&gt;15&lt;/tt&gt; may be used only if the &lt;b&gt;IO APIC&lt;/b&gt; is enabled for this virtual machine.</source>
- <translation>បង្ហាញ​លេខ IRQ របស់​ច្រក​ស៊េរៀល​នេះ ។ តម្លៃ​ដែល​ត្រឹមត្រូវ​គឺ​ជា​ចំនួន​គត់​ដែល​ស្ថិត​នៅ​ក្នុង​ចន្លោះ​ពី &lt;tt&gt;0&lt;/tt&gt; ដល់ &lt;tt&gt;២៥៥&lt;/tt&gt; ។ តម្លៃ​ធំជាង​ &lt;tt&gt;១៥&lt;/tt&gt; អាច​ត្រូ​វបានប្រើ​តែ​ក្នុងករណី​ដែល &lt;b&gt;IO APIC&lt;/b&gt; ត្រូវ​បានបើក​សម្រាប់​ម៉ាស៊ីន​និម្មិត ។</translation>
+ <source>&amp;IRQ:</source>
+ <translation>IRQ ៖</translation>
</message>
<message>
- <source>I/O Po&amp;rt:</source>
- <translation>ច្រក​ I/O ៖</translation>
+ <source>Displays the IRQ number of this serial port. Valid values are integer numbers in range from &lt;tt>0&lt;/tt> to &lt;tt>255&lt;/tt>. Values greater than &lt;tt>15&lt;/tt> may be used only if the &lt;b>IO APIC&lt;/b> is enabled for this virtual machine.</source>
+ <translation>បង្ហាញ​លេខ IRQ របស់​ច្រក​ស៊េរៀល​នេះ ។ តម្លៃ​ដែល​ត្រឹមត្រូវ​គឺ​ជា​ចំនួន​គត់​ដែល​ស្ថិត​នៅ​ក្នុង​ចន្លោះ​ពី &lt;tt>0&lt;/tt> ដល់ &lt;tt>២៥៥&lt;/tt> ។ តម្លៃ​ធំជាង​ &lt;tt>១៥&lt;/tt> អាច​ត្រូ​វបានប្រើ​តែ​ក្នុងករណី​ដែល &lt;b>IO APIC&lt;/b> ត្រូវ​បានបើក​សម្រាប់​ម៉ាស៊ីន​និម្មិត ។</translation>
</message>
<message>
- <source>Displays the base I/O port address of this serial port. Valid values are integer numbers in range from &lt;tt&gt;0&lt;/tt&gt; to &lt;tt&gt;0xFFFF&lt;/tt&gt;.</source>
- <translation>បង្ហាញ​អាសយដ្ឋាន​ច្រក I/O មូលដ្ឋាន​របស់​ច្រក​ស៊េរៀលនេះ ។ តម្លៃ​ដែល​ត្រឹមត្រូវ​គឺ​ជា​ចំនួន​ដែល​ស្ថិត​ក្នុង​ចន្លោះពី &lt;tt&gt;0&lt;/tt&gt; ដល់&lt;tt&gt;0xFFFF&lt;/tt&gt; ។</translation>
+ <source>I/O Po&amp;rt:</source>
+ <translation>ច្រក​ I/O ៖</translation>
</message>
<message>
- <source>Port &amp;Mode:</source>
- <translation>របៀប​ច្រក ៖</translation>
+ <source>Displays the base I/O port address of this serial port. Valid values are integer numbers in range from &lt;tt>0&lt;/tt> to &lt;tt>0xFFFF&lt;/tt>.</source>
+ <translation>បង្ហាញ​អាសយដ្ឋាន​ច្រក I/O មូលដ្ឋាន​របស់​ច្រក​ស៊េរៀលនេះ ។ តម្លៃ​ដែល​ត្រឹមត្រូវ​គឺ​ជា​ចំនួន​ដែល​ស្ថិត​ក្នុង​ចន្លោះពី &lt;tt>0&lt;/tt> ដល់&lt;tt>0xFFFF&lt;/tt> ។</translation>
</message>
<message>
- <source>Controls the working mode of this serial port. If you select &lt;b&gt;Disconnected&lt;/b&gt;, the guest OS will detect the serial port but will not be able to operate it.</source>
- <translation>ពិនិត្យ​មើល​របៀប​ដំណើរការ​របស់​ច្រក​ស៊េរៀល ។ ប្រសិនបើ​អ្នក​ជ្រើស​ &lt;b&gt;បានផ្ដាច់&lt;/b&gt; ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​រកឃើញ​ច្រក​ស៊េរៀល​ ប៉ុន្តែ​នឹង​មិន​អាច​ប្រតិបត្តិ​វា​បានទេ ។</translation>
+ <source>Port &amp;Mode:</source>
+ <translation>របៀប​ច្រក ៖</translation>
</message>
<message>
- <source>If checked, the pipe specified in the &lt;b&gt;Port Path&lt;/b&gt; field will be created by the virtual machine when it starts. Otherwise, the virtual machine will try to use the existing pipe.</source>
- <translation>ប្រសិន​បើ​បានគូស​ធីក បំពង់​បាន​បញ្ជាក់​នៅ​ក្នុងវាល &lt;b&gt;ផ្លូវ​ច្រក&lt;/b&gt; នឹង​ត្រូវ​បាន​បង្កើត​ដោយ​​ម៉ាស៊ីន​និម្មិត នៅពេល​វា​ចាប់ផ្ដើម ។ បើ​មិន​ដូច្នេះ​ទេ ម៉ាស៊ីន​និម្មិត​នឹង​ព្យាយាម​ប្រើ​បំពង់​ដែល​បានស្រាប់ ។</translation>
+ <source>Controls the working mode of this serial port. If you select &lt;b>Disconnected&lt;/b>, the guest OS will detect the serial port but will not be able to operate it.</source>
+ <translation>ពិនិត្យ​មើល​របៀប​ដំណើរការ​របស់​ច្រក​ស៊េរៀល ។ ប្រសិនបើ​អ្នក​ជ្រើស​ &lt;b>បានផ្ដាច់&lt;/b> ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​រកឃើញ​ច្រក​ស៊េរៀល​ ប៉ុន្តែ​នឹង​មិន​អាច​ប្រតិបត្តិ​វា​បានទេ ។</translation>
</message>
<message>
- <source>&amp;Create Pipe</source>
- <translation>បង្កើត​បំពង់</translation>
+ <source>If checked, the pipe specified in the &lt;b>Port Path&lt;/b> field will be created by the virtual machine when it starts. Otherwise, the virtual machine will try to use the existing pipe.</source>
+ <translation>ប្រសិន​បើ​បានគូស​ធីក បំពង់​បាន​បញ្ជាក់​នៅ​ក្នុងវាល &lt;b>ផ្លូវ​ច្រក&lt;/b> នឹង​ត្រូវ​បាន​បង្កើត​ដោយ​​ម៉ាស៊ីន​និម្មិត នៅពេល​វា​ចាប់ផ្ដើម ។ បើ​មិន​ដូច្នេះ​ទេ ម៉ាស៊ីន​និម្មិត​នឹង​ព្យាយាម​ប្រើ​បំពង់​ដែល​បានស្រាប់ ។</translation>
</message>
<message>
- <source>Port &amp;Path:</source>
- <translation type="obsolete">ផ្លូវ​ច្រក ៖</translation>
+ <source>&amp;Create Pipe</source>
+ <translation>បង្កើត​បំពង់</translation>
</message>
<message>
- <source>Displays the path to the serial port&apos;s pipe on the host when the port works in &lt;b&gt;Host Pipe&lt;/b&gt; mode, or the host serial device name when the port works in &lt;b&gt;Host Device&lt;/b&gt; mode.</source>
- <translation>បង្ហាញ​ផ្លូវ​ទៅកាន់​ច្រក​ស៊េរៀល​នៅ​លើ​ម៉ាស៊ីន នៅពេល​ច្រក​ដំណើការ​ក្នុង​របៀប &lt;b&gt;បំពង់​ម៉ាស៊ីន&lt;/b&gt; ឬ​ឈ្មោះ​ឧបករណ៍​ស៊េរៀល​នៅពេល​ច្រក​ដំណើរការ​ក្នុង​របៀប &lt;b&gt;ឧបករណ៍​ម៉ាស៊ីន&lt;/b&gt; ។</translation>
+ <source>Port &amp;Path:</source>
+ <translation>ផ្លូវ​ច្រក ៖</translation>
</message>
<message>
- <source>Port/File &amp;Path:</source>
- <translation type="unfinished"></translation>
+ <source>Displays the path to the serial port's pipe on the host when the port works in &lt;b>Host Pipe&lt;/b> mode, or the host serial device name when the port works in &lt;b>Host Device&lt;/b> mode.</source>
+ <translation>បង្ហាញ​ផ្លូវ​ទៅកាន់​ច្រក​ស៊េរៀល​នៅ​លើ​ម៉ាស៊ីន នៅពេល​ច្រក​ដំណើការ​ក្នុង​របៀប &lt;b>បំពង់​ម៉ាស៊ីន&lt;/b> ឬ​ឈ្មោះ​ឧបករណ៍​ស៊េរៀល​នៅពេល​ច្រក​ដំណើរការ​ក្នុង​របៀប &lt;b>ឧបករណ៍​ម៉ាស៊ីន&lt;/b> ។</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsSerialPage</name>
<message>
- <source>Duplicate port number is selected </source>
- <translation>បានជ្រើស​លេខ​ច្រក​ស្ទួន</translation>
- </message>
- <message>
- <source>Port path is not specified </source>
- <translation>មិនបានបញ្ជាក់​ផ្លូវ​ច្រក​ស្ទួន​ទេ</translation>
- </message>
- <message>
- <source>Duplicate port path is entered </source>
- <translation>បាន​បញ្ចូល​ផ្លូវ​ច្រក​ស្ទួន</translation>
- </message>
-</context>
-<context>
- <name>VBoxVMSettingsSystem</name>
- <message>
- <source>you have assigned more than &lt;b&gt;%1%&lt;/b&gt; of your computer&apos;s memory (&lt;b&gt;%2&lt;/b&gt;) to the virtual machine. Not enough memory is left for your host operating system. Please select a smaller amount.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>you have assigned more than &lt;b&gt;%1%&lt;/b&gt; of your computer&apos;s memory (&lt;b&gt;%2&lt;/b&gt;) to the virtual machine. Not enough memory might be left for your host operating system. Continue at your own risk.</source>
- <translation type="unfinished"></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 (&lt;b&gt;%1&lt;/b&gt;). Please reduce the number of virtual CPUs.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>you have assigned more virtual CPUs to the virtual machine than the number of physical CPUs on your host system (&lt;b&gt;%1&lt;/b&gt;). This is likely to degrade the performance of your virtual machine. Please consider reducing the number of virtual CPUs.</source>
- <translation type="unfinished"></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>
- </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>
- </message>
- <message>
- <source>&lt;qt&gt;%1&amp;nbsp;MB&lt;/qt&gt;</source>
- <translation type="unfinished">&lt;qt&gt;%1&amp;nbsp;មេកាបៃ&lt;/qt&gt;</translation>
- </message>
- <message>
- <source>&lt;qt&gt;%1&amp;nbsp;CPU&lt;/qt&gt;</source>
- <comment>%1 is 1 for now</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&lt;qt&gt;%1&amp;nbsp;CPUs&lt;/qt&gt;</source>
- <comment>%1 is 32 for now</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Motherboard</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Base &amp;Memory:</source>
- <translation type="unfinished"></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>
- </message>
- <message>
- <source>MB</source>
- <translation type="unfinished">មេកាបៃ</translation>
- </message>
- <message>
- <source>&amp;Boot Order:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Defines the boot device order. Use checkboxes to the left to enable or disable individual boot devices. Move items up and down to change the device order.</source>
- <translation type="unfinished">កំណត់​លំដាប់​ឧបករណ៍​ចាប់ផ្ដើម ។ ប្រើ​ប្រអប់​គូសធីក​នៅ​ខា​ងឆ្វេង​ដើម្បី​បើក ​ឬ​បិទ​ឧបករណ៍​ចាប់ផ្ដើម​នីមួយៗ ។ ផ្លាស់ទីធាតុ​ឡើង​លើ និង​ចុះក្រោម​ដើម្បី​ផ្លាស់ប្ដូរ​លំដាប់​ឧបករណ៍ ។</translation>
- </message>
- <message>
- <source>Move Down (Ctrl-Down)</source>
- <translation type="unfinished">ផ្លាស់ទី​ចុះក្រោម (បញ្ជា(Ctrl)-Down)</translation>
- </message>
- <message>
- <source>Moves the selected boot device down.</source>
- <translation type="unfinished">ផ្លាស់ទី​ឧបករណ៍​ចាប់ផ្ដើម​ដែល​បាន​ជ្រើស​ចុះក្រោម ។</translation>
- </message>
- <message>
- <source>Move Up (Ctrl-Up)</source>
- <translation type="unfinished">ផ្លាស់ទីឡើង​លើ (បញ្ជា(Ctrl)-Up)</translation>
- </message>
- <message>
- <source>Moves the selected boot device up.</source>
- <translation type="unfinished">ផ្លាស់ទី​ឧបករណ៍​ចាប់ផ្ដើម​ដែល​បានជ្រើ​សឡើង​លើ ។</translation>
- </message>
- <message>
- <source>Extended Features:</source>
- <translation type="unfinished">លក្ខណៈសម្បត្តិ​ដែល​បានពង្រីក ៖</translation>
- </message>
- <message>
- <source>When checked, the virtual machine will support the Advanced Configuration and Power Management Interface (ACPI). &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable this feature after having installed a Windows guest operating system!</source>
- <translation type="unfinished">នៅពេល​បានគូស​ធីក​ ម៉ាស៊ីន​និម្មិត​នឹង​គាំទ្រ​ការ​កំណត់​រចនាសម្ព័ន្ធ​កម្រិត​ខ្ពស់ និង​ចំណុច​ប្រទាក់​គ្រប់គ្រង​ថាមពល (ACPI) ។ &lt;b&gt;ចំណាំ ៖&lt;/b&gt; កុំ​បិទ​លក្ខណៈពិសេស​នេះ​ បន្ទាប់​ពី​បានដំឡើង​ប្រព័ន្ធ​ប្រតិបត្តិការ​វីនដូ​របស់ម៉ាស៊ីន​ភ្ញៀវ !</translation>
- </message>
- <message>
- <source>Enable &amp;ACPI</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>When checked, the virtual machine will support the Input Output APIC (IO APIC), which may slightly decrease the VM performance. &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable this feature after having installed a Windows guest operating system!</source>
- <translation type="unfinished">នៅពេល​បាន​គូស​ធីក ម៉ាស៊ីន​និម្មិត​នឹង​គាំទ្រ​ Input Output APIC (IO APIC) ដែល​អាច​បន្ថយ​ការ​អនុវត្ត​របស់ VM តិចតួច ។ &lt;b&gt;ចំណាំ ៖&lt;/b&gt; កុំ​បិទ​លក្ខណៈ​ពិសេស​នេះ​បន្ទាប់ពី​ដំឡើង​ប្រព័ន្ធ​ប្រតិបត្តិការ​វីនដូ​របស់ម៉ាស៊ីន​ភ្ញៀវ !</translation>
- </message>
- <message>
- <source>Enable &amp;IO APIC</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Processor</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&amp;Processor(s):</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Controls the number of virtual CPUs in the virtual machine.</source>
- <translation type="unfinished"></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>
- </message>
- <message>
- <source>Enable PA&amp;E/NX</source>
- <translation type="unfinished">បើក PAE/NX</translation>
- </message>
- <message>
- <source>Acce&amp;leration</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Hardware Virtualization:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>When checked, the virtual machine will try to make use of the host CPU&apos;s hardware virtualization extensions such as Intel VT-x and AMD-V.</source>
- <translation type="unfinished">នៅពេល​បាន​គូស​ធីគ ម៉ាស៊ីន​និម្មិត​នឹង​ព្យាយាម​ប្រាកដ​ថា​ផ្នែក​បន្ថែម​និម្មិត​ផ្នែក​រឹង​របស់​ស៊ីភីយូ​របស់ម៉ាស៊ីន​ដូចជា Intel VT-x និង AMD-V ។</translation>
- </message>
- <message>
- <source>Enable &amp;VT-x/AMD-V</source>
- <translation type="unfinished">បើក VT-x/AMD-V</translation>
+ <source>Duplicate port number is selected </source>
+ <translation>បានជ្រើស​លេខ​ច្រក​ស្ទួន</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>
+ <source>Port path is not specified </source>
+ <translation>មិនបានបញ្ជាក់​ផ្លូវ​ច្រក​ស្ទួន​ទេ</translation>
</message>
<message>
- <source>Enable Nested Pa&amp;ging</source>
- <translation type="unfinished"></translation>
+ <source>Duplicate port path is entered </source>
+ <translation>បាន​បញ្ចូល​ផ្លូវ​ច្រក​ស្ទួន</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsUSB</name>
<message>
- <source>&amp;Add Empty Filter</source>
- <translation>បន្ថែម​តម្រង​ទទេ</translation>
+ <source>&amp;Add Empty Filter</source>
+ <translation>បន្ថែម​តម្រង​ទទេ</translation>
</message>
<message>
- <source>A&amp;dd Filter From Device</source>
- <translation>បន្ថែម​តម្រង​ពី​ឧបករណ៍</translation>
+ <source>A&amp;dd Filter From Device</source>
+ <translation>បន្ថែម​តម្រង​ពី​ឧបករណ៍</translation>
</message>
<message>
- <source>&amp;Edit Filter</source>
- <translation>កែសម្រួល​តម្រង</translation>
+ <source>&amp;Edit Filter</source>
+ <translation>កែសម្រួល​តម្រង</translation>
</message>
<message>
- <source>&amp;Remove Filter</source>
- <translation>យក​តម្រង​ចេញ</translation>
+ <source>&amp;Remove Filter</source>
+ <translation>យក​តម្រង​ចេញ</translation>
</message>
<message>
- <source>&amp;Move Filter Up</source>
- <translation>ផ្លាស់ទី​តម្រង​ឡើង​លើ</translation>
+ <source>&amp;Move Filter Up</source>
+ <translation>ផ្លាស់ទី​តម្រង​ឡើង​លើ</translation>
</message>
<message>
- <source>M&amp;ove Filter Down</source>
- <translation>ផ្លាស់ទី​តម្រង​ចុះក្រោម</translation>
+ <source>M&amp;ove Filter Down</source>
+ <translation>ផ្លាស់ទី​តម្រង​ចុះក្រោម</translation>
</message>
<message>
- <source>Adds a new USB filter with all fields initially set to empty strings. Note that such a filter will match any attached USB device.</source>
- <translation>បន្ថែម​តម្រង USB ថ្មី​ដែលមាន​វាល​ទាំងអស់​ ដោយ​ដំបូង​កំណត់​ខ្សែអក្សរ​ទៅ​ទទេ ។ ចំណាំ​ថា តម្រង​បែប​នេះ​នឹង​ផ្គូផ្គង​ឧបករណ៍ USB ដែល​បាន​ភ្ជាប់ ។</translation>
+ <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>
</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 ដែល​ជ្រើស​ដែលបានភ្ជាប់​ទៅ នឹង​ម៉ាស៊ីន ។</translation>
+ <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 ដែល​ជ្រើស​ដែលបានភ្ជាប់​ទៅ នឹង​ម៉ាស៊ីន ។</translation>
</message>
<message>
- <source>Edits the selected USB filter.</source>
- <translation>កែសម្រួល​តម្រង USB ដែល​បាន​ជ្រើស ។</translation>
+ <source>Edits the selected USB filter.</source>
+ <translation>កែសម្រួល​តម្រង USB ដែល​បាន​ជ្រើស ។</translation>
</message>
<message>
- <source>Removes the selected USB filter.</source>
- <translation>យក​តម្រង USB ដែលបាន​ជ្រើស​ចេញ ។</translation>
+ <source>Removes the selected USB filter.</source>
+ <translation>យក​តម្រង USB ដែលបាន​ជ្រើស​ចេញ ។</translation>
</message>
<message>
- <source>Moves the selected USB filter up.</source>
- <translation>ផ្លាស់ទី​តម្រង​ USB ដែលបាន​ជ្រើស​ឡើង​វលើ ។</translation>
+ <source>Moves the selected USB filter up.</source>
+ <translation>ផ្លាស់ទី​តម្រង​ USB ដែលបាន​ជ្រើស​ឡើង​វលើ ។</translation>
</message>
<message>
- <source>Moves the selected USB filter down.</source>
- <translation>ផ្លាស់ទី​តម្រង​ USB ដែលបាន​ជ្រើស​ចុះក្រោម ។</translation>
+ <source>Moves the selected USB filter down.</source>
+ <translation>ផ្លាស់ទី​តម្រង​ USB ដែលបាន​ជ្រើស​ចុះក្រោម ។</translation>
</message>
<message>
- <source>New Filter %1</source>
- <comment>usb</comment>
- <translation>តម្រង​ថ្មី %1</translation>
+ <source>New Filter %1</source>
+ <comment>usb</comment>
+ <translation>តម្រង​ថ្មី %1</translation>
</message>
<message>
- <source>When checked, enables the virtual USB controller of this machine.</source>
- <translation>នៅពេល​បានគូសធីក បើក​ឧបករណ៍​ត្រួតពិនិត្យ​ USB និម្មិត​របស់ម៉ាស៊ីន​នេះ ។</translation>
+ <source>When checked, enables the virtual USB controller of this machine.</source>
+ <translation>នៅពេល​បានគូសធីក បើក​ឧបករណ៍​ត្រួតពិនិត្យ​ USB និម្មិត​របស់ម៉ាស៊ីន​នេះ ។</translation>
</message>
<message>
- <source>Enable &amp;USB Controller</source>
- <translation>បើក​វត្ថុ​បញ្ជា USB</translation>
+ <source>Enable &amp;USB Controller</source>
+ <translation>បើក​វត្ថុ​បញ្ជា USB</translation>
</message>
<message>
- <source>When checked, enables the virtual USB EHCI controller of this machine. The USB EHCI controller provides USB 2.0 support.</source>
- <translation>នៅពេល​បានគូស​ធីក បើក​ឧបករណ៍​ត្រួតពិនិត្យ​ USB EHCI និម្មិត​របស់​ម៉ាស៊ីន​នេះ ។ ឧបករណ៍​បញ្ជា USB EHCI ផ្ដល់​នូវ​ការ​គាំទ្រ USB 2.0 ។</translation>
+ <source>When checked, enables the virtual USB EHCI controller of this machine. The USB EHCI controller provides USB 2.0 support.</source>
+ <translation>នៅពេល​បានគូស​ធីក បើក​ឧបករណ៍​ត្រួតពិនិត្យ​ USB EHCI និម្មិត​របស់​ម៉ាស៊ីន​នេះ ។ ឧបករណ៍​បញ្ជា USB EHCI ផ្ដល់​នូវ​ការ​គាំទ្រ USB 2.0 ។</translation>
</message>
<message>
- <source>Enable USB 2.0 (E&amp;HCI) Controller</source>
- <translation>បើក​វត្ថុ​បញ្ជា USB 2.0 (E&amp;HCI)</translation>
+ <source>Enable USB 2.0 (E&amp;HCI) Controller</source>
+ <translation>បើក​វត្ថុ​បញ្ជា USB 2.0 (E&amp;HCI)</translation>
</message>
<message>
- <source>USB Device &amp;Filters</source>
- <translation>តម្រង​ឧបករណ៍ USB</translation>
+ <source>USB Device &amp;Filters</source>
+ <translation>តម្រង​ឧបករណ៍ USB</translation>
</message>
<message>
- <source>Lists all USB filters of this machine. The checkbox to the left defines whether the particular filter is enabled or not. Use the context menu or buttons to the right to add or remove USB filters.</source>
- <translation>រាយ​តម្រង USB ទាំង​អស់​របស់ម៉ាស៊ីន​នេះ ។ ប្រអប់​ធីក​នៅ​ខាង​ឆ្វេ​ងកំណត់​ថាតើ​តម្រង​ជាក់លាក់​ត្រូ​វបើក​ ឬ​ក៏​អត់ ។ ប្រើម៉ឺនុយ​បរិបទ​ ឬ​ប៊ូតុង​នៅ​ខាង​ស្ដាំ​ដើម្បី​បន្ថែម ឬ​យក​តម្រង USB ចេញ ។</translation>
+ <source>Lists all USB filters of this machine. The checkbox to the left defines whether the particular filter is enabled or not. Use the context menu or buttons to the right to add or remove USB filters.</source>
+ <translation>រាយ​តម្រង USB ទាំង​អស់​របស់ម៉ាស៊ីន​នេះ ។ ប្រអប់​ធីក​នៅ​ខាង​ឆ្វេ​ងកំណត់​ថាតើ​តម្រង​ជាក់លាក់​ត្រូ​វបើក​ ឬ​ក៏​អត់ ។ ប្រើម៉ឺនុយ​បរិបទ​ ឬ​ប៊ូតុង​នៅ​ខាង​ស្ដាំ​ដើម្បី​បន្ថែម ឬ​យក​តម្រង USB ចេញ ។</translation>
</message>
<message>
- <source>[filter]</source>
- <translation>[តម្រង]</translation>
+ <source>[filter]</source>
+ <translation>[តម្រង]</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>VBoxVMSettingsUSBFilterDetails</name>
<message>
- <source>Any</source>
- <comment>remote</comment>
- <translation>ណាមួយ</translation>
+ <source>Any</source>
+ <comment>remote</comment>
+ <translation>ណាមួយ</translation>
</message>
<message>
- <source>Yes</source>
- <comment>remote</comment>
- <translation>បាទ/ចាស</translation>
+ <source>Yes</source>
+ <comment>remote</comment>
+ <translation>បាទ/ចាស</translation>
</message>
<message>
- <source>No</source>
- <comment>remote</comment>
- <translation>ទេ</translation>
+ <source>No</source>
+ <comment>remote</comment>
+ <translation>ទេ</translation>
</message>
<message>
- <source>&amp;Name:</source>
- <translation>ឈ្មោះ ៖</translation>
+ <source>&amp;Name:</source>
+ <translation>ឈ្មោះ ៖</translation>
</message>
<message>
- <source>Displays the filter name.</source>
- <translation>បង្ហាញឈ្មោះ​តម្រង ។</translation>
+ <source>Displays the filter name.</source>
+ <translation>បង្ហាញឈ្មោះ​តម្រង ។</translation>
</message>
<message>
- <source>&amp;Vendor ID:</source>
- <translation>លេខ​សម្គាល់​អ្នក​លក់ ៖</translation>
+ <source>&amp;Vendor ID:</source>
+ <translation>លេខ​សម្គាល់​អ្នក​លក់ ៖</translation>
</message>
<message>
- <source>Defines the vendor ID filter. The &lt;i&gt;exact match&lt;/i&gt; string format is &lt;tt&gt;XXXX&lt;/tt&gt; where &lt;tt&gt;X&lt;/tt&gt; is a hexadecimal digit. An empty string will match any value.</source>
- <translation>កំណត់​តម្រង​លេខ​សម្គាល់​អ្នក​លក់ ។ ទ្រង់ទ្រាយ​ខ្សែអក្សរ &lt;i&gt;ផ្គូផ្គងជាក់លាក់&lt;/i&gt; គឺ &lt;tt&gt;XXXX&lt;/tt&gt; ដែល &lt;tt&gt;X&lt;/tt&gt; ជា​គោល​ដប់ប្រាំមួយ ។ ខ្សែអក្សរ​ទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
+ <source>Defines the vendor ID filter. The &lt;i>exact match&lt;/i> string format is &lt;tt>XXXX&lt;/tt> where &lt;tt>X&lt;/tt> is a hexadecimal digit. An empty string will match any value.</source>
+ <translation>កំណត់​តម្រង​លេខ​សម្គាល់​អ្នក​លក់ ។ ទ្រង់ទ្រាយ​ខ្សែអក្សរ &lt;i>ផ្គូផ្គងជាក់លាក់&lt;/i> គឺ &lt;tt>XXXX&lt;/tt> ដែល &lt;tt>X&lt;/tt> ជា​គោល​ដប់ប្រាំមួយ ។ ខ្សែអក្សរ​ទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
</message>
<message>
- <source>&amp;Product ID:</source>
- <translation>លេខ​សម្គាល់​ផលិតផល ៖</translation>
+ <source>&amp;Product ID:</source>
+ <translation>លេខ​សម្គាល់​ផលិតផល ៖</translation>
</message>
<message>
- <source>Defines the product ID filter. The &lt;i&gt;exact match&lt;/i&gt; string format is &lt;tt&gt;XXXX&lt;/tt&gt; where &lt;tt&gt;X&lt;/tt&gt; is a hexadecimal digit. An empty string will match any value.</source>
- <translation>កំណត់​តម្រង​លេខ​សម្គាល់​ផលិតផល ។ ទ្រង់ទ្រាយ​ខ្សែអក្សរ&lt;i&gt;ផ្គូផ្គង​ជាក់លាក់&lt;/i&gt; គឺ&lt;tt&gt;XXXX&lt;/tt&gt; ដែល &lt;tt&gt;X&lt;/tt&gt; គឺជា​គោល​ដប់​ប្រាំមួយ ។ ខ្សែអក្សរ​ទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
+ <source>Defines the product ID filter. The &lt;i>exact match&lt;/i> string format is &lt;tt>XXXX&lt;/tt> where &lt;tt>X&lt;/tt> is a hexadecimal digit. An empty string will match any value.</source>
+ <translation>កំណត់​តម្រង​លេខ​សម្គាល់​ផលិតផល ។ ទ្រង់ទ្រាយ​ខ្សែអក្សរ&lt;i>ផ្គូផ្គង​ជាក់លាក់&lt;/i> គឺ&lt;tt>XXXX&lt;/tt> ដែល &lt;tt>X&lt;/tt> គឺជា​គោល​ដប់​ប្រាំមួយ ។ ខ្សែអក្សរ​ទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
</message>
<message>
- <source>&amp;Revision:</source>
- <translation>ការ​ពិនិត្យ​ឡើង​វិញ ៖</translation>
+ <source>&amp;Revision:</source>
+ <translation>ការ​ពិនិត្យ​ឡើង​វិញ ៖</translation>
</message>
<message>
- <source>Defines the revision number filter. The &lt;i&gt;exact match&lt;/i&gt; string format is &lt;tt&gt;IIFF&lt;/tt&gt; where &lt;tt&gt;I&lt;/tt&gt; is a decimal digit of the integer part and &lt;tt&gt;F&lt;/tt&gt; is a decimal digit of the fractional part. An empty string will match any value.</source>
- <translation>កំណត់​ការ​ពិនិត្យ​តម្រង​លេខ​ឡើង​វិញ ។ ទ្រង់ទ្រាយ​ខ្សែអក្សរ &lt;i&gt;ផ្គូផ្គង​ជាក់លាក់&lt;/i&gt; គឺ​&lt;tt&gt;IIFF&lt;/tt&gt; ដែល &lt;tt&gt;I&lt;/tt&gt; ជា​ចំនួន​គោល​ដប់​របស់​ផ្នែក​ចំនួន​គត់​ ហើយ &lt;tt&gt;F&lt;/tt&gt; គឺជា​ចំនួន​គោលដប់​របស់​ផ្នែក​ប្រភាគ ។ ខ្សែអក្សរ​ទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
+ <source>Defines the revision number filter. The &lt;i>exact match&lt;/i> string format is &lt;tt>IIFF&lt;/tt> where &lt;tt>I&lt;/tt> is a decimal digit of the integer part and &lt;tt>F&lt;/tt> is a decimal digit of the fractional part. An empty string will match any value.</source>
+ <translation>កំណត់​ការ​ពិនិត្យ​តម្រង​លេខ​ឡើង​វិញ ។ ទ្រង់ទ្រាយ​ខ្សែអក្សរ &lt;i>ផ្គូផ្គង​ជាក់លាក់&lt;/i> គឺ​&lt;tt>IIFF&lt;/tt> ដែល &lt;tt>I&lt;/tt> ជា​ចំនួន​គោល​ដប់​របស់​ផ្នែក​ចំនួន​គត់​ ហើយ &lt;tt>F&lt;/tt> គឺជា​ចំនួន​គោលដប់​របស់​ផ្នែក​ប្រភាគ ។ ខ្សែអក្សរ​ទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
</message>
<message>
- <source>&amp;Manufacturer:</source>
- <translation>អ្នក​បង្កើត ៖</translation>
+ <source>&amp;Manufacturer:</source>
+ <translation>អ្នក​បង្កើត ៖</translation>
</message>
<message>
- <source>Defines the manufacturer filter as an &lt;i&gt;exact match&lt;/i&gt; string. An empty string will match any value.</source>
- <translation>កំណត់​តម្រង​អ្នក​ផលិត​ជាខ្សែអក្សរ &lt;i&gt;ផ្គូផ្គង​ជាក់លាក់&lt;/i&gt; ។ ខ្សែអក្សរ​ទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
+ <source>Defines the manufacturer filter as an &lt;i>exact match&lt;/i> string. An empty string will match any value.</source>
+ <translation>កំណត់​តម្រង​អ្នក​ផលិត​ជាខ្សែអក្សរ &lt;i>ផ្គូផ្គង​ជាក់លាក់&lt;/i> ។ ខ្សែអក្សរ​ទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
</message>
<message>
- <source>Pro&amp;duct:</source>
- <translation>ផលិតផល ៖</translation>
+ <source>Pro&amp;duct:</source>
+ <translation>ផលិតផល ៖</translation>
</message>
<message>
- <source>Defines the product name filter as an &lt;i&gt;exact match&lt;/i&gt; string. An empty string will match any value.</source>
- <translation>កំណត់​តម្រង​ឈ្មោះផលិតផល​ជាខ្សែអក្សរ &lt;i&gt;ផ្គូផ្គងជាក់លាក់&lt;/i&gt; ។ ខ្សែអក្សរទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
+ <source>Defines the product name filter as an &lt;i>exact match&lt;/i> string. An empty string will match any value.</source>
+ <translation>កំណត់​តម្រង​ឈ្មោះផលិតផល​ជាខ្សែអក្សរ &lt;i>ផ្គូផ្គងជាក់លាក់&lt;/i> ។ ខ្សែអក្សរទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
</message>
<message>
- <source>&amp;Serial No.:</source>
- <translation>លេខ​ស៊េរី ៖</translation>
+ <source>&amp;Serial No.:</source>
+ <translation>លេខ​ស៊េរី ៖</translation>
</message>
<message>
- <source>Defines the serial number filter as an &lt;i&gt;exact match&lt;/i&gt; string. An empty string will match any value.</source>
- <translation>កំណត់​តម្រង​លេខ​ស៊េរី​ជា​ខ្សែអក្សរ &lt;i&gt;កា​រផ្គូផ្គង​ជាក់លាក់&lt;/i&gt; ។ ខ្សែអក្សរ​ទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
+ <source>Defines the serial number filter as an &lt;i>exact match&lt;/i> string. An empty string will match any value.</source>
+ <translation>កំណត់​តម្រង​លេខ​ស៊េរី​ជា​ខ្សែអក្សរ &lt;i>កា​រផ្គូផ្គង​ជាក់លាក់&lt;/i> ។ ខ្សែអក្សរ​ទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
</message>
<message>
- <source>Por&amp;t:</source>
- <translation>ច្រក ៖</translation>
+ <source>Por&amp;t:</source>
+ <translation>ច្រក ៖</translation>
</message>
<message>
- <source>Defines the host USB port filter as an &lt;i&gt;exact match&lt;/i&gt; string. An empty string will match any value.</source>
- <translation>កំណត់​តម្រង​ច្រក USB ម៉ាស៊ីណ​ជា​ខ្សែអក្សរ &lt;i&gt;ផ្គូផ្គង​ពិតប្រាកដ&lt;/i&gt; ។ ខ្សែអក្សរ​ទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
+ <source>Defines the host USB port filter as an &lt;i>exact match&lt;/i> string. An empty string will match any value.</source>
+ <translation>កំណត់​តម្រង​ច្រក USB ម៉ាស៊ីណ​ជា​ខ្សែអក្សរ &lt;i>ផ្គូផ្គង​ពិតប្រាកដ&lt;/i> ។ ខ្សែអក្សរ​ទទេ​នឹង​ផ្គូផ្គង​តម្លៃ​ណាមួយ ។</translation>
</message>
<message>
- <source>R&amp;emote:</source>
- <translation>ពីចម្ងាយ ៖</translation>
+ <source>R&amp;emote:</source>
+ <translation>ពីចម្ងាយ ៖</translation>
</message>
<message>
- <source>Defines whether this filter applies to USB devices attached locally to the host computer (&lt;i&gt;No&lt;/i&gt;), to a VRDP client&apos;s computer (&lt;i&gt;Yes&lt;/i&gt;), or both (&lt;i&gt;Any&lt;/i&gt;).</source>
- <translation>កំណត់​ថាតើ​តម្រង​នេះ​អនុវត្ត​ទៅកាន់​ឧបករណ៍ USB ដែលបាន​ភ្ជាប់​ទៅ​​កុំព្យូទ័រ​ដែរឬទេ (&lt;i&gt;គ្មានទេ&lt;/i&gt;) ទៅកាន់​កុំព្យូទ័រ​ភ្ញៀវ​របស់ VRDP (&lt;i&gt;បាទ/ចាស&lt;/i&gt;) ឬ​ទាំង​ពីរ (&lt;i&gt;ណាមួយ&lt;/i&gt;) ។</translation>
+ <source>Defines whether this filter applies to USB devices attached locally to the host computer (&lt;i>No&lt;/i>), to a VRDP client's computer (&lt;i>Yes&lt;/i>), or both (&lt;i>Any&lt;/i>).</source>
+ <translation>កំណត់​ថាតើ​តម្រង​នេះ​អនុវត្ត​ទៅកាន់​ឧបករណ៍ USB ដែលបាន​ភ្ជាប់​ទៅ​​កុំព្យូទ័រ​ដែរឬទេ (&lt;i>គ្មានទេ&lt;/i>) ទៅកាន់​កុំព្យូទ័រ​ភ្ញៀវ​របស់ VRDP (&lt;i>បាទ/ចាស&lt;/i>) ឬ​ទាំង​ពីរ (&lt;i>ណាមួយ&lt;/i>) ។</translation>
</message>
<message>
- <source>&amp;Action:</source>
- <translation>សកម្មភាព ៖</translation>
+ <source>&amp;Action:</source>
+ <translation>សកម្មភាព ៖</translation>
</message>
<message>
- <source>Defines an action performed by the host computer when a matching device is attached: give it up to the host OS (&lt;i&gt;Ignore&lt;/i&gt;) or grab it for later usage by virtual machines (&lt;i&gt;Hold&lt;/i&gt;).</source>
- <translation>កំណត់​សកម្មភាព​ដែល​បាន​អនុវត្ត​ដោយ​កុំព្យូទ័រ នៅពេល​ផ្គូផ្គង​ឧបករណ៍​ដែល​ត្រូវ​បាន​ភ្ជាប់ ៖ ផ្ដល់​វា​ទៅ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់ម៉ាស៊ីន (&lt;i&gt;មិនអើពើ&lt;/i&gt;) ឬ​ចាប់យក​វា​សម្រាប់​ប្រើ​ពេលក្រោយ ដោយ​ម៉ាស៊ីន​និម្មិត &lt;i&gt;រង់ចាំ&lt;/i&gt;) ។</translation>
+ <source>Defines an action performed by the host computer when a matching device is attached: give it up to the host OS (&lt;i>Ignore&lt;/i>) or grab it for later usage by virtual machines (&lt;i>Hold&lt;/i>).</source>
+ <translation>កំណត់​សកម្មភាព​ដែល​បាន​អនុវត្ត​ដោយ​កុំព្យូទ័រ នៅពេល​ផ្គូផ្គង​ឧបករណ៍​ដែល​ត្រូវ​បាន​ភ្ជាប់ ៖ ផ្ដល់​វា​ទៅ​ប្រព័ន្ធ​ប្រតិបត្តិការ​របស់ម៉ាស៊ីន (&lt;i>មិនអើពើ&lt;/i>) ឬ​ចាប់យក​វា​សម្រាប់​ប្រើ​ពេលក្រោយ ដោយ​ម៉ាស៊ីន​និម្មិត &lt;i>រង់ចាំ&lt;/i>) ។</translation>
</message>
<message>
- <source>USB Filter Details</source>
- <translation>សេចក្ដី​លម្អិត​តម្រង USB</translation>
+ <source>USB Filter Details</source>
+ <translation>សេចក្ដី​លម្អិត​តម្រង USB</translation>
</message>
-</context>
-<context>
+ </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>
+ <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>នៅពេល​បាន​គូស​ធីក VM នឹង​ដើរតួ​ជា​ម៉ាស៊ីន​បម្រើ​ពិធីការ​ផ្ទៃតុ​ពី​ចម្ងាយ (RDP) ដោយ​អនុញ្ញាត​ឲ្យ​ម៉ាស៊ីនភ្ញៀវ​ពី​ចម្ងាយ​តភ្ជាប់​ ហើយ​ប្រតិបត្តិ​ VM (នៅ​ពេល​កំពុង​រត់) ដោយ​ប្រើ​ម៉ាស៊ីន​ភ្ញៀវ RDP ស្តង់ដារ ។</translation>
</message>
<message>
- <source>&amp;Enable VRDP Server</source>
- <translation type="obsolete">បើក​ម៉ាស៊ីនបម្រើ VRDP</translation>
+ <source>&amp;Enable VRDP Server</source>
+ <translation>បើក​ម៉ាស៊ីនបម្រើ VRDP</translation>
</message>
<message>
- <source>Server &amp;Port:</source>
- <translation type="obsolete">ច្រក​ម៉ាស៊ីន​បម្រើ ៖</translation>
+ <source>Server &amp;Port:</source>
+ <translation>ច្រក​ម៉ាស៊ីន​បម្រើ ៖</translation>
</message>
<message>
- <source>Displays the VRDP Server port number. You may specify &lt;tt&gt;0&lt;/tt&gt; (zero) to reset the port to the default value.</source>
- <translation type="obsolete">បង្ហាញ​លេខ​ច្រក​ម៉ាស៊ីនបម្រើ VRDP ។ អ្នកអាច​បញ្ជាក់ &lt;tt&gt;0&lt;/tt&gt; (សូន្យ) ដើម្បី​កំណត់​ច្រក​ទៅ​តម្លៃ​លំនាំដើម​ឡើង​វិញ ។</translation>
+ <source>Displays the VRDP Server port number. You may specify &lt;tt>0&lt;/tt> (zero) to reset the port to the default value.</source>
+ <translation>បង្ហាញ​លេខ​ច្រក​ម៉ាស៊ីនបម្រើ VRDP ។ អ្នកអាច​បញ្ជាក់ &lt;tt>0&lt;/tt> (សូន្យ) ដើម្បី​កំណត់​ច្រក​ទៅ​តម្លៃ​លំនាំដើម​ឡើង​វិញ ។</translation>
</message>
<message>
- <source>Authentication &amp;Method:</source>
- <translation type="obsolete">វិធីសាស្ត្រ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖</translation>
+ <source>Authentication &amp;Method:</source>
+ <translation>វិធីសាស្ត្រ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖</translation>
</message>
<message>
- <source>Defines the VRDP authentication method.</source>
- <translation type="obsolete">កំណត់​វិធីសាស្ត្រ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់ VRDP ។</translation>
+ <source>Defines the VRDP authentication method.</source>
+ <translation>កំណត់​វិធីសាស្ត្រ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់ VRDP ។</translation>
</message>
<message>
- <source>Authentication &amp;Timeout:</source>
- <translation type="obsolete">អស់ពេល​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖</translation>
+ <source>Authentication &amp;Timeout:</source>
+ <translation>អស់ពេល​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖</translation>
</message>
<message>
- <source>Specifies the timeout for guest authentication, in milliseconds.</source>
- <translation type="obsolete">បញ្ជាក់​ការ​អស់ពេលវេលា​សម្រាប់​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ គិត​​ជា​មិល្លី​វិនាទី ។</translation>
+ <source>Specifies the timeout for guest authentication, in milliseconds.</source>
+ <translation>បញ្ជាក់​ការ​អស់ពេលវេលា​សម្រាប់​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់​ម៉ាស៊ីន​ភ្ញៀវ​ គិត​​ជា​មិល្លី​វិនាទី ។</translation>
</message>
-</context>
+ </context>
</TS>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts
index dc820d283..991e0e2c5 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="1.1" language="uk_UA">
+<!DOCTYPE TS>
+<TS version="2.0" language="uk_UA">
<context>
<name>@@@</name>
<message>
@@ -30,7 +31,7 @@
<location filename="../src/VBoxGlobal.cpp" line="2650"/>
<source>Sun Microsystems, Inc.</source>
<comment>Comma-separated list of translators</comment>
- <translation>Daniel Korostil</translation>
+ <translation>Daniel Korostil.</translation>
</message>
</context>
<context>
@@ -81,7 +82,7 @@
<message>
<location filename="../src/main.cpp" line="72"/>
<source>This error means that the kernel driver was either not able to allocate enough memory or that some mapping operation failed.&lt;br/&gt;&lt;br/&gt;There are known problems with Linux 2.6.29. If you are running such a kernel, please edit /usr/src/vboxdrv-*/Makefile and enable &lt;i&gt;VBOX_USE_INSERT_PAGE = 1&lt;/i&gt;. After that, re-compile the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root.</source>
- <translation>Ця помилка означає, що драйвер ядра не зміг виділити достатньо пам&apos;яті або не вдалось виконати відображення деякої операції.&lt;br/&gt;&lt;br/&gt;Це є відомі проблеми з версією ядра 2.6.29. Якщо ви запускаєте саме це ядро, будь ласка, редагуйте /usr/src/vboxdrv-*/Makefile і ввімкніть &lt;i&gt;VBOX_USE_INSERT_PAGE = 1&lt;/i&gt;. Після чого, перекомпілюйте модуль ядра, виконавши з-під адміністратора&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;.</translation>
+ <translation>Ця помилка означає, що драйвер ядра не зміг виділити достатньо пам&apos;яті або не вдалось виконати відображення деякої операції.&lt;br/&gt;&lt;br/&gt;Це відомі проблеми з версією ядра 2.6.29. Якщо ви запускаєте саме це ядро, будь ласка, редагуйте /usr/src/vboxdrv-*/Makefile і ввімкніть &lt;i&gt;VBOX_USE_INSERT_PAGE = 1&lt;/i&gt;. Після чого, перекомпілюйте модуль ядра, виконавши з-під адміністратора&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/etc/init.d/vboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;.</translation>
</message>
<message>
<location filename="../src/main.cpp" line="82"/>
@@ -386,7 +387,7 @@
<message>
<location filename="../include/QIHttp.h" line="91"/>
<source>Connection timed out</source>
- <translation>Час очікування підключення вичерпався</translation>
+ <translation>Час очікування під&apos;єднання вичерпався</translation>
</message>
<message>
<location filename="../include/QIHttp.h" line="94"/>
@@ -486,27 +487,27 @@
<context>
<name>VBoxAddNIDialog</name>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxAboutDlg.cpp" line="0"/>
<source>Add Host Interface</source>
<translation type="obsolete">Додати головний інтерфейс</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxAboutDlg.cpp" line="0"/>
<source>Interface Name</source>
<translation type="obsolete">Назва інтерфейсу</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxAboutDlg.cpp" line="0"/>
<source>Descriptive name of the new network interface</source>
<translation type="obsolete">Описова назва нового мережевого інтерфейсу</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxAboutDlg.cpp" line="0"/>
<source>&amp;OK</source>
<translation type="obsolete">&amp;Гаразд</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxAboutDlg.cpp" line="0"/>
<source>Cancel</source>
<translation type="obsolete">Скасувати</translation>
</message>
@@ -682,7 +683,7 @@
<message>
<location filename="../ui/VBoxCloseVMDlg.ui" line="79"/>
<source>You want to:</source>
- <translation>Ви хочете:</translation>
+ <translation>Ви бажаєте:</translation>
</message>
<message>
<location filename="../ui/VBoxCloseVMDlg.ui" line="107"/>
@@ -712,7 +713,7 @@
<message>
<location filename="../ui/VBoxCloseVMDlg.ui" line="207"/>
<source>&lt;p&gt;When checked, the machine state will be restored from the state stored in the current snapshot right after it is turned off. This is useful if you are sure that you want to discard the results of your last sessions and go back to the current snapshot.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Якщо цей пункт буде позначено, стан машини буде відновлено до стану, який збережено в поточному знімку, відразу після її вимикання. Це може бути корисним, якщо ви впевнені, що хочете відкинути результати останнього сеансу і вернутись до поточного знімку.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Якщо це відмічено, стан машини буде відновлено до стану, який збережено в поточному знімку, відразу після її вимкнення. Це може бути корисним, якщо ви впевнені, що бажаєте відкинути результати останнього сеансу і вернутись до поточного знімку.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxCloseVMDlg.ui" line="104"/>
@@ -722,7 +723,7 @@
<message>
<location filename="../ui/VBoxCloseVMDlg.ui" line="130"/>
<source>&lt;p&gt;Sends the ACPI Power Button press event to the virtual machine.&lt;/p&gt;&lt;p&gt;Normally, the guest operating system running inside the virtual machine will detect this event and perform a clean shutdown procedure. This is a recommended way to turn off the virtual machine because all applications running inside it will get a chance to save their data and state.&lt;/p&gt;&lt;p&gt;If the machine doesn&apos;t respond to this action then the guest operating system may be misconfigured or doesn&apos;t understand ACPI Power Button events at all. In this case you should select the &lt;b&gt;Power off the machine&lt;/b&gt; action to stop virtual machine execution.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Відсилає ACPI-сигнал натиснення кнопки живлення у віртуальній машині.&lt;/p&gt;&lt;p&gt;Зазвичай, гостьова операційна система, яка виконується всередині віртуальної машини, визначить цей сигнал і виконає процес нормального завершення роботи. Цей варіант є рекомендованим шляхом вимкнення віртуальної машини, бо всі запущені програми всередині гостьової операційної системи зможуть зберегти свої дані та стан.&lt;/p&gt;&lt;p&gt;Якщо машина ніяк не реагує на ці дії, тоді гостьова операційна система може бути неправильно налаштована, або вона взагалі не розпізнає ACPI-сигнал живлення. У такому випадку, ви повинні вибрати дію &lt;b&gt;Вимкнути машину&lt;/b&gt; для зупинення виконання віртуальної машини.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Відсилає сигнал ACPI натиснення кнопки живлення у віртуальній машині.&lt;/p&gt;&lt;p&gt;Зазвичай, гостьова операційна система, яка виконується всередині віртуальної машини, визначить цей сигнал і виконає процес нормального завершення роботи. Цей варіант є рекомендованим шляхом вимкнення віртуальної машини, бо всі запущені програми всередині гостьової операційної системи зможуть зберегти свої дані та стан.&lt;/p&gt;&lt;p&gt;Якщо машина ніяк не реагує на ці дії, тоді гостьова операційна система може бути неправильно налаштована, або вона взагалі не розпізнає сигнал ACPI живлення. У такому випадку, ви повинні вибрати дію &lt;b&gt;Вимкнути машину&lt;/b&gt; для зупинення виконання віртуальної машини.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxCloseVMDlg.ui" line="156"/>
@@ -745,7 +746,7 @@
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="1657"/>
<source>Switch to fullscreen mode</source>
- <translation>перемкнути у повноекранний режим</translation>
+ <translation>Перемкнути у повноекранний режим</translation>
</message>
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="1663"/>
@@ -877,7 +878,7 @@
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="1729"/>
<source>Unmount the currently mounted CD/DVD-ROM media</source>
- <translation>Демонтувати вже змонтований CD/DVD-ROM</translation>
+ <translation>Демонтувати вже змонтований носій CD/DVD-ROM</translation>
</message>
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="1733"/>
@@ -887,7 +888,7 @@
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="1735"/>
<source>Enable or disable remote desktop (RDP) connections to this machine</source>
- <translation>Дозволити або заборонити підключення віддаленої стільниці (RDP) до цієї машини</translation>
+ <translation>Дозволити або заборонити під&apos;єднання віддаленої стільниці (RDP) до цієї машини</translation>
</message>
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="1737"/>
@@ -902,7 +903,7 @@
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="1741"/>
<source>&amp;Install Guest Additions...</source>
- <translation>Вс&amp;тановіть гостьові доповнення...</translation>
+ <translation>Вс&amp;тановити гостьові доповнення...</translation>
</message>
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="1744"/>
@@ -932,7 +933,7 @@
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="1780"/>
<source>De&amp;bug</source>
- <translation>&amp;Налагодження</translation>
+ <translation>&amp;Зневадження</translation>
</message>
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="1782"/>
@@ -1130,7 +1131,7 @@
<location filename="../src/VBoxConsoleWnd.cpp" line="1996"/>
<source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;All network adapters are disabled&lt;/b&gt;&lt;/nobr&gt;</source>
<comment>Network adapters tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Всі мережеві адаптери вимукнуті&lt;/b&gt;&lt;/nobr&gt;</translation>
+ <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Всі мережеві адаптери вимкнуті&lt;/b&gt;&lt;/nobr&gt;</translation>
</message>
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="2008"/>
@@ -1142,7 +1143,7 @@
<location filename="../src/VBoxConsoleWnd.cpp" line="2026"/>
<source>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;No USB devices attached&lt;/b&gt;&lt;/nobr&gt;</source>
<comment>USB device tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Жодного пристрою USB не під’єднано&lt;/b&gt;&lt;/nobr&gt;</translation>
+ <translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Жодного пристрою USB не під&apos;єднано&lt;/b&gt;&lt;/nobr&gt;</translation>
</message>
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="2033"/>
@@ -1163,19 +1164,19 @@
<translation>&lt;br&gt;&lt;nobr&gt;&lt;b&gt;Немає спільних тек&lt;/b&gt;&lt;/nobr&gt;</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxConsoleWnd.cpp" line="0"/>
<source>Sun xVM VirtualBox</source>
<translation type="obsolete">Sun xVM VirtualBox</translation>
</message>
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="1708"/>
<source>Session I&amp;nformation Dialog</source>
- <translation>&amp;Інформація про сесію</translation>
+ <translation>&amp;Інформація про сеанс</translation>
</message>
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="1710"/>
<source>Show Session Information Dialog</source>
- <translation>Показувати інформацію про сесію</translation>
+ <translation>Показати інформацію про сеанс</translation>
</message>
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="1750"/>
@@ -1279,12 +1280,12 @@
<message>
<location filename="../src/VBoxExportApplianceWzd.cpp" line="134"/>
<source>Please complete the additionally fields like the username, password and the bucket. Finally you have to provide a filename for the OVF target.</source>
- <translation type="unfinished"></translation>
+ <translation>Будь ласка, заповніть додаткові поля такі, як ім&apos;я користувача, пароль і крилата діжка. Наостанок, ви маєте надати назву файлові для цілі OVF.</translation>
</message>
<message>
<location filename="../src/VBoxExportApplianceWzd.cpp" line="135"/>
<source>Please complete the additionally fields like the username, password, hostname and the bucket. Finally you have to provide a filename for the OVF target.</source>
- <translation type="unfinished"></translation>
+ <translation>Будь ласка, заповніть додаткові поля такі, як ім&apos;я користувача, пароль, назва вузла і крилата діжка. Наостанок, ви маєте надати назву файлові для цілі OVF.</translation>
</message>
<message>
<location filename="../src/VBoxExportApplianceWzd.cpp" line="208"/>
@@ -1299,17 +1300,17 @@
<message>
<location filename="../src/VBoxExportApplianceWzd.cpp" line="388"/>
<source>Exporting Appliance ...</source>
- <translation type="unfinished"></translation>
+ <translation>Експорт образа віртуальної машини ...</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="31"/>
<source>Appliance Export Wizard</source>
- <translation type="unfinished"></translation>
+ <translation>Майстер експорту образа віртуальної машини</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="55"/>
<source>Welcome to the Appliance Export Wizard!</source>
- <translation type="unfinished"></translation>
+ <translation>Ласкаво просимо до майстера експорту образа віртуальної машини!</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="105"/>
@@ -1320,7 +1321,13 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;This wizard will guide you through the process of exporting an appliance. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Use the &lt;span style=&quot; font-weight:600;&quot;&gt;Next&lt;/span&gt; button to go the next page of the wizard and the &lt;span style=&quot; font-weight:600;&quot;&gt;Back&lt;/span&gt; button to return to the previous page.&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Please select the virtual machines that should be exported to the appliance. You can select more than one. Please note that these machines have to be turned off before they can be exported.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Цей майстер допоможе вам з експортом образа віртуальної машини. &lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Натисніть кнопку &lt;span style=&quot; font-weight:600;&quot;&gt;Далі&lt;/span&gt;, щоб перейти до наступної сторінки майстра і &lt;span style=&quot; font-weight:600;&quot;&gt;Назад&lt;/span&gt;, щоб повернутись до попередньої сторінки.&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Будь ласка, виберіть віртуальні машини, які слід експортувати в образ віртуальної машини. Ви можете вибрати більше одного. Будь ласка, майте на увазі, що ті віртуальні машини потрібно вимкнути перед експортом.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="722"/>
@@ -1340,77 +1347,77 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="545"/>
<source>Appliance Export Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Налаштування експорту образів віртуальної машини</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="252"/>
<source>Here you can change additional configuration values of the selected virtual machines. You can modify most of the shown properties by double-clicking on the items.</source>
- <translation type="unfinished"></translation>
+ <translation>Тут ви можете змінити додаткові значення налаштування вибраної віртуальної машини. Ви можете змінити більшість показаних властивостей подвійним клацом по пунктах.</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="298"/>
<source>Restore Defaults</source>
- <translation type="unfinished">Відновити до типових</translation>
+ <translation>Відновити до типових</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="419"/>
<source>Please specify the target for the OVF export. You can choose between a local file system export, the uploading of 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>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="431"/>
<source>&amp;Local Filesystem </source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Локальна файлова система </translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="441"/>
<source>Sun &amp;Cloud</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Хмаринки Sun</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="448"/>
<source>&amp;Simple Storage System (S3)</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Проста система зберігання (S3)</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="604"/>
<source>&amp;Username:</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Ім&apos;я користувача:</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="617"/>
<source>&amp;Password:</source>
- <translation type="unfinished">&amp;Пароль:</translation>
+ <translation>&amp;Пароль:</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="637"/>
<source>&amp;File:</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Файл:</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="650"/>
<source>&amp;Bucket:</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Крилата діжка:</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="660"/>
<source>&amp;Hostname:</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Назва вузла:</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="675"/>
<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>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="678"/>
<source>&amp;Write legacy OVF 0.9</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Записати в OVF 0.9</translation>
</message>
<message>
<location filename="../ui/VBoxExportApplianceWzd.ui" line="729"/>
<source>&amp;Export &gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Експорт &gt;</translation>
</message>
</context>
<context>
@@ -1486,7 +1493,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSettingsDialogSpecific.cpp" line="165"/>
<source>General</source>
- <translation>Загальні</translation>
+ <translation>Загально</translation>
</message>
<message>
<location filename="../src/VBoxSettingsDialogSpecific.cpp" line="168"/>
@@ -1554,7 +1561,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxGLSettingsGeneral.ui" line="128"/>
<source>When checked, the application will provide an icon with the context menu in the system tray.</source>
- <translation>Якщо цей пункт буде позначено, програма забезпечуватиме піктограму з контекстним меню в системному лотку.</translation>
+ <translation>Якщо це відмічено, програма забезпечуватиме піктограму з контекстним меню в системному лотку.</translation>
</message>
<message>
<location filename="../ui/VBoxGLSettingsGeneral.ui" line="131"/>
@@ -1634,7 +1641,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxGLSettingsLanguage.ui" line="87"/>
<source>Lists all available user interface languages. The effective language is written in &lt;b&gt;bold&lt;/b&gt;. Select &lt;i&gt;Default&lt;/i&gt; to reset to the system default language.</source>
- <translation>Показує список всіх доступних користувацьких інтерфейсів мови.Чинна мова записана &lt;b&gt;грубим шрифтом&lt;/b&gt;. Виберіть &lt;i&gt;Типова&lt;/i&gt;, щоб повернутися до типової для системи мови.</translation>
+ <translation>Показує список усіх доступних мов користувацького інтерфейсу. Чинна мова записана &lt;b&gt;грубим шрифтом&lt;/b&gt;. Виберіть &lt;i&gt;Типова&lt;/i&gt;, щоб повернутися до типової для системи мови.</translation>
</message>
<message>
<location filename="../ui/VBoxGLSettingsLanguage.ui" line="94"/>
@@ -1963,7 +1970,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxGLSettingsUpdate.ui" line="45"/>
<source>When checked, the application will periodically connect to the VirtualBox website and check whether a new VirtualBox version is available.</source>
- <translation>Якщо це відмічено, програма періодично підключатиметься до веб-сайта VirtualBox і перевірятиме доступність нових версій VirtualBox.</translation>
+ <translation>Якщо це відмічено, програма періодично буде під&apos;єднуватись до сайта VirtualBox і перевірятиме доступність нових версій VirtualBox.</translation>
</message>
<message>
<location filename="../ui/VBoxGLSettingsUpdate.ui" line="48"/>
@@ -1978,7 +1985,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxGLSettingsUpdate.ui" line="103"/>
<source>Specifies how often the new version check should be performed. Note that if you want to completely disable this check, just clear the above check box.</source>
- <translation>Визначає як часто слід здійснювати перевірку нової версії. Майте на увазі, якщо ви бажаєте повністю відмовитись від перевірки, просто зніміть мітку.</translation>
+ <translation>Визначає, як часто слід здійснювати перевірку нової версії. Майте на увазі, якщо ви бажаєте повністю відмовитись від перевірки, просто зніміть мітку.</translation>
</message>
<message>
<location filename="../ui/VBoxGLSettingsUpdate.ui" line="129"/>
@@ -2004,7 +2011,7 @@ p, li { white-space: pre-wrap; }
<location filename="../src/VBoxGlobal.cpp" line="1334"/>
<source>&lt;br&gt;&lt;nobr&gt;Serial No. %1&lt;/nobr&gt;</source>
<comment>USB device tooltip</comment>
- <translation>&lt;br&gt;&lt;nobr&gt;Серійний Номер %1&lt;/nobr&gt;</translation>
+ <translation>&lt;br&gt;&lt;nobr&gt;Серійний номер %1&lt;/nobr&gt;</translation>
</message>
<message>
<location filename="../src/VBoxGlobal.cpp" line="1341"/>
@@ -2031,7 +2038,7 @@ p, li { white-space: pre-wrap; }
<translation>Основна пам&apos;ять</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>&lt;nobr&gt;%3 MB&lt;/nobr&gt;</source>
<comment>details report</comment>
<translation type="obsolete">&lt;nobr&gt;%3 МБ.&lt;/nobr&gt;</translation>
@@ -2040,7 +2047,7 @@ p, li { white-space: pre-wrap; }
<location filename="../src/VBoxGlobal.cpp" line="1443"/>
<source>General</source>
<comment>details report</comment>
- <translation>Загальні</translation>
+ <translation>Загально</translation>
</message>
<message>
<location filename="../src/VBoxGlobal.cpp" line="1532"/>
@@ -2049,7 +2056,7 @@ p, li { white-space: pre-wrap; }
<translation>Відеопам&apos;ять</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>&lt;nobr&gt;%4 MB&lt;/nobr&gt;</source>
<comment>details report</comment>
<translation type="obsolete">&lt;nobr&gt;%4 МБ.&lt;/nobr&gt;</translation>
@@ -2205,31 +2212,31 @@ p, li { white-space: pre-wrap; }
<translation>Вимкнутий</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>VRDP Server Port</source>
<comment>details report (VRDP)</comment>
<translation type="obsolete">Порт сервера VRDP</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>%1</source>
<comment>details report (VRDP)</comment>
<translation type="obsolete">%1</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>Disabled</source>
<comment>details report (VRDP)</comment>
<translation type="obsolete">Вимкнутий</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>Remote Display</source>
<comment>details report</comment>
<translation type="obsolete">Віддалена стільниця</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>Opening URLs is not implemented yet.</source>
<translation type="obsolete">Відкриття URL ще не здійснено.</translation>
</message>
@@ -2444,7 +2451,7 @@ p, li { white-space: pre-wrap; }
<translation>NAT</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>Host Interface</source>
<comment>NetworkAttachmentType</comment>
<translation type="obsolete">Головний інтерфейс</translation>
@@ -2516,12 +2523,12 @@ p, li { white-space: pre-wrap; }
<translation>Двонапрямний</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>Select a directory</source>
<translation type="obsolete">Виберіть теку</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>Select a file</source>
<translation type="obsolete">Виберіть файл</translation>
</message>
@@ -2556,7 +2563,7 @@ p, li { white-space: pre-wrap; }
<translation>Спільна теки</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>%1</source>
<comment>details report (shadef folders)</comment>
<translation type="obsolete">%1</translation>
@@ -2583,7 +2590,7 @@ p, li { white-space: pre-wrap; }
<location filename="../src/VBoxGlobal.cpp" line="2705"/>
<source>Disconnected</source>
<comment>PortMode</comment>
- <translation>Відключений</translation>
+ <translation>Від&apos;єднаний</translation>
</message>
<message>
<location filename="../src/VBoxGlobal.cpp" line="2706"/>
@@ -2766,13 +2773,13 @@ p, li { white-space: pre-wrap; }
<translation>Intel PRO/1000 MT Desktop (82540EM)</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>PIIX3</source>
<comment>IDEControllerType</comment>
<translation type="obsolete">PIIX3</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>PIIX4</source>
<comment>IDEControllerType</comment>
<translation type="obsolete">PIIX4</translation>
@@ -2817,7 +2824,7 @@ p, li { white-space: pre-wrap; }
<location filename="../src/VBoxGlobal.cpp" line="1383"/>
<source>&lt;nobr&gt;Serial No.: %1&lt;/nobr&gt;</source>
<comment>USB filter tooltip</comment>
- <translation>&lt;nobr&gt;Серійний Номер: %1&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;Серійний номер: %1&lt;/nobr&gt;</translation>
</message>
<message>
<location filename="../src/VBoxGlobal.cpp" line="1388"/>
@@ -2832,13 +2839,13 @@ p, li { white-space: pre-wrap; }
<translation>&lt;nobr&gt;Стан: %1&lt;/nobr&gt;</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>host interface, %1</source>
<comment>details report (network)</comment>
<translation type="obsolete">головний інтерфейс, %1</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxGlobal.cpp" line="0"/>
<source>internal network, &apos;%1&apos;</source>
<comment>details report (network)</comment>
<translation type="obsolete">внутрішня мережа, &apos;%1&apos;</translation>
@@ -2900,12 +2907,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxMedium.cpp" line="495"/>
<source>&lt;hr&gt;Some of the media in this hard disk chain are inaccessible. Please use the Virtual Media Manager in &lt;b&gt;Show Differencing Hard Disks&lt;/b&gt; mode to inspect these media.</source>
- <translation>&lt;hr&gt;Деякі з носіїв цієї низки жорстких дисків недоступні. Будь ласка, використайте Керування Віртуальними Носіями в режимі &lt;b&gt;Показати обчислення жорстких дисків&lt;/b&gt;, щоб оглянути цей носій.</translation>
+ <translation>&lt;hr&gt;Деякі з носіїв цієї низки жорстких дисків недоступні. Будь ласка, використайте керування віртуальними носіями в режимі &lt;b&gt;Показати обчислення жорстких дисків&lt;/b&gt;, щоб оглянути цей носій.</translation>
</message>
<message>
<location filename="../src/VBoxMedium.cpp" line="514"/>
<source>%1&lt;hr&gt;This base hard disk is indirectly attached using the following differencing hard disk:&lt;br&gt;%2%3</source>
- <translation>%1&lt;hr&gt;Цей жорсткий диск неявно під&apos;єднаний, використовуючи наступне обчислення жорсткого диска:&lt;br&gt;%2%3</translation>
+ <translation>%1&lt;hr&gt;Цей жорсткий диск неявно під&apos;єднаний, використовуючи таке обчислення жорсткого диска:&lt;br&gt;%2%3</translation>
</message>
<message>
<location filename="../src/VBoxGlobal.cpp" line="1536"/>
@@ -2983,7 +2990,7 @@ p, li { white-space: pre-wrap; }
<location filename="../src/VBoxGlobal.cpp" line="1546"/>
<source>Remote Display Server Port</source>
<comment>details report (VRDP Server)</comment>
- <translation>Віддалений потр екрана сервера</translation>
+ <translation>Віддалений порт екрана сервера</translation>
</message>
<message>
<location filename="../src/VBoxGlobal.cpp" line="1550"/>
@@ -3316,7 +3323,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxMediaComboBox.cpp" line="262"/>
<source>No media available. Use the Virtual Media Manager to add media of the corresponding type.</source>
- <translation>Жодного доступного носія. Використайте Керування Віртуальними Носіями, щоб додати носія відповідного типу.</translation>
+ <translation>Жодного доступного носія. Використайте керування віртуальними носіями, щоб додати носія відповідного типу.</translation>
</message>
<message>
<location filename="../src/VBoxMediaComboBox.cpp" line="263"/>
@@ -3455,7 +3462,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxMediaManagerDlg.ui" line="36"/>
<source>Virtual Media Manager</source>
- <translation>Керування Віртуальними Носіями</translation>
+ <translation>Керування віртуальними носіями</translation>
</message>
<message>
<location filename="../ui/VBoxMediaManagerDlg.ui" line="59"/>
@@ -3514,42 +3521,42 @@ p, li { white-space: pre-wrap; }
<context>
<name>VBoxNIList</name>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxMiniToolBar.cpp" line="0"/>
<source>VirtualBox Host Interface %1</source>
<translation type="obsolete">Головний інтерфейс VirtualBox %1</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxMiniToolBar.cpp" line="0"/>
<source>&lt;p&gt;Do you want to remove the selected host network interface &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This interface may be in use by one or more network adapters of this or another VM. After it is removed, these adapters will no longer work until you correct their settings by either choosing a different interface name or a different adapter attachment type.&lt;/p&gt;</source>
<translation type="obsolete">&lt;p&gt;Чи ви бажаєте вилучити вибраний головний мережевий інтерфейс &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Майте на увазі:&lt;/b&gt; Цей інтерфейс може використовуватись одним або більше мережевим адаптером на цій чи іншій віртуальній машині. Після вилучення, ці адаптери більше не працюватимуть поки ви не зміните їхні налаштування, вибравши будь-яку іншу назву інтерфейсу або інший тип під&apos;єднання.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxMiniToolBar.cpp" line="0"/>
<source>Host &amp;Interfaces</source>
<translation type="obsolete">&amp;Головний інтерфейс</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxMiniToolBar.cpp" line="0"/>
<source>Lists all available host interfaces.</source>
<translation type="obsolete">Показує список всіх доступних головних інтерфейсів. </translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxMiniToolBar.cpp" line="0"/>
<source>A&amp;dd New Host Interface</source>
<translation type="obsolete">&amp;Додати новий головний інтерфейс</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxMiniToolBar.cpp" line="0"/>
<source>&amp;Remove Selected Host Interface</source>
<translation type="obsolete">&amp;Вилучити вибраний головний інтерфейс</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxMiniToolBar.cpp" line="0"/>
<source>Adds a new host interface.</source>
<translation type="obsolete">Додає новий головний інтерфейс.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxMiniToolBar.cpp" line="0"/>
<source>Removes the selected host interface.</source>
<translation type="obsolete">Вилучає вибраний головний інтерфейс.</translation>
</message>
@@ -3564,7 +3571,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxNewHDWzd.ui" line="63"/>
<source>Welcome to the Create New Virtual Disk Wizard!</source>
- <translation>Ласкаво просимо до Майстра Створення Нового Віртуального Диска!</translation>
+ <translation>Ласкаво просимо до майсетра створення нового віртуального диска!</translation>
</message>
<message>
<location filename="../ui/VBoxNewHDWzd.ui" line="435"/>
@@ -3584,7 +3591,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxNewHDWzd.cpp" line="274"/>
<source>Hard disk images (*.vdi)</source>
- <translation>Образ жорсткого диску (*.vdi)</translation>
+ <translation>Образ жорсткого диска (*.vdi)</translation>
</message>
<message>
<location filename="../src/VBoxNewHDWzd.cpp" line="272"/>
@@ -3638,7 +3645,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxNewHDWzd.ui" line="121"/>
<source>&lt;p&gt;This wizard will help you to create a new virtual hard disk for your virtual machine.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go to the next page of the wizard and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Цей майстер допоможе створити новий віртуальний жорсткий диск для вашої віртуальної машини.&lt;/p&gt;&lt;p&gt;Натисніть кнопку &lt;b&gt;Далі&lt;/b&gt;, щоб перейти до наступної сторінки майстра та кнопку &lt;b&gt;Назад&lt;/b&gt;, щоб повернутись до попередньої сторінки.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Цей майстер допоможе створити новий віртуальний жорсткий диск для вашої віртуальної машини.&lt;/p&gt;&lt;p&gt;Натисніть кнопку &lt;b&gt;Далі&lt;/b&gt;, щоб перейти до наступної сторінки майстера та кнопку &lt;b&gt;Назад&lt;/b&gt;, щоб повернутись до попередньої сторінки.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxNewHDWzd.ui" line="227"/>
@@ -3648,7 +3655,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxNewHDWzd.ui" line="285"/>
<source>&lt;p&gt;Select the type of virtual hard disk you want to create.&lt;/p&gt;&lt;p&gt;A &lt;b&gt;dynamically expanding storage&lt;/b&gt; initially occupies a very small amount of space on your physical hard disk. It will grow dynamically (up to the size specified) as the Guest OS claims disk space.&lt;/p&gt;&lt;p&gt;A &lt;b&gt;fixed-size storage&lt;/b&gt; does not grow. It is stored in a file of approximately the same size as the size of the virtual hard disk. The creation of a fixed-size storage may take a long time depending on the storage size and the write performance of your harddisk.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Виберіть тип віртуального жорсткого диска, який ви хочете створити.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Динамічно розширна пам&apos;ять&lt;/b&gt; початково займає дуже малу величину місця на фізичному жорсткому диску. Розмір буде динамічно зростати (до вказаного розміру) до тих пір, поки гостьова операційна система може використовувати дисковий простір.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Незмінної розмірності пам&apos;ять&lt;/b&gt; не збільшується. Він зберігається у файлі приблизно такого ж розміру, як розмір віртуального жорсткого диска. Створення незмінної розмірності пам&apos;яті може забрати багато часу, який залежить від розміру пам&apos;яті та швидкодії вашого жорсткого диска.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Виберіть тип віртуального жорсткого диска, який ви бажаєте створити.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Динамічно розширна пам&apos;ять&lt;/b&gt; початково займає дуже малу величину місця на фізичному жорсткому диску. Розмір буде динамічно зростати (до вказаного розміру) до тих пір, поки гостьова операційна система може використовувати дисковий простір.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Незмінної розмірності пам&apos;ять&lt;/b&gt; не збільшується. Він зберігається у файлі приблизно такого ж розміру, як розмір віртуального жорсткого диска. Створення незмінної розмірності пам&apos;яті може забрати багато часу, який залежить від розміру пам&apos;яті та швидкодії вашого жорсткого диска.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxNewHDWzd.ui" line="304"/>
@@ -3688,7 +3695,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxNewHDWzd.ui" line="793"/>
<source>You are going to create a new virtual hard disk with the following parameters:</source>
- <translation>Ви збираєтесь створити новий віртуальний жорсткий диск з наступними параметрами:</translation>
+ <translation>Ви збираєтесь створити новий віртуальний жорсткий диск з такими параметрами:</translation>
</message>
<message>
<location filename="../ui/VBoxNewHDWzd.ui" line="843"/>
@@ -3706,7 +3713,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxNewVMWzd.ui" line="63"/>
<source>Welcome to the New Virtual Machine Wizard!</source>
- <translation>Ласкаво просимо до Майстра Нової Віртуальної Машини!</translation>
+ <translation>Ласкаво просимо до майстера нової віртуальної машини!</translation>
</message>
<message>
<location filename="../ui/VBoxNewVMWzd.ui" line="298"/>
@@ -3726,7 +3733,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxNewVMWzd.ui" line="494"/>
<source>&lt;p&gt;Select the amount of base memory (RAM) in megabytes to be allocated to the virtual machine.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Виберіть кількість основної пам&apos;яті (RAM) в мегабайтах, яка буде виділена віртуальній машині.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Виберіть об&apos;єм основної пам&apos;яті (RAM) в мегабайтах, яка буде виділена віртуальній машині.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxNewVMWzd.ui" line="532"/>
@@ -3744,12 +3751,12 @@ p, li { white-space: pre-wrap; }
<translation>Пам&apos;ять</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxNewVMWzd.ui" line="0"/>
<source>N&amp;ew...</source>
<translation type="obsolete">С&amp;творити...</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxNewVMWzd.ui" line="0"/>
<source>E&amp;xisting...</source>
<translation type="obsolete">&amp;Існуючий...</translation>
</message>
@@ -3776,7 +3783,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxNewVMWzd.ui" line="121"/>
<source>&lt;p&gt;This wizard will guide you through the steps that are necessary to create a new virtual machine for VirtualBox.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go the next page of the wizard and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Цей майстер допоможе вам зробити кроки, які необхідні для створення нової віртуальної машини для VirtualBox.&lt;/p&gt;&lt;p&gt;Натисніть кнопку &lt;b&gt;Наступний&lt;/b&gt;, щоб перейти до наступної сторінки майстра, або кнопку &lt;b&gt;Назад&lt;/b&gt;, щоб повернутись до попередньої сторінки.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Цей майстер допоможе вам зробити кроки, які необхідні для створення нової віртуальної машини для VirtualBox.&lt;/p&gt;&lt;p&gt;Натисніть кнопку &lt;b&gt;Наступний&lt;/b&gt;, щоб перейти до наступної сторінки майстера, або кнопку &lt;b&gt;Назад&lt;/b&gt;, щоб повернутись до попередньої сторінки.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxNewVMWzd.ui" line="1113"/>
@@ -3791,12 +3798,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxNewVMWzd.ui" line="282"/>
<source>&lt;p&gt;Enter a name for the new virtual machine and select the type of the guest operating system you plan to install onto the virtual machine.&lt;/p&gt;&lt;p&gt;The name of the virtual machine usually indicates its software and hardware configuration. It will be used by all VirtualBox components to identify your virtual machine.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Введіть назву для нової віртуальної машини і виберіть тип гостьової операційної системи, яку ви плануєте встановити на цю віртуальну машину.&lt;/p&gt;&lt;p&gt;Назва віртуальної машини зазвичай показує її програмну та апаратну конфігурацію. Це буде використовуватися усіма компонентами VirtualBox для пізнавання вашої віртуальної машини.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Введіть назву для нової віртуальної машини і виберіть тип гостьової операційної системи, яку ви плануєте встановити на цю віртуальну машину.&lt;/p&gt;&lt;p&gt;Назва віртуальної машини зазвичай показує її програмні та апаратні налаштування. Це буде використовуватися усіма компонентами VirtualBox для пізнавання вашої віртуальної машини.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxNewVMWzd.ui" line="1014"/>
<source>&lt;p&gt;You are going to create a new virtual machine with the following parameters:&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ви збираєтесь створити віртуальну машину з наступними параметрами:&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Ви збираєтесь створити віртуальну машину з такими параметрами:&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxNewVMWzd.ui" line="1061"/>
@@ -3877,7 +3884,7 @@ p, li { white-space: pre-wrap; }
<translation>Показує сімейство операційних систем, котру ви плануєте встановити на цю віртуальну машину.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxOSTypeSelectorWidget.cpp" line="0"/>
<source>V&amp;ersion:</source>
<translation type="obsolete">&amp;Версія:</translation>
</message>
@@ -3922,7 +3929,7 @@ p, li { white-space: pre-wrap; }
<location filename="../src/VBoxProblemReporter.cpp" line="175"/>
<source>VirtualBox - Critical Error</source>
<comment>msg box title</comment>
- <translation>VirtualBox — Критична Помилка</translation>
+ <translation>VirtualBox — Критична помилка</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="199"/>
@@ -3933,12 +3940,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="382"/>
<source>Failed to open &lt;tt&gt;%1&lt;/tt&gt;. Make sure your desktop environment can properly handle URLs of this type.</source>
- <translation>Не вдалось відкрити &lt;tt&gt;%1&lt;/tt&gt;. Переконайтесь, що середовище вашої стільниці може правильно оперувати з URL цього типу.</translation>
+ <translation>Не вдалось відкрити &lt;tt&gt;%1&lt;/tt&gt;. Переконайтесь, що середовище вашої стільниці може правильно оперувати з посиланнями цього типу.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="433"/>
<source>&lt;p&gt;Failed to initialize COM or to find the VirtualBox COM server. Most likely, the VirtualBox server is not running or failed to start.&lt;/p&gt;&lt;p&gt;The application will now terminate.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Не вдалося ініціювати COM або знайти сервер COM програми VirtualBox. Швидше за все, сервер VirtualBox не запускається або він не може запуститись.&lt;/p&gt;&lt;p&gt;Програма зараз завершить роботу.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Не вдалося запустити COM або знайти сервер COM програми VirtualBox. Швидше за все, сервер VirtualBox не запускається або він не може запуститись.&lt;/p&gt;&lt;p&gt;Програма зараз завершить роботу.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="441"/>
@@ -3948,7 +3955,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="489"/>
<source>Failed to set global VirtualBox properties.</source>
- <translation>Не вдалось задати глобальні налаштування VirtualBox.</translation>
+ <translation>Не вдалось задати загальні налаштування VirtualBox.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="519"/>
@@ -3998,7 +4005,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="726"/>
<source>Failed to stop the virtual machine &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>Нес вдалось зупинити віртуальну машину &lt;b&gt;%1&lt;/b&gt;.</translation>
+ <translation>Не вдалось зупинити віртуальну машину &lt;b&gt;%1&lt;/b&gt;.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="738"/>
@@ -4028,22 +4035,22 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="886"/>
<source>There is no virtual machine named &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation>Не названа віртуальна машина &lt;b&gt;%1&lt;/b&gt;.</translation>
+ <translation>Нема віртуальної машини з назвою &lt;b&gt;%1&lt;/b&gt;.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="934"/>
<source>&lt;p&gt;Are you sure you want to permanently delete the virtual machine &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;This operation cannot be undone.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ви впевнені, що хочете хочете повністю вилучити віртуальну машину &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;Цю операцію не можна скасувати.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Ви впевнені, що бажаєте повністю вилучити віртуальну машину &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;Цю операцію не можна скасувати.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="947"/>
<source>&lt;p&gt;Are you sure you want to unregister the inaccessible virtual machine &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;You will no longer be able to register it back from GUI.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ви впевнені, що хочете вилучити з реєстру недоступну віртуальну машину &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;Ви більше не зможете зареєструвати її знову за допомогою GUI.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Ви впевнені, що бажаєте вилучити з реєстру недоступну віртуальну машину &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;Ви більше не зможете зареєструвати її знову за допомогою GUI.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="963"/>
<source>&lt;p&gt;Are you sure you want to discard the saved state of the virtual machine &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;This operation is equivalent to resetting or powering off the machine without doing a proper shutdown by means of the guest OS.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ви впевнені, що хочете відкинути збережений стан віртуальної машини &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;Ця операція рівносильна перезавантаженню або вимкненню живлення машини без належного вимкнення за допомогою гостьової операційної системи.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Ви впевнені, що бажаєте відкинути збережений стан віртуальної машини &lt;b&gt;%1&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;Ця операція рівносильна перезавантаженню або вимкненню машини з живлення неналежним чином за допомогою гостьової операційної системи.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1211"/>
@@ -4056,7 +4063,7 @@ p, li { white-space: pre-wrap; }
<translation>Не вдалось відкрити сеанс для віртуальної машини &lt;b&gt;%1&lt;/b&gt;.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxProblemReporter.cpp" line="0"/>
<source>Failed to create the host network interface &lt;b&gt;%1&lt;/b&gt;.</source>
<translation type="obsolete">Не вдалось створити головний мережевий інтерфейс &lt;b&gt;%1&lt;/b&gt;.</translation>
</message>
@@ -4088,7 +4095,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1699"/>
<source>&lt;p&gt;The Virtual Machine reports that the guest OS does not support &lt;b&gt;mouse pointer integration&lt;/b&gt; in the current video mode. You need to capture the mouse (by clicking over the VM display or pressing the host key) in order to use the mouse inside the guest OS.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Віртуальна машина повідомляє, що гостьова операційна система не підтримує &lt;b&gt;інтеграція курсора миші&lt;/b&gt; в поточному відеорежимі. Вам потрібно захопити мишку (клацнувши на екран віртуальної машини або натиснувши головну клавішу), щоб використовувати мишку всередині гостьової операційної системи.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Віртуальна машина повідомляє, що гостьова операційна система не підтримує &lt;b&gt;інтеграцію курсора миші&lt;/b&gt; в поточному відеорежимі. Вам потрібно захопити мишку (клацнувши на екран віртуальної машини або натиснувши головну клавішу), щоб використовувати мишку всередині гостьової операційної системи.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1718"/>
@@ -4104,7 +4111,7 @@ p, li { white-space: pre-wrap; }
<location filename="../src/VBoxProblemReporter.cpp" line="2129"/>
<source>&lt;nobr&gt;Fatal Error&lt;/nobr&gt;</source>
<comment>runtime error info</comment>
- <translation>&lt;nobr&gt;Невиправна Помилка&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;Невиправна помилка&lt;/nobr&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2135"/>
@@ -4133,17 +4140,17 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2174"/>
<source>&lt;p&gt;A fatal error has occurred during virtual machine execution! The virtual machine will be powered off. It is suggested to use the clipboard to copy the following error message for further examination:&lt;/p&gt;</source>
- <translation>&lt;p&gt;Невиправна помилка трапилась під час роботи віртуальної машини! Віртуальна машина буде вимкнута. Пропонується використати копіювання в буфер обміну для подальшого вивчення помилки:&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Протягом роботи віртуальної машини трапилась невиправна помилка! Віртуальна машина буде вимкнуто. Пропонується використати копіювання в кишеню для подальшого вивчення помилки:&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2186"/>
<source>&lt;p&gt;An error has occurred during virtual machine execution! The error details are shown below. You can try to correct the described error and resume the virtual machine execution.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Невиправна помилка трапилась під час роботи віртуальної машини! Подробиці про помилку показано нижче. Ви можете спробувати виправити описану помилку і відновити роботу віртуальної машини.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Протягом роботи віртуальної машини трапилась невиправна помилка! Подробиці про помилку показано нижче. Ви можете спробувати виправити описану помилку і відновити роботу віртуальної машини.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2196"/>
<source>&lt;p&gt;The virtual machine execution may run into an error condition as described below. You may ignore this message, but it is suggested to perform an appropriate action to make sure the described error will not happen.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Робота віртуальної машини може запускатися з помилкою, котра описана нижче. Ви можете проігнорувати це повідомлення, але пропонується здійснити відповідну дію, щоб переконатися, що описана помилка не трапиться.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Робота віртуальної машини може запускатися з помилкою, яка описана нижче. Ви можете проігнорувати це повідомлення, але пропонується здійснити відповідну дію, щоб переконатися, що описана помилка не трапиться.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2309"/>
@@ -4188,17 +4195,17 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1485"/>
<source>&lt;p&gt;VirtualBox Guest Additions installed in the Guest OS are too old: the installed version is %1, the expected version is %2. Some features that require Guest Additions (mouse integration, guest display auto-resize) will most likely stop working properly.&lt;/p&gt;&lt;p&gt;Please update Guest Additions to the current version by choosing &lt;b&gt;Install Guest Additions&lt;/b&gt; from the &lt;b&gt;Devices&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Гостьові доповнення VirtualBox, котрі встановлені в гостьовій операційній системі занадто старі: поточна версія — %1, потрібна версія — %2. Деякі властивості, котрі потребують гостьових доповнень (інтеграцію миші, авторозмір гостьового термінала тощо), найімовірніше не будуть працювати як слід.&lt;/p&gt;&lt;p&gt;Будь ласка, оновіть гостьові доповнення до поточної версії вибравши &lt;b&gt;Встановити гостьові доповнення&lt;/b&gt; з меню &lt;b&gt;Пристрої&lt;/b&gt;.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Гостьові доповнення VirtualBox, які встановлено в гостьовій операційній системі занадто старі: поточна версія — %1, потрібна версія — %2. Деякі властивості, які потребують гостьових доповнень (інтеграцію миші, авторозмір гостьового термінала тощо), найімовірніше не будуть працювати як слід.&lt;/p&gt;&lt;p&gt;Будь ласка, оновіть гостьові доповнення до поточної версії вибравши &lt;b&gt;Встановити гостьові доповнення&lt;/b&gt; з меню &lt;b&gt;Пристрої&lt;/b&gt;.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1501"/>
<source>&lt;p&gt;VirtualBox Guest Additions installed in the Guest OS are outdated: the installed version is %1, the expected version is %2. Some features that require Guest Additions (mouse integration, guest display auto-resize) may not work as expected.&lt;/p&gt;&lt;p&gt;It is recommended to update Guest Additions to the current version by choosing &lt;b&gt;Install Guest Additions&lt;/b&gt; from the &lt;b&gt;Devices&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Гостьові доповнення VirtualBox, котрі встановлені в гостьову операційну систему, застаріли: поточна версія — %1, потрібна версія — %2. Деякі властивості, котрі потребують гостьових доповнень (інтеграцію миші, авторозмір гостьового екрана тощо), не можуть працювати як потрібно.&lt;/p&gt;&lt;p&gt;Рекомендується оновити гостьові доповнення до поточної версії вибравши &lt;b&gt;Встановити гостьові доповнення&lt;/b&gt; з меню &lt;b&gt;Пристрої&lt;/b&gt;.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Гостьові доповнення VirtualBox, які встановлено в гостьову операційну систему, застаріли: поточна версія — %1, потрібна версія — %2. Деякі властивості, які потребують гостьових доповнень (інтеграцію миші, авторозмір гостьового екрана тощо), не можуть працювати як слід.&lt;/p&gt;&lt;p&gt;Рекомендується оновити гостьові доповнення до поточної версії вибравши &lt;b&gt;Встановити гостьові доповнення&lt;/b&gt; з меню &lt;b&gt;Пристрої&lt;/b&gt;.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1517"/>
<source>&lt;p&gt;VirtualBox Guest Additions installed in the Guest OS are too recent for this version of VirtualBox: the installed version is %1, the expected version is %2.&lt;/p&gt;&lt;p&gt;Using a newer version of Additions with an older version of VirtualBox is not supported. Please install the current version of Guest Additions by choosing &lt;b&gt;Install Guest Additions&lt;/b&gt; from the &lt;b&gt;Devices&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Гостьові доповненя VirtualBox, які встановлені в гостьову операційну систему, — новіші ніж версія VirtualBox: Встановлена версія — %1, Потрібна версія — %2.&lt;/p&gt;&lt;p&gt;Не підтримується використання найновішої версії доповнень зі старішою версією. Будь ласка, встановіть поточну версію гостьових доповнень вибравши &lt;b&gt;Встановити гостьові доповнення&lt;/b&gt; в меню &lt;b&gt;Пристрої&lt;/b&gt;.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Гостьові доповненя VirtualBox, які встановлені в гостьову операційну систему, — новіші, ніж версія VirtualBox: Встановлена версія — %1, Потрібна версія — %2.&lt;/p&gt;&lt;p&gt;Не підтримується використання найновішої версії доповнень зі старішою версією. Будь ласка, встановіть поточну версію гостьових доповнень вибравши &lt;b&gt;Встановити гостьові доповнення&lt;/b&gt; в меню &lt;b&gt;Пристрої&lt;/b&gt;.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="793"/>
@@ -4208,12 +4215,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1416"/>
<source>&lt;p&gt;Failed to remove the shared folder &lt;b&gt;%1&lt;/b&gt; (pointing to &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) from the virtual machine &lt;b&gt;%3&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Please close all programs in the guest OS that may be using this shared folder and try again.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Не вдалось вилучити спільну теку &lt;b&gt;%1&lt;/b&gt; (що вказує на &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) з віртуальної машини &lt;b&gt;%3&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Будь ласка, вимкніть всі програми в гостьовій операційній системі, котрі можуть використовувати спільну теку та спробуйте знову.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Не вдалось вилучити спільну теку &lt;b&gt;%1&lt;/b&gt; (що вказує на &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;) з віртуальної машини &lt;b&gt;%3&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Будь ласка, вимкніть всі програми в гостьовій операційній системі, які можуть використовувати спільну теку та спробуйте знову.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1430"/>
<source>&lt;p&gt;Could not find the VirtualBox Guest Additions CD image file &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; or &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;Do you want to download this CD image from the Internet?&lt;/p&gt;</source>
- <translation>&lt;p&gt;Не вдалось знайти файл образа гостьових доповнень &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; або &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;Ви бажаєте звантажити образ з Інтернету?&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Не вдалось знайти файл образа гостьових доповнень &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; або &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;.&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;Ви бажаєте звантажити образ з інтернету?&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1442"/>
@@ -4261,7 +4268,7 @@ p, li { white-space: pre-wrap; }
<translation>&lt;p&gt;Вітаємо! Ви успішно зареєструвались як користувач VirtualBox.&lt;/p&gt;&lt;p&gt;Дякуємо вам, що знайшли час, щоб заповнити реєстраційну форму!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxProblemReporter.cpp" line="0"/>
<source>&lt;p&gt;Failed to register the VirtualBox product&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</source>
<translation type="obsolete">&lt;p&gt;Не вдалось зареєструвати VirtualBox&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;</translation>
</message>
@@ -4309,7 +4316,7 @@ p, li { white-space: pre-wrap; }
<translation>Відкинути</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxProblemReporter.cpp" line="0"/>
<source>&lt;p&gt;There are hard disks attached to SATA ports of this virtual machine. If you disable the SATA controller, all these hard disks will be automatically detached.&lt;/p&gt;&lt;p&gt;Are you sure that you want to disable the SATA controller?&lt;/p&gt;</source>
<translation type="obsolete">&lt;p&gt;До портів SATA цієї віртуальної машини під&apos;єднані жорсткі диски. Якщо ви вимкнете контролер SATA, то всі ці жорсткі диски будуть автоматично від&apos;єднані.&lt;/p&gt;&lt;p&gt;Ви впевнені, що бажаєте вимкнути контролер SATA?&lt;/p&gt;</translation>
</message>
@@ -4370,7 +4377,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1967"/>
<source>&lt;p&gt;Do you really want to reset the virtual machine?&lt;/p&gt;&lt;p&gt;When the machine is reset, unsaved data of all applications running inside it will be lost.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Чи ви справді хочете перезавантажити віртуальну машину?&lt;/p&gt;&lt;p&gt;Під час перезавантаження машини відбудеться втрата даних усіх програм, які запущені всередині віртуальної машини.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Чи ви справді бажаєте перезавантажити віртуальну машину?&lt;/p&gt;&lt;p&gt;Під час перезавантаження машини відбудеться втрата даних усіх програм, які запущені всередині віртуальної машини.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1969"/>
@@ -4425,17 +4432,17 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1611"/>
<source>&lt;p&gt;You have &lt;b&gt;clicked the mouse&lt;/b&gt; inside the Virtual Machine display or pressed the &lt;b&gt;host key&lt;/b&gt;. This will cause the Virtual Machine to &lt;b&gt;capture&lt;/b&gt; 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.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;host key&lt;/b&gt; at any time to &lt;b&gt;uncapture&lt;/b&gt; 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&amp;nbsp;&lt;img src=:/hostkey_16px.png/&gt;&amp;nbsp;icon. This icon, together with the mouse icon placed nearby, indicate the current keyboard and mouse capture state.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ви &lt;b&gt;клацнули мишкою&lt;/b&gt; всередині екрана віртуальної машини або натиснули &lt;b&gt;головну клавішу&lt;/b&gt;. Віртуальна машина &lt;b&gt;захопить&lt;/b&gt; головний вказівник миші (Тільки якщо інтеграція вказівника миші зараз не підтримується гостьовою операційною системою) і клавіатуру, яка буде недоступною для інших програм, котрі запущені на вашій головній машині.&lt;/p&gt;&lt;p&gt;Ви можете натиснути &lt;b&gt;головну клавішу&lt;/b&gt; в будь-який момент, щоб &lt;b&gt;відпустити&lt;/b&gt; клавіатуру і мишку (якщо вони захоплені) та повернути назад. Поточна головна клавіша показується на панелі стану у вікні віртуальної машини, біля the&amp;nbsp;&lt;img src=:/hostkey_16px.png/&gt;&amp;nbsp;icon. Ця піктограма, знаходиться біля піктограми миші, показуючи поточний стан клавіатури і миші.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Ви &lt;b&gt;клацнули мишкою&lt;/b&gt; всередині екрана віртуальної машини або натиснули &lt;b&gt;головну клавішу&lt;/b&gt;. Віртуальна машина &lt;b&gt;захопить&lt;/b&gt; головний вказівник миші (Тільки якщо інтеграція вказівника миші зараз не підтримується гостьовою операційною системою) і клавіатуру, яка буде недоступною для інших програм, які запущені на вашій головній машині.&lt;/p&gt;&lt;p&gt;Ви можете натиснути &lt;b&gt;головну клавішу&lt;/b&gt; в будь-який момент, щоб &lt;b&gt;відпустити&lt;/b&gt; клавіатуру і мишку (якщо вони захоплені) та повернути назад. Поточна головна клавіша показується на панелі стану у вікні віртуальної машини, біля the&amp;nbsp;&lt;img src=:/hostkey_16px.png/&gt;&amp;nbsp;icon. Ця піктограма, знаходиться біля піктограми миші, показуючи поточний стан клавіатури і миші.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1644"/>
<source>&lt;p&gt;You have the &lt;b&gt;Auto capture keyboard&lt;/b&gt; option turned on. This will cause the Virtual Machine to automatically &lt;b&gt;capture&lt;/b&gt; 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.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;host key&lt;/b&gt; at any time to &lt;b&gt;uncapture&lt;/b&gt; 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&amp;nbsp;&lt;img src=:/hostkey_16px.png/&gt;&amp;nbsp;icon. This icon, together with the mouse icon placed nearby, indicate the current keyboard and mouse capture state.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ви вімкнули &lt;b&gt;Автозахоплення клавіатури&lt;/b&gt;. Віртуальна машина автоматично &lt;b&gt;захоплюватиме&lt;/b&gt; клавіатуру кожного разу, коли вікно віртуальної машини активне та робить його недоступним для інших програм, які запущено на вашій головній машині: коли клавіатура захоплена, будь-які натиснення клавіш (у тому ж числі такі системні, як Alt-Tab) будуть виконуватись всередині віртуальної машини.&lt;/p&gt;&lt;p&gt;&lt;p&gt;Ви можете натиснути &lt;b&gt;головну клавішу&lt;/b&gt; в будь-який момент, щоб &lt;b&gt;відпустити&lt;/b&gt; клавіатуру і мишку (якщо вони захоплені) та повернути назад. Поточна головна клавіша показується на панелі стану у вікні віртуальної машини, біля the&amp;nbsp;&lt;img src=:/hostkey_16px.png/&gt;&amp;nbsp;icon. Ця піктограма, знаходиться біля піктограми миші, показуючи поточний стан клавіатури і миші.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Ви вімкнули &lt;b&gt;Автозахоплення клавіатури&lt;/b&gt;. Віртуальна машина автоматично &lt;b&gt;захоплюватиме&lt;/b&gt; клавіатуру кожного разу, коли вікно віртуальної машини активне та робить його недоступним для інших програм, які запущено на вашій головній машині: коли клавіатура захоплена, будь-які натиснення клавіш (у тому ж числі такі системні, як Alt-Tab) будуть виконуватись всередині віртуальної машини.&lt;/p&gt;&lt;p&gt;&lt;p&gt;Ви можете натиснути &lt;b&gt;головну клавішу&lt;/b&gt; в будь-який момент, щоб &lt;b&gt;відпустити&lt;/b&gt; клавіатуру і мишку (якщо вони захоплені) та повернути назад. Поточна головна клавіша показується на панелі стану у вікні віртуальної машини, біля the&amp;nbsp;&lt;img src=:/hostkey_16px.png/&gt;&amp;nbsp;icon. Ця піктограма, знаходиться біля піктограми миші, показуючи поточний стан клавіатури і миші.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1689"/>
<source>&lt;p&gt;The Virtual Machine reports that the guest OS supports &lt;b&gt;mouse pointer integration&lt;/b&gt;. This means that you do not need to &lt;i&gt;capture&lt;/i&gt; 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&apos;s display are directly sent to the guest OS. If the mouse is currently captured, it will be automatically uncaptured.&lt;/p&gt;&lt;p&gt;The mouse icon on the status bar will look like&amp;nbsp;&lt;img src=:/mouse_seamless_16px.png/&gt;&amp;nbsp;to inform you that mouse pointer integration is supported by the guest OS and is currently turned on.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: 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.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Віртуальна машина повідомляє, що гостьова операційна система підтримує &lt;b&gt;інтеграцію вказівника миші&lt;/b&gt;. Тобто вам не потрібно &lt;i&gt;захоплювати&lt;/i&gt; вказівник миші, щоб використовувати його в гостьовій операційній системі — усі дії миші, які ви виконуєте, коли вказівник на екрані віртуальної машини, виконуються в гостьовій операційній системі. Якщо мишка вже захоплена, то вона автоматично відпуститься.&lt;/p&gt;&lt;p&gt;Піктограма миші на панелі стану буде вигляди як&amp;nbsp;&lt;img src=:/mouse_seamless_16px.png/&gt;&amp;nbsp;, щоб повідомити, що ваша інтеграція вказівника миші підтримується гостьовою операційною системою і зараз увімкнута.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: Деякі програми можуть поводитись неправильно в режимі інтеграції вказівника миші. Ви завжди можете вимкнути його на поточний сеанс (і ввімкнути знову) вибравши відповідну дію в панелі меню.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Віртуальна машина повідомляє, що гостьова операційна система підтримує &lt;b&gt;інтеграцію вказівника миші&lt;/b&gt;. Тобто вам не потрібно &lt;i&gt;захоплювати&lt;/i&gt; вказівник миші, щоб використовувати його в гостьовій операційній системі — усі дії миші, які ви виконуєте, коли вказівник на екрані віртуальної машини, виконуються в гостьовій операційній системі. Якщо мишка вже захоплена, то вона автоматично відпуститься.&lt;/p&gt;&lt;p&gt;Піктограма миші на панелі стану буде вигляди як&amp;nbsp;&lt;img src=:/mouse_seamless_16px.png/&gt;&amp;nbsp;, щоб повідомити, що ваша інтеграція вказівника миші підтримується гостьовою операційною системою і зараз увімкнута.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: Деякі програми можуть поводитись неправильно в режимі інтеграції вказівника миші. Ви завжди можете вимкнути його на поточний сеанс (і ввімкнути знову) вибравши відповідну дію в панелі меню.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1864"/>
@@ -4450,7 +4457,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxHelpActions.cpp" line="103"/>
<source>&amp;Contents...</source>
- <translation>&amp;Зміст...</translation>
+ <translation>&amp;Вміст...</translation>
</message>
<message>
<location filename="../src/VBoxHelpActions.cpp" line="106"/>
@@ -4460,12 +4467,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxHelpActions.cpp" line="108"/>
<source>&amp;VirtualBox Web Site...</source>
- <translation>&amp;Веб-сайт VirtualBox...</translation>
+ <translation>&amp;Сайт VirtualBox...</translation>
</message>
<message>
<location filename="../src/VBoxHelpActions.cpp" line="110"/>
<source>Open the browser and go to the VirtualBox product web site</source>
- <translation>Відкрити переглядач і перейти до веб-сайта продукції VirtualBox</translation>
+ <translation>Відкрити переглядач і перейти до сайта продукції VirtualBox</translation>
</message>
<message>
<location filename="../src/VBoxHelpActions.cpp" line="112"/>
@@ -4515,7 +4522,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="979"/>
<source>&lt;p&gt;Are you sure you want to release the %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;?&lt;/p&gt;&lt;p&gt;This will detach it from the following virtual machine(s): &lt;b&gt;%3&lt;/b&gt;.&lt;/p&gt;</source>
- <translation>Ви впевнені, що ви бажаєте відпустити %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;?&lt;/p&gt;&lt;p&gt;Це Буде від&apos;єднано з наступних віртуальних машин: &lt;b&gt;%3&lt;/b&gt;.&lt;/p&gt;</translation>
+ <translation>Ви впевнені, що ви бажаєте відпустити %1 &lt;nobr&gt;&lt;b&gt;%2&lt;/b&gt;&lt;/nobr&gt;?&lt;/p&gt;&lt;p&gt;Це буде від&apos;єднано з таких віртуальних машин: &lt;b&gt;%3&lt;/b&gt;.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="983"/>
@@ -4531,7 +4538,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1002"/>
<source>Note that this hard disk is inaccessible so that its storage unit cannot be deleted right now.</source>
- <translation>Майте на увазі, цей жорсткий диск недоступний, тому його блок пам&apos;яті не може бути розпізнаний зараз. </translation>
+ <translation>Майте на увазі, цей жорсткий диск недоступний, тому його блок пам&apos;яті неможливо розпізнанати зараз.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1007"/>
@@ -4557,7 +4564,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1045"/>
<source>&lt;p&gt;Do you want to delete the storage unit of the hard disk &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;?&lt;/p&gt;&lt;p&gt;If you select &lt;b&gt;Delete&lt;/b&gt; then the specified storage unit will be permanently deleted. This operation &lt;b&gt;cannot be undone&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;If you select &lt;b&gt;Keep&lt;/b&gt; 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.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ви бажаєте вилучити блок пам&apos;яті жорсткого диска &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;?&lt;/p&gt;&lt;p&gt;Якщо ви виберете &lt;b&gt;Вилучити&lt;/b&gt;, вказаний блок пам&apos;яті буде безповоротно вилучений. Цю операцію &lt;b&gt;не можна скасувати&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Якщо ви виберете &lt;b&gt;Затримати&lt;/b&gt;, жорсткий диск буде вилучено лише зі списку жорстких дисків, але блок пам&apos;яті залишиться недоторканим, що дозволить додати цей жорсткий диск до списку згодом.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Ви бажаєте вилучити блок пам&apos;яті жорсткого диска &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;?&lt;/p&gt;&lt;p&gt;Якщо ви виберете &lt;b&gt;Вилучити&lt;/b&gt;, вказаний блок пам&apos;яті буде безповоротно вилучено. Цю операцію &lt;b&gt;неможливо скасувати&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Якщо ви виберете &lt;b&gt;Затримати&lt;/b&gt;, жорсткий диск буде вилучено лише зі списку жорстких дисків, але блок пам&apos;яті залишиться недоторканим, що дозволить додати цей жорсткий диск до списку згодом.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1050"/>
@@ -4589,7 +4596,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1130"/>
<source>Failed to attach the hard disk &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; to the slot &lt;i&gt;%2&lt;/i&gt; of the machine &lt;b&gt;%3&lt;/b&gt;.</source>
- <translation>Не вдалося з’єднати жорсткий диск &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; зі слотом &lt;i&gt;%2&lt;/i&gt; машини &lt;b&gt;%3&lt;/b&gt;.</translation>
+ <translation>Не вдалося з&apos;єднати жорсткий диск &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; зі слотом &lt;i&gt;%2&lt;/i&gt; машини &lt;b&gt;%3&lt;/b&gt;.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1143"/>
@@ -4639,7 +4646,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1794"/>
<source>&lt;p&gt;Your existing VirtualBox settings files were automatically converted from the old format to a new format necessary for the new version of VirtualBox.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;OK&lt;/b&gt; to start VirtualBox now or press &lt;b&gt;More&lt;/b&gt; if you want to get more information about what files were converted and access additional actions.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;Exit&lt;/b&gt; to terminate the VirtualBox application without saving the results of the conversion to disk.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ваші фали налаштувань VirtualBox були автоматично перетворені зі старого формату в новий, який необхідний для нової версії VirtualBox.&lt;/p&gt;&lt;p&gt;Натисніть &lt;b&gt;Гаразд&lt;/b&gt;, щоб запустити VirtualBox зараз або натисніть &lt;b&gt;Детальніше&lt;/b&gt;, якщо ви бажаєте отримати більше інформації про файли, котрі були перетворені і дозволити додаткові дії.&lt;/p&gt;&lt;p&gt;Натисніть &lt;b&gt;Вихід&lt;/b&gt;, щоб вимкнути VirtualBox без збереження результатів перетворення на диск.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Ваші фали налаштувань VirtualBox були автоматично перетворені зі старого формату в новий, який необхідний для нової версії VirtualBox.&lt;/p&gt;&lt;p&gt;Натисніть &lt;b&gt;Гаразд&lt;/b&gt;, щоб запустити VirtualBox зараз або натисніть &lt;b&gt;Детальніше&lt;/b&gt;, якщо ви бажаєте отримати більше інформації про файли, які були перетворені і дозволити додаткові дії.&lt;/p&gt;&lt;p&gt;Натисніть &lt;b&gt;Вихід&lt;/b&gt;, щоб вимкнути VirtualBox без збереження результатів перетворення на диск.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1800"/>
@@ -4651,7 +4658,7 @@ p, li { white-space: pre-wrap; }
<location filename="../src/VBoxProblemReporter.cpp" line="1845"/>
<source>E&amp;xit</source>
<comment>warnAboutAutoConvertedSettings message box</comment>
- <translation>&amp;Вихід</translation>
+ <translation>&amp;Вийти</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1832"/>
@@ -4661,7 +4668,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1835"/>
<source>&lt;li&gt;&lt;b&gt;Exit&lt;/b&gt; to terminate VirtualBox without saving the results of the conversion to disk.&lt;/li&gt;</source>
- <translation>&lt;li&gt;&lt;b&gt;Вихід&lt;/b&gt; завершує роботу VirtualBox без збереження підсумків перетворення на диск.&lt;/li&gt;</translation>
+ <translation>&lt;li&gt;&lt;b&gt;Вийти&lt;/b&gt; завершує роботу VirtualBox без збереження підсумків перетворення на диск.&lt;/li&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1842"/>
@@ -4672,7 +4679,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1951"/>
<source>&lt;p&gt;A critical error has occurred while running the virtual machine and the machine execution has been stopped.&lt;/p&gt;&lt;p&gt;For help, please see the Community section on &lt;a href=http://www.virtualbox.org&gt;http://www.virtualbox.org&lt;/a&gt; or your support contract. Please provide the contents of the log file &lt;tt&gt;VBox.log&lt;/tt&gt; and the image file &lt;tt&gt;VBox.png&lt;/tt&gt;, which you can find in the &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt; directory, as well as a description of what you were doing when this error happened. Note that you can also access the above files by selecting &lt;b&gt;Show Log&lt;/b&gt; from the &lt;b&gt;Machine&lt;/b&gt; menu of the main VirtualBox window.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;OK&lt;/b&gt; if you want to power off the machine or press &lt;b&gt;Ignore&lt;/b&gt; if you want to leave it as is for debugging. Please note that debugging requires special knowledge and tools, so it is recommended to press &lt;b&gt;OK&lt;/b&gt; now.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Трапилась критична помилка під час роботи віртуальної машини і її виконання припинене.&lt;/p&gt;&lt;p&gt;Зверніться до спільноти за допомогою на сайті &lt;a href=http://www.virtualbox.org&gt;http://www.virtualbox.org&lt;/a&gt; або до вашої групи підтримки. Будь ласка, додайте свій журнал помилок &lt;tt&gt;VBox.log&lt;/tt&gt; та зображення &lt;tt&gt;VBox.png&lt;/tt&gt;, які ви можете знайти в теці &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;, і також опис того, що ви робили, коли це трапилось. Майте на увазі, ви також можете отримати файл використавши &lt;b&gt;Показати журнал&lt;/b&gt; в меню &lt;b&gt;Машина&lt;/b&gt; головного вікна VirtualBox.&lt;/p&gt;&lt;p&gt;Натисніть &lt;b&gt;Гаразд&lt;/b&gt;, якщо ви бажаєте вимкнути живлення машини, або натисніть &lt;b&gt;Ігнорувати&lt;/b&gt;, якщо ви бажаєте покинути це для зневадження. Будь ласка, майте на увазі, зневадження потребує спеціальних знань та інструментів, тому рекомендується зараз натиснути &lt;b&gt;Гаразд&lt;/b&gt;.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Трапилась критична помилка під час роботи віртуальної машини і її виконання припинено.&lt;/p&gt;&lt;p&gt;Зверніться до спільноти за допомогою на сайті &lt;a href=http://www.virtualbox.org&gt;http://www.virtualbox.org&lt;/a&gt; або до вашої групи підтримки. Будь ласка, додайте свій журнал помилок &lt;tt&gt;VBox.log&lt;/tt&gt; та зображення &lt;tt&gt;VBox.png&lt;/tt&gt;, які ви можете знайти в теці &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/nobr&gt;, і також опис того, що ви робили, коли це трапилось. Майте на увазі, ви також можете отримати файл використавши &lt;b&gt;Показати журнал&lt;/b&gt; в меню &lt;b&gt;Машина&lt;/b&gt; головного вікна VirtualBox.&lt;/p&gt;&lt;p&gt;Натисніть &lt;b&gt;Гаразд&lt;/b&gt;, якщо ви бажаєте вимкнути живлення машини, або натисніть &lt;b&gt;Ігнорувати&lt;/b&gt;, якщо ви бажаєте покинути це для зневадження. Будь ласка, майте на увазі, зневадження потребує спеціальних знань та інструментів, тому рекомендується зараз натиснути &lt;b&gt;Гаразд&lt;/b&gt;.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2208"/>
@@ -4684,7 +4691,7 @@ p, li { white-space: pre-wrap; }
<location filename="../src/VBoxProblemReporter.cpp" line="2210"/>
<source>CD/DVD image</source>
<comment>failed to close ...</comment>
- <translation> образ CD/DVD</translation>
+ <translation>образ CD/DVD</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2212"/>
@@ -4695,37 +4702,37 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="296"/>
<source>A file named &lt;b&gt;%1&lt;/b&gt; already exists. Are you sure you want to replace it?&lt;br /&gt;&lt;br /&gt;Replacing it will overwrite its contents.</source>
- <translation type="unfinished"></translation>
+ <translation>Файл з назвою &lt;b&gt;%1&lt;/b&gt; вже існує. Ви впевнені, що бажаєте його замінити?&lt;br /&gt;&lt;br /&gt;При заміні буде перезаписано його вміст.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="305"/>
<source>The following files already exist:&lt;br /&gt;&lt;br /&gt;%1&lt;br /&gt;&lt;br /&gt;Are you sure you want to replace them? Replacing them will overwrite their contents.</source>
- <translation type="unfinished"></translation>
+ <translation>Такі файли вже існують:&lt;br /&gt;&lt;br /&gt;%1&lt;br /&gt;&lt;br /&gt;Ви впевнені, що бажаєте замінити їх? При їх заміні буде перезаписано їх вміст.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="341"/>
<source>Failed to remove the file &lt;b&gt;%1&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Please try to remove the file yourself and try again.</source>
- <translation type="unfinished"></translation>
+ <translation>Не вдається вилучити файл &lt;b&gt;%1&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Будь ласка, спробуйте вилучити файл самостійно і спробувати знову.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="352"/>
<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>
<location filename="../src/VBoxProblemReporter.cpp" line="512"/>
<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>
<location filename="../src/VBoxProblemReporter.cpp" line="758"/>
<source>You are trying to shut down the guest with the ACPI power button. This is currently not possible because the guest does not use the ACPI subsystem.</source>
- <translation type="unfinished"></translation>
+ <translation>Ви намагаєтесь вимкнути гостьову систему з живлення. Це неможливо, оскільки гостьова операційна система не використовує підсистему ACPI.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="768"/>
<source>&lt;p&gt;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.&lt;/p&gt;&lt;p&gt;Please ensure that you have enabled VT-x/AMD-V properly in the BIOS of your host computer.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Увімкнуто апаратне прискорення VT-x/AMD-V, але воно нечинне. Вашій 64-бітній гостьовій операційній системі не вдасться виявити 64-бітний процесор і він не завантажиться.&lt;/p&gt;&lt;p&gt;Будь ласка, переконайтесь, що VT-x/AMD-V в BIOS ввімкнуто належним чином у вашій головній операційній системі.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="782"/>
@@ -4740,12 +4747,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="780"/>
<source>&lt;p&gt;VT-x/AMD-V hardware acceleration has been enabled, but is not operational. Certain guests (e.g. OS/2 and QNX) require this feature.&lt;/p&gt;&lt;p&gt;Please ensure that you have enabled VT-x/AMD-V properly in the BIOS of your host computer.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Увімкнуто апаратне прискорення VT-x/AMD-V, але воно нечинне. Певна гостьова операційна система (наприклад,. OS/2 і QNX) потребує цю властивість.&lt;/p&gt;&lt;p&gt;Будь ласка, переконайтесь, що VT-x/AMD-V в BIOS ввімкнуто належним чином у вашій головній операційній системі.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="802"/>
<source>&lt;p&gt;Are you sure you wish to delete the selected snapshot and saved state?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Ви впевнені, що бажаєте вилучити вибраний знімок і збережений стан?&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="804"/>
@@ -4760,12 +4767,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1076"/>
<source>&lt;p&gt;There are hard disks attached to ports of the additional controller. If you disable the additional controller, all these hard disks will be automatically detached.&lt;/p&gt;&lt;p&gt;Are you sure you want to disable the additional controller?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;До додаткового контролера під&apos;єднано жорсткі диски. Якщо ви вимкнули додатковий контролер, усі ті жорсткі диски автоматично під&apos;єднаються.&lt;/p&gt;&lt;p&gt;Ви впевнені, що бажаєте вимкнути додатковий контролер?&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1088"/>
<source>&lt;p&gt;There are hard disks attached to ports of the additional controller. If you change the additional controller, all these hard disks will be automatically detached.&lt;/p&gt;&lt;p&gt;Are you sure you want to change the additional controller?&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;До додаткового контролера під&apos;єднано жорсткі диски. Якщо ви зміните додатковий контролер, усі ті жорсткі диски автоматично від&apos;єднаються.&lt;/p&gt;&lt;p&gt;Ви впевнені, що бажаєте змінити додатковий контролер?&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1090"/>
@@ -4776,12 +4783,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1256"/>
<source>&lt;p&gt;Deleting this host-only network will lead to the deleting of the host-only interface this network is based on. Do you want to remove the (host-only network) interface &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; this interface may be in use by one or more virtual network adapters belonging to one of your VMs. After it is removed, these adapters will no longer be usable until you correct their settings by either choosing a different interface name or a different adapter attachment type.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Вилучення цієї лише головної мережі спричинить вилучення лише головного інтерфейса цієї мережі, який базується на ній. Ви бажаєте вилучити (лише головної мережі) інтерфейс &lt;nobr&gt;&lt;b&gt;%1&lt;/b&gt;?&lt;/nobr&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Майте на увазі:&lt;/b&gt; цей інтерфейс можливо викристовувати одним або більше адаперами віртуальної мережі, яка належить до ваших віртуальних мереж. Після цього він вилучиться, ті адаптери більше не використовуватимуться, допоки ви не зміните їхні налаштування, вибравши іншу назву інтерфейса або інший тип під&apos;єнання адаптера.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1274"/>
<source>Failed to create the host-only network interface.</source>
- <translation type="unfinished"></translation>
+ <translation>Не вдається створити лише головний мережевий інтерфейс.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1553"/>
@@ -4796,27 +4803,27 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="1770"/>
<source>&lt;p&gt;Your existing VirtualBox settings files will be automatically converted from the old format to a new format necessary for the new version of VirtualBox.&lt;/p&gt;&lt;p&gt;Press &lt;b&gt;OK&lt;/b&gt; to start VirtualBox now or press &lt;b&gt;Exit&lt;/b&gt; if you want to terminate the VirtualBox application without any further actions.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Ваш існуючий файл налаштувань VirtualBox буде автоматично перетворено зі старого формату на необхідний для нової версії VirtualBox.&lt;/p&gt;&lt;p&gt;Натисніть &lt;b&gt;Гаразд&lt;/b&gt;, щоб запустити VirtualBox зараз або натисніть &lt;b&gt;Вийти&lt;/b&gt;, якщо ви бажаєте завершити роботу програми VirtualBox без будь-яких інших дій.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2006"/>
<source>Failed to open appliance.</source>
- <translation type="unfinished"></translation>
+ <translation>Не вдається створити образ віртуальної машини.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2022"/>
<source>Failed to open/interpret appliance &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>Не вдається відкрити/розпізнати образ віртуальної машини &lt;b&gt;%1&lt;/b&gt;.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2034"/>
<source>Failed to import appliance &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>Не вдається імпортувати образ віртуальної машини &lt;b&gt;%1&lt;/b&gt;.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2044"/>
<source>Failed to check files.</source>
- <translation>Не вдається первірити файли.</translation>
+ <translation>Не вдається перевірити файли.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2054"/>
@@ -4826,22 +4833,22 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2064"/>
<source>Failed to create appliance.</source>
- <translation type="unfinished"></translation>
+ <translation>Не вдається створити образ віртуальної машини.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2089"/>
<source>Failed to prepare the export of the appliance &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>Не вдається підготувати образ віртуальної машини &lt;b&gt;%1&lt;/b&gt; до експорту.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2084"/>
<source>Failed to create an appliance.</source>
- <translation type="unfinished"></translation>
+ <translation>Не вдається створити образ віртуальної машини.</translation>
</message>
<message>
<location filename="../src/VBoxProblemReporter.cpp" line="2100"/>
<source>Failed to export appliance &lt;b&gt;%1&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>Не вдається експортувати образ віртуальної машини &lt;b&gt;%1&lt;/b&gt;.</translation>
</message>
</context>
<context>
@@ -4860,7 +4867,7 @@ p, li { white-space: pre-wrap; }
<translation>Діалог реєстрації VirtualBox</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxRegistrationDlg.ui" line="0"/>
<source>&amp;Name</source>
<translation type="obsolete">&amp;Назва</translation>
</message>
@@ -4870,7 +4877,7 @@ p, li { white-space: pre-wrap; }
<translation>Введіть ваше повне ім&apos;я, використовуючи лише латинські символи.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxRegistrationDlg.ui" line="0"/>
<source>&amp;E-mail</source>
<translation type="obsolete">&amp;Електронна пошта</translation>
</message>
@@ -4880,7 +4887,7 @@ p, li { white-space: pre-wrap; }
<translation>Введіть дійсну адресу вашої електронної пошти.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxRegistrationDlg.ui" line="0"/>
<source>&amp;Please do not use this information to contact me</source>
<translation type="obsolete">&amp;Будь ласка, не використовуйте цю інформацію для контактування зі мною</translation>
</message>
@@ -4895,17 +4902,17 @@ p, li { white-space: pre-wrap; }
<translation>Не вдалось здійснити встановлення зв&apos;язку.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxRegistrationDlg.cpp" line="0"/>
<source>&lt;p&gt;Please fill out this registration form to let us know that you use VirtualBox and, optionally, to keep you informed about VirtualBox news and updates.&lt;/p&gt;&lt;p&gt;Enter your full name using Latin characters and your e-mail address to the fields below. Please note that Sun Microsystems will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, Sun Microsystems will never pass your data to third parties. Detailed information about how we use your personal data can be found in the &lt;b&gt;Privacy Policy&lt;/b&gt; section of the VirtualBox Manual or on the &lt;a href=http://www.virtualbox.org/wiki/PrivacyPolicy&gt;Privacy Policy&lt;/a&gt; page of the VirtualBox web-site.&lt;/p&gt;</source>
<translation type="obsolete">&lt;p&gt;Будь ласка, заповніть реєстраційну форму, цим самим, ми будемо знати, що ви користуєтесь програмою VirtualBox і, за власним бажанням, отримаєте можливість бути в курсі новин і оновлень про VirtualBox.&lt;/p&gt;&lt;p&gt;Введіть ваше повне і&apos;мя, користуючись латинськими символами, та адресу електронної пошти в нижніх полях. Будь ласка, майте на увазі, що ця інформація буде використовуватись лише для статистичних даних кількості користувачів і розсилці новин про VirtualBox. Власне, Sun Microsystems ніколи не буде надавати ваші дані третій стороні. Більш детальна інформація про те, як ми використовуємо ваші особисті дані, можна знайти в розділі &lt;b&gt;Privacy Policy&lt;/b&gt; (Політика Конфіденційності) у документації програми або на сторінці &lt;a href=http://www.virtualbox.org/wiki/PrivacyPolicy&gt;Privacy Policy&lt;/a&gt; веб-сайта VirtualBox.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxRegistrationDlg.cpp" line="0"/>
<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="" line="0"/>
+ <location filename="../src/VBoxRegistrationDlg.cpp" line="0"/>
<source>C&amp;onfirm</source>
<translation type="obsolete">&amp;Підтвердити</translation>
</message>
@@ -4922,12 +4929,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxRegistrationDlg.ui" line="108"/>
<source>&lt;p&gt;Please fill out this registration form to let us know that you use VirtualBox and, optionally, to keep you informed about VirtualBox news and updates.&lt;/p&gt;&lt;p&gt;Please use the Latin characters to fill the fields below. Please note that Sun Microsystems will use this information only to gather product usage statistics and to send you VirtualBox newsletters. In particular, Sun Microsystems will never pass your data to third parties. Detailed information about how we use your personal data can be found in the &lt;b&gt;Privacy Policy&lt;/b&gt; section of the VirtualBox Manual or on the &lt;a href=http://www.virtualbox.org/wiki/PrivacyPolicy&gt;Privacy Policy&lt;/a&gt; page of the VirtualBox web-site.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Будь ласка, заповніть цю реєстраційну форму, щоб ми знали, що ви використуєте VirtualBox, і, за вашим бажанням, ми триматимемо вас у курсі всіх новин і оновлень щодо VirtualBox.&lt;/p&gt;&lt;p&gt;Будь ласка, використовуйте латинські символи для заповнення полів нижче. Будь ласка, майте на увазі, Sun Microsystems використовуватиме цю інформацію лише для збору статистичної інформації та розсилки новин. Власне, Sun Microsystems ніколи не надасть ваших даних третій особі. Детальна інформація про використання ваших особистих даних можна знайти в довідці VirtualBox у розділі &lt;b&gt;Privacy Policy&lt;/b&gt; або на &lt;a href=http://www.virtualbox.org/wiki/PrivacyPolicy&gt;Privacy Policy&lt;/a&gt; сторінці сайта VirtualBox.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxRegistrationDlg.ui" line="125"/>
<source>I &amp;have a Sun Online account already:</source>
- <translation>&amp;Я вже маю зареєстрований профіль у Sun:</translation>
+ <translation>&amp;Я вже маю зареєстрований акаунт у Sun:</translation>
</message>
<message>
<location filename="../ui/VBoxRegistrationDlg.ui" line="151"/>
@@ -4942,7 +4949,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxRegistrationDlg.ui" line="201"/>
<source>I &amp;would like to register creating a new Sun Online account:</source>
- <translation type="unfinished"></translation>
+ <translation>Я &amp;бажаю зареєструватись, створивши акаунт Sun:</translation>
</message>
<message>
<location filename="../ui/VBoxRegistrationDlg.ui" line="224"/>
@@ -5014,12 +5021,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSelectorWnd.cpp" line="1325"/>
<source>Display the global settings dialog</source>
- <translation>Показати діалог глобальних налаштувань</translation>
+ <translation>Показати діалог загальних налаштувань</translation>
</message>
<message>
<location filename="../src/VBoxSelectorWnd.cpp" line="1327"/>
<source>E&amp;xit</source>
- <translation>Ви&amp;хід</translation>
+ <translation>Ви&amp;йти</translation>
</message>
<message>
<location filename="../src/VBoxSelectorWnd.cpp" line="1329"/>
@@ -5029,7 +5036,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSelectorWnd.cpp" line="1331"/>
<source>&amp;New...</source>
- <translation>&amp;Новий...</translation>
+ <translation>&amp;Нова...</translation>
</message>
<message>
<location filename="../src/VBoxSelectorWnd.cpp" line="1333"/>
@@ -5059,7 +5066,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSelectorWnd.cpp" line="1349"/>
<source>D&amp;iscard</source>
- <translation>Ві&amp;дмовитись</translation>
+ <translation>Ві&amp;дкинути</translation>
</message>
<message>
<location filename="../src/VBoxSelectorWnd.cpp" line="1351"/>
@@ -5067,7 +5074,7 @@ p, li { white-space: pre-wrap; }
<translation>Відкинути збережений стан вибраної віртуальної машини</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxSelectorWnd.cpp" line="0"/>
<source>&amp;Refresh</source>
<translation type="obsolete">&amp;Оновити</translation>
</message>
@@ -5137,7 +5144,7 @@ p, li { white-space: pre-wrap; }
<translation>Показати файли журналу вибраної віртуальної машини</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxSelectorWnd.cpp" line="0"/>
<source>Sun xVM VirtualBox</source>
<translation type="obsolete">Sun xVM VirtualBox</translation>
</message>
@@ -5162,7 +5169,7 @@ p, li { white-space: pre-wrap; }
<translation>Призупинити роботу віртуально машини</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxSelectorWnd.cpp" line="0"/>
<source>&lt;h3&gt;Welcome to VirtualBox!&lt;/h3&gt;&lt;p&gt;The left part of this window is intended to display a list of all virtual machines on your computer. The list is empty now because you haven&apos;t created any virtual machines yet.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;In order to create a new virtual machine, press the &lt;b&gt;New&lt;/b&gt; button in the main tool bar located at the top of the window.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;F1&lt;/b&gt; key to get instant help, or visit &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; for the latest information and news.&lt;/p&gt;</source>
<translation type="obsolete">&lt;h3&gt;Ласкаво просимо до програми VirtualBox!&lt;/h3&gt;&lt;p&gt;Ліва частина цього вікна призначена для показу списку всіх віртуальних машин на вашому комп&apos;ютері. Цей список зараз порожній, бо ви ще не створили жодної віртуальної машини.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;Щоб створити нову віртуальну машину, натисніть кнопку &lt;b&gt;Створити&lt;/b&gt; на головній панелі інструментів, який знаходиться зверху вікна.&lt;/p&gt;&lt;p&gt;Ви можете натиснути клавішу &lt;b&gt;F1&lt;/b&gt; для отримання миттєвої допомоги, або відвідайте &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt;, щоб дізнатися останню інформацію та новини.&lt;/p&gt;</translation>
</message>
@@ -5174,7 +5181,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSelectorWnd.cpp" line="1294"/>
<source>Display the Virtual Media Manager dialog</source>
- <translation>Показує діалог Керуванння Віртуального Носія</translation>
+ <translation>Показати діалог керуванння віртуального носія</translation>
</message>
<message>
<location filename="../src/VBoxSelectorWnd.cpp" line="1362"/>
@@ -5215,7 +5222,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSelectorWnd.cpp" line="1518"/>
<source>&lt;h3&gt;Welcome to VirtualBox!&lt;/h3&gt;&lt;p&gt;The left part of this window is intended to display a list of all virtual machines on your computer. The list is empty now because you haven&apos;t created any virtual machines yet.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;In order to create a new virtual machine, press the &lt;b&gt;New&lt;/b&gt; button in the main tool bar located at the top of the window.&lt;/p&gt;&lt;p&gt;You can press the &lt;b&gt;%1&lt;/b&gt; key to get instant help, or visit &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; for the latest information and news.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;h3&gt;Ласкаво просимо до VirtualBox!&lt;/h3&gt;&lt;p&gt;У лівій частині цього вікна показується список віртуальних машин на вашому комп&apos;ютері. Зараз список порожній, оскільки, поки що, ви не маєте створених віртуальних машин.&lt;img src=:/welcome.png align=right/&gt;&lt;/p&gt;&lt;p&gt;Для того, щоб створити нову віртуальну машину, натисніть &lt;b&gt;Створити&lt;/b&gt; в головному меню панелі інструментів , які знаходяться вверху вікна.&lt;/p&gt;&lt;p&gt;Ви можете натиснути &lt;b&gt;%1&lt;/b&gt;, щоб отримати миттєву довідку, або відвідайте &lt;a href=http://www.virtualbox.org&gt;www.virtualbox.org&lt;/a&gt; щодо останіх новин.&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -5223,7 +5230,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSettingsDialog.cpp" line="95"/>
<source>&lt;i&gt;Select a settings category from the list on the left side and move the mouse over a settings item to get more information&lt;/i&gt;.</source>
- <translation>&lt;i&gt;Виберіть категорію налаштувань зі списку зліва та пересуньте мишку до пункту налаштувань, щоб отримати більше інформації&lt;/i&gt;.</translation>
+ <translation>&lt;i&gt;Виберіть категорію налаштувань зі списку зліва та пересуньте мишку до пункту налаштувань, щоб отримати детальнішу інформацію&lt;/i&gt;.</translation>
</message>
<message>
<location filename="../src/VBoxSettingsDialog.cpp" line="187"/>
@@ -5243,7 +5250,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSettingsDialog.cpp" line="138"/>
<source>On the &lt;b&gt;%1&lt;/b&gt; page, %2</source>
- <translation>На &lt;b&gt;%1&lt;/b&gt; сторінці, %2</translation>
+ <translation>На &lt;b&gt;%1&lt;/b&gt; сторінці, %2</translation>
</message>
</context>
<context>
@@ -5372,7 +5379,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSnapshotsWgt.cpp" line="687"/>
<source>D&amp;iscard Current Snapshot and State</source>
- <translation>С&amp;касувати поточний знімок та стан</translation>
+ <translation>Відкин&amp;ути поточний знімок та стан</translation>
</message>
<message>
<location filename="../src/VBoxSnapshotsWgt.cpp" line="688"/>
@@ -5446,12 +5453,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxLineTextEdit.cpp" line="78"/>
<source>&amp;Replace...</source>
- <translation>&amp;Перемістити...</translation>
+ <translation>&amp;Замінити...</translation>
</message>
<message>
<location filename="../src/VBoxLineTextEdit.cpp" line="79"/>
<source>Replaces the current text with the content of a given file.</source>
- <translation>Переміщує поточний текст з контекстом певного файла.</translation>
+ <translation>Заміняє поточний текст з контекстом певного файла.</translation>
</message>
<message>
<location filename="../src/VBoxLineTextEdit.cpp" line="84"/>
@@ -5469,7 +5476,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSelectorWnd.cpp" line="1781"/>
<source>Show Selector Window</source>
- <translation>Показати Вікно Вибору</translation>
+ <translation>Показати вікно вибору</translation>
</message>
<message>
<location filename="../src/VBoxSelectorWnd.cpp" line="1783"/>
@@ -5578,7 +5585,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxUpdateDlg.cpp" line="374"/>
<source>VirtualBox Update Wizard</source>
- <translation>Майстер Оновлень VirtualBox</translation>
+ <translation>Майстер оновлень VirtualBox</translation>
</message>
<message>
<location filename="../src/VBoxUpdateDlg.cpp" line="376"/>
@@ -5603,7 +5610,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxUpdateDlg.cpp" line="399"/>
<source>&lt;p&gt;Unable to obtain the new version information due to the following network error:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</source>
- <translation>&lt;p&gt;Неможливо отримати інформацію про нову версію через наступну мережеву помилку:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Неможливо отримати інформацію про нову версію через таку мережеву помилку:&lt;/p&gt;&lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/VBoxUpdateDlg.cpp" line="402"/>
@@ -5613,7 +5620,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxUpdateDlg.cpp" line="390"/>
<source>&lt;p&gt;This wizard will connect to the VirtualBox web-site and check if a newer version of VirtualBox is available.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Check&lt;/b&gt; button to check for a new version now or the &lt;b&gt;Cancel&lt;/b&gt; button if you do not want to perform this check.&lt;/p&gt;&lt;p&gt;You can run this wizard at any time by choosing &lt;b&gt;Check for Updates...&lt;/b&gt; from the &lt;b&gt;Help&lt;/b&gt; menu.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Цей майстер пз’єднається з веб-сайтом VirtualBox і перевірить, чи доступна найновіша версія VirtualBox.&lt;/p&gt;&lt;p&gt;Використайте кнопку &lt;b&gt;Перевірити&lt;/b&gt;, щоб перевірити на нову версію зараз або кнопку &lt;b&gt;Скасувати&lt;/b&gt;, якщо ви не бажаєте здійснювати цю перевірку.&lt;/p&gt;&lt;p&gt;Ви можете запустити цього майстра в будь-який час вибираючи &lt;b&gt;Перевірити на оновлення...&lt;/b&gt; з меню &lt;b&gt;Довідка&lt;/b&gt;.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Цей майстер з&apos;єднається з сайтом VirtualBox і перевірить, чи доступна найновіша версія VirtualBox.&lt;/p&gt;&lt;p&gt;Використайте кнопку &lt;b&gt;Перевірити&lt;/b&gt;, щоб перевірити на нову версію зараз або кнопку &lt;b&gt;Скасувати&lt;/b&gt;, якщо ви не бажаєте здійснювати цю перевірку.&lt;/p&gt;&lt;p&gt;Ви можете запустити цього майстра в будь-який час вибираючи &lt;b&gt;Перевірити на оновлення...&lt;/b&gt; з меню &lt;b&gt;Довідка&lt;/b&gt;.&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -5639,7 +5646,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSelectorWnd.cpp" line="193"/>
<source>The selected virtual machine is &lt;i&gt;inaccessible&lt;/i&gt;. Please inspect the error message shown below and press the &lt;b&gt;Refresh&lt;/b&gt; button if you want to repeat the accessibility check:</source>
- <translation>Вибрана віртуальна машина &lt;i&gt;недоступна&lt;/i&gt;. Будь ласка, перегляньте повідомлення про помилки, що показані нижче та натисніть &lt;b&gt;Оновити&lt;/b&gt;, якщо ви хочете повторити перевірку доступності:</translation>
+ <translation>Вибрана віртуальна машина &lt;i&gt;недоступна&lt;/i&gt;. Будь ласка, перегляньте повідомлення про помилки, що показані нижче та натисніть &lt;b&gt;Оновити&lt;/b&gt;, якщо ви бажаєте повторити перевірку доступності:</translation>
</message>
</context>
<context>
@@ -5647,22 +5654,22 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="30"/>
<source>First Run Wizard</source>
- <translation>Перший Запуск Майстра</translation>
+ <translation>Майстер першого запуску</translation>
</message>
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="121"/>
<source>&lt;p&gt;You have started a newly created virtual machine for the first time. This wizard will help you to perform the steps necessary for installing an operating system of your choice onto this virtual machine.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go to the next page of the wizard and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page. You can also press &lt;b&gt;Cancel&lt;/b&gt; if you want to cancel execution of this wizard.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ви запустили новостворену віртуальну машину перший раз. Цей майстер допоможе вам виконати кроки, які необхідні для встановлення операційної системи на ваш вибір на цю віртуальну машину.&lt;/p&gt;&lt;p&gt;Натисніть кнопку &lt;b&gt;Далі&lt;/b&gt;, щоб перейти до наступної сторінки майстра або кнопку &lt;b&gt;Назад&lt;/b&gt;, щоб повернутись до попередньої сторінки. Також ви можете натиснути кнопку &lt;b&gt;Скасувати&lt;/b&gt;, якщо ви хочете скасувати виконання майстра.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Ви запустили новостворену віртуальну машину перший раз. Цей майстер допоможе вам виконати кроки, які необхідні для встановлення операційної системи на ваш вибір на цю віртуальну машину.&lt;/p&gt;&lt;p&gt;Натисніть кнопку &lt;b&gt;Далі&lt;/b&gt;, щоб перейти до наступної сторінки майстера або кнопку &lt;b&gt;Назад&lt;/b&gt;, щоб повернутись до попередньої сторінки. Також ви можете натиснути кнопку &lt;b&gt;Скасувати&lt;/b&gt;, якщо ви бажаєте скасувати виконання майстра.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="63"/>
<source>Welcome to the First Run Wizard!</source>
- <translation>Ласкаво просимо до Першого Запуску Майстра!</translation>
+ <translation>Ласкаво просимо до майстера першого запуску!</translation>
</message>
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="307"/>
<source>&lt;p&gt;Select the type of the media you would like to use for installation purposes below.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Виберіть тип носія, який ви б хотіли використати для встановлення, нижче.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Виберіть тип носія, який ви бажаєте використати для встановлення, нижче.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="348"/>
@@ -5682,7 +5689,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="401"/>
<source>&lt;p&gt;Select the media which contains the setup program of the operating system you want to install. This media must be bootable, otherwise the setup program will not be able to start.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Виберіть носій, який містить програму встановлення операційної системи, яку ви хочете встановити. Цей носій має бути завантажувальниим, інакше програма встановлення не зможе запуститися.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Виберіть носій, який містить програму встановлення операційної системи, яку ви бажаєте встановити. Цей носій має бути завантажувальним, інакше програма встановлення не зможе запуститися.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="439"/>
@@ -5707,7 +5714,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="651"/>
<source>&lt;p&gt;You have selected the following media to boot from:&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ви вибрали наступний пристрій для завантаження:&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Ви вибрали такий пристрій для завантаження:&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="593"/>
@@ -5732,27 +5739,27 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="146"/>
<source>&lt;p&gt;You have started a newly created virtual machine for the first time. This wizard will help you to perform the steps necessary for booting an operating system of your choice on the virtual machine.&lt;/p&gt;&lt;p&gt;Note that you will not be able to install an operating system into this virtual machine right now because you did not attach any hard disk to it. If this is not what you want, you can cancel execution of this wizard, select &lt;b&gt;Settings&lt;/b&gt; from the &lt;b&gt;Machine&lt;/b&gt; menu of the main VirtualBox window to access the settings dialog of this machine and change the hard disk configuration.&lt;/p&gt;&lt;p&gt;Use the &lt;b&gt;Next&lt;/b&gt; button to go to the next page of the wizard and the &lt;b&gt;Back&lt;/b&gt; button to return to the previous page. You can also press &lt;b&gt;Cancel&lt;/b&gt; if you want to cancel execution of this wizard.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ви запустили нову віртуальну машину вперше. Цей майстер допоможе вам виконати кроки, необхідні для завантаження вами вибраної операційної системи на віртуальну машину.&lt;/p&gt;&lt;p&gt;Майте на увазі, ви не зможете встановити операційну систему на цю віртуальну машину зараз, бо ви не під&apos;єднали до неї жодного жорсткого диска. Якщо це не те, що ви хочете, то ви можете скасувати виконання майстра, вибрати &lt;b&gt;Налаштування&lt;/b&gt; з меню &lt;b&gt;Машина&lt;/b&gt; головного вікна VirtualBox для відкриття діалогу налаштувань машини та змінити конфігурацію жорсткого диска.&lt;/p&gt;&lt;p&gt;Натисніть кнопку &lt;b&gt;Далі&lt;/b&gt;, щоб перейти до наступної сторінки майстра, або кнопку &lt;b&gt;Назад&lt;/b&gt;, щоб повернутись до попередньої сторінки. Також ви можете натиснути кнопку &lt;b&gt;Скасувати&lt;/b&gt;, якщо ви хочете скасувати виконання майстра.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Ви запустили нову віртуальну машину вперше. Цей майстер допоможе вам виконати кроки, необхідні для завантаження вами вибраної операційної системи на віртуальну машину.&lt;/p&gt;&lt;p&gt;Майте на увазі, ви не зможете встановити операційну систему на цю віртуальну машину зараз, бо ви не під&apos;єднали до неї жодного жорсткого диска. Якщо це не те, що ви бажаєте, то ви можете скасувати виконання майстера, вибрати &lt;b&gt;Налаштування&lt;/b&gt; з меню &lt;b&gt;Машина&lt;/b&gt; головного вікна VirtualBox для відкриття діалогу налаштувань машини та змінити налаштування жорсткого диска.&lt;/p&gt;&lt;p&gt;Натисніть кнопку &lt;b&gt;Далі&lt;/b&gt;, щоб перейти до наступної сторінки майстера, або кнопку &lt;b&gt;Назад&lt;/b&gt;, щоб повернутись до попередньої сторінки. Також ви можете натиснути кнопку &lt;b&gt;Скасувати&lt;/b&gt;, якщо ви бажаєте скасувати виконання майстра.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="332"/>
<source>&lt;p&gt;Select the type of the media you would like to use for booting an operating system.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Виберіть тип носія, який ви би хотіли використовувати для завантаження операційної системи.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Виберіть тип носія, який ви бажаєте використовувати для завантаження операційної системи.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="423"/>
<source>&lt;p&gt;Select the media that contains the operating system you want to work with. This media must be bootable, otherwise the operating system will not be able to start.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Виберіть носій, який містить операційну систему, з якою ви хочете працювати. Цей носій має бути завантажувальним, інакше операційна система не зможе запуститись.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Виберіть носій, який містить операційну систему, з якою ви бажаєте працювати. Цей носій має бути завантажувальним, інакше операційна система не зможе запуститись.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="676"/>
<source>&lt;p&gt;You have selected the following media to boot an operating system from:&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ви вибрали наступний пристрій для завантаження операційної системи:&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Ви вибрали такий пристрій для завантаження операційної системи:&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="753"/>
<source>&lt;p&gt;If the above is correct, press the &lt;b&gt;Finish&lt;/b&gt; button. Once you press it, the selected media will be mounted on the virtual machine and the machine will start execution.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Якщо вищевказана інформація правильна, натисніть кнопку &lt;b&gt;Закінчити&lt;/b&gt;. Після цього вказаний носій буде змонтований до віртуальної машини і машина почне виконання процесу.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Якщо вищевказана інформація правильна, натисніть кнопку &lt;b&gt;Закінчити&lt;/b&gt;. Після цього вказаний носій буде змонтований до віртуальної машини і вона почне виконання процесу.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxVMFirstRunWzd.ui" line="805"/>
@@ -5802,7 +5809,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxVMInformationDlg.cpp" line="166"/>
<source>%1 - Session Information</source>
- <translation>%1 — Інформація про Сесію</translation>
+ <translation>%1 — Інформація про сеанс</translation>
</message>
<message>
<location filename="../ui/VBoxVMInformationDlg.ui" line="41"/>
@@ -5852,7 +5859,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxVMInformationDlg.cpp" line="473"/>
<source>Screen Resolution</source>
- <translation>Розширення екрану</translation>
+ <translation>Розширення екрана</translation>
</message>
<message>
<location filename="../src/VBoxVMInformationDlg.cpp" line="550"/>
@@ -5874,7 +5881,7 @@ p, li { white-space: pre-wrap; }
<location filename="../src/VBoxVMInformationDlg.cpp" line="457"/>
<source>Not Detected</source>
<comment>guest additions</comment>
- <translation>Не виявлені</translation>
+ <translation>Не виявлено</translation>
</message>
<message>
<location filename="../src/VBoxVMInformationDlg.cpp" line="460"/>
@@ -5905,7 +5912,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxVMInformationDlg.cpp" line="577"/>
<source>No Network Adapters</source>
- <translation>Нема жодного мережевого Адаптера</translation>
+ <translation>Нема жодного мережевого адаптера</translation>
</message>
<message>
<location filename="../src/VBoxConsoleWnd.cpp" line="2119"/>
@@ -5941,7 +5948,7 @@ p, li { white-space: pre-wrap; }
<location filename="../src/VBoxVMListView.cpp" line="173"/>
<source>&lt;nobr&gt;%1&lt;br&gt;&lt;/nobr&gt;&lt;nobr&gt;%2 since %3&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Session %4&lt;/nobr&gt;</source>
<comment>VM tooltip (name, last state change, session state)</comment>
- <translation>&lt;nobr&gt;%1&lt;br&gt;&lt;/nobr&gt;&lt;nobr&gt;%2 починаючи з %3&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Сесія %4&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;%1&lt;br&gt;&lt;/nobr&gt;&lt;nobr&gt;%2 починаючи з %3&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;Сеанс %4&lt;/nobr&gt;</translation>
</message>
<message>
<location filename="../src/VBoxVMListView.cpp" line="184"/>
@@ -6010,7 +6017,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxVMLogViewer.cpp" line="259"/>
<source>%1 - VirtualBox Log Viewer</source>
- <translation>%1 — Переглядач Журналу VirtualBox</translation>
+ <translation>%1 — Переглядач журналу VirtualBox</translation>
</message>
<message>
<location filename="../src/VBoxVMLogViewer.cpp" line="191"/>
@@ -6071,17 +6078,17 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxVMSettingsCD.cpp" line="173"/>
<source>Host CD/DVD drive is not selected</source>
- <translation>Головний носій CD/DVD не вибраний</translation>
+ <translation>Головний носій CD/DVD не вибрано</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsCD.cpp" line="175"/>
<source>CD/DVD image file is not selected</source>
- <translation>Файл образа CD/DVD не вибраний</translation>
+ <translation>Файл образа CD/DVD не вибрано</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsCD.ui" line="33"/>
<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>Якщо це відмічено, змонтовує вказаний носій CD/DVD як носій віртуальної машини. Майте на увазі, носій CD/DVD завжди підключений до другого головного контролера машини.</translation>
+ <translation>Якщо це відмічено, змонтовує вказаний носій CD/DVD як носій віртуальної машини. Майте на увазі, носій CD/DVD завжди під&apos;єднаний до другого головного контролера машини.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsCD.ui" line="36"/>
@@ -6106,7 +6113,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsCD.ui" line="125"/>
<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>Якщо це відмічено, дозволяє гостям надсилати команди ATAPI прямо в головну машину, котра дозволяє використовувати запис CD/DVD, з’єднаних з головною машиною. Майте на увазі, запис аудіо CD ще не підтримується.</translation>
+ <translation>Якщо це відмічено, дозволяє гостям надсилати команди ATAPI прямо в головну машину, котра дозволяє використовувати запис CD/DVD, з&apos;єднаних з головною машиною. Майте на увазі, запис аудіо CD ще не підтримується.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsCD.ui" line="128"/>
@@ -6131,7 +6138,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsCD.ui" line="155"/>
<source>Invokes the Virtual Media Manager to select a CD/DVD image to mount.</source>
- <translation>Викликає Керуванння Віртуальними Носіями, щоб вибрати образ CD/DVD для монтування.</translation>
+ <translation>Викликає керуванння віртуальними носіями, щоб вибрати образ CD/DVD для монтування.</translation>
</message>
</context>
<context>
@@ -6174,7 +6181,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsDisplay.ui" line="171"/>
<source>When checked, the virtual machine will get access to the 3D graphics capabilities available on the host.</source>
- <translation>Якщо це позначено, віртуальна машина отримає доступ до можливостей прискорення просторової графіки, доступних на вузлі.</translation>
+ <translation>Якщо це відмічено, віртуальна машина отримає доступ до можливостей прискорення просторової графіки, доступних на головній операційній системі.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsDisplay.ui" line="174"/>
@@ -6209,7 +6216,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsDisplay.ui" line="280"/>
<source>Authentication &amp;Method:</source>
- <translation>М&amp;етод засвідчення:</translation>
+ <translation>&amp;Спосіб засвідчення:</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsDisplay.ui" line="299"/>
@@ -6232,7 +6239,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSettingsDialogSpecific.cpp" line="455"/>
<source>General</source>
- <translation>Загальні</translation>
+ <translation>Загально</translation>
</message>
<message>
<location filename="../src/VBoxSettingsDialogSpecific.cpp" line="464"/>
@@ -6247,7 +6254,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSettingsDialogSpecific.cpp" line="470"/>
<source>CD/DVD-ROM</source>
- <translation> CD/DVD-ROM</translation>
+ <translation>CD/DVD-ROM</translation>
</message>
<message>
<location filename="../src/VBoxSettingsDialogSpecific.cpp" line="473"/>
@@ -6290,7 +6297,7 @@ p, li { white-space: pre-wrap; }
<translation>Спільна теки</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxSettingsDialogSpecific.cpp" line="0"/>
<source>Remote Display</source>
<translation type="obsolete">Віддалена стільниця</translation>
</message>
@@ -6300,7 +6307,7 @@ p, li { white-space: pre-wrap; }
<translation>%1 — %2</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxSettingsDialogSpecific.cpp" line="0"/>
<source>On the &lt;b&gt;%1&lt;/b&gt; page, %2</source>
<translation type="obsolete">На &lt;b&gt;%1&lt;/b&gt; сторінці, %2</translation>
</message>
@@ -6317,7 +6324,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxSettingsDialogSpecific.cpp" line="543"/>
<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-ох бітну гостьову операційну систему для цієї віртуальної машини. необхідна віртуалізація (VT-x/AMD-V), ці властивості будуть автоматично ввімкнуті.</translation>
+ <translation>ви вибрали 64-ох бітну гостьову операційну систему, для цієї віртуальної машини. необхідна віртуалізація (VT-x/AMD-V), ці властивості будуть автоматично ввімкнуто.</translation>
</message>
<message>
<location filename="../src/VBoxSettingsDialogSpecific.cpp" line="555"/>
@@ -6330,12 +6337,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxVMSettingsFD.cpp" line="171"/>
<source>Host floppy drive is not selected</source>
- <translation>Головний носій дискет не вибраний</translation>
+ <translation>Головний носій дискет не вибрано</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsFD.cpp" line="173"/>
<source>Floppy image file is not selected</source>
- <translation>Файл образа дискети не вибраний</translation>
+ <translation>Файл образа дискети не вибрано</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsFD.ui" line="33"/>
@@ -6380,20 +6387,20 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsFD.ui" line="139"/>
<source>Invokes the Virtual Media Manager to select a Floppy image to mount.</source>
- <translation>Викликає Керуванння Віртуальними Носіями, щоб вибрати образ дискет для монтування.</translation>
+ <translation>Викликає керуванння віртуальними носіями, щоб вибрати образ дискет для монтування.</translation>
</message>
</context>
<context>
<name>VBoxVMSettingsGeneral</name>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsFD.ui" line="0"/>
<source>&lt;qt&gt;%1&amp;nbsp;MB&lt;/qt&gt;</source>
<translation type="obsolete">&lt;qt&gt;%1&amp;nbsp;МБ&lt;/qt&gt;</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsGeneral.cpp" line="154"/>
<source>Displays the path where snapshots of this virtual machine will be stored. Note that snapshots can take quite a lot of disk space.</source>
- <translation>Показує шлях, де будуть зберігатися знімки цієї машини.Майте на увазі, знімки можуть займати доволі чимало дискового простору.</translation>
+ <translation>Показує шлях, де будуть зберігатися знімки цієї машини. Майте на увазі, знімки можуть займати доволі чимало дискового простору.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsGeneral.ui" line="37"/>
@@ -6401,7 +6408,7 @@ p, li { white-space: pre-wrap; }
<translation>&amp;Основний</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Identification</source>
<translation type="obsolete">Розпізнавання</translation>
</message>
@@ -6416,37 +6423,37 @@ p, li { white-space: pre-wrap; }
<translation>Показує назву віртуальної машини.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Base &amp;Memory Size</source>
<translation type="obsolete">Розмір &amp;основної пам&apos;яті</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<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">Керує об&apos;ємом пам&apos;яті, яка забезпечує віртуальну машину. Якщо ви надали забагато, машина може не запуститись.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>&lt;</source>
<translation type="obsolete">&lt;</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>&gt;</source>
<translation type="obsolete">&gt;</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>MB</source>
<translation type="obsolete">МБ</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>&amp;Video Memory Size</source>
<translation type="obsolete">Розмір &amp;відеопам&apos;яті</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Controls the amount of video memory provided to the virtual machine.</source>
<translation type="obsolete">Керує об&apos;ємом відеопам&apos;яті, котра забезпечує віртуальну машину.</translation>
</message>
@@ -6456,89 +6463,89 @@ p, li { white-space: pre-wrap; }
<translation>&amp;Вдосконалений</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Boo&amp;t Order:</source>
<translation type="obsolete">&amp;Порядок завантаження:</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Defines the boot device order. Use checkboxes to 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="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>[device]</source>
<translation type="obsolete">[пристрій]</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Move Up (Ctrl-Up)</source>
<translation type="obsolete">Пересунути вище (Ctrl-Up)</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Moves the selected boot device up.</source>
<translation type="obsolete">Пересуває вибраний пристрій завантаження вище.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Move Down (Ctrl-Down)</source>
<translation type="obsolete">Пересунути нижче (Ctrl-Down)</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Moves the selected boot device down.</source>
<translation type="obsolete">Пересуває вибраний пристрій завантаження нижче.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Extended Features:</source>
<translation type="obsolete">Розширені властивості:</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>When checked, the virtual machine will support the Advanced Configuration and Power Management Interface (ACPI). &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable this feature after having installed a Windows guest operating system!</source>
<translation type="obsolete">Якщо це відмічено, віртуальна машина буде підтримувати вдосконалений інтерфейс конфігурації та керування живленням (ACPI). &lt;b&gt;Майте на увазі:&lt;/b&gt; не блокуйте цю властивість після встановлення Windows гостьовою операційною системою!</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Enable A&amp;CPI</source>
<translation type="obsolete">Ввімкн&amp;ути ACPI</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>When checked, the virtual machine will support the Input Output APIC (IO APIC), which may slightly decrease the VM performance. &lt;b&gt;Note:&lt;/b&gt; don&apos;t disable this feature after having installed a Windows guest operating system!</source>
<translation type="obsolete">Якщо це відмічено, віртуальна машина буде підтримувати покращений програмовний контролер переривань В/В (IO APIC), який може трохи понизити продуктивність віртуальної машини.&lt;b&gt;Майте на увазі:&lt;/b&gt; не блокуйте цю властивість після встановлення Windows гостьовою операційною системою!</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Enable IO A&amp;PIC</source>
<translation type="obsolete">Вв&amp;імкнути APIC В/В</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>When checked, the virtual machine will try to make use of the host CPU&apos;s hardware virtualization extensions such as Intel VT-x and AMD-V.</source>
<translation type="obsolete">Якщо це відмічено, віртуальна машина спробує використати розширення апаратної віртуалізації, такі як Intel VT-x та AMD-V, для процесора головного комп&apos;ютера.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Enable &amp;VT-x/AMD-V</source>
<translation type="obsolete">Ввімкну&amp;ти &amp;VT-x/AMD-V</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>When checked, the Physical Address Extension (PAE) feature of the host CPU will be exposed to the virtual machine.</source>
<translation type="obsolete">Якщо позначити цей пункт, на віртуальній машині буде використано можливість розширення області фізичних адрес (PAE).</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Enable PA&amp;E/NX</source>
<translation type="obsolete">Ввімк&amp;нути PAE/NX</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsGeneral.ui" line="130"/>
<source>&amp;Shared Clipboard:</source>
- <translation>&amp;Спільний буфер обміну:</translation>
+ <translation>&amp;Спільна кишеня:</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsGeneral.ui" line="149"/>
@@ -6546,12 +6553,12 @@ p, li { white-space: pre-wrap; }
<translation>Описує режим розподіл буфера обміну між гостьової і головною операційною системою. Майте на увазі, ця властивість вимагає встановити гостьові доповнення в гостьову операційну систему.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<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. Залежно від значення, буде забезпечено відповідний віртуальний пристрій IDE в гостьову операційну систему.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>&amp;IDE Controller Type:</source>
<translation type="obsolete">Тип &amp;контролера IDE:</translation>
</message>
@@ -6568,10 +6575,10 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsGeneral.ui" line="253"/>
<source>Displays the description of the virtual machine. The description field is useful for commenting configuration details of the installed guest OS.</source>
- <translation>Показує характеристику віртуальної машини. Поля опису є корисні для коментування деталей налаштування гостьової операційної системи, котра встановлена.</translation>
+ <translation>Показує характеристику віртуальної машини. Поля опису є корисні для коментування деталей налаштування гостьової операційної системи, котра встановлена.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>&amp;Other</source>
<translation type="obsolete">&amp;Інші</translation>
</message>
@@ -6581,37 +6588,37 @@ p, li { white-space: pre-wrap; }
<translation>Якщо це відмічено, будь-які зміни для носіїв CD/DVD або дискет, які змонтовані, виконані під час роботи машини будуть збережені в файл налаштувань в порядку збереження налаштувань носіїв, які змонтовані, перед запуском.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>&amp;Remember Mounted Media</source>
<translation type="obsolete">&amp;Запам&apos;ятовувати носії, які змонтовані</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Runtime:</source>
<translation type="obsolete">Час роботи:</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>you have assigned more than &lt;b&gt;75%&lt;/b&gt; of your computer&apos;s memory (&lt;b&gt;%1&lt;/b&gt;) to the virtual machine. Not enough memory is left for your host operating system. Please select a smaller amount.</source>
<translation type="obsolete">ви вказали більше ніж &lt;b&gt;75%&lt;/b&gt; пам&apos;яті вашого комп&apos;ютера (&lt;b&gt;%1&lt;/b&gt;) у віртуальну машину. Це недостатньо пам&apos;яті для вашої головної операційної системи. Будь ласка, виберіть менший об&apos;єм.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>you have assigned more than &lt;b&gt;50%&lt;/b&gt; of your computer&apos;s memory (&lt;b&gt;%1&lt;/b&gt;) to the virtual machine. Not enough memory might be left for your host operating system. Continue at your own risk.</source>
<translation type="obsolete">ви вказали більше ніж &lt;b&gt;50%&lt;/b&gt; пам&apos;яті вашого комп&apos;ютера (&lt;b&gt;%1&lt;/b&gt;) у віртуальну машину. Може бути недостатньо пам&apos;яті для вашої головної операційної системи. Продовжуйте на власний ризик.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>you have assigned less than &lt;b&gt;%1&lt;/b&gt; for video memory which is the minimum amount required to switch the virtual machine to fullscreen or seamless mode.</source>
<translation type="obsolete">ви вказали менше ніж &lt;b&gt;%1&lt;/b&gt; відеопам&apos;яті, менше за мінімальний об’єм, потрібний для перемикання віртуальної машини у повноекранний або повноцінний режим. </translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>When checked, the virtual machine will get access to the 3D graphics capabilities available on the host.</source>
<translation type="obsolete">Якщо позначити цей пункт, віртуальна машина отримає доступ до можливостей прискорення просторової графіки, доступних на вузлі.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsGeneral.ui" line="0"/>
<source>Enable &amp;3D Acceleration</source>
<translation type="obsolete">&amp;Ввімкнути 3D прискорення</translation>
</message>
@@ -6656,12 +6663,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxVMSettingsHD.cpp" line="854"/>
<source>&amp;Add Attachment</source>
- <translation>&amp;Додати підключення</translation>
+ <translation>&amp;Додати під&apos;єднання</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsHD.cpp" line="855"/>
<source>&amp;Remove Attachment</source>
- <translation>&amp;Вилучити підключення</translation>
+ <translation>&amp;Вилучити під&apos;єднання</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsHD.cpp" line="856"/>
@@ -6671,37 +6678,37 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxVMSettingsHD.cpp" line="865"/>
<source>Adds a new hard disk attachment.</source>
- <translation>Додає нове підключення жорсткого диска.</translation>
+ <translation>Додає нове під&apos;єднання жорсткого диска.</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsHD.cpp" line="866"/>
<source>Removes the highlighted hard disk attachment.</source>
- <translation>Вилучає виділене підключення жорсткого диска.</translation>
+ <translation>Вилучає виділене під&apos;єднання жорсткого диска.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxVMSettingsHD.cpp" line="0"/>
<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 цієї машини. Майте на увазі, ви не можете під&apos;єднювати жорсткі диски до порту SATA, коли віртуальний контролер SATA вимкнутий.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../src/VBoxVMSettingsHD.cpp" line="0"/>
<source>&amp;Enable SATA Controller</source>
<translation type="obsolete">Вв&amp;імкнути контролер SATA</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsHD.ui" line="126"/>
<source>&amp;Attachments</source>
- <translation>&amp;Підключення</translation>
+ <translation>&amp;Під&apos;єднання</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsHD.ui" line="145"/>
<source>Lists all hard disks attached to this machine. Use a mouse click or the &lt;tt&gt;Space&lt;/tt&gt; key on the highlighted item to activate the drop-down list and choose the desired value. Use the context menu or buttons to the right to add or remove hard disk attachments.</source>
- <translation>Показує список всіх жорстких дисків, наявних на цьому комп’ютері. Наведенням вказівника миші на вибраний пункт з наступним клацанням лівою кнопкою миші або натисканням клавіші &lt;tt&gt;Пробіл&lt;/tt&gt; ви зможете відкрити спадний список і обрати бажане значення. Скористайтеся контекстним меню або кнопками, розташованими праворуч для додавання або вилучення жорстких дисків.</translation>
+ <translation>Показує список всіх жорстких дисків, наявних на цьому комп’ютері. Наведенням вказівника миші на вибраний пункт з таким клацанням лівою кнопкою миші або натисканням клавіші &lt;tt&gt;Пробіл&lt;/tt&gt; ви зможете відкрити спадний список і вибрати бажане значення. Скористайтеся контекстним меню або кнопками, розташованими праворуч для додавання або вилучення жорстких дисків.</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsHD.cpp" line="869"/>
<source>Invokes the Virtual Media Manager to select a hard disk to attach to the currently highlighted slot.</source>
- <translation>Відкриває вікно Керуванння Віртуальними Носіями для вибору жорсткого диска, який слід з’єднати з поточним вибраним слотом.</translation>
+ <translation>Відкриває вікно керуванння віртуальними носіями для вибору жорсткого диска, який слід з&apos;єднати з вибраним слотом.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsHD.ui" line="176"/>
@@ -6726,7 +6733,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsHD.ui" line="83"/>
<source>When checked, enables an additional virtual controller (either SATA or SCSI) of this machine.</source>
- <translation>Якщо це відмічено, вмикається додатковий віртуальний контролер цієї машини (або SATA, або SCSI).</translation>
+ <translation>Якщо це відмічено, вмикається додатковий віртуальний контролер цієї машини (SATA або SCSI).</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsHD.ui" line="86"/>
@@ -6737,12 +6744,12 @@ p, li { white-space: pre-wrap; }
<context>
<name>VBoxVMSettingsNetwork</name>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsHD.ui" line="0"/>
<source>Select TAP setup application</source>
<translation type="obsolete">Вибрати програму встановлення TAP</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsHD.ui" line="0"/>
<source>Select TAP terminate application</source>
<translation type="obsolete">Вибрати програму завершення TAP</translation>
</message>
@@ -6757,14 +6764,14 @@ p, li { white-space: pre-wrap; }
<translation>&amp;Ввімкнути мережевий адаптер</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>A&amp;dapter Type:</source>
<translation type="obsolete">Тип &amp;адаптера:</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsNetwork.ui" line="90"/>
<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>
+ <translation>Вибирає тип віртуального мережевого адаптера. Залежно від значення, VirtualBox забезпечуватиме мережевий пристрій для віртуальної машини.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsNetwork.ui" line="97"/>
@@ -6772,92 +6779,92 @@ p, li { white-space: pre-wrap; }
<translation>&amp;Під&apos;єднаний до:</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>Controls the way how this virtual adapter is attached to the real network of the Host OS.</source>
<translation type="obsolete">Контролює, як цей адаптер під&apos;єднаний до справжньої мережі головної операційної системи.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>&amp;Network Name:</source>
<translation type="obsolete">&amp;Назва мережі:</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>Displays the name of the internal network selected for this adapter.</source>
<translation type="obsolete">Показує назву внутрішньої мережі, вибраної для цього адаптера.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>&amp;MAC Address:</source>
<translation type="obsolete">&amp;Адреса MAC:</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>Displays the MAC address of this adapter. It contains exactly 12 characters chosen from {0-9,A-F}. Note that the second character must be an even digit.</source>
<translation type="obsolete">Показує адресу MAC цього адаптера. Вона містить 12 символів вибраних з діапозону {0-9,A-F}. Майте на увазі, другий символ повиннен бути лише числом.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>Generates a new random MAC address.</source>
<translation type="obsolete">Створює нову випадкову MAC-адресу.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>&amp;Generate</source>
<translation type="obsolete">&amp;Згенерувати</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>Indicates whether the virtual network cable is plugged in on machine startup or not.</source>
<translation type="obsolete">Визначає, буде з’єднано віртуальний мережевий кабель під час запуску, чи ні.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>Ca&amp;ble Connected</source>
<translation type="obsolete">Каб&amp;бель з’єднано</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>&amp;Interface Name:</source>
<translation type="obsolete">Назва &amp;інтерфейсу:</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>Displays the TAP interface name.</source>
<translation type="obsolete">Показує назву інтерфейсу TAP.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>&amp;Setup Application:</source>
<translation type="obsolete">Програма вс&amp;тановлення:</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>Displays the command executed to set up the TAP interface.</source>
<translation type="obsolete">Показує команду, яку буде виконано для встановлення інтерфейсу TAP.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>Selects the setup application.</source>
<translation type="obsolete">Вказує програму встановлення.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>&amp;Terminate Application:</source>
<translation type="obsolete">Програма &amp;завершення:</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>Displays the command executed to terminate the TAP interface.</source>
<translation type="obsolete">Показує команду, яку буде виконано для завершення роботи інтерфейсу TAP.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>Selects the terminate application.</source>
<translation type="obsolete">Вказує програму завершення.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetwork.ui" line="0"/>
<source>Host Interface Settings</source>
<translation type="obsolete">Налаштування головного інтерфейсу</translation>
</message>
@@ -6890,12 +6897,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsNetwork.ui" line="110"/>
<source>Controls how this virtual adapter is attached to the real network of the Host OS.</source>
- <translation type="unfinished"></translation>
+ <translation>Котролює, як цей віртуальний адаптер під&apos;єднаний до справжньої мережі головної операційної системи.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsNetwork.ui" line="117"/>
<source>Open additional options dialog for current attachment type.</source>
- <translation type="unfinished"></translation>
+ <translation>Відкрити діалог додаткових варіантів для поточноно типу під&apos;єднання.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsNetwork.ui" line="127"/>
@@ -6905,7 +6912,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsNetwork.ui" line="140"/>
<source>Selects the name of the network adapter if attachment type is equivalent to &lt;b&gt;Bridged Adapter&lt;/b&gt; or &lt;b&gt;Host-only Adapter&lt;/b&gt; and the name of the internal network if attachment type is equivalent to &lt;b&gt;Internal Network&lt;/b&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>Вибирає назву мережевого адаптера, якщо тип під&apos;єднання рівносильний до &lt;b&gt;проміжного адаптера&lt;/b&gt; або &lt;b&gt;лише головного адаптера&lt;/b&gt; і назву внутрьошньої мережі, якщо тип під&apos;єднання рівносильний до &lt;b&gt;внутрьошньої мережі&lt;/b&gt;.</translation>
</message>
</context>
<context>
@@ -6928,7 +6935,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsNetworkDetails.ui" line="62"/>
<source>Generates a new random MAC address.</source>
- <translation>Створює нову випадкову MAC-адресу.</translation>
+ <translation>Створює нову випадкову адресу MAC.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsNetworkDetails.ui" line="75"/>
@@ -6944,12 +6951,12 @@ p, li { white-space: pre-wrap; }
<context>
<name>VBoxVMSettingsNetworkPage</name>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetworkDetails.ui" line="0"/>
<source>No host network interface is selected</source>
<translation type="obsolete">Нема жодного вибраного мережевого інтерфейсу</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsNetworkDetails.ui" line="0"/>
<source>Internal network name is not set</source>
<translation type="obsolete">Не встановлено назви внутрішньої мережі</translation>
</message>
@@ -7066,12 +7073,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxVMSettingsSF.cpp" line="252"/>
<source> Machine Folders</source>
- <translation>Теки машини</translation>
+ <translation> Теки машини</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsSF.cpp" line="259"/>
<source> Transient Folders</source>
- <translation>Тимчасові теки</translation>
+ <translation> Тимчасові теки</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsSF.cpp" line="359"/>
@@ -7109,7 +7116,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxVMSettingsSFDetails.cpp" line="120"/>
<source>Add Share</source>
- <translation>Зробити спільну теку</translation>
+ <translation>Створити спільну теку</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsSFDetails.cpp" line="123"/>
@@ -7221,7 +7228,7 @@ p, li { white-space: pre-wrap; }
<translation>&amp;Створити канал</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsSerial.ui" line="0"/>
<source>Port &amp;Path:</source>
<translation type="obsolete">&amp;Шлях порту:</translation>
</message>
@@ -7259,32 +7266,32 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxVMSettingsSystem.cpp" line="352"/>
<source>you have assigned more than &lt;b&gt;%1%&lt;/b&gt; of your computer&apos;s memory (&lt;b&gt;%2&lt;/b&gt;) to the virtual machine. Not enough memory is left for your host operating system. Please select a smaller amount.</source>
- <translation type="unfinished"></translation>
+ <translation>ви вказали більше, ніж &lt;b&gt;%1%&lt;/b&gt; пам&apos;яті вашого комп&apos;ютера (&lt;b&gt;%2&lt;/b&gt;) у віртуальній машині. Недостатньо пам&apos;яті для вашої головної операційної системи. Будь ласка, виберіть менший об&apos;єм.</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsSystem.cpp" line="362"/>
<source>you have assigned more than &lt;b&gt;%1%&lt;/b&gt; of your computer&apos;s memory (&lt;b&gt;%2&lt;/b&gt;) to the virtual machine. Not enough memory might be left for your host operating system. Continue at your own risk.</source>
- <translation type="unfinished"></translation>
+ <translation>ви вказали більше, ніж &lt;b&gt;%1%&lt;/b&gt; пам&apos;яті вашого комп&apos;ютера (&lt;b&gt;%2&lt;/b&gt;) у віртуальній машині. Недостатньо пам&apos;яті для вашої головної операційної системи. Продовжуйте на власний ризик.</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsSystem.cpp" line="375"/>
<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 (&lt;b&gt;%1&lt;/b&gt;). Please reduce the number of virtual CPUs.</source>
- <translation type="unfinished"></translation>
+ <translation>з точки зору швидкодії, число віртуальних процесорів, які під&apos;єднані до машини, не можуть перевищувати більше двох фізичних процесорів на головному комп&apos;ютері (&lt;b&gt;%1&lt;/b&gt;).Будь ласка, зменшіть число віртуальних процесорів.</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsSystem.cpp" line="385"/>
<source>you have assigned more virtual CPUs to the virtual machine than the number of physical CPUs on your host system (&lt;b&gt;%1&lt;/b&gt;). 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>ви вказали більше віртуальних процесорів, ніж фізично на головному комп&apos;ютері (&lt;b&gt;%1&lt;/b&gt;). Імовірно це занизить швидкодію вашої віртуальної машини. Будь ласка, прийміть до уваги зниження числа віртуальних процесорів.</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsSystem.cpp" line="396"/>
<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>ви вказали більше, ніж один віртуальний процесор для цієї машини. Це також не працює, якщо не ввімкнено властивості IO-APIC. Це буде автоматично здійснено, коли ви дозволите налаштування віртуальної машини, натиснувши кнопку Гаразд.</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsSystem.cpp" line="407"/>
<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>ви вказали більше, ніж один віртуальний процесор для цієї машини. Це також не працює, якщо не ввімкнено віртуалізацію апаратури (VT-x/AMD-V). Це буде автоматично здійснено, коли ви дозволите налаштування віртуальної машини, натиснувши кнопку Гаразд.</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsSystem.cpp" line="458"/>
@@ -7295,13 +7302,13 @@ p, li { white-space: pre-wrap; }
<location filename="../src/VBoxVMSettingsSystem.cpp" line="461"/>
<source>&lt;qt&gt;%1&amp;nbsp;CPU&lt;/qt&gt;</source>
<comment>%1 is 1 for now</comment>
- <translation type="unfinished"></translation>
+ <translation>&lt;qt&gt;%1&amp;nbsp;процесор&lt;/qt&gt;</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsSystem.cpp" line="462"/>
<source>&lt;qt&gt;%1&amp;nbsp;CPUs&lt;/qt&gt;</source>
<comment>%1 is 32 for now</comment>
- <translation type="unfinished"></translation>
+ <translation>&lt;qt&gt;%1&amp;nbsp;процесорів&lt;/qt&gt;</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsSystem.ui" line="37"/>
@@ -7391,7 +7398,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsSystem.ui" line="473"/>
<source>Controls the number of virtual CPUs in the virtual machine.</source>
- <translation type="unfinished"></translation>
+ <translation>Контролює числом віртуальних процесорів у віртуальній машині.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsSystem.ui" line="496"/>
@@ -7406,12 +7413,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsSystem.ui" line="520"/>
<source>Acce&amp;leration</source>
- <translation type="unfinished"></translation>
+ <translation>При&amp;скорення</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsSystem.ui" line="526"/>
<source>Hardware Virtualization:</source>
- <translation type="unfinished"></translation>
+ <translation>Віртуалізація пристрою:</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsSystem.ui" line="539"/>
@@ -7426,12 +7433,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsSystem.ui" line="558"/>
<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>Коли це відмічено, віртуальна машина спробує застосувати розширення вкладеного заміщення сторінок Intel VT-x і AMD-V.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsSystem.ui" line="561"/>
<source>Enable Nested Pa&amp;ging</source>
- <translation type="unfinished"></translation>
+ <translation>Увімкнути вкла&amp;дене заміщення сторінок</translation>
</message>
</context>
<context>
@@ -7469,17 +7476,17 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/VBoxVMSettingsUSB.cpp" line="262"/>
<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 з порожніми початковими значеннями полів. Зауважте, що такий фільтр відповідатиме будь-якому з&apos;єднаному пристрою USB.</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsUSB.cpp" line="265"/>
<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, з’єднаного з комп’ютером-вузлом.</translation>
+ <translation>Додає новий фільтр USB з початковими значеннями полів, вибраним для пристрою USB, з&apos;єднаного з головним комп&apos;ютером.</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsUSB.cpp" line="266"/>
<source>Edits the selected USB filter.</source>
- <translation>Відкриває вікно редагування параметрів вибраного фільтра USB.</translation>
+ <translation>Редагує вибраний фільтр USB.</translation>
</message>
<message>
<location filename="../src/VBoxVMSettingsUSB.cpp" line="267"/>
@@ -7505,7 +7512,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsUSB.ui" line="33"/>
<source>When checked, enables the virtual USB controller of this machine.</source>
- <translation>Якщо цей пункт буде позначено, буде увімкнено віртуальний контролер USB цього комп’ютера.</translation>
+ <translation>Якщо це відмічено, буде увімкнено віртуальний контролер USB цьієї машини.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsUSB.ui" line="36"/>
@@ -7515,7 +7522,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsUSB.ui" line="77"/>
<source>When checked, enables the virtual USB EHCI controller of this machine. The USB EHCI controller provides USB 2.0 support.</source>
- <translation>Якщо позначити цей пункт, на цій машині буде увімкнено віртуальний EHCI USB-контролер. За допомогою EHCI USB-контролера забезпечується підтримка USB 2.0.</translation>
+ <translation>Якщо це відмічено, на цій машині буде увімкнено віртуальний контролер USB EHCI. Контролер USB EHCI забезпечує підтримку USB 2.0.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsUSB.ui" line="80"/>
@@ -7530,7 +7537,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsUSB.ui" line="115"/>
<source>Lists all USB filters of this machine. The checkbox to the left defines whether the particular filter is enabled or not. Use the context menu or buttons to the right to add or remove USB filters.</source>
- <translation>Показує список всіх фільтрів USB на цій машині. Пункт, розташований ліворуч визначає, буде увімкнуто пристрій чи ні. Для додавання або вилучення USB-фільтрів скористайтеся контекстним меню або кнопками, розташованими праворуч.</translation>
+ <translation>Показує список всіх фільтрів USB на цій машині. Мітка, розташована ліворуч визначає, чи буде увімкнуто пристрій, чи ні. Для додавання або вилучення фільтрів USB скористайтеся контекстним меню або кнопками, розташованими праворуч.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsUSB.ui" line="122"/>
@@ -7571,32 +7578,32 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="62"/>
<source>&amp;Vendor ID:</source>
- <translation>ID &amp;Продавця:</translation>
+ <translation>ID &amp;продавця:</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="75"/>
<source>Defines the vendor ID filter. The &lt;i&gt;exact match&lt;/i&gt; string format is &lt;tt&gt;XXXX&lt;/tt&gt; where &lt;tt&gt;X&lt;/tt&gt; is a hexadecimal digit. An empty string will match any value.</source>
- <translation>Описує фільтр по ID Продавця. Формат рядка &lt;i&gt;точна відповідність&lt;/i&gt; — &lt;tt&gt;XXXX&lt;/tt&gt;, де &lt;tt&gt;X&lt;/tt&gt; — шістнадцяткова цифра. Порожній рядок відповідає будь-якому значенню.</translation>
+ <translation>Описує фільтр за ID продавця. Формат рядка &lt;i&gt;точна відповідність&lt;/i&gt; — &lt;tt&gt;XXXX&lt;/tt&gt;, де &lt;tt&gt;X&lt;/tt&gt; — шістнадцяткова цифра. Порожній рядок відповідає будь-якому значенню.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="82"/>
<source>&amp;Product ID:</source>
- <translation>ID П&amp;родукту:</translation>
+ <translation>ID п&amp;родукту:</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="95"/>
<source>Defines the product ID filter. The &lt;i&gt;exact match&lt;/i&gt; string format is &lt;tt&gt;XXXX&lt;/tt&gt; where &lt;tt&gt;X&lt;/tt&gt; is a hexadecimal digit. An empty string will match any value.</source>
- <translation>Описує фільтр по ID Продукту. Формат рядка &lt;i&gt;точна відповідність&lt;/i&gt; — &lt;tt&gt;XXXX&lt;/tt&gt;, де &lt;tt&gt;X&lt;/tt&gt; — шістнадцяткова цифра. Порожній рядок відповідає будь-якому значенню.</translation>
+ <translation>Описує фільтр за ID продукту. Формат рядка &lt;i&gt;точна відповідність&lt;/i&gt; — &lt;tt&gt;XXXX&lt;/tt&gt;, де &lt;tt&gt;X&lt;/tt&gt; — шістнадцяткова цифра. Порожній рядок відповідає будь-якому значенню.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="102"/>
<source>&amp;Revision:</source>
- <translation>&amp;Модифікація:</translation>
+ <translation>П&amp;ерегляд:</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="115"/>
<source>Defines the revision number filter. The &lt;i&gt;exact match&lt;/i&gt; string format is &lt;tt&gt;IIFF&lt;/tt&gt; where &lt;tt&gt;I&lt;/tt&gt; is a decimal digit of the integer part and &lt;tt&gt;F&lt;/tt&gt; is a decimal digit of the fractional part. An empty string will match any value.</source>
- <translation>Описує номер модифікації фільтра. Формат рядка &lt;i&gt;точна відповідність&lt;/i&gt; — &lt;tt&gt;IIFF&lt;/tt&gt;, де &lt;tt&gt;I&lt;/tt&gt; — десяткове число цілої частини та &lt;tt&gt;F&lt;/tt&gt; — десяткове число дробової частини. Пустий рядок відповідає будь-якому значенню.</translation>
+ <translation>Описує номер перегляду фільтра. Формат рядка &lt;i&gt;точна відповідність&lt;/i&gt; — &lt;tt&gt;IIFF&lt;/tt&gt;, де &lt;tt&gt;I&lt;/tt&gt; — десяткове число цілої частини та &lt;tt&gt;F&lt;/tt&gt; — десяткове число дробової частини. Пустий рядок відповідає будь-якому значенню.</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="122"/>
@@ -7646,7 +7653,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="221"/>
<source>Defines whether this filter applies to USB devices attached locally to the host computer (&lt;i&gt;No&lt;/i&gt;), to a VRDP client&apos;s computer (&lt;i&gt;Yes&lt;/i&gt;), or both (&lt;i&gt;Any&lt;/i&gt;).</source>
- <translation>Описує, чи цей фільтр застосовується до пристроїв USB локально під&apos;єднаних до головного комп&apos;ютера (&lt;i&gt;Ні&lt;/i&gt;), до комп&apos;ютера клієнта VRDP (&lt;i&gt;Так&lt;/i&gt;), або до (&lt;i&gt;Обох&lt;/i&gt;).</translation>
+ <translation>Описує, чи цей фільтр застосовується до пристроїв USB локально під&apos;єднаних до головного комп&apos;ютера (&lt;i&gt;Ні&lt;/i&gt;), чи до комп&apos;ютера клієнта VRDP (&lt;i&gt;Так&lt;/i&gt;), або до (&lt;i&gt;Обох&lt;/i&gt;).</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="228"/>
@@ -7656,7 +7663,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="247"/>
<source>Defines an action performed by the host computer when a matching device is attached: give it up to the host OS (&lt;i&gt;Ignore&lt;/i&gt;) or grab it for later usage by virtual machines (&lt;i&gt;Hold&lt;/i&gt;).</source>
- <translation>Описує дії, котрі виконуються головним комп&apos;ютером, коли буде з’єднано відповідний пристрій: передати його основній операційній системі (&lt;i&gt;Ігнорувати&lt;/i&gt;) або перехопити його для наступного використання у віртуальних машинах (&lt;i&gt;Захопити&lt;/i&gt;).</translation>
+ <translation>Описує дії, котрі виконуються головним комп&apos;ютером, коли буде з&apos;єднано відповідний пристрій: передати його основній операційній системі (&lt;i&gt;Ігнорувати&lt;/i&gt;) або перехопити його для наступного використання у віртуальних машинах (&lt;i&gt;Захопити&lt;/i&gt;).</translation>
</message>
<message>
<location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="36"/>
@@ -7667,42 +7674,42 @@ p, li { white-space: pre-wrap; }
<context>
<name>VBoxVMSettingsVRDP</name>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="0"/>
<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), дозволяючи віддаленим клієнтам з&apos;єднатися та використовувати віртуальну машину (коли вона запущена) використовуючи стандартного клієнта RDP.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="0"/>
<source>&amp;Enable VRDP Server</source>
<translation type="obsolete">&amp;Ввімкнути сервер VRDP</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="0"/>
<source>Server &amp;Port:</source>
<translation type="obsolete">&amp;Порт сервера:</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="0"/>
<source>Displays the VRDP Server port number. You may specify &lt;tt&gt;0&lt;/tt&gt; (zero) to reset the port to the default value.</source>
<translation type="obsolete">Показує номер порту сервера VRDP. Ви можете вказати &lt;tt&gt;0&lt;/tt&gt; (нуль), щоб скинути порт до типових значень.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="0"/>
<source>Authentication &amp;Method:</source>
<translation type="obsolete">М&amp;етод засвідчення:</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="0"/>
<source>Defines the VRDP authentication method.</source>
<translation type="obsolete">Описує метод засвідчення VRDP.</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="0"/>
<source>Authentication &amp;Timeout:</source>
<translation type="obsolete">&amp;Час очікування засвідчення:</translation>
</message>
<message>
- <location filename="" line="0"/>
+ <location filename="../ui/VBoxVMSettingsUSBFilterDetails.ui" line="0"/>
<source>Specifies the timeout for guest authentication, in milliseconds.</source>
<translation type="obsolete">Показує час очікування засвідчення гостя, в мілісекундах.</translation>
</message>
diff --git a/src/VBox/Frontends/VirtualBox/nls/qt_km_KH.ts b/src/VBox/Frontends/VirtualBox/nls/qt_km_KH.ts
index e4225d962..5b67d69b2 100644
--- a/src/VBox/Frontends/VirtualBox/nls/qt_km_KH.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/qt_km_KH.ts
@@ -1,5285 +1,3634 @@
-<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
-<context>
- <name>AudioOutput</name>
+<TS>
+ <context>
+ <name>PPDOptionsModel</name>
<message>
- <source>&lt;html&gt;The audio playback device &lt;b&gt;%1&lt;/b&gt; does not work.&lt;br/&gt;Falling back to &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</source>
- <translation type="unfinished"></translation>
+ <source>Name</source>
+ <translation>ឈ្មោះ</translation>
</message>
<message>
- <source>&lt;html&gt;Switching to the audio playback device &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;which just became available and has higher preference.&lt;/html&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Revert back to device &apos;%1&apos;</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Phonon::</name>
- <message>
- <source>Notifications</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Music</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Communication</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Games</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Accessibility</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Phonon::Gstreamer::Backend</name>
- <message>
- <source>Warning: You do not seem to have the package gstreamer0.10-plugins-good installed.
- Some video features have been disabled.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Warning: You do not seem to have the base GStreamer plugins installed.
- All audio and video support has been disabled</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Phonon::Gstreamer::MediaObject</name>
- <message>
- <source>Cannot start playback.
-
-Check your Gstreamer installation and make sure you
-have libgstreamer-plugins-base installed.</source>
- <translation type="unfinished"></translation>
- </message>
- <message numerus="yes">
- <source>A required codec is missing. You need to install the following codec(s) to play this content: %0</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- </translation>
- </message>
- <message>
- <source>Could not open media source.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Invalid source type.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Could not locate media source.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Could not open audio device. The device is already in use.</source>
- <translation type="unfinished"></translation>
+ <source>Value</source>
+ <translation>តម្លៃ</translation>
</message>
+ </context>
+ <context>
+ <name>Q3Accel</name>
<message>
- <source>Could not decode media source.</source>
- <translation type="unfinished"></translation>
+ <source>%1, %2 not defined</source>
+ <translation>មិន​បាន​កំណត់ %1, %2</translation>
</message>
-</context>
-<context>
- <name>Phonon::VolumeSlider</name>
<message>
- <source>Volume: %1%</source>
- <translation type="unfinished"></translation>
+ <source>Ambiguous %1 not handled</source>
+ <translation>មិនបានគ្រប់គ្រង %1 ពិតប្រាកដ​ទេ</translation>
</message>
+ </context>
+ <context>
+ <name>Q3DataTable</name>
<message>
- <source>Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1%</source>
- <translation type="unfinished"></translation>
+ <source>True</source>
+ <translation>ពិត</translation>
</message>
-</context>
-<context>
- <name>Q3Accel</name>
<message>
- <source>%1, %2 not defined</source>
- <translation>មិន​បាន​កំណត់ %1, %2</translation>
+ <source>False</source>
+ <translation>មិនពិតប្រាកដ</translation>
</message>
<message>
- <source>Ambiguous %1 not handled</source>
- <translation>មិនបានគ្រប់គ្រង %1 ពិតប្រាកដ​ទេ</translation>
+ <source>Insert</source>
+ <translation>បញ្ចូល</translation>
</message>
-</context>
-<context>
- <name>Q3DataTable</name>
<message>
- <source>True</source>
- <translation>ពិត</translation>
+ <source>Update</source>
+ <translation>ធ្វើ​ឲ្យ​ទាន់សម័យ</translation>
</message>
<message>
- <source>False</source>
- <translation>មិនពិតប្រាកដ</translation>
+ <source>Delete</source>
+ <translation>លុប</translation>
</message>
+ </context>
+ <context>
+ <name>Q3FileDialog</name>
<message>
- <source>Insert</source>
- <translation>បញ្ចូល</translation>
+ <source>Copy or Move a File</source>
+ <translation>ចម្លង​ ឬ​ផ្លាស់ទី​ឯកសារ</translation>
</message>
<message>
- <source>Update</source>
- <translation>ធ្វើ​ឲ្យ​ទាន់សម័យ</translation>
+ <source>Read: %1</source>
+ <translation>អាន ៖ %1</translation>
</message>
<message>
- <source>Delete</source>
- <translation>លុប</translation>
+ <source>Write: %1</source>
+ <translation>សរសេរ ៖ %1</translation>
</message>
-</context>
-<context>
- <name>Q3FileDialog</name>
<message>
- <source>Copy or Move a File</source>
- <translation>ចម្លង​ ឬ​ផ្លាស់ទី​ឯកសារ</translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>Read: %1</source>
- <translation>អាន ៖ %1</translation>
+ <source>All Files (*)</source>
+ <translation>ឯកសារ​ទាំង​អស់ (*)</translation>
</message>
<message>
- <source>Write: %1</source>
- <translation>សរសេរ ៖ %1</translation>
+ <source>Name</source>
+ <translation>ឈ្មោះ</translation>
</message>
<message>
- <source>Cancel</source>
- <translation>បោះបង់</translation>
+ <source>Size</source>
+ <translation>ទំហំ</translation>
</message>
<message>
- <source>All Files (*)</source>
- <translation>ឯកសារ​ទាំង​អស់ (*)</translation>
+ <source>Type</source>
+ <translation>ប្រភេទ</translation>
</message>
<message>
- <source>Name</source>
- <translation>ឈ្មោះ</translation>
+ <source>Date</source>
+ <translation>កាលបរិច្ឆេទ</translation>
</message>
<message>
- <source>Size</source>
- <translation>ទំហំ</translation>
+ <source>Attributes</source>
+ <translation>គុណលក្ខណៈ</translation>
</message>
<message>
- <source>Type</source>
- <translation>ប្រភេទ</translation>
+ <source>&amp;OK</source>
+ <translation>យល់ព្រម</translation>
</message>
<message>
- <source>Date</source>
- <translation>កាលបរិច្ឆេទ</translation>
+ <source>Look &amp;in:</source>
+ <translation>មើល​ក្នុង ៖</translation>
</message>
<message>
- <source>Attributes</source>
- <translation>គុណលក្ខណៈ</translation>
+ <source>File &amp;name:</source>
+ <translation>ឈ្មោះ​ឯកសារ ៖</translation>
</message>
<message>
- <source>&amp;OK</source>
- <translation>យល់ព្រម</translation>
+ <source>File &amp;type:</source>
+ <translation>ប្រភេទ​ឯកសារ ៖</translation>
</message>
<message>
- <source>Look &amp;in:</source>
- <translation>មើល​ក្នុង ៖</translation>
+ <source>Back</source>
+ <translation>ថយក្រោយ</translation>
</message>
<message>
- <source>File &amp;name:</source>
- <translation>ឈ្មោះ​ឯកសារ ៖</translation>
+ <source>One directory up</source>
+ <translation>មួយ​ថត​ឡើង​លើ</translation>
</message>
<message>
- <source>File &amp;type:</source>
- <translation>ប្រភេទ​ឯកសារ ៖</translation>
+ <source>Create New Folder</source>
+ <translation>បង្កើត​ថត​ថ្មី</translation>
</message>
<message>
- <source>Back</source>
- <translation>ថយក្រោយ</translation>
+ <source>List View</source>
+ <translation>ទិដ្ឋភាព​បញ្ជី</translation>
</message>
<message>
- <source>One directory up</source>
- <translation>មួយ​ថត​ឡើង​លើ</translation>
+ <source>Detail View</source>
+ <translation>ទិដ្ឋភាព​លម្អិត</translation>
</message>
<message>
- <source>Create New Folder</source>
- <translation>បង្កើត​ថត​ថ្មី</translation>
+ <source>Preview File Info</source>
+ <translation>ព័ត៌មាន​ឯកសារ​​​មើល​ជា​មុន</translation>
</message>
<message>
- <source>List View</source>
- <translation>ទិដ្ឋភាព​បញ្ជី</translation>
+ <source>Preview File Contents</source>
+ <translation>មាតិកា​ឯកសារ​មើល​ជា​មុន</translation>
</message>
<message>
- <source>Detail View</source>
- <translation>ទិដ្ឋភាព​លម្អិត</translation>
+ <source>Read-write</source>
+ <translation>អាន-សរសេរ</translation>
</message>
<message>
- <source>Preview File Info</source>
- <translation>ព័ត៌មាន​ឯកសារ​​​មើល​ជា​មុន</translation>
+ <source>Read-only</source>
+ <translation>បាន​តែ​អាន</translation>
</message>
<message>
- <source>Preview File Contents</source>
- <translation>មាតិកា​ឯកសារ​មើល​ជា​មុន</translation>
+ <source>Write-only</source>
+ <translation>បាន​តែ​សរសេរ</translation>
</message>
<message>
- <source>Read-write</source>
- <translation>អាន-សរសេរ</translation>
+ <source>Inaccessible</source>
+ <translation>មិនអាច​ចូលដំណើរការ</translation>
</message>
<message>
- <source>Read-only</source>
- <translation>បាន​តែ​អាន</translation>
+ <source>Symlink to File</source>
+ <translation>តំណ​និមិត្តសញ្ញា​ទៅ​កាន់​ឯកសារ</translation>
</message>
<message>
- <source>Write-only</source>
- <translation>បាន​តែ​សរសេរ</translation>
+ <source>Symlink to Directory</source>
+ <translation>តំណ​និមិត្តសញ្ញា​ទៅ​កាន់ថត</translation>
</message>
<message>
- <source>Inaccessible</source>
- <translation>មិនអាច​ចូលដំណើរការ</translation>
+ <source>Symlink to Special</source>
+ <translation>តំណ​និមិត្តសញ្ញា​ទៅ​កាន់​ឯកសារ​ពិសេស</translation>
</message>
<message>
- <source>Symlink to File</source>
- <translation>តំណ​និមិត្តសញ្ញា​ទៅ​កាន់​ឯកសារ</translation>
+ <source>File</source>
+ <translation>ឯកសារ</translation>
</message>
<message>
- <source>Symlink to Directory</source>
- <translation>តំណ​និមិត្តសញ្ញា​ទៅ​កាន់ថត</translation>
+ <source>Dir</source>
+ <translation>ថត</translation>
</message>
<message>
- <source>Symlink to Special</source>
- <translation>តំណ​និមិត្តសញ្ញា​ទៅ​កាន់​ឯកសារ​ពិសេស</translation>
+ <source>Special</source>
+ <translation>ពិសេស</translation>
</message>
<message>
- <source>File</source>
- <translation>ឯកសារ</translation>
+ <source>Open</source>
+ <translation>បើក</translation>
</message>
<message>
- <source>Dir</source>
- <translation>ថត</translation>
+ <source>Save As</source>
+ <translation>រក្សាទុក​ជា</translation>
</message>
<message>
- <source>Special</source>
- <translation>ពិសេស</translation>
+ <source>&amp;Open</source>
+ <translation>បើក</translation>
</message>
<message>
- <source>Open</source>
- <translation>បើក</translation>
+ <source>&amp;Save</source>
+ <translation>រក្សាទុក</translation>
</message>
<message>
- <source>Save As</source>
- <translation>រក្សាទុក​ជា</translation>
+ <source>&amp;Rename</source>
+ <translation>ប្ដូរ​ឈ្មោះ</translation>
</message>
<message>
- <source>&amp;Open</source>
- <translation>បើក</translation>
+ <source>&amp;Delete</source>
+ <translation>លុប</translation>
</message>
<message>
- <source>&amp;Save</source>
- <translation>រក្សាទុក</translation>
+ <source>R&amp;eload</source>
+ <translation>ផ្ទុក​ឡើងវិញ</translation>
</message>
<message>
- <source>&amp;Rename</source>
- <translation>ប្ដូរ​ឈ្មោះ</translation>
+ <source>Sort by &amp;Name</source>
+ <translation>តម្រៀប​តាម​ឈ្មោះ</translation>
</message>
<message>
- <source>&amp;Delete</source>
- <translation>លុប</translation>
+ <source>Sort by &amp;Size</source>
+ <translation>តម្រៀប​តាម​ទំហំ</translation>
</message>
<message>
- <source>R&amp;eload</source>
- <translation>ផ្ទុក​ឡើងវិញ</translation>
+ <source>Sort by &amp;Date</source>
+ <translation>តម្រៀប​តាម​កាលបរិច្ឆេទ</translation>
</message>
<message>
- <source>Sort by &amp;Name</source>
- <translation>តម្រៀប​តាម​ឈ្មោះ</translation>
+ <source>&amp;Unsorted</source>
+ <translation>មិន​បាន​តម្រៀប​ទេ</translation>
</message>
<message>
- <source>Sort by &amp;Size</source>
- <translation>តម្រៀប​តាម​ទំហំ</translation>
+ <source>Sort</source>
+ <translation>តម្រៀប</translation>
</message>
<message>
- <source>Sort by &amp;Date</source>
- <translation>តម្រៀប​តាម​កាលបរិច្ឆេទ</translation>
+ <source>Show &amp;hidden files</source>
+ <translation>បង្ហាញ​ឯកសារ​​ដែល​លាក់</translation>
</message>
<message>
- <source>&amp;Unsorted</source>
- <translation>មិន​បាន​តម្រៀប​ទេ</translation>
+ <source>the file</source>
+ <translation>ឯកសារ</translation>
</message>
<message>
- <source>Sort</source>
- <translation>តម្រៀប</translation>
+ <source>the directory</source>
+ <translation>ថត</translation>
</message>
<message>
- <source>Show &amp;hidden files</source>
- <translation>បង្ហាញ​ឯកសារ​​ដែល​លាក់</translation>
+ <source>the symlink</source>
+ <translation>តំណនិមិត្តសញ្ញា</translation>
</message>
<message>
- <source>the file</source>
- <translation>ឯកសារ</translation>
+ <source>Delete %1</source>
+ <translation>លុប %1</translation>
</message>
<message>
- <source>the directory</source>
- <translation>ថត</translation>
+ <source>&lt;qt>Are you sure you wish to delete %1 &quot;%2&quot;?&lt;/qt></source>
+ <translation>&lt;qt>តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប %1 &quot;%2&quot; មែនឬ ?&lt;/qt></translation>
</message>
<message>
- <source>the symlink</source>
- <translation>តំណនិមិត្តសញ្ញា</translation>
+ <source>&amp;Yes</source>
+ <translation>បាទ/ចាស</translation>
</message>
<message>
- <source>Delete %1</source>
- <translation>លុប %1</translation>
+ <source>&amp;No</source>
+ <translation>ទេ</translation>
</message>
<message>
- <source>&lt;qt&gt;Are you sure you wish to delete %1 &quot;%2&quot;?&lt;/qt&gt;</source>
- <translation>&lt;qt&gt;តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប %1 &quot;%2&quot; មែនឬ ?&lt;/qt&gt;</translation>
+ <source>New Folder 1</source>
+ <translation>ថត​ថ្មី ១</translation>
</message>
<message>
- <source>&amp;Yes</source>
- <translation>បាទ/ចាស</translation>
+ <source>New Folder</source>
+ <translation>ថត​ថ្មី</translation>
</message>
<message>
- <source>&amp;No</source>
- <translation>ទេ</translation>
+ <source>New Folder %1</source>
+ <translation>ថត​ថ្មី %1</translation>
</message>
<message>
- <source>New Folder 1</source>
- <translation>ថត​ថ្មី ១</translation>
+ <source>Find Directory</source>
+ <translation>រក​ថត</translation>
</message>
<message>
- <source>New Folder</source>
- <translation>ថត​ថ្មី</translation>
+ <source>Directories</source>
+ <translation>ថត</translation>
</message>
<message>
- <source>New Folder %1</source>
- <translation>ថត​ថ្មី %1</translation>
+ <source>Directory:</source>
+ <translation>ថត ៖</translation>
</message>
<message>
- <source>Find Directory</source>
- <translation>រក​ថត</translation>
+ <source>Error</source>
+ <translation>កំហុស</translation>
</message>
<message>
- <source>Directories</source>
- <translation>ថត</translation>
+ <source>%1
+File not found.
+Check path and filename.</source>
+ <translation>%1 រក​មិនឃើញ​ទេ ។ សូម​ពិនិត្យ​មើល​ផ្លូវ និង​ឈ្មោះ​ឯកសារ ។</translation>
</message>
<message>
- <source>Directory:</source>
- <translation>ថត ៖</translation>
+ <source>All Files (*.*)</source>
+ <translation>ឯកសារ​ទាំង​អស់ (*.*)</translation>
</message>
<message>
- <source>Error</source>
- <translation>កំហុស</translation>
+ <source>Open </source>
+ <translation>បើក</translation>
</message>
<message>
- <source>%1
-File not found.
-Check path and filename.</source>
- <translation>%1 រក​មិនឃើញ​ទេ ។ សូម​ពិនិត្យ​មើល​ផ្លូវ និង​ឈ្មោះ​ឯកសារ ។</translation>
+ <source>Select a Directory</source>
+ <translation>ជ្រើស​ថត</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>Q3LocalFs</name>
<message>
- <source>Could not read directory
+ <source>Could not read directory
%1</source>
- <translation>មិនអាច​អាន​ថត
+ <translation>មិនអាច​អាន​ថត
%1 បានទេ</translation>
</message>
<message>
- <source>Could not create directory
+ <source>Could not create directory
%1</source>
- <translation>មិនអាច​បង្កើត​ថត
+ <translation>មិនអាច​បង្កើត​ថត
%1 បានទេ</translation>
</message>
<message>
- <source>Could not remove file or directory
+ <source>Could not remove file or directory
%1</source>
- <translation>មិនអាច​យក​ឯកសារ ឬ​ថត​ចេញ​ទេ
+ <translation>មិនអាច​យក​ឯកសារ ឬ​ថត​ចេញ​ទេ
%1</translation>
</message>
<message>
- <source>Could not rename
+ <source>Could not rename
%1
to
%2</source>
- <translation>មិនអាច​ប្ដូរ​ឈ្មោះ
+ <translation>មិនអាច​ប្ដូរ​ឈ្មោះ
%1
ទៅជា
%2 បានទេ</translation>
</message>
<message>
- <source>Could not open
+ <source>Could not open
%1</source>
- <translation>មិនអាច​បើក
+ <translation>មិនអាច​បើក
%1 បានទេ</translation>
</message>
<message>
- <source>Could not write
+ <source>Could not write
%1</source>
- <translation>មិនអាច​សរសេរ​ទៅកាន់
+ <translation>មិនអាច​សរសេរ​ទៅកាន់
%1 បានទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>Q3MainWindow</name>
<message>
- <source>Line up</source>
- <translation>រៀប​ជា​ជួរ</translation>
+ <source>Line up</source>
+ <translation>រៀប​ជា​ជួរ</translation>
</message>
<message>
- <source>Customize...</source>
- <translation>ប្ដូរ​តាមបំណង...</translation>
+ <source>Customize...</source>
+ <translation>ប្ដូរ​តាមបំណង...</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>Q3NetworkProtocol</name>
<message>
- <source>Operation stopped by the user</source>
- <translation>ប្រតិបត្តិការ​បាន​បញ្ឈប់​ដោយ​អ្នកប្រើ</translation>
+ <source>Operation stopped by the user</source>
+ <translation>ប្រតិបត្តិការ​បាន​បញ្ឈប់​ដោយ​អ្នកប្រើ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>Q3ProgressDialog</name>
<message>
- <source>Cancel</source>
- <translation>បោះបង់</translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>Q3TabDialog</name>
<message>
- <source>OK</source>
- <translation>យល់ព្រម</translation>
+ <source>OK</source>
+ <translation>យល់ព្រម</translation>
</message>
<message>
- <source>Apply</source>
- <translation>អនុវត្ត</translation>
+ <source>Apply</source>
+ <translation>អនុវត្ត</translation>
</message>
<message>
- <source>Help</source>
- <translation>ជំនួយ</translation>
+ <source>Help</source>
+ <translation>ជំនួយ</translation>
</message>
<message>
- <source>Defaults</source>
- <translation>លំនាំដើម</translation>
+ <source>Defaults</source>
+ <translation>លំនាំដើម</translation>
</message>
<message>
- <source>Cancel</source>
- <translation>បោះបង់</translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>Q3TextEdit</name>
<message>
- <source>&amp;Undo</source>
- <translation>មិនធ្វើ​វិញ</translation>
+ <source>&amp;Undo</source>
+ <translation>មិនធ្វើ​វិញ</translation>
</message>
<message>
- <source>&amp;Redo</source>
- <translation>ធ្វើ​វិញ</translation>
+ <source>&amp;Redo</source>
+ <translation>ធ្វើ​វិញ</translation>
</message>
<message>
- <source>Cu&amp;t</source>
- <translation>កាត់</translation>
+ <source>Cu&amp;t</source>
+ <translation>កាត់</translation>
</message>
<message>
- <source>&amp;Copy</source>
- <translation>ចម្លង</translation>
+ <source>&amp;Copy</source>
+ <translation>ចម្លង</translation>
</message>
<message>
- <source>&amp;Paste</source>
- <translation>បិទភ្ជាប់</translation>
+ <source>&amp;Paste</source>
+ <translation>បិទភ្ជាប់</translation>
</message>
<message>
- <source>Clear</source>
- <translation>ជម្រះ</translation>
+ <source>Clear</source>
+ <translation>ជម្រះ</translation>
</message>
<message>
- <source>Select All</source>
- <translation>ជ្រើស​ទាំង​អស់</translation>
+ <source>Select All</source>
+ <translation>ជ្រើស​ទាំង​អស់</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>Q3TitleBar</name>
<message>
- <source>System</source>
- <translation>ប្រព័ន្ធ</translation>
+ <source>System</source>
+ <translation>ប្រព័ន្ធ</translation>
</message>
<message>
- <source>Restore up</source>
- <translation>ស្ដារឡើង​វិញ​ទៅ​លើ</translation>
+ <source>Restore up</source>
+ <translation>ស្ដារឡើង​វិញ​ទៅ​លើ</translation>
</message>
<message>
- <source>Minimize</source>
- <translation>បង្រួម​អប្បបរមា</translation>
+ <source>Minimize</source>
+ <translation>បង្រួម​អប្បបរមា</translation>
</message>
<message>
- <source>Restore down</source>
- <translation>ស្ដារ​ឡើង​វិញ​ចុះក្រោម</translation>
+ <source>Restore down</source>
+ <translation>ស្ដារ​ឡើង​វិញ​ចុះក្រោម</translation>
</message>
<message>
- <source>Maximize</source>
- <translation>ពង្រីក​អតិបរមា</translation>
+ <source>Maximize</source>
+ <translation>ពង្រីក​អតិបរមា</translation>
</message>
<message>
- <source>Close</source>
- <translation>បិទ</translation>
+ <source>Close</source>
+ <translation>បិទ</translation>
</message>
<message>
- <source>Contains commands to manipulate the window</source>
- <translation>មាន​ពាក្យ​បញ្ជា​ដើម្បី​គណនា​បង្អួច</translation>
+ <source>Contains commands to manipulate the window</source>
+ <translation>មាន​ពាក្យ​បញ្ជា​ដើម្បី​គណនា​បង្អួច</translation>
</message>
<message>
- <source>Puts a minimized back to normal</source>
- <translation>ដាក់​ការ​​​ថយក្រោយ​ដែល​បានបង្រួម​អប្បបរមា​ទៅ​ធម្មតា​វិញ</translation>
+ <source>Puts a minimized back to normal</source>
+ <translation>ដាក់​ការ​​​ថយក្រោយ​ដែល​បានបង្រួម​អប្បបរមា​ទៅ​ធម្មតា​វិញ</translation>
</message>
<message>
- <source>Moves the window out of the way</source>
- <translation>ផ្លាស់ទី​បង្អួច​ចេញ​ពី​ផ្លូវ</translation>
+ <source>Moves the window out of the way</source>
+ <translation>ផ្លាស់ទី​បង្អួច​ចេញ​ពី​ផ្លូវ</translation>
</message>
<message>
- <source>Puts a maximized window back to normal</source>
- <translation>ដាក់​បង្អួច​ថយក្រោយ​ដែល​បានបង្រួម​អប្បបរមា​ទៅ​ធម្មតា​វិញ</translation>
+ <source>Puts a maximized window back to normal</source>
+ <translation>ដាក់​បង្អួច​ថយក្រោយ​ដែល​បានបង្រួម​អប្បបរមា​ទៅ​ធម្មតា​វិញ</translation>
</message>
<message>
- <source>Makes the window full screen</source>
- <translation>ធ្វើ​ឲ្យ​បង្អួច​ពេញអេក្រង់</translation>
+ <source>Makes the window full screen</source>
+ <translation>ធ្វើ​ឲ្យ​បង្អួច​ពេញអេក្រង់</translation>
</message>
<message>
- <source>Closes the window</source>
- <translation>បិទ​បង្អួច</translation>
+ <source>Closes the window</source>
+ <translation>បិទ​បង្អួច</translation>
</message>
<message>
- <source>Displays the name of the window and contains controls to manipulate it</source>
- <translation>បង្ហាញ​ឈ្មោះបង្អួច​ និង​មាន​វត្ថុ​បញ្ជា​ដើម្បី​គណនា​វា​ផងដែរ</translation>
+ <source>Displays the name of the window and contains controls to manipulate it</source>
+ <translation>បង្ហាញ​ឈ្មោះបង្អួច​ និង​មាន​វត្ថុ​បញ្ជា​ដើម្បី​គណនា​វា​ផងដែរ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>Q3ToolBar</name>
<message>
- <source>More...</source>
- <translation>ច្រើនទៀត...</translation>
+ <source>More...</source>
+ <translation>ច្រើនទៀត...</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>Q3UrlOperator</name>
<message>
- <source>The protocol `%1&apos; is not supported</source>
- <translation>ពិធីការ `%1&apos; មិន​ត្រូវ​បានគាំទ្រ​ទេ</translation>
+ <source>The protocol `%1' is not supported</source>
+ <translation>ពិធីការ `%1' មិន​ត្រូវ​បានគាំទ្រ​ទេ</translation>
</message>
<message>
- <source>The protocol `%1&apos; does not support listing directories</source>
- <translation>ពិធីការ `%1&apos; មិនគាំទ្រ​ថត​ដែល​រាយ​ទេ</translation>
+ <source>The protocol `%1' does not support listing directories</source>
+ <translation>ពិធីការ `%1' មិនគាំទ្រ​ថត​ដែល​រាយ​ទេ</translation>
</message>
<message>
- <source>The protocol `%1&apos; does not support creating new directories</source>
- <translation>ពិធីការ `%1&apos; មិនគាំទ្រ​ការ​បង្កើត​ថត​ថ្មីទេ</translation>
+ <source>The protocol `%1' does not support creating new directories</source>
+ <translation>ពិធីការ `%1' មិនគាំទ្រ​ការ​បង្កើត​ថត​ថ្មីទេ</translation>
</message>
<message>
- <source>The protocol `%1&apos; does not support removing files or directories</source>
- <translation>ពិធីការ `%1&apos; មិន​គាំទ្រ​ការ​យកឯកសារ ឬ​ថត​ចេញ​ទេ</translation>
+ <source>The protocol `%1' does not support removing files or directories</source>
+ <translation>ពិធីការ `%1' មិន​គាំទ្រ​ការ​យកឯកសារ ឬ​ថត​ចេញ​ទេ</translation>
</message>
<message>
- <source>The protocol `%1&apos; does not support renaming files or directories</source>
- <translation>ពិធីការ `%1&apos; មិន​គាំទ្រ​ការ​ប្ដូរ​ឈ្មោះ​ឯកសារ ឬ​ថត​ទេ</translation>
+ <source>The protocol `%1' does not support renaming files or directories</source>
+ <translation>ពិធីការ `%1' មិន​គាំទ្រ​ការ​ប្ដូរ​ឈ្មោះ​ឯកសារ ឬ​ថត​ទេ</translation>
</message>
<message>
- <source>The protocol `%1&apos; does not support getting files</source>
- <translation>ពិធីការ `%1&apos; មិនគាំទ្រ​នឹង​ការ​ទទួល​ឯកសារ​ទេ</translation>
+ <source>The protocol `%1' does not support getting files</source>
+ <translation>ពិធីការ `%1' មិនគាំទ្រ​នឹង​ការ​ទទួល​ឯកសារ​ទេ</translation>
</message>
<message>
- <source>The protocol `%1&apos; does not support putting files</source>
- <translation>ពិធីការ `%1&apos; មិន​គាំទ្រ​នឹង​ការ​ដាក់​ឯកសារ​ទេ</translation>
+ <source>The protocol `%1' does not support putting files</source>
+ <translation>ពិធីការ `%1' មិន​គាំទ្រ​នឹង​ការ​ដាក់​ឯកសារ​ទេ</translation>
</message>
<message>
- <source>The protocol `%1&apos; does not support copying or moving files or directories</source>
- <translation>ពិធីការ `%1&apos; មិន​គាំត្រ​នឹង​ការ​ចម្លង ឬ​ផ្លាស់ទី​ឯកសារ ឬ​ថត​ទេ</translation>
+ <source>The protocol `%1' does not support copying or moving files or directories</source>
+ <translation>ពិធីការ `%1' មិន​គាំត្រ​នឹង​ការ​ចម្លង ឬ​ផ្លាស់ទី​ឯកសារ ឬ​ថត​ទេ</translation>
</message>
<message>
- <source>(unknown)</source>
- <translation>(មិនស្គាល់)</translation>
+ <source>(unknown)</source>
+ <translation>(មិនស្គាល់)</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>Q3Wizard</name>
<message>
- <source>&amp;Cancel</source>
- <translation>បោះបង់</translation>
+ <source>&amp;Cancel</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>&lt; &amp;Back</source>
- <translation>&lt; ថយក្រោយ</translation>
+ <source>&lt; &amp;Back</source>
+ <translation>&lt; ថយក្រោយ</translation>
</message>
<message>
- <source>&amp;Next &gt;</source>
- <translation>បន្ទាប់ &gt;</translation>
+ <source>&amp;Next ></source>
+ <translation>បន្ទាប់ ></translation>
</message>
<message>
- <source>&amp;Finish</source>
- <translation>បញ្ចប់</translation>
+ <source>&amp;Finish</source>
+ <translation>បញ្ចប់</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>ជំនួយ</translation>
+ <source>&amp;Help</source>
+ <translation>ជំនួយ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QAbstractSocket</name>
<message>
- <source>Host not found</source>
- <translation>រក​មិនឃើញ​ម៉ាស៊ីន</translation>
+ <source>Host not found</source>
+ <translation>រក​មិនឃើញ​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Connection refused</source>
- <translation>បានបដិសេធ​ការ​តភ្ជាប់</translation>
+ <source>Connection refused</source>
+ <translation>បានបដិសេធ​ការ​តភ្ជាប់</translation>
</message>
<message>
- <source>Socket operation timed out</source>
- <translation>អស់ពេល​ប្រតិបត្តិ​រន្ធ</translation>
+ <source>Socket operation timed out</source>
+ <translation>អស់ពេល​ប្រតិបត្តិ​រន្ធ</translation>
</message>
<message>
- <source>Socket is not connected</source>
- <translation>រន្ធ​មិន​ត្រូវ​បាន​តភ្ជាប់​ទេ</translation>
+ <source>Socket is not connected</source>
+ <translation>រន្ធ​មិន​ត្រូវ​បាន​តភ្ជាប់​ទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QAbstractSpinBox</name>
<message>
- <source>&amp;Step up</source>
- <translation>រៀបចំ</translation>
+ <source>&amp;Step up</source>
+ <translation>រៀបចំ</translation>
</message>
<message>
- <source>Step &amp;down</source>
- <translation>ជំហាន​ចុះក្រោម</translation>
+ <source>Step &amp;down</source>
+ <translation>ជំហាន​ចុះក្រោម</translation>
</message>
<message>
- <source>&amp;Select All</source>
- <translation>ជ្រើស​ទាំង​អស់</translation>
+ <source>&amp;Select All</source>
+ <translation>ជ្រើស​ទាំង​អស់</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QApplication</name>
<message>
- <source>Activate</source>
- <translation>ធ្វើ​ឲ្យ​សកម្ម</translation>
+ <source>Activate</source>
+ <translation>ធ្វើ​ឲ្យ​សកម្ម</translation>
</message>
<message>
- <source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
- <translation>&apos;%1&apos; អាច​ប្រតិបត្តិ​បាន ទាមទារ Qt %2 រកឃើញ Qt %3 ។</translation>
+ <source>Executable '%1' requires Qt %2, found Qt %3.</source>
+ <translation>'%1' អាច​ប្រតិបត្តិ​បាន ទាមទារ Qt %2 រកឃើញ Qt %3 ។</translation>
</message>
<message>
- <source>Incompatible Qt Library Error</source>
- <translation>កំហុស​បណ្ណាល័យ Qt ដែល​មិន​ឆបគ្នា</translation>
+ <source>Incompatible Qt Library Error</source>
+ <translation>កំហុស​បណ្ណាល័យ Qt ដែល​មិន​ឆបគ្នា</translation>
</message>
<message>
- <source>QT_LAYOUT_DIRECTION</source>
- <comment>Translate this string to the string &apos;LTR&apos; in left-to-right languages or to &apos;RTL&apos; in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.</comment>
- <translation>QT_LAYOUT_DIRECTION</translation>
+ <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>QT_LAYOUT_DIRECTION</translation>
</message>
<message>
- <source>Activates the program&apos;s main window</source>
- <translation>ធ្វើ​ឲ្យ​បង្អួច​មេ​របស់​កម្មវិធី​សកម្ម</translation>
- </message>
-</context>
-<context>
- <name>QCheckBox</name>
- <message>
- <source>Uncheck</source>
- <translation>មិន​ធូសធីគ</translation>
+ <source>Activates the program's main window</source>
+ <translation>ធ្វើ​ឲ្យ​បង្អួច​មេ​របស់​កម្មវិធី​សកម្ម</translation>
</message>
+ </context>
+ <context>
+ <name>QAxSelect</name>
<message>
- <source>Check</source>
- <translation>ពិនិត្យ​មើល</translation>
+ <source>Select ActiveX Control</source>
+ <translation>ជ្រើស​វត្ថុ​បញ្ជា ActiveX</translation>
</message>
<message>
- <source>Toggle</source>
- <translation>បិទ/បើក</translation>
+ <source>OK</source>
+ <translation>យល់ព្រម</translation>
</message>
-</context>
-<context>
- <name>QColorDialog</name>
<message>
- <source>Hu&amp;e:</source>
- <translation>ភាព​លាំៗ​នៃ​ពណ៌ ៖</translation>
+ <source>&amp;Cancel</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>&amp;Sat:</source>
- <translation>តិត្ថិភាព ៖</translation>
+ <source>COM &amp;Object:</source>
+ <translation>វត្ថុ COM ៖</translation>
</message>
+ </context>
+ <context>
+ <name>QCheckBox</name>
<message>
- <source>&amp;Val:</source>
- <translation>តម្លៃ ៖</translation>
+ <source>Uncheck</source>
+ <translation>មិន​ធូសធីគ</translation>
</message>
<message>
- <source>&amp;Red:</source>
- <translation>ក្រហម ៖</translation>
+ <source>Check</source>
+ <translation>ពិនិត្យ​មើល</translation>
</message>
<message>
- <source>&amp;Green:</source>
- <translation>បៃតង ៖</translation>
+ <source>Toggle</source>
+ <translation>បិទ/បើក</translation>
</message>
+ </context>
+ <context>
+ <name>QColorDialog</name>
<message>
- <source>Bl&amp;ue:</source>
- <translation>ខៀវ ៖</translation>
+ <source>Hu&amp;e:</source>
+ <translation>ភាព​លាំៗ​នៃ​ពណ៌ ៖</translation>
</message>
<message>
- <source>A&amp;lpha channel:</source>
- <translation>ឆានែល​អាល់ហ្វា ៖</translation>
+ <source>&amp;Sat:</source>
+ <translation>តិត្ថិភាព ៖</translation>
</message>
<message>
- <source>&amp;Basic colors</source>
- <translation>ពណ៌​មូលដ្ឋាន</translation>
+ <source>&amp;Val:</source>
+ <translation>តម្លៃ ៖</translation>
</message>
<message>
- <source>&amp;Custom colors</source>
- <translation>ពណ៌​ផ្ទាល់ខ្លួន</translation>
+ <source>&amp;Red:</source>
+ <translation>ក្រហម ៖</translation>
</message>
<message>
- <source>&amp;Add to Custom Colors</source>
- <translation>បន្ថែម​ពណ៌​ផ្ទាល់ខ្លួន</translation>
+ <source>&amp;Green:</source>
+ <translation>បៃតង ៖</translation>
</message>
<message>
- <source>Select color</source>
- <translation>ជ្រើស​ពណ៌</translation>
+ <source>Bl&amp;ue:</source>
+ <translation>ខៀវ ៖</translation>
</message>
-</context>
-<context>
- <name>QComboBox</name>
<message>
- <source>Open</source>
- <translation>បើក</translation>
+ <source>A&amp;lpha channel:</source>
+ <translation>ឆានែល​អាល់ហ្វា ៖</translation>
</message>
<message>
- <source>False</source>
- <translation>ខុស</translation>
+ <source>&amp;Basic colors</source>
+ <translation>ពណ៌​មូលដ្ឋាន</translation>
</message>
<message>
- <source>True</source>
- <translation>ត្រូវ</translation>
+ <source>&amp;Custom colors</source>
+ <translation>ពណ៌​ផ្ទាល់ខ្លួន</translation>
</message>
<message>
- <source>Close</source>
- <translation>បិទ</translation>
+ <source>&amp;Define Custom Colors >></source>
+ <translation>កំណត់​ពណ៌​ផ្ទាល់ខ្លួន >></translation>
</message>
-</context>
-<context>
- <name>QCoreApplication</name>
<message>
- <source>%1: permission denied</source>
- <comment>QSystemSemaphore</comment>
- <translation type="unfinished"></translation>
+ <source>OK</source>
+ <translation>យល់ព្រម</translation>
</message>
<message>
- <source>%1: already exists</source>
- <comment>QSystemSemaphore</comment>
- <translation type="unfinished"></translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>%1: doesn&apos;t exists</source>
- <comment>QSystemSemaphore</comment>
- <translation type="unfinished"></translation>
+ <source>&amp;Add to Custom Colors</source>
+ <translation>បន្ថែម​ពណ៌​ផ្ទាល់ខ្លួន</translation>
</message>
<message>
- <source>%1: out of resources</source>
- <comment>QSystemSemaphore</comment>
- <translation type="unfinished"></translation>
+ <source>Select color</source>
+ <translation>ជ្រើស​ពណ៌</translation>
</message>
+ </context>
+ <context>
+ <name>QComboBox</name>
<message>
- <source>%1: unknown error %2</source>
- <comment>QSystemSemaphore</comment>
- <translation type="unfinished"></translation>
+ <source>Open</source>
+ <translation>បើក</translation>
</message>
<message>
- <source>%1: key is empty</source>
- <comment>QSystemSemaphore</comment>
- <translation type="unfinished"></translation>
+ <source>False</source>
+ <translation>ខុស</translation>
</message>
<message>
- <source>%1: unable to make key</source>
- <comment>QSystemSemaphore</comment>
- <translation type="unfinished"></translation>
+ <source>True</source>
+ <translation>ត្រូវ</translation>
</message>
<message>
- <source>%1: ftok failed</source>
- <comment>QSystemSemaphore</comment>
- <translation type="unfinished"></translation>
+ <source>Close</source>
+ <translation>បិទ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QDB2Driver</name>
<message>
- <source>Unable to connect</source>
- <translation>មិនអាច​តភ្ជាប់​បានទេ</translation>
+ <source>Unable to connect</source>
+ <translation>មិនអាច​តភ្ជាប់​បានទេ</translation>
</message>
<message>
- <source>Unable to commit transaction</source>
- <translation>មិនអាច​តភ្ជាប់​ទៅកាក់​ការ​បញ្ចូន​ដំណើរការ​ផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Unable to commit transaction</source>
+ <translation>មិនអាច​តភ្ជាប់​ទៅកាក់​ការ​បញ្ចូន​ដំណើរការ​ផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
<message>
- <source>Unable to rollback transaction</source>
- <translation>មិនអាច​ជម្រះ​ដំណើរការ​ផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Unable to rollback transaction</source>
+ <translation>មិនអាច​ជម្រះ​ដំណើរការ​ផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
<message>
- <source>Unable to set autocommit</source>
- <translation>មិនអាច​កំណត់​ការ​បញ្ជូន​ដោយ​ស្វ័យ​ប្រវត្តិ​បានទេ</translation>
+ <source>Unable to set autocommit</source>
+ <translation>មិនអាច​កំណត់​ការ​បញ្ជូន​ដោយ​ស្វ័យ​ប្រវត្តិ​បានទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QDB2Result</name>
<message>
- <source>Unable to execute statement</source>
- <translation>មិនអាច​ប្រតិបត្តិ​​សេចក្ដីថ្លែងការ​បានទេ</translation>
+ <source>Unable to execute statement</source>
+ <translation>មិនអាច​ប្រតិបត្តិ​​សេចក្ដីថ្លែងការ​បានទេ</translation>
</message>
<message>
- <source>Unable to prepare statement</source>
- <translation>មិនអាច​រៀបចំ​សេចក្ដី​ថ្លែងការ​បានទេ</translation>
+ <source>Unable to prepare statement</source>
+ <translation>មិនអាច​រៀបចំ​សេចក្ដី​ថ្លែងការ​បានទេ</translation>
</message>
<message>
- <source>Unable to bind variable</source>
- <translation>មិនអាច​ចង​អថេរ​បានទេ</translation>
+ <source>Unable to bind variable</source>
+ <translation>មិនអាច​ចង​អថេរ​បានទេ</translation>
</message>
<message>
- <source>Unable to fetch record %1</source>
- <translation>មិនអាច​ទៅ​យក​កំណត់​ត្រា %1 បានទេ</translation>
+ <source>Unable to fetch record %1</source>
+ <translation>មិនអាច​ទៅ​យក​កំណត់​ត្រា %1 បានទេ</translation>
</message>
<message>
- <source>Unable to fetch next</source>
- <translation>មិនអាច​ទៅយក​អ្វី​នៅ​បន្ទាប់​បានទេ</translation>
+ <source>Unable to fetch next</source>
+ <translation>មិនអាច​ទៅយក​អ្វី​នៅ​បន្ទាប់​បានទេ</translation>
</message>
<message>
- <source>Unable to fetch first</source>
- <translation>មិនអាច​ទៅ​យក​អ្វី​ដំបូង​បានទេ</translation>
+ <source>Unable to fetch first</source>
+ <translation>មិនអាច​ទៅ​យក​អ្វី​ដំបូង​បានទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QDateTimeEdit</name>
<message>
- <source>AM</source>
- <translation>AM</translation>
+ <source>AM</source>
+ <translation>AM</translation>
</message>
<message>
- <source>am</source>
- <translation>am</translation>
+ <source>am</source>
+ <translation>am</translation>
</message>
<message>
- <source>PM</source>
- <translation>PM</translation>
+ <source>PM</source>
+ <translation>PM</translation>
</message>
<message>
- <source>pm</source>
- <translation>pm</translation>
+ <source>pm</source>
+ <translation>pm</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QDial</name>
<message>
- <source>QDial</source>
- <translation>QDial</translation>
+ <source>QDial</source>
+ <translation>QDial</translation>
</message>
<message>
- <source>SpeedoMeter</source>
- <translation>SpeedoMeter</translation>
+ <source>SpeedoMeter</source>
+ <translation>SpeedoMeter</translation>
</message>
<message>
- <source>SliderHandle</source>
- <translation>SliderHandle</translation>
+ <source>SliderHandle</source>
+ <translation>SliderHandle</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QDialog</name>
<message>
- <source>What&apos;s This?</source>
- <translation>តើ​នេះជា​អ្វី ?</translation>
- </message>
- <message>
- <source>Done</source>
- <translation type="unfinished">ធ្វើ​រួច</translation>
+ <source>What's This?</source>
+ <translation>តើ​នេះជា​អ្វី ?</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QDialogButtonBox</name>
<message>
- <source>OK</source>
- <translation>យល់ព្រម</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>រក្សាទុក</translation>
+ <source>OK</source>
+ <translation>យល់ព្រម</translation>
</message>
<message>
- <source>Open</source>
- <translation>បើក</translation>
+ <source>Save</source>
+ <translation>រក្សាទុក</translation>
</message>
<message>
- <source>Cancel</source>
- <translation>បោះបង់</translation>
+ <source>Open</source>
+ <translation>បើក</translation>
</message>
<message>
- <source>Close</source>
- <translation>បិទ</translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>Apply</source>
- <translation>អនុវត្ត</translation>
+ <source>Close</source>
+ <translation>បិទ</translation>
</message>
<message>
- <source>Reset</source>
- <translation>កំណត់​ឡើង​វិញ</translation>
+ <source>Apply</source>
+ <translation>អនុវត្ត</translation>
</message>
<message>
- <source>Help</source>
- <translation>ជំនួយ</translation>
+ <source>Reset</source>
+ <translation>កំណត់​ឡើង​វិញ</translation>
</message>
<message>
- <source>Don&apos;t Save</source>
- <translation>កុំ​រក្សាទុក</translation>
+ <source>Help</source>
+ <translation>ជំនួយ</translation>
</message>
<message>
- <source>Discard</source>
- <translation>បោះបង់</translation>
+ <source>Don't Save</source>
+ <translation>កុំ​រក្សាទុក</translation>
</message>
<message>
- <source>&amp;Yes</source>
- <translation>បាទ/ចាស</translation>
+ <source>Discard</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>Yes to &amp;All</source>
- <translation>បាទ/ចាស​ទៅ​ទាំង​អស់</translation>
+ <source>&amp;Yes</source>
+ <translation>បាទ/ចាស</translation>
</message>
<message>
- <source>&amp;No</source>
- <translation>ទេ</translation>
+ <source>Yes to &amp;All</source>
+ <translation>បាទ/ចាស​ទៅ​ទាំង​អស់</translation>
</message>
<message>
- <source>N&amp;o to All</source>
- <translation>ទេ​ទៅ​ទាំង​អស់</translation>
+ <source>&amp;No</source>
+ <translation>ទេ</translation>
</message>
<message>
- <source>Save All</source>
- <translation>រក្សាទុកទាំង​អស់</translation>
+ <source>N&amp;o to All</source>
+ <translation>ទេ​ទៅ​ទាំង​អស់</translation>
</message>
<message>
- <source>Abort</source>
- <translation>បោះបង់</translation>
+ <source>Save All</source>
+ <translation>រក្សាទុកទាំង​អស់</translation>
</message>
<message>
- <source>Retry</source>
- <translation>ព្យាយាម​ម្ដង​ទៀត</translation>
+ <source>Abort</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>Ignore</source>
- <translation>មិនអើពើ</translation>
+ <source>Retry</source>
+ <translation>ព្យាយាម​ម្ដង​ទៀត</translation>
</message>
<message>
- <source>Restore Defaults</source>
- <translation>ស្ដារ​លំនាំដើម​ឡើងវិញ</translation>
+ <source>Ignore</source>
+ <translation>មិនអើពើ</translation>
</message>
<message>
- <source>Close without Saving</source>
- <translation>បិទ​ដោយ​មិន​រក្សាទុក</translation>
+ <source>Restore Defaults</source>
+ <translation>ស្ដារ​លំនាំដើម​ឡើងវិញ</translation>
</message>
<message>
- <source>&amp;OK</source>
- <translation type="unfinished">យល់ព្រម</translation>
+ <source>Close without Saving</source>
+ <translation>បិទ​ដោយ​មិន​រក្សាទុក</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QDirModel</name>
<message>
- <source>Name</source>
- <translation>ឈ្មោះ</translation>
+ <source>Name</source>
+ <translation>ឈ្មោះ</translation>
</message>
<message>
- <source>Size</source>
- <translation>ទំហំ</translation>
+ <source>Size</source>
+ <translation>ទំហំ</translation>
</message>
<message>
- <source>Kind</source>
- <comment>Match OS X Finder</comment>
- <translation>ប្រភេទ</translation>
+ <source>Kind</source>
+ <comment>Match OS X Finder</comment>
+ <translation>ប្រភេទ</translation>
</message>
<message>
- <source>Type</source>
- <comment>All other platforms</comment>
- <translation>ប្រភេទ</translation>
+ <source>Type</source>
+ <comment>All other platforms</comment>
+ <translation>ប្រភេទ</translation>
</message>
<message>
- <source>Date Modified</source>
- <translation>កាលបរិច្ឆេទ​កែប្រែ</translation>
+ <source>Date Modified</source>
+ <translation>កាលបរិច្ឆេទ​កែប្រែ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QDockWidget</name>
<message>
- <source>Close</source>
- <translation>បិទ</translation>
+ <source>Close</source>
+ <translation>បិទ</translation>
</message>
<message>
- <source>Dock</source>
- <translation>ចូលផែ</translation>
+ <source>Dock</source>
+ <translation>ចូលផែ</translation>
</message>
<message>
- <source>Float</source>
- <translation>អណ្ដែត</translation>
+ <source>Float</source>
+ <translation>អណ្ដែត</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QDoubleSpinBox</name>
<message>
- <source>More</source>
- <translation>ច្រើន​ជាង</translation>
+ <source>More</source>
+ <translation>ច្រើន​ជាង</translation>
</message>
<message>
- <source>Less</source>
- <translation>តិច​ជាង</translation>
+ <source>Less</source>
+ <translation>តិច​ជាង</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QErrorMessage</name>
<message>
- <source>Debug Message:</source>
- <translation>សារ​បំបាត់​កំហុស ៖</translation>
+ <source>Debug Message:</source>
+ <translation>សារ​បំបាត់​កំហុស ៖</translation>
</message>
<message>
- <source>Warning:</source>
- <translation>ការ​ព្រមាន ៖</translation>
+ <source>Warning:</source>
+ <translation>ការ​ព្រមាន ៖</translation>
</message>
<message>
- <source>Fatal Error:</source>
- <translation>កំហុស​ធ្ងន់ធ្ងរ ៖</translation>
+ <source>Fatal Error:</source>
+ <translation>កំហុស​ធ្ងន់ធ្ងរ ៖</translation>
</message>
<message>
- <source>&amp;Show this message again</source>
- <translation>បង្ហសារ​សារ​នេះ​ម្ដង​ទៀត</translation>
+ <source>&amp;Show this message again</source>
+ <translation>បង្ហសារ​សារ​នេះ​ម្ដង​ទៀត</translation>
</message>
<message>
- <source>&amp;OK</source>
- <translation>យល់ព្រម</translation>
+ <source>&amp;OK</source>
+ <translation>យល់ព្រម</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QFileDialog</name>
<message>
- <source>All Files (*)</source>
- <translation>ឯកសារទាំង​អស់ (*)</translation>
+ <source>All Files (*)</source>
+ <translation>ឯកសារទាំង​អស់ (*)</translation>
</message>
<message>
- <source>Directories</source>
- <translation>ថត</translation>
+ <source>Directories</source>
+ <translation>ថត</translation>
</message>
<message>
- <source>&amp;Open</source>
- <translation>បើក</translation>
+ <source>&amp;Open</source>
+ <translation>បើក</translation>
</message>
<message>
- <source>&amp;Save</source>
- <translation>រក្សាទុក</translation>
+ <source>&amp;Save</source>
+ <translation>រក្សាទុក</translation>
</message>
<message>
- <source>Open</source>
- <translation>បើក</translation>
+ <source>Open</source>
+ <translation>បើក</translation>
</message>
<message>
- <source>%1 already exists.
+ <source>%1 already exists.
Do you want to replace it?</source>
- <translation>មាន %1 រួច​ហើយ ។
+ <translation>មាន %1 រួច​ហើយ ។
តើ​អ្នក​ចង់​ជំនួស​វា​ទេ ?</translation>
</message>
<message>
- <source>%1
+ <source>%1
File not found.
Please verify the correct file name was given.</source>
- <translation>រក​មិនឃើញ​ឯកសារ %1
+ <translation>រក​មិនឃើញ​ឯកសារ %1
ទេ ។សូម​ផ្ទៀងផ្ទាត់​ឈ្មោះ​ឯកសារ​ដែល​ត្រឹមត្រូវ​ត្រូ​វបាន​ផ្ដល់ ។</translation>
</message>
<message>
- <source>My Computer</source>
- <translation>កុំព្យូទ័រ​របស់​ខ្ញុំ</translation>
+ <source>My Computer</source>
+ <translation>កុំព្យូទ័រ​របស់​ខ្ញុំ</translation>
</message>
<message>
- <source>&amp;Rename</source>
- <translation>ប្ដូរ​ឈ្មោះ</translation>
+ <source>&amp;Rename</source>
+ <translation>ប្ដូរ​ឈ្មោះ</translation>
</message>
<message>
- <source>&amp;Delete</source>
- <translation>លុប</translation>
+ <source>&amp;Delete</source>
+ <translation>លុប</translation>
</message>
<message>
- <source>Show &amp;hidden files</source>
- <translation>បង្ហាញ​ឯកសារ​ដែល​លាក់</translation>
+ <source>Show &amp;hidden files</source>
+ <translation>បង្ហាញ​ឯកសារ​ដែល​លាក់</translation>
</message>
<message>
- <source>Back</source>
- <translation>ថយក្រោយ</translation>
+ <source>Back</source>
+ <translation>ថយក្រោយ</translation>
</message>
<message>
- <source>Parent Directory</source>
- <translation>ថត​មេ</translation>
+ <source>Parent Directory</source>
+ <translation>ថត​មេ</translation>
</message>
<message>
- <source>List View</source>
- <translation>ទិដ្ឋភាព​បញ្ជី</translation>
+ <source>List View</source>
+ <translation>ទិដ្ឋភាព​បញ្ជី</translation>
</message>
<message>
- <source>Detail View</source>
- <translation>ទិដ្ឋភាព​លម្អិត</translation>
+ <source>Detail View</source>
+ <translation>ទិដ្ឋភាព​លម្អិត</translation>
</message>
<message>
- <source>Files of type:</source>
- <translation>ឯកសារ​ប្រភេទ ៖</translation>
+ <source>Files of type:</source>
+ <translation>ឯកសារ​ប្រភេទ ៖</translation>
</message>
<message>
- <source>Directory:</source>
- <translation>ថត ៖</translation>
+ <source>Directory:</source>
+ <translation>ថត ៖</translation>
</message>
<message>
- <source>%1
+ <source>
+File not found.
+Please verify the correct file name was given</source>
+ <translation>
+រក​មិនឃើញឯកសារ ។
+សូម​ផ្ទៀងផ្ទាត់​ឈ្មោះ​ឯកសារ​ដែល​ត្រឹមត្រូវ​ដែល​ត្រូវ​ផ្ដល់</translation>
+ </message>
+ <message>
+ <source>%1
Directory not found.
Please verify the correct directory name was given.</source>
- <translation>រក​មិនឃើញ​ថត %1 ទេ ។
+ <translation>រក​មិនឃើញ​ថត %1 ទេ ។
សូម​ផ្ទៀងផ្ទាត់​ឈ្មោះ​ថត​ដែល​​ត្រឹមត្រូវ​ដែលបានផ្ដល់ ។</translation>
</message>
<message>
- <source>&apos;%1&apos; is write protected.
+ <source>'%1' is write protected.
Do you want to delete it anyway?</source>
- <translation>&apos;%1&apos; &apos;%1&apos; ការ​ពារ​មិន​ឲ្យ​សរសេរ​ចូល ។
+ <translation>'%1' '%1' ការ​ពារ​មិន​ឲ្យ​សរសេរ​ចូល ។
បើ​អញ្ចឹង តើ​អ្នក​ចង់​លុប​វា​ដែរ​ឬទេ ?</translation>
</message>
<message>
- <source>Are sure you want to delete &apos;%1&apos;?</source>
- <translation>តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប &apos;%1&apos;?</translation>
- </message>
- <message>
- <source>Could not delete directory.</source>
- <translation>មិនអាច​លុប​ថត​បានទេ ។</translation>
- </message>
- <message>
- <source>Save As</source>
- <translation>រក្សាទុក​ជា</translation>
- </message>
- <message>
- <source>Drive</source>
- <translation>ចូល</translation>
- </message>
- <message>
- <source>File</source>
- <translation>ឯកសារ</translation>
- </message>
- <message>
- <source>Unknown</source>
- <translation>មិនស្គាល់</translation>
- </message>
- <message>
- <source>Find Directory</source>
- <translation>រក​ថត</translation>
- </message>
- <message>
- <source>Show </source>
- <translation>បង្ហាញ </translation>
- </message>
- <message>
- <source>Forward</source>
- <translation>បញ្ជូន​បន្ត</translation>
- </message>
- <message>
- <source>New Folder</source>
- <translation>ថត​ថ្មី</translation>
- </message>
- <message>
- <source>&amp;New Folder</source>
- <translation>ថត​ថ្មី</translation>
- </message>
- <message>
- <source>&amp;Choose</source>
- <translation>ជ្រើស</translation>
- </message>
- <message>
- <source>Remove</source>
- <translation>យកចេញ</translation>
- </message>
- <message>
- <source>File &amp;name:</source>
- <translation>ឈ្មោះ​ឯកសារ ៖</translation>
- </message>
- <message>
- <source>Look in:</source>
- <translation>រក​​ក្នុង ៖</translation>
- </message>
- <message>
- <source>Create New Folder</source>
- <translation>បង្កើត​ថត​ថ្មី</translation>
- </message>
-</context>
-<context>
- <name>QFileSystemModel</name>
- <message>
- <source>Invalid filename</source>
- <translation>ឈ្មោះ​ឯកសារ​មិន​ត្រឹមត្រូវ</translation>
- </message>
- <message>
- <source>&lt;b&gt;The name &quot;%1&quot; can not be used.&lt;/b&gt;&lt;p&gt;Try using another name, with fewer characters or no punctuations marks.</source>
- <translation>&lt;b&gt;ឈ្មោះ &quot;%1&quot; មិនអាច​ត្រូវ​បាន​ប្រើ​ទេ ។&lt;/b&gt;&lt;p&gt;ព្យាយាម​ប្រើ​ឈ្មោះ​ផ្សេង ដែលមាន​តួអក្សរ​ពីរ​បី ឬ​គ្មាន​សញ្ញា​វណ្ណយុទ្ធ ។</translation>
- </message>
- <message>
- <source>Name</source>
- <translation>ឈ្មោះ</translation>
- </message>
- <message>
- <source>Size</source>
- <translation>ទំហំ</translation>
- </message>
- <message>
- <source>Kind</source>
- <comment>Match OS X Finder</comment>
- <translation>ប្រភេទ</translation>
- </message>
- <message>
- <source>Type</source>
- <comment>All other platforms</comment>
- <translation>ប្រភេទ</translation>
- </message>
- <message>
- <source>Date Modified</source>
- <translation>កាលបរិច្ឆេទ​បានកែប្រែ</translation>
- </message>
- <message>
- <source>My Computer</source>
- <translation>កុំព្យូទ័រ​របស់​ខ្ញុំ</translation>
+ <source>Are sure you want to delete '%1'?</source>
+ <translation>តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប '%1'?</translation>
</message>
<message>
- <source>Computer</source>
- <translation>កុំព្យូទ័រ</translation>
+ <source>Could not delete directory.</source>
+ <translation>មិនអាច​លុប​ថត​បានទេ ។</translation>
</message>
<message>
- <source>%1 TB</source>
- <translation>%1 តេរ៉ាបៃ</translation>
+ <source>All Files (*.*)</source>
+ <translation>ឯកសារ​ទាំង​អស់ (*.*)</translation>
</message>
<message>
- <source>%1 GB</source>
- <translation>%1 ជីកាបៃ</translation>
+ <source>Save As</source>
+ <translation>រក្សាទុក​ជា</translation>
</message>
<message>
- <source>%1 MB</source>
- <translation>%1 មេកាបៃ</translation>
+ <source>Drive</source>
+ <translation>ចូល</translation>
</message>
<message>
- <source>%1 KB</source>
- <translation>%1 គីឡូបៃ</translation>
+ <source>File</source>
+ <translation>ឯកសារ</translation>
</message>
<message>
- <source>%1 bytes</source>
- <translation>%1 បៃ</translation>
+ <source>Unknown</source>
+ <translation>មិនស្គាល់</translation>
</message>
-</context>
-<context>
- <name>QFontDatabase</name>
<message>
- <source>Normal</source>
- <translation type="unfinished"></translation>
+ <source>Find Directory</source>
+ <translation>រក​ថត</translation>
</message>
<message>
- <source>Bold</source>
- <translation type="unfinished"></translation>
+ <source>Show </source>
+ <translation>បង្ហាញ </translation>
</message>
<message>
- <source>Demi Bold</source>
- <translation type="unfinished"></translation>
+ <source>Forward</source>
+ <translation>បញ្ជូន​បន្ត</translation>
</message>
<message>
- <source>Black</source>
- <translation type="unfinished"></translation>
+ <source>New Folder</source>
+ <translation>ថត​ថ្មី</translation>
</message>
<message>
- <source>Demi</source>
- <translation type="unfinished"></translation>
+ <source>&amp;New Folder</source>
+ <translation>ថត​ថ្មី</translation>
</message>
<message>
- <source>Light</source>
- <translation type="unfinished"></translation>
+ <source>&amp;Choose</source>
+ <translation>ជ្រើស</translation>
</message>
<message>
- <source>Italic</source>
- <translation type="unfinished"></translation>
+ <source>Remove</source>
+ <translation>យកចេញ</translation>
</message>
<message>
- <source>Oblique</source>
- <translation type="unfinished"></translation>
+ <source>File &amp;name:</source>
+ <translation>ឈ្មោះ​ឯកសារ ៖</translation>
</message>
<message>
- <source>Any</source>
- <translation type="unfinished"></translation>
+ <source>Look in:</source>
+ <translation>រក​​ក្នុង ៖</translation>
</message>
<message>
- <source>Latin</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Greek</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Cyrillic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Armenian</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Hebrew</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Arabic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Syriac</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Thaana</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Devanagari</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Bengali</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Gurmukhi</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Gujarati</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Oriya</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Tamil</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Telugu</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Kannada</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Malayalam</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Sinhala</source>
- <translation type="unfinished"></translation>
+ <source>Create New Folder</source>
+ <translation>បង្កើត​ថត​ថ្មី</translation>
</message>
+ </context>
+ <context>
+ <name>QFileSystemModel</name>
<message>
- <source>Thai</source>
- <translation type="unfinished"></translation>
+ <source>Invalid filename</source>
+ <translation>ឈ្មោះ​ឯកសារ​មិន​ត្រឹមត្រូវ</translation>
</message>
<message>
- <source>Lao</source>
- <translation type="unfinished"></translation>
+ <source>&lt;b>The name &quot;%1&quot; can not be used.&lt;/b>&lt;p>Try using another name, with fewer characters or no punctuations marks.</source>
+ <translation>&lt;b>ឈ្មោះ &quot;%1&quot; មិនអាច​ត្រូវ​បាន​ប្រើ​ទេ ។&lt;/b>&lt;p>ព្យាយាម​ប្រើ​ឈ្មោះ​ផ្សេង ដែលមាន​តួអក្សរ​ពីរ​បី ឬ​គ្មាន​សញ្ញា​វណ្ណយុទ្ធ ។</translation>
</message>
<message>
- <source>Tibetan</source>
- <translation type="unfinished"></translation>
+ <source>Name</source>
+ <translation>ឈ្មោះ</translation>
</message>
<message>
- <source>Myanmar</source>
- <translation type="unfinished"></translation>
+ <source>Size</source>
+ <translation>ទំហំ</translation>
</message>
<message>
- <source>Georgian</source>
- <translation type="unfinished"></translation>
+ <source>Kind</source>
+ <comment>Match OS X Finder</comment>
+ <translation>ប្រភេទ</translation>
</message>
<message>
- <source>Khmer</source>
- <translation type="unfinished"></translation>
+ <source>Type</source>
+ <comment>All other platforms</comment>
+ <translation>ប្រភេទ</translation>
</message>
<message>
- <source>Simplified Chinese</source>
- <translation type="unfinished"></translation>
+ <source>Date Modified</source>
+ <translation>កាលបរិច្ឆេទ​បានកែប្រែ</translation>
</message>
<message>
- <source>Traditional Chinese</source>
- <translation type="unfinished"></translation>
+ <source>My Computer</source>
+ <translation>កុំព្យូទ័រ​របស់​ខ្ញុំ</translation>
</message>
<message>
- <source>Japanese</source>
- <translation type="unfinished"></translation>
+ <source>Computer</source>
+ <translation>កុំព្យូទ័រ</translation>
</message>
<message>
- <source>Korean</source>
- <translation type="unfinished"></translation>
+ <source>%1 TB</source>
+ <translation>%1 តេរ៉ាបៃ</translation>
</message>
<message>
- <source>Vietnamese</source>
- <translation type="unfinished"></translation>
+ <source>%1 GB</source>
+ <translation>%1 ជីកាបៃ</translation>
</message>
<message>
- <source>Symbol</source>
- <translation type="unfinished"></translation>
+ <source>%1 MB</source>
+ <translation>%1 មេកាបៃ</translation>
</message>
<message>
- <source>Ogham</source>
- <translation type="unfinished"></translation>
+ <source>%1 KB</source>
+ <translation>%1 គីឡូបៃ</translation>
</message>
<message>
- <source>Runic</source>
- <translation type="unfinished"></translation>
+ <source>%1 bytes</source>
+ <translation>%1 បៃ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QFontDialog</name>
<message>
- <source>&amp;Font</source>
- <translation>ពុម្ពអក្សរ</translation>
+ <source>&amp;Font</source>
+ <translation>ពុម្ពអក្សរ</translation>
</message>
<message>
- <source>Font st&amp;yle</source>
- <translation>រចនាប័ទ្ម​ពុម្ពអក្សរ</translation>
+ <source>Font st&amp;yle</source>
+ <translation>រចនាប័ទ្ម​ពុម្ពអក្សរ</translation>
</message>
<message>
- <source>&amp;Size</source>
- <translation>ទំហំ</translation>
+ <source>&amp;Size</source>
+ <translation>ទំហំ</translation>
</message>
<message>
- <source>Effects</source>
- <translation>បែបផែន</translation>
+ <source>Effects</source>
+ <translation>បែបផែន</translation>
</message>
<message>
- <source>Stri&amp;keout</source>
- <translation>លុបចោល</translation>
+ <source>Stri&amp;keout</source>
+ <translation>លុបចោល</translation>
</message>
<message>
- <source>&amp;Underline</source>
- <translation>គូស​បន្ទាត់​ពី​ក្រោម</translation>
+ <source>&amp;Underline</source>
+ <translation>គូស​បន្ទាត់​ពី​ក្រោម</translation>
</message>
<message>
- <source>Sample</source>
- <translation>គំរូ</translation>
+ <source>Sample</source>
+ <translation>គំរូ</translation>
</message>
<message>
- <source>Wr&amp;iting System</source>
- <translation>ប្រព័ន្ធ​សរសេរ</translation>
+ <source>Wr&amp;iting System</source>
+ <translation>ប្រព័ន្ធ​សរសេរ</translation>
</message>
<message>
- <source>Select Font</source>
- <translation>ជ្រើស​ពុម្ពអក្សរ</translation>
+ <source>Select Font</source>
+ <translation>ជ្រើស​ពុម្ពអក្សរ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QFtp</name>
<message>
- <source>Not connected</source>
- <translation>មិនបាន​តភ្ជាប់​ទេ</translation>
+ <source>Not connected</source>
+ <translation>មិនបាន​តភ្ជាប់​ទេ</translation>
</message>
<message>
- <source>Host %1 not found</source>
- <translation>រក​មិនឃើញ​ម៉ាស៊ីន %1 ទេ</translation>
+ <source>Host %1 not found</source>
+ <translation>រក​មិនឃើញ​ម៉ាស៊ីន %1 ទេ</translation>
</message>
<message>
- <source>Connection refused to host %1</source>
- <translation>ការ​តភ្ជាប់​បានបដិសេធ​ទៅ​ម៉ាស៊ីន %1</translation>
+ <source>Connection refused to host %1</source>
+ <translation>ការ​តភ្ជាប់​បានបដិសេធ​ទៅ​ម៉ាស៊ីន %1</translation>
</message>
<message>
- <source>Connected to host %1</source>
- <translation>បាន​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន %1</translation>
+ <source>Connected to host %1</source>
+ <translation>បាន​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន %1</translation>
</message>
<message>
- <source>Connection refused for data connection</source>
- <translation>ការ​តភ្ជាប់​បាន​បដិសេធ​សម្រាប់​ការ​តភ្ជាប់​ទិន្នន័យ</translation>
+ <source>Connection refused for data connection</source>
+ <translation>ការ​តភ្ជាប់​បាន​បដិសេធ​សម្រាប់​ការ​តភ្ជាប់​ទិន្នន័យ</translation>
</message>
<message>
- <source>Unknown error</source>
- <translation>មិនស្គាល់​កំហុស</translation>
+ <source>Unknown error</source>
+ <translation>មិនស្គាល់​កំហុស</translation>
</message>
<message>
- <source>Connecting to host failed:
+ <source>Connecting to host failed:
%1</source>
- <translation>បានបរាជ័យ​ក្នុងការ​តភ្ជាប់​ទៅ​កាន់ ៖
+ <translation>បានបរាជ័យ​ក្នុងការ​តភ្ជាប់​ទៅ​កាន់ ៖
%1</translation>
</message>
<message>
- <source>Login failed:
+ <source>Login failed:
%1</source>
- <translation>បានបរាជ័យ​ក្នុងកា​រ ៖
+ <translation>បានបរាជ័យ​ក្នុងកា​រ ៖
%1</translation>
</message>
<message>
- <source>Listing directory failed:
+ <source>Listing directory failed:
%1</source>
- <translation>បាន​បរាជ័យ​ក្នុង​រក​ថត ៖
+ <translation>បាន​បរាជ័យ​ក្នុង​រក​ថត ៖
%1</translation>
</message>
<message>
- <source>Changing directory failed:
+ <source>Changing directory failed:
%1</source>
- <translation>បានបរាជ័យ​ក្នុងកា​រផ្លាស់ប្ដូរ​ថត ៖
+ <translation>បានបរាជ័យ​ក្នុងកា​រផ្លាស់ប្ដូរ​ថត ៖
%1</translation>
</message>
<message>
- <source>Downloading file failed:
+ <source>Downloading file failed:
%1</source>
- <translation>បានបរាជ័យ​ក្នុងកា​រទាញ​យក​ឯកសារ ៖
+ <translation>បានបរាជ័យ​ក្នុងកា​រទាញ​យក​ឯកសារ ៖
%1</translation>
</message>
<message>
- <source>Uploading file failed:
+ <source>Uploading file failed:
%1</source>
- <translation>បានបរាជ័យ​ក្នុងការ​ផ្ទុក​ឯកសារ​ឡើង ៖
+ <translation>បានបរាជ័យ​ក្នុងការ​ផ្ទុក​ឯកសារ​ឡើង ៖
%1</translation>
</message>
<message>
- <source>Removing file failed:
+ <source>Removing file failed:
%1</source>
- <translation>បានបរាជ័យ​ក្នុងការ​យក​ឯកសារ​ចេញ ៖
+ <translation>បានបរាជ័យ​ក្នុងការ​យក​ឯកសារ​ចេញ ៖
%1</translation>
</message>
<message>
- <source>Creating directory failed:
+ <source>Creating directory failed:
%1</source>
- <translation>បានបរាជ័យ​ក្នុងការ​បង្កើត​ថត ៖
+ <translation>បានបរាជ័យ​ក្នុងការ​បង្កើត​ថត ៖
%1</translation>
</message>
<message>
- <source>Removing directory failed:
+ <source>Removing directory failed:
%1</source>
- <translation>បានបរាជ័យ​ក្នុងការ​យក​​ថត​ចេញ ៖
+ <translation>បានបរាជ័យ​ក្នុងការ​យក​​ថត​ចេញ ៖
%1</translation>
</message>
<message>
- <source>Connection closed</source>
- <translation>បានបិទ​ការ​តភ្ជាប់</translation>
+ <source>Connection closed</source>
+ <translation>បានបិទ​ការ​តភ្ជាប់</translation>
</message>
<message>
- <source>Host %1 found</source>
- <translation>រក​ឃើញ​ម៉ាស៊ីន %1</translation>
+ <source>Host %1 found</source>
+ <translation>រក​ឃើញ​ម៉ាស៊ីន %1</translation>
</message>
<message>
- <source>Connection to %1 closed</source>
- <translation>បាន​បិទ​ការ​តភ្ជាប់​ទៅ​កាន់ %1</translation>
+ <source>Connection to %1 closed</source>
+ <translation>បាន​បិទ​ការ​តភ្ជាប់​ទៅ​កាន់ %1</translation>
</message>
<message>
- <source>Host found</source>
- <translation>រក​ឃើញ​ម៉ាស៊ីន</translation>
+ <source>Host found</source>
+ <translation>រក​ឃើញ​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Connected to host</source>
- <translation>បានតភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន</translation>
+ <source>Connected to host</source>
+ <translation>បានតភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QHostInfo</name>
<message>
- <source>Unknown error</source>
- <translation>មិន​ស្គាល់កំហុស</translation>
+ <source>Unknown error</source>
+ <translation>មិន​ស្គាល់កំហុស</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QHostInfoAgent</name>
<message>
- <source>Host not found</source>
- <translation>រក​មិនឃើញ​កំហុស</translation>
+ <source>Host not found</source>
+ <translation>រក​មិនឃើញ​កំហុស</translation>
</message>
<message>
- <source>Unknown address type</source>
- <translation>មិនស្គាល់​ប្រភេទ​អាសយដ្ឋាន</translation>
+ <source>Unknown address type</source>
+ <translation>មិនស្គាល់​ប្រភេទ​អាសយដ្ឋាន</translation>
</message>
<message>
- <source>Unknown error</source>
- <translation>មិន​ស្គាល់​កំហុស</translation>
+ <source>Unknown error</source>
+ <translation>មិន​ស្គាល់​កំហុស</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QHttp</name>
<message>
- <source>Unknown error</source>
- <translation>មិនស្គាល់​កំហុស</translation>
- </message>
- <message>
- <source>Request aborted</source>
- <translation>បាន​បោះបង់​សំណើ</translation>
- </message>
- <message>
- <source>No server set to connect to</source>
- <translation>គ្មានម៉ាស៊ីន​បម្រើ​បានកំណត់​ដើម្បី​តភ្ជាប់​ទៅ</translation>
+ <source>Unknown error</source>
+ <translation>មិនស្គាល់​កំហុស</translation>
</message>
<message>
- <source>Wrong content length</source>
- <translation>ប្រវែង​មាតិកា​មិន​ត្រឹមត្រូវ</translation>
+ <source>Request aborted</source>
+ <translation>បាន​បោះបង់​សំណើ</translation>
</message>
<message>
- <source>Server closed connection unexpectedly</source>
- <translation>ម៉ាស៊ីនបម្រើ​បានបិទ​ការ​តភ្ជាប់​ដោយ​មិន​រំពឹង​ទុក</translation>
+ <source>No server set to connect to</source>
+ <translation>គ្មានម៉ាស៊ីន​បម្រើ​បានកំណត់​ដើម្បី​តភ្ជាប់​ទៅ</translation>
</message>
<message>
- <source>Connection refused</source>
- <translation>បានបដិសេធ​ការ​តភ្ជាប់</translation>
+ <source>Wrong content length</source>
+ <translation>ប្រវែង​មាតិកា​មិន​ត្រឹមត្រូវ</translation>
</message>
<message>
- <source>Host %1 not found</source>
- <translation>រក​មិនឃើញ​ម៉ាស៊ីន %1</translation>
+ <source>Server closed connection unexpectedly</source>
+ <translation>ម៉ាស៊ីនបម្រើ​បានបិទ​ការ​តភ្ជាប់​ដោយ​មិន​រំពឹង​ទុក</translation>
</message>
<message>
- <source>HTTP request failed</source>
- <translation>បាន​បរាជ័យ​ក្នុងការ​ស្នើ HTTP</translation>
+ <source>Connection refused</source>
+ <translation>បានបដិសេធ​ការ​តភ្ជាប់</translation>
</message>
<message>
- <source>Invalid HTTP response header</source>
- <translation>បឋមកថាការ​ឆ្លើយតប​របស់ HTTP</translation>
+ <source>Host %1 not found</source>
+ <translation>រក​មិនឃើញ​ម៉ាស៊ីន %1</translation>
</message>
<message>
- <source>Invalid HTTP chunked body</source>
- <translation>តួ HTTP មិន​ត្រឹមត្រូវ</translation>
+ <source>HTTP request failed</source>
+ <translation>បាន​បរាជ័យ​ក្នុងការ​ស្នើ HTTP</translation>
</message>
<message>
- <source>Host %1 found</source>
- <translation>រក​ឃើញ​ម៉ាស៊ីន %1</translation>
+ <source>Invalid HTTP response header</source>
+ <translation>បឋមកថាការ​ឆ្លើយតប​របស់ HTTP</translation>
</message>
<message>
- <source>Connected to host %1</source>
- <translation>បានតភ្ជាប់​ទៅកាន់​ម៉ាស៊ីន %1</translation>
+ <source>Invalid HTTP chunked body</source>
+ <translation>តួ HTTP មិន​ត្រឹមត្រូវ</translation>
</message>
<message>
- <source>Connection to %1 closed</source>
- <translation>បានបិទ​ការ​តភ្ជាប់​ទៅកាន់ %1</translation>
+ <source>Host %1 found</source>
+ <translation>រក​ឃើញ​ម៉ាស៊ីន %1</translation>
</message>
<message>
- <source>Host found</source>
- <translation>រក​ឃើញ​ម៉ាស៊ីន</translation>
+ <source>Connected to host %1</source>
+ <translation>បានតភ្ជាប់​ទៅកាន់​ម៉ាស៊ីន %1</translation>
</message>
<message>
- <source>Connected to host</source>
- <translation>បានតភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន</translation>
+ <source>Connection to %1 closed</source>
+ <translation>បានបិទ​ការ​តភ្ជាប់​ទៅកាន់ %1</translation>
</message>
<message>
- <source>Connection closed</source>
- <translation>បានបិទ​ការ​តភ្ជាប់</translation>
+ <source>Host found</source>
+ <translation>រក​ឃើញ​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Proxy authentication required</source>
- <translation>ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់​ប្រូកស៊ី</translation>
+ <source>Connected to host</source>
+ <translation>បានតភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន</translation>
</message>
<message>
- <source>Authentication required</source>
- <translation>ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ</translation>
+ <source>Connection closed</source>
+ <translation>បានបិទ​ការ​តភ្ជាប់</translation>
</message>
<message>
- <source>HTTPS connection requested but SSL support not compiled in</source>
- <translation type="unfinished"></translation>
+ <source>Proxy authentication required</source>
+ <translation>ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់​ប្រូកស៊ី</translation>
</message>
<message>
- <source>Connection refused (or timed out)</source>
- <translation type="unfinished"></translation>
+ <source>Authentication required</source>
+ <translation>ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ</translation>
</message>
- <message>
- <source>Proxy requires authentication</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Host requires authentication</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Data corrupted</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Unknown protocol specified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>SSL handshake failed</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>QHttpSocketEngine</name>
<message>
- <source>Authentication required</source>
- <translation>ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ</translation>
+ <source>Authentication required</source>
+ <translation>ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QIBaseDriver</name>
<message>
- <source>Error opening database</source>
- <translation>កំហុស​ក្នុងការ​បើក​មូលដ្ឋាន​ទិន្នន័យ</translation>
+ <source>Error opening database</source>
+ <translation>កំហុស​ក្នុងការ​បើក​មូលដ្ឋាន​ទិន្នន័យ</translation>
</message>
<message>
- <source>Could not start transaction</source>
- <translation>មិនអាច​ចាប់ផ្ដើម​ដំណើរការ​ផ្លាស់ប្ដូរ</translation>
+ <source>Could not start transaction</source>
+ <translation>មិនអាច​ចាប់ផ្ដើម​ដំណើរការ​ផ្លាស់ប្ដូរ</translation>
</message>
<message>
- <source>Unable to commit transaction</source>
- <translation>មិន​អាច​បញ្ជូនដំណើរការ​ផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Unable to commit transaction</source>
+ <translation>មិន​អាច​បញ្ជូនដំណើរការ​ផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
<message>
- <source>Unable to rollback transaction</source>
- <translation>មិនអាច​ជម្រះ​ដំណើរការ​ផ្លាស់ប្ដូរ</translation>
+ <source>Unable to rollback transaction</source>
+ <translation>មិនអាច​ជម្រះ​ដំណើរការ​ផ្លាស់ប្ដូរ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QIBaseResult</name>
<message>
- <source>Unable to create BLOB</source>
- <translation>មិនអាច​បង្កើត​ប្លុក​បានទេ</translation>
+ <source>Unable to create BLOB</source>
+ <translation>មិនអាច​បង្កើត​ប្លុក​បានទេ</translation>
</message>
<message>
- <source>Unable to write BLOB</source>
- <translation>មិនអាច​សរសេរ​ប្លុក​បានទេ</translation>
+ <source>Unable to write BLOB</source>
+ <translation>មិនអាច​សរសេរ​ប្លុក​បានទេ</translation>
</message>
<message>
- <source>Unable to open BLOB</source>
- <translation>មិនអាច​បើក​ប្លុក​បានទេ</translation>
+ <source>Unable to open BLOB</source>
+ <translation>មិនអាច​បើក​ប្លុក​បានទេ</translation>
</message>
<message>
- <source>Unable to read BLOB</source>
- <translation>មិនអាច​អាន​ប្លុក​បានទេ</translation>
+ <source>Unable to read BLOB</source>
+ <translation>មិនអាច​អាន​ប្លុក​បានទេ</translation>
</message>
<message>
- <source>Could not find array</source>
- <translation>មិនអាច​រក​អារ៉េ​ឃើញទេ</translation>
+ <source>Could not find array</source>
+ <translation>មិនអាច​រក​អារ៉េ​ឃើញទេ</translation>
</message>
<message>
- <source>Could not get array data</source>
- <translation>មិនអាច​យក​ទិន្នន័យ​អារ៉េ​បានទេ</translation>
+ <source>Could not get array data</source>
+ <translation>មិនអាច​យក​ទិន្នន័យ​អារ៉េ​បានទេ</translation>
</message>
<message>
- <source>Could not get query info</source>
- <translation>មិនអាច​យក​ព័ត៌មាន​សំណួរ​បានទេ</translation>
+ <source>Could not get query info</source>
+ <translation>មិនអាច​យក​ព័ត៌មាន​សំណួរ​បានទេ</translation>
</message>
<message>
- <source>Could not start transaction</source>
- <translation>មិន​អាច​ចាប់ផ្ដើម​ដំណើរការ​ផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Could not start transaction</source>
+ <translation>មិន​អាច​ចាប់ផ្ដើម​ដំណើរការ​ផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
<message>
- <source>Unable to commit transaction</source>
- <translation>មិនអាច​បញ្ជូន​ដំណើរការ​ផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Unable to commit transaction</source>
+ <translation>មិនអាច​បញ្ជូន​ដំណើរការ​ផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
<message>
- <source>Could not allocate statement</source>
- <translation>មិនអាច​​បម្រុង​ទុក​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
+ <source>Could not allocate statement</source>
+ <translation>មិនអាច​​បម្រុង​ទុក​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
</message>
<message>
- <source>Could not prepare statement</source>
- <translation>មិន​អាច​រៀបចំ​សេចក្ដី​ថ្លែងការណ៍</translation>
+ <source>Could not prepare statement</source>
+ <translation>មិន​អាច​រៀបចំ​សេចក្ដី​ថ្លែងការណ៍</translation>
</message>
<message>
- <source>Could not describe input statement</source>
- <translation>មិនអាច​ពិពណ៌នា​សេចក្ដី​ថ្លែងការណ៍​បញ្ចូល</translation>
+ <source>Could not describe input statement</source>
+ <translation>មិនអាច​ពិពណ៌នា​សេចក្ដី​ថ្លែងការណ៍​បញ្ចូល</translation>
</message>
<message>
- <source>Could not describe statement</source>
- <translation>មិនអាច​ពិពណ៌នា​សេចក្ដីថ្លែងការណ៍​បានទេ</translation>
+ <source>Could not describe statement</source>
+ <translation>មិនអាច​ពិពណ៌នា​សេចក្ដីថ្លែងការណ៍​បានទេ</translation>
</message>
<message>
- <source>Unable to close statement</source>
- <translation>មិនអាច​បិទ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
+ <source>Unable to close statement</source>
+ <translation>មិនអាច​បិទ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
</message>
<message>
- <source>Unable to execute query</source>
- <translation>មិនអាច​ប្រតិបត្តិ​សំណួរ​បានទេ</translation>
+ <source>Unable to execute query</source>
+ <translation>មិនអាច​ប្រតិបត្តិ​សំណួរ​បានទេ</translation>
</message>
<message>
- <source>Could not fetch next item</source>
- <translation>មិន​អាច​ទៅយក​ធាតុ​បន្ទាប់​បានទេ</translation>
+ <source>Could not fetch next item</source>
+ <translation>មិន​អាច​ទៅយក​ធាតុ​បន្ទាប់​បានទេ</translation>
</message>
<message>
- <source>Could not get statement info</source>
- <translation>មិន​អាច​យក​ព័ត៌មាន​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
+ <source>Could not get statement info</source>
+ <translation>មិន​អាច​យក​ព័ត៌មាន​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QIODevice</name>
<message>
- <source>Permission denied</source>
- <translation>គ្មាន​សិទ្ធិ</translation>
+ <source>Permission denied</source>
+ <translation>គ្មាន​សិទ្ធិ</translation>
</message>
<message>
- <source>Too many open files</source>
- <translation>មាន​ឯកសារ​បើក​ច្រើនពេក</translation>
+ <source>Too many open files</source>
+ <translation>មាន​ឯកសារ​បើក​ច្រើនពេក</translation>
</message>
<message>
- <source>No such file or directory</source>
- <translation>គ្មាន​ឯកសារ ឬ​ថត​បែប​នេះ​ទេ</translation>
+ <source>No such file or directory</source>
+ <translation>គ្មាន​ឯកសារ ឬ​ថត​បែប​នេះ​ទេ</translation>
</message>
<message>
- <source>No space left on device</source>
- <translation>គ្មាន​ទំហំ​នៅសល់​​នៅ​ក្នុង​ឧបករណ៍​នេះទេ</translation>
+ <source>No space left on device</source>
+ <translation>គ្មាន​ទំហំ​នៅសល់​​នៅ​ក្នុង​ឧបករណ៍​នេះទេ</translation>
</message>
<message>
- <source>Unknown error</source>
- <translation>មិនស្គាល់​កំហុស</translation>
+ <source>Unknown error</source>
+ <translation>មិនស្គាល់​កំហុស</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QInputContext</name>
<message>
- <source>XIM</source>
- <translation>XIM</translation>
+ <source>XIM</source>
+ <translation>XIM</translation>
</message>
<message>
- <source>XIM input method</source>
- <translation>វិធីសាស្ត្រ​បញ្ចូល XIM</translation>
+ <source>XIM input method</source>
+ <translation>វិធីសាស្ត្រ​បញ្ចូល XIM</translation>
</message>
<message>
- <source>Windows input method</source>
- <translation>វិធី​សាស្ត្រ​បញ្ចូល​វីនដូ</translation>
+ <source>Windows input method</source>
+ <translation>វិធី​សាស្ត្រ​បញ្ចូល​វីនដូ</translation>
</message>
<message>
- <source>Mac OS X input method</source>
- <translation>វិធីសាស្ត្រ​បញ្ចូល​របស់ Mac OS X</translation>
+ <source>Mac OS X input method</source>
+ <translation>វិធីសាស្ត្រ​បញ្ចូល​របស់ Mac OS X</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QLibrary</name>
<message>
- <source>QLibrary::load_sys: Cannot load %1 (%2)</source>
- <translation>QLibrary::load_sys ៖ មិន​អាច​ផ្ទុក %1 (%2) បានទេ</translation>
+ <source>QLibrary::load_sys: Cannot load %1 (%2)</source>
+ <translation>QLibrary::load_sys ៖ មិន​អាច​ផ្ទុក %1 (%2) បានទេ</translation>
</message>
<message>
- <source>QLibrary::unload_sys: Cannot unload %1 (%2)</source>
- <translation>QLibrary::unload_sys ៖ មិន​អាច​មិនផ្ទុក​បានទេ %1 (%2)</translation>
+ <source>QLibrary::unload_sys: Cannot unload %1 (%2)</source>
+ <translation>QLibrary::unload_sys ៖ មិន​អាច​មិនផ្ទុក​បានទេ %1 (%2)</translation>
</message>
<message>
- <source>QLibrary::resolve_sys: Symbol &quot;%1&quot; undefined in %2 (%3)</source>
- <translation>QLibrary::resolve_sys: Symbol &quot;%1&quot; មិន​បាន​កំណត់​នៅ​ក្នុង %2 (%3)</translation>
+ <source>QLibrary::resolve_sys: Symbol &quot;%1&quot; undefined in %2 (%3)</source>
+ <translation>QLibrary::resolve_sys: Symbol &quot;%1&quot; មិន​បាន​កំណត់​នៅ​ក្នុង %2 (%3)</translation>
</message>
<message>
- <source>Could not mmap &apos;%1&apos;: %2</source>
- <translation>មិនអាច mmap &apos;%1&apos; ៖ %2 បានទេ</translation>
+ <source>Could not mmap '%1': %2</source>
+ <translation>មិនអាច mmap '%1' ៖ %2 បានទេ</translation>
</message>
<message>
- <source>Plugin verification data mismatch in &apos;%1&apos;</source>
- <translation>ទិន្នន័យ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់​កម្មវិធី​ជំនួយ​មិន​ផ្គូផ្គង​នៅ​ក្នុង &apos;%1&apos; ទេ</translation>
+ <source>Plugin verification data mismatch in '%1'</source>
+ <translation>ទិន្នន័យ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់​កម្មវិធី​ជំនួយ​មិន​ផ្គូផ្គង​នៅ​ក្នុង '%1' ទេ</translation>
</message>
<message>
- <source>Could not unmap &apos;%1&apos;: %2</source>
- <translation>មិន​អាច unmap &apos;%1&apos;: %2</translation>
+ <source>Could not unmap '%1': %2</source>
+ <translation>មិន​អាច unmap '%1': %2</translation>
</message>
<message>
- <source>The plugin &apos;%1&apos; uses incompatible Qt library. (%2.%3.%4) [%5]</source>
- <translation>កម្មវិធី​ជំនួយ &apos;%1&apos; ប្រើ​បណ្ណាល័យ Qt មិន​ឆបគ្នា ។ (%2.%3.%4) [%5]</translation>
+ <source>The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5]</source>
+ <translation>កម្មវិធី​ជំនួយ '%1' ប្រើ​បណ្ណាល័យ Qt មិន​ឆបគ្នា ។ (%2.%3.%4) [%5]</translation>
</message>
<message>
- <source>The plugin &apos;%1&apos; uses incompatible Qt library. Expected build key &quot;%2&quot;, got &quot;%3&quot;</source>
- <translation>កម្មវិធី​ជំនួយ &apos;%1&apos; ប្រើ​បណ្ណាល័យ Qt មិន​ឆបគ្នា ។ សោ​ស្ថាបនា​ដែល​បាន​រំពឹង​ទុកគឺ &quot;%2&quot; បាន​ទទួល &quot;%3&quot;</translation>
+ <source>The plugin '%1' uses incompatible Qt library. Expected build key &quot;%2&quot;, got &quot;%3&quot;</source>
+ <translation>កម្មវិធី​ជំនួយ '%1' ប្រើ​បណ្ណាល័យ Qt មិន​ឆបគ្នា ។ សោ​ស្ថាបនា​ដែល​បាន​រំពឹង​ទុកគឺ &quot;%2&quot; បាន​ទទួល &quot;%3&quot;</translation>
</message>
<message>
- <source>Unknown error</source>
- <translation>មិន​ស្គាល់​កំហុស</translation>
+ <source>Unknown error</source>
+ <translation>មិន​ស្គាល់​កំហុស</translation>
</message>
<message>
- <source>The shared library was not found.</source>
- <translation>រក​មិនឃើញ​បណ្ណាល័យ​រួម ។</translation>
+ <source>The shared library was not found.</source>
+ <translation>រក​មិនឃើញ​បណ្ណាល័យ​រួម ។</translation>
</message>
<message>
- <source>The file &apos;%1&apos; is not a valid Qt plugin.</source>
- <translation>ឯកសារ &apos;%1&apos; មិនមែន​ជា​កម្មវិធី Qt ត្រឹមត្រូវ​ទេ ។</translation>
+ <source>The file '%1' is not a valid Qt plugin.</source>
+ <translation>ឯកសារ '%1' មិនមែន​ជា​កម្មវិធី Qt ត្រឹមត្រូវ​ទេ ។</translation>
</message>
<message>
- <source>The plugin &apos;%1&apos; uses incompatible Qt library. (Cannot mix debug and release libraries.)</source>
- <translation>កម្មវិធី​ជំនួយ &apos;%1&apos; ប្រើ​បណ្ណាល័យ Qt មិន​ឆប​គ្នា ។ (មិនអាច​បញ្ចូល​បណ្ណាល័យ​បំបាត់​កំហុស និង​ចេញផ្សាយ​បានទេ ។)</translation>
+ <source>The plugin '%1' uses incompatible Qt library. (Cannot mix debug and release libraries.)</source>
+ <translation>កម្មវិធី​ជំនួយ '%1' ប្រើ​បណ្ណាល័យ Qt មិន​ឆប​គ្នា ។ (មិនអាច​បញ្ចូល​បណ្ណាល័យ​បំបាត់​កំហុស និង​ចេញផ្សាយ​បានទេ ។)</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QLineEdit</name>
<message>
- <source>&amp;Undo</source>
- <translation>មិន​ធ្វើ​វិញ</translation>
- </message>
- <message>
- <source>&amp;Redo</source>
- <translation>ធ្វើវិញ</translation>
+ <source>&amp;Undo</source>
+ <translation>មិន​ធ្វើ​វិញ</translation>
</message>
<message>
- <source>Cu&amp;t</source>
- <translation>កាត់</translation>
+ <source>&amp;Redo</source>
+ <translation>ធ្វើវិញ</translation>
</message>
<message>
- <source>&amp;Copy</source>
- <translation>ចម្លង</translation>
+ <source>Cu&amp;t</source>
+ <translation>កាត់</translation>
</message>
<message>
- <source>&amp;Paste</source>
- <translation>បិទភ្ជាប់</translation>
+ <source>&amp;Copy</source>
+ <translation>ចម្លង</translation>
</message>
<message>
- <source>Delete</source>
- <translation>លុប</translation>
+ <source>&amp;Paste</source>
+ <translation>បិទភ្ជាប់</translation>
</message>
<message>
- <source>Select All</source>
- <translation>ជ្រើស​ទាំងអស់</translation>
+ <source>Delete</source>
+ <translation>លុប</translation>
</message>
-</context>
-<context>
- <name>QLocalServer</name>
<message>
- <source>%1: Name error</source>
- <translation type="unfinished"></translation>
+ <source>Select All</source>
+ <translation>ជ្រើស​ទាំងអស់</translation>
</message>
- <message>
- <source>%1: Permission denied</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1: Address in use</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1: Unknown error %2</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>QLocalSocket</name>
- <message>
- <source>%1: Connection refused</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1: Remote closed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1: Invalid name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1: Socket access error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1: Socket resource error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1: Socket operation timed out</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1: Datagram too large</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1: Connection error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1: The socket operation is not supported</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1: Unknown error %2</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>QMYSQLDriver</name>
<message>
- <source>Unable to open database &apos;</source>
- <translation>មិនអាច​បើក​មូលដ្ឋាន​ទិន្នន័យ​បានទេ &apos;</translation>
+ <source>Unable to open database '</source>
+ <translation>មិនអាច​បើក​មូលដ្ឋាន​ទិន្នន័យ​បានទេ '</translation>
</message>
<message>
- <source>Unable to connect</source>
- <translation>មិនអាច​តភ្ជាប់​បានទេ</translation>
+ <source>Unable to connect</source>
+ <translation>មិនអាច​តភ្ជាប់​បានទេ</translation>
</message>
<message>
- <source>Unable to begin transaction</source>
- <translation>មិនអាច​ចាប់ផ្ដើម​ដំណើរការ​ផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Unable to begin transaction</source>
+ <translation>មិនអាច​ចាប់ផ្ដើម​ដំណើរការ​ផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
<message>
- <source>Unable to commit transaction</source>
- <translation>មិនអាច​បញ្ជូន​ដំណើរការផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Unable to commit transaction</source>
+ <translation>មិនអាច​បញ្ជូន​ដំណើរការផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
<message>
- <source>Unable to rollback transaction</source>
- <translation>មិន​អាច​ជម្រះ​ដំណើរផ្លាស់ប្ដូរ</translation>
+ <source>Unable to rollback transaction</source>
+ <translation>មិន​អាច​ជម្រះ​ដំណើរផ្លាស់ប្ដូរ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QMYSQLResult</name>
<message>
- <source>Unable to fetch data</source>
- <translation>មិន​អាច​ទៅ​យក​​ទិន្នន័យ​បានទេ</translation>
- </message>
- <message>
- <source>Unable to execute query</source>
- <translation>មិន​អាច​ប្រតិបត្តិ​សំណួរ​បានទេ</translation>
- </message>
- <message>
- <source>Unable to store result</source>
- <translation>មិនអាច​ផ្ទុក​លទ្ធផលបានទេ</translation>
- </message>
- <message>
- <source>Unable to prepare statement</source>
- <translation>មិន​អាច​រៀបចំ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
+ <source>Unable to fetch data</source>
+ <translation>មិន​អាច​ទៅ​យក​​ទិន្នន័យ​បានទេ</translation>
</message>
<message>
- <source>Unable to reset statement</source>
- <translation>មិន​អាច​កំណត់​សេចក្ដី​ថ្លែងការណ៍​ឡើង​វិញ​បានទេ</translation>
+ <source>Unable to execute query</source>
+ <translation>មិន​អាច​ប្រតិបត្តិ​សំណួរ​បានទេ</translation>
</message>
<message>
- <source>Unable to bind value</source>
- <translation>មិន​អាច​ចង​តម្លៃ​បានទេ</translation>
+ <source>Unable to store result</source>
+ <translation>មិនអាច​ផ្ទុក​លទ្ធផលបានទេ</translation>
</message>
<message>
- <source>Unable to execute statement</source>
- <translation>មិនអាច​ប្រតិបត្តិ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
+ <source>Unable to prepare statement</source>
+ <translation>មិន​អាច​រៀបចំ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
</message>
<message>
- <source>Unable to bind outvalues</source>
- <translation>មិន​អាច​ចង​តម្លៃ​ខាងក្រៅ​បានទេ</translation>
+ <source>Unable to reset statement</source>
+ <translation>មិន​អាច​កំណត់​សេចក្ដី​ថ្លែងការណ៍​ឡើង​វិញ​បានទេ</translation>
</message>
<message>
- <source>Unable to store statement results</source>
- <translation>មិនអាច​ផ្ទុក​លទ្ធផល​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
+ <source>Unable to bind value</source>
+ <translation>មិន​អាច​ចង​តម្លៃ​បានទេ</translation>
</message>
<message>
- <source>Unable to execute next query</source>
- <translation type="unfinished"></translation>
+ <source>Unable to execute statement</source>
+ <translation>មិនអាច​ប្រតិបត្តិ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
</message>
<message>
- <source>Unable to store next result</source>
- <translation type="unfinished"></translation>
+ <source>Unable to bind outvalues</source>
+ <translation>មិន​អាច​ចង​តម្លៃ​ខាងក្រៅ​បានទេ</translation>
</message>
-</context>
-<context>
- <name>QMdiArea</name>
<message>
- <source>(Untitled)</source>
- <translation type="unfinished"></translation>
+ <source>Unable to store statement results</source>
+ <translation>មិនអាច​ផ្ទុក​លទ្ធផល​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QMdiSubWindow</name>
<message>
- <source>%1 - [%2]</source>
- <translation>%1 - [%2]</translation>
- </message>
- <message>
- <source>Close</source>
- <translation>បិទ</translation>
- </message>
- <message>
- <source>Minimize</source>
- <translation>បង្រួម​អប្បបរមា</translation>
- </message>
- <message>
- <source>Restore Down</source>
- <translation>ស្ដារឡើងវិញ​ចុះក្រោម</translation>
+ <source>%1 - [%2]</source>
+ <translation>%1 - [%2]</translation>
</message>
<message>
- <source>&amp;Restore</source>
- <translation>ស្ដារឡើងវិញ</translation>
+ <source>Close</source>
+ <translation>បិទ</translation>
</message>
<message>
- <source>&amp;Move</source>
- <translation>ផ្លាស់ទី</translation>
+ <source>Minimize</source>
+ <translation>បង្រួម​អប្បបរមា</translation>
</message>
<message>
- <source>&amp;Size</source>
- <translation>ទំហំ</translation>
+ <source>Restore Down</source>
+ <translation>ស្ដារឡើងវិញ​ចុះក្រោម</translation>
</message>
<message>
- <source>Mi&amp;nimize</source>
- <translation>បង្រួម​អប្បបរមា</translation>
+ <source>&amp;Restore</source>
+ <translation>ស្ដារឡើងវិញ</translation>
</message>
<message>
- <source>Ma&amp;ximize</source>
- <translation>ពង្រីក​អតិបរមា</translation>
+ <source>&amp;Move</source>
+ <translation>ផ្លាស់ទី</translation>
</message>
<message>
- <source>Stay on &amp;Top</source>
- <translation>នៅ​ខាង​លើ</translation>
+ <source>&amp;Size</source>
+ <translation>ទំហំ</translation>
</message>
<message>
- <source>&amp;Close</source>
- <translation>បិទ</translation>
+ <source>Mi&amp;nimize</source>
+ <translation>បង្រួម​អប្បបរមា</translation>
</message>
<message>
- <source>- [%1]</source>
- <translation type="unfinished"></translation>
+ <source>Ma&amp;ximize</source>
+ <translation>ពង្រីក​អតិបរមា</translation>
</message>
<message>
- <source>Maximize</source>
- <translation type="unfinished">ពង្រីក​អតិបរមា</translation>
+ <source>Stay on &amp;Top</source>
+ <translation>នៅ​ខាង​លើ</translation>
</message>
<message>
- <source>Unshade</source>
- <translation type="unfinished"></translation>
+ <source>&amp;Close</source>
+ <translation>បិទ</translation>
</message>
- <message>
- <source>Shade</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Restore</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Help</source>
- <translation type="unfinished">ជំនួយ</translation>
- </message>
- <message>
- <source>Menu</source>
- <translation type="unfinished">ម៉ឺនុយ</translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>QMenu</name>
<message>
- <source>Close</source>
- <translation>បិទ</translation>
+ <source>Close</source>
+ <translation>បិទ</translation>
</message>
<message>
- <source>Open</source>
- <translation>បើក</translation>
+ <source>Open</source>
+ <translation>បើក</translation>
</message>
<message>
- <source>Execute</source>
- <translation>ប្រតិបត្តិ</translation>
+ <source>Execute</source>
+ <translation>ប្រតិបត្តិ</translation>
</message>
-</context>
-<context>
- <name>QMessageBox</name>
+ </context>
+ <context>
+ <name>QMenuBar</name>
<message>
- <source>Help</source>
- <translation>ជំនួយ</translation>
+ <source>About</source>
+ <translation>អំពី</translation>
</message>
<message>
- <source>OK</source>
- <translation>យល់ព្រម</translation>
+ <source>Config</source>
+ <translation>កំណត់​រចនាសម្ព័ន្ធ</translation>
</message>
<message>
- <source>About Qt</source>
- <translation>អំពី Qt</translation>
+ <source>Preference</source>
+ <translation>ចំណូល​ចិត្ត</translation>
</message>
<message>
- <source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;p&gt;កម្មវិធី​នេះ​ប្រើ​កំណែ Qt %1 ។&lt;/p&gt;</translation>
+ <source>Options</source>
+ <translation>ជម្រើស</translation>
</message>
<message>
- <source>Show Details...</source>
- <translation>បង្ហាញ​សេចក្ដី​លម្អិត...</translation>
+ <source>Setting</source>
+ <translation>ការ​កំណត់</translation>
</message>
<message>
- <source>Hide Details...</source>
- <translation>លាក់​សេចក្ដី​លម្អិត...</translation>
+ <source>Setup</source>
+ <translation>រៀបចំ</translation>
</message>
<message>
- <source>&lt;p&gt;This program uses Qt Open Source Edition version %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://www.trolltech.com/company/model/&quot;&gt;www.trolltech.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
- <translation>&lt;p&gt;កម្មវិធី​នេះ​ប្រើកំណែ​កម្មវិធី​ប្រភព​កូដ​ចំហ​ Qt %1 ។&lt;/p&gt;&lt;p&gt;កំណែ​កម្មវិធី​ប្រភព​កូដ​ចំហ Qt សម្រាប់​ការ​អភិវឌ្ឍ​កម្មវិធី​ប្រភព​កូដ​ចំហ ។ អ្នក​ត្រូវការ​អាជ្ញាប័ណ្ណ Qt ផ្នែក​ជំនួញ​សម្រាប់​កម្មវិធី​មាន​​កម្មសិទ្ធិ (ប្រភព​បិទ) ។&lt;/p&gt;&lt;p&gt;ចំពោះ​ទិដ្ឋភាពទូទៅនៃ​អាជ្ញាប័ណ្ណ​របស់ Qt សូម​មើល &lt;a href=&quot;http://www.trolltech.com/company/model/&quot;&gt;www.trolltech.com/company/model/&lt;/a&gt; ។&lt;/p&gt;</translation>
+ <source>Quit</source>
+ <translation>ចេញ</translation>
</message>
<message>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;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.&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://www.trolltech.com/qt/&quot;&gt;www.trolltech.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <source>Exit</source>
+ <translation>ចេញ</translation>
</message>
-</context>
-<context>
- <name>QMultiInputContext</name>
<message>
- <source>Select IM</source>
- <translation>ជ្រើស IM</translation>
+ <source>About %1</source>
+ <translation>អំពី %1</translation>
</message>
-</context>
-<context>
- <name>QMultiInputContextPlugin</name>
<message>
- <source>Multiple input method switcher</source>
- <translation>កម្មវិធីប្ដូរ​វិធីសាស្ត្រ​បញ្ចូល​ជា​ច្រើន</translation>
+ <source>About Qt</source>
+ <translation>អំពី Qt</translation>
</message>
<message>
- <source>Multiple input method switcher that uses the context menu of the text widgets</source>
- <translation>កម្មវិធី​ប្ដូរ​វិធីសាស្ត្រ​ជា​ច្រើន​ដែល​ប្រើ​ម៉ឺនុយ​បរិបទ​របស់​ធាតុ​ក្រាហ្វិក​អត្ថបទ</translation>
+ <source>Preferences</source>
+ <translation>ចំណូលចិត្ត</translation>
</message>
-</context>
-<context>
- <name>QNativeSocketEngine</name>
<message>
- <source>The remote host closed the connection</source>
- <translation>បានបិទ​កា​រតភ្ជាប់​ម៉ាស៊ីន​ពីចម្ងាយ</translation>
- </message>
- <message>
- <source>Network operation timed out</source>
- <translation>អស់ពេល​ប្រតិបត្តិការ​បណ្ដាញ</translation>
+ <source>Quit %1</source>
+ <translation>ចេញ %1</translation>
</message>
+ </context>
+ <context>
+ <name>QMessageBox</name>
<message>
- <source>Out of resources</source>
- <translation>អស់​ធនធាន</translation>
+ <source>Help</source>
+ <translation>ជំនួយ</translation>
</message>
<message>
- <source>Unsupported socket operation</source>
- <translation>ប្រតិបត្តិការ​រន្ធ​មិនបាន​គាំទ្រទេ</translation>
+ <source>OK</source>
+ <translation>យល់ព្រម</translation>
</message>
<message>
- <source>Protocol type not supported</source>
- <translation>ប្រភេទ​ពិធីការ​មិនបានគាំទ្រ​ទេ</translation>
+ <source>About Qt</source>
+ <translation>អំពី Qt</translation>
</message>
<message>
- <source>Invalid socket descriptor</source>
- <translation>អ្នកពិពណ៌នា​រន្ធ​មិន​ត្រឹមត្រូវ</translation>
+ <source>&lt;p>This program uses Qt version %1.&lt;/p></source>
+ <translation>&lt;p>កម្មវិធី​នេះ​ប្រើ​កំណែ Qt %1 ។&lt;/p></translation>
</message>
<message>
- <source>Network unreachable</source>
- <translation>មិនអាច​ចូល​បណ្ដាញ​បានទេ</translation>
+ <source>&lt;h3>About Qt&lt;/h3>%1&lt;p>Qt is a C++ toolkit for cross-platform application development.&lt;/p>&lt;p>Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qtopia Core.&lt;/p>&lt;p>Qt is a Trolltech product. See &lt;a href=&quot;http://www.trolltech.com/qt/&quot;>www.trolltech.com/qt/&lt;/a> for more information.&lt;/p></source>
+ <translation>&lt;h3>អំពី Qt&lt;/h3>%1&lt;p>Qt គឺ​ជា​ព័ត៌មាន​ជំនួយ​ C++ សម្រាប់​កា​រអភិវឌ្ឍ​កម្មវិធី​​សម្រាប់​ប្រព័ន្ធ​ប្រតិបត្តិការ​ខុសគ្នា ។&lt;/p>&lt;p>Qt ផ្ដល់​នូវ​ភាព​ឆប​គ្នា​ដែល​បាន​ប្រភព​តែ​មួយ​ដែល​ប្រើបានទាំង MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux និង​ Unix ផ្នែក​ជំនួញ​ជា​ច្រើន​ទេ ។ Qt ក៏អាច​ប្រើ​បាន​សម្រាប់​ឧបករណ៍​ដែលបាន​បង្កប់​ដូចជា Qtopia ។ &lt;/p>&lt;p>Qt គឺជា​ផលិតផល​របស់ Trolltech ចំពោះ​ព័ត៌មាន​បន្ថែម​សូមមើល &lt;a href=&quot;http://www.trolltech.com/qt/&quot;>www.trolltech.com/qt/&lt;/a> ។&lt;/p></translation>
</message>
<message>
- <source>Permission denied</source>
- <translation>គ្មាន​សិទ្ធិ</translation>
+ <source>Show Details...</source>
+ <translation>បង្ហាញ​សេចក្ដី​លម្អិត...</translation>
</message>
<message>
- <source>Connection timed out</source>
- <translation>អស់ពេល​ក្នុងការ​តភ្ជាប់</translation>
+ <source>Hide Details...</source>
+ <translation>លាក់​សេចក្ដី​លម្អិត...</translation>
</message>
<message>
- <source>Connection refused</source>
- <translation>បាន​បដិសេធ​ការ​តភ្ជាប់</translation>
+ <source>&lt;p>This program uses Qt Open Source Edition version %1.&lt;/p>&lt;p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.&lt;/p>&lt;p>Please see &lt;a href=&quot;http://www.trolltech.com/company/model/&quot;>www.trolltech.com/company/model/&lt;/a> for an overview of Qt licensing.&lt;/p></source>
+ <translation>&lt;p>កម្មវិធី​នេះ​ប្រើកំណែ​កម្មវិធី​ប្រភព​កូដ​ចំហ​ Qt %1 ។&lt;/p>&lt;p>កំណែ​កម្មវិធី​ប្រភព​កូដ​ចំហ Qt សម្រាប់​ការ​អភិវឌ្ឍ​កម្មវិធី​ប្រភព​កូដ​ចំហ ។ អ្នក​ត្រូវការ​អាជ្ញាប័ណ្ណ Qt ផ្នែក​ជំនួញ​សម្រាប់​កម្មវិធី​មាន​​កម្មសិទ្ធិ (ប្រភព​បិទ) ។&lt;/p>&lt;p>ចំពោះ​ទិដ្ឋភាពទូទៅនៃ​អាជ្ញាប័ណ្ណ​របស់ Qt សូម​មើល &lt;a href=&quot;http://www.trolltech.com/company/model/&quot;>www.trolltech.com/company/model/&lt;/a> ។&lt;/p></translation>
</message>
+ </context>
+ <context>
+ <name>QMultiInputContext</name>
<message>
- <source>The bound address is already in use</source>
- <translation>អាសយដ្ឋាន​ដែល​បានចង​កំពុង​ប្រើ​រួច​ហើយ</translation>
+ <source>Select IM</source>
+ <translation>ជ្រើស IM</translation>
</message>
+ </context>
+ <context>
+ <name>QMultiInputContextPlugin</name>
<message>
- <source>The address is not available</source>
- <translation>អាសយដ្ឋាន​មិនអាច​ប្រើបានទេ</translation>
+ <source>Multiple input method switcher</source>
+ <translation>កម្មវិធីប្ដូរ​វិធីសាស្ត្រ​បញ្ចូល​ជា​ច្រើន</translation>
</message>
<message>
- <source>The address is protected</source>
- <translation>អាសយដ្ឋាន​ត្រូវ​បានការពារ</translation>
+ <source>Multiple input method switcher that uses the context menu of the text widgets</source>
+ <translation>កម្មវិធី​ប្ដូរ​វិធីសាស្ត្រ​ជា​ច្រើន​ដែល​ប្រើ​ម៉ឺនុយ​បរិបទ​របស់​ធាតុ​ក្រាហ្វិក​អត្ថបទ</translation>
</message>
+ </context>
+ <context>
+ <name>QNativeSocketEngine</name>
<message>
- <source>Unable to send a message</source>
- <translation>មិនអាច​ផ្ញើសារ​បានទេ</translation>
+ <source>The remote host closed the connection</source>
+ <translation>បានបិទ​កា​រតភ្ជាប់​ម៉ាស៊ីន​ពីចម្ងាយ</translation>
</message>
<message>
- <source>Unable to receive a message</source>
- <translation>មិនអាច​ទទួល​សារ​បានទេ</translation>
+ <source>Network operation timed out</source>
+ <translation>អស់ពេល​ប្រតិបត្តិការ​បណ្ដាញ</translation>
</message>
<message>
- <source>Unable to write</source>
- <translation>មិនអាច​សរសេរ​បានទេ</translation>
+ <source>Out of resources</source>
+ <translation>អស់​ធនធាន</translation>
</message>
<message>
- <source>Network error</source>
- <translation>កំហុស​បណ្ដាញ</translation>
+ <source>Unsupported socket operation</source>
+ <translation>ប្រតិបត្តិការ​រន្ធ​មិនបាន​គាំទ្រទេ</translation>
</message>
<message>
- <source>Another socket is already listening on the same port</source>
- <translation>រន្ធ​ផ្សេង​ទៀត​កំពុង​ស្ដាប់​នៅលើ​ច្រក​ដូច​គ្នា</translation>
+ <source>Protocol type not supported</source>
+ <translation>ប្រភេទ​ពិធីការ​មិនបានគាំទ្រ​ទេ</translation>
</message>
<message>
- <source>Unable to initialize non-blocking socket</source>
- <translation>មិនអាច​ចាប់ផ្ដើម​រន្ធ​ដែល​មិនទប់ស្កាត់​បានទេ</translation>
+ <source>Invalid socket descriptor</source>
+ <translation>អ្នកពិពណ៌នា​រន្ធ​មិន​ត្រឹមត្រូវ</translation>
</message>
<message>
- <source>Unable to initialize broadcast socket</source>
- <translation>មិន​អាច​ចាប់ផ្ដើម​រន្ធ​ប្រកាស​បានទេ</translation>
+ <source>Network unreachable</source>
+ <translation>មិនអាច​ចូល​បណ្ដាញ​បានទេ</translation>
</message>
<message>
- <source>Attempt to use IPv6 socket on a platform with no IPv6 support</source>
- <translation>ប៉ុនប៉ង​ប្រើ​រន្ធ IPv6 នៅ​លើ​វេទិកា​ដែលគ្មាន​ការ​គាំទ្រ IPv6</translation>
+ <source>Permission denied</source>
+ <translation>គ្មាន​សិទ្ធិ</translation>
</message>
<message>
- <source>Host unreachable</source>
- <translation>មិនអាច​ចូល​ម៉ាស៊ីនបានទេ</translation>
+ <source>Connection timed out</source>
+ <translation>អស់ពេល​ក្នុងការ​តភ្ជាប់</translation>
</message>
<message>
- <source>Datagram was too large to send</source>
- <translation>ទិន្នន័យ​ធំពេក​មិនអាច​ផ្ញើ​បានទេ</translation>
+ <source>Connection refused</source>
+ <translation>បាន​បដិសេធ​ការ​តភ្ជាប់</translation>
</message>
<message>
- <source>Operation on non-socket</source>
- <translation>ប្រតិបត្តិការ​មិននៅលើ​រន្ធ</translation>
+ <source>The bound address is already in use</source>
+ <translation>អាសយដ្ឋាន​ដែល​បានចង​កំពុង​ប្រើ​រួច​ហើយ</translation>
</message>
<message>
- <source>Unknown error</source>
- <translation>មិន​ស្គាល់​កំហុស</translation>
+ <source>The address is not available</source>
+ <translation>អាសយដ្ឋាន​មិនអាច​ប្រើបានទេ</translation>
</message>
<message>
- <source>The proxy type is invalid for this operation</source>
- <translation type="unfinished"></translation>
+ <source>The address is protected</source>
+ <translation>អាសយដ្ឋាន​ត្រូវ​បានការពារ</translation>
</message>
-</context>
-<context>
- <name>QNetworkAccessFileBackend</name>
<message>
- <source>Request for opening non-local file %1</source>
- <translation type="unfinished"></translation>
+ <source>Unable to send a message</source>
+ <translation>មិនអាច​ផ្ញើសារ​បានទេ</translation>
</message>
<message>
- <source>Error opening %1: %2</source>
- <translation type="unfinished"></translation>
+ <source>Unable to receive a message</source>
+ <translation>មិនអាច​ទទួល​សារ​បានទេ</translation>
</message>
<message>
- <source>Write error writing to %1: %2</source>
- <translation type="unfinished"></translation>
+ <source>Unable to write</source>
+ <translation>មិនអាច​សរសេរ​បានទេ</translation>
</message>
<message>
- <source>Cannot open %1: Path is a directory</source>
- <translation type="unfinished"></translation>
+ <source>Network error</source>
+ <translation>កំហុស​បណ្ដាញ</translation>
</message>
<message>
- <source>Read error reading from %1: %2</source>
- <translation type="unfinished"></translation>
+ <source>Another socket is already listening on the same port</source>
+ <translation>រន្ធ​ផ្សេង​ទៀត​កំពុង​ស្ដាប់​នៅលើ​ច្រក​ដូច​គ្នា</translation>
</message>
-</context>
-<context>
- <name>QNetworkAccessFtpBackend</name>
<message>
- <source>Cannot open %1: is a directory</source>
- <translation type="unfinished"></translation>
+ <source>Unable to initialize non-blocking socket</source>
+ <translation>មិនអាច​ចាប់ផ្ដើម​រន្ធ​ដែល​មិនទប់ស្កាត់​បានទេ</translation>
</message>
<message>
- <source>Logging in to %1 failed: authentication required</source>
- <translation type="unfinished"></translation>
+ <source>Unable to initialize broadcast socket</source>
+ <translation>មិន​អាច​ចាប់ផ្ដើម​រន្ធ​ប្រកាស​បានទេ</translation>
</message>
<message>
- <source>Error while downloading %1: %2</source>
- <translation type="unfinished"></translation>
+ <source>Attempt to use IPv6 socket on a platform with no IPv6 support</source>
+ <translation>ប៉ុនប៉ង​ប្រើ​រន្ធ IPv6 នៅ​លើ​វេទិកា​ដែលគ្មាន​ការ​គាំទ្រ IPv6</translation>
</message>
<message>
- <source>Error while uploading %1: %2</source>
- <translation type="unfinished"></translation>
+ <source>Host unreachable</source>
+ <translation>មិនអាច​ចូល​ម៉ាស៊ីនបានទេ</translation>
</message>
-</context>
-<context>
- <name>QNetworkReply</name>
<message>
- <source>Error downloading %1 - server replied: %2</source>
- <translation type="unfinished"></translation>
+ <source>Datagram was too large to send</source>
+ <translation>ទិន្នន័យ​ធំពេក​មិនអាច​ផ្ញើ​បានទេ</translation>
</message>
<message>
- <source>Protocol &quot;%1&quot; is unknown</source>
- <translation type="unfinished"></translation>
+ <source>Operation on non-socket</source>
+ <translation>ប្រតិបត្តិការ​មិននៅលើ​រន្ធ</translation>
</message>
-</context>
-<context>
- <name>QNetworkReplyImpl</name>
<message>
- <source>Operation canceled</source>
- <translation type="unfinished"></translation>
+ <source>Unknown error</source>
+ <translation>មិន​ស្គាល់​កំហុស</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QOCIDriver</name>
<message>
- <source>Unable to logon</source>
- <translation>មិនអាច​ចូលបានទេ</translation>
+ <source>Unable to logon</source>
+ <translation>មិនអាច​ចូលបានទេ</translation>
</message>
<message>
- <source>Unable to initialize</source>
- <comment>QOCIDriver</comment>
- <translation>មិន​អាច​ចាប់ផ្ដើម​បានទេ</translation>
+ <source>Unable to initialize</source>
+ <comment>QOCIDriver</comment>
+ <translation>មិន​អាច​ចាប់ផ្ដើម​បានទេ</translation>
</message>
- <message>
- <source>Unable to begin transaction</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Unable to commit transaction</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Unable to rollback transaction</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>QOCIResult</name>
<message>
- <source>Unable to bind column for batch execute</source>
- <translation>មិន​អាច​ចង​ជួរឈរ​សម្រាប់​ប្រតិបត្តិ​បាច់​បានទេ</translation>
+ <source>Unable to bind column for batch execute</source>
+ <translation>មិន​អាច​ចង​ជួរឈរ​សម្រាប់​ប្រតិបត្តិ​បាច់​បានទេ</translation>
</message>
<message>
- <source>Unable to execute batch statement</source>
- <translation>មិនអាច​ប្រតិបត្តិ​សេចក្ដី​ថ្លែងការណ៍​បាច់​បានទេ</translation>
+ <source>Unable to execute batch statement</source>
+ <translation>មិនអាច​ប្រតិបត្តិ​សេចក្ដី​ថ្លែងការណ៍​បាច់​បានទេ</translation>
</message>
<message>
- <source>Unable to goto next</source>
- <translation>មិន​អាច​ទៅ​កាន់​បន្ទាប់​បានទេ</translation>
+ <source>Unable to goto next</source>
+ <translation>មិន​អាច​ទៅ​កាន់​បន្ទាប់​បានទេ</translation>
</message>
<message>
- <source>Unable to alloc statement</source>
- <translation>មិនអាច​បម្រុង​ទុក​សេចក្ដី​ថ្លែងការ​ណ៍​បានទេ</translation>
+ <source>Unable to alloc statement</source>
+ <translation>មិនអាច​បម្រុង​ទុក​សេចក្ដី​ថ្លែងការ​ណ៍​បានទេ</translation>
</message>
<message>
- <source>Unable to prepare statement</source>
- <translation>មិនអាច​រៀបចំ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
+ <source>Unable to prepare statement</source>
+ <translation>មិនអាច​រៀបចំ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
</message>
<message>
- <source>Unable to bind value</source>
- <translation>មិន​អាច​ចង​តម្លៃ​បានទេ</translation>
+ <source>Unable to bind value</source>
+ <translation>មិន​អាច​ចង​តម្លៃ​បានទេ</translation>
</message>
<message>
- <source>Unable to execute select statement</source>
- <translation>មិន​អាច​ប្រតិបត្តិ​ជ្រើស​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
+ <source>Unable to execute select statement</source>
+ <translation>មិន​អាច​ប្រតិបត្តិ​ជ្រើស​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
</message>
<message>
- <source>Unable to execute statement</source>
- <translation>មិន​អាច​ប្រតិបត្តិ​សេចក្ដី​ថ្លែងការណ៍</translation>
+ <source>Unable to execute statement</source>
+ <translation>មិន​អាច​ប្រតិបត្តិ​សេចក្ដី​ថ្លែងការណ៍</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QODBCDriver</name>
<message>
- <source>Unable to connect</source>
- <translation>មិនអាច​តភ្ជាប់​បានទេ</translation>
+ <source>Unable to connect</source>
+ <translation>មិនអាច​តភ្ជាប់​បានទេ</translation>
</message>
<message>
- <source>Unable to connect - Driver doesn&apos;t support all needed functionality</source>
- <translation>មិនអាច​តភ្ជាប់​បានទេ - កម្មវិធី​បញ្ជា​មិនគាំទ្រ​មុខងារ​ដែល​ត្រូវការ​ទាំង​អស់​ទេ</translation>
+ <source>Unable to connect - Driver doesn't support all needed functionality</source>
+ <translation>មិនអាច​តភ្ជាប់​បានទេ - កម្មវិធី​បញ្ជា​មិនគាំទ្រ​មុខងារ​ដែល​ត្រូវការ​ទាំង​អស់​ទេ</translation>
</message>
<message>
- <source>Unable to disable autocommit</source>
- <translation>មិន​អាច​បិទ​ការ​បញ្ជូន​ដោយ​ស្វ័យ​ប្រវត្តិ​បានទេ</translation>
+ <source>Unable to disable autocommit</source>
+ <translation>មិន​អាច​បិទ​ការ​បញ្ជូន​ដោយ​ស្វ័យ​ប្រវត្តិ​បានទេ</translation>
</message>
<message>
- <source>Unable to commit transaction</source>
- <translation>មិនអាច​បញ្ជូន​ដំណើរផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Unable to commit transaction</source>
+ <translation>មិនអាច​បញ្ជូន​ដំណើរផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
<message>
- <source>Unable to rollback transaction</source>
- <translation>មិនអាច​ជម្រះ​ដំណើរ​ផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Unable to rollback transaction</source>
+ <translation>មិនអាច​ជម្រះ​ដំណើរ​ផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
<message>
- <source>Unable to enable autocommit</source>
- <translation>មិនអាច​បើក​ការ​បញ្ជូន​ដោយ​ស្វ័យ​ប្រវត្តិ​បានទេ</translation>
+ <source>Unable to enable autocommit</source>
+ <translation>មិនអាច​បើក​ការ​បញ្ជូន​ដោយ​ស្វ័យ​ប្រវត្តិ​បានទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QODBCResult</name>
<message>
- <source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
- <translation>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; ជា​គុណលក្ខណៈ​សេចក្ដី​ថ្លែង​ការណ៍ ។ សូម​ពិនិត្យ​មើល​ការ​កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​បញ្ជា​នៃ ODBC របស់​អ្នក</translation>
- </message>
- <message>
- <source>Unable to execute statement</source>
- <translation>មិនអាច​ប្រតិបត្តិ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
- </message>
- <message>
- <source>Unable to fetch next</source>
- <translation>មិនអាច​ទៅយក​បន្ទាប់​បានទេ</translation>
- </message>
- <message>
- <source>Unable to prepare statement</source>
- <translation>មិនអាច​រៀបចំ​សេចក្ដីថ្លែង​ការណ៍​បានទេ</translation>
- </message>
- <message>
- <source>Unable to bind variable</source>
- <translation>មិន​អាច​ចង​អថេរ​បានទេ</translation>
+ <source>QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration</source>
+ <translation>QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' ជា​គុណលក្ខណៈ​សេចក្ដី​ថ្លែង​ការណ៍ ។ សូម​ពិនិត្យ​មើល​ការ​កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​បញ្ជា​នៃ ODBC របស់​អ្នក</translation>
</message>
<message>
- <source>Unable to fetch last</source>
- <translation type="unfinished"></translation>
+ <source>Unable to execute statement</source>
+ <translation>មិនអាច​ប្រតិបត្តិ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
</message>
<message>
- <source>Unable to fetch</source>
- <translation type="unfinished"></translation>
+ <source>Unable to fetch next</source>
+ <translation>មិនអាច​ទៅយក​បន្ទាប់​បានទេ</translation>
</message>
<message>
- <source>Unable to fetch first</source>
- <translation type="unfinished">មិនអាច​ទៅ​យក​អ្វី​ដំបូង​បានទេ</translation>
+ <source>Unable to prepare statement</source>
+ <translation>មិនអាច​រៀបចំ​សេចក្ដីថ្លែង​ការណ៍​បានទេ</translation>
</message>
<message>
- <source>Unable to fetch previous</source>
- <translation type="unfinished"></translation>
+ <source>Unable to bind variable</source>
+ <translation>មិន​អាច​ចង​អថេរ​បានទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QObject</name>
<message>
- <source>Operation not supported on %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Invalid URI: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Write error writing to %1: %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Read error reading from %1: %2</source>
- <translation type="unfinished"></translation>
+ <source>Home</source>
+ <translation>ផ្ទះ</translation>
</message>
- <message>
- <source>Socket error on %1: %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Remote host closed the connection prematurely on %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Protocol error: packet of size 0 received</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>QPPDOptionsModel</name>
- <message>
- <source>Name</source>
- <translation type="unfinished">ឈ្មោះ</translation>
- </message>
- <message>
- <source>Value</source>
- <translation type="unfinished">តម្លៃ</translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>QPSQLDriver</name>
<message>
- <source>Unable to connect</source>
- <translation>មិនអាច​តភ្ជាប់​បានទេ</translation>
+ <source>Unable to connect</source>
+ <translation>មិនអាច​តភ្ជាប់​បានទេ</translation>
</message>
<message>
- <source>Could not begin transaction</source>
- <translation>មិនអាច​ចាប់ផ្ដើម​ដំណើរ​ផ្លាស់ប្ដូ​របានទេ</translation>
+ <source>Could not begin transaction</source>
+ <translation>មិនអាច​ចាប់ផ្ដើម​ដំណើរ​ផ្លាស់ប្ដូ​របានទេ</translation>
</message>
<message>
- <source>Could not commit transaction</source>
- <translation>មិនអាច​បញ្ជូន​ដំណើរផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Could not commit transaction</source>
+ <translation>មិនអាច​បញ្ជូន​ដំណើរផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
<message>
- <source>Could not rollback transaction</source>
- <translation>មិនអាច​ជម្រះ​ដំណើរផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Could not rollback transaction</source>
+ <translation>មិនអាច​ជម្រះ​ដំណើរផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
- <message>
- <source>Unable to subscribe</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Unable to unsubscribe</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>QPSQLResult</name>
<message>
- <source>Unable to create query</source>
- <translation>មិនអាច​បង្កើត​សំណួរ​បានទេ</translation>
- </message>
- <message>
- <source>Unable to prepare statement</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>QPageSetupWidget</name>
- <message>
- <source>Centimeters (cm)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Millimeters (mm)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Inches (in)</source>
- <translation type="unfinished"></translation>
+ <source>Unable to create query</source>
+ <translation>មិនអាច​បង្កើត​សំណួរ​បានទេ</translation>
</message>
- <message>
- <source>Points (pt)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Form</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Paper</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Page size:</source>
- <translation type="unfinished">ទំហំ​ទំព័រ ៖</translation>
- </message>
- <message>
- <source>Width:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Height:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Paper source:</source>
- <translation type="unfinished">ប្រភព​ក្រដាស ៖</translation>
- </message>
- <message>
- <source>Orientation</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Portrait</source>
- <translation type="unfinished">បញ្ឈរ</translation>
- </message>
- <message>
- <source>Landscape</source>
- <translation type="unfinished">ផ្ដេក</translation>
- </message>
- <message>
- <source>Reverse landscape</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Reverse portrait</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Margins</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>top margin</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>left margin</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>right margin</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>bottom margin</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>QPluginLoader</name>
<message>
- <source>Unknown error</source>
- <translation>មិនស្គាល់កំហុស</translation>
+ <source>Unknown error</source>
+ <translation>មិនស្គាល់កំហុស</translation>
</message>
<message>
- <source>The plugin was not loaded.</source>
- <translation>កម្មវិធី​ជំនួយ​មិនត្រូវ​បានផ្ទុក​ទេ ។</translation>
+ <source>The plugin was not loaded.</source>
+ <translation>កម្មវិធី​ជំនួយ​មិនត្រូវ​បានផ្ទុក​ទេ ។</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QPrintDialog</name>
<message>
- <source>locally connected</source>
- <translation>បាន​តភ្ជាប់​មូលដ្ឋាន</translation>
+ <source>locally connected</source>
+ <translation>បាន​តភ្ជាប់​មូលដ្ឋាន</translation>
</message>
<message>
- <source>Aliases: %1</source>
- <translation>ឈ្មោះ​ក្លែងក្លាយ ៖ %1</translation>
+ <source>Aliases: %1</source>
+ <translation>ឈ្មោះ​ក្លែងក្លាយ ៖ %1</translation>
</message>
<message>
- <source>unknown</source>
- <translation>មិនស្គាល់</translation>
+ <source>unknown</source>
+ <translation>មិនស្គាល់</translation>
</message>
<message>
- <source>Print To File ...</source>
- <translation>បោះពុម្ព​ទៅ​ឯកសារ...</translation>
+ <source>Portrait</source>
+ <translation>បញ្ឈរ</translation>
</message>
<message>
- <source>File %1 is not writable.
-Please choose a different file name.</source>
- <translation>ឯកសារ %1 មិន​អាច​សរសេរ​បាន ។
-សូម​ជ្រើស​ឈ្មោះ​ឯកសារ​ផ្សេង ។</translation>
+ <source>Landscape</source>
+ <translation>ផ្ដេក</translation>
</message>
<message>
- <source>%1 already exists.
-Do you want to overwrite it?</source>
- <translation>មាន %1 រួច​ហើយ ។
-តើ​អ្នក​ចង់​សរសេរ​ជាន់លើ​វា​ដែរឬទេ ?</translation>
+ <source>A0 (841 x 1189 mm)</source>
+ <translation>A0 (841 x 1189 mm)</translation>
</message>
<message>
- <source>%1 is a directory.
-Please choose a different file name.</source>
- <translation>%1 គឺ​ជា​ថត ។
-សូម​ជ្រើស​ឈ្មោះ​ឯកសារ​ផ្សេង ។</translation>
+ <source>A1 (594 x 841 mm)</source>
+ <translation>A1 (594 x 841 mm)</translation>
</message>
<message>
- <source>A0</source>
- <translation type="unfinished"></translation>
+ <source>A2 (420 x 594 mm)</source>
+ <translation>A2 (420 x 594 mm)</translation>
</message>
<message>
- <source>A1</source>
- <translation type="unfinished"></translation>
+ <source>A3 (297 x 420 mm)</source>
+ <translation>A3 (297 x 420 mm)</translation>
</message>
<message>
- <source>A2</source>
- <translation type="unfinished"></translation>
+ <source>A4 (210 x 297 mm, 8.26 x 11.7 inches)</source>
+ <translation>A4 (210 x 297 mm, 8.26 x 11.7 inches)</translation>
</message>
<message>
- <source>A3</source>
- <translation type="unfinished"></translation>
+ <source>A5 (148 x 210 mm)</source>
+ <translation>A5 (148 x 210 mm)</translation>
</message>
<message>
- <source>A4</source>
- <translation type="unfinished"></translation>
+ <source>A6 (105 x 148 mm)</source>
+ <translation>A6 (105 x 148 mm)</translation>
</message>
<message>
- <source>A5</source>
- <translation type="unfinished"></translation>
+ <source>A7 (74 x 105 mm)</source>
+ <translation>A7 (74 x 105 mm)</translation>
</message>
<message>
- <source>A6</source>
- <translation type="unfinished"></translation>
+ <source>A8 (52 x 74 mm)</source>
+ <translation>A8 (52 x 74 mm)</translation>
</message>
<message>
- <source>A7</source>
- <translation type="unfinished"></translation>
+ <source>A9 (37 x 52 mm)</source>
+ <translation>A9 (37 x 52 mm)</translation>
</message>
<message>
- <source>A8</source>
- <translation type="unfinished"></translation>
+ <source>B0 (1000 x 1414 mm)</source>
+ <translation>B0 (1000 x 1414 mm)</translation>
</message>
<message>
- <source>A9</source>
- <translation type="unfinished"></translation>
+ <source>B1 (707 x 1000 mm)</source>
+ <translation>B1 (707 x 1000 mm)</translation>
</message>
<message>
- <source>B0</source>
- <translation type="unfinished"></translation>
+ <source>B2 (500 x 707 mm)</source>
+ <translation>B2 (500 x 707 mm)</translation>
</message>
<message>
- <source>B1</source>
- <translation type="unfinished"></translation>
+ <source>B3 (353 x 500 mm)</source>
+ <translation>B3 (353 x 500 mm)</translation>
</message>
<message>
- <source>B2</source>
- <translation type="unfinished"></translation>
+ <source>B4 (250 x 353 mm)</source>
+ <translation>B4 (250 x 353 mm)</translation>
</message>
<message>
- <source>B3</source>
- <translation type="unfinished"></translation>
+ <source>B5 (176 x 250 mm, 6.93 x 9.84 inches)</source>
+ <translation>B5 (176 x 250 mm, 6.93 x 9.84 inches)</translation>
</message>
<message>
- <source>B4</source>
- <translation type="unfinished"></translation>
+ <source>B6 (125 x 176 mm)</source>
+ <translation>B6 (125 x 176 mm)</translation>
</message>
<message>
- <source>B5</source>
- <translation type="unfinished"></translation>
+ <source>B7 (88 x 125 mm)</source>
+ <translation>B7 (88 x 125 mm)</translation>
</message>
<message>
- <source>B6</source>
- <translation type="unfinished"></translation>
+ <source>B8 (62 x 88 mm)</source>
+ <translation>B8 (62 x 88 mm)</translation>
</message>
<message>
- <source>B7</source>
- <translation type="unfinished"></translation>
+ <source>B9 (44 x 62 mm)</source>
+ <translation>B9 (44 x 62 mm)</translation>
</message>
<message>
- <source>B8</source>
- <translation type="unfinished"></translation>
+ <source>B10 (31 x 44 mm)</source>
+ <translation>B10 (31 x 44 mm)</translation>
</message>
<message>
- <source>B9</source>
- <translation type="unfinished"></translation>
+ <source>C5E (163 x 229 mm)</source>
+ <translation>C5E (163 x 229 mm)</translation>
</message>
<message>
- <source>B10</source>
- <translation type="unfinished"></translation>
+ <source>DLE (110 x 220 mm)</source>
+ <translation>DLE (110 x 220 mm)</translation>
</message>
<message>
- <source>C5E</source>
- <translation type="unfinished"></translation>
+ <source>Executive (7.5 x 10 inches, 191 x 254 mm)</source>
+ <translation>Executive (7.5 x 10 inches, 191 x 254 mm)</translation>
</message>
<message>
- <source>DLE</source>
- <translation type="unfinished"></translation>
+ <source>Folio (210 x 330 mm)</source>
+ <translation>Folio (210 x 330 mm)</translation>
</message>
<message>
- <source>Executive</source>
- <translation type="unfinished"></translation>
+ <source>Ledger (432 x 279 mm)</source>
+ <translation>Ledger (432 x 279 mm)</translation>
</message>
<message>
- <source>Folio</source>
- <translation type="unfinished"></translation>
+ <source>Legal (8.5 x 14 inches, 216 x 356 mm)</source>
+ <translation>Legal (8.5 x 14 inches, 216 x 356 mm)</translation>
</message>
<message>
- <source>Ledger</source>
- <translation type="unfinished"></translation>
+ <source>Letter (8.5 x 11 inches, 216 x 279 mm)</source>
+ <translation>Letter (8.5 x 11 inches, 216 x 279 mm)</translation>
</message>
<message>
- <source>Legal</source>
- <translation type="unfinished"></translation>
+ <source>Tabloid (279 x 432 mm)</source>
+ <translation>Tabloid (279 x 432 mm)</translation>
</message>
<message>
- <source>Letter</source>
- <translation type="unfinished"></translation>
+ <source>US Common #10 Envelope (105 x 241 mm)</source>
+ <translation>US Common #10 Envelope (105 x 241 mm)</translation>
</message>
<message>
- <source>Tabloid</source>
- <translation type="unfinished"></translation>
+ <source>OK</source>
+ <translation>យល់ព្រម</translation>
</message>
<message>
- <source>US Common #10 Envelope</source>
- <translation type="unfinished"></translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>Custom</source>
- <translation type="unfinished"></translation>
+ <source>Page size:</source>
+ <translation>ទំហំ​ទំព័រ ៖</translation>
</message>
<message>
- <source>&amp;Options &gt;&gt;</source>
- <translation type="unfinished"></translation>
+ <source>Orientation:</source>
+ <translation>ទិស ៖</translation>
</message>
<message>
- <source>&amp;Print</source>
- <translation type="unfinished"></translation>
+ <source>Paper source:</source>
+ <translation>ប្រភព​ក្រដាស ៖</translation>
</message>
<message>
- <source>&amp;Options &lt;&lt;</source>
- <translation type="unfinished"></translation>
+ <source>Print</source>
+ <translation>បោះពុម្ព</translation>
</message>
<message>
- <source>Print to File (PDF)</source>
- <translation type="unfinished"></translation>
+ <source>File</source>
+ <translation>ឯកសារ</translation>
</message>
<message>
- <source>Print to File (Postscript)</source>
- <translation type="unfinished"></translation>
+ <source>Printer</source>
+ <translation>ម៉ាស៊ីន​បោះពុម្ព</translation>
</message>
<message>
- <source>Local file</source>
- <translation type="unfinished"></translation>
+ <source>Print To File ...</source>
+ <translation>បោះពុម្ព​ទៅ​ឯកសារ...</translation>
</message>
<message>
- <source>Write %1 file</source>
- <translation type="unfinished"></translation>
+ <source>Print dialog</source>
+ <translation>ប្រអប់​បោះពុម្ព</translation>
</message>
-</context>
-<context>
- <name>QPrintPreviewDialog</name>
<message>
- <source>Page Setup</source>
- <translation type="unfinished"></translation>
+ <source>Paper format</source>
+ <translation>ទ្រង់ទ្រាយ​ក្រដាស</translation>
</message>
<message>
- <source>Print Preview</source>
- <translation type="unfinished"></translation>
+ <source>Size:</source>
+ <translation>ទំហំ ៖</translation>
</message>
<message>
- <source>Next page</source>
- <translation type="unfinished"></translation>
+ <source>Properties</source>
+ <translation>លក្ខណៈសម្បត្តិ</translation>
</message>
<message>
- <source>Previous page</source>
- <translation type="unfinished"></translation>
+ <source>Printer info:</source>
+ <translation>ព័ត៌មាន​របស់​ម៉ាស៊ីន​បោះពុម្ព ៖</translation>
</message>
<message>
- <source>First page</source>
- <translation type="unfinished"></translation>
+ <source>Browse</source>
+ <translation>រក​មើល</translation>
</message>
<message>
- <source>Last page</source>
- <translation type="unfinished"></translation>
+ <source>Print to file</source>
+ <translation>បោះពុម្ព​ទៅ​ឯកសារ</translation>
</message>
<message>
- <source>Fit width</source>
- <translation type="unfinished"></translation>
+ <source>Print range</source>
+ <translation>ជួរ​បោះពុម្ព</translation>
</message>
<message>
- <source>Fit page</source>
- <translation type="unfinished"></translation>
+ <source>Print all</source>
+ <translation>បោះពុម្ព​ទាំង​អស់</translation>
</message>
<message>
- <source>Zoom in</source>
- <translation type="unfinished"></translation>
+ <source>Pages from</source>
+ <translation>ទំព័រ​ពី</translation>
</message>
<message>
- <source>Zoom out</source>
- <translation type="unfinished"></translation>
+ <source>to</source>
+ <translation>ដល់</translation>
</message>
<message>
- <source>Portrait</source>
- <translation type="unfinished">បញ្ឈរ</translation>
+ <source>Selection</source>
+ <translation>ជម្រើស</translation>
</message>
<message>
- <source>Landscape</source>
- <translation type="unfinished">ផ្ដេក</translation>
+ <source>Copies</source>
+ <translation>ច្បាប់ចម្លង</translation>
</message>
<message>
- <source>Show single page</source>
- <translation type="unfinished"></translation>
+ <source>Number of copies:</source>
+ <translation>ចំនួន​ច្បាប់ចម្លង ៖</translation>
</message>
<message>
- <source>Show facing pages</source>
- <translation type="unfinished"></translation>
+ <source>Collate</source>
+ <translation>តម្រៀប​តាម​លំដាប់</translation>
</message>
<message>
- <source>Show overview of all pages</source>
- <translation type="unfinished"></translation>
+ <source>Print last page first</source>
+ <translation>បោះពុម្ព​ទំព័រ​ចុងក្រោយ​មុន</translation>
</message>
<message>
- <source>Print</source>
- <translation type="unfinished">បោះពុម្ព</translation>
+ <source>Other</source>
+ <translation>ផ្សេងៗ​ទៀត</translation>
</message>
<message>
- <source>Page setup</source>
- <translation type="unfinished"></translation>
+ <source>Print in color if available</source>
+ <translation>បោះពុម្ព​តែ​ពណ៌ ប្រសិន​បើ​មាន</translation>
</message>
<message>
- <source>Close</source>
- <translation type="unfinished">បិទ</translation>
+ <source>Double side printing</source>
+ <translation>បោះពុម្ព​ទាំងសង​ខាង</translation>
</message>
-</context>
-<context>
- <name>QPrintPropertiesWidget</name>
<message>
- <source>Form</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Page</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Advanced</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>QPrintSettingsOutput</name>
- <message>
- <source>Form</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Copies</source>
- <translation type="unfinished">ច្បាប់ចម្លង</translation>
- </message>
- <message>
- <source>Print range</source>
- <translation type="unfinished">ជួរ​បោះពុម្ព</translation>
- </message>
- <message>
- <source>Print all</source>
- <translation type="unfinished">បោះពុម្ព​ទាំង​អស់</translation>
- </message>
- <message>
- <source>Pages from</source>
- <translation type="unfinished">ទំព័រ​ពី</translation>
- </message>
- <message>
- <source>to</source>
- <translation type="unfinished">ដល់</translation>
- </message>
- <message>
- <source>Selection</source>
- <translation type="unfinished">ជម្រើស</translation>
- </message>
- <message>
- <source>Output Settings</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Copies:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Collate</source>
- <translation type="unfinished">តម្រៀប​តាម​លំដាប់</translation>
- </message>
- <message>
- <source>Reverse</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Options</source>
- <translation type="unfinished">ជម្រើស</translation>
- </message>
- <message>
- <source>Color Mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Color</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Grayscale</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Duplex Printing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>None</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Long side</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Short side</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>QPrintWidget</name>
- <message>
- <source>Form</source>
- <translation type="unfinished"></translation>
+ <source>File %1 is not writable.
+Please choose a different file name.</source>
+ <translation>ឯកសារ %1 មិន​អាច​សរសេរ​បាន ។
+សូម​ជ្រើស​ឈ្មោះ​ឯកសារ​ផ្សេង ។</translation>
</message>
<message>
- <source>Printer</source>
- <translation type="unfinished">ម៉ាស៊ីន​បោះពុម្ព</translation>
+ <source>%1 already exists.
+Do you want to overwrite it?</source>
+ <translation>មាន %1 រួច​ហើយ ។
+តើ​អ្នក​ចង់​សរសេរ​ជាន់លើ​វា​ដែរឬទេ ?</translation>
</message>
<message>
- <source>&amp;Name:</source>
- <translation type="unfinished"></translation>
+ <source>File exists</source>
+ <translation>មាន​ឯកសារ​រួច​ហើយ</translation>
</message>
<message>
- <source>P&amp;roperties</source>
- <translation type="unfinished"></translation>
+ <source>&lt;qt>Do you want to overwrite it?&lt;/qt></source>
+ <translation>&lt;qt>តើ​អ្នក​ចង់​សរសេរ​ជាន់​លើ​វា​ដែរឬទេ ?&lt;/qt></translation>
</message>
<message>
- <source>Location:</source>
- <translation type="unfinished"></translation>
+ <source>Print selection</source>
+ <translation>បោះពុម្ព​ជម្រើស</translation>
</message>
<message>
- <source>Preview</source>
- <translation type="unfinished"></translation>
+ <source>%1 is a directory.
+Please choose a different file name.</source>
+ <translation>%1 គឺ​ជា​ថត ។
+សូម​ជ្រើស​ឈ្មោះ​ឯកសារ​ផ្សេង ។</translation>
</message>
+ </context>
+ <context>
+ <name>QPrintPropertiesDialog</name>
<message>
- <source>Type:</source>
- <translation type="unfinished"></translation>
+ <source>PPD Properties</source>
+ <translation>លក្ខណៈសម្បត្តិ PPD</translation>
</message>
<message>
- <source>Output &amp;file:</source>
- <translation type="unfinished"></translation>
+ <source>Save</source>
+ <translation>រក្សាទុក</translation>
</message>
<message>
- <source>...</source>
- <translation type="unfinished"></translation>
+ <source>OK</source>
+ <translation>យល់ព្រម</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QProgressDialog</name>
<message>
- <source>Cancel</source>
- <translation>បោះបង់</translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QPushButton</name>
<message>
- <source>Open</source>
- <translation>បើក</translation>
+ <source>Open</source>
+ <translation>បើក</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QRadioButton</name>
<message>
- <source>Check</source>
- <translation>ពិនិត្យ​មើល</translation>
+ <source>Check</source>
+ <translation>ពិនិត្យ​មើល</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QRegExp</name>
<message>
- <source>no error occurred</source>
- <translation>គ្មាន​កំហុស​បានកើត​ឡើង</translation>
+ <source>no error occurred</source>
+ <translation>គ្មាន​កំហុស​បានកើត​ឡើង</translation>
</message>
<message>
- <source>disabled feature used</source>
- <translation>លក្ខណៈពិសេស​ដែលបាន​ប្រើ​ដែល​បាន​បិទ</translation>
+ <source>disabled feature used</source>
+ <translation>លក្ខណៈពិសេស​ដែលបាន​ប្រើ​ដែល​បាន​បិទ</translation>
</message>
<message>
- <source>bad char class syntax</source>
- <translation>វាក្យសម្ព័ន្ធថ្នាក់​តួអក្សរ​មិនល្អ</translation>
+ <source>bad char class syntax</source>
+ <translation>វាក្យសម្ព័ន្ធថ្នាក់​តួអក្សរ​មិនល្អ</translation>
</message>
<message>
- <source>bad lookahead syntax</source>
- <translation>វាក្យសម្ព័ន្ធ lookahead មិន​ល្អ</translation>
+ <source>bad lookahead syntax</source>
+ <translation>វាក្យសម្ព័ន្ធ lookahead មិន​ល្អ</translation>
</message>
<message>
- <source>bad repetition syntax</source>
- <translation>វាក្យសម្ព័ន្ធ​ធ្វើ​ឡើង​វិញ​មិនល្អ</translation>
+ <source>bad repetition syntax</source>
+ <translation>វាក្យសម្ព័ន្ធ​ធ្វើ​ឡើង​វិញ​មិនល្អ</translation>
</message>
<message>
- <source>invalid octal value</source>
- <translation>តម្លៃ​គោលដប់​មិន​ត្រឹមត្រូវ</translation>
+ <source>invalid octal value</source>
+ <translation>តម្លៃ​គោលដប់​មិន​ត្រឹមត្រូវ</translation>
</message>
<message>
- <source>missing left delim</source>
- <translation>បាត់ delim ដែល​នៅ​សល់​</translation>
+ <source>missing left delim</source>
+ <translation>បាត់ delim ដែល​នៅ​សល់​</translation>
</message>
<message>
- <source>unexpected end</source>
- <translation>បញ្ចប់​ដោយ​មិន​រំពឹង​ទុក</translation>
+ <source>unexpected end</source>
+ <translation>បញ្ចប់​ដោយ​មិន​រំពឹង​ទុក</translation>
</message>
<message>
- <source>met internal limit</source>
- <translation>ដល់​​ដែន​កំណត់​ខាង​ក្នុង</translation>
+ <source>met internal limit</source>
+ <translation>ដល់​​ដែន​កំណត់​ខាង​ក្នុង</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QSQLite2Driver</name>
<message>
- <source>Error to open database</source>
- <translation>កំហុស​ក្នុងការ​បើក​មូលដ្ឋាន​ទិន្នន័យ</translation>
+ <source>Error to open database</source>
+ <translation>កំហុស​ក្នុងការ​បើក​មូលដ្ឋាន​ទិន្នន័យ</translation>
</message>
<message>
- <source>Unable to begin transaction</source>
- <translation>មិនអាច​ចាប់ផ្ដើម​ដំណើរ​ផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Unable to begin transaction</source>
+ <translation>មិនអាច​ចាប់ផ្ដើម​ដំណើរ​ផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
<message>
- <source>Unable to commit transaction</source>
- <translation>មិនអាច​បញ្ជូន​ដំណើរ​ផ្លាស់ប្ដូរ</translation>
+ <source>Unable to commit transaction</source>
+ <translation>មិនអាច​បញ្ជូន​ដំណើរ​ផ្លាស់ប្ដូរ</translation>
</message>
<message>
- <source>Unable to rollback Transaction</source>
- <translation>មិនអាច​ជម្រះ​ដំណើរ​ផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Unable to rollback Transaction</source>
+ <translation>មិនអាច​ជម្រះ​ដំណើរ​ផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QSQLite2Result</name>
<message>
- <source>Unable to fetch results</source>
- <translation>មិនអាច​ទៅ​យក​លទ្ធផល​បានទេ</translation>
+ <source>Unable to fetch results</source>
+ <translation>មិនអាច​ទៅ​យក​លទ្ធផល​បានទេ</translation>
</message>
<message>
- <source>Unable to execute statement</source>
- <translation>មិនអាច​ប្រតិបត្តិ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
+ <source>Unable to execute statement</source>
+ <translation>មិនអាច​ប្រតិបត្តិ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QSQLiteDriver</name>
<message>
- <source>Error opening database</source>
- <translation>កំហុសក្នុងកា​របើក​មូលដ្ឋាន​ទិន្នន័យ</translation>
+ <source>Error opening database</source>
+ <translation>កំហុសក្នុងកា​របើក​មូលដ្ឋាន​ទិន្នន័យ</translation>
</message>
<message>
- <source>Error closing database</source>
- <translation>កំហុស​ក្នុងការ​បិទ​មូលដ្ឋាន​ទិន្នន័យ</translation>
+ <source>Error closing database</source>
+ <translation>កំហុស​ក្នុងការ​បិទ​មូលដ្ឋាន​ទិន្នន័យ</translation>
</message>
<message>
- <source>Unable to begin transaction</source>
- <translation>មិនអាច​ចាប់ផ្ដើម​ដំណើរ​ផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Unable to begin transaction</source>
+ <translation>មិនអាច​ចាប់ផ្ដើម​ដំណើរ​ផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
<message>
- <source>Unable to commit transaction</source>
- <translation>មិនអាច​បញ្ជូន​ដំណើរ​ផ្លាស់ប្ដូរ​បានទេ</translation>
+ <source>Unable to commit transaction</source>
+ <translation>មិនអាច​បញ្ជូន​ដំណើរ​ផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
<message>
- <source>Unable to rollback transaction</source>
- <translation type="unfinished"></translation>
+ <source>Unable to roll back transaction</source>
+ <translation>មិនអាច​ជម្រះ​ដំណើរ​ផ្លាស់ប្ដូរ​បានទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QSQLiteResult</name>
<message>
- <source>Unable to fetch row</source>
- <translation>មិនអាច​ទៅ​យក​ឥឡូវ​បានទេ</translation>
+ <source>Unable to fetch row</source>
+ <translation>មិនអាច​ទៅ​យក​ឥឡូវ​បានទេ</translation>
</message>
<message>
- <source>Unable to execute statement</source>
- <translation>មិនអាច​ប្រតិបត្តិ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
+ <source>Unable to execute statement</source>
+ <translation>មិនអាច​ប្រតិបត្តិ​សេចក្ដី​ថ្លែងការណ៍​បានទេ</translation>
</message>
<message>
- <source>Unable to reset statement</source>
- <translation>មិនអាច​កំណត់​សេចក្ដី​ថ្លែងការណ៍​ឡើង​វិញ​បានទេ</translation>
+ <source>Unable to reset statement</source>
+ <translation>មិនអាច​កំណត់​សេចក្ដី​ថ្លែងការណ៍​ឡើង​វិញ​បានទេ</translation>
</message>
<message>
- <source>Unable to bind parameters</source>
- <translation>មិនអាច​ចង​ប៉ារ៉ាម៉ែត្រ​បានទេ</translation>
+ <source>Unable to bind parameters</source>
+ <translation>មិនអាច​ចង​ប៉ារ៉ាម៉ែត្រ​បានទេ</translation>
</message>
<message>
- <source>Parameter count mismatch</source>
- <translation>ចំនួន​ប៉ារ៉ាម៉ែត្រ​មិន​ផ្គូផ្គង​ទេ</translation>
+ <source>Parameter count mismatch</source>
+ <translation>ចំនួន​ប៉ារ៉ាម៉ែត្រ​មិន​ផ្គូផ្គង​ទេ</translation>
</message>
- <message>
- <source>No query</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>QScrollBar</name>
<message>
- <source>Scroll here</source>
- <translation>រមូរ​នៅ​ទីនេះ</translation>
- </message>
- <message>
- <source>Left edge</source>
- <translation>គែម​ឆ្វេង</translation>
- </message>
- <message>
- <source>Top</source>
- <translation>កំពូល</translation>
- </message>
- <message>
- <source>Right edge</source>
- <translation>គែម​ស្ដាំ</translation>
- </message>
- <message>
- <source>Bottom</source>
- <translation>បាត</translation>
- </message>
- <message>
- <source>Page left</source>
- <translation>ទំព័រ​ឆ្វេង</translation>
- </message>
- <message>
- <source>Page up</source>
- <translation>ទំព័រ​លើ</translation>
- </message>
- <message>
- <source>Page right</source>
- <translation>ទំព័រ​ស្ដាំ</translation>
- </message>
- <message>
- <source>Page down</source>
- <translation>ទំព័រ​ក្រោម</translation>
- </message>
- <message>
- <source>Scroll left</source>
- <translation>រមូរ​​ឆ្វេង</translation>
- </message>
- <message>
- <source>Scroll up</source>
- <translation>រមូរ​ឡើង​លើ</translation>
- </message>
- <message>
- <source>Scroll right</source>
- <translation>រមូរ​ទៅ​ស្ដាំ</translation>
- </message>
- <message>
- <source>Scroll down</source>
- <translation>រមូរ​ចុះក្រោម</translation>
+ <source>Scroll here</source>
+ <translation>រមូរ​នៅ​ទីនេះ</translation>
</message>
<message>
- <source>Line up</source>
- <translation>បន្ទាត់​ឡើង​លើ</translation>
+ <source>Left edge</source>
+ <translation>គែម​ឆ្វេង</translation>
</message>
<message>
- <source>Position</source>
- <translation>ទីតាំង</translation>
+ <source>Top</source>
+ <translation>កំពូល</translation>
</message>
<message>
- <source>Line down</source>
- <translation>បន្ទាត់​ចុះក្រោម</translation>
+ <source>Right edge</source>
+ <translation>គែម​ស្ដាំ</translation>
</message>
-</context>
-<context>
- <name>QSharedMemory</name>
<message>
- <source>%1: unable to set key on lock</source>
- <translation type="unfinished"></translation>
+ <source>Bottom</source>
+ <translation>បាត</translation>
</message>
<message>
- <source>%1: create size is less then 0</source>
- <translation type="unfinished"></translation>
+ <source>Page left</source>
+ <translation>ទំព័រ​ឆ្វេង</translation>
</message>
<message>
- <source>%1: unable to lock</source>
- <translation type="unfinished"></translation>
+ <source>Page up</source>
+ <translation>ទំព័រ​លើ</translation>
</message>
<message>
- <source>%1: unable to unlock</source>
- <translation type="unfinished"></translation>
+ <source>Page right</source>
+ <translation>ទំព័រ​ស្ដាំ</translation>
</message>
<message>
- <source>%1: permission denied</source>
- <translation type="unfinished"></translation>
+ <source>Page down</source>
+ <translation>ទំព័រ​ក្រោម</translation>
</message>
<message>
- <source>%1: already exists</source>
- <translation type="unfinished"></translation>
+ <source>Scroll left</source>
+ <translation>រមូរ​​ឆ្វេង</translation>
</message>
<message>
- <source>%1: doesn&apos;t exists</source>
- <translation type="unfinished"></translation>
+ <source>Scroll up</source>
+ <translation>រមូរ​ឡើង​លើ</translation>
</message>
<message>
- <source>%1: out of resources</source>
- <translation type="unfinished"></translation>
+ <source>Scroll right</source>
+ <translation>រមូរ​ទៅ​ស្ដាំ</translation>
</message>
<message>
- <source>%1: unknown error %2</source>
- <translation type="unfinished"></translation>
+ <source>Scroll down</source>
+ <translation>រមូរ​ចុះក្រោម</translation>
</message>
<message>
- <source>%1: key is empty</source>
- <translation type="unfinished"></translation>
+ <source>Line up</source>
+ <translation>បន្ទាត់​ឡើង​លើ</translation>
</message>
<message>
- <source>%1: unix key file doesn&apos;t exists</source>
- <translation type="unfinished"></translation>
+ <source>Position</source>
+ <translation>ទីតាំង</translation>
</message>
<message>
- <source>%1: ftok failed</source>
- <translation type="unfinished"></translation>
+ <source>Line down</source>
+ <translation>បន្ទាត់​ចុះក្រោម</translation>
</message>
- <message>
- <source>%1: unable to make key</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1: system-imposed size restrictions</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1: not attached</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>QShortcut</name>
<message>
- <source>Space</source>
- <translation>ចន្លោះ</translation>
+ <source>Space</source>
+ <translation>ចន្លោះ</translation>
</message>
<message>
- <source>Esc</source>
- <translation>គេច (Esc)</translation>
+ <source>Esc</source>
+ <translation>គេច (Esc)</translation>
</message>
<message>
- <source>Tab</source>
- <translation>ថេប (Tab)</translation>
+ <source>Tab</source>
+ <translation>ថេប (Tab)</translation>
</message>
<message>
- <source>Backtab</source>
- <translation>ថេប​ថយក្រោយ (Backtab)</translation>
+ <source>Backtab</source>
+ <translation>ថេប​ថយក្រោយ (Backtab)</translation>
</message>
<message>
- <source>Backspace</source>
- <translation>លុបថយក្រោយ (Backspace)</translation>
+ <source>Backspace</source>
+ <translation>លុបថយក្រោយ (Backspace)</translation>
</message>
<message>
- <source>Return</source>
- <translation>Return</translation>
+ <source>Return</source>
+ <translation>Return</translation>
</message>
<message>
- <source>Enter</source>
- <translation>បញ្ចូល (Enter)</translation>
+ <source>Enter</source>
+ <translation>បញ្ចូល (Enter)</translation>
</message>
<message>
- <source>Ins</source>
- <translation>បញ្ចូល (Ins)</translation>
+ <source>Ins</source>
+ <translation>បញ្ចូល (Ins)</translation>
</message>
<message>
- <source>Del</source>
- <translation>លុប (Del)</translation>
+ <source>Del</source>
+ <translation>លុប (Del)</translation>
</message>
<message>
- <source>Pause</source>
- <translation>ផ្អាក</translation>
+ <source>Pause</source>
+ <translation>ផ្អាក</translation>
</message>
<message>
- <source>Print</source>
- <translation>បោះពុម្ព</translation>
+ <source>Print</source>
+ <translation>បោះពុម្ព</translation>
</message>
<message>
- <source>SysReq</source>
- <translation>SysReq</translation>
+ <source>SysReq</source>
+ <translation>SysReq</translation>
</message>
<message>
- <source>Home</source>
- <translation>ដើម (Home)</translation>
+ <source>Home</source>
+ <translation>ដើម (Home)</translation>
</message>
<message>
- <source>End</source>
- <translation>ចុង (End)</translation>
+ <source>End</source>
+ <translation>ចុង (End)</translation>
</message>
<message>
- <source>Left</source>
- <translation>ឆ្វេង</translation>
+ <source>Left</source>
+ <translation>ឆ្វេង</translation>
</message>
<message>
- <source>Up</source>
- <translation>ឡើង​លើ</translation>
+ <source>Up</source>
+ <translation>ឡើង​លើ</translation>
</message>
<message>
- <source>Right</source>
- <translation>ស្ដាំ</translation>
+ <source>Right</source>
+ <translation>ស្ដាំ</translation>
</message>
<message>
- <source>Down</source>
- <translation>ក្រោម</translation>
+ <source>Down</source>
+ <translation>ក្រោម</translation>
</message>
<message>
- <source>PgUp</source>
- <translation>ទំព័រ​លើ (PgUp)</translation>
+ <source>PgUp</source>
+ <translation>ទំព័រ​លើ (PgUp)</translation>
</message>
<message>
- <source>PgDown</source>
- <translation>ទំព័រ​ក្រោម (PgDown)</translation>
+ <source>PgDown</source>
+ <translation>ទំព័រ​ក្រោម (PgDown)</translation>
</message>
<message>
- <source>CapsLock</source>
- <translation>ប្ដូរ​ជាប់ (CapsLock)</translation>
+ <source>CapsLock</source>
+ <translation>ប្ដូរ​ជាប់ (CapsLock)</translation>
</message>
<message>
- <source>NumLock</source>
- <translation>លេខ (NumLock)</translation>
+ <source>NumLock</source>
+ <translation>លេខ (NumLock)</translation>
</message>
<message>
- <source>ScrollLock</source>
- <translation>ScrollLock</translation>
+ <source>ScrollLock</source>
+ <translation>ScrollLock</translation>
</message>
<message>
- <source>Menu</source>
- <translation>ម៉ឺនុយ</translation>
+ <source>Menu</source>
+ <translation>ម៉ឺនុយ</translation>
</message>
<message>
- <source>Help</source>
- <translation>ជំនួយ</translation>
+ <source>Help</source>
+ <translation>ជំនួយ</translation>
</message>
<message>
- <source>Back</source>
- <translation>ថយក្រោយ</translation>
+ <source>Back</source>
+ <translation>ថយក្រោយ</translation>
</message>
<message>
- <source>Forward</source>
- <translation>ទៅមុខ</translation>
+ <source>Forward</source>
+ <translation>ទៅមុខ</translation>
</message>
<message>
- <source>Stop</source>
- <translation>បញ្ឈប់</translation>
+ <source>Stop</source>
+ <translation>បញ្ឈប់</translation>
</message>
<message>
- <source>Refresh</source>
- <translation>ធ្វើ​ឲ្យ​ស្រស់</translation>
+ <source>Refresh</source>
+ <translation>ធ្វើ​ឲ្យ​ស្រស់</translation>
</message>
<message>
- <source>Volume Down</source>
- <translation>បន្ថយ​កម្រិត​សំឡេង</translation>
+ <source>Volume Down</source>
+ <translation>បន្ថយ​កម្រិត​សំឡេង</translation>
</message>
<message>
- <source>Volume Mute</source>
- <translation>ស្ងាត់</translation>
+ <source>Volume Mute</source>
+ <translation>ស្ងាត់</translation>
</message>
<message>
- <source>Volume Up</source>
- <translation>បង្កើន​កម្រិត​សំឡេង</translation>
+ <source>Volume Up</source>
+ <translation>បង្កើន​កម្រិត​សំឡេង</translation>
</message>
<message>
- <source>Bass Boost</source>
- <translation>ការ​ដំឡើង​បាស</translation>
+ <source>Bass Boost</source>
+ <translation>ការ​ដំឡើង​បាស</translation>
</message>
<message>
- <source>Bass Up</source>
- <translation>បង្កើន​បាស</translation>
+ <source>Bass Up</source>
+ <translation>បង្កើន​បាស</translation>
</message>
<message>
- <source>Bass Down</source>
- <translation>បន្ថយ​បាស</translation>
+ <source>Bass Down</source>
+ <translation>បន្ថយ​បាស</translation>
</message>
<message>
- <source>Treble Up</source>
- <translation>បង្កើន​​​សំឡេង​បំពង</translation>
+ <source>Treble Up</source>
+ <translation>បង្កើន​​​សំឡេង​បំពង</translation>
</message>
<message>
- <source>Treble Down</source>
- <translation>បន្ថែម​សំឡេង​បំពង</translation>
+ <source>Treble Down</source>
+ <translation>បន្ថែម​សំឡេង​បំពង</translation>
</message>
<message>
- <source>Media Play</source>
- <translation>ចាក់​មេឌៀ</translation>
+ <source>Media Play</source>
+ <translation>ចាក់​មេឌៀ</translation>
</message>
<message>
- <source>Media Stop</source>
- <translation>បញ្ឈប់​មេឌៀ</translation>
+ <source>Media Stop</source>
+ <translation>បញ្ឈប់​មេឌៀ</translation>
</message>
<message>
- <source>Media Previous</source>
- <translation>មេឌៀ​មុន</translation>
+ <source>Media Previous</source>
+ <translation>មេឌៀ​មុន</translation>
</message>
<message>
- <source>Media Next</source>
- <translation>មេឌៀ​ក្រោយ</translation>
+ <source>Media Next</source>
+ <translation>មេឌៀ​ក្រោយ</translation>
</message>
<message>
- <source>Media Record</source>
- <translation>ថត​មេឌៀ</translation>
+ <source>Media Record</source>
+ <translation>ថត​មេឌៀ</translation>
</message>
<message>
- <source>Favorites</source>
- <translation>សំណព្វ</translation>
+ <source>Favorites</source>
+ <translation>សំណព្វ</translation>
</message>
<message>
- <source>Search</source>
- <translation>ស្វែងរក</translation>
+ <source>Search</source>
+ <translation>ស្វែងរក</translation>
</message>
<message>
- <source>Standby</source>
- <translation>រង់ចាំ</translation>
+ <source>Standby</source>
+ <translation>រង់ចាំ</translation>
</message>
<message>
- <source>Open URL</source>
- <translation>បើក URL</translation>
+ <source>Open URL</source>
+ <translation>បើក URL</translation>
</message>
<message>
- <source>Launch Mail</source>
- <translation>ចាប់ផ្ដើម​សំបុត្រ</translation>
+ <source>Launch Mail</source>
+ <translation>ចាប់ផ្ដើម​សំបុត្រ</translation>
</message>
<message>
- <source>Launch Media</source>
- <translation>ចាប់ផ្ដើម​មេឌៀ</translation>
+ <source>Launch Media</source>
+ <translation>ចាប់ផ្ដើម​មេឌៀ</translation>
</message>
<message>
- <source>Launch (0)</source>
- <translation>ចាប់ផ្ដើម (០)</translation>
+ <source>Launch (0)</source>
+ <translation>ចាប់ផ្ដើម (០)</translation>
</message>
<message>
- <source>Launch (1)</source>
- <translation>ចាប់ផ្ដើម (១)</translation>
+ <source>Launch (1)</source>
+ <translation>ចាប់ផ្ដើម (១)</translation>
</message>
<message>
- <source>Launch (2)</source>
- <translation>ចាប់ផ្ដើម (២)</translation>
+ <source>Launch (2)</source>
+ <translation>ចាប់ផ្ដើម (២)</translation>
</message>
<message>
- <source>Launch (3)</source>
- <translation>ចាប់ផ្ដើម (៣)</translation>
+ <source>Launch (3)</source>
+ <translation>ចាប់ផ្ដើម (៣)</translation>
</message>
<message>
- <source>Launch (4)</source>
- <translation>ចាប់ផ្ដើម (៤)</translation>
+ <source>Launch (4)</source>
+ <translation>ចាប់ផ្ដើម (៤)</translation>
</message>
<message>
- <source>Launch (5)</source>
- <translation>ចាប់ផ្ដើម (៥)</translation>
+ <source>Launch (5)</source>
+ <translation>ចាប់ផ្ដើម (៥)</translation>
</message>
<message>
- <source>Launch (6)</source>
- <translation>ចាប់ផ្ដើម (៦)</translation>
+ <source>Launch (6)</source>
+ <translation>ចាប់ផ្ដើម (៦)</translation>
</message>
<message>
- <source>Launch (7)</source>
- <translation>ចាប់ផ្ដើម (៧)</translation>
+ <source>Launch (7)</source>
+ <translation>ចាប់ផ្ដើម (៧)</translation>
</message>
<message>
- <source>Launch (8)</source>
- <translation>ចាប់ផ្ដើម (៨)</translation>
+ <source>Launch (8)</source>
+ <translation>ចាប់ផ្ដើម (៨)</translation>
</message>
<message>
- <source>Launch (9)</source>
- <translation>ចាប់ផ្ដើម (៩)</translation>
+ <source>Launch (9)</source>
+ <translation>ចាប់ផ្ដើម (៩)</translation>
</message>
<message>
- <source>Launch (A)</source>
- <translation>ចាប់ផ្ដើម (A)</translation>
+ <source>Launch (A)</source>
+ <translation>ចាប់ផ្ដើម (A)</translation>
</message>
<message>
- <source>Launch (B)</source>
- <translation>ចាប់ផ្ដើម (B)</translation>
+ <source>Launch (B)</source>
+ <translation>ចាប់ផ្ដើម (B)</translation>
</message>
<message>
- <source>Launch (C)</source>
- <translation>ចាប់ផ្ដើម (C)</translation>
+ <source>Launch (C)</source>
+ <translation>ចាប់ផ្ដើម (C)</translation>
</message>
<message>
- <source>Launch (D)</source>
- <translation>ចាប់ផ្ដើម (D)</translation>
+ <source>Launch (D)</source>
+ <translation>ចាប់ផ្ដើម (D)</translation>
</message>
<message>
- <source>Launch (E)</source>
- <translation>ចាប់ផ្ដើម (E)</translation>
+ <source>Launch (E)</source>
+ <translation>ចាប់ផ្ដើម (E)</translation>
</message>
<message>
- <source>Launch (F)</source>
- <translation>ចាប់ផ្ដើម (F)</translation>
+ <source>Launch (F)</source>
+ <translation>ចាប់ផ្ដើម (F)</translation>
</message>
<message>
- <source>Print Screen</source>
- <translation>បោះពុម្ព​អេក្រង់</translation>
+ <source>Print Screen</source>
+ <translation>បោះពុម្ព​អេក្រង់</translation>
</message>
<message>
- <source>Page Up</source>
- <translation>ទំព័រ​លើ</translation>
+ <source>Page Up</source>
+ <translation>ទំព័រ​លើ</translation>
</message>
<message>
- <source>Page Down</source>
- <translation>ទំព័រ​ក្រោម</translation>
+ <source>Page Down</source>
+ <translation>ទំព័រ​ក្រោម</translation>
</message>
<message>
- <source>Caps Lock</source>
- <translation>ប្ដូរជាប់</translation>
+ <source>Caps Lock</source>
+ <translation>ប្ដូរជាប់</translation>
</message>
<message>
- <source>Num Lock</source>
- <translation>លេខ</translation>
+ <source>Num Lock</source>
+ <translation>លេខ</translation>
</message>
<message>
- <source>Number Lock</source>
- <translation>លេខ</translation>
+ <source>Number Lock</source>
+ <translation>លេខ</translation>
</message>
<message>
- <source>Scroll Lock</source>
- <translation>Scroll Lock</translation>
+ <source>Scroll Lock</source>
+ <translation>Scroll Lock</translation>
</message>
<message>
- <source>Insert</source>
- <translation>បញ្ជាន់ (Insert)</translation>
+ <source>Insert</source>
+ <translation>បញ្ជាន់ (Insert)</translation>
</message>
<message>
- <source>Delete</source>
- <translation>លុប</translation>
+ <source>Delete</source>
+ <translation>លុប</translation>
</message>
<message>
- <source>Escape</source>
- <translation>គេច (Escape)</translation>
+ <source>Escape</source>
+ <translation>គេច (Escape)</translation>
</message>
<message>
- <source>System Request</source>
- <translation>សំណើ​ប្រព័ន្ធ</translation>
+ <source>System Request</source>
+ <translation>សំណើ​ប្រព័ន្ធ</translation>
</message>
<message>
- <source>Select</source>
- <translation>ជ្រើស</translation>
+ <source>Select</source>
+ <translation>ជ្រើស</translation>
</message>
<message>
- <source>Yes</source>
- <translation>បាទ/ចាស</translation>
+ <source>Yes</source>
+ <translation>បាទ/ចាស</translation>
</message>
<message>
- <source>No</source>
- <translation>ទេ</translation>
+ <source>No</source>
+ <translation>ទេ</translation>
</message>
<message>
- <source>Context1</source>
- <translation>បរិបទ ១</translation>
+ <source>Context1</source>
+ <translation>បរិបទ ១</translation>
</message>
<message>
- <source>Context2</source>
- <translation>បរិបទ ២</translation>
+ <source>Context2</source>
+ <translation>បរិបទ ២</translation>
</message>
<message>
- <source>Context3</source>
- <translation>បរិបទ ៣</translation>
+ <source>Context3</source>
+ <translation>បរិបទ ៣</translation>
</message>
<message>
- <source>Context4</source>
- <translation>បរិបទ ៤</translation>
+ <source>Context4</source>
+ <translation>បរិបទ ៤</translation>
</message>
<message>
- <source>Call</source>
- <translation>ហៅ</translation>
+ <source>Call</source>
+ <translation>ហៅ</translation>
</message>
<message>
- <source>Hangup</source>
- <translation>ព្យួរ</translation>
+ <source>Hangup</source>
+ <translation>ព្យួរ</translation>
</message>
<message>
- <source>Flip</source>
- <translation>ត្រឡប់</translation>
+ <source>Flip</source>
+ <translation>ត្រឡប់</translation>
</message>
<message>
- <source>Ctrl</source>
- <translation>បញ្ជា​ (Ctrl)</translation>
+ <source>Ctrl</source>
+ <translation>បញ្ជា​ (Ctrl)</translation>
</message>
<message>
- <source>Shift</source>
- <translation>ប្ដូរ (Shift)</translation>
+ <source>Shift</source>
+ <translation>ប្ដូរ (Shift)</translation>
</message>
<message>
- <source>Alt</source>
- <translation>ជំនួស (Alt)</translation>
+ <source>Alt</source>
+ <translation>ជំនួស (Alt)</translation>
</message>
<message>
- <source>Meta</source>
- <translation>មេតា</translation>
+ <source>Meta</source>
+ <translation>មេតា</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>F%1</source>
- <translation>F%1</translation>
+ <source>F%1</source>
+ <translation>F%1</translation>
</message>
<message>
- <source>Home Page</source>
- <translation>គេហទំព័រ</translation>
+ <source>Home Page</source>
+ <translation>គេហទំព័រ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QSlider</name>
<message>
- <source>Page left</source>
- <translation>ទំព័រ​ឆ្វេង</translation>
+ <source>Page left</source>
+ <translation>ទំព័រ​ឆ្វេង</translation>
</message>
<message>
- <source>Page up</source>
- <translation>ទំព័រ​លើ</translation>
+ <source>Page up</source>
+ <translation>ទំព័រ​លើ</translation>
</message>
<message>
- <source>Position</source>
- <translation>ទីតាំង</translation>
+ <source>Position</source>
+ <translation>ទីតាំង</translation>
</message>
<message>
- <source>Page right</source>
- <translation>ទំព័រ​ស្ដាំ</translation>
+ <source>Page right</source>
+ <translation>ទំព័រ​ស្ដាំ</translation>
</message>
<message>
- <source>Page down</source>
- <translation>ទំព័រ​ក្រោម</translation>
+ <source>Page down</source>
+ <translation>ទំព័រ​ក្រោម</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QSocks5SocketEngine</name>
<message>
- <source>Socks5 timeout error connecting to socks server</source>
- <translation>កំហុស​ក្នុងការ​អស់ពេល​រន្ធ ៥ ក្នុងការ​តភ្ជាប់​ទៅកាន់ម៉ាស៊ីន​បម្រើ​រន្ធ</translation>
+ <source>Socks5 timeout error connecting to socks server</source>
+ <translation>កំហុស​ក្នុងការ​អស់ពេល​រន្ធ ៥ ក្នុងការ​តភ្ជាប់​ទៅកាន់ម៉ាស៊ីន​បម្រើ​រន្ធ</translation>
</message>
- <message>
- <source>Network operation timed out</source>
- <translation type="unfinished">អស់ពេល​ប្រតិបត្តិការ​បណ្ដាញ</translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>QSpinBox</name>
<message>
- <source>More</source>
- <translation>ច្រើនជាង</translation>
+ <source>More</source>
+ <translation>ច្រើនជាង</translation>
</message>
<message>
- <source>Less</source>
- <translation>តិចជាង</translation>
+ <source>Less</source>
+ <translation>តិចជាង</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QSql</name>
<message>
- <source>Delete</source>
- <translation>លុប</translation>
+ <source>Delete</source>
+ <translation>លុប</translation>
</message>
<message>
- <source>Delete this record?</source>
- <translation>លុប​កំណត់​ត្រា​នេះ​ឬ ?</translation>
+ <source>Delete this record?</source>
+ <translation>លុប​កំណត់​ត្រា​នេះ​ឬ ?</translation>
</message>
<message>
- <source>Yes</source>
- <translation>បាទ/ចាស</translation>
+ <source>Yes</source>
+ <translation>បាទ/ចាស</translation>
</message>
<message>
- <source>No</source>
- <translation>ទេ</translation>
+ <source>No</source>
+ <translation>ទេ</translation>
</message>
<message>
- <source>Insert</source>
- <translation>បញ្ចូល</translation>
+ <source>Insert</source>
+ <translation>បញ្ចូល</translation>
</message>
<message>
- <source>Update</source>
- <translation>ធ្វើ​ឲ្យ​ទាន់សម័យ</translation>
+ <source>Update</source>
+ <translation>ធ្វើ​ឲ្យ​ទាន់សម័យ</translation>
</message>
<message>
- <source>Save edits?</source>
- <translation>រក្សាទុក​ការ​កែសម្រួល ?</translation>
+ <source>Save edits?</source>
+ <translation>រក្សាទុក​ការ​កែសម្រួល ?</translation>
</message>
<message>
- <source>Cancel</source>
- <translation>បោះបង់</translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>Confirm</source>
- <translation>អះអាង</translation>
+ <source>Confirm</source>
+ <translation>អះអាង</translation>
</message>
<message>
- <source>Cancel your edits?</source>
- <translation>បោះបង់​ការ​កែសម្រួល​របស់​អ្នកឬ ?</translation>
+ <source>Cancel your edits?</source>
+ <translation>បោះបង់​ការ​កែសម្រួល​របស់​អ្នកឬ ?</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QSslSocket</name>
<message>
- <source>Unable to write data: %1</source>
- <translation>មិនអាច​សរសេរ​ទិន្នន័យ ៖ %1</translation>
+ <source>Unable to write data: %1</source>
+ <translation>មិនអាច​សរសេរ​ទិន្នន័យ ៖ %1</translation>
</message>
<message>
- <source>Error while reading: %1</source>
- <translation>កំហុស​ខណៈពេល​អាន ៖ %1</translation>
+ <source>Error while reading: %1</source>
+ <translation>កំហុស​ខណៈពេល​អាន ៖ %1</translation>
</message>
<message>
- <source>Error during SSL handshake: %1</source>
- <translation>កំហុស​កំឡុង​ពេល​ភ្ជាប់ SSL ៖ %1</translation>
+ <source>Error during SSL handshake: %1</source>
+ <translation>កំហុស​កំឡុង​ពេល​ភ្ជាប់ SSL ៖ %1</translation>
</message>
<message>
- <source>Error creating SSL context (%1)</source>
- <translation>កំហុស​ក្នុងកា​របង្កើត​បរិបទ SSL (%1)</translation>
+ <source>Error creating SSL context (%1)</source>
+ <translation>កំហុស​ក្នុងកា​របង្កើត​បរិបទ SSL (%1)</translation>
</message>
<message>
- <source>Invalid or empty cipher list (%1)</source>
- <translation>បញ្ជី​អក្សរ​សម្ងាត់​ទទេ ឬ​មិន​ត្រឹមត្រូវ (%1)</translation>
+ <source>Invalid or empty cipher list (%1)</source>
+ <translation>បញ្ជី​អក្សរ​សម្ងាត់​ទទេ ឬ​មិន​ត្រឹមត្រូវ (%1)</translation>
</message>
<message>
- <source>Error creating SSL session, %1</source>
- <translation>កំហុស​ក្នុងកា​របង្កើត​សម័យ SSL %1</translation>
+ <source>Error creating SSL session, %1</source>
+ <translation>កំហុស​ក្នុងកា​របង្កើត​សម័យ SSL %1</translation>
</message>
<message>
- <source>Error creating SSL session: %1</source>
- <translation>កំហុស​ក្នុងការ​បង្កើត​សម័យ SSL ៖ %1</translation>
+ <source>Error creating SSL session: %1</source>
+ <translation>កំហុស​ក្នុងការ​បង្កើត​សម័យ SSL ៖ %1</translation>
</message>
<message>
- <source>Cannot provide a certificate with no key, %1</source>
- <translation>មិនអាច​ផ្ដល់​វិញ្ញាបនបត្រ​ដែល​គ្មាន​សោ %1 បានទេ</translation>
+ <source>Cannot provide a certificate with no key, %1</source>
+ <translation>មិនអាច​ផ្ដល់​វិញ្ញាបនបត្រ​ដែល​គ្មាន​សោ %1 បានទេ</translation>
</message>
<message>
- <source>Error loading local certificate, %1</source>
- <translation>កំហុស​ក្នុងការ​ផ្ទុក​វិញ្ញាបនបត្រ %1</translation>
+ <source>Error loading local certificate, %1</source>
+ <translation>កំហុស​ក្នុងការ​ផ្ទុក​វិញ្ញាបនបត្រ %1</translation>
</message>
<message>
- <source>Error loading private key, %1</source>
- <translation>កំហុស​ក្នុងការ​ផ្ទុក​សោ​ឯកជន %1</translation>
+ <source>Error loading private key, %1</source>
+ <translation>កំហុស​ក្នុងការ​ផ្ទុក​សោ​ឯកជន %1</translation>
</message>
<message>
- <source>Private key does not certificate public key, %1</source>
- <translation type="unfinished"></translation>
+ <source>Private key do not certificate public key, %1</source>
+ <translation>សោ​ឯកជន​មិន​មែនជា​សោ​សាធារណៈ​របស់​វិញ្ញាបនបត្រ %1</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QTDSDriver</name>
<message>
- <source>Unable to open connection</source>
- <translation>មិនអាច​បើក​ការ​តភ្ជាប់​បានទេ</translation>
+ <source>Unable to open connection</source>
+ <translation>មិនអាច​បើក​ការ​តភ្ជាប់​បានទេ</translation>
</message>
<message>
- <source>Unable to use database</source>
- <translation>មិនអាច​ប្រើ​មូលដ្ឋាន​ទិន្នន័យ​បានទេ</translation>
+ <source>Unable to use database</source>
+ <translation>មិនអាច​ប្រើ​មូលដ្ឋាន​ទិន្នន័យ​បានទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QTabBar</name>
<message>
- <source>Scroll Left</source>
- <translation>រមូរ​ទៅ​ឆ្វេង</translation>
+ <source>Scroll Left</source>
+ <translation>រមូរ​ទៅ​ឆ្វេង</translation>
+ </message>
+ <message>
+ <source>Scroll Right</source>
+ <translation>រមូរ​ទៅ​ស្ដាំ</translation>
</message>
+ </context>
+ <context>
+ <name>QTcpServer</name>
<message>
- <source>Scroll Right</source>
- <translation>រមូរ​ទៅ​ស្ដាំ</translation>
+ <source>Socket operation unsupported</source>
+ <translation>មិនគាំទ្រ​ប្រតិបត្តិការ​រន្ធ​ទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QTextControl</name>
<message>
- <source>&amp;Undo</source>
- <translation>មិនធ្វើវិញ</translation>
+ <source>&amp;Undo</source>
+ <translation>មិនធ្វើវិញ</translation>
</message>
<message>
- <source>&amp;Redo</source>
- <translation>ធ្វើវិញ</translation>
+ <source>&amp;Redo</source>
+ <translation>ធ្វើវិញ</translation>
</message>
<message>
- <source>Cu&amp;t</source>
- <translation>កាត់</translation>
+ <source>Cu&amp;t</source>
+ <translation>កាត់</translation>
</message>
<message>
- <source>&amp;Copy</source>
- <translation>ចម្លង</translation>
+ <source>&amp;Copy</source>
+ <translation>ចម្លង</translation>
</message>
<message>
- <source>Copy &amp;Link Location</source>
- <translation>ចម្លង​ទីតាំង​តំណ</translation>
+ <source>Copy &amp;Link Location</source>
+ <translation>ចម្លង​ទីតាំង​តំណ</translation>
</message>
<message>
- <source>&amp;Paste</source>
- <translation>បិទភ្ជាប់</translation>
+ <source>&amp;Paste</source>
+ <translation>បិទភ្ជាប់</translation>
</message>
<message>
- <source>Delete</source>
- <translation>លុប</translation>
+ <source>Delete</source>
+ <translation>លុប</translation>
</message>
<message>
- <source>Select All</source>
- <translation>ជ្រើស​ទាំង​អស់</translation>
+ <source>Select All</source>
+ <translation>ជ្រើស​ទាំង​អស់</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QToolButton</name>
<message>
- <source>Press</source>
- <translation>ចុច</translation>
+ <source>Press</source>
+ <translation>ចុច</translation>
</message>
<message>
- <source>Open</source>
- <translation>បើក</translation>
+ <source>Open</source>
+ <translation>បើក</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QUdpSocket</name>
<message>
- <source>This platform does not support IPv6</source>
- <translation>វេទិកា​នេះ​មិនគាំទ្រ IPv6 នោះទេ</translation>
+ <source>This platform does not support IPv6</source>
+ <translation>វេទិកា​នេះ​មិនគាំទ្រ IPv6 នោះទេ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QUndoGroup</name>
<message>
- <source>Undo</source>
- <translation>មិនធ្វើ​វិញ</translation>
+ <source>Undo</source>
+ <translation>មិនធ្វើ​វិញ</translation>
</message>
<message>
- <source>Redo</source>
- <translation>ធ្វើវិញ</translation>
+ <source>Redo</source>
+ <translation>ធ្វើវិញ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QUndoModel</name>
<message>
- <source>&lt;empty&gt;</source>
- <translation>&lt;ទទេ&gt;</translation>
+ <source>&lt;empty></source>
+ <translation>&lt;ទទេ></translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QUndoStack</name>
<message>
- <source>Undo</source>
- <translation>មិនធ្វើវិញ</translation>
+ <source>Undo</source>
+ <translation>មិនធ្វើវិញ</translation>
</message>
<message>
- <source>Redo</source>
- <translation>ធ្វើ​វិញ</translation>
+ <source>Redo</source>
+ <translation>ធ្វើ​វិញ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QUnicodeControlCharacterMenu</name>
<message>
- <source>LRM Left-to-right mark</source>
- <translation>សញ្ញា​ពី​ឆ្វេង​ទៅ​ស្ដាំ LRM</translation>
- </message>
- <message>
- <source>RLM Right-to-left mark</source>
- <translation>សញ្ញា​សម្គាល់​ពី​ស្ដាំ​ទៅ​ឆ្វេង</translation>
- </message>
- <message>
- <source>ZWJ Zero width joiner</source>
- <translation>ZWJ (Zero width joiner)</translation>
- </message>
- <message>
- <source>ZWNJ Zero width non-joiner</source>
- <translation>ZWNJ (Zero width non-joiner)</translation>
- </message>
- <message>
- <source>ZWSP Zero width space</source>
- <translation>ZWSP (Zero width space)</translation>
- </message>
- <message>
- <source>LRE Start of left-to-right embedding</source>
- <translation>LRE ចាប់ផ្ដើម​បង្កើត​ពី​ឆ្វេង​ទៅ​ស្ដាំ</translation>
- </message>
- <message>
- <source>RLE Start of right-to-left embedding</source>
- <translation>RLE ចាប់ផ្ដើម​បង្កប់​ពី​ស្ដាំ​ទៅ​ឆ្វេង</translation>
- </message>
- <message>
- <source>LRO Start of left-to-right override</source>
- <translation>LRO ចាប់ផ្ដើម​បដិសេធ​ពី​ឆ្វេង​ទៅ​ស្ដាំ</translation>
- </message>
- <message>
- <source>RLO Start of right-to-left override</source>
- <translation>RLO ចាប់ផ្ដើម​បដិសេធ​ពី​ស្ដាំ​ទៅ​ឆ្វេង</translation>
- </message>
- <message>
- <source>PDF Pop directional formatting</source>
- <translation>PDF (Pop directional formatting)</translation>
- </message>
- <message>
- <source>Insert Unicode control character</source>
- <translation>បញ្ចូល​តួអក្សរ​បញ្ជា​យូនីកូដ</translation>
- </message>
-</context>
-<context>
- <name>QWebFrame</name>
- <message>
- <source>Request cancelled</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Request blocked</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Cannot show URL</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Frame load interruped by policy change</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Cannot show mimetype</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>File does not exist</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>QWebPage</name>
- <message>
- <source>Bad HTTP request</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Submit</source>
- <comment>default label for Submit buttons in forms on web pages</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Submit</source>
- <comment>Submit (input element) alt text for &lt;input&gt; elements with no alt, title, or value</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Reset</source>
- <comment>default label for Reset buttons in forms on web pages</comment>
- <translation type="unfinished">កំណត់​ឡើង​វិញ</translation>
- </message>
- <message>
- <source>This is a searchable index. Enter search keywords: </source>
- <comment>text that appears at the start of nearly-obsolete web pages in the form of a &apos;searchable index&apos;</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Choose File</source>
- <comment>title for file button used in HTML forms</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>No file selected</source>
- <comment>text to display in file button used in HTML forms when no file is selected</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Open in New Window</source>
- <comment>Open in New Window context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Save Link...</source>
- <comment>Download Linked File context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Copy Link</source>
- <comment>Copy Link context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Open Image</source>
- <comment>Open Image in New Window context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Save Image</source>
- <comment>Download Image context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Copy Image</source>
- <comment>Copy Link context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Open Frame</source>
- <comment>Open Frame in New Window context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Copy</source>
- <comment>Copy context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Go Back</source>
- <comment>Back context menu item</comment>
- <translation type="unfinished">ទៅ​ក្រោយ</translation>
- </message>
- <message>
- <source>Go Forward</source>
- <comment>Forward context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Stop</source>
- <comment>Stop context menu item</comment>
- <translation type="unfinished">បញ្ឈប់</translation>
- </message>
- <message>
- <source>Reload</source>
- <comment>Reload context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Cut</source>
- <comment>Cut context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Paste</source>
- <comment>Paste context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>No Guesses Found</source>
- <comment>No Guesses Found context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Ignore</source>
- <comment>Ignore Spelling context menu item</comment>
- <translation type="unfinished">មិនអើពើ</translation>
+ <source>LRM Left-to-right mark</source>
+ <translation>សញ្ញា​ពី​ឆ្វេង​ទៅ​ស្ដាំ LRM</translation>
</message>
<message>
- <source>Add To Dictionary</source>
- <comment>Learn Spelling context menu item</comment>
- <translation type="unfinished"></translation>
+ <source>RLM Right-to-left mark</source>
+ <translation>សញ្ញា​សម្គាល់​ពី​ស្ដាំ​ទៅ​ឆ្វេង</translation>
</message>
<message>
- <source>Search The Web</source>
- <comment>Search The Web context menu item</comment>
- <translation type="unfinished"></translation>
+ <source>ZWJ Zero width joiner</source>
+ <translation>ZWJ (Zero width joiner)</translation>
</message>
<message>
- <source>Look Up In Dictionary</source>
- <comment>Look Up in Dictionary context menu item</comment>
- <translation type="unfinished"></translation>
+ <source>ZWNJ Zero width non-joiner</source>
+ <translation>ZWNJ (Zero width non-joiner)</translation>
</message>
<message>
- <source>Open Link</source>
- <comment>Open Link context menu item</comment>
- <translation type="unfinished"></translation>
+ <source>ZWSP Zero width space</source>
+ <translation>ZWSP (Zero width space)</translation>
</message>
<message>
- <source>Ignore</source>
- <comment>Ignore Grammar context menu item</comment>
- <translation type="unfinished">មិនអើពើ</translation>
+ <source>LRE Start of left-to-right embedding</source>
+ <translation>LRE ចាប់ផ្ដើម​បង្កើត​ពី​ឆ្វេង​ទៅ​ស្ដាំ</translation>
</message>
<message>
- <source>Spelling</source>
- <comment>Spelling and Grammar context sub-menu item</comment>
- <translation type="unfinished"></translation>
+ <source>RLE Start of right-to-left embedding</source>
+ <translation>RLE ចាប់ផ្ដើម​បង្កប់​ពី​ស្ដាំ​ទៅ​ឆ្វេង</translation>
</message>
<message>
- <source>Show Spelling and Grammar</source>
- <comment>menu item title</comment>
- <translation type="unfinished"></translation>
+ <source>LRO Start of left-to-right override</source>
+ <translation>LRO ចាប់ផ្ដើម​បដិសេធ​ពី​ឆ្វេង​ទៅ​ស្ដាំ</translation>
</message>
<message>
- <source>Hide Spelling and Grammar</source>
- <comment>menu item title</comment>
- <translation type="unfinished"></translation>
+ <source>RLO Start of right-to-left override</source>
+ <translation>RLO ចាប់ផ្ដើម​បដិសេធ​ពី​ស្ដាំ​ទៅ​ឆ្វេង</translation>
</message>
<message>
- <source>Check Spelling</source>
- <comment>Check spelling context menu item</comment>
- <translation type="unfinished"></translation>
+ <source>PDF Pop directional formatting</source>
+ <translation>PDF (Pop directional formatting)</translation>
</message>
<message>
- <source>Check Spelling While Typing</source>
- <comment>Check spelling while typing context menu item</comment>
- <translation type="unfinished"></translation>
+ <source>Insert Unicode control character</source>
+ <translation>បញ្ចូល​តួអក្សរ​បញ្ជា​យូនីកូដ</translation>
</message>
- <message>
- <source>Check Grammar With Spelling</source>
- <comment>Check grammar with spelling context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Fonts</source>
- <comment>Font context sub-menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Bold</source>
- <comment>Bold context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Italic</source>
- <comment>Italic context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Underline</source>
- <comment>Underline context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Outline</source>
- <comment>Outline context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Direction</source>
- <comment>Writing direction context sub-menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Default</source>
- <comment>Default writing direction context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>LTR</source>
- <comment>Left to Right context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>RTL</source>
- <comment>Right to Left context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Inspect</source>
- <comment>Inspect Element context menu item</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>No recent searches</source>
- <comment>Label for only item in menu that appears when clicking on the search field image, when no searches have been performed</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Recent searches</source>
- <comment>label for first item in the menu that appears when clicking on the search field image, used as embedded menu title</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Clear recent searches</source>
- <comment>menu item in Recent Searches menu that empties menu&apos;s contents</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Unknown</source>
- <comment>Unknown filesize FTP directory listing item</comment>
- <translation type="unfinished">មិនស្គាល់</translation>
- </message>
- <message>
- <source>%1 (%2x%3 pixels)</source>
- <comment>Title string for images</comment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Web Inspector - %2</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
+ </context>
+ <context>
<name>QWhatsThisAction</name>
<message>
- <source>What&apos;s This?</source>
- <translation>តើ​នេះជា​អ្វី ?</translation>
+ <source>What's This?</source>
+ <translation>តើ​នេះជា​អ្វី ?</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QWidget</name>
<message>
- <source>*</source>
- <translation>*</translation>
+ <source>*</source>
+ <translation>*</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QWizard</name>
<message>
- <source>Go Back</source>
- <translation>ទៅ​ក្រោយ</translation>
- </message>
- <message>
- <source>Continue</source>
- <translation>បន្ត</translation>
- </message>
- <message>
- <source>Commit</source>
- <translation>បញ្ជូន</translation>
+ <source>Go Back</source>
+ <translation>ទៅ​ក្រោយ</translation>
</message>
<message>
- <source>Done</source>
- <translation>ធ្វើ​រួច</translation>
+ <source>Continue</source>
+ <translation>បន្ត</translation>
</message>
<message>
- <source>Quit</source>
- <translation>ចេញ</translation>
+ <source>Commit</source>
+ <translation>បញ្ជូន</translation>
</message>
<message>
- <source>Help</source>
- <translation>ជំនួយ</translation>
+ <source>Done</source>
+ <translation>ធ្វើ​រួច</translation>
</message>
<message>
- <source>&lt; &amp;Back</source>
- <translation>&lt;ថយក្រោយ</translation>
+ <source>Quit</source>
+ <translation>ចេញ</translation>
</message>
<message>
- <source>&amp;Finish</source>
- <translation>បញ្ចប់</translation>
+ <source>Help</source>
+ <translation>ជំនួយ</translation>
</message>
<message>
- <source>Cancel</source>
- <translation>បោះបង់</translation>
+ <source>&lt; &amp;Back</source>
+ <translation>&lt;ថយក្រោយ</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>ជំនួយ</translation>
+ <source>&amp;Finish</source>
+ <translation>បញ្ចប់</translation>
</message>
<message>
- <source>&amp;Next</source>
- <translation type="unfinished"></translation>
+ <source>Cancel</source>
+ <translation>បោះបង់</translation>
</message>
<message>
- <source>&amp;Next &gt;</source>
- <translation type="unfinished">បន្ទាប់ &gt;</translation>
+ <source>&amp;Help</source>
+ <translation>ជំនួយ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QWorkspace</name>
<message>
- <source>&amp;Restore</source>
- <translation>ស្ដារឡើងវិញ</translation>
+ <source>&amp;Restore</source>
+ <translation>ស្ដារឡើងវិញ</translation>
</message>
<message>
- <source>&amp;Move</source>
- <translation>ផ្លាស់ទី</translation>
+ <source>&amp;Move</source>
+ <translation>ផ្លាស់ទី</translation>
</message>
<message>
- <source>&amp;Size</source>
- <translation>ទំហំ</translation>
+ <source>&amp;Size</source>
+ <translation>ទំហំ</translation>
</message>
<message>
- <source>Mi&amp;nimize</source>
- <translation>បង្រួម​អប្បបរមា</translation>
+ <source>Mi&amp;nimize</source>
+ <translation>បង្រួម​អប្បបរមា</translation>
</message>
<message>
- <source>Ma&amp;ximize</source>
- <translation>ពង្រីក​អតិបរមា</translation>
+ <source>Ma&amp;ximize</source>
+ <translation>ពង្រីក​អតិបរមា</translation>
</message>
<message>
- <source>&amp;Close</source>
- <translation>បិទ</translation>
+ <source>&amp;Close</source>
+ <translation>បិទ</translation>
</message>
<message>
- <source>Stay on &amp;Top</source>
- <translation>នៅ​កំពូល</translation>
+ <source>Stay on &amp;Top</source>
+ <translation>នៅ​កំពូល</translation>
</message>
<message>
- <source>Sh&amp;ade</source>
- <translation>ស្រមោល</translation>
+ <source>Sh&amp;ade</source>
+ <translation>ស្រមោល</translation>
</message>
<message>
- <source>%1 - [%2]</source>
- <translation>%1 - [%2]</translation>
+ <source>%1 - [%2]</source>
+ <translation>%1 - [%2]</translation>
</message>
<message>
- <source>Minimize</source>
- <translation>បង្រួម​អប្បបរមា</translation>
+ <source>Minimize</source>
+ <translation>បង្រួម​អប្បបរមា</translation>
</message>
<message>
- <source>Restore Down</source>
- <translation>ស្ដារ​ចុះក្រោម​ឡើង​វិញ</translation>
+ <source>Restore Down</source>
+ <translation>ស្ដារ​ចុះក្រោម​ឡើង​វិញ</translation>
</message>
<message>
- <source>Close</source>
- <translation>បិទ</translation>
+ <source>Close</source>
+ <translation>បិទ</translation>
</message>
<message>
- <source>&amp;Unshade</source>
- <translation>មិនដាក់​ស្រមោល</translation>
+ <source>&amp;Unshade</source>
+ <translation>មិនដាក់​ស្រមោល</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QXml</name>
<message>
- <source>no error occurred</source>
- <translation>គ្មានកំហុស​បានកើត​ឡើង​ទេ</translation>
+ <source>no error occurred</source>
+ <translation>គ្មានកំហុស​បានកើត​ឡើង​ទេ</translation>
</message>
<message>
- <source>error triggered by consumer</source>
- <translation>កំហុស​បានកេះ​ដោយ​​អ្នក​ប្រើប្រាស់</translation>
+ <source>error triggered by consumer</source>
+ <translation>កំហុស​បានកេះ​ដោយ​​អ្នក​ប្រើប្រាស់</translation>
</message>
<message>
- <source>unexpected end of file</source>
- <translation>ចុងឯកសារ​ដែល​មិនបាន​រំពឹង​ទុក</translation>
+ <source>unexpected end of file</source>
+ <translation>ចុងឯកសារ​ដែល​មិនបាន​រំពឹង​ទុក</translation>
</message>
<message>
- <source>more than one document type definition</source>
- <translation>មាន​ការ​កំណត់​ប្រភេទ​ឯកសារ​​ច្រើន​ជាង​មួយ</translation>
+ <source>more than one document type definition</source>
+ <translation>មាន​ការ​កំណត់​ប្រភេទ​ឯកសារ​​ច្រើន​ជាង​មួយ</translation>
</message>
<message>
- <source>error occurred while parsing element</source>
- <translation>កំហុស​បានកើត​ឡើង​ខណៈពេល​ញែកធាតុ</translation>
+ <source>error occurred while parsing element</source>
+ <translation>កំហុស​បានកើត​ឡើង​ខណៈពេល​ញែកធាតុ</translation>
</message>
<message>
- <source>tag mismatch</source>
- <translation>មិនផ្គូផ្គង​ស្លាក</translation>
+ <source>tag mismatch</source>
+ <translation>មិនផ្គូផ្គង​ស្លាក</translation>
</message>
<message>
- <source>error occurred while parsing content</source>
- <translation>កំហុស​បាន​កើតឡើង​ខណៈពេល​ញែក​មាតិកា</translation>
+ <source>error occurred while parsing content</source>
+ <translation>កំហុស​បាន​កើតឡើង​ខណៈពេល​ញែក​មាតិកា</translation>
</message>
<message>
- <source>unexpected character</source>
- <translation>តួអក្សរ​ដែល​មិនបាន​រំពឹង​ទុក</translation>
+ <source>unexpected character</source>
+ <translation>តួអក្សរ​ដែល​មិនបាន​រំពឹង​ទុក</translation>
</message>
<message>
- <source>invalid name for processing instruction</source>
- <translation>ឈ្មោះ​មិន​ត្រឹមត្រូវ​សម្រាប់​ដំណើរការ​សេចក្ដីណែនាំ</translation>
+ <source>invalid name for processing instruction</source>
+ <translation>ឈ្មោះ​មិន​ត្រឹមត្រូវ​សម្រាប់​ដំណើរការ​សេចក្ដីណែនាំ</translation>
</message>
<message>
- <source>version expected while reading the XML declaration</source>
- <translation>កំណែ​បាន​រំពឹង​ទុក​ខណៈពេល​អាន​ការ​ប្រកាស XML</translation>
+ <source>version expected while reading the XML declaration</source>
+ <translation>កំណែ​បាន​រំពឹង​ទុក​ខណៈពេល​អាន​ការ​ប្រកាស XML</translation>
</message>
<message>
- <source>wrong value for standalone declaration</source>
- <translation>តម្លៃ​មិន​ត្រឹមត្រូវ​សម្រាប់​កា​រប្រកាស​តែ​ម្នាក់ឯង</translation>
+ <source>wrong value for standalone declaration</source>
+ <translation>តម្លៃ​មិន​ត្រឹមត្រូវ​សម្រាប់​កា​រប្រកាស​តែ​ម្នាក់ឯង</translation>
</message>
<message>
- <source>encoding declaration or standalone declaration expected while reading the XML declaration</source>
- <translation>កា​រប្រកាស​អ៊ីនកូដ ឬ​ការប្រកាស​តែ​ឯង​បាន​រំពឹង​ទុក​ខណៈពេល​អាន​ការ​ប្រកាស XML</translation>
+ <source>encoding declaration or standalone declaration expected while reading the XML declaration</source>
+ <translation>កា​រប្រកាស​អ៊ីនកូដ ឬ​ការប្រកាស​តែ​ឯង​បាន​រំពឹង​ទុក​ខណៈពេល​អាន​ការ​ប្រកាស XML</translation>
</message>
<message>
- <source>standalone declaration expected while reading the XML declaration</source>
- <translation>ការ​ប្រកាស​តែ​ឯង​បាន​រំពឹង​ទុក​ខណៈពេល​អាន​ការ​ប្រកាស​ XML</translation>
+ <source>standalone declaration expected while reading the XML declaration</source>
+ <translation>ការ​ប្រកាស​តែ​ឯង​បាន​រំពឹង​ទុក​ខណៈពេល​អាន​ការ​ប្រកាស​ XML</translation>
</message>
<message>
- <source>error occurred while parsing document type definition</source>
- <translation>កំហុស​បានកើត​ឡើង​ខណៈពេល​ញែក​ការ​កំណត់​ប្រភេទ​ឯកសារ</translation>
+ <source>error occurred while parsing document type definition</source>
+ <translation>កំហុស​បានកើត​ឡើង​ខណៈពេល​ញែក​ការ​កំណត់​ប្រភេទ​ឯកសារ</translation>
</message>
<message>
- <source>letter is expected</source>
- <translation>អក្ស​រត្រូវ​បាន​រំពឹង​ទុក</translation>
+ <source>letter is expected</source>
+ <translation>អក្ស​រត្រូវ​បាន​រំពឹង​ទុក</translation>
</message>
<message>
- <source>error occurred while parsing comment</source>
- <translation>កំហុស​បានកើត​ឡើង​ខណៈពេល​ញែក​មតិយោបល់</translation>
+ <source>error occurred while parsing comment</source>
+ <translation>កំហុស​បានកើត​ឡើង​ខណៈពេល​ញែក​មតិយោបល់</translation>
</message>
<message>
- <source>error occurred while parsing reference</source>
- <translation>កំហុស​បានកើត​ឡើង​ខណៈពេល​ញែក​សេចក្ដី​យោង</translation>
+ <source>error occurred while parsing reference</source>
+ <translation>កំហុស​បានកើត​ឡើង​ខណៈពេល​ញែក​សេចក្ដី​យោង</translation>
</message>
<message>
- <source>internal general entity reference not allowed in DTD</source>
- <translation>មិនអនុញ្ញាត​ធាតុ​​ទូទៅ​ខាងក្នុង​នៅ​ក្នុង DTD ទេ</translation>
+ <source>internal general entity reference not allowed in DTD</source>
+ <translation>មិនអនុញ្ញាត​ធាតុ​​ទូទៅ​ខាងក្នុង​នៅ​ក្នុង DTD ទេ</translation>
</message>
<message>
- <source>external parsed general entity reference not allowed in attribute value</source>
- <translation>សេចក្ដីយោង​ធាតុទូទៅ​​បានញែក​ខាង​ក្រៅ មិន​អនុញ្ញាត​នៅ​ក្នុង​តម្លៃ​គុណលក្ខណៈ</translation>
+ <source>external parsed general entity reference not allowed in attribute value</source>
+ <translation>សេចក្ដីយោង​ធាតុទូទៅ​​បានញែក​ខាង​ក្រៅ មិន​អនុញ្ញាត​នៅ​ក្នុង​តម្លៃ​គុណលក្ខណៈ</translation>
</message>
<message>
- <source>external parsed general entity reference not allowed in DTD</source>
- <translation>សេចក្ដីយោង​ធាតុ​ទូទៅ​បាន​ញែក​ខាង​ក្រៅ​មិន​អនុញ្ញាត​នៅ​ក្នុង DTD នោះ​ទេ</translation>
+ <source>external parsed general entity reference not allowed in DTD</source>
+ <translation>សេចក្ដីយោង​ធាតុ​ទូទៅ​បាន​ញែក​ខាង​ក្រៅ​មិន​អនុញ្ញាត​នៅ​ក្នុង DTD នោះ​ទេ</translation>
</message>
<message>
- <source>unparsed entity reference in wrong context</source>
- <translation>សេចក្ដី​យោង​ធាតុ​ដែល​មិន​បានញែក​នៅ​ក្នុង​បរិបទ​មិន​ត្រឹមត្រូវ</translation>
+ <source>unparsed entity reference in wrong context</source>
+ <translation>សេចក្ដី​យោង​ធាតុ​ដែល​មិន​បានញែក​នៅ​ក្នុង​បរិបទ​មិន​ត្រឹមត្រូវ</translation>
</message>
<message>
- <source>recursive entities</source>
- <translation>ការ​ហៅ​ធាតុ​ឡើង​វិញ</translation>
+ <source>recursive entities</source>
+ <translation>ការ​ហៅ​ធាតុ​ឡើង​វិញ</translation>
</message>
<message>
- <source>error in the text declaration of an external entity</source>
- <translation>កំហុស​នៅ​ក្នុងកា​រប្រកាស​អត្ថបទ​របស់​ធាតុ​ខាងក្រៅ</translation>
+ <source>error in the text declaration of an external entity</source>
+ <translation>កំហុស​នៅ​ក្នុងកា​រប្រកាស​អត្ថបទ​របស់​ធាតុ​ខាងក្រៅ</translation>
</message>
-</context>
-<context>
+ </context>
+ <context>
<name>QXmlStream</name>
<message>
- <source>Extra content at end of document.</source>
- <translation>បរិបទ​បន្ថែម​នៅ​ចុង​ឯកសារ .</translation>
- </message>
- <message>
- <source>Invalid entity value.</source>
- <translation>តម្លៃ​ធាតុ​មិន​ត្រឹមត្រូវ ។</translation>
- </message>
- <message>
- <source>Invalid XML character.</source>
- <translation>តួអក្សរ XML មិន​ត្រឹមត្រូវ ។</translation>
- </message>
- <message>
- <source>Sequence &apos;]]&gt;&apos; not allowed in content.</source>
- <translation>លំដាប់ &apos;]]&gt;&apos; មិន​បាន​អនុញ្ញាត​នៅ​ក្នុង​មាតិកា​ទេ ។</translation>
- </message>
- <message>
- <source>Namespace prefix &apos;%1&apos; not declared</source>
- <translation>បុព្វបទ​ចន្លោះ​ឈ្មោះ &apos;%1&apos; មិន​បាន​ប្រកាស​ទេ</translation>
- </message>
- <message>
- <source>Attribute redefined.</source>
- <translation>បានកំណត់​គុណលក្ខណៈ​ឡើង​វិញ ។</translation>
- </message>
- <message>
- <source>Unexpected character &apos;%1&apos; in public id literal.</source>
- <translation>តួអក្សរ​ដែល​មិនបាន​រំពឹង​ទុក &apos;%1&apos; នៅ​ក្នុង​លេខសម្គាល់សាធារណៈ​​ត្រង់ៗ ។</translation>
- </message>
- <message>
- <source>Invalid XML version string.</source>
- <translation>ខ្សែអក្សរ​កំណែ XML មិន​ត្រឹមត្រូវ ។</translation>
- </message>
- <message>
- <source>Unsupported XML version.</source>
- <translation>មិនគាំទ្រ​កំណែ XML នោះ​ទេ ។</translation>
- </message>
- <message>
- <source>%1 is an invalid encoding name.</source>
- <translation>%1 គឺជា​ឈ្មោះ​អ៊ីន​កូដ​មិន​ត្រឹមត្រូវ ។</translation>
- </message>
- <message>
- <source>Encoding %1 is unsupported</source>
- <translation>ការ​អ៊ីនកូដ %1 មិន​ត្រូវ​បានគាំទ្រទេ</translation>
- </message>
- <message>
- <source>Standalone accepts only yes or no.</source>
- <translation>ព្រម​ទទួល​យក​តែ​ឯង​ប្រសិនបើ​ បាទ/ចាស ឬ​ទេ ។</translation>
- </message>
- <message>
- <source>Invalid attribute in XML declaration.</source>
- <translation>គុណលក្ខណៈ​មិន​ត្រឹមត្រូវ​នៅ​ក្នុងកា​រប្រកាស XML​ ។</translation>
- </message>
- <message>
- <source>Premature end of document.</source>
- <translation>មុន​ដល់​ចុង​ឯកសារ ។</translation>
- </message>
- <message>
- <source>Invalid document.</source>
- <translation>ឯកសារ​មិន​ត្រឹមត្រូវ ។</translation>
- </message>
- <message>
- <source>Expected </source>
- <translation>បាន​រំពឹង​ទុក </translation>
- </message>
- <message>
- <source>, but got &apos;</source>
- <translation> ប៉ុន្តែ​បានទទួល &apos;</translation>
- </message>
- <message>
- <source>Unexpected &apos;</source>
- <translation>មិន​រំពឹង​ទុក &apos;</translation>
- </message>
- <message>
- <source>Expected character data.</source>
- <translation>ទិន្នន័យ​តួអក្សរ​មិន​រំពឹង​ទុក ។</translation>
- </message>
- <message>
- <source>Recursive entity detected.</source>
- <translation>បានលុប​ធាតុ​ម្ដង​ទៀង ។</translation>
- </message>
- <message>
- <source>Start tag expected.</source>
- <translation>ចាប់ផ្ដើម​ស្លាក​ដែល​រំពឹង​ទុក ។</translation>
- </message>
- <message>
- <source>XML declaration not at start of document.</source>
- <translation>កា​រប្រកាស XML មិននៅ​ដើម​​ឯកសា​រទេ ។</translation>
- </message>
- <message>
- <source>NDATA in parameter entity declaration.</source>
- <translation>កា​រប្រកាស​ធាតុ​ប៉ារ៉ាម៉ែត្រ​​នៅ​ក្នុង NDATA ។</translation>
- </message>
- <message>
- <source>%1 is an invalid processing instruction name.</source>
- <translation>%1 មិន​មែនជា​ឈ្មោះ​សេចក្ដីណែនាំ​ដំណើរការ​ត្រឹមត្រូវ​ទេ ។</translation>
- </message>
- <message>
- <source>Invalid processing instruction name.</source>
- <translation>ឈ្មោះ​សេចក្ដី​ណែនាំ​ដំណើរការ​មិន​ត្រឹមត្រូវ ។</translation>
- </message>
- <message>
- <source>Illegal namespace declaration.</source>
- <translation>ការ​ប្រកាស​ចន្លោះឈ្មោះ​មិន​ត្រឹមត្រូវ ។</translation>
- </message>
- <message>
- <source>Invalid XML name.</source>
- <translation>ឈ្មោះ XML មិន​ត្រឹមត្រូវ ។</translation>
- </message>
- <message>
- <source>Opening and ending tag mismatch.</source>
- <translation>ការ​បើក និង​បិទ​ស្លាក​មិន​ផ្គូផ្គង​គ្នាទេ ។</translation>
- </message>
- <message>
- <source>Reference to unparsed entity &apos;%1&apos;.</source>
- <translation>សេចក្ដី​យោង​ទៅ​កាន់​ធាតុ​ដែល​មិនបានញែក &apos;%1&apos; ។</translation>
- </message>
- <message>
- <source>Entity &apos;%1&apos; not declared.</source>
- <translation>ធាតុ &apos;%1&apos; មិនបានប្រកាស​ទេ ។</translation>
- </message>
- <message>
- <source>Reference to external entity &apos;%1&apos; in attribute value.</source>
- <translation>សេចក្ដី​យោង​ទៅ​កាន់​ធាតុ​ខាង​ក្រៅ &apos;%1&apos; នៅ​ក្នុង​តម្លៃ​គុណលក្ខណៈ ។</translation>
- </message>
- <message>
- <source>Invalid character reference.</source>
- <translation>សេចក្ដី​យោង​តួអក្សរ​មិន​ត្រឹមត្រូវ​ទេ ។</translation>
- </message>
- <message>
- <source>Encountered incorrectly encoded content.</source>
- <translation>បាន​ជួប​មាតិកា​ដែល​បានអ៊ីនកូដ​មិន​ត្រឹមត្រូវ ។</translation>
- </message>
- <message>
- <source>The standalone pseudo attribute must appear after the encoding.</source>
- <translation>គុណលក្ខណៈ pseudo តែ​ឯង​ត្រូវ​តែ​បង្ហាញ​បន្ទាប់​ពី​កា​រអ៊ីនកូដ ។</translation>
- </message>
- <message>
- <source>%1 is an invalid PUBLIC identifier.</source>
- <translation>%1 គឺ​ជា​ឧបករណ៍​កំណត់​អត្តសញ្ញាណ PUBLIC មិន​ត្រឹមត្រូវ​ទេ ។</translation>
- </message>
-</context>
-<context>
- <name>QtXmlPatterns</name>
- <message>
- <source>An %1-attribute with value %2 has already been declared.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>An %1-attribute must have a valid %2 as value, which %3 isn&apos;t.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Network timeout.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Element %1 can&apos;t be serialized because it appears outside the document element.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Attribute %1 can&apos;t be serialized because it appears at the top level.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Year %1 is invalid because it begins with %2.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Day %1 is outside the range %2..%3.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Month %1 is outside the range %2..%3.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Overflow: Can&apos;t represent date %1.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Day %1 is invalid for month %2.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Time %1:%2:%3.%4 is invalid.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Overflow: Date can&apos;t be represented.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>At least one component must be present.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>At least one time component must appear after the %1-delimiter.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>No operand in an integer division, %1, can be %2.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The first operand in an integer division, %1, cannot be infinity (%2).</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The second operand in a division, %1, cannot be zero (%2).</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 is not a valid value of type %2.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>When casting to %1 from %2, the source value cannot be %3.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Integer division (%1) by zero (%2) is undefined.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Division (%1) by zero (%2) is undefined.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Modulus division (%1) by zero (%2) is undefined.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Dividing a value of type %1 by %2 (not-a-number) is not allowed.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>A value of type %1 cannot have an Effective Boolean Value.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Value %1 of type %2 exceeds maximum (%3).</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Value %1 of type %2 is below minimum (%3).</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>A value of type %1 must contain an even number of digits. The value %2 does not.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 is not valid as a value of type %2.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Operator %1 cannot be used on type %2.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Operator %1 cannot be used on atomic values of type %2 and %3.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The namespace URI in the name for a computed attribute cannot be %1.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The name for a computed attribute cannot have the namespace URI %1 with the local name %2.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Type error in cast, expected %1, received %2.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>When casting to %1 or types derived from it, the source value must be of the same type, or it must be a string literal. Type %2 is not allowed.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>No casting is possible with %1 as the target type.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>It is not possible to cast from %1 to %2.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Casting to %1 is not possible because it is an abstract type, and can therefore never be instantiated.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>It&apos;s not possible to cast the value %1 of type %2 to %3</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Failure when casting from %1 to %2: %3</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>A comment cannot contain %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>A comment cannot end with a %1.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>No comparisons can be done involving the type %1.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Operator %1 is not available between atomic values of type %2 and %3.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>A value of type %1 cannot be a predicate. A predicate must have either a numeric type or an Effective Boolean Value type.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>A positional predicate must evaluate to a single numeric value.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The last step in a path must contain either nodes or atomic values. It cannot be a mixture between the two.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The data of a processing instruction cannot contain the string %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>No namespace binding exists for the prefix %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>No namespace binding exists for the prefix %1 in %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 is an invalid %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message numerus="yes">
- <source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- </translation>
- </message>
- <message numerus="yes">
- <source>%1 requires at least %n argument(s). %2 is therefore invalid.</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- </translation>
- </message>
- <message>
- <source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 is not a valid XML 1.0 character.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The first argument to %1 cannot be of type %2.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>If both values have zone offsets, they must have the same zone offset. %1 and %2 are not the same.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 was called.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>In the replacement string, %1 must be followed by at least one digit when not escaped.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>In the replacement string, %1 can only be used to escape itself or %2, not %3</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 matches newline characters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 and %2 match the start and end of a line.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Matches are case insensitive</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Whitespace characters are removed, except when they appear in character classes</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 is an invalid regular expression pattern: %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 is an invalid flag for regular expressions. Valid flags are:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>If the first argument is the empty sequence or a zero-length string (no namespace), a prefix cannot be specified. Prefix %1 was specified.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>It will not be possible to retrieve %1.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The root node of the second argument to function %1 must be a document node. %2 is not a document node.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The default collection is undefined</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 cannot be retrieved</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The normalization form %1 is unsupported. The supported forms are %2, %3, %4, and %5, and none, i.e. the empty string (no normalization).</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>A zone offset must be in the range %1..%2 inclusive. %3 is out of range.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 is not a whole number of minutes.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Required cardinality is %1; got cardinality %2.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The item %1 did not match the required type %2.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 is an unknown schema type.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Only one %1 declaration can occur in the query prolog.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The initialization of variable %1 depends on itself</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>No variable by name %1 exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The variable %1 is unused</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Version %1 is not supported. The supported XQuery version is 1.0.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The encoding %1 is invalid. It must contain Latin characters only, must not contain whitespace, and must match the regular expression %2.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>No function with signature %1 is available</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>A default namespace declaration must occur before function, variable, and option declarations.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Namespace declarations must occur before function, variable, and option declarations.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Module imports must occur before function, variable, and option declarations.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>It is not possible to redeclare prefix %1.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Only the prefix %1 can be declared to bind the namespace %2. By default, it is already bound to the prefix %1.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Prefix %1 is already declared in the prolog.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The name of an option must have a prefix. There is no default namespace for options.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The Schema Import feature is not supported, and therefore %1 declarations cannot occur.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The target namespace of a %1 cannot be empty.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The module import feature is not supported</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>A variable by name %1 has already been declared in the prolog.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>No value is available for the external variable by name %1.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The namespace %1 is reserved; therefore user defined functions may not use it. Try the predefined prefix %2, which exists for these cases.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The namespace of a user defined function in a library module must be equivalent to the module namespace. In other words, it should be %1 instead of %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>A function already exists with the signature %1.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>No external functions are supported. All supported functions can be used directly, without first declaring them as external</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>An argument by name %1 has already been declared. Every argument name must be unique.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The name of a variable bound in a for-expression must be different from the positional variable. Hence, the two variables named %1 collide.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The Schema Validation Feature is not supported. Hence, %1-expressions may not be used.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>None of the pragma expressions are supported. Therefore, a fallback expression must be present</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The %1-axis is unsupported in XQuery</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 is not a valid numeric literal.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>No function by name %1 is available.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 is an invalid namespace URI.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>It is not possible to bind to the prefix %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Two namespace declaration attributes have the same name: %1.</source>
- <translation type="unfinished"></translation>
+ <source>Extra content at end of document.</source>
+ <translation>បរិបទ​បន្ថែម​នៅ​ចុង​ឯកសារ .</translation>
</message>
<message>
- <source>The namespace URI must be a constant and cannot use enclosed expressions.</source>
- <translation type="unfinished"></translation>
+ <source>Invalid entity value.</source>
+ <translation>តម្លៃ​ធាតុ​មិន​ត្រឹមត្រូវ ។</translation>
</message>
<message>
- <source>An attribute by name %1 has already appeared on this element.</source>
- <translation type="unfinished"></translation>
+ <source>Invalid XML character.</source>
+ <translation>តួអក្សរ XML មិន​ត្រឹមត្រូវ ។</translation>
</message>
<message>
- <source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
- <translation type="unfinished"></translation>
+ <source>Sequence ']]&gt;' not allowed in content.</source>
+ <translation>លំដាប់ ']]&gt;' មិន​បាន​អនុញ្ញាត​នៅ​ក្នុង​មាតិកា​ទេ ។</translation>
</message>
<message>
- <source>The name %1 does not refer to any schema type.</source>
- <translation type="unfinished"></translation>
+ <source>Namespace prefix '%1' not declared</source>
+ <translation>បុព្វបទ​ចន្លោះ​ឈ្មោះ '%1' មិន​បាន​ប្រកាស​ទេ</translation>
</message>
<message>
- <source>%1 is an complex type. Casting to complex types is not possible. However, casting to atomic types such as %2 works.</source>
- <translation type="unfinished"></translation>
+ <source>Attribute redefined.</source>
+ <translation>បានកំណត់​គុណលក្ខណៈ​ឡើង​វិញ ។</translation>
</message>
<message>
- <source>%1 is not an atomic type. Casting is only possible to atomic types.</source>
- <translation type="unfinished"></translation>
+ <source>Unexpected character '%1' in public id literal.</source>
+ <translation>តួអក្សរ​ដែល​មិនបាន​រំពឹង​ទុក '%1' នៅ​ក្នុង​លេខសម្គាល់សាធារណៈ​​ត្រង់ៗ ។</translation>
</message>
<message>
- <source>%1 is not a valid name for a processing-instruction. Therefore this name test will never match.</source>
- <translation type="unfinished"></translation>
+ <source>Invalid XML version string.</source>
+ <translation>ខ្សែអក្សរ​កំណែ XML មិន​ត្រឹមត្រូវ ។</translation>
</message>
<message>
- <source>%1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported.</source>
- <translation type="unfinished"></translation>
+ <source>Unsupported XML version.</source>
+ <translation>មិនគាំទ្រ​កំណែ XML នោះ​ទេ ។</translation>
</message>
<message>
- <source>The name of an extension expression must be in a namespace.</source>
- <translation type="unfinished"></translation>
+ <source>%1 is an invalid encoding name.</source>
+ <translation>%1 គឺជា​ឈ្មោះ​អ៊ីន​កូដ​មិន​ត្រឹមត្រូវ ។</translation>
</message>
<message>
- <source>empty</source>
- <translation type="unfinished"></translation>
+ <source>Encoding %1 is unsupported</source>
+ <translation>ការ​អ៊ីនកូដ %1 មិន​ត្រូវ​បានគាំទ្រទេ</translation>
</message>
<message>
- <source>zero or one</source>
- <translation type="unfinished"></translation>
+ <source>Invalid XML encoding name.</source>
+ <translation>ឈ្មោះ​អ៊ីនកូដ​ XML មិន​ត្រឹមត្រូវ​ទេ ។</translation>
</message>
<message>
- <source>exactly one</source>
- <translation type="unfinished"></translation>
+ <source>Standalone accepts only yes or no.</source>
+ <translation>ព្រម​ទទួល​យក​តែ​ឯង​ប្រសិនបើ​ បាទ/ចាស ឬ​ទេ ។</translation>
</message>
<message>
- <source>one or more</source>
- <translation type="unfinished"></translation>
+ <source>Invalid attribute in XML declaration.</source>
+ <translation>គុណលក្ខណៈ​មិន​ត្រឹមត្រូវ​នៅ​ក្នុងកា​រប្រកាស XML​ ។</translation>
</message>
<message>
- <source>zero or more</source>
- <translation type="unfinished"></translation>
+ <source>Premature end of document.</source>
+ <translation>មុន​ដល់​ចុង​ឯកសារ ។</translation>
</message>
<message>
- <source>Required type is %1, but %2 was found.</source>
- <translation type="unfinished"></translation>
+ <source>Invalid document.</source>
+ <translation>ឯកសារ​មិន​ត្រឹមត្រូវ ។</translation>
</message>
<message>
- <source>Promoting %1 to %2 may cause loss of precision.</source>
- <translation type="unfinished"></translation>
+ <source>Expected </source>
+ <translation>បាន​រំពឹង​ទុក </translation>
</message>
<message>
- <source>The focus is undefined.</source>
- <translation type="unfinished"></translation>
+ <source>, but got '</source>
+ <translation> ប៉ុន្តែ​បានទទួល '</translation>
</message>
<message>
- <source>It&apos;s not possible to add attributes after any other kind of node.</source>
- <translation type="unfinished"></translation>
+ <source>Unexpected '</source>
+ <translation>មិន​រំពឹង​ទុក '</translation>
</message>
<message>
- <source>An attribute by name %1 has already been created.</source>
- <translation type="unfinished"></translation>
+ <source>Expected character data.</source>
+ <translation>ទិន្នន័យ​តួអក្សរ​មិន​រំពឹង​ទុក ។</translation>
</message>
<message>
- <source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
- <translation type="unfinished"></translation>
+ <source>Recursive entity detected.</source>
+ <translation>បានលុប​ធាតុ​ម្ដង​ទៀង ។</translation>
</message>
-</context>
-<context>
- <name>VolumeSlider</name>
<message>
- <source>Muted</source>
- <translation type="unfinished"></translation>
+ <source>Start tag expected.</source>
+ <translation>ចាប់ផ្ដើម​ស្លាក​ដែល​រំពឹង​ទុក ។</translation>
</message>
<message>
- <source>Volume: %1%</source>
- <translation type="unfinished"></translation>
+ <source>XML declaration not at start of document.</source>
+ <translation>កា​រប្រកាស XML មិននៅ​ដើម​​ឯកសា​រទេ ។</translation>
</message>
-</context>
-<context>
- <name>WebCore::PlatformScrollbar</name>
<message>
- <source>Scroll here</source>
- <translation type="unfinished">រមូរ​នៅ​ទីនេះ</translation>
+ <source>NDATA in parameter entity declaration.</source>
+ <translation>កា​រប្រកាស​ធាតុ​ប៉ារ៉ាម៉ែត្រ​​នៅ​ក្នុង NDATA ។</translation>
</message>
<message>
- <source>Left edge</source>
- <translation type="unfinished">គែម​ឆ្វេង</translation>
+ <source>%1 is an invalid processing instruction name.</source>
+ <translation>%1 មិន​មែនជា​ឈ្មោះ​សេចក្ដីណែនាំ​ដំណើរការ​ត្រឹមត្រូវ​ទេ ។</translation>
</message>
<message>
- <source>Top</source>
- <translation type="unfinished">កំពូល</translation>
+ <source>Invalid processing instruction name.</source>
+ <translation>ឈ្មោះ​សេចក្ដី​ណែនាំ​ដំណើរការ​មិន​ត្រឹមត្រូវ ។</translation>
</message>
<message>
- <source>Right edge</source>
- <translation type="unfinished">គែម​ស្ដាំ</translation>
+ <source>Illegal namespace declaration.</source>
+ <translation>ការ​ប្រកាស​ចន្លោះឈ្មោះ​មិន​ត្រឹមត្រូវ ។</translation>
</message>
<message>
- <source>Bottom</source>
- <translation type="unfinished">បាត</translation>
+ <source>Invalid XML name.</source>
+ <translation>ឈ្មោះ XML មិន​ត្រឹមត្រូវ ។</translation>
</message>
<message>
- <source>Page left</source>
- <translation type="unfinished">ទំព័រ​ឆ្វេង</translation>
+ <source>Opening and ending tag mismatch.</source>
+ <translation>ការ​បើក និង​បិទ​ស្លាក​មិន​ផ្គូផ្គង​គ្នាទេ ។</translation>
</message>
<message>
- <source>Page up</source>
- <translation type="unfinished">ទំព័រ​លើ</translation>
+ <source>Reference to unparsed entity '%1'.</source>
+ <translation>សេចក្ដី​យោង​ទៅ​កាន់​ធាតុ​ដែល​មិនបានញែក '%1' ។</translation>
</message>
<message>
- <source>Page right</source>
- <translation type="unfinished">ទំព័រ​ស្ដាំ</translation>
+ <source>Entity '%1' not declared.</source>
+ <translation>ធាតុ '%1' មិនបានប្រកាស​ទេ ។</translation>
</message>
<message>
- <source>Page down</source>
- <translation type="unfinished">ទំព័រ​ក្រោម</translation>
+ <source>Reference to external entity '%1' in attribute value.</source>
+ <translation>សេចក្ដី​យោង​ទៅ​កាន់​ធាតុ​ខាង​ក្រៅ '%1' នៅ​ក្នុង​តម្លៃ​គុណលក្ខណៈ ។</translation>
</message>
<message>
- <source>Scroll left</source>
- <translation type="unfinished">រមូរ​​ឆ្វេង</translation>
+ <source>Invalid character reference.</source>
+ <translation>សេចក្ដី​យោង​តួអក្សរ​មិន​ត្រឹមត្រូវ​ទេ ។</translation>
</message>
<message>
- <source>Scroll up</source>
- <translation type="unfinished">រមូរ​ឡើង​លើ</translation>
+ <source>Encountered incorrectly encoded content.</source>
+ <translation>បាន​ជួប​មាតិកា​ដែល​បានអ៊ីនកូដ​មិន​ត្រឹមត្រូវ ។</translation>
</message>
<message>
- <source>Scroll right</source>
- <translation type="unfinished">រមូរ​ទៅ​ស្ដាំ</translation>
+ <source>The standalone pseudo attribute must appear after the encoding.</source>
+ <translation>គុណលក្ខណៈ pseudo តែ​ឯង​ត្រូវ​តែ​បង្ហាញ​បន្ទាប់​ពី​កា​រអ៊ីនកូដ ។</translation>
</message>
<message>
- <source>Scroll down</source>
- <translation type="unfinished">រមូរ​ចុះក្រោម</translation>
+ <source>%1 is an invalid PUBLIC identifier.</source>
+ <translation>%1 គឺ​ជា​ឧបករណ៍​កំណត់​អត្តសញ្ញាណ PUBLIC មិន​ត្រឹមត្រូវ​ទេ ។</translation>
</message>
-</context>
+ </context>
</TS>
diff --git a/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp
index 6ee1670b3..2eb82e73c 100644
--- a/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp
@@ -746,7 +746,8 @@ VBoxConsoleView::VBoxConsoleView (VBoxConsoleWnd *mainWnd,
#endif
, mDesktopGeo (DesktopGeo_Invalid)
, mPassCAD (false)
- , mHideHostPointer (false)
+ /* Don't show a hardware pointer until we have one to show */
+ , mHideHostPointer (true)
{
Assert (!mConsole.isNull() &&
!mConsole.GetDisplay().isNull() &&
@@ -1144,16 +1145,17 @@ void VBoxConsoleView::setMouseIntegrationEnabled (bool enabled)
* mode until it's shape is set to the guest cursor shape in
* OnMousePointerShapeChange event handler.
*
- * This is necessary to avoid double-cursor issue when both the
- * guest and the host cursors are displayed in one place one-above-one.
+ * This is necessary to avoid double-cursor issues where both the
+ * guest and the host cursors are displayed in one place, one above the
+ * other.
*
- * This is a workaround because the correct decision is to notify
+ * This is a workaround because the correct decision would be to notify
* the Guest Additions about we are entering the mouse integration
* mode. The GuestOS should hide it's cursor to allow using of
* host cursor for the guest's manipulation.
*
- * This notification is not possible right now due to there is
- * no the required API. */
+ * This notification is not always possible though, as not all guests
+ * support switching to a hardware pointer on demand. */
if (enabled)
viewport()->setCursor (QCursor (Qt::BlankCursor));
@@ -1247,18 +1249,18 @@ bool VBoxConsoleView::event (QEvent *e)
* http://trolltech.com/developer/task-tracker/index_html?id=206165&method=entry
* for details. */
QCursor cursor;
- if (!mHideHostPointer)
- cursor = viewport()->cursor();
- else
+ if (shouldHideHostPointer())
cursor = QCursor (Qt::BlankCursor);
+ else
+ cursor = viewport()->cursor();
mFrameBuf->resizeEvent (re);
viewport()->setCursor (cursor);
#else
mFrameBuf->resizeEvent (re);
- if (!mHideHostPointer)
- viewport()->unsetCursor();
- else
+ if (shouldHideHostPointer())
viewport()->setCursor (QCursor (Qt::BlankCursor));
+ else
+ viewport()->unsetCursor();
#endif
/* This event appears in case of guest video was changed
@@ -3144,13 +3146,12 @@ bool VBoxConsoleView::mouseEvent (int aType, const QPoint &aPos, const QPoint &a
QPoint cpnt = viewportToContents (aPos);
if (cpnt.x() < 0) cpnt.setX (0);
- else if (cpnt.x() >= cw) cpnt.setX (cw - 1);
+ else if (cpnt.x() > cw) cpnt.setX (cw);
if (cpnt.y() < 0) cpnt.setY (0);
- else if (cpnt.y() >= ch) cpnt.setY (ch - 1);
+ else if (cpnt.y() > ch) cpnt.setY (ch);
CMouse mouse = mConsole.GetMouse();
- mouse.PutMouseEventAbsolute (cpnt.x() + 1, cpnt.y() + 1,
- wheel, state);
+ mouse.PutMouseEventAbsolute (cpnt.x(), cpnt.y(), wheel, state);
return true; /* stop further event handling */
}
else
diff --git a/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp
index 0b67e3cf0..37aee1d4d 100644
--- a/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp
@@ -813,9 +813,10 @@ bool VBoxConsoleWnd::openView (const CSession &session)
/* Mini toolbar */
bool isActive = !(cmachine.GetExtraData (VBoxDefs::GUI_ShowMiniToolBar) == "no");
+ bool isAtTop = (cmachine.GetExtraData (VBoxDefs::GUI_MiniToolBarAlignment) == "top");
bool isAutoHide = !(cmachine.GetExtraData (VBoxDefs::GUI_MiniToolBarAutoHide) == "off");
QList <QMenu*> menus (QList <QMenu*> () << mMiniVMMenu << mDevicesMenu);
- mMiniToolBar = new VBoxMiniToolBar (centralWidget(), VBoxMiniToolBar::AlignBottom,
+ mMiniToolBar = new VBoxMiniToolBar (centralWidget(), isAtTop ? VBoxMiniToolBar::AlignTop : VBoxMiniToolBar::AlignBottom,
isActive, isAutoHide);
*mMiniToolBar << menus;
connect (mMiniToolBar, SIGNAL (exitAction()), this, SLOT (mtExitMode()));
@@ -2258,7 +2259,7 @@ bool VBoxConsoleWnd::toggleFullscreenMode (bool aOn, bool aSeamless)
}
AssertReturn (console, false);
- AssertReturn ((hidden_children.isEmpty() == aOn), false);
+ AssertReturn ((mHiddenChildren.empty() == aOn), false);
AssertReturn ((aSeamless && mIsSeamless != aOn) ||
(!aSeamless && mIsFullscreen != aOn), false);
if (aOn)
@@ -2374,7 +2375,7 @@ bool VBoxConsoleWnd::toggleFullscreenMode (bool aOn, bool aSeamless)
if (!w->isHidden())
{
w->hide();
- hidden_children.append (w);
+ mHiddenChildren.append (w);
}
}
}
@@ -2427,9 +2428,9 @@ bool VBoxConsoleWnd::toggleFullscreenMode (bool aOn, bool aSeamless)
console->setVerticalScrollBarPolicy (Qt::ScrollBarAsNeeded);
/* Show everything hidden when going fullscreen. */
- foreach (QObject *obj, hidden_children)
- ((QWidget *) obj)->show();
- hidden_children.clear();
+ foreach (QPointer <QWidget> child, mHiddenChildren)
+ if (child) child->show();
+ mHiddenChildren.clear();
}
/* Set flag for waiting host resize if it awaited during mode entering */
@@ -2843,6 +2844,19 @@ void VBoxConsoleWnd::devicesUnmountFloppy()
vboxProblem().cannotSaveMachineSettings (m);
}
}
+
+ if (drv.GetState() != KDriveState_NotMounted)
+ {
+ /* Looks like Main make no force unmounting here
+ * but IFloppyDrive::Unmount() is called synchronously.
+ * Also Main performs rollback for this procedure if
+ * it was failed by some reason - for example if the
+ * guest OS locked IFloppyDrive preventing image from
+ * unmounting - so no way to know the error was really
+ * occured. Thats why we just checking the drive state
+ * and warn a user about problem if present. */
+ vboxProblem().cannotEjectDrive();
+ }
}
void VBoxConsoleWnd::devicesMountDVDImage()
@@ -2892,6 +2906,19 @@ void VBoxConsoleWnd::devicesUnmountDVD()
vboxProblem().cannotSaveMachineSettings (m);
}
}
+
+ if (drv.GetState() != KDriveState_NotMounted)
+ {
+ /* Looks like Main make no force unmounting here
+ * but IDVDDrive::Unmount() is called synchronously.
+ * Also Main performs rollback for this procedure if
+ * it was failed by some reason - for example if the
+ * guest OS locked IDVDDrive preventing image from
+ * unmounting - so no way to know the error was really
+ * occured. Thats why we just checking the drive state
+ * and warn a user about problem if present. */
+ vboxProblem().cannotEjectDrive();
+ }
}
void VBoxConsoleWnd::devicesSwitchVrdp (bool aOn)
diff --git a/src/VBox/Frontends/VirtualBox/src/VBoxDefs.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxDefs.cpp
index f395aec9c..b0f55472a 100644
--- a/src/VBox/Frontends/VirtualBox/src/VBoxDefs.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/VBoxDefs.cpp
@@ -32,6 +32,7 @@ const char* VBoxDefs::GUI_AutoresizeGuest = "GUI/AutoresizeGuest";
const char* VBoxDefs::GUI_FirstRun = "GUI/FirstRun";
const char* VBoxDefs::GUI_SaveMountedAtRuntime = "GUI/SaveMountedAtRuntime";
const char* VBoxDefs::GUI_ShowMiniToolBar = "GUI/ShowMiniToolBar";
+const char* VBoxDefs::GUI_MiniToolBarAlignment = "GUI/MiniToolBarAlignment";
const char* VBoxDefs::GUI_MiniToolBarAutoHide = "GUI/MiniToolBarAutoHide";
const char* VBoxDefs::GUI_LastCloseAction = "GUI/LastCloseAction";
const char* VBoxDefs::GUI_SuppressMessages = "GUI/SuppressMessages";
diff --git a/src/VBox/Frontends/VirtualBox/src/VBoxFilePathSelectorWidget.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxFilePathSelectorWidget.cpp
index db1f60bfa..aea9418e6 100644
--- a/src/VBox/Frontends/VirtualBox/src/VBoxFilePathSelectorWidget.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/VBoxFilePathSelectorWidget.cpp
@@ -657,11 +657,12 @@ bool VBoxEmptyFileSelector::isChooserVisible() const
void VBoxEmptyFileSelector::setPath (const QString& aPath)
{
+ QString tmpPath = QDir::toNativeSeparators (aPath);
if (mLabel)
- mLabel->setText (QString ("<compact elipsis=\"start\">%1</compact>").arg (aPath));
+ mLabel->setText (QString ("<compact elipsis=\"start\">%1</compact>").arg (tmpPath));
else if (mLineEdit)
- mLineEdit->setText (aPath);
- textChanged(aPath);
+ mLineEdit->setText (tmpPath);
+ textChanged(tmpPath);
}
QString VBoxEmptyFileSelector::path() const
diff --git a/src/VBox/Frontends/VirtualBox/src/VBoxMiniToolBar.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxMiniToolBar.cpp
index 4b92f4a01..59f07dbd1 100644
--- a/src/VBox/Frontends/VirtualBox/src/VBoxMiniToolBar.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/VBoxMiniToolBar.cpp
@@ -215,12 +215,14 @@ void VBoxMiniToolBar::timerEvent (QTimerEvent *aEvent)
{
if (aEvent->timerId() == mScrollTimer.timerId())
{
+ QRect screen = mSeamless ? QApplication::desktop()->availableGeometry (window()) :
+ QApplication::desktop()->screenGeometry (window());
switch (mAlignment)
{
case AlignTop:
{
- if (((mPositionY == 0) && mSlideToScreen) ||
- ((mPositionY == - height() + 1) && !mSlideToScreen))
+ if (((mPositionY == screen.y()) && mSlideToScreen) ||
+ ((mPositionY == screen.y() - height() + 1) && !mSlideToScreen))
{
mScrollTimer.stop();
if (mHideAfterSlide)
@@ -235,10 +237,8 @@ void VBoxMiniToolBar::timerEvent (QTimerEvent *aEvent)
}
case AlignBottom:
{
- QRect screen = mSeamless ? QApplication::desktop()->availableGeometry (this) :
- QApplication::desktop()->screenGeometry (this);
- if (((mPositionY == screen.height() - height()) && mSlideToScreen) ||
- ((mPositionY == screen.height() - 1) && !mSlideToScreen))
+ if (((mPositionY == screen.y() + screen.height() - height()) && mSlideToScreen) ||
+ ((mPositionY == screen.y() + screen.height() - 1) && !mSlideToScreen))
{
mScrollTimer.stop();
if (mHideAfterSlide)
@@ -307,8 +307,10 @@ void VBoxMiniToolBar::showEvent (QShowEvent *aEvent)
void VBoxMiniToolBar::paintEvent (QPaintEvent *aEvent)
{
- QPainter painter (this);
+ QPainter painter;
+ painter.begin (this);
painter.fillRect (aEvent->rect(), palette().brush (QPalette::Window));
+ painter.end ();
VBoxToolBar::paintEvent (aEvent);
}
@@ -376,19 +378,19 @@ void VBoxMiniToolBar::recreateMask()
void VBoxMiniToolBar::moveToBase()
{
- QRect screen = mSeamless ? QApplication::desktop()->availableGeometry (this) :
- QApplication::desktop()->screenGeometry (this);
- mPositionX = screen.width() / 2 - width() / 2;
+ QRect screen = mSeamless ? QApplication::desktop()->availableGeometry (window()) :
+ QApplication::desktop()->screenGeometry (window());
+ mPositionX = screen.x() + screen.width() / 2 - width() / 2;
switch (mAlignment)
{
case AlignTop:
{
- mPositionY = - height() + 1;
+ mPositionY = screen.y() - height() + 1;
break;
}
case AlignBottom:
{
- mPositionY = screen.height() - 1;
+ mPositionY = screen.y() + screen.height() - 1;
break;
}
default:
@@ -403,9 +405,9 @@ void VBoxMiniToolBar::moveToBase()
QPoint VBoxMiniToolBar::mapFromScreen (const QPoint &aPoint)
{
QPoint globalPosition = parentWidget()->mapFromGlobal (aPoint);
- QRect fullArea = QApplication::desktop()->screenGeometry (this);
- QRect realArea = mSeamless ? QApplication::desktop()->availableGeometry (this) :
- QApplication::desktop()->screenGeometry (this);
+ QRect fullArea = QApplication::desktop()->screenGeometry (window());
+ QRect realArea = mSeamless ? QApplication::desktop()->availableGeometry (window()) :
+ QApplication::desktop()->screenGeometry (window());
QPoint shiftToReal (realArea.topLeft() - fullArea.topLeft());
return globalPosition + shiftToReal;
}
diff --git a/src/VBox/Frontends/VirtualBox/src/VBoxProblemReporter.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxProblemReporter.cpp
index f50033686..b952b344a 100644
--- a/src/VBox/Frontends/VirtualBox/src/VBoxProblemReporter.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/VBoxProblemReporter.cpp
@@ -1201,6 +1201,14 @@ void VBoxProblemReporter::cannotCloseMedium (
formatErrorInfo (aResult));
}
+void VBoxProblemReporter::cannotEjectDrive()
+{
+ message (mainWindowShown(), Warning,
+ tr ("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."));
+}
+
void VBoxProblemReporter::cannotOpenSession (const CSession &session)
{
Assert (session.isNull());
diff --git a/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsGeneral.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsGeneral.cpp
index 82fe551b0..3997dc4e5 100644
--- a/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsGeneral.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsGeneral.cpp
@@ -73,6 +73,11 @@ void VBoxVMSettingsGeneral::getFrom (const CMachine &aMachine)
QString showMiniToolBar = mMachine.GetExtraData (VBoxDefs::GUI_ShowMiniToolBar);
mCbShowToolBar->setChecked (showMiniToolBar != "no");
+ /* Show Mini ToolBar at top */
+ QString miniToolBarAlignment = mMachine.GetExtraData (VBoxDefs::GUI_MiniToolBarAlignment);
+ mCbToolBarAlignment->setChecked (miniToolBarAlignment == "top");
+ mCbToolBarAlignment->setEnabled (mCbShowToolBar->isChecked());
+
/* Snapshot folder */
mPsSnapshot->setPath (aMachine.GetSnapshotFolder());
mPsSnapshot->setHomeDir (QFileInfo (mMachine.GetSettingsFilePath()).absolutePath());
@@ -104,6 +109,10 @@ void VBoxVMSettingsGeneral::putBackTo()
mMachine.SetExtraData (VBoxDefs::GUI_ShowMiniToolBar,
mCbShowToolBar->isChecked() ? "yes" : "no");
+ /* Show Mini ToolBar at top */
+ mMachine.SetExtraData (VBoxDefs::GUI_MiniToolBarAlignment,
+ mCbToolBarAlignment->isChecked() ? "top" : "bottom");
+
/* Saved state folder */
if (mPsSnapshot->isModified())
{
diff --git a/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsSFDetails.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsSFDetails.cpp
index 15b099398..a3af2a0b5 100644
--- a/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsSFDetails.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsSFDetails.cpp
@@ -146,6 +146,16 @@ void VBoxVMSettingsSFDetails::onSelectPath()
return;
QString folderName (mPsPath->path());
+#if defined (Q_OS_WIN) || defined (Q_OS_OS2)
+ if (folderName[0].isLetter() && folderName[1] == ':' && folderName[2] == 0)
+ {
+ /* VBoxFilePathSelectorWidget returns root path as 'X:', which is invalid path.
+ * Append the trailing backslash to get a valid root path 'X:\'.
+ */
+ folderName += "\\";
+ mPsPath->setPath(folderName);
+ }
+#endif
QDir folder (folderName);
if (!folder.isRoot())
/* Processing non-root folder */
diff --git a/src/VBox/Frontends/VirtualBox/src/main.cpp b/src/VBox/Frontends/VirtualBox/src/main.cpp
index 957ea2f3c..0185e0501 100644
--- a/src/VBox/Frontends/VirtualBox/src/main.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/main.cpp
@@ -45,6 +45,10 @@
#include <QLocale>
#include <QTranslator>
+#ifdef Q_WS_X11
+# include <X11/Xlib.h>
+#endif
+
#include <iprt/err.h>
#include <iprt/initterm.h>
#include <iprt/process.h>
@@ -327,36 +331,44 @@ extern "C" DECLEXPORT(int) TrustedMain (int argc, char **argv, char ** /*envp*/)
/* scope the QIApplication variable */
{
#ifdef Q_WS_X11
- /* There are some buggy/strange driver/compiz combinations which lead
- * to transparent backgrounds on ARGB visuals. Try to fix it by not
- * allowing an ARGB visual with the help of the Xlib. After that we
- * restore the original environment, so that others like the OpenGL
- * service will proper work. */
- char *pchOldVar = NULL;
- bool fHackARGB = !RTEnvExist ("VBOX_NO_ARGB_VISUALS_HACK") && VBoxGlobal::qtRTVersion() >= 0x040500;
- if (fHackARGB)
- {
- const char *pchVar = RTEnvGet ("XLIB_SKIP_ARGB_VISUALS");
- if (pchVar)
- pchOldVar = RTStrDup (pchVar);
- RTEnvSet ("XLIB_SKIP_ARGB_VISUALS", "1");
- }
- /* Now create the application object */
- QIApplication a (argc, argv);
- /* Restore previous environment */
- if (fHackARGB)
+ /* Qt has a complex algorithm for selecting the right visual which
+ * doesn't always seem to work. So we naively choose a visual - the
+ * default one - ourselves and pass that to Qt. This means that we
+ * also have to open the display ourselves.
+ * We check the Qt parameter list and handle Qt's -display argument
+ * ourselves, since we open the display connection. We also check the
+ * to see if the user has passed Qt's -visual parameter, and if so we
+ * assume that the user wants Qt to handle visual selection after all,
+ * and don't supply a visual. */
+ char *pszDisplay = NULL;
+ bool useDefaultVisual = true;
+ for (int i = 0; i < argc; ++i)
{
- if (pchOldVar)
+ if (!::strcmp(argv[i], "-display") && (i + 1 < argc))
+ /* What if it isn't? Rely on QApplication to complain? */
{
- RTEnvSet ("XLIB_SKIP_ARGB_VISUALS", pchOldVar);
- RTStrFree (pchOldVar);
+ pszDisplay = argv[i + 1];
+ ++i;
}
- else
- RTEnvUnset ("XLIB_SKIP_ARGB_VISUALS");
+ else if (!::strcmp(argv[i], "-visual"))
+ useDefaultVisual = false;
+ }
+ Display *pDisplay = XOpenDisplay(pszDisplay);
+ if (!pDisplay)
+ {
+ RTPrintf(pszDisplay ? "Failed to open the X11 display \"%s\"!\n"
+ : "Failed to open the X11 display!\n",
+ pszDisplay);
+ return 0;
}
-#else /* defined(Q_WS_X11) && (QT_VERSION >= 0x040500) */
+ Visual *pVisual = useDefaultVisual
+ ? DefaultVisual(pDisplay, DefaultScreen(pDisplay))
+ : NULL;
+ /* Now create the application object */
+ QIApplication a (pDisplay, argc, argv, (Qt::HANDLE) pVisual);
+#else /* Q_WS_X11 */
QIApplication a (argc, argv);
-#endif /* defined(Q_WS_X11) && (QT_VERSION >= 0x040500) */
+#endif /* Q_WS_X11 */
/* Qt4.3 version has the QProcess bug which freezing the application
* for 30 seconds. This bug is internally used at initialization of
diff --git a/src/VBox/Frontends/VirtualBox/ui/VBoxVMSettingsGeneral.ui b/src/VBox/Frontends/VirtualBox/ui/VBoxVMSettingsGeneral.ui
index c78917c00..c6cfc70d3 100644
--- a/src/VBox/Frontends/VirtualBox/ui/VBoxVMSettingsGeneral.ui
+++ b/src/VBox/Frontends/VirtualBox/ui/VBoxVMSettingsGeneral.ui
@@ -221,6 +221,25 @@
</property>
</widget>
</item>
+ <item row="4" column="1" >
+ <widget class="QCheckBox" name="mCbToolBarAlignment" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="whatsThis" >
+ <string>If checked, show the Mini ToolBar at the top of the screen, rather than in it's default position at the bottom of the screen.</string>
+ </property>
+ <property name="text" >
+ <string>Show At &amp;Top Of Screen</string>
+ </property>
+ <property name="checked" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
@@ -277,5 +296,22 @@
</customwidget>
</customwidgets>
<resources/>
- <connections/>
+ <connections>
+ <connection>
+ <sender>mCbShowToolBar</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>mCbToolBarAlignment</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>195</x>
+ <y>50</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>196</x>
+ <y>72</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
</ui>
diff --git a/src/VBox/GuestHost/OpenGL/include/cr_net.h b/src/VBox/GuestHost/OpenGL/include/cr_net.h
index 27e818a34..1a9aefef7 100644
--- a/src/VBox/GuestHost/OpenGL/include/cr_net.h
+++ b/src/VBox/GuestHost/OpenGL/include/cr_net.h
@@ -226,6 +226,8 @@ struct CRConnection {
* is blocked by another client, which has send us glBegin call and we're waiting to recieve glEnd.
*/
uint8_t allow_redir_ptr;
+
+ uint32_t vMajor, vMinor; /*Protocol version*/
};
diff --git a/src/VBox/GuestHost/OpenGL/include/cr_protocol.h b/src/VBox/GuestHost/OpenGL/include/cr_protocol.h
index 3ce36221e..f564d31a1 100644
--- a/src/VBox/GuestHost/OpenGL/include/cr_protocol.h
+++ b/src/VBox/GuestHost/OpenGL/include/cr_protocol.h
@@ -13,6 +13,11 @@
extern "C" {
#endif
+/*For now guest is allowed to connect host opengl service if protocol version matches exactly*/
+/*Note: that after any change to this file, or glapi_parser\apispec.txt version should be changed*/
+#define CR_PROTOCOL_VERSION_MAJOR 1
+#define CR_PROTOCOL_VERSION_MINOR 1
+
typedef enum {
/* first message types is 'wGL\001', so we can immediately
recognize bad message types */
diff --git a/src/VBox/GuestHost/OpenGL/include/cr_server.h b/src/VBox/GuestHost/OpenGL/include/cr_server.h
index cfa89c634..028f5a29e 100644
--- a/src/VBox/GuestHost/OpenGL/include/cr_server.h
+++ b/src/VBox/GuestHost/OpenGL/include/cr_server.h
@@ -212,10 +212,11 @@ extern DECLEXPORT(void) crServerSetPort(int port);
extern DECLEXPORT(GLboolean) crVBoxServerInit(void);
extern DECLEXPORT(void) crVBoxServerTearDown(void);
-extern DECLEXPORT(void) crVBoxServerAddClient(uint32_t u32ClientID);
+extern DECLEXPORT(int32_t) crVBoxServerAddClient(uint32_t u32ClientID);
extern DECLEXPORT(void) crVBoxServerRemoveClient(uint32_t u32ClientID);
-extern DECLEXPORT(void) crVBoxServerClientWrite(uint32_t u32ClientID, uint8_t *pBuffer, uint32_t cbBuffer);
+extern DECLEXPORT(int32_t) crVBoxServerClientWrite(uint32_t u32ClientID, uint8_t *pBuffer, uint32_t cbBuffer);
extern DECLEXPORT(int32_t) crVBoxServerClientRead(uint32_t u32ClientID, uint8_t *pBuffer, uint32_t *pcbBuffer);
+extern DECLEXPORT(int32_t) crVBoxServerClientSetVersion(uint32_t u32ClientID, uint32_t vMajor, uint32_t vMinor);
extern DECLEXPORT(int32_t) crVBoxServerSaveState(PSSMHANDLE pSSM);
extern DECLEXPORT(int32_t) crVBoxServerLoadState(PSSMHANDLE pSSM);
diff --git a/src/VBox/GuestHost/OpenGL/include/cr_spu.h b/src/VBox/GuestHost/OpenGL/include/cr_spu.h
index d212f4ffd..d6fa0054a 100644
--- a/src/VBox/GuestHost/OpenGL/include/cr_spu.h
+++ b/src/VBox/GuestHost/OpenGL/include/cr_spu.h
@@ -145,7 +145,8 @@ typedef BOOL (WGL_APIENTRY *wglChoosePixelFormatEXTFunc_t)(HDC, const int *, con
typedef BOOL (WGL_APIENTRY *wglGetPixelFormatAttribivEXTFunc_t)(HDC, int, int, UINT, int *, int *);
typedef BOOL (WGL_APIENTRY *wglGetPixelFormatAttribfvEXTFunc_t)(HDC, int, int, UINT, int *, float *);
typedef const GLubyte *(WGL_APIENTRY *glGetStringFunc_t)( GLenum );
-typedef const GLubyte *(WGL_APIENTRY *wglGetExtensionsStringEXTFunc_t)( HDC );
+typedef const GLubyte *(WGL_APIENTRY *wglGetExtensionsStringEXTFunc_t)();
+typedef const GLubyte *(WGL_APIENTRY *wglGetExtensionsStringARBFunc_t)(HDC);
/*@}*/
#elif defined(DARWIN)
/**
diff --git a/src/VBox/GuestHost/OpenGL/util/hash.c b/src/VBox/GuestHost/OpenGL/util/hash.c
index 097060260..df1da2092 100644
--- a/src/VBox/GuestHost/OpenGL/util/hash.c
+++ b/src/VBox/GuestHost/OpenGL/util/hash.c
@@ -315,6 +315,7 @@ CRHashTable *crAllocHashtable( void )
void crFreeHashtable( CRHashTable *hash, CRHashtableCallback deleteFunc )
{
int i;
+ CRHashNode *entry, *next;
if ( !hash) return;
@@ -324,16 +325,21 @@ void crFreeHashtable( CRHashTable *hash, CRHashtableCallback deleteFunc )
for ( i = 0; i < CR_NUM_BUCKETS; i++ )
{
- if ( hash->buckets[i] )
+ entry = hash->buckets[i];
+ while (entry)
{
- if (hash->buckets[i]->data && deleteFunc) {
- /* Clear the key in case crHashtableDelete() is called
- * from this callback.
- */
- hash->buckets[i]->key = 0;
- (*deleteFunc)( hash->buckets[i]->data );
+ next = entry->next;
+ /* Clear the key in case crHashtableDelete() is called
+ * from this callback.
+ */
+ entry->key = 0;
+ if (deleteFunc && entry->data)
+ {
+ (*deleteFunc)(entry->data);
}
- crFree( hash->buckets[i] );
+ crFree(entry);
+ entry = next;
+
}
}
crFreeHashIdPool( hash->idPool );
diff --git a/src/VBox/GuestHost/OpenGL/util/net.c b/src/VBox/GuestHost/OpenGL/util/net.c
index c3270954e..a460dc2d1 100644
--- a/src/VBox/GuestHost/OpenGL/util/net.c
+++ b/src/VBox/GuestHost/OpenGL/util/net.c
@@ -277,6 +277,7 @@ crNetConnectToServer( const char *server, unsigned short default_port,
#ifdef CHROMIUM_THREADSAFE
crFreeMutex( &conn->messageList.lock );
#endif
+ conn->Disconnect(conn);
crFree( conn );
return NULL;
}
diff --git a/src/VBox/GuestHost/OpenGL/util/vboxhgcm.c b/src/VBox/GuestHost/OpenGL/util/vboxhgcm.c
index 0ac2e605e..fc261b33b 100644
--- a/src/VBox/GuestHost/OpenGL/util/vboxhgcm.c
+++ b/src/VBox/GuestHost/OpenGL/util/vboxhgcm.c
@@ -666,6 +666,36 @@ static void crVBoxHGCMAccept( CRConnection *conn, const char *hostname, unsigned
#endif
}
+static int crVBoxHGCMSetVersion(CRConnection *conn, unsigned int vMajor, unsigned int vMinor)
+{
+ CRVBOXHGCMSETVERSION parms;
+ int rc;
+
+ parms.hdr.result = VINF_SUCCESS;
+ parms.hdr.u32ClientID = conn->u32ClientID;
+ parms.hdr.u32Function = SHCRGL_GUEST_FN_SET_VERSION;
+ parms.hdr.cParms = SHCRGL_CPARMS_SET_VERSION;
+
+ parms.vMajor.type = VMMDevHGCMParmType_32bit;
+ parms.vMajor.u.value32 = CR_PROTOCOL_VERSION_MAJOR;
+ parms.vMinor.type = VMMDevHGCMParmType_32bit;
+ parms.vMinor.u.value32 = CR_PROTOCOL_VERSION_MINOR;
+
+ rc = crVBoxHGCMCall(&parms, sizeof(parms));
+
+ if (RT_FAILURE(rc) || RT_FAILURE(parms.hdr.result))
+ {
+ crWarning("Host doesn't accept our version %d.%d. Make sure you have appropriate additions installed!",
+ parms.vMajor.u.value32, parms.vMinor.u.value32);
+ return FALSE;
+ }
+
+ conn->vMajor = CR_PROTOCOL_VERSION_MAJOR;
+ conn->vMinor = CR_PROTOCOL_VERSION_MINOR;
+
+ return TRUE;
+}
+
/**
* The function that actually connects. This should only be called by clients,
* guests in vbox case.
@@ -739,6 +769,8 @@ static int crVBoxHGCMDoConnect( CRConnection *conn )
{
conn->u32ClientID = info.u32ClientID;
crDebug("HGCM connect was successful: client id =0x%x\n", conn->u32ClientID);
+
+ return crVBoxHGCMSetVersion(conn, CR_PROTOCOL_VERSION_MAJOR, CR_PROTOCOL_VERSION_MINOR);
}
else
{
diff --git a/src/VBox/GuestHost/SharedClipboard/x11-clipboard.cpp b/src/VBox/GuestHost/SharedClipboard/x11-clipboard.cpp
index b2cf313e0..4a571be23 100644
--- a/src/VBox/GuestHost/SharedClipboard/x11-clipboard.cpp
+++ b/src/VBox/GuestHost/SharedClipboard/x11-clipboard.cpp
@@ -402,7 +402,7 @@ static void clipGetFormatsFromTargets(CLIPBACKEND *pCtx, Atom *pTargets,
{
char *pszName = XGetAtomName(XtDisplay(pCtx->widget),
pTargets[i]);
- Log2(("%s: found target %s\n", __PRETTY_FUNCTION__, pszName));
+ LogRel2(("%s: found target %s\n", __PRETTY_FUNCTION__, pszName));
XFree(pszName);
}
#endif
@@ -424,7 +424,7 @@ static void clipUpdateX11Targets(CLIPBACKEND *pCtx, Atom *pTargets,
{
bool changed = false;
- Log3 (("%s: called\n", __PRETTY_FUNCTION__));
+ LogRel3 (("%s: called\n", __PRETTY_FUNCTION__));
if (pCtx->fOwnsClipboard)
/* VBox raced us and we lost. So we don't want to report anything. */
return;
@@ -501,11 +501,11 @@ void clipSchedulePoller(CLIPBACKEND *pCtx,
void clipPollX11CBFormats(XtPointer pUserData, XtIntervalId * /* hTimerId */)
{
CLIPBACKEND *pCtx = (CLIPBACKEND *)pUserData;
- Log3 (("%s: called\n", __PRETTY_FUNCTION__));
+ LogRel3 (("%s: called\n", __PRETTY_FUNCTION__));
/* Get the current clipboard contents if we don't own it ourselves */
if (!pCtx->fOwnsClipboard)
{
- Log3 (("%s: requesting the targets that the X11 clipboard offers\n",
+ LogRel3 (("%s: requesting the targets that the X11 clipboard offers\n",
__PRETTY_FUNCTION__));
XtGetSelectionValue(pCtx->widget,
clipGetAtom(pCtx->widget, "CLIPBOARD"),
@@ -694,7 +694,7 @@ void ClipDestructX11(CLIPBACKEND *pCtx)
int ClipStartX11(CLIPBACKEND *pCtx)
{
int rc = VINF_SUCCESS;
- LogFlowFunc(("\n"));
+ LogRelFlowFunc(("\n"));
/*
* Immediately return if we are not connected to the X server.
*/
@@ -756,7 +756,7 @@ int ClipStopX11(CLIPBACKEND *pCtx)
else
LogRelFunc(("rc=%Rrc\n", rc));
clipUninit(pCtx);
- LogFlowFunc(("returning %Rrc.\n", rc));
+ LogRelFlowFunc(("returning %Rrc.\n", rc));
return rc;
}
@@ -781,7 +781,7 @@ static int clipCreateX11Targets(CLIPBACKEND *pCtx, Atom *atomTypeReturn,
Atom *atomTargets = (Atom *)XtMalloc( (MAX_CLIP_X11_FORMATS + 3)
* sizeof(Atom));
unsigned cTargets = 0;
- LogFlowFunc (("called\n"));
+ LogRelFlowFunc (("called\n"));
CLIPX11FORMAT format = NIL_CLIPX11FORMAT;
do
{
@@ -811,7 +811,7 @@ static int clipReadVBoxClipboard(CLIPBACKEND *pCtx, uint32_t u32Format,
void **ppv, uint32_t *pcb)
{
int rc = VINF_SUCCESS;
- LogFlowFunc(("pCtx=%p, u32Format=%02X, ppv=%p, pcb=%p\n", pCtx,
+ LogRelFlowFunc(("pCtx=%p, u32Format=%02X, ppv=%p, pcb=%p\n", pCtx,
u32Format, ppv, pcb));
if (u32Format == VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT)
{
@@ -830,9 +830,9 @@ static int clipReadVBoxClipboard(CLIPBACKEND *pCtx, uint32_t u32Format,
else
rc = ClipRequestDataForX11(pCtx->pFrontend, u32Format,
ppv, pcb);
- LogFlowFunc(("returning %Rrc\n", rc));
+ LogRelFlowFunc(("returning %Rrc\n", rc));
if (RT_SUCCESS(rc))
- LogFlowFunc(("*ppv=%.*ls, *pcb=%u\n", *pcb, *ppv, *pcb));
+ LogRelFlowFunc(("*ppv=%.*ls, *pcb=%u\n", *pcb, *ppv, *pcb));
return rc;
}
@@ -875,7 +875,7 @@ static int clipWinTxtToUtf8(PRTUTF16 pwszSrc, size_t cbSrc, char *pszBuf,
size_t cwSrc = cbSrc / 2, cwTmp = 0, cbDest = 0;
int rc = VINF_SUCCESS;
- LogFlowFunc (("pwszSrc=%.*ls, cbSrc=%u\n", cbSrc, pwszSrc, cbSrc));
+ LogRelFlowFunc (("pwszSrc=%.*ls, cbSrc=%u\n", cbSrc, pwszSrc, cbSrc));
/* How long will the converted text be? */
AssertPtr(pwszSrc);
AssertPtr(pszBuf);
@@ -896,9 +896,9 @@ static int clipWinTxtToUtf8(PRTUTF16 pwszSrc, size_t cbSrc, char *pszBuf,
RTMemFree(reinterpret_cast<void *>(pwszTmp));
if (pcbActual)
*pcbActual = cbDest + 1;
- LogFlowFunc(("returning %Rrc\n", rc));
+ LogRelFlowFunc(("returning %Rrc\n", rc));
if (RT_SUCCESS(rc))
- LogFlowFunc (("converted string is %.*s. Returning.\n", cbDest,
+ LogRelFlowFunc (("converted string is %.*s. Returning.\n", cbDest,
pszBuf));
return rc;
}
@@ -983,7 +983,7 @@ static int clipWinTxtToCTextForX11CB(Display *pDisplay, PRTUTF16 pwszSrc,
XTextProperty property;
int rc = VINF_SUCCESS, xrc = 0;
- LogFlowFunc(("pwszSrc=%.*ls, cbSrc=%u\n", cbSrc / 2, pwszSrc, cbSrc));
+ LogRelFlowFunc(("pwszSrc=%.*ls, cbSrc=%u\n", cbSrc / 2, pwszSrc, cbSrc));
AssertPtrReturn(pDisplay, false);
AssertPtrReturn(pwszSrc, false);
rc = clipWinTxtBufSizeForUtf8(pwszSrc, cbSrc / 2, &cbTmp);
@@ -1014,9 +1014,9 @@ static int clipWinTxtToCTextForX11CB(Display *pDisplay, PRTUTF16 pwszSrc,
*pValReturn = reinterpret_cast<XtPointer>(property.value);
*pcLenReturn = property.nitems + 1;
*piFormatReturn = property.format;
- LogFlowFunc(("returning %Rrc\n", rc));
+ LogRelFlowFunc(("returning %Rrc\n", rc));
if (RT_SUCCESS(rc))
- LogFlowFunc (("converted string is %s\n", property.value));
+ LogRelFlowFunc (("converted string is %s\n", property.value));
return rc;
}
@@ -1082,7 +1082,7 @@ static Boolean clipXtConvertSelectionProc(Widget widget, Atom *atomSelection,
CLIPBACKEND *pCtx = clipLookupContext(widget);
int rc = VINF_SUCCESS;
- LogFlowFunc(("\n"));
+ LogRelFlowFunc(("\n"));
if ( !pCtx->fOwnsClipboard /* Drop requests we receive too late. */
|| !clipIsSupportedSelectionType(pCtx->widget, *atomSelection))
return false;
@@ -1092,7 +1092,7 @@ static Boolean clipXtConvertSelectionProc(Widget widget, Atom *atomSelection,
else
rc = clipConvertVBoxCBForX11(pCtx, atomTarget, atomTypeReturn,
pValReturn, pcLenReturn, piFormatReturn);
- LogFlowFunc(("returning, internal status code %Rrc\n", rc));
+ LogRelFlowFunc(("returning, internal status code %Rrc\n", rc));
return RT_SUCCESS(rc);
}
@@ -1101,7 +1101,7 @@ static Boolean clipXtConvertSelectionProc(Widget widget, Atom *atomSelection,
*/
static void clipReleaseCB(CLIPBACKEND *pCtx)
{
- LogFlowFunc (("\n"));
+ LogRelFlowFunc (("\n"));
/* The formats should be set to the right values as soon as we start
* polling */
clipReportEmptyX11CB(pCtx);
@@ -1117,7 +1117,7 @@ static void clipReleaseCB(CLIPBACKEND *pCtx)
static void clipXtLoseSelectionProc(Widget widget, Atom *)
{
CLIPBACKEND *pCtx = clipLookupContext(widget);
- LogFlowFunc (("\n"));
+ LogRelFlowFunc (("\n"));
clipReleaseCB(pCtx);
}
@@ -1174,11 +1174,11 @@ static void clipNewVBoxFormatsWorker(XtPointer pUserData,
CLIPBACKEND *pCtx = pFormats->pCtx;
uint32_t u32Formats = pFormats->formats;
RTMemFree(pFormats);
- LogFlowFunc (("u32Formats=%d\n", u32Formats));
+ LogRelFlowFunc (("u32Formats=%d\n", u32Formats));
clipInvalidateVBoxCBCache(pCtx);
clipGrabX11CB(pCtx, u32Formats);
clipResetX11Formats(pCtx);
- LogFlowFunc(("returning\n"));
+ LogRelFlowFunc(("returning\n"));
}
/**
@@ -1221,7 +1221,7 @@ void ClipAnnounceFormatToX11(CLIPBACKEND *pCtx,
static int clipUtf16ToWinTxt(RTUTF16 *pwcSrc, size_t cwcSrc,
PRTUTF16 *ppwszDest, uint32_t *pcbDest)
{
- LogFlowFunc(("pwcSrc=%p, cwcSrc=%u, ppwszDest=%p\n", pwcSrc, cwcSrc,
+ LogRelFlowFunc(("pwcSrc=%p, cwcSrc=%u, ppwszDest=%p\n", pwcSrc, cwcSrc,
ppwszDest));
AssertPtrReturn(pwcSrc, VERR_INVALID_POINTER);
AssertPtrReturn(ppwszDest, VERR_INVALID_POINTER);
@@ -1241,16 +1241,16 @@ static int clipUtf16ToWinTxt(RTUTF16 *pwcSrc, size_t cwcSrc,
cwcDest);
if (RT_SUCCESS(rc))
{
- LogFlowFunc (("converted string is %.*ls\n", cwcDest, pwszDest));
+ LogRelFlowFunc (("converted string is %.*ls\n", cwcDest, pwszDest));
*ppwszDest = pwszDest;
if (pcbDest)
*pcbDest = cwcDest * 2;
}
else
RTMemFree(pwszDest);
- LogFlowFunc(("returning %Rrc\n", rc));
+ LogRelFlowFunc(("returning %Rrc\n", rc));
if (pcbDest)
- LogFlowFunc(("*pcbDest=%u\n", *pcbDest));
+ LogRelFlowFunc(("*pcbDest=%u\n", *pcbDest));
return rc;
}
@@ -1268,7 +1268,7 @@ static int clipUtf16ToWinTxt(RTUTF16 *pwcSrc, size_t cwcSrc,
static int clipUtf8ToWinTxt(const char *pcSrc, unsigned cbSrc,
PRTUTF16 *ppwszDest, uint32_t *pcbDest)
{
- LogFlowFunc(("pcSrc=%p, cbSrc=%u, ppwszDest=%p\n", pcSrc, cbSrc,
+ LogRelFlowFunc(("pcSrc=%p, cbSrc=%u, ppwszDest=%p\n", pcSrc, cbSrc,
ppwszDest));
AssertPtrReturn(pcSrc, VERR_INVALID_POINTER);
AssertPtrReturn(ppwszDest, VERR_INVALID_POINTER);
@@ -1281,9 +1281,9 @@ static int clipUtf8ToWinTxt(const char *pcSrc, unsigned cbSrc,
if (RT_SUCCESS(rc))
rc = clipUtf16ToWinTxt(pwcTmp, cwcTmp, ppwszDest, pcbDest);
RTUtf16Free(pwcTmp);
- LogFlowFunc(("Returning %Rrc\n", rc));
+ LogRelFlowFunc(("Returning %Rrc\n", rc));
if (pcbDest)
- LogFlowFunc(("*pcbDest=%u\n", *pcbDest));
+ LogRelFlowFunc(("*pcbDest=%u\n", *pcbDest));
return rc;
}
@@ -1304,7 +1304,7 @@ static int clipCTextToWinTxt(Widget widget, unsigned char *pcSrc,
unsigned cbSrc, PRTUTF16 *ppwszDest,
uint32_t *pcbDest)
{
- LogFlowFunc(("widget=%p, pcSrc=%p, cbSrc=%u, ppwszDest=%p\n", widget,
+ LogRelFlowFunc(("widget=%p, pcSrc=%p, cbSrc=%u, ppwszDest=%p\n", widget,
pcSrc, cbSrc, ppwszDest));
AssertReturn(widget, VERR_INVALID_PARAMETER);
AssertPtrReturn(pcSrc, VERR_INVALID_POINTER);
@@ -1352,9 +1352,9 @@ static int clipCTextToWinTxt(Widget widget, unsigned char *pcSrc,
if (ppcTmp != NULL)
XFreeStringList(ppcTmp);
RTStrFree(pszTmp);
- LogFlowFunc(("Returning %Rrc\n", rc));
+ LogRelFlowFunc(("Returning %Rrc\n", rc));
if (pcbDest)
- LogFlowFunc(("*pcbDest=%u\n", *pcbDest));
+ LogRelFlowFunc(("*pcbDest=%u\n", *pcbDest));
return rc;
}
@@ -1372,7 +1372,7 @@ static int clipCTextToWinTxt(Widget widget, unsigned char *pcSrc,
static int clipLatin1ToWinTxt(char *pcSrc, unsigned cbSrc,
PRTUTF16 *ppwszDest, uint32_t *pcbDest)
{
- LogFlowFunc (("pcSrc=%.*s, cbSrc=%u, ppwszDest=%p\n", cbSrc,
+ LogRelFlowFunc (("pcSrc=%.*s, cbSrc=%u, ppwszDest=%p\n", cbSrc,
(char *) pcSrc, cbSrc, ppwszDest));
AssertPtrReturn(pcSrc, VERR_INVALID_POINTER);
AssertPtrReturn(ppwszDest, VERR_INVALID_POINTER);
@@ -1407,15 +1407,15 @@ static int clipLatin1ToWinTxt(char *pcSrc, unsigned cbSrc,
++j;
}
pwszDest[cwcDest - 1] = '\0'; /* Make sure we are zero-terminated. */
- LogFlowFunc (("converted text is %.*ls\n", cwcDest, pwszDest));
+ LogRelFlowFunc (("converted text is %.*ls\n", cwcDest, pwszDest));
}
if (RT_SUCCESS(rc))
*ppwszDest = pwszDest;
else
RTMemFree(pwszDest);
- LogFlowFunc(("Returning %Rrc\n", rc));
+ LogRelFlowFunc(("Returning %Rrc\n", rc));
if (pcbDest)
- LogFlowFunc(("*pcbDest=%u\n", *pcbDest));
+ LogRelFlowFunc(("*pcbDest=%u\n", *pcbDest));
return rc;
}
@@ -1447,7 +1447,7 @@ static void clipConvertX11CB(Widget widget, XtPointer pClientData,
int *piFormat)
{
CLIPREADX11CBREQ *pReq = (CLIPREADX11CBREQ *) pClientData;
- LogFlowFunc(("pReq->mFormat=%02X, pReq->mTextFormat=%u, pReq->mCtx=%p\n",
+ LogRelFlowFunc(("pReq->mFormat=%02X, pReq->mTextFormat=%u, pReq->mCtx=%p\n",
pReq->mFormat, pReq->mTextFormat, pReq->mCtx));
AssertPtr(pReq->mCtx);
Assert(pReq->mFormat != 0); /* sanity */
@@ -1503,7 +1503,7 @@ static void clipConvertX11CB(Widget widget, XtPointer pClientData,
clipReportFormatsToVBox(pCtx);
// else
// clipReportEmptyX11CB(pCtx);
- LogFlowFunc(("rc=%Rrc\n", rc));
+ LogRelFlowFunc(("rc=%Rrc\n", rc));
}
/** Worker function for ClipRequestDataFromX11 which runs on the event
@@ -1513,7 +1513,7 @@ static void vboxClipboardReadX11Worker(XtPointer pUserData,
{
CLIPREADX11CBREQ *pReq = (CLIPREADX11CBREQ *)pUserData;
CLIPBACKEND *pCtx = pReq->mCtx;
- LogFlowFunc (("pReq->mFormat = %02X\n", pReq->mFormat));
+ LogRelFlowFunc (("pReq->mFormat = %02X\n", pReq->mFormat));
int rc = VINF_SUCCESS;
/* Do not continue if we already own the clipboard */
@@ -1551,7 +1551,7 @@ static void vboxClipboardReadX11Worker(XtPointer pUserData,
NULL, 0);
RTMemFree(pReq);
}
- LogFlowFunc(("status %Rrc\n", rc));
+ LogRelFlowFunc(("status %Rrc\n", rc));
}
/**
diff --git a/src/VBox/HostDrivers/Support/SUPDrv.c b/src/VBox/HostDrivers/Support/SUPDrv.c
index e3121357d..1ae7e85a0 100644
--- a/src/VBox/HostDrivers/Support/SUPDrv.c
+++ b/src/VBox/HostDrivers/Support/SUPDrv.c
@@ -1,4 +1,4 @@
-/* $Revision: 49191 $ */
+/* $Revision: 50636 $ */
/** @file
* VBoxDrv - The VirtualBox Support Driver - Common code.
*/
@@ -53,6 +53,7 @@
# include <iprt/crc32.h>
# include <iprt/net.h>
# include <iprt/string.h>
+# include <iprt/rand.h>
#endif
/* VBox/x86.h not compatible with the Linux kernel sources */
#ifdef RT_OS_LINUX
@@ -467,6 +468,7 @@ static SUPFUNC g_aFunctions[] =
*/
PFNRT g_apfnVBoxDrvIPRTDeps[] =
{
+ /* VBoxNetFlt */
(PFNRT)RTCrc32,
(PFNRT)RTErrConvertFromErrno,
(PFNRT)RTNetIPv4IsHdrValid,
@@ -477,6 +479,8 @@ PFNRT g_apfnVBoxDrvIPRTDeps[] =
(PFNRT)RTUuidFromStr,
(PFNRT)RTStrDup,
(PFNRT)RTStrFree,
+ /* VBoxNetAdp */
+ (PFNRT)RTRandBytes,
NULL
};
#endif /* RT_OS_DARWIN || RT_OS_SOLARIS || RT_OS_SOLARIS */
diff --git a/src/VBox/HostDrivers/Support/SUPLib.cpp b/src/VBox/HostDrivers/Support/SUPLib.cpp
index fcb3c5d76..d3a48bd50 100644
--- a/src/VBox/HostDrivers/Support/SUPLib.cpp
+++ b/src/VBox/HostDrivers/Support/SUPLib.cpp
@@ -148,6 +148,18 @@ static int supLoadModule(const char *pszFilename, const char *pszModule, const c
static DECLCALLBACK(int) supLoadModuleResolveImport(RTLDRMOD hLdrMod, const char *pszModule, const char *pszSymbol, unsigned uSymbol, RTUINTPTR *pValue, void *pvUser);
+/** Touch a range of pages. */
+DECLINLINE(void) supR3TouchPages(void *pv, size_t cPages)
+{
+ uint32_t volatile *pu32 = (uint32_t volatile *)pv;
+ while (cPages-- > 0)
+ {
+ ASMAtomicCmpXchgU32(pu32, 0, 0);
+ pu32 += PAGE_SIZE / sizeof(uint32_t);
+ }
+}
+
+
SUPR3DECL(int) SUPR3Install(void)
{
return suplibOsInstall();
@@ -1059,6 +1071,9 @@ SUPR3DECL(int) SUPR3PageAllocEx(size_t cPages, uint32_t fFlags, void **ppvPages,
paPages[iPage].Phys = pReq->u.Out.aPages[iPage];
Assert(!(paPages[iPage].Phys & ~X86_PTE_PAE_PG_MASK));
}
+#ifdef RT_OS_DARWIN /* HACK ALERT! */
+ supR3TouchPages(pReq->u.Out.pvR3, cPages);
+#endif
}
else if ( rc == VERR_NOT_SUPPORTED
&& !pR0Ptr)
@@ -1244,6 +1259,9 @@ SUPR3DECL(void *) SUPR3ContAlloc(size_t cPages, PRTR0PTR pR0Ptr, PRTHCPHYS pHCPh
*pHCPhys = Req.u.Out.HCPhys;
if (pR0Ptr)
*pR0Ptr = Req.u.Out.pvR0;
+#ifdef RT_OS_DARWIN /* HACK ALERT! */
+ supR3TouchPages(Req.u.Out.pvR3, cPages);
+#endif
return Req.u.Out.pvR3;
}
@@ -1341,6 +1359,9 @@ SUPR3DECL(int) SUPR3LowAlloc(size_t cPages, void **ppvPages, PRTR0PTR ppvPagesR0
Assert(!(paPages[iPage].Phys & ~X86_PTE_PAE_PG_MASK));
Assert(paPages[iPage].Phys <= UINT32_C(0xfffff000));
}
+#ifdef RT_OS_DARWIN /* HACK ALERT! */
+ supR3TouchPages(pReq->u.Out.pvR3, cPages);
+#endif
}
RTMemTmpFree(pReq);
}
diff --git a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
index abac70316..c637e585c 100644
--- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
@@ -1,4 +1,4 @@
-/* $Rev: 43287 $ */
+/* $Rev: 50656 $ */
/** @file
* VBoxDrv - The VirtualBox Support Driver - Linux specifics.
*/
@@ -183,8 +183,13 @@ static int VBoxDrvLinuxIOCtlSlow(struct file *pFilp, unsigned int uCmd, unsigne
static int VBoxDrvLinuxErr2LinuxErr(int);
#ifdef VBOX_WITH_SUSPEND_NOTIFICATION
static int VBoxDrvProbe(struct platform_device *pDev);
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)
+static int VBoxDrvSuspend(struct device *pDev);
+static int VBoxDrvResume(struct device *pDev);
+# else
static int VBoxDrvSuspend(struct platform_device *pDev, pm_message_t State);
static int VBoxDrvResume(struct platform_device *pDev);
+# endif
static void VBoxDevRelease(struct device *pDev);
#endif
@@ -216,15 +221,28 @@ static struct miscdevice gMiscDevice =
#ifdef VBOX_WITH_SUSPEND_NOTIFICATION
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)
+static struct dev_pm_ops gPlatformPMOps =
+{
+ .suspend = VBoxDrvSuspend,
+ .resume = VBoxDrvResume,
+};
+# endif
+
static struct platform_driver gPlatformDriver =
{
.probe = VBoxDrvProbe,
+# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 30)
.suspend = VBoxDrvSuspend,
.resume = VBoxDrvResume,
+# endif
/** @todo .shutdown? */
.driver =
{
- .name = "vboxdrv"
+ .name = "vboxdrv",
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)
+ .pm = &gPlatformPMOps,
+# endif
}
};
@@ -472,6 +490,24 @@ static int __init VBoxDrvLinuxInit(void)
/* performance counter generates NMI and is not masked? */
if ((GET_APIC_DELIVERY_MODE(v) == APIC_MODE_NMI) && !(v & APIC_LVT_MASKED))
{
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31) && defined(CONFIG_PERF_COUNTERS)
+ /* 2.6.31+: The performance counter framework will initialize the LVTPC
+ * vector as NMI. We can't disable the framework but the kernel loader
+ * script will do 'echo 2 > /proc/sys/kernel/perf_counter_paranoid'
+ * which hopefilly prevents any usage of hardware performance counters
+ * and therefore triggering of NMIs. */
+ printk(KERN_ERR DEVICE_NAME
+ ": Warning: 2.6.31+ kernel detected. Most likely the hwardware performance\n"
+ DEVICE_NAME
+ ": counter framework which can generate NMIs is active. You have to prevent\n"
+ DEVICE_NAME
+ ": the usage of hardware performance counters by\n"
+ DEVICE_NAME
+ ": echo 2 > /proc/sys/kernel/perf_counter_paranoid\n");
+ /* We can't do more here :-( */
+ goto no_error;
+# endif
+
# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) || defined CONFIG_X86_64
printk(KERN_ERR DEVICE_NAME
": NMI watchdog either active or at least initialized. Please disable the NMI\n"
@@ -493,6 +529,7 @@ nmi_activated:
}
# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19)
printk(KERN_DEBUG DEVICE_NAME ": Successfully done.\n");
+no_error:
# endif /* >= 2.6.19 */
#endif /* CONFIG_X86_LOCAL_APIC */
@@ -737,7 +774,11 @@ static int VBoxDrvProbe(struct platform_device *pDev)
* @param pDev Pointer to the platform device.
* @param State message type, see Documentation/power/devices.txt.
*/
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)
+static int VBoxDrvSuspend(struct device *pDev)
+# else
static int VBoxDrvSuspend(struct platform_device *pDev, pm_message_t State)
+# endif
{
RTPowerSignalEvent(RTPOWEREVENT_SUSPEND);
return 0;
@@ -748,7 +789,11 @@ static int VBoxDrvSuspend(struct platform_device *pDev, pm_message_t State)
*
* @param pDev Pointer to the platform device.
*/
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)
+static int VBoxDrvResume(struct device *pDev)
+# else
static int VBoxDrvResume(struct platform_device *pDev)
+# endif
{
RTPowerSignalEvent(RTPOWEREVENT_RESUME);
return 0;
diff --git a/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c b/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
index a8fcb26a0..10cb33fcf 100644
--- a/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
+++ b/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
@@ -322,7 +322,10 @@ static int VBoxDrvSolarisAttach(dev_info_t *pDip, ddi_attach_cmd_t enmCmd)
/*
* Register for suspend/resume notifications
*/
- rc = ddi_prop_update_string(DDI_DEV_T_ANY, pDip, "pm-hardware-state", "needs-suspend-resume");
+ rc = ddi_prop_create(DDI_DEV_T_NONE, pDip, DDI_PROP_CANSLEEP /* kmem alloc can sleep */,
+ "pm-hardware-state", "needs-suspend-resume", sizeof("needs-suspend-resume"));
+ if (rc != DDI_PROP_SUCCESS)
+ LogRel((DEVICE_NAME ":Suspend/Resume notification registeration failed.\n"));
/*
* Register ourselves as a character device, pseudo-driver
@@ -356,6 +359,7 @@ static int VBoxDrvSolarisAttach(dev_info_t *pDip, ddi_attach_cmd_t enmCmd)
RTSemFastMutexRelease(g_DevExt.mtxGip);
#endif
RTPowerSignalEvent(RTPOWEREVENT_RESUME);
+ LogFlow((DEVICE_NAME ": Awakened from suspend.\n"));
return DDI_SUCCESS;
}
@@ -392,6 +396,7 @@ static int VBoxDrvSolarisDetach(dev_info_t *pDip, ddi_detach_cmd_t enmCmd)
ddi_remove_minor_node(pDip, NULL);
ddi_soft_state_free(g_pVBoxDrvSolarisState, instance);
#endif
+ ddi_prop_remove_all(pDip);
return DDI_SUCCESS;
}
@@ -405,6 +410,7 @@ static int VBoxDrvSolarisDetach(dev_info_t *pDip, ddi_detach_cmd_t enmCmd)
RTSemFastMutexRelease(g_DevExt.mtxGip);
#endif
RTPowerSignalEvent(RTPOWEREVENT_SUSPEND);
+ LogFlow((DEVICE_NAME ": Falling to suspend mode.\n"));
return DDI_SUCCESS;
}
diff --git a/src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk b/src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk
index 6765d83e4..9d54a0ff2 100644
--- a/src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk
+++ b/src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk
@@ -54,8 +54,6 @@ VBoxNetAdp_SOURCES.linux = \
VBoxNetAdp_SOURCES =
#VBoxNetAdp_SOURCES = \
# VBoxNetAdp.c
-VBoxNetAdp_LIBS.solaris += \
- $(PATH_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB)
VBoxNetAdp_LIBS += \
$(PATH_LIB)/SUPR0IdcClient$(VBOX_SUFF_LIB)
endif
diff --git a/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFlt-solaris.c b/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFlt-solaris.c
index 8c4652f33..08a8fd55a 100644
--- a/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFlt-solaris.c
+++ b/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFlt-solaris.c
@@ -2862,6 +2862,7 @@ static bool vboxNetFltSolarisIsOurMBlk(PVBOXNETFLTINS pThis, vboxnetflt_promisc_
break;
}
+ LogFlow((DEVICE_NAME ":vboxNetFltSolarisIsOurMBlk returns %d.\n", fIsOurPacket));
RTSemFastMutexRelease(pThis->u.s.hFastMtx);
return fIsOurPacket;
}
@@ -2891,9 +2892,39 @@ static int vboxNetFltSolarisRecv(PVBOXNETFLTINS pThis, vboxnetflt_stream_t *pStr
}
/*
+ * Paranoia...
+ */
+ if (RT_UNLIKELY(MBLKL(pMsg) < sizeof(RTNETETHERHDR)))
+ {
+ size_t cbMsg = msgdsize(pMsg);
+ if (cbMsg < sizeof(RTNETETHERHDR))
+ return VINF_SUCCESS;
+
+ mblk_t *pFullMsg = allocb(cbMsg, BPRI_MED);
+ if (RT_LIKELY(pFullMsg))
+ {
+ mblk_t *pCur = pMsg;
+ while (pCur)
+ {
+ size_t cbBlock = MBLKL(pCur);
+ if (cbBlock > 0)
+ {
+ bcopy(pCur->b_rptr, pFullMsg->b_wptr, cbBlock);
+ pFullMsg->b_wptr += cbBlock;
+ }
+ pCur = pCur->b_cont;
+ }
+
+ freemsg(pMsg);
+ pMsg = pFullMsg;
+ }
+ else
+ return VERR_NO_MEMORY;
+ }
+
+ /*
* Don't loopback packets we transmit to the wire.
*/
- /** @todo maybe we need not check for loopback for INTNETTRUNKDIR_HOST case? */
if (vboxNetFltSolarisIsOurMBlk(pThis, pPromiscStream, pMsg))
{
LogFlow((DEVICE_NAME ":Avoiding packet loopback.\n"));
diff --git a/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFlt-win.c b/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFlt-win.c
index 84ccfde7b..1e49ef8b6 100644
--- a/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFlt-win.c
+++ b/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFlt-win.c
@@ -2184,7 +2184,6 @@ DECLHIDDEN(NDIS_STATUS) vboxNetFltWinPtInitBind(PADAPT *ppAdapt, PNDIS_STRING pO
int rc;
PVBOXNETFLTINS pInstance;
USHORT cbAnsiName = pBindToMiniportName->Length;/* the lenght is is bytes ; *2 ;RtlUnicodeStringToAnsiSize(pBindToMiniportName)*/
- char* pAnsiName = alloca(cbAnsiName);
CREATE_INSTANCE_CONTEXT Context;
RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
@@ -2197,20 +2196,21 @@ DECLHIDDEN(NDIS_STATUS) vboxNetFltWinPtInitBind(PADAPT *ppAdapt, PNDIS_STRING pO
# endif
Context.Status = NDIS_STATUS_SUCCESS;
- AnsiString.Buffer = pAnsiName;
+ AnsiString.Buffer = 0; /* will be allocated by RtlUnicodeStringToAnsiString */
AnsiString.Length = 0;
AnsiString.MaximumLength = cbAnsiName;
Assert(KeGetCurrentIrql() == PASSIVE_LEVEL);
- Status = RtlUnicodeStringToAnsiString(&AnsiString, pBindToMiniportName, false);
+ Status = RtlUnicodeStringToAnsiString(&AnsiString, pBindToMiniportName, true);
if(Status != STATUS_SUCCESS)
{
break;
}
- rc = vboxNetFltSearchCreateInstance(&g_VBoxNetFltGlobals, pAnsiName, &pInstance, &Context);
+ rc = vboxNetFltSearchCreateInstance(&g_VBoxNetFltGlobals, AnsiString.Buffer, &pInstance, &Context);
+ RtlFreeAnsiString(&AnsiString);
if(RT_FAILURE(rc))
{
Assert(0);
diff --git a/src/VBox/HostServices/SharedClipboard/service.cpp b/src/VBox/HostServices/SharedClipboard/service.cpp
index 56b51bb99..f8147822e 100644
--- a/src/VBox/HostServices/SharedClipboard/service.cpp
+++ b/src/VBox/HostServices/SharedClipboard/service.cpp
@@ -177,21 +177,21 @@ static bool vboxSvcClipboardReturnMsg (VBOXCLIPBOARDCLIENTDATA *pClient, VBOXHGC
/* Message priority is taken into account. */
if (pClient->fMsgQuit)
{
- LogFlow(("vboxSvcClipboardReturnMsg: Quit\n"));
+ LogRelFlow(("vboxSvcClipboardReturnMsg: Quit\n"));
VBoxHGCMParmUInt32Set (&paParms[0], VBOX_SHARED_CLIPBOARD_HOST_MSG_QUIT);
VBoxHGCMParmUInt32Set (&paParms[1], 0);
pClient->fMsgQuit = false;
}
else if (pClient->fMsgReadData)
{
- LogFlow(("vboxSvcClipboardReturnMsg: ReadData %02X\n", pClient->u32RequestedFormat));
+ LogRelFlow(("vboxSvcClipboardReturnMsg: ReadData %02X\n", pClient->u32RequestedFormat));
VBoxHGCMParmUInt32Set (&paParms[0], VBOX_SHARED_CLIPBOARD_HOST_MSG_READ_DATA);
VBoxHGCMParmUInt32Set (&paParms[1], pClient->u32RequestedFormat);
pClient->fMsgReadData = false;
}
else if (pClient->fMsgFormats)
{
- LogFlow(("vboxSvcClipboardReturnMsg: Formats %02X\n", pClient->u32AvailableFormats));
+ LogRelFlow(("vboxSvcClipboardReturnMsg: Formats %02X\n", pClient->u32AvailableFormats));
VBoxHGCMParmUInt32Set (&paParms[0], VBOX_SHARED_CLIPBOARD_HOST_MSG_FORMATS);
VBoxHGCMParmUInt32Set (&paParms[1], pClient->u32AvailableFormats);
pClient->fMsgFormats = false;
@@ -199,7 +199,7 @@ static bool vboxSvcClipboardReturnMsg (VBOXCLIPBOARDCLIENTDATA *pClient, VBOXHGC
else
{
/* No pending messages. */
- LogFlow(("vboxSvcClipboardReturnMsg: no message\n"));
+ LogRelFlow(("vboxSvcClipboardReturnMsg: no message\n"));
return false;
}
@@ -215,7 +215,7 @@ void vboxSvcClipboardReportMsg (VBOXCLIPBOARDCLIENTDATA *pClient, uint32_t u32Ms
{
case VBOX_SHARED_CLIPBOARD_HOST_MSG_QUIT:
{
- LogFlow(("vboxSvcClipboardReportMsg: Quit\n"));
+ LogRelFlow(("vboxSvcClipboardReportMsg: Quit\n"));
pClient->fMsgQuit = true;
} break;
case VBOX_SHARED_CLIPBOARD_HOST_MSG_READ_DATA:
@@ -227,7 +227,7 @@ void vboxSvcClipboardReportMsg (VBOXCLIPBOARDCLIENTDATA *pClient, uint32_t u32Ms
break;
}
- LogFlow(("vboxSvcClipboardReportMsg: ReadData %02X\n", u32Formats));
+ LogRelFlow(("vboxSvcClipboardReportMsg: ReadData %02X\n", u32Formats));
pClient->u32RequestedFormat = u32Formats;
pClient->fMsgReadData = true;
} break;
@@ -240,14 +240,14 @@ void vboxSvcClipboardReportMsg (VBOXCLIPBOARDCLIENTDATA *pClient, uint32_t u32Ms
break;
}
- LogFlow(("vboxSvcClipboardReportMsg: Formats %02X\n", u32Formats));
+ LogRelFlow(("vboxSvcClipboardReportMsg: Formats %02X\n", u32Formats));
pClient->u32AvailableFormats = u32Formats;
pClient->fMsgFormats = true;
} break;
default:
{
/* Invalid message. */
- LogFlow(("vboxSvcClipboardReportMsg: invalid message %d\n", u32Msg));
+ LogRelFlow(("vboxSvcClipboardReportMsg: invalid message %d\n", u32Msg));
} break;
}
@@ -269,7 +269,7 @@ void vboxSvcClipboardReportMsg (VBOXCLIPBOARDCLIENTDATA *pClient, uint32_t u32Ms
if (fMessageReturned)
{
- LogFlow(("vboxSvcClipboardReportMsg: CallComplete\n"));
+ LogRelFlow(("vboxSvcClipboardReportMsg: CallComplete\n"));
g_pHelpers->pfnCallComplete (callHandle, VINF_SUCCESS);
}
}
@@ -356,7 +356,7 @@ static DECLCALLBACK(int) svcConnect (void *, uint32_t u32ClientID, void *pvClien
g_pClient = pClient;
}
- Log(("vboxClipboardConnect: rc = %Rrc\n", rc));
+ LogRel2(("vboxClipboardConnect: rc = %Rrc\n", rc));
return rc;
}
@@ -371,8 +371,8 @@ static DECLCALLBACK(void) svcCall (void *,
{
int rc = VINF_SUCCESS;
- Log(("svcCall: u32ClientID = %d, fn = %d, cParms = %d, pparms = %d\n",
- u32ClientID, u32Function, cParms, paParms));
+ LogRel2(("svcCall: u32ClientID = %d, fn = %d, cParms = %d, pparms = %d\n",
+ u32ClientID, u32Function, cParms, paParms));
VBOXCLIPBOARDCLIENTDATA *pClient = (VBOXCLIPBOARDCLIENTDATA *)pvClient;
@@ -384,7 +384,7 @@ static DECLCALLBACK(void) svcCall (void *,
for (i = 0; i < cParms; i++)
{
/** @todo parameters other than 32 bit */
- Log((" pparms[%d]: type %d value %d\n", i, paParms[i].type, paParms[i].u.uint32));
+ LogRel2((" pparms[%d]: type %d value %d\n", i, paParms[i].type, paParms[i].u.uint32));
}
#endif
@@ -393,7 +393,7 @@ static DECLCALLBACK(void) svcCall (void *,
case VBOX_SHARED_CLIPBOARD_FN_GET_HOST_MSG:
{
/* The quest requests a host message. */
- Log(("svcCall: VBOX_SHARED_CLIPBOARD_FN_GET_HOST_MSG\n"));
+ LogRel2(("svcCall: VBOX_SHARED_CLIPBOARD_FN_GET_HOST_MSG\n"));
if (cParms != VBOX_SHARED_CLIPBOARD_CPARMS_GET_HOST_MSG)
{
@@ -426,7 +426,7 @@ static DECLCALLBACK(void) svcCall (void *,
pClient->async.callHandle = callHandle;
pClient->async.paParms = paParms;
- Log(("svcCall: async.\n"));
+ LogRel2(("svcCall: async.\n"));
}
vboxSvcClipboardUnlock ();
@@ -441,7 +441,7 @@ static DECLCALLBACK(void) svcCall (void *,
case VBOX_SHARED_CLIPBOARD_FN_FORMATS:
{
/* The guest reports that some formats are available. */
- Log(("svcCall: VBOX_SHARED_CLIPBOARD_FN_FORMATS\n"));
+ LogRel2(("svcCall: VBOX_SHARED_CLIPBOARD_FN_FORMATS\n"));
if (cParms != VBOX_SHARED_CLIPBOARD_CPARMS_FORMATS)
{
@@ -486,7 +486,7 @@ static DECLCALLBACK(void) svcCall (void *,
case VBOX_SHARED_CLIPBOARD_FN_READ_DATA:
{
/* The guest wants to read data in the given format. */
- Log(("svcCall: VBOX_SHARED_CLIPBOARD_FN_READ_DATA\n"));
+ LogRel2(("svcCall: VBOX_SHARED_CLIPBOARD_FN_READ_DATA\n"));
if (cParms != VBOX_SHARED_CLIPBOARD_CPARMS_READ_DATA)
{
@@ -532,7 +532,7 @@ static DECLCALLBACK(void) svcCall (void *,
g_fReadingData = true;
rc = g_pfnExtension (g_pvExtension, VBOX_CLIPBOARD_EXT_FN_DATA_READ, &parms, sizeof (parms));
- LogFlow(("DATA: g_fDelayedAnnouncement = %d, g_u32DelayedFormats = 0x%x\n", g_fDelayedAnnouncement, g_u32DelayedFormats));
+ LogRelFlow(("DATA: g_fDelayedAnnouncement = %d, g_u32DelayedFormats = 0x%x\n", g_fDelayedAnnouncement, g_u32DelayedFormats));
if (g_fDelayedAnnouncement)
{
vboxSvcClipboardReportMsg (g_pClient, VBOX_SHARED_CLIPBOARD_HOST_MSG_FORMATS, g_u32DelayedFormats);
@@ -582,7 +582,7 @@ static DECLCALLBACK(void) svcCall (void *,
case VBOX_SHARED_CLIPBOARD_FN_WRITE_DATA:
{
/* The guest writes the requested data. */
- Log(("svcCall: VBOX_SHARED_CLIPBOARD_FN_WRITE_DATA\n"));
+ LogRel2(("svcCall: VBOX_SHARED_CLIPBOARD_FN_WRITE_DATA\n"));
if (cParms != VBOX_SHARED_CLIPBOARD_CPARMS_WRITE_DATA)
{
@@ -640,7 +640,7 @@ static DECLCALLBACK(void) svcCall (void *,
}
}
- LogFlow(("svcCall: rc = %Rrc\n", rc));
+ LogRelFlow(("svcCall: rc = %Rrc\n", rc));
if (!fAsynchronousProcessing)
{
@@ -681,14 +681,14 @@ static DECLCALLBACK(int) svcHostCall (void *,
{
int rc = VINF_SUCCESS;
- Log(("svcHostCall: fn = %d, cParms = %d, pparms = %d\n",
+ LogRel2(("svcHostCall: fn = %d, cParms = %d, pparms = %d\n",
u32Function, cParms, paParms));
switch (u32Function)
{
case VBOX_SHARED_CLIPBOARD_HOST_FN_SET_MODE:
{
- Log(("svcCall: VBOX_SHARED_CLIPBOARD_HOST_FN_SET_MODE\n"));
+ LogRel2(("svcCall: VBOX_SHARED_CLIPBOARD_HOST_FN_SET_MODE\n"));
if (cParms != 1)
{
@@ -714,7 +714,7 @@ static DECLCALLBACK(int) svcHostCall (void *,
break;
}
- LogFlow(("svcHostCall: rc = %Rrc\n", rc));
+ LogRelFlow(("svcHostCall: rc = %Rrc\n", rc));
return rc;
}
@@ -769,7 +769,7 @@ static DECLCALLBACK(int) svcSaveState(void *, uint32_t u32ClientID, void *pvClie
* by VMMDev. The service therefore must save state as if there were no
* pending request.
*/
- Log(("svcSaveState: u32ClientID = %d\n", u32ClientID));
+ LogRel2(("svcSaveState: u32ClientID = %d\n", u32ClientID));
VBOXCLIPBOARDCLIENTDATA *pClient = (VBOXCLIPBOARDCLIENTDATA *)pvClient;
@@ -799,7 +799,7 @@ static DECLCALLBACK(int) svcSaveState(void *, uint32_t u32ClientID, void *pvClie
static DECLCALLBACK(int) svcLoadState(void *, uint32_t u32ClientID, void *pvClient, PSSMHANDLE pSSM)
{
- Log(("svcLoadState: u32ClientID = %d\n", u32ClientID));
+ LogRel2(("svcLoadState: u32ClientID = %d\n", u32ClientID));
VBOXCLIPBOARDCLIENTDATA *pClient = (VBOXCLIPBOARDCLIENTDATA *)pvClient;
@@ -813,7 +813,7 @@ static DECLCALLBACK(int) svcLoadState(void *, uint32_t u32ClientID, void *pvClie
if (len != sizeof(CLIPSAVEDSTATEDATA))
{
- Log(("Client data size mismatch: expected %d, got %d\n", sizeof (CLIPSAVEDSTATEDATA), len));
+ LogRel2(("Client data size mismatch: expected %d, got %d\n", sizeof (CLIPSAVEDSTATEDATA), len));
return VERR_SSM_DATA_UNIT_FORMAT_CHANGED;
}
@@ -824,7 +824,7 @@ static DECLCALLBACK(int) svcLoadState(void *, uint32_t u32ClientID, void *pvClie
/* Verify the loaded clients data and update the pClient. */
if (pClient->u32ClientID != savedState.u32ClientID)
{
- Log(("Client ID mismatch: expected %d, got %d\n", pClient->u32ClientID, savedState.u32ClientID));
+ LogRel2(("Client ID mismatch: expected %d, got %d\n", pClient->u32ClientID, savedState.u32ClientID));
return VERR_SSM_DATA_UNIT_FORMAT_CHANGED;
}
@@ -847,7 +847,7 @@ static DECLCALLBACK(int) extCallback (uint32_t u32Function, uint32_t u32Format,
{
case VBOX_CLIPBOARD_EXT_FN_FORMAT_ANNOUNCE:
{
- LogFlow(("ANNOUNCE: g_fReadingData = %d\n", g_fReadingData));
+ LogRelFlow(("ANNOUNCE: g_fReadingData = %d\n", g_fReadingData));
if (g_fReadingData)
{
g_fDelayedAnnouncement = true;
@@ -874,7 +874,7 @@ static DECLCALLBACK(int) extCallback (uint32_t u32Function, uint32_t u32Format,
static DECLCALLBACK(int) svcRegisterExtension(void *, PFNHGCMSVCEXT pfnExtension, void *pvExtension)
{
- LogFlowFunc(("pfnExtension = %p\n", pfnExtension));
+ LogRelFlowFunc(("pfnExtension = %p\n", pfnExtension));
VBOXCLIPBOARDEXTPARMS parms;
@@ -907,7 +907,7 @@ extern "C" DECLCALLBACK(DECLEXPORT(int)) VBoxHGCMSvcLoad (VBOXHGCMSVCFNTABLE *pt
{
int rc = VINF_SUCCESS;
- LogFlowFunc(("ptable = %p\n", ptable));
+ LogRelFlowFunc(("ptable = %p\n", ptable));
if (!ptable)
{
@@ -915,7 +915,7 @@ extern "C" DECLCALLBACK(DECLEXPORT(int)) VBoxHGCMSvcLoad (VBOXHGCMSVCFNTABLE *pt
}
else
{
- Log(("VBoxHGCMSvcLoad: ptable->cbSize = %d, ptable->u32Version = 0x%08X\n", ptable->cbSize, ptable->u32Version));
+ LogRel2(("VBoxHGCMSvcLoad: ptable->cbSize = %d, ptable->u32Version = 0x%08X\n", ptable->cbSize, ptable->u32Version));
if ( ptable->cbSize != sizeof (VBOXHGCMSVCFNTABLE)
|| ptable->u32Version != VBOX_HGCM_SVC_VERSION)
diff --git a/src/VBox/HostServices/SharedClipboard/x11-clipboard.cpp b/src/VBox/HostServices/SharedClipboard/x11-clipboard.cpp
index 22b612cd5..197a57133 100644
--- a/src/VBox/HostServices/SharedClipboard/x11-clipboard.cpp
+++ b/src/VBox/HostServices/SharedClipboard/x11-clipboard.cpp
@@ -71,7 +71,7 @@ struct _VBOXCLIPBOARDCONTEXT
void ClipReportX11Formats(VBOXCLIPBOARDCONTEXT *pCtx,
uint32_t u32Formats)
{
- LogFlowFunc(("called. pCtx=%p, u32Formats=%02X\n", pCtx, u32Formats));
+ LogRelFlowFunc(("called. pCtx=%p, u32Formats=%02X\n", pCtx, u32Formats));
vboxSvcClipboardReportMsg(pCtx->pClient,
VBOX_SHARED_CLIPBOARD_HOST_MSG_FORMATS,
u32Formats);
@@ -134,7 +134,7 @@ int vboxClipboardConnect (VBOXCLIPBOARDCLIENTDATA *pClient)
RTMemFree(pCtx);
LogRel(("Failed to initialise the shared clipboard\n"));
}
- LogFlowFunc(("returning %Rrc\n", rc));
+ LogRelFlowFunc(("returning %Rrc\n", rc));
return rc;
}
@@ -159,7 +159,7 @@ int vboxClipboardSync (VBOXCLIPBOARDCLIENTDATA *pClient)
*/
void vboxClipboardDisconnect (VBOXCLIPBOARDCLIENTDATA *pClient)
{
- LogFlow(("vboxClipboardDisconnect\n"));
+ LogRelFlow(("vboxClipboardDisconnect\n"));
LogRel(("Stopping the host clipboard service\n"));
VBOXCLIPBOARDCONTEXT *pCtx = pClient->pCtx;
@@ -191,7 +191,7 @@ void vboxClipboardDisconnect (VBOXCLIPBOARDCLIENTDATA *pClient)
void vboxClipboardFormatAnnounce (VBOXCLIPBOARDCLIENTDATA *pClient,
uint32_t u32Formats)
{
- LogFlowFunc(("called. pClient=%p, u32Formats=%02X\n", pClient,
+ LogRelFlowFunc(("called. pClient=%p, u32Formats=%02X\n", pClient,
u32Formats));
ClipAnnounceFormatToX11 (pClient->pCtx->pBackend, u32Formats);
}
@@ -229,7 +229,7 @@ int vboxClipboardReadData (VBOXCLIPBOARDCLIENTDATA *pClient,
uint32_t u32Format, void *pv, uint32_t cb,
uint32_t *pcbActual)
{
- LogFlowFunc(("pClient=%p, u32Format=%02X, pv=%p, cb=%u, pcbActual=%p",
+ LogRelFlowFunc(("pClient=%p, u32Format=%02X, pv=%p, cb=%u, pcbActual=%p",
pClient, u32Format, pv, cb, pcbActual));
int rc = VINF_SUCCESS;
@@ -245,7 +245,7 @@ int vboxClipboardReadData (VBOXCLIPBOARDCLIENTDATA *pClient,
if (RT_SUCCESS(rc))
rc = VINF_HGCM_ASYNC_EXECUTE;
}
- LogFlowFunc(("returning %Rrc\n", rc));
+ LogRelFlowFunc(("returning %Rrc\n", rc));
return rc;
}
@@ -289,7 +289,7 @@ static int clipWaitForDataFromVBox(VBOXCLIPBOARDCONTEXT *pCtx,
uint32_t u32Format)
{
int rc = VINF_SUCCESS;
- LogFlowFunc(("pCtx=%p, pReq=%p, u32Format=%02X\n", pCtx, pReq, u32Format));
+ LogRelFlowFunc(("pCtx=%p, pReq=%p, u32Format=%02X\n", pCtx, pReq, u32Format));
/* Request data from VBox */
vboxSvcClipboardReportMsg(pCtx->pClient,
VBOX_SHARED_CLIPBOARD_HOST_MSG_READ_DATA,
@@ -311,7 +311,7 @@ static int clipWaitForDataFromVBox(VBOXCLIPBOARDCONTEXT *pCtx,
RTCritSectLeave(&pCtx->clipboardMutex);
if (RT_SUCCESS(rc) && (pReq->pv == NULL))
rc = VERR_NO_DATA;
- LogFlowFunc(("returning %Rrc\n", rc));
+ LogRelFlowFunc(("returning %Rrc\n", rc));
return rc;
}
@@ -322,7 +322,7 @@ static int clipRequestDataFromVBox(VBOXCLIPBOARDCONTEXT *pCtx,
uint32_t u32Format)
{
int rc = VINF_SUCCESS;
- LogFlowFunc(("pCtx=%p, pReq=%p, u32Format=%02X\n", pCtx, pReq,
+ LogRelFlowFunc(("pCtx=%p, pReq=%p, u32Format=%02X\n", pCtx, pReq,
u32Format));
/* Start by "posting" the request for the next invocation of
* vboxClipboardWriteData. */
@@ -339,7 +339,7 @@ static int clipRequestDataFromVBox(VBOXCLIPBOARDCONTEXT *pCtx,
RTCritSectLeave(&pCtx->clipboardMutex);
if (RT_SUCCESS(rc))
rc = clipWaitForDataFromVBox(pCtx, pReq, u32Format);
- LogFlowFunc(("returning %Rrc\n", rc));
+ LogRelFlowFunc(("returning %Rrc\n", rc));
return rc;
}
@@ -360,12 +360,12 @@ int ClipRequestDataForX11 (VBOXCLIPBOARDCONTEXT *pCtx,
{
VBOXCLIPBOARDREQFROMVBOX request = { NULL };
- LogFlowFunc(("pCtx=%p, u32Format=%02X, ppv=%p, pcb=%p\n", pCtx,
+ LogRelFlowFunc(("pCtx=%p, u32Format=%02X, ppv=%p, pcb=%p\n", pCtx,
u32Format, ppv, pcb));
if (pCtx->fShuttingDown)
{
/* The shared clipboard is disconnecting. */
- LogFunc(("host requested guest clipboard data after guest had disconnected.\n"));
+ LogRelFunc(("host requested guest clipboard data after guest had disconnected.\n"));
return VERR_WRONG_ORDER;
}
int rc = RTSemEventCreate(&request.finished);
@@ -379,9 +379,9 @@ int ClipRequestDataForX11 (VBOXCLIPBOARDCONTEXT *pCtx,
*ppv = request.pv;
*pcb = request.cb;
}
- LogFlowFunc(("returning %Rrc\n", rc));
+ LogRelFlowFunc(("returning %Rrc\n", rc));
if (RT_SUCCESS(rc))
- LogFlowFunc(("*ppv=%.*ls, *pcb=%u\n", *pcb / 2, *ppv, *pcb));
+ LogRelFlowFunc(("*ppv=%.*ls, *pcb=%u\n", *pcb / 2, *ppv, *pcb));
return rc;
}
@@ -397,7 +397,7 @@ int ClipRequestDataForX11 (VBOXCLIPBOARDCONTEXT *pCtx,
void vboxClipboardWriteData (VBOXCLIPBOARDCLIENTDATA *pClient,
void *pv, uint32_t cb, uint32_t u32Format)
{
- LogFlowFunc (("called. pClient=%p, pv=%p (%.*ls), cb=%u, u32Format=%02X\n",
+ LogRelFlowFunc (("called. pClient=%p, pv=%p (%.*ls), cb=%u, u32Format=%02X\n",
pClient, pv, cb / 2, pv, cb, u32Format));
VBOXCLIPBOARDCONTEXT *pCtx = pClient->pCtx;
diff --git a/src/VBox/HostServices/SharedFolders/service.cpp b/src/VBox/HostServices/SharedFolders/service.cpp
index 27aae9c9d..7e27a5700 100644
--- a/src/VBox/HostServices/SharedFolders/service.cpp
+++ b/src/VBox/HostServices/SharedFolders/service.cpp
@@ -208,7 +208,7 @@ static DECLCALLBACK(int) svcLoadState(void *, uint32_t u32ClientID, void *pvClie
/* Load the saved mapping description and try to find it in the mappings. */
MAPPING mapping;
memset (&mapping, 0, sizeof (mapping));
-
+
/* restore the folder mapping counter. */
rc = SSMR3GetU32(pSSM, &mapping.cMappings);
AssertRCReturn(rc, rc);
@@ -314,7 +314,7 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
/* Verify parameters values. */
if ( (fu32Flags & ~SHFL_MF_UTF8) != 0
- || (cbMappings < sizeof (SHFLMAPPING) * cMappings)
+ || cbMappings / sizeof (SHFLMAPPING) < cMappings
)
{
rc = VERR_INVALID_PARAMETER;
@@ -360,12 +360,9 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
/* Fetch parameters. */
SHFLROOT root = (SHFLROOT)paParms[0].u.uint32;
SHFLSTRING *pString = (SHFLSTRING *)paParms[1].u.pointer.addr;
- uint32_t cbString = paParms[1].u.pointer.size;
/* Verify parameters values. */
- if ( (cbString < sizeof (SHFLSTRING))
- || (cbString < pString->u16Size)
- )
+ if (!ShflStringIsValid(pString, paParms[1].u.pointer.size))
{
rc = VERR_INVALID_PARAMETER;
}
@@ -411,7 +408,7 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
uint32_t cbParms = paParms[2].u.pointer.size;
/* Verify parameters values. */
- if ( (cbPath < sizeof (SHFLSTRING))
+ if ( !ShflStringIsValid(pPath, cbPath)
|| (cbParms != sizeof (SHFLCREATEPARMS))
)
{
@@ -513,7 +510,9 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
uint8_t *pBuffer = (uint8_t *)paParms[4].u.pointer.addr;
/* Verify parameters values. */
- if (Handle == SHFL_HANDLE_ROOT)
+ if ( Handle == SHFL_HANDLE_ROOT
+ || count > paParms[4].u.pointer.size
+ )
{
rc = VERR_INVALID_PARAMETER;
}
@@ -578,7 +577,9 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
uint8_t *pBuffer = (uint8_t *)paParms[4].u.pointer.addr;
/* Verify parameters values. */
- if (Handle == SHFL_HANDLE_ROOT)
+ if ( Handle == SHFL_HANDLE_ROOT
+ || count > paParms[4].u.pointer.size
+ )
{
rc = VERR_INVALID_PARAMETER;
}
@@ -737,6 +738,8 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
/* Verify parameters values. */
if ( (length < sizeof (SHFLDIRINFO))
+ || length > paParms[5].u.pointer.size
+ || !ShflStringIsValidOrNull(pPath, paParms[4].u.pointer.size)
)
{
rc = VERR_INVALID_PARAMETER;
@@ -800,13 +803,21 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
SHFLROOT root = (SHFLROOT)paParms[1].u.uint32;
RTUTF16 delimiter = (RTUTF16)paParms[2].u.uint32;
- /* Execute the function. */
- rc = vbsfMapFolder (pClient, pszMapName, delimiter, false, &root);
-
- if (RT_SUCCESS(rc))
+ /* Verify parameters values. */
+ if (!ShflStringIsValid(pszMapName, paParms[0].u.pointer.size))
{
- /* Update parameters.*/
- paParms[1].u.uint32 = root;
+ rc = VERR_INVALID_PARAMETER;
+ }
+ else
+ {
+ /* Execute the function. */
+ rc = vbsfMapFolder (pClient, pszMapName, delimiter, false, &root);
+
+ if (RT_SUCCESS(rc))
+ {
+ /* Update parameters.*/
+ paParms[1].u.uint32 = root;
+ }
}
}
break;
@@ -843,13 +854,22 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
RTUTF16 delimiter = (RTUTF16)paParms[2].u.uint32;
bool fCaseSensitive = !!paParms[3].u.uint32;
- /* Execute the function. */
- rc = vbsfMapFolder (pClient, pszMapName, delimiter, fCaseSensitive, &root);
-
- if (RT_SUCCESS(rc))
+ /* Verify parameters values. */
+ if (!ShflStringIsValid(pszMapName, paParms[0].u.pointer.size))
{
- /* Update parameters.*/
- paParms[1].u.uint32 = root;
+ rc = VERR_INVALID_PARAMETER;
+ }
+ else
+ {
+
+ /* Execute the function. */
+ rc = vbsfMapFolder (pClient, pszMapName, delimiter, fCaseSensitive, &root);
+
+ if (RT_SUCCESS(rc))
+ {
+ /* Update parameters.*/
+ paParms[1].u.uint32 = root;
+ }
}
}
LogRel(("SharedFolders host service: map operation result %Rrc.\n", rc));
@@ -921,20 +941,28 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
uint32_t length = paParms[3].u.uint32;
uint8_t *pBuffer = (uint8_t *)paParms[4].u.pointer.addr;
- /* Execute the function. */
- if (flags & SHFL_INFO_SET)
- rc = vbsfSetFSInfo (pClient, root, Handle, flags, &length, pBuffer);
- else /* SHFL_INFO_GET */
- rc = vbsfQueryFSInfo (pClient, root, Handle, flags, &length, pBuffer);
-
- if (RT_SUCCESS(rc))
+ /* Verify parameters values. */
+ if (length > paParms[4].u.pointer.size)
{
- /* Update parameters.*/
- paParms[3].u.uint32 = length;
+ rc = VERR_INVALID_PARAMETER;
}
else
{
- paParms[3].u.uint32 = 0; /* nothing read */
+ /* Execute the function. */
+ if (flags & SHFL_INFO_SET)
+ rc = vbsfSetFSInfo (pClient, root, Handle, flags, &length, pBuffer);
+ else /* SHFL_INFO_GET */
+ rc = vbsfQueryFSInfo (pClient, root, Handle, flags, &length, pBuffer);
+
+ if (RT_SUCCESS(rc))
+ {
+ /* Update parameters.*/
+ paParms[3].u.uint32 = length;
+ }
+ else
+ {
+ paParms[3].u.uint32 = 0; /* nothing read */
+ }
}
}
break;
@@ -966,8 +994,7 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
uint32_t flags = paParms[2].u.uint32;
/* Verify parameters values. */
- if ( (cbPath < sizeof (SHFLSTRING))
- )
+ if (!ShflStringIsValid(pPath, cbPath))
{
rc = VERR_INVALID_PARAMETER;
}
@@ -1008,14 +1035,12 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
/* Fetch parameters. */
SHFLROOT root = (SHFLROOT)paParms[0].u.uint32;
SHFLSTRING *pSrc = (SHFLSTRING *)paParms[1].u.pointer.addr;
- uint32_t cbSrc = paParms[1].u.pointer.size;
SHFLSTRING *pDest = (SHFLSTRING *)paParms[2].u.pointer.addr;
- uint32_t cbDest = paParms[2].u.pointer.size;
uint32_t flags = paParms[3].u.uint32;
/* Verify parameters values. */
- if ( (cbSrc < sizeof (SHFLSTRING))
- || (cbDest < sizeof (SHFLSTRING))
+ if ( !ShflStringIsValid(pSrc, paParms[1].u.pointer.size)
+ || !ShflStringIsValid(pDest, paParms[2].u.pointer.size)
)
{
rc = VERR_INVALID_PARAMETER;
@@ -1155,16 +1180,12 @@ static DECLCALLBACK(int) svcHostCall (void *, uint32_t u32Function, uint32_t cPa
{
/* Fetch parameters. */
SHFLSTRING *pFolderName = (SHFLSTRING *)paParms[0].u.pointer.addr;
- uint32_t cbStringFolder = paParms[0].u.pointer.size;
SHFLSTRING *pMapName = (SHFLSTRING *)paParms[1].u.pointer.addr;
- uint32_t cbStringMap = paParms[1].u.pointer.size;
uint32_t fWritable = paParms[2].u.uint32;
/* Verify parameters values. */
- if ( (cbStringFolder < sizeof (SHFLSTRING))
- || (cbStringFolder < pFolderName->u16Size)
- || (cbStringMap < sizeof (SHFLSTRING))
- || (cbStringMap < pMapName->u16Size)
+ if ( !ShflStringIsValid(pFolderName, paParms[0].u.pointer.size)
+ || !ShflStringIsValid(pMapName, paParms[1].u.pointer.size)
)
{
rc = VERR_INVALID_PARAMETER;
@@ -1204,13 +1225,10 @@ static DECLCALLBACK(int) svcHostCall (void *, uint32_t u32Function, uint32_t cPa
else
{
/* Fetch parameters. */
- SHFLSTRING *pString = (SHFLSTRING *)paParms[0].u.pointer.addr;
- uint32_t cbString = paParms[0].u.pointer.size;
+ SHFLSTRING *pString = (SHFLSTRING *)paParms[0].u.pointer.addr;
/* Verify parameters values. */
- if ( (cbString < sizeof (SHFLSTRING))
- || (cbString < pString->u16Size)
- )
+ if (!ShflStringIsValid(pString, paParms[0].u.pointer.size))
{
rc = VERR_INVALID_PARAMETER;
}
diff --git a/src/VBox/HostServices/SharedFolders/vbsf.cpp b/src/VBox/HostServices/SharedFolders/vbsf.cpp
index 3f48e2756..dbbe6845f 100644
--- a/src/VBox/HostServices/SharedFolders/vbsf.cpp
+++ b/src/VBox/HostServices/SharedFolders/vbsf.cpp
@@ -241,7 +241,7 @@ static int vbsfPathCheck(const char *pUtf8Path, size_t cbPath)
return rc;
}
-static int vbsfBuildFullPath (SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLSTRING *pPath,
+static int vbsfBuildFullPath (SHFLCLIENTDATA *pClient, SHFLROOT root, PSHFLSTRING pPath,
uint32_t cbPath, char **ppszFullPath, uint32_t *pcbFullPathRoot, bool fWildCard = false)
{
int rc = VINF_SUCCESS;
@@ -264,7 +264,7 @@ static int vbsfBuildFullPath (SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLSTRING
char *utf8Root;
/* Verify that the path is under the root directory. */
- rc = vbsfPathCheck((char *)&pPath->String.utf8[0], pPath->u16Length);
+ rc = vbsfPathCheck((const char *)&pPath->String.utf8[0], pPath->u16Length);
if (RT_SUCCESS (rc))
{
@@ -1444,8 +1444,8 @@ int vbsfFlush(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLHANDLE Handle)
return rc;
}
-int vbsfDirList(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLHANDLE Handle, SHFLSTRING *pPath, uint32_t flags, uint32_t *pcbBuffer, uint8_t *pBuffer,
- uint32_t *pIndex, uint32_t *pcFiles)
+int vbsfDirList(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLHANDLE Handle, SHFLSTRING *pPath, uint32_t flags,
+ uint32_t *pcbBuffer, uint8_t *pBuffer, uint32_t *pIndex, uint32_t *pcFiles)
{
SHFLFILEHANDLE *pHandle = (SHFLFILEHANDLE *)vbsfQueryHandle(Handle, SHFL_HF_TYPE_DIR);
PRTDIRENTRYEX pDirEntry = 0, pDirEntryOrg;
diff --git a/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp b/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
index 2d2cf3fac..ac4f78a63 100644
--- a/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
+++ b/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
@@ -130,7 +130,7 @@ static DECLCALLBACK(int) svcConnect (void *, uint32_t u32ClientID, void *pvClien
#else
g_pFrameBuffer->COMGETTER(WinId)(&g_winId);
renderspuSetWindowId((uint32_t)g_winId);
- crVBoxServerAddClient(u32ClientID);
+ rc = crVBoxServerAddClient(u32ClientID);
#endif
return rc;
@@ -221,6 +221,12 @@ static DECLCALLBACK(int) svcLoadState(void *, uint32_t u32ClientID, void *pvClie
return VINF_SUCCESS;
}
+static void svcClientVersionUnsupported(uint32_t minor, uint32_t major)
+{
+ LogRel(("SHARED_CROPENGL: unsupported client version %d.%d\n", minor, major));
+ /*todo add warning window*/
+}
+
static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32_t u32ClientID, void *pvClient, uint32_t u32Function, uint32_t cParms, VBOXHGCMSVCPARM paParms[])
{
int rc = VINF_SUCCESS;
@@ -263,7 +269,13 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
uint32_t cbBuffer = paParms[0].u.pointer.size;
/* Execute the function. */
- crVBoxServerClientWrite(u32ClientID, pBuffer, cbBuffer);
+ rc = crVBoxServerClientWrite(u32ClientID, pBuffer, cbBuffer);
+ if (!RT_SUCCESS(rc))
+ {
+ Assert(VERR_NOT_SUPPORTED==rc);
+ svcClientVersionUnsupported(0, 0);
+ }
+
}
break;
}
@@ -296,6 +308,9 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
{
/* Update parameters.*/
paParms[0].u.pointer.size = cbBuffer; //@todo guest doesn't see this change somehow?
+ } else if (VERR_NOT_SUPPORTED==rc)
+ {
+ svcClientVersionUnsupported(0, 0);
}
/* Return the required buffer size always */
@@ -331,7 +346,13 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
uint32_t cbWriteback = paParms[1].u.pointer.size;
/* Execute the function. */
- crVBoxServerClientWrite(u32ClientID, pBuffer, cbBuffer);
+ rc = crVBoxServerClientWrite(u32ClientID, pBuffer, cbBuffer);
+ if (!RT_SUCCESS(rc))
+ {
+ Assert(VERR_NOT_SUPPORTED==rc);
+ svcClientVersionUnsupported(0, 0);
+ }
+
rc = crVBoxServerClientRead(u32ClientID, pWriteback, &cbWriteback);
if (RT_SUCCESS(rc))
@@ -345,6 +366,41 @@ static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32
break;
}
+ case SHCRGL_GUEST_FN_SET_VERSION:
+ {
+ Log(("svcCall: SHCRGL_GUEST_FN_SET_VERSION\n"));
+
+ /* Verify parameter count and types. */
+ if (cParms != SHCRGL_CPARMS_SET_VERSION)
+ {
+ rc = VERR_INVALID_PARAMETER;
+ }
+ else
+ if ( paParms[0].type != VBOX_HGCM_SVC_PARM_32BIT /* vMajor */
+ || paParms[1].type != VBOX_HGCM_SVC_PARM_32BIT /* vMinor */
+ )
+ {
+ rc = VERR_INVALID_PARAMETER;
+ }
+ else
+ {
+ /* Fetch parameters. */
+ uint32_t vMajor = paParms[0].u.uint32;
+ uint32_t vMinor = paParms[1].u.uint32;
+
+ /* Execute the function. */
+ rc = crVBoxServerClientSetVersion(u32ClientID, vMajor, vMinor);
+
+ if (!RT_SUCCESS(rc))
+ {
+ /*@todo, add warning window*/
+ svcClientVersionUnsupported(vMajor, vMinor);
+ }
+ }
+
+ break;
+ }
+
default:
{
rc = VERR_NOT_IMPLEMENTED;
diff --git a/src/VBox/HostServices/SharedOpenGL/crserverlib/server_context.c b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_context.c
index a7267323c..aaf1760b2 100644
--- a/src/VBox/HostServices/SharedOpenGL/crserverlib/server_context.c
+++ b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_context.c
@@ -143,6 +143,36 @@ crServerDispatchDestroyContext( GLint ctx )
cr_server.curClient->contextList[pos] = 0;
break;
}
+
+ /*Some application call destroy context not in a thread where it was created...have do deal with it.*/
+ if (CR_MAX_CONTEXTS==pos)
+ {
+ int32_t client;
+
+ for (client=0; client<cr_server.numClients; ++client)
+ {
+ if (cr_server.clients[client]==cr_server.curClient)
+ continue;
+
+ for (pos = 0; pos < CR_MAX_CONTEXTS; ++pos)
+ if (cr_server.clients[client]->contextList[pos] == ctx)
+ {
+ cr_server.clients[client]->contextList[pos] = 0;
+ break;
+ }
+
+ if (pos<CR_MAX_CONTEXTS)
+ {
+ if (cr_server.clients[client]->currentCtx == crCtx)
+ {
+ cr_server.clients[client]->currentContextNumber = -1;
+ cr_server.clients[client]->currentCtx = cr_server.DummyContext;
+ }
+ break;
+ }
+ }
+ }
+
CRASSERT(pos<CR_MAX_CONTEXTS);
}
}
diff --git a/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c
index d36acb001..f7b6be15a 100644
--- a/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c
+++ b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c
@@ -318,10 +318,16 @@ GLboolean crVBoxServerInit(void)
return GL_TRUE;
}
-void crVBoxServerAddClient(uint32_t u32ClientID)
+int32_t crVBoxServerAddClient(uint32_t u32ClientID)
{
- CRClient *newClient = (CRClient *) crCalloc(sizeof(CRClient));
-
+ CRClient *newClient;
+
+ if (cr_server.numClients>=CR_MAX_CLIENTS)
+ {
+ return VERR_MAX_THRDS_REACHED;
+ }
+
+ newClient = (CRClient *) crCalloc(sizeof(CRClient));
crDebug("crServer: AddClient u32ClientID=%d", u32ClientID);
newClient->spu_id = 0;
@@ -335,6 +341,8 @@ void crVBoxServerAddClient(uint32_t u32ClientID)
cr_server.clients[cr_server.numClients++] = newClient;
crServerAddToRunQueue(newClient);
+
+ return VINF_SUCCESS;
}
void crVBoxServerRemoveClient(uint32_t u32ClientID)
@@ -362,7 +370,7 @@ void crVBoxServerRemoveClient(uint32_t u32ClientID)
crServerDeleteClient(pClient);
}
-void crVBoxServerClientWrite(uint32_t u32ClientID, uint8_t *pBuffer, uint32_t cbBuffer)
+int32_t crVBoxServerClientWrite(uint32_t u32ClientID, uint8_t *pBuffer, uint32_t cbBuffer)
{
CRClient *pClient;
int32_t i;
@@ -380,6 +388,8 @@ void crVBoxServerClientWrite(uint32_t u32ClientID, uint8_t *pBuffer, uint32_t cb
pClient = cr_server.clients[i];
CRASSERT(pClient);
+ if (!pClient->conn->vMajor) return VERR_NOT_SUPPORTED;
+
CRASSERT(pBuffer);
/* This should never fire unless we start to multithread */
@@ -435,6 +445,8 @@ void crVBoxServerClientWrite(uint32_t u32ClientID, uint8_t *pBuffer, uint32_t cb
crStateResetCurrentPointers(&cr_server.current);
CRASSERT(!pClient->conn->allow_redir_ptr || crNetNumMessages(pClient->conn)==0);
+
+ return VINF_SUCCESS;
}
int32_t crVBoxServerClientRead(uint32_t u32ClientID, uint8_t *pBuffer, uint32_t *pcbBuffer)
@@ -455,6 +467,8 @@ int32_t crVBoxServerClientRead(uint32_t u32ClientID, uint8_t *pBuffer, uint32_t
pClient = cr_server.clients[i];
CRASSERT(pClient);
+ if (!pClient->conn->vMajor) return VERR_NOT_SUPPORTED;
+
if (pClient->conn->cbHostBuffer > *pcbBuffer)
{
crDebug("crServer: [%lx] ClientRead u32ClientID=%d FAIL, host buffer too small %d of %d",
@@ -479,6 +493,33 @@ int32_t crVBoxServerClientRead(uint32_t u32ClientID, uint8_t *pBuffer, uint32_t
return VINF_SUCCESS;
}
+int32_t crVBoxServerClientSetVersion(uint32_t u32ClientID, uint32_t vMajor, uint32_t vMinor)
+{
+ CRClient *pClient;
+ int32_t i;
+
+ for (i = 0; i < cr_server.numClients; i++)
+ {
+ if (cr_server.clients[i] && cr_server.clients[i]->conn
+ && cr_server.clients[i]->conn->u32ClientID==u32ClientID)
+ {
+ break;
+ }
+ }
+ pClient = cr_server.clients[i];
+ CRASSERT(pClient);
+
+ pClient->conn->vMajor = vMajor;
+ pClient->conn->vMinor = vMinor;
+
+ if (vMajor != CR_PROTOCOL_VERSION_MAJOR
+ || vMinor != CR_PROTOCOL_VERSION_MINOR)
+ {
+ return VERR_NOT_SUPPORTED;
+ }
+ else return VINF_SUCCESS;
+}
+
int
CRServerMain(int argc, char *argv[])
{
diff --git a/src/VBox/HostServices/SharedOpenGL/crserverlib/server_window.c b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_window.c
index 6e837ab95..277fdc6af 100644
--- a/src/VBox/HostServices/SharedOpenGL/crserverlib/server_window.c
+++ b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_window.c
@@ -143,19 +143,49 @@ crServerDispatchWindowDestroy( GLint window )
if (cr_server.curClient)
{
+ if (cr_server.curClient->currentMural == mural)
+ {
+ cr_server.curClient->currentMural = NULL;
+ cr_server.curClient->currentWindow = -1;
+ }
+
for (pos = 0; pos < CR_MAX_WINDOWS; ++pos)
if (cr_server.curClient->windowList[pos] == window)
{
cr_server.curClient->windowList[pos] = 0;
break;
}
- CRASSERT(pos<CR_MAX_WINDOWS);
- if (cr_server.curClient->currentMural == mural)
+ /*Same as with contexts, some apps destroy it not in a thread where it was created*/
+ if (CR_MAX_WINDOWS==pos)
{
- cr_server.curClient->currentMural = NULL;
- cr_server.curClient->currentWindow = -1;
+ int32_t client;
+
+ for (client=0; client<cr_server.numClients; ++client)
+ {
+ if (cr_server.clients[client]==cr_server.curClient)
+ continue;
+
+ for (pos = 0; pos < CR_MAX_WINDOWS; ++pos)
+ if (cr_server.clients[client]->windowList[pos] == window)
+ {
+ cr_server.clients[client]->windowList[pos] = 0;
+ break;
+ }
+
+ if (pos<CR_MAX_WINDOWS)
+ {
+ if (cr_server.clients[client]->currentMural == mural)
+ {
+ cr_server.clients[client]->currentMural = NULL;
+ cr_server.clients[client]->currentWindow = -1;
+ }
+ break;
+ }
+ }
}
+
+ CRASSERT(pos<CR_MAX_WINDOWS);
}
if (cr_server.currentWindow == window)
diff --git a/src/VBox/HostServices/SharedOpenGL/render/renderspu_agl.c b/src/VBox/HostServices/SharedOpenGL/render/renderspu_agl.c
index fbd7e24b8..bb5aecfe8 100644
--- a/src/VBox/HostServices/SharedOpenGL/render/renderspu_agl.c
+++ b/src/VBox/HostServices/SharedOpenGL/render/renderspu_agl.c
@@ -186,11 +186,12 @@ windowEvtHndlr(EventHandlerCallRef myHandler, EventRef event, void* userData)
RTSemFastMutexRequest(render_spu.syncMutex);
GLboolean result = render_spu.ws.aglSetCurrentContext(tmpContext);
CHECK_AGL_RC (result, "Render SPU (windowEvtHndlr): SetCurrentContext Failed");
- if (result)
- {
- result = render_spu.ws.aglUpdateContext(tmpContext);
- CHECK_AGL_RC (result, "Render SPU (windowEvtHndlr): UpdateContext Failed");
- }
+ /* Doesn't work with DirectX; Anyway doesn't */
+/* if (result)*/
+/* {*/
+/* result = render_spu.ws.aglUpdateContext(tmpContext);*/
+/* CHECK_AGL_RC (result, "Render SPU (windowEvtHndlr): UpdateContext Failed");*/
+/* }*/
RTSemFastMutexRelease(render_spu.syncMutex);
}
eventResult = noErr;
diff --git a/src/VBox/Installer/linux/vboxdrv.sh.in b/src/VBox/Installer/linux/vboxdrv.sh.in
index a5ec9415a..acd2e28ca 100755
--- a/src/VBox/Installer/linux/vboxdrv.sh.in
+++ b/src/VBox/Installer/linux/vboxdrv.sh.in
@@ -153,6 +153,10 @@ start()
if ! rm -f $DEVICE; then
failure "Cannot remove $DEVICE"
fi
+ # HACK: disable the hardware performance counter framework
+ if [ -e /proc/sys/kernel/perf_counter_paranoid ]; then
+ echo 2 > /proc/sys/kernel/perf_counter_paranoid
+ fi
if ! modprobe vboxdrv > /dev/null 2>&1; then
failure "modprobe vboxdrv failed. Please use 'dmesg' to find out why"
fi
diff --git a/src/VBox/Installer/solaris/Makefile.kmk b/src/VBox/Installer/solaris/Makefile.kmk
index 459b72197..08fb3c9ff 100644
--- a/src/VBox/Installer/solaris/Makefile.kmk
+++ b/src/VBox/Installer/solaris/Makefile.kmk
@@ -35,12 +35,12 @@ VBOX_SOL_INST_DEP_ON_MAKEFILE := $(MAKEFILE_CURRENT)
ifdef VBOX_WITH_COMBINED_SOLARIS_PACKAGE ## @todo remove this when tinderclient.pl is updated.
VBOX_WITH_COMBINED_PACKAGE := 1
endif
-VBOX_PATH_SOL_INST_SRC := $(PATH_SUB_CURRENT)
-SOLARIS_DIR_NAME_64 := amd64
-SOLARIS_DIR_NAME_32 := i386
-SOLARIS_INST_OUT_DIR := $(PATH_TARGET)/Installer
-SOLARIS_BASEINST_DIR := $(PATH_TARGET)/Installer/BasePkg
-SOLARIS_VBOXINST_SUBDIR := /opt/VirtualBox
+VBOX_PATH_SOL_INST_SRC := $(PATH_SUB_CURRENT)
+SOLARIS_DIR_NAME_64 := amd64
+SOLARIS_DIR_NAME_32 := i386
+SOLARIS_INST_OUT_DIR := $(PATH_TARGET)/Installer
+SOLARIS_BASEINST_DIR := $(PATH_TARGET)/Installer/BasePkg
+SOLARIS_VBOXINST_SUBDIR := opt/VirtualBox
SOLARIS_VBOXINST_DIR := $(SOLARIS_BASEINST_DIR)/$(SOLARIS_VBOXINST_SUBDIR)
SOLARIS_VBOXINST_DIR_32 := $(SOLARIS_VBOXINST_DIR)/$(SOLARIS_DIR_NAME_32)
SOLARIS_VBOXINST_DIR_64 := $(SOLARIS_VBOXINST_DIR)/$(SOLARIS_DIR_NAME_64)
@@ -54,28 +54,28 @@ SOLARIS_USRSHR_PIXMAPS_DIR := $(SOLARIS_USR_DIR)/share/pixmaps
SOLARIS_VBOXSMF_DIR := $(SOLARIS_BASEINST_DIR)/var/svc/manifest/application/virtualbox
SOLARIS_ETC_DIR := $(SOLARIS_BASEINST_DIR)/etc
-SOLARIS_OUT_BIN_64 := $(PATH_OUT_BASE)/solaris.amd64/$(KBUILD_TYPE)/bin
-SOLARIS_OUT_BIN_32 := $(PATH_OUT_BASE)/solaris.x86/$(KBUILD_TYPE)/bin
-SOLARIS_OUT_BIN := $(PATH_BIN)
+SOLARIS_OUT_BIN_64 := $(PATH_OUT_BASE)/solaris.amd64/$(KBUILD_TYPE)/bin
+SOLARIS_OUT_BIN_32 := $(PATH_OUT_BASE)/solaris.x86/$(KBUILD_TYPE)/bin
+SOLARIS_OUT_BIN := $(PATH_BIN)
-SOLARIS_DBG_DIR := $(PATH_TARGET)/Installer/DebugPkg
-SOLARIS_DBG_DIR_32 := $(SOLARIS_DBG_DIR)/$(SOLARIS_DIR_NAME_32)
-SOLARIS_DBG_DIR_64 := $(SOLARIS_DBG_DIR)/$(SOLARIS_DIR_NAME_64)
-SOLARIS_VBI_DIR := $(PATH_TARGET)/Installer/KernelPkg
+SOLARIS_DBG_DIR := $(PATH_TARGET)/Installer/DebugPkg
+SOLARIS_DBG_DIR_32 := $(SOLARIS_DBG_DIR)/$(SOLARIS_DIR_NAME_32)
+SOLARIS_DBG_DIR_64 := $(SOLARIS_DBG_DIR)/$(SOLARIS_DIR_NAME_64)
+SOLARIS_VBI_DIR := $(PATH_TARGET)/Installer/KernelPkg
ifeq ($(KBUILD_TARGET_ARCH),amd64)
SOLARIS_VBOXINST_DIR_ISA := $(SOLARIS_VBOXINST_DIR_64)
SOLARIS_DRIVERINST_DIR_ISA := $(SOLARIS_DRIVERINST_DIR_64)
- SOLARIS_DBG_DIR_ISA := $(SOLARIS_DBG_DIR_64)
- SOL_DBG_OBJCOPY := /usr/sfw/bin/gobjcopy --only-keep-debug
+ SOLARIS_DBG_DIR_ISA := $(SOLARIS_DBG_DIR_64)
+ SOL_DBG_OBJCOPY := /usr/sfw/bin/gobjcopy --only-keep-debug
SOL64_PKG := 1
else
SOLARIS_VBOXINST_DIR_ISA := $(SOLARIS_VBOXINST_DIR_32)
SOLARIS_DRIVERINST_DIR_ISA := $(SOLARIS_DRIVERINST_DIR_32)
- SOLARIS_DBG_DIR_ISA := $(SOLARIS_DBG_DIR_32)
- SOL_DBG_OBJCOPY := $(CP) -p # Solaris ld/gobjcopy(2.15) don't get along on x86, works only on amd64. So just using cp for now.
+ SOLARIS_DBG_DIR_ISA := $(SOLARIS_DBG_DIR_32)
+ SOL_DBG_OBJCOPY := $(CP) -p # Solaris ld/gobjcopy(2.15) don't get along on x86, works only on amd64. So just using cp for now.
endif
-SOL_OBJCOPY := /usr/sfw/bin/gobjcopy --strip-unneeded -R .comment
+SOL_OBJCOPY := /usr/sfw/bin/gobjcopy --strip-unneeded -R .comment
# Figure out the paths to the two platform specific Qt4 directories
@@ -101,7 +101,7 @@ VBIPKG_FILENAME = VirtualBoxKern-$(VBOX_VERSION_STRING)-SunOS-r$(VBOX_SVN_REV)
# Targets
#
PROGRAMS += VBoxZoneAccess VBoxISAExec
-INSTALLS += solaris-doc solaris-bin
+INSTALLS += solaris-doc solaris-bin solaris-drv-confs
BLDDIRS += \
$(SOLARIS_INST_OUT_DIR) \
@@ -123,7 +123,7 @@ BLDDIRS += $(addprefix $(SOLARIS_BASEINST_DIR)/,\
PACKING += $(PATH_BIN)/$(PKG_FILENAME).tar.gz $(PATH_BIN)/$(DBG_ARCHIVE)
OTHER_CLEAN += $(addprefix $(SOLARIS_BASEINST_DIR)/,\
- vbox.pkginfo vbox.copyright vbox.space vbox.pkgresponse \
+ vbox.pkginfo vbox.copyright vbox.space vbox.depend vbox.pkgresponse \
makepackage.sh prototype postinstall.sh checkinstall.sh preremove.sh)
#
@@ -153,7 +153,19 @@ solaris-doc_SOURCES = \
solaris-bin_INST = bin/
solaris-bin_MODE = a+rx,u+w
solaris-bin_SOURCES = \
- $(if $(VBOX_WITH_PYTHON),$(PATH_ROOT)/src/VBox/Frontends/VBoxShell/vboxshell.py=>vboxshell.py,)
+ $(if $(VBOX_WITH_PYTHON),$(PATH_ROOT)/src/VBox/Frontends/VBoxShell/vboxshell.py,) \
+ $(VBOX_PATH_SOL_INST_SRC)/vboxdrv.sh \
+ $(VBOX_PATH_SOL_INST_SRC)/VBox.sh \
+ $(VBOX_PATH_SOL_INST_SRC)/ipsinstall.sh \
+ $(if $(VBOX_WITH_WEBSERVICES),$(VBOX_PATH_SOL_INST_SRC)/smf-vboxwebsrv.sh,)
+
+solaris-drv-confs_INST = bin/
+solaris-drv-confs_MODE = a+r,u+w
+solaris-drv-confs_SOURCES = \
+ $(PATH_ROOT)/src/VBox/HostDrivers/Support/solaris/vboxdrv.conf \
+ $(if $(VBOX_WITH_NETFLT),$(PATH_ROOT)/src/VBox/HostDrivers/VBoxNetFlt/solaris/vboxflt.conf) \
+ $(if $(VBOX_WITH_NETADP),$(PATH_ROOT)/src/VBox/HostDrivers/VBoxNetAdp/solaris/vboxnet.conf) \
+ $(if $(VBOX_WITH_USB),$(PATH_ROOT)/src/VBox/HostDrivers/VBoxUSB/solaris/vboxusbmon.conf)
#
# Note: Other than the files produced during packing (.pkg, .gzip etc.) all files that
@@ -182,6 +194,12 @@ SOLARIS_DRIVER_BINS = \
$(if $(VBOX_WITH_NETADP),vboxnet,) \
$(if $(VBOX_WITH_USB),vboxusbmon,)
+SOLARIS_DRIVER_CONFS = \
+ vboxdrv.conf \
+ $(if $(VBOX_WITH_NETFLT),vboxflt.conf,) \
+ $(if $(VBOX_WITH_NETADP),vboxnet.conf,) \
+ $(if $(VBOX_WITH_USB),vboxusbmon.conf,)
+
# Strip these binaries
SOLARIS_STRIP_BINS = \
VBoxDD.so \
@@ -240,7 +258,6 @@ SOLARIS_NO_STRIP = \
components/VBoxXPCOMBase.xpt \
components/VirtualBox_XPCOM.xpt \
$(if $(and $(VBOX_LICENSE_FILES),$(VBOX_WITH_QTGUI)),$(VBOX_LICENSE_FILES)) \
- $(if $(VBOX_WITH_PYTHON),vboxshell.py,)
SOLARIS_USRBIN_LINKS = \
$(if $(VBOX_WITH_QTGUI),VirtualBox,) \
@@ -248,26 +265,24 @@ SOLARIS_USRBIN_LINKS = \
$(if $(VBOX_WITH_VBOXSDL),VBoxSDL,) \
VBoxManage
+SOLARIS_COMMON_EXES = \
+ vboxdrv.sh \
+ VBox.sh \
+ ipsinstall.sh \
+ $(if $(VBOX_WITH_PYTHON),vboxshell.py,) \
+ $(if $(VBOX_WITH_WEBSERVICES),smf-vboxwebsrv.sh,) \
+
# Things packed explicitly, not from $(PATH_BIN), track these to clean-up properly
SOLARIS_EXTRAS = \
$(if $(VBOX_OSE),,LICENSE) \
VBox.png \
autoresponse \
- vboxdrv.conf \
- $(if $(VBOX_WITH_NETFLT),vboxflt.conf,) \
- $(if $(VBOX_WITH_NETADP),vboxnet.conf,) \
- $(if $(VBOX_WITH_NETADP),hostname.vboxnet0,) \
- $(if $(VBOX_WITH_USB),vboxusbmon.conf,) \
- vboxdrv.sh \
- VBox.sh \
- ipsinstall.sh \
$(if $(VBOX_WITH_VBOXSDL),libSDL-1.2.so.0,) \
$(if $(not $(VBOX_WITH_NETFLT))vnic_setup.sh,) \
$(if $(not $(VBOX_WITH_NETFLT))vnic_term.sh,) \
$(if $(VBOX_WITH_QTGUI),virtualbox.desktop,) \
virtualbox-webservice.xml \
virtualbox-zoneaccess.xml \
- smf-vboxwebsrv.sh \
VBoxQtconfig \
VBoxISAExec \
vbox.copyright \
@@ -342,12 +357,14 @@ endif
SOLARIS_ARCH_FILES := \
$(SOLARIS_STRIP_EXES) \
$(SOLARIS_DRIVER_BINS) \
+ $(SOLARIS_DRIVER_CONFS) \
$(SOLARIS_USRBIN_LINKS) \
$(SOLARIS_STRIP_BINS) \
$(SOLARIS_STRIP_OBJS) \
$(SOLARIS_NO_STRIP) \
$(SOLARIS_EXTRAS) \
$(SOLARIS_QTLIBS) \
+ $(SOLARIS_COMMON_EXES) \
$(SOLARIS_COMMON)
SOLARIS_DBG_FILES := \
@@ -380,14 +397,15 @@ ifdef VBOX_WITH_COMBINED_PACKAGE
$(addprefix $(SOLARIS_VBOXINST_DIR_32)/,$(SOLARIS_NO_STRIP)) \
$(addprefix $(SOLARIS_VBOXINST_DIR_32)/,$(SOLARIS_QTLIBS)) \
$(addprefix $(SOLARIS_VBOXINST_DIR_32)/,$(SOLARIS_STRIP_BIN_32)) \
- $(addprefix $(SOLARIS_OUT_BIN_32)/,VBoxPython.so) \
- $(addprefix $(SOLARIS_OUT_BIN_64)/,VBoxPython.so)
+ $(wildcard $(addprefix $(SOLARIS_OUT_BIN_32)/,VBoxPython*.so)) \
+ $(wildcard $(addprefix $(SOLARIS_OUT_BIN_64)/,VBoxPython*.so))
SOLARIS_DBG_DEPFILES = $(addprefix $(SOLARIS_DBG_DIR_64)/,$(SOLARIS_DBG_FILES)) \
$(addprefix $(SOLARIS_DBG_DIR_32)/,$(SOLARIS_DBG_FILES))
else
SOLARIS_ARCH_DEPFILES = $(addprefix $(SOLARIS_VBOXINST_DIR_ISA)/,$(SOLARIS_STRIP_EXES)) \
$(addprefix $(SOLARIS_VBOXINST_DIR_ISA)/,$(SOLARIS_STRIP_BINS)) \
$(addprefix $(SOLARIS_DRIVERINST_DIR_ISA)/,$(SOLARIS_DRIVER_BINS)) \
+ $(addprefix $(SOLARIS_DRIVERINST_DIR)/,$(SOLARIS_DRIVER_CONFS)) \
$(ifeq ($(KBUILD_TARGET_ARCH),x86),$(addprefix $(SOLARIS_VBOXINST_DIR_ISA)/,$(SOLARIS_STRIP_BIN_32)),) \
$(ifeq ($(KBUILD_TARGET_ARCH),amd64),$(addprefix $(SOLARIS_VBOXINST_DIR_ISA)/,$(SOLARIS_STRIP_OBJ_64)),) \
$(addprefix $(SOLARIS_VBOXINST_DIR_ISA)/,$(SOLARIS_STRIP_OBJS)) \
@@ -395,8 +413,10 @@ else
$(addprefix $(SOLARIS_VBOXINST_DIR_ISA)/,$(SOLARIS_QTLIBS))
SOLARIS_DBG_DEPFILES = $(addprefix $(SOLARIS_DBG_DIR_ISA)/,$(SOLARIS_DBG_FILES))
endif
-SOLARIS_ARCH_DEPFILES += $(addprefix $(SOLARIS_VBOXINST_DIR)/,$(SOLARIS_COMMON))
-SOLARIS_ARCH_DEPFILES += $(addprefix $(SOLARIS_USRBIN_DIR)/,$(SOLARIS_USRBIN_LINKS))
+SOLARIS_ARCH_DEPFILES += $(addprefix $(SOLARIS_VBOXINST_DIR)/,$(SOLARIS_COMMON)) \
+ $(addprefix $(SOLARIS_DRIVERINST_DIR)/,$(SOLARIS_DRIVER_CONFS)) \
+ $(addprefix $(SOLARIS_VBOXINST_DIR)/,$(SOLARIS_COMMON_EXES)) \
+ $(addprefix $(SOLARIS_USRBIN_DIR)/,$(SOLARIS_USRBIN_LINKS))
BLDDIRS += $(foreach d,\
additions \
@@ -456,9 +476,8 @@ $(PATH_BIN)/$(PKG_FILENAME).tar.gz: \
$(VBOX_PATH_SOL_INST_SRC)/preremove.sh \
$(VBOX_PATH_SOL_INST_SRC)/vbox.pkginfo \
$(VBOX_PATH_SOL_INST_SRC)/vbox.space \
+ $(VBOX_PATH_SOL_INST_SRC)/vbox.depend \
$(VBOX_PATH_SOL_INST_SRC)/vbox.pkgresponse \
- $(VBOX_PATH_SOL_INST_SRC)/VBox.sh \
- $(VBOX_PATH_SOL_INST_SRC)/ipsinstall.sh \
$(VBOX_PATH_SOL_INST_SRC)/virtualbox.desktop \
$(PATH_ROOT)/doc/ReadMe-Solaris.txt \
$(VBOX_PATH_SOL_INST_SRC)/Makefile.kmk \
@@ -466,11 +485,7 @@ $(PATH_BIN)/$(PKG_FILENAME).tar.gz: \
$(if $(VBOX_OSE),,$(VBOX_BRAND_LICENSE_TXT)) \
$(if $(VBOX_OSE),,$(PATH_BIN)/LICENSE) \
$(if $(and $(VBOX_LICENSE_BINS),$(VBOX_WITH_QTGUI)),$(VBOX_LICENSE_BINS),) \
- $(PATH_ROOT)/src/VBox/HostDrivers/Support/solaris/vboxdrv.conf \
- $(if $(VBOX_WITH_NETFLT),$(PATH_ROOT)/src/VBox/HostDrivers/VBoxNetFlt/solaris/vboxflt.conf,) \
- $(if $(VBOX_WITH_NETADP),$(PATH_ROOT)/src/VBox/HostDrivers/VBoxNetAdp/solaris/vboxnet.conf,) \
$(if $(VBOX_WITH_NETADP),$(PATH_ROOT)/src/VBox/HostDrivers/VBoxNetAdp/solaris/hostname.vboxnet0,) \
- $(if $(VBOX_WITH_USB),$(PATH_ROOT)/src/VBox/HostDrivers/VBoxUSB/solaris/vboxusbmon.conf,) \
$(if $(not $(VBOX_WITH_NETFLT))$(PATH_ROOT)/src/VBox/Devices/Network/solaris/vnicinit_solaris.sh,) \
$(if $(not $(VBOX_WITH_NETFLT))$(PATH_ROOT)/src/VBox/Devices/Network/solaris/vnicterm_solaris.sh,) \
$(addprefix $(PATH_BIN)/,$(filter-out $(SOLARIS_EXTRAS) $(SOLARIS_QTLIBS),$(SOLARIS_ARCH_FILES))) \
@@ -495,11 +510,7 @@ endif
$(QUIET)$(MKDIR) -p $(SOLARIS_VBOXSMF_DIR)
$(QUIET)$(if $(VBOX_WITH_QTGUI),$(MKDIR) -p $(SOLARIS_USRSHR_APPS_DIR),)
$(QUIET)$(MKDIR) -p $(SOLARIS_USRSHR_PIXMAPS_DIR)
- $(QUIET)$(INSTALL) -m 0644 $(PATH_ROOT)/src/VBox/HostDrivers/Support/solaris/vboxdrv.conf $(SOLARIS_DRIVERINST_DIR)/vboxdrv.conf
- $(QUIET)$(if $(VBOX_WITH_NETFLT),$(INSTALL) -m 0644 $(PATH_ROOT)/src/VBox/HostDrivers/VBoxNetFlt/solaris/vboxflt.conf $(SOLARIS_DRIVERINST_DIR)/vboxflt.conf,)
- $(QUIET)$(if $(VBOX_WITH_NETADP),$(INSTALL) -m 0644 $(PATH_ROOT)/src/VBox/HostDrivers/VBoxNetAdp/solaris/vboxnet.conf $(SOLARIS_DRIVERINST_DIR)/vboxnet.conf,)
$(QUIET)$(if $(VBOX_WITH_NETADP),$(INSTALL) -m 0644 $(PATH_ROOT)/src/VBox/HostDrivers/VBoxNetAdp/solaris/hostname.vboxnet0 $(SOLARIS_ETC_DIR)/hostname.vboxnet0,)
- $(QUIET)$(if $(VBOX_WITH_USB),$(INSTALL) -m 0644 $(PATH_ROOT)/src/VBox/HostDrivers/VBoxUSB/solaris/vboxusbmon.conf $(SOLARIS_DRIVERINST_DIR)/vboxusbmon.conf,)
$(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
@@ -507,8 +518,8 @@ ifdef VBOX_WITH_COMBINED_PACKAGE
$(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,)
@# @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) $(SOLARIS_OUT_BIN_32)/VBoxPython.so $(SOLARIS_VBOXINST_DIR)/VBoxPython.so,)
- $(QUIET)$(if $(VBOX_WITH_PYTHON),$(INSTALL) -m 0644 $(if $(VBOX_DO_STRIP),-s) $(SOLARIS_OUT_BIN_64)/VBoxPython.so $(SOLARIS_VBOXINST_DIR)/$(VBOX_SOL_PYTHON_DIR_64)/VBoxPython.so,)
+ $(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)$(INSTALL) -m 0755 $(SOLARIS_OUT_BIN_32)/VBoxISAExec $(SOLARIS_VBOXINST_DIR)/VBoxISAExec
@@ -523,7 +534,7 @@ else
@# @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) $(SOLARIS_OUT_BIN)/VBoxPython.so $(SOLARIS_VBOXINST_DIR)/$(if $(SOL64_PKG),$(VBOX_SOL_PYTHON_DIR_64)/,)VBoxPython.so
+ $(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)$(INSTALL) -m 0755 $(SOLARIS_OUT_BIN)/VBoxISAExec $(SOLARIS_VBOXINST_DIR)/VBoxISAExec
@@ -531,20 +542,17 @@ else
$(QUIET)$(if $(VBOX_WITH_QTGUI),$(LN_SYMLINK) -f ../additions $(SOLARIS_VBOXINST_DIR_ISA)/additions,)
$(QUIET)$(if $(VBOX_WITH_QTGUI),$(LN_SYMLINK) -f ../VirtualBox.chm $(SOLARIS_VBOXINST_DIR_ISA)/VirtualBox.chm,)
endif
- $(QUIET)$(if $(VBOX_WITH_QTGUI),$(LN_SYMLINK) -f ../..$(SOLARIS_VBOXINST_SUBDIR)/VBox.sh $(SOLARIS_USRBIN_DIR)/VBoxQtconfig,)
+ $(QUIET)$(if $(VBOX_WITH_QTGUI),$(LN_SYMLINK) -f ../../$(SOLARIS_VBOXINST_SUBDIR)/VBox.sh $(SOLARIS_USRBIN_DIR)/VBoxQtconfig,)
$(QUIET)$(INSTALL) -m 0644 $(VBOX_PATH_SOL_INST_SRC)/virtualbox-zoneaccess.xml $(SOLARIS_VBOXSMF_DIR)/virtualbox-zoneaccess.xml
$(QUIET)$(if $(VBOX_WITH_WEBSERVICES),$(INSTALL) -m 0644 $(VBOX_PATH_SOL_INST_SRC)/virtualbox-webservice.xml $(SOLARIS_VBOXSMF_DIR)/virtualbox-webservice.xml,)
- $(QUIET)$(if $(VBOX_WITH_WEBSERVICES),$(INSTALL) -m 0755 $(VBOX_PATH_SOL_INST_SRC)/smf-vboxwebsrv.sh $(SOLARIS_VBOXINST_DIR)/smf-vboxwebsrv.sh,)
$(QUIET)$(if $(not $(VBOX_WITH_NETFLT))$(INSTALL) -m 0755 $(PATH_ROOT)/src/VBox/Devices/Network/solaris/vnicinit_solaris.sh $(SOLARIS_VBOXINST_DIR)/vnic_setup.sh,)
$(QUIET)$(if $(not $(VBOX_WITH_NETFLT))$(INSTALL) -m 0755 $(PATH_ROOT)/src/VBox/Devices/Network/solaris/vnicterm_solaris.sh $(SOLARIS_VBOXINST_DIR)/vnic_term.sh,)
$(QUIET)$(SED) \
- -e "s/_HARDENED_/$(if $(VBOX_WITH_HARDENED),hardened,))/" \
+ -e "s/_HARDENED_/$(if $(VBOX_WITH_HARDENED),hardened,)/" \
--output $(SOLARIS_VBOXINST_DIR)/vboxdrv.sh.tmp \
- $(VBOX_PATH_SOL_INST_SRC)/vboxdrv.sh
- $(QUIET)$(INSTALL) -m 0755 $(SOLARIS_VBOXINST_DIR)/vboxdrv.sh.tmp $(SOLARIS_VBOXINST_DIR)/vboxdrv.sh
+ $(PATH_BIN)/vboxdrv.sh
+ $(QUIET)$(INSTALL) -m 0755 $(SOLARIS_VBOXINST_DIR)/vboxdrv.sh.tmp $(SOLARIS_VBOXINST_DIR)/vboxdrv.sh
$(QUIET)$(RM) -f $(SOLARIS_VBOXINST_DIR)/vboxdrv.sh.tmp
- $(QUIET)$(INSTALL) -m 0755 $(VBOX_PATH_SOL_INST_SRC)/VBox.sh $(SOLARIS_VBOXINST_DIR)/VBox.sh
- $(QUIET)$(INSTALL) -m 0755 $(VBOX_PATH_SOL_INST_SRC)/ipsinstall.sh $(SOLARIS_VBOXINST_DIR)/ipsinstall.sh
$(QUIET)$(if $(VBOX_WITH_QTGUI),$(INSTALL) -m 0644 $(VBOX_PATH_SOL_INST_SRC)/virtualbox.desktop $(SOLARIS_USRSHR_APPS_DIR)/virtualbox.desktop,)
$(QUIET)$(INSTALL) -m 0644 $(SOLARIS_OUT_BIN)/VBox.png $(SOLARIS_USRSHR_PIXMAPS_DIR)/VBox.png
$(QUIET)$(INSTALL) -m 0755 $(VBOX_PATH_SOL_INST_SRC)/postinstall.sh $(SOLARIS_BASEINST_DIR)/postinstall.sh
@@ -554,6 +562,8 @@ endif
$(QUIET)$(INSTALL) -m 0644 $(VBOX_PATH_SOL_INST_SRC)/vbox.pkgresponse $(SOLARIS_VBOXINST_DIR)/autoresponse
$(QUIET)$(INSTALL) -m 0644 $(VBOX_PATH_SOL_INST_SRC)/vbox.pkgresponse $(SOLARIS_BASEINST_DIR)/autoresponse
$(QUIET)$(INSTALL) -m 0644 $(VBOX_PATH_SOL_INST_SRC)/vbox.space $(SOLARIS_BASEINST_DIR)/vbox.space
+ @# Warning!! If we add NON-PYTHON dependencies to vbox.depend, remove the VBOX_WITH_PYTHON setting
+ $(QUIET)$(if $(VBOX_WITH_PYTHON),$(INSTALL) -m 0644 $(VBOX_PATH_SOL_INST_SRC)/vbox.depend $(SOLARIS_BASEINST_DIR)/vbox.depend,)
$(QUIET)$(SED) \
-e "s/@VBOX_VERSION_STRING@/$(VBOX_VERSION_STRING)/g" \
-e "s/@BUILD_TARGET_ARCH@/$(KBUILD_TARGET_ARCH)/g" \
@@ -645,6 +655,18 @@ $(addprefix $(SOLARIS_VBOXINST_DIR)/,$(SOLARIS_COMMON)): \
$(SOLARIS_VBOXINST_DIR)/% : $(PATH_BIN)/% | $$(dir $$@)
$(INSTALL) -m 0644 $< $@
+# Driver configuration files
+$(addprefix $(SOLARIS_DRIVERINST_DIR)/,$(SOLARIS_DRIVER_CONFS)): \
+ $(SOLARIS_DRIVERINST_DIR)/% : $(PATH_BIN)/% | $$(dir $$@)
+ $(INSTALL) -m 0644 $< $@
+
+# Common executables
+$(addprefix $(SOLARIS_VBOXINST_DIR)/,$(SOLARIS_COMMON_EXES)): \
+ $(SOLARIS_VBOXINST_DIR)/% : $(PATH_BIN)/% | $$(dir $$@)
+ $(INSTALL) -m 0755 $< $@
+
+
+
#
# Common (relative symlinks to /opt/VirtualBox/ from /usr/bin/)
# Some symlinks are created manually in the prepackage steps above (eg. VBoxQtconfig)
@@ -652,7 +674,7 @@ $(addprefix $(SOLARIS_VBOXINST_DIR)/,$(SOLARIS_COMMON)): \
#
$(addprefix $(SOLARIS_USRBIN_DIR)/,$(SOLARIS_USRBIN_LINKS)): \
$(SOLARIS_USRBIN_DIR)/% : % | $$(dir $$@)
- $(LN_SYMLINK) -f ../..$(SOLARIS_VBOXINST_SUBDIR)/VBox.sh $@
+ $(LN_SYMLINK) -f ../../$(SOLARIS_VBOXINST_SUBDIR)/VBox.sh $@
#
diff --git a/src/VBox/Installer/solaris/ipsinstall.sh b/src/VBox/Installer/solaris/ipsinstall.sh
index 982bad6a6..4e5f4639d 100755
--- a/src/VBox/Installer/solaris/ipsinstall.sh
+++ b/src/VBox/Installer/solaris/ipsinstall.sh
@@ -50,6 +50,19 @@ check_zone()
fi
}
+install_python_bindings()
+{
+ PYTHONBIN=$1
+ if test -x "$PYTHONBIN"; then
+ VBOX_INSTALL_PATH=/opt/VirtualBox
+ export VBOX_INSTALL_PATH
+ cd /opt/VirtualBox/sdk/installer
+ $PYTHONBIN ./vboxapisetup.py install > /dev/null
+ return 0
+ fi
+ return 1
+}
+
check_root
check_zone
@@ -167,14 +180,32 @@ rc3=0
if test -f "/opt/VirtualBox/sdk/installer/vboxapisetup.py" || test -h "/opt/VirtualBox/sdk/installer/vboxapisetup.py"; then
PYTHONBIN=`which python`
if test -f "$PYTHONBIN" || test -h "$PYTHONBIN"; then
- echo "Installing python bindings..."
+ echo "Installing Python bindings..."
- VBOX_INSTALL_PATH=/opt/VirtualBox
- export VBOX_INSTALL_PATH
- cd /opt/VirtualBox/sdk/installer
- $PYTHONBIN ./vboxapisetup.py install > /dev/null
- rc3=$?
- echo "Done."
+ INSTALLEDIT=1
+ PYTHONBIN=`which python2.4`
+ install_python_bindings "$PYTHONBIN"
+ if test "$?" -eq 0; then
+ INSTALLEDIT=0
+ fi
+ PYTHONBIN=`which python2.5`
+ install_python_bindings "$PYTHONBIN"
+ if test "$?" -eq 0; then
+ INSTALLEDIT=0
+ fi
+ PYTHONBIN=`which python2.6`
+ install_python_bindings "$PYTHONBIN"
+ if test "$?" -eq 0; then
+ INSTALLEDIT=0
+ fi
+
+ # remove files installed by Python build
+ rm -rf /opt/VirtualBox/sdk/installer/build
+
+ if test "$INSTALLEDIT" -ne 0; then
+ echo "** No suitable Python version found. Requires Python 2.4, 2.5 or 2.6."
+ fi
+ rc3=$INSTALLEDIT
else
echo "** WARNING! Python not found, skipped installed Python bindings."
echo " Manually run '/opt/VirtualBox/sdk/installer/vboxapisetup.py install'"
diff --git a/src/VBox/Installer/solaris/makepackage.sh b/src/VBox/Installer/solaris/makepackage.sh
index 37e5111f1..09d71496d 100755
--- a/src/VBox/Installer/solaris/makepackage.sh
+++ b/src/VBox/Installer/solaris/makepackage.sh
@@ -105,6 +105,9 @@ echo 'i space=./vbox.space' >> prototype
if test -f "./vbox.copyright"; then
echo 'i copyright=./vbox.copyright' >> prototype
fi
+if test -f "./vbox.depend"; then
+ echo 'i depend=./vbox.depend' >> prototype
+fi
# Create relative hardlinks
cd "$VBOX_INSTALLED_DIR"
@@ -130,7 +133,7 @@ fi
# Exclude directories to not cause install-time conflicts with existing system directories
cd "$PKG_BASE_DIR"
-find . ! -type d | $VBOX_GGREP -v -E 'prototype|makepackage.sh|vbox.pkginfo|postinstall.sh|preremove.sh|ReadMe.txt|vbox.space|vbox.copyright|VirtualBoxKern' | pkgproto >> prototype
+find . ! -type d | $VBOX_GGREP -v -E 'prototype|makepackage.sh|vbox.pkginfo|postinstall.sh|checkinstall.sh|preremove.sh|ReadMe.txt|vbox.space|vbox.depend|vbox.copyright|VirtualBoxKern' | pkgproto >> prototype
# Include only opt/VirtualBox and subdirectories as we want uninstall to clean up directory structure as well
find . -type d | $VBOX_GGREP -E 'opt/VirtualBox' | pkgproto >> prototype
diff --git a/src/VBox/Installer/solaris/postinstall.sh b/src/VBox/Installer/solaris/postinstall.sh
index 21c8ad45d..794ec6b20 100755
--- a/src/VBox/Installer/solaris/postinstall.sh
+++ b/src/VBox/Installer/solaris/postinstall.sh
@@ -20,6 +20,19 @@
# additional information or have any questions.
#
+install_python_bindings()
+{
+ PYTHONBIN=$1
+ if test -x "$PYTHONBIN"; then
+ VBOX_INSTALL_PATH=/opt/VirtualBox
+ export VBOX_INSTALL_PATH
+ cd /opt/VirtualBox/sdk/installer
+ $PYTHONBIN ./vboxapisetup.py install > /dev/null
+ return 0
+ fi
+ return 1
+}
+
# Check for xVM/Xen
currentisa=`uname -i`
if test "$currentisa" = "i86xpv"; then
@@ -121,13 +134,29 @@ if test "$currentzone" = "global"; then
if test -f "$PYTHONBIN" || test -h "$PYTHONBIN"; then
echo "Installing Python bindings..."
- VBOX_INSTALL_PATH=/opt/VirtualBox
- export VBOX_INSTALL_PATH
- cd /opt/VirtualBox/sdk/installer
- $PYTHONBIN ./vboxapisetup.py install > /dev/null
+ INSTALLEDIT=1
+ PYTHONBIN=`which python2.4`
+ install_python_bindings "$PYTHONBIN"
+ if test "$?" -eq 0; then
+ INSTALLEDIT=0
+ fi
+ PYTHONBIN=`which python2.5`
+ install_python_bindings "$PYTHONBIN"
+ if test "$?" -eq 0; then
+ INSTALLEDIT=0
+ fi
+ PYTHONBIN=`which python2.6`
+ install_python_bindings "$PYTHONBIN"
+ if test "$?" -eq 0; then
+ INSTALLEDIT=0
+ fi
# remove files installed by Python build
- rm -rf $VBOX_INSTALL_PATH/sdk/installer/build
+ rm -rf /opt/VirtualBox/sdk/installer/build
+
+ if test "$INSTALLEDIT" -ne 0; then
+ echo "** No suitable Python version found. Requires Python 2.4, 2.5 or 2.6."
+ fi
else
echo "** WARNING! Python not found, skipped installed Python bindings."
echo " Manually run '/opt/VirtualBox/sdk/installer/vboxapisetup.py install'"
@@ -137,9 +166,11 @@ if test "$currentzone" = "global"; then
# Update boot archive
BOOTADMBIN=/sbin/bootadm
- if test -f "$BOOTADMBIN" || test -h "$BOOTADMBIN"; then
+ if test -x "$BOOTADMBIN"; then
echo "Updating boot archive..."
$BOOTADMBIN update-archive > /dev/null
+ else
+ echo "## $BOOTADMBIN not found/executable. Skipped explicit boot-archive update."
fi
fi
diff --git a/src/VBox/Installer/solaris/vbox.depend b/src/VBox/Installer/solaris/vbox.depend
new file mode 100644
index 000000000..38d3f457d
--- /dev/null
+++ b/src/VBox/Installer/solaris/vbox.depend
@@ -0,0 +1,2 @@
+P SUNWPython The Python interpreter, libraries and utilities
+P SUNWPython-devel The Python interpreter, libraries and utilities - development files
diff --git a/src/VBox/Installer/solaris/vboxdrv.sh b/src/VBox/Installer/solaris/vboxdrv.sh
index 12d3668fc..809273c65 100755
--- a/src/VBox/Installer/solaris/vboxdrv.sh
+++ b/src/VBox/Installer/solaris/vboxdrv.sh
@@ -279,7 +279,12 @@ start_vboxnet()
else
# Plumb the interface!
/sbin/ifconfig vboxnet0 plumb up
- info "VirtualBox NetAdapter kernel module loaded."
+ if test "$?" -eq 0; then
+ /sbin/ifconfig vboxnet0 192.168.56.1 netmask 255.255.255.0 up
+ info "VirtualBox NetAdapter kernel module loaded."
+ else
+ warn "VirtualBox NetAdapter kernel module loaded BUT failed to plumb interface."
+ fi
fi
fi
}
diff --git a/src/VBox/Main/VFSExplorerImpl.cpp b/src/VBox/Main/VFSExplorerImpl.cpp
index f69ef49ff..ca8e3eeaa 100644
--- a/src/VBox/Main/VFSExplorerImpl.cpp
+++ b/src/VBox/Main/VFSExplorerImpl.cpp
@@ -345,7 +345,7 @@ HRESULT VFSExplorer::deleteFS(TaskVFSExplorer *aTask)
HRESULT rc = S_OK;
- float fPercentStep = 100.0 / aTask->filenames.size();
+ float fPercentStep = 100.0f / aTask->filenames.size();
try
{
char szPath[RTPATH_MAX];
@@ -469,7 +469,7 @@ HRESULT VFSExplorer::deleteS3(TaskVFSExplorer *aTask)
HRESULT rc = S_OK;
RTS3 hS3 = NULL;
- float fPercentStep = 100.0 / aTask->filenames.size();
+ float fPercentStep = 100.0f / aTask->filenames.size();
try
{
int vrc = RTS3Create(&hS3, m->strUsername.c_str(), m->strPassword.c_str(), m->strHostname.c_str(), "virtualbox-agent/"VBOX_VERSION_STRING);
@@ -605,7 +605,6 @@ STDMETHODIMP VFSExplorer::EntryList(ComSafeArrayOut(BSTR, aNames), ComSafeArrayO
STDMETHODIMP VFSExplorer::Exists(ComSafeArrayIn(IN_BSTR, aNames), ComSafeArrayOut(BSTR, aExists))
{
CheckComArgSafeArrayNotNull(aNames);
- CheckComArgSafeArrayNotNull(aExists);
AutoCaller autoCaller(this);
CheckComRCReturnRC(autoCaller.rc());
diff --git a/src/VBox/Main/generic/NetIf-generic.cpp b/src/VBox/Main/generic/NetIf-generic.cpp
index a0c31be16..b5d77256a 100644
--- a/src/VBox/Main/generic/NetIf-generic.cpp
+++ b/src/VBox/Main/generic/NetIf-generic.cpp
@@ -190,7 +190,8 @@ int NetIfCreateHostOnlyNetworkInterface (VirtualBox *pVBox, IHostNetworkInterfac
ComObjPtr <HostNetworkInterface> iface;
iface.createObject();
iface->init(IfName, HostNetworkInterfaceType_HostOnly, pInfo);
- iface.queryInterfaceTo (aHostNetworkInterface);
+ iface->setVirtualBox(pVBox);
+ iface.queryInterfaceTo(aHostNetworkInterface);
}
RTMemFree(pInfo);
}
diff --git a/src/VBox/Main/glue/vboxapi.py b/src/VBox/Main/glue/vboxapi.py
index 2592b6c8a..3a3fb7950 100644
--- a/src/VBox/Main/glue/vboxapi.py
+++ b/src/VBox/Main/glue/vboxapi.py
@@ -24,7 +24,7 @@ if VboxBinDir is None:
VboxBinDir = "%VBOX_INSTALL_PATH%"
if VboxSdkDir is None:
- VboxSdkDir = VboxBinDir+"/sdk"
+ VboxSdkDir = os.path.join(VboxBinDir,"sdk")
os.environ["VBOX_PROGRAM_PATH"] = VboxBinDir
os.environ["VBOX_SDK_PATH"] = VboxSdkDir
@@ -80,8 +80,13 @@ class PerfCollector:
'values': collected data
'values_as_string': pre-processed values ready for 'print' statement
"""
- (values, names_out, objects_out, units, scales, sequence_numbers,
- indices, lengths) = self.collector.queryMetricsData(names, objects)
+ # Get around the problem with input arrays returned in output parameters (see #3953).
+ if sys.platform == 'win32':
+ (values, names, objects, names_out, objects_out, units, scales, sequence_numbers,
+ indices, lengths) = self.collector.queryMetricsData(names, objects)
+ else:
+ (values, names_out, objects_out, units, scales, sequence_numbers,
+ indices, lengths) = self.collector.queryMetricsData(names, objects)
out = []
for i in xrange(0, len(names_out)):
scale = int(scales[i])
@@ -99,6 +104,33 @@ class PerfCollector:
})
return out
+def ComifyName(name):
+ return name[0].capitalize()+name[1:]
+
+_COMForward = { 'getattr' : None,
+ 'setattr' : None}
+
+def CustomGetAttr(self, attr):
+ # fastpath
+ if self.__class__.__dict__.get(attr) != None:
+ return self.__class__.__dict__.get(attr)
+
+ # try case-insensitivity workaround for class attributes (COM methods)
+ for k in self.__class__.__dict__.keys():
+ if k.lower() == attr.lower():
+ self.__class__.__dict__[attr] = self.__class__.__dict__[k]
+ return getattr(self, k)
+ try:
+ return _COMForward['getattr'](self,ComifyName(attr))
+ except AttributeError:
+ return _COMForward['getattr'](self,attr)
+
+def CustomSetAttr(self, attr, value):
+ try:
+ return _COMForward['setattr'](self, ComifyName(attr), value)
+ except AttributeError:
+ return _COMForward['setattr'](self, attr, value)
+
class PlatformMSCOM:
# Class to fake access to constants in style of foo.bar.boo
class ConstantFake:
@@ -162,10 +194,10 @@ class PlatformMSCOM:
VBOX_TLB_LCID = 0
VBOX_TLB_MAJOR = 1
VBOX_TLB_MINOR = 0
-
+
def __init__(self, params):
from win32com import universal
- from win32com.client import gencache, DispatchWithEvents, Dispatch
+ from win32com.client import gencache, DispatchBaseClass
from win32com.client import constants, getevents
import win32com
import pythoncom
@@ -178,7 +210,12 @@ class PlatformMSCOM:
handle = DuplicateHandle(pid, GetCurrentThread(), pid, 0, 0, DUPLICATE_SAME_ACCESS)
self.handles = []
self.handles.append(handle)
-
+ _COMForward['getattr'] = DispatchBaseClass.__dict__['__getattr__']
+ DispatchBaseClass.__dict__['__getattr__'] = CustomGetAttr
+ _COMForward['setattr'] = DispatchBaseClass.__dict__['__setattr__']
+ DispatchBaseClass.__dict__['__setattr__'] = CustomSetAttr
+ win32com.client.gencache.EnsureDispatch('VirtualBox.Session')
+ win32com.client.gencache.EnsureDispatch('VirtualBox.VirtualBox')
def getSessionObject(self, vbox):
import win32com
@@ -236,7 +273,7 @@ class PlatformMSCOM:
# looks them up on Windows
for m in dir(impl):
if m.startswith("on"):
- str += " "+m[0].capitalize()+m[1:]+"=BaseClass."+m+"\n"
+ str += " "+ComifyName(m)+"=BaseClass."+m+"\n"
str += " def __init__(self): BaseClass.__init__(self, arg)\n"
#str += "win32com.server.register.UseCommandLine("+iface+"Impl)\n"
@@ -277,8 +314,7 @@ class PlatformMSCOM:
pass
def getPerfCollector(self, vbox):
- # MS COM cannot invoke performance collector methods yet
- return None
+ return PerfCollector(vbox)
class PlatformXPCOM:
@@ -307,7 +343,7 @@ class PlatformXPCOM:
return False
def getArray(self, obj, field):
- return obj.__getattr__('get'+field.capitalize())()
+ return obj.__getattr__('get'+ComifyName(field))()
def initPerThread(self):
pass
@@ -341,10 +377,12 @@ class PlatformXPCOM:
class PlatformWEBSERVICE:
def __init__(self, params):
- sys.path.append(VboxSdkDir+'/bindings/webservice/python/lib')
+ sys.path.append(os.path.join(VboxSdkDir,'bindings', 'webservice', 'python', 'lib'))
+ # not really needed, but just fail early if misconfigured
import VirtualBox_services
import VirtualBox_wrappers
from VirtualBox_wrappers import IWebsessionManager2
+
if params is not None:
self.user = params.get("user", "")
self.password = params.get("password", "")
@@ -353,13 +391,38 @@ class PlatformWEBSERVICE:
self.user = ""
self.password = ""
self.url = None
- self.wsmgr = IWebsessionManager2(self.url)
+ self.vbox = None
- def getSessionObject(self, vbox):
+ def getSessionObject(self, vbox):
return self.wsmgr.getSessionObject(vbox)
def getVirtualBox(self):
+ return self.connect(self.url, self.user, self.password)
+
+ def connect(self, url, user, passwd):
+ if self.vbox is not None:
+ self.disconnect()
+ from VirtualBox_wrappers import IWebsessionManager2
+ if url is None:
+ url = ""
+ self.url = url
+ if user is None:
+ user = ""
+ self.user = user
+ if passwd is None:
+ passwd = ""
+ self.password = passwd
+ self.wsmgr = IWebsessionManager2(self.url)
self.vbox = self.wsmgr.logon(self.user, self.password)
+ if not self.vbox.handle:
+ raise Exception("cannot connect to '"+self.url+"' as '"+self.user+"'")
+ return self.vbox
+
+ def disconnect(self):
+ if self.vbox is not None and self.wsmgr is not None:
+ self.wsmgr.logoff(self.vbox)
+ self.vbox = None
+ self.wsmgr = None
def getConstants(self):
return None
@@ -388,11 +451,9 @@ class PlatformWEBSERVICE:
def deinit(self):
try:
- if self.vbox is not None:
- self.wsmg.logoff(self.vbox)
- self.vbox = None
+ disconnect()
except:
- pass
+ pass
def getPerfCollector(self, vbox):
return PerfCollector(vbox)
@@ -411,18 +472,28 @@ class VirtualBoxManager:
style = "MSCOM"
else:
style = "XPCOM"
+
+ exec "self.platform = Platform"+style+"(platparams)"
+
+ self.constants = VirtualBoxReflectionInfo()
+ self.type = self.platform.getType()
+ self.remote = self.platform.getRemote()
+ self.style = style
+ self.mgr = SessionManager(self)
+
try:
- exec "self.platform = Platform"+style+"(platparams)"
self.vbox = self.platform.getVirtualBox()
- self.mgr = SessionManager(self)
- self.constants = VirtualBoxReflectionInfo()
- self.type = self.platform.getType()
- self.remote = self.platform.getRemote()
- self.style = style
+ except NameError,ne:
+ print "Installation problem: check that appropriate libs in place"
+ traceback.print_exc()
+ raise ne
except Exception,e:
print "init exception: ",e
traceback.print_exc()
- raise e
+ if self.remote:
+ self.vbox = None
+ else:
+ raise e
def getArray(self, obj, field):
return self.platform.getArray(obj, field)
@@ -462,4 +533,4 @@ class VirtualBoxManager:
return self.platform.waitForEvents(timeout)
def getPerfCollector(self, vbox):
- return self.platform.getPerfCollector(vbox)
+ return PerfCollector(vbox)
diff --git a/src/VBox/Main/idl/VirtualBox.xidl b/src/VBox/Main/idl/VirtualBox.xidl
index cf5595325..01b3de166 100644
--- a/src/VBox/Main/idl/VirtualBox.xidl
+++ b/src/VBox/Main/idl/VirtualBox.xidl
@@ -887,7 +887,7 @@
name="IVirtualBoxErrorInfo" extends="$errorinfo"
uuid="bcae7fc3-3fd0-4bac-923c-ec1596c7bc83"
supportsErrorInfo="no"
- wsmap="suppress"
+ wsmap="managed"
>
<desc>
The IVirtualBoxErrorInfo interface represents extended error information.
diff --git a/src/VBox/Main/include/ApplianceImpl.h b/src/VBox/Main/include/ApplianceImpl.h
index 19d3ecb93..b257ecf06 100644
--- a/src/VBox/Main/include/ApplianceImpl.h
+++ b/src/VBox/Main/include/ApplianceImpl.h
@@ -151,6 +151,7 @@ public:
BEGIN_COM_MAP(VirtualSystemDescription)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY(IVirtualSystemDescription)
+ COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
NS_DECL_ISUPPORTS
diff --git a/src/VBox/Main/include/MachineImpl.h b/src/VBox/Main/include/MachineImpl.h
index fa074bc04..fdbe3c4ff 100644
--- a/src/VBox/Main/include/MachineImpl.h
+++ b/src/VBox/Main/include/MachineImpl.h
@@ -885,6 +885,7 @@ public:
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(SessionMachine)
+ COM_INTERFACE_ENTRY2(IDispatch, IMachine)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY(IMachine)
COM_INTERFACE_ENTRY(IInternalMachineControl)
@@ -1059,6 +1060,7 @@ public:
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(SnapshotMachine)
+ COM_INTERFACE_ENTRY2(IDispatch, IMachine)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY(IMachine)
END_COM_MAP()
diff --git a/src/VBox/Main/linux/HostHardwareLinux.cpp b/src/VBox/Main/linux/HostHardwareLinux.cpp
index 20c777b3f..0530c2c5f 100644
--- a/src/VBox/Main/linux/HostHardwareLinux.cpp
+++ b/src/VBox/Main/linux/HostHardwareLinux.cpp
@@ -125,19 +125,20 @@ int VBoxMainDriveInfo::updateDVDs ()
{
mDVDList.clear ();
#if defined(RT_OS_LINUX)
+ /* Always allow the user to override our auto-detection using an
+ * environment variable. */
+ if (RT_SUCCESS (rc) && (!success || testing()))
+ rc = getDriveInfoFromEnv ("VBOX_CDROM", &mDVDList, true /* isDVD */,
+ &success);
#ifdef VBOX_WITH_DBUS
if (RT_SUCCESS (rc) && RT_SUCCESS(VBoxLoadDBusLib()) && (!success || testing()))
rc = getDriveInfoFromHal(&mDVDList, true /* isDVD */, &success);
#endif /* VBOX_WITH_DBUS defined */
- // On Linux without hal, the situation is much more complex. We will take a
- // heuristical approach and also allow the user to specify a list of host
- // CDROMs using an environment variable.
- // The general strategy is to try some known device names and see of they
- // exist. At last, we'll enumerate the /etc/fstab file (luckily there's an
- // API to parse it) for CDROM devices. Ok, let's start!
- if (RT_SUCCESS (rc) && (!success || testing()))
- rc = getDriveInfoFromEnv ("VBOX_CDROM", &mDVDList, true /* isDVD */,
- &success);
+ /* On Linux without hal, the situation is much more complex. We will
+ * take a heuristical approach. The general strategy is to try some
+ * known device names and see of they exist. Failing that, we
+ * enumerate the /etc/fstab file (luckily there's an API to parse it)
+ * for CDROM devices. Ok, let's start! */
if (RT_SUCCESS (rc) && (!success || testing()))
{
// this is a good guess usually
@@ -177,19 +178,19 @@ int VBoxMainDriveInfo::updateFloppies ()
{
mFloppyList.clear ();
#if defined(RT_OS_LINUX)
+ if (RT_SUCCESS (rc) && (!success || testing()))
+ rc = getDriveInfoFromEnv ("VBOX_FLOPPY", &mFloppyList, false /* isDVD */,
+ &success);
#ifdef VBOX_WITH_DBUS
if ( RT_SUCCESS (rc)
&& RT_SUCCESS(VBoxLoadDBusLib())
&& (!success || testing()))
rc = getDriveInfoFromHal(&mFloppyList, false /* isDVD */, &success);
#endif /* VBOX_WITH_DBUS defined */
- // As with the CDROMs, on Linux we have to take a multi-level approach
- // involving parsing the mount tables. As this is not bulletproof, we'll
- // give the user the chance to override the detection by an environment
- // variable and skip the detection.
- if (RT_SUCCESS (rc) && (!success || testing()))
- rc = getDriveInfoFromEnv ("VBOX_FLOPPY", &mFloppyList, false /* isDVD */,
- &success);
+ /* As with the CDROMs, on Linux we have to take a multi-level approach
+ * involving parsing the mount tables. As this is not bulletproof, we
+ * give the user the chance to override the detection using an
+ * environment variable, skiping the detection. */
if (RT_SUCCESS (rc) && (!success || testing()))
{
@@ -1135,6 +1136,10 @@ int getDriveInfoFromHal(DriveInfoList *pList, bool isDVD, bool *pfSuccess)
}
if (dbusError.HasName (DBUS_ERROR_NO_MEMORY))
rc = VERR_NO_MEMORY;
+ /* If we found nothing something may have gone wrong with hal, so
+ * report failure to fall back to other methods. */
+ if (pList->size() == 0)
+ halSuccess = false;
if (pfSuccess != NULL)
*pfSuccess = halSuccess;
LogFlow (("rc=%Rrc, halSuccess=%d\n", rc, halSuccess));
diff --git a/src/VBox/Main/webservice/glue-jaxws.xsl b/src/VBox/Main/webservice/glue-jaxws.xsl
index 174b84753..d7098c324 100644
--- a/src/VBox/Main/webservice/glue-jaxws.xsl
+++ b/src/VBox/Main/webservice/glue-jaxws.xsl
@@ -210,16 +210,6 @@
<xsl:param name="idltype"/>
<xsl:param name="safearray"/>
<xsl:choose>
- <xsl:when test="$idltype='uuid'">
- <xsl:choose>
- <xsl:when test="$safearray">
- <xsl:value-of select="concat('Helper.uuidWrap(',$value,')')" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat('UUID.fromString(',$value,')')" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
<xsl:when test="//collection[@name=$idltype]">
<xsl:variable name="elemtype">
<xsl:call-template name="typeIdl2Glue">
@@ -304,9 +294,6 @@
</xsl:otherwise>
</xsl:choose>
</xsl:when>
- <xsl:when test="$paramtype='uuid'">
- <xsl:value-of select="concat($paramname, '.toString()')" />
- </xsl:when>
<xsl:otherwise>
<xsl:value-of select="$paramname" />
</xsl:otherwise>
@@ -441,14 +428,6 @@ class Helper {
}
}
- public static List<UUID> uuidWrap(List<String> uuidVals) {
- List<UUID> ret = new ArrayList<UUID>(uuidVals.size());
- for (String uuid : uuidVals) {
- ret.add(UUID.fromString(uuid));
- }
- return ret;
- }
-
public static <T extends IUnknown> List<String> unwrap(List<T> thisPtrs) {
if (thisPtrs==null) return Collections.emptyList();
@@ -814,7 +793,7 @@ public class IWebsessionManager {
<xsl:variable name="extends" select="//interface[@name=$ifname]/@extends" />
<xsl:choose>
- <xsl:when test="($extends = '$unknown') or ($extends = '$dispatched')">
+ <xsl:when test="($extends = '$unknown') or ($extends = '$dispatched') or ($extends = '$errorinfo')">
<xsl:value-of select="concat('public class ', $ifname, ' extends IUnknown {&#10;&#10;')" />
</xsl:when>
<xsl:when test="//interface[@name=$extends]">
diff --git a/src/VBox/Main/webservice/vboxweb.h b/src/VBox/Main/webservice/vboxweb.h
index b971d2d10..2378f8a51 100644
--- a/src/VBox/Main/webservice/vboxweb.h
+++ b/src/VBox/Main/webservice/vboxweb.h
@@ -225,6 +225,12 @@ int findComPtrFromId(struct soap *soap,
RaiseSoapInvalidObjectFault(soap, id);
else
{
+ if (fNullAllowed && pRef == NULL)
+ {
+ pComPtr.setNull();
+ return 0;
+ }
+
// pRef->getComPtr returns a ComPtr<IUnknown>; by casting it to
// ComPtr<T>, we implicitly do a queryInterface() call
if (pComPtr = pRef->getComPtr())
diff --git a/src/VBox/Main/webservice/websrv-python.xsl b/src/VBox/Main/webservice/websrv-python.xsl
index f23009ca7..454b97057 100644
--- a/src/VBox/Main/webservice/websrv-python.xsl
+++ b/src/VBox/Main/webservice/websrv-python.xsl
@@ -52,8 +52,8 @@
<xsl:when test="$type='unsigned short'">UnsignedShort</xsl:when>
<xsl:when test="$type='unsigned long long'">UnsignedLong</xsl:when>
<xsl:when test="$type='result'">UnsignedInt</xsl:when>
- <xsl:when test="$type='uuid'">UUID</xsl:when>
<xsl:when test="$type='$unknown'">IUnknown</xsl:when>
+ <xsl:when test="$type='$dispatched'">IUnknown</xsl:when>
<xsl:otherwise><xsl:value-of select="$type" /></xsl:otherwise>
</xsl:choose>
</xsl:template>
@@ -64,7 +64,7 @@
<xsl:param name="type" />
<xsl:param name="value" />
<xsl:param name="safearray" />
-
+
<xsl:call-template name="emitConvertedType">
<xsl:with-param name="ifname" select="$ifname" />
<xsl:with-param name="methodname" select="$methodname" />
@@ -97,7 +97,7 @@
<xsl:with-param name="type" select="$attrtype" />
<xsl:with-param name="value" select="concat('val.','_returnval')" />
<xsl:with-param name="safearray" select="@safearray"/>
- </xsl:call-template>
+ </xsl:call-template>
</xsl:template>
<xsl:template name="emitSetAttribute">
@@ -113,7 +113,7 @@
req._<xsl:value-of select="$attrname"/> = value
else:
req._<xsl:value-of select="$attrname"/> = value.handle
- self.mgr.getPort().<xsl:value-of select="$ifname"/>_<xsl:value-of select="$fname"/>(req)
+ self.mgr.getPort().<xsl:value-of select="$ifname"/>_<xsl:value-of select="$fname"/>(req)
</xsl:template>
<xsl:template name="collection">
@@ -135,15 +135,38 @@ class <xsl:value-of select="$cname"/>:
def __getitem__(self, index):
return <xsl:value-of select="$ename"/>(self.mgr, self.array._array[index])
-
+
+</xsl:template>
+
+
+<xsl:template name="computeExtends">
+ <xsl:param name="base" />
+
+ <xsl:choose>
+ <xsl:when test="($base = '$unknown') or ($base = '$dispatched')">
+ <xsl:value-of select="'IUnknown'"/>
+ </xsl:when>
+ <xsl:when test="($base = '$errorinfo') ">
+ <xsl:value-of select="'IUnknown'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$base"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:template>
<xsl:template name="interface">
+ <xsl:variable name="base">
+ <xsl:call-template name="computeExtends">
+ <xsl:with-param name="base" select="@extends" />
+ </xsl:call-template>
+ </xsl:variable>
<xsl:variable name="ifname"><xsl:value-of select="@name" /></xsl:variable>
-class <xsl:value-of select="$ifname"/>:
+
+class <xsl:value-of select="$ifname"/>(<xsl:value-of select="$base" />):
def __init__(self, mgr, handle, isarray = False):
self.mgr = mgr
- if handle is None or handle == "":
+ if handle is None:
raise Exception("bad handle: "+str(handle))
self.handle = handle
self.isarray = isarray
@@ -152,11 +175,11 @@ class <xsl:value-of select="$ifname"/>:
mgr.register(handle)
def __del__(self):
- mgr.unregister(self.handle)
+ mgr.unregister(self.handle)
-->
def releaseRemote(self):
try:
- req=IManagedObjectRef_releaseRequestMsg()
+ req=IManagedObjectRef_releaseRequestMsg()
req._this=handle
self.mgr.getPort().IManagedObjectRef_release(req)
except:
@@ -168,7 +191,7 @@ class <xsl:value-of select="$ifname"/>:
raise TypeError, "iteration over non-sequence"
def __size(self):
- if self.isarray:
+ if self.isarray:
return self.handle.__size()
raise TypeError, "iteration over non-sequence"
@@ -180,20 +203,23 @@ class <xsl:value-of select="$ifname"/>:
def __getitem__(self, index):
if self.isarray:
return <xsl:value-of select="$ifname" />(self.mgr, self.handle[index])
- raise TypeError, "iteration over non-sequence"
+ raise TypeError, "iteration over non-sequence"
def __str__(self):
return self.handle
-
+
def isValid(self):
return self.handle != None and self.handle != ''
def __getattr__(self,name):
hndl = <xsl:value-of select="$ifname" />._Attrs_.get(name, None)
- if (hndl != None and hndl[0] != None):
- return hndl[0](self)
+ if hndl != None:
+ if hndl[0] != None:
+ return hndl[0](self)
+ else:
+ raise AttributeError
else:
- raise AttributeError
+ return <xsl:value-of select="$base" />.__getattr__(self, name)
def __setattr__(self, name, val):
hndl = <xsl:value-of select="$ifname" />._Attrs_.get(name, None)
@@ -271,19 +297,50 @@ class <xsl:value-of select="$ifname"/>:
<xsl:template name="interfacestruct">
<xsl:variable name="ifname"><xsl:value-of select="@name" /></xsl:variable>
class <xsl:value-of select="$ifname"/>:
- def __init__(self, mgr, handle):<xsl:for-each select="attribute">
+ def __init__(self, mgr, handle, isarray = False):
self.mgr = mgr
- self.<xsl:value-of select="@name"/> = handle._<xsl:value-of select="@name"/>
+ self.isarray = isarray
+ if isarray:
+ self.handle = handle
+ else:
+<xsl:for-each select="attribute">
+ self.<xsl:value-of select="@name"/> = <xsl:call-template name="emitConvertedType">
+ <xsl:with-param name="ifname" select="$ifname" />
+ <xsl:with-param name="methodname" select="''" />
+ <xsl:with-param name="type" select="@type" />
+ </xsl:call-template>(self.mgr, handle._<xsl:value-of select="@name"/>)
</xsl:for-each>
+ pass
<!-- also do getters/setters -->
<xsl:for-each select="attribute">
def <xsl:call-template name="makeGetterName"><xsl:with-param name="attrname" select="@name"/></xsl:call-template>(self):
return self.<xsl:value-of select="@name"/>
-
+
def <xsl:call-template name="makeSetterName"><xsl:with-param name="attrname" select="@name"/></xsl:call-template>(self):
raise Error, 'setters not supported'
</xsl:for-each>
+
+ def __next(self):
+ if self.isarray:
+ return self.handle.__next()
+ raise TypeError, "iteration over non-sequence"
+
+ def __size(self):
+ if self.isarray:
+ return self.handle.__size()
+ raise TypeError, "iteration over non-sequence"
+
+ def __len__(self):
+ if self.isarray:
+ return self.handle.__len__()
+ raise TypeError, "iteration over non-sequence"
+
+ def __getitem__(self, index):
+ if self.isarray:
+ return <xsl:value-of select="$ifname" />(self.mgr, self.handle[index])
+ raise TypeError, "iteration over non-sequence"
+
</xsl:template>
<xsl:template name="genreq">
@@ -293,7 +350,7 @@ class <xsl:value-of select="$ifname"/>:
req._<xsl:value-of select="@name" />=_arg_<xsl:value-of select="@name" />
</xsl:for-each>
val=self.mgr.getPort().<xsl:value-of select="../@name"/>_<xsl:value-of select="@name"/>(req)
- <!-- return needs to be the first one -->
+ <!-- return needs to be the first one -->
return <xsl:for-each select="param[@dir='return']">
<xsl:call-template name="emitOutParam">
<xsl:with-param name="ifname" select="../@name" />
@@ -301,7 +358,7 @@ class <xsl:value-of select="$ifname"/>:
<xsl:with-param name="type" select="@type" />
<xsl:with-param name="value" select="concat('val.','_returnval')" />
<xsl:with-param name="safearray" select="@safearray"/>
- </xsl:call-template>
+ </xsl:call-template>
<xsl:if test="../param[@dir='out']">
<xsl:text>, </xsl:text>
</xsl:if>
@@ -321,7 +378,7 @@ class <xsl:value-of select="$ifname"/>:
<xsl:text>&#10;&#10;</xsl:text>
</xsl:template>
-<xsl:template name="method" >
+<xsl:template name="method" >
def <xsl:value-of select="@name"/><xsl:text>(self</xsl:text>
<xsl:for-each select="param[@dir='in']">
<xsl:text>, </xsl:text>
@@ -339,7 +396,7 @@ class <xsl:value-of select="$ifname"/>:
<xsl:otherwise>
<xsl:value-of select="@name"/>
</xsl:otherwise>
- </xsl:choose>
+ </xsl:choose>
</xsl:template>
<xsl:template name="enum">
@@ -421,28 +478,28 @@ class ManagedManager:
c = c - 1
if c == 0:
try:
- req=IManagedObjectRef_releaseRequestMsg()
+ req=IManagedObjectRef_releaseRequestMsg()
req._this=handle
self.mgr.getPort().IManagedObjectRef_release(req)
except:
pass
- finally:
- self.map[handle] = -1
+ self.map[handle] = -1
else:
self.map[handle] = c
-
+
class String:
def __init__(self, mgr, handle, isarray = False):
self.handle = handle
+ self.mgr = mgr
self.isarray = isarray
-
+
def __next(self):
if self.isarray:
return self.handle.__next()
raise TypeError, "iteration over non-sequence"
def __size(self):
- if self.isarray:
+ if self.isarray:
return self.handle.__size()
raise TypeError, "iteration over non-sequence"
@@ -453,11 +510,11 @@ class String:
def __getitem__(self, index):
if self.isarray:
- return String(self.handle[index])
- raise TypeError, "iteration over non-sequence"
+ return String(self.mgr, self.handle[index])
+ raise TypeError, "iteration over non-sequence"
def __str__(self):
- return self.handle
+ return str(self.handle)
def __eq__(self,other):
if self.isarray:
@@ -470,67 +527,30 @@ class String:
def __ne__(self,other):
if self.isarray:
- return not isinstance(other,String) or self.handle == other.handle
+ return not isinstance(other,String) or self.handle == other.handle
if isinstance(other,String):
return self.handle != other.handle
if isinstance(other,basestring):
return self.handle != other
return True
+ def __add__(self,other):
+ return str(self.handle)+str(other)
-class UUID:
- def __init__(self, mgr, handle, isarray = False):
- self.handle = handle
- self.isarray = isarray
-
- def __next(self):
- if self.isarray:
- return self.handle.__next()
- raise TypeError, "iteration over non-sequence"
-
- def __size(self):
- if self.isarray:
- return self.handle.__size()
- raise TypeError, "iteration over non-sequence"
-
- def __len__(self):
- if self.isarray:
- return self.handle.__len__()
- raise TypeError, "iteration over non-sequence"
-
- def __getitem__(self, index):
- if self.isarray:
- return UUID(self.handle[index])
- raise TypeError, "iteration over non-sequence"
-
- def __str__(self):
- return self.handle
-
- def __eq__(self,other):
- if self.isarray:
- return isinstance(other,UUID) and self.handle == other.handle
- if isinstance(other,UUID):
- return self.handle == other.handle
- if isinstance(other,basestring):
- return self.handle == other
- return False
-
- def __ne__(self,other):
- if self.isarray:
- return not isinstance(other,UUID) or self.handle == other.handle
- if isinstance(other,UUID):
- return self.handle != other.handle
- if isinstance(other,basestring):
- return self.handle != other
- return True
class Boolean:
def __init__(self, mgr, handle, isarray = False):
self.handle = handle
+ if self.handle == "false":
+ self.handle = None
+ self.mgr = mgr
self.isarray = isarray
-
+
def __str__(self):
- return "true" if self.handle else "false"
+ if self.handle:
+ return "true"
+ else:
+ return "false"
def __eq__(self,other):
if isinstance(other,Bool):
@@ -546,24 +566,66 @@ class Boolean:
return self.handle != other
return True
+ def __int__(self):
+ if self.handle:
+ return 1
+ else:
+ return 0
+
+ def __long__(self):
+ if self.handle:
+ return 1
+ else:
+ return 0
+
+ def __nonzero__(self):
+ if self.handle:
+ return True
+ else:
+ return False
+
+ def __next(self):
+ if self.isarray:
+ return self.handle.__next()
+ raise TypeError, "iteration over non-sequence"
+
+ def __size(self):
+ if self.isarray:
+ return self.handle.__size()
+ raise TypeError, "iteration over non-sequence"
+
+ def __len__(self):
+ if self.isarray:
+ return self.handle.__len__()
+ raise TypeError, "iteration over non-sequence"
+
+ def __getitem__(self, index):
+ if self.isarray:
+ return Boolean(self.mgr, self.handle[index])
+ raise TypeError, "iteration over non-sequence"
+
class UnsignedInt:
def __init__(self, mgr, handle, isarray = False):
self.handle = handle
+ self.mgr = mgr
self.isarray = isarray
-
+
def __str__(self):
return str(self.handle)
def __int__(self):
return int(self.handle)
+ def __long__(self):
+ return long(self.handle)
+
def __next(self):
if self.isarray:
return self.handle.__next()
raise TypeError, "iteration over non-sequence"
def __size(self):
- if self.isarray:
+ if self.isarray:
return self.handle.__size()
raise TypeError, "iteration over non-sequence"
@@ -574,13 +636,14 @@ class UnsignedInt:
def __getitem__(self, index):
if self.isarray:
- return UnsignedInt(self.handle[index])
- raise TypeError, "iteration over non-sequence"
+ return UnsignedInt(self.mgr, self.handle[index])
+ raise TypeError, "iteration over non-sequence"
+
-
class Int:
def __init__(self, mgr, handle, isarray = False):
self.handle = handle
+ self.mgr = mgr
self.isarray = isarray
def __next(self):
@@ -589,7 +652,7 @@ class Int:
raise TypeError, "iteration over non-sequence"
def __size(self):
- if self.isarray:
+ if self.isarray:
return self.handle.__size()
raise TypeError, "iteration over non-sequence"
@@ -600,76 +663,227 @@ class Int:
def __getitem__(self, index):
if self.isarray:
- return Int(self.handle[index])
- raise TypeError, "iteration over non-sequence"
-
+ return Int(self.mgr, self.handle[index])
+ raise TypeError, "iteration over non-sequence"
+
def __str__(self):
return str(self.handle)
-
+
def __int__(self):
return int(self.handle)
+ def __long__(self):
+ return long(self.handle)
+
class UnsignedShort:
def __init__(self, mgr, handle, isarray = False):
self.handle = handle
+ self.mgr = mgr
self.isarray = isarray
-
+
def __str__(self):
return str(self.handle)
def __int__(self):
return int(self.handle)
+ def __long__(self):
+ return long(self.handle)
+
+ def __next(self):
+ if self.isarray:
+ return self.handle.__next()
+ raise TypeError, "iteration over non-sequence"
+
+ def __size(self):
+ if self.isarray:
+ return self.handle.__size()
+ raise TypeError, "iteration over non-sequence"
+
+ def __len__(self):
+ if self.isarray:
+ return self.handle.__len__()
+ raise TypeError, "iteration over non-sequence"
+
+ def __getitem__(self, index):
+ if self.isarray:
+ return UnsignedShort(self.mgr, self.handle[index])
+ raise TypeError, "iteration over non-sequence"
+
class Short:
def __init__(self, mgr, handle, isarray = False):
self.handle = handle
-
+ self.mgr = mgr
+ self.isarray = isarray
+
def __str__(self):
return str(self.handle)
-
+
def __int__(self):
return int(self.handle)
+ def __long__(self):
+ return long(self.handle)
+
+ def __next(self):
+ if self.isarray:
+ return self.handle.__next()
+ raise TypeError, "iteration over non-sequence"
+
+ def __size(self):
+ if self.isarray:
+ return self.handle.__size()
+ raise TypeError, "iteration over non-sequence"
+
+ def __len__(self):
+ if self.isarray:
+ return self.handle.__len__()
+ raise TypeError, "iteration over non-sequence"
+
+ def __getitem__(self, index):
+ if self.isarray:
+ return Short(self.mgr, self.handle[index])
+ raise TypeError, "iteration over non-sequence"
+
class UnsignedLong:
def __init__(self, mgr, handle, isarray = False):
self.handle = handle
-
+ self.mgr = mgr
+ self.isarray = isarray
+
def __str__(self):
return str(self.handle)
def __int__(self):
return int(self.handle)
+ def __long__(self):
+ return long(self.handle)
+
+ def __next(self):
+ if self.isarray:
+ return self.handle.__next()
+ raise TypeError, "iteration over non-sequence"
+
+ def __size(self):
+ if self.isarray:
+ return self.handle.__size()
+ raise TypeError, "iteration over non-sequence"
+
+ def __len__(self):
+ if self.isarray:
+ return self.handle.__len__()
+ raise TypeError, "iteration over non-sequence"
+
+ def __getitem__(self, index):
+ if self.isarray:
+ return UnsignedLong(self.mgr, self.handle[index])
+ raise TypeError, "iteration over non-sequence"
+
class Long:
def __init__(self, mgr, handle, isarray = False):
self.handle = handle
-
+ self.mgr = mgr
+ self.isarray = isarray
+
def __str__(self):
return str(self.handle)
def __int__(self):
return int(self.handle)
+ def __long__(self):
+ return int(self.handle)
+
+ def __next(self):
+ if self.isarray:
+ return self.handle.__next()
+ raise TypeError, "iteration over non-sequence"
+
+ def __size(self):
+ if self.isarray:
+ return self.handle.__size()
+ raise TypeError, "iteration over non-sequence"
+
+ def __len__(self):
+ if self.isarray:
+ return self.handle.__len__()
+ raise TypeError, "iteration over non-sequence"
+
+ def __getitem__(self, index):
+ if self.isarray:
+ return Long(self.mgr, self.handle[index])
+ raise TypeError, "iteration over non-sequence"
+
class Double:
def __init__(self, mgr, handle, isarray = False):
self.handle = handle
-
+ self.mgr = mgr
+ self.isarray = isarray
+
def __str__(self):
return str(self.handle)
def __int__(self):
return int(self.handle)
+ def __float__(self):
+ return float(self.handle)
+
+ def __next(self):
+ if self.isarray:
+ return self.handle.__next()
+ raise TypeError, "iteration over non-sequence"
+
+ def __size(self):
+ if self.isarray:
+ return self.handle.__size()
+ raise TypeError, "iteration over non-sequence"
+
+ def __len__(self):
+ if self.isarray:
+ return self.handle.__len__()
+ raise TypeError, "iteration over non-sequence"
+
+ def __getitem__(self, index):
+ if self.isarray:
+ return Double(self.mgr, self.handle[index])
+ raise TypeError, "iteration over non-sequence"
+
class Float:
def __init__(self, mgr, handle, isarray = False):
self.handle = handle
-
+ self.mgr = mgr
+ self.isarray = isarray
+
def __str__(self):
return str(self.handle)
def __int__(self):
return int(self.handle)
+ def __float__(self):
+ return float(self.handle)
+
+ def __next(self):
+ if self.isarray:
+ return self.handle.__next()
+ raise TypeError, "iteration over non-sequence"
+
+ def __size(self):
+ if self.isarray:
+ return self.handle.__size()
+ raise TypeError, "iteration over non-sequence"
+
+ def __len__(self):
+ if self.isarray:
+ return self.handle.__len__()
+ raise TypeError, "iteration over non-sequence"
+
+ def __getitem__(self, index):
+ if self.isarray:
+ return Float(self.mgr, self.handle[index])
+ raise TypeError, "iteration over non-sequence"
class IUnknown:
def __init__(self, mgr, handle, isarray = False):
@@ -677,13 +891,19 @@ class IUnknown:
self.mgr = mgr
self.isarray = isarray
+ def __nonzero__(self):
+ if self.handle != "":
+ return True
+ else:
+ return False
+
def __next(self):
if self.isarray:
return self.handle.__next()
raise TypeError, "iteration over non-sequence"
def __size(self):
- if self.isarray:
+ if self.isarray:
return self.handle.__size()
raise TypeError, "iteration over non-sequence"
@@ -695,11 +915,18 @@ class IUnknown:
def __getitem__(self, index):
if self.isarray:
return IUnknown(self.mgr, self.handle[index])
- raise TypeError, "iteration over non-sequence"
-
+ raise TypeError, "iteration over non-sequence"
+
def __str__(self):
return str(self.handle)
+ def __getattr__(self,attr):
+ if self.__class__.__dict__.get(attr) != None:
+ return self.__class__.__dict__.get(attr)
+ if self.__dict__.get(attr) != None:
+ return self.__dict__.get(attr)
+ raise AttributeError
+
</xsl:text>
<xsl:for-each select="//interface[@wsmap='managed' or @wsmap='global']">
<xsl:call-template name="interface"/>
@@ -728,4 +955,4 @@ class IWebsessionManager2(IWebsessionManager):
</xsl:template>
-</xsl:stylesheet>
+</xsl:stylesheet>
diff --git a/src/VBox/Main/webservice/websrv-shared.inc.xsl b/src/VBox/Main/webservice/websrv-shared.inc.xsl
index 4c13a6cd1..67c1400dc 100644
--- a/src/VBox/Main/webservice/websrv-shared.inc.xsl
+++ b/src/VBox/Main/webservice/websrv-shared.inc.xsl
@@ -170,7 +170,7 @@
<type idlname="double" xmlname="double" cname="double" gluename="" javaname="Double" />
<type idlname="float" xmlname="float" cname="float" gluename="" javaname="Float" />
<type idlname="wstring" xmlname="string" cname="std::string" gluename="" javaname="String" />
- <type idlname="uuid" xmlname="string" cname="std::string" gluename="" javaname="UUID" />
+ <type idlname="uuid" xmlname="string" cname="std::string" gluename="" javaname="String" />
<type idlname="result" xmlname="unsignedInt" cname="unsigned int" gluename="HRESULT" javaname="Long" />
</xsl:variable>
diff --git a/src/VBox/Runtime/r3/dir.cpp b/src/VBox/Runtime/r3/dir.cpp
index 893a6f4fb..de7227b63 100644
--- a/src/VBox/Runtime/r3/dir.cpp
+++ b/src/VBox/Runtime/r3/dir.cpp
@@ -700,9 +700,15 @@ RTDECL(int) RTDirOpenFiltered(PRTDIR *ppDir, const char *pszPath, RTDIRFILTER en
/*
* Find the last component, i.e. where the filter criteria starts and the dir name ends.
*/
- const char *pszFilter = enmFilter != RTDIRFILTER_NONE
- ? RTPathFilename(pszPath)
- : NULL;
+ const char *pszFilter;
+ if (enmFilter == RTDIRFILTER_NONE)
+ pszFilter = NULL;
+ else
+ {
+ pszFilter = RTPathFilename(pszPath);
+ if (!pszFilter) /* trailing slash => directory to read => no filter. */
+ enmFilter = RTDIRFILTER_NONE;
+ }
/*
* Call worker common with RTDirOpen which will verify the path, allocate
@@ -771,7 +777,7 @@ RTDECL(int) RTDirRemoveRecursive(const char *pszPath)
rc = VINF_SUCCESS;
RTDirClose(pDir);
- rc = RTDirRemove(szAbsPath);
+ rc = RTDirRemove(szAbsPath);
}
LogFlow(("RTDirRemoveRecursive(%p:{%s}): returns %Rrc\n", pszPath, pszPath, rc));
diff --git a/src/VBox/VMM/MMHyper.cpp b/src/VBox/VMM/MMHyper.cpp
index ba4f523ab..293b43957 100644
--- a/src/VBox/VMM/MMHyper.cpp
+++ b/src/VBox/VMM/MMHyper.cpp
@@ -874,7 +874,35 @@ static int mmR3HyperHeapMap(PVM pVM, PMMHYPERHEAP pHeap, PRTGCPTR ppHeapGC)
*/
VMMR3DECL(int) MMR3HyperAllocOnceNoRel(PVM pVM, size_t cb, unsigned uAlignment, MMTAG enmTag, void **ppv)
{
+ return MMR3HyperAllocOnceNoRelEx(pVM, cb, uAlignment, enmTag, 0/*fFlags*/, ppv);
+}
+
+
+/**
+ * Allocates memory in the Hypervisor (GC VMM) area which never will
+ * be freed and doesn't have any offset based relation to other heap blocks.
+ *
+ * The latter means that two blocks allocated by this API will not have the
+ * same relative position to each other in GC and HC. In short, never use
+ * this API for allocating nodes for an offset based AVL tree!
+ *
+ * The returned memory is of course zeroed.
+ *
+ * @returns VBox status code.
+ * @param pVM The VM to operate on.
+ * @param cb Number of bytes to allocate.
+ * @param uAlignment Required memory alignment in bytes.
+ * Values are 0,8,16,32 and PAGE_SIZE.
+ * 0 -> default alignment, i.e. 8 bytes.
+ * @param enmTag The statistics tag.
+ * @param fFlags Flags, see MMHYPER_AONR_FLAGS_KERNEL_MAPPING.
+ * @param ppv Where to store the address to the allocated memory.
+ * @remark This is assumed not to be used at times when serialization is required.
+ */
+VMMR3DECL(int) MMR3HyperAllocOnceNoRelEx(PVM pVM, size_t cb, unsigned uAlignment, MMTAG enmTag, uint32_t fFlags, void **ppv)
+{
AssertMsg(cb >= 8, ("Hey! Do you really mean to allocate less than 8 bytes?! cb=%d\n", cb));
+ Assert(!(fFlags & ~(MMHYPER_AONR_FLAGS_KERNEL_MAPPING)));
/*
* Choose between allocating a new chunk of HMA memory
@@ -883,9 +911,13 @@ VMMR3DECL(int) MMR3HyperAllocOnceNoRel(PVM pVM, size_t cb, unsigned uAlignment,
*/
if ( ( cb < _64K
&& ( uAlignment != PAGE_SIZE
- || cb < 48*_1K))
- || VMR3GetState(pVM) != VMSTATE_CREATING)
+ || cb < 48*_1K)
+ && !(fFlags & MMHYPER_AONR_FLAGS_KERNEL_MAPPING)
+ )
+ || VMR3GetState(pVM) != VMSTATE_CREATING
+ )
{
+ Assert(!(fFlags & MMHYPER_AONR_FLAGS_KERNEL_MAPPING));
int rc = MMHyperAlloc(pVM, cb, uAlignment, enmTag, ppv);
if ( rc != VERR_MM_HYPER_NO_MEMORY
|| cb <= 8*_1K)
@@ -896,6 +928,14 @@ VMMR3DECL(int) MMR3HyperAllocOnceNoRel(PVM pVM, size_t cb, unsigned uAlignment,
}
}
+#ifdef VBOX_WITH_2X_4GB_ADDR_SPACE
+ /*
+ * Set MMHYPER_AONR_FLAGS_KERNEL_MAPPING if we're in going to execute in ring-0.
+ */
+ if (VMMIsHwVirtExtForced(pVM))
+ fFlags |= MMHYPER_AONR_FLAGS_KERNEL_MAPPING;
+#endif
+
/*
* Validate alignment.
*/
@@ -926,20 +966,17 @@ VMMR3DECL(int) MMR3HyperAllocOnceNoRel(PVM pVM, size_t cb, unsigned uAlignment,
int rc = SUPR3PageAllocEx(cPages,
0 /*fFlags*/,
&pvPages,
-#ifdef VBOX_WITH_2X_4GB_ADDR_SPACE
- VMMIsHwVirtExtForced(pVM) ? &pvR0 : NULL,
-#else
- NULL,
-#endif
+ fFlags & MMHYPER_AONR_FLAGS_KERNEL_MAPPING ? &pvR0 : NULL,
paPages);
if (RT_SUCCESS(rc))
{
+ if (!(fFlags & MMHYPER_AONR_FLAGS_KERNEL_MAPPING))
#ifdef VBOX_WITH_2X_4GB_ADDR_SPACE
- if (!VMMIsHwVirtExtForced(pVM))
pvR0 = NIL_RTR0PTR;
#else
- pvR0 = (uintptr_t)pvPages;
+ pvR0 = (RTR0PTR)pvPages;
#endif
+
memset(pvPages, 0, cbAligned);
RTGCPTR GCPtr;
diff --git a/src/VBox/VMM/Makefile.kmk b/src/VBox/VMM/Makefile.kmk
index fd376a6cc..2fcdee58f 100644
--- a/src/VBox/VMM/Makefile.kmk
+++ b/src/VBox/VMM/Makefile.kmk
@@ -54,6 +54,7 @@ endif
ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
VMMR3_DEFS += VBOX_WITH_PDM_ASYNC_COMPLETION
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 \
VBOX_WITH_HYBRID_32BIT_KERNEL VBOX_WITH_HYBRID_32BIT_KERNEL_IN_R3
@@ -303,6 +304,7 @@ 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
@@ -413,6 +415,7 @@ endif
ifdef VBOX_WITH_MULTI_CORE
VMMR0_DEFS += VBOX_WITH_MULTI_CORE
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 \
VBOX_WITH_HYBRID_32BIT_KERNEL VBOX_WITH_HYBRID_32BIT_KERNEL_IN_R0
diff --git a/src/VBox/VMM/TM.cpp b/src/VBox/VMM/TM.cpp
index d2ec13429..1961a9911 100644
--- a/src/VBox/VMM/TM.cpp
+++ b/src/VBox/VMM/TM.cpp
@@ -325,11 +325,7 @@ VMMR3DECL(int) TMR3Init(PVM pVM)
if (rc == VERR_CFGM_VALUE_NOT_FOUND)
{
if (!pVM->tm.s.fTSCUseRealTSC)
- {
- /* @todo simple case for guest SMP; always emulate RDTSC */
- if (pVM->cCPUs == 1)
- pVM->tm.s.fMaybeUseOffsettedHostTSC = tmR3HasFixedTSC(pVM);
- }
+ pVM->tm.s.fMaybeUseOffsettedHostTSC = tmR3HasFixedTSC(pVM);
else
pVM->tm.s.fMaybeUseOffsettedHostTSC = true;
}
@@ -2012,9 +2008,11 @@ static void tmR3TimerQueueRunVirtualSync(PVM pVM)
/*
* Process the expired timers moving the clock along as we progress.
*/
+#ifdef DEBUG_bird
#ifdef VBOX_STRICT
uint64_t u64Prev = u64Now; NOREF(u64Prev);
#endif
+#endif
while (pNext && pNext->u64Expire <= u64Max)
{
PTMTIMER pTimer = pNext;
@@ -2043,10 +2041,12 @@ static void tmR3TimerQueueRunVirtualSync(PVM pVM)
pTimer->offPrev = 0;
/* advance the clock - don't permit timers to be out of order or armed in the 'past'. */
+#ifdef DEBUG_bird
#ifdef VBOX_STRICT
AssertMsg(pTimer->u64Expire >= u64Prev, ("%'RU64 < %'RU64 %s\n", pTimer->u64Expire, u64Prev, pTimer->pszDesc));
u64Prev = pTimer->u64Expire;
#endif
+#endif
ASMAtomicWriteU64(&pVM->tm.s.u64VirtualSync, pTimer->u64Expire);
ASMAtomicWriteBool(&pVM->tm.s.fVirtualSyncTicking, false);
diff --git a/src/VBox/VMM/VMM.cpp b/src/VBox/VMM/VMM.cpp
index 43a870e94..a057ab8b2 100644
--- a/src/VBox/VMM/VMM.cpp
+++ b/src/VBox/VMM/VMM.cpp
@@ -240,16 +240,22 @@ VMMR3DECL(int) VMMR3Init(PVM pVM)
static int vmmR3InitStacks(PVM pVM)
{
int rc = VINF_SUCCESS;
+#ifdef VMM_R0_SWITCH_STACK
+ uint32_t fFlags = MMHYPER_AONR_FLAGS_KERNEL_MAPPING;
+#else
+ uint32_t fFlags = 0;
+#endif
for (VMCPUID idCpu = 0; idCpu < pVM->cCPUs; idCpu++)
{
PVMCPU pVCpu = &pVM->aCpus[idCpu];
#ifdef VBOX_STRICT_VMM_STACK
- rc = MMR3HyperAllocOnceNoRel(pVM, PAGE_SIZE + VMM_STACK_SIZE + PAGE_SIZE, PAGE_SIZE, MM_TAG_VMM, (void **)&pVCpu->vmm.s.pbEMTStackR3);
+ rc = MMR3HyperAllocOnceNoRelEx(pVM, PAGE_SIZE + VMM_STACK_SIZE + PAGE_SIZE,
#else
- rc = MMR3HyperAllocOnceNoRel(pVM, VMM_STACK_SIZE, PAGE_SIZE, MM_TAG_VMM, (void **)&pVCpu->vmm.s.pbEMTStackR3);
+ rc = MMR3HyperAllocOnceNoRelEx(pVM, VMM_STACK_SIZE,
#endif
+ PAGE_SIZE, MM_TAG_VMM, fFlags, (void **)&pVCpu->vmm.s.pbEMTStackR3);
if (RT_SUCCESS(rc))
{
#ifdef VBOX_STRICT_VMM_STACK
@@ -298,12 +304,13 @@ static int vmmR3InitLoggers(PVM pVM)
pVM->vmm.s.pRCLoggerRC = MMHyperR3ToRC(pVM, pVM->vmm.s.pRCLoggerR3);
# ifdef VBOX_WITH_R0_LOGGING
- for (unsigned i = 0; i < pVM->cCPUs; i++)
+ for (VMCPUID i = 0; i < pVM->cCPUs; i++)
{
PVMCPU pVCpu = &pVM->aCpus[i];
- rc = MMR3HyperAllocOnceNoRel(pVM, RT_OFFSETOF(VMMR0LOGGER, Logger.afGroups[pLogger->cGroups]),
- 0, MM_TAG_VMM, (void **)&pVCpu->vmm.s.pR0LoggerR3);
+ rc = MMR3HyperAllocOnceNoRelEx(pVM, RT_OFFSETOF(VMMR0LOGGER, Logger.afGroups[pLogger->cGroups]),
+ 0, MM_TAG_VMM, MMHYPER_AONR_FLAGS_KERNEL_MAPPING,
+ (void **)&pVCpu->vmm.s.pR0LoggerR3);
if (RT_FAILURE(rc))
return rc;
pVCpu->vmm.s.pR0LoggerR3->pVM = pVM->pVMR0;
diff --git a/src/VBox/VMM/VMMAll/PGMAllBth.h b/src/VBox/VMM/VMMAll/PGMAllBth.h
index 002ae157d..0ee860d7b 100644
--- a/src/VBox/VMM/VMMAll/PGMAllBth.h
+++ b/src/VBox/VMM/VMMAll/PGMAllBth.h
@@ -4416,7 +4416,8 @@ PGM_BTH_DECL(int, MapCR3)(PVMCPU pVCpu, RTGCPHYS GCPhysCR3)
# endif
/* Clean up the old CR3 root. */
- if (pOldShwPageCR3)
+ if ( pOldShwPageCR3
+ && pOldShwPageCR3 != pNewShwPageCR3 /* @todo can happen due to incorrect syncing between REM & PGM; find the real cause */)
{
Assert(pOldShwPageCR3->enmKind != PGMPOOLKIND_FREE);
# ifndef PGM_WITHOUT_MAPPINGS
diff --git a/src/VBox/VMM/VMMAll/REMAll.cpp b/src/VBox/VMM/VMMAll/REMAll.cpp
index 81c2d86b2..28a1a9665 100644
--- a/src/VBox/VMM/VMMAll/REMAll.cpp
+++ b/src/VBox/VMM/VMMAll/REMAll.cpp
@@ -213,7 +213,7 @@ VMMDECL(void) REMNotifyHandlerPhysicalFlushIfAlmostFull(PVM pVM, PVMCPU pVCpu)
Assert(pVM->cCPUs == 1);
/*
- * Less than 10 items means we should flush.
+ * Less than 20 items means we should flush.
*/
uint32_t cFree = 0;
for (uint32_t idx = pVM->rem.s.idxFreeList;
@@ -221,7 +221,7 @@ VMMDECL(void) REMNotifyHandlerPhysicalFlushIfAlmostFull(PVM pVM, PVMCPU pVCpu)
idx = pVM->rem.s.aHandlerNotifications[idx].idxNext)
{
Assert(idx < RT_ELEMENTS(pVM->rem.s.aHandlerNotifications));
- if (++cFree > 10)
+ if (++cFree > 20)
return;
}
diff --git a/src/VBox/VMM/VMMR0/CPUMR0.cpp b/src/VBox/VMM/VMMR0/CPUMR0.cpp
index 26a658053..fbbf60ff6 100644
--- a/src/VBox/VMM/VMMR0/CPUMR0.cpp
+++ b/src/VBox/VMM/VMMR0/CPUMR0.cpp
@@ -60,24 +60,34 @@ VMMR0DECL(int) CPUMR0Init(PVM pVM)
}
/*
- * Check for sysenter if it's used.
+ * Check for sysenter and syscall usage.
*/
if (ASMHasCpuId())
{
+ /*
+ * SYSENTER/SYSEXIT
+ *
+ * Intel docs claim you should test both the flag and family, model &
+ * stepping because some Pentium Pro CPUs have the SEP cpuid flag set,
+ * but don't support it. AMD CPUs may support this feature in legacy
+ * mode, they've banned it from long mode. Since we switch to 32-bit
+ * mode when entering raw-mode context the feature would become
+ * accessible again on AMD CPUs, so we have to check regardless of
+ * host bitness.
+ */
uint32_t u32CpuVersion;
uint32_t u32Dummy;
- uint32_t u32Features;
- ASMCpuId(1, &u32CpuVersion, &u32Dummy, &u32Dummy, &u32Features);
+ uint32_t fFeatures;
+ ASMCpuId(1, &u32CpuVersion, &u32Dummy, &u32Dummy, &fFeatures);
uint32_t u32Family = u32CpuVersion >> 8;
uint32_t u32Model = (u32CpuVersion >> 4) & 0xF;
uint32_t u32Stepping = u32CpuVersion & 0xF;
-
- /*
- * Intel docs claim you should test both the flag and family, model & stepping.
- * Some Pentium Pro cpus have the SEP cpuid flag set, but don't support it.
- */
- if ( (u32Features & X86_CPUID_FEATURE_EDX_SEP)
- && !(u32Family == 6 && u32Model < 3 && u32Stepping < 3))
+ if ( (fFeatures & X86_CPUID_FEATURE_EDX_SEP)
+ && ( u32Family != 6 /* (> pentium pro) */
+ || u32Model >= 3
+ || u32Stepping >= 3
+ || !ASMIsIntelCpu())
+ )
{
/*
* Read the MSR and see if it's in use or not.
@@ -85,14 +95,44 @@ VMMR0DECL(int) CPUMR0Init(PVM pVM)
uint32_t u32 = ASMRdMsr_Low(MSR_IA32_SYSENTER_CS);
if (u32)
{
- for (unsigned i=0;i<pVM->cCPUs;i++)
- pVM->aCpus[i].cpum.s.fUseFlags |= CPUM_USE_SYSENTER;
-
+ pVM->cpum.s.fHostUseFlags |= CPUM_USE_SYSENTER;
Log(("CPUMR0Init: host uses sysenter cs=%08x%08x\n", ASMRdMsr_High(MSR_IA32_SYSENTER_CS), u32));
}
}
- /** @todo check for AMD and syscall!!!!!! */
+ /*
+ * SYSCALL/SYSRET
+ *
+ * This feature is indicated by the SEP bit returned in EDX by CPUID
+ * function 0x80000001. Intel CPUs only supports this feature in
+ * long mode. Since we're not running 64-bit guests in raw-mode there
+ * are no issues with 32-bit intel hosts.
+ */
+ uint32_t cExt = 0;
+ ASMCpuId(0x80000000, &cExt, &u32Dummy, &u32Dummy, &u32Dummy);
+ if ( cExt >= 0x80000001
+ && cExt <= 0x8000ffff)
+ {
+ uint32_t fExtFeaturesEDX = ASMCpuId_EDX(0x80000001);
+ if (fExtFeaturesEDX & X86_CPUID_AMD_FEATURE_EDX_SEP)
+ {
+#ifdef RT_ARCH_X86
+# ifdef VBOX_WITH_HYBRID_32BIT_KERNEL
+ if (fExtFeaturesEDX & X86_CPUID_AMD_FEATURE_EDX_LONG_MODE)
+# else
+ if (!ASMIsIntelCpu())
+# endif
+#endif
+ {
+ uint64_t fEfer = ASMRdMsr(MSR_K6_EFER);
+ if (fEfer & MSR_K6_EFER_SCE)
+ {
+ pVM->cpum.s.fHostUseFlags |= CPUM_USE_SYSCALL;
+ Log(("CPUMR0Init: host uses syscall\n"));
+ }
+ }
+ }
+ }
}
diff --git a/src/VBox/VMM/VMMR0/HWACCMR0A.asm b/src/VBox/VMM/VMMR0/HWACCMR0A.asm
index acbd67f27..55f521d08 100644
--- a/src/VBox/VMM/VMMR0/HWACCMR0A.asm
+++ b/src/VBox/VMM/VMMR0/HWACCMR0A.asm
@@ -923,11 +923,7 @@ BEGINPROC SVMR0InvlpgA
mov rax, rdi
mov rcx, rsi
%else
- ; from http://www.cs.cmu.edu/~fp/courses/15213-s06/misc/asm64-handout.pdf:
- ; ``Perhaps unexpectedly, instructions that move or generate 32-bit register
- ; values also set the upper 32 bits of the register to zero. Consequently
- ; there is no need for an instruction movzlq.''
- mov eax, ecx
+ mov rax, rcx
mov rcx, rdx
%endif
%else
diff --git a/src/VBox/VMM/VMMR0/HWSVMR0.cpp b/src/VBox/VMM/VMMR0/HWSVMR0.cpp
index 1eecf9870..950327df1 100644
--- a/src/VBox/VMM/VMMR0/HWSVMR0.cpp
+++ b/src/VBox/VMM/VMMR0/HWSVMR0.cpp
@@ -54,6 +54,7 @@
*******************************************************************************/
static int svmR0InterpretInvpg(PVM pVM, PVMCPU pVCpu, PCPUMCTXCORE pRegFrame, uint32_t uASID);
static int svmR0ReplaceTprInstr(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx);
+static void svmR0SetMSRPermission(PVM pVM, unsigned ulMSR, bool fRead, bool fWrite);
/*******************************************************************************
* Global Variables *
@@ -361,11 +362,76 @@ VMMR0DECL(int) SVMR0SetupVM(PVM pVM)
/** Setup the PAT msr (nested paging only) */
pVMCB->guest.u64GPAT = 0x0007040600070406ULL;
}
+ /* The following MSRs are saved automatically by vmload/vmsave, so we allow the guest
+ * to modify them directly.
+ */
+ svmR0SetMSRPermission(pVM, MSR_K8_LSTAR, true, true);
+ svmR0SetMSRPermission(pVM, MSR_K8_CSTAR, true, true);
+ svmR0SetMSRPermission(pVM, MSR_K6_STAR, true, true);
+ svmR0SetMSRPermission(pVM, MSR_K8_SF_MASK, true, true);
+ svmR0SetMSRPermission(pVM, MSR_K8_FS_BASE, true, true);
+ svmR0SetMSRPermission(pVM, MSR_K8_GS_BASE, true, true);
+ svmR0SetMSRPermission(pVM, MSR_K8_KERNEL_GS_BASE, true, true);
+ svmR0SetMSRPermission(pVM, MSR_IA32_SYSENTER_CS, true, true);
+ svmR0SetMSRPermission(pVM, MSR_IA32_SYSENTER_ESP, true, true);
+ svmR0SetMSRPermission(pVM, MSR_IA32_SYSENTER_EIP, true, true);
return rc;
}
/**
+ * Sets the permission bits for the specified MSR
+ *
+ * @param pVM The VM to operate on.
+ * @param ulMSR MSR value
+ * @param fRead Reading allowed/disallowed
+ * @param fWrite Writing allowed/disallowed
+ */
+static void svmR0SetMSRPermission(PVM pVM, unsigned ulMSR, bool fRead, bool fWrite)
+{
+ unsigned ulBit;
+ uint8_t *pMSRBitmap = (uint8_t *)pVM->hwaccm.s.svm.pMSRBitmap;
+
+ if (ulMSR <= 0x00001FFF)
+ {
+ /* Pentium-compatible MSRs */
+ ulBit = ulMSR * 2;
+ }
+ else
+ if ( ulMSR >= 0xC0000000
+ && ulMSR <= 0xC0001FFF)
+ {
+ /* AMD Sixth Generation x86 Processor MSRs and SYSCALL */
+ ulBit = (ulMSR - 0xC0000000) * 2;
+ pMSRBitmap += 0x800;
+ }
+ else
+ if ( ulMSR >= 0xC0010000
+ && ulMSR <= 0xC0011FFF)
+ {
+ /* AMD Seventh and Eighth Generation Processor MSRs */
+ ulBit = (ulMSR - 0xC0001000) * 2;
+ pMSRBitmap += 0x1000;
+ }
+ else
+ {
+ AssertFailed();
+ return;
+ }
+ Assert(ulBit < 16 * 1024 - 1);
+ if (fRead)
+ ASMBitClear(pMSRBitmap, ulBit);
+ else
+ ASMBitSet(pMSRBitmap, ulBit);
+
+ if (fWrite)
+ ASMBitClear(pMSRBitmap, ulBit + 1);
+ else
+ ASMBitSet(pMSRBitmap, ulBit + 1);
+}
+
+
+/**
* Injects an event (trap or external interrupt)
*
* @param pVCpu The VMCPU to operate on.
@@ -1294,7 +1360,15 @@ ResumeExecution:
/* eax is saved/restore across the vmrun instruction */
pCtx->rax = pVMCB->guest.u64RAX;
+ /* Save all the MSRs that can be changed by the guest without causing a world switch. (fs & gs base are saved with SVM_READ_SELREG) */
+ pCtx->msrSTAR = pVMCB->guest.u64STAR; /* legacy syscall eip, cs & ss */
+ pCtx->msrLSTAR = pVMCB->guest.u64LSTAR; /* 64 bits mode syscall rip */
+ pCtx->msrCSTAR = pVMCB->guest.u64CSTAR; /* compatibility mode syscall rip */
+ pCtx->msrSFMASK = pVMCB->guest.u64SFMASK; /* syscall flag mask */
pCtx->msrKERNELGSBASE = pVMCB->guest.u64KernelGSBase; /* swapgs exchange value */
+ pCtx->SysEnter.cs = pVMCB->guest.u64SysEnterCS;
+ pCtx->SysEnter.eip = pVMCB->guest.u64SysEnterEIP;
+ pCtx->SysEnter.esp = pVMCB->guest.u64SysEnterESP;
/* Can be updated behind our back in the nested paging case. */
pCtx->cr2 = pVMCB->guest.u64CR2;
@@ -1307,13 +1381,6 @@ ResumeExecution:
SVM_READ_SELREG(FS, fs);
SVM_READ_SELREG(GS, gs);
- /*
- * System MSRs
- */
- pCtx->SysEnter.cs = pVMCB->guest.u64SysEnterCS;
- pCtx->SysEnter.eip = pVMCB->guest.u64SysEnterEIP;
- pCtx->SysEnter.esp = pVMCB->guest.u64SysEnterESP;
-
/* Remaining guest CPU context: TR, IDTR, GDTR, LDTR; must sync everything otherwise we can get out of sync when jumping to ring 3. */
SVM_READ_SELREG(LDTR, ldtr);
SVM_READ_SELREG(TR, tr);
@@ -2728,7 +2795,7 @@ static int svmR0InterpretInvpg(PVM pVM, PVMCPU pVCpu, PCPUMCTXCORE pRegFrame, ui
*/
VMMR0DECL(int) SVMR0InvalidatePage(PVM pVM, PVMCPU pVCpu, RTGCPTR GCVirt)
{
- bool fFlushPending = pVM->hwaccm.s.svm.fAlwaysFlushTLB | pVCpu->hwaccm.s.fForceTLBFlush;
+ bool fFlushPending = pVM->hwaccm.s.svm.fAlwaysFlushTLB | VMCPU_FF_ISSET(pVCpu, VMCPU_FF_TLB_FLUSH);
/* Skip it if a TLB flush is already pending. */
if (!fFlushPending)
@@ -2739,14 +2806,13 @@ VMMR0DECL(int) SVMR0InvalidatePage(PVM pVM, PVMCPU pVCpu, RTGCPTR GCVirt)
AssertReturn(pVM, VERR_INVALID_PARAMETER);
Assert(pVM->hwaccm.s.svm.fSupported);
- /* @todo SMP */
- pVMCB = (SVM_VMCB *)pVM->aCpus[0].hwaccm.s.svm.pVMCB;
+ pVMCB = (SVM_VMCB *)pVCpu->hwaccm.s.svm.pVMCB;
AssertMsgReturn(pVMCB, ("Invalid pVMCB\n"), VERR_EM_INTERNAL_ERROR);
#if HC_ARCH_BITS == 32
/* If we get a flush in 64 bits guest mode, then force a full TLB flush. Invlpga takes only 32 bits addresses. */
if (CPUMIsGuestInLongMode(pVCpu))
- pVCpu->hwaccm.s.fForceTLBFlush = true;
+ VMCPU_FF_SET(pVCpu, VMCPU_FF_TLB_FLUSH);
else
#endif
SVMR0InvlpgA(GCVirt, pVMCB->ctrl.TLBCtrl.n.u32ASID);
@@ -2768,7 +2834,7 @@ VMMR0DECL(int) SVMR0InvalidatePhysPage(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhys)
{
Assert(pVM->hwaccm.s.fNestedPaging);
/* invlpga only invalidates TLB entries for guest virtual addresses; we have no choice but to force a TLB flush here. */
- pVCpu->hwaccm.s.fForceTLBFlush = true;
+ VMCPU_FF_SET(pVCpu, VMCPU_FF_TLB_FLUSH);
STAM_COUNTER_INC(&pVCpu->hwaccm.s.StatFlushTLBInvlpga);
return VINF_SUCCESS;
}
diff --git a/src/VBox/VMM/VMMR0/HWVMXR0.cpp b/src/VBox/VMM/VMMR0/HWVMXR0.cpp
index 60f85de3f..f72f4508a 100644
--- a/src/VBox/VMM/VMMR0/HWVMXR0.cpp
+++ b/src/VBox/VMM/VMMR0/HWVMXR0.cpp
@@ -1509,12 +1509,17 @@ VMMR0DECL(int) VMXR0LoadGuestState(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx)
val &= ~X86_CR4_PAE;
}
+ /* Turn off VME if we're in emulated real mode. */
+ if (CPUMIsGuestInRealModeEx(pCtx))
+ val &= ~X86_CR4_VME;
+
rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_CR4, val);
Log2(("Guest CR4 %08x\n", val));
/* CR4 flags owned by the host; if the guests attempts to change them, then
* the VM will exit.
*/
val = 0
+ | X86_CR4_VME
| X86_CR4_PAE
| X86_CR4_PGE
| X86_CR4_PSE
@@ -2724,6 +2729,10 @@ ResumeExecution:
case OP_STI:
pCtx->eflags.Bits.u1IF = 1;
+ EMSetInhibitInterruptsPC(pVCpu, pCtx->rip + pDis->opsize);
+ Assert(VMCPU_FF_ISSET(pVCpu, VMCPU_FF_INHIBIT_INTERRUPTS));
+ rc = VMXWriteVMCS(VMX_VMCS32_GUEST_INTERRUPTIBILITY_STATE, VMX_VMCS_GUEST_INTERRUPTIBILITY_STATE_BLOCK_STI);
+ AssertRC(rc);
STAM_COUNTER_INC(&pVCpu->hwaccm.s.StatExitSti);
break;
@@ -3858,7 +3867,7 @@ static void vmxR0FlushVPID(PVM pVM, PVMCPU pVCpu, VMX_FLUSH enmFlush, RTGCPTR GC
if ( CPUMIsGuestInLongMode(pVCpu)
&& !VMX_IS_64BIT_HOST_MODE())
{
- pVCpu->hwaccm.s.fForceTLBFlush = true;
+ VMCPU_FF_SET(pVCpu, VMCPU_FF_TLB_FLUSH);
}
else
#endif
@@ -3884,7 +3893,7 @@ static void vmxR0FlushVPID(PVM pVM, PVMCPU pVCpu, VMX_FLUSH enmFlush, RTGCPTR GC
*/
VMMR0DECL(int) VMXR0InvalidatePage(PVM pVM, PVMCPU pVCpu, RTGCPTR GCVirt)
{
- bool fFlushPending = pVCpu->hwaccm.s.fForceTLBFlush;
+ bool fFlushPending = VMCPU_FF_ISSET(pVCpu, VMCPU_FF_TLB_FLUSH);
Log2(("VMXR0InvalidatePage %RGv\n", GCVirt));
@@ -3914,7 +3923,7 @@ VMMR0DECL(int) VMXR0InvalidatePage(PVM pVM, PVMCPU pVCpu, RTGCPTR GCVirt)
*/
VMMR0DECL(int) VMXR0InvalidatePhysPage(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhys)
{
- bool fFlushPending = pVCpu->hwaccm.s.fForceTLBFlush;
+ bool fFlushPending = VMCPU_FF_ISSET(pVCpu, VMCPU_FF_TLB_FLUSH);
Assert(pVM->hwaccm.s.fNestedPaging);
diff --git a/src/VBox/VMM/VMMSwitcher.cpp b/src/VBox/VMM/VMMSwitcher.cpp
index 7e7cc9fb9..1a1b231df 100644
--- a/src/VBox/VMM/VMMSwitcher.cpp
+++ b/src/VBox/VMM/VMMSwitcher.cpp
@@ -557,13 +557,13 @@ static void vmmR3SwitcherGenericRelocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR
}
/*
- * Insert relative jump to specified target it SYSENTER isn't used by the host.
+ * Insert relative jump to specified target it SYSCALL isn't used by the host.
*/
case FIX_NO_SYSCALL_JMP:
{
uint32_t offTrg = *u.pu32++;
Assert(offTrg < pSwitcher->cbCode);
- if (!CPUMIsHostUsingSysEnter(pVM))
+ if (!CPUMIsHostUsingSysCall(pVM))
{
*uSrc.pu8++ = 0xe9; /* jmp rel32 */
*uSrc.pu32++ = offTrg - (offSrc + 5);
diff --git a/src/VBox/VMM/VMMSwitcher/AMD64andLegacy.mac b/src/VBox/VMM/VMMSwitcher/AMD64andLegacy.mac
index 4d721fbea..31deb20e1 100644
--- a/src/VBox/VMM/VMMSwitcher/AMD64andLegacy.mac
+++ b/src/VBox/VMM/VMMSwitcher/AMD64andLegacy.mac
@@ -199,7 +199,7 @@ BITS 64
ALIGNCODE(16)
BEGINPROC vmmR0HostToGuestAsm
;; Store the offset from CPUM to CPUMCPU in r8
- mov r8, [rdx + CPUM.ulOffCPUMCPU]
+ mov r8d, [rdx + CPUM.ulOffCPUMCPU]
;;
;; Save CPU host context
@@ -255,13 +255,13 @@ BEGINPROC vmmR0HostToGuestAsm
FIXUP FIX_NO_SYSENTER_JMP, 0, htg_no_sysenter - NAME(Start) ; this will insert a jmp htg_no_sysenter if host doesn't use sysenter.
; save MSR_IA32_SYSENTER_CS register.
- mov ecx, MSR_IA32_SYSENTER_CS
mov rbx, rdx ; save edx
+ mov ecx, MSR_IA32_SYSENTER_CS
rdmsr ; edx:eax <- MSR[ecx]
- mov [rbx + r8 + CPUMCPU.Host.SysEnter.cs], rax
- mov [rbx + r8 + CPUMCPU.Host.SysEnter.cs + 4], rdx
- xor rax, rax ; load 0:0 to cause #GP upon sysenter
- xor rdx, rdx
+ mov [rbx + r8 + CPUMCPU.Host.SysEnter.cs], eax
+ mov [rbx + r8 + CPUMCPU.Host.SysEnter.cs + 4], edx
+ xor eax, eax ; load 0:0 to cause #GP upon sysenter
+ xor edx, edx
wrmsr
mov rdx, rbx ; restore edx
jmp short htg_no_sysenter
@@ -513,7 +513,7 @@ htg_debug_regs_guest_no:
mov eax, [edx + CPUMCPU.Hyper.eip]
; callees expect CPUM ptr
CPUM_FROM_CPUMCPU(edx)
-
+
%ifdef VBOX_WITH_STATISTICS
FIXUP FIX_GC_VM_OFF, 1, VM.StatSwitcherToGC
mov edx, 0ffffffffh
@@ -946,7 +946,7 @@ GLOBALNAME HCExitTarget
; Load CPUM pointer into edx
mov rdx, [NAME(pCpumHC) wrt rip]
; Load the CPUMCPU offset.
- mov r8, [rdx + CPUM.ulOffCPUMCPU]
+ mov r8d, [rdx + CPUM.ulOffCPUMCPU]
; activate host gdt and idt
lgdt [rdx + r8 + CPUMCPU.Host.gdtr]
@@ -990,10 +990,10 @@ GLOBALNAME HCExitTarget
FIXUP FIX_NO_SYSENTER_JMP, 0, gth_sysenter_no - NAME(Start) ; this will insert a jmp gth_sysenter_no if host doesn't use sysenter.
; restore MSR_IA32_SYSENTER_CS register.
+ mov rbx, rdx ; save edx
mov ecx, MSR_IA32_SYSENTER_CS
- mov eax, [rdx + r8 + CPUMCPU.Host.SysEnter.cs]
- mov ebx, [rdx + r8 + CPUMCPU.Host.SysEnter.cs + 4]
- mov rbx, rdx ; save/load edx
+ mov eax, [rbx + r8 + CPUMCPU.Host.SysEnter.cs]
+ mov edx, [rbx + r8 + CPUMCPU.Host.SysEnter.cs + 4]
wrmsr ; MSR[ecx] <- edx:eax
mov rdx, rbx ; restore edx
jmp short gth_sysenter_no
diff --git a/src/VBox/VMM/VMMSwitcher/PAEand32Bit.mac b/src/VBox/VMM/VMMSwitcher/PAEand32Bit.mac
index 4505db638..3729c30fc 100644
--- a/src/VBox/VMM/VMMSwitcher/PAEand32Bit.mac
+++ b/src/VBox/VMM/VMMSwitcher/PAEand32Bit.mac
@@ -156,6 +156,19 @@ BEGINPROC vmmR0HostToGuestAsm
ALIGNCODE(16)
htg_no_sysenter:
+ FIXUP FIX_NO_SYSCALL_JMP, 0, htg_no_syscall - NAME(Start) ; this will insert a jmp htg_no_syscall if host doesn't use syscall.
+ ; clear MSR_K6_EFER_SCE.
+ mov ebx, edx ; save edx
+ mov ecx, MSR_K6_EFER
+ rdmsr ; edx:eax <- MSR[ecx]
+ and eax, ~MSR_K6_EFER_SCE
+ wrmsr
+ mov edx, ebx ; restore edx
+ jmp short htg_no_syscall
+
+ALIGNCODE(16)
+htg_no_syscall:
+
;; handle use flags.
mov esi, [edx + CPUMCPU.fUseFlags] ; esi == use flags.
and esi, ~CPUM_USED_FPU ; Clear CPUM_USED_* flags. ;;@todo FPU check can be optimized to use cr0 flags!
@@ -215,7 +228,7 @@ htg_debug_regs_no:
; Store the hypervisor cr3 for later loading
mov ebp, [edx + CPUMCPU.Hyper.cr3]
-
+
;;
;; Load Intermediate memory context.
;;
@@ -380,7 +393,7 @@ htg_debug_regs_guest_no:
mov eax, [edx + CPUMCPU.Hyper.eip]
; callees expect CPUM ptr
CPUM_FROM_CPUMCPU(edx)
-
+
%ifdef VBOX_WITH_STATISTICS
FIXUP FIX_GC_VM_OFF, 1, VM.StatSwitcherToGC
mov edx, 0ffffffffh
@@ -419,7 +432,7 @@ htg_debug_regs_guest:
mov [edx + CPUMCPU.Host.dr2], ecx
mov eax, dr3
mov [edx + CPUMCPU.Host.dr3], eax
-
+
; load hyper DR0-7
mov ebx, [edx + CPUMCPU.Hyper.dr]
mov dr0, ebx
@@ -863,7 +876,18 @@ GLOBALNAME HCExitTarget
ALIGNCODE(16)
gth_sysenter_no:
- ;; @todo AMD syscall
+ FIXUP FIX_NO_SYSCALL_JMP, 0, gth_syscall_no - NAME(Start) ; this will insert a jmp gth_syscall_no if host doesn't use syscall.
+ ; set MSR_K6_EFER_SCE.
+ mov ebx, edx ; save edx
+ mov ecx, MSR_K6_EFER
+ rdmsr
+ or eax, MSR_K6_EFER_SCE
+ wrmsr
+ mov edx, ebx ; restore edx
+ jmp short gth_syscall_no
+
+ALIGNCODE(16)
+gth_syscall_no:
; Restore FPU if guest has used it.
; Using fxrstor should ensure that we're not causing unwanted exception on the host.
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 8f3572d37..6b2baa7ec 100644
--- a/src/libs/xpcom18a4/ipc/ipcd/extensions/dconnect/src/ipcDConnectService.cpp
+++ b/src/libs/xpcom18a4/ipc/ipcd/extensions/dconnect/src/ipcDConnectService.cpp
@@ -195,6 +195,14 @@ struct DConnectInvokeReply : DConnectOp
//-----------------------------------------------------------------------------
+struct DConAddrPlusPtr
+{
+ DConAddr addr;
+ void *p;
+};
+
+//-----------------------------------------------------------------------------
+
ipcDConnectService *ipcDConnectService::mInstance = nsnull;
//-----------------------------------------------------------------------------
@@ -532,9 +540,9 @@ DeserializeParam(ipcMessageReader &reader, const nsXPTType &t, nsXPTCVariant &v)
case nsXPTType::T_INTERFACE:
case nsXPTType::T_INTERFACE_IS:
{
- reader.GetBytes(&v.val.p, sizeof(void *));
+ reader.GetBytes(&v.val.u64, sizeof(DConAddr));
// stub creation will be handled outside this routine. we only
- // deserialize the DConAddr into v.val.p temporarily.
+ // deserialize the DConAddr into v.val.u64 temporarily.
}
break;
@@ -767,10 +775,12 @@ DeserializeResult(ipcMessageReader &reader, const nsXPTType &t, nsXPTCMiniVarian
case nsXPTType::T_INTERFACE_IS:
{
// stub creation will be handled outside this routine. we only
- // deserialize the DConAddr into v.val.p temporarily.
- void *ptr;
- reader.GetBytes(&ptr, sizeof(void *));
- *((void **) v.val.p) = ptr;
+ // deserialize the DConAddr and the original value of v.val.p
+ // into v.val.p temporarily. needs temporary memory alloc.
+ DConAddrPlusPtr *buf = (DConAddrPlusPtr *) nsMemory::Alloc(sizeof(DConAddrPlusPtr));
+ reader.GetBytes(&buf->addr, sizeof(DConAddr));
+ buf->p = v.val.p;
+ v.val.p = buf;
}
break;
@@ -938,8 +948,6 @@ GetTypeSize(const nsXPTType &type, PRUint32 &size, PRBool &isSimple)
case nsXPTType::T_IID: /* fall through */
case nsXPTType::T_CHAR_STR: /* fall through */
case nsXPTType::T_WCHAR_STR: /* fall through */
- case nsXPTType::T_INTERFACE: /* fall through */
- case nsXPTType::T_INTERFACE_IS: /* fall through */
case nsXPTType::T_ASTRING: /* fall through */
case nsXPTType::T_DOMSTRING: /* fall through */
case nsXPTType::T_UTF8STRING: /* fall through */
@@ -947,6 +955,11 @@ GetTypeSize(const nsXPTType &type, PRUint32 &size, PRBool &isSimple)
size = sizeof(void *);
isSimple = PR_FALSE;
break;
+ case nsXPTType::T_INTERFACE: /* fall through */
+ case nsXPTType::T_INTERFACE_IS: /* fall through */
+ size = sizeof(DConAddr);
+ isSimple = PR_FALSE;
+ break;
default:
LOG(("unexpected parameter type: %d\n", type.TagPart()));
return NS_ERROR_UNEXPECTED;
@@ -1096,7 +1109,7 @@ DeserializeArrayParam(ipcDConnectService *dConnect,
if (NS_SUCCEEDED(rv) && elemType.IsInterfacePointer())
{
// grab the DConAddr value temporarily stored in the param
- PtrBits bits = (PtrBits) v.val.p;
+ PtrBits bits = v.val.u64;
// DeserializeInterfaceParamBits needs IID only if it's a remote object
nsID iid;
@@ -1524,7 +1537,8 @@ ipcDConnectService::SerializeInterfaceParam(ipcMessageWriter &writer,
if (!obj)
{
// write null address
- writer.PutBytes(&obj, sizeof(obj));
+ DConAddr nullobj = 0;
+ writer.PutBytes(&nullobj, sizeof(nullobj));
}
else
{
@@ -1532,7 +1546,7 @@ ipcDConnectService::SerializeInterfaceParam(ipcMessageWriter &writer,
nsresult rv = obj->QueryInterface(kDConnectStubID, (void **) &stub);
if (NS_SUCCEEDED(rv) && (stub->PeerID() == peer))
{
- void *p = stub->Instance();
+ DConAddr p = stub->Instance();
writer.PutBytes(&p, sizeof(p));
}
else
@@ -1581,7 +1595,7 @@ ipcDConnectService::SerializeInterfaceParam(ipcMessageWriter &writer,
// send address of the instance wrapper, and set the low bit to indicate
// to the remote party that this is a remote instance wrapper.
- PtrBits bits = ((PtrBits) wrapper) | PTRBITS_REMOTE_BIT;
+ PtrBits bits = ((PtrBits)(uintptr_t) wrapper) | PTRBITS_REMOTE_BIT;
writer.PutBytes(&bits, sizeof(bits));
}
NS_IF_RELEASE(stub);
@@ -1849,7 +1863,7 @@ ipcDConnectService::SerializeException(ipcMessageWriter &writer,
if (NS_SUCCEEDED(rv) && (stub->Stub()->PeerID() == peer))
{
// send the wrapper instance back to the peer
- void *p = stub->Stub()->Instance();
+ DConAddr p = stub->Stub()->Instance();
writer.PutBytes(&p, sizeof(p));
}
else
@@ -1899,7 +1913,7 @@ ipcDConnectService::SerializeException(ipcMessageWriter &writer,
// send address of the instance wrapper, and set the low bit to indicate
// to the remote party that this is a remote instance wrapper.
- PtrBits bits = ((PtrBits) wrapper) | PTRBITS_REMOTE_BIT;
+ PtrBits bits = ((PtrBits)(uintptr_t) wrapper) | PTRBITS_REMOTE_BIT;
writer.PutBytes(&bits, sizeof(bits));
// we want to cache fields to minimize the number of IPC calls when
@@ -1986,13 +2000,11 @@ ipcDConnectService::DeserializeException(ipcMessageReader &reader,
nsresult rv;
PRUint32 len;
- void *instance = 0;
- reader.GetBytes(&instance, sizeof(void *));
+ PtrBits bits = 0;
+ reader.GetBytes(&bits, sizeof(DConAddr));
if (reader.HasError())
return NS_ERROR_INVALID_ARG;
- PtrBits bits = (PtrBits) (instance);
-
if (bits & PTRBITS_REMOTE_BIT)
{
// pointer is a peer-side exception instance wrapper,
@@ -2095,7 +2107,7 @@ DConnectStub::~DConnectStub()
#ifdef IPC_LOGGING
const char *name;
mIInfo->GetNameShared(&name);
- LOG(("{%p} DConnectStub::<dtor>(): peer=%d instance=%p {%s}\n",
+ LOG(("{%p} DConnectStub::<dtor>(): peer=%d instance=0x%Lx {%s}\n",
this, mPeerID, mInstance, name));
#endif
@@ -2292,7 +2304,7 @@ DConnectStub::QueryInterface(const nsID &aIID, void **aInstancePtr)
dConnect->GetInterfaceInfo(aIID, getter_AddRefs(iinfoQ));
iinfoQ->GetNameShared(&nameQ);
LOG(("calling QueryInterface {%s} on peer object "
- "(stub=%p, instance=%p {%s})\n",
+ "(stub=%p, instance=0x%Lx {%s})\n",
nameQ, this, mInstance, name));
}
#endif
@@ -2367,7 +2379,7 @@ DConnectStub::CallMethod(PRUint16 aMethodIndex,
PRUint8 i, paramCount = aInfo->GetParamCount();
- LOG((" instance=%p\n", mInstance));
+ LOG((" instance=0x%Lx\n", mInstance));
LOG((" name=%s\n", aInfo->GetName()));
LOG((" param-count=%u\n", (PRUint32) paramCount));
@@ -2513,13 +2525,15 @@ DConnectStub::CallMethod(PRUint16 aMethodIndex,
const nsXPTParamInfo &paramInfo = aInfo->GetParam(i);
if (aParams[i].val.p && (paramInfo.IsOut() || paramInfo.IsRetval()))
{
- void **pptr = (void **) aParams[i].val.p;
const nsXPTType &type = paramInfo.GetType();
if (type.IsInterfacePointer())
{
- // grab the DConAddr value temporarily stored in the param
- PtrBits bits = (PtrBits) *pptr;
- *pptr = nsnull;
+ // grab the DConAddr value temporarily stored in the param, restore
+ // the pointer and free the temporarily allocated memory.
+ DConAddrPlusPtr *dptr = (DConAddrPlusPtr *)aParams[i].val.p;
+ PtrBits bits = dptr->addr;
+ aParams[i].val.p = dptr->p;
+ nsMemory::Free((void *)dptr);
// DeserializeInterfaceParamBits needs IID only if it's a remote object
nsID iid;
@@ -2532,7 +2546,7 @@ DConnectStub::CallMethod(PRUint16 aMethodIndex,
nsISupports *obj = nsnull;
rv = dConnect->DeserializeInterfaceParamBits(bits, mPeerID, iid, obj);
if (NS_SUCCEEDED(rv))
- *pptr = obj;
+ *(void **)aParams[i].val.p = obj;
}
}
else if (type.IsArray())
@@ -2542,7 +2556,7 @@ DConnectStub::CallMethod(PRUint16 aMethodIndex,
aMethodIndex, *aInfo, aParams, PR_FALSE,
paramInfo, PR_TRUE, array);
if (NS_SUCCEEDED(rv))
- *pptr = array;
+ *(void **)aParams[i].val.p = array;
}
}
}
@@ -2594,7 +2608,7 @@ public:
const DConnectSetupReply *reply = (const DConnectSetupReply *) op;
- LOG(("got SETUP_REPLY: status=%x instance=%p\n", reply->status, reply->instance));
+ LOG(("got SETUP_REPLY: status=%x instance=0x%Lx\n", reply->status, reply->instance));
mStatus = reply->status;
@@ -3121,7 +3135,7 @@ ipcDConnectService::StoreStub(DConnectStub *stub)
nsCOMPtr<nsIInterfaceInfo> iinfo;
stub->GetInterfaceInfo(getter_AddRefs(iinfo));
iinfo->GetNameShared(&name);
- LOG(("ipcDConnectService::StoreStub(): stub=%p instance=%p {%s}\n",
+ LOG(("ipcDConnectService::StoreStub(): stub=%p instance=0x%Lx {%s}\n",
stub, stub->Instance(), name));
#endif
@@ -3137,7 +3151,7 @@ ipcDConnectService::DeleteStub(DConnectStub *stub)
nsCOMPtr<nsIInterfaceInfo> iinfo;
stub->GetInterfaceInfo(getter_AddRefs(iinfo));
iinfo->GetNameShared(&name);
- LOG(("ipcDConnectService::DeleteStub(): stub=%p instance=%p {%s}\n",
+ LOG(("ipcDConnectService::DeleteStub(): stub=%p instance=0x%Lx {%s}\n",
stub, stub->Instance(), name));
#endif
@@ -3472,17 +3486,18 @@ ipcDConnectService::OnSetup(PRUint32 peer, const DConnectSetup *setup, PRUint32
case DCON_OP_SETUP_QUERY_INTERFACE:
{
const DConnectSetupQueryInterface *setupQI = (const DConnectSetupQueryInterface *) setup;
+ DConnectInstance *QIinstance = (DConnectInstance *)setupQI->instance;
// make sure we've been sent a valid wrapper
- if (!CheckInstanceAndAddRef(setupQI->instance, peer))
+ if (!CheckInstanceAndAddRef(QIinstance, peer))
{
NS_NOTREACHED("instance wrapper not found");
rv = NS_ERROR_INVALID_ARG;
}
else
{
- rv = setupQI->instance->RealInstance()->QueryInterface(setupQI->iid, (void **) &instance);
- setupQI->instance->Release();
+ rv = QIinstance->RealInstance()->QueryInterface(setupQI->iid, (void **) &instance);
+ QIinstance->Release();
}
break;
}
@@ -3587,7 +3602,7 @@ ipcDConnectService::OnSetup(PRUint32 peer, const DConnectSetup *setup, PRUint32
msg.opcode_minor = 0;
msg.flags = 0;
msg.request_index = setup->request_index;
- msg.instance = wrapper;
+ msg.instance = (DConAddr)(uintptr_t)wrapper;
msg.status = rv;
if (got_exception)
@@ -3619,10 +3634,10 @@ ipcDConnectService::OnSetup(PRUint32 peer, const DConnectSetup *setup, PRUint32
void
ipcDConnectService::OnRelease(PRUint32 peer, const DConnectRelease *release)
{
- LOG(("ipcDConnectService::OnRelease [peer=%u instance=%p]\n",
+ LOG(("ipcDConnectService::OnRelease [peer=%u instance=0x%Lx]\n",
peer, release->instance));
- DConnectInstance *wrapper = release->instance;
+ DConnectInstance *wrapper = (DConnectInstance *)release->instance;
nsAutoLock lock (mLock);
@@ -3654,10 +3669,10 @@ ipcDConnectService::OnRelease(PRUint32 peer, const DConnectRelease *release)
void
ipcDConnectService::OnInvoke(PRUint32 peer, const DConnectInvoke *invoke, PRUint32 opLen)
{
- LOG(("ipcDConnectService::OnInvoke [peer=%u instance=%p method=%u]\n",
+ LOG(("ipcDConnectService::OnInvoke [peer=%u instance=0x%Lx method=%u]\n",
peer, invoke->instance, invoke->method_index));
- DConnectInstance *wrapper = invoke->instance;
+ DConnectInstance *wrapper = (DConnectInstance *)invoke->instance;
ipcMessageReader reader((const PRUint8 *) (invoke + 1), opLen - sizeof(*invoke));
@@ -3730,7 +3745,7 @@ ipcDConnectService::OnInvoke(PRUint32 peer, const DConnectInvoke *invoke, PRUint
if (type.IsInterfacePointer())
{
// grab the DConAddr value temporarily stored in the param
- PtrBits bits = (PtrBits) params[i].val.p;
+ PtrBits bits = (PtrBits)(uintptr_t) params[i].val.p;
// DeserializeInterfaceParamBits needs IID only if it's a remote object
nsID iid;
diff --git a/src/libs/xpcom18a4/ipc/ipcd/extensions/dconnect/src/ipcDConnectService.h b/src/libs/xpcom18a4/ipc/ipcd/extensions/dconnect/src/ipcDConnectService.h
index 8301a282e..aa2bb67f7 100644
--- a/src/libs/xpcom18a4/ipc/ipcd/extensions/dconnect/src/ipcDConnectService.h
+++ b/src/libs/xpcom18a4/ipc/ipcd/extensions/dconnect/src/ipcDConnectService.h
@@ -143,7 +143,7 @@ public:
}
};
-typedef class DConnectInstance* DConAddr;
+typedef PRUint64 DConAddr;
// a key class used to identify DConnectStub objects stored in a hash table
// by a composite of peer ID and DConAddr
@@ -187,7 +187,7 @@ private:
// used elsewhere like nsAtomTable to safely represent the integral value
// of an address.
-typedef unsigned long PtrBits;
+typedef PRUint64 PtrBits;
// bit flag that defines if a PtrBits value represents a remote object
#define PTRBITS_REMOTE_BIT 0x1
diff --git a/src/libs/xpcom18a4/nsprpub/pr/include/prtypes.h b/src/libs/xpcom18a4/nsprpub/pr/include/prtypes.h
index 0627f2b90..32218fd4f 100644
--- a/src/libs/xpcom18a4/nsprpub/pr/include/prtypes.h
+++ b/src/libs/xpcom18a4/nsprpub/pr/include/prtypes.h
@@ -59,6 +59,7 @@
#endif
#include <stddef.h>
+#include <stdint.h>
/***********************************************************************
** MACROS: PR_EXTERN
diff --git a/src/libs/xpcom18a4/xpcom/base/nscore.h b/src/libs/xpcom18a4/xpcom/base/nscore.h
index 48e12531d..be5c3d655 100644
--- a/src/libs/xpcom18a4/xpcom/base/nscore.h
+++ b/src/libs/xpcom18a4/xpcom/base/nscore.h
@@ -430,12 +430,18 @@ typedef PRUint32 nsresult;
*/
#endif
+#ifndef VBOX
/*
* Use these macros to do 64bit safe pointer conversions.
*/
#define NS_PTR_TO_INT32(x) ((char *)(x) - (char *)0)
#define NS_INT32_TO_PTR(x) ((void *)((char *)0 + (x)))
+#else /* VBOX */
+// This stuff is (contrary to the comment) totally 64bit unsafe, so strip
+// it down to only do one direction, which is used by the hashing code.
+#define NS_PTR_TO_INT32(x) ((PRInt32)((char *)(x) - (char *)0))
+#endif /* VBOX */
/*
* These macros allow you to give a hint to the compiler about branch
diff --git a/src/libs/xpcom18a4/xpcom/ds/nsCheapSets.h b/src/libs/xpcom18a4/xpcom/ds/nsCheapSets.h
index e51f146ab..79209ea85 100644
--- a/src/libs/xpcom18a4/xpcom/ds/nsCheapSets.h
+++ b/src/libs/xpcom18a4/xpcom/ds/nsCheapSets.h
@@ -82,7 +82,7 @@ public:
}
private:
- typedef unsigned long PtrBits;
+ typedef PRUint64 PtrBits;
/** Get the hash pointer (or null if we're not a hash) */
nsStringHashSet* GetHash()
@@ -155,7 +155,7 @@ public:
}
private:
- typedef unsigned long PtrBits;
+ typedef PRUint64 PtrBits;
/** Get the hash pointer (or null if we're not a hash) */
nsInt32HashSet* GetHash()
diff --git a/src/libs/xpcom18a4/xpcom/ds/nsVoidArray.h b/src/libs/xpcom18a4/xpcom/ds/nsVoidArray.h
index 90a6260c7..24cf68d7b 100644
--- a/src/libs/xpcom18a4/xpcom/ds/nsVoidArray.h
+++ b/src/libs/xpcom18a4/xpcom/ds/nsVoidArray.h
@@ -375,7 +375,7 @@ public:
PRBool EnumerateBackwards(nsVoidArrayEnumFunc aFunc, void* aData);
private:
- typedef unsigned long PtrBits;
+ typedef PRUint64 PtrBits;
PRBool HasSingleChild() const
{
diff --git a/src/libs/xpcom18a4/xpcom/io/nsFastLoadService.cpp b/src/libs/xpcom18a4/xpcom/io/nsFastLoadService.cpp
index 8176c8970..54892866d 100644
--- a/src/libs/xpcom18a4/xpcom/io/nsFastLoadService.cpp
+++ b/src/libs/xpcom18a4/xpcom/io/nsFastLoadService.cpp
@@ -394,7 +394,11 @@ nsFastLoadService::ComputeChecksum(nsIFile* aFile,
if (NS_FAILED(rv))
return rv;
+#ifndef VBOX
mChecksumTable.Put(&key, NS_INT32_TO_PTR(checksum));
+#else /* VBOX */
+ mChecksumTable.Put(&key, (void *)checksum);
+#endif /* VBOX */
*aChecksum = checksum;
return NS_OK;
}
@@ -417,7 +421,11 @@ nsFastLoadService::CacheChecksum(nsIFile* aFile, nsIObjectOutputStream *aStream)
return rv;
nsCStringKey key(path);
+#ifndef VBOX
mChecksumTable.Put(&key, NS_INT32_TO_PTR(checksum));
+#else /* VBOX */
+ mChecksumTable.Put(&key, (void *)checksum);
+#endif /* VBOX */
return NS_OK;
}
diff --git a/src/recompiler/qemu-lock.h b/src/recompiler/qemu-lock.h
index 774b7a596..671ef2794 100644
--- a/src/recompiler/qemu-lock.h
+++ b/src/recompiler/qemu-lock.h
@@ -74,8 +74,7 @@ DECLINLINE(void) resetlock (spinlock_t *p)
#ifdef VBOX
DECLINLINE(int) testandset (int *p)
{
-
- return ASMAtomicCmpXchgU32((uint32_t volatile *)p, 1, 0);
+ return ASMAtomicCmpXchgU32((volatile uint32_t *)p, 1, 0) ? 0 : 1;
}
#elif defined(__powerpc__)
static inline int testandset (int *p)