2016-11-25 4 views
3

Ich benutze Spring Boot i18n.Frühling i18n Verhalten unterscheidet sich zwischen Windows und Linux

Wenn in Windows das ausgewählte Gebietsschema nicht den Satz A hat, wird der Satz in messages.properties verwendet. Wenn in CentOS das ausgewählte Gebietsschema nicht den Satz A hat, wird zuerst der Satz in messages_en_US.properties verwendet. Wenn die messages_en auch nicht den Satz haben, wird der Satz in messages.properties verwendet.

Warum ist das anders?

@Bean 
public LocaleResolver localeResolver() { 
    CookieLocaleResolver clr = new CookieLocaleResolver();//also can use SessionLocaleResolver 
    clr.setDefaultLocale(Locale.SIMPLIFIED_CHINESE); 
    return clr; 
} 

@Bean 
public LocaleChangeInterceptor localeChangeInterceptor() { 
    LocaleChangeInterceptor lci = new LocaleChangeInterceptor(); 
    lci.setParamName("locale"); 
    return lci; 
} 

@Override 
public void addInterceptors(InterceptorRegistry registry) { 
    registry.addInterceptor(localeChangeInterceptor()); 
} 

Antwort

0

Ich kann nicht genau das Verhalten erklären, aber es könnte durch ResourceBundle.Control.getFallbackLocale verursacht werden. Der Javadoc sagt:

Die Standardimplementierung gibt das Standardgebietsschema zurück, wenn das angegebene locale nicht das Standardgebietsschema ist.

Also, ich schlage vor zu prüfen, ob das Java-Standardgebietsschema einen Unterschied macht.

Verwandte Themen