diff --git a/data/resources/src/commonMain/composeResources/values-br/strings.xml b/data/resources/src/commonMain/composeResources/values-br/strings.xml new file mode 100644 index 0000000..1cd378b --- /dev/null +++ b/data/resources/src/commonMain/composeResources/values-br/strings.xml @@ -0,0 +1,20 @@ + + + Chom bev + + Istitloù + Gwellvezioù istitloù + Treuzskrivañ (BZH) + Diskouez an treuzskrivadur brezhonek + Troidigezh (FR) + Diskouez an droidigezh c\'hallek + + Tizh al lenn + + Distreiñ + Frazenn a-raok + Frazenn war-lerc\'h + Lenn + Ehan + Adlenn + diff --git a/data/resources/src/commonMain/composeResources/values/strings.xml b/data/resources/src/commonMain/composeResources/values/strings.xml new file mode 100644 index 0000000..837dbb4 --- /dev/null +++ b/data/resources/src/commonMain/composeResources/values/strings.xml @@ -0,0 +1,20 @@ + + + Chom bev + + Sous-titres + Préférences de sous-titrage + Transcription (BZH) + Afficher la transcription bretonne + Traduction (FR) + Afficher la traduction française + + Vitesse de lecture + + Retour + Phrase précédente + Phrase suivante + Lire + Pause + Rejouer + diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/PlaybackSpeedBottomSheet.kt b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/PlaybackSpeedBottomSheet.kt index fe8d46c..5c77e5b 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/PlaybackSpeedBottomSheet.kt +++ b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/PlaybackSpeedBottomSheet.kt @@ -18,7 +18,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import fr.ajaury.gwenedeg.preferences.model.PlaybackPreferences +import fr.ajaury.gwenedeg.resources.generated.resources.Res +import fr.ajaury.gwenedeg.resources.generated.resources.playback_speed_title import fr.ajaury.gwenedeg.theme.ChomBevTheme +import org.jetbrains.compose.resources.stringResource import kotlin.math.roundToInt /** @@ -67,7 +70,7 @@ private fun PlaybackSpeedContent( verticalAlignment = Alignment.CenterVertically, ) { Text( - text = "Vitesse de lecture", + text = stringResource(Res.string.playback_speed_title), style = MaterialTheme.typography.titleMedium, ) Text( diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/PlayerScreen.kt b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/PlayerScreen.kt index 9708b66..097f39d 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/PlayerScreen.kt +++ b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/PlayerScreen.kt @@ -35,8 +35,12 @@ import fr.ajaury.gwenedeg.player.model.PlayerState import fr.ajaury.gwenedeg.player.ui.viewmodel.PlayerUiState import fr.ajaury.gwenedeg.player.ui.viewmodel.PlayerViewModel import fr.ajaury.gwenedeg.preferences.ui.SubtitlePreferencesBottomSheet +import fr.ajaury.gwenedeg.resources.generated.resources.Res +import fr.ajaury.gwenedeg.resources.generated.resources.player_back +import fr.ajaury.gwenedeg.resources.generated.resources.subtitle_preferences_action import fr.ajaury.gwenedeg.subtitle.model.SubtitleLine import fr.ajaury.gwenedeg.theme.ChomBevTheme +import org.jetbrains.compose.resources.stringResource import org.koin.compose.viewmodel.koinViewModel import org.koin.core.parameter.parametersOf import kotlin.time.Duration @@ -126,7 +130,7 @@ fun PlayerScreen( IconButton(onClick = onBackClicked) { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack, - contentDescription = "Back", + contentDescription = stringResource(Res.string.player_back), ) } }, @@ -134,7 +138,7 @@ fun PlayerScreen( IconButton(onClick = { showPreferences = true }) { Icon( imageVector = Icons.Filled.Subtitles, - contentDescription = "Préférences de sous-titrage", + contentDescription = stringResource(Res.string.subtitle_preferences_action), ) } }, diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/components/NextButton.kt b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/components/NextButton.kt index c100cf6..26f2f7a 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/components/NextButton.kt +++ b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/components/NextButton.kt @@ -9,7 +9,10 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import fr.ajaury.gwenedeg.resources.generated.resources.Res +import fr.ajaury.gwenedeg.resources.generated.resources.player_next_sentence import fr.ajaury.gwenedeg.theme.ChomBevTheme +import org.jetbrains.compose.resources.stringResource @Composable fun NextButton( @@ -23,7 +26,7 @@ fun NextButton( ) { Icon( imageVector = Icons.Default.SkipNext, - contentDescription = "Next sentence", + contentDescription = stringResource(Res.string.player_next_sentence), ) } } diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/components/PlayButton.kt b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/components/PlayButton.kt index c2965a9..a6f16b2 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/components/PlayButton.kt +++ b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/components/PlayButton.kt @@ -14,7 +14,12 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import fr.ajaury.gwenedeg.player.model.PlaybackState +import fr.ajaury.gwenedeg.resources.generated.resources.Res +import fr.ajaury.gwenedeg.resources.generated.resources.player_pause +import fr.ajaury.gwenedeg.resources.generated.resources.player_play +import fr.ajaury.gwenedeg.resources.generated.resources.player_replay import fr.ajaury.gwenedeg.theme.ChomBevTheme +import org.jetbrains.compose.resources.stringResource @Composable fun PlayButton( @@ -40,11 +45,12 @@ private fun PlaybackState.toActionIcon(): ImageVector = PlaybackState.PAUSED, PlaybackState.IDLE -> Icons.Default.PlayArrow } +@Composable private fun PlaybackState.toActionContentDescription(): String = when (this) { - PlaybackState.PLAYING -> "Pause" - PlaybackState.ENDED -> "Replay" - PlaybackState.PAUSED, PlaybackState.IDLE -> "Play" + PlaybackState.PLAYING -> stringResource(Res.string.player_pause) + PlaybackState.ENDED -> stringResource(Res.string.player_replay) + PlaybackState.PAUSED, PlaybackState.IDLE -> stringResource(Res.string.player_play) } @Preview diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/components/PreviousButton.kt b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/components/PreviousButton.kt index 0b524d4..dce6aa8 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/components/PreviousButton.kt +++ b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/components/PreviousButton.kt @@ -9,7 +9,10 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import fr.ajaury.gwenedeg.resources.generated.resources.Res +import fr.ajaury.gwenedeg.resources.generated.resources.player_previous_sentence import fr.ajaury.gwenedeg.theme.ChomBevTheme +import org.jetbrains.compose.resources.stringResource @Composable fun PreviousButton( @@ -23,7 +26,7 @@ fun PreviousButton( ) { Icon( imageVector = Icons.Default.SkipPrevious, - contentDescription = "Previous sentence", + contentDescription = stringResource(Res.string.player_previous_sentence), ) } } diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/ui/SubtitlePreferencesBottomSheet.kt b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/ui/SubtitlePreferencesBottomSheet.kt index 6fae95a..ace8fc6 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/ui/SubtitlePreferencesBottomSheet.kt +++ b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/ui/SubtitlePreferencesBottomSheet.kt @@ -15,7 +15,14 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences +import fr.ajaury.gwenedeg.resources.generated.resources.Res +import fr.ajaury.gwenedeg.resources.generated.resources.subtitle_preferences_title +import fr.ajaury.gwenedeg.resources.generated.resources.subtitle_transcription_description +import fr.ajaury.gwenedeg.resources.generated.resources.subtitle_transcription_label +import fr.ajaury.gwenedeg.resources.generated.resources.subtitle_translation_description +import fr.ajaury.gwenedeg.resources.generated.resources.subtitle_translation_label import fr.ajaury.gwenedeg.theme.ChomBevTheme +import org.jetbrains.compose.resources.stringResource /** * Bottom sheet letting the user toggle the display of the Breton transcription (BZH) and the @@ -56,18 +63,18 @@ private fun SubtitlePreferencesContent( verticalArrangement = Arrangement.spacedBy(8.dp), ) { Text( - text = "Sous-titres", + text = stringResource(Res.string.subtitle_preferences_title), style = MaterialTheme.typography.titleMedium, ) PreferenceToggle( - title = "Transcription (BZH)", - subtitle = "Afficher la transcription bretonne", + title = stringResource(Res.string.subtitle_transcription_label), + subtitle = stringResource(Res.string.subtitle_transcription_description), checked = subtitlePreferences.showTranscription, onCheckedChange = onShowTranscriptionChange, ) PreferenceToggle( - title = "Traduction (FR)", - subtitle = "Afficher la traduction française", + title = stringResource(Res.string.subtitle_translation_label), + subtitle = stringResource(Res.string.subtitle_translation_description), checked = subtitlePreferences.showTranslation, onCheckedChange = onShowTranslationChange, ) diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/ui/RecordsScreen.kt b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/ui/RecordsScreen.kt index 061c96a..6aa81c2 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/ui/RecordsScreen.kt +++ b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/ui/RecordsScreen.kt @@ -26,13 +26,12 @@ import fr.ajaury.gwenedeg.records.model.Record import fr.ajaury.gwenedeg.records.ui.viewmodel.RecordsViewModel import fr.ajaury.gwenedeg.resources.generated.resources.Res import fr.ajaury.gwenedeg.resources.generated.resources.app_icon +import fr.ajaury.gwenedeg.resources.generated.resources.app_name import fr.ajaury.gwenedeg.theme.ChomBevTheme import org.jetbrains.compose.resources.painterResource +import org.jetbrains.compose.resources.stringResource import org.koin.compose.viewmodel.koinViewModel -/** Display name of the application, shown as the title of the records screen. */ -const val APP_NAME = "Chom bev" - @Composable fun RecordsScreen( viewModel: RecordsViewModel = koinViewModel(), @@ -65,7 +64,7 @@ fun RecordsScreen( contentDescription = null, modifier = Modifier.size(32.dp), ) - Text(text = APP_NAME) + Text(text = stringResource(Res.string.app_name)) } }, )