refactor: use string resources for text and content descriptions
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
<resources>
|
||||
<!-- Breton (br) -->
|
||||
<string name="app_name">Chom bev</string>
|
||||
|
||||
<string name="subtitle_preferences_title">Istitloù</string>
|
||||
<string name="subtitle_preferences_action">Gwellvezioù istitloù</string>
|
||||
<string name="subtitle_transcription_label">Treuzskrivañ (BZH)</string>
|
||||
<string name="subtitle_transcription_description">Diskouez an treuzskrivadur brezhonek</string>
|
||||
<string name="subtitle_translation_label">Troidigezh (FR)</string>
|
||||
<string name="subtitle_translation_description">Diskouez an droidigezh c\'hallek</string>
|
||||
|
||||
<string name="playback_speed_title">Tizh al lenn</string>
|
||||
|
||||
<string name="player_back">Distreiñ</string>
|
||||
<string name="player_previous_sentence">Frazenn a-raok</string>
|
||||
<string name="player_next_sentence">Frazenn war-lerc\'h</string>
|
||||
<string name="player_play">Lenn</string>
|
||||
<string name="player_pause">Ehan</string>
|
||||
<string name="player_replay">Adlenn</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,20 @@
|
||||
<resources>
|
||||
<!-- Default locale: French -->
|
||||
<string name="app_name">Chom bev</string>
|
||||
|
||||
<string name="subtitle_preferences_title">Sous-titres</string>
|
||||
<string name="subtitle_preferences_action">Préférences de sous-titrage</string>
|
||||
<string name="subtitle_transcription_label">Transcription (BZH)</string>
|
||||
<string name="subtitle_transcription_description">Afficher la transcription bretonne</string>
|
||||
<string name="subtitle_translation_label">Traduction (FR)</string>
|
||||
<string name="subtitle_translation_description">Afficher la traduction française</string>
|
||||
|
||||
<string name="playback_speed_title">Vitesse de lecture</string>
|
||||
|
||||
<string name="player_back">Retour</string>
|
||||
<string name="player_previous_sentence">Phrase précédente</string>
|
||||
<string name="player_next_sentence">Phrase suivante</string>
|
||||
<string name="player_play">Lire</string>
|
||||
<string name="player_pause">Pause</string>
|
||||
<string name="player_replay">Rejouer</string>
|
||||
</resources>
|
||||
+4
-1
@@ -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(
|
||||
|
||||
@@ -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),
|
||||
)
|
||||
}
|
||||
},
|
||||
|
||||
@@ -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),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
+4
-1
@@ -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),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+12
-5
@@ -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,
|
||||
)
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user