서버를 만들기 위해 최대 절전 모드 및 RestEasy API를 사용하고 있습니다. 나는 3 개의 속성 파일 message.properties a, mesage_en-GB.properties and message_en.propperties
파일을 가지고 있습니다. 클라이언트로부터 요청을 받으면 헤더 매개 변수에 로케일이 있습니다. 내 로캘을 내 속성 파일과 비교하여 확인해야합니다. 예를 들어, mesage_en-GB.properties를 사용하는 것보다 en-GB 인 경우 message.properties를 사용하는 것보다 지정되지 않은 경우 잘못 입력하면 오류 메시지가 표시됩니다. 이 값을 비교하는 방법을 모르겠다. 를 제안하십시오.로케일을 message.properties로 확인하는 방법
답변
스프링 구성에 LocaleChangeInterceptor
을 등록하고 <spring:message>
태그를 사용하여 메시지를 출력해야합니다. http://viralpatel.net/blogs/2010/07/spring-3-mvc-internationalization-i18n-localization-tutorial-example.html
PS 이 메커니즘은 더 나은 대안이 될 수 <fmt:message>
를 사용하는 경우에, 서버에서 서버로 변경할 수 있습니다
여기 좋은 연습입니다.
Qwe : 답변 해 주셔서 감사합니다. 하지만 그건 내가 필요로하는 것이 아닙니다. 나는 u dint가 나의 요점을 얻는다라고 생각한다. 실제로 serever를 만들고 클라이언트 로케일을 기반으로 결과를 줄 것입니다. 이제 클라이언트에서 message.properties 또는 message_en-GB.prperties와 함께 로케일을 비교해야합니다. – Romi
원래 버전의 질문에서 스프링 MVC를 사용 중이라고 말했고 지금 바로 사용하고 있습니다. RestEasy와 나는 당신의 잘못된 점을 가지고있다. –
한 번에 실수로 봄 MVC로 쓰고, 미안하다. 이제이 문제를 어떻게 해결할 수 있는지 제게 제안 해주십시오. – Romi
로캘과 번들을 어떤 이유로 컨테이너에서 관리 할 수없는 경우 수동으로 관리해야합니다.
클래스 경로에 속성 파일이 있다고 가정합니다.
먼저 사용할 로케일을 만들어야합니다. 예를 들어 당신이 문자열 fr
같은 HTTP 헤더에서 언어를 얻을, 당신은 Java7에서 Locale.forLanguageTag(String) 방법에 전달 또는 로케일 객체를 Java6에 Locale(String) 생성자를 사용하여 얻을 : 다음
Locale locale = Locale.forLanguageTag(stringFromHeader) // since Java 7
Locale locale = new Locale(stringFromHeader) // prior to Java 7
당신이를 얻기 위해 ResourceBundle.getBundle 방법이 지역을 통과 바로 번들 :
ResourceBundle messages = ResourceBundle.getBundle("messages", locale);
가 그런 다음의 ResourceBundle의 getString(key:String) 메소드를 호출 지역화하려면 문자열 :
messages.getString("my_message")
다음과 같은 내용으로
1) 폴더 어딘가에 tmp
만들기 2) 해당 폴더에서 파일 A.java
을 만듭니다
100 % 작동이 방법을 사용하면 다음의 간단한 단계를 수행 할 수 있는지 확인하려면 :
import java.util.*;
public class A {
public static void main(String[] args) throws Exception {
Locale locale = new Locale("en");
ResourceBundle messages = ResourceBundle.getBundle("messages", locale);
System.out.println(messages.getString("my_message"));
locale = new Locale("fr");
messages = ResourceBundle.getBundle("messages", locale);
System.out.println(messages.getString("my_message"));
}
}
3)은 다음과 같은 내용으로 파일 messages.properties
을 만듭니다
my_message=hello
4)는 다음과 같은 내용으로 파일 messages_fr.properties
을 만듭니다
my_message=salut
5) tmp
폴더로 이동하고이 명령을 실행
javac A.java
java -cp . A
출력은 다음과 같습니다
hello
salut
을
나는 그것이 당신을 위해 일하기를 희망한다!
PS : 여기에 좋은 도보를 통해이 있습니다 :
이것이 정확히 무엇을하고 있는지입니다. 그러나 Locale.forLanguageTag (stringFromHeader) 대신에 새로운 Locale (stringFromHeader)을 사용하고 있으며 stringFromHeader에서 xyz를 얻고 있어도 messages.properties 파일에서 msg를 수신하고 있습니다. – Romi
두 번째로 Locale.forLanguageTag() 메소드를 얻지 못하고 Local 클래스에 대한 메소드가 없습니다 – Romi
@Romi가 내 답변을 편집했으며 forLanguageTag()에 대한 메모는 최신 Java –
- 1. 문자열에서 로케일을 선택하는 방법
- 2. 로케일을 위젯으로 강제하는 방법
- 3. 주어진 로케일을 사용하여 NSSortDescriptor 만들기
- 4. 숫자 서식 지정에 좋은 로케일을 지정하는 방법
- 5. 커스텀 Struts 2 ActionMapper에서 로케일을 설정하는 방법
- 6. 애플리케이션의 다른 레이어에 JSF 로케일을 전파하는 방법
- 7. Android 앱의 기본 로케일을 복원하는 방법
- 8. Django : admin 앱에서 로케일을 사용하지 않는 방법
- 9. 하스켈 플랫폼에서 로케일을 수행하는 기본 방법
- 10. Monodevelop, 프로그래밍 방식으로 로케일을 설정하는 방법
- 11. 키보드 로케일을 변경하려면 어떻게해야합니까?
- 12. 로케일을 변경하는 Portletfilter?
- 13. Android 로케일을 즉시 변경하려고합니다.
- 14. 로케일을 고려하지 않도록 설정합니다.
- 15. 로케일을 앱 위젯으로 설정
- 16. 로케일을 내선 전용으로 전환
- 17. 로케일을 동적으로 전환 하시겠습니까?
- 18. String.Format은 로케일을 고려하지 않습니까?
- 19. Android에서 실행중인 로케일을 확인하십시오.
- 20. Facebook 로케일을 받으십시오
- 21. Rails I8n : HTTP 헤더에서 요청한 로케일을 사용할 수없는 경우 기본 로케일을 사용 하시겠습니까?
- 22. 다른 로케일을 인쇄하는 방법은 무엇입니까?
- 23. httpsession에서 브라우저 로케일을 검색 하시겠습니까?
- 24. 레일에서 변환되지 않은 로케일을 찾으십시오.
- 25. Dojo에서 네덜란드어 로케일을 사용하려면 어떻게해야합니까?
- 26. 날짜가 안드로이드에서 로케일을 허용하지 않습니다.
- 27. PHP Yii 로케일을 사용하는 날짜
- 28. DefaultHttpClient를 사용하여 로케일을 설정 하시겠습니까?
- 29. Seam logger에 특정 로케일을 사용합니다.
- 30. 기본 로케일을 글꼴에 설정 하시겠습니까?
http://docs.oracle.com/javase/tutorial/i18n/resbundle/propfile.html 그래서 당신은 RESTEasy가를 통해 REST 요청을 받고 HTTP 헤더를 수신하고, 서버 측에서 사용할 수있는 속성 선택해야하고 - 내가 맞습니까? –
예 .. HTTP 히어로를 속성 파일과 비교하고 선택할 파일을 선택해야합니다. – Romi