[Android] Possibilitat d'implementar el ca-valencia

Pau Iranzo paugnu a gmail.com
dic mar 30 22:56:25 CEST 2011


Joan,

Sé que el Java6 no suporta les variants, però el Java7 sí que ho farà:
http://openjdk.java.net/projects/jdk7/features/
http://sites.google.com/site/openjdklocale/design-notes/locale

No sé ben bé si el codi que ens estàs mostrant de l'Android és Java
pròpiament dit, o no. Però si la versió 4 de l'Android porta el nou jdk, en
eixe cas sí que es podrien implementar les variants...

El 30 de març de 2011 21:03, Joan Montané <joan a montane.cat> ha escrit:

> A veure... aquesta és tota la informació que he trobat remenant pel
> codi font, inicialment havia "caçat" els tres fitxers que ressenyo més
> avall, però tot preparant aquest correu veig que són uns quants més...
> ja no sóc tan optimista. Parlem-ho.
>
> Les rutes als fitxers que indico són locals i es refereixen a:
> https://mail.google.com/mail/?shva=1#drafts/12f081639f1cfed2
> ( si l'enllaç falla aneu a http://android.git.kernel.org/ i
> seleccioneu platform/frameworks/base.git )
>
> Pau, potser sí que podríem parlar primer amb la gent
> d'android-contrib, però sóc pessimista. Una alternativa intermitja a
> les opcions 1 i 2 que posava ahir, seria aconseguir crear un àlies del
> codi ca-valencia (o ca-ES-valencia) cap al codi ca-XV. Així faríem
> servir el locale correcte i podríem tenir els xml a values-ca-rXV
> sense problemes. No tinc la més remota idea de si es possible fer una
> cosa així, però si a l'AOSP no volen saber res de les variants de
> llengua, podríem demanar que implementessin una cosa així.
>
>
>
> Fitxer:
> ./frameworks/base/tools/aapt/AaptAssets.cpp
>
> Aquí hi ha la funció que processa el directori on es troben els xml,
> segons els camps exposats aquí
>
> http://developer.android.com/guide/topics/resources/providing-resources.html
>
> Fixeu-vos en les funcions de les línies 112 i 240 de fitxer
> AaptAssets.cpp (per cert crec que hi ha un error a la línia 319)
>
>
> Fitxer:
> ./frameworks/base/include/utils/ResourceTypes.h
>
> línies 816 a 822, defineixen l'estructura que conté el locale a
> l'estructura (valgui la redundància) ResTable_config
>
>        struct {
>            // \0\0 means "any".  Otherwise, en, fr, etc.
>            char language[2];
>
>            // \0\0 means "any".  Otherwise, US, CA, etc.
>            char country[2];
>        };
>
> Cal afegir una variable pel camp de variant després la variable
> country, una cosa així?
>
>            // \0\0\0\0\0\0\0\0 means "any".  Otherwise, SCOTLAND,
> POSIX, VALENCIA, etc.
>            char variant[8];
>
> línies 1085 a 1095, compara els locales a nivell de llengua i estat.
> Caldria afegir el codi
>            if (variant[0] != o.variant[0]) {
>                if (!variant[0]) return false;
>                if (!o.variant[0]) return true;
>            }
>
> línies 1204 a 1212, una altra comparació
>                if ((variant[0] != o.variant[0]) && requested->variant[0]) {
>                    return (variant[0]);
>                }
>
> línies 1385 a 1395, una altra comparació però aquí ja no és tan fàcil
> "comparar" els valors de variant, ja que la longitud no és fixa (va de
> 4 a 8 caràcters).
>
> línies 1492 a 1503, hi ha un funció getLocale, que caldria adaptar, ja
> que es fa servir a la funció getLocales del fixer
> ./frameworks/base/libs/utils/ResourceTypes.cpp
> línies 1505 a 1519, una altra funció, però sembla que aquesta només
> treu coses per pantalla.
>
> Altres fitxers de "remenen" coses del locale i recursos:
>
> ./frameworks/base/tools/aapt/AaptAssets.h
> ./frameworks/base/tools/aapt/AaptAssets.cpp
> ./frameworks/base/tools/aapt/ResourceTable.cpp
> ./frameworks/base/tools/aapt/Resource.cpp
> ./frameworks/base/include/utils/AssetManager.h
> ./frameworks/base/include/utils/ResourceTypes.cpp
>
> Per cert. les úniques variant de llengues que internament l'Android
> reconeix són:
>
> 682     Variants{
> 683         1606NICT{"francès mitjà tardà fins el 1606"}
> 684         1694ACAD{"francès modern primerenc"}
> 685         1901{"ortografia alemanya tradicional"}
> 686         1994{"ortofrafia resiana estandarditzada"}
> 687         1996{"ortografia alemanya de 1996"}
> 688         AREVELA{"armeni oriental"}
> 689         AREVMDA{"armeni occidental"}
> 690         BAKU1926{"alfabet llatí turc unificat"}
> 691         BISKE{"dialecte de San Giorgio/Bila"}
> 692         BOONT{"Boontling"}
> 693         FONIPA{"alfabet fonètic internacional"}
> 694         FONUPA{"sistema fonètic UPA"}
> 695         LIPAW{"dialecte Lipovaz del resià"}
> 696         MONOTON{"monotònic"}
> 697         NEDIS{"dialecte de Natisone"}
> 698         NJIVA{"dialecte de Gniva/Njiva"}
> 699         OSOJS{"dialecte d'Oseacco/Osojane"}
> 700         PINYIN{"romanització Pinyin"}
> 701         POLYTON{"politònic"}
> 702         POSIX{"ordenador"}
> 703         REVISED{"ortografia revisada"}
> 704         ROZAJ{"resià"}
> 705         SAAHO{"saho"}
> 706         SCOTLAND{"anglès estàndard d'Escòcia"}
> 707         SCOUSE{"scouse"}
> 708         SOLBA{"dialecte de Stolvizza/Solbica"}
> 709         TARASK{"ortografia taraskievica"}
> 710         VALENCIA{"valencià"}
> 711         WADEGILE{"romanització Wade-Giles"}
> 712     }
>
> el codi de variant de llengua pot ser qualsevol cadena entre 5 i 8
> caràcters (xifres o lletres A-Z plain-ascii). Per motius històrics
> també hi ha codis de 4 caràcters si són tots 4 nombres. Internament el
> Java passa els codis de variant a majúscula.
>
> Bé, fins aquí tot el que he descobert. No he pogut estructurar millor
> aquest correu, però com a mínim us podreu fer una idea de la magnitud
> de codi a modificar.
>
> Cap comentari?
>
> Joan Montané
> _______________________________________________
> Android mailing list
> Android a llistes.softcatala.org
> http://llistes.softcatala.org/mailman/listinfo/android
>
-------------- part següent --------------
Un document HTML ha estat eliminat...
URL: <http://llistes.softcatala.org/pipermail/android/attachments/20110330/5b9ebcc3/attachment.htm>


Més informació sobre la llista de correu Android