Foros del Web » Programación para mayores de 30 ;) » Java »

JSF i18n

Estas en el tema de JSF i18n en el foro de Java en Foros del Web. Hola, Mi problema es que estoy haciendo una herramienta web, y estoy integrando dos idiomas para que los soporte mediante JSF. La cuestión es que ...
  #1 (permalink)  
Antiguo 29/05/2012, 08:40
 
Fecha de Ingreso: febrero-2012
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Exclamación JSF i18n

Hola,
Mi problema es que estoy haciendo una herramienta web, y estoy integrando dos idiomas para que los soporte mediante JSF. La cuestión es que me funciona bien el cambio de idioma dándole click a las banderas de su respectivo idioma, pero cuando cargo la siguiente pagina, no sigue el idioma que ha seleccionado anteriormente, es decir, si cuando abre la pagina selecciona ingles por ejemplo, al siguiente paso de la web que carga otra pagina se vuelve a poner en español (idioma predeterminado del explorador). Del mismo modo que la primera vez que abre la web aparece en español cuando en el faces-config.xml lo tengo configurado para que aparezca en ingles como default.

Muchas gracias

Pd: Estoy trabajando con Eclipse, apache, java y jsf. Por si sirve de ayuda en algo.

Última edición por Ljarias; 29/05/2012 a las 08:54
  #2 (permalink)  
Antiguo 29/05/2012, 12:47
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: JSF i18n

El protocolo http es sin estado, lo que significa que si tu eliges un idioma para ver una página, esa elección no se mantiene en las siguientes páginas.

¿Soluciones? Varias.

Puedes comprobar el idioma preferido por el navegador que realiza la petición, guardar la elección de idioma en la sesión o en una cookie, o hacer que cada url contenga un parámetro que indique el idioma.

Tienes un montón de tutoriales sobre jsf para elegir.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 30/05/2012, 03:15
 
Fecha de Ingreso: febrero-2012
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: JSF i18n

Si, creo que ya lo hago. Te muestro las partes de codigo haber si sirve de ayuda. Ya nose que mas probar :S

En la .JSP
Código:
....
<body>
<f:view locale="#{language.localeCode} "> 

<div class="container" id="container">
....
  <h:form>
								 						      
      <h:commandLink action="#{language.englishAction()}" immediate="true">
      	     	<img src="Images/Idiomas/english.jpg" width="40" height="25" style="position:relative;left:960px;">
      </h:commandLink>
      <h:commandLink action="#{language.spanishAction()}" immediate="true" >
            	<img src="Images/Idiomas/spanish.jpg" width="40" height="25" style="position:relative; left:960px;">
      </h:commandLink>
      <img src="Images/Help.png" width="30" height="30" style="position:relative; left:960px; top:3px" title="<h:outputText value="#{msg['help-language']}"/>">
  </h:form> 
....
Y las funciones las tengo declaradas en la clase LanguageBean.java

Código:
import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
 
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;

@ManagedBean(name="language")
@SessionScoped
public class LanguageBean implements Serializable{
 
	private static final long serialVersionUID = 1L;
 
	private String localeCode="en";

	public String englishAction(){
		
		FacesContext context= FacesContext.getCurrentInstance();
		context.getViewRoot().setLocale(Locale.ENGLISH);
		setLocaleCode("en");	
		
		return null;
	}
	public String spanishAction(){
		FacesContext context= FacesContext.getCurrentInstance();
		context.getViewRoot().setLocale(new Locale("es"));
		setLocaleCode("es");
		
		
		return null;
	}
 
	public String getLocaleCode() {
		return localeCode;
	}
 
 
	public void setLocaleCode(String localeCode) {
		this.localeCode = localeCode;
	}
 
 
}

Etiquetas: faces, i18n, jsf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:40.