문제

나는 모든 문자열 리터럴을 구문 분석하고 추출 해야하는 다소 많은 소스 파일을 가지고 있습니다.
예를 들어:

Label l = new Label("Cat");

될 것입니다 :

Label l = new Label(Constants.CAT);

그리고에서 Constants.java 나는 가질 것이다 :

public final static String CAT = "Cat";

문자열이 속성 텍스트 파일로 외부화되기를 원하지 않습니다.
한 가지 이유는 일관성과 코드 가독성입니다.
다른 하나는 고객 코드가 사용한다는 것입니다 GWT, Java 속성 텍스트 파일 메커니즘을 지원하지 않습니다.

나는 일종의 파서를 쓸 수 있습니다 (ANT 교체 작업 사용)?
그러나 나는 an을 궁금했다 IDE 이미 이런 종류의 일을 자동으로 수행합니다.

도움이 되었습니까?

해결책

Peter Kelley 답변을 완료하려면 Eclipse Ide를 고려할 수 있습니다. ast 해결책.

그런 다음 소스 코드를 구문 분석하고 원하는 작업을 수행하는 AST 프로그램을 작성할 수 있습니다.

이에 대한 전체 예제를 사용할 수 있습니다 일식 코너 기사, 또한 더 자세한 내용 일식 도움.
그리고 몇 가지 예를 찾을 수 있습니다 "내부 번역 구현"섹션의 5 개 목록 5 Eclipse JDT에 도메인 특정 언어를 포함시키는 자동화, 함께 GitHub 프로젝트의 여러 예.

다른 팁

Eclipse는이 작업을 자동으로 수행합니다. 파일을 마우스 오른쪽 버튼으로 클릭하고 "소스"를 선택한 다음 "외부화 문자열"을 선택하십시오.

이것은 당신이 요청한 것과 정확히 일치하지 않지만 (상수로 문자열을 갖는다. 로케일에 따라 동적으로로드 할 수있는 속성 파일로 이동합니다. 제안대로 별도의 Java 소스 파일에 있으면 응용 프로그램의 모든 언어가 한 번에 있거나 로케일에 따라 다른 응용 프로그램을 배송합니다.

우리는 기본 물건조차 영어와 일본어로 배송 해야하는 응용 프로그램에 사용합니다 (12 개 언어를 가진보다 복잡한 응용 프로그램은 소규모 소프트웨어 개발 회사가 아닙니다.

만약 너라면 하다 이미 언급 된 단점에도 불구하고 Java 파일로 원한다. 프리 플랜트 Java 소스에서 문자열을 시도하고 추출하는 것보다 속성 파일을 Java 소스 파일로 변형시키는 프로그램을 작성하는 것이 훨씬 쉽다.

그런 다음해야 할 일은 액세서 클래스를 수정하여 실행 시간에로드하지 않고 내장 된 문자열 (별도 클래스)을 사용하기 만하면됩니다.

당신이 이것을하고 싶지 않은 몇 가지 이유가 있습니다. 생성 된 파일 (Eclipse 함수에 대해 몰랐다)은 예를 들어 테스트 클래스의 생성자와 같이 설정하는 문자열을 구별하지 않을 것이라는 사실 외에 상수, 더 큰 문제는 모든 공공 정적 결승전이 수업에 수업에 수집 될 것이며, 수업 행동을 변경하려면 상수를 고정하는 클래스뿐만 아니라 참조하는 모든 것을 변경해야한다는 것입니다.

나는 Pax Diablo가 말한 것을 완전히 인정합니다. 우리는 그 기능도 사용하고 있습니다.

클래스 파일에 적용되면 "외부화 문자열"함수는 클래스 메시지와 속성 파일 메시지 .properties의 두 파일을 만듭니다. 그런 다음 String Literals의 모든 직접 사용법을 Message.get (String Key)로 콜로 리디렉션하고 "ext. String"마법사에서 문자열에 입력 한 키를 사용합니다.

BTW : 속성 파일의 나쁜 점은 무엇입니까? 그가 말했듯이, 당신은 속성 파일을 변경할 수 있으며 텍스트를 변경 해야하는 경우 클래스를 변경할 필요가 없습니다.

또 다른 장점은 이것입니다 : 문자열 리터럴을 속성 파일로 추출하는 방법은 원하는 모든 언어로 소스 언어를 자유롭게 번역 할 수 있습니다. 코드를 수정하지 않고. 속성 파일 로더는 언어 ISO 코드와 함께 해당 파일을 사용하여 대상 언어 파일을 자동으로로드합니다. 따라서 코드가 실행되는 플랫폼에 대해 걱정할 필요가 없으므로 적절한 언어를 자동으로 선택합니다. 수업 문서를 참조하십시오 ResourceBundle 이것이 자세히 작동하는 방식에 대해.

당신은 그것을 확인하고 싶을 수도 있습니다 잭팟 소스 변환 엔진 NetBeans에서는 소스 변환을 스크립트 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top