Eduard Ereza Martínez
Localitzador de programari

Localització del nom de l'aplicació en aplicacions que utilitzen Android Runtime per a BlackBerry

26 d'octubre del 2013

Avui explicaré un petit truc que he fet servir per localitzar el nom de les meves aplicacions Android al menú del sistema de BlackBerry. No he trobat documentació d’aquest tema a Google, així que exposaré la meva solució.

Quan vaig començar a portar algunes de les meves aplicacions a BlackBerry la primera cosa que vaig observar va ser que el nom de l’aplicació no es podia localitzar. Òbviament, dins del codi d’Android si que es pot, però el nom que es mostra al menú de la BlackBerry (almenys a la PlayBook) és sempre el nom per defecte (en anglès). Si la teva aplicació té un nom propi això no és un problema, però quan el nom de l’aplicació és traduïble, queda una mica estrany.

Així que vaig explorar una mica. Vaig cercar per fòrums i vaig trobar algú que parlava de fitxers “.bbr” (va ser fa temps i ja no conservo l’enllaç). Vaig seguir buscant i vaig acabar trobant part d’una documentació que algú va publicar a PasteBin (potser part de la documentació de BlackBerry o QNX? No ho sé!). S’hi descriuen els paràmetres que es poden especificar al fitxer MANIFEST.MF, el qual identifica i descriu la teva aplicació BlackBerry.

Així que després d’algunes proves (i mirant el codi descompilat de les eines de BlackBerry per a Android), vaig descobrir que només calia especificar un paràmetre amb els idiomes suportats i incloure’l en el fitxer del manifest, així que això vaig fer (explicaré el procés més endavant).

Però després d’aconseguir compilar-lo en el fitxer BAR, el sistema es queixava que no existien els fitxers MANIFEST_ca.bbr, MANIFEST_en.bbr o MANIFEST_es.bbr. Vaig intentar que els reconegués l’Eclipse, però no ho vaig aconseguir. Vaig intentar afegir-los a mà al fitxer BAR, però òbviament aleshores es queixava que no estava correctament signat.

Així que vaig trobar una alternativa. És una mica “cutre”, però funciona: executar un shell script que injecti els fitxers .bbr en els fitxers temporals creats durant el procés de construcció del BAR (un directori a /tmp/apk2bar[…]/).

Així que vaig a explicar els passos necessaris.

1. Crea un fitxer MANIFEST.MF dins del teu projecte, al següent camí: assets/blackberry/MANIFEST.MF, amb almenys el següent codi:

Package-Locale: [els teus codis d'idioma, separats per comes, per exemple: en,es,ca]

2. Assegura’t que el teu manifest es combina amb el que es genera automàticament: fes clic dret al teu projecte a l’Eclipse, selecciona Properties, llavors BlackBerry, i defineix “Custom BAR manifest” com a “Add custom values (merge)”. Desa els canvis.

3. Crea un directori amb tots els teus fitxers .bbr i aquest script (add_localization.sh). Cada nom de fitxer .bbr ha de ser “MANIFEST_[codi d’idioma].bbr”, i ha de contenir els següents paràmetres:

Entry-Point-Localization: [el nom per defecte de la teva app]
Entry-Point-Name: [el nom localitzat de la teva app]

Per exemple, en el meu cas, MANIFEST_ca.bbr tindria:

Entry-Point-Localization: Next bus Barcelona
Entry-Point-Name: Proper bus Barcelona

4. Quan estiguis llest per construir el teu fitxer BAR, simplement executa l’script add_localization.sh. Quan comenci l’execució, començarà a comprovar que el directori apk2bar sigui creat, i llavors hi copiarà els fitxers .bbr.

5. Construeix el fitxer BAR. Si tot ha anat bé, l’script hauria de treure per pantalla “Files copied into temporary directory!”. El teu fitxer BAR hauria de contenir els fitxers .bbr.

Tingues en compte que aquest script no verifica si s’han produït errors, i pot tenir problemes de concurrència, així que hauries de comprovar sempre que el fitxer BAR generat tingui tots els fitxers .bbr inclosos.

Ara ja pots executar la teva aplicació i es mostrarà el nom correcte segons l’idioma del sistema!