web-dev-qa-db-fra.com

Évitez Android Lint se plaint de chaînes non traduites

est-il possible de spécifier que les chaînes d'un fichier dans le value-* Les répertoires ne sont volontairement pas traduits dans d'autres langues? J'ai un tas de chaînes qui sont communes à toutes les langues et n'ont pas besoin de traduction, j'ai donc créé un unlocalized-strings.xml fichier dans le répertoire values .. en cours d'exécution Android Lint pour vérifier les problèmes, il ne cesse de signaler que certaines traductions sont manquantes .. Je ne souhaite pas désactiver cette vérification dans son ensemble. projet, je voudrais le désactiver uniquement 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 définir cette région de non localisée chaînes?

116
Gianni Costanzi

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>
158
Luis

C'est l'attribut ignore de l'espace de noms 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>
224
Adil Hussain

Ajouter à build.gradle:

Android {
     lintOptions {
        disable 'MissingTranslation'
    }
}
153
Giraffe Lion

Il y a 3 façons que je connaisse:

Pour appliquer la valeur de modification par valeur: Définissez 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 devraient pas être traduites, vous pouvez les placer dans un fichier nommé donottranslate.xml et lint considéreront toutes les ressources non traduisibles.

Une autre façon que j'ai découverte en naviguant sources du projet Hackers Keyboard :
Vous pouvez ajouter le préfixe donottranslate- à votre fichier de ressources. Comme dans l'exemple précédent, Lint considère toutes les ressources non traduisibles.
Dans votre cas, vous pouvez remplacer unlocalized-strings.xml par donottranslate-strings.xml. Cela semble fonctionner, mais je n'ai trouvé aucune documentation pour ce conseil.

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

23
Cyril Leroux

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

enter image description here

12
Dzhuneyt

Créez un fichier de ressources dont le nom commence par "donottranslate" (par exemple, donottranslate.xml, donottranslate_urls.xml, etc.), et lint ignorer complètement ses chaînes lors de la recherche de traductions manquantes.

2
Kai

Je pense que ce dont vous avez besoin au lieu de désactiver la charpie est de les marquer avec un attribut

translatable="false"
2
Diego Torres Milano

Une autre façon de faire est d'ajouter votre chaîne au fichier de dégradé, en utilisant resValue ou buildConfigField. Quelque chose comme ca:

buildTypes {
    debug {
        buildConfigField "string", "app_name1", "App Name"
        resValue "string", "app_name2", "App Name"
    }
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        buildConfigField "string", "app_name1", "App Name"
        resValue "string", "app_name2", "App Name"
    }
}

Coutumes:

// buildConfigField
BuildConfig.APP_NAME1

// resValue
getString(R.string.app_name2)
1
heloisasim

Si vous voulez désactiver la vérification de la charpie, vous pouvez aller

"Propriétés du projet -> Android Préférences de peluche -> Sélectionnez ManquantTranslation -> Basculer pour ignorer la gravité"),

espère que cela aide les autres parce que je viens de rencontrer ce problème :)

1
hctang

Il existe également un "Editeur de traduction" (clic droit sur string.xml "Ouvrir un éditeur de traduction").

Cochez ensuite la case "Non traduisible" sur une chaîne.

https://developer.Android.com/studio/write/translations-editor

0
user1010160

Pour éviter les avertissements dans Android Studio, ouvrez Préférences ==> Inspections, décochez la case "Traductions incomplètes". Cela n'affectera pas la construction de Gradle.

0
Kof