Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.File
- data class StringResourceId(private val value: String) {
- override fun toString(): String {
- return value
- }
- }
- data class StringResource(
- val id: StringResourceId,
- var jp: String = "",
- var en: String = "",
- var zhrcn: String = "",
- var translatable: Boolean = true
- )
- val resourcesMap = LinkedHashMap<StringResourceId, StringResource>()
- fun File.forEachBindResource(howToBind: (StringResource, String) -> Unit) {
- readLines().forEach {
- if (!it.contains("<string name=\"")) {
- return@forEach
- }
- val id = StringResourceId("(?<=name\\=\").*?(?=\\\")".toRegex().find(it)!!.value)
- val translatable = "(?<=translatable\\=\").*?(?=\\\")".toRegex().find(it)?.value?.toBoolean()
- val value = "(?<=\\>).*?(?=\\</string\\>)".toRegex().find(it)!!.value
- val res = resourcesMap[id] ?: StringResource(id)
- res.translatable = translatable ?: true
- howToBind(res, value)
- resourcesMap.put(id, res)
- }
- }
- // import Japanese String.xml
- File("src/main/res/values-ja/strings.xml").forEachBindResource { stringResource, s ->
- stringResource.jp = s
- }
- // import English String.xml
- File("src/main/res/values/strings.xml").forEachBindResource { stringResource, s ->
- stringResource.en = s
- }
- // import chinese hanzi String.xml
- File("src/main/res/values-zh-rCN/strings.xml").forEachBindResource { stringResource, s ->
- stringResource.zhrcn = s
- }
- // deserialize
- resourcesMap.values.forEach { res ->
- res.jp.let { jpRes ->
- if ("@string\\/.*".toRegex().matches(jpRes)) {
- val referenced = resourcesMap[StringResourceId(jpRes.split("/")[1])]
- res.jp = referenced!!.jp
- }
- }
- res.en.let { enRes ->
- if ("@string\\/.*".toRegex().matches(enRes)) {
- val referenced = resourcesMap[StringResourceId(enRes.split("/")[1])]
- res.en = referenced!!.en
- }
- }
- res.zhrcn.let { zhRes ->
- if ("@string\\/.*".toRegex().matches(zhRes)) {
- val referenced = resourcesMap[StringResourceId(zhRes.split("/")[1])]
- res.zhrcn = referenced!!.zhrcn
- }
- }
- }
- resourcesMap.values.forEach {
- println("${it.id}|${it.jp}|${it.en}|${it.zhrcn}")
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement