mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 17:18:52 -06:00
@@ -1,12 +1,100 @@
|
||||
import com.opencsv.CSVReaderHeaderAware
|
||||
import groovy.util.IndentPrinter
|
||||
import groovy.xml.MarkupBuilder
|
||||
import java.io.FileReader
|
||||
import java.io.StringWriter
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
"classpath"(group = "com.opencsv", name = "opencsv", version = "5.4")
|
||||
}
|
||||
}
|
||||
|
||||
task("updateTranslators") {
|
||||
doLast {
|
||||
fun updateTranslatorLayouts() {
|
||||
val translators = mutableMapOf<String, MutableList<String>>()
|
||||
|
||||
// Classic
|
||||
var csv = CSVReaderHeaderAware(FileReader("translators-classic.csv"))
|
||||
while (true) {
|
||||
val entry = csv.readMap() ?: break
|
||||
val lang = entry["Language"]!!
|
||||
val name = entry["Name"]!!
|
||||
if (!translators.containsKey(lang)) {
|
||||
translators[lang] = mutableListOf()
|
||||
println(lang)
|
||||
}
|
||||
translators[lang]!!.add(name)
|
||||
translators[lang]!!.sort()
|
||||
}
|
||||
|
||||
// Crowdin
|
||||
val languageMap = mapOf(
|
||||
"Arabic" to "العَرَبِية\u200E",
|
||||
"Basque" to "Euskara",
|
||||
"Bulgarian" to "Български",
|
||||
"Catalan" to "Català",
|
||||
"Chinese Simplified" to "中文",
|
||||
"Chinese Traditional" to "中文",
|
||||
"Croatian" to "Hrvatski",
|
||||
"Czech" to "Čeština",
|
||||
"Danish" to "Dansk",
|
||||
"Dutch" to "Nederlands",
|
||||
"Finnish" to "Suomen kieli",
|
||||
"French" to "Français",
|
||||
"German" to "Deutsch",
|
||||
"Greek" to "Ελληνικά",
|
||||
"Hebrew" to "עברית\u200E",
|
||||
"Hungarian" to "Magyar",
|
||||
"Indonesian" to "Bahasa Indonesia",
|
||||
"Italian" to "Italiano",
|
||||
"Japanese" to "日本語",
|
||||
"Korean" to "한국어",
|
||||
"Persian" to "العَرَبِية\u200E",
|
||||
"Polish" to "Polski",
|
||||
"Portuguese" to "Português",
|
||||
"Portuguese, Brazilian" to "Português",
|
||||
"Romanian" to "Română",
|
||||
"Russian" to "Русский",
|
||||
"Serbian (Cyrillic)" to "српски",
|
||||
"Spanish" to "Español",
|
||||
"Swedish" to "Svenska",
|
||||
"Tamil" to "தமிழ்\u200E",
|
||||
"Telegu" to "తెలుగు",
|
||||
"Turkish" to "Türkçe",
|
||||
"Ukrainian" to "Українська",
|
||||
"Vietnamese" to "Tiếng Việt"
|
||||
)
|
||||
csv = CSVReaderHeaderAware(FileReader("translators-crowdin.csv"))
|
||||
while (true) {
|
||||
val entry = csv.readMap() ?: break
|
||||
var lang = entry["Languages"]!!.split(";")[0]
|
||||
if (languageMap.containsKey(lang)) {
|
||||
lang = languageMap[lang]!!
|
||||
}
|
||||
val name = entry["Name"]!!.replace(Regex(" *\\(.*\\) *"), "")
|
||||
if (name.contains("REMOVED")) continue
|
||||
if (entry["Winning (Words)"]!!.toInt() < 10 &&
|
||||
entry["Translated (Words)"]!!.toInt() < 100
|
||||
) {
|
||||
continue
|
||||
}
|
||||
if (!translators.containsKey(lang)) {
|
||||
translators[lang] = mutableListOf()
|
||||
println(lang)
|
||||
}
|
||||
if (translators[lang]!!.contains(name)) continue
|
||||
translators[lang]!!.add(name)
|
||||
translators[lang]!!.sort()
|
||||
}
|
||||
|
||||
val writer = StringWriter()
|
||||
val indent = " "
|
||||
val xml = MarkupBuilder(groovy.util.IndentPrinter(writer, indent))
|
||||
val xml = MarkupBuilder(IndentPrinter(writer, indent))
|
||||
xml.doubleQuotes = true
|
||||
xml.withGroovyBuilder {
|
||||
"LinearLayout"(
|
||||
@@ -23,12 +111,18 @@ task("updateTranslators") {
|
||||
xml.mkp.yield('\n' + indent)
|
||||
xml.mkp.comment("This list is automatically generated, do not edit manually.")
|
||||
|
||||
val reader = file("translators").bufferedReader()
|
||||
for (l in reader.lines()) {
|
||||
for ((lang, lang_translators) in translators.toSortedMap()) {
|
||||
"TextView"(
|
||||
"style" to "@style/About.Item",
|
||||
"android:text" to l
|
||||
"style" to "@style/About.Item.Language",
|
||||
"android:text" to lang
|
||||
)
|
||||
|
||||
for (t in lang_translators) {
|
||||
"TextView"(
|
||||
"style" to "@style/About.Item",
|
||||
"android:text" to t
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -39,7 +133,6 @@ task("updateTranslators") {
|
||||
file(path).writeText(newContent)
|
||||
}
|
||||
}
|
||||
|
||||
updateTranslatorLayouts()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user