2011-06-22 49 views
5

tôi đã thiết lập mùa xuân theo quy định trong hướng dẫn sau đây:? http://www.springbyexample.org/examples/basic-webapp-internationalization-spring-config.htmlmùa xuân: Thiết lập miền địa phương

Nếu tôi là để thêm locale = fr, ví dụ, để kết thúc một URL miền địa phương sẽ chuyển sang Pháp .

Tuy nhiên, trong trường hợp của tôi, tôi muốn đặt ngôn ngữ khi người dùng đăng nhập khi thông tin này được liên kết với hồ sơ của họ. Tôi đã cố gắng sử dụng localeResolver.setLocale (yêu cầu, đáp ứng, Locale mới ("fr")) (trong đó localeResolver là một cá thể của SessionLocaleResolver) để chỉ định miền địa phương, tuy nhiên điều này không có hiệu lực.

Bất kỳ ý tưởng nào tôi đang làm sai? Tôi có đang tiếp cận vấn đề này theo cách chính xác không?

Trả lời

0

Bạn có thể xem dự án Spring Roo. Có một sự bổ sung quốc tế hóa từ Spring đang được sử dụng trong Spring Roo cho phép chuyển đổi nhanh chóng Locale trong một ứng dụng Web Spring được tạo tự động từ Roo.

0

Làm cách nào để bạn xác định rằng ngôn ngữ chưa được đặt? Nếu bạn mong đợi, miền địa phương chính xác sẽ có mặt trong HttpServletRequest, điều này không đúng - giá trị của nó được xử lý bởi thùng chứa servlet và do đó không thay đổi được. Thay vào đó, bạn nên dựa vào đó Spring sẽ chèn một giá trị thích hợp cho tham số phương thức với lớp Locale trong bộ điều khiển của bạn. Một cách khác để có được ngôn ngữ là sử dụng trực tiếp RequestContextUtils.getLocale(HttpServletRequest request).

+0

Tôi đang cố gắng đặt ngôn ngữ lập trình. Các tin nhắn vẫn bằng tiếng Anh. Tôi sử dụng phương pháp? Locale = fr thay vào đó, các tin nhắn hiện đang được tải là tiếng Pháp. – NRaf

+0

vui lòng cung cấp mã của bạn về cách bạn truy xuất ngôn ngữ của người dùng hiện tại từ môi trường –

5

Tôi muốn giới thiệu cố gắng thiết lập miền địa phương mặc định như:

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

Một số thông tin hữu ích là trong bài đăng blog Configuring locale switching with Spring MVC 3.

11

localeResolver.setLocale hoạt động tốt đối với tôi, hãy thử một cái gì đó như thế này:

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 \ chính \ resources \ điệp \ tin nhắn. thuộc tính

my.me ssage = nhắn (ngôn ngữ mặc định)

\ src \ resources \ chính \ điệp \ messages_en.properties

my.message = tin nhắn bằng tiếng Anh

\ src \ resources \ chính \ điệp \ messages_fr.properties

my.message = tin nhắn bằng tiếng Pháp

khiển

@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"; 
    } 
} 

Với mã này tôi nhận được "Thông điệp bằng tiếng Pháp", nếu tôi thay đổi "fr" thành "en" Tôi nhận được "tin nhắn bằng tiếng Anh", và không có cuộc gọi setLocale tôi nhận được "tin nhắn (ngôn ngữ mặc định)". Thay đổi StringUtils.parseLocaleString ("fr") đến Locale mới ("fr") cho kết quả tương tự.

Các vấn đề liên quan