diff --git a/app/src/main/java/io/legado/app/ui/book/readRecord/ReadRecordScreen.kt b/app/src/main/java/io/legado/app/ui/book/readRecord/ReadRecordScreen.kt index 4feb95a4a..5585e29a6 100644 --- a/app/src/main/java/io/legado/app/ui/book/readRecord/ReadRecordScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/readRecord/ReadRecordScreen.kt @@ -75,7 +75,7 @@ import io.legado.app.ui.widget.components.button.AppIconButton import io.legado.app.ui.widget.components.card.GlassCard import io.legado.app.ui.widget.components.card.TextCard import io.legado.app.ui.widget.components.checkBox.CheckboxItem -import io.legado.app.ui.widget.components.heatmap.HEATMAP_CALENDAR_TITLE +import io.legado.app.ui.widget.components.heatmap.heatmapCalendarTitle import io.legado.app.ui.widget.components.heatmap.HeatmapCalendarEndAction import io.legado.app.ui.widget.components.heatmap.HeatmapCalendarStartAction import io.legado.app.ui.widget.components.heatmap.HeatmapConfig @@ -368,7 +368,7 @@ fun ReadRecordScreen( AppModalBottomSheet( show = showCalendar, onDismissRequest = { showCalendar = false }, - title = HEATMAP_CALENDAR_TITLE, + title = heatmapCalendarTitle(), startAction = { HeatmapCalendarStartAction( currentMode = heatmapMode, diff --git a/app/src/main/java/io/legado/app/ui/book/readRecord/component/ReadRecordHeatmap.kt b/app/src/main/java/io/legado/app/ui/book/readRecord/component/ReadRecordHeatmap.kt index b701099e6..ae60fee1c 100644 --- a/app/src/main/java/io/legado/app/ui/book/readRecord/component/ReadRecordHeatmap.kt +++ b/app/src/main/java/io/legado/app/ui/book/readRecord/component/ReadRecordHeatmap.kt @@ -35,7 +35,7 @@ fun HeatmapCalendarSection( verticalAlignment = Alignment.CenterVertically ) { AppText( - text = HEATMAP_CALENDAR_TITLE, + text = heatmapCalendarTitle(), style = LegadoTheme.typography.titleSmall, color = LegadoTheme.colorScheme.onSurfaceVariant ) diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt index 5ed1dd35d..f7e3f0246 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt @@ -477,7 +477,7 @@ fun BookGroupItemList( val firstBookName = previewBooks.firstOrNull()?.book?.name val descAnnotated = if (firstBookName != null) { buildAnnotatedString { - append("最近阅读:") + append(stringResource(R.string.recently_read)) withStyle(SpanStyle(fontWeight = FontWeight.Medium)) { append(firstBookName) } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfConfigSheet.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfConfigSheet.kt index 885350b81..50c5e380c 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfConfigSheet.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfConfigSheet.kt @@ -111,7 +111,7 @@ fun BookshelfConfigSheet( PillDivider() CompactDropdownSettingItem( - title = "文件夹布局模式", + title = stringResource(R.string.folder_layout_mode), description = stringResource(if (isLandscape) R.string.screen_landscape else R.string.screen_portrait), selectedValue = folderLayoutMode.toString(), displayEntries = arrayOf(stringResource(R.string.layout_mode_list), stringResource(R.string.layout_mode_grid)), @@ -157,7 +157,7 @@ fun BookshelfConfigSheet( ) CompactSliderSettingItem( - title = "列表封面宽度", + title = stringResource(R.string.list_cover_width), value = BookshelfConfig.bookshelfListCoverWidth.toFloat(), valueRange = 40f..120f, steps = 80, @@ -175,9 +175,9 @@ fun BookshelfConfigSheet( verticalArrangement = Arrangement.spacedBy(8.dp) ) { CompactDropdownSettingItem( - title = "文件夹列表样式", + title = stringResource(R.string.folder_list_style), selectedValue = BookshelfConfig.bookshelfGroupListStyle.toString(), - displayEntries = arrayOf("默认", "紧凑", "横排封面"), + displayEntries = arrayOf(stringResource(R.string.group), stringResource(R.string.compact_list), stringResource(R.string.horizontal_cover_count)), entryValues = arrayOf("0", "1", "2"), onValueChange = { BookshelfConfig.bookshelfGroupListStyle = it.toInt() @@ -185,7 +185,7 @@ fun BookshelfConfigSheet( ) AnimatedVisibility(visible = BookshelfConfig.bookshelfGroupListStyle == 2) { CompactSliderSettingItem( - title = "横排封面数量", + title = stringResource(R.string.horizontal_cover_count), value = BookshelfConfig.bookshelfGroupCoverCount.toFloat(), valueRange = 1f..10f, steps = 9, @@ -259,7 +259,7 @@ fun BookshelfConfigSheet( ) CompactSliderSettingItem( - title = "网格封面宽度", + title = stringResource(R.string.grid_cover_width), value = BookshelfConfig.bookshelfGridCoverWidth.toFloat(), valueRange = 40f..150f, steps = 110, @@ -282,7 +282,7 @@ fun BookshelfConfigSheet( ) CompactClickableSettingItem( - title = "日间卡片背景颜色", + title = stringResource(R.string.day_card_bg_color), color = LegadoTheme.colorScheme.surface, onClick = { showColorPicker = true }, trailingContent = { @@ -303,7 +303,7 @@ fun BookshelfConfigSheet( ) CompactClickableSettingItem( - title = "夜间卡片背景颜色", + title = stringResource(R.string.night_card_bg_color), color = LegadoTheme.colorScheme.surface, onClick = { showColorPickerDark = true }, trailingContent = { @@ -324,7 +324,7 @@ fun BookshelfConfigSheet( ) CompactSwitchSettingItem( - title = "精简详情", + title = stringResource(R.string.compact_details), checked = BookshelfConfig.bookshelfLayoutCompact, color = LegadoTheme.colorScheme.surface, onCheckedChange = { BookshelfConfig.bookshelfLayoutCompact = it } @@ -333,7 +333,7 @@ fun BookshelfConfigSheet( val listColCount = if (isLandscape) BookshelfConfig.bookshelfLayoutListLandscape else BookshelfConfig.bookshelfLayoutListPortrait CompactSliderSettingItem( - title = "列表封面宽度", + title = stringResource(R.string.list_cover_width), value = BookshelfConfig.bookshelfListCoverWidth.toFloat(), valueRange = 40f..120f, steps = 80, @@ -353,7 +353,7 @@ fun BookshelfConfigSheet( ) CompactSwitchSettingItem( - title = "显示更多信息", + title = stringResource(R.string.show_more_info), checked = BookshelfConfig.showBookIntro, color = LegadoTheme.colorScheme.surface, onCheckedChange = { BookshelfConfig.showBookIntro = it } @@ -364,7 +364,7 @@ fun BookshelfConfigSheet( verticalArrangement = Arrangement.spacedBy(8.dp) ) { CompactSwitchSettingItem( - title = "显示最新章节", + title = stringResource(R.string.show_latest_chapter), checked = BookshelfConfig.bookshelfShowLatestChapter, color = LegadoTheme.colorScheme.surface, onCheckedChange = { @@ -373,7 +373,7 @@ fun BookshelfConfigSheet( ) CompactSwitchSettingItem( - title = "显示简介", + title = stringResource(R.string.show_synopsis), checked = BookshelfConfig.bookshelfShowIntro, color = LegadoTheme.colorScheme.surface, onCheckedChange = { BookshelfConfig.bookshelfShowIntro = it } @@ -382,8 +382,8 @@ fun BookshelfConfigSheet( visible = BookshelfConfig.bookshelfShowIntro ) { CompactSliderSettingItem( - title = "简介行数", - description = if (BookshelfConfig.bookshelfIntroMaxLines == 0) "显示全部简介" else "显示 ${BookshelfConfig.bookshelfIntroMaxLines} 行简介", + title = stringResource(R.string.synopsis_lines), + description = if (BookshelfConfig.bookshelfIntroMaxLines == 0) stringResource(R.string.show_all_synopsis) else stringResource(R.string.show_lines_synopsis, BookshelfConfig.bookshelfIntroMaxLines), value = BookshelfConfig.bookshelfIntroMaxLines.toFloat(), valueRange = 0f..10f, steps = 10, @@ -393,7 +393,7 @@ fun BookshelfConfigSheet( ) } CompactSwitchSettingItem( - title = "显示标签", + title = stringResource(R.string.show_tags), checked = BookshelfConfig.bookshelfShowTag, color = LegadoTheme.colorScheme.surface, onCheckedChange = { BookshelfConfig.bookshelfShowTag = it } @@ -405,14 +405,14 @@ fun BookshelfConfigSheet( verticalArrangement = Arrangement.spacedBy(8.dp) ) { CompactSwitchSettingItem( - title = "自定义标签颜色", + title = stringResource(R.string.custom_tag_colors), checked = ThemeConfig.enableCustomTagColors, color = LegadoTheme.colorScheme.surface, onCheckedChange = { ThemeConfig.enableCustomTagColors = it } ) AnimatedVisibility(visible = ThemeConfig.enableCustomTagColors) { CompactClickableSettingItem( - title = "管理标签颜色", + title = stringResource(R.string.manage_tag_colors), color = LegadoTheme.colorScheme.surface, onClick = { showLabelColorManage = true } ) @@ -442,7 +442,7 @@ fun BookshelfConfigSheet( ) CompactSwitchSettingItem( - title = "搜索按钮优先打开筛选栏", + title = stringResource(R.string.search_filter_first), checked = BookshelfConfig.bookshelfSearchActionDirectToSearch, color = LegadoTheme.colorScheme.surface, onCheckedChange = { BookshelfConfig.bookshelfSearchActionDirectToSearch = it } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt index c842dd1f5..fa3735f26 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt @@ -494,7 +494,7 @@ fun BookshelfScreen( leadingIcon = { Icon(Icons.Default.Link, null) } ) RoundDropdownMenuItem( - text = "选择模式", + text = stringResource(R.string.selection_mode), onClick = { toggleEditMode() dismiss() diff --git a/app/src/main/java/io/legado/app/ui/main/homepage/HomepageScreen.kt b/app/src/main/java/io/legado/app/ui/main/homepage/HomepageScreen.kt index a2392c6d8..a279b8556 100644 --- a/app/src/main/java/io/legado/app/ui/main/homepage/HomepageScreen.kt +++ b/app/src/main/java/io/legado/app/ui/main/homepage/HomepageScreen.kt @@ -496,7 +496,7 @@ private fun ModuleList( ) AppText( - text = "重试", + text = stringResource(R.string.retry), color = LegadoTheme.colorScheme.error, style = LegadoTheme.typography.labelMedium ) diff --git a/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleScreen.kt b/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleScreen.kt index b3f524e08..591c49d2f 100644 --- a/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleScreen.kt +++ b/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleScreen.kt @@ -287,7 +287,7 @@ fun ReplaceRuleScreen( ) RuleListScaffold( - title = "替换规则", + title = stringResource(R.string.replace_purify), state = state, onBackClick = { onBackClick() }, onSearchToggle = { onIntent(ReplaceRuleIntent.SetSearchMode(!state.isSearch)) }, @@ -357,39 +357,39 @@ fun ReplaceRuleScreen( onClick = { showImportSheet = true; dismiss() } ) RoundDropdownMenuItem( - text = "分组管理", + text = stringResource(R.string.group_management), onClick = { showGroupManageSheet = true; dismiss() } ) RoundDropdownMenuItem( - text = "帮助", + text = stringResource(R.string.help), onClick = { /*TODO*/ dismiss() } ) PillDivider() RoundDropdownMenuItem( - text = "旧的在前", + text = stringResource(R.string.sort_old_first), onClick = { onIntent(ReplaceRuleIntent.SetSortMode("asc")); dismiss() } ) RoundDropdownMenuItem( - text = "新的在前", + text = stringResource(R.string.sort_new_first), onClick = { onIntent(ReplaceRuleIntent.SetSortMode("desc")); dismiss() } ) RoundDropdownMenuItem( - text = "名称升序", + text = stringResource(R.string.sort_name_asc), onClick = { onIntent(ReplaceRuleIntent.SetSortMode("name_asc")) dismiss() scope.launch { - snackbarHostState.showSnackbar("当前排序模式下禁用拖动") + snackbarHostState.showSnackbar(context.getString(R.string.drag_disabled_in_sort_mode)) } } ) RoundDropdownMenuItem( - text = "名称降序", + text = stringResource(R.string.sort_name_desc), onClick = { onIntent(ReplaceRuleIntent.SetSortMode("name_desc")) dismiss() scope.launch { - snackbarHostState.showSnackbar("当前排序模式下禁用拖动") + snackbarHostState.showSnackbar(context.getString(R.string.drag_disabled_in_sort_mode)) } } ) @@ -435,15 +435,15 @@ fun ReplaceRuleScreen( modifier = Modifier, dropdownContent = { dismiss -> RoundDropdownMenuItem( - text = "移至顶部", + text = stringResource(R.string.move_to_top), onClick = { onIntent(ReplaceRuleIntent.ToTop(ui.rule)); dismiss() } ) RoundDropdownMenuItem( - text = "移至底部", + text = stringResource(R.string.move_to_bottom), onClick = { onIntent(ReplaceRuleIntent.ToBottom(ui.rule)); dismiss() } ) RoundDropdownMenuItem( - text = "删除", + text = stringResource(R.string.delete), onClick = { showDeleteRuleDialog = ui.rule; dismiss() } ) } diff --git a/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditScreen.kt b/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditScreen.kt index ba5812fea..c33a93444 100644 --- a/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditScreen.kt +++ b/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditScreen.kt @@ -116,7 +116,7 @@ fun ReplaceEditScreen( .nestedScroll(scrollBehavior.nestedScrollConnection), topBar = { GlassMediumFlexibleTopAppBar( - title = if (state.id > 0) "编辑替换规则" else "新增替换规则", + title = stringResource(if (state.id > 0) R.string.edit_replace_rule else R.string.add_replace_rule), navigationIcon = { TopBarNavigationButton(onClick = onBack) }, @@ -129,27 +129,27 @@ fun ReplaceEditScreen( TopBarActionButton( onClick = { onIntent(ReplaceEditIntent.Save) }, imageVector = Icons.Default.Save, - contentDescription = "保存" + contentDescription = stringResource(R.string.action_save) ) } TopBarActionButton( onClick = { showMenu = true }, imageVector = Icons.Default.MoreVert, - contentDescription = "更多操作" + contentDescription = stringResource(R.string.more_actions) ) RoundDropdownMenu( expanded = showMenu, onDismissRequest = { showMenu = false } ) { RoundDropdownMenuItem( - text = "复制规则", + text = stringResource(R.string.copy_rule), onClick = { showMenu = false onIntent(ReplaceEditIntent.CopyRule) } ) RoundDropdownMenuItem( - text = "粘贴规则", + text = stringResource(R.string.paste_rule), onClick = { showMenu = false onIntent(ReplaceEditIntent.PasteRule) @@ -206,7 +206,7 @@ fun ReplaceEditScreen( AppTextField( value = state.name, onValueChange = { onIntent(ReplaceEditIntent.OnNameChange(it)) }, - label = "规则名称", + label = stringResource(R.string.rule_name), modifier = Modifier .fillMaxWidth() .onFocusChanged { @@ -225,8 +225,8 @@ fun ReplaceEditScreen( AppTextField( value = state.pattern, onValueChange = { onIntent(ReplaceEditIntent.OnPatternChange(it)) }, - label = "匹配规则", - placeholder = { AppText("输入正则表达式或关键字") }, + label = stringResource(R.string.match_pattern), + placeholder = { AppText(stringResource(R.string.input_regex_or_keyword)) }, modifier = Modifier .fillMaxWidth() .onFocusChanged { @@ -237,8 +237,8 @@ fun ReplaceEditScreen( AppTextField( value = state.replacement, onValueChange = { onIntent(ReplaceEditIntent.OnReplacementChange(it)) }, - label = "替换为", - placeholder = { AppText("输入替换内容或捕获组") }, + label = stringResource(R.string.replace_with), + placeholder = { AppText(stringResource(R.string.input_replacement_or_group)) }, modifier = Modifier .fillMaxWidth() .onFocusChanged { @@ -252,27 +252,27 @@ fun ReplaceEditScreen( horizontalArrangement = Arrangement.Start ) { ToggleChip( - label = "标题", + label = stringResource(R.string.title), selected = state.scopeTitle, - checkedContentDescription = "已选择", + checkedContentDescription = stringResource(R.string.title), onToggle = { onIntent(ReplaceEditIntent.OnScopeTitleChange(!state.scopeTitle)) } ) Spacer(Modifier.width(8.dp)) ToggleChip( - label = "内容", + label = stringResource(R.string.content), selected = state.scopeContent, - checkedContentDescription = "已选择", + checkedContentDescription = stringResource(R.string.content), onToggle = { onIntent(ReplaceEditIntent.OnScopeContentChange(!state.scopeContent)) } ) Spacer(Modifier.weight(1f)) ToggleChip( - label = "使用正则", + label = stringResource(R.string.use_regex), selected = state.isRegex, - checkedContentDescription = "正则已启用", + checkedContentDescription = stringResource(R.string.regex_enabled), onToggle = { onIntent(ReplaceEditIntent.OnRegexChange(!state.isRegex)) } ) @@ -281,8 +281,8 @@ fun ReplaceEditScreen( AppTextField( value = state.scope, onValueChange = { onIntent(ReplaceEditIntent.OnScopeChange(it)) }, - label = "特定范围", - placeholder = { AppText("指定规则适用的范围") }, + label = stringResource(R.string.specific_scope), + placeholder = { AppText(stringResource(R.string.scope_hint)) }, modifier = Modifier .fillMaxWidth() .onFocusChanged { @@ -293,8 +293,8 @@ fun ReplaceEditScreen( AppTextField( value = state.excludeScope, onValueChange = { onIntent(ReplaceEditIntent.OnExcludeScopeChange(it)) }, - label = "排除范围", - placeholder = { AppText("指定规则不适用的范围") }, + label = stringResource(R.string.exclude_scope), + placeholder = { AppText(stringResource(R.string.exclude_scope_hint)) }, modifier = Modifier .fillMaxWidth() .onFocusChanged { @@ -305,7 +305,7 @@ fun ReplaceEditScreen( AppTextField( value = state.timeout, onValueChange = { onIntent(ReplaceEditIntent.OnTimeoutChange(it)) }, - label = "超时 (ms)", + label = stringResource(R.string.timeout_ms), placeholder = { AppText("3000") }, modifier = Modifier.fillMaxWidth() ) @@ -344,7 +344,7 @@ fun GroupSelector( AppTextField( value = currentGroup, onValueChange = onGroupChange, - label = "分组", + label = stringResource(R.string.group), placeholder = { AppText("默认") }, trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) }, modifier = Modifier @@ -388,10 +388,10 @@ fun ManageGroupDialog( AppAlertDialog( show = show, onDismissRequest = onDismiss, - title = "分组管理", + title = stringResource(R.string.group_management), content = { if (groups.isEmpty()) { - AppText("暂无其他分组") + AppText(stringResource(R.string.no_other_groups)) } else { Column( modifier = Modifier.verticalScroll(rememberScrollState()), @@ -414,11 +414,11 @@ fun ManageGroupDialog( } } }, - confirmText = "删除选中", + confirmText = stringResource(R.string.delete_selected), onConfirm = { onDelete(selectedGroups.toList()) }, - dismissText = "关闭", + dismissText = stringResource(R.string.close), onDismiss = onDismiss ) } diff --git a/app/src/main/java/io/legado/app/ui/rss/favorites/RssFavoritesScreen.kt b/app/src/main/java/io/legado/app/ui/rss/favorites/RssFavoritesScreen.kt index c7640cc56..e2a6acca5 100644 --- a/app/src/main/java/io/legado/app/ui/rss/favorites/RssFavoritesScreen.kt +++ b/app/src/main/java/io/legado/app/ui/rss/favorites/RssFavoritesScreen.kt @@ -185,7 +185,7 @@ fun RssFavoritesScreen( contentAlignment = Alignment.Center ) { EmptyMessage( - message = "还没有收藏订阅!", + message = stringResource(R.string.no_favorites_rss), isLoading = state.isLoading ) } diff --git a/app/src/main/java/io/legado/app/ui/widget/components/JsonRawEditor.kt b/app/src/main/java/io/legado/app/ui/widget/components/JsonRawEditor.kt index ce6da2a77..199198474 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/JsonRawEditor.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/JsonRawEditor.kt @@ -11,9 +11,11 @@ import androidx.compose.material.icons.filled.Compress 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.unit.dp import com.google.gson.GsonBuilder import com.google.gson.JsonParser +import io.legado.app.R import io.legado.app.ui.theme.LegadoTheme import io.legado.app.ui.widget.components.button.series.SmallPlainButton import io.legado.app.ui.widget.components.text.AppText @@ -45,7 +47,7 @@ fun JsonRawEditor( } }, icon = Icons.Default.AutoFixHigh, - contentDescription = "格式化" + contentDescription = stringResource(R.string.format_json) ) SmallPlainButton( onClick = { @@ -56,7 +58,7 @@ fun JsonRawEditor( } }, icon = Icons.Default.Compress, - contentDescription = "压缩" + contentDescription = stringResource(R.string.minify_json) ) } } diff --git a/app/src/main/java/io/legado/app/ui/widget/components/LoadMoreFooter.kt b/app/src/main/java/io/legado/app/ui/widget/components/LoadMoreFooter.kt index b077f480a..08d020ea3 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/LoadMoreFooter.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/LoadMoreFooter.kt @@ -26,8 +26,10 @@ 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.text.style.TextOverflow import androidx.compose.ui.unit.dp +import io.legado.app.R import io.legado.app.ui.theme.LegadoTheme import io.legado.app.ui.theme.adaptiveHorizontalPadding import io.legado.app.ui.widget.components.alert.AppAlertDialog @@ -64,13 +66,13 @@ fun LoadMoreFooter( AppAlertDialog( data = showFullError, onDismissRequest = { showFullError = null }, - title = "错误详情", - confirmText = "复制", + title = stringResource(R.string.error_details), + confirmText = stringResource(R.string.copy_text), onConfirm = { error -> context.sendToClip(error) showFullError = null }, - dismissText = "关闭", + dismissText = stringResource(R.string.close), onDismiss = { showFullError = null }, content = { error -> SelectionContainer { @@ -160,7 +162,7 @@ fun LoadMoreFooter( ) AppText( - text = "重新加载", + text = stringResource(R.string.reload), color = LegadoTheme.colorScheme.error, style = LegadoTheme.typography.labelMedium ) @@ -179,7 +181,7 @@ fun LoadMoreFooter( AppContainedLoadingIndicator() AppText( - text = "正在加载…", + text = stringResource(R.string.loading), color = LegadoTheme.colorScheme.outline, style = LegadoTheme.typography.bodySmall ) @@ -206,7 +208,7 @@ fun LoadMoreFooter( tint = LegadoTheme.colorScheme.onSurface ) AppText( - text = "已经到底了~", + text = stringResource(R.string.no_more_data), color = LegadoTheme.colorScheme.onSurface, style = LegadoTheme.typography.bodySmall, modifier = Modifier.weight(1f), @@ -236,7 +238,7 @@ fun LoadMoreFooter( tint = LegadoTheme.colorScheme.primary ) AppText( - text = "尝试加载下一页", + text = stringResource(R.string.load_next_page), color = LegadoTheme.colorScheme.primary, style = LegadoTheme.typography.labelMedium ) @@ -263,7 +265,7 @@ fun LoadMoreFooter( tint = LegadoTheme.colorScheme.onSurface ) AppText( - text = "已经到底了~", + text = stringResource(R.string.no_more_data), color = LegadoTheme.colorScheme.onSurface, style = LegadoTheme.typography.bodySmall, modifier = Modifier.weight(1f), @@ -304,7 +306,7 @@ fun LoadMoreFooter( ) AppText( - text = "加载更多", + text = stringResource(R.string.load_more), color = LegadoTheme.colorScheme.onSurface, style = LegadoTheme.typography.bodySmall, modifier = Modifier.weight(1f), diff --git a/app/src/main/java/io/legado/app/ui/widget/components/dialog/TextListInputDialog.kt b/app/src/main/java/io/legado/app/ui/widget/components/dialog/TextListInputDialog.kt index c80131935..262ce85a0 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/dialog/TextListInputDialog.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/dialog/TextListInputDialog.kt @@ -19,6 +19,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource +import io.legado.app.R import androidx.compose.ui.unit.dp import io.legado.app.ui.theme.LegadoTheme import io.legado.app.ui.widget.components.AppTextField @@ -57,7 +58,7 @@ fun TextListInputDialog( if (suggestions.isNotEmpty()) { Spacer(modifier = Modifier.height(8.dp)) AppText( - text = "建议:", + text = stringResource(R.string.suggestion_label), style = LegadoTheme.typography.labelSmall, modifier = Modifier.padding(bottom = 4.dp) ) diff --git a/app/src/main/java/io/legado/app/ui/widget/components/explore/ExploreKindMultiTypeItem.kt b/app/src/main/java/io/legado/app/ui/widget/components/explore/ExploreKindMultiTypeItem.kt index bfd546bd6..2a9551538 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/explore/ExploreKindMultiTypeItem.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/explore/ExploreKindMultiTypeItem.kt @@ -25,8 +25,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalLayoutDirection +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp +import io.legado.app.R import io.legado.app.data.entities.rule.ExploreKind import io.legado.app.domain.usecase.ExploreKindUiUseCase import io.legado.app.ui.theme.LegadoTheme @@ -166,13 +168,13 @@ fun ExploreKindMultiTypeItem( AppAlertDialog( data = showFullError, onDismissRequest = { showFullError = null }, - title = "错误详情", - confirmText = "复制", + title = stringResource(R.string.error_details), + confirmText = stringResource(R.string.copy_text), onConfirm = { error -> context.sendToClip(error) showFullError = null }, - dismissText = "关闭", + dismissText = stringResource(R.string.close), onDismiss = { showFullError = null }, content = { error -> SelectionContainer { diff --git a/app/src/main/java/io/legado/app/ui/widget/components/explore/ExploreKindSelectSheet.kt b/app/src/main/java/io/legado/app/ui/widget/components/explore/ExploreKindSelectSheet.kt index 32ae3e0f7..a1d75bc83 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/explore/ExploreKindSelectSheet.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/explore/ExploreKindSelectSheet.kt @@ -21,7 +21,9 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp +import io.legado.app.R import io.legado.app.data.entities.rule.ExploreKind import io.legado.app.data.repository.ExploreRepository import io.legado.app.domain.usecase.ExploreKindUiUseCase @@ -92,7 +94,7 @@ fun ExploreKindSelectSheet( query = query, backgroundColor = LegadoTheme.colorScheme.onSheetContent, onQueryChange = { query = it }, - placeholder = "选择或搜索分类", + placeholder = stringResource(R.string.select_or_search_category), autoFocus = false ) diff --git a/app/src/main/java/io/legado/app/ui/widget/components/filePicker/FilePickerSheet.kt b/app/src/main/java/io/legado/app/ui/widget/components/filePicker/FilePickerSheet.kt index f70a6dc26..fdaaaa415 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/filePicker/FilePickerSheet.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/filePicker/FilePickerSheet.kt @@ -54,7 +54,7 @@ fun FilePickerSheet( onSelectSysFiles?.let { OptionCard( icon = Icons.AutoMirrored.Filled.InsertDriveFile, - text = "多选项目", + text = stringResource(R.string.multi_select_items), onClick = { it(typesOfExtensions(allowExtensions)) } ) } diff --git a/app/src/main/java/io/legado/app/ui/widget/components/heatmap/HeatmapCalendarComponents.kt b/app/src/main/java/io/legado/app/ui/widget/components/heatmap/HeatmapCalendarComponents.kt index 55d25ce8a..8d339e730 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/heatmap/HeatmapCalendarComponents.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/heatmap/HeatmapCalendarComponents.kt @@ -35,6 +35,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.compose.ui.res.stringResource +import io.legado.app.R import io.legado.app.ui.theme.LegadoTheme import io.legado.app.ui.widget.components.button.series.MediumOutlinedButton import io.legado.app.ui.widget.components.button.series.MediumToggleButton @@ -44,7 +46,8 @@ import java.time.LocalDate /** * 热力图日历弹窗标题 */ -const val HEATMAP_CALENDAR_TITLE = "时间线" +@Composable +fun heatmapCalendarTitle(): String = stringResource(R.string.timeline) /** * 热力图日历弹窗左侧操作 @@ -61,7 +64,7 @@ fun HeatmapCalendarStartAction( }, icon = Icons.Default.FormatListNumbered, iconChecked = Icons.Default.AccessTime, - text = "按时长" + text = stringResource(R.string.by_duration) ) } @@ -91,7 +94,15 @@ fun WeekdayLabelsColumn( modifier = modifier .padding(top = 20.dp, end = 8.dp) ) { - val labels = listOf("一", "二", "三", "四", "五", "六", "日") + val labels = listOf( + stringResource(R.string.weekday_mon), + stringResource(R.string.weekday_tue), + stringResource(R.string.weekday_wed), + stringResource(R.string.weekday_thu), + stringResource(R.string.weekday_fri), + stringResource(R.string.weekday_sat), + stringResource(R.string.weekday_sun) + ) labels.forEachIndexed { index, label -> if (index % 2 == 0) { @@ -157,7 +168,7 @@ fun NoEarlierDataIndicator( horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { - "没有更早数据".forEach { char -> + stringResource(R.string.no_earlier_data).forEach { char -> AppText( text = char.toString(), fontSize = 9.sp, @@ -241,7 +252,7 @@ fun HeatmapWeekColumn( // 月份标签 if (firstDayOfMonth != null) { AppText( - text = "${firstDayOfMonth.monthValue}月", + text = stringResource(R.string.month_format, firstDayOfMonth.monthValue), fontSize = 10.sp, color = LegadoTheme.colorScheme.onSurfaceVariant, modifier = Modifier @@ -266,10 +277,10 @@ fun HeatmapLegend( horizontalArrangement = Arrangement.End, verticalAlignment = Alignment.CenterVertically ) { - val legendUnit = if (mode == HeatmapMode.COUNT) "次" else "长" + val legendUnit = if (mode == HeatmapMode.COUNT) stringResource(R.string.count_unit) else stringResource(R.string.duration_unit) AppText( - "少($legendUnit)", + stringResource(R.string.less_count) + legendUnit + ")", style = LegadoTheme.typography.bodySmall, color = Color.Gray ) @@ -287,7 +298,7 @@ fun HeatmapLegend( } AppText( - "多($legendUnit)", + stringResource(R.string.more_count) + legendUnit + ")", style = LegadoTheme.typography.bodySmall, color = Color.Gray ) diff --git a/app/src/main/java/io/legado/app/ui/widget/components/importComponents/ImportComponents.kt b/app/src/main/java/io/legado/app/ui/widget/components/importComponents/ImportComponents.kt index d0d9e8ba2..9a3a68f9c 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/importComponents/ImportComponents.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/importComponents/ImportComponents.kt @@ -82,7 +82,7 @@ fun SourceInputDialog( if (historyValues.isNotEmpty()) { Spacer(modifier = Modifier.height(8.dp)) - AppText("历史记录:", style = LegadoTheme.typography.labelSmall) + AppText(stringResource(R.string.history_label), style = LegadoTheme.typography.labelSmall) LazyRow(horizontalArrangement = Arrangement.spacedBy(8.dp)) { items(historyValues) { history -> AssistChip( @@ -186,7 +186,7 @@ fun BatchImportDialog( SmallPlainButton( onClick = { editingIndex = null }, icon = Icons.AutoMirrored.Filled.ArrowBack, - contentDescription = "返回" + contentDescription = stringResource(R.string.back) ) } } else { @@ -199,7 +199,7 @@ fun BatchImportDialog( SmallPlainButton( onClick = { onToggleAll(!allSelected) }, icon = Icons.Default.SelectAll, - contentDescription = if (allSelected) "全不选" else "全选" + contentDescription = stringResource(if (allSelected) R.string.deselect_all else R.string.select_all) ) } } @@ -254,8 +254,8 @@ fun BatchImportDialog( val selectedData = currentState.items.filter { it.isSelected }.map { it.data } onConfirm(selectedData) }, - dismissText = "取消", - confirmText = "导入", + dismissText = stringResource(R.string.dialog_cancel), + confirmText = stringResource(R.string.import_action), confirmEnabled = selectedCount > 0 ) } @@ -271,7 +271,7 @@ private fun BatchImportJsonEditContent( val jsonObject = remember(version) { data.toImportJsonObject() } if (jsonObject == null) { - AppText("不支持编辑") + AppText(stringResource(R.string.edit_not_supported)) return } @@ -356,10 +356,10 @@ fun ImportItemRow( trailingAction = { AppText( text = when (status) { - ImportStatus.New -> "新增" - ImportStatus.Update -> "更新" - ImportStatus.Existing -> "已有" - ImportStatus.Error -> "错误" + ImportStatus.New -> stringResource(R.string.import_status_new) + ImportStatus.Update -> stringResource(R.string.import_status_update) + ImportStatus.Existing -> stringResource(R.string.import_status_existing) + ImportStatus.Error -> stringResource(R.string.import_status_error) }, style = LegadoTheme.typography.labelMedium, color = when (status) { @@ -374,7 +374,7 @@ fun ImportItemRow( SmallPlainButton( onClick = onInfoClick, icon = Icons.Default.Info, - contentDescription = "详情" + contentDescription = stringResource(R.string.details) ) } ) diff --git a/app/src/main/java/io/legado/app/ui/widget/components/list/ListScaffold.kt b/app/src/main/java/io/legado/app/ui/widget/components/list/ListScaffold.kt index 106169b86..569b54ce7 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/list/ListScaffold.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/list/ListScaffold.kt @@ -27,8 +27,10 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex +import io.legado.app.R import io.legado.app.ui.widget.components.AppFloatingActionButton import io.legado.app.ui.widget.components.AppScaffold import io.legado.app.ui.widget.components.SelectionActions @@ -66,7 +68,7 @@ fun ListScaffold( visible = state.selectedIds.isEmpty(), alignment = Alignment.BottomEnd, ), - tooltipText = "添加", + tooltipText = stringResource(R.string.add), icon = Icons.Default.Add ) } diff --git a/app/src/main/java/io/legado/app/ui/widget/components/log/AppLogSheet.kt b/app/src/main/java/io/legado/app/ui/widget/components/log/AppLogSheet.kt index 53634fcef..df4bff915 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/log/AppLogSheet.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/log/AppLogSheet.kt @@ -54,7 +54,7 @@ fun AppLogSheet( } ) { if (logs.isEmpty()) { - EmptyMessage(message = "暂无日志") + EmptyMessage(message = stringResource(R.string.no_logs)) } else { LazyColumn( modifier = Modifier.fillMaxWidth(), diff --git a/app/src/main/java/io/legado/app/ui/widget/components/log/CrashLogSheet.kt b/app/src/main/java/io/legado/app/ui/widget/components/log/CrashLogSheet.kt index e8118a146..18007ffd3 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/log/CrashLogSheet.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/log/CrashLogSheet.kt @@ -42,7 +42,7 @@ fun CrashLogSheet( title = stringResource(R.string.crash_log), ) { if (logFiles.isEmpty()) { - EmptyMessage(message = "暂无崩溃日志") + EmptyMessage(message = stringResource(R.string.no_crash_logs)) } else { LazyColumn( modifier = Modifier.fillMaxWidth(), diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 8c5835864..0f1137518 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1,4 +1,4 @@ - + 阅读 阅读·A @@ -2074,4 +2074,122 @@ 标签分组规则 分组同步完成 导入分组规则 - + + + 编辑替换规则 + 更多操作 + 匹配规则 + 输入正则表达式或关键字 + 替换为 + 输入替换内容或捕获组 + 正则已启用 + 特定范围 + 指定规则适用的范围 + 排除范围 + 指定规则不适用的范围 + 超时 (ms) + 分组管理 + 暂无其他分组 + 删除选中 + 旧的在前 + 新的在前 + 当前排序模式下禁用拖动 + 选择模式 + 文件夹布局模式 + 列表封面宽度 + 文件夹列表样式 + 横排封面数量 + 网格封面宽度 + 日间卡片背景颜色 + 夜间卡片背景颜色 + 精简详情 + 显示更多信息 + 显示最新章节 + 显示简介 + 简介行数 + 显示全部简介 + 显示 %1$d 行简介 + 显示标签 + 自定义标签颜色 + 管理标签颜色 + 搜索按钮优先打开筛选栏 + 网络导入 + 请输入 URL 或 JSON + 历史记录: + 全不选 + 导入 + 不支持编辑 + 新增 + 更新 + 已有 + 错误 + 详情 + 错误详情 + 重新加载 + 已经到底了~ + 尝试加载下一页 + 加载更多 + 时间线 + 按时长 + 没有更早数据 + %1$d月 + + + 少( + 多( + 格式化 + 压缩 + 暂无日志 + 暂无崩溃日志 + 选择或搜索分类 + 多选项目 + 最近阅读: + 还没有收藏订阅! + 建议: + + + + + + + + 已保存到相册 + 保存图片失败 + 添加书籍失败 + 数据不能为空 + 数据必须为Json格式 + 转换源失败 + 调试结束 + 保存失败 + 未找到书籍 + 书源不存在 + 同步完成 + 清理缓存出错 + 上传成功 + 保存出错 + 自动换源失败 + 分组名称不能为空 + 封面已重置 + 规则已复制到剪贴板 + 登录出错 + 朗读定时 %1$d 分钟 + 未获取到音频焦点 + 已有书源在校验,等完成后再试 + 校验超时 + js失效 + 网站失效 + 搜索链接规则为空 + 搜索失效 + 发现规则为空 + 发现失效 + %1$s正文失效 + %1$s目录失效 + TTS服务器连续5次错误,已暂停阅读。 + 导出完成 + 下载出错,没有存储权限 + 已在下载列表 + 自定义按钮 + EventListener + callBackJs + + \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 3e4c8ef54..240bded2e 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1380,4 +1380,808 @@ · 當前生效 · 已被屏蔽 · 已加入 + ABI: arm64-v8a + 請先設定備份目錄 + 已安裝版本 + 免責聲明 + 更新下載資訊不完整 + 正在建立堆轉儲… + 找不到堆轉儲檔案 + 堆轉儲記錄已關閉。請先在其它設定中開啟。 + 已安裝版本 + 開源許可 + 日誌記錄已關閉。請先在其它設定中開啟。 + 最新版本 + 暫無更新日誌 + 私隱政策 + 已儲存至備份資料夾 + 正在下載 %1$s + 下載更新 + 發佈渠道 + 適配特殊樣式 + 添加為新書 + 添加書籍失敗 + 添加正則規則 + 添加標籤 + 手動添加模型 + 進階設定 + API Key + 儲存在本機。留空則保留已儲存的金鑰。 + 助手 + Base URL + 相關書籍 + 章節摘要 + AI 聊天 + 開始對話 + 輸入任何問題… + 並發請求數 + AI 設定 + 上下文窗口 + 目前 + 目前模型 + 目前供應商 + 目前:%1$s + 自訂供應商 + 獲取並儲存模型 + 獲取模型 + 最大輸入字元數 + 最大輸出 Token 數 + 操作 + 模型 + 模型 + 模型設定 + 模型 ID + 模型名稱 + 未設定模型 + Models URL + 選填。留空則使用協議預設的模型端點。 + 新對話 + 新模型 + 新設定檔 + 新供應商 + 新技能 + 未匯入模型 + 請先建立供應商 + 未設定 + 供應商:%1$d,模型:%2$d,預設:%3$d + 設定檔 + 設定檔 + 協議 + 供應商 + 供應商 + 供應商設定 + 供應商模型 + 供應商名稱 + 供應商預設 + 已思考 + 思考中 + 推理 + 最近對話 + 重新生成 + AI 正在回覆… + 重試次數 + 儲存並同步模型 + 儲存預設模型 + 儲存模型 + 儲存預設設定檔 + 儲存供應商 + 滾動到底部 + 選擇模型 + 發送 + 技能 + 任務 + Temperature + 測試連線 + 自動 + 收起 + 深度 + 思考模式 + 關閉 + 思考 %.1f 秒 + 顯示多 %d 個步驟 + 強度 + 確認工具操作 + 完成 + 輸入: + 輸出: + 等待中 + 執行中 + 工具 + 目標語言 + 翻譯任務 + + 所有章節已緩存 + 已在下載列表中 + 升序 + 音頻緩存保留時間(分鐘) + 目前:%1$d。輸入 0 則退出時立即清除。 + 未能獲取音頻焦點 + %1$s • %2$d 未讀 + 自動換源失敗 + 自動備份失敗 +%s + 背景權限 + 備份失敗 + 頁面仍可滑動 + 中央裁剪 + 拉伸 + 平鋪 + 背景適配 + 書籍已加入書架 + 找不到書籍 + 書籍別名 + 有聲 + 圖漫 + 書籍類型 + 文字 + 書籤管理 + 已添加 %1$d 個書籤 + 書架更新限制 + 橫向 + 左側 + 關閉 + 亮度條位置 + 右側 + 縱向 + 跟隨系統 + 按時長 + 控制離線書籍緩存的並發章節下載數。數值過大可能增加記憶體不足風險 + 緩存下載執行緒數 + 緩存失敗:%1$s + %1$.1f MB + 取消選擇 + 無法直接打開此 URL + 圖標已更新 + 選擇操作 + 校驗超時 + 正在檢查更新… + 清除全部 + 清除緩存出錯 + 清除緩存 + 點擊圖片操作 + 點擊刪除或更換 + 點擊選擇 + 剪貼簿為空 + 剪貼簿為空或格式無效 + 收起全部卷 + 收起 + 色溫 + 目前色溫:%1$d + 顏色值 + 緊湊詳情 + 緊湊網格 + 緊湊列表 + 填寫所有必填資訊 + 主題樣式 + Compose 相關 + 配置底部按鈕 + 跳轉到此章節? + 容器背景色 + 容器不透明度 + %d + %1$s 正文已禁用 + 來源:手動輸入 + 來源:系統對比度 + 從剪貼簿導入 + + 封面緩存 + 封面網格 + 重置封面 + 搜索 URL 和封面規則不能為空 + 已選擇 %1$d 張圖片 + 顯示字體陰影 + 顯示字體描邊 + 封面 URL + 目前有效值:%1$s + 自訂 + 自訂按鈕 + 自訂模式 + 自訂規則 + 自訂正則規則 + 自訂標籤顏色 + 自訂主題 + 自訂顏色 + 深色模式 + 資料不能為空 + 資料必須為 JSON 格式 + 白天卡片背景色 + 日/夜模式切換 + 調試完成 + 使用預設字體顏色 + 延遲書籍載入 + 刪除所選 + 刪除翻譯緩存 + 降序 + 取消全選 + 詳情 + 關閉橫向滾動動畫 + 關閉翻頁動畫 + 線段長度 + 間隔長度 + 下載與緩存 + 下載連結 + 下載失敗:沒有存儲權限 + 下載所選(%1$d) + 下載 + 此排序模式下禁用拖拽 + 時長 + 動態顏色 + 不支援編輯 + 編輯備註 + 編輯替換規則 + 編輯規則 + 編輯標籤 + 目錄路徑不能為空 + 灰階模式 + 啟用規則 + 選擇文字時震動 + 滑動進度條時震動 + 結束章節 + 輸入目錄路徑 + 第 3 期 + 錯誤詳情 + 排除範圍 + 指定要排除的範圍 + 展開 + 展開全部卷 + 發現已禁用 + 發現規則為空 + 匯出書籤為 JSON + 匯出書籤為 Markdown + 匯出完成 + 可用變數:{name} 書名、{author} 作者、{group} 分組、{source} 來源、{remark} 備註。 + +範例:{name} - {author} +結果:三體 - 劉慈欣 + +可在變數前後加入固定文字。 + {name} - {author} + 護眼模式 + 啟用護眼模式 + 透過暖色調減少藍光 + 結束時間 + 定時啟用 + 僅在設定的時間範圍內啟用 + 開始時間 + 隱藏書架中同源書籍 + 隱藏書架中不同源書籍 + 顯示全部 + 僅顯示不在書架中的書籍 + 允許應用使用 Google Firebase 進行崩潰和效能報告 + 匿名統計 + 請先閱讀服務條款和用戶協議 + 鎖定書籍類型 + 書籍更新時不覆蓋書籍類型 + 懸浮底部導航欄 + 液態玻璃效果 + 為懸浮導航欄啟用液態玻璃高亮效果。需要模糊和 Android 13+ + 使用分離的膠囊樣式作為底部導航欄 + 資料夾佈局模式 + 資料夾列表樣式 + 跟隨背景 + 格式化 + 找到雲端進度,是否恢復? + 閲讀顯示 • 漫畫 + 全局設定 + 網格 + 網格封面寬度 + 新建分組 + 分組管理 + 分組名稱不能為空 + 隱藏全部 + 隱藏密碼 + 背景圖片 + 圖片縮放 + 高亮規則 + 添加規則 + 標籤規則 + 顯示模式 + 編輯規則 + 未設定高亮標籤規則。添加規則以在書籍詳情頁面高亮特定標籤。 + 橫向 + 縱向 + 正則表達式 + 正則表達式(例如 (\\d+)字) + 測試 + 測試匹配 + 錯誤:%1$s + 輸入測試文字 + 匹配:%1$s + 匹配:%1$s | %2$s + 未匹配 + 標題 + 標題(選填) + 歷史: + 已選 %1$d + 從分類中選擇 + 選擇多個分類 + 選擇一個分類 + 橫向封面數量 + HTTP 緩存 + 圖片緩存 + 全屏 + 單頁 + 文字貼合 + 匯入 + 從網路匯入 + 匯入標籤規則 + 錯誤 + 已存在 + 新增 + 更新 + 匯入標籤分組規則 + 輸入 + 輸入正則或關鍵字 + 輸入正則表達式 + 輸入替換內容或捕獲組 + 輸入 URL 或 JSON + 無效的目錄路徑 + 格式無效 + 反選 + 啟用元素模糊 + 啟用漸進式模糊 + 事件監聽器 + 已讀完 + 已讀完(完結) + 已讀完(連載) + 閲讀中 + 未讀 + JS 已禁用 + 跳轉到卷 + 顯示 + 可在主題 → 顯示選項中調整 E-Ink 顯示設定 + 在平板介面中顯示 E-Ink 顯示選項 + E-Ink 顯示 + 開啟以顯示實驗性功能。這些功能可能不穩定。 + 啟用實驗室 + 可在主題 → 外觀中調整護眼設定 + 為漫畫和小說閱讀器應用暖色調以減少眼睛疲勞 + 護眼模式 + 實驗室 + 較少( + 淺色模式 + 列表 + 列表封面寬度 + API Key + Base URL + 並發區塊數 + 每個區塊最大字元數 + 模型 + 提示詞 + 供應商 + 重試次數 + 目標語言 + Temperature + 允許範圍:0-2。接近 0 更嚴謹;接近 2 更有創意。 + 啟用章節翻譯 + 載入更多 + 載入下一頁 + 本地書籍選項 + 本地書籍章節規則 + 定位目前位置 + 跳轉到目前閱讀位置 + 登錄失敗 + 長按自訂 + 長按分組 + 管理標籤顏色 + 漫畫 + 漫畫緩存 + 關閉載入淡入動畫 + E-Ink 螢幕 + E-Ink 設定 + 閾值 + 長按儲存圖片 + 漫畫閲讀設定 + 請輸入 -1 到 1 之間的有效數字 + 手動值 [-1, 1] + 手動值:%1$s + 手動輸入 + 匹配模式 + 顏色規格 + 選單透明度 + 目前 %d%% + 壓縮 + %1$d + 更多操作 + 較多( + 更多設定 + 移至底部 + 移至頂部 + 多選項目 + 導航欄標籤模式 + 網路 + 網路書籍標記 + 新建規則 + 夜間卡片背景色 + 找不到支援文字操作的第三方應用 + 無書籤 + 沒有可匯出的書籤 + 無崩潰日誌 + 無更早的資料 + 暫無收藏訂閱! + 無日誌 + 沒有更多資料 + 沒有其他分組 + 無翻譯緩存 + 通知權限 + 小說 + 每行列數 + 已切換為瀏覽器打開 + 已切換為 WebView 打開 + OpenAI 設定 + 優化從書架進入閲讀介面時的動畫效果。 + + 淡入淡出 + 翻頁控制 + 調色板樣式 + 段落樣式 + 不需要權限 + 相片 + 播放模式 + 右下角 + 左下角 + 右上角 + 左上角 + 預測性返回手勢 + 啟用系統預測性返回手勢 + 偏好對比度 + 預覽效果 + 私隱 + 進度 + 目前進度超過雲端,是否覆蓋? + 下拉刷新 + 純黑模式 + 快速加入書架 + 快速跳轉 + 重新同步遠端書籍 + 閲讀 + TTS 伺服器連續 5 次錯誤,朗讀已暫停。 + 暫停/恢復朗讀 + 朗讀預載入數量 + %d + 朗讀定時:%1$d 分鐘 + 換源預設應用於整本書 + 否則僅應用於單章。 + 已讀 %d 章 + 共 %d 章 + 顏色樣式 + 調整正文上下左右邊距 + 正文間距 + 分隔線 + 效果 + 全局與主題 + 配置頁眉/頁腳模組、可見性和顏色 + 調整頁眉和頁腳上下左右邊距 + 斜體 + 佈局與間距 + 系統與選單 + 透過正則表達式變換字體和顏色 + 配置陰影偏移、半徑和顏色 + 文字與效果 + 標題設定 + 配置底線顏色、高度、虛線和位置 + 閱讀完畢 + 頂部和底部閱讀列的文字和圖標顏色 + 啟用模糊 + 模糊樣式 + 液態玻璃背景 + 液態玻璃底部按鈕 + 為懸浮底部導航欄使用液態玻璃。需要 Android 13+ + 頂部和底部閱讀列的背景 + 選單不透明度 + 模糊色調 + 選單模糊模式 + + 模糊半徑 + 較高半徑可能降低效能 + 漸進式模糊 + 實心模糊 + 邊框 + 顏色 + 寬度 + 底部欄佈局 + 為底部欄按鈕和滑桿 thumb 應用液態玻璃。需要 Android 13+ + 底部欄圓角半徑 + 調色板來源 + 生成的閱讀選單調色板的基礎表面顏色 + 自訂圖標 + %1$d 個自訂圖標 + 使用預設圖標 + 懸浮底部欄 + 圖標容器樣式 + 圖標行數 + 圖標樣式 + 描邊 + Plain + Tonal + 每行圖標數 + 即時預覽 + 顯示圖標標籤 + 為標題欄操作按鈕應用液態玻璃。需要 Android 13+ + 標題膠囊佈局 + 滑桿顯示樣式 + 長按設為全局預設模式 + 閲讀行為 + 最近閲讀: + 允許所有重定向 + 總是詢問 + 域名變更時詢問 + 域內詢問,跨域阻止 + 阻止所有重定向 + 阻止跨域重定向 + 網路重定向策略 + 減少進入閲讀介面時的卡頓,但會增加書籍載入時間。 + 刷新中 + 已啟用正則 + 相關書籍(relatedBooks) + 釋放刷新 + 重新載入 + 替換此書 + 計數替換與淨化規則 + 配置替換規則 + 替換為 + 稍後重啟 + 更改此選項需要重啟 + 重啟以套用 + 還原失敗 + 還原失敗:%1$s + 從本機還原 + 從網路還原 + 恢復進度 + 重新翻譯章節 + 這將刪除現有翻譯並重新翻譯。是否繼續? + 返回原文 + 反轉音量鍵翻頁方向 + 回呼 JS(callBackJs) + 規則已複製到剪貼簿 + 規則資訊 + 規則名稱 + 正則表達式 + 副內容(subContent) + 已存在同名書籍 + 範例文字 + 儲存失敗 + 儲存失敗 + 儲存失敗:%1$s + 儲存圖片失敗 + 已儲存 + 儲存到本機 + 儲存到源檔案(重置後將不可用) + 已儲存到相簿 + 指定此規則的作用範圍 + 反向橫屏 + 顯示與亮度 + %1$d + 搜尋章節… + 搜索已禁用 + 暫無內容 + %1$s 分組搜索無結果。是否關閉精準搜索? + %1$s 分組搜索無結果。是否切換到全部分組? + 搜索按鈕優先打開篩選 + 上拉或點擊按鈕載入更多 + 列表佈局 + 按源分組 + 結果 %1$d + 搜索規則為空 + 選擇書源分組 + · 進度 %1$d/%2$d + 搜索類型 + 種子色 + 從種子色生成主題 + 如要使用種子色,請先清除已選擇的種子圖片 + 從圖片生成主題顏色 + 選擇章節 + 選擇顏色 + 選擇後續 + 選擇操作 + 選擇或搜尋分類 + 選擇章節規則 + 選擇模式 + 設定失敗:%1$s + 陰影樣式 + 顯示全部 + 顯示全部簡介 + 顯示更多書架分頁 + 顯示導航欄 + 顯示最新章節 + 顯示簡介 %1$d 行 + 顯示選單項目圖標 + 顯示更多資訊 + 顯示原文 + 顯示密碼 + 顯示文字選擇選單圖標 + 顯示狀態欄 + 滑動時啟用動畫 + 顯示簡介 + 顯示標籤 + 顯示書籍類型 + 顯示浮動圖標 + 顯示新章節標記 + 輸出日誌 + 顯示字數 + 滑桿 + 名稱升序 + 名稱降序 + 最新優先 + 最新優先 + 最舊優先 + 最舊優先 + 排序視圖 + 正在校驗書源,請稍候 + 源轉換失敗 + 源不存在 + 選擇朗讀引擎的應用範圍 + 指定範圍 + 拆分超長章節 + 已關閉長章節拆分 + 已啟用長章節拆分 + 按標記 + 按位置 + 按正則 + 分割位置 + 正在下載章節 + 正在下載 %1$d 個章節 + 正在下載剩餘 %1$d 個章節 + 樣式設定 + 建議: + 確定要刪除嗎? + SVG 路徑 + 座標:X(0-100),Y(0-100) + 同步完成 + 同步進度 + 簡介行數 + 系統對比度 + 系統對比度:%1$s + 系統引擎 + 系統媒體控制相容性 + 若鎖定螢幕缺少系統媒體控制項時啟用(例如 OneUI 7.0、OriginOS) + 平板介面 + 標籤 + 新建標籤分組 + 編輯分組規則 + 未設定標籤分組規則。添加規則以自動按分類標籤分組書籍。 + 分組名稱 + 正則表達式(匹配分類標籤) + 標籤分組規則 + 同步標籤分組 + 分組同步完成 + 分組 + 高亮 + 全部 + 僅正文 + 作用範圍 + 僅標題 + 強調色 + 字體與間距 + 圓點底線 + 文字選擇選單篩選 + 篩選選擇選單中顯示的第三方應用 + 陰影 + 陰影半徑 + 陰影設定 + X 偏移 + Y 偏移 + 字體樣式 + 添加 %1$s 圖標 + 較高模糊半徑可能降低效能 + 底部欄模糊強度 + 控制液態玻璃扭曲強度 + 分隔線長度 + 分隔線寬度 + 標籤 %1$d + 管理標籤顏色 + Miuix 目前為實驗性功能,不適用於 View 介面。 + 導航欄圖標設定 + 導航欄圖標 + 已設定 %1$d 個自訂圖標 + 使用預設圖標 + 無字體檔案 + 套用 + 套用主題「%1$s」?需要重啟才能使所有更改生效。 + 套用主題 + 背景色 + 底部欄模糊不透明度 + 底部欄模糊半徑 + 日間種子色 + 刪除主題「%1$s」?此操作不可撤銷。 + 刪除主題 + 編輯主題 + 匯出目前主題 + 將目前主題設定匯出為 JSON 檔案 + 主題匯出失敗 + 主題已匯出 + 匯入主題檔案 + 從 JSON 檔案匯入主題設定 + 主題匯入失敗 + 主題已匯入。部分更改需要重啟。 + 標籤容器色 + 標籤可見性 + 輸入主題名稱 + 夜間種子色 + 翻頁動畫 + 日間 + 夜間 + 主色 + 主文字色 + 儲存 + 儲存目前主題 + 將目前外觀設定儲存為主題 + 儲存主題 + 已儲存主題 + 副色 + 副文字色 + 基本設定 + 模糊效果 + 顏色 + 容器 + 介面佈局 + 不透明度 + 顯示發現 + 狀態欄 + 頂欄模糊不透明度 + 頂欄模糊半徑 + 從調色板生成顏色 + 控制並發下載任務。數值過大可能增加記憶體不足風險 + 時間線 + 超時(毫秒) + 這些選項僅影響以 Compose 重寫的介面。已停用的選項為佔位符,將在實作後啟用。 + 主題引擎依賴 Monet。動態顏色和自訂主題在 Android 12 以下的裝置上不生效。 + 標題欄圖標位置 + 標題欄圖標 + 標題欄佈局 + 選單中的標題模式 + 標題顏色 + %1$s 目錄已禁用 + 章節規則更新失敗:%1$s + 章節規則已更新 + 翻譯 + 翻譯章節 + 使用應用 AI 介面 + 模型、API Key 和協議在 AI 設定中配置。 + 翻譯緩存 + 緩存大小:%1$s + 翻譯設定 + 翻譯失敗:%1$s + 翻譯中:%1$d%% + 翻譯選項 + 翻譯中 %1$d%% + 翻譯提示詞 + 翻譯供應商 + 翻譯已開始,請稍候… + 請在設定背景圖片後再設定透明主題。 + 底線顏色 + 虛線 + 延伸底線 + 底線高度 + + 底線偏移 + 底線間距 + 實線 + 底線樣式 + 自訂 SVG + 標題欄 + 波浪 + 底線寬度 + 未分組 + 有可用更新! + 上傳成功 + 使用共享元素動畫 + 使用背景圖片 + 使用彈性頂欄 + 使用替換規則 + 始終使用底線強調文字 + 卷管理 + 開啟應用時啟動 Web 服務 + WebDAV 還原失敗\n%1$s + WebDAV 錯誤\n%1$s\n改為從本機備份還原。 + 網站已禁用 + 條漫 + 週五 + 週一 + 週六 + 週日 + 週四 + 週二 + 週三 + 歡迎! diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 4238eca55..669047f94 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1384,4 +1384,809 @@ · 目前生效 · 已被封鎖 · 已加入 + + + 手動輸入 + 偏好對比度 + 來源:系統對比度 + 來源:手動輸入 + 目前有效值:%1$s + 系統對比度:%1$s + 系統對比度 + 手動值 [-1, 1] + 請輸入 -1 到 1 之間的有效數字 + 預測性返回手勢 + 啟用系統預測性返回手勢 + 重新啟動以套用 + 自訂主題 + 自訂顏色 + 點擊選擇 + Compose 相關 + 使用彈性頂部工具列 + 滑桿 + 輸入 + 手動值:%1$s + 輸入目錄路徑 + 無效的目錄路徑 + 目錄路徑不能為空 + 封面網址 + 鎖定書籍類型 + 書籍更新時不覆蓋書籍類型 + 書籍類型 + 文字 + 音訊 + 圖片 + 新增標籤 + 編輯標籤 + 標籤 + 備份失敗 + 復原失敗 + 復原失敗:%1$s + 從本機復原 + 從網路復原 + WebDAV 錯誤 +%1$s +改從本機備份復原。 + WebDAV 復原失敗 +%1$s + 下拉重新整理 + 釋放重新整理 + 正在重新整理 + 展開 + 收合 + 選擇顏色 + 顏色值 + 快取失敗:%1$s + 控制並發下載任務。數值越大,OOM 風險越高 + 快取下載執行緒數 + 控制離線快取書籍的並發章節下載數。數值越大,OOM 風險越高 + 副內容(subContent) + 選擇套用所選朗讀引擎的範圍 + 使用背景圖片 + 新增分組 + 顯示密碼 + 隱藏密碼 + 高亮規則 + 新規則 + 編輯規則 + 規則資訊 + 樣式設定 + 正則表達式 + 規則名稱 + 目標範圍 + 全部 + 僅標題 + 僅正文 + 啟用規則 + 底線樣式 + + 實線 + 虛線 + 波浪 + 標題列 + 自訂 SVG + 底線寬度 + 底線偏移 + SVG 路徑 + 座標:X(0-100),Y(0-100) + 背景適配 + 背景圖片 + 圖片縮放 + 並排 + 延伸 + 置中裁切 + 預覽 + 範例文字 + 確定要刪除嗎? + 儲存到來源檔案(重設將不可用) + 新增正則規則 + 自訂正則規則 + 自訂規則 + 輸入正則表達式 + 顯示選單項目圖示 + 全域與主題 + 佈局與間距 + 文字與效果 + 標題設定 + 系統與選單 + 斜體 + 正文間距 + 調整正文上、下、左、右邊距 + 效果 + 設定陰影偏移、半徑和顏色 + 設定底線顏色、高度、虛線和位置 + 透過正規表達式變更字體和顏色 + 設定頁首/頁尾模組、可見性和顏色 + 調整頁首和頁尾的上、下、左、右邊距 + 分隔線 + 關閉 + 水平 + 垂直 + 亮度條位置 + 左側 + 右側 + 跟隨系統 + 全螢幕 + 文字吸附 + 單頁 + 標題顏色 + {name} - {author} + 可用變數:{name} 書名、{author} 作者、{group} 分組、{source} 來源、{remark} 備註。 + +範例:{name} - {author} +結果:三體 - 劉慈欣 + +可以在變數前後新增固定文字。 + 相關書籍(relatedBooks) + 剪貼簿為空 + 剪貼簿為空或格式無效 + 無效格式 + 請填寫所有必填資訊 + 無法直接開啟此 URL + 已切換到瀏覽器開啟 + 已切換到 WebView 開啟 + 顯示文字選擇選單圖示 + 文字選擇選單篩選 + 篩選選擇選單中顯示的第三方應用 + 全部顯示 + 全部隱藏 + 找不到支援文字操作的第三方應用 + 事件監聽器 + 自訂按鈕 + 回呼 JS(callBackJs) + 搜尋 URL 和封面規則不能為空 + 已選擇 %1$d 張圖片 + 是否跳轉到此章節? + 復原進度 + 同步進度 + 發現雲端進度,是否復原? + 目前進度超過雲端進度,是否覆蓋? + 不需要權限 + 隱私政策 + 開源許可 + 免責聲明 + 已安裝版本 + 已安裝版本 + 最新版本 + 發布渠道 + 下載更新 + 請先設定備份目錄 + 日誌記錄已關閉。請先在其它設定中開啟。 + 已儲存至備份資料夾 + 堆轉儲記錄已關閉。請先在其它設定中開啟。 + 正在建立堆轉儲… + 找不到堆轉儲檔案 + 更新下載資訊不完整 + 無更新日誌 + 正在下載 %1$s + 未分組 + 動態色彩 + 主題已匯出 + 無法匯出主題 + 主題已匯入。部分變更需要重新啟動。 + 無法匯入主題 + 儲存目前主題 + 將目前外觀設定儲存為主題 + 匯出目前主題 + 將目前主題設定匯出為 JSON 檔案 + 匯入主題檔案 + 從 JSON 檔案匯入主題設定 + 已儲存的主題 + 儲存主題 + 儲存 + 輸入主題名稱 + 套用主題 + 套用 + 套用主題「%1$s」?需要重新啟動才能使所有變更生效。 + 刪除主題 + 刪除主題「%1$s」?此操作無法復原。 + 日間 + 夜間 + 編輯主題 + 基本設定 + 顏色 + 從調色板生成顏色 + 主色 + 輔助色 + 主文字色 + 輔助文字色 + 背景色 + 標籤容器色 + 日間種子色 + 夜間種子色 + 介面佈局 + 顯示發現 + 狀態欄 + 翻頁動畫 + 標籤可見性 + 模糊效果 + 頂部工具列模糊半徑 + 底部工具列模糊半徑 + 頂部工具列模糊不透明度 + 底部工具列模糊不透明度 + 不透明度 + 容器 + 管理標籤顏色 + 標籤 %1$d + Miuix 目前為實驗性功能,不適用於基於 View 的介面。 + 底部工具列模糊強度 + 控制液態玻璃扭曲強度 + 較大的模糊半徑可能降低效能 + 分隔線寬度 + 分隔線長度 + 導航欄圖示設定 + 導航欄圖示 + 已設定 %1$d 個自訂圖示 + 使用預設圖示 + 新增 %1$s 圖示 + 無字體檔案 + 圖示已更新 + 設定取代規則 + 更多設定 + 共 %d 章 + 已讀 %d 章 + 電子墨水屏 + 電子墨水屏設定 + 閾值 + 停用水平捲動動畫 + 灰階 + 排序視圖 + 列表 + 網格 + 每行行數 + 升序 + 降序 + 正在檢查更新… + 無可用內容 + 匿名統計 + 允許應用使用 Google Firebase 進行崩潰和效能報告 + 定位目前位置 + 系統媒體控制相容性 + 如果鎖定畫面上缺少系統媒體控制項,請啟用此選項(例如 OneUI 7.0、OriginOS) + 暫停/繼續朗讀 + 播放模式 + 平板介面 + 進度 + 全部清除 + 歡迎! + 請先閱讀服務條款和使用者協議。 + 設定底部按鈕 + 精簡網格 + 封面網格 + 結束章節 + 漫畫閱讀設定 + 條漫 + 第 3 期 + 照片 + 字體與間距 + 有可用更新! + ABI: arm64-v8a + 下載連結 + 無書籤 + 書籤管理 + 前往目前閱讀位置 + 移至頂部 + 移至底部 + 反選 + 選擇以下 + 搜尋章節… + 使用取代規則 + 顯示字數 + 本機書籍選項 + 本機書籍章節規則 + 選擇章節規則 + 分割超長章節 + 匯出書籤為 JSON + 匯出書籤為 Markdown + 卷管理 + 快速跳轉 + 下載所選(%1$d) + 章節規則更新失敗:%1$s + 章節規則已更新 + 設定失敗:%1$s + 超長章節分割已啟用 + 超長章節分割已停用 + 無可匯出的書籤 + 已儲存 + 儲存失敗:%1$s + 選擇章節 + 已新增 %1$d 個書籤 + 正在下載 %1$d 章 + 下載章節中 + 所有章節已快取 + 正在下載剩餘 %1$d 章 + 閱讀結束 + 系統引擎 + 從剪貼簿匯入 + 淺色 + 深色 + 純黑模式 + 請在設定背景圖片後再設定透明主題。 + 從種子色建立主題 + 種子色 + 自訂模式 + 仍可滑動翻頁 + 顯示導航欄 + 懸浮底欄 + 底部導航欄使用獨立膠囊樣式 + 液態玻璃效果 + 為懸浮底欄啟用液態玻璃高亮效果。需要模糊和 Android 13+ + 導航欄標籤模式 + 閱讀 + 隱私 + 通知權限 + 背景權限 + 從書架進入閱讀介面時優化動畫效果。 + 使用共享元素動畫 + 進入閱讀介面時減少卡頓,但會增加書籍載入時間。 + 延遲書籍載入 + 精簡列表 + %1$s • %2$d 未讀 + 目前 %d%% + 選單透明度 + 選擇操作 + 取代此書 + 新增為新書 + 快速放入書架 + 已放入書架 + 從圖片生成主題色彩 + 若要使用種子色,請先清除已選擇的種子圖片 + 點擊刪除或更換 + 主題引擎依賴 Monet。動態色彩和自訂主題在 Android 12 以下裝置上不生效。 + 變更此選項需要重新啟動 + 稍後重新啟動 + 選擇書源分組 + 日間/深色模式切換 + 長按儲存圖片 + 長按設定為全域預設模式 + 滑桿顯示樣式 + 書架更新限制 + X 偏移 + Y 偏移 + 陰影半徑 + 陰影 + 閱讀顯示 · 漫畫 + 顯示與亮度 + 閱讀行為 + 翻頁控制 + 網頁重定向策略 + 允許所有重定向 + 總是詢問 + 網域變更時詢問 + 阻止跨網域重定向 + 阻止所有重定向 + 網域內詢問,跨網域阻止 + 顯示狀態欄 + 最舊到最新 + 最新到最舊 + 名稱升序 + 名稱降序 + 圓點底線 + 跳轉到卷 + 取消選擇 + 收合所有卷 + 展開所有卷 + 自訂 + 全域設定 + 字體樣式 + 陰影樣式 + 長按自訂 + 停用翻頁動畫 + 停用載入淡入動畫 + 陰影設定 + 段落樣式 + 已存在同名書籍 + 底線顏色 + 延伸底線 + 虛線長度 + 間隙長度 + 底線高度 + 選單中的標題模式 + 計算取代淨化規則數 + 淡入淡出 + 顯示更多書架分頁 + 顯示新章節標記 + 換源預設套用到整本書 + 否則僅套用於單一章節。 + 顯示書籍類型 + 閱讀中 + 未讀 + 已完結 + 已完結(連載) + 已完結(已完結) + 漫畫 + 小說 + 顯示字體陰影 + 顯示字體描邊 + 使用預設字體顏色 + 滑動進度條時震動 + 編輯備註 + 書籍別名 + 儲存到本機 + 選擇操作 + 強調色 + 色彩樣式 + 反轉音量鍵翻頁方向 + 調色板樣式 + 色彩規格 + 這些選項僅影響使用 Compose 重寫的介面。停用的選項為佔位符,將在實作後啟用。 + 啟用元素模糊 + 強調文字始終使用底線 + 適配特殊樣式 + 主題樣式 + 容器不透明度 + %d + 開啟應用時啟動 Web 服務 + 朗讀預載入數量 + %d + 音訊快取保留時間(分鐘) + 目前:%1$d。輸入 0 則退出時立即清除。 + 滑動時啟用動畫 + 圖片點擊操作 + 輸出日誌 + 啟用漸進式模糊 + 選擇文字時震動 + 重新同步遠端書籍 + 底線間距 + 網路書籍標記 + 顯示全部 + 隱藏書架中同源書籍 + 隱藏書架中非同源書籍 + 僅顯示不在書架中的書籍 + 跟隨背景 + 按位置分割 + 按標記分割 + 按正則分割 + 分割位置 + 搜尋結果 %1$d + · 進度 %1$d/%2$d + %1$s 分組搜尋無結果。是否停用精準搜尋? + %1$s 分組搜尋無結果。是否切換到全部分組? + 搜尋類型 + 上拉或點擊按鈕載入更多 + %1$d + 列表佈局 + 按來源分組 + 下載與快取 + HTTP 快取 + 封面快取 + 漫畫快取 + %1$.1f MB + 下載 + 圖片快取 + 網路 + 翻譯設定 + 啟用章節翻譯 + 翻譯供應商 + 供應商 + OpenAI 設定 + Base URL + API 金鑰 + 模型 + 翻譯選項 + 目標語言 + 每個區塊最大字元數 + 並發區塊數 + 重試次數 + 溫度 + 允許範圍:0-2。越接近 0 越嚴格;越接近 2 越具創造力。 + 翻譯提示詞 + 提示詞 + 翻譯章節 + 顯示原文 + 重新翻譯章節 + 這將刪除現有翻譯並重新翻譯。是否繼續? + 翻譯中:%1$d%% + 翻譯失敗:%1$s + 無翻譯快取 + 刪除翻譯快取 + 快取大小:%1$s + 清除快取 + 翻譯快取 + 翻譯 + 返回原文 + 翻譯中 %1$d%% + 翻譯已開始,請稍候… + 使用應用 AI 介面 + 模型、API 金鑰和協定在 AI 設定中配置。 + AI 設定 + 設定檔資料庫 + 模型 + 供應商 + 任務 + 章節摘要 + 技能 + 新建技能 + AI 聊天 + 最近對話 + 新建對話 + AI 正在回覆… + 傳送 + 輸入任何問題… + 開始對話 + 重新生成 + 思考模式 + 強度 + 關閉 + 自動 + 深度 + + 助手 + 推理過程 + 思考中 + 思考完成 + 工具 + 確認工具操作 + 相關書籍 + 捲動到底部 + 思考 %.1f 秒 + 顯示 %d 個更多步驟 + 收合 + 完成 + 等待中 + 執行中 + 輸入: + 輸出: + 目前供應商 + 目前模型 + 目前 + 尚未設定模型 + 新建供應商 + 新建模型 + 新建設定檔 + 供應商 + 供應商設定 + 供應商名稱 + 協定 + 供應商預設 + 自訂供應商 + Base URL + 模型 URL + API 金鑰 + 儲存在本機。留空則保留已儲存的金鑰。 + 模型 + 模型設定 + 供應商模型 + 擷取模型 + 擷取並儲存模型 + 請先建立供應商 + 尚未匯入模型 + 選擇模型 + 手動新增模型 + 未設定 + 目前:%1$s + 模型名稱 + 模型 ID + 上下文視窗 + 最大輸出 Token 數 + 溫度 + 操作 + 儲存預設模型 + 儲存供應商 + 儲存並同步模型 + 儲存模型 + 進階 + 選填。留空則使用協定預設的模型端點。 + 翻譯任務 + 目標語言 + 最大輸入字元數 + 並發請求數 + 重試次數 + 設定檔 + 儲存預設設定檔 + 測試連線 + 供應商:%1$d,模型:%2$d,預設:%3$d + 從分類中選擇 + 選擇多個分類 + 已選擇 %1$d + 選擇一個分類 + + 閱讀器頂部和底部工具列的背景色 + 調色板來源 + 容器背景色 + 閱讀器選單調色板的基礎表面色 + 閱讀器頂部和底部工具列的文字和圖示顏色 + 圖示樣式 + 即時預覽 + 顯示圖示標籤 + 圖示容器樣式 + 純色 + 色調 + 外框 + 每行圖示數 + 圖示行數 + 自訂圖示 + 使用預設圖示 + %1$d 個自訂圖示 + 頂部工具列圖示 + 頂部工具列佈局 + 顯示懸浮圖示 + 頂部工具列圖示位置 + 左上 + 右上 + 左下 + 右下 + 底部工具列佈局 + 底部工具列圓角半徑 + 懸浮底部工具列 + 選單模糊模式 + + 為懸浮底欄使用液態玻璃效果。需要 Android 13+ + 液態玻璃底部按鈕 + 標題膠囊佈局 + 為底部工具列按鈕和滑桿滑塊套用液態玻璃效果。需要 Android 13+ + 模糊樣式 + 實體模糊 + 漸進式模糊 + 為頂部工具列操作按鈕套用液態玻璃效果。需要 Android 13+ + 模糊半徑 + 較大的半徑可能降低效能 + 選單不透明度 + 模糊色調顏色 + 邊框 + 寬度 + 顏色 + 啟用模糊 + 液態玻璃背景 + 實驗室 + 啟用實驗室 + 開啟以顯示實驗性功能。這些功能可能不穩定。 + 顯示 + 電子墨水屏顯示 + 在平板介面中顯示電子墨水屏選項 + 您可以在主題 → 顯示選項中調整電子墨水屏顯示設定 + 護眼模式 + 為漫畫和小說閱讀器套用暖色色調,減少眼睛疲勞 + 您可以在主題 → 外觀中調整護眼設定 + 護眼模式 + 啟用護眼模式 + 透過暖色色調減少藍光 + 色溫 + 目前色溫:%1$d + 定時 + 僅在設定的時間範圍內生效 + 開始時間 + 結束時間 + 標籤規則 + 匯入標籤規則 + 標題 + 模式 + 尚未設定高亮標籤規則。新增規則以在書籍詳情頁高亮顯示特定標籤。 + 新增規則 + 編輯規則 + 標題(選填) + 正則表達式(例如 (\\d+)字) + 顯示模式 + 水平 + 垂直 + 測試 + 輸入測試文字 + 測試匹配 + 匹配:%1$s + 匹配:%1$s | %2$s + 無匹配 + 錯誤:%1$s + 高亮 + 分組 + 新建標籤分組 + 編輯分組規則 + 分組名稱 + 模式(匹配分類標籤) + 尚未設定標籤分組規則。新增規則以按分類標籤自動分組書籍。 + 同步標籤分組 + 標籤分組規則 + 分組同步完成 + 匯入標籤分組規則 + 編輯取代規則 + 更多操作 + 匹配模式 + 輸入正則或關鍵字 + 取代為 + 輸入取代內容或擷取群組 + 已啟用正則 + 特定範圍 + 指定此規則的適用範圍 + 排除範圍 + 指定要排除的範圍 + 超時(毫秒) + 分組管理 + 無其他分組 + 刪除所選 + 最舊優先 + 最新優先 + 此排序模式下禁用拖曳 + 選擇模式 + 資料夾佈局模式 + 列表封面寬度 + 資料夾列表樣式 + 水平封面數量 + 網格封面寬度 + 日間卡片背景色 + 夜間卡片背景色 + 精簡詳情 + 顯示更多資訊 + 顯示最新章節 + 顯示簡介 + 簡介行數 + 顯示全部簡介 + 顯示 %1$d 行簡介 + 顯示標籤 + 自訂標籤顏色 + 管理標籤顏色 + 搜尋按鈕先開啟篩選 + 從網路匯入 + 輸入 URL 或 JSON + 歷史記錄: + 取消全選 + 匯入 + 不支援編輯 + 新增 + 更新 + 已存在 + 錯誤 + 詳情 + 錯誤詳情 + 重新載入 + 沒有更多資料 + 載入下一頁 + 載入更多 + 時間線 + 按時長 + 無更早的資料 + %1$d + + 時長 + 更少( + 更多( + 格式化 + 壓縮 + 無日誌 + 無崩潰日誌 + 選擇或搜尋分類 + 多選項目 + 最近閱讀: + 尚未收藏任何訂閱! + 建議: + 週一 + 週二 + 週三 + 週四 + 週五 + 週六 + 週日 + 已儲存到相簿 + 儲存圖片失敗 + 新增書籍失敗 + 資料不能為空 + 資料必須為 JSON 格式 + 源轉換失敗 + 除錯完成 + 儲存失敗 + 找不到書籍 + 源不存在 + 同步完成 + 清除快取出錯 + 上傳成功 + 儲存失敗 + 自動換源失敗 + 分組名稱不能為空 + 重設封面 + 規則已複製到剪貼簿 + 登入失敗 + 朗讀定時:%1$d 分鐘 + 未能取得音訊焦點 + 正在校驗書源,請稍候 + 校驗超時 + JS 已停用 + 網站已停用 + 搜尋規則為空 + 搜尋已停用 + 發現規則為空 + 發現已禁用 + %1$s 內容已禁用 + %1$s 目錄已禁用 + TTS 伺服器連續 5 次錯誤,朗讀已暫停。 + 匯出完成 + 下載失敗:無儲存權限 + 已在下載列表中 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 92557723d..52ecb9118 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2083,4 +2083,118 @@ Tag Group Rules Group sync complete Import Tag Group Rules + + + Edit Replace Rule + More Actions + Match Pattern + Enter regex or keyword + Replace With + Enter replacement or capture group + Regex enabled + Specific Scope + Specify scope for this rule + Exclude Scope + Specify scope to exclude + Timeout (ms) + Group Management + No other groups + Delete Selected + Old First + New First + Drag disabled in this sort mode + Selection Mode + Folder Layout Mode + List Cover Width + Folder List Style + Horizontal Cover Count + Grid Cover Width + Day Card Background Color + Night Card Background Color + Compact Details + Show More Info + Show Latest Chapter + Show Synopsis + Synopsis Lines + Show all synopsis + Show %1$d lines of synopsis + Show Tags + Custom Tag Colors + Manage Tag Colors + Search button opens filter first + Import from Network + Enter URL or JSON + History: + Deselect All + Import + Editing not supported + New + Update + Existing + Error + Details + Error Details + Reload + No more data + Load next page + Load More + Timeline + By Duration + No earlier data + %1$d + times + duration + Less( + More( + Format + Minify + No logs + No crash logs + Select or search category + Multi-select Items + Recently Read: + No favorite subscriptions yet! + Suggestion: + Mon + Tue + Wed + Thu + Fri + Sat + Sun + Saved to album + Failed to save image + Failed to add book + Data cannot be empty + Data must be in JSON format + Source conversion failed + Debug finished + Save failed + Book not found + Source does not exist + Sync complete + Error clearing cache + Upload successful + Save error + Auto source change failed + Group name cannot be empty + Cover reset + Rule copied to clipboard + Login error + Read aloud timer: %1$d minutes + Audio focus not acquired + Sources are being checked, please wait + Check timeout + JS disabled + Website disabled + Search rule is empty + Search disabled + Explore rule is empty + Explore disabled + %1$s content disabled + %1$s TOC disabled + TTS server 5 consecutive errors, reading paused. + Export complete + Download error: no storage permission + Already in download list