]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/i18n/LocaleUtils.java
1 package org
.argeo
.cms
.i18n
;
3 import java
.util
.ArrayList
;
5 import java
.util
.Locale
;
6 import java
.util
.ResourceBundle
;
8 /** Utilities simplifying the development of localization enums. */
9 public class LocaleUtils
{
10 public static Object
local(Enum
<?
> en
) {
11 return local(en
, getCurrentLocale(), "/OSGI-INF/l10n/bundle");
14 public static Object
local(Enum
<?
> en
, Locale locale
) {
15 return local(en
, locale
, "/OSGI-INF/l10n/bundle");
18 public static Object
local(Enum
<?
> en
, Locale locale
, String resource
) {
19 return local(en
, locale
, resource
, en
.getClass().getClassLoader());
22 public static Object
local(Enum
<?
> en
, Locale locale
, String resource
, ClassLoader classLoader
) {
23 ResourceBundle rb
= ResourceBundle
.getBundle(resource
, locale
, classLoader
);
24 return rb
.getString(en
.name());
27 public static String
lead(String raw
, Locale locale
) {
28 return raw
.substring(0, 1).toUpperCase(locale
) + raw
.substring(1);
31 public static String
lead(Localized localized
) {
32 return lead(localized
, getCurrentLocale());
35 public static String
lead(Localized localized
, Locale locale
) {
36 return lead(localized
.local(locale
).toString(), locale
);
39 static Locale
getCurrentLocale() {
40 // return UiContext.getLocale();
41 // FIXME look into Subject or settings
42 return Locale
.getDefault();
45 /** Returns null if argument is null. */
46 public static List
<Locale
> asLocaleList(Object locales
) {
49 ArrayList
<Locale
> availableLocales
= new ArrayList
<Locale
>();
50 String
[] codes
= locales
.toString().split(",");
51 for (int i
= 0; i
< codes
.length
; i
++) {
52 String code
= codes
[i
];
53 // variant not supported
54 int indexUnd
= code
.indexOf("_");
57 String language
= code
.substring(0, indexUnd
);
58 String country
= code
.substring(indexUnd
+ 1);
59 locale
= new Locale(language
, country
);
61 locale
= new Locale(code
);
63 availableLocales
.add(locale
);
65 return availableLocales
;