📜  Java中的国际化(I18N)

📅  最后修改于: 2022-05-13 01:54:22.362000             🧑  作者: Mango

Java中的国际化(I18N)

国际化 (I18N)是一种设计 Web 应用程序的过程,它可以自动为各种国家、各种语言和各种货币提供支持,而无需对应用程序进行任何更改,称为国际化 (I18N)。它被称为 I18N,因为在 I 和 N 之间;有18个字符;这就是 I18N 的原因。

如果您正在开发应用程序并希望根据特定区域或语言显示消息、货币、日期、时间等,则国际化是Java的强大概念之一。

示例:我们都知道亚马逊网站。它在全球范围内可用。我们印度人也访问该网站,任何其他国家的人也访问该网站。如果任何请求来自印度人,那么亚马逊网站的响应应该是印度人可以理解的形式,比如货币应该是 INR 等。但同时,如果美国人访问该网站,那么网站给出的回复/信息应该是美国人可以理解的某种形式,比如这里的货币应该是美元。上述过程称为国际化(I18N)。

我们可以使用以下三个类来实现国际化:

  • 语言环境
  • 数字格式
  • 日期格式
Java
// Java Program to illustrate Program
// without Internationalization
  
public class InternationalizationDemo
{
    public static void main(String[] args)
    {
        System.out.println("Hello");
        System.out.println("Geeks");
        System.out.println("How are you?");
    }
}


Java
// Java Program to illustrate Program with
// Internationalization
  
import java.text.*;
import java.util.*;
  
class NumberFormatDemo {
    public static void main(String[] args)
    {
        // Here we get the below number
        // representation in various countries
        double d = 123456.789;
        NumberFormat nf
            = NumberFormat.getInstance(Locale.ITALY);
        NumberFormat nf1
            = NumberFormat.getInstance(Locale.US);
        NumberFormat nf2
            = NumberFormat.getInstance(Locale.CHINA);
  
        System.out.println("ITALY representation of " + d
                           + " : " + nf.format(d));
  
        System.out.println("US representation of " + d
                           + " : " + nf1.format(d));
  
        System.out.println("CHINA representation of " + d
                           + " : " + nf2.format(d));
    }
}


输出
Hello
Geeks
How are you?

说明:如果我们希望该程序为居住在意大利和西班牙的人们显示这些相同的消息。不幸的是,我们的编程人员不会多语种,然后我们必须将上述信息翻译成意大利和西班牙。假设我们不知道意大利和西班牙的语言。那么我们的计划不会为意大利和西班牙人说话。看起来该程序需要国际化。

Java

// Java Program to illustrate Program with
// Internationalization
  
import java.text.*;
import java.util.*;
  
class NumberFormatDemo {
    public static void main(String[] args)
    {
        // Here we get the below number
        // representation in various countries
        double d = 123456.789;
        NumberFormat nf
            = NumberFormat.getInstance(Locale.ITALY);
        NumberFormat nf1
            = NumberFormat.getInstance(Locale.US);
        NumberFormat nf2
            = NumberFormat.getInstance(Locale.CHINA);
  
        System.out.println("ITALY representation of " + d
                           + " : " + nf.format(d));
  
        System.out.println("US representation of " + d
                           + " : " + nf1.format(d));
  
        System.out.println("CHINA representation of " + d
                           + " : " + nf2.format(d));
    }
}
输出
ITALY representation of 123456.789 : 123.456,789
US representation of 123456.789 : 123,456.789
CHINA representation of 123456.789 : 123,456.789