diff --git a/.github/workflows/sync-localazy.yml b/.github/workflows/sync-localazy.yml
index 50ebc12c95..3b13fa6a77 100644
--- a/.github/workflows/sync-localazy.yml
+++ b/.github/workflows/sync-localazy.yml
@@ -33,6 +33,7 @@ jobs:
- name: Run Localazy script
run: |
./tools/localazy/downloadStrings.sh --all
+ ./tools/localazy/importSupportedLocalesFromLocalazy.py
./tools/test/generateAllScreenshots.py
- name: Create Pull Request for Strings
uses: peter-evans/create-pull-request@v6
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 47dd5023e0..4c21cef589 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -23,6 +23,7 @@ import extension.allServicesImpl
import extension.gitBranchName
import extension.gitRevision
import extension.koverDependencies
+import extension.locales
import extension.setupKover
plugins {
@@ -74,6 +75,10 @@ android {
isUniversalApk = true
}
}
+
+ defaultConfig {
+ resourceConfigurations += locales
+ }
}
signingConfigs {
@@ -165,10 +170,6 @@ android {
buildConfigField("String", "FLAVOR_DESCRIPTION", "\"FDroid\"")
}
}
-
- androidResources {
- generateLocaleConfig = true
- }
}
androidComponents {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1089d631d9..4bb171e3e6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -29,6 +29,7 @@
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
+ android:localeConfig="@xml/locales_config"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
diff --git a/app/src/main/res/xml/locales_config.xml b/app/src/main/res/xml/locales_config.xml
new file mode 100644
index 0000000000..17e0192414
--- /dev/null
+++ b/app/src/main/res/xml/locales_config.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/src/main/kotlin/extension/locales.kt b/plugins/src/main/kotlin/extension/locales.kt
new file mode 100644
index 0000000000..c384501a1b
--- /dev/null
+++ b/plugins/src/main/kotlin/extension/locales.kt
@@ -0,0 +1,22 @@
+// File generated by importSupportedLocalesFromLocalazy.py, do not edit
+
+package extension
+
+val locales = setOf(
+ "be",
+ "bg",
+ "cs",
+ "de",
+ "en",
+ "es",
+ "fr",
+ "hu",
+ "in",
+ "it",
+ "ro",
+ "ru",
+ "sk",
+ "sv",
+ "uk",
+ "zh-rTW",
+)
diff --git a/tools/localazy/importSupportedLocalesFromLocalazy.py b/tools/localazy/importSupportedLocalesFromLocalazy.py
new file mode 100755
index 0000000000..15f0aed560
--- /dev/null
+++ b/tools/localazy/importSupportedLocalesFromLocalazy.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python3
+
+import os
+import subprocess
+
+
+def getLocalesFromLocalazy():
+ command = subprocess.run(
+ ["localazy languages --read-key a7876306080832595063-aa37154bb3772f6146890fca868d155b2228b492c56c91f67abdcdfb74d6142d --csv"],
+ shell=True,
+ capture_output=True,
+ text=True,
+ )
+ data = command.stdout
+ result = []
+ for line in data.split("\n"):
+ if line:
+ line = line.split(",")
+ if (line[6] == "true"):
+ result.append(line[0])
+ return sorted(result)
+
+
+def normalizeForResourceConfigurations(locale):
+ match locale:
+ case "id":
+ return "in"
+ case "zh_TW#Hant":
+ return "zh-rTW"
+ case _:
+ return locale
+
+
+def normalizeForLocalConfig(locale):
+ match locale:
+ case "id":
+ return "in"
+ case "zh_TW#Hant":
+ return "zh-TW"
+ case _:
+ return locale
+
+
+def generateLocaleFile(locales, file):
+ with open("plugins/src/main/kotlin/extension/locales.kt", "w") as f:
+ f.write("// File generated by " + file + ", do not edit\n\n")
+ f.write("package extension\n\n")
+ f.write("val locales = setOf(\n")
+ for locale in locales:
+ f.write(" \"" + normalizeForResourceConfigurations(locale) + "\",\n")
+ f.write(")\n")
+
+
+def generateLocalesConfigFile(locales, file):
+ with open("app/src/main/res/xml/locales_config.xml", "w") as f:
+ f.write("\n")
+ f.write('\n')
+ for locale in locales:
+ f.write(" \n")
+ f.write("\n")
+
+
+def main():
+ file = os.path.basename(__file__)
+ locales = getLocalesFromLocalazy()
+ generateLocaleFile(locales, file)
+ generateLocalesConfigFile(locales, file)
+
+
+if __name__ == "__main__":
+ main()