2016-10-20 12 views
5

Bazı makaleler yerel ve vb geçen mesajlar takas nasıl söyleyebilir ama sadece ben organize etmek ve bağlam başına uluslararası dosyalarını kullanabilirsiniz nasıl birkaç mesajlar içeren kullanım durumlarını ..İlkbaharda uluslararasılaşma için birden fazla dosya ve ileti nasıl ele alınır? Bahar uluslararasılaşma

  • bulundu ? (Doğrulama, görünüm mesajları, varsayılan mesajları, iş mesajlar)

  • Spring (tanımlanmış mesaj dosyasının adını) deseni + yerel kullandığı biliyoruz. e.g: message_zh_CN. Bu davranış hakkında 'u bilerek bağlam başına dosyalara nasıl sahip olabilirim?

ben olması gerektiğini düşünüyorum Ne:

resources 
`-- messages 
    |-- validation 
    | |-- message_locale.properties 
    | `-- message_locale2.properties 
    |-- business 
    | |-- message_locale.properties 
    | `-- message_locale2.properties 
    `-- view 
     |-- message_locale.properties 
     `-- message_locale2.properties 

VEYA:

resources 
`-- messages 
    |-- validation 
    | |-- validation_locale.properties 
    | `-- validation_locale2.properties 
    |-- business 
    | |-- business_locale.properties 
    | `-- business_locale2.properties 
    `-- view 
     |-- view_locale.properties 
     `-- view_locale2.properties 
+2

. Burada dürüst olmak için soru göremiyorum. –

+0

Örneklerde sadece bir dosya gördüm ve biraz daha fazla dosya – Lucas

cevap

7

Tüm o farklı ileti dosyaları için genel bir MessageSource tanımlayabilir ya.

@Bean 
public MessageSource messageSource() { 
    ReloadableResourceBundleMessageSource messageSource = 
               new ReloadableResourceBundleMessageSource(); 
    messageSource.setBasenames("classpath:/messages/business/message", 
           "classpath:/messages/validation/message", 
           "classpath:/messages/view/message"); 

    return messageSource; 
} 

Bu yaklaşım mesajınız anahtarları tüm dosyaların arasında benzersiz ise, mantıklı örneğin: Bu yaklaşım setBasenames yöntemi kullanılarak pratiktir business-12 yalnızca işle ilgili mesaj kaynaklarında anahtarlar çıkar. Aksi takdirde, sizin bağlama göre bağlamında birer tane MessageSource tanımlamak ve bunları enjekte etmek daha iyidir: Tercih yapısını kullanarak alıkoyar Ne

@Bean 
public MessageSource businessMessageSource() { 
    ReloadableResourceBundleMessageSource messageSource = 
               new ReloadableResourceBundleMessageSource(); 
    messageSource.setBasename("classpath:/messages/business/message"); 

    return messageSource; 
} 

@Bean 
public MessageSource validationMessageSource() { 
    ReloadableResourceBundleMessageSource messageSource = 
               new ReloadableResourceBundleMessageSource(); 
    messageSource.setBasename("classpath:/messages/validation/message"); 

    return messageSource; 
} 

@Bean 
public MessageSource viewMessageSource() { 
    ReloadableResourceBundleMessageSource messageSource = 
               new ReloadableResourceBundleMessageSource(); 
    messageSource.setBasename("classpath:/messages/view/message"); 

    return messageSource; 
} 
+1

Nice .. kullanımı hakkında kafamı karıştırıyorum .. basit ama nasıl yapmak için alamadım! Teşekkürler! – Lucas

İlgili konular