You are on page 1of 11

El archivo strings.

xml se utiliza para almacenar todas las constantes de cadenas de caracteres que se
necesitan en un programa (por ejemplo las etiquetas de los objetos Button, los textos fijos de los
controles TextView y todos los controles que muestran un texto fijo en el dispositivo)
a idea fundamental es tener todos los mensajes que muestra nuestra aplicaci!n en un archivo
(strings.xml)
"a veremos en el pr!ximo concepto que uno de las ventajas que presenta esta agrupaci!n de string es la
posibilidad de facilitar la implementaci!n de aplicaciones en m#ltiples idiomas.
$roblema%
&rear un proyecto que solicite la carga de dos valores. 'ediante dos RadioButton permitir seleccionar si
queremos sumar o restar. &uando se presione un bot!n mostrar en un TextView el resultado de la
operaci!n.
(. &reamos un proyecto y lo almacenamos en el paquete% com.androidya.proyecto)*+
El $lugin de Eclipse nos crea autom,ticamente el archivo strings.xml en la carpeta values que se
encuentra en la carpeta res%

-i vemos en su interior podemos ver que ya define tres string llamados app_name, hello_world y
menu_settings%

$,g. ( de ((
o que se encuentra entre las marcas string es lo que se visualizar,, por ejemplo en la constante
hello_world se almacena el valor .Hello world!.. En este archivo crearemos todas las constantes a
incluir en nuestro programa. -i vemos en la parte inferior de la ventana donde se visualiza el archivo xml
hay una pesta/a llamada Resource que nos permite ingresar las distintas constantes de una forma visual%

&reamos primero la interfaz visual disponiendo dos controles de tipo Edit0ext, un 1adio2roup con dos
1adio3utton, un 3utton y un 0ext4ie5 donde se muestra el resultado de la operaci!n%

$,g. 6 de ((
Ahora si crearemos los mensajes que mostrar,n los dos RadioButton y el Button. $ara esto
seleccionamos el archivo strings y procedemos a crear las tres constantes%
7na vez que tenemos abierto el archivo strings.xml en modo .Resources. procedemos a presionar el
bot!n .Add.... y seleccionamos .String.%

&reamos los nombres de las constantes y los valores, por ejemplo para el mensaje que mostrar, el primer
RadioButton llamamos la constante con el nombre .radiosuma. y el valor que almacena es .Sumar.

8e forma similar creamos las constantes .radioresta. con el valor .Restar. y el bot!n para operar lo
llamamos .botonoperacion. con el valor .perar.. -i seleccionamos la pesta/a strings.xml luego
$,g. 9 de ((
podemos ver las tres constantes que hemos creado %

Ahora debemos asociar estas constantes a los controles visuales. -eleccionamos el archivo
activit!_main.xml y seleccionamos primero el primer RadioButton y buscamos la propiedad Text,
presionamos el bot!n que aparece a la derecha%
En este di,logo seleccionamos la constante de string que acabamos de crear (.radiosuma.)%
$,g. * de ((
Ahora tenemos asociada la constante .radiosuma. con la propiedad text del control RadioButton. o
mismo podr:amos haber hecho esto escribiendo en la propiedad "string#radiosuma ("string lo
utilizamos para indicar que el siguiente dato despu;s de la barra se trata de una constante definida en el
archivo strings.xml)
7tilizar el di,logo de selecci!n de recursos nos facilita no tener que recordar todas las constantes.
o mismo hacemos para asociar las constantes para el segundo RadioButton y el 3utton de operar. Es
decir las propiedades text del radio( debe quedar con el valor ."string#radioresta. y el valor de la
propiedad text del objeto button( debe ser ."string#botonoperacion.
&omo vemos cuando asociamos las propiedades text de los controles con las constantes
autom,ticamente vemos en pantalla que los textos de los controles se actualizan con los valores
almacenados en dichas constantes.
$ara que funcione nuestro programa inicializamos la propiedad n clic$ del 3utton con el m;todo que
sumar, o restar,%
$,g. + de ((

El c!digo fuente del programa ser,%
pac$age com.android!a.pro!ecto%&'(
import android.app.Activit!(
import android.os.Bundle(
import android.view.)enu(
import android.view.View(
import android.widget.*ditText(
import android.widget.RadioButton(
import android.widget.TextView(
public class )ainActivit! extends Activit! +
*ditText et,- et.(
RadioButton rb,- rb.(
TextView tv,(
"verride
protected void on/reate0Bundle saved1nstanceState2 +
super.on/reate0saved1nstanceState2(
set/ontentView0R.la!out.activit!_main2(
et, 3 0*ditText2 4indViewB!1d0R.id.editText,2(
et. 3 0*ditText2 4indViewB!1d0R.id.editText.2(
rb, 3 0RadioButton2 4indViewB!1d0R.id.radio%2(
rb. 3 0RadioButton2 4indViewB!1d0R.id.radio,2(
tv, 3 0TextView2 4indViewB!1d0R.id.textView,2(
5
$,g. < de ((
"verride
public boolean on/reateptions)enu0)enu menu2 +
## 1n4late the menu( this adds items to the action bar i4 it is present.
get)enu1n4later02.in4late0R.menu.activit!_main- menu2(
return true(
5
public void operar0View v2 +
int v, 3 1nteger.parse1nt0et,.getText02.toString022(
int v. 3 1nteger.parse1nt0et..getText02.toString022(
i4 0rb,.is/hec$ed022 +
int suma 3 v, 6 v.(
tv,.setText0String.value40suma22(
5 else i4 0rb..is/hec$ed022 +
int resta 3 v, 7 v.(
tv,.setText0String.value40resta22(
5
5
5
El resultado final del programa en el dispositivo es%

$,g. = de ((
>nternacionalizaci!n y archivo strings.xml
a internacionalizaci!n de un programa en Android se resuelve implementando varios archivos
strings.xml (uno por cada idioma que necesitemos implementar)
'odificar el proyecto)6+ de tal manera que muestre su interfaz en castellano o ingl;s seg#n la
configuraci!n del idioma seleccionado en el dispositivo.
&rearemos primero una nueva carpeta llamada values7en (las abreviaturas para los distintos lenguajes
los podemos ver en la p,gina >-? <9@A( &ode (segunda columna) (http%BB555.loc.govBstandardsBiso<9@A
6BphpBcodeClist.php)
Es decir creamos otra carpeta con el mismo nombre (values) m,s un gui!n y la extensi!n del lenguaje a
implementar%

-eleccionamos el archivo strings.xml de la carpeta values presionamos el bot!n derecho y elegimos
copiar, ahora nos vamos a la otra carpeta (values7en) y elegimos copiar. $rocedemos a traducir los
valores almacenados en cada string%

-olamente con esto ya tenemos nuestra aplicaci!n funcionando en dos idiomas. $ara probar debemos
acceder al emulador de Android y configurarlo en ingl;s (tecla home AD tecla menu AD configuraci!n D
>dioma y teclado D -eleccionar idioma AD .English (7nited -tated)
uego de esto lanzamos la aplicaci!n y deberemos ver la interfaz con los string que configuramos en el
archivo strings.xml de la carpeta values7en%
$,g. E de ((

$,g. @ de ((
ocalizaci!n y archivo strings.xml
Femos visto si queremos tener traducida nuestra aplicaci!n a varios idiomas debemos utilizar el concepto
de internacionalizaci!n. $ero hay muchos casos donde queremos hilar m,s fino. $or ejemplo el ingl;s de
Estados 7nidos no es exactamente igual que el ingl;s de >nglaterra o de Australia. $ara estas situaciones
podemos crear varios archivos strings.xml para distintas localidades que tienen el mismo idioma.
'odificar el proyecto)6+ de tal manera que muestre su interfaz no s!lo para el idioma por defecto
(espa/ol) e ingl;s, sino para el portugu;s de 3rasil y el portugu;s de $ortugal.
as abreviaturas para los distintos lenguajes los podemos ver en la p,gina >-? <9@A( &ode (segunda
columna) (http%BB555.loc.govBstandardsBiso<9@A6BphpBcodeClist.php) y para obtener las distintas regiones
utilizamos la tabla >-? 9(<<A(AalphaA6 (http%BBen.5iGipedia.orgB5iGiB>-?C9(<<A(AalphaA
6H?fficiallyCassignedCcodeCelements).
uego debemos crear una carpeta con el nombre values, luego un gui!n y el c!digo de
internacionalizaci!n, finalmente otro gui!n el car,cter r y finalmente el c!digo de regi!n.
En nuestro problemas crearemos dos directorios llamados%
values7pt7rBR
values7pt7r8T
uego de crear estos dos directorios copiaremos el archivo strings.xml de la carpeta values y
procederemos a traducirlo al portugu;s de 3rasil y al portugu;s de $ortugal.
uego de crear las dos carpetas copiar el archivo strings.xml y proceder a traducirlo primero al
portugu;s de 3rasil y luego en la otra carpeta traducirlo al portugu;s de $ortugal, solo nos resta compilar y
probar la aplicaci!n.
$ara probar debemos acceder al emulador de Android y configurarlo en portugu;s de 3rasil (tecla home AD
tecla menu AD configuraci!n D >dioma y teclado D -eleccionar idioma AD $ortugu;s (3rasil)

$,g. () de ((
-eguidamente ejecutar la aplicaci!n y ver como resultado que tenemos los mensajes que definimos en el
archivo strings.xml asociado con el portugu;s de 3rasil%

o mismo podemos luego configurar el idioma portugu;s de $ortugal y obtener como resultado en una
nueva ejecuci!n del programa%

$,g. (( de ((