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("$tag>")
+ }
+ 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
+
+