Alexander Wels has uploaded a new change for review.

Change subject: userportal,webadmin: Customized parameterized messages
......................................................................

userportal,webadmin: Customized parameterized messages

- Implemented DynamicMessages to facilitate the use of
parameterized messages in branding packages.
- Renamed DynamicConstants to DynamicMessages.
- Added {0} to version about.

Change-Id: Iad253128d6bb48b0be93bb580803101b7e85bcea
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=816173
Signed-off-by: Alexander Wels <aw...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java
D 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/DynamicConstants.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/DynamicMessages.java
D 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/ApplicationDynamicConstants.java
A 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/ApplicationDynamicMessages.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/login/view/LoginPopupView.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/AboutPopupView.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/AboutPopupView.ui.xml
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/HeaderView.ui.xml
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/system/ApplicationInit.java
D 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationDynamicConstants.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationDynamicMessages.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/login/view/LoginPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/HeaderPresenterWidget.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/AboutPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/AboutPopupView.ui.xml
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/HeaderView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/system/ApplicationInit.java
M packaging/branding/ovirt.brand/ovirt_messages.properties
21 files changed, 312 insertions(+), 186 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/38/15838/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java
index ef8fed2..85d3630 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java
@@ -12,7 +12,7 @@
 import org.ovirt.engine.ui.common.system.ErrorPopupManagerImpl;
 import org.ovirt.engine.ui.common.system.LockInteractionManager;
 import org.ovirt.engine.ui.common.uicommon.ClientAgentType;
-import org.ovirt.engine.ui.common.utils.DynamicConstants;
+import org.ovirt.engine.ui.common.utils.DynamicMessages;
 import org.ovirt.engine.ui.uicommonweb.ErrorPopupManager;
 
 import com.google.gwt.event.shared.EventBus;
@@ -47,12 +47,12 @@
             Class<? extends CommonApplicationMessages> messages,
             Class<? extends CommonApplicationResources> resources,
             Class<? extends CommonApplicationTemplates> templates,
