@Inject public DefaultMessagesManager(Node2BeanProcessor nodeToBean, SystemContext systemContext) { this.nodeToBean = nodeToBean; this.systemContext = systemContext; // setting default language (en) setDefaultLocale(FALLBACK_LOCALE); initMap(); }
/** * Initializes a new Messages instances for the given MessagesID. By default, we chain to the same bundle with the * default Locale. (so untranslated messages show up in the default language) */ protected Messages newMessages(MessagesID messagesID) { Messages messages = new DefaultMessagesImpl(messagesID.basename, messagesID.locale); if (!getDefaultLocale().equals(messagesID.locale)) { messages = new MessagesChain(messages).chain(getMessages(messagesID.basename, getDefaultLocale())); } return messages; }
/** * Called through the initialization process. (startup of the container) */ @Override public void init() { load(); registerEventListener(); }
/** * These are the i18n settings common to all tests. * <ul> * <li>locale in context is German * <li>fall back system locale is English * <li>default basename is the one defined by {@link info.magnolia.cms.i18n.MessagesManager#DEFAULT_BASENAME} * </ul> */ @Before public void setUp() throws Exception { ComponentsTestUtil.setImplementation(SystemContext.class, MockContext.class); final DefaultMessagesManager defaultMessagesManager = new DefaultMessagesManager(null, MockUtil.getSystemMockContext()); defaultMessagesManager.setDefaultLocale(FALLBACK.toString()); ComponentsTestUtil.setInstance(MessagesManager.class, defaultMessagesManager); MagnoliaConfigurationProperties configurationProperties = mock(MagnoliaConfigurationProperties.class); when(configurationProperties.getProperty(FileSystemResourceOrigin.RESOURCES_DIR_PROPERTY)).thenReturn(this.getClass().getResource("/").getPath()); ResourceOrigin resourceOrigin = new DummyResourceOrigin(foo, defaultReader(), defaultStreamLoader(), withFolderPaths( "/moduleName/i18n/messages_de_CH.properties", "/moduleName/i18n/messages_de_CH_basel.properties", "/moduleName/i18n/messages_de.properties", "/moduleName/i18n/messages_fr.properties", "/moduleName/i18n/messages.properties" )); translationService = new DummyTranslationService(i18nModule, new DefaultMessageBundlesLoader(resourceOrigin)); userLocaleProvider = newFixedLocaleProvider(USERLOCALE); }
/** * Reload i18n configuration. */ @Override public void reload() { try { // reload all present for (Iterator messagesIterator = messages.values().iterator(); messagesIterator.hasNext(); ) { Messages messages = (Messages) messagesIterator.next(); messages.reload(); } } catch (Exception e) { log.error("Can't reload i18n messages", e); } initMap(); load(); }
setDefaultLocale(PropertyUtil.getString(configNode, FALLBACK_NODEDATA, FALLBACK_LOCALE));
@Before public void setUp() { ComponentsTestUtil.setImplementation(SystemContext.class, MockContext.class); final DefaultMessagesManager defaultMessagesManager = new DefaultMessagesManager(mock(Node2BeanProcessor.class), MockUtil.getSystemMockContext()); ComponentsTestUtil.setInstance(MessagesManager.class, defaultMessagesManager); }
@Override public void onEvent(EventIterator iterator) { // reload everything reload(); } });
@Override public Object transform(Object input) { final MessagesID id = (MessagesID) input; return newMessages(id); } });
@Before public void setUp() throws Exception { ctx = mock(Context.class); // current context locale when(ctx.getLocale()).thenReturn(new Locale("en")); MgnlContext.setInstance(ctx); sysCtx = mock(SystemContext.class); ComponentsTestUtil.setInstance(SystemContext.class, sysCtx); ComponentsTestUtil.setImplementation(MessagesManager.class, DefaultMessagesManager.class); // configure node2bean because its processor is injected into DefaultMessagesManager constructor ComponentsTestUtil.setImplementation(Node2BeanProcessor.class, Node2BeanProcessorImpl.class); ComponentsTestUtil.setImplementation(TypeMapping.class, TypeMappingImpl.class); ComponentsTestUtil.setImplementation(Node2BeanTransformer.class, Node2BeanTransformerImpl.class); ComponentsTestUtil.setInstance(BeanTypeResolver.class, new BeanTypeResolver()); // Replace the default bundle (adminterface) by a fake one - see MAGNOLIA-2528 final DefaultMessagesManager mm = (DefaultMessagesManager) MessagesManager.getInstance(); mm.setDefaultBasename("info.magnolia.cms.i18n.fakedefault"); }
@Before public void setUp() throws Exception { ComponentsTestUtil.setImplementation(SystemContext.class, MockContext.class); final DefaultMessagesManager defaultMessagesManager = new DefaultMessagesManager(null, MockUtil.getSystemMockContext()); defaultMessagesManager.setDefaultLocale(Locale.ENGLISH.toString()); ComponentsTestUtil.setInstance(MessagesManager.class, defaultMessagesManager); final DummyResourceOrigin resourceOrigin = new DummyResourceOrigin(foo, defaultReader(), defaultStreamLoader(), withFolderPaths( "/moduleName/i18n/messages_de_CH.properties", "/moduleName/i18n/messages_de_CH_basel.properties", "/moduleName/i18n/messages_de.properties", "/moduleName/i18n/messages_fr.properties", "/moduleName/i18n/messages.properties" )); messagesLoader = new DefaultMessageBundlesLoader(resourceOrigin); }
@Test public void debugOldI18n() throws Exception { //GIVEN i18nModule.setDebug(true); final String[] keys = new String[] { "more.specific.key", "specific.key", "key" }; final MessagesManager messagesManager = new DefaultMessagesManager(null, MockUtil.getSystemMockContext()) { @Override public Messages getMessagesInternal(String basename, Locale locale) { Messages messages = mock(Messages.class); when(messages.get(anyString())).thenReturn("Some legacy i18n translation"); return messages; } }; ComponentsTestUtil.setInstance(MessagesManager.class, messagesManager); // WHEN String message = translationService.translate(newFixedLocaleProvider(USERLOCALE), LEGACY_BUNDLE, keys); // THEN assertEquals("Some legacy i18n translation\n[>more.specific.key<, specific.key, key]Locale:de,Using legacy i18n basename:info.magnolia.i18nsystem.legacy", message); }