Index: trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts	(revision 2067)
+++ trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts	(revision 2068)
@@ -1653,11 +1653,4 @@
     </message>
     <message>
-        <source>
-Lists all available user interface languages. The effective language
-is written in &lt;b&gt;bold&lt;/b&gt;.
-                                    </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Author(s):</source>
         <translation type="unfinished"></translation>
@@ -1680,4 +1673,17 @@
         <source>&lt;unknown&gt;</source>
         <comment>Author(s)</comment>
+        <translation type="unfinished"></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 type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <comment>Language</comment>
         <translation type="unfinished"></translation>
     </message>
@@ -3871,4 +3877,8 @@
         <translation>Der Wert &apos;%1&apos; des Schlüssels &apos;%2&apos; stimmt nicht mit dem regulären Ausdruck &apos;%3&apos; überein.</translation>
     </message>
+    <message>
+        <source>Cannot delete the key &apos;%1&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
Index: trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts	(revision 2067)
+++ trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts	(revision 2068)
@@ -1641,11 +1641,4 @@
     </message>
     <message>
-        <source>
-Lists all available user interface languages. The effective language
-is written in &lt;b&gt;bold&lt;/b&gt;.
-                                    </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Author(s):</source>
         <translation type="unfinished"></translation>
@@ -1668,4 +1661,17 @@
         <source>&lt;unknown&gt;</source>
         <comment>Author(s)</comment>
+        <translation type="unfinished"></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 type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <comment>Language</comment>
         <translation type="unfinished"></translation>
     </message>
@@ -3777,4 +3783,8 @@
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Cannot delete the key &apos;%1&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
Index: trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts	(revision 2067)
+++ trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts	(revision 2068)
@@ -1641,11 +1641,4 @@
     </message>
     <message>
-        <source>
-Lists all available user interface languages. The effective language
-is written in &lt;b&gt;bold&lt;/b&gt;.
-                                    </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Author(s):</source>
         <translation type="unfinished"></translation>
@@ -1668,4 +1661,17 @@
         <source>&lt;unknown&gt;</source>
         <comment>Author(s)</comment>
+        <translation type="unfinished"></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 type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <comment>Language</comment>
         <translation type="unfinished"></translation>
     </message>
@@ -3777,4 +3783,8 @@
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Cannot delete the key &apos;%1&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
Index: trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts	(revision 2067)
+++ trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts	(revision 2068)
@@ -1649,11 +1649,4 @@
     </message>
     <message>
-        <source>
-Lists all available user interface languages. The effective language
-is written in &lt;b&gt;bold&lt;/b&gt;.
-                                    </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Author(s):</source>
         <translation type="unfinished"></translation>
@@ -1676,4 +1669,17 @@
         <source>&lt;unknown&gt;</source>
         <comment>Author(s)</comment>
+        <translation type="unfinished"></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 type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <comment>Language</comment>
         <translation type="unfinished"></translation>
     </message>
@@ -3813,4 +3819,8 @@
         <translation>关键字 &apos;%2&apos; 的值 &apos;%1&apos; 不能通过正则表达式 &apos;%3&apos; 的强制性检查.</translation>
     </message>
+    <message>
+        <source>Cannot delete the key &apos;%1&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
Index: trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts	(revision 2067)
+++ trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts	(revision 2068)
@@ -1954,11 +1954,4 @@
     </message>
     <message>
-        <source>
-Lists all available user interface languages. The effective language
-is written in &lt;b&gt;bold&lt;/b&gt;.
-                                    </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Author(s):</source>
         <translation type="unfinished"></translation>
@@ -1981,4 +1974,17 @@
         <source>&lt;unknown&gt;</source>
         <comment>Author(s)</comment>
+        <translation type="unfinished"></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 type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <comment>Language</comment>
         <translation type="unfinished"></translation>
     </message>
@@ -4484,4 +4490,8 @@
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Cannot delete the key &apos;%1&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
Index: trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp	(revision 2067)
+++ trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp	(revision 2068)
@@ -1868,26 +1868,24 @@
 /**
  *  Loads the language by language ID.
- *  @param aLang language ID in in form of xx_YY
+ *
+ *  @param aLangId Language ID in in form of xx_YY. QString::null means the
+ *                 system default language.
  */
 /* static */
-void VBoxGlobal::loadLanguage (const QString &aLang)
-{
-    QString langId = aLang.isNull() ?
-        VBoxGlobal::systemLanguageId() : aLang;
-    QString languageFileName = QString::null;
+void VBoxGlobal::loadLanguage (const QString &aLangId)
+{
+    QString langId = aLangId.isNull() ?
+        VBoxGlobal::systemLanguageId() : aLangId;
+    QString languageFileName;
     QString selectedLangId = gVBoxBuiltInLangName;
 
-    if (aLang != gVBoxBuiltInLangName)
+    if (!aLangId.isNull() && aLangId != gVBoxBuiltInLangName)
     {
         QRegExp regExp (gVBoxLangIDRegExp);
         int rule = regExp.search (langId);
         /* this rule should match the language id completely */
-        Assert (!rule);
-        if (rule == -1) return;
-
-        QString mId1part = regExp.cap (2);
-        QString mId2part = regExp.cap (4);
-        /* language localization (second part) should not be empty? */
-        // Assert (!mId2part.isEmpty());
+        AssertReturnVoid (rule == 0);
+
+        QString lang = regExp.cap (2);
 
         QString nlsPath = qApp->applicationDirPath() + gVBoxLangSubDir;
@@ -1899,12 +1897,12 @@
             selectedLangId = langId;
         }
-        else if (nlsDir.exists (gVBoxLangFileBase + mId1part + gVBoxLangFileExt))
-        {
-            languageFileName = nlsDir.absFilePath (gVBoxLangFileBase + mId1part +
+        else if (nlsDir.exists (gVBoxLangFileBase + lang + gVBoxLangFileExt))
+        {
+            languageFileName = nlsDir.absFilePath (gVBoxLangFileBase + lang +
                                                    gVBoxLangFileExt);
-            selectedLangId = mId1part;
-        }
-
-        if (sTranslator && languageFileName.isNull())
+            selectedLangId = lang;
+        }
+
+        if (languageFileName.isNull())
         {
             vboxProblem().cannotFindLanguage (langId, nlsPath);
@@ -1924,5 +1922,4 @@
     if (sTranslator)
     {
-        /* an empty file name means built-in English*/
         if (selectedLangId != gVBoxBuiltInLangName)
         {
Index: trunk/src/VBox/Frontends/VirtualBox/ui/VBoxGlobalSettingsDlg.ui
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/ui/VBoxGlobalSettingsDlg.ui	(revision 2067)
+++ trunk/src/VBox/Frontends/VirtualBox/ui/VBoxGlobalSettingsDlg.ui	(revision 2068)
@@ -813,6 +813,7 @@
                                 <property name="whatsThis" stdset="0">
                                     <string>
-Lists all available user interface languages. The effective language
-is written in &lt;b&gt;bold&lt;/b&gt;.
+Lists all available user interface languages. The effective language is
+written in &lt;b&gt;bold&lt;/b&gt;. Select &lt;i&gt;Default&lt;/i&gt; to reset
+to the system default language.
                                     </string>
                                 </property>
Index: trunk/src/VBox/Frontends/VirtualBox/ui/VBoxGlobalSettingsDlg.ui.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/ui/VBoxGlobalSettingsDlg.ui.h	(revision 2067)
+++ trunk/src/VBox/Frontends/VirtualBox/ui/VBoxGlobalSettingsDlg.ui.h	(revision 2068)
@@ -90,4 +90,6 @@
         : QListViewItem (aParent), mBuiltIn (aBuiltIn), mInvalid (false)
     {
+        Assert (!aId.isEmpty());
+
         QTranslatorMessage transMes;
 
@@ -143,4 +145,6 @@
         : QListViewItem (aParent), mBuiltIn (false), mInvalid (true)
     {
+        Assert (!aId.isEmpty());
+
         setText (0, QString ("<%1>").arg (aId));
         setText (1, aId);
@@ -149,16 +153,30 @@
     }
 
+    /* Constructs an item for the default language ID (column 1 will be set
+     * to QString::null) */
+    LanguageItem (QListView *aParent)
+        : QListViewItem (aParent), mBuiltIn (false), mInvalid (false)
+    {
+        setText (0, VBoxGlobalSettingsDlg::tr ("Default", "Language"));
+        setText (1, QString::null);
+        setText (2, QString::null);
+        setText (3, QString::null);
+    }
+
     int rtti() const { return TypeId; }
 
     int compare (QListViewItem *aItem, int aColumn, bool aAscending) const
     {
-        QString thisValue = text (1);
-        QString thatValue = aItem->text (1);
-        if (thisValue == gVBoxBuiltInLangName)
+        QString thisId = text (1);
+        QString thatId = aItem->text (1);
+        if (thisId.isNull())
             return -1;
-        else if (thatValue == gVBoxBuiltInLangName)
+        if (thatId.isNull())
             return 1;
-        else
-            return QListViewItem::compare (aItem, aColumn, aAscending);
+        if (mBuiltIn)
+            return -1;
+        if (aItem->rtti() == TypeId && ((LanguageItem *) aItem)->mBuiltIn)
+            return 1;
+        return QListViewItem::compare (aItem, aColumn, aAscending);
     }
 
@@ -362,4 +380,6 @@
                                           QDir::Files);
     QTranslator translator;
+    /* add the default language */
+    new LanguageItem (lvLanguages);
     /* add the built-in language */
     new LanguageItem (lvLanguages, translator, gVBoxBuiltInLangName, true /* built-in */);
@@ -565,6 +585,4 @@
 
     QString langId = gs.languageId();
-    if (langId.isNull())
-        langId = VBoxGlobal::languageId();
     QListViewItem *item = lvLanguages->findItem (langId, 1);
     if (!item)
@@ -643,8 +661,8 @@
 
     QListViewItem *selItem = lvLanguages->selectedItem();
+    Assert (selItem);
     if (mLanguageChanged && selItem)
     {
-        gs.setLanguageId (selItem->text (1) == VBoxGlobal::systemLanguageId() ?
-                          QString::null : selItem->text (1));
+        gs.setLanguageId (selItem->text (1));
         VBoxGlobal::loadLanguage (selItem->text (1));
     }
@@ -914,8 +932,15 @@
 void VBoxGlobalSettingsDlg::lvLanguages_currentChanged (QListViewItem *aItem)
 {
+    Assert (aItem);
     if (!aItem) return;
 
+    /* disable labels for the Default language item */
+    bool enabled = !aItem->text (1).isNull();
+
+    tlLangName->setEnabled (enabled);
+    tlAuthorName->setEnabled (enabled);
     tlLangData->setText (aItem->text (2));
     tlAuthorData->setText (aItem->text (3));
+
     mLanguageChanged = true;
 }
