/**
* Este arquivo é parte do Biblivre3.
*
* Biblivre3 é um software livre; você pode redistribuí-lo e/ou
* modificá-lo dentro dos termos da Licença Pública Geral GNU como
* publicada pela Fundação do Software Livre (FSF); na versão 3 da
* Licença, ou (caso queira) qualquer versão posterior.
*
* Este programa é distribuído na esperança de que possa ser útil,
* mas SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de
* MERCANTIBILIDADE OU ADEQUAÇÃO PARA UM FIM PARTICULAR. Veja a
* Licença Pública Geral GNU para maiores detalhes.
*
* Você deve ter recebido uma cópia da Licença Pública Geral GNU junto
* com este programa, Se não, veja em <http://www.gnu.org/licenses/>.
*
* @author Alberto Wagner <alberto@biblivre.org.br>
* @author Danniel Willian <danniel@biblivre.org.br>
*
*/
package mercury;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
*
* @author Danniel Nascimento
* @since 03/02/2009
*/
public class I18nUtils {
public static String formatCurrent;
private static final Pattern pattern = Pattern.compile("\\\\u([0-9A-F]{4})");
public static String getCurrentLanguage(final HttpSession session) {
String lang = (String)(session.getAttribute("I18N"));
if (lang == null || lang.trim().equals("")) {
lang = "pt_BR";
session.setAttribute("I18N", lang);
}
return lang;
}
public static Properties getProperties(final HttpSession session, final String module) {
String lang = I18nUtils.getCurrentLanguage(session);
final String attrName = "I18N_" + module + "." + lang;
final ServletContext sc = session.getServletContext();
return (Properties)(sc.getAttribute(attrName));
}
public static String getText(final HttpSession session, final String module, final String key) {
final Properties i18nProperties = I18nUtils.getProperties(session, module);
return I18nUtils.getText(i18nProperties, key);
}
public static String getText(final Properties i18nProperties, final String key) {
String text = null;
if (i18nProperties != null) {
text = i18nProperties.getProperty(key);
if (text != null) {
text = unescapeUTF8(text);
}
}
if (text == null) {
System.out.println("I18N Failed: " + key);
}
return text;
}
public static String unescapeUTF8(final String s) {
String res = s;
Matcher m = pattern.matcher(res);
while (m.find()) {
res = res.replaceAll("\\" + m.group(0), Character.toString((char) Integer.parseInt(m.group(1), 16)));
}
return res;
}
public static void currentLanguage(HttpServletRequest request) {
String lang = I18nUtils.getText(request.getSession(), "biblivre3", "DEFAULT_DATE_FORMAT");
formatCurrent = lang;
}
}