diff --git a/lint.xml b/lint.xml
index 75cf6ae86d..23bcb40c45 100644
--- a/lint.xml
+++ b/lint.xml
@@ -15,6 +15,7 @@
+
diff --git a/res/values-lg/strings.xml b/res/values-lg/strings.xml
index 1f19187111..b42774b92a 100644
--- a/res/values-lg/strings.xml
+++ b/res/values-lg/strings.xml
@@ -88,7 +88,7 @@ a
MMS terina bukumi
Signal
Katudde ku Signal %1$s
- Katukozese emboozi eno: %1$s
+
Bambi londa contact
sumulula contact eno
Ojjakudamu okufuna obubaka ne ssimu okuva ew\'omuntu ono
@@ -487,7 +487,7 @@ gy\'olonze (%s) sintuufu.
ino kiyinza okumala akaseera.Gumukiriza, ojakutegeezebwa nga okuyingiza kuwedde.
Kiyingizibwa
- Database ezibwa bujja
+
Yingiza system SMS database
Yingiza datbase okuva ku apu ya default system messenger
Yingiza backup yo bubaka obuwandike
@@ -521,7 +521,7 @@ gy\'olonze (%s) sintuufu.
Byakyaama
Ssimu okuva ku Signal
- Jakko edoboozi
+
Enamba yesimu
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index d43e5cf62e..eae276614f 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -364,7 +364,7 @@
Ова може да потрае. Бидете стрпливи, ќе бидете известени веднаш штом заврши импортирањето.
ИМПОТИРАЊЕ
- Ажурирање на базата на податоци…
+
Импортирај системска SMS база на податоци
Импортирајте нешифрирана копија
diff --git a/translations.gradle b/translations.gradle
index 329e4d26db..b116ccb1ab 100644
--- a/translations.gradle
+++ b/translations.gradle
@@ -56,7 +56,7 @@ task cleanApostropheErrors {
doLast {
allStringsResourceFiles { f ->
def before = f.text
- def after = before.replaceAll(/([^\\=08])(')/,'$1\\\\\'')
+ def after = before.replaceAll(/([^\\=08])(')/, '$1\\\\\'')
if (before != after) {
f.text = after
logger.info("$f.parentFile.name/$f.name...updated")
@@ -66,8 +66,43 @@ task cleanApostropheErrors {
mustRunAfter replaceEllipsis
}
+task excludeNonTranslatables {
+ group 'Translate'
+ description 'Remove strings that are marked "translatable"="false" or are ExtraTranslations.'
+ doLast {
+ def englishFile = file('res/values/strings.xml')
+
+ def english = new XmlParser().parse(englishFile)
+ def nonTranslatable = english
+ .findAll { it['@translatable'] == 'false' }
+ .collect { it['@name'] }
+ .toSet()
+ def all = english.collect { it['@name'] }.toSet()
+ def translatable = all - nonTranslatable
+
+ allStringsResourceFiles { f ->
+ if (f != englishFile) {
+ def newLines = f.readLines()
+ .collect { line ->
+ def matcher = line =~ /name="([^"]*)".*<\//
+ if (matcher.find()) {
+ def name = matcher.group(1)
+ if (!line.contains('excludeNonTranslatables') && !translatable.contains(name)) {
+ return " "
+ }
+ }
+ return line
+ }
+
+ f.write(newLines.join("\n") + "\n")
+ }
+ }
+ }
+ mustRunAfter cleanApostropheErrors
+}
+
task translate {
group 'Translate'
- description 'Pull translations and post-process for ellipsis and apostrophes.'
- dependsOn pullTranslations, replaceEllipsis, cleanApostropheErrors
+ description 'Pull translations and post-process for ellipsis, apostrophes and non-translatables.'
+ dependsOn pullTranslations, replaceEllipsis, cleanApostropheErrors, excludeNonTranslatables
}