From 5eb9b3cd789f6fa9e0ba8fc70a98d190384572ba Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Thu, 24 Jul 2025 15:59:33 -0300 Subject: [PATCH] Remove hardcoded strings --- next/src/main/kotlin/org/fdroid/ui/About.kt | 11 +++++--- next/src/main/kotlin/org/fdroid/ui/Main.kt | 10 ++++--- .../src/main/kotlin/org/fdroid/ui/Settings.kt | 5 +++- .../main/kotlin/org/fdroid/ui/apps/MyApps.kt | 8 +++--- .../org/fdroid/ui/details/AntiFeatures.kt | 4 ++- .../org/fdroid/ui/details/AppDetails.kt | 16 +++++++----- .../org/fdroid/ui/details/AppDetailsHeader.kt | 6 ++--- .../org/fdroid/ui/details/AppDetailsLink.kt | 4 ++- .../fdroid/ui/details/AppDetailsTopAppBar.kt | 2 +- .../fdroid/ui/details/AppDetailsWarnings.kt | 6 +++-- .../kotlin/org/fdroid/ui/details/Versions.kt | 22 ++++++++++++---- .../fdroid/ui/discover/AppSearchInputField.kt | 9 +++++-- .../kotlin/org/fdroid/ui/discover/Discover.kt | 6 ++--- .../kotlin/org/fdroid/ui/lists/AppList.kt | 7 ++++- .../kotlin/org/fdroid/ui/lists/AppsFilter.kt | 19 +++++++++----- .../fdroid/ui/repositories/Repositories.kt | 10 +++++-- next/src/main/res/values/strings-next.xml | 26 +++++++++++++++++++ 17 files changed, 124 insertions(+), 47 deletions(-) diff --git a/next/src/main/kotlin/org/fdroid/ui/About.kt b/next/src/main/kotlin/org/fdroid/ui/About.kt index fd078a04f..777b1e155 100644 --- a/next/src/main/kotlin/org/fdroid/ui/About.kt +++ b/next/src/main/kotlin/org/fdroid/ui/About.kt @@ -44,7 +44,10 @@ fun About(onBackClicked: () -> Unit) { TopAppBar( navigationIcon = { IconButton(onClick = onBackClicked) { - Icon(Icons.AutoMirrored.Default.ArrowBack, "back") + Icon( + imageVector = Icons.AutoMirrored.Default.ArrowBack, + contentDescription = stringResource(R.string.back), + ) } }, title = { @@ -69,12 +72,12 @@ fun About(onBackClicked: () -> Unit) { Column(modifier = Modifier.padding(top = 24.dp, bottom = 16.dp)) { val uriHandler = LocalUriHandler.current Text( - text = "Links", + text = stringResource(R.string.links), fontWeight = FontWeight.Bold, style = MaterialTheme.typography.bodyLarge, ) Text( - text = "Homepage", + text = stringResource(R.string.menu_website), style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.secondary, modifier = Modifier @@ -82,7 +85,7 @@ fun About(onBackClicked: () -> Unit) { .clickable { uriHandler.openUriSafe("https://f-droid.org") } ) Text( - text = "Gitlab", + text = stringResource(R.string.about_source), style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.secondary, modifier = Modifier diff --git a/next/src/main/kotlin/org/fdroid/ui/Main.kt b/next/src/main/kotlin/org/fdroid/ui/Main.kt index f92aa8c5a..159558939 100644 --- a/next/src/main/kotlin/org/fdroid/ui/Main.kt +++ b/next/src/main/kotlin/org/fdroid/ui/Main.kt @@ -18,6 +18,7 @@ import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle @@ -31,6 +32,7 @@ import androidx.navigation3.ui.NavDisplay import androidx.window.core.layout.WindowSizeClass.Companion.WIDTH_DP_MEDIUM_LOWER_BOUND import org.fdroid.database.AppListSortOrder import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.next.R import org.fdroid.ui.apps.MyApps import org.fdroid.ui.apps.MyAppsViewModel import org.fdroid.ui.details.AppDetails @@ -80,7 +82,7 @@ fun Main(onListeningForIntent: () -> Unit = {}) { entryProvider = entryProvider { entry( metadata = ListDetailSceneStrategy.listPane("appdetails") { - Text("No app selected") + Text(stringResource(R.string.no_app_selected)) }, ) { val viewModel = hiltViewModel() @@ -101,7 +103,7 @@ fun Main(onListeningForIntent: () -> Unit = {}) { } entry( metadata = ListDetailSceneStrategy.listPane("appdetails") { - Text("No app selected") + Text(stringResource(R.string.no_app_selected)) }, ) { val myAppsViewModel = hiltViewModel() @@ -139,7 +141,7 @@ fun Main(onListeningForIntent: () -> Unit = {}) { } entry( metadata = ListDetailSceneStrategy.listPane("appdetails") { - Text("No app selected") + Text(stringResource(R.string.no_app_selected)) }, ) { val appListViewModel = hiltViewModel() @@ -174,7 +176,7 @@ fun Main(onListeningForIntent: () -> Unit = {}) { } entry( metadata = ListDetailSceneStrategy.listPane("repos") { - Text(text = "No repository selected") + Text(text = stringResource(R.string.no_repository_selected)) }, ) { val viewModel = hiltViewModel() diff --git a/next/src/main/kotlin/org/fdroid/ui/Settings.kt b/next/src/main/kotlin/org/fdroid/ui/Settings.kt index 7cbd22f6e..77c3d4e67 100644 --- a/next/src/main/kotlin/org/fdroid/ui/Settings.kt +++ b/next/src/main/kotlin/org/fdroid/ui/Settings.kt @@ -26,7 +26,10 @@ fun Settings(onBackClicked: () -> Unit) { TopAppBar( navigationIcon = { IconButton(onClick = onBackClicked) { - Icon(Icons.AutoMirrored.Default.ArrowBack, "back") + Icon( + imageVector = Icons.AutoMirrored.Default.ArrowBack, + contentDescription = stringResource(R.string.back), + ) } }, title = { diff --git a/next/src/main/kotlin/org/fdroid/ui/apps/MyApps.kt b/next/src/main/kotlin/org/fdroid/ui/apps/MyApps.kt index 20e4664c4..7a5ca5ac9 100644 --- a/next/src/main/kotlin/org/fdroid/ui/apps/MyApps.kt +++ b/next/src/main/kotlin/org/fdroid/ui/apps/MyApps.kt @@ -73,7 +73,7 @@ fun MyApps( topBar = { TopAppBar( title = { - Text("My apps") + Text(stringResource(R.string.menu_apps_my)) }, actions = { var sortByMenuExpanded by remember { mutableStateOf(false) } @@ -85,7 +85,7 @@ fun MyApps( onDismissRequest = { sortByMenuExpanded = false }, ) { DropdownMenuItem( - text = { Text("Sort by name") }, + text = { Text(stringResource(R.string.sort_by_name)) }, leadingIcon = { Icon(Icons.Filled.SortByAlpha, null) }, @@ -101,7 +101,7 @@ fun MyApps( }, ) DropdownMenuItem( - text = { Text("Sort by latest") }, + text = { Text(stringResource(R.string.sort_by_latest)) }, leadingIcon = { Icon(Icons.Filled.AccessTime, null) }, @@ -149,7 +149,7 @@ fun MyApps( onClick = {}, modifier = Modifier.padding(end = 16.dp), ) { - Text("Update all") + Text(stringResource(R.string.update_all)) } } } diff --git a/next/src/main/kotlin/org/fdroid/ui/details/AntiFeatures.kt b/next/src/main/kotlin/org/fdroid/ui/details/AntiFeatures.kt index c63eb9717..014074b19 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/AntiFeatures.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/AntiFeatures.kt @@ -19,9 +19,11 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter.Companion.tint import androidx.compose.ui.graphics.vector.rememberVectorPainter +import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.next.R import org.fdroid.ui.utils.AsyncShimmerImage import org.fdroid.ui.utils.testApp @@ -40,7 +42,7 @@ fun AntiFeatures( ) { ExpandableSection( icon = rememberVectorPainter(Icons.Default.WarningAmber), - title = "This app has anti-features", + title = stringResource(R.string.anti_features_title), modifier = Modifier.padding(horizontal = 16.dp), ) { Column { diff --git a/next/src/main/kotlin/org/fdroid/ui/details/AppDetails.kt b/next/src/main/kotlin/org/fdroid/ui/details/AppDetails.kt index ff759ce0d..3400c8ca6 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/AppDetails.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/AppDetails.kt @@ -112,7 +112,7 @@ fun AppDetails( .padding(horizontal = 16.dp, vertical = 8.dp), ) { Text( - text = "What's new", + text = stringResource(R.string.whats_new_title), style = MaterialTheme.typography.titleMediumEmphasized, modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp), ) @@ -160,7 +160,11 @@ fun AppDetails( } TextButton(onClick = { descriptionExpanded = !descriptionExpanded }) { Text( - text = if (descriptionExpanded) "Less" else "More", + text = if (descriptionExpanded) { + stringResource(R.string.less) + } else { + stringResource(R.string.more) + }, textAlign = Center, maxLines = if (descriptionExpanded) Int.MAX_VALUE else 3, modifier = Modifier @@ -207,7 +211,7 @@ fun AppDetails( .padding(horizontal = 16.dp, vertical = 8.dp), ) { Text( - text = "Donate", + text = stringResource(R.string.donate_title), style = MaterialTheme.typography.titleMediumEmphasized, modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp), ) @@ -244,7 +248,7 @@ fun AppDetails( item.bitcoinUri?.let { bitcoinUri -> AppDetailsLink( icon = Icons.Default.CurrencyBitcoin, - title = "Bitcoin", + title = stringResource(R.string.menu_bitcoin), url = bitcoinUri, modifier = modifier .padding(horizontal = 16.dp) @@ -254,7 +258,7 @@ fun AppDetails( item.litecoinUri?.let { litecoinUri -> AppDetailsLink( icon = Icons.Default.CurrencyBitcoin, - title = "Litecoin", + title = stringResource(R.string.menu_litecoin), url = litecoinUri, modifier = modifier .padding(horizontal = 16.dp) @@ -327,7 +331,7 @@ fun AppDetails( // Developer contact if (item.showAuthorContact) ExpandableSection( icon = rememberVectorPainter(Icons.Default.Person), - title = "Developer contact", + title = stringResource(R.string.developer_contact), modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp), ) { Column(modifier = Modifier.padding(start = 16.dp)) { diff --git a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsHeader.kt b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsHeader.kt index db8d7a1b3..36d24b182 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsHeader.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsHeader.kt @@ -106,7 +106,7 @@ fun AppDetailsHeader( item.app.authorName?.let { authorName -> SelectionContainer { Text( - text = "By $authorName", + text = stringResource(R.string.author_by, authorName), style = MaterialTheme.typography.bodyMedium, ) } @@ -119,9 +119,9 @@ fun AppDetailsHeader( SelectionContainer { Text( text = if (size == null) { - "Last updated: $lastUpdated" + stringResource(R.string.last_updated, lastUpdated) } else { - "Last updated: $lastUpdated ($size)" + stringResource(R.string.last_updated_with_size, lastUpdated, size) }, style = MaterialTheme.typography.bodyMedium, ) diff --git a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsLink.kt b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsLink.kt index 1cce4f9dc..08092ca8d 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsLink.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsLink.kt @@ -18,8 +18,10 @@ import androidx.compose.ui.platform.ClipEntry import androidx.compose.ui.platform.LocalClipboard import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch +import org.fdroid.next.R import org.fdroid.ui.utils.openUriSafe @Composable @@ -43,7 +45,7 @@ fun AppDetailsLink(icon: ImageVector, title: String, url: String, modifier: Modi clipboardManager.setClipEntry(entry) } }, - onLongClickLabel = "Copy link", + onLongClickLabel = stringResource(R.string.copy_link), ), ) { Icon(icon, null) diff --git a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsTopAppBar.kt b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsTopAppBar.kt index 755757fe7..ff4fd4910 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsTopAppBar.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsTopAppBar.kt @@ -63,7 +63,7 @@ fun AppDetailsTopAppBar( IconButton(onClick = { expanded = !expanded }) { Icon( imageVector = Icons.Filled.MoreVert, - contentDescription = "Localized description", + contentDescription = stringResource(R.string.more), ) } AppDetailsMenu(item, expanded) { expanded = false } diff --git a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsWarnings.kt b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsWarnings.kt index 4b92b1200..6a523ad04 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsWarnings.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsWarnings.kt @@ -16,9 +16,11 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment.Companion.CenterVertically import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.next.R import org.fdroid.ui.utils.testApp @Composable @@ -39,7 +41,7 @@ fun AppDetailsWarnings( ) { Icon(Icons.Default.WarningAmber, "") Text( - "Can not update this app, because no compatible versions available in repository.", + text = stringResource(R.string.app_no_compatible_versions), style = MaterialTheme.typography.bodyLarge, ) } @@ -51,7 +53,7 @@ fun AppDetailsWarnings( ) { Icon(Icons.Default.WarningAmber, "") Text( - "Auto-update not available, because app targets old version of Android.", + stringResource(R.string.app_no_auto_update), style = MaterialTheme.typography.bodyLarge, ) } diff --git a/next/src/main/kotlin/org/fdroid/ui/details/Versions.kt b/next/src/main/kotlin/org/fdroid/ui/details/Versions.kt index 3bc17e3d4..8378a8ad2 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/Versions.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/Versions.kt @@ -33,9 +33,9 @@ import androidx.compose.ui.unit.dp import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.index.v2.PackageVersion import org.fdroid.next.R +import org.fdroid.ui.utils.FDroidOutlineButton import org.fdroid.ui.utils.asRelativeTimeString import org.fdroid.ui.utils.testApp -import org.fdroid.ui.utils.FDroidOutlineButton @Composable @OptIn(ExperimentalMaterial3ExpressiveApi::class) @@ -101,7 +101,10 @@ fun Version( overflow = TextOverflow.Ellipsis, ) Text( - text = "Added " + version.added.asRelativeTimeString(), + text = stringResource( + R.string.added_x_ago, + version.added.asRelativeTimeString(), + ), style = MaterialTheme.typography.bodyMedium, maxLines = 1, overflow = TextOverflow.Ellipsis, @@ -135,7 +138,10 @@ fun Version( Column(modifier = Modifier.weight(1f)) { version.size?.let { size -> Text( - text = "Size: " + Formatter.formatFileSize(LocalContext.current, size), + text = stringResource( + R.string.size_colon, + Formatter.formatFileSize(LocalContext.current, size) + ), style = MaterialTheme.typography.bodySmall, maxLines = 1, overflow = TextOverflow.Ellipsis, @@ -144,7 +150,10 @@ fun Version( version.packageManifest.nativecode?.let { nativeCode -> if (nativeCode.isNotEmpty()) { Text( - text = "Architectures: " + nativeCode.joinToString(", "), + text = stringResource( + R.string.architectures_colon, + nativeCode.joinToString(", ") + ), style = MaterialTheme.typography.bodySmall, maxLines = 1, overflow = TextOverflow.Ellipsis, @@ -153,7 +162,10 @@ fun Version( } version.signer?.let { signer -> Text( - text = "Signer: " + signer.sha256[0].substring(0..15), + text = stringResource( + R.string.signer_colon, + signer.sha256[0].substring(0..15) + ), style = MaterialTheme.typography.bodySmall, maxLines = 1, overflow = TextOverflow.Ellipsis, diff --git a/next/src/main/kotlin/org/fdroid/ui/discover/AppSearchInputField.kt b/next/src/main/kotlin/org/fdroid/ui/discover/AppSearchInputField.kt index 92626170c..ebec0c59f 100644 --- a/next/src/main/kotlin/org/fdroid/ui/discover/AppSearchInputField.kt +++ b/next/src/main/kotlin/org/fdroid/ui/discover/AppSearchInputField.kt @@ -16,7 +16,9 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import kotlinx.coroutines.launch +import org.fdroid.next.R @Composable @OptIn(ExperimentalMaterial3Api::class) @@ -32,13 +34,16 @@ fun AppSearchInputField( onSearch = { scope.launch { searchBarState.animateToCollapsed() } }, - placeholder = { Text("Search...") }, + placeholder = { Text(stringResource(R.string.search_placeholder)) }, leadingIcon = { if (searchBarState.currentValue == SearchBarValue.Expanded) { IconButton( onClick = { scope.launch { searchBarState.animateToCollapsed() } } ) { - Icon(Icons.AutoMirrored.Default.ArrowBack, contentDescription = "Back") + Icon( + imageVector = Icons.AutoMirrored.Default.ArrowBack, + contentDescription = stringResource(R.string.back) + ) } } else { Icon(Icons.Default.Search, contentDescription = null) diff --git a/next/src/main/kotlin/org/fdroid/ui/discover/Discover.kt b/next/src/main/kotlin/org/fdroid/ui/discover/Discover.kt index 076ffea0d..03ada10e3 100644 --- a/next/src/main/kotlin/org/fdroid/ui/discover/Discover.kt +++ b/next/src/main/kotlin/org/fdroid/ui/discover/Discover.kt @@ -61,7 +61,7 @@ fun Discover( topBar = { TopAppBar( title = { - Text("F-Droid") + Text(stringResource(R.string.app_name)) }, actions = { topBarMenuItems.forEach { dest -> @@ -104,7 +104,7 @@ fun Discover( is LoadingDiscoverModel -> { AnimatedVisibility(discoverModel.isFirstStart) { Text( - "This is the first start, loading repositories...", + stringResource(R.string.first_start_loading), textAlign = TextAlign.Center, modifier = Modifier .padding(16.dp) @@ -147,7 +147,7 @@ fun Discover( } } NoEnabledReposDiscoverModel -> { - Text("No repositories enabled.\nEnable at least one repository to see apps.") + Text(stringResource(R.string.no_repos_enabled)) } } AnimatedVisibility(discoverModel is LoadedDiscoverModel) { diff --git a/next/src/main/kotlin/org/fdroid/ui/lists/AppList.kt b/next/src/main/kotlin/org/fdroid/ui/lists/AppList.kt index 19779fde6..61201d872 100644 --- a/next/src/main/kotlin/org/fdroid/ui/lists/AppList.kt +++ b/next/src/main/kotlin/org/fdroid/ui/lists/AppList.kt @@ -36,10 +36,12 @@ import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.database.AppListSortOrder import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.next.R import org.fdroid.ui.utils.BigLoadingIndicator @Composable @@ -61,7 +63,10 @@ fun AppList( }, navigationIcon = { IconButton(onClick = onBackClicked) { - Icon(Icons.AutoMirrored.Default.ArrowBack, "back") + Icon( + imageVector = Icons.AutoMirrored.Default.ArrowBack, + contentDescription = stringResource(R.string.back), + ) } }, actions = { diff --git a/next/src/main/kotlin/org/fdroid/ui/lists/AppsFilter.kt b/next/src/main/kotlin/org/fdroid/ui/lists/AppsFilter.kt index dbe160558..a99b894e8 100644 --- a/next/src/main/kotlin/org/fdroid/ui/lists/AppsFilter.kt +++ b/next/src/main/kotlin/org/fdroid/ui/lists/AppsFilter.kt @@ -25,8 +25,10 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import org.fdroid.database.AppListSortOrder +import org.fdroid.next.R interface AppListInfo { val model: AppListModel @@ -67,8 +69,8 @@ fun ColumnScope.AppsFilter( }, label = { val s = when (info.model.sortBy) { - AppListSortOrder.NAME -> "Sort by name" - AppListSortOrder.LAST_UPDATED -> "Sort by latest" + AppListSortOrder.NAME -> stringResource(R.string.sort_by_name) + AppListSortOrder.LAST_UPDATED -> stringResource(R.string.sort_by_latest) } Text(s) DropdownMenu( @@ -76,7 +78,7 @@ fun ColumnScope.AppsFilter( onDismissRequest = { sortByMenuExpanded = false }, ) { DropdownMenuItem( - text = { Text("Sort by name") }, + text = { Text(stringResource(R.string.sort_by_name)) }, leadingIcon = { Icon(Icons.Filled.SortByAlpha, null) }, @@ -86,9 +88,12 @@ fun ColumnScope.AppsFilter( }, ) DropdownMenuItem( - text = { Text("Sort by latest") }, + text = { Text(stringResource(R.string.sort_by_latest)) }, leadingIcon = { - Icon(Icons.Filled.AccessTime, null) + Icon( + imageVector = Icons.Filled.AccessTime, + contentDescription = null, + ) }, onClick = { info.sortBy(AppListSortOrder.LAST_UPDATED) @@ -109,7 +114,7 @@ fun ColumnScope.AppsFilter( ) }, label = { - Text("Category") + Text(stringResource(R.string.category)) DropdownMenu( expanded = categoryMenuExpanded, onDismissRequest = { categoryMenuExpanded = false }, @@ -137,7 +142,7 @@ fun ColumnScope.AppsFilter( ) }, label = { - Text("Repository") + Text(stringResource(R.string.repo_details)) DropdownMenu( expanded = repoMenuExpanded, onDismissRequest = { repoMenuExpanded = false }, diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/Repositories.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/Repositories.kt index abb7179e5..be0fb9105 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/Repositories.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/Repositories.kt @@ -41,7 +41,10 @@ fun Repositories( TopAppBar( navigationIcon = { IconButton(onClick = onBackClicked) { - Icon(Icons.AutoMirrored.Default.ArrowBack, "back") + Icon( + imageVector = Icons.AutoMirrored.Default.ArrowBack, + contentDescription = stringResource(R.string.back), + ) } }, title = { @@ -54,7 +57,10 @@ fun Repositories( onClick = onAddRepo, modifier = Modifier.padding(16.dp) ) { - Icon(Icons.Default.Add, contentDescription = "Add repo") + Icon( + imageVector = Icons.Default.Add, + contentDescription = stringResource(R.string.menu_add_repo), + ) } } ) { paddingValues -> diff --git a/next/src/main/res/values/strings-next.xml b/next/src/main/res/values/strings-next.xml index b77606259..3c174bb0b 100644 --- a/next/src/main/res/values/strings-next.xml +++ b/next/src/main/res/values/strings-next.xml @@ -8,9 +8,35 @@ Discover My apps + Retrieving apps…\n\nThis may take some time. + No repositories enabled.\nEnable at least one repository to see apps. + No app selected + No repository selected + New apps Recently updated All apps Apps by %s + Search… + Sort by name + Sort by latest + Category + + By %1$s + Last updated: %1$s + + Last updated: %1$s (%2$s) + What\'s new + Donate + This app has anti-features + Developer contact + Copy link + Can not update this app, because no compatible versions available in repository. + Auto-update not available, because app targets old version of Android. + Added %1$s + Size: %1$s + Signer: %1$s + Architectures: %1$s +