# JSF Locales Problem



## JavaKüken (18. Jun 2009)

Hallo Leute. 

Ich bin gerade dabei eine homepage mit jsf zu gestalten. Ich hab jetzt zwei Buttons eingefügt, einen mit der Aufschrift "deutsch" den anderen mit der aufschrift "englisch". 

Default-mäßig wird die Seite in deutsch angezeigt. mit den buttons soll es möglich sein, zwischen den einzelnen Sprachen zu switchen. 

Ich hab nun ein paar Methoden geschrieben in meiner WebService (die ein Bean ist):


```
public String changeLanguage() {
		String language = FacesContext.getCurrentInstance()
				.getExternalContext().getRequestParameterMap().get("language")
				.toString();

		FacesContext context = FacesContext.getCurrentInstance();
		// Locale currentLocale = context.getViewRoot().getLocale();

		if (language.equals("german")) {
			context.getViewRoot().setLocale(Locale.GERMAN);
		} else if (language.equals("english")) {
			context.getViewRoot().setLocale(Locale.ENGLISH);
		}
		return "setLanguage";
	}

	public void changeToGerman() {
		FacesContext context = FacesContext.getCurrentInstance();
		context.getViewRoot().setLocale(Locale.GERMAN);
	}

	public void changeToEnglish() {
		FacesContext context = FacesContext.getCurrentInstance();
		context.getViewRoot().setLocale(Locale.ENGLISH);
	}
```

In meiner jsf-page (home.xhtml) ruf ich dann die methode wie folgt auf:

```
<h:commandLink action="webService.changeToEnglish">
		<h:graphicImage value="/logo/englisch.gif" alt="english" />
	</h:commandLink>
	<br />
	<h:commandLink action="webService.changeToGerman">
		<h:graphicImage value="/logo/deutsch.gif" alt="german" />
	</h:commandLink>
```

Leider tut sich gar nichts, wenn ich auf die Buttons klicke 

Ich wär für eure Tipps echt dankbar!!

Danke im Voraus.

Liebe Grüße,

Tanja


----------



## gex (18. Jun 2009)

siehe 
http://www.java-forum.org/web-tier/80351-java-server-faces-locale-verliert-wert-nach-navigation.html


----------



## JavaKüken (19. Jun 2009)

Er verliert den Wert ja nicht nach der Navigation... er soll es ja nur mal auf der HOME seite machen. Wenn ich auf der Home Seite auf einen der zwei buttons klicke, soll er die Sprache dementsprechend ändern...


----------



## gex (19. Jun 2009)

Na gut, dachte die Interpretation des anderen Threads bringst du hin.
Referenzier das Locale aus einem Bean

```
<f:view locale="#{bean.selectedLocale}">
```
und ändere die Sprache im Bean. Dann ist's auch von Dauer und fliegt dir nicht immer wieder durch neue Component-Instanzen weg.


----------

