mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 02:34:39 +00:00
enhance(i18n/android): Dynamically generate locales_config.xml
This commit is contained in:
parent
875100dd6c
commit
582e0f19b3
3 changed files with 17 additions and 78 deletions
|
@ -3,28 +3,24 @@ import org.gradle.api.Task
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.gradle.kotlin.dsl.TaskContainerScope
|
import org.gradle.kotlin.dsl.TaskContainerScope
|
||||||
|
|
||||||
|
private val emptyResourcesElement = "<resources>\\s*</resources>|<resources/>".toRegex()
|
||||||
|
|
||||||
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 languages = fileTree("$projectDir/src/commonMain/moko-resources/")
|
||||||
val valuesPrefix = "values-?".toRegex()
|
.matching { include("**/strings.xml") }
|
||||||
|
.filterNot { it.readText().contains(emptyResourcesElement) }
|
||||||
println(projectDir)
|
.map {
|
||||||
val languages = fileTree("$projectDir/src/main/res/")
|
it.parentFile.name
|
||||||
.matching {
|
.replace("base", "en")
|
||||||
include("**/strings.xml")
|
.replace("-r", "-")
|
||||||
|
.replace("+", "-")
|
||||||
|
.takeIf(String::isNotBlank) ?: "en"
|
||||||
}
|
}
|
||||||
.filterNot {
|
|
||||||
it.readText().contains(emptyResourcesElement)
|
|
||||||
}
|
|
||||||
.map { it.parentFile.name }
|
|
||||||
.sorted()
|
.sorted()
|
||||||
.joinToString(separator = "\n") {
|
.joinToString(separator = "\n") {
|
||||||
val language = it
|
" <locale android:name=\"$it\"/>"
|
||||||
.replace(valuesPrefix, "")
|
|
||||||
.replace("-r", "-")
|
|
||||||
.takeIf(String::isNotBlank) ?: "en"
|
|
||||||
" <locale android:name=\"$language\"/>"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val content = """
|
val content = """
|
||||||
|
@ -34,7 +30,7 @@ $languages
|
||||||
</locale-config>
|
</locale-config>
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
|
|
||||||
val localeFile = file("$projectDir/src/main/res/xml/locales_config.xml")
|
val localeFile = file("$projectDir/src/androidMain/res/xml/locales_config.xml")
|
||||||
localeFile.parentFile.mkdirs()
|
localeFile.parentFile.mkdirs()
|
||||||
localeFile.writeText(content)
|
localeFile.writeText(content)
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,11 +32,10 @@ multiplatformResources {
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
// FIXME: Migrate fully to MR
|
val localesConfigTask = registerLocalesConfigTask(project)
|
||||||
// val localesConfigTask = registerLocalesConfigTask(project)
|
preBuild {
|
||||||
// preBuild {
|
dependsOn(localesConfigTask)
|
||||||
// dependsOn(localesConfigTask)
|
}
|
||||||
// }
|
|
||||||
|
|
||||||
withType<KotlinCompile> {
|
withType<KotlinCompile> {
|
||||||
compilerOptions.freeCompilerArgs.addAll(
|
compilerOptions.freeCompilerArgs.addAll(
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<locale android:name="ar"/>
|
|
||||||
<locale android:name="bg"/>
|
|
||||||
<locale android:name="bn"/>
|
|
||||||
<locale android:name="ca"/>
|
|
||||||
<locale android:name="ceb"/>
|
|
||||||
<locale android:name="cs"/>
|
|
||||||
<locale android:name="cv"/>
|
|
||||||
<locale android:name="de"/>
|
|
||||||
<locale android:name="el"/>
|
|
||||||
<locale android:name="en"/>
|
|
||||||
<locale android:name="eo"/>
|
|
||||||
<locale android:name="es"/>
|
|
||||||
<locale android:name="eu"/>
|
|
||||||
<locale android:name="fa"/>
|
|
||||||
<locale android:name="fi"/>
|
|
||||||
<locale android:name="fil"/>
|
|
||||||
<locale android:name="fr"/>
|
|
||||||
<locale android:name="gl"/>
|
|
||||||
<locale android:name="hi"/>
|
|
||||||
<locale android:name="hr"/>
|
|
||||||
<locale android:name="hu"/>
|
|
||||||
<locale android:name="in"/>
|
|
||||||
<locale android:name="it"/>
|
|
||||||
<locale android:name="ja"/>
|
|
||||||
<locale android:name="ka"/>
|
|
||||||
<locale android:name="km"/>
|
|
||||||
<locale android:name="ko"/>
|
|
||||||
<locale android:name="lv"/>
|
|
||||||
<locale android:name="mn"/>
|
|
||||||
<locale android:name="ms"/>
|
|
||||||
<locale android:name="my"/>
|
|
||||||
<locale android:name="nb-NO"/>
|
|
||||||
<locale android:name="nl"/>
|
|
||||||
<locale android:name="nn"/>
|
|
||||||
<locale android:name="or"/>
|
|
||||||
<locale android:name="pl"/>
|
|
||||||
<locale android:name="pt"/>
|
|
||||||
<locale android:name="pt-BR"/>
|
|
||||||
<locale android:name="ro"/>
|
|
||||||
<locale android:name="ru"/>
|
|
||||||
<locale android:name="sc"/>
|
|
||||||
<locale android:name="sk"/>
|
|
||||||
<locale android:name="sr"/>
|
|
||||||
<locale android:name="sv"/>
|
|
||||||
<locale android:name="te"/>
|
|
||||||
<locale android:name="th"/>
|
|
||||||
<locale android:name="ti"/>
|
|
||||||
<locale android:name="tl"/>
|
|
||||||
<locale android:name="tr"/>
|
|
||||||
<locale android:name="uk"/>
|
|
||||||
<locale android:name="vi"/>
|
|
||||||
<locale android:name="zh-Hans"/>
|
|
||||||
<locale android:name="zh-Hant"/>
|
|
||||||
</locale-config>
|
|
Loading…
Add table
Add a link
Reference in a new issue