locale);
}
diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/TestsUtil.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/TestsUtil.java
index ac998def438..b90bebed3f2 100644
--- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/TestsUtil.java
+++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/TestsUtil.java
@@ -47,7 +47,7 @@ public class TestsUtil {
EXTENDED_STRING_MESSAGES = new CompoundResourceBundleStringMessages();
EXTENDED_STRING_MESSAGES.addStringMessages(getTestStringMessages());
EXTENDED_STRING_MESSAGES
- .addStringMessages(new ResourceBundleStringMessagesImpl(PRODUCTIVE_STRING_MESSAGES_BASE_NAME,
+ .addStringMessages(ResourceBundleStringMessages.create(PRODUCTIVE_STRING_MESSAGES_BASE_NAME,
TestsUtil.class.getClassLoader(), StandardCharsets.UTF_8.name()));
}
diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningFrameworkActivator.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningFrameworkActivator.java
index 74578f7f4aa..03cd461a7b6 100644
--- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningFrameworkActivator.java
+++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningFrameworkActivator.java
@@ -46,7 +46,7 @@ import com.sap.sse.datamining.impl.components.management.FunctionManager;
import com.sap.sse.datamining.impl.components.management.QueryDefinitionDTOManager;
import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO;
import com.sap.sse.datamining.shared.impl.PredefinedQueryIdentifier;
-import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
+import com.sap.sse.i18n.ResourceBundleStringMessages;
import com.sap.sse.util.ThreadPoolUtil;
public class DataMiningFrameworkActivator implements BundleActivator {
@@ -81,7 +81,7 @@ public class DataMiningFrameworkActivator implements BundleActivator {
dataRetrieverChainDefinitionRegistry,
aggregationProcessorDefinitionRegistry,
queryDefinitionRegistry);
- dataMiningServer.addStringMessages(new ResourceBundleStringMessagesImpl(STRING_MESSAGES_BASE_NAME,
+ dataMiningServer.addStringMessages(ResourceBundleStringMessages.create(STRING_MESSAGES_BASE_NAME,
this.getClass().getClassLoader(), StandardCharsets.UTF_8.name()));
for (AggregationProcessorDefinition, ?> aggregationProcessorDefinition : getDefaultAggregationProcessors()) {
dataMiningServer.registerAggregationProcessor(aggregationProcessorDefinition);
diff --git a/java/com.sap.sse.filestorage/src/com/sap/sse/filestorage/impl/FileStorageI18n.java b/java/com.sap.sse.filestorage/src/com/sap/sse/filestorage/impl/FileStorageI18n.java
index a8700e48d6a..ded06f34c66 100644
--- a/java/com.sap.sse.filestorage/src/com/sap/sse/filestorage/impl/FileStorageI18n.java
+++ b/java/com.sap.sse.filestorage/src/com/sap/sse/filestorage/impl/FileStorageI18n.java
@@ -3,11 +3,10 @@ package com.sap.sse.filestorage.impl;
import java.nio.charset.StandardCharsets;
import com.sap.sse.i18n.ResourceBundleStringMessages;
-import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
public class FileStorageI18n {
private static final String RESOURCE_BASE_NAME = "stringmessages/FileStorageStringMessages";
- public static final ResourceBundleStringMessages STRING_MESSAGES = new ResourceBundleStringMessagesImpl(
+ public static final ResourceBundleStringMessages STRING_MESSAGES = ResourceBundleStringMessages.create(
RESOURCE_BASE_NAME, FileStorageI18n.class.getClassLoader(), StandardCharsets.UTF_8.name());
}
diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/context/data/ClientConfigurationContextDataJSO.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/context/data/ClientConfigurationContextDataJSO.java
index 2b0f050ddba..f11b3a5ce82 100644
--- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/context/data/ClientConfigurationContextDataJSO.java
+++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/context/data/ClientConfigurationContextDataJSO.java
@@ -69,4 +69,8 @@ public class ClientConfigurationContextDataJSO extends JavaScriptObject {
public final native String getSailingAnalyticsImageURL() /*-{
return this.sailingAnalyticsImageURL;
}-*/;
+
+ public final native String getSailingAnalyticsReadMoreText() /*-{
+ return this.sailingAnalyticsReadMoreText;
+ }-*/;
}
\ No newline at end of file
diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/shared/ClientConfiguration.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/shared/ClientConfiguration.java
index c04759d9d26..f3d894dbeca 100644
--- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/shared/ClientConfiguration.java
+++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/shared/ClientConfiguration.java
@@ -32,6 +32,11 @@ import com.sap.sse.gwt.client.context.impl.ClientConfigurationContextDataFactory
* corresponding variable must be declared and filled with the appropriate value in {@link ClientConfigurationFilter}
* class {@link ClientConfigurationContextDataJSO} must be extended with an getter for the new field
*
+ *
+ *
+ * Methods accepting an {@link Optional} locale parameter are used to support internationalization of the branding information in
+ * the back-end. GWT clients can use {@link Optional#empty()} and will get an internationalized value because the back-end will
+ * have handled the client's locale information.
*
* @see ClientConfigurationContextScriptGenerator
*
@@ -64,6 +69,7 @@ public class ClientConfiguration implements BrandingConfiguration {
private String sailingSimulatorTrimmedImageURL;
private String buoyPingerAppImageURL;
private String sailingAnalyticsImageURL;
+ private String sailingAnalyticsReadMoreText;
public ClientConfiguration() {
try {
@@ -82,6 +88,7 @@ public class ClientConfiguration implements BrandingConfiguration {
sailingSimulatorTrimmedImageURL = dataJso.getSailingSimulatorTrimmedImageURL();
buoyPingerAppImageURL = dataJso.getBuoyPingerAppImageURL();
sailingAnalyticsImageURL = dataJso.getSailingAnalyticsImageURL();
+ sailingAnalyticsReadMoreText = dataJso.getSailingAnalyticsReadMoreText();
} catch (RuntimeException e) {
GWT.log("no branding information found.");
}
@@ -156,4 +163,8 @@ public class ClientConfiguration implements BrandingConfiguration {
public String getSailingAnalyticsImageURL() {
return sailingAnalyticsImageURL;
}
+
+ public String getSailingAnalyticsReadMoreText(Optional locale) {
+ return sailingAnalyticsReadMoreText;
+ }
}
diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationReceiverImpl.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationReceiverImpl.java
index faef22a7393..ff443157042 100755
--- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationReceiverImpl.java
+++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationReceiverImpl.java
@@ -36,7 +36,6 @@ import com.sap.sse.common.Util;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.common.mail.MailException;
import com.sap.sse.i18n.ResourceBundleStringMessages;
-import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
import com.sap.sse.operationaltransformation.Operation;
import com.sap.sse.replication.FullyInitializedReplicableTracker;
import com.sap.sse.replication.OperationWithResult;
@@ -362,7 +361,7 @@ public class ReplicationReceiverImpl implements ReplicationReceiver, Runnable {
}
private void sendMailAboutShutdownSignalException(ShutdownSignalException sse) {
- final ResourceBundleStringMessages stringMessages = new ResourceBundleStringMessagesImpl(STRING_MESSAGES_BASE_NAME, getClass().getClassLoader(), StandardCharsets.UTF_8.name());
+ final ResourceBundleStringMessages stringMessages = ResourceBundleStringMessages.create(STRING_MESSAGES_BASE_NAME, getClass().getClassLoader(), StandardCharsets.UTF_8.name());
final SecurityService securityService = getSecurityService();
if (securityService == null) {
logger.warning("No security service available; cannot send mail about shutdown signal exception");
diff --git a/java/com.sap.sse.security.datamining/src/com/sap/sse/security/datamining/Activator.java b/java/com.sap.sse.security.datamining/src/com/sap/sse/security/datamining/Activator.java
index ed33e4ed424..7267ce26b2b 100644
--- a/java/com.sap.sse.security.datamining/src/com/sap/sse/security/datamining/Activator.java
+++ b/java/com.sap.sse.security.datamining/src/com/sap/sse/security/datamining/Activator.java
@@ -12,7 +12,6 @@ import com.sap.sse.datamining.components.AggregationProcessorDefinition;
import com.sap.sse.datamining.components.DataRetrieverChainDefinition;
import com.sap.sse.datamining.impl.AbstractDataMiningActivator;
import com.sap.sse.i18n.ResourceBundleStringMessages;
-import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
import com.sap.sse.security.datamining.data.HasPermissionOfUserContext;
import com.sap.sse.security.datamining.data.HasPermissionOfUserInUserGroupContext;
import com.sap.sse.security.datamining.data.HasPreferenceOfUserContext;
@@ -51,7 +50,7 @@ public class Activator extends AbstractDataMiningActivator {
public Activator() {
dataRetrieverChainDefinitions = new SecurityDataRetrievalChainDefinitions();
- sailingServerStringMessages = new ResourceBundleStringMessagesImpl(STRING_MESSAGES_BASE_NAME, getClassLoader(),
+ sailingServerStringMessages = ResourceBundleStringMessages.create(STRING_MESSAGES_BASE_NAME, getClassLoader(),
StandardCharsets.UTF_8.name());
}
diff --git a/java/com.sap.sse.security/src/com/sap/sse/security/impl/SecurityServiceImpl.java b/java/com.sap.sse.security/src/com/sap/sse/security/impl/SecurityServiceImpl.java
index 268631c1cb9..2b155162d39 100755
--- a/java/com.sap.sse.security/src/com/sap/sse/security/impl/SecurityServiceImpl.java
+++ b/java/com.sap.sse.security/src/com/sap/sse/security/impl/SecurityServiceImpl.java
@@ -102,7 +102,7 @@ import com.sap.sse.common.mail.MailException;
import com.sap.sse.common.media.TakedownNoticeRequestContext;
import com.sap.sse.concurrent.LockUtil;
import com.sap.sse.concurrent.NamedReentrantReadWriteLock;
-import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
+import com.sap.sse.i18n.ResourceBundleStringMessages;
import com.sap.sse.mail.MailService;
import com.sap.sse.replication.ReplicationService;
import com.sap.sse.replication.interfaces.impl.AbstractReplicableWithObjectInputStream;
@@ -218,7 +218,7 @@ implements ReplicableSecurityService, ClearStateTestSupport {
private SecurityManager securityManager;
private static final String STRING_MESSAGES_BASE_NAME = "stringmessages/StringMessages";
- private static final ResourceBundleStringMessagesImpl messages = new ResourceBundleStringMessagesImpl(
+ private static final ResourceBundleStringMessages messages = ResourceBundleStringMessages.create(
SecurityServiceImpl.STRING_MESSAGES_BASE_NAME, SecurityServiceImpl.class.getClassLoader(),
StandardCharsets.UTF_8.name());
diff --git a/java/com.sap.sse.test/src/com/sap/sse/test/TestTakedownNoticeFactory.java b/java/com.sap.sse.test/src/com/sap/sse/test/TestTakedownNoticeFactory.java
index 42c9a95d455..e2def30dcc2 100644
--- a/java/com.sap.sse.test/src/com/sap/sse/test/TestTakedownNoticeFactory.java
+++ b/java/com.sap.sse.test/src/com/sap/sse/test/TestTakedownNoticeFactory.java
@@ -11,7 +11,6 @@ import org.junit.jupiter.api.Test;
import com.sap.sse.common.media.NatureOfClaim;
import com.sap.sse.common.media.TakedownNoticeRequestContext;
import com.sap.sse.i18n.ResourceBundleStringMessages;
-import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
import com.sap.sse.util.TakedownNoticeFactory;
public class TestTakedownNoticeFactory {
@@ -20,7 +19,7 @@ public class TestTakedownNoticeFactory {
private ResourceBundleStringMessages getTestStringMessages() {
if (TEST_STRING_MESSAGES == null) {
- TEST_STRING_MESSAGES = new ResourceBundleStringMessagesImpl(TEST_STRING_MESSAGES_BASE_NAME,
+ TEST_STRING_MESSAGES = ResourceBundleStringMessages.create(TEST_STRING_MESSAGES_BASE_NAME,
TestTakedownNoticeFactory.class.getClassLoader(), StandardCharsets.UTF_8.name());
}
return TEST_STRING_MESSAGES;
diff --git a/java/com.sap.sse/src/com/sap/sse/i18n/ResourceBundleStringMessages.java b/java/com.sap.sse/src/com/sap/sse/i18n/ResourceBundleStringMessages.java
index 5df290596f8..718f665156d 100644
--- a/java/com.sap.sse/src/com/sap/sse/i18n/ResourceBundleStringMessages.java
+++ b/java/com.sap.sse/src/com/sap/sse/i18n/ResourceBundleStringMessages.java
@@ -9,6 +9,7 @@ import java.util.ResourceBundle;
import java.util.ResourceBundle.Control;
import com.sap.sse.i18n.impl.NullResourceBundleStringMessages;
+import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
/**
* Allow server-side internationalization similar to GWT client-side by using property files.
@@ -27,6 +28,14 @@ import com.sap.sse.i18n.impl.NullResourceBundleStringMessages;
*/
public interface ResourceBundleStringMessages {
static final ResourceBundleStringMessages NULL = new NullResourceBundleStringMessages();
+
+ static ResourceBundleStringMessages create(String resourceBaseName, ClassLoader resourceClassLoader, String encoding) {
+ return new ResourceBundleStringMessagesImpl(resourceBaseName, resourceClassLoader, encoding);
+ }
+
+ static ResourceBundleStringMessages create(String resourceBaseName, ClassLoader resourceClassLoader) {
+ return new ResourceBundleStringMessagesImpl(resourceBaseName, resourceClassLoader);
+ }
String getResourceBaseName();
diff --git a/java/com.sap.sse/src/com/sap/sse/i18n/impl/ResourceBundleStringMessagesImpl.java b/java/com.sap.sse/src/com/sap/sse/i18n/impl/ResourceBundleStringMessagesImpl.java
index 52fb3981df2..8a3200a67a4 100644
--- a/java/com.sap.sse/src/com/sap/sse/i18n/impl/ResourceBundleStringMessagesImpl.java
+++ b/java/com.sap.sse/src/com/sap/sse/i18n/impl/ResourceBundleStringMessagesImpl.java
@@ -2,6 +2,7 @@ package com.sap.sse.i18n.impl;
import java.nio.charset.StandardCharsets;
import java.util.Locale;
+import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.ResourceBundle.Control;
import java.util.regex.Matcher;
@@ -14,6 +15,7 @@ public class ResourceBundleStringMessagesImpl implements ResourceBundleStringMes
private final String resourceBaseName;
private final ClassLoader resourceClassLoader;
private String encoding;
+ private ResourceBundle result;
public ResourceBundleStringMessagesImpl(String resourceBaseName, ClassLoader resourceClassLoader, String encoding) {
this.resourceBaseName = resourceBaseName;
@@ -100,12 +102,18 @@ public class ResourceBundleStringMessagesImpl implements ResourceBundleStringMes
}
private ResourceBundle getResourceBundle(Locale locale) {
- Control controller = Util.createControl(encoding);
- if (resourceClassLoader != null) {
- return ResourceBundle.getBundle(resourceBaseName, locale, resourceClassLoader, controller);
- } else {
- return ResourceBundle.getBundle(resourceBaseName, locale, controller);
+ final Control controller = Util.createControl(encoding);
+ try {
+ if (resourceClassLoader != null) {
+ result = ResourceBundle.getBundle(resourceBaseName, locale, resourceClassLoader, controller);
+ } else {
+ result = ResourceBundle.getBundle(resourceBaseName, locale, controller);
+ }
+ } catch (MissingResourceException e) {
+ // try again with default locale
+ return getResourceBundle(Locale.getDefault());
}
+ return result;
}
@Override
diff --git a/translation_v2.json b/translation_v2.json
index 7065b720012..02c3b311b35 100755
--- a/translation_v2.json
+++ b/translation_v2.json
@@ -86,6 +86,24 @@
}
]
},
+ {
+ "collectionName":"SAPBranding",
+ "folders":[
+ {
+ "startingFolderPath":"java/com.sap.sse.branding.sap/resources/stringmessages",
+ "sourceFilters":[
+ "**/SAPBrandingStringMessages*.properties"
+ ],
+ "excludedSourceFilters":[
+ "**/*_zh.properties"
+ ],
+ "xlfFolderPath":"./XLF",
+ "targetFolderPath":".",
+ "pseudoLocFolderPath":"."
+ }
+ ]
+ },
+ {
{
"collectionName":"SecurityDataMining",
"folders":[