2011-10-12 7 views
20

Me preguntaba si alguien había encontrado una buena forma de validar conjuntos de cadenas en el directorio res/values.Verificación de entorno de matriz de Android Android

puedo crear por código usando la localidad predeterminada y puede tener un recurso de algo así como

<string-array name="array_example1"> 
    <item>One</item> 
    <item>Two</item> 
    <item>Three</item> 
</string-array> 

Luego, cuando los traductores para la aplicación hacen sus traducciones sino que también crean una cadena de matriz. Ocasionalmente, si una traducción queda rezagada, puede que no haya tantas entradas en la matriz (tal vez solo "Uno" y "Dos" en el ejemplo anterior)

¿Hay alguna manera fácil de validar si hay una desajuste en el número de entradas? Tener una discrepancia puede causar problemas en el código, pero como la aplicación tiene 10 de arreglos de cadenas en varios idiomas, verificando que coincidan todos lleva mucho tiempo.

¿Qué enfoque tienen otros para esto?

+1

¿Tal vez crear un pequeño script que analiza los archivos y los combina? –

+0

ninguno que yo sepa. alguna herramienta de comparación xml personalizada, puede ser? – njzk2

Respuesta

41

He encontrado una mejor manera de detener los accidentes. No me había dado cuenta de esa cadena-arrays podrían hacer referencia a recursos de cadena de la siguiente manera:

<string-array name="array_example1"> 
    <item>@string/resOne</item> 
    <item>@string/resTwo</item> 
    <item>@string/resThree</item> 
</string-array> 

A continuación, agregue

<string name="resOne">One</string> 
<string name="resTwo">Two</string> 
<string name="resThree">Three</string> 

lo tanto de esta manera si hay un desajuste el idioma por defecto sólo se pondrá muestra de esa opción y detener bloqueos debido a listas de diferentes tamaños

+0

¡La solución perfecta! Pensé que era posible, simplemente no sabía la sintaxis :) –

+0

gracias por compartir. – Sathesh

+0

También recomiendo establecer el atributo 'traducible =" falso "' en el elemento ''. De esta forma, Lint te notificará si existe esta matriz en algún otro archivo de idioma. – Robyer

Cuestiones relacionadas