/*
* Aipo is a groupware program developed by TOWN, Inc.
* Copyright (C) 2004-2015 TOWN, Inc.
* http://www.aipo.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.aimluck.eip.services.customlocalization;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import org.apache.jetspeed.om.security.JetspeedUser;
import org.apache.jetspeed.services.customlocalization.CustomLocalizationService;
import org.apache.turbine.services.localization.TurbineLocalizationService;
import org.apache.turbine.util.RunData;
/**
* <p>
* This class is the single point of access to all localization resources. It
* caches different ResourceBundles for different Locales.
* </p>
*
* Work in the same way of turbine except for getLocale(RunData data), turbine
* read the accept-language header in a http request, instead this method read
* the user.getPerm("language") from the RunData to obtain the language choice
* by the user without the browser language rule. If a user not change the
* language with a ChangeLanguagePortlet, and a user.getPerm("language")are not
* set, the "Accept-Language" header are read.
*
* @author <a href="mailto:desmax74@yahoo.it">Dess?ス Massimiliano</a>
* @version $Id: JetspeedLocalizationService.java,v 1.8 2004/02/23 03:49:33
* jford Exp $
*/
public class ALLocalizationService extends TurbineLocalizationService implements
CustomLocalizationService {
/**
* This method read if a user has set getPerm("language") to use another
* language or not. If not set , accept-language of the request are returned.
*
* @param data
* @return
*/
@Override
public final Locale getLocale(RunData data) {
JetspeedUser user = (JetspeedUser) data.getUser();
if (user == null) {
return getLocale(data.getRequest().getHeader(
CustomLocalizationService.ACCEPT_LANGUAGE));
} else {
String lang = "null";
try {
if (user.getPerm("language") == null) {
return getLocale(data.getRequest().getHeader(
CustomLocalizationService.ACCEPT_LANGUAGE));
} else {
lang = user.getPerm("language").toString();
Locale locale = new Locale(lang, "");
return locale;
}
} catch (Exception use) {
return getLocale(data.getRequest().getHeader(
CustomLocalizationService.ACCEPT_LANGUAGE));
}
}
}
@Override
protected void initBundleNames(String ignored[]) {
super.initBundleNames(ignored);
}
@Override
public ResourceBundle getBundle(String bundleName, Locale locale) {
try {
return super.getBundle(bundleName, locale);
} catch (MissingResourceException e) {
return super.getBundle(bundleName, Locale.JAPANESE);
}
}
}