Bug 331260 - Implement an extensible translation service
diff --git a/bundles/org.eclipse.e4.ui.services/src/org/eclipse/e4/ui/services/ETranslationService.java b/bundles/org.eclipse.e4.ui.services/src/org/eclipse/e4/ui/services/ETranslationService.java
index f7640fb..858672f 100644
--- a/bundles/org.eclipse.e4.ui.services/src/org/eclipse/e4/ui/services/ETranslationService.java
+++ b/bundles/org.eclipse.e4.ui.services/src/org/eclipse/e4/ui/services/ETranslationService.java
@@ -11,6 +11,8 @@
 package org.eclipse.e4.ui.services;
 
 public interface ETranslationService {
+	public static final String LANGUAGE_TOPIC = "org/eclipse/e4/ui/workbench/language";
+	
 	public <M> M createInstance(Class<M> messages)
 			throws InstantiationException, IllegalAccessException;
 
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/TranslationServiceImpl.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/TranslationServiceImpl.java
index ff48fa6..e7cab1c 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/TranslationServiceImpl.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/TranslationServiceImpl.java
@@ -13,6 +13,7 @@
 
 import java.util.Locale;
 import javax.inject.Inject;
+import org.eclipse.e4.core.services.events.IEventBroker;
 import org.eclipse.e4.core.services.translation.IMessageFactoryService;
 import org.eclipse.e4.core.services.translation.ITranslationService;
 import org.eclipse.e4.ui.services.ETranslationService;
@@ -27,6 +28,9 @@
 	@Inject
 	private IMessageFactoryService factoryService;
 
+	@Inject
+	private IEventBroker eventBroker;
+
 	private String locale = Locale.getDefault().toString();
 
 	public <M> M createInstance(Class<M> messages) throws InstantiationException,
@@ -35,7 +39,11 @@
 	}
 
 	public void setLocale(String locale) {
-		this.locale = locale;
+		if (this.locale.equals(locale) && locale != null) {
+			this.locale = locale;
+			eventBroker.post(LANGUAGE_TOPIC, locale);
+		}
+
 	}
 
 	public String getLocale() {