+ Remède is a powerful dictionary developed by its community. It has a large database with over 900 000 french words, synonyms, antonyms, conjugations and rhymes. It also has a corrector and an offline mode. With Remède, never lost your words again.
+
+ Remède is distributed under the CECILL-2.1 license, which is compatible with GPL-3.0 license.
+
+
+ Remède est un dictionnaire puissant développé par sa communauté. Il dispose d'une large base de +900 000 mots, avec des synonymes, des antonymes, des conjugaisons et des rimes. Vous y retrouverez aussi un correcteur et un mode hors ligne. Avec Remède, ne perdez plus vos mots.
+
+ Remède est distribué sous la licence CECILL-2.1, qui est compatible avec la licence GPL-3.0.
+
- + 340 000 mots, mais aussi des rimes, des exemples, un correcteur et plus encore... Remède est bien plus qu'un dictionnaire !
+ {{ $t('landingScreen.functionalities') }}
- Guérir vos maux face au français, c'est possible dès maintenant avec Remède !
+ {{ $t('landingScreen.tagline') }}
- C'est parti
+ {{ $t('letsgo') }}
diff --git a/app/src/components/RemedeLogo.vue b/app/src/components/RemedeLogo.vue
new file mode 100644
index 00000000..423568dc
--- /dev/null
+++ b/app/src/components/RemedeLogo.vue
@@ -0,0 +1,23 @@
+
+
+
+
diff --git a/app/src/components/TabSection.vue b/app/src/components/TabSection.vue
new file mode 100644
index 00000000..3b44804e
--- /dev/null
+++ b/app/src/components/TabSection.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
{{ title }}
+
+
+
+
+
+
+
+
diff --git a/app/src/data/translations/en.json b/app/src/data/translations/en.json
new file mode 100644
index 00000000..0f054edc
--- /dev/null
+++ b/app/src/data/translations/en.json
@@ -0,0 +1,175 @@
+{
+ "dictionary": "Dictionary",
+ "theDictionary": "The dictionary.",
+ "rhymes": "Rhymes",
+ "correction": "Correction",
+ "corrector": "Corrector",
+ "sheets": "Sheets",
+ "bookmarks": "Bookmarks",
+ "settings": "Settings",
+ "about": "About",
+ "back": "Back",
+ "cancel": "Cancel",
+ "apply": "Apply",
+ "confirm": "Confirm",
+ "continue": "Continue",
+ "start": "Start",
+ "letsgo": "Let's go",
+ "delete": "Delete",
+ "close": "Close",
+ "ignore": "Ignore",
+ "credits": "Credits",
+ "license": "License",
+ "remedeData": "Remède data",
+ "sources": "Sources",
+ "error": "Error",
+ "repository": "Github repository",
+ "filters": "Filters",
+ "feminineAll": "All",
+ "errors": {
+ "cannotReadWord": "Cannot read word: {error}",
+ "rhymesSearchFailed": "Failed to search in the rhymes dictionary: {error}"
+ },
+ "bookmark": {
+ "addWordsToBookmarks": "Add words to your bookmarks"
+ },
+ "home": {
+ "wordOfDay": "Word of day",
+ "randomWord": "Random word",
+ "myBookmarks": "My bookmarks",
+ "forYou": "For you",
+ "seeAll": "See all",
+ "askToAddAWord": "Ask to add a word",
+ "report": "Report",
+ "searchWord": "Search a word...",
+ "changelog": "Changelog"
+ },
+ "definition": {
+ "etymologies": "Etymologies",
+ "backToApp": "Back to app",
+ "definition": "Definition",
+ "synonyms": "Synonyms",
+ "noSynonyms": "No synonyms referenced",
+ "antonyms": "Antonyms",
+ "noAntonyms": "No antonyms referenced",
+ "conjugation": "Conjugation",
+ "conjugationMode": "Mode",
+ "conjugationTense": "Tense",
+ "wordNotFound": "This word cannot be found in the Remède dictionary...",
+ "examples": "Examples",
+ "openConjugation": "Open conjugation",
+ "openRhymesDictionary": "Open rhymes dictionary"
+ },
+ "share": {
+ "definitionTitle": "Definition of \"{word}\" on Remède",
+ "definitionDescription": "The definition of word \"{word}\" is on Remède !",
+ "definitionDialogTitle": "Share definition",
+ "sheetTitle": "\"{name}\" on Remède",
+ "sheetDescription": "the french grammar sheet \"{name}\" is on Remède !",
+ "sheetDialogTitle": "Share sheet"
+ },
+ "aboutPage": {
+ "description": "Remède is an open source dictionary built on extern resources.",
+ "moreInformationCredits": "For more information about our data provenance, or how it is built, please visit the documentation on our",
+ "contributors": "Contributors",
+ "donors": "Donors",
+ "contributorsAndDonors": "Contributors & donors",
+ "maintainer": "Maintainer"
+ },
+ "correctionPage": {
+ "corrected": "Corrected text",
+ "placeholder": "Write your text here, we will correct it.",
+ "text": "Text",
+ "edit": "Edit",
+ "correct": "Correct",
+ "recorrect": "Recorrect",
+ "replaceBy": "Replace by",
+ "ignoredError": "Error ignored.",
+ "deleteException": "Remove expection",
+ "copy": "Copy",
+ "backToApp": "Back to application",
+ "backToAppDisclaimer": "Back to app will replaced selected text by corrected text.",
+ "copyAndBackToApp": "Copy and get back to app",
+ "copyAndBackToAppDisclaimer": "Copy the corrected text and get back to previous application. All you have to do is paste the text !",
+ "exceptions": "Exceptions",
+ "noExceptions": "No exceptions added.",
+ "correctionPoweredBy": "Correction powered by",
+ "hostedByRemede": "hosted by Remède"
+ },
+ "sheetPage": {
+ "attributionsTo": "Attributions to",
+ "sheetNotFound": "The sheet cannot be found !",
+ "noSheet": "No sheet"
+ },
+ "rhymesPage": {
+ "rhyme": "Rhyme",
+ "placeholder": "Enter a word",
+ "quality": "Rhyme quality",
+ "qualityPoor": "Poor rhyme",
+ "qualitySufficient": "Sufficient rhyme",
+ "qualityRich": "Rich rhyme",
+ "withElide": "With elide",
+ "elides": "Elides",
+ "femininesOnly": "Feminines only",
+ "feminines": "Feminines",
+ "femininesElidableLabel": "Feminine / Elidable",
+ "syllables": "syllable(s)",
+ "toSyllables": "to",
+ "fromSyllables": "",
+ "syllablesNumber": "Syllables nb.",
+ "addFilter": "Add filter",
+ "noRhymeFound": "No rhyme found for this word and these filters. Use the searchbar above to retry.",
+ "searchErrored" : "The search in the rhyme dictionary has failed.",
+ "syllablesMinimumAbbr": "Syllables min.",
+ "syllablesMaximumAbbr": "Syllables max.",
+ "searchRhymesAbove": "Search rhymes above !",
+ "rhymeNature": "Rhymes nature"
+ },
+ "nature": {
+ "name": "Name",
+ "verb": "Verb",
+ "adverb": "Adverb",
+ "adjective": "Adjective",
+ "pronoun": "Pronoun",
+ "auxiliary": "Auxiliary",
+ "onomatopoeia": "Onomatopoeia"
+ },
+ "settingsPage": {
+ "personalization": "Personalization",
+ "theme": "Theme",
+ "lightTheme": "Light",
+ "darkTheme": "Dark",
+ "tongue": "Tongue",
+ "offlineDictionary": "Offline dictionary",
+ "download": "Download",
+ "downloaded": "downloaded",
+ "downloading": "Downloading...",
+ "downloadSuccess": "Download successfully",
+ "downloadDescription": "The offline dictionary has been downloaded",
+ "downloadLongDescription": "To finish its installation, please restart the application !",
+ "downloadFailed": "Failed to download",
+ "downloadFailedDescription": "The offline dictionary cannot be downloaded: {error}",
+ "updateTo": "Update to",
+ "cannotDownload": "You cannot download the dictionary...",
+ "downloadingDisclaimer": "Please let this page open while the dictionary is downloading.\n\nYou must restart the application after the dictionary has been downloaded.",
+ "workingNormally": "Everything looks ok ! You can start searching words offline !",
+ "problemDetected": "A problem has been detected, please reinstall the dictionary or contact the support."
+ },
+ "sheetsPage": {
+ "placeholder": "Search a sheet",
+ "onlyWorkWithInternet": "Only works with an internet connection !"
+ },
+ "landingScreen": {
+ "welcomeTo": "Welcome to",
+ "yourNewFavoriteDictionary": "Your new favorite dictionary !",
+ "oneAppAllYour": "One application, all your",
+ "words": "words",
+ "functionalities": "+ 900 000 word, but also rhymes, examples, a corrector and more... Remède is much more than a dictionary !",
+ "butAboveAll": "But above all ...",
+ "openSource": "open source",
+ "openSourceDescription": "Yes ! Remède is growing with his community and 100% open source !",
+ "readyToStart": "Ready to enter the ",
+ "adventure": "adventure",
+ "tagline": "Cure your French ills now with Remède !"
+ }
+}
diff --git a/app/src/data/translations/fr.json b/app/src/data/translations/fr.json
new file mode 100644
index 00000000..1dc4766a
--- /dev/null
+++ b/app/src/data/translations/fr.json
@@ -0,0 +1,175 @@
+{
+ "dictionary": "Dictionnaire",
+ "theDictionary": "Le dictionnaire.",
+ "rhymes": "Rimes",
+ "correction": "Correction",
+ "corrector": "Correcteur",
+ "sheets": "Fiches",
+ "bookmarks": "Marques page",
+ "settings": "Paramètres",
+ "about": "À propos",
+ "back": "Retour",
+ "cancel": "Annuler",
+ "apply": "Appliquer",
+ "confirm": "Confirmer",
+ "continue": "Continuer",
+ "start": "Commencer",
+ "letsgo": "C'est parti",
+ "delete": "Supprimer",
+ "close": "Fermer",
+ "ignore": "Ignorer",
+ "credits": "Crédits",
+ "license": "Licence",
+ "remedeData": "Données Remède",
+ "sources": "Sources",
+ "error": "Erreur",
+ "repository": "dépôt Github",
+ "filters": "Filtres",
+ "feminineAll": "Toutes",
+ "errors": {
+ "cannotReadWord": "Impossible de lire le mot: {error}",
+ "rhymesSearchFailed": "La recherche dans le dictionnaire des rimes a échouée: {error}"
+ },
+ "bookmark": {
+ "addWordsToBookmarks": "Ajoutez des mots à vos marques pages"
+ },
+ "home": {
+ "wordOfDay": "Mot du jour",
+ "randomWord": "Mot au hasard",
+ "myBookmarks": "Mes marques page",
+ "forYou": "Pour vous",
+ "seeAll": "Tout voir",
+ "askToAddAWord": "Demander à ajouter un mot",
+ "report": "Reporter",
+ "searchWord": "Rechercher un mot...",
+ "changelog": "Notes de changement"
+ },
+ "definition": {
+ "etymologies": "Étymologies",
+ "backToApp": "Retour à l'application",
+ "definition": "Définition",
+ "synonyms": "Synonymes",
+ "noSynonyms": "Pas de synonymes référencés",
+ "antonyms": "Antonymes",
+ "noAntonyms": "Pas d'antonymes référencés",
+ "conjugation": "Conjugaison",
+ "conjugationMode": "Mode",
+ "conjugationTense": "Temps",
+ "wordNotFound": "Ce mot n'a pas été trouvé dans le dictionnaire Remède...",
+ "examples": "Exemples",
+ "openConjugation": "Ouvrir la conjugaison",
+ "openRhymesDictionary": "Ouvrir le dictionnaire des rimes"
+ },
+ "share": {
+ "definitionTitle": "Définition \"{word}\" sur Remède",
+ "definitionDescription": "La définition du mot \"{word}\" est sur Remède !",
+ "definitionDialogTitle": "Partager la définition",
+ "sheetTitle": "\"{name}\" sur Remède",
+ "sheetDescription": "La fiche de français \"{name}\" est sur Remède !",
+ "sheetDialogTitle": "Partager la fiche"
+ },
+ "aboutPage": {
+ "description": "Remède est un dictionnaire français libre, construit sur plusieurs services tiers.",
+ "moreInformationCredits": "Pour plus d'informations concernant la provenance des données de nos dictionnaires et leur construction, visitez la documentation sur notre",
+ "contributors": "Contributeurs",
+ "donors": "Donateurs",
+ "contributorsAndDonors": "Contributeurs & donateurs",
+ "maintainer": "Mainteneur"
+ },
+ "correctionPage": {
+ "corrected": "Texte corrigé",
+ "placeholder": "Écrivez votre texte ici, nous le corrigerons.",
+ "text": "Texte",
+ "edit": "Éditer",
+ "correct": "Corriger",
+ "recorrect": "Recorriger",
+ "replaceBy": "Remplacer par",
+ "ignoredError": "Erreur ignorée.",
+ "deleteException": "Enlever l'exception",
+ "copy": "Copier",
+ "backToApp": "Retourner à l'application",
+ "backToAppDisclaimer": "Retourner à l'application utilisera le texte corrigé.",
+ "copyAndBackToApp": "Copier et retourner à l'application",
+ "copyAndBackToAppDisclaimer": "Copie le texte corrigé et retourne à l'application précédente. Vous n'aurez plus qu'a coller le texte !",
+ "exceptions": "Exceptions",
+ "noExceptions": "Aucunes exceptions ajoutées.",
+ "correctionPoweredBy": "Correction grâce à",
+ "hostedByRemede": "hébergé par Remède"
+ },
+ "sheetPage": {
+ "attributionsTo": "Attributions à",
+ "sheetNotFound": "La fiche n'a pas été trouvée !",
+ "noSheet": "Pas de fiche"
+ },
+ "rhymesPage": {
+ "rhyme": "Rime",
+ "placeholder": "Entrez un mot",
+ "quality": "Qualité des rimes",
+ "qualityPoor": "Rimes pauvres",
+ "qualitySufficient": "Rimes suffisantes",
+ "qualityRich": "Rimes riches",
+ "withElide": "Avec élide",
+ "elides": "Élides",
+ "femininesOnly": "Féminines seulement",
+ "feminines": "Féminines",
+ "femininesElidableLabel": "Féminine / Élidable",
+ "syllables": "syllabe(s)",
+ "toSyllables": "à",
+ "fromSyllables": "de",
+ "syllablesNumber": "Nb. syllabes",
+ "addFilter": "Ajouter un filtre",
+ "noRhymeFound": "Aucune rimes trouvées dans notre base avec ce mot. Utilisez la barre de recherche ci-dessus.",
+ "searchErrored" : "La recherche dans le dictionnaire des rimes a échouée.",
+ "syllablesMinimumAbbr": "Syllabes min.",
+ "syllablesMaximumAbbr": "Syllabes max.",
+ "searchRhymesAbove": "Recherchez des rimes ci-dessus !",
+ "rhymeNature": "Nature des rimes"
+ },
+ "nature": {
+ "name": "Nom",
+ "verb": "Verbe",
+ "adverb": "Adverbe",
+ "adjective": "Adjectif",
+ "pronoun": "Pronom",
+ "auxiliary": "Auxiliaire",
+ "onomatopoeia": "Onomatopée"
+ },
+ "settingsPage": {
+ "personalization": "Personnalisation",
+ "theme": "Thème",
+ "lightTheme": "Clair",
+ "darkTheme": "Sombre",
+ "tongue": "Langue",
+ "offlineDictionary": "Dictionnaire hors ligne",
+ "download": "Télécharger",
+ "downloaded": "téléchargé",
+ "downloading": "Téléchargement en cours...",
+ "downloadSuccess": "Téléchargement réussi",
+ "downloadDescription": "Le dictionnaire hors-ligne a été téléchargé",
+ "downloadLongDescription": "Pour finaliser son installation, veuillez relancer l'application !",
+ "downloadFailed": "Échec de téléchargement",
+ "downloadFailedDescription": "Le dictionnaire hors-ligne n'a pas pu être téléchargé: {error}",
+ "updateTo": "Mettre à jour vers",
+ "cannotDownload": "Vous ne pouvez pas télécharger le dictionnaire...",
+ "downloadingDisclaimer": "Veuillez ne pas quitter cette page pendant le téléchargement.\n\nIl est conseillé de redémarrer l'application après le téléchargement.",
+ "workingNormally": "Tout semble fonctionner parfaitement. Vous pouvez commencer à chercher des mots hors-ligne !",
+ "problemDetected": "Un problème a été détecté, veuillez réinstaller le dictionnaire ou contacter le support."
+ },
+ "sheetsPage": {
+ "placeholder": "Rechercher une fiche",
+ "onlyWorkWithInternet": "Fonctionne seulement avec une connexion internet !"
+ },
+ "landingScreen": {
+ "welcomeTo": "Bienvenue sur",
+ "yourNewFavoriteDictionary": "Votre nouveau dictionnaire préféré !",
+ "oneAppAllYour": "Une application, tous vos",
+ "words": "mots",
+ "functionalities": "+ 900 000 mots, mais aussi des rimes, des exemples, un correcteur et plus encore... Remède est bien plus qu'un dictionnaire !",
+ "butAboveAll": "Mais surtout ...",
+ "openSource": "open source",
+ "openSourceDescription": "Et oui ! Remède grandi avec sa communauté et est 100% open source !",
+ "readyToStart": "Prêts à entrer dans l'",
+ "adventure": "aventure",
+ "tagline": "Guérir vos maux face au français, c'est possible dès maintenant avec Remède !"
+ }
+}
diff --git a/app/src/functions/animations.ts b/app/src/functions/animations.ts
new file mode 100644
index 00000000..d2ef893f
--- /dev/null
+++ b/app/src/functions/animations.ts
@@ -0,0 +1,19 @@
+import {createAnimation} from "@ionic/vue"
+
+export const defaultRemedeMainToolbarAnimation = (element: Element | Element[] | Node | Node[] | NodeList) => createAnimation()
+ .addElement(element)
+ .duration(250)
+ .fromTo("transform", "translateY(0)", "translateY(-100%)")
+ .fromTo("opacity", "1", "0")
+
+export const defaultRemedeSearchToolbarAnimation = (element: Element | Element[] | Node | Node[] | NodeList) => createAnimation()
+ .addElement(element)
+ .beforeAddClass("mt")
+ .duration(250)
+ .fromTo("transform", "translateY(0)", "translateY(-50%)")
+ .fromTo("scale", "1", "1.01")
+
+export const defaultRemedeContentAnimation = (element: Element | Element[] | Node | Node[] | NodeList) => createAnimation()
+ .addElement(element)
+ .duration(250)
+ .fromTo("transform", "translateY(0)", "translateY(-10%)")
diff --git a/app/src/functions/device.ts b/app/src/functions/device.ts
new file mode 100644
index 00000000..be799a97
--- /dev/null
+++ b/app/src/functions/device.ts
@@ -0,0 +1,6 @@
+import {Device} from "@capacitor/device"
+
+export async function getDeviceLocale() {
+ const locale = await Device.getLanguageCode()
+ return locale.value.includes("-") ? locale.value.split("-")[0]: locale.value
+}
diff --git a/app/src/functions/dictionnary.ts b/app/src/functions/dictionnary.ts
index 25374875..8bd38fd8 100644
--- a/app/src/functions/dictionnary.ts
+++ b/app/src/functions/dictionnary.ts
@@ -42,7 +42,7 @@ async function getRandomWordFromDatabase() {
}
async function doesWordExistsWithAPI(word: string) {
- return (await fetch(`https://api-remede.camarm.fr/word/${word}`).then(resp => resp.json())).message != "Mot non trouvé"
+ return (await fetch(`https://api-remede.camarm.fr/word/${word}`).then(resp => resp.json()).catch(() => { return { message: "Mot non trouvé" } })).message != "Mot non trouvé"
}
async function doesWordExistsWithDatabase(word: string) {
diff --git a/app/src/functions/locales.ts b/app/src/functions/locales.ts
new file mode 100644
index 00000000..09f3aba2
--- /dev/null
+++ b/app/src/functions/locales.ts
@@ -0,0 +1,19 @@
+const locales = {
+ en: "English",
+ fr: "Français",
+ dialects: {
+ en: [
+ "en-GB",
+ "en-US",
+ "en-CA",
+ "en-AU",
+ "en-NZ"
+ ]
+ }
+}
+
+export function hasDialect(locale: string) {
+ return Object.prototype.hasOwnProperty.call(locales.dialects, locale)
+}
+
+export default locales
diff --git a/app/src/functions/offline.ts b/app/src/functions/offline.ts
index 88b2f5d8..a0fb97c3 100644
--- a/app/src/functions/offline.ts
+++ b/app/src/functions/offline.ts
@@ -1,4 +1,4 @@
-import {RemedeDictionaryOption} from "@/functions/types/api_responses"
+import {RemedeDictionaryOption} from "@/functions/types/apiResponses"
import {Directory, Filesystem} from "@capacitor/filesystem"
import {Preferences} from "@capacitor/preferences"
import {Capacitor} from "@capacitor/core"
diff --git a/app/src/functions/sources.ts b/app/src/functions/sources.ts
new file mode 100644
index 00000000..95bcfde5
--- /dev/null
+++ b/app/src/functions/sources.ts
@@ -0,0 +1,24 @@
+const sources = {
+ antonyme_org: {
+ label: "definition.antonyms",
+ url: "http://www.antonyme.org/antonyme/{word}"
+ },
+ synonymo_fr: {
+ label: "definition.synonyms",
+ url: "http://synonymo.fr/synonyme/{word}"
+ },
+ conjuguons_fr: {
+ label: "definition.conjugation",
+ url: "http://conjuguons.fr/conjugaison/verbe/{word}"
+ },
+ fr_wik: {
+ label: "Wiktionnaire",
+ url: "https://fr.wiktionary.org/wiki/{word}"
+ },
+ en_wik: {
+ label: "Wiktionary",
+ url: "https://fr.wiktionary.org/wiki/{word}"
+ }
+}
+
+export default sources
diff --git a/app/src/functions/types/api_responses.ts b/app/src/functions/types/apiResponses.ts
similarity index 100%
rename from app/src/functions/types/api_responses.ts
rename to app/src/functions/types/apiResponses.ts
diff --git a/app/src/i18n.ts b/app/src/i18n.ts
new file mode 100644
index 00000000..9fa4d5ff
--- /dev/null
+++ b/app/src/i18n.ts
@@ -0,0 +1,15 @@
+import { createI18n } from "vue-i18n"
+import frenchTranslations from "@/data/translations/fr.json"
+import englishTranslations from "@/data/translations/en.json"
+
+const globalizationList = {
+ fr: frenchTranslations,
+ en: englishTranslations
+}
+
+export default createI18n({
+ locale: "fr",
+ fallbackLocale: "en",
+ messages: globalizationList,
+ preserveDirectiveContent: true
+})
diff --git a/app/src/main.ts b/app/src/main.ts
index 45ed959b..69ae10f8 100644
--- a/app/src/main.ts
+++ b/app/src/main.ts
@@ -23,12 +23,16 @@ import "@ionic/vue/css/display.css"
/* Theme variables */
import "./theme/variables.css"
+/* For translations */
+import i18n from "./i18n"
+
const app = createApp(App)
.use(IonicVue, {
mode: "ios",
innerHTMLTemplatesEnabled: true
})
.use(router)
+ .use(i18n)
router.isReady().then(() => {
app.mount("#app")
diff --git a/app/src/router/index.ts b/app/src/router/index.ts
index 3dc08583..0f9ecfcb 100644
--- a/app/src/router/index.ts
+++ b/app/src/router/index.ts
@@ -13,47 +13,51 @@ const routes: Array = [
},
{
path: "dictionnaire",
- component: () => import ("../views/HomePage.vue"),
+ name: "dictionnaire",
+ component: () => import ("../views/HomeView.vue"),
},
{
path: "dictionnaire/:mot",
- component: () => import ("../views/WordModal.vue")
+ component: () => import ("../views/DefinitionView.vue")
},
{
path: "search/:mot",
- component: () => import ("../components/SearchModal.vue")
+ component: () => import ("../views/SearchResultsView.vue")
},
{
path: "a-propos",
- component: () => import ("../views/AboutPage.vue")
+ component: () => import ("../views/AboutView.vue")
},
{
path: "correction",
- component: () => import ("../views/CorrectionPage.vue")
+ name: "correction",
+ component: () => import ("../views/CorrectionView.vue")
},
{
path: "fiches",
- component: () => import ("../views/FichesPage.vue")
+ name: "fiches",
+ component: () => import ("../views/SheetsView.vue")
},
{
path: "fiches/:slug",
- component: () => import ("../views/FichePage.vue")
+ component: () => import ("../views/ReadSheetView.vue")
},
{
path: "rimes",
- component: () => import ("../views/RimesPage.vue")
+ name: "rimes",
+ component: () => import ("../views/RhymesDictionaryView.vue")
},
{
path: "rimes/:mot",
- component: () => import ("../views/RimesResults.vue")
+ component: () => import ("../views/RhymesDictionarySearchResultsView.vue")
},
{
path: "parametres",
- component: () => import ("../views/SettingsPage.vue")
+ component: () => import ("../views/SettingsView.vue")
},
{
path: "marques-page",
- component: () => import ("../views/FavoritesPage.vue")
+ component: () => import ("../views/BookmarksView.vue")
}
]
}
diff --git a/app/src/theme/variables.css b/app/src/theme/variables.css
index b1ec7588..15081a26 100644
--- a/app/src/theme/variables.css
+++ b/app/src/theme/variables.css
@@ -3,6 +3,74 @@ http://ionicframework.com/docs/theming/ */
/** Ionic CSS Variables **/
+@keyframes spawn {
+ from {
+ opacity: 0;
+ height: 0;
+ }
+ to {
+ height: auto;
+ opacity: 1;
+ }
+}
+
+.hidden {
+ display: none;
+}
+
+@media (max-width: 1000px) {
+ .hidden-mobile {
+ display: none;
+ }
+}
+
+@media (min-width: 1000px) {
+ .hidden-desktop {
+ display: none;
+ }
+
+ .hidden-mobile {
+ transition: .5s ease-in-out;
+ animation: .5s ease-in-out spawn;
+ }
+
+ .radius-0 {
+ border-radius: 0;
+ }
+
+ ion-list.list-inset:not(.search-results,.corrector,.fullwidth) {
+ scale: 1.02;
+ margin-inline-start: calc(var(--margin-start, 16px) + 1em) !important;
+ max-width: 60%;
+ margin: 16px auto;
+ }
+
+ .corrector ion-textarea, .corrector .correction-content {
+ min-height: 10em !important;
+ }
+
+ ion-menu {
+ width: max-content;
+ }
+
+ ion-toolbar.hidden-desktop + ion-toolbar {
+ margin-top: 1em;
+ }
+
+ .mt {
+ margin-top: 2.5em !important;
+ }
+
+ .no-desktop-swiper .swiper-slide {
+ max-width: 30% !important;
+ margin-right: 1em;
+ }
+
+ .no-desktop-swiper .swiper-pagination {
+ display: none;
+ }
+}
+
@font-face {
font-family: "IMBPlexSerif";
font-weight: normal;
@@ -328,3 +396,16 @@ html {
https://ionicframework.com/docs/layout/dynamic-font-scaling */
--ion-dynamic-font: var(--ion-default-dynamic-font);
}
+
+
+body.dark .new-version {
+ content: url("@/assets/newVersionDark.png");
+}
+
+body.dark .new-base {
+ content: url("@/assets/newBaseDark.png");
+}
+
+body.dark .changelog {
+ content: url("@/assets/changelogDark.png");
+}
diff --git a/app/src/views/AboutPage.vue b/app/src/views/AboutView.vue
similarity index 87%
rename from app/src/views/AboutPage.vue
rename to app/src/views/AboutView.vue
index 23503669..c450a41c 100644
--- a/app/src/views/AboutPage.vue
+++ b/app/src/views/AboutView.vue
@@ -14,17 +14,17 @@
- À propos
+ {{ $t('about') }}
- Remède est un dictionnaire français libre, construit sur plusieurs services tiers.
+ {{ $t('aboutPage.description') }}
- Pour plus d'informations concernant la provenance des données de nos dictionnaires et leur construction, visitez la documentation sur notre
- dépôt Github.
+ {{ $t('aboutPage.moreInformationCredits') }}
+ {{ $t('repository') }}.
- Copier et retourner à l'application
- Retourner à l'application
+ {{ $t('correctionPage.copyAndBackToApp') }}
+ {{ $t('correctionPage.backToApp') }}
- Copie le texte corrigé et retourne à l'application précédente. Vous n'aurez plus qu'a coller le texte !
+ {{ $t('correctionPage.copyAndBackToAppDisclaimer') }}
- Retourner à l'application utilisera le texte corrigé.
+ {{ $t('correctionPage.backToAppDisclaimer') }}
- Correction grâce à Languagetool, hébergé par Remède.
+ {{ $t('correctionPage.correctionPoweredBy') }} Languagetool, {{ $t('correctionPage.hostedByRemede') }}.