Fix choosing regionalized locales

This commit is contained in:
arkon 2022-08-29 13:54:02 -04:00
parent 880407442c
commit 32190b6cac

View File

@ -6,7 +6,7 @@ import org.gradle.kotlin.dsl.TaskContainerScope
fun TaskContainerScope.registerLocalesConfigTask(project: Project): TaskProvider<Task> { fun TaskContainerScope.registerLocalesConfigTask(project: Project): TaskProvider<Task> {
return with(project) { return with(project) {
register("generateLocalesConfig") { register("generateLocalesConfig") {
val emptyResourcesElement = "<resources>\\s*<\\/resources>|<resources\\/>".toRegex() val emptyResourcesElement = "<resources>\\s*</resources>|<resources/>".toRegex()
val valuesPrefix = "values-?".toRegex() val valuesPrefix = "values-?".toRegex()
val languages = fileTree("$projectDir/src/main/res/") val languages = fileTree("$projectDir/src/main/res/")
@ -16,14 +16,16 @@ fun TaskContainerScope.registerLocalesConfigTask(project: Project): TaskProvider
.filterNot { .filterNot {
it.readText().contains(emptyResourcesElement) it.readText().contains(emptyResourcesElement)
} }
.map { it.parentFile.name }
.sorted()
.joinToString(separator = "\n") { .joinToString(separator = "\n") {
val language = it.parentFile.name val language = it
.replace(valuesPrefix, "") .replace(valuesPrefix, "")
.replace("-r", "-")
.takeIf(String::isNotBlank) ?: "en" .takeIf(String::isNotBlank) ?: "en"
" <locale android:name=\"$language\"/>" " <locale android:name=\"$language\"/>"
} }
val content = """ val content = """
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android"> <locale-config xmlns:android="http://schemas.android.com/apk/res/android">