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