vista - Android Lint: ¿cómo ignorar las advertencias de traducción faltantes en un archivo de cadena de configuración regional que deliberadamente solo reemplaza algunas traducciones predeterminadas?
no se ve design en android studio (5)
Encontré una solución mejor según esta respuesta: https://stackoverflow.com/a/13797364/190309
Simplemente agregue ignore="MissingTranslation"
a su string.xml
, por ejemplo:
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingTranslation" >
<!-- your strings here; no need now for the translatable attribute -->
</resources>
¿Es posible traducir algunas cadenas, pero no todas, en un archivo de recursos separado sin que Lint se queje de MissingTranslation ?
Por ejemplo: las cadenas de mi aplicación están todas en res / values / strings.xml . Una de las cuerdas es
<string name="postal_code">Postal Code</string>
Dado que el "código postal" se suele llamar "código postal" en los EE. UU., Deseo agregar otro recurso res / values-en-rUS / strings.xml con contenido:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="postal_code">Zip Code</string>
</resources>
Sin embargo, Lint se queja de otras cadenas en values / strings.xml pero no en values-en-rUS / strings.xml
Me doy cuenta de que puede suprimir las advertencias especificando tools:ignore
en values / strings.xml . Pero esto no es deseable porque la advertencia Lint es realmente útil cuando se traduce a otro idioma.
En su lugar, ¿es posible suprimir la advertencia en el archivo values-en-rUS / strings.xml , como en, indicando a Lint que no use ese archivo como criterio cuando busque traducciones faltantes?
Esto parece que aún no ha sido respondido, así que les muestro una solución:
En su archivo xml DEFAULT, puede definir cadenas, que no necesitan traducciones como las siguientes:
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="en">
Esta cadena no necesita ser traducida y la pelusa tampoco se quejará de eso ...
Lint admite traducciones regionales parciales, pero necesita saber qué idioma son las cadenas predeterminadas. De esa manera, puede distinguir una traducción regional parcial de traducciones faltantes en una configuración regional diferente.
Para especificar la configuración regional en values/strings.xml
:
<string name="developer" translatable="false">Developer Name</string>
De la pelusa:
Por defecto, este detector permite que las regiones de un idioma solo proporcionen un subconjunto de las cadenas y recurran a las cadenas de idioma estándar. [...]
Puede indicar a la pelusa (y otras herramientas) qué idioma es el idioma predeterminado en su carpeta res / values / especificando las herramientas: locale = "languageCode" para el elemento raíz en su archivo de recursos. (El prefijo de las herramientas se refiere a la declaración de espacio de nombres http://schemas.android.com/tools ).
Agregue la especificación de la configuración regional a su archivo de idioma predeterminado, y no debería obtener ese error para en-rUS
, pero se le informará de cualquier otra traducción faltante.
Si está utilizando Eclipse, mire los botones de la barra de herramientas de la vista Advertencias de Lint. Uno de ellos se llama "Ignorar en archivo". Esto debería ayudar, pero solo si Lint asigna el error a su archivo "US". Ese botón simplemente modifica el archivo lint.xml en su proyecto, para que pueda investigar (y deshacer) fácilmente.
Más detalles sobre la supresión específica de ese archivo en http://tools.android.com/tips/lint/suppressing-lint-warnings
Una buena manera de deshabilitar la comprobación de MissingTranslations es agregar la opción en el archivo build.gradle
específico del módulo.
android {
lintOptions{
disable ''MissingTranslation''
}
//other build tags
}
Si las cadenas no están presentes en el archivo de cadenas específicas del entorno local, tomará las cadenas del archivo predeterminado que generalmente es strings.xml
.