是否有可能使用build.gradle將translatable = false添加到String資源?在Android中使用build.gradle將translatable = false添加到String資源中?
我有 resValue'string','app_name',名稱 但我想使它無法翻譯。 (translatable = false) 它實際上可能嗎?
是否有可能使用build.gradle將translatable = false添加到String資源?在Android中使用build.gradle將translatable = false添加到String資源中?
我有 resValue'string','app_name',名稱 但我想使它無法翻譯。 (translatable = false) 它實際上可能嗎?
Android的gradle插件不支持這個。
您不能在您的gradle file
中添加translatable=false
。
謝謝。需要尋找另一種方式。 –
仍然有解決方法,所以我不會說單詞'cannot' –
有幾種方法可以實現你想要的。第一種方法是忽略缺失的翻譯,所以你根本不需要translatable
屬性。你可以把它忽略了使用XML:
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingTranslation" > <!--this line-->
<!-- your strings here; no need now for the translatable attribute -->
</resources>
或使用gradle這個選項:
android {
lintOptions {
disable 'MissingTranslation'
}
}
第三選項是預先處理由任何的源文件gradle這個更換線路資源:
內構建變體:
applicationVariants.all { variant ->
if (variant.name.toLowerCase().contains("nuset")) {
variant.mergeResources.doLast {
def dir = new File("${buildDir}/intermediates/res/merged/${variant.dirName}")
println("Resources" + dir)
dir.eachFileRecurse { file ->
if (file.name.endsWith(".xml")) {
String content = file.getText('UTF-8')
if (content != null && content.contains('<string name="app_name">')) {
println("Replacing app name in " + file)
content = content.replace('<string name="app_name">', '<string name="app_name" translatable="false">')
file.write(content, 'UTF-8')
}
}
}
}
}
}
因此它將替換所有出現的<string name="app_name">
與<string name="app_name" translatable="false">
不在原始源,但在合併(準備包裝)來源
不在gradle文件中。你在你的strings.xml中這樣做。其中所有其他字符串中的應用程序名稱應該位於哪裏。 –
不要提供翻譯價值 –
@ModularSynth不,我想用BUILD.GRADLE做,而不是用xml文件。我知道如何編輯xmls。 –