2011-12-12 6 views
5

Tenemos un sitio que se utilizará para dos clientes diferentes. Durante la primera solicitud, se le pedirá al usuario que elija un cliente. En función de ese texto, se deben mostrar las etiquetas y el contenido del sitio.¿Es posible tener más de un archivo de mensajes en el marco de juego

¿Es posible tener un archivo dos mensajes en el marco de reproducción y durante el inicio de sesión del archivo de mensajes se decidió

A partir de mi investigación podemos tener más de un archivo para cada configuración regional, los mensajes se obtiene basadas en la configuración regional en la solicitud.

Respuesta

1

resuelto este problema con solución de abajo,

  1. creado una clase MessagesPlugIn que se extiende play.i18n.MessagesPlugin
  2. Creó una clase Messages como play.i18n.Messages
  3. Tenía una estática Mapa messaagesByClientID en Messages.java
  4. Reemplazado onApplicationStart() en MessagesPlugIn
  5. Cargado las propiedades en messaagesByClientID como locales cargado en play.i18n.MessagesPlugin
  6. tenía un método get() en Messages.java, recuperar la propiedad de messaagesByClientID ClientId basada en la sesión. Si la propiedad no está disponible en la llamada get()play.i18n.Messages

7.Created una etiqueta personalizada il8nTag y su utiliza en plantillas HTML. il8nTag invocará el methos en Messages.get().

1

Puede escribir su propia PlayPlugin y manejar implementar play.PlayPlugin.getMessage(String, Object, Object...). Entonces puedes elegir el archivo correcto. La clase play.i18n.Messages se puede utilizar como inspiración para implementar el método.

+0

Gracias, En base a las respuestas dadas esta página encontré la respuesta y la publiqué arriba. –

4

No, no es compatible por el momento. Usted puede hacer que sea en un plugin (Look at MessagesPlugin) o incluso el uso de un bootstrap job con la anotación @onApplicationStartup

// From MessagesPlugin.java 

//default languange messages 
VirtualFile appDM = Play.getVirtualFile("conf/messages"); 
if(appDM != null && appDM.exists()) { 
    Messages.defaults.putAll(read(appDM)); 
} 

static Properties read(VirtualFile vf) { 
    if (vf != null) { 
     return IO.readUtf8Properties(vf.inputstream()); 
    } 
    return null; 
} 
+0

Gracias, puedo lograr esto cuando cargo mensajes en Controladores. Pero ¿cómo puedo anular la funcionalidad cuando los mensajes cargados en plantillas usando & {}. Por favor, ayúdame. Los mensajes de plantilla –

+0

deberían funcionar también una vez que los haya agregado a Messages.defaults. ¿Has intentado sin éxito? – mericano1

+0

En realidad, mi requisito es que la aplicación tendrá más de un archivo de propiedades con las mismas claves, pero los valores son diferentes. Debería poder recuperar una propiedad de cualquiera de los archivos basados ​​en "ClientID" en la sesión. Si lo agrego, Por defecto no pude encontrar por valor de sesión. Encontré otra solución.Creado customMessagesPlugIn que extiende MessagesPlugin y tiene HashMap dentro de él, cargue todos los archivos en el mapa con el Id del cliente como clave y Propiedades como valor. Una llamada para Messages.get(), recuperará el valor basado en el ID del cliente en la sesión. plantillas Utilicé etiquetas personalizadas para recuperar el mensaje. –

Cuestiones relacionadas