]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/LocaleUtils.java
3 import java
.security
.AccessController
;
4 import java
.util
.ArrayList
;
6 import java
.util
.Locale
;
7 import java
.util
.ResourceBundle
;
9 import javax
.security
.auth
.Subject
;
11 import org
.argeo
.cms
.auth
.CurrentUser
;
13 /** Utilities simplifying the development of localization enums. */
14 public class LocaleUtils
{
15 public static String
local(Enum
<?
> en
) {
16 return local(en
, getCurrentLocale(), "/OSGI-INF/l10n/bundle");
19 public static String
local(Enum
<?
> en
, Locale locale
) {
20 return local(en
, locale
, "/OSGI-INF/l10n/bundle");
23 public static String
local(Enum
<?
> en
, Locale locale
, String resource
) {
24 return local(en
, locale
, resource
, en
.getClass().getClassLoader());
27 public static String
local(Enum
<?
> en
, Locale locale
, String resource
, ClassLoader classLoader
) {
28 return local(en
.name(), locale
, resource
, classLoader
);
31 public static String
local(String key
, ClassLoader classLoader
) {
32 return local(key
, getCurrentLocale(), "/OSGI-INF/l10n/bundle", classLoader
);
35 public static String
local(String key
, Locale locale
, ClassLoader classLoader
) {
36 return local(key
, locale
, "/OSGI-INF/l10n/bundle", classLoader
);
39 public static String
local(String key
, Locale locale
, String resource
, ClassLoader classLoader
) {
40 ResourceBundle rb
= ResourceBundle
.getBundle(resource
, locale
, classLoader
);
41 assert key
.length() > 2;
43 key
= key
.substring(1);
44 return rb
.getString(key
);
47 public static boolean isLocaleKey(String str
) {
48 if (str
.length() > 2 && ('%' == str
.charAt(0)))
54 public static String
lead(String raw
, Locale locale
) {
55 return raw
.substring(0, 1).toUpperCase(locale
) + raw
.substring(1);
58 public static String
lead(Localized localized
) {
59 return lead(localized
, getCurrentLocale());
62 public static String
lead(Localized localized
, Locale locale
) {
63 return lead(localized
.local(locale
).toString(), locale
);
66 static Locale
getCurrentLocale() {
67 if (Subject
.getSubject(AccessController
.getContext()) != null)
68 return CurrentUser
.locale();
70 return Locale
.getDefault();
71 // return UiContext.getLocale();
72 // FIXME look into Subject or settings
73 // return Locale.getDefault();
76 /** Returns null if argument is null. */
77 public static List
<Locale
> asLocaleList(Object locales
) {
80 ArrayList
<Locale
> availableLocales
= new ArrayList
<Locale
>();
81 String
[] codes
= locales
.toString().split(",");
82 for (int i
= 0; i
< codes
.length
; i
++) {
83 String code
= codes
[i
];
84 // variant not supported
85 int indexUnd
= code
.indexOf("_");
88 String language
= code
.substring(0, indexUnd
);
89 String country
= code
.substring(indexUnd
+ 1);
90 locale
= new Locale(language
, country
);
92 locale
= new Locale(code
);
94 availableLocales
.add(locale
);
96 return availableLocales
;