feat: multi language support (#254)

* feat: multitranslational support

* - completion of settings page
- completion of sidebar

* sidebar rerendering bug fix

* completion of the lesson navigation & materials page

* completion of the course navigation

* completion of requested languages

* - Implementation of Language Picker
- Rename Bug Fixes

* checkpoint save

* - addition of the language picker to the onboarding.
- addition of the language switcher for the lesson notes.

* merge completion

* initialization of the new branch

* add transition.svelte file

* lesson note bug fix

* feat: add translation migration

* completion of translation

* fix height issue of dropdown

* refactoring

* fix: improve code with LOCALE from db

* finally get it fully functional

* connect with AI

* backward compatibility for lesson note

* preserve old content, when generating AI content

* undo translations in upgrade modal

* fix duplicate key issue from codacy trigger

---------

Co-authored-by: Rotimi Best <[email protected]>
This commit is contained in:
Adeyemi Adetunji
2024-04-19 05:45:48 +01:00
committed by GitHub
co-authored by Rotimi Best
parent ff7d2cee35
commit d75e2f258e
153 changed files with 11264 additions and 1130 deletions
@@ -46,7 +46,7 @@
);
if (doesEmailExist) {
snackbar.error('User Already Exists');
snackbar.error('snackbar.team_members.user_exists');
isLoading = false;
return;
}
@@ -65,7 +65,7 @@
apiError = `${error}`;
console.error('onSendInvite:', error);
snackbar.error(`Failed to send invite, please try again`);
snackbar.error(`snackbar.team_members.invite_fail`);
isLoading = false;
return;
}
@@ -95,7 +95,7 @@
const isLast = index === emails.length - 1;
if (isLast) {
snackbar.success('Invite Sent!');
snackbar.success('snackbar.team_members.invite_sent');
emailsStr = '';
isLoading = false;
@@ -110,7 +110,7 @@
if (error) {
console.error('onRemove:', error);
snackbar.error('Failed to remove user, please try again');
snackbar.error('snackbar.team_members.remove_fail');
} else {
orgTeam.update((team) => [...team.filter((member) => member.id !== id)]);
}