Je travaille sur un projet d'application Web prenant en charge plusieurs langues. J'utilise Spring framework. Spring a l'option de prendre en charge plusieurs langues en ajoutant les beans suivants dans la servlet du répartiteur.Localisation du ressort sans passer le langage dans la chaîne de requête
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="en" />
</bean>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="language" />
</bean>
</mvc:interceptor>
</mvc:interceptors>
<!-- Register the messages.properties -->
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:messages" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
La localisation ne fonctionne que si je passe le paramètre de langue dans chaque URL.
Y a-t-il une option pour définir les paramètres régionaux en fonction de la langue du navigateur du client?
Remplacez 'SessionLocaleResolver' par' AcceptHeaderLocaleResolver' et supprimez le 'LocaleChangeInterceptor' (car vous ne pourrez pas le changer ensuite). Cela fonctionnerait également si vous supprimez la propriété 'defaultLocale' de' SessionLocaleResolver' car, lorsqu'elle n'est pas définie, elle utilise celle reçue du navigateur. –