Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItem.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItem.cpp	(revision 82917)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItem.cpp	(revision 82931)
@@ -17,5 +17,4 @@
 
 /* Qt includes: */
-#include <QApplication>
 #include <QFileInfo>
 #include <QIcon>
@@ -61,61 +60,4 @@
 }
 
-QString UIVirtualMachineItem::machineStateName() const
-{
-    return   m_fAccessible
-           ? gpConverter->toString(m_enmMachineState)
-           : QApplication::translate("UIVMListView", "Inaccessible");
-}
-
-QString UIVirtualMachineItem::sessionStateName() const
-{
-    return   m_fAccessible
-           ? gpConverter->toString(m_enmSessionState)
-           : QApplication::translate("UIVMListView", "Inaccessible");
-}
-
-QIcon UIVirtualMachineItem::machineStateIcon() const
-{
-    return   m_fAccessible
-           ? gpConverter->toIcon(m_enmMachineState)
-           : gpConverter->toIcon(KMachineState_Aborted);
-}
-
-QString UIVirtualMachineItem::toolTipText() const
-{
-    QString strToolTip;
-
-    const QString strDateTime = (m_lastStateChange.date() == QDate::currentDate())
-                              ? m_lastStateChange.time().toString(Qt::LocalDate)
-                              : m_lastStateChange.toString(Qt::LocalDate);
-
-    if (m_fAccessible)
-    {
-        strToolTip = QString("<b>%1</b>").arg(m_strName);
-        if (!m_strSnapshotName.isNull())
-            strToolTip += QString(" (%1)").arg(m_strSnapshotName);
-        strToolTip = QApplication::translate("UIVMListView",
-                                             "<nobr>%1<br></nobr>"
-                                             "<nobr>%2 since %3</nobr><br>"
-                                             "<nobr>Session %4</nobr>",
-                                             "VM tooltip (name, last state change, session state)")
-                                             .arg(strToolTip)
-                                             .arg(gpConverter->toString(m_enmMachineState))
-                                             .arg(strDateTime)
-                                             .arg(gpConverter->toString(m_enmSessionState).toLower());
-    }
-    else
-    {
-        strToolTip = QApplication::translate("UIVMListView",
-                                             "<nobr><b>%1</b><br></nobr>"
-                                             "<nobr>Inaccessible since %2</nobr>",
-                                             "Inaccessible VM tooltip (name, last state change)")
-                                             .arg(m_strSettingsFile)
-                                             .arg(strDateTime);
-    }
-
-    return strToolTip;
-}
-
 void UIVirtualMachineItem::recache()
 {
@@ -144,5 +86,8 @@
         /* Determine VM states: */
         m_enmMachineState = m_comMachine.GetState();
+        m_strMachineStateName = gpConverter->toString(m_enmMachineState);
+        m_machineStateIcon = gpConverter->toIcon(m_enmMachineState);
         m_enmSessionState = m_comMachine.GetSessionState();
+        m_strSessionStateName = gpConverter->toString(m_enmSessionState);
 
         /* Determine configuration access level: */
@@ -191,4 +136,5 @@
         /* Reset VM states: */
         m_enmMachineState = KMachineState_Null;
+        m_machineStateIcon = gpConverter->toIcon(KMachineState_Aborted);
         m_enmSessionState = KSessionState_Null;
 
@@ -205,4 +151,7 @@
     /* Recache item pixmap: */
     recachePixmap();
+
+    /* Retranslate finally: */
+    retranslateUi();
 }
 
@@ -228,5 +177,5 @@
 bool UIVirtualMachineItem::canSwitchTo() const
 {
-    return const_cast <CMachine &>(m_comMachine).CanShowConsoleWindow();
+    return const_cast <CMachine&>(m_comMachine).CanShowConsoleWindow();
 }
 
@@ -354,4 +303,43 @@
 }
 
+void UIVirtualMachineItem::retranslateUi()
+{
+    /* This is used in tool-tip generation: */
+    const QString strDateTime = (m_lastStateChange.date() == QDate::currentDate())
+                              ? m_lastStateChange.time().toString(Qt::LocalDate)
+                              : m_lastStateChange.toString(Qt::LocalDate);
+
+    /* If machine is accessible: */
+    if (m_fAccessible)
+    {
+        /* Update tool-tip: */
+        m_strToolTipText = QString("<b>%1</b>").arg(m_strName);
+        if (!m_strSnapshotName.isNull())
+            m_strToolTipText += QString(" (%1)").arg(m_strSnapshotName);
+        m_strToolTipText = tr("<nobr>%1<br></nobr>"
+                              "<nobr>%2 since %3</nobr><br>"
+                              "<nobr>Session %4</nobr>",
+                              "VM tooltip (name, last state change, session state)")
+                              .arg(m_strToolTipText)
+                              .arg(gpConverter->toString(m_enmMachineState))
+                              .arg(strDateTime)
+                              .arg(gpConverter->toString(m_enmSessionState).toLower());
+    }
+    /* Otherwise: */
+    else
+    {
+        /* Update tool-tip: */
+        m_strToolTipText = tr("<nobr><b>%1</b><br></nobr>"
+                              "<nobr>Inaccessible since %2</nobr>",
+                              "Inaccessible VM tooltip (name, last state change)")
+                              .arg(m_strSettingsFile)
+                              .arg(strDateTime);
+
+        /* We have our own translation for Null states: */
+        m_strMachineStateName = tr("Inaccessible");
+        m_strSessionStateName = tr("Inaccessible");
+    }
+}
+
 
 /*********************************************************************************************************************************
Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItem.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItem.h	(revision 82917)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItem.h	(revision 82931)
@@ -24,8 +24,10 @@
 /* Qt includes: */
 #include <QDateTime>
