2011-02-28 4 views
3

Wicket 응용 프로그램의 국제화를 유지 관리하는 데 좋은 방법이 있습니까?국제화 된 개찰 응용 프로그램 관리

현재 Wicket에서와 마찬가지로 여러 * .properties 파일이 번역되어 있습니다. 앱을 다시 시작하지 않고 변경 사항이 적용되도록 런타임에 값에 액세스하고 값을 변경할 수 있습니까?

(또 다른 방법은 데이터베이스에 값을 저장하는 것입니다하지만 난 그냥 지금 떠날.)

+0

질문이 무엇인지 확실하지 :

은 개찰구가이처럼 리소스 설정을 적용 할 필요가 런타임에 변경을 데리러 가야합니다. 그러나 DB보다 런타임에서 텍스트를 변경하려는 경우가 있습니다. – bert

답변

4

당신은 IStringResourceLoader의 자신의 구현을 작성하고 응용 프로그램을 등록 할 수 있습니다 Aaron Digulla가 제안했다.

getApplication().getResourceSettings().setResourcePollFrequency( 
                  Duration.seconds(1)); 
1

내가 기존 솔루션 알고 있어요 그러나 여기에서 우리가 가진 몇 가지 아이디어가 있습니다 :

  • 번역을 응용 프로그램 외부의 디렉토리에 저장하십시오. 이렇게하면 JAR 파일로 끝나지 않으므로 런타임에 변경할 수 있습니다.
  • 리소스 번들을 새로 고칠 수 있는지 확인하십시오 (예 : 텍스트가 변경 될 때 호출 할 수있는 이벤트 버스 나 수신기를 사용하여).
  • "번역 모드"를 응용 프로그램에 추가하십시오. 자바 스크립트와 HTML을주의 깊게 디자인하면 리소스 묶음의 모든 텍스트를 클릭하여 "편집 가능"하게 만들 수 있습니다. AJAX를 사용하여 변경 이벤트를 서버로 다시 보내고 자원 번들을 업데이트하십시오.

    이렇게하면 번역자는 라이브 시스템에서 작업을 수행 할 수 있으므로 온라인 변경할 필요가 있습니다 (텍스트를 번역해야하는지 또는 계속 번역해야하는지에 따라 CSS 클래스를 제공 할 수 있음). 번역이, 어떻게 생겼는지 등

[편집]

나는 WAR 파일 외부 의미한다. 그렇지 않으면 변환이 변경 될 때마다 WAR를 다시 작성해야합니다.

또는 속성 파일을 WEB-INF/classes (일반 클래스 파일과 함께)에 넣고 작은 스크립트를 사용하여 WAR 파일을 대체 할 수 있습니다.

배치/셸 스크립트에서 jar -u을 사용하여 기존 파일을 바꿉니다. 개미에서는 이전 WAR 파일을 zipfileset을 통해 소스로 사용하고 새 파일을 먼저 추가하고 duplicate="preserve"을 사용하십시오.

이렇게하면 전체 파일을 다시 압축 할 필요가 없습니다.

getApplication().getResourceSettings().addStringResourceLoader( 
                new CustomResourceLoader()); 

리소스 로더가 WAR 파일 이외의 어떤 장소에서 자원을 페치가 관리자에 의해 수정 될 수 있도록 다음과 같이

+0

감사합니다. "번역 모드"가 매우 정교하고 내 현재 요구 사항을 능가합니다 :) 응용 프로그램 외부에서 속성 파일을 저장하는 것에 대해 ...수업 디렉토리 밖에 있니? 단지 jar 파일이 없으며, 내가 배치 한 war 파일 만 존재합니다 ... – rotsch

+0

리소스를 JAR 파일의'WEB-INF/lib /'에 두지 마십시오. –