r01f.locale
Class I18NService

java.lang.Object
  extended by r01f.locale.I18NService

public class I18NService
extends java.lang.Object

Acceso al servicio de textos localizados I18N El acceso al servicio se hace mediante una jerarquía de niveles: Servicio I18NService |----- Bundle I18NBundle |------ Mensaje (el texto) Por lo tanto para obtener un texto hay que: 1.- Obtener el servicio I18NService que representa los Locale de un "bundle", es decir da acceso a todos los bundle/locale Para acceder a un I18NService es necesario en nombre del bundle que es un identificador como myApp.components.myBundle. Esto forzará a buscar los ficheros del bundle en /myApp/components/myBundle utilizando el ResourcesLoader que se quiera (ej ClassPathResourcesLoader para acceder a los ficheros por classpath 2.- Obtener el I18NBundle correspondiente a un Locale especifico 3.- Obtener el mensaje del bundle En definitiva, el acceso a los mensajes de un bundle se hace a través del objeto I18NService: myI18nService.forLocale(new Locale("es","ES")).message("msgKey")); CADENA DE BUNDLES DONDE SE BUSCA UN MENSAJE ------------------------------------------- I18NService permite especificar una cadena de bundles en los que buscar un mensaje. Cuando se solicita un mensaje por su clave, se recorren uno detrás de otro cada bundle hasta que se encuentra el mensaje Ejemplo: - Si el se especifica la cadena {"myApp.myComponent.myChildBundle","myApp.myComponent.myParentBundle"} - ... y se pide una clave cualquiera (ej: testKey) - la clave se busca primero en el bundle "myApp.myComponent.myChildBundle" y si no se encuentra ahi, se busca en "myApp.myComponent.myParentBundle" NOTA: Para optimizar el funcionamiento poner los bundles donde es más problable encontrar las claves en PRIMER LUGAR OBTENCIÓN DE UNA INSTANCIA DEL OBJETO I18NService --------------------------------------------------------- [OPCION 1]: (preferida) Utilizar un módulo GUICE para definir objetos I18NService configurados 1.- Crear un Module GUICE con UN PROVIDER PARA CADA BUNDLE anotado con @Provides y @Named("myBundle") (o bien con una anotación personalizada) public class TestI18NModule implements Module {


Field Summary
private  java.util.concurrent.ConcurrentMap<java.util.Locale,I18NBundle> _bundleCache
           
private  java.lang.String[] _bundleChain
           
private  I18NResourceBundleControl _control
           
private  boolean _devMode
           
private  I18NBundle.MissingKeyBehaviour _missingKeyBehaviour
           
 
Constructor Summary
I18NService(ResourcesLoaderFactory resLoaderFactory, ResourcesLoaderDef resLoaderDef, java.lang.String[] bundleChain, I18NBundle.MissingKeyBehaviour missingKeyBehaviour)
          Constructor en base a la factoría de ResourcesLoader y a la definición del mismo (ResourcesLoaderDef) IMPORTANTE!!
I18NService(ResourcesLoader resLoader, ResourcesReloadControl resReloadControl, java.lang.String[] bundleChain, I18NBundle.MissingKeyBehaviour missingKeyBehaviour)
          Constructor en base al ResourcesLoader y el control de recarga ResourcesReloadControl IMPORTANTE!!
 
Method Summary
 I18NBundle forLocale(java.util.Locale locale)
           
 I18NService inDevMode()
          Pone el bundle en modo debug
 java.lang.String toString()
           
 I18NService withMissingKeyBehaviour(I18NBundle.MissingKeyBehaviour behaviour)
          Establece el comportamiento si no existe una clave (ej: lanzar una excepcion / devolver null)
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_bundleCache

private final java.util.concurrent.ConcurrentMap<java.util.Locale,I18NBundle> _bundleCache

_control

private final I18NResourceBundleControl _control

_bundleChain

private final java.lang.String[] _bundleChain

_missingKeyBehaviour

private I18NBundle.MissingKeyBehaviour _missingKeyBehaviour

_devMode

private boolean _devMode
Constructor Detail

I18NService

I18NService(ResourcesLoader resLoader,
            ResourcesReloadControl resReloadControl,
            java.lang.String[] bundleChain,
            I18NBundle.MissingKeyBehaviour missingKeyBehaviour)
Constructor en base al ResourcesLoader y el control de recarga ResourcesReloadControl IMPORTANTE!! a este constructor se le llama SOLO desde la factoria I18NServiceFactory

Parameters:
resLoader -
bundleChain -
missingKeyBehaviour -

I18NService

I18NService(ResourcesLoaderFactory resLoaderFactory,
            ResourcesLoaderDef resLoaderDef,
            java.lang.String[] bundleChain,
            I18NBundle.MissingKeyBehaviour missingKeyBehaviour)
Constructor en base a la factoría de ResourcesLoader y a la definición del mismo (ResourcesLoaderDef) IMPORTANTE!! a este constructor se le llama SOLO desde la factoria I18NServiceFactory

Parameters:
resLoaderFactory - factoría del loader de recursos
resLoaderDef - definición del ResourcesLoader a utilizar
bundleChain - nombre de los bundles de la cadena de búsqueda de mensajes
missingKeyBehaviour - comportamiento en caso de que no se encuentre una clave en los bundles de la cadena. En caso de no especificarse, se toma MissingKeyBehaviours.THROW_EXCEPTION;
Method Detail

forLocale

public final I18NBundle forLocale(java.util.Locale locale)

toString

public final java.lang.String toString()
Overrides:
toString in class java.lang.Object

withMissingKeyBehaviour

public I18NService withMissingKeyBehaviour(I18NBundle.MissingKeyBehaviour behaviour)
Establece el comportamiento si no existe una clave (ej: lanzar una excepcion / devolver null)

Parameters:
behaviour - el comportamiento

inDevMode

public I18NService inDevMode()
Pone el bundle en modo debug