서블릿 국제
우리가 시작하기 전에의 세 가지 중요한 용어를 살펴 보자 :
- 국제화 (I18N) :이은 웹 사이트 방문자의 언어 나 국적로 번역 된 내용의 다른 버전을 제공하는 것을 의미한다.
- 지역화 (L10N) :이 사이트는 힌디어 (힌디어)로 번역 된 사이트로 특정 지역이나 문화 적응 자원에 첨가하고 있다는 것을 의미한다.
- 로케일 (로케일) :이 특별한 문화적, 지리적 영역이다.그것은 일반적으로 밑줄 및 국가 상징 다음 언어 기호를 의미한다. 이러한 영어 (미국) 설정에 대해 "ko 페이지"로 영역을 나타냅니다.
글로벌 웹 사이트를 만드는 몇 가지 고려해야 할 사항이 있습니다. 이러한 고려의 전체 세부 사항을 설명하지 않습니다이 튜토리얼, 그것은 차별화 된 위치 (예 : 로케일이) 다른 언어로 제공 웹 페이지를 만드는 방법을 보여주는 좋은 예를 전달합니다.
서블릿은 요청의 로케일에 따라 사이트의 해당 버전을 선택하고, 현지 언어, 문화, 필요에 따라 사이트의 해당 버전을 제공 할 수 있습니다. 다음은 로케일 객체 반환 요청 개체입니다.
java.util.Locale의 request.getLocale ()
검출 로케일
중요한 지역 설정 방법은 아래에 나열되어, 당신은 지리적 위치, 언어, 지역 설정 요청을 감지하는 데 사용할 수 있습니다. 다음 방법 모두는 국가 및 언어 이름 스터 브라우저 설정의 이름을 표시합니다.
序号 | 方法 & 描述 |
---|---|
1 | String getCountry() 该方法以 2 个大写字母形式的 ISO 3166 格式返回该区域设置的国家/地区代码。 |
2 | String getDisplayCountry() 该方法返回适合向用户显示的区域设置的国家的名称。 |
3 | String getLanguage() 该方法以小写字母形式的 ISO 639 格式返回该区域设置的语言代码。 |
4 | String getDisplayLanguage() 该方法返回适合向用户显示的区域设置的语言的名称。 |
5 | String getISO3Country() 该方法返回该区域设置的国家的三个字母缩写。 |
6 | String getISO3Language() 该方法返回该区域设置的语言的三个字母的缩写。 |
예
이 예는 해당 국가의 언어와 요청을 표시하는 방법을 보여줍니다 :
수입 자바 .io *; 수입에서 javax.servlet *; 수입부터는 javax.servlet.http *; 수입 java.util.Locale의; 공용 클래스없이 GetLocale는 HttpServlet을 확장 { 공공 무효의 doGet (HttpServletRequest의 요청, HttpServletResponse를 응답) ServletException이 IOException을 던졌습니다 { // 클라이언트 로케일 로케일 로케일을 가져 = request.getLocale (); 문자열 언어 = locale.getLanguage (); 문자열 국가 = locale.getCountry (); 응답 콘텐츠 형식 response.setContentType을 설정 // ( "text / html과; 문자셋 = UTF-8"); () = response.getWriter을의 PrintWriter; 문자열 제목 = "감지 영역 설정"; 문자열 DOCTYPE = "\ n <DOCTYPE html로!>"; out.println (DOCTYPE + "<HTML> \ n"+ "<머리> <제목>"+ 제목 + "</ 제목> </ head> \ n"+ "<BODY BGCOLOR = \"#의 f0f0f0 \ "> \ n"+ "<H1 정렬 = \"센터 \ ">"+ 언어 + "</ H1> \ n"+ "<H2 정렬 = \"센터 \ ">"+ 국가 + "</ H2> \ n"+ "</ BODY> </ HTML>"); } }
언어 설정
서블릿은 작성된 페이지 (등 영어, 스페인어, 독일어, 프랑스어, 이탈리아어, 네덜란드어, 등) 서유럽 언어로 내보낼 수 있습니다. 여기서, 모든 문자를 정확하게 표시하기 위해서는, 콘텐츠 Language 헤더 매우 중요 설정.
"N"대표 "& # 161;", "& # 241"두 번째 포인트는 다음과 같은 모든 특수 문자를 표시 할 HTML 엔티티를 사용하는 것입니다 다음과 같이 "¡"를 의미한다 :
수입 자바 .io *; 수입에서 javax.servlet *; 수입부터는 javax.servlet.http *; 수입 java.util.Locale의; 공용 클래스 DisplaySpanish는 HttpServlet을 확장 { 공공 무효의 doGet (HttpServletRequest의 요청, HttpServletResponse를 응답) ServletException이 IOException을 던졌습니다 { 응답 콘텐츠 형식 response.setContentType을 설정 // ( "text / html과; 문자셋 = UTF-8"); () = response.getWriter을의 PrintWriter; // 스페인어 코드 response.setHeader ( "내용 - 언어", "ES")을 설정하고, 문자열 제목 = "욕실 에스파 & ntilde; 올 실시"; 문자열 DOCTYPE = "\ n <DOCTYPE html로!>"; out.println (DOCTYPE + "<HTML> \ n"+ "<머리> <제목>"+ 제목 + "</ 제목> </ head> \ n"+ "<BODY BGCOLOR = \"#의 f0f0f0 \ "> \ n"+ "<H1>"+ "욕실 에스파 & ntilde; 올 :"+ "</ H1> \ n"+ "<H1>"+ "& iexcl ;! 안녕 문도"+ "</ H1> \ n"+ "</ BODY> </ HTML>"); } }
날짜 특정 로케일
당신은 형식 날짜 및 로케일에 특정 시간에 java.text.DateFormat의 클래스와 정적 메소드 getDateTimeInstance를 ()를 사용할 수 있습니다. 다음의 예는 지정된 로케일 특정 날짜를 포맷하는 방법을 보여줍니다
수입 자바 .io *; 수입에서 javax.servlet *; 수입부터는 javax.servlet.http *; 수입 java.util.Locale의; 수입 java.text.DateFormat의; 가져 오기 java.util.Date; 공용 클래스 DateLocale는 HttpServlet을 확장 { 공공 무효의 doGet (HttpServletRequest의 요청, HttpServletResponse를 응답) ServletException이 IOException을 던졌습니다 { 응답 콘텐츠 형식 response.setContentType을 설정 // ( "text / html과; 문자셋 = UTF-8"); () = response.getWriter을의 PrintWriter; // 클라이언트 로케일 로케일 로케일을 가져 = request.getLocale (); 문자열 날짜 = DateFormat.getDateTimeInstance ( DateFormat.FULL, DateFormat.SHORT, 로케일) .format (새 Date ()); 문자열 제목 = "로케일 특정 날짜"; 문자열 DOCTYPE = "\ n <DOCTYPE html로!>"; out.println (DOCTYPE + "<HTML> \ n"+ "<머리> <제목>"+ 제목 + "</ 제목> </ head> \ n"+ "<BODY BGCOLOR = \"#의 f0f0f0 \ "> \ n"+ "<H1 정렬 = \"센터 \ ">"+ 날짜 + "</ H1> \ n"+ "</ BODY> </ HTML>"); } }
환율 특정 로케일
당신은 통화 별 로케일로 (예 : 긴 두 번 유형 또는 유형으로) 형식 번호에 java.text.NumberFormat의 클래스와 정적 메소드 getCurrencyInstance ()를 사용할 수 있습니다. 다음의 예는 지정된 로케일에 특정 통화를 포맷하는 방법을 보여줍니다
수입 자바 .io *; 수입에서 javax.servlet *; 수입부터는 javax.servlet.http *; 수입 java.util.Locale의; 수입 java.text.NumberFormat의; 가져 오기 java.util.Date; 공용 클래스 CurrencyLocale는 HttpServlet을 확장 { 공공 무효의 doGet (HttpServletRequest의 요청, HttpServletResponse를 응답) ServletException이 IOException을 던졌습니다 { 응답 콘텐츠 형식 response.setContentType을 설정 // ( "text / html과; 문자셋 = UTF-8"); () = response.getWriter을의 PrintWriter; // 클라이언트 로케일 로케일 로케일을 가져 = request.getLocale (); 의 NumberFormat NFT = NumberFormat.getCurrencyInstance (로케일); 문자열 formattedCurr = nft.format (1000000); 문자열 제목 = "로케일 특정 통화"; 문자열 DOCTYPE = "\ n <DOCTYPE html로!>"; out.println (DOCTYPE + "<HTML> \ n"+ "<머리> <제목>"+ 제목 + "</ 제목> </ head> \ n"+ "<BODY BGCOLOR = \"#의 f0f0f0 \ "> \ n"+ "<H1 정렬 = \"센터 \ ">"+ formattedCurr + "</ H1> \ n"+ "</ BODY> </ HTML>"); } }
비율 특정 로케일
당신은 백분율 특정 로케일의 형식을 java.text.NumberFormat의 클래스와 정적 메소드 getPercentInstance ()를 사용할 수 있습니다. 다음의 예는, 지정된 로케일에 특정 비율을 포맷하는 방법을 보여줍니다
수입 자바 .io *; 수입에서 javax.servlet *; 수입부터는 javax.servlet.http *; 수입 java.util.Locale의; 수입 java.text.NumberFormat의; 가져 오기 java.util.Date; 공용 클래스 PercentageLocale는 HttpServlet을 확장 { 공공 무효의 doGet (HttpServletRequest의 요청, HttpServletResponse를 응답) ServletException이 IOException을 던졌습니다 { 응답 콘텐츠 형식 response.setContentType을 설정 // ( "text / html과; 문자셋 = UTF-8"); () = response.getWriter을의 PrintWriter; // 클라이언트 로케일 로케일 로케일을 가져 = request.getLocale (); 의 NumberFormat NFT = NumberFormat.getPercentInstance (로케일); 문자열 formattedPerc = nft.format (0.51); 문자열 제목 = "특정 비율을 로케일"; 문자열 DOCTYPE = "\ n <DOCTYPE html로!>"; out.println (DOCTYPE + "<HTML> \ n"+ "<머리> <제목>"+ 제목 + "</ 제목> </ head> \ n"+ "<BODY BGCOLOR = \"#의 f0f0f0 \ "> \ n"+ "<H1 정렬 = \"센터 \ ">"+ formattedPerc + "</ H1> \ n"+ "</ BODY> </ HTML>"); } }