diff --git a/src/main/kotlin/io/github/goooler/exporter/Res2Xls.kt b/src/main/kotlin/io/github/goooler/exporter/Res2Xls.kt index aa49803..cfc5af3 100755 --- a/src/main/kotlin/io/github/goooler/exporter/Res2Xls.kt +++ b/src/main/kotlin/io/github/goooler/exporter/Res2Xls.kt @@ -13,6 +13,7 @@ import kotlin.io.path.name import kotlin.io.path.outputStream import org.apache.poi.hssf.usermodel.HSSFWorkbook import org.jdom2.Element +import org.jdom2.Text import org.jdom2.input.SAXBuilder fun res2xls(inputPath: String, outputPath: String) { @@ -135,9 +136,30 @@ fun res2xls(inputPath: String, outputPath: String) { internal fun Element.toStringResOrNull(): StringRes? { if (name != "string") return null val key = getAttributeValue("name") ?: return null + val containsXlff = content.any { it.toString().contains("xliff") } + val rawText = if (containsXlff) { + buildString { + content.forEach { + when { + it is Text -> append(it.value) + it is Element && it.toString().contains("xliff") -> { + val tag = "xliff:${it.name}" + append("<$tag ") + append(it.attributes.joinToString(" ") { attr -> "${attr.name}=\"${attr.value}\"" }) + append(">") + append((it.content.single() as Text).value) + append("") + } + else -> append(it.toString()) + } + } + } + } else { + text + } return StringRes( name = key, - value = text, + value = rawText, ) } diff --git a/src/test/kotlin/io/github/goooler/exporter/MappingTest.kt b/src/test/kotlin/io/github/goooler/exporter/MappingTest.kt index 1280b7c..fff54bc 100644 --- a/src/test/kotlin/io/github/goooler/exporter/MappingTest.kt +++ b/src/test/kotlin/io/github/goooler/exporter/MappingTest.kt @@ -20,6 +20,7 @@ class MappingTest { StringRes("first", "primo"), StringRes("forth", "quarto"), StringRes("seventh", "settimo"), + StringRes("countdown", "\n %1\$s fino alle vacanze %1\$s all.\n "), ) assertThat(stringResList).containsExactly(*actual) } diff --git a/src/test/resources/res/values-it/strings.xml b/src/test/resources/res/values-it/strings.xml index e9e2ba4..0ec3b04 100755 --- a/src/test/resources/res/values-it/strings.xml +++ b/src/test/resources/res/values-it/strings.xml @@ -1,5 +1,5 @@ - + @@ -7,6 +7,10 @@ quarto settimo + + %1$s fino alle vacanze %1$s all. + + diff --git a/src/test/resources/res/values/strings.xml b/src/test/resources/res/values/strings.xml index 0705421..767bc30 100755 --- a/src/test/resources/res/values/strings.xml +++ b/src/test/resources/res/values/strings.xml @@ -1,5 +1,5 @@ - + @@ -11,6 +11,10 @@ Sixth + + %1$s until holiday + +