completed translations + deleted cloned keys

updated sign* key translations to be more consistent with case
updated error handling of signup exceptions
This commit is contained in:
danis
2023-02-07 21:32:12 +03:00
committed by Clément Le Bihan
parent db0142f4f3
commit 69be4ef64a
6 changed files with 125 additions and 123 deletions
+1 -1
View File
@@ -30,7 +30,7 @@ export const protectedRoutes = <>
</>; </>;
export const publicRoutes = <React.Fragment> export const publicRoutes = <React.Fragment>
<Stack.Screen name="Login" component={AuthenticationView} options={{ title: translate('signinBtn')}} /> <Stack.Screen name="Login" component={AuthenticationView} options={{ title: translate('signInBtn')}} />
</React.Fragment>; </React.Fragment>;
export const Router = () => { export const Router = () => {
+107 -107
View File
@@ -1,10 +1,11 @@
export const en = { export const en = {
welcome: 'Welcome', welcome: 'Welcome',
welcomeMessage: 'Welcome back ', welcomeMessage: 'Welcome back ',
signoutBtn: 'Sign out', signOutBtn: 'Sign out',
signinBtn: 'Sign in', signInBtn: 'Sign in',
changeLanguageBtn: "Change language", signUpBtn: 'Sign up',
searchBtn: "Search", changeLanguageBtn: 'Change language',
searchBtn: 'Search',
playBtn: 'Play', playBtn: 'Play',
playAgain: 'Play Again', playAgain: 'Play Again',
songPageBtn: 'Go to song page', songPageBtn: 'Go to song page',
@@ -12,7 +13,6 @@ export const en = {
chapters: 'Chapters', chapters: 'Chapters',
bestScore: 'Best Score', bestScore: 'Best Score',
lastScore: 'Last Score', lastScore: 'Last Score',
play: 'Play',
langBtn: 'Language', langBtn: 'Language',
backBtn: 'Back', backBtn: 'Back',
settingsBtn: 'Settings', settingsBtn: 'Settings',
@@ -20,11 +20,11 @@ export const en = {
notifBtn: 'Notifications', notifBtn: 'Notifications',
privBtn: 'Privacy', privBtn: 'Privacy',
goNextStep: 'Step Up!', goNextStep: 'Step Up!',
mySkillsToImprove: "My Competencies to work on", mySkillsToImprove: 'My Competencies to work on',
recentlyPlayed: 'Recently played', recentlyPlayed: 'Recently played',
search: 'Search',
songsToGetBetter: 'Recommendations', songsToGetBetter: 'Recommendations',
lastSearched: "Last searched", lastSearched: 'Last searched',
levelProgress: 'good notes', levelProgress: 'good notes',
score: 'Score', score: 'Score',
@@ -58,10 +58,8 @@ export const en = {
/* account settings and logs */ /* account settings and logs */
// buttons // buttons
signUp: 'Sign up', 'Must Contain 8 Characters, One Uppercase, One Lowercase, One Number and One Special Case Character': 'Must Contain 8 Characters, One Uppercase, One Lowercase, One Number and One Special Case Character',
signIn: 'Sign in',
"Must Contain 8 Characters, One Uppercase, One Lowercase, One Number and One Special Case Character": "Must Contain 8 Characters, One Uppercase, One Lowercase, One Number and One Special Case Character",
login: 'Login',
// feedback for the user // feedback for the user
usernameTooShort: 'Username is too short', usernameTooShort: 'Username is too short',
@@ -73,7 +71,7 @@ export const en = {
invalidEmail: 'Invalid email', invalidEmail: 'Invalid email',
accountCreated: 'Account created', accountCreated: 'Account created',
loggedIn: 'Logged in', loggedIn: 'Logged in',
precisionScore: "Precision", precisionScore: 'Precision',
goodNotesInARow: 'Good notes in a row', goodNotesInARow: 'Good notes in a row',
usernameTaken: 'Username already taken', usernameTaken: 'Username already taken',
goodNotes: 'good notes', goodNotes: 'good notes',
@@ -87,18 +85,22 @@ export const en = {
changeemailBtn: 'Change Email', changeemailBtn: 'Change Email',
googleacctBtn: 'Google Account', googleacctBtn: 'Google Account',
forgottenPassword: 'Forgotten password', forgottenPassword: 'Forgotten password',
partition: 'Partition', partition: 'Partition',
//errors
unknownError: 'Unknown error', unknownError: 'Unknown error',
errAlrdExst: 'Already exist',
errIncrrct: 'Incorrect Credentials',
}; };
export const fr: typeof en = { export const fr: typeof en = {
welcome: 'Bienvenue', welcome: 'Bienvenue',
welcomeMessage: 'Re-Bonjour ', welcomeMessage: 'Re-Bonjour ',
signoutBtn: 'Se déconnecter', signOutBtn: 'Se déconnecter',
signinBtn: 'Se connecter', signInBtn: 'Se connecter',
changeLanguageBtn: "Changer la langue", changeLanguageBtn: 'Changer la langue',
searchBtn: "Rechercher", searchBtn: 'Rechercher',
playBtn: 'Jouer', playBtn: 'Jouer',
playAgain: 'Rejouer', playAgain: 'Rejouer',
songPageBtn: 'Aller sur la page de la chanson', songPageBtn: 'Aller sur la page de la chanson',
@@ -106,19 +108,17 @@ export const fr: typeof en = {
chapters: 'Chapitres', chapters: 'Chapitres',
bestScore: 'Meilleur Score', bestScore: 'Meilleur Score',
lastScore: 'Dernier Score', lastScore: 'Dernier Score',
play: 'Jouer',
langBtn: 'Langage', langBtn: 'Langage',
backBtn: 'Retour', backBtn: 'Retour',
settingsBtn: "Réglages", settingsBtn: 'Réglages',
prefBtn: 'Préférences', prefBtn: 'Préférences',
notifBtn: 'Notifications', notifBtn: 'Notifications',
privBtn: 'Confidentialité', privBtn: 'Confidentialité',
goNextStep: "Prochaine Etape", goNextStep: 'Prochaine Etape',
mySkillsToImprove: "Mes Skills", mySkillsToImprove: 'Mes Skills',
recentlyPlayed: "Joués récemment", recentlyPlayed: 'Joués récemment',
search: "Rechercher", lastSearched: 'Dernières recherches',
lastSearched: "Dernières recherches", levelProgress: 'Niveau',
levelProgress: "Niveau",
// profile page // profile page
user: 'Profil', user: 'Profil',
@@ -141,94 +141,92 @@ export const fr: typeof en = {
light: 'Clair', light: 'Clair',
// competencies // competencies
pedalsCompetency: "Pédales", pedalsCompetency: 'Pédales',
rightHandCompetency: "Main droite", rightHandCompetency: 'Main droite',
leftHandCompetency: "Main gauche", leftHandCompetency: 'Main gauche',
accuracyCompetency: "Justesse", accuracyCompetency: 'Justesse',
arpegeCompetency: "Arpege", arpegeCompetency: 'Arpege',
chordsCompetency: "Accords", chordsCompetency: 'Accords',
/* account settings and logs */ /* account settings and logs */
// buttons // buttons
signUp: "S'inscrire", 'Must Contain 8 Characters, One Uppercase, One Lowercase, One Number and One Special Case Character': 'Doit contenir 8 caractères, une majuscule, une minuscule, un chiffre et un caractère spécial',
signIn: "Se connecter",
"Must Contain 8 Characters, One Uppercase, One Lowercase, One Number and One Special Case Character": "",
login: 'Se connecter',
// feedback for the user // feedback for the user
usernameTooShort: 'Le nom d\'utilisateur est trop court', usernameTooShort: 'Le nom d\'utilisateur est trop court',
passwordTooShort: 'Le mot de passe est trop court', passwordTooShort: 'Le mot de passe est trop court',
usernameTooLong: 'Le nom d\'utilisateur est trop long', usernameTooLong: 'Le nom d\'utilisateur est trop long',
passwordTooLong: 'Le mot de passe est trop long', passwordTooLong: 'Le mot de passe est trop long',
passwordsDontMatch: "Mots de passes différents", passwordsDontMatch: 'Mots de passes différents',
invalidCredentials: "Informations d'identification invalides", invalidCredentials: 'Identifiants incorrects',
invalidEmail: "Email invalide", invalidEmail: 'Email invalide',
loggedIn: 'Connecté', loggedIn: 'Connecté',
usernameTaken: 'Nom d\'utilisateur déjà pris', usernameTaken: 'Nom d\'utilisateur déjà pris',
accountCreated: "Compte créé", accountCreated: 'Compte créé',
// categories // categories
username: 'Nom d\'utilisateur', username: 'Nom d\'utilisateur',
password: 'Mot de passe', password: 'Mot de passe',
email: "Email", email: 'Email',
repeatPassword: "Confirmer", repeatPassword: 'Confirmer',
score: 'Score', score: 'Score',
precisionScore: "Précision", precisionScore: 'Précision',
goodNotesInARow: 'Bonnes notes à la suite', goodNotesInARow: 'Bonnes notes à la suite',
songsToGetBetter: 'Recommendations', songsToGetBetter: 'Recommendations',
goodNotes: 'bonnes notes', goodNotes: 'bonnes notes',
changepasswdBtn: 'Changer le mot de pass', changepasswdBtn: 'Changer le mot de pass',
changeemailBtn: 'Changer l\'email', changeemailBtn: 'Changer l\'email',
googleacctBtn: 'Compte Google', googleacctBtn: 'Compte Google',
forgottenPassword: "Mot de passe oublié", forgottenPassword: 'Mot de passe oublié',
partition: 'Partition', partition: 'Partition',
signUpBtn: "S'inscrire",
//errors
errAlrdExst: "Utilisateur existe déjà",
unknownError: 'Erreur inconnue', unknownError: 'Erreur inconnue',
errIncrrct: 'Identifiant incorrect',
}; };
export const sp: typeof en = { export const sp: typeof en = {
welcome: 'Benvenido a Chromacase', welcome: 'Benvenido a Chromacase',
welcomeMessage: "Bienvenue", welcomeMessage: 'Benvenido',
signoutBtn: 'Desconectarse', signOutBtn: 'Desconectarse',
signinBtn: 'Connectarse', signInBtn: 'Connectarse',
changepasswdBtn: 'Changer le mot de pass', changepasswdBtn: 'Cambiar la contraseña',
changeemailBtn: 'Change l\'email', changeemailBtn: 'Cambiar e-mail',
googleacctBtn: 'Compte Google', googleacctBtn: 'Cuenta Google',
goodNotes: 'bonnes notes', goodNotes: 'buenas notas',
// competencies // competencies
changeLanguageBtn: "Changer de langue", changeLanguageBtn: 'Cambiar el idioma',
searchBtn: "Rechercher", searchBtn: 'Buscar',
playBtn: "Jouer", playBtn: 'reproducir',
playAgain: 'Rejouer', playAgain: 'Repetición',
precisionScore: "Précision", precisionScore: 'Précision',
songPageBtn: "Chanson", songPageBtn: 'canción',
level: "Niveau", level: 'nivele',
chapters: "Chapitres", chapters: 'Capítulos',
bestScore: "Meilleur Score", bestScore: 'Mejor puntuación',
lastScore: "Dernier score", lastScore: 'Ùltima puntuación',
play: 'Jouer', langBtn: 'idioma',
langBtn: 'Langua',
backBtn: 'Volver', backBtn: 'Volver',
settingsBtn: 'Settings', settingsBtn: 'Ajustes',
prefBtn: 'Préférences', prefBtn: 'Preferencias',
notifBtn: 'Notifications', notifBtn: 'Notificaciones',
privBtn: 'Confidentialité', privBtn: 'Privacidad',
goNextStep: "Passer à l'étape supérieure", goNextStep: 'Da el siguiente paso',
mySkillsToImprove: 'Mes Competences à améliorer', mySkillsToImprove: 'Mis habilidades para mejorar',
recentlyPlayed: "Joués récemment", recentlyPlayed: 'Recientemente jugado',
lastSearched: "Dernières recherches", lastSearched: 'Ultimas búsquedas',
search: 'Rechercher',
levelProgress: 'bonnes notes',
// profile page // profile page
user: 'Profil', user: 'Perfil',
medals: 'Medailles', medals: 'Medallas',
playerStats: 'Mes statistiques', playerStats: 'mis estasticas',
mostPlayedSong: 'Chanson la plus jouée : ', mostPlayedSong: 'Canción más reproducida : ',
goodNotesPlayed: 'Bonnes notes jouées : ', goodNotesPlayed: 'Buenas notas tocadas : ',
longestCombo: 'Combo le plus long : ', longestCombo: 'combo más largo : ',
favoriteGenre: 'Genre favorit : ', favoriteGenre: 'genero favorito : ',
// Difficulty settings // Difficulty settings
diffBtn: 'Dificultad', diffBtn: 'Dificultad',
@@ -242,42 +240,44 @@ export const sp: typeof en = {
light: 'Claro', light: 'Claro',
// competencies // competencies
pedalsCompetency: 'Pédales', pedalsCompetency: 'Pedal',
rightHandCompetency: 'Main droite', rightHandCompetency: 'Mano derecha',
leftHandCompetency: 'Main gauche', leftHandCompetency: 'Mano izquierda',
accuracyCompetency: 'Précision', accuracyCompetency: 'Exactitud',
arpegeCompetency: 'Arpèges', arpegeCompetency: 'Arpegios',
chordsCompetency: 'Accords', chordsCompetency: 'Accords',
/* account settings and logs */ /* account settings and logs */
// buttons // buttons
signUp: 'S\'inscrire', 'Must Contain 8 Characters, One Uppercase, One Lowercase, One Number and One Special Case Character': 'Debe contener 8 caracteres, una mayúscula, una minúscula, un número y un carácter especial',
signIn: 'Se connecter',
"Must Contain 8 Characters, One Uppercase, One Lowercase, One Number and One Special Case Character": "Doit contenir 8 caractères, une majuscule, une minuscule, un chiffre et un caractère spécial",
login: 'Se connecter',
// feedback for the user // feedback for the user
usernameTooShort: 'Le nom d\'utilisateur est trop court', usernameTooShort: 'Nombre de usuario demasiado corto',
passwordTooShort: 'Le mot de passe est trop court', passwordTooShort: 'Contraseña demasiado corta',
usernameTooLong: 'Le nom d\'utilisateur est trop long', usernameTooLong: 'Nombre de usuario demasiado largo',
passwordTooLong: 'Le mot de passe est trop long', passwordTooLong: 'Contraseña demasiado larga',
passwordsDontMatch: 'Les mots de passe ne correspondent pas', passwordsDontMatch: 'Las contraseñas no coinciden',
invalidCredentials: "Informations d'identification invalides", invalidCredentials: 'Credenciales incorrectas',
forgottenPassword: 'Mot de passe oublié', forgottenPassword: 'Contraseña olvidada',
invalidEmail: 'Email invalide', invalidEmail: 'Email inválido',
accountCreated: 'Compte créé', accountCreated: 'Cuenta creada',
loggedIn: 'Connectado', loggedIn: 'Connectado',
usernameTaken: 'Nombre de usuario ya tomado', usernameTaken: 'Nombre de usuario ya tomado',
score: 'Score', score: 'Puntaje',
goodNotesInARow: 'Bonnes notes à la suite', goodNotesInARow: 'Buenas notas despues',
songsToGetBetter: 'Recommendations', songsToGetBetter: 'Recomendaciones',
// categories // categories
username: 'Nom d\'utilisateur', username: 'Nombre del usuario',
password: 'Mot de passe', password: 'Contraseña',
email: 'Email', email: 'Correo electrónico',
repeatPassword: 'Répéter le mot de passe', repeatPassword: 'Repita la contraseña',
partition: 'Partitura',
levelProgress: 'Nivel progreso',
signUpBtn: "Inscribirse",
partition: 'Partition', //errors
unknownError: 'Error desconocido', unknownError: 'Error desconocido',
errAlrdExst: "Ya existe",
errIncrrct: "credenciales incorrectas"
}; };
+4 -2
View File
@@ -26,7 +26,9 @@ const handleSignup = async (username: string, password: string, email: string, a
apiSetter(apiAccess); apiSetter(apiAccess);
return translate("loggedIn"); return translate("loggedIn");
} catch (error) { } catch (error) {
return "User already exists"; if (error instanceof APIError) return translate(error.userMessage);
if (error instanceof Error) return error.message;
return translate("unknownError");
} }
}; };
@@ -43,7 +45,7 @@ const AuthenticationView = () => {
} }
{ mode ==="signin" && <Button variant="outline" marginTop={5} colorScheme="error" >{translate("forgottenPassword")}</Button> } { mode ==="signin" && <Button variant="outline" marginTop={5} colorScheme="error" >{translate("forgottenPassword")}</Button> }
<TextButton <TextButton
translate={{ translationKey: mode === "signin" ? "signUp" : "signIn" }} translate={{ translationKey: mode === "signin" ? "signUpBtn" : "signInBtn" }}
variant='outline' marginTop={5} colorScheme='primary' variant='outline' marginTop={5} colorScheme='primary'
onPress={() => setMode(mode === "signin" ? "signup" : "signin")} onPress={() => setMode(mode === "signin" ? "signup" : "signin")}
/> />
+7 -7
View File
@@ -162,23 +162,23 @@ const PlayView = ({ songId }: PlayViewProps) => {
</Center> </Center>
<Row style={{ flex: 1, height: '100%', justifyContent: 'space-evenly', alignItems: 'center' }}> <Row style={{ flex: 1, height: '100%', justifyContent: 'space-evenly', alignItems: 'center' }}>
<IconButton size='sm' colorScheme='secondary' variant='solid' _icon={{ <IconButton size='sm' colorScheme='secondary' variant='solid' _icon={{
as: Ionicons, as: Ionicons,
name: "play-back" name: "play-back"
}}/> }}/>
<IconButton size='sm' variant='solid' _icon={{ <IconButton size='sm' variant='solid' _icon={{
as: Ionicons, as: Ionicons,
name: paused ? "play" : "pause" name: paused ? "play" : "pause"
}} onPress={() => { }} onPress={() => {
if (paused) { if (paused) {
onResume(); onResume();
} else { } else {
onPause(); onPause();
} }
}}/> }}/>
<Text>{timer.minutes}:{timer.seconds.toString().padStart(2, '0')}</Text> <Text>{timer.minutes}:{timer.seconds.toString().padStart(2, '0')}</Text>
<IconButton size='sm' colorScheme='coolGray' variant='solid' _icon={{ <IconButton size='sm' colorScheme='coolGray' variant='solid' _icon={{
as: Ionicons, as: Ionicons,
name: "stop" name: "stop"
}} onPress={() => { }} onPress={() => {
onEnd(); onEnd();
navigation.navigate('Score') navigation.navigate('Score')
+4 -4
View File
@@ -63,13 +63,13 @@ const ProfilePictureBannerAndLevel = () => {
return ( return (
<View style={{flexDirection: 'row'}}> <View style={{flexDirection: 'row'}}>
<Image source={{ uri : "https://wallpaperaccess.com/full/317501.jpg" }} size="lg" <Image source={{ uri : "https://wallpaperaccess.com/full/317501.jpg" }} size="lg"
style={{ height: imageHeight, width: imageWidth, zIndex:0, opacity: 0.5 }} style={{ height: imageHeight, width: imageWidth, zIndex:0, opacity: 0.5 }}
/> />
<Box zIndex={1} position={"absolute"} marginY={10} marginX={10}> <Box zIndex={1} position={"absolute"} marginY={10} marginX={10}>
<Image borderRadius={100} source={{ uri: profilePic }} <Image borderRadius={100} source={{ uri: profilePic }}
alt="Profile picture" size="lg" alt="Profile picture" size="lg"
style= {{position: 'absolute'}} style= {{position: 'absolute'}}
/> />
<Box w="100%" paddingY={3} paddingLeft={100}> <Box w="100%" paddingY={3} paddingLeft={100}>
<Heading>{username}</Heading> <Heading>{username}</Heading>
<Heading>Level : {level}</Heading> <Heading>Level : {level}</Heading>
+2 -2
View File
@@ -42,7 +42,7 @@ export const MainView = ({navigation}) => {
</Button> </Button>
<Button variant='ghost' onPress={() => dispatch(unsetAccessToken())} > <Button variant='ghost' onPress={() => dispatch(unsetAccessToken())} >
<Translate translationKey='signoutBtn'/> <Translate translationKey='signOutBtn'/>
</Button> </Button>
</Center> </Center>
) )
@@ -103,7 +103,7 @@ export const PreferencesView = ({navigation}) => {
</View> </View>
<View style={{margin: 20}}> <View style={{margin: 20}}>
<Text style={{ textAlign: "center" }}>Color blind mode</Text> <Text style={{ textAlign: 'center' }}>Color blind mode</Text>
<Switch style={{ alignSelf: 'center'}} value={settings.colorBlind} colorScheme="primary" <Switch style={{ alignSelf: 'center'}} value={settings.colorBlind} colorScheme="primary"
onValueChange={(enabled) => { dispatch(updateSettings({ colorBlind: enabled })) }} onValueChange={(enabled) => { dispatch(updateSettings({ colorBlind: enabled })) }}
/> />