2011-02-06 5 views
5

우리는 많은 양의 동적 인 내용으로 다소 큰 응용 프로그램을 가지고 있습니다. 어쨌든 struts가 속성 파일 대신 i18n 조회를 위해 데이터베이스를 사용하도록 강제 할 수 있습니까?데이터베이스를 사용하는 Struts2 국제화

누군가가 역동적 인 콘텐츠로 i18n을 해본 적이 있다면 다른 방법으로도이를 해결할 수 있습니다.

+0

이전에는 Struts 1에서이 작업을 수행하는 방법이있었습니다 (예 : http://wiki.apache.org/struts/DatabaseMessageResourcesHowto).불행히도 Struts 2에서 동일한 작업을 수행하는 방법에 대한 정보는 많지 않습니다. –

답변

2

아니요, Struts2에 데이터베이스의 지역화 된 콘텐츠를로드하는 기본 제공 방법이 없습니다. 직접 작성해야합니다.

귀하의 요구 사항은 무엇입니까? 사용자가 필드 프롬프트, 오류 메시지 등을 동적으로 변경할 수 있어야합니까?

+0

사용자는 본질적으로 설문 조사 대상이며 번역 대상자를 입력해야합니다. 번역 자원의 소스를 변경하여 번역을 동적으로 변경할 수 있기를 희망했습니다. – partkyle

0

사용자 정의 인터셉터를 빌드하면 이와 비슷한 작업을 수행 할 수 있습니다. 인터셉터가 데이터베이스의 모든 키 값 쌍을 읽고 값 스택에 삽입 할 수 있습니다. i18n이 값 스택에서 해당 정보를 가져 오는 경우 이전에 스트럿츠를 사용하여 i18n을 혼란에 빠뜨리지 않은 유일한 확실한 사실입니다. 그렇지 않다면 정보를로드하기 위해 인터셉터에서 다른 것을 할 수있을 지 모르겠습니다.

사용자 정의 인터셉터를 빌드하는 것은 그리 복잡하지 않습니다. 저기 튜토리얼 사이트를 많이 포함, (여기에 자기 승진을위한 중괄호) 내 블로그 : http://ddubbya.blogspot.com/2011/01/creating-custom-struts2-interceptors.html.

-1

를 사용하여 속성 레이블과 같은 정적 인 콘텐츠를 파일, 동적 콘텐츠에 대한 등

메시지를 사용하려는 모든 언어에 대한 언어 코드 ID를 포함하는 데이터베이스 테이블로 시작합니다. 이미 번역 된 모든 동적 컨텐츠 항목은 해당 언어 코드 ID가 기본 키에 추가 된 상태로 이동합니다. 번역이 누락 된 경우 올바른 번역이있을 때까지 일을 쉽게하기 위해 응용 프로그램을 기본 언어로 되돌리도록 프로그램 할 수 있습니다.

사용자가 원하는 언어로 기여도를 제공하고 적절한 언어 ID로 저장할 수 있습니다. 어떤 사람은 기부금을 완성하기 위해 다른 언어로 번역을 제공해야합니다. 당신은 아마있을 것이다, 그래서 나는 이것에 대한 쉬운 플러그 앤 플레이 솔루션 모르겠어요

... 
PRIMARY KEY (`subject_id`,`language_id`), 
... 
4

은 스스로를 구현 - 계획을하는 방법으로 만 그립에 오는 시간이 꽤 지출에 Struts 2 (및 XWork)의 지역화 기능이 구현되었습니다. 열쇠는 아마도 자신의 구현 인 com.opensymphony.xwork2.TextProvider을 제공하는 것일 것입니다 (그리고 struts.xml에 < 빈 > 태그를 제공하여 struts에 사용하도록 지시하십시오). 나는 전체 아키텍처에이 피팅의 적어도 두 가지 방법을 생각할 수 있습니다

  • 은 TextProvider 구현이 직접 데이터베이스에 액세스 되세요. YAGNI의 정신으로 시작하는 것이 가장 좋은 방법 일 것입니다 (필요할 경우 언제든지 나중에 리펙토링 할 수 있습니다).

  • 또는 데이터베이스 코드를 Java의 ResourceBundle 인터페이스 구현에 배치 할 수 있습니다. 이는 XWork에서 내부적으로 사용하는 것입니다. 나에게 이것은 훨씬 더 무거운 디자인 접근법처럼 들리지만, 더하기 측면에서 이것을 수행하는 방법을 설명하는 일부 articlesaround이 있습니다.