Home | History | Annotate | Download | only in features
      1 page.title=Idioma y configuracin regional
      2 page.tags=androidn
      3 page.image=images/cards/card-nyc_2x.jpg
      4 
      5 @jd:body
      6 
      7 <div id="qv-wrapper">
      8 <div id="qv">
      9 <h2>En este documento:</h2>
     10 <ol>
     11 	  <li><a href="#preN">Desafos para la resolucin de recursos de idioma</a></li>
     12     <li><a href="#postN">Mejoras de la estrategia de resolucin de recursos</a></li>
     13     <li><a href="#design">Diseo de la aplicacin para permitir configuraciones regionales
     14  adicionales</a></li>
     15 
     16 </ol>
     17 
     18 </div>
     19 </div>
     20 
     21 <p>Android N brinda un soporte mejorado para los usuarios de diferentes idiomas
     22 y les permite seleccionar mltiples configuraciones regionales en la configuracin. Android N
     23 brinda esta capacidad expandiendo ampliamente la cantidad de configuraciones regionales compatibles
     24 y cambiando la forma en que el sistema resuelve los recursos. El nuevo mtodo de resolucin
     25 de recursos es ms robusto y est diseado para ser compatible con APK existentes, pero
     26 debes tener especial cuidado para detectar cualquier comportamiento inesperado. Por ejemplo, debes
     27 realizar pruebas para asegurarte de que tu aplicacin muestre el idioma esperado de forma predeterminada. Adems,
     28 si tu aplicacin permite mltiples idiomas, debes asegurarte de que esta compatibilidad funcione
     29 como debera. Por ltimo, debes tratar de asegurarte de que tu aplicacin administre con facilidad
     30 los idiomas para los cuales no diseaste explcitamente la aplicacin.</p>
     31 
     32 <p>Al inicio de este documento, encontrars una explicacin sobre la estrategia de resolucin de recursos anterior a
     33 Android N. Luego, encontrars una descripcin de la estrategia de resolucin de recursos
     34 mejorada de Android N. Por ltimo, encontrars una explicacin sobre cmo aprovechar
     35 la cantidad expandida de configuraciones regionales para permitir acceso a ms usuarios de diferentes idiomas.</p>
     36 
     37 <h2 id="preN">Desafos para la resolucin de recursos de idioma</h2>
     38 
     39 <p>Antes de Android N, Android no siempre poda
     40  hacer coincidir correctamente las configuraciones regionales de la aplicacin y del sistema.</p>
     41 
     42  <p>Por ejemplo, imagina que tienes la siguiente situacin:</p>
     43  <ul>
     44  <li>El idioma predeterminado de la aplicacin es {@code en_US} (ingls de EE. UU.), y tambin tiene
     45  cadenas en espaol localizadas en archivos de recursos {@code es_ES}
     46 .</li>
     47  <li> Se configura un dispositivo en {@code es_MX}. </li>
     48 
     49 <p>Cuando el cdigo Java hace referencia a cadenas, el sistema carga
     50  las cadenas del archivo de recursos ({@code en_US}) predeterminado, incluso si la aplicacin tiene
     51  recursos en espaol localizados en {@code es_ES}. Esto se debe a que, cuando el sistema
     52  no puede encontrar una coincidencia exacta, contina buscando recursos y se quita el
     53  cdigo del pas de la configuracin regional. Finalmente, si no se encuentra una coincidencia, el sistema regresa
     54  a la configuracin predeterminada, que es {@code en_US}. </p>
     55 
     56 
     57 <p>El sistema tambin usaba {@code en_US} de forma predeterminada si el usuario elega un idioma que
     58  no era compatible con la aplicacin, como el francs. Por ejemplo:</p>
     59 
     60 <p class="table-caption" id="t-resource-res">
     61 <strong>Tabla 1.</strong> Resolucin de recursos sin una coincidencia de configuracin regional exacta.
     62 </p>
     63 <table>
     64 <tbody>
     65 <tr>
     66 <th>Configuracin del usuario</th>
     67 <th>Recursos de la aplicacin</th>
     68 <th>Resolucin de recursos</th>
     69 </tr>
     70 <tr>
     71 <td>fr_CH</td>
     72 <td>
     73 Predeterminado (en)<br>
     74 de_DE<br>
     75 es_ES<br>
     76 fr_FR<br>
     77 it_IT<br>
     78 </td>
     79  <td>
     80 Intentar fr_CH =&gt; Error<br>
     81 Intentar fr =&gt; Error<br>
     82 Usar predeterminado (en)
     83 </td>
     84  </tr>
     85  </tbody>
     86 </table>
     87 
     88 
     89 <p>En este ejemplo, el sistema muestra las cadenas en ingls sin
     90 saber si el usuario comprende este idioma. Este comportamiento es muy comn
     91 hoy en da. Android N debera reducir sustancialmente la frecuencia
     92 de resultados como este.</p>
     93 
     94 <h2 id="postN">Mejoras de la estrategia de resolucin de recursos</h2>
     95 <p>Android N brinda una resolucin de recursos ms robusta y
     96 encuentra mejores recursos de forma automtica. Sin embargo, para acelerar la resolucin y mejorar la
     97 facilidad de mantenimiento, debes almacenar los recursos en el dialecto primario.
     98  Por ejemplo, si antes almacenabas los recursos en espaol en el directorio {@code es-US}
     99 , psalos al directorio {@code es-419}, que contiene la variante de Latinoamrica.
    100  De forma similar, si tienes cadenas de recursos en una carpeta llamada {@code en-GB}, cmbiale
    101  el nombre a {@code en-001} (ingls internacional), ya que el dialecto primario ms comn
    102  para las cadenas en <code>en-GB</code> es {@code en-001}.
    103  Los siguientes ejemplos explican por qu estas prcticas mejoran el desempeo
    104  y la confiabilidad de la resolucin de recursos.</p>
    105 
    106 <h3>Ejemplos de resolucin de recursos</h3>
    107 
    108 <p>Con Android N, el caso descrito en la <strong>Tabla 1</strong> se resuelve
    109 de otra forma:</p>
    110 
    111 <p class="table-caption" id="t-improved-res">
    112 <strong>Tabla 2.</strong> Una estrategia de resolucin mejorada para los casos en que no
    113 hay una coincidencia de configuracin regional exacta.</p>
    114 <table>
    115 <tr>
    116 <th>Configuracin del usuario</th>
    117 <th>Recursos de la aplicacin</th>
    118 <th>Resolucin de recursos</th>
    119 </tr>
    120 <tr>
    121 <td><ol>
    122 <li> fr_CH</li>
    123 </ol>
    124 </td>
    125 <td>
    126 Predeterminado (en)<br>
    127 de_DE<br>
    128 es_ES<br>
    129 fr_FR<br>
    130 it_IT<br>
    131 </td>
    132 <td>
    133 Intentar fr_CH =&gt; Error<br>
    134 Intentar fr =&gt; Error<br>
    135 Intentar secundario de fr =&gt; fr_FR<br>
    136 Usar fr_FR
    137 </td>
    138 </tr>
    139 
    140 </table>
    141 
    142 
    143 <p>As, los recursos se muestran en francs en lugar de en ingls. Este ejemplo tambin muestra
    144  por qu deberas almacenar las cadenas en francs en {@code fr} en lugar de en {@code fr_FR}
    145  para Android N. Aqu, el procedimiento se basa en hacer coincidir el dialecto primario ms cercano,
    146  lo cual hace que la resolucin sea ms rpida y ms predecible.</p>
    147 
    148 <p>Adems de esta lgica de resolucin mejorada, Android ofrece ahora ms
    149  idiomas de usuario de entre los cuales elegir. Volvamos a ver el ejemplo anterior con el idioma italiano
    150  especificado como un idioma de usuario adicional, pero sin compatibilidad de la aplicacin con el idioma francs.  </p>
    151 
    152 <p class="table-caption" id="t-2d-choice">
    153 <strong>Tabla 3.</strong> Resolucin de recursos cuando la aplicacin solo hace coincidir la
    154 configuracin regional de segunda preferencia del usuario.</p>
    155 <table>
    156 <tr>
    157 <th>Configuracin del usuario</th>
    158 <th>Recursos de la aplicacin</th>
    159 <th>Resolucin de recursos</th>
    160 
    161 </tr>
    162 <tr>
    163 <td><ol>
    164 <li> fr_CH</li>
    165 <li> it_CH</li>
    166 </ol>
    167 </td>
    168 <td>
    169 Predeterminado (en)<br>
    170 de_DE<br>
    171 es_ES<br>
    172 it_IT<br>
    173 </td>
    174 <td>
    175 Intentar fr_CH =&gt; Error<br>
    176 Intentar fr =&gt; Error<br>
    177 Intentar secundario de fr =&gt; Error<br>
    178 Intentar it_CH =&gt; Error<br>
    179 Intentar it =&gt; Error<br>
    180 Intentar secundario de it =&gt; it_IT<br>
    181 Usar it_IT
    182 </td>
    183 
    184 </tr>
    185 
    186 </table>
    187 <p>El usuario recibe la informacin en un idioma que comprende, si bien la aplicacin no
    188 es compatible con el idioma francs.</p>
    189 
    190 
    191 <h2 id="design">Diseo de la aplicacin para permitir configuraciones regionales adicionales</h2>
    192 <h3>API LocaleList</h3>
    193 
    194 <p>Android N incorpora una nueva API, {@code LocaleList.getDefault()},
    195 que les permite a las aplicaciones consultar directamente la lista de idiomas que ha especificado el usuario. Esta API
    196  te permite crear un comportamiento de la aplicacin
    197  ms sofisticado y una presentacin de contenido ms optimizada. Por ejemplo, las bsquedas
    198  pueden mostrar resultados en mltiples idiomas segn la configuracin del usuario.  Las aplicaciones de navegadores
    199  pueden evitar ofrecer la traduccin de pginas que estn en un idioma que el usuario comprende,
    200  y las aplicaciones de teclado pueden habilitar automticamente todos los diseos correctos. </p>
    201 
    202 <h3>Formateadores</h3>
    203 
    204 <p>Hasta Android 6.0 (API nivel 23), Android solo permita una o dos
    205  configuraciones regionales para muchos idiomas comunes
    206  (en, es, ar, fr, ru). Debido a que haba solo unas pocas variantes para cada idioma,
    207 las aplicaciones podan almacenar algunos nmeros y fechas como cadenas preprogramadas
    208 en los archivos de recursos.  Sin embargo, con el conjunto ampliado de configuraciones regionales
    209 compatibles de Android, puede haber diferencias importantes
    210 en los formatos de fecha, hora, moneda e
    211 informacin similar, incluso dentro de una sola configuracin regional. Preprogramar los formatos puede generar
    212 una experiencia confusa para los usuarios.  Por lo tanto, cuando desarrolles aplicaciones para Android,
    213 asegrate de usar formateadores en lugar de preprogramar las cadenas de nmeros y fechas.</p>
    214 
    215 <p>Un muy buen ejemplo es el rabe. Android N expandi su compatibilidad de
    216 una configuracin regional, {@code ar_EG}, a 27 configuraciones regionales. Estas configuraciones regionales pueden compartir la mayora de los recursos,
    217 pero algunas prefieren dgitos ASCII, mientras que otras prefieren dgitos nativos. Por ejemplo,
    218 cuando desees crear una oracin con una variable de dgito, como
    219 "Elige un PIN de 4dgitos", usa formateadores como se muestra a continuacin:</p>
    220 
    221 <pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
    222