+#include <QIcon>
 #include <QMimeData>
 #include <QPixmap>
 
 /* GUI includes: */
+#include "QIWithRetranslateUI.h"
 #include "UISettingsDefs.h"
 
@@ -38,8 +40,9 @@
 using namespace UISettingsDefs;
 
-/** Virtual Machine item interface.
-  * A wrapper caching data about local VM. */
-class UIVirtualMachineItem
+/** Virtual Machine item interface. A wrapper caching VM data. */
+class UIVirtualMachineItem : public QIWithRetranslateUI3<QObject>
 {
+    Q_OBJECT;
+
 public:
 
@@ -55,4 +58,12 @@
     /** @} */
 
+    /** @name VM access attributes.
+      * @{ */
+        /** Returns whether VM was accessible. */
+        bool accessible() const { return m_fAccessible; }
+        /** Returns the last cached access error. */
+        const CVirtualBoxErrorInfo &accessError() const { return m_comAccessError; }
+    /** @} */
+
     /** @name Basic attributes.
       * @{ */
@@ -61,16 +72,4 @@
         /** Returns cached machine settings file name. */
         QString settingsFile() const { return m_strSettingsFile; }
-    /** @} */
-
-    /** @name VM access attributes.
-      * @{ */
-        /** Returns whether VM was accessible. */
-        bool accessible() const { return m_fAccessible; }
-        /** Returns the last cached access error. */
-        const CVirtualBoxErrorInfo &accessError() const { return m_comAccessError; }
-    /** @} */
-
-    /** @name Advanced attributes.
-      * @{ */
         /** Returns cached machine name. */
         QString name() const { return m_strName; }
@@ -96,12 +95,14 @@
         /** Returns cached machine state. */
         KMachineState machineState() const { return m_enmMachineState; }
+        /** Returns cached machine state name. */
+        QString machineStateName() const { return m_strMachineStateName; }
+        /** Returns cached machine state icon. */
+        QIcon machineStateIcon() const { return m_machineStateIcon; }
+
         /** Returns cached session state. */
         KSessionState sessionState() const { return m_enmSessionState; }
-        /** Returns cached machine state name. */
-        QString machineStateName() const;
         /** Returns cached session state name. */
-        QString sessionStateName() const;
-        /** Returns cached machine state icon. */
-        QIcon machineStateIcon() const;
+        QString sessionStateName() const { return m_strSessionStateName; }
+
         /** Returns cached configuration access level. */
         ConfigurationAccessLevel configurationAccessLevel() const { return m_enmConfigurationAccessLevel; }
@@ -111,5 +112,5 @@
       * @{ */
         /** Returns cached machine tool-tip. */
-        QString toolTipText() const;
+        QString toolTipText() const { return m_strToolTipText; }
     /** @} */
 
@@ -157,4 +158,12 @@
     /** @} */
 
+protected:
+
+    /** @name Event handling.
+      * @{ */
+        /** Handles translation event. */
+        virtual void retranslateUi() /* override */;
+    /** @} */
+
 private:
 
@@ -163,12 +172,4 @@
         /** Holds cached machine object reference. */
         CMachine  m_comMachine;
-    /** @} */
-
-    /** @name Basic attributes.
-      * @{ */
-        /** Holds cached machine id. */
-        QUuid    m_uId;
-        /** Holds cached machine settings file name. */
-        QString  m_strSettingsFile;
     /** @} */
 
@@ -181,6 +182,10 @@
     /** @} */
 
-    /** @name Advanced attributes.
-      * @{ */
+    /** @name Basic attributes.
+      * @{ */
+        /** Holds cached machine id. */
+        QUuid        m_uId;
+        /** Holds cached machine settings file name. */
+        QString      m_strSettingsFile;
         /** Holds cached machine name. */
         QString      m_strName;
@@ -209,8 +214,22 @@
         /** Holds cached machine state. */
         KMachineState             m_enmMachineState;
+        /** Holds cached machine state name. */
+        QString                   m_strMachineStateName;
+        /** Holds cached machine state name. */
+        QIcon                     m_machineStateIcon;
+
         /** Holds cached session state. */
         KSessionState             m_enmSessionState;
+        /** Holds cached session state name. */
+        QString                   m_strSessionStateName;
+
         /** Holds configuration access level. */
         ConfigurationAccessLevel  m_enmConfigurationAccessLevel;
+    /** @} */
+
+    /** @name Visual attributes.
+      * @{ */
+        /** Holds cached machine tool-tip. */
+        QString  m_strToolTipText;
     /** @} */
 
