web-dev-qa-db-fra.com

Android Lint: comment ignorer les avertissements de traduction manquants dans un fichier de chaîne de paramètres régionaux qui ne remplace intentionnellement que certaines traductions par défaut?

Est-il possible de traduire certaines chaînes, mais pas toutes, dans un fichier de ressources séparé sans que Lint se plaint de MissingTranslation?

Par exemple: les chaînes de mon application sont toutes en res/values ​​/ strings.xml. L'une des chaînes est

<string name="postal_code">Postal Code</string>

Étant donné que le "code postal" est généralement appelé "code postal" aux États-Unis, je veux ajouter une autre ressource res/values-en-rUS/strings.xml avec le contenu:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="postal_code">Zip Code</string>
</resources>

Cependant, Lint se plaint d'autres chaînes dans values ​​/ strings.xml mais pas dans values-en-rUS/strings.xml

Je me rends compte que vous pouvez supprimer les avertissements en spécifiant tools:ignore in values ​​/ strings.xml. Mais cela n'est pas souhaitable car l'avertissement Lint est en fait utile lors de la traduction dans une autre langue.

Au lieu de cela, est-il possible de supprimer l'avertissement dans le fichier values-en-rUS/strings.xml, comme dans, en disant à Lint de ne pas utiliser ce fichier comme critère lors de la recherche de traductions manquantes?

35
Steveo

J'ai trouvé une meilleure solution selon cette réponse: https://stackoverflow.com/a/13797364/190309

Ajoutez simplement ignore="MissingTranslation" à ton string.xml, par exemple:

<?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>
36
anticafe

Lint prend en charge les traductions régionales partielles, mais a besoin de connaître la langue des chaînes par défaut. De cette façon, il peut distinguer une traduction régionale partielle des traductions manquantes dans un environnement local différent.

Pour spécifier les paramètres régionaux dans values/strings.xml:

<resources xmlns:tools="http://schemas.Android.com/tools" tools:locale="en">

De la charpie:

Par défaut, ce détecteur permet aux régions d'une langue de fournir simplement un sous-ensemble des chaînes et de revenir aux chaînes de langue standard. [...]

Vous pouvez indiquer à lint (et à d'autres outils) quelle langue est la langue par défaut dans votre dossier res/values ​​/ en spécifiant tools: locale = "languageCode" pour l'élément racine de votre fichier de ressources. (Le préfixe des outils fait référence à la déclaration de l'espace de noms http://schemas.Android.com/tools .)

Ajoutez la spécification locale à votre fichier de langue par défaut et vous ne devriez pas obtenir cette erreur pour en-rUS, mais sera toujours informé de toute autre traduction manquante.

17
blahdiblah

Cela ne semble pas encore répondu, donc je vous montre une solution:

Dans votre fichier xml DEFAULT, vous pouvez définir des chaînes qui n'ont pas besoin de traductions comme suit:

<string name="developer" translatable="false">Developer Name</string>

Cette chaîne n'a pas besoin d'être traduite et les peluches ne s'en plaindront pas non plus ...

14
prom85

Il s'agit d'une réponse au couteau suisse, vous pouvez donc ignorer le message de traduction manquant en fonction de la situation dans laquelle vous vous trouvez:

  • Ignorer tous les messages MissingTranslation:

    Modifiez votre fichier build.gradle:

    Android {
        lintOptions{
            disable 'MissingTranslation'
        }
    }
    
  • Ignorez tous les messages MissingTranslation dans un fichier concret resources.xml:

    <?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>
    
  • Ignorez le message MissingTranslation pour une seule chaîne:

    <string name="developer" translatable="false">Developer Name</string>
    
5
xarlymg89

Si vous utilisez Eclipse, veuillez consulter les boutons de la barre d'outils de la vue des avertissements Lint. L'un d'eux est appelé "Ignorer dans le fichier". Cela devrait vous aider, mais uniquement si Lint attribue l'erreur à votre fichier "US". Ce bouton modifie simplement le fichier lint.xml dans votre projet, afin que vous puissiez enquêter (et annuler) facilement.

Plus de détails sur cette suppression spécifique au fichier sont disponibles sur http://tools.Android.com/tips/lint/suppressing-lint-warnings

0
Bananeweizen