Programación

1º DAM - Curso 2021-2022

User Tools

Site Tools


apuntes:localizacion

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

apuntes:localizacion [2021/03/10 13:12] (current)
Santiago Faci created
Line 1: Line 1:
 +====== Localización ======
  
 +\section{¿Qué es la localización?}
 +
 +La localización, también conocida como \emph{l10n} (por el número de caracteres de la propia palabra), es el mecanismo por el que una
 +aplicación se adapta a un idioma y localización.
 +
 +Por lo general se suelen adaptar, a un idioma y localización concretas, datos como fechas y la presentación de los números.
 +
 +En Java, se utiliza la clase \emph{Locale} para proporcionar esa capacidad de adaptación a nuestras aplicaciones.
 +
 +Podemos conocer la localización que, por defecto, tenga asignado nuestro equipo:
 +
 +\begin{lstlisting}[language=java]
 +Locale locale = Locale.getDefault();
 +System.out.println(locale.getCountry());            // US
 +System.out.println(locale.getDisplayCountry());     // United States
 +System.out.println(locale.getLanguage());           // en
 +System.out.println(locale.getDisplayLanguage());    // English
 +\end{lstlisting}
 +
 +También podemos definir la localización para una aplicación, instanciando un objeto de tipo \emph{Locale} especificando el idioma o el
 +idioma y el páis:
 +
 +\begin{lstlisting}[language=java]
 +Locale locale = new Locale("es");           // Define localización para idioma español
 +Locale locale = new Locale("es", "ES");     // Define localización para idioma español en España
 +\end{lstlisting}
 +
 +Asi, podemos utilizar la localización, para representar las fechas siempre acorde con el idioma que el usuario haya seleccionado para la
 +aplicación. En función del idioma escogido instanciaremos el objeto \emph{Locale} acorde con esas preferencias y, más adelante, podremos
 +utilizar dicho objeto para representar las fechas como corresponda:
 +
 +\begin{lstlisting}[language=java]
 +Locale locale = new Locale("en", "UK");
 +DayOfWeek dia = LocalDate.now().getDayOfWeek();
 +System.out.println(dia.getDisplayName(TextStyle.FULL, locale));
 +\end{lstlisting}
 +
 +\subsection{Internacionalización}
 +
 +La localización está relacionada con el concepto de internacionalización, que permite que la aplicación se adapte al idioma de la
 +localización escogida. La API de Java, a partir de la clase \emph{ResourceBundle} permite definir unos ficheros de propiedades con los
 +textos en diferentes idiomas y regiones, de forma que, en función de la localización del usuario, se pueden adaptar el idioma en que se
 +muestra cualquier información en la aplicación:
 +
 +Se puede definir un fichero con los mensajes para un idioma y región
 +\begin{lstlisting}[language=java]
 +# Fichero textos_es_ES.properties
 +hola = hola
 +adios = adios
 +\end{lstlisting}
 +
 +También para otro idioma y región
 +\begin{lstlisting}[language=java]
 +# Fichero textos_en_UK.properties
 +hola = hi
 +adios = bye
 +\end{lstlisting}
 +
 +Quizás nos interese definirlo para todo un idioma, independientemente de la región
 +\begin{lstlisting}[language=java]
 +# Fichero textos_es.properties
 +hola = hola
 +adios = adios
 +\end{lstlisting}
 +
 +E incluso definir cómo queremos que se muestran los mensajes si la localización del usuario no está definida de forma particular, lo que
 +sería la opción por defecto:
 +\begin{lstlisting}[language=java]
 +# Fichero textos.properties
 +hola = hi
 +adios = bye
 +\end{lstlisting}
 +
 +Finalmente, a la hora de mostrar mensajes al usuario, lo haríamos a través del objeto \emph{ResourceBundle}, que seleccionaría el texto que
 +mejor se adapte a la localización definida en la aplicación:
 +
 +\begin{lstlisting}[language=java]
 +Locale locale = new Locale("en", "UK");
 +. . .
 +ResourceBundle res = ResourceBundle.getBundle("textos", locale);
 +System.out.println(res.getString("hola"));          // hi
 +\end{lstlisting}
apuntes/localizacion.txt · Last modified: 2021/03/10 13:12 by Santiago Faci