[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/