41-Programa de Realización de Internacionalización

Implementación del programa de internacionalización

  El llamado programa internacionalizado significa que el mismo código de programa se puede describir en diferentes idiomas según los diferentes países, pero la actividad principal del programa es la misma.

Principios de implementación del programa de internacionalización

rsKTyR.png
  A través del análisis, se puede encontrar que para lograr el desarrollo de un programa internacionalizado, los problemas a resolver son los siguientes dos puntos:

  • Cómo definir la información del archivo para guardar texto
  • Cómo leer la información de recursos especificada según diferentes códigos de idioma regionales

Clase de configuración regional

  A través del análisis, se puede encontrar que para realizar el desarrollo de programas internacionalizados, lo primero que se debe resolver es el problema de codificación de las regiones e idiomas de los diferentes países. Existe una clase que describe específicamente la región y el idioma. codificación en java.util: la clase Locale. Utilice principalmente dos métodos de construcción en la clase Locale para la instanciación:

  • Método de construcción:public Locale(String language);
  • Método de construcción:public Locale(String language,String country);

Lo que se necesita en este momento es el código del país y el idioma, chino: zh_CN, Estados Unidos: en_US, la forma más sencilla de codificar la región y el idioma es a través del navegador IE;
instancia el objeto de clase Locale

import java.util.Locale;

public class LocaleStudy {
    
    
	public static void main(String[] args) {
    
    
		Locale loc = new Locale("zh", "CN");
		System.out.println(loc);
	}
}

  Si desea obtener automáticamente el entorno operativo actual, ahora puede instanciarlo de la forma predeterminada de la propia clase Locale:

  • Lea el entorno predeterminado local:public static Locale getDefault();

  En el desarrollo real, a muchas personas no les importa el país y la codificación del idioma. Para simplificar el desarrollo, Locale establece algunos como constantes:

import java.util.Locale;

public class LocaleStudy {
    
    
	public static void main(String[] args) {
    
    
		Locale loc = Locale.CHINA;
		System.out.println(loc);
	}
}

La ventaja de usar constantes es que puede evitar la complicación de codificar información en algunas regiones.

ResourceBundle lee archivos de recursos

  Archivo de recursos listo, entonces usted necesita para leer los archivos de recursos de funcionamiento, al leer el archivo de recursos se basa principalmente en la clase java.util.ResourceBundle, definir: public abstract class ResourceBundle extends Object.
ResourceBundle es una clase abstracta, si queremos la creación de instancias de estos objetos puede ser hecho directamente utilizando los métodos estáticos proporcionados en la clase:

  • Obtenga el objeto ResourceBundle:public static final; ResourceBundle getBundle(String baseName);
    • baseName: describe el nombre del archivo de recursos, pero sin sufijo;
  • Lea el contenido según la clave:public final String getString(String key);

Ejemplo: use la clase ResourceBundle para leer contenido

import java.util.ResourceBundle;

public class LocaleStudy {
    
    
	public static void main(String[] args) {
    
    
		ResourceBundle resource = ResourceBundle.getBundle("per.lyz.BasicClass_study.Message");
		String val = resource.getString("info");
		System.out.println(val);
	}
}

  Si el recurso no está en el paquete, simplemente escriba el nombre del recurso directamente;
  al leer el recurso, la clave de los datos debe existir, de lo contrario aparecerá el siguiente mensaje de excepción:

  • MissingResourceException

Realizar el desarrollo del programa de internacionalización

  Se han completado los preparativos preliminares y las operaciones de procesamiento de internacionalización se pueden realizar confiando en los archivos de recursos, las clases Locale y ResourceBundle. A continuación, se muestra la realización del programa de internacionalización (núcleo: leer información de recursos).

  1. Establecer en CLASSPATH: Messages_zh_CN.properties;
  2. Establecer en CLASSPATH: Messages_en_US.properties;
  3. Cargue el archivo de recursos del área designada a través del programa
import java.util.ResourceBundle;

public class LocaleStudy {
    
    
	public static void main(String[] args) {
    
    
		ResourceBundle resource = ResourceBundle.getBundle("per.lyz.message.Message");
		String val = resource.getString("info");
		System.out.println(val);
	}
}

En este momento, al leer recursos a través de la clase ResourceBundle, no se establece un objeto Locale claro, pero se encuentra que el archivo "zh_CN" está cargado, porque este método carga la configuración regional de == local actual (Locale.getDefault () ) == por defecto Recursos.
  Si necesita modificar el entorno de configuración regional actual, puede utilizar los siguientes métodos en la clase ResourceBundle:

  • Obtener ResourceBundle:public static final ResourceBundle getBundle(String baseName, Locale locale);
import java.util.Locale;
import java.util.ResourceBundle;

public class LocaleStudy {
    
    
	public static void main(String[] args) {
    
    
		Locale loc = new Locale("en","US");
		ResourceBundle resource = ResourceBundle.getBundle("per.lyz.message.Message", loc);
		String val = resource.getString("info");
		System.out.println(val);
	}
}

  Si hay un archivo de recursos en el área designada, no se leerá la información del archivo de recursos sin el área.
Orden de lectura: Archivo de recursos regionales especificado> recurso local predeterminado> recurso público (sin configuración regional)

Visualización de texto formateado

  Si un usuario ha iniciado sesión correctamente, generalmente mostrará "XXX, ¡bienvenido!", Luego, si estos contenidos se guardan en el archivo de recursos, se necesitan marcadores de posición para describir y los datos leídos deben formatearse como mensajes. 化 的 处理。 Tratamiento.
  En este momento, se lee el archivo de recursos y la información del marcador de posición se leerá en conjunto, por lo que se necesita la clase MessageFormat para su procesamiento en este momento. MessageFormat proporciona un método para formatear texto : formatear texto
ryMhd0.png
public static String format(String pattern,Object... arguments);

import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.ResourceBundle;

public class LocaleStudy {
    
    
	public static void main(String[] args) {
    
    
		Locale loc = new Locale("zh","CN");
		ResourceBundle resource = ResourceBundle.getBundle("per.lyz.message.Message", loc);
		String val = resource.getString("info");
		System.out.println(MessageFormat.format(val, "lyz", new SimpleDateFormat("yyyy-MM-dd").format(new Date())));
	}
}

  Durante el desarrollo en Japón, la estructura con "{0}" en el archivo de recursos se consideró un marcador de posición y se requería formateo.

Supongo que te gusta

Origin blog.csdn.net/MARVEL_3000/article/details/113028870
Recomendado
Clasificación