pengantarabangsaan JSP
Sebelum kita bermula, beberapa konsep penting perlu dijelaskan:
Pengantarabangsaan (i18n): Menunjukkan bahawa halaman akan dipaparkan dalam terjemahan berbeza berdasarkan bahasa atau negara pelawat.
Penyetempatan (l10n): Menambah sumber pada tapak web untuk menyesuaikannya dengan wilayah dan budaya yang berbeza. Seperti laman web versi India.
Wilayah: Ini ialah wilayah atau budaya tertentu, biasanya dianggap sebagai penanda linguistik dan penanda kebangsaan yang dihubungkan dengan garis bawah. Contohnya, "en_US" mewakili wilayah berbahasa Inggeris di Amerika Syarikat.
Jika anda ingin membina tapak web global, anda perlu mengambil berat tentang satu siri projek. Bab ini akan memberitahu anda secara terperinci cara menangani isu pengantarabangsaan dan memberikan beberapa contoh untuk memperdalam pemahaman anda.
Bekas JSP boleh menyediakan versi halaman yang betul berdasarkan atribut tempat permintaan. Seterusnya, sintaks cara mendapatkan objek Locale melalui objek permintaan diberikan:
java.util.Locale request.getLocale()
Mengesan Tempatan
Jadual berikut menyenaraikan kaedah yang lebih penting dalam objek Tempatan, yang digunakan untuk mengesan rantau, bahasa dan rantau objek permintaan. Semua kaedah ini akan memaparkan nama negara dan nama bahasa dalam penyemak imbas:
Nombor siri< / th> | Kaedah & Penerangan | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | String getCountry()
<🎜> Mengembalikan kod negara/rantau dalam huruf besar Inggeris atau rantau dalam format 2 huruf ISO 3166 | ||||||||||||||
2 | String getDisplayCountry()<🎜> <🎜> Mengembalikan nama negara untuk dipaparkan kepada pengguna | ||||||||||||||
3 | String getLanguage()<🎜> <🎜> Mengembalikan huruf kecil bahasa Inggeris bagi kod bahasa, atau kawasan dalam format ISO 639 | ||||||||||||||
4 | String getDisplayLanguage()<🎜> <🎜> Kembalikan nama bahasa untuk ditunjukkan kepada pengguna | ||||||||||||||
5 | String getISO3Country()<🎜> <🎜> Mengembalikan singkatan 3 huruf bagi nama negara | ||||||||||||||
6 | String getISO3Language()<🎜> <🎜> Mengembalikan singkatan 3 huruf nama bahasa |
Contoh Demonstrasi
Contoh ini memberitahu kita cara memaparkan bahasa dan negara dalam 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>
Tetapan Bahasa
JSP boleh menggunakan bahasa Eropah Barat untuk mengeluarkan halaman, seperti bahasa Inggeris, Sepanyol, Jerman, Perancis, Itali, dll. Ia boleh dilihat bahawa adalah penting untuk menetapkan pengepala Kandungan-Bahasa untuk memaparkan semua aksara dengan betul.
Perkara kedua ialah anda perlu menggunakan entiti aksara HTML untuk memaparkan aksara khas, seperti "ñ" mewakili "?", "¡" mewakili "?":
<%@ 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>
Tarikh khusus setempat
Anda boleh menggunakan kelas java.text.DateFormat dan kaedah statiknya getDateTimeInstance() untuk memformat tarikh dan masa. Contoh berikut menunjukkan cara memformat tarikh dan masa mengikut julat yang ditentukan:
<%@ 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>
Mata wang khusus wilayah
boleh menggunakan kelas java.text.NumberFormat dan kaedah statiknya getCurrencyInstance() untuk memformat nombor. Contohnya, panjang dan dua kali ganda dalam mata wang khusus wilayah. Contoh berikut menunjukkan cara memformat mata wang mengikut tempat yang ditentukan:
<%@ 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>
Peratusan khusus wilayah
Peratusan boleh diformat menggunakan kelas java.text.NumberFormat dan kaedah statiknya getPercentInstance(). Contoh berikut menunjukkan kepada kita cara memformat peratusan berdasarkan julat yang ditentukan:
<%@ 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>