2012-03-29 3 views
9

자바 .properties 파일을 Java EE (tomcat) 응용 프로그램에서 사용할 수있는 클래스로 컴파일하는 도구가 있습니까? 이클립스 플러그인이 정적 인 R.strings 클래스를 생성하는 android와 비슷합니다. Java : 정적 문자열 현지화

나는이 문서 발견

http://www.techhui.com/profiles/blogs/localization-in-gwt-using

을하지만 GWT에 따라 달라집니다. 어떤 도움을 주셔서 감사합니다.

+0

약간 설명 할 수 있습니까? 상수 (예 : 열거 형)를 포함하는 클래스 또는 부동산 보유자를 의미합니까? – questzen

+0

이 게시물은 당신이 물어 보는 것과 아주 비슷하게 보입니다 : http://stackoverflow.com/questions/1578026/java-properties-files-as-strongly-typed-classes –

답변

4

나는 그런 도구에 대해 들어 본 적이 없다. GWT는 훌륭한 지연 바인딩 기반 기술을 가지고 있지만 찾고있는 것이 아닙니다. 그러나 나는 그러한 작업을위한 기본적인 코드 생성기를 구현하는 것이 가능하다고 생각한다.

그러나 귀하의 질문에 대한 답변은 : 내가 아는 한 없습니다.

+0

+1 작은 자바 어플리케이션을 사용하는 코드 생성을 위해, Eclipse에서 자동으로 호출 된 빌더로 추가 할 수있는 ant 태스크에서 자동으로 호출 할 수 있습니다. – jabal

0

ResourceBundle은 어떻습니까?

// refers to "src/config.properties" 
ResourceBundle config = ResourceBundle.getBundle("config"); 
String property1 = config.getString("property1"); 
+1

이 질문에 대한 최근의 다른 답변과 마찬가지로이 질문에 대한 대답이 아닙니다. 당신이 묘사 한 것은 그것이 일반적으로 어떻게 이루어 졌는지입니다. 하지만 안드로이드에서 컴파일 타임 (R.id)에있는 모든 리소스와 생성 된 클래스를 얻을. property1이 정의되지 않은 경우 여기서 런타임 예외가 발생합니다. Android에서 정의되지 않은 경우 컴파일 시간 오류가 발생합니다. – jontro

0

나는 하나가 사용자 정의에 바로 컴파일 단계 전에 Java 소스를 생성하는 Maven 플러그인 (또는 개미 작업) ANTLR을 사용하여 등록 정보 파일에 대한 매우 간단한 문법을 ​​쓸 수 있습니다 생각합니다.

0

속성을 JSON 파일에 저장하는 방법은 무엇입니까? 파일에 저장된 JSON 오브젝트는 Java 클래스에 맵핑되어야하며 Jackson mapper를 사용하여 역 직렬화하십시오. Jackson을 사용하면 모든 필드가 deserialize 할 때 null이 아니어야합니다. 또한 GSON을 사용하고 원하는대로 엄격한 검사를 수행하는 사용자 지정 데시리아 칠기를 작성할 수 있습니다. 예 - 문자열에 대해 비어 있지 않고 함께 null을 적용 할 수 있습니다.

0

Compiler Assisted Localization (CAL10N) 당신이 물어 본 것이 아니지만 도움이 될 수 있습니다.

.properties에서 Java 클래스를 생성하지는 않지만 enum을 메시지 키로 사용하면 컴파일러에서 도움을 얻을 수 있기 때문에 여전히 문자열보다 더 낫습니다.

enum을 선언하고 annotation으로 .properties에 바인딩하고 메시지 조회에 enum 값을 사용하십시오. 나는 아직 그것을 시도하지 않았다. manual을 참조하십시오.

1

응용 프로그램을 국제화하기 위해 하나의 단일 소스 파일에서 키에 대한 열거 형 또는 정적 최종 문자열로 자원 번들 파일과 상수 정의를 생성하는 Message Compiler을 구현했습니다. 따라서 Java 소스 코드에서 상수를 사용할 수 있습니다. 이는 일반 문자열을 사용하는 것보다 훨씬 안전합니다. 이 경우에는 존재하지 않는 키 상수를 사용할 때 컴파일 타임 오류가 발생합니다. 메시지 컴파일러는 Java 용으로 사용될 수 없습니다. Objective-C 또는 Swift에 대한 리소스 파일과 상수를 생성하며 다른 프로그래밍 환경에서도 확장 할 수 있습니다.