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()