Uygulama için Spring Boot kullanıyoruz. ApplicationConfig.java ben aşağıda koduSpring Boot Yerelleştirme sorunu - Accept-Language başlığı
@Bean
public LocaleResolver localeResolver() {
return new SmartLocaleResolver();
}
ve SmartLocaleResolver.java
public class SmartLocaleResolver extends SessionLocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {
final String acceptLanguage = request.getHeader("Accept-Language");
if (acceptLanguage.contains(",")) {
String[] aheader = acceptLanguage.split(",[ ]*");
for (String locale : aheader) {
if (ApplicationConstants.LOCALE.contains(locale)) {
locale.trim();
return Locale.forLanguageTag(locale);
}
}
} else if (!acceptLanguage.contains(",") && !acceptLanguage.isEmpty()) {
if (ApplicationConstants.LOCALE.contains(acceptLanguage)) {
return Locale.forLanguageTag(acceptLanguage);
}
}
return request.getLocale();
}
}
altındadır ve ben başlığında Accept-Language değeri karşılaştırmak için aşağıdaki benim sabitler sınıfta var.
public static final List LOCALE = Koleksiyonlar .unmodifiableList (Arrays.asList ("en", "es"));
Gerçek senaryoda bildiğim başlık Kabul-Dili: fr, es; q = 0.8, en-us; q = 0.6 ama test amaçlı olarak aşağıdaki gibi geçiyorum.
Accept-language: fr, es,
tr kod henüz tamamlanmadı, ancak ben sadece kod yerel ayarı olarak "es" alır olmadığını görmek için postacı gelen test ve bana lokalize verir ediyorum sonuç.
Ben message_fr.properties dosyası yok ama message_es.properties var, bu yüzden eğer uygulama aşağıdaki kodu kullanarak yerel ayarı ayarlıyorsa, Locale'i 'es' olarak seçip İspanyolca'da istediğim değerleri vermekteyim. Kodun çalışması için burada ne gibi değişiklikler yapmalıyım?
Neden değil c tüm 'request.getLocale()' doğrudan? –
Sadece request.getLocale() yöntemini çağırırsam projemde 'fr' desteklemediğimizi nasıl doğrular? Projemde message_fr.properies yok. Bu yüzden fr'yi görmezden gelmemiz gerekiyor ve Locale'i 'es' olarak ayarlamanız gerekecek çünkü 'es'i destekliyoruz ve messages_es.properties var. Bunun için herhangi bir mantık yazmadan bunu otomatik olarak yapabilir mi? – Arun