127 votes

Éviter que Android Lint ne se plaigne d'une chaîne non traduite

Est-il possible de spécifier que les chaînes de caractères d'un fichier au sein de l'arborescence de l'application value-*  Les annuaires ne sont pas traduits dans d'autres langues à dessein ? J'ai un groupe de chaînes de caractères qui sont communes à toutes les langues et qui n'ont pas besoin d'être traduites. unlocalized-strings.xml dans le dossier values répertoire.. En exécutant Android Lint pour vérifier les problèmes, il continue à dire que certaines traductions sont manquantes Je ne veux pas désactiver cette vérification sur l'ensemble du projet, je voudrais la désactiver seulement dans certains fichiers XML est-ce possible ?

"title_widget_updater_service" is not translated in de, en, en-rUS, it

Issue: Checks for incomplete translations where not all strings are translated
Id: MissingTranslation

If an application has more than one locale, then all the strings declared in one language     
should also be translated in all other languages.

By default this detector allows regions of a language to just provide a subset of the 
strings and fall back to the standard language strings. You can require all regions to 
provide a full translation by setting the environment variable 
ANDROID_LINT_COMPLETE_REGIONS.

Comment peut-on définir cette région de non localisé des ficelles ?

0 votes

238voto

Adil Hussain Points 3542

C'est le ignore de l'attribut tools dans votre fichier de chaînes, comme suit :

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

0 votes

<resources tools:ignore="MissingTranslation"> me donne Error Parsing XML : unbound prefix (préfixe non lié)

5 votes

Cela fonctionne bien mais j'ai dû aller à Project->Clean pour éliminer définitivement les erreurs.

0 votes

Au moins, Eclipse ne nous a pas obligés à tout traduire, y compris les dossiers de chaînes bizarres comme ids.xml et analytics.xml.

163voto

Luis Points 7267

Je ne sais pas comment ignorer tout le fichier, mais vous pouvez le faire chaîne par chaîne en utilisant :

<string name="hello" translatable="false">hello</string>

1 votes

Cela donne "les ressources non traduisibles doivent être définies uniquement dans les valeurs de base /dossier".

3 votes

Et c'est exact. Si vous ne voulez pas qu'une chaîne soit traduite, vous devez la définir uniquement dans le "dossier/valeurs de base", ce qui signifie que vous ne devez pas saisir la chaîne dans le dossier/valeurs traduit.

1 votes

La réponse de @CyrilLeroux est plus complète et devrait être marquée comme la bonne car elle montre l'option de mettre toutes les chaînes non traduisibles dans un seul fichier.

23voto

Elasticboy Points 765

Il y a 3 façons que je connais :

Pour appliquer la modification valeur par valeur : Définir l'attribut translatable="false" sur le <string> définition :

<string name="account_setup_imap" translatable="false">IMAP</string>

Si vous avez beaucoup de ressources qui ne doivent pas être traduites, vous pouvez les placer dans un fichier nommé donottranslate.xml et lint considérera toutes ces ressources comme non traduisibles.

Un autre moyen que j'ai découvert en naviguant Pirates informatiques Sources du projet Keyboard :
Vous pouvez ajouter le préfixe donottranslate- à votre fichier de ressources. Comme dans l'exemple précédent, lint considérera toutes ces ressources comme non traduisibles.
Dans votre cas, vous pouvez remplacer unlocalized-strings.xml par donottranslate-strings.xml . Cela semble fonctionner, mais je n'ai pas trouvé de documentation pour cette astuce.

Voir : Site du projet Android Tools : Chaînes non traduisibles

0 votes

Est-il vrai que si nous mettons notre chaîne dans le fichier donottranlate.xml nous n'avons pas besoin d'ajouter l'élément translatable="false" plus d'étiquettes ?

0 votes

Ouaip. J'utilise des fichiers donottranslate-strings.xml dans tous mes projets. Cela fonctionne très bien. Essayez-le, c'est très utile !

14voto

user1364793 Points 97

Et voici une solution Android Studio pour désactiver cette erreur fatale de Lint :

enter image description here

2 votes

Il peut s'agir d'une erreur ennuyeuse, mais elle peut vous sauver lorsque vous oubliez accidentellement de traduire une nouvelle chaîne dans l'une des langues de votre application.

2voto

dtmilano Points 26472

Je pense que ce dont vous avez besoin au lieu de désactiver lint est de les marquer avec l'attribut

translatable="false"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X