JSP - Internasionalisasi | i18n | l10n

Pada bab ini kita akan membahas tentang konsep Internasionalisasi di JSP. Sebelum melanjutkan, mari kita pahami tiga istilah penting berikut -

  • Internationalization (i18n) - Ini berarti memungkinkan situs web menyediakan berbagai versi konten yang diterjemahkan ke dalam bahasa atau kebangsaan pengunjung.

  • Localization (l10n) - Ini berarti menambahkan sumber daya ke situs web untuk menyesuaikannya dengan wilayah geografis atau budaya tertentu, misalnya terjemahan bahasa Hindi ke situs web.

  • locale- Ini adalah wilayah budaya atau geografis tertentu. Ini biasanya disebut sebagai simbol bahasa diikuti dengan simbol negara yang dipisahkan oleh garis bawah. Sebagai contoh, "en_US"mewakili bahasa Inggris untuk AS.

Ada sejumlah hal yang harus diperhatikan saat membangun Situs Web global. Tutorial ini tidak akan memberi Anda detail lengkap tentang ini tetapi ini akan memberi Anda contoh yang baik tentang bagaimana Anda dapat menawarkan halaman Web Anda dalam berbagai bahasa kepada komunitas internet dengan membedakan lokasinya, yaitu lokal.

JSP dapat mengambil versi situs yang sesuai berdasarkan lokasi pemohon dan memberikan versi situs yang sesuai sesuai dengan bahasa, budaya, dan persyaratan lokal. Berikut ini adalah metode objek permintaan yang mengembalikan objek Lokal.

java.util.Locale request.getLocale()

Mendeteksi Lokal

Berikut ini adalah metode lokal penting yang dapat Anda gunakan untuk mendeteksi requester's location, language dan tentu saja locale. Semua metode di bawah ini menampilkan nama negara dan nama bahasa yang disetel di browser pemohon.

S.No. Metode & Deskripsi
1

String getCountry()

Metode ini mengembalikan kode negara / kawasan dalam huruf besar untuk lokal ini dalam format ISO 3166 2 huruf.

2

String getDisplayCountry()

Metode ini mengembalikan nama untuk negara lokal yang sesuai untuk ditampilkan kepada pengguna.

3

String getLanguage()

Metode ini mengembalikan kode bahasa dalam huruf kecil untuk lokal ini dalam format ISO 639.

4

String getDisplayLanguage()

Metode ini mengembalikan nama untuk bahasa lokal yang sesuai untuk ditampilkan kepada pengguna.

5

String getISO3Country()

Metode ini mengembalikan singkatan tiga huruf untuk negara tempat ini.

6

String getISO3Language()

Metode ini mengembalikan singkatan tiga huruf untuk bahasa lokal ini.

Contoh

Contoh berikut menunjukkan cara menampilkan bahasa dan negara terkait untuk permintaan di JSP -

<%@ page import = "java.io.*,java.util.Locale" %>
<%@ page import = "javax.servlet.*,javax.servlet.http.* "%>
<%
   //Get the client's Locale
   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>

Pengaturan Bahasa

JSP dapat menampilkan halaman yang ditulis dalam bahasa Eropa Barat seperti Inggris, Spanyol, Jerman, Prancis, Italia, Belanda, dll. Di sini, penting untuk mengatur header Content-Language untuk menampilkan semua karakter dengan benar.

Poin penting lainnya adalah untuk menampilkan semua karakter khusus menggunakan entitas HTML; sebagai contoh,"&#241;" mewakili "ñ", dan "&#161;" mewakili "¡" sebagai berikut -

<%@ 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>

Tanggal Khusus Lokal

Anda dapat menggunakan java.text.DateFormat kelas dan statisnya getDateTimeInstance( )metode untuk memformat tanggal dan waktu khusus untuk lokal. Berikut adalah contoh yang menunjukkan bagaimana memformat tanggal khusus untuk lokal tertentu -

<%@ 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 Uang Khusus Lokal

Anda dapat menggunakan java.txt.NumberFormat kelas dan statisnya getCurrencyInstance( )metode untuk memformat angka, seperti tipe panjang atau ganda, dalam mata uang spesifik lokal. Berikut adalah contoh yang menunjukkan bagaimana memformat mata uang khusus untuk suatu tempat -

<%@ 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>

Persentase Khusus Lokal

Anda dapat menggunakan java.txt.NumberFormat kelas dan statisnya getPercentInstance( )metode untuk mendapatkan persentase khusus lokal. Contoh berikut menunjukkan cara memformat persentase khusus untuk lokal tertentu -

<%@ 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>