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&#39;Android és Java pròpiament dit, o no. Però si la versió 4 de l&#39;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">&lt;<a href="mailto:joan@montane.cat">joan@montane.cat</a>&gt;</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 &quot;caçat&quot; 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&#39;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&#39;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&#39;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&#39;estructura que conté el locale a<br>
l&#39;estructura (valgui la redundància) ResTable_config<br>
<br>
        struct {<br>
            // \0\0 means &quot;any&quot;.  Otherwise, en, fr, etc.<br>
            char language[2];<br>
<br>
            // \0\0 means &quot;any&quot;.  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 &quot;any&quot;.  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]) &amp;&amp; requested-&gt;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>
&quot;comparar&quot; 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 &quot;remenen&quot; 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&#39;Android<br>
reconeix són:<br>
<br>
682     Variants{<br>
683         1606NICT{&quot;francès mitjà tardà fins el 1606&quot;}<br>
684         1694ACAD{&quot;francès modern primerenc&quot;}<br>
685         1901{&quot;ortografia alemanya tradicional&quot;}<br>
686         1994{&quot;ortofrafia resiana estandarditzada&quot;}<br>
687         1996{&quot;ortografia alemanya de 1996&quot;}<br>
688         AREVELA{&quot;armeni oriental&quot;}<br>
689         AREVMDA{&quot;armeni occidental&quot;}<br>
690         BAKU1926{&quot;alfabet llatí turc unificat&quot;}<br>
691         BISKE{&quot;dialecte de San Giorgio/Bila&quot;}<br>
692         BOONT{&quot;Boontling&quot;}<br>
693         FONIPA{&quot;alfabet fonètic internacional&quot;}<br>
694         FONUPA{&quot;sistema fonètic UPA&quot;}<br>
695         LIPAW{&quot;dialecte Lipovaz del resià&quot;}<br>
696         MONOTON{&quot;monotònic&quot;}<br>
697         NEDIS{&quot;dialecte de Natisone&quot;}<br>
698         NJIVA{&quot;dialecte de Gniva/Njiva&quot;}<br>
699         OSOJS{&quot;dialecte d&#39;Oseacco/Osojane&quot;}<br>
700         PINYIN{&quot;romanització Pinyin&quot;}<br>
701         POLYTON{&quot;politònic&quot;}<br>
702         POSIX{&quot;ordenador&quot;}<br>
703         REVISED{&quot;ortografia revisada&quot;}<br>
704         ROZAJ{&quot;resià&quot;}<br>
705         SAAHO{&quot;saho&quot;}<br>
706         SCOTLAND{&quot;anglès estàndard d&#39;Escòcia&quot;}<br>
707         SCOUSE{&quot;scouse&quot;}<br>
708         SOLBA{&quot;dialecte de Stolvizza/Solbica&quot;}<br>
709         TARASK{&quot;ortografia taraskievica&quot;}<br>
710         VALENCIA{&quot;valencià&quot;}<br>
711         WADEGILE{&quot;romanització Wade-Giles&quot;}<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>