1.1.31. fejezet, Többnyelvű felületek
A többnyelvűsítés Java-ban a ResourceBundle osztállyal valósítható meg. Segéd osztály a Locale, ami az összes nyelvi beállítást tartalmazza, a szám és dátum formázástól kezdve a megjelenített néven át mindenféle információt szolgáltat egy adott országról/nyelvről. Wildfly webalkalmazásban az erőforrásokat a webapp/WEB-INF/faces-config.xml tartalmazza:
<?xml version="1.0"?> <faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"> <application> <action-listener>org.primefaces.application.DialogActionListener</action-listener> <navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler> <view-handler>org.primefaces.application.DialogViewHandler</view-handler> <el-resolver>org.primefaces.application.exceptionhandler.PrimeExceptionHandlerELResolver</el-resolver> <locale-config> <default-locale>hu</default-locale> <supported-locale>en</supported-locale> </locale-config> <message-bundle>JsfMessageResources</message-bundle> <message-bundle>ValidationMessages</message-bundle> <resource-bundle> <base-name>i18n</base-name> <var>msg</var> </resource-bundle> <resource-bundle> <base-name>version</base-name> <var>ver</var> </resource-bundle> </application> <factory> <exception-handler-factory>org.primefaces.application.exceptionhandler.PrimeExceptionHandlerFactory</exception-handler-factory> </factory> </faces-config>
És pl. a magyar nyelvi fordításokat a main/resources/i18n_hu.properties fájl tartalmazza:
javax.faces.validator.BeanValidator.MESSAGE={1} {0} application.title=Alkalmazás neve system-menu=Rendszer settings-menu=Be\u00E1ll\u00EDt\u00E1sok server-info=Szerver inform\u00E1ci\u00F3k exit-menu=Kil\u00E9p\u00E9s empty-table-message=\u00FCres t\u00E1bla new-button=\u00DAj delete-button=T\u00F6rl\u00E9s save-button=Ment\u00E9s reset-button=Alap\u00E1llapot select-button=V\u00E1laszt\u00E1s cancel-button=M\u00E9gsem clear-button=Törlés
A properties fájlban figyelni kell arra, hogy a nem ASCII karakterkészletbe tartozó karaktereket kódolni kell. Ezért vannak a fenti mintában a hosszú ékezetes karakterek helyett a \u00... sorozattal kezdődő kódok. Ha nincsen a kiválasztott nyelvnek megfelelő properties fájl az elérési útvonalon, akkor az alapértelmezett nyelvi fájl kerül betöltésre. Ha ez nem kívánatosnak tartjuk, használhatjuk az alábbi betöltési metódust:
String RESOURCE_BUNDLE_NAME = "i18n"; ResourceBundle bundle = ResourceBundle.getBundle(RESOURCE_BUNDLE_NAME, locale, ResourceBundle.Control.getNoFallbackControl(ResourceBundle.Control.FORMAT_DEFAULT)); String value = bundle.getString(key);
A magyar nyelvű hibaüzenetek a main/resources/JsfMessageResources_hu.properties fájlban kapnak helyet:
javax.faces.validator.BeanValidator.MESSAGE={1} {0} javax.faces.component.UIInput.REQUIRED = K\u00F6telez\u0151 kit\u00F6lteni javax.faces.component.UIInput.REQUIRED_detail = "{0}": k\u00F6telez\u0151 kit\u00F6lteni.
A magyar nyelvű validációs hibaüzeneteket a main/resources/ValidationMessages_hu.properties fájlban helyezzük el:
javax.faces.validator.BeanValidator.MESSAGE={1} {0} javax.faces.component.UIInput.REQUIRED= \u00C9rv\u00E9nytelen \u00E9rt\u00E9k javax.faces.component.UIInput.REQUIRED_detail="{0}": kit\u00F6lt\u00E9se k\u00F6telez\u0151 javax.faces.converter.DateTimeConverter.DATE='{2}': \'{0}\' nem \u00E9rtelmezhet\u0151 d\u00E1tum form\u00E1tum. javax.faces.converter.DateTimeConverter.DATE_detail='{2}': \'{0}\' nem \u00E9rtelmezhet\u0151 d\u00E1tum form\u00E1tum. P\u00E9ldaul: {1} javax.faces.converter.DateTimeConverter.TIME='{2}': \'{0}\' nem \u00E9rtelmezhet\u0151 id\u0151 form\u00E1tum. javax.faces.converter.DateTimeConverter.TIME_detail='{2}': \'{0}\' nem \u00E9rtelmezhet\u0151 id\u0151 form\u00E1tum. Peldaul: {1} javax.faces.converter.DateTimeConverter.DATETIME='{2}: \'{0}\' nem \u00E9rtelmezhet\u0151 datum \u00E9s id\u0151 formatum. javax.faces.converter.DateTimeConverter.DATETIME_detail='{2}: \'{0}\' nem \u00E9rtelmezhet\u0151 datum \u00E9s id\u0151 formatum. P\u00E9ldaul: {1}
- A hozzászóláshoz be kell jelentkezni