当前位置:首页 » Servlets » Servlet国际化

Servlet国际化

Servlets国际化实例代码在线教程 - servlet可以根据请求者的语言环境拾取相应的版本的网站,并根据当地的语言,文化和要求,提供相应的网站版本。

在我们开始之前,让我来解释一下三个重要术语:

  • 国际化(i18n): 这意味着使一个网站,提供了不同版本的内容翻译成访问者的语言或国籍。

  • 本地化(l10n): 这意味着将资源添加到一个网站,例如印地文翻译到一个网站,以使其适应特定的地理或文化区域。

  • 区域设置: 这是一个特殊的文化或地理区域。它通常被称为后跟一个下划线被分离的一个国家符号作为语言符号。例如用“en_US”表示美国英语语言环境。

有一些项目需要建立一个全球性的网站。本在线教程将不会给你完整的细节上,但它会给你一个很好的例子可以提供您的网页在不同的语言,通过差异化的定位,即以互联网社区。语言环境。

servlet可以根据请求者的语言环境拾取相应的版本的网站,并根据当地的语言,文化和要求,提供相应的网站版本。以下是请求对象的方法返回的Locale对象。

java.util.Locale request.getLocale() 

检测区域设置:

下面,你可以用它来检测请求者的地理位置,语言和区域设置,这是重要的语言环境方法。下面的方法显示国家名称和语言名称在请求者的浏览器中设置。

S.N. 方法 & 描述
1 String getCountry()
此方法返回此语言环境的国家/地区代码大写的2个字母的ISO 3166格式。
2 String getDisplayCountry()
此方法返回用于向用户显示的语言环境的国家的名称。
3 String getLanguage()
此方法以小写字母返回的语言代码,此区域设置在ISO 639的格式。
4 String getDisplayLanguage()
适合向用户显示的语言环境的语言,这是该方法返回一个名称。
5 String getISO3Country()
该方法返回该语言环境的国家一个三个字母的缩写。
6 String getISO3Language()
此方法返回此语言环境语言的三个字母的缩写。

例子:

这个例子演示了如何显示语言和相关国家的请求:

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 - by www.gitbook.net
      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>");
  }
} 

语言设定:

servlet可以在页面西输出欧语言,如英语,西班牙语,德语,法语,意大利语,荷兰语等在这里,它是重要的设置内容语言头,以正确显示所有的字符。

第二点是使用HTML实体显示所有的特殊字符,例如, "ñ" 代表 "ñ", and "¡" 代表 "¡" vk:

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 -by www.gitbook.net
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    // Set spanish language code.
    response.setHeader("Content-Language", "es");

    String title = "En Españ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ñol:" + "</h1>\n" +
     "<h1>" + "¡Hola Mundo!" + "</h1>\n" +
     "</body></html>");
  }
} 

特定于语言环境的日期:

可以使用java.text.DateFormat类的静态方法getDateTimeInstance()来格式化日期和时间,特定的语言环境。下面的例子展示了如何对一个给定的语言环境特定的格式日期:

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>");
  }
} 

特定于语言环境的货币

可以使用的java.txt.NumberFormat类的静态方法getCurrencyInstance()格式化一个数字,如long长整或double类型,在特定的语言环境货币。下面的例子展示了如何格式化一个给定的语言环境的货币:

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-by www.gitbook.net
    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>");
  }
} 

特定于语言环境的百分比

您可以使用java.txt.NumberFormat的类及其的静态getPercentInstance()方法来获得特定于语言环境的百分比。下面的例子演示了如何格式化到一个给定的语言环境特定的百分比:

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 - by www.gitbook.net
    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>");
  }
}