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() {