Vermijd Android Lint klaagt over niet-vertaalde string

is het mogelijk om te specificeren dat de strings in een bestand binnen de value-* directories met opzet niet vertaald zijn in andere talen? Ik heb een aantal strings die voor alle talen hetzelfde zijn en geen vertaling nodig hebben, dus ik heb een bestand unlocalized-strings.xmlgemaakt in de directory values. Android Lint om te controleren op problemen blijft maar zeggen dat sommige vertalingen ontbreken.. Ik wil deze controle niet voor het hele project uitschakelen, ik zou het alleen in sommige XML-bestanden willen uitschakelen.. is het mogelijk?

"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.

Hoe kan deze regiovan niet-gelokaliseerdestrings worden gedefinieerd?


Antwoord 1, autoriteit 100%

Het is het ignoreattribuut van de toolsnaamruimte in je strings-bestand, als volgt:

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

Antwoord 2, autoriteit 68%

Ik weet niet hoe ik het hele bestand moet negeren, maar je kunt het string voor string doen met:

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

Antwoord 3, autoriteit 65%

Toevoegen aan build.gradle:

android {
     lintOptions {
        disable 'MissingTranslation'
    }
}

Antwoord 4, autoriteit 10%

Er zijn 3 manieren die ik ken:

Om de wijzigingswaarde op waarde toe te passen: stel het kenmerk translatable="false"in op de <string>-definitie:

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

Als je veel bronnen hebt die niet vertaald mogen worden, kun je ze in een bestand met de naam donottranslate.xmlplaatsen en lint zal al deze bronnen als niet-vertaalbare bronnen beschouwen.

Een andere manier die ik ontdekte tijdens het bladeren door Hackers Keyboard-projectbronnen:
U kunt het voorvoegsel donottranslate-toevoegen aan uw bronbestand.
Net als in het vorige voorbeeld zal lint al deze bronnen als niet-vertaalbare bronnen beschouwen.
In jouw geval kun je unlocalized-strings.xmlvervangen door donottranslate-strings.xml.
Het lijkt te werken, maar ik heb geen documentatie gevonden voor deze tip.

Zie: Android Tools-projectsite: niet-vertaalbare strings


Antwoord 5, autoriteit 5%

En hier is een Android Studio-oplossing om deze fatale Lint-fout uit te schakelen:


Antwoord 6

Ik denk dat wat je nodig hebt in plaats van lint uit te schakelen, is om ze te markeren met attribuut

translatable="false"

Antwoord 7

Maak een bronbestand met een bestandsnaam die begint met “donottranslate” (bijv. donottranslate.xml, donottranslate_urls.xml, enz.), en lint negeert de strings helemaal bij het controleren op ontbrekende vertalingen.


Antwoord 8

Als u de lintcontrole wilt inschakelen op ontbrekende vertaling, kunt u

“Projecteigenschappen – & GT; Android-pluisvoorkeuren – & GT; Selecteer MissingTranslation – & GT; SWTICH om te negeren in ernst”,

hoopt dat dit anderen helpt omdat ik gewoon dit probleem tegenkom 🙂


Antwoord 9

Nog een manier om dat te doen, is uw string toe aan de Gradle-bestand, met resValueof buildConfigField. Zoiets:

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"
    }
}

Usages:

// buildConfigField
BuildConfig.APP_NAME1
// resValue
getString(R.string.app_name2)

Antwoord 10

Om waarschuwingen in Android-studio te voorkomen, open voorkeuren == & GT; Inspecties, verwijder “Onvolledige vertalingen”. Maar het heeft geen invloed op de gradle-build.


Antwoord 11

Er is ook de “Vertaaleditor” (klik met de rechtermuisknop op string.xml “Open Vertaal Editor”).

Controleer vervolgens het vak ‘Ontranslatable’ op een tekenreeks.

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

Other episodes