2011-06-22 18 views
5

mam setup Wiosna w sposób określony w niniejszym przewodniku: http://www.springbyexample.org/examples/basic-webapp-internationalization-spring-config.htmlWiosna: Konfiguracja ustawień regionalnych

Gdybym miał dołączyć locale = pl, na przykład, na końcu adresu URL locale zmieni się francuskim .

Jednak w moim przypadku chcę ustawić ustawienia regionalne, gdy użytkownik się zaloguje, ponieważ te informacje są powiązane z ich profilem. Próbowałem użyć localeResolver.setLocale (request, response, new Locale ("fr")) (gdzie localeResolver jest instancją SessionLocaleResolver) w celu określenia ustawień regionalnych, ale nie ma to żadnego wpływu.

Każdy pomysł, co robię źle? Czy podchodzę do tego problemu we właściwy sposób?

Odpowiedz

0

Prawdopodobnie można rzucić okiem na projekt Spring Roo. W Spring Roo dostępny jest dodatek do internacjonalizacji, który umożliwia szybkie przełączanie ustawień regionalnych w aplikacji Spring Web generowanej automatycznie z Roo.

0

Jak ustalić, czy ustawienia regionalne nie zostały ustawione? Jeśli spodziewasz się, że prawidłowe ustawienia narodowe mają być obecne w HttpServletRequest, nie jest to prawdą - jego wartość jest obsługiwana przez kontener serwletów i dlatego jest niezmienna. Zamiast tego powinieneś polegać na tym, że Spring wprowadzi właściwą wartość do parametru metody z klasą Locale w twoim kontrolerze. Innym sposobem na uzyskanie ustawienia narodowego jest bezpośrednie użycie parametru RequestContextUtils.getLocale(HttpServletRequest request).

+0

Próbuję ustawić ustawienia regionalne programowo. Wiadomości są nadal w języku angielskim. Zamiast tego używam metody? Locale = fr, wiadomości są teraz ładowane jako francuskie. – NRaf

+0

proszę podać swój kod, w jaki sposób pobrać lokalne ustawienia użytkownika ze środowiska –

5

Polecam spróbować skonfigurować domyślne ustawienia jak:

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"> 
    <property name="defaultLocale" value="fr_FR" /> 
</bean> 

kilka pomocnych informacji znajduje się w poście Configuring locale switching with Spring MVC 3.

11

localeResolver.setLocale działa dobrze dla mnie, spróbuj coś takiego:

ApplicationContext

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" 
    p:basename="messages/messages" p:fallbackToSystemLocale="false" /> 

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" /> 

my_page.jsp

<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> 
<html> 
    <body> 
     <p><spring:message code="my.message"/></p> 
    </body> 
</html> 

\ src \ main \ Resources \ komunikaty \ wiadomości. właściwości

my.me ssage = Message (język domyślny)

\ src \ main \ Resources \ komunikaty \ messages_en.properties

my.message = Komunikat w języku angielskim

\ src \ main \ Resources \ komunikaty \ messages_fr.properties

my.message = Komunikat po francusku

Controller

@Controller 
@RequestMapping("/") 
public class SampleController { 
    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String welcome(HttpServletRequest request, HttpServletResponse response) { 
     LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); 
     localeResolver.setLocale(request, response, StringUtils.parseLocaleString("fr")); 
     return "my_page"; 
    } 
} 

Z tego kodu otrzymuję "Message in French", jeśli zmienię "FR" na "pl" otrzymuję "Message in English", a bez zaproszenia setlocale dostaję „Wiadomość (domyślny język)". Zmiana StringUtils.parseLocaleString ("fr") do nowego locale ("fr") daje takie same wyniki.

Powiązane problemy