"See what the national terror alert is currently set to as well as recent terrorism-related headlines in this customized iPhone web app"
Sunday, July 27, 2008
iPhone Apps for the average gringo
Ahora se me dio por hacer aplicaciones para iPhone. Antes de largarme, y despues de haber bajado todo lo necesario (XCode, iPhone SKD, etc) se me ocurrio pasar por Apple a ver que tipo de aplicaciones se estan desarrollando, no sea cosa que termine haciendo algo que ya esta disponible. Hay mas de 2000 aplicaciones para iPhone, juegos, utilitarios y plugins para redes sociales pero la que no puede faltar es la que la te puede salvar la vida en este mundo controlado por el terrorismo. Si!, si sos un gringo idiota y tenes un iPhone no te podes perder la aplicacion que te puede salvar el culo - "Terrorism Headlines & Current Threat Level" - porque hay que saber cuando te va a caer un avion en la cabeza!!..yeah!!..USA!!..USA!!..
Friday, March 28, 2008
Internacionalizacion (i18n) con Flex 3
La version 3 de Macromedia Flex viene con un soporte para localizacion mucho mas flexible que la version 2. La opciones que ofrece esta nueva version son:
Cambiado el idioma en tiempo de ejecucion desde la aplicacion
Los pasos a seguir son los siguientes:
Autodetectar el idioma del usuario para localizar una aplicacion Flex 3
Bien, segun el manual hay varias formas de hacer esto:
La tercera opcion funciona.....pero es un poquito rebuscada. Les paso la receta a medio hacer:
- Poner todos los recursos en modulos, en lugar de la aplicacion. Estos modulos se pueden pre-cargar para un locale en particular cuando se inicia la aplicacion y cargar luego mas locales si hiciera falta.
- Se pueden compilar mutiples locales en una sola aplicacion o modulo.
- Se accede a los recursos a traves de un nuevo ResourceManager. Se puede cambiar el idioma en tiempo de ejecucion y controlar en que locale se buscan recursos.
- Las expresiones que esten asociadas al ResourceManager (binding) se actualizan automaticamente si el locale cambia. Los componentes son notificados para que hagan los ajustes correspondientes.
- Es posible localizar images, sonidos y otros recursos, ademas de las cadenas de texto.
- Se pueden crear programaticamente recursos en tiempo de ejecucion a partir de archivos xml, queries a la base de datos, etc.
Cambiado el idioma en tiempo de ejecucion desde la aplicacion
Los pasos a seguir son los siguientes:
- Creen un proyecto Flex...no es dificil
- En la raiz del proyecto creen una carpeta "locale"
- Dentro de esa carpeta vamos a armar 2 carpetas mas para los locales
- Una carpeta para idioma ingles gringo: en_US
- Otra carpeta para castellano criollo: es_AR
- Dentro de cada una de estas carpetas vamos a poner nuestros archivos de propiedades. Por ejemplo, recursos.properties
- En el archivo recursos.properties de la carpeta es_AR ponemos el par key=value siguiente: jota = Juan Bello
- En el archivo recursos.properties de la carpeta en_US ponemos el par key=value siguiente: jota = John Beatiful
- Actualizamos las opciones del compilador (boton derecho -> propiedades -> Flex compiler...sarasasasasa...) -locale=es_AR,en_US -allow-source-path-overlap=true -source-path=..\locale{locale}
- Bien, ahora tenemos que crear recursos localizados para es_AR porque solo estan disponibles out-of-the-box los idiomas en_US y ja (Ja-pones). Abrimos un shell (cmd)
- Vamos al directorio bin de la instalacion de Flex y ejecutamos: copylocale en_US es_AR
10. Fijense en FLEX_HOME\frameworks\locale si aparecio una carpeta es_AR? si? Esto es para la localizacion de recursos de Flex. Si no lo hacen va aparecer un error que dice "No encuentro el recurso Collections para es_AR" y otros similares. - Tolis!
jota = Juan Bello
jota = John Beautiful
Autodetectar el idioma del usuario para localizar una aplicacion Flex 3
Bien, segun el manual hay varias formas de hacer esto:
- Poner un combo y pedirle al usuario que elija. Despues guardo la opcion en una cookie o algo asi. Ya lo mostre en el caso anterior pero no es lo que quiero.
- Usar la propiedad Capabilities.language de ActionScript esto me da el lenguaje para Adobe® Flash® Player y Adobe AIR™ (no se si me da el idioma DEL USUARIO)
- Usar el header Accept-Language. Cuando el browser hace un request vienen los lenguajes posta..en el orden de preferencia. Hay que parsear el header y sacar el primero que es el que esta usando el usario. Es algo asi: en-us,es-ar;q=0.7,ja;q=0.3 (Yo tengo en_US, es_AR y ja...pones)
- Utilizar el lenguaje del sistema operativo o del browser usando Javascript.
La tercera opcion funciona.....pero es un poquito rebuscada. Les paso la receta a medio hacer:
- Hacen un servlet que tome el header "Accept-Language" y lo parsee.
- Dentro del proyecto Flex, en la carpeta html-template, agarran el archivo index.template.html
- Dentro de ese archivo hacen una llamada asicrona el servlet (seh...con AJAX..XMLHTTPRequest) para obtener el idioma
- En el mxml usan el ExternalInterface para hacer la llamada a Javascript
- Listo el pollo!
public function callWrapper():void {
if (ExternalInterface.available) {
var wrapperFunction:String = "getLanguage";
idioma = ExternalInterface.call(wrapperFunction);
//Alert.show(idioma);
} else {
// Defecto
idioma = "es_US";
}
resourceManager.localeChain = [idioma];
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String prefLanguage = req.getHeader("Accept-Language");
// Parsing sarasa..sasaa
System.out.println(prefLanguage);
super.doGet(req, resp);
}
function getLanguage() {
return navigator.language; // Esto no anda, sepanlo!..Aca iria XMLHTTPRequest..get..sarassaaaa
}
Subscribe to:
Posts (Atom)