-            Class<? extends DynamicConstants> dynamicConstants) {
+            Class<? extends DynamicMessages> dynamicConstants) {
         
bind(CommonApplicationConstants.class).to(constants).in(Singleton.class);
         bind(CommonApplicationMessages.class).to(messages).in(Singleton.class);
         
bind(CommonApplicationResources.class).to(resources).in(Singleton.class);
         
bind(CommonApplicationTemplates.class).to(templates).in(Singleton.class);
-        bind(DynamicConstants.class).to(dynamicConstants).in(Singleton.class);
+        bind(DynamicMessages.class).to(dynamicConstants).in(Singleton.class);
     }
 
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/DynamicConstants.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/DynamicConstants.java
deleted file mode 100644
index 96d6512..0000000
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/DynamicConstants.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package org.ovirt.engine.ui.common.utils;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.MissingResourceException;
-
-import com.google.gwt.i18n.client.Dictionary;
-
-/**
- * Contains dynamic constants available to the application.
- * <p>
- * This class defines all supported constant keys as well as corresponding 
value accessor methods. Subclasses should
- * register sensible fallback values for supported constant keys.
- */
-public class DynamicConstants {
-
-    public enum DynamicConstantKey {
-
-        APPLICATION_TITLE("application_title"), //$NON-NLS-1$
-        VERSION_ABOUT("version_about"), //$NON-NLS-1$
-        LOGIN_HEADER_LABEL("login_header_label"), //$NON-NLS-1$
-        MAIN_HEADER_LABEL("main_header_label"), //$NON-NLS-1$
-        COPY_RIGHT_NOTICE("copy_right_notice"), //$NON-NLS-1$
-        DOC("doc"); //$NON-NLS-1$
-
-        private final String value;
-
-        DynamicConstantKey(String value) {
-            this.value = value;
-        }
-
-        public String getValue() {
-            return value;
-        }
-
-    }
-
-    /**
-     * The name under which the dictionary will appear in the host page.
-     */
-    private static final String MESSAGES_DICTIONARY_NAME = "messages"; 
//$NON-NLS-1$
-
-    private Dictionary dictionary;
-
-    private final Map<DynamicConstantKey, String> fallbackValues =
-            new HashMap<DynamicConstants.DynamicConstantKey, String>();
-
-    public DynamicConstants() {
-        try {
-            dictionary = Dictionary.getDictionary(MESSAGES_DICTIONARY_NAME);
-        } catch (MissingResourceException mre) {
-            // Do nothing, the dictionary doesn't exist.
-        }
-    }
-
-    protected void addFallback(DynamicConstantKey key, String value) {
-        fallbackValues.put(key, value);
-    }
-
-    protected String getString(DynamicConstantKey key) {
-        String fallback = fallbackValues.get(key);
-        if (fallback == null) {
-            // Use empty string for missing fallback value.
-            fallback = ""; //$NON-NLS-1$
-        }
-
-        String result = fallback;
-
-        try {
-            if (dictionary != null) {
-                result = dictionary.get(key.getValue());
-            }
-        } catch (MissingResourceException mre) {
-            // Do nothing, the key doesn't exist.
-        }
-
-        return result;
-    }
-
-    public final String applicationTitle() {
-        return getString(DynamicConstantKey.APPLICATION_TITLE);
-    }
-
-    public final String ovirtVersionAbout() {
-        return getString(DynamicConstantKey.VERSION_ABOUT);
-    }
-
-    public final String loginHeaderLabel() {
-        return getString(DynamicConstantKey.LOGIN_HEADER_LABEL);
-    }
-
-    public final String mainHeaderLabel() {
-        return getString(DynamicConstantKey.MAIN_HEADER_LABEL);
-    }
-
-    public final String copyRightNotice() {
-        return getString(DynamicConstantKey.COPY_RIGHT_NOTICE);
-    }
-
-    public final String engineWebAdminDoc() {
-        return getString(DynamicConstantKey.DOC);
-    }
-
-}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/DynamicMessages.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/DynamicMessages.java
new file mode 100644
index 0000000..cbe991b
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/DynamicMessages.java
@@ -0,0 +1,227 @@
+package org.ovirt.engine.ui.common.utils;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.google.gwt.i18n.client.Dictionary;
+import com.google.gwt.regexp.shared.MatchResult;
+import com.google.gwt.regexp.shared.RegExp;
+
+/**
+ * Contains dynamic constants available to the application.
+ * <p>
+ * This class defines all supported constant keys as well as corresponding 
value accessor methods. Subclasses should
+ * register sensible fallback values for supported constant keys.
+ */
+public class DynamicMessages {
+
+    /**
+     * This class defines the keys used to look up the messages from the 
{@code Dictionary}.
+     */
+    public enum DynamicMessageKey {
+
+        APPLICATION_TITLE("application_title"), //$NON-NLS-1$
+        VERSION_ABOUT("version_about"), //$NON-NLS-1$
+        LOGIN_HEADER_LABEL("login_header_label"), //$NON-NLS-1$
+        MAIN_HEADER_LABEL("main_header_label"), //$NON-NLS-1$
+        COPY_RIGHT_NOTICE("copy_right_notice"), //$NON-NLS-1$
+        DOC("doc"); //$NON-NLS-1$
+
+        private final String value;
+
+        DynamicMessageKey(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+    }
+
+    /**
+     * The name under which the dictionary will appear in the host page.
+     */
+    private static final String MESSAGES_DICTIONARY_NAME = "messages"; 
//$NON-NLS-1$
+
+    /**
+     * The pattern to use to locate place holders.
+     */
+    private static final RegExp PLACE_HOLDER_PATTERN = 
RegExp.compile("\\{(\\d+)\\}", "g"); //$NON-NLS-1$ //$NON-NLS-2$
+
+    /**
+     * The {@code Dictionary} that contains the messages from the host page.
+     */
+    Dictionary dictionary;
+
+    /**
+     * The {@code Map} containing the fallback values in case the message is 
not found in the dictionary.
+     */
+    private final Map<DynamicMessageKey, String> fallbackValues =
+            new HashMap<DynamicMessages.DynamicMessageKey, String>();
+
+    /**
+     * Default constructor.
+     */
+    public DynamicMessages() {
+        this(Dictionary.getDictionary(MESSAGES_DICTIONARY_NAME));
+    }
+
+    DynamicMessages(final Dictionary dictionary) {
+        this.dictionary = dictionary;
+    }
+    /**
+     * Add the fall back for a particular key to the fall back map.
+     * @param key The key for the fall back.
+     * @param value The fall back message.
+     */
+    protected void addFallback(final DynamicMessageKey key, final String 
value) {
+        fallbackValues.put(key, value);
+    }
+
+    /**
+     * Get the string based on the key. If the {@code Dictionary} doesn't 
contain the value associated with the
+     * key, then return the fall back value.
+     * @param key The key
+     * @return The message, either from the {@code Dictionary} or the fall 
back value.
+     */
+    protected String getString(final DynamicMessageKey key) {
+        String fallback = fallbackValues.get(key);
+        if (fallback == null) {
+            // Use empty string for missing fallback value.
+            fallback = ""; //$NON-NLS-1$
+        }
+
+        String result = fallback;
+
+        try {
+            if (dictionary != null) {
+                result = dictionary.get(key.getValue());
+            }
+        } catch (MissingResourceException mre) {
+            // Do nothing, the key doesn't exist.
+        }
+
+        return result;
+    }
+
+    /**
+     * Format the message associated with the key using the passed in 
parameters.
+     *
+     * The body format must conform to the following standard:
+     * <ol>
+     *   <li>The place holders must follow the following format regex \{\d\} 
for instance {0}</li>
+     *   <li>The place holder sequence must start at 0 and be continuous so 
{0}, {1}, {2} is valid but {0}, {2}
+     *   is not</li>
+     *   <li>One can have the same place holder more than once, so {0}, {0} 
valid</li>
+     *   <li>The order is not important, so {2},{0},{1} is valid</li>
+     * </ol>
+     * One can pass more parameters than place holders in the message body, 
any extra parameters will simply be
+     * ignored.
+     * @param key The key to use to lookup the message body.
+     * @param args 0 or more arguments to replace in the message body.
+     * @return The formatted string.
+     * throws IllegalArgumentException if the message body does not conform to 
the above standard, or if there are
+     * less arguments than place holders in the body.
+     */
+    protected String formatString(final DynamicMessageKey key, final String 
...args) {
+        String message = getString(key);
+        if (args != null) {
+            List<Integer> placeHolderList = getPlaceHolderList(message);
+            if (placeHolderList.size() > args.length) {
+                throw new IllegalArgumentException("Number of place holders 
does " //$NON-NLS-1$
+                        + "not match number of arguments"); //$NON-NLS-1$
+            }
+            for (int i = 0; i < args.length; i++) {
+                message = message.replaceAll("\\{" + i + "\\}", args[i]); 
//$NON-NLS-1$ //$NON-NLS-2$
+            }
+        }
+        return message;
+    }
+
+    /**
+     * Parse a message body and return a list of integers, one for each place 
holder number in the body. For instance
+     * if the message is 'One {0} over the {1} nest {0}' then the list will be 
[0,1]. Duplicates are turned into a
+     * single element in the resulting list.
+     * @param message The message body to parse.
+     * @return A list of integers matching the numbers of the place holders.
+     */
+    protected List<Integer> getPlaceHolderList(final String message) {
+        MatchResult matcher;
+        Set<Integer> matchedPlaceHolders = new HashSet<Integer>();
+        for (matcher = PLACE_HOLDER_PATTERN.exec(message); matcher != null;
+                matcher = PLACE_HOLDER_PATTERN.exec(message)) {
+            matchedPlaceHolders.add(Integer.valueOf(matcher.getGroup(1)));
+        }
+        List<Integer> result = new ArrayList<Integer>(matchedPlaceHolders);
+        Collections.sort(result);
+        for (int i = 0; i < result.size(); i++) {
+            if (i != result.get(i)) {
+                throw new IllegalArgumentException("Invalid index of place 
holder found"); //$NON-NLS-1$
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Get the application title using the {@code Dictionary} in the host 
page. With a fall back to the standard
+     * GWT Constant.
+     * @return The application title string.
+     */
+    public final String applicationTitle() {
+        return getString(DynamicMessageKey.APPLICATION_TITLE);
+    }
+
+    /**
+     * Get the application version message using the {@code Dictionary} in the 
host page. With a fall back to
+     * the standard GWT Message.
+     * @param version The version string to use to replace the place holder in 
the message.
+     * @return The version about message
+     */
+    public final String ovirtVersionAbout(final String version) {
+        return formatString(DynamicMessageKey.VERSION_ABOUT, version);
+    }
+
+    /**
+     * Get the login header label using the {@code Dictionary} in the host 
page. With a fall back to the standard
+     * GWT Constant.
+     * @return The login header label.
+     */
+    public final String loginHeaderLabel() {
+        return getString(DynamicMessageKey.LOGIN_HEADER_LABEL);
+    }
+
+    /**
+     * Get the main header label using the {@code Dictionary} in the host 
page. With a fall back to the standard
+     * GWT Constant.
+     * @return The main header label.
+     */
+    public final String mainHeaderLabel() {
+        return getString(DynamicMessageKey.MAIN_HEADER_LABEL);
+    }
+
+    /**
+     * Get the copy right notice using the {@code Dictionary} in the host 
page. With a fall back to the standard
+     * GWT Constant.
+     * @return The copy right notice string.
+     */
+    public final String copyRightNotice() {
+        return getString(DynamicMessageKey.COPY_RIGHT_NOTICE);
+    }
+
+    /**
+     * Get the web admin doc message using the {@code Dictionary} in the host 
page. With a fall back to the standard
+     * GWT Constant.
+     * @return The web admin documentation message.
+     */
+    public final String engineWebAdminDoc() {
+        return getString(DynamicMessageKey.DOC);
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/ApplicationDynamicConstants.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/ApplicationDynamicConstants.java
deleted file mode 100644
index e8c5ff7..0000000
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/ApplicationDynamicConstants.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.ovirt.engine.ui.userportal;
-
-import org.ovirt.engine.ui.common.utils.DynamicConstants;
-
-import com.google.gwt.core.client.GWT;
-
-public class ApplicationDynamicConstants extends DynamicConstants {
-
-    private static final ApplicationConstants constants = 
GWT.create(ApplicationConstants.class);
-
-    public ApplicationDynamicConstants() {
-        super();
-        addFallback(DynamicConstantKey.APPLICATION_TITLE, 
constants.applicationTitle());
-        addFallback(DynamicConstantKey.VERSION_ABOUT, 
constants.ovirtVersionAbout());
-        addFallback(DynamicConstantKey.LOGIN_HEADER_LABEL, 
constants.loginHeaderLabel());
-        addFallback(DynamicConstantKey.MAIN_HEADER_LABEL, 
constants.mainHeaderLabel());
-        addFallback(DynamicConstantKey.COPY_RIGHT_NOTICE, 
constants.copyRightNotice());
-    }
-
-}
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/ApplicationDynamicMessages.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/ApplicationDynamicMessages.java
new file mode 100644
index 0000000..063b33c
--- /dev/null
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/ApplicationDynamicMessages.java
@@ -0,0 +1,20 @@
+package org.ovirt.engine.ui.userportal;
+
+import org.ovirt.engine.ui.common.utils.DynamicMessages;
+
+import com.google.gwt.core.client.GWT;
+
+public class ApplicationDynamicMessages extends DynamicMessages {
+
+    private static final ApplicationConstants constants = 
GWT.create(ApplicationConstants.class);
+
+    public ApplicationDynamicMessages() {
+        super();
+        addFallback(DynamicMessageKey.APPLICATION_TITLE, 
constants.applicationTitle());
+        addFallback(DynamicMessageKey.VERSION_ABOUT, 
constants.ovirtVersionAbout());
+        addFallback(DynamicMessageKey.LOGIN_HEADER_LABEL, 
constants.loginHeaderLabel());
+        addFallback(DynamicMessageKey.MAIN_HEADER_LABEL, 
constants.mainHeaderLabel());
+        addFallback(DynamicMessageKey.COPY_RIGHT_NOTICE, 
constants.copyRightNotice());
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
index 71582cce..a801278 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
@@ -4,7 +4,7 @@
 import org.ovirt.engine.ui.common.section.DefaultLoginSectionPlace;
 import org.ovirt.engine.ui.common.section.DefaultMainSectionPlace;
 import org.ovirt.engine.ui.userportal.ApplicationConstants;
-import org.ovirt.engine.ui.userportal.ApplicationDynamicConstants;
+import org.ovirt.engine.ui.userportal.ApplicationDynamicMessages;
 import org.ovirt.engine.ui.userportal.ApplicationMessages;
 import org.ovirt.engine.ui.userportal.ApplicationResources;
 import org.ovirt.engine.ui.userportal.ApplicationResourcesWithLookup;
@@ -45,7 +45,7 @@
                 .to(ApplicationPlaces.DEFAULT_MAIN_SECTION_EXTENDED_PLACE);
 
         bindResourceConfiguration(ApplicationConstants.class, 
ApplicationMessages.class,
-                ApplicationResources.class, ApplicationTemplates.class, 
ApplicationDynamicConstants.class);
+                ApplicationResources.class, ApplicationTemplates.class, 
ApplicationDynamicMessages.class);
         bind(ApplicationResourcesWithLookup.class).in(Singleton.class);
     }
 
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/login/view/LoginPopupView.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/login/view/LoginPopupView.java
index 31e7600..7406d34 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/login/view/LoginPopupView.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/login/view/LoginPopupView.java
@@ -15,7 +15,7 @@
 import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor;
 import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalLoginModel;
 import org.ovirt.engine.ui.userportal.ApplicationConstants;
-import org.ovirt.engine.ui.userportal.ApplicationDynamicConstants;
+import org.ovirt.engine.ui.userportal.ApplicationDynamicMessages;
 import org.ovirt.engine.ui.userportal.ApplicationMessages;
 import org.ovirt.engine.ui.userportal.ApplicationResources;
 import 
org.ovirt.engine.ui.userportal.section.login.presenter.LoginPopupPresenterWidget;
@@ -101,7 +101,7 @@
             ApplicationResources resources,
             ApplicationConstants constants,
             ApplicationMessages messages,
-            ApplicationDynamicConstants dynamicConstants) {
+            ApplicationDynamicMessages dynamicConstants) {
         super(eventBus, resources, clientAgentType);
 
         // We need this code because resetAndFocus is called when 
userNameEditor is Disabled
@@ -130,7 +130,7 @@
     }
 
     void localize(ApplicationConstants constants,
-            ApplicationDynamicConstants dynamicConstants) {
+            ApplicationDynamicMessages dynamicConstants) {
         headerLabel.setText(dynamicConstants.loginHeaderLabel());
         userNameLabel.setText(constants.loginFormUserNameLabel());
         passwordLabel.setText(constants.loginFormPasswordLabel());
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/AboutPopupView.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/AboutPopupView.java
index 6b27600..d5fd75d 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/AboutPopupView.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/AboutPopupView.java
@@ -5,7 +5,7 @@
 import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogButton;
 import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel;
 import org.ovirt.engine.ui.userportal.ApplicationConstants;
-import org.ovirt.engine.ui.userportal.ApplicationDynamicConstants;
+import org.ovirt.engine.ui.userportal.ApplicationDynamicMessages;
 import org.ovirt.engine.ui.userportal.ApplicationResources;
 import 
org.ovirt.engine.ui.userportal.section.main.presenter.AboutPopupPresenterWidget;
 
@@ -24,6 +24,8 @@
         ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
     }
 
+    private final ApplicationDynamicMessages messages;
+
     @UiField
     Label titleLabel;
 
@@ -39,22 +41,23 @@
     @Inject
     public AboutPopupView(EventBus eventBus, ApplicationResources resources,
             ApplicationConstants constants,
-            ApplicationDynamicConstants dynamicConstants) {
+            ApplicationDynamicMessages dynamicMessages) {
         super(eventBus, resources);
         initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
-        localize(constants, dynamicConstants);
+        messages = dynamicMessages;
+        localize(constants, dynamicMessages);
     }
 
     void localize(ApplicationConstants constants,
-            ApplicationDynamicConstants dynamicConstants) {
+            ApplicationDynamicMessages dynamicMessages) {
         titleLabel.setText(constants.aboutPopupCaption());
         closeButton.setText(constants.closeButtonLabel());
-        copyrightNotice.setText(dynamicConstants.copyRightNotice());
+        copyrightNotice.setText(dynamicMessages.copyRightNotice());
     }
 
     @Override
     public void setVersion(String text) {
-        versionLabel.setText(text);
+        versionLabel.setText(messages.ovirtVersionAbout(text));
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/AboutPopupView.ui.xml
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/AboutPopupView.ui.xml
index cc01338..3014214 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/AboutPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/AboutPopupView.ui.xml
@@ -3,7 +3,7 @@
 <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
        xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog">
 
-       <ui:with field='dynamicConstants' 
type='org.ovirt.engine.ui.userportal.ApplicationDynamicConstants' />
+       <ui:with field='dynamicConstants' 
type='org.ovirt.engine.ui.userportal.ApplicationDynamicMessages' />
 
        <ui:style>
                .content {
@@ -24,7 +24,6 @@
                                <g:HorizontalPanel 
horizontalAlignment="ALIGN_CENTER" width="100%">
                                        <g:HTMLPanel>
                                                <div>
-                                                       <g:InlineLabel 
text="{dynamicConstants.ovirtVersionAbout}"/>
                                                        <g:InlineLabel 
ui:field="versionLabel" />
                                                </div>
                                                <div>
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/HeaderView.ui.xml
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/HeaderView.ui.xml
index eec964c..ea76e0b 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/HeaderView.ui.xml
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/HeaderView.ui.xml
@@ -3,7 +3,7 @@
 <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui">
 
 <ui:with field='constants' 
type='org.ovirt.engine.ui.userportal.ApplicationConstants' />
-<ui:with field='dynamicConstants' 
type='org.ovirt.engine.ui.userportal.ApplicationDynamicConstants' />
+<ui:with field='dynamicConstants' 
type='org.ovirt.engine.ui.userportal.ApplicationDynamicMessages' />
 
     <ui:style>
         @external obrand_wrapper;
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/system/ApplicationInit.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/system/ApplicationInit.java
index f040cc4..9edf472 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/system/ApplicationInit.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/system/ApplicationInit.java
@@ -15,7 +15,7 @@
 import org.ovirt.engine.ui.uicompat.Event;
 import org.ovirt.engine.ui.uicompat.EventArgs;
 import org.ovirt.engine.ui.uicompat.IEventListener;
-import org.ovirt.engine.ui.userportal.ApplicationDynamicConstants;
+import org.ovirt.engine.ui.userportal.ApplicationDynamicMessages;
 import org.ovirt.engine.ui.userportal.auth.CurrentUserRole;
 import org.ovirt.engine.ui.userportal.uicommon.model.UserPortalModelInitEvent;
 import org.ovirt.engine.ui.userportal.utils.ConnectAutomaticallyManager;
@@ -40,7 +40,7 @@
             LockInteractionManager lockInteractionManager,
             ConnectAutomaticallyManager connectAutomaticallyManager,
             CurrentUserRole userRole,
-            ApplicationDynamicConstants constants,
+            ApplicationDynamicMessages constants,
             ClientAgentType clientAgentType) {
         super(typeResolver, frontendEventsHandler, 
frontendFailureEventListener,
                 user, eventBus, loginModelProvider, lockInteractionManager);
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationDynamicConstants.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationDynamicConstants.java
deleted file mode 100644
index b2b0295..0000000
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationDynamicConstants.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.ovirt.engine.ui.webadmin;
-
-import org.ovirt.engine.ui.common.utils.DynamicConstants;
-
-import com.google.gwt.core.client.GWT;
-
-public class ApplicationDynamicConstants extends DynamicConstants {
-
-    private static final ApplicationConstants constants = 
GWT.create(ApplicationConstants.class);
-
-    public ApplicationDynamicConstants() {
-        super();
-        addFallback(DynamicConstantKey.APPLICATION_TITLE, 
constants.applicationTitle());
-        addFallback(DynamicConstantKey.VERSION_ABOUT, 
constants.ovirtVersionAbout());
-        addFallback(DynamicConstantKey.LOGIN_HEADER_LABEL, 
constants.loginHeaderLabel());
-        addFallback(DynamicConstantKey.MAIN_HEADER_LABEL, 
constants.mainHeaderLabel());
-        addFallback(DynamicConstantKey.COPY_RIGHT_NOTICE, 
constants.copyRightNotice());
-        addFallback(DynamicConstantKey.DOC, constants.engineWebAdminDoc());
-    }
-
-}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationDynamicMessages.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationDynamicMessages.java
new file mode 100644
index 0000000..7fbd445
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationDynamicMessages.java
@@ -0,0 +1,21 @@
+package org.ovirt.engine.ui.webadmin;
+
+import org.ovirt.engine.ui.common.utils.DynamicMessages;
+
+import com.google.gwt.core.client.GWT;
+
+public class ApplicationDynamicMessages extends DynamicMessages {
+
+    private static final ApplicationConstants constants = 
GWT.create(ApplicationConstants.class);
+
+    public ApplicationDynamicMessages() {
+        super();
+        addFallback(DynamicMessageKey.APPLICATION_TITLE, 
constants.applicationTitle());
+        addFallback(DynamicMessageKey.VERSION_ABOUT, 
constants.ovirtVersionAbout());
+        addFallback(DynamicMessageKey.LOGIN_HEADER_LABEL, 
constants.loginHeaderLabel());
+        addFallback(DynamicMessageKey.MAIN_HEADER_LABEL, 
constants.mainHeaderLabel());
+        addFallback(DynamicMessageKey.COPY_RIGHT_NOTICE, 
constants.copyRightNotice());
+        addFallback(DynamicMessageKey.DOC, constants.engineWebAdminDoc());
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
index 1f87d7d..a5d890a 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
@@ -4,7 +4,7 @@
 import org.ovirt.engine.ui.common.section.DefaultLoginSectionPlace;
 import org.ovirt.engine.ui.common.section.DefaultMainSectionPlace;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
-import org.ovirt.engine.ui.webadmin.ApplicationDynamicConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationDynamicMessages;
 import org.ovirt.engine.ui.webadmin.ApplicationMessages;
 import org.ovirt.engine.ui.webadmin.ApplicationResources;
 import org.ovirt.engine.ui.webadmin.ApplicationTemplates;
@@ -43,7 +43,7 @@
                 .to(ApplicationPlaces.DEFAULT_MAIN_SECTION_PLACE);
 
         bindResourceConfiguration(ApplicationConstants.class, 
ApplicationMessages.class,
-                ApplicationResources.class, ApplicationTemplates.class, 
ApplicationDynamicConstants.class);
+                ApplicationResources.class, ApplicationTemplates.class, 
ApplicationDynamicMessages.class);
     }
 
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/login/view/LoginPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/login/view/LoginPopupView.java
index 3b79a3f..5165a73 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/login/view/LoginPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/login/view/LoginPopupView.java
@@ -13,7 +13,7 @@
 import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor;
 import org.ovirt.engine.ui.uicommonweb.models.LoginModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
-import org.ovirt.engine.ui.webadmin.ApplicationDynamicConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationDynamicMessages;
 import org.ovirt.engine.ui.webadmin.ApplicationResources;
 import 
org.ovirt.engine.ui.webadmin.section.login.presenter.LoginPopupPresenterWidget;
 import org.ovirt.engine.ui.webadmin.system.InternalConfiguration;
@@ -97,7 +97,7 @@
             ClientAgentType clientAgentType,
             ApplicationResources resources,
             ApplicationConstants constants,
-            ApplicationDynamicConstants dynamicConstants,
+            ApplicationDynamicMessages dynamicConstants,
             InternalConfiguration intConf) {
         super(eventBus, resources, clientAgentType);
 
@@ -131,7 +131,7 @@
     }
 
     private void localize(ApplicationConstants constants,
-            ApplicationDynamicConstants dynamicConstants) {
+            ApplicationDynamicMessages dynamicConstants) {
         headerLabel.setText(dynamicConstants.loginHeaderLabel());
         userNameLabel.setText(constants.loginFormUserNameLabel());
         passwordLabel.setText(constants.loginFormPasswordLabel());
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/HeaderPresenterWidget.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/HeaderPresenterWidget.java
index 5e01157..4d2cd46 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/HeaderPresenterWidget.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/HeaderPresenterWidget.java
@@ -3,7 +3,7 @@
 import org.ovirt.engine.ui.common.auth.CurrentUser;
 import org.ovirt.engine.ui.common.presenter.main.AbstractHeaderPresenterWidget;
 import 
org.ovirt.engine.ui.common.widget.tab.AbstractHeadlessTabPanel.TabWidgetHandler;
-import org.ovirt.engine.ui.webadmin.ApplicationDynamicConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationDynamicMessages;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.configure.ConfigurePopupPresenterWidget;
 import org.ovirt.engine.ui.webadmin.uicommon.WebAdminConfigurator;
 
@@ -39,7 +39,7 @@
             SearchPanelPresenterWidget searchPanel,
             AboutPopupPresenterWidget aboutPopup,
             ConfigurePopupPresenterWidget configurePopup,
-            ApplicationDynamicConstants constants) {
+            ApplicationDynamicMessages constants) {
         super(eventBus, view, user,
                 WebAdminConfigurator.DOCUMENTATION_GUIDE_PATH, 
constants.engineWebAdminDoc());
         this.searchPanel = searchPanel;
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/AboutPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/AboutPopupView.java
index f5a0b7b..fbc25d6 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/AboutPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/AboutPopupView.java
@@ -5,7 +5,7 @@
 import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogButton;
 import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
-import org.ovirt.engine.ui.webadmin.ApplicationDynamicConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationDynamicMessages;
 import org.ovirt.engine.ui.webadmin.ApplicationResources;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.AboutPopupPresenterWidget;
 
@@ -24,6 +24,8 @@
         ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
     }
 
+    private final ApplicationDynamicMessages messages;
+
     @UiField
     Label titleLabel;
 
@@ -39,22 +41,22 @@
     @Inject
     public AboutPopupView(EventBus eventBus, ApplicationResources resources,
             ApplicationConstants constants,
-            ApplicationDynamicConstants dynamicConstants) {
+            ApplicationDynamicMessages dynamicMessages) {
         super(eventBus, resources);
         initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
-        localize(constants, dynamicConstants);
+        messages = dynamicMessages;
+        localize(constants, dynamicMessages);
     }
 
     void localize(ApplicationConstants constants,
-            ApplicationDynamicConstants dynamicConstants) {
-        titleLabel.setText(constants.aboutPopupCaption());
+            ApplicationDynamicMessages dynamicMessages) {
         closeButton.setText(constants.closeButtonLabel());
-        copyrightNotice.setText(dynamicConstants.copyRightNotice());
+        copyrightNotice.setText(dynamicMessages.copyRightNotice());
     }
 
     @Override
     public void setVersion(String text) {
-        versionLabel.setText(text);
+        versionLabel.setText(messages.ovirtVersionAbout(text));
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/AboutPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/AboutPopupView.ui.xml
index d6ce251..7b9e109 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/AboutPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/AboutPopupView.ui.xml
@@ -3,7 +3,7 @@
 <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
        xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog">
 
-       <ui:with field='dynamicConstants' 
type='org.ovirt.engine.ui.webadmin.ApplicationDynamicConstants' />
+       <ui:with field='dynamicConstants' 
type='org.ovirt.engine.ui.webadmin.ApplicationDynamicMessages' />
 
        <ui:style>
                .content {
@@ -24,7 +24,6 @@
                                <g:HorizontalPanel 
horizontalAlignment="ALIGN_CENTER" width="100%">
                                        <g:HTMLPanel>
                                                <div>
-                                               <g:InlineLabel  
text="{dynamicConstants.ovirtVersionAbout}"/>
                                                        <g:InlineLabel 
ui:field="versionLabel" />
                                                </div>
                                                <div>
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/HeaderView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/HeaderView.java
index 14ef057..959c630 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/HeaderView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/HeaderView.java
@@ -4,7 +4,7 @@
 import org.ovirt.engine.ui.common.idhandler.WithElementId;
 import org.ovirt.engine.ui.common.view.AbstractSingleSlotView;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
-import org.ovirt.engine.ui.webadmin.ApplicationDynamicConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationDynamicMessages;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.HeaderPresenterWidget;
 
 import com.google.gwt.core.client.GWT;
@@ -71,7 +71,7 @@
 
     @Inject
     public HeaderView(ApplicationConstants constants,
-            ApplicationDynamicConstants dynamicConstants) {
+            ApplicationDynamicMessages dynamicConstants) {
         this.configureLink = new Anchor(constants.configureLinkLabel());
         this.logoutLink = new Anchor(constants.logoutLinkLabel());
         this.aboutLink = new Anchor(constants.aboutLinkLabel());
@@ -85,7 +85,7 @@
         localize(dynamicConstants);
     }
 
-    private void localize(ApplicationDynamicConstants constants) {
+    private void localize(ApplicationDynamicMessages constants) {
         headerLabel.setText(constants.mainHeaderLabel());
     }
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/system/ApplicationInit.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/system/ApplicationInit.java
index c36d051..44c4ea2 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/system/ApplicationInit.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/system/ApplicationInit.java
@@ -18,7 +18,7 @@
 import org.ovirt.engine.ui.uicompat.Event;
 import org.ovirt.engine.ui.uicompat.EventArgs;
 import org.ovirt.engine.ui.uicompat.IEventListener;
-import org.ovirt.engine.ui.webadmin.ApplicationDynamicConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationDynamicMessages;
 import org.ovirt.engine.ui.webadmin.plugin.restapi.RestApiSessionManager;
 import org.ovirt.engine.ui.webadmin.uimode.UiModeData;
 
@@ -40,7 +40,7 @@
             CurrentUser user, EventBus eventBus,
             Provider<LoginModel> loginModelProvider,
             LockInteractionManager lockInteractionManager,
-            ApplicationDynamicConstants constants,
+            ApplicationDynamicMessages constants,
             RestApiSessionManager restApiSessionManager) {
         super(typeResolver, frontendEventsHandler, 
frontendFailureEventListener,
                 user, eventBus, loginModelProvider, lockInteractionManager);
diff --git a/packaging/branding/ovirt.brand/ovirt_messages.properties 
b/packaging/branding/ovirt.brand/ovirt_messages.properties
index 0d111f6..b163b25 100644
--- a/packaging/branding/ovirt.brand/ovirt_messages.properties
+++ b/packaging/branding/ovirt.brand/ovirt_messages.properties
@@ -8,7 +8,7 @@
 # The copy right notice.
 obrand.common.copy_right_notice=
 # The text above the version in the about box.
-obrand.common.version_about=oVirt Engine Version:
+obrand.common.version_about=oVirt Engine Version: {0}
 
 # User portal specific messages that can be over written.
 


-- 
To view, visit http://gerrit.ovirt.org/15838
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iad253128d6bb48b0be93bb580803101b7e85bcea
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alexander Wels <aw...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to