*Markus: Manuell gesetzt Locale auslesen?

Guten Tag,

ich habe ein großes Problem, an dem ich jetzt schon über einen Tag sitze.

Zum Hintergrund:
Mein Webportal (MVC, Java, Tomcat) ist mehrsprachig. Der Benutzer kann die Sprache selbst wählen, tut er das aber nicht, wird die Spracheinstellung des Browsers herangezogen. Auf den JSP-Seiten soll weiters kein Java-Code verwendet werden, sondern nur JSTL.
Die Mehrsprachigkeit wird mit properties-Files realisiert, zB seite1_de.properties, seite1_en.properties.

Das Konzept funktioniert so weit ganz gut:

-------------JSP-----------------

  
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"; %>  
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"; %>  
  
<fmt:bundle basename="langfiles.seite1">  
<fmt:message key="1"/>  
</fmt:bundle>  

--------seite1_de.properties-----------
1=Deutscher Text

Ändert der Benutzer die Spracheinstellung über ein Menü auf der Webseite, greift ein Filter, der folgende Methode aufruft:
------------Filter---------------------

  
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)  
		throws IOException, ServletException {  
		  
		if (request instanceof HttpServletRequest)  {  
			HttpServletRequest httpRequest = (HttpServletRequest)request;  
			String paramLocale = (String)httpRequest.getParameter("locale");  
//			Wenn ein Parameter locale übermittelt wird, will der User die Sprache ändern  
//			Ansonsten mache gar nichts  
			if (paramLocale != null)  {  
//				Liefert die aktuelle Session zurück. Wenn es keine Session gibt,  
//				wird eine neue erzeugt.  
				HttpSession session = httpRequest.getSession(true);  
				  
  
				Config.set(session, Config.FMT_LOCALE, paramLocale);  
				  
			}  
		}  
		chain.doFilter(request, response);  
	}  

Mein Problem ist nun eine Länderliste, die je nach Spracheinstellung anders sortiert sein muss, zB im Deutschen wäre es "Österreich", im Englischen "Austria". Alphabetisch sortiert kommt Austria in der Liste aber ganz woanders vor als Österreich. Der Benutzer soll aber jedenfalls eine sortierte Länderliste präsentiert bekommen.

In der JSP-Seite wäre die Reihenfolge aber hartkodiert:

  
<select name="land">  
<option value="0">&nbsp;</option>  
<option value="AT"><fmt:message key="AT" /></option>  
.  
.  
.  
.  
<option value="DE"><fmt:message key="DE" /></option>  
</select>  

Das ist ein großes Problem, denn die Anordnung dieser Tags muss pro Sprache anders sein.
Die einzige Möglichkeit wäre, die Länder irgendwie in das dazugehörige Bean sortiert aus einer DB einzulesen und in der JSP-Seite mit c:forEach ausgeben zu lassen, aber hier komme ich nicht mehr weiter. Wie kann ich der Bean weismachen, welche Sprache verwendet wird?
Im Bean kann man weder "session"-, noch "request"-, oder "response"-Objekte verwenden. Selbst wenn, wie greift man auf das hier aus dem Filter zu?:

Config.set(session, Config.FMT_LOCALE, paramLocale);

Von der Vorgehensweise kann man es irgendwie nur serverseitig lösen, da es in JSTL bereits zu spät ist. Die Bean wurde ja bereits instanziert, und muss die Spracheinstellung ja bereits kennen.

Die Frage ist, wo wird das hier Config.set(session, Config.FMT_LOCALE, paramLocale); eigentlich abgespeichert? Ich verstehe nicht, wo sich Tomcat diese Einstellung merkt.
Ich lies mir die Parameter aus "session" im Servlet, dass letztendlich die gewünschte Seite aufrufen wird mal ausgeben, um zu sehen, was dort überhaupt alles steht.
Hat der Benutzer seine Spracheinstellung über die Webseite nicht geändert, sind folgende String-Inhalte zu finden:

javax.servlet.jsp.jstl.fmt.request.charset
localsessid

Hat der Benutzer die Spracheinstellung geändert (d.h. der Filter rief doFilter auf), hat die Session folgende String-Inhalte:

javax.servlet.jsp.jstl.fmt.request.charset
localsessid
javax.servlet.jsp.jstl.fmt.locale.session

Helfen tut mir diese Erkenntnis allerdings nicht, bzw wüsste ich nicht, wie ich mir es zu nutzen machen könnte.
Es geht im Prinzip nur darum, dass ich irgendwie, egal ob Servlet oder Bean (egal deswegen, da ich aus dem Servlet das Bean füttern kann), wissen muss, ob ein "de", "en",... die aktuelle Sprache ist, aber wie?
Es ist natürlich zu beachten, dass das Auslesen der Browser-Locale nicht die Lösung ist. In der JSP-Seite setzte ich zur Probe mal folgende Ausgabe:

Sessionvar: ${pageContext.request.locale.language}

Die Ausgabe war die Browsereinstellung, zB "de" bei deutschem Browser, "en", bei englischem. Diese Ausgabe liest sich aber durch das Setzen des Werts Config.set(session, Config.FMT_LOCALE, paramLocale); im Filter nicht beeindrucken. Da es in der JSP-Seite ohnehin schon "zu spät" ist, da die Bean ja schon exisitert, würde ein Herumbasteln hier auch nichts helfen.
Ich wollte mit der Ausgabe ${pageContext.request.locale.language} nur sehen, was wo gesetzt ist.

Grüße,
Markus