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))
}
},
)