Update library and finish data fetch from crowdin API

pull/759/head
Quentin Hibon 5 years ago
parent f100c40357
commit 962cf81a14

@ -8,58 +8,94 @@ buildscript {
maven(url = "https://jitpack.io") maven(url = "https://jitpack.io")
} }
dependencies { dependencies {
"classpath"("com.github.crowdin:crowdin-api-client-java:1.3.3") "classpath"("com.github.crowdin:crowdin-api-client-java:1.3.4")
} }
} }
task("fetchTranslators") { task("updateTranslators") {
doLast { doLast {
val reader = file("token_crowdin").bufferedReader()
val t = reader.readLine()
// Using test values fun fetchTranslators(): Map<String, Set<String>> {
var organization = "loop-habit-tracker" val baseUrl = "https://translate.loophabits.org"
organization = "loop-habit-tracker-api-test"
var projectId = 162051L
projectId = 440668L
val baseUrl = "https://translate.loophabits.org"
val client = Client(Credentials(t, organization, baseUrl)) // Replacing real values with my own test values
val res = client.usersApi.listProjectMembers(projectId, null, 5, null) var organization = "loop-habit-tracker"
println(res) organization = "loop-habit-tracker-api-test"
} var projectId = 162051L
} projectId = 440668L
task("updateTranslators") { val reader = file("token_crowdin").bufferedReader()
doLast { val t = reader.readLine()
val writer =
file("uhabits-android/src/main/res/layout/about_translators.xml").bufferedWriter()
val indent = " "
val xml = MarkupBuilder(groovy.util.IndentPrinter(writer, indent))
xml.doubleQuotes = true
xml.withGroovyBuilder {
"LinearLayout"(
"style" to "@style/Card",
"android:gravity" to "center",
"xmlns:android" to "http://schemas.android.com/apk/res/android"
) {
"TextView"(
"style" to "@style/CardHeader",
"android:text" to "@string/translators",
"android:textColor" to "?aboutScreenColor"
)
xml.mkp.yield('\n' + indent) val client = Client(Credentials(t, organization, baseUrl))
xml.mkp.comment("This list is automatically generated, do not edit manually.") val projectMembers = client.usersApi.listProjectMembers(projectId, null, 5, null).data
val reader = file("translators").bufferedReader() val languageToTranslators = HashMap<String, HashSet<String>>()
for (l in reader.lines()) { for (member in projectMembers) {
client.usersApi.getMemberInfo(projectId, member.data.id).data.permissions?.let {
for ((k, v) in it.entries) {
// TODO: other roles to consider
if (v.equals("translator")) {
languageToTranslators.getOrPut(k) { HashSet() }
.add(member.data.fullName)
}
}
}
}
return languageToTranslators
}
fun prettyPrint(fullName: String, lang: String): String {
// TODO: map lang to full language name
return fullName + " (" + lang + ")"
}
fun updateTranslatorLayouts(languageToTranslators: Map<String, Set<String>>) {
val writer =
file("uhabits-android/src/main/res/layout/about_translators.xml").bufferedWriter()
val indent = " "
val xml = MarkupBuilder(groovy.util.IndentPrinter(writer, indent))
xml.doubleQuotes = true
xml.withGroovyBuilder {
"LinearLayout"(
"style" to "@style/Card",
"android:gravity" to "center",
"xmlns:android" to "http://schemas.android.com/apk/res/android"
) {
"TextView"( "TextView"(
"style" to "@style/About.Item", "style" to "@style/CardHeader",
"android:text" to l "android:text" to "@string/translators",
"android:textColor" to "?aboutScreenColor"
) )
xml.mkp.yield('\n' + indent)
xml.mkp.comment("This list is automatically generated, do not edit manually.")
// Using a file
/*
val reader = file("translators").bufferedReader()
for (l in reader.lines()) {
"TextView"(
"style" to "@style/About.Item",
"android:text" to l
)
}
*/
// Using a map (generated via the crowdin API)
for ((lang, translators) in languageToTranslators.entries) {
for (name in translators) {
"TextView"(
"style" to "@style/About.Item",
"android:text" to prettyPrint(name, lang)
)
}
}
} }
} }
} }
val allL = fetchTranslators()
updateTranslatorLayouts(allL)
} }
} }

Loading…
Cancel
Save