Index: trunk/src/VBox/Frontends/VirtualBox4/include/VBoxSelectorWnd.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox4/include/VBoxSelectorWnd.h	(revision 14019)
+++ trunk/src/VBox/Frontends/VirtualBox4/include/VBoxSelectorWnd.h	(revision 14022)
@@ -90,5 +90,5 @@
 
 #ifdef VBOX_GUI_WITH_SYSTRAY
-    void refreshSysTray();
+    void refreshSysTray(bool a_bRetranslate = false);
 #endif
     void refreshVMList();
Index: trunk/src/VBox/Frontends/VirtualBox4/include/VBoxVMListView.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox4/include/VBoxVMListView.h	(revision 14019)
+++ trunk/src/VBox/Frontends/VirtualBox4/include/VBoxVMListView.h	(revision 14022)
@@ -88,5 +88,7 @@
     bool switchTo();
 
+    /* Updates all internal actions depending on the VM's state. */
     void updateActions();
+    void retranslateUi();
 
 private:
Index: trunk/src/VBox/Frontends/VirtualBox4/src/VBoxSelectorWnd.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox4/src/VBoxSelectorWnd.cpp	(revision 14019)
+++ trunk/src/VBox/Frontends/VirtualBox4/src/VBoxSelectorWnd.cpp	(revision 14022)
@@ -1123,5 +1123,5 @@
 
 #ifdef VBOX_GUI_WITH_SYSTRAY
-void VBoxSelectorWnd::refreshSysTray()
+void VBoxSelectorWnd::refreshSysTray(bool a_bRetranslate)
 {
     if (false == QSystemTrayIcon::isSystemTrayAvailable())
@@ -1131,8 +1131,11 @@
     Assert(trayIconMenu);
 
-    trayIcon->setVisible (true);
-    trayIconMenu->clear();
-    trayIconMenu->addAction (trayExitAction);
-    trayIconMenu->addSeparator();
+    if (!a_bRetranslate)
+    {
+        trayIcon->setVisible (true);
+        trayIconMenu->clear();
+        trayIconMenu->addAction (trayExitAction);
+        trayIconMenu->addSeparator();
+    }
 
     VBoxVMItem* pItem = NULL;
@@ -1145,47 +1148,57 @@
     for (int i = 0; i < mVMModel->rowCount(); i++, iCurItemCount++)
     {
-        if (iCurItemCount > 14)     /* 15 machines per sub menu. */
-        {
-            pSubMenu = new QMenu (tr("Next 15 machines ..."));
-            Assert(pSubMenu);
-            pCurMenu->addMenu (pSubMenu);
-            pCurMenu = pSubMenu;
-            iCurItemCount = 0;
-        }
-
         pItem = mVMModel->itemByRow(i);
         Assert(pItem);
 
-        pSubMenu = new QMenu (pItem->name());
-        Assert(pSubMenu);
-        pSubMenu->setIcon (pItem->osIcon());
-        if(pItem->accessible())
-        {
-            pSubMenu->addAction (pItem->vmActionConfig());
-            pSubMenu->addAction (pItem->vmActionDelete());
-            pSubMenu->addSeparator();
-            pSubMenu->addAction (pItem->vmActionStart());
-            pSubMenu->addAction (pItem->vmActionDiscard());
-            if (pItem->running())
+        if (a_bRetranslate)
+        {
+            pItem->retranslateUi();
+            continue;
+        }
+        else
+        {
+            if (iCurItemCount > 14)     /* 15 machines per sub menu. */
             {
+                pSubMenu = new QMenu (tr("Next 15 machines ..."));
+                Assert(pSubMenu);
+                pCurMenu->addMenu (pSubMenu);
+                pCurMenu = pSubMenu;
+                iCurItemCount = 0;
+            }
+
+            pSubMenu = new QMenu (pItem->name());
+            Assert(pSubMenu);
+            pSubMenu->setIcon (pItem->osIcon());
+            if(pItem->accessible())
+            {
+                pSubMenu->addAction (pItem->vmActionConfig());
+                pSubMenu->addAction (pItem->vmActionDelete());
                 pSubMenu->addSeparator();
-                pSubMenu->addAction (pItem->vmActionPause());
+                pSubMenu->addAction (pItem->vmActionStart());
+                pSubMenu->addAction (pItem->vmActionDiscard());
+                if (pItem->running())
+                {
+                    pSubMenu->addSeparator();
+                    pSubMenu->addAction (pItem->vmActionPause());
+                }
+                pSubMenu->addSeparator();
+                pSubMenu->addAction (pItem->vmActionShowLogs());
             }
-            pSubMenu->addSeparator();
-            pSubMenu->addAction (pItem->vmActionShowLogs());
-        }
-        else
-        {
-            pSubMenu->addAction (pItem->vmActionDelete());
-            pSubMenu->addAction (pItem->vmActionRefresh());
-        }
-
-        pCurMenu->addMenu (pSubMenu);
-    }
-
-    trayIconMenu->addSeparator();
-    trayIconMenu->addAction (fileExitAction);
-
-    trayIconMenu->setVisible (true);
+            else
+            {
+                pSubMenu->addAction (pItem->vmActionDelete());
+                pSubMenu->addAction (pItem->vmActionRefresh());
+            }
+
+            pCurMenu->addMenu (pSubMenu);
+        }
+    }
+
+    if (!a_bRetranslate)
+    {
+        trayIconMenu->addSeparator();
+        trayIconMenu->addAction (fileExitAction);
+    }
+
 }
 #endif
@@ -1395,4 +1408,8 @@
     mVMMenu->setTitle (tr ("&Machine"));
     mHelpMenu->setTitle (tr ("&Help"));
+
+#ifdef VBOX_GUI_WITH_SYSTRAY
+    refreshSysTray (true);   /* true = re-translate the UI. */
+#endif
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox4/src/VBoxVMListView.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox4/src/VBoxVMListView.cpp	(revision 14019)
+++ trunk/src/VBox/Frontends/VirtualBox4/src/VBoxVMListView.cpp	(revision 14022)
@@ -186,4 +186,5 @@
 
     updateActions();
+    retranslateUi();
 }
 
@@ -490,7 +491,7 @@
         if (s >= KMachineState_Running)
         {
-            vmStartAction->setText (tr ("S&how"));
+            vmStartAction->setText (VBoxVMListView::tr ("S&how"));
             vmStartAction->setStatusTip (
-                tr ("Switch to the window of the selected virtual machine"));
+                VBoxVMListView::tr ("Switch to the window of the selected virtual machine"));
 
             vmStartAction->setEnabled (canSwitchTo());
@@ -498,7 +499,7 @@
         else
         {
-            vmStartAction->setText (tr ("S&tart"));
+            vmStartAction->setText (VBoxVMListView::tr ("S&tart"));
             vmStartAction->setStatusTip (
-                tr ("Start the selected virtual machine"));
+                VBoxVMListView::tr ("Start the selected virtual machine"));
 
             vmStartAction->setEnabled (!run);
@@ -508,7 +509,7 @@
         if (s == KMachineState_Paused)
         {
-            vmPauseAction->setText (tr ("R&esume"));
+            vmPauseAction->setText (VBoxVMListView::tr ("R&esume"));
             vmPauseAction->setStatusTip (
-                tr ("Resume the execution of the virtual machine"));
+                VBoxVMListView::tr ("Resume the execution of the virtual machine"));
             vmPauseAction->blockSignals (true);
             vmPauseAction->setChecked (true);
@@ -517,7 +518,7 @@
         else
         {
-            vmPauseAction->setText (tr ("&Pause"));
+            vmPauseAction->setText (VBoxVMListView::tr ("&Pause"));
             vmPauseAction->setStatusTip (
-                tr ("Suspend the execution of the virtual machine"));
+                VBoxVMListView::tr ("Suspend the execution of the virtual machine"));
             vmPauseAction->blockSignals (true);
             vmPauseAction->setChecked (false);
@@ -542,7 +543,7 @@
 
         /* change the Start button text accordingly */
-        vmStartAction->setText (tr ("S&tart"));
+        vmStartAction->setText (VBoxVMListView::tr ("S&tart"));
         vmStartAction->setStatusTip (
-            tr ("Start the selected virtual machine"));
+            VBoxVMListView::tr ("Start the selected virtual machine"));
         vmStartAction->setEnabled (false);
 
@@ -550,23 +551,29 @@
         vmShowLogsAction->setEnabled (false);
     }
-
-    vmConfigAction->setText (tr ("&Settings..."));
-    vmConfigAction->setStatusTip (tr ("Configure the selected virtual machine"));
-
-    vmDeleteAction->setText (tr ("&Delete"));
-    vmDeleteAction->setStatusTip (tr ("Delete the selected virtual machine"));
-
-    vmDiscardAction->setText (tr ("D&iscard"));
+}
+
+void VBoxVMItem::retranslateUi ()
+{
+    vmConfigAction->setText (VBoxVMListView::tr ("&Settings..."));
+    vmConfigAction->setStatusTip (VBoxVMListView::tr ("Configure the selected virtual machine"));
+
+    vmDeleteAction->setText (VBoxVMListView::tr ("&Delete"));
+    vmDeleteAction->setStatusTip (VBoxVMListView::tr ("Delete the selected virtual machine"));
+
+    vmDiscardAction->setText (VBoxVMListView::tr ("D&iscard"));
     vmDiscardAction->setStatusTip (
-        tr ("Discard the saved state of the selected virtual machine"));
-
-    vmRefreshAction->setText (tr ("&Refresh"));
+        VBoxVMListView::tr ("Discard the saved state of the selected virtual machine"));
+
+    vmRefreshAction->setText (VBoxVMListView::tr ("&Refresh"));
     vmRefreshAction->setStatusTip (
-        tr ("Refresh the accessibility state of the selected virtual machine"));
-
-    vmShowLogsAction->setText (tr ("Show &Log..."));
-    vmShowLogsAction->setIconText (tr ("Log", "icon text"));
+        VBoxVMListView::tr ("Refresh the accessibility state of the selected virtual machine"));
+
+    vmShowLogsAction->setText (VBoxVMListView::tr ("Show &Log..."));
+    vmShowLogsAction->setIconText (VBoxVMListView::tr ("Log", "icon text"));
     vmShowLogsAction->setStatusTip (
-        tr ("Show the log files of the selected virtual machine"));
+        VBoxVMListView::tr ("Show the log files of the selected virtual machine"));
+
+    /* Update other actions which changes behavior depending the machine's state. */
+    updateActions();
 }
 
