Details
diff --git a/forms/common-freemarker/src/main/java/org/keycloak/freemarker/ExtendingThemeManager.java b/forms/common-freemarker/src/main/java/org/keycloak/freemarker/ExtendingThemeManager.java
index 0e98f11..020d349 100644
--- a/forms/common-freemarker/src/main/java/org/keycloak/freemarker/ExtendingThemeManager.java
+++ b/forms/common-freemarker/src/main/java/org/keycloak/freemarker/ExtendingThemeManager.java
@@ -224,10 +224,15 @@ public class ExtendingThemeManager implements ThemeProvider {
@Override
public Properties getMessages(Locale locale) throws IOException {
+ return getMessages("messages", locale);
+ }
+
+ @Override
+ public Properties getMessages(String baseBundlename, Locale locale) throws IOException {
Properties messages = new Properties();
ListIterator<Theme> itr = themes.listIterator(themes.size());
while (itr.hasPrevious()) {
- Properties m = itr.previous().getMessages(locale);
+ Properties m = itr.previous().getMessages(baseBundlename, locale);
if (m != null) {
messages.putAll(m);
}
diff --git a/forms/common-freemarker/src/main/java/org/keycloak/freemarker/Theme.java b/forms/common-freemarker/src/main/java/org/keycloak/freemarker/Theme.java
index 6a12a49..43107ce 100644
--- a/forms/common-freemarker/src/main/java/org/keycloak/freemarker/Theme.java
+++ b/forms/common-freemarker/src/main/java/org/keycloak/freemarker/Theme.java
@@ -29,8 +29,27 @@ public interface Theme {
public InputStream getResourceAsStream(String path) throws IOException;
+ /**
+ * Same as getMessages(baseBundlename, locale), but uses a default baseBundlename
+ * such as "messages".
+ *
+ * @param locale The locale of the desired message bundle.
+ * @return The localized messages from the bundle.
+ * @throws IOException If bundle can not be read.
+ */
public Properties getMessages(Locale locale) throws IOException;
+ /**
+ * Retrieve localized messages from a message bundle.
+ *
+ * @param baseBundlename The base name of the bundle, such as "messages" in
+ * messages_en.properties.
+ * @param locale The locale of the desired message bundle.
+ * @return The localized messages from the bundle.
+ * @throws IOException If bundle can not be read.
+ */
+ public Properties getMessages(String baseBundlename, Locale locale) throws IOException;
+
public Properties getProperties() throws IOException;
}
diff --git a/forms/common-themes/src/main/java/org/keycloak/theme/ClassLoaderTheme.java b/forms/common-themes/src/main/java/org/keycloak/theme/ClassLoaderTheme.java
index 3e92be8..68ac7ca 100755
--- a/forms/common-themes/src/main/java/org/keycloak/theme/ClassLoaderTheme.java
+++ b/forms/common-themes/src/main/java/org/keycloak/theme/ClassLoaderTheme.java
@@ -100,12 +100,17 @@ public class ClassLoaderTheme implements Theme {
@Override
public Properties getMessages(Locale locale) throws IOException {
+ return getMessages("messages", locale);
+ }
+
+ @Override
+ public Properties getMessages(String baseBundlename, Locale locale) throws IOException {
if(locale == null){
return null;
}
Properties m = new Properties();
- URL url = classLoader.getResource(this.messageRoot + "messages_" + locale.toString() + ".properties");
+ URL url = classLoader.getResource(this.messageRoot + baseBundlename + "_" + locale.toString() + ".properties");
if (url != null) {
m.load(url.openStream());
}
diff --git a/forms/common-themes/src/main/java/org/keycloak/theme/FolderTheme.java b/forms/common-themes/src/main/java/org/keycloak/theme/FolderTheme.java
index d1593fe..77a65a8 100644
--- a/forms/common-themes/src/main/java/org/keycloak/theme/FolderTheme.java
+++ b/forms/common-themes/src/main/java/org/keycloak/theme/FolderTheme.java
@@ -93,13 +93,18 @@ public class FolderTheme implements Theme {
@Override
public Properties getMessages(Locale locale) throws IOException {
+ return getMessages("messages", locale);
+ }
+
+ @Override
+ public Properties getMessages(String baseBundlename, Locale locale) throws IOException {
if(locale == null){
return null;
}
Properties m = new Properties();
- File file = new File(themeDir, "messages" + File.separator + "messages_" + locale.toString() + ".properties");
+ File file = new File(themeDir, "messages" + File.separator + baseBundlename + "_" + locale.toString() + ".properties");
if (file.isFile()) {
m.load(new FileInputStream(file));
}