feat: Move strings to resources for localization (#2440)

Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Aunali321 <aunvakil.aa@gmail.com>

BREAKING CHANGE: Various APIs have been changed.
This commit is contained in:
LisoUseInAIKyrios
2024-01-27 02:34:01 +01:00
committed by GitHub
co-authored by oSumAtrIX semantic-release-bot Aunali321
parent 15a83a6d28
commit 55fb1ebd9d
201 changed files with 3411 additions and 3784 deletions
@@ -0,0 +1,37 @@
package app.revanced.util.resource
import app.revanced.util.childElementsSequence
import org.w3c.dom.Document
import org.w3c.dom.Node
/**
* An array resource.
*
* @param name The name of the array resource.
* @param items The items of the array resource.
*/
@Suppress("MemberVisibilityCanBePrivate")
class ArrayResource(
name: String,
val items: List<String>,
) : BaseResource(name, "string-array") {
override fun serialize(ownerDocument: Document, resourceCallback: (BaseResource) -> Unit) =
super.serialize(ownerDocument, resourceCallback).apply {
setAttribute("name", name)
items.forEach { item ->
appendChild(ownerDocument.createElement("item").also { itemNode ->
itemNode.textContent = item
})
}
}
companion object {
fun fromNode(node: Node): ArrayResource {
val key = node.attributes.getNamedItem("name").textContent
val items = node.childElementsSequence().map { it.textContent }.toList()
return ArrayResource(key, items)
}
}
}