1

누구든지 도움이 될지 궁금합니다. 우리는 스프링 MVC & 웹 플로우 앱을 함께 모으고 모든 스크린 텍스트 등을 데이터베이스 기반 메시지 리소스 번들에 넣기를 원합니다. 나는이 문제의 간단한 구현을 가지고있다. 그러나 텍스트의 버전 관리를 포함하여 응용 프로그램에 흰색 레이블을 붙일 수 있도록 지원해야합니다.스프링 메시지 리소스 번들 - 흰색 라벨링 및 버전 관리에 적합합니까?

내가 '흰색 라벨링'이라고 말하면 핵심 응용 프로그램이 다른 상업용 브랜드에 브랜드되어야한다는 의미입니다. 브랜딩의 CSS 요소는 쉽습니다. 우리는 Spring 테마를 사용할 것입니다. 그러나 브랜딩은 다른 화면 텍스트로 확장됩니다. 예를 들어, brandX는 "귀하의 이름은 무엇입니까?"라고 물을 수 있으며 brandY는 "이름을 입력하십시오"라고 물을 수 있습니다.

또한 브랜드 당 스크린 텍스트의 버전 관리를 지원해야합니다. 이것은 고객에게 일관된 사용자 여정과 메시지를 제공합니다. 예를 들어, 1 일에 주어진 화면 레이블 집합을보고 견적을 저장하면 10 일에 견적을 회수 할 때 같은 화면 레이블 세트를 볼 수 있습니다. 그 동안 해당 브랜드의 화면 텍스트가 5 번 반복 되더라도. (사실 빈번한 변화의 빈도는 자주 발생하지 않지만 여전히 지원해야 함)

나는 잠시 동안 이것을 해왔다. 초기 실험에서 나는 단지 메시지 키 앞에 리소스 번들 :

brandX.firstName = What is your firstname? 
brandY.firstName = Please enter your firstname 

하지만 여러 번 잘못 생각합니다. 우리가 (우리가있을 수 있습니다) 브랜드별로보기가없는 한

  1. 는 다음보기는 어떻게 든 모델이나 주제에 뭔가 하나에 따라 접두사를 적용 할 필요가있다. 보기에 표시 할 올바른 메시지를 선택하기 위해보기에 모델에 대해 알기가 잘못되었습니다.
  2. 버전 관리를 적용하는 방법을 모르겠습니다 (복합 키에 추가하는 것 이외에는 = brandX.firstname.v2 = 이름은 무엇입니까? ?)

이 글에서는 리소스 번들이 무엇인지에 대한 결론을 내릴 예정입니다. 로캘 기반 국제화 (이는 무엇을위한 것입니까?)에 적합하지만 지금은 그 (것)들과 확실히 다른 무언가를하는 것을 시도하고있다. 솔루션으로서의 메시지 리소스 번들이 내 요구 사항에 맞지 않을 수도 있다고 생각합니다.

다른 사람이 이와 같은 작업을 한 적이 있습니까? 어떻게 해결 했습니까?

건배

나단

내가 다른 테마 또는 브랜드와 함께 배포 할 수있는 테마 웹 앱이 비슷한 짓을했는지

답변

0

. 또한 "브랜드"가 배포됨에 따라 약간 다른 라벨이 필요했습니다.

내가 사용한 솔루션은 JSP 페이지에서 동일한 i18n 코드를 지정했지만 특정 배포 인스턴스에서 사용되는 "브랜드"에 따라 적절한 메시지 묶음을 선택하는 것이 었습니다. 따라서 전통적인 (언어 기반) 로케일에 따라 다른 메시지 묶음을 선택하는 대신 Spring이 org.springframework.web.servlet.i18n.CookieLocaleResolver을 통해 사용자 정의 로케일을 지정하여 사용자 정의 i18n 번들을 선택하게했습니다. 이 속성은 앱의 기본 속성 파일에있는 특정 속성에 의해 구성되었습니다. 여기에 디스패처 서블릿 중 일부가 있습니다.XML 파일 : 손으로 크랭크 작동 특정 브랜드 버전의 배포이었다 필요한 만

<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
    <property name="paramName" value="lang" /> 
</bean> 

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> 
    <property name="defaultLocale" value="${i18n.code}"/><!-- value from app.properties --> 
</bean> 

<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name="interceptors"> 
     <ref bean="localeChangeInterceptor" /> 
    </property> 
</bean> 

- 특정 등록 정보 파일을 쉘 스크립트는 배포를했고, 그것을 복사, 예를 들어, 조작이 필요 cp app.properties.BRAND_X app.properties (다른 파일이 있었다 web.xml).

편집 : 버전 관리 부분에 대해 확실하지만 당신은 아마 같은 JSP에서 그것을뿐만 아니라 파일 app.properties에서 그 당겨하지만 지정할 수 없습니다 :

<!-- custom tag that reads a properties file --> 
<c:set var="version"><app:propertyLoader bundle="app" property="site.version"/></c:set> 
<fmt:message key="form.firstName.${version}"/> 
+0

이 솔루션은 당신 있다고 가정 언급하는 것을 잊었다 전통적인 언어 기반의 i18n도 원하지 않습니다. – nickdos