Author: agilliland
Date: Wed May 23 12:13:16 2007
New Revision: 541035
URL: http://svn.apache.org/viewvc?view=rev&rev=541035
Log:
initial fix for ROL-1337 and ROL-1413 which aim to improve and consistify the
i18n situation in Roller. this commit attempts to simplify and unify the
strategy for dealing with i18n message strings primarily in places used for
weblog rendering.
The main changes here include ...
1. changing the static MessageUtilites class into an instantiable I18nMessages
class which is tied to a specific locale.
2. updating places in the code which used to use the old MessageUtilities class
to make use of the new I18nMessages class and do so using the most appropriate
locale possible.
Added:
roller/trunk/src/org/apache/roller/util/I18nMessages.java
- copied, changed from r540790,
roller/trunk/src/org/apache/roller/util/MessageUtilities.java
roller/trunk/src/org/apache/roller/util/I18nUtils.java
Removed:
roller/trunk/src/org/apache/roller/util/MessageUtilities.java
Modified:
roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java
roller/trunk/src/org/apache/roller/pojos/WebsiteData.java
roller/trunk/src/org/apache/roller/ui/core/plugins/TextEditor.java
roller/trunk/src/org/apache/roller/ui/core/plugins/XinhaEditor.java
roller/trunk/src/org/apache/roller/ui/core/tags/menu/MenuTag.java
roller/trunk/src/org/apache/roller/ui/rendering/model/MessageModel.java
roller/trunk/src/org/apache/roller/ui/rendering/model/SearchResultsFeedModel.java
roller/trunk/src/org/apache/roller/ui/rendering/model/SearchResultsModel.java
roller/trunk/src/org/apache/roller/ui/rendering/pagers/AbstractWeblogEntriesPager.java
roller/trunk/src/org/apache/roller/ui/rendering/pagers/SearchResultsFeedPager.java
roller/trunk/src/org/apache/roller/ui/rendering/pagers/SearchResultsPager.java
roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java
roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java
roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java
roller/trunk/src/org/apache/roller/ui/rendering/servlets/CommentServlet.java
roller/trunk/src/org/apache/roller/ui/rendering/servlets/TrackbackServlet.java
roller/trunk/src/org/apache/roller/util/MailUtil.java
roller/trunk/web/WEB-INF/jsps/editor/WeblogConfig.jsp
roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-css.vm
roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-horizontal.vm
roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-vertical.vm
Modified: roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
--- roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java (original)
+++ roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java Wed May 23
12:13:16 2007
@@ -50,7 +50,7 @@
import org.apache.roller.business.WeblogEntryPlugin;
import org.apache.roller.business.WeblogManager;
import org.apache.roller.util.DateUtil;
-import org.apache.roller.util.MessageUtilities;
+import org.apache.roller.util.I18nMessages;
import org.apache.roller.util.URLUtilities;
import org.apache.roller.util.Utilities;
@@ -1195,7 +1195,9 @@
// add read more
List args = new ArrayList();
args.add(readMoreLink);
- String readMore =
MessageUtilities.getString("macro.weblog.readMoreLink", args);
+
+ // TODO: we need a more appropriate way to get the view
locale here
+ String readMore =
I18nMessages.getMessages(getWebsite().getLocaleInstance()).getString("macro.weblog.readMoreLink",
args);
displayContent += readMore;
}
Modified: roller/trunk/src/org/apache/roller/pojos/WebsiteData.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/pojos/WebsiteData.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
--- roller/trunk/src/org/apache/roller/pojos/WebsiteData.java (original)
+++ roller/trunk/src/org/apache/roller/pojos/WebsiteData.java Wed May 23
12:13:16 2007
@@ -44,6 +44,7 @@
import org.apache.roller.business.Roller;
import org.apache.roller.business.themes.ThemeManager;
import org.apache.roller.business.WeblogManager;
+import org.apache.roller.util.I18nUtils;
/**
* Website has many-to-many association with users. Website has one-to-many and
@@ -695,32 +696,17 @@
this.lastModified = other.getLastModified();
}
+
/**
* Parse locale value and instantiate a Locale object,
* otherwise return default Locale.
*
- * @roller.wrapPojoMethod type="simple"
* @return Locale
*/
public Locale getLocaleInstance() {
- if (locale != null) {
- String[] localeStr = StringUtils.split(locale,"_");
- if (localeStr.length == 1) {
- if (localeStr[0] == null) localeStr[0] = "";
- return new Locale(localeStr[0]);
- } else if (localeStr.length == 2) {
- if (localeStr[0] == null) localeStr[0] = "";
- if (localeStr[1] == null) localeStr[1] = "";
- return new Locale(localeStr[0], localeStr[1]);
- } else if (localeStr.length == 3) {
- if (localeStr[0] == null) localeStr[0] = "";
- if (localeStr[1] == null) localeStr[1] = "";
- if (localeStr[2] == null) localeStr[2] = "";
- return new Locale(localeStr[0], localeStr[1], localeStr[2]);
- }
- }
- return Locale.getDefault();
+ return I18nUtils.toLocale(getLocale());
}
+
/**
* Return TimeZone instance for value of timeZone,
Modified: roller/trunk/src/org/apache/roller/ui/core/plugins/TextEditor.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/core/plugins/TextEditor.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
--- roller/trunk/src/org/apache/roller/ui/core/plugins/TextEditor.java
(original)
+++ roller/trunk/src/org/apache/roller/ui/core/plugins/TextEditor.java Wed May
23 12:13:16 2007
@@ -18,7 +18,8 @@
package org.apache.roller.ui.core.plugins;
-import org.apache.roller.util.MessageUtilities;
+import java.util.Locale;
+import org.apache.roller.util.I18nMessages;
/**
@@ -35,7 +36,7 @@
}
public String getName() {
- return MessageUtilities.getString("editor.text.name");
+ return "editor.text.name";
}
public String getJspPage() {
Modified: roller/trunk/src/org/apache/roller/ui/core/plugins/XinhaEditor.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/core/plugins/XinhaEditor.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
--- roller/trunk/src/org/apache/roller/ui/core/plugins/XinhaEditor.java
(original)
+++ roller/trunk/src/org/apache/roller/ui/core/plugins/XinhaEditor.java Wed May
23 12:13:16 2007
@@ -18,7 +18,8 @@
package org.apache.roller.ui.core.plugins;
-import org.apache.roller.util.MessageUtilities;
+import java.util.Locale;
+import org.apache.roller.util.I18nMessages;
/**
@@ -35,7 +36,7 @@
}
public String getName() {
- return MessageUtilities.getString("editor.xinha.name");
+ return "editor.xinha.name";
}
public String getJspPage() {
Modified: roller/trunk/src/org/apache/roller/ui/core/tags/menu/MenuTag.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/core/tags/menu/MenuTag.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
--- roller/trunk/src/org/apache/roller/ui/core/tags/menu/MenuTag.java (original)
+++ roller/trunk/src/org/apache/roller/ui/core/tags/menu/MenuTag.java Wed May
23 12:13:16 2007
@@ -20,12 +20,13 @@
import java.util.HashMap;
import java.util.Iterator;
+import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.velocity.VelocityContext;
import org.apache.roller.ui.core.tags.VelocityTag;
-import org.apache.roller.ui.rendering.model.MessageModel;
+import org.apache.roller.util.I18nMessages;
/**
* @jsp.tag name="Menu"
@@ -49,7 +50,8 @@
ctx.put("req", req );
ctx.put("res", res );
- MessageModel messageModel = new MessageModel();
+ // TODO: this doesn't support proper i18n
+ I18nMessages messageModel =
I18nMessages.getMessages(Locale.getDefault());
ctx.put("text", messageModel);
Map mapCtx = new HashMap();
Modified:
roller/trunk/src/org/apache/roller/ui/rendering/model/MessageModel.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/rendering/model/MessageModel.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
--- roller/trunk/src/org/apache/roller/ui/rendering/model/MessageModel.java
(original)
+++ roller/trunk/src/org/apache/roller/ui/rendering/model/MessageModel.java Wed
May 23 12:13:16 2007
@@ -21,7 +21,8 @@
import java.util.List;
import java.util.Map;
import org.apache.roller.RollerException;
-import org.apache.roller.util.MessageUtilities;
+import org.apache.roller.ui.rendering.util.WeblogRequest;
+import org.apache.roller.util.I18nMessages;
/**
@@ -30,6 +31,8 @@
*/
public class MessageModel implements Model {
+ I18nMessages messages = null;
+
/** Template context name to be used for model */
public String getModelName() {
@@ -39,19 +42,27 @@
/** Init page model based on request */
public void init(Map initData) throws RollerException {
- // no-op
+
+ // we expect the init data to contain a weblogRequest object
+ WeblogRequest weblogRequest = (WeblogRequest)
initData.get("weblogRequest");
+ if(weblogRequest == null) {
+ throw new RollerException("expected weblogRequest from init data");
+ }
+
+ // get messages util based on desired locale
+ this.messages =
I18nMessages.getMessages(weblogRequest.getLocaleInstance());
}
/** Return message string */
public String get(String key) {
- return MessageUtilities.getString(key);
+ return messages.getString(key);
}
/** Return parameterized message string */
public String get(String key, List args) {
- return MessageUtilities.getString(key, args);
+ return messages.getString(key, args);
}
}
Modified:
roller/trunk/src/org/apache/roller/ui/rendering/model/SearchResultsFeedModel.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/rendering/model/SearchResultsFeedModel.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
---
roller/trunk/src/org/apache/roller/ui/rendering/model/SearchResultsFeedModel.java
(original)
+++
roller/trunk/src/org/apache/roller/ui/rendering/model/SearchResultsFeedModel.java
Wed May 23 12:13:16 2007
@@ -24,7 +24,6 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.ResourceBundle;
import java.util.Set;
import java.util.TreeSet;
@@ -61,9 +60,6 @@
public class SearchResultsFeedModel implements Model {
private static Log log = LogFactory.getLog(SearchResultsFeedModel.class);
-
- private static final ResourceBundle bundle =
- ResourceBundle.getBundle("ApplicationResources");
private WeblogFeedRequest feedRequest = null;
Modified:
roller/trunk/src/org/apache/roller/ui/rendering/model/SearchResultsModel.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/rendering/model/SearchResultsModel.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
---
roller/trunk/src/org/apache/roller/ui/rendering/model/SearchResultsModel.java
(original)
+++
roller/trunk/src/org/apache/roller/ui/rendering/model/SearchResultsModel.java
Wed May 23 12:13:16 2007
@@ -22,7 +22,6 @@
import java.sql.Timestamp;
import java.util.Date;
import java.util.Map;
-import java.util.ResourceBundle;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
@@ -38,7 +37,6 @@
import org.apache.roller.business.Roller;
import org.apache.roller.business.RollerFactory;
import org.apache.roller.business.WeblogManager;
-import org.apache.roller.pojos.WeblogCategoryData;
import org.apache.roller.pojos.WeblogEntryData;
import org.apache.roller.pojos.WeblogEntryWrapperComparator;
import org.apache.roller.pojos.wrapper.WeblogCategoryDataWrapper;
@@ -47,6 +45,7 @@
import org.apache.roller.ui.rendering.pagers.WeblogEntriesPager;
import org.apache.roller.ui.rendering.util.WeblogSearchRequest;
import org.apache.roller.util.DateUtil;
+import org.apache.roller.util.I18nMessages;
/**
@@ -56,9 +55,6 @@
*/
public class SearchResultsModel extends PageModel {
- private static final ResourceBundle bundle =
- ResourceBundle.getBundle("ApplicationResources");
-
public static final int RESULTS_PER_PAGE = 10;
@@ -117,7 +113,7 @@
if (search.getResultsCount() == -1) {
// this means there has been a parsing (or IO) error
- this.errorMessage = bundle.getString("error.searchProblem");
+ this.errorMessage =
I18nMessages.getMessages(searchRequest.getLocaleInstance()).getString("error.searchProblem");
} else {
Hits hits = search.getResults();
this.hits = search.getResultsCount();
Modified:
roller/trunk/src/org/apache/roller/ui/rendering/pagers/AbstractWeblogEntriesPager.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/rendering/pagers/AbstractWeblogEntriesPager.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
---
roller/trunk/src/org/apache/roller/ui/rendering/pagers/AbstractWeblogEntriesPager.java
(original)
+++
roller/trunk/src/org/apache/roller/ui/rendering/pagers/AbstractWeblogEntriesPager.java
Wed May 23 12:13:16 2007
@@ -24,13 +24,14 @@
import java.util.Calendar;
import java.util.Date;
import java.util.List;
+import java.util.Locale;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.config.RollerRuntimeConfig;
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.util.DateUtil;
-import org.apache.roller.util.MessageUtilities;
+import org.apache.roller.util.I18nMessages;
import org.apache.roller.util.URLUtilities;
@@ -45,6 +46,9 @@
private static Log log =
LogFactory.getLog(AbstractWeblogEntriesPager.class);
+ // message utils for doing i18n messages
+ I18nMessages messageUtils = null;
+
WebsiteData weblog = null;
String locale = null;
String pageLink = null;
@@ -88,6 +92,20 @@
this.page = page;
}
this.offset = length * page;
+
+ // get a message utils instance to handle i18n of messages
+ Locale viewLocale = null;
+ if(locale != null) {
+ String[] langCountry = locale.split("_");
+ if(langCountry.length == 1) {
+ viewLocale = new Locale(langCountry[0]);
+ } else if(langCountry.length == 2) {
+ viewLocale = new Locale(langCountry[0], langCountry[1]);
+ }
+ } else {
+ viewLocale = weblog.getLocaleInstance();
+ }
+ this.messageUtils = I18nMessages.getMessages(viewLocale);
}
@@ -102,7 +120,7 @@
public String getHomeName() {
- return MessageUtilities.getString("weblogEntriesPager.latest.home");
+ return messageUtils.getString("weblogEntriesPager.latest.home");
}
@@ -116,7 +134,7 @@
public String getNextName() {
if (hasMoreEntries()) {
- return
MessageUtilities.getString("weblogEntriesPager.latest.next");
+ return messageUtils.getString("weblogEntriesPager.latest.next");
}
return null;
}
@@ -132,7 +150,7 @@
public String getPrevName() {
if (page > 0) {
- return
MessageUtilities.getString("weblogEntriesPager.latest.prev");
+ return messageUtils.getString("weblogEntriesPager.latest.prev");
}
return null;
}
Modified:
roller/trunk/src/org/apache/roller/ui/rendering/pagers/SearchResultsFeedPager.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/rendering/pagers/SearchResultsFeedPager.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
---
roller/trunk/src/org/apache/roller/ui/rendering/pagers/SearchResultsFeedPager.java
(original)
+++
roller/trunk/src/org/apache/roller/ui/rendering/pagers/SearchResultsFeedPager.java
Wed May 23 12:13:16 2007
@@ -20,12 +20,11 @@
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
-import java.util.ResourceBundle;
-
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.ui.rendering.util.WeblogFeedRequest;
-import org.apache.roller.ui.rendering.util.WeblogSearchRequest;
+import org.apache.roller.util.I18nMessages;
import org.apache.roller.util.URLUtilities;
@@ -34,6 +33,9 @@
*/
public class SearchResultsFeedPager extends AbstractPager {
+ // message utils for doing i18n messages
+ I18nMessages messageUtils = null;
+
private List entries = null;
private WebsiteData weblog = null;
@@ -43,8 +45,6 @@
private String url = null;
- private static ResourceBundle bundle =
- ResourceBundle.getBundle("ApplicationResources");
public SearchResultsFeedPager(String baseUrl, int pageNum,
WeblogFeedRequest feedRequest, List entries, boolean more) {
@@ -63,6 +63,20 @@
// does this pager have more results?
this.moreResults = more;
+
+ // get a message utils instance to handle i18n of messages
+ Locale viewLocale = null;
+ if(feedRequest.getLocale() != null) {
+ String[] langCountry = feedRequest.getLocale().split("_");
+ if(langCountry.length == 1) {
+ viewLocale = new Locale(langCountry[0]);
+ } else if(langCountry.length == 2) {
+ viewLocale = new Locale(langCountry[0], langCountry[1]);
+ }
+ } else {
+ viewLocale = weblog.getLocaleInstance();
+ }
+ this.messageUtils = I18nMessages.getMessages(viewLocale);
}
public List getItems() {
@@ -78,7 +92,7 @@
}
public String getHomeName() {
- return bundle.getString("searchPager.home");
+ return messageUtils.getString("searchPager.home");
}
protected String createURL(String url, Map params) {
Modified:
roller/trunk/src/org/apache/roller/ui/rendering/pagers/SearchResultsPager.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/rendering/pagers/SearchResultsPager.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
---
roller/trunk/src/org/apache/roller/ui/rendering/pagers/SearchResultsPager.java
(original)
+++
roller/trunk/src/org/apache/roller/ui/rendering/pagers/SearchResultsPager.java
Wed May 23 12:13:16 2007
@@ -18,10 +18,11 @@
package org.apache.roller.ui.rendering.pagers;
+import java.util.Locale;
import java.util.Map;
-import java.util.ResourceBundle;
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.ui.rendering.util.WeblogSearchRequest;
+import org.apache.roller.util.I18nMessages;
import org.apache.roller.util.URLUtilities;
@@ -30,6 +31,9 @@
*/
public class SearchResultsPager implements WeblogEntriesPager {
+ // message utils for doing i18n messages
+ I18nMessages messageUtils = null;
+
private Map entries = null;
private WebsiteData weblog = null;
@@ -39,9 +43,6 @@
private int page = 0;
private boolean moreResults = false;
- private static ResourceBundle bundle =
- ResourceBundle.getBundle("ApplicationResources");
-
public SearchResultsPager() {}
@@ -59,6 +60,20 @@
// does this pager have more results?
this.moreResults = more;
+
+ // get a message utils instance to handle i18n of messages
+ Locale viewLocale = null;
+ if(locale != null) {
+ String[] langCountry = locale.split("_");
+ if(langCountry.length == 1) {
+ viewLocale = new Locale(langCountry[0]);
+ } else if(langCountry.length == 2) {
+ viewLocale = new Locale(langCountry[0], langCountry[1]);
+ }
+ } else {
+ viewLocale = weblog.getLocaleInstance();
+ }
+ this.messageUtils = I18nMessages.getMessages(viewLocale);
}
@@ -72,7 +87,7 @@
}
public String getHomeName() {
- return bundle.getString("searchPager.home");
+ return messageUtils.getString("searchPager.home");
}
@@ -85,7 +100,7 @@
public String getNextName() {
if (getNextLink() != null) {
- return bundle.getString("searchPager.next");
+ return messageUtils.getString("searchPager.next");
}
return null;
}
@@ -99,7 +114,7 @@
public String getPrevName() {
if (getPrevLink() != null) {
- return bundle.getString("searchPager.prev");
+ return messageUtils.getString("searchPager.prev");
}
return null;
}
Modified:
roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
---
roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java
(original)
+++
roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java
Wed May 23 12:13:16 2007
@@ -36,7 +36,7 @@
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.pojos.wrapper.WeblogEntryDataWrapper;
import org.apache.roller.util.DateUtil;
-import org.apache.roller.util.MessageUtilities;
+import org.apache.roller.util.I18nMessages;
/**
@@ -46,8 +46,7 @@
private static Log log = LogFactory.getLog(WeblogEntriesDayPager.class);
- private SimpleDateFormat dayFormat = new SimpleDateFormat(
- MessageUtilities.getString("weblogEntriesPager.day.dateFormat"));
+ private SimpleDateFormat dayFormat = new SimpleDateFormat();
private Date day;
private Date nextDay;
@@ -72,6 +71,9 @@
super(weblog, locale, pageLink, entryAnchor, dateString, catPath,
tags, page);
+ dayFormat = new SimpleDateFormat(
+ messageUtils.getString("weblogEntriesPager.day.dateFormat"));
+
getEntries();
day = parseDate(dateString);
@@ -165,7 +167,7 @@
public String getHomeName() {
- return MessageUtilities.getString("weblogEntriesPager.day.home");
+ return messageUtils.getString("weblogEntriesPager.day.home");
}
@@ -179,7 +181,7 @@
public String getNextName() {
if (getNextLink() != null) {
- return MessageUtilities.getString("weblogEntriesPager.day.next",
new Object[] {dayFormat.format(day)});
+ return messageUtils.getString("weblogEntriesPager.day.next", new
Object[] {dayFormat.format(day)});
}
return null;
}
@@ -195,7 +197,7 @@
public String getPrevName() {
if (getPrevLink() != null) {
- return MessageUtilities.getString("weblogEntriesPager.day.prev",
new Object[] {dayFormat.format(day)});
+ return messageUtils.getString("weblogEntriesPager.day.prev", new
Object[] {dayFormat.format(day)});
}
return null;
}
@@ -212,7 +214,7 @@
public String getNextCollectionName() {
if (nextDay != null) {
- return
MessageUtilities.getString("weblogEntriesPager.day.nextCollection", new
Object[] {dayFormat.format(nextDay)});
+ return
messageUtils.getString("weblogEntriesPager.day.nextCollection", new Object[]
{dayFormat.format(nextDay)});
}
return null;
}
@@ -229,7 +231,7 @@
public String getPrevCollectionName() {
if (prevDay != null) {
- return
MessageUtilities.getString("weblogEntriesPager.day.prevCollection", new
Object[] {dayFormat.format(prevDay)});
+ return
messageUtils.getString("weblogEntriesPager.day.prevCollection", new Object[]
{dayFormat.format(prevDay)});
}
return null;
}
Modified:
roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
---
roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java
(original)
+++
roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java
Wed May 23 12:13:16 2007
@@ -34,7 +34,7 @@
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.pojos.wrapper.WeblogEntryDataWrapper;
import org.apache.roller.util.DateUtil;
-import org.apache.roller.util.MessageUtilities;
+import org.apache.roller.util.I18nMessages;
/**
@@ -44,8 +44,7 @@
private static Log log = LogFactory.getLog(WeblogEntriesMonthPager.class);
- private SimpleDateFormat monthFormat = new SimpleDateFormat(
- MessageUtilities.getString("weblogEntriesPager.month.dateFormat"));
+ private SimpleDateFormat monthFormat = new SimpleDateFormat();
private Date month;
private Date nextMonth;
@@ -70,6 +69,9 @@
super(weblog, locale, pageLink, entryAnchor, dateString, catPath,
tags, page);
+ monthFormat = new SimpleDateFormat(
+ messageUtils.getString("weblogEntriesPager.month.dateFormat"));
+
getEntries();
month = parseDate(dateString);
@@ -155,7 +157,7 @@
public String getHomeName() {
- return MessageUtilities.getString("weblogEntriesPager.month.home");
+ return messageUtils.getString("weblogEntriesPager.month.home");
}
@@ -169,7 +171,7 @@
public String getNextName() {
if (getNextLink() != null) {
- return MessageUtilities.getString("weblogEntriesPager.month.next",
new Object[] {monthFormat.format(month)});
+ return messageUtils.getString("weblogEntriesPager.month.next", new
Object[] {monthFormat.format(month)});
}
return null;
}
@@ -185,7 +187,7 @@
public String getPrevName() {
if (getPrevLink() != null) {
- return MessageUtilities.getString("weblogEntriesPager.month.prev",
new Object[] {monthFormat.format(month)});
+ return messageUtils.getString("weblogEntriesPager.month.prev", new
Object[] {monthFormat.format(month)});
}
return null;
}
@@ -202,7 +204,7 @@
public String getNextCollectionName() {
if (nextMonth != null) {
- return
MessageUtilities.getString("weblogEntriesPager.month.nextCollection", new
Object[] {monthFormat.format(nextMonth)});
+ return
messageUtils.getString("weblogEntriesPager.month.nextCollection", new Object[]
{monthFormat.format(nextMonth)});
}
return null;
}
@@ -219,7 +221,7 @@
public String getPrevCollectionName() {
if (prevMonth != null) {
- return
MessageUtilities.getString("weblogEntriesPager.month.prevCollection", new
Object[] {monthFormat.format(prevMonth)});
+ return
messageUtils.getString("weblogEntriesPager.month.prevCollection", new Object[]
{monthFormat.format(prevMonth)});
}
return null;
}
Modified:
roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
---
roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java
(original)
+++
roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java
Wed May 23 12:13:16 2007
@@ -33,7 +33,7 @@
import org.apache.roller.pojos.WeblogEntryData;
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.pojos.wrapper.WeblogEntryDataWrapper;
-import org.apache.roller.util.MessageUtilities;
+import org.apache.roller.util.I18nMessages;
import org.apache.roller.util.Utilities;
@@ -92,7 +92,7 @@
public String getHomeName() {
- return MessageUtilities.getString("weblogEntriesPager.single.home");
+ return messageUtils.getString("weblogEntriesPager.single.home");
}
@@ -107,7 +107,7 @@
public String getNextName() {
if (getNextEntry() != null) {
String title = Utilities.truncateNicely(getNextEntry().getTitle(),
15, 20, "...");
- return
MessageUtilities.getString("weblogEntriesPager.single.next", new Object[]
{title});
+ return messageUtils.getString("weblogEntriesPager.single.next",
new Object[] {title});
}
return null;
}
@@ -124,7 +124,7 @@
public String getPrevName() {
if (getPrevEntry() != null) {
String title = Utilities.truncateNicely(getPrevEntry().getTitle(),
15, 20, "...");
- return
MessageUtilities.getString("weblogEntriesPager.single.prev", new Object[]
{title});
+ return messageUtils.getString("weblogEntriesPager.single.prev",
new Object[] {title});
}
return null;
}
Modified:
roller/trunk/src/org/apache/roller/ui/rendering/servlets/CommentServlet.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/rendering/servlets/CommentServlet.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
---
roller/trunk/src/org/apache/roller/ui/rendering/servlets/CommentServlet.java
(original)
+++
roller/trunk/src/org/apache/roller/ui/rendering/servlets/CommentServlet.java
Wed May 23 12:13:16 2007
@@ -23,7 +23,6 @@
import java.text.MessageFormat;
import java.util.Iterator;
import java.util.List;
-import java.util.ResourceBundle;
import java.util.Set;
import java.util.TreeSet;
import javax.mail.MessagingException;
@@ -60,6 +59,7 @@
import org.apache.roller.util.GenericThrottle;
import org.apache.roller.util.IPBanList;
import org.apache.roller.util.MailUtil;
+import org.apache.roller.util.I18nMessages;
import org.apache.roller.util.RollerMessages;
import org.apache.roller.util.RollerMessages.RollerMessage;
import org.apache.roller.util.URLUtilities;
@@ -85,7 +85,6 @@
public class CommentServlet extends HttpServlet {
private static Log log = LogFactory.getLog(CommentServlet.class);
- private ResourceBundle bundle =
ResourceBundle.getBundle("ApplicationResources");
private static final String EMAIL_ADDR_REGEXP = "[EMAIL PROTECTED],}$";
@@ -260,14 +259,16 @@
cf.setPreview(comment);
}
+ I18nMessages messageUtils =
I18nMessages.getMessages(commentRequest.getLocaleInstance());
+
// check if comments are allowed for this entry
// this checks site-wide settings, weblog settings, and entry settings
if(!entry.getCommentsStillAllowed() || !entry.isPublished()) {
- error = bundle.getString("comments.disabled");
+ error = messageUtils.getString("comments.disabled");
// if this is a real comment post then authenticate request
} else if(!preview && !this.authenticator.authenticate(request)) {
- error = bundle.getString("error.commentAuthFailed");
+ error = messageUtils.getString("error.commentAuthFailed");
log.debug("Comment failed authentication");
}
@@ -288,14 +289,14 @@
if (validationScore == 100 &&
weblog.getCommentModerationRequired()) {
// Valid comments go into moderation if required
comment.setStatus(CommentData.PENDING);
- message =
bundle.getString("commentServlet.submittedToModerator");
+ message =
messageUtils.getString("commentServlet.submittedToModerator");
} else if (validationScore == 100) {
// else they're approved
comment.setStatus(CommentData.APPROVED);
} else {
// Invalid comments are marked as spam
comment.setStatus(CommentData.SPAM);
- error = bundle.getString("commentServlet.commentMarkedAsSpam");
+ error =
messageUtils.getString("commentServlet.commentMarkedAsSpam");
log.debug("Comment marked as spam");
}
@@ -310,7 +311,7 @@
// Send email notifications, but only to subscribers if
comment is 100% valid
boolean notifySubscribers = (validationScore == 100);
String rootURL =
RollerRuntimeConfig.getAbsoluteContextURL();
- sendEmailNotification(comment, notifySubscribers,
messages, rootURL);
+ sendEmailNotification(comment, notifySubscribers,
messages, rootURL, messageUtils);
// only re-index/invalidate the cache if comment isn't
moderated
if(!weblog.getCommentModerationRequired()) {
@@ -378,10 +379,7 @@
*/
public static void sendEmailNotification(
CommentData commentObject, boolean notifySubscribers,
- RollerMessages messages, String rootURL) {
-
- // Send commment notifications in locale of server
- ResourceBundle resources =
ResourceBundle.getBundle("ApplicationResources");
+ RollerMessages messages, String rootURL, I18nMessages resources) {
WeblogEntryData entry = commentObject.getWeblogEntry();
WebsiteData site = entry.getWebsite();
@@ -587,10 +585,7 @@
*
* TODO: Make the addressing options configurable on a per-website basis.
*/
- public static void sendEmailApprovalNotification(CommentData cd, String
rootURL) {
-
- // Send commment notifications in locale of server
- ResourceBundle resources =
ResourceBundle.getBundle("ApplicationResources");
+ public static void sendEmailApprovalNotification(CommentData cd, String
rootURL, I18nMessages resources) {
WeblogEntryData entry = cd.getWeblogEntry();
WebsiteData site = entry.getWebsite();
@@ -669,4 +664,3 @@
}
}
-
Modified:
roller/trunk/src/org/apache/roller/ui/rendering/servlets/TrackbackServlet.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/rendering/servlets/TrackbackServlet.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
---
roller/trunk/src/org/apache/roller/ui/rendering/servlets/TrackbackServlet.java
(original)
+++
roller/trunk/src/org/apache/roller/ui/rendering/servlets/TrackbackServlet.java
Wed May 23 12:13:16 2007
@@ -40,6 +40,7 @@
import org.apache.roller.ui.rendering.util.CommentValidationManager;
import org.apache.roller.ui.rendering.util.TrackbackLinkbackCommentValidator;
import org.apache.roller.ui.rendering.util.WeblogTrackbackRequest;
+import org.apache.roller.util.I18nMessages;
import org.apache.roller.util.RollerMessages;
import org.apache.roller.util.cache.CacheManager;
@@ -191,7 +192,8 @@
// Send email notifications
String rootURL =
RollerRuntimeConfig.getAbsoluteContextURL();
- CommentServlet.sendEmailNotification(comment,
validationScore == 100, messages, rootURL);
+ CommentServlet.sendEmailNotification(comment,
validationScore == 100, messages, rootURL,
+
I18nMessages.getMessages(trackbackRequest.getLocaleInstance()));
if(CommentData.PENDING.equals(comment.getStatus())) {
pw.println(this.getSuccessResponse("Trackback
submitted to moderator"));
Copied: roller/trunk/src/org/apache/roller/util/I18nMessages.java (from
r540790, roller/trunk/src/org/apache/roller/util/MessageUtilities.java)
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/util/I18nMessages.java?view=diff&rev=541035&p1=roller/trunk/src/org/apache/roller/util/MessageUtilities.java&r1=540790&p2=roller/trunk/src/org/apache/roller/util/I18nMessages.java&r2=541035
==============================================================================
--- roller/trunk/src/org/apache/roller/util/MessageUtilities.java (original)
+++ roller/trunk/src/org/apache/roller/util/I18nMessages.java Wed May 23
12:13:16 2007
@@ -19,32 +19,100 @@
package org.apache.roller.util;
import java.text.MessageFormat;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
+import java.util.Map;
import java.util.ResourceBundle;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
- * A utilities class for interacting with the Roller resource bundles.
+ * A utility class for handling i18n messaging.
*/
-public class MessageUtilities {
+public final class I18nMessages {
- private static Log log = LogFactory.getLog(MessageUtilities.class);
+ private static final Log log = LogFactory.getLog(I18nMessages.class);
- private static final ResourceBundle bundle =
- ResourceBundle.getBundle("ApplicationResources");
+ // locale and bundle we are using for messaging
+ private final Locale locale;
+ private final ResourceBundle bundle;
+ // a map of cached messages instances, keyed by locale
+ private static Map<Locale, I18nMessages> messagesMap =
+ Collections.synchronizedMap(new HashMap());
- // no instantiation
- private MessageUtilities() {
+
+ private I18nMessages(String locale) {
+ Locale loc = I18nUtils.toLocale(locale);
+ this.locale = loc;
+ this.bundle = ResourceBundle.getBundle("ApplicationResources", loc);
+ }
+
+ private I18nMessages(Locale locale) {
+ this.locale = locale;
+ this.bundle = ResourceBundle.getBundle("ApplicationResources", locale);
+ }
+
+
+ /**
+ * Get an instance for a given locale.
+ */
+ public static I18nMessages getMessages(String locale) {
+
+ log.debug("request for messages in locale = "+locale);
+
+ // check if we already have a message utils created for that locale
+ I18nMessages messages = messagesMap.get(locale);
+
+ // if no utils for that language yet then construct
+ if(messages == null) {
+ messages = new I18nMessages(locale);
+
+ // keep a reference to it
+ messagesMap.put(messages.getLocale(), messages);
+ }
+
+ return messages;
+ }
+
+
+ /**
+ * Get an instance for a given locale.
+ */
+ public static I18nMessages getMessages(Locale locale) {
+
+ log.debug("request for messages in locale = "+locale.toString());
+
+ // check if we already have a message utils created for that locale
+ I18nMessages messages = messagesMap.get(locale);
+
+ // if no utils for that language yet then construct
+ if(messages == null) {
+ messages = new I18nMessages(locale);
+
+ // keep a reference to it
+ messagesMap.put(messages.getLocale(), messages);
+ }
+
+ return messages;
+ }
+
+
+ /**
+ * The locale representing this message utils.
+ */
+ public final Locale getLocale() {
+ return this.locale;
}
/**
* Get a message from the bundle.
*/
- public static final String getString(String key) {
+ public final String getString(String key) {
try {
return bundle.getString(key);
@@ -60,7 +128,7 @@
* Get a message from the bundle and substitute the given args into
* the message contents.
*/
- public static final String getString(String key, List args) {
+ public final String getString(String key, List args) {
try {
String msg = bundle.getString(key);
@@ -77,7 +145,7 @@
* Get a message from the bundle and substitute the given args into
* the message contents.
*/
- public static final String getString(String key, Object[] args) {
+ public final String getString(String key, Object[] args) {
try {
String msg = bundle.getString(key);
Added: roller/trunk/src/org/apache/roller/util/I18nUtils.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/util/I18nUtils.java?view=auto&rev=541035
==============================================================================
--- roller/trunk/src/org/apache/roller/util/I18nUtils.java (added)
+++ roller/trunk/src/org/apache/roller/util/I18nUtils.java Wed May 23 12:13:16
2007
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License. For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+
+package org.apache.roller.util;
+
+import java.util.Locale;
+import org.apache.commons.lang.StringUtils;
+
+
+/**
+ * A utility class for dealing with i18n.
+ */
+public final class I18nUtils {
+
+ public static final Locale toLocale(String locale) {
+ if (locale != null) {
+ String[] localeStr = StringUtils.split(locale,"_");
+ if (localeStr.length == 1) {
+ if (localeStr[0] == null) localeStr[0] = "";
+ return new Locale(localeStr[0]);
+ } else if (localeStr.length == 2) {
+ if (localeStr[0] == null) localeStr[0] = "";
+ if (localeStr[1] == null) localeStr[1] = "";
+ return new Locale(localeStr[0], localeStr[1]);
+ } else if (localeStr.length == 3) {
+ if (localeStr[0] == null) localeStr[0] = "";
+ if (localeStr[1] == null) localeStr[1] = "";
+ if (localeStr[2] == null) localeStr[2] = "";
+ return new Locale(localeStr[0], localeStr[1], localeStr[2]);
+ }
+ }
+ return Locale.getDefault();
+ }
+
+}
Modified: roller/trunk/src/org/apache/roller/util/MailUtil.java
URL:
http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/util/MailUtil.java?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
--- roller/trunk/src/org/apache/roller/util/MailUtil.java (original)
+++ roller/trunk/src/org/apache/roller/util/MailUtil.java Wed May 23 12:13:16
2007
@@ -213,7 +213,7 @@
try {
ResourceBundle resources = ResourceBundle.getBundle(
- "ApplicationResources",
getLocaleInstance(user.getLocale()));
+ "ApplicationResources",
I18nUtils.toLocale(user.getLocale()));
String from = RollerRuntimeConfig.getProperty(
"user.account.activation.mail.from");
@@ -243,34 +243,6 @@
} catch (MessagingException e) {
throw new RollerException("ERROR: Problem sending activation
email.", e);
}
- }
-
-
- // TODO: there is a better place for this, but i am being lazy :/
- private static Locale getLocaleInstance(String locale) {
- if (locale != null) {
- String[] localeStr = StringUtils.split(locale, "_");
- if (localeStr.length == 1) {
- if (localeStr[0] == null)
- localeStr[0] = "";
- return new Locale(localeStr[0]);
- } else if (localeStr.length == 2) {
- if (localeStr[0] == null)
- localeStr[0] = "";
- if (localeStr[1] == null)
- localeStr[1] = "";
- return new Locale(localeStr[0], localeStr[1]);
- } else if (localeStr.length == 3) {
- if (localeStr[0] == null)
- localeStr[0] = "";
- if (localeStr[1] == null)
- localeStr[1] = "";
- if (localeStr[2] == null)
- localeStr[2] = "";
- return new Locale(localeStr[0], localeStr[1], localeStr[2]);
- }
- }
- return Locale.getDefault();
}
Modified: roller/trunk/web/WEB-INF/jsps/editor/WeblogConfig.jsp
URL:
http://svn.apache.org/viewvc/roller/trunk/web/WEB-INF/jsps/editor/WeblogConfig.jsp?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
--- roller/trunk/web/WEB-INF/jsps/editor/WeblogConfig.jsp (original)
+++ roller/trunk/web/WEB-INF/jsps/editor/WeblogConfig.jsp Wed May 23 12:13:16
2007
@@ -69,7 +69,7 @@
<tr>
<td class="label"><s:text name="websiteSettings.editor" /></td>
<td class="field">
- <s:select name="bean.editorPage" size="1" list="editorsList"
listKey="id" listValue="name" />
+ <s:select name="bean.editorPage" size="1" list="editorsList"
listKey="id" listValue="getText(name)" />
</td>
<td class="description"><%-- <s:text name="websiteSettings.tip." />
--%></td>
</tr>
Modified: roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-css.vm
URL:
http://svn.apache.org/viewvc/roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-css.vm?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
--- roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-css.vm (original)
+++ roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-css.vm Wed May 23
12:13:16 2007
@@ -7,8 +7,8 @@
#if( $item.isSelected( $req ) )<strong>#end
<li class="rMenuItem"><a
href="$item.getUrl( $ctx )"
- title="$text.get( $menu.getName() ):$text.get(
$item.getName() )"
- >$text.get( $menu.getName() ):$text.get( $item.getName()
)</a></li>
+ title="$text.getString( $menu.getName()
):$text.getString( $item.getName() )"
+ >$text.getString( $menu.getName() ):$text.getString(
$item.getName() )</a></li>
#if( $item.isSelected( $req ) )</strong>#end
#end
#end
Modified:
roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-horizontal.vm
URL:
http://svn.apache.org/viewvc/roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-horizontal.vm?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
--- roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-horizontal.vm
(original)
+++ roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-horizontal.vm Wed
May 23 12:13:16 2007
@@ -6,7 +6,7 @@
#if ($count > 0)
|
#end
- <a href="$item.getUrl( $ctx )">$text.get($item.getName())</a>
+ <a href="$item.getUrl( $ctx
)">$text.getString($item.getName())</a>
#set($count = $count + 1)
#end
#end
Modified: roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-vertical.vm
URL:
http://svn.apache.org/viewvc/roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-vertical.vm?view=diff&rev=541035&r1=541034&r2=541035
==============================================================================
--- roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-vertical.vm
(original)
+++ roller/trunk/web/WEB-INF/velocity/templates/navbar/navbar-vertical.vm Wed
May 23 12:13:16 2007
@@ -3,7 +3,7 @@
<ul class="rMenu">
#foreach( $item in $menu.getMenuItems() )
#if ($menu.isPermitted($req))
- <li><a href="$item.getUrl( $ctx )">$text.get( $menu.getName()
):$text.get( $item.getName() )</a></li>
+ <li><a href="$item.getUrl( $ctx )">$text.getString(
$menu.getName() ):$text.getString( $item.getName() )</a></li>
#end
#end
</ul>