1. 리소스 파일 이름 지정
국제 자원 파일의 이름 지정 형식은 다음과 같습니다.
Basename_language_country.properties basename_language.properties basename.properties
Basename은 자원 파일의 기본 이름 인 경우 언어 및 국가는 Java가 지원하는 언어 및 국가 여야합니다. Java 지원을받는 언어 및 국가 코드는 다음과 같습니다.
Locale [] locales = locale.getavailablelocales (); for (locale locale : locales) {system.out.println ( "Country :" + locale.getCountry () + ", 언어 :" + locale.getLanguage ()); }2. 리소스 파일의 구성 및 획득
새 리소스 파일을 만듭니다. 중국 환경에서 리소스 파일의 값 값은 ASCII를 변환해야합니다. 실행 후 Native2ASCII를 입력 할 수 있습니다. 또한이 기사는 Eclipse Attribute 파일 플러그인을 사용하므로 중국어로 직접 표시됩니다. 속성 파일은 다음과 같이 구성됩니다.
info_en_us.properties
username = zhangsaninfo_zh_cn.propertiesusername = zhangsaninfo_zh.propertiesusername = li si password = lisiinfo.propertiesusername = wangwu password = wangwuemail = mailbox
또한 속성 파일에서 값을 읽어야하는 경우 struts-config.xml 파일에서 상수를 구성해야합니다.
<!-값 값이 리소스 파일의베이스 이름을 나타내는 리소스 파일 이름을 사용합니다-> <constant name = "struts.custom.i18n.resources"value = "info"> </constant>
페이지에서 리소스 파일을 가져 오는 방법은 아래와 같이 Struts 태그 <s : text/>를 사용하는 것입니다.
<!-리소스 파일은 키 값을 가져옵니다-> <s : text name = "username"/> <s : text name = "password"/> <s : text name = "email"/>
또한 양식에서 키 값을 얻는 경우 방법은 다음과 같습니다.
<!- 키 값이 자원 파일의 키 값이고 함수는 LABEL의 속성 값과 동일한 입력 상자에 레이블 이름을 추가하는 것입니다. 그러나 상수에서 키 값은 속성 파일에서 얻을 수 없습니다. -> <s : textfield name = "login.username"key = "username"> </s : textfield>
또한 constant <constant name = "struts.ui.theme"value = "simple"/>을 사용하는 경우 <s : textfield/>의 키 값은 속성 파일에서 해당 값을 얻을 수 없습니다.
마지막 페이지는 결과를 다음과 같이 보여줍니다.
위 구성 파일 에서이 세 값의 값 소스를 볼 수 있습니다. 이것으로부터, 우리는 리소스 파일의 검색 순서가 다음과 같습니다.
먼저 Basename_language_country.properties에서 관련 키 값을 찾으십시오. 그렇지 않은 경우 Basename_language.properties에서 관련 키 값을 찾으십시오. 그렇지 않은 경우 Basename.properties에서 관련 키 값을 찾으십시오. 그렇지 않은 경우 관련 키 값을 찾으십시오. 그렇지 않으면 이름으로 표시됩니다.
3. 속성 파일에서 자리 표시 자 사용
속성 파일의 구성 내용은 다음과 같습니다.
사용자 이름 = Zhang San, {0}, {1}
태그 <s : param> value </s : param>을 사용하여 JSP에서 매개 변수를 전달하십시오.
<s : 텍스트 이름 = "username"> <s : param> hello </s : param> <s : param> 환영! </s : param> </s : text>
4. 응용 프로그램 리소스 파일이 작동합니다
리소스 파일을 사용하려면 ActionSupport 클래스를 상속해야합니다. ActionSupport 클래스는 TextProvider와 LocalEprovider의 두 인터페이스를 구현합니다. TextProvider는 리소스 파일 값 GetText () 메소드를 얻는 메소드를 제공하는 반면 LocalEprovider 인터페이스에는 로케일을 얻기위한 하나의 getLocale () 메소드 만 있습니다.
구성 파일 info_zh_cn.properties를 수정하십시오.
username = zhang san, {0}, {1} usernameerror = 사용자 이름이 비어있을 수 없습니다! 확인하십시오!실제로, 속성 파일을 얻는 방법은 다음과 같습니다.
this.getText ( "usernameError");
작동하는 자리 표시자를 사용하여 작동하면 코드는 다음과 같습니다.
this.getText ( "username", new String [] { "hello", "welcome"});5. 패키지 전체의 리소스 파일
이 패키지와 하위 패키지의 조치는 리소스 파일에 액세스 할 수 있습니다. 배치는 특정 패키지 아래에 있으며 이름 지정 형식은 다음과 같습니다. 여기서 패키지는 고정 형식입니다. 구성 파일 package_zh_cn.properties는 다음과 같습니다.
username = 패키지 범위에서 사용자 이름입니다
패키지 아래의 동작에서 getText ( "사용자 이름")를 사용하여 가져올 수 있습니다.
6. 동작 범위의 리소스 파일
별도의 조치를 위해 속성 파일을 지정하여 동일한 레벨의 디렉토리에 배치 할 수 있습니다. 이름 형식은입니다
ActionName_language_country.properties
.
작업 범위의 속성 파일 구성 :
username = 동작 범위 내에서 사용자 이름입니다
getText ( "username") 메소드도 동작에 사용되어 값을 얻습니다.
7. 리소스 파일의로드 순서
조치 범위 내에있는 GetText (Key) 값을 사용하기 위해서는 액션 범위 내에 속성 파일, 패키지 범위 내의 속성 파일 및 글로벌 속성 파일이 있으면 로딩 순서는 다음과 같습니다.
첫째, 지정된 조치의 속성 파일에 키 값이 존재하는지 여부. 존재하면 값이 취해집니다. 존재하지 않으면 지정된 키 값의 패키지 범위 속성 파일이 현재 동작의 상위 레벨 패키지에 존재하는지 여부를 찾으십시오. 존재하지 않으면 이전 레벨 패키지에서 계속 검색하십시오. 발견되지 않은 경우, 지정된 키 값이 글로벌 속성 파일에 존재하는지 여부를 찾으십시오. 지정된 키 값이 존재하면 키 값에 해당하는 값이 꺼집니다. 존재하지 않으면 기본값이 키 값입니다.
또한 Global Attribute 파일에 여러 리소스 파일이 있으면 Basename_language_country, Basename_language 및 Basename의 순서대로 검색해야합니다.
8. 페이지에서 리소스 파일을 가져옵니다
(1) <s : i18n/>를 사용하여 리소스 파일에 액세스하십시오.
코드는 다음과 같습니다.
<!-i18n 태그를 사용하여 속성 파일을 사용하여 패키지 스코프에서 리소스 파일을 가져옵니다-> <s : i18n name = "com/struts/package"> <s : "텍스트 이름 ="username "> </s : text> </s : i18n> <!-action scope에서 리소스 파일을 가져옵니다. <s : 텍스트 이름 = "username"> </s : text> </s : i18n>
(2) <fmt/>의 사용
JSTL에는 국제화 및 서식 태그가 포함됩니다. 국제화 태그를 사용하면 JSP 페이지가 방문자가있는 영역에 따라 다른 언어로 페이지 표현을 출력 할 수 있습니다. 여기에서 Maven을 사용하여 종속성 JAR 패키지를 추가해야합니다. 구성 파일은 다음과 같습니다.
<!-JSTL 태그 라이브러리 소개-> <pectionency> <groupId> jstl </groupid> <artifactid> jstl </artifactid> <버전> 1.2 </version> </fectionency>
JSP 페이지에서 FMT 태그를 사용하면 응용 프로그램 코드는 다음과 같습니다.
<!-JSTL 태그 fmt-> <!-로케일을 설정하면 클라이언트가 전달한 불만 사항을 덮어 쓰면-> <fmt : setlocale value = "zh_cn"scope = "request"/> <!-리소스 세트를로드하고 EL 변수에 저장하십시오. BaseName은 기본 이름입니다. 패키지 범위에 있으면 com.struts.package이고 액션 범위에서 com.struts.service.loginservice-> <fmt : setbundle basename = "info"scope = "request"var = "vasename"/> <fmt : "username"Bandle = "$}"> <! <fmt : param value = "hello"/> <fmt : param value = "환영"/> </fmt : message> <br/> <!-fmt : 태그 본문에서만 액세스 할 수있는 리소스 세트-> <!-패키지 범위의 리소스 파일-> <fmt : bundle basename = "com.struts.package"> </fmt : bundle> <!-액션 범위의 리소스 파일-> <fmt : bundle basename = "com.struts.service.loginservice"> <fmt : "username"/> </fmt : bundle>