refactor: 国际化适配

This commit is contained in:
Super12138 2025-01-12 11:45:18 +08:00
parent 6acabb0367
commit 01efdcf7cc
9 changed files with 68 additions and 32 deletions

View file

@ -80,11 +80,11 @@ fun MainPage(viewModel: MainViewModel, modifier: Modifier = Modifier) {
) {
Icon(
imageVector = Icons.Outlined.Add,
contentDescription = stringResource(R.string.action_add_todo)
contentDescription = stringResource(R.string.actions_add_task)
)
AnimatedVisibility(isExpanded) {
Text(
text = stringResource(R.string.action_add_todo),
text = stringResource(R.string.actions_add_task),
modifier = Modifier.padding(start = 8.dp)
)
}

View file

@ -65,9 +65,5 @@ fun ProgressFragment(
)
}
}
/*Slider(
value = progress,
onValueChange = { progress = it }
)*/
}
}

View file

@ -20,10 +20,12 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import cn.super12138.todo.R
@ -39,6 +41,8 @@ fun TodoBottomSheet(
onClose: () -> Unit,
modifier: Modifier = Modifier
) {
val context = LocalContext.current
ModalBottomSheet(
sheetState = sheetState,
onDismissRequest = onDismissRequest,
@ -49,40 +53,30 @@ fun TodoBottomSheet(
modifier = Modifier.padding(horizontal = 16.dp)
) {
Text(
text = stringResource(R.string.action_add_todo),
text = stringResource(R.string.actions_add_task),
style = MaterialTheme.typography.headlineMedium
)
Spacer(Modifier.size(25.dp))
var text by rememberSaveable { mutableStateOf("") }
var isError by rememberSaveable { mutableStateOf(false) }
TextField(
value = text,
onValueChange = { text = it },
label = { Text("待办内容") },
label = { Text(stringResource(R.string.placeholder_add_todo)) },
isError = isError,
supportingText = {
AnimatedVisibility(isError) {
Text("没有内容")
Text(stringResource(R.string.error_no_task_content))
}
},
modifier = Modifier.fillMaxWidth()
)
Spacer(Modifier.size(5.dp))
val subjects =
listOf(
"语文",
"数学",
"英语",
"生物",
"地理",
"物理",
"化学",
"道法",
"历史",
"其它"
)
Spacer(Modifier.size(5.dp))
val subjects = remember { context.resources.getStringArray(R.array.subjects).toList() }
var selectedItemIndex by rememberSaveable { mutableIntStateOf(0) }
FilterChipGroup(
items = subjects,
@ -94,17 +88,17 @@ fun TodoBottomSheet(
Spacer(Modifier.size(20.dp))
Row(horizontalArrangement = Arrangement.spacedBy(10.dp)) {
OutlinedButton(
onClick = onClose
) {
Text("取消")
OutlinedButton(onClick = onClose) {
Text(stringResource(R.string.actions_cancel))
}
FilledTonalButton(
onClick = {
// 文本为空
if (text.trim().isEmpty()) {
isError = true
return@FilledTonalButton
}
isError = false
onSave(
TodoEntity(
@ -114,7 +108,7 @@ fun TodoBottomSheet(
)
}
) {
Text("添加")
Text(stringResource(R.string.actions_save))
}
}
Spacer(Modifier.size(30.dp))

View file

@ -17,7 +17,9 @@ import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import cn.super12138.todo.R
/**
* 部分参考https://github.com/Rhythamtech/FilterChipGroup-Compose-Android/blob/main/FilterChipGroup.kt
@ -46,7 +48,7 @@ fun FilterChipGroup(
) {
Icon(
imageVector = Icons.Outlined.Check,
contentDescription = "", // TODO: 添加字符串
contentDescription = stringResource(R.string.tips_select_this),
modifier = Modifier.size(FilterChipDefaults.IconSize)
)
}

View file

@ -18,8 +18,10 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import cn.super12138.todo.R
@Composable
fun TodoCard(
@ -65,7 +67,7 @@ fun TodoCard(
Icon(
imageVector = Icons.Outlined.Check,
tint = MaterialTheme.colorScheme.primary,
contentDescription = "" // TODO: 无障碍适配
contentDescription = stringResource(R.string.tips_mark_completed)
)
}

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="subjects">
<item>语文</item>
<item>数学</item>
<item>英语</item>
<item>生物</item>
<item>地理</item>
<item>物理</item>
<item>化学</item>
<item>道法</item>
<item>历史</item>
<item>其它</item>
</string-array>
</resources>

View file

@ -2,6 +2,12 @@
<resources>
<string name="app_name">待办</string>
<string name="pages_settings">设置</string>
<string name="action_add_todo">添加待办</string>
<string name="actions_add_task">添加待办</string>
<string name="tips_no_task">目前没有任务要完成的,好好休息一下吧~</string>
<string name="placeholder_add_todo">待办内容</string>
<string name="actions_cancel">取消</string>
<string name="actions_save">保存</string>
<string name="error_no_task_content">没有输入待办内容</string>
<string name="tips_select_this">选择该项</string>
<string name="tips_mark_completed">标记为已完成</string>
</resources>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="subjects">
<item>Chinese</item>
<item>Math</item>
<item>English</item>
<item>Biology</item>
<item>Geography</item>
<item>Physics</item>
<item>Chemistry</item>
<item>Moral Education</item>
<item>History</item>
<item>Others</item>
</string-array>
</resources>

View file

@ -1,6 +1,12 @@
<resources>
<string name="app_name">To Do</string>
<string name="pages_settings">Settings</string>
<string name="action_add_todo">Add todo</string>
<string name="actions_add_task">Add Task</string>
<string name="tips_no_task">There are no tasks to complete at the moment, take a good rest!</string>
<string name="placeholder_add_todo">Task content</string>
<string name="actions_cancel">Cancel</string>
<string name="actions_save">Save</string>
<string name="error_no_task_content">No task content entered</string>
<string name="tips_select_this">Select this</string>
<string name="tips_mark_completed">Mark as completed</string>
</resources>