Serwlety - umiędzynarodowienie

Zanim przejdziemy dalej, wyjaśnię trzy ważne terminy -

  • Internationalization (i18n) - Oznacza to umożliwienie witrynie internetowej dostarczania różnych wersji treści przetłumaczonych na język lub narodowość odwiedzającego

  • Localization (l10n) - Oznacza to dodanie zasobów do witryny internetowej w celu dostosowania do określonego regionu geograficznego lub kulturowego.

  • locale- To jest określony region kulturowy lub geograficzny. Zwykle określa się go jako symbol języka, po którym następuje symbol kraju, który jest oddzielony podkreśleniem. Na przykład „en_US” reprezentuje język angielski dla Stanów Zjednoczonych.

Jest wiele elementów, o które należy zadbać podczas tworzenia globalnej strony internetowej. W tym samouczku nie podano wszystkich szczegółów na ten temat, ale byłby to dobry przykład, w jaki sposób można udostępnić swoją stronę internetową w różnych językach społeczności internetowej, rozróżniając ich lokalizację, tj. Lokalizację.

Aplet może pobrać odpowiednią wersję serwisu w oparciu o ustawienia regionalne żądającego i zapewnić odpowiednią wersję serwisu zgodnie z lokalnym językiem, kulturą i wymaganiami. Poniżej przedstawiono metodę obiektu żądania, która zwraca obiekt Locale.

java.util.Locale request.getLocale()

Wykrywanie ustawień regionalnych

Poniżej znajdują się ważne metody lokalizacji, których można użyć do wykrycia lokalizacji, języka i oczywiście ustawień regionalnych żądającego. Wszystkie poniższe metody wyświetlają nazwę kraju i nazwę języka ustawioną w przeglądarce requestera.

Sr.No. Metoda i opis
1

String getCountry()

Ta metoda zwraca kod kraju / regionu wielkimi literami dla tego ustawienia narodowego w dwuliterowym formacie ISO 3166.

2

String getDisplayCountry()

Ta metoda zwraca nazwę kraju ustawienia, która jest odpowiednia do wyświetlenia użytkownikowi.

3

String getLanguage()

Ta metoda zwraca kod języka małymi literami dla tych ustawień regionalnych w formacie ISO 639.

4

String getDisplayLanguage()

Ta metoda zwraca nazwę dla języka lokalnego, która jest odpowiednia do wyświetlenia użytkownikowi.

5

String getISO3Country()

Ta metoda zwraca trzyliterowy skrót dla kraju tego ustawienia regionalnego.

6

String getISO3Language()

Ta metoda zwraca trzyliterowy skrót dla tego języka.

Przykład

Ten przykład pokazuje, jak wyświetlić język i kraj powiązany z żądaniem -

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;

public class GetLocale extends HttpServlet {

   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
   
      //Get the client's Locale
      Locale locale = request.getLocale();
      String language = locale.getLanguage();
      String country = locale.getCountry();

      // Set response content type
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();

      String title = "Detecting Locale";
      String docType =
         "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
      
      out.println(docType +
         "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor = \"#f0f0f0\">\n" +
               "<h1 align = \"center\">" + language + "</h1>\n" +
               "<h2 align = \"center\">" + country + "</h2>\n" +
         "</body>
         </html>"
      );
   }
}

Ustawienia języków

Aplet może wydrukować stronę napisaną w języku zachodnioeuropejskim, takim jak angielski, hiszpański, niemiecki, francuski, włoski, holenderski itp. W tym miejscu ważne jest, aby ustawić nagłówek ContentLanguage, aby wszystkie znaki były poprawnie wyświetlane.

Drugą kwestią jest wyświetlenie wszystkich znaków specjalnych za pomocą encji HTML, na przykład „& # 241;” oznacza „ñ”, a „& # 161;” reprezentuje „¡” w następujący sposób:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;

public class DisplaySpanish extends HttpServlet {

   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

      // Set response content type
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();

      // Set spanish language code.
      response.setHeader("Content-Language", "es");

      String title = "En Espa&ntilde;ol";
      String docType =
      "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
      
      out.println(docType +
         "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor = \"#f0f0f0\">\n" +
               "<h1>" + "En Espa&ntilde;ol:" + "</h1>\n" +
               "<h1>" + "&iexcl;Hola Mundo!" + "</h1>\n" +
            "</body>
         </html>"
      );
   }
}

Daty specyficzne dla lokalizacji

Za pomocą klasy java.text.DateFormat i jej statycznej metody getDateTimeInstance () można sformatować datę i godzinę w zależności od ustawień regionalnych. Poniżej znajduje się przykład, który pokazuje, jak formatować daty specyficzne dla danej lokalizacji -

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;
import java.text.DateFormat;
import java.util.Date;

public class DateLocale extends HttpServlet {

   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set response content type
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      
      //Get the client's Locale
      Locale locale = request.getLocale( );
      String date = DateFormat.getDateTimeInstance(DateFormat.FULL, 
         DateFormat.SHORT, locale).format(new Date( ));

      String title = "Locale Specific Dates";
      String docType =
         "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
     
      out.println(docType +
         "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor = \"#f0f0f0\">\n" +
               "<h1 align = \"center\">" + date + "</h1>\n" +
            "</body>
         </html>"
      );
   }
}

Waluta specyficzna dla lokalizacji

Za pomocą klasy java.txt.NumberFormat i jej statycznej metody getCurrencyInstance () można sformatować liczbę, na przykład typ długi lub podwójny, w walucie specyficznej dla ustawień regionalnych. Poniżej znajduje się przykład, który pokazuje, jak sformatować walutę specyficzną dla danego regionu -

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;
import java.text.NumberFormat;
import java.util.Date;

public class CurrencyLocale extends HttpServlet {
    
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

      // Set response content type
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();

      //Get the client's Locale
      Locale locale = request.getLocale( );
      NumberFormat nft = NumberFormat.getCurrencyInstance(locale);
      String formattedCurr = nft.format(1000000);

      String title = "Locale Specific Currency";
      String docType =
         "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
      
      out.println(docType +
         "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor = \"#f0f0f0\">\n" +
               "<h1 align = \"center\">" + formattedCurr + "</h1>\n" +
            "</body>
         </html>"
      );
   }
}

Procent specyficzny dla ustawień regionalnych

Możesz użyć klasy java.txt.NumberFormat i jej statycznej metody getPercentInstance (), aby uzyskać wartości procentowe specyficzne dla ustawień regionalnych. Poniżej znajduje się przykład, który pokazuje, jak sformatować wartość procentową specyficzną dla danej lokalizacji -

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;
import java.text.NumberFormat;
import java.util.Date;

public class PercentageLocale extends HttpServlet {

   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set response content type
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      
      //Get the client's Locale
      Locale locale = request.getLocale( );
      NumberFormat nft = NumberFormat.getPercentInstance(locale);
      String formattedPerc = nft.format(0.51);

      String title = "Locale Specific Percentage";
      String docType =
      "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
      
      out.println(docType +
         "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor = \"#f0f0f0\">\n" +
               "<h1 align = \"center\">" + formattedPerc + "</h1>\n" +
            "</body>
         </html>"
      );
   }
}