Buscar..


Observaciones

Java viene con un mecanismo poderoso y flexible para localizar sus aplicaciones, pero también es fácil de usar mal y terminar con un programa que ignora o maneja la configuración regional del usuario, y por lo tanto cómo esperan que se comporte su programa.

Sus usuarios esperarán ver datos localizados en los formatos a los que están acostumbrados, y tratar de admitir esto manualmente es una tarea estúpida. Este es solo un pequeño ejemplo de las diferentes formas en que los usuarios esperan ver el contenido que usted podría asumir que se muestra "siempre" de cierta manera:

fechas Números Moneda local Moneda extranjera Distancias
Brasil
China
Egipto
Méjico 20/3/16 1.234.56 $ 1,000.50 1,000.50 USD
Reino Unido 20/3/16 1,234.56 £ 1,000.50 100 km
Estados Unidos 20/20/16 1,234.56 $ 1,000.50 1,000.50 MXN 60 mi

Recursos Generales

Recursos de Java

Fechas formateadas automáticamente usando "locale"

SimpleDateFormatter es genial en caso de apuro, pero como su nombre indica, no se escala bien.

Si codificas "MM/dd/yyyy" toda tu aplicación, tus usuarios internacionales no estarán contentos.

Deja que Java haga el trabajo por ti.

Utilice los métodos static en DateFormat para recuperar el formato correcto para su usuario. Para una aplicación de escritorio (donde confiará en la configuración regional predeterminada ), simplemente llame:

String localizedDate = DateFormat.getDateInstance(style).format(date);

Donde style es una de las constantes de formato ( FULL , LONG , MEDIUM , SHORT , etc.) especificadas en DateFormat .

Para una aplicación del lado del servidor donde el usuario especifica su configuración regional como parte de la solicitud, debe pasarla explícitamente a getDateInstance() lugar:

String localizedDate =
    DateFormat.getDateInstance(style, request.getLocale()).format(date);

Comparación de cuerdas

Compara dos cuerdas ignorando el caso:

"School".equalsIgnoreCase("school"); // true

No usar

text1.toLowerCase().equals(text2.toLowerCase());

Los idiomas tienen diferentes reglas para convertir mayúsculas y minúsculas. Un 'I' se convertiría a 'i' en inglés. Pero en turco un 'yo' se convierte en un 'ı'. Si tiene que usar toLowerCase() use la sobrecarga que espera una Locale : String.toLowerCase(Locale) .

Comparando dos cadenas ignorando diferencias menores:

Collator collator = Collator.getInstance(Locale.GERMAN);
collator.setStrength(Collator.PRIMARY);
collator.equals("Gärten", "gaerten"); // returns true

Ordene las cadenas respetando el orden del lenguaje natural, ignorando mayúsculas y minúsculas (use la clave de intercalación para:

String[] texts = new String[] {"Birne", "äther", "Apfel"};
Collator collator = Collator.getInstance(Locale.GERMAN);
collator.setStrength(Collator.SECONDARY); // ignore case
Arrays.sort(texts, collator::compare); // will return {"Apfel", "äther", "Birne"}

Lugar

La clase java.util.Locale se utiliza para representar una región "geográfica, política o cultural" para localizar un texto, número, fecha u operación dado. Por lo tanto, un objeto Locale puede contener un país, región, idioma y también una variante de un idioma, por ejemplo, un dialecto hablado en una determinada región de un país, o hablado en un país diferente al país desde el cual se origina el idioma.

La instancia de Locale se entrega a los componentes que necesitan localizar sus acciones, ya sea para convertir la entrada, la salida o solo para las operaciones internas. La clase Locale no puede hacer ninguna internacionalización o localización por sí misma.

Idioma

El idioma debe ser un código de idioma ISO 639 de 2 o 3 caracteres, o una subetiqueta de idioma registrado de hasta 8 caracteres. En caso de que un idioma tenga un código de idioma de 2 y 3 caracteres, use el código de 2 caracteres. Puede encontrar una lista completa de códigos de idiomas en el Registro de subetiquetas de idiomas de la IANA.

Los códigos de idioma no distinguen entre mayúsculas y minúsculas, pero la clase Locale siempre usa versiones en minúsculas de los códigos de idioma

Creando una Localidad

La creación de una instancia de java.util.Locale se puede hacer de cuatro maneras diferentes:

Locale constants
Locale constructors
Locale.Builder class
Locale.forLanguageTag factory method 

Java ResourceBundle

Usted crea una instancia de ResourceBundle como esta:

Locale locale = new Locale("en", "US");
ResourceBundle labels = ResourceBundle.getBundle("i18n.properties");
System.out.println(labels.getString("message"));

Considere que tengo un archivo de propiedades i18n.properties :

message=This is locale

Salida:

This is locale

Configuración regional

Si desea reproducir el estado utilizando otros idiomas, puede usar el método setDefault() . Su uso:

 setDefault(Locale.JAPANESE); //Set Japanese


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow