Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Deployment con TLang (https://www.clubdelphi.com/foros/showthread.php?t=86220)

jhonny 02-07-2014 15:51:19

Deployment con TLang
 
Hola amigos, estoy realizando un sencillo juego para Android y considero que en la experiencia me ha ido bien pues ya tengo algunas revisiones en fase alpha que funcionan, pero en la última versión decidí incorporar la utilización del TLang para varios idiomas, si lo ejecuto en mi Windows para probarle funciona de mil maravillas, pero al pasarlo a un dispositivo móvil dejó de abrir, no sale un error, ni un aviso... simplemente parece que fuera a cargar y antes de que lo haga se cierra.

Le he echado la culpa al TLang porque fue lo último que monté y además sin él corre sin problema.

¿Hay algún archivo que se debe pasar en el apk que sirva como recurso del TLang?, ¿a alguien le ha sucedido algo parecido o tiene alguna sugerencia de lo que pueda estar sucediendo?

jhonny 02-07-2014 21:54:56

¡Caramba!, ya lo solucioné. Resulta que estaba capturando la cadena correspondiente al idioma configurado en Android (Para hacer esto solo es necesario asignarle True a la propiedad Autoselect del TLang), yo solo había ingresado la traducción para es (Español Latinoamerica) y en (Ingles), pero resultó que en algunos celulares, el codigo de idioma es sp (español estados unidos), al hacer dicha captura pues no encontraba sp y ahí el defecto.

Entonces las 2 posibles soluciones a este caso son:

1) Agregar sp como idioma al TLang.
2) Y por esta fue la que opté... validar la situación manualmente donde se presente el problema e indicarle que si no está en la lista (TLang.Resource) el idioma en cuestión, pues ejecute el valor por defecto.

En mi caso tenía lo siguiente:

Código Delphi [-]
   vMensajeAdvertencia := LngPpal.LangStr[LngPpal.Lang].Values['vMensajeAdvertencia'];

Y ahora tuve que hacer...

Código Delphi [-]
   if LngPpal.Resources.IndexOf(LngPpal.Lang) <> -1 then
     vMensajeAdvertencia := LngPpal.LangStr[LngPpal.Lang].Values['vMensajeAdvertencia']
   else
     vMensajeAdvertencia := 'Aún quedan';

Quizá no sea lo más optimo, pero mientras comprendo más este componente, dicha solución me ha funcionado muy bien.


La franja horaria es GMT +2. Ahora son las 08:16:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi