Skip to content

Commit 25da1b8

Browse files
committed
translate main code completed
1 parent b16e33b commit 25da1b8

File tree

8 files changed

+231
-217
lines changed

8 files changed

+231
-217
lines changed

build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
2-
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
32

43
plugins {
54
kotlin("jvm") version "1.9.0"

src/main/kotlin/App.kt

Lines changed: 88 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,65 @@
1+
12
import androidx.compose.desktop.ui.tooling.preview.Preview
2-
import androidx.compose.foundation.layout.*
3+
import androidx.compose.foundation.layout.Column
4+
import androidx.compose.foundation.layout.Row
5+
import androidx.compose.foundation.layout.fillMaxHeight
6+
import androidx.compose.foundation.layout.fillMaxSize
7+
import androidx.compose.foundation.layout.padding
38
import androidx.compose.material.MaterialTheme
4-
import androidx.compose.runtime.*
9+
import androidx.compose.runtime.Composable
10+
import androidx.compose.runtime.getValue
11+
import androidx.compose.runtime.mutableStateOf
12+
import androidx.compose.runtime.remember
13+
import androidx.compose.runtime.setValue
514
import androidx.compose.ui.Modifier
6-
import androidx.compose.ui.unit.*
7-
import components.*
15+
import androidx.compose.ui.unit.dp
16+
import components.CustomButton
17+
import components.CustomTextField
18+
import components.SelectCountries
19+
import components.Toast
20+
import kotlinx.coroutines.CoroutineScope
21+
import kotlinx.coroutines.Dispatchers
22+
import kotlinx.coroutines.delay
23+
import kotlinx.coroutines.launch
24+
import translate.translateHttpURLConnection
25+
import utils.createOutputMainFolder
26+
import utils.createStringFolder
27+
import utils.defaultLanguageCode
28+
import utils.endResourcesWrite
829
import utils.languageList
30+
import utils.readAllStrings
31+
import utils.startResourcesWrite
32+
import utils.stringWrite
33+
import java.net.URLEncoder
934

1035
@Composable
1136
@Preview
1237
fun App() {
1338

1439
var isShowWindowState by remember { mutableStateOf(false) }
15-
var stringState by remember { mutableStateOf("") }
40+
var stringState by remember {
41+
mutableStateOf(
42+
"""
43+
<resources>
44+
<string name="video_directory" translatable="false">Video folder</string>
45+
<string name="extract_audio">Hello Meet</string>
46+
<string name="extract">How are You?</string>
47+
</resources>
48+
""".trimIndent()
49+
)
50+
}
51+
// <string name="create_thumbnail">Save thumbnail</string>
52+
// <string name="settings">Settings</string>
53+
// <string name="download_settings_desc" translatable="false">General, format, custom command</string>
54+
// <string name="download">Download</string>
55+
// <string name="url_empty">The link cannot be empty</string>
56+
// <string name="extract_audio_summary">Download and save audio, instead of video</string>
57+
// <string name="create_thumbnail_summary" translatable="false">Save video thumbnail as a file</string>
58+
// <string name="yt_dlp_up_to_date">Using the latest version of yt-dlp</string>
59+
1660
var countryListState by remember { mutableStateOf(languageList) }
1761
var isShowToast by remember { mutableStateOf(false) }
1862
var toastMessage by remember { mutableStateOf("") }
19-
2063
MaterialTheme {
2164
Row(
2265
Modifier.fillMaxSize().padding(10.dp)
@@ -36,7 +79,43 @@ fun App() {
3679
CustomButton("Convert",
3780
isEnable = stringState.isNotEmpty() && countryListState.any { it.isChecked },
3881
onClick = {
39-
println(countryListState.filter { it.isChecked })
82+
createOutputMainFolder()
83+
try {
84+
val allStrings = readAllStrings(stringState)
85+
86+
println(countryListState.filter { it.isChecked })
87+
countryListState.filter { it.isChecked }
88+
.forEachIndexed { index, language ->
89+
val stringFile =
90+
createStringFolder(language.code)
91+
stringFile.startResourcesWrite()
92+
for ((name, isTranslatable, textContent) in allStrings) {
93+
println("Name: $name, isTranslatable: $isTranslatable, Text Content: $textContent")
94+
if (isTranslatable) {
95+
96+
// stringFile.stringWrite(name, someConvertText.random())
97+
val convertedString = translateHttpURLConnection(
98+
URLEncoder.encode(textContent, "UTF-8"),
99+
URLEncoder.encode(defaultLanguageCode, "UTF-8"),
100+
URLEncoder.encode(language.code, "UTF-8"),
101+
) {
102+
isShowToast = true
103+
toastMessage = it
104+
CoroutineScope(Dispatchers.IO).launch {
105+
delay(3000)
106+
isShowToast = false
107+
}
108+
}
109+
stringFile.stringWrite(name, convertedString)
110+
} else {
111+
stringFile.stringWrite(name, textContent, false)
112+
}
113+
}
114+
stringFile.endResourcesWrite()
115+
}
116+
} catch (e: Exception) {
117+
e.printStackTrace()
118+
}
40119
})
41120
}
42121
}
@@ -53,12 +132,12 @@ fun App() {
53132
}
54133
}
55134

56-
fun showToast() {
135+
//fun showToast() {
57136
// isShowToast = true
58137
// toastMessage = "This is a toast message!"
59138
// // Delay to simulate a real-world scenario
60139
// CoroutineScope(Dispatchers.IO).launch {
61140
// delay(3000)
62141
// isShowToast = false
63142
// }
64-
}
143+
//}

src/main/kotlin/components/Components.kt

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,9 @@ fun SelectCountries(
126126
verticalArrangement = Arrangement.Top // Align to the top
127127

128128
) {
129-
Row(horizontalArrangement = Arrangement.SpaceAround,
129+
Row(horizontalArrangement = Arrangement.Center,
130130
verticalAlignment = Alignment.CenterVertically,
131-
modifier = Modifier.fillMaxWidth().clickable {
131+
modifier = Modifier.clickable {
132132
selectAllState = !selectAllState
133133
countryListState =
134134
countryListState.map { it.copy(isChecked = selectAllState) }
@@ -149,8 +149,7 @@ fun SelectCountries(
149149
text = "Select All",
150150
fontSize = 18.sp,
151151
fontWeight = FontWeight.SemiBold,
152-
modifier = Modifier.fillMaxWidth()
153-
.wrapContentHeight()
152+
modifier = Modifier.padding(end=8.dp)
154153
)
155154
}
156155

@@ -191,24 +190,4 @@ fun SelectCountries(
191190
},
192191
)
193192

194-
}
195-
196-
197-
//if (binding.sourceText.text.toString().trim().isNotEmpty()) {
198-
// val query = URLEncoder.encode(binding.sourceText.text.toString().trim(), charset)
199-
// val sourceLang = URLEncoder.encode(
200-
// languageList[binding.sourceLangSelector.selectedItemPosition].code,
201-
// charset
202-
// )
203-
// val targetLang = URLEncoder.encode(
204-
// languageList[binding.targetLangSelector.selectedItemPosition].code,
205-
// charset
206-
// )
207-
//
208-
// TranslationTasks(query, sourceLang, targetLang) {
209-
// binding.targetText.text = it
210-
//
211-
// }
212-
//} else {
213-
// longToastShow("Required")
214-
//}
193+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package models
2+
3+
data class StringModel(
4+
val name : String,
5+
val isTranslatable : Boolean = true,
6+
val textContent : String,
7+
)

0 commit comments

Comments
 (0)