Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filtering the unused strings from strings_ui file #529

Open
wants to merge 1 commit into
base: primary
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions app-ktor-server/build.gradle
Expand Up @@ -78,6 +78,8 @@ dependencies {

implementation "org.quartz-scheduler:quartz:$version_quartz_scheduler"
implementation "io.ktor:ktor-server-websockets:$version_ktor"
implementation "io.github.pdvrieze.xmlutil:core-jvm:$version_xmlutil"
implementation "io.github.pdvrieze.xmlutil:serialization-jvm:$version_xmlutil"


implementation project(":core")
Expand Down
@@ -0,0 +1,13 @@
package com.ustadmobile.lib.rest.resmodel

import kotlinx.serialization.SerialName
import nl.adaptivity.xmlutil.serialization.XmlValue

@kotlinx.serialization.Serializable
@SerialName("item")
class Item(
val quantity: String? = null,
@XmlValue(true)
val content: String?
) {
}
@@ -0,0 +1,11 @@
package com.ustadmobile.lib.rest.resmodel

import kotlinx.serialization.SerialName

@kotlinx.serialization.Serializable
@SerialName("plurals")
class Plurals(
val name: String,
val items: List<Item>,
) {
}
@@ -0,0 +1,14 @@
package com.ustadmobile.lib.rest.resmodel

import kotlinx.serialization.SerialName
import nl.adaptivity.xmlutil.serialization.XmlValue

@kotlinx.serialization.Serializable
@SerialName("string")
class ResString(
val name: String,
val formatted: String? = null,
@XmlValue(true)
val content: String?
) {
}
@@ -0,0 +1,15 @@
package com.ustadmobile.lib.rest.resmodel

import kotlinx.serialization.SerialName
import nl.adaptivity.xmlutil.serialization.XmlSerialName

@kotlinx.serialization.Serializable
@SerialName("resources")
class Resources(
@XmlSerialName(value = "ignore", namespace = "http://schemas.android.com/tools", prefix = "tools")
val ignore: String,
val strings: List<ResString>,
val stringArrays: List<StringArray>,
val plurals: List<Plurals>,
) {
}
@@ -0,0 +1,12 @@
package com.ustadmobile.lib.rest.resmodel

import kotlinx.serialization.SerialName

@kotlinx.serialization.Serializable
@SerialName("string-array")
class StringArray(
val name: String,
val items: List<Item>
) {

}
@@ -0,0 +1,58 @@
package com.ustadmobile.lib.rest.stringstidy

import com.ustadmobile.lib.rest.resmodel.Resources
import kotlinx.serialization.decodeFromString
import nl.adaptivity.xmlutil.serialization.XML
import org.xml.sax.InputSource
import java.io.File
import java.io.StringReader
import javax.xml.parsers.DocumentBuilderFactory

fun main(){

// ---- Scarping strings_ui.xml file to get all names of strings
val file = File("core/locale/main/values/strings_ui.xml")

val xml = XML {
autoPolymorphic = true
}

val resources = xml.decodeFromString<Resources>(file.readText())

val stringsToBeFound: MutableList<String> = mutableListOf()

resources.strings.forEach {
stringsToBeFound.add(it.name)
}

// ---- Reading files to find existing strings
fun findStrings(folder: String){
File("$folder/src").walk().forEach {file ->

if ((file.name.endsWith(".kt") || file.name.endsWith(".xml")) && !file.isDirectory){
val fileContent = file.readText()

val stringsFound = mutableListOf<String>()

stringsToBeFound.forEach { resString ->
if (fileContent.contains("MessageID.$resString") || fileContent.contains("R.string.$resString") || fileContent.contains("@string/$resString")){
stringsFound.add(resString)
}
}
stringsToBeFound.removeAll(stringsFound)
}
}

println("$folder scan end")
}

println("strings to be found length: ${stringsToBeFound.count()}")
findStrings("app-react")
findStrings("app-android")
findStrings("app-android-launcher")
findStrings("app-ktor-server")
findStrings("core")
findStrings("sharedse")
println("strings to be found length: ${stringsToBeFound.count()}")
println(stringsToBeFound)
}
4 changes: 2 additions & 2 deletions core/locale/main/values/strings_ui.xml
Expand Up @@ -183,7 +183,7 @@
<string name="content_creation_folder_update_message">Folder was successfully updated</string>
<string name="error_message_load_page">Failed to load the page</string>
<string name="error_message_update_document">Failed to update document</string>
<string name="supported_files">Supported files: <b>Video, Audio, EPUB, Xapi Zip,H5P</b></string>
<string name="supported_files">Supported files: Video, Audio, EPUB, Xapi Zip,H5P</string>
<string name="content_editor_save_error">Error while saving, try again</string>
<string name="content_entry_export_inprogress">Exporting</string>
<string name="content_entry_export_message">You are about to export %1$s to your device storage. Would you like to continue?</string>
Expand Down Expand Up @@ -240,7 +240,7 @@
<string name="xapi_options_did">Did</string>
<string name="xapi_options_what">What</string>
<string name="xapi_options_when">When</string>
<string name="xapi_options_where">Where</string>&gt;
<string name="xapi_options_where">Where</string>
<string name="time_range_all">Everything</string>
<string name="report_filter_edit_field">Field</string>
<string name="report_filter_edit_condition">Condition</string>
Expand Down