package org.argeo.cms;
-import java.security.AccessController;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
-import javax.security.auth.Subject;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.argeo.api.cms.CmsLog;
import org.argeo.cms.auth.CurrentUser;
/** Utilities simplifying the development of localization enums. */
public class LocaleUtils {
final static String DEFAULT_OSGI_l10N_BUNDLE = "/OSGI-INF/l10n/bundle";
- private final static Log log = LogFactory.getLog(LocaleUtils.class);
+ private final static CmsLog log = CmsLog.getLog(LocaleUtils.class);
private final static ThreadLocal<Locale> threadLocale = new ThreadLocal<>();
static Locale getCurrentLocale() {
Locale currentLocale = null;
- if (Subject.getSubject(AccessController.getContext()) != null)
+ if (CurrentUser.isAvailable())
currentLocale = CurrentUser.locale();
else if (threadLocale.get() != null) {
currentLocale = threadLocale.get();
// return Locale.getDefault();
}
- /** Returns null if argument is null. */
- public static List<Locale> asLocaleList(Object locales) {
- if (locales == null)
- return null;
- ArrayList<Locale> availableLocales = new ArrayList<Locale>();
- String[] codes = locales.toString().split(",");
- for (int i = 0; i < codes.length; i++) {
- String code = codes[i];
- // variant not supported
- int indexUnd = code.indexOf("_");
- Locale locale;
- if (indexUnd > 0) {
- String language = code.substring(0, indexUnd);
- String country = code.substring(indexUnd + 1);
- locale = new Locale(language, country);
- } else {
- locale = new Locale(code);
- }
- availableLocales.add(locale);
- }
- return availableLocales;
- }
}