JSP สากล
ก่อนที่คุณจะเริ่มต้นคุณจะต้องอธิบายแนวคิดที่สำคัญไม่กี่:
- สากล (i18n) บ่งชี้ว่าหน้าขึ้นอยู่กับภาษาของผู้เข้าชมงานหรือประเทศเพื่อนำเสนอการแปลที่แตกต่างกัน
- รองรับหลายภาษา (l10n): เพิ่มทรัพยากรในเว็บไซต์เพื่อที่จะปรับตัวเข้ากับมันไปยังภูมิภาคที่แตกต่างกันและวัฒนธรรม ยกตัวอย่างเช่นรุ่นภาษาอินเดียของเว็บไซต์
- พื้นที่นี้เป็นพื้นที่หรือเฉพาะวัฒนธรรมการพิจารณาโดยทั่วไปจะเป็นภาษาสัญลักษณ์และสัญลักษณ์ประจำชาติที่เชื่อมต่อด้วยการขีดเส้นใต้ เช่น "en_US" สำหรับภูมิภาคภาษาอังกฤษของสหรัฐอเมริกา
หากคุณต้องการที่จะสร้างเว็บไซต์ทั่วโลกคุณจะต้องมีความกังวลเกี่ยวกับจำนวนของโครงการ บทนี้จะแสดงรายละเอียดวิธีการจัดการกับปัญหาระหว่างประเทศและให้ตัวอย่างบางอย่างเพื่อให้เข้าใจลึกซึ้งยิ่งขึ้น
JSP ภาชนะที่สามารถขอตามคุณลักษณะที่เกิดเหตุเพื่อให้รุ่นที่ถูกต้องของหน้า ต่อไปเราจะแสดงวิธีการที่จะได้รับวัตถุสถานที่เกิดเหตุโดยไวยากรณ์ Object Request:
java.util.Locale request.getLocale()
การตรวจสอบสถานที่เกิดเหตุ
ตารางต่อไปนี้แสดงวิธีการที่สำคัญวัตถุสถานที่เกิดเหตุมากขึ้นสำหรับการตรวจสอบคำขอภูมิภาควัตถุภาษาและภูมิภาค ทั้งหมดของวิธีการเหล่านี้จะแสดงชื่อของประเทศและชื่อภาษาในเบราว์เซอร์:
เลขที่ | วิธีการและคำอธิบาย |
---|---|
1 | สตริง getCountry () กลับประเทศรหัสพื้นที่ / พื้นที่ของเมืองหลวงหรือ ISO 3166 รูปแบบตัวอักษร 2 ตัว |
2 | สตริง getDisplayCountry () ส่งกลับชื่อของประเทศที่จะแสดงให้กับผู้ใช้ |
3 | สตริง getLanguage () ส่งกลับตัวพิมพ์เล็กภาษาอังกฤษรหัสภาษาหรือภูมิภาค ISO 639 รูปแบบ |
4 | สตริง getDisplayLanguage () กลับไปให้ผู้ใช้สามารถเห็นชื่อของภาษา |
5 | สตริง getISO3Country () ผลตอบแทนที่ได้ชื่อของประเทศที่ย่อสามตัวอักษร |
6 | สตริง getISO3Language () 3 ผลตอบแทนชื่อย่อชื่อภาษา |
ตัวอย่างสาธิต
ตัวอย่างนี้แสดงให้เห็นถึงวิธีการแสดงภาษาและประเทศใน JSP:
<%@ page import="java.io.*,java.util.Locale" %> <%@ page import="javax.servlet.*,javax.servlet.http.* "%> <% //获取客户端本地化信息 Locale locale = request.getLocale(); String language = locale.getLanguage(); String country = locale.getCountry(); %> <html> <head> <title>Detecting Locale</title> </head> <body> <center> <h1>Detecting Locale</h1> </center> <p align="center"> <% out.println("Language : " + language + "<br />"); out.println("Country : " + country + "<br />"); %> </p> </body> </html>
การตั้งค่าภาษา
JSP สามารถนำมาใช้เพื่อการส่งออกหน้าสำหรับภาษายุโรปตะวันตกเช่นอังกฤษ, สเปน, เยอรมัน, ฝรั่งเศส, อิตาลีและอื่น ๆ ดังนั้นการตั้งค่าข้อมูลส่วนหัวเนื้อหาภาษาได้อย่างถูกต้องแสดงตัวละครทุกตัวมีความสำคัญมาก
จุดที่สองคือเราต้องใช้ HTML หน่วย Character เพื่อแสดงตัวอักษรพิเศษเช่น "& # 241;" หมายถึง "& # 161;" หมายถึง "?": "?"
<%@ page import="java.io.*,java.util.Locale" %> <%@ page import="javax.servlet.*,javax.servlet.http.* "%> <% // Set response content type response.setContentType("text/html"); // Set spanish language code. response.setHeader("Content-Language", "es"); String title = "En Espa?ol"; %> <html> <head> <title><% out.print(title); %></title> </head> <body> <center> <h1><% out.print(title); %></h1> </center> <div align="center"> <p>En Espa?ol</p> <p>?Hola Mundo!</p> </div> </body> </html>
วันที่ที่ระบุในภูมิภาค
คุณสามารถใช้ java.text.DateFormat ชั้นเรียนและวิธีการคงที่ getDateTimeInstance () เพื่อรูปแบบวันที่และเวลา ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีการจัดรูปแบบตามพื้นที่ที่ระบุวันที่และเวลา:
<%@ page import="java.io.*,java.util.Locale" %> <%@ page import="javax.servlet.*,javax.servlet.http.* "%> <%@ page import="java.text.DateFormat,java.util.Date" %> <% String title = "Locale Specific Dates"; //Get the client's Locale Locale locale = request.getLocale( ); String date = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.SHORT, locale).format(new Date( )); %> <html> <head> <title><% out.print(title); %></title> </head> <body> <center> <h1><% out.print(title); %></h1> </center> <div align="center"> <p>Local Date: <% out.print(date); %></p> </div> </body> </html>
สกุลเงินเฉพาะของภูมิภาค
คุณสามารถใช้ java.text.NumberFormat ชั้นเรียนและวิธีการคงที่ getCurrencyInstance () เพื่อจัดรูปแบบหมายเลข ยกตัวอย่างเช่นในพื้นที่หนึ่งของประเภทสกุลเงินยาวและประเภทคู่ ตัวอย่างต่อไปนี้แสดงให้เห็นว่าการจัดรูปแบบตามที่ระบุไว้ในพื้นที่สกุลเงิน:
<%@ page import="java.io.*,java.util.Locale" %> <%@ page import="javax.servlet.*,javax.servlet.http.* "%> <%@ page import="java.text.NumberFormat,java.util.Date" %> <% String title = "Locale Specific Currency"; //Get the client's Locale Locale locale = request.getLocale( ); NumberFormat nft = NumberFormat.getCurrencyInstance(locale); String formattedCurr = nft.format(1000000); %> <html> <head> <title><% out.print(title); %></title> </head> <body> <center> <h1><% out.print(title); %></h1> </center> <div align="center"> <p>Formatted Currency: <% out.print(formattedCurr); %></p> </div> </body> </html>
อัตราร้อยละของพื้นที่
คุณสามารถใช้ java.text.NumberFormat ชั้นเรียนและวิธีการคงที่ getPercentInstance () เพื่อรูปแบบร้อยละ ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีการจัดรูปแบบตามสัดส่วนที่ระบุของพื้นที่:
<%@ page import="java.io.*,java.util.Locale" %> <%@ page import="javax.servlet.*,javax.servlet.http.* "%> <%@ page import="java.text.NumberFormat,java.util.Date" %> <% String title = "Locale Specific Percentage"; //Get the client's Locale Locale locale = request.getLocale( ); NumberFormat nft = NumberFormat.getPercentInstance(locale); String formattedPerc = nft.format(0.51); %> <html> <head> <title><% out.print(title); %></title> </head> <body> <center> <h1><% out.print(title); %></h1> </center> <div align="center"> <p>Formatted Percentage: <% out.print(formattedPerc); %></p> </div> </body> </html>