[Oracle ADF] Локализация
Локализация и Интенационализация здесь одна и таже тема.
Локаль по-умолчанию можно установить в faces-config:
1
2
3
4
5
6
7
8
9
10
11
12
13
<faces-config version= "2.1" xmlns= "http://java.sun.com/xml/ns/javaee" >
***
<locale-config>
<default-locale> en</default-locale>
<supported-locale> en</supported-locale>
<supported-locale> ru</supported-locale>
</locale-config>
***
</faces-config>
Формат даты вида dd-MM-yyy установить по умолчанию, например для английской локали можно следующим образом:
UPD! Мдя. Оказалось что данный способ ломает компонент . И как назло мы его используем!
При заходе на страницу с этим компонентом, он не отображается и кнопки на этой форме перестают работать.
Создал обсуждение:
https://community.oracle.com/thread/4099055
1
2
3
4
5
6
<trinidad-config xmlns= "http://myfaces.apache.org/trinidad/config" >
***
<formatting-locale> en-GB</formatting-locale>
***
</trinidad-config>
Подробнее на сайте:
http://soadev.blogspot.ru/2010/03/change-global-date-format-of-your.html
Установить локаль программно:
1
2
3
4
5
// String language = "en";
String language = "ru" ;
Locale locale = new Locale ( language );
FacesContext . getCurrentInstance (). getViewRoot (). setLocale ( locale );
Получить текущую локаль программно:
1
2
Locale locale = ( Locale ) FacesContext . getCurrentInstance (). getViewRoot (). getLocale ();
System . out . println ( "LOCALE " + locale . toString ());
Создать SOC с локалями:
1
2
3
4
5
6
<af:selectOneChoice value= "#{bindings.Language.inputValue}"
label= "#{usersBundle['users.user.language']}"
id= "soc3"
required= "true" >
<f:selectItems value= "#{pageFlowScope.MyBean.supportedLocales}" id= "si6" />
</af:selectOneChoice>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public List < SelectItem > getSupportedLocales () {
Iterator < Locale > iteratorSupportedLocales = FacesContext . getCurrentInstance ()
. getApplication ()
. getSupportedLocales ();
supportedLocales = new ArrayList < SelectItem >();
SelectItem itemLocale = null ;
while ( iteratorSupportedLocales . hasNext ()) {
Locale locale = iteratorSupportedLocales . next ();
itemLocale = new SelectItem ( locale . getLanguage (), locale . getDisplayName (), locale . getDisplayName ());
supportedLocales . add ( itemLocale );
}
return supportedLocales ;
}
Получить текущую локаль программно:
1
2
Locale locale = ( Locale ) FacesContext . getCurrentInstance (). getViewRoot (). getLocale ();
System . out . println ( "LOCALE " + locale . toString ());
Основные наработки:
Дополнительные наработки:
Еще куча всевозможных примеров в том числе на уровне БД.
https://technology.amis.nl/2012/08/10/implement-resource-bundles-for-adf-applications-in-a-database-table/