Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 15/10/11, 23:34:37
Avatar de KrLx_roller
KrLx_roller KrLx_roller no está en línea
Usuario muy activo
Mensajes: 518
Compra y venta: (3)
 
Fecha de registro: oct 2008
Mensajes: 518
Tu operador: -
Mencionado: 2 comentarios
Tagged: 0 hilos
Cambiar idioma app (no xml)

Hola!

Quiero cambiar el idioma de mi aplicación dependiendo del idioma en que esté el sistema. Yo ya sé cómo hacerlo mediante el 'values-en' o 'layout-fr', el problema está en que tengo un par o tres de clases que tienen un setText, por ejemplo, un progressDialog o un TextView al que se le asigna un texto dependiendo del estado de un EditText.

Resumiendo, quiero saber si hay alguna manera de que dependiendo del idioma del sistema, funcione la clase 'Castellano.java' o la clase 'Ingles.java'

Gracias y un saludo!

Última edición por KrLx_roller Día 20/10/11 a las 19:45:32
Responder Con Cita


  #2  
Viejo 16/10/11, 01:08:55
Avatar de iliberis
iliberis iliberis no está en línea
Miembro del foro
Mensajes: 439
 
Fecha de registro: abr 2009
Localización: Graná, España
Mensajes: 439
Modelo de smartphone: HTC Trinity, Samsung Galaxy Mini, ZTE Blade, ZTE Light Pro
Versión de ROM: Samsung Android 2.2
Tu operador: Simyo
Mencionado: 3 comentarios
Tagged: 0 hilos
Mas que con clases para cada idioma, lo que se suele hacer es usar archivos de recursos. Lo más sencillo sería incluir un archivo de texto en el jar, que tuviera las cadenas en el idioma correspondiente. Un archivo para cada idioma. Luego, al arrancar el programa, se detecta el idioma y sencillamente se abre un fichero u otro segun el idioma detectado.

Hacer clases distintas, cada una con su nombre, y cargarlas segun el idioma, es posible... pero un autentico infierno, además de multiplicar tu trabajo por el numero de idiomas soportados. Con ficheros de texto, cuando vayas a agregar mas idiomas, lo tendras muy facil.
Responder Con Cita
  #3  
Viejo 16/10/11, 01:12:20
Avatar de KrLx_roller
KrLx_roller KrLx_roller no está en línea
Usuario muy activo
Mensajes: 518
Compra y venta: (3)
 
Fecha de registro: oct 2008
Mensajes: 518
Tu operador: -
Mencionado: 2 comentarios
Tagged: 0 hilos
Muchas gracias! Mañana cuando pueda lo intentaré como dices ya que ahora estoy un poco quemado. Entre esto y la otra pregunta del almacenamiento de cookies no se si podre dormir... :

Sent from my LG-P970 using Tapatalk
Responder Con Cita
  #4  
Viejo 16/10/11, 01:19:06
Avatar de iliberis
iliberis iliberis no está en línea
Miembro del foro
Mensajes: 439
 
Fecha de registro: abr 2009
Localización: Graná, España
Mensajes: 439
Modelo de smartphone: HTC Trinity, Samsung Galaxy Mini, ZTE Blade, ZTE Light Pro
Versión de ROM: Samsung Android 2.2
Tu operador: Simyo
Mencionado: 3 comentarios
Tagged: 0 hilos
Pues lo primero descansar. Si te pasas toda la noche con el programa, vas a avanzar unas pocas lineas. Si descansas, aunque sea un rato, aumentas la producción a lo bestia. Te lo dice la voz de la experiencia.

De todas formas, busca algo en el Google para tener más información. Lo que yo te cuento es lo normal, y lo más simple. Pero si buscas un poco, seguro que encuentras alguna librería que te da la mayor parte del trabajo hecho. La palabra clave es "internacionalización"
Responder Con Cita
  #5  
Viejo 16/10/11, 21:50:14
Avatar de KrLx_roller
KrLx_roller KrLx_roller no está en línea
Usuario muy activo
Mensajes: 518
Compra y venta: (3)
 
Fecha de registro: oct 2008
Mensajes: 518
Tu operador: -
Mencionado: 2 comentarios
Tagged: 0 hilos
Buenas! He estado intentándolo sin éxito... Lo tengo tal que así (creo haber seguido todos los pasos correctamente) y me da FC.

lang.propierties
Código:
progress_dialog=Iniciando Sesión
wrong_user_or_pass=Usuario y/o contraseña incorrectos
ProgressDialog
Código:
final ProgressDialog pd = ProgressDialog.show(this, null, ResourceBundle.getBundle("lang").getString("progress_dialog"), true, false);
					new Thread(){
					public void run(){
					postLoginData();
					pd.dismiss();
					}
					}.start();
Información del inicio de sesión
Código:
result.post(new Runnable(){
            		public void run() {
            			result.setText(ResourceBundle.getBundle("lang").getString("wrong_user_or_pass"));
            		}
            	});
Por último, los archivos lang.properties y lang_es.properties se encuentran en la raíz del pryecto:

+App
+src
+gen
+Android 2.2
+Referenced Libraries
+assets
+res
AndroidManifest.xml
default.properties
lang_es.properties
lang.properties

Gracias por la información y un saludo!

P.D: Malditos FC!
Responder Con Cita
  #6  
Viejo 20/10/11, 18:46:49
Avatar de KrLx_roller
KrLx_roller KrLx_roller no está en línea
Usuario muy activo
Mensajes: 518
Compra y venta: (3)
 
Fecha de registro: oct 2008
Mensajes: 518
Tu operador: -
Mencionado: 2 comentarios
Tagged: 0 hilos
Alguien me puede decir si me he equivocado en alguna parte del código o algo por el estilo? Aún no lo he podido solucionar...
Responder Con Cita
  #7  
Viejo 20/10/11, 20:27:30
Avatar de pmaicas
pmaicas pmaicas no está en línea
Desarrollador
Mensajes: 1,299
 
Fecha de registro: dic 2008
Mensajes: 1,299
Mencionado: 25 comentarios
Tagged: 0 hilos
Echale un vistazo a la ayuda:
http://developer.android.com/guide/t...alization.html
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 20:27:58 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007