diff --git a/frontend/lang/messages/af-ZA.json b/frontend/lang/messages/af-ZA.json index 500ec77b0..38fd59a9a 100644 --- a/frontend/lang/messages/af-ZA.json +++ b/frontend/lang/messages/af-ZA.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Sleutelwoord", "link-copied": "Skakel gekopieer", + "loading": "Loading", "loading-events": "Besig om gebeurtenisse te laai", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/ar-SA.json b/frontend/lang/messages/ar-SA.json index 26df7e49c..4b796b031 100644 --- a/frontend/lang/messages/ar-SA.json +++ b/frontend/lang/messages/ar-SA.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "كلمة مفتاحية", "link-copied": "تمّ نسْخ الرّابط", + "loading": "Loading", "loading-events": "جاري تحميل الأحداث", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/bg-BG.json b/frontend/lang/messages/bg-BG.json index aeafe1064..11febfb89 100644 --- a/frontend/lang/messages/bg-BG.json +++ b/frontend/lang/messages/bg-BG.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Ключова дума", "link-copied": "Линкът е копиран", + "loading": "Loading", "loading-events": "Зареждане на събития", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/ca-ES.json b/frontend/lang/messages/ca-ES.json index 8548108da..2063e6b12 100644 --- a/frontend/lang/messages/ca-ES.json +++ b/frontend/lang/messages/ca-ES.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Paraula clau", "link-copied": "S'ha copiat l'enllaç", + "loading": "Loading", "loading-events": "Carregant esdeveniments", "loading-recipe": "Carregant la recepta...", "loading-ocr-data": "Carregant les dades OCR...", diff --git a/frontend/lang/messages/cs-CZ.json b/frontend/lang/messages/cs-CZ.json index a3e601a38..e0a639828 100644 --- a/frontend/lang/messages/cs-CZ.json +++ b/frontend/lang/messages/cs-CZ.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Klíčové slovo", "link-copied": "Odkaz zkopírován", + "loading": "Loading", "loading-events": "Načítání událostí", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/da-DK.json b/frontend/lang/messages/da-DK.json index 67c6749f8..b134ec3f4 100644 --- a/frontend/lang/messages/da-DK.json +++ b/frontend/lang/messages/da-DK.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Nøgleord", "link-copied": "Link kopieret", + "loading": "Indlæser", "loading-events": "Indlæser hændelser", "loading-recipe": "Indlæser opskrift...", "loading-ocr-data": "Indlæser OCR data...", diff --git a/frontend/lang/messages/de-DE.json b/frontend/lang/messages/de-DE.json index fb41f7a90..5f30a19b8 100644 --- a/frontend/lang/messages/de-DE.json +++ b/frontend/lang/messages/de-DE.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Schlüsselwort", "link-copied": "Link kopiert", + "loading": "Wird geladen...", "loading-events": "Ereignisse werden geladen", "loading-recipe": "Lade Rezept...", "loading-ocr-data": "Lade OCR-Daten...", diff --git a/frontend/lang/messages/el-GR.json b/frontend/lang/messages/el-GR.json index 8df01b72e..233223d7d 100644 --- a/frontend/lang/messages/el-GR.json +++ b/frontend/lang/messages/el-GR.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Λέξη-κλειδί", "link-copied": "Ο Σύνδεσμος Αντιγράφηκε", + "loading": "Loading", "loading-events": "Loading Events", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/en-GB.json b/frontend/lang/messages/en-GB.json index bd2444b18..d2087b553 100644 --- a/frontend/lang/messages/en-GB.json +++ b/frontend/lang/messages/en-GB.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Keyword", "link-copied": "Link Copied", + "loading": "Loading", "loading-events": "Loading Events", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/en-US.json b/frontend/lang/messages/en-US.json index 07b577d6f..dc817971e 100644 --- a/frontend/lang/messages/en-US.json +++ b/frontend/lang/messages/en-US.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Keyword", "link-copied": "Link Copied", + "loading": "Loading", "loading-events": "Loading Events", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/es-ES.json b/frontend/lang/messages/es-ES.json index e5fa33539..f7c677361 100644 --- a/frontend/lang/messages/es-ES.json +++ b/frontend/lang/messages/es-ES.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Etiqueta", "link-copied": "Enlace copiado", + "loading": "Loading", "loading-events": "Cargando Eventos", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/fi-FI.json b/frontend/lang/messages/fi-FI.json index 87cbaedf3..c2a18e22e 100644 --- a/frontend/lang/messages/fi-FI.json +++ b/frontend/lang/messages/fi-FI.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Hakusana", "link-copied": "Linkki kopioitu", + "loading": "Loading", "loading-events": "Ladataan tapahtumia", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/fr-CA.json b/frontend/lang/messages/fr-CA.json index c77b2a592..893e78a35 100644 --- a/frontend/lang/messages/fr-CA.json +++ b/frontend/lang/messages/fr-CA.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Mot-clé", "link-copied": "Lien copié", + "loading": "Chargement", "loading-events": "Chargement des événements", "loading-recipe": "Chargement de la recette...", "loading-ocr-data": "Chargement des données OCR...", @@ -875,7 +876,7 @@ "user-management": "Gestion des utilisateurs", "reset-locked-users": "Réinitialiser les utilisateurs verrouillés", "admin-user-creation": "Création d'un utilisateur admin", - "admin-user-management": "Admin User Management", + "admin-user-management": "Administration des utilisateurs", "user-details": "Détails de l'utilisateur", "user-name": "Nom d'utilisateur", "authentication-method": "Méthode d'authentification", diff --git a/frontend/lang/messages/fr-FR.json b/frontend/lang/messages/fr-FR.json index 865d9b6b8..da173c2f1 100644 --- a/frontend/lang/messages/fr-FR.json +++ b/frontend/lang/messages/fr-FR.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Mot-clé", "link-copied": "Lien copié", + "loading": "Chargement", "loading-events": "Chargement des événements", "loading-recipe": "Chargement de la recette...", "loading-ocr-data": "Chargement des données OCR...", diff --git a/frontend/lang/messages/gl-ES.json b/frontend/lang/messages/gl-ES.json index 3360631b1..9ec781a10 100644 --- a/frontend/lang/messages/gl-ES.json +++ b/frontend/lang/messages/gl-ES.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Keyword", "link-copied": "Link Copied", + "loading": "Loading", "loading-events": "Loading Events", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/he-IL.json b/frontend/lang/messages/he-IL.json index 14d79cc70..424af4891 100644 --- a/frontend/lang/messages/he-IL.json +++ b/frontend/lang/messages/he-IL.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "מילת מפתח", "link-copied": "קישור הועתק", + "loading": "Loading", "loading-events": "טוען", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/hr-HR.json b/frontend/lang/messages/hr-HR.json index 6a537e77f..508e76382 100644 --- a/frontend/lang/messages/hr-HR.json +++ b/frontend/lang/messages/hr-HR.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Ključna riječ", "link-copied": "Poveznica kopirana", + "loading": "Loading", "loading-events": "Učitavanje događaja", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/hu-HU.json b/frontend/lang/messages/hu-HU.json index f895e5016..66f2b10ec 100644 --- a/frontend/lang/messages/hu-HU.json +++ b/frontend/lang/messages/hu-HU.json @@ -77,7 +77,7 @@ "tag-events": "Címke események", "category-events": "Kategória események", "when-a-new-user-joins-your-group": "Amikor egy új felhasználó csatlakozik a csoportodba", - "recipe-events": "Recipe Events" + "recipe-events": "Recept esemény" }, "general": { "cancel": "Mégsem", @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Kulcsszó", "link-copied": "Hivatkozás másolva", + "loading": "Loading", "loading-events": "Események betöltése", "loading-recipe": "Recept betöltése...", "loading-ocr-data": "OCR adatok betöltése...", @@ -590,7 +591,7 @@ "import-summary": "Import összefoglaló", "partial-backup": "Részleges biztonsági mentés", "unable-to-delete-backup": "Nem lehetett létrehozni a biztonsági mentést.", - "experimental-description": "Backups a total snapshots of the database and data directory of the site. This includes all data and cannot be set to exclude subsets of data. You can think off this as a snapshot of Mealie at a specific time. Currently, {not-crossed-version} (data migrations are not done automatically). These serve as a database agnostic way to export and import data or backup the site to an external location.", + "experimental-description": "A biztonsági mentések az oldal adatbázisának és adatkönyvtárának teljes pillanatfelvételei. Ez az összes adatot tartalmazza, és nem lehet beállítani, hogy az adatok részhalmazait kizárja. Ezt úgy is elképzelheti, mint a Mealie egy adott időpontban készült pillanatfelvételét. Ezek adatbázis-független módon szolgálnak az adatok exportálására és importálására, vagy a webhely külső helyre történő mentésére.", "backup-restore": "Biztonsági Mentés/Visszaállítás", "back-restore-description": "A biztonsági mentés visszaállítása felülírja az adatbázisban és az adatkönyvtárban lévő összes aktuális adatot, és a biztonsági mentés tartalmával helyettesíti azokat. {cannot-be-undone} Ha a visszaállítás sikeres, akkor a rendszer kilépteti Önt.", "cannot-be-undone": "Ezt a műveletet visszavonható - óvatosan használja.", @@ -1056,8 +1057,8 @@ "click": "Kattintson bármelyik mezőre a jobb oldalon, majd kattintson vissza a kép feletti téglalapra.", "result": "A kiválasztott szöveg a korábban kiválasztott mezőben jelenik meg." }, - "pan-and-zoom-mode": "Pan and Zoom Mode", - "pan-and-zoom-desc": "Select pan and zoom by clicking the icon. This mode allows to zoom inside the image and move around to make using big images easier.", + "pan-and-zoom-mode": "Pásztázás és nagyítás mód", + "pan-and-zoom-desc": "Válassza ki a pásztázást és a nagyítást az ikonra kattintva. Ez a mód lehetővé teszi a kép nagyítását és mozgását a nagy képek használatának megkönnyítése érdekében.", "split-text-mode": "Szöveg felosztási módok", "split-modes": { "line-mode": "Vonal mód (alapértelmezett)", @@ -1113,7 +1114,7 @@ "show-individual-confidence": "", "ingredient-text": "Hozzávaló szöveg", "average-confident": "{0} Confident", - "try-an-example": "Próbáld ki", + "try-an-example": "Próbáljon ki egy példát", "parser": "Szintaxis elemző", "background-tasks": "Háttér folyamatok", "background-tasks-description": "Itt megtekintheti az összes futó háttérfeladatot és azok állapotát", diff --git a/frontend/lang/messages/it-IT.json b/frontend/lang/messages/it-IT.json index 81472b245..a8e604720 100644 --- a/frontend/lang/messages/it-IT.json +++ b/frontend/lang/messages/it-IT.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Parola chiave", "link-copied": "Link Copiato", + "loading": "Loading", "loading-events": "Caricamento eventi", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/ja-JP.json b/frontend/lang/messages/ja-JP.json index 5f5d63e39..0f5743dc2 100644 --- a/frontend/lang/messages/ja-JP.json +++ b/frontend/lang/messages/ja-JP.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "キーワード", "link-copied": "リンクをコピーしました。", + "loading": "Loading", "loading-events": "Loading Events", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/ko-KR.json b/frontend/lang/messages/ko-KR.json index 838fa1555..62265a46f 100644 --- a/frontend/lang/messages/ko-KR.json +++ b/frontend/lang/messages/ko-KR.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "키워드", "link-copied": "링크 복사됨", + "loading": "Loading", "loading-events": "이벤트를 불러오는 중", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/lt-LT.json b/frontend/lang/messages/lt-LT.json index acba8d679..f4aec6855 100644 --- a/frontend/lang/messages/lt-LT.json +++ b/frontend/lang/messages/lt-LT.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Raktažodis", "link-copied": "Nuoroda nukopijuota", + "loading": "Loading", "loading-events": "Užkrovimo įvykiai", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/lv-LV.json b/frontend/lang/messages/lv-LV.json index 3360631b1..9ec781a10 100644 --- a/frontend/lang/messages/lv-LV.json +++ b/frontend/lang/messages/lv-LV.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Keyword", "link-copied": "Link Copied", + "loading": "Loading", "loading-events": "Loading Events", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/nl-NL.json b/frontend/lang/messages/nl-NL.json index 36621481a..d38ae20bf 100644 --- a/frontend/lang/messages/nl-NL.json +++ b/frontend/lang/messages/nl-NL.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Trefwoord", "link-copied": "Link Gekopieerd", + "loading": "Bezig met laden", "loading-events": "Gebeurtenis laden", "loading-recipe": "Recepten ophalen...", "loading-ocr-data": "OCR gegevens laden...", diff --git a/frontend/lang/messages/no-NO.json b/frontend/lang/messages/no-NO.json index 60fc80724..c7766e61f 100644 --- a/frontend/lang/messages/no-NO.json +++ b/frontend/lang/messages/no-NO.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Nøkkelord", "link-copied": "Lenke kopiert", + "loading": "Loading", "loading-events": "Laster hendelser", "loading-recipe": "Laster oppskrift...", "loading-ocr-data": "Laster OCR data...", diff --git a/frontend/lang/messages/pl-PL.json b/frontend/lang/messages/pl-PL.json index 019e607df..cc0f612bd 100644 --- a/frontend/lang/messages/pl-PL.json +++ b/frontend/lang/messages/pl-PL.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Słowo kluczowe", "link-copied": "Odnośnik skopiowany", + "loading": "Loading", "loading-events": "Ładowanie wydarzeń", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/pt-BR.json b/frontend/lang/messages/pt-BR.json index 3ffbf2b72..5629b6e60 100644 --- a/frontend/lang/messages/pt-BR.json +++ b/frontend/lang/messages/pt-BR.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Palavra chave", "link-copied": "Link Copiado", + "loading": "Loading", "loading-events": "Carregando eventos", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/pt-PT.json b/frontend/lang/messages/pt-PT.json index ac59c05a6..a460d7800 100644 --- a/frontend/lang/messages/pt-PT.json +++ b/frontend/lang/messages/pt-PT.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Palavra-chave", "link-copied": "Ligação copiada", + "loading": "Loading", "loading-events": "A carregar Eventos", "loading-recipe": "A carregar receita...", "loading-ocr-data": "A carregar dados OCR...", diff --git a/frontend/lang/messages/ro-RO.json b/frontend/lang/messages/ro-RO.json index f66117834..5ff0eff60 100644 --- a/frontend/lang/messages/ro-RO.json +++ b/frontend/lang/messages/ro-RO.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Cuvânt cheie", "link-copied": "Link copiat", + "loading": "Loading", "loading-events": "Se încarcă evenimentele", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/ru-RU.json b/frontend/lang/messages/ru-RU.json index b4ca7c598..aac7839f9 100644 --- a/frontend/lang/messages/ru-RU.json +++ b/frontend/lang/messages/ru-RU.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Ключевое слово", "link-copied": "Ссылка скопирована", + "loading": "Loading", "loading-events": "Загрузка событий", "loading-recipe": "Загрузка рецепта...", "loading-ocr-data": "Загрузка данных OCR...", diff --git a/frontend/lang/messages/sk-SK.json b/frontend/lang/messages/sk-SK.json index 5ee9e1106..8db308b15 100644 --- a/frontend/lang/messages/sk-SK.json +++ b/frontend/lang/messages/sk-SK.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Kľučové slovo", "link-copied": "Odkaz bol skopírovaný", + "loading": "Loading", "loading-events": "Načítanie udalostí", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/sl-SI.json b/frontend/lang/messages/sl-SI.json index 589d8b213..44711a049 100644 --- a/frontend/lang/messages/sl-SI.json +++ b/frontend/lang/messages/sl-SI.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Ključna beseda", "link-copied": "Povezava kopirana", + "loading": "Loading", "loading-events": "Loading Events", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/sr-SP.json b/frontend/lang/messages/sr-SP.json index 0d7d724f1..abe70ba0e 100644 --- a/frontend/lang/messages/sr-SP.json +++ b/frontend/lang/messages/sr-SP.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Ključna reč", "link-copied": "Линк је копиран", + "loading": "Loading", "loading-events": "Учитавање догађаја", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/sv-SE.json b/frontend/lang/messages/sv-SE.json index 5ac9cd981..79844cb28 100644 --- a/frontend/lang/messages/sv-SE.json +++ b/frontend/lang/messages/sv-SE.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Nyckelord", "link-copied": "Länk kopierad", + "loading": "Loading", "loading-events": "Laddar händelser", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/tr-TR.json b/frontend/lang/messages/tr-TR.json index 4b629b2a4..ead75672c 100644 --- a/frontend/lang/messages/tr-TR.json +++ b/frontend/lang/messages/tr-TR.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Anahtar Kelime", "link-copied": "Bağlantı Kopyalandı", + "loading": "Loading", "loading-events": "Etkinlikler yükleniyor", "loading-recipe": "Loading recipe...", "loading-ocr-data": "OCR verileri yükleniyor...", diff --git a/frontend/lang/messages/uk-UA.json b/frontend/lang/messages/uk-UA.json index 2c93cc89a..b027407dc 100644 --- a/frontend/lang/messages/uk-UA.json +++ b/frontend/lang/messages/uk-UA.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Ключове слово", "link-copied": "Посилання скопійовано", + "loading": "Завантаження", "loading-events": "Завантаження подій", "loading-recipe": "Завантаження рецепта...", "loading-ocr-data": "Завантаження даних OCR...", diff --git a/frontend/lang/messages/vi-VN.json b/frontend/lang/messages/vi-VN.json index e9b9e3d7c..8e790220b 100644 --- a/frontend/lang/messages/vi-VN.json +++ b/frontend/lang/messages/vi-VN.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "Keyword", "link-copied": "Link Copied", + "loading": "Loading", "loading-events": "Loading Events", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/zh-CN.json b/frontend/lang/messages/zh-CN.json index 0775a5c06..3be043c57 100644 --- a/frontend/lang/messages/zh-CN.json +++ b/frontend/lang/messages/zh-CN.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "关键字", "link-copied": "链接已复制", + "loading": "Loading", "loading-events": "正在加载事件", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/lang/messages/zh-TW.json b/frontend/lang/messages/zh-TW.json index 3dd04feb1..9ac4f4549 100644 --- a/frontend/lang/messages/zh-TW.json +++ b/frontend/lang/messages/zh-TW.json @@ -114,6 +114,7 @@ "json": "JSON", "keyword": "關鍵字", "link-copied": "已複製連結", + "loading": "Loading", "loading-events": "Loading Events", "loading-recipe": "Loading recipe...", "loading-ocr-data": "Loading OCR data...", diff --git a/frontend/pages/admin/site-settings.vue b/frontend/pages/admin/site-settings.vue index c4d64ad93..433674c69 100644 --- a/frontend/pages/admin/site-settings.vue +++ b/frontend/pages/admin/site-settings.vue @@ -130,40 +130,47 @@ - - - - {{ property.icon || $globals.icons.user }} - - - - {{ property.name }} - - - - + + + + + {{ property.icon || $globals.icons.user }} + + + + {{ property.name }} + + + + + {{ property.value }} + + + + + + + {{ property.value }} + + + + + {{ property.value }} - - - - - - - {{ property.value }} - - - - - - {{ property.value }} - - - - - + + + + + + + + + + + @@ -186,6 +193,7 @@ import { useAdminApi, useUserApi } from "~/composables/api"; import { validators } from "~/composables/use-validators"; import { useAsyncKey } from "~/composables/use-utils"; import { CheckAppConfig } from "~/lib/api/types/admin"; +import AppLoader from "~/components/global/AppLoader.vue"; enum DockerVolumeState { Unknown = "unknown", @@ -208,294 +216,257 @@ interface CheckApp extends CheckAppConfig { } export default defineComponent({ - layout: "admin", - setup() { - // ========================================================== - // Docker Volume Validation - const docker = reactive({ - loading: false, - state: DockerVolumeState.Unknown, - }); - - async function dockerValidate() { - docker.loading = true; - - // Do API Check - const { data } = await adminApi.about.checkDocker(); - if (data == null) { - docker.state = DockerVolumeState.Error; - return; - } - - // Get File Contents - const { data: fileContents } = await adminApi.about.getDockerValidateFileContents(); - - if (data.text === fileContents) { - docker.state = DockerVolumeState.Success; - } else { - docker.state = DockerVolumeState.Error; - } - - docker.loading = false; - } - - const state = reactive({ - loading: false, - address: "", - success: false, - error: "", - tested: false, - }); - - const appConfig = ref({ - emailReady: true, - baseUrlSet: true, - isSiteSecure: true, - isUpToDate: false, - ldapReady: false, - }); - - function isLocalHostOrHttps() { - return window.location.hostname === "localhost" || window.location.protocol === "https:"; - } - - const api = useUserApi(); - const adminApi = useAdminApi(); - - onMounted(async () => { - const { data } = await adminApi.about.checkApp(); - - if (data) { - appConfig.value = { ...data, isSiteSecure: false }; - } - - appConfig.value.isSiteSecure = isLocalHostOrHttps(); - }); - - const simpleChecks = computed(() => { - const goodIcon = $globals.icons.checkboxMarkedCircle; - const badIcon = $globals.icons.alert; - const warningIcon = $globals.icons.alertCircle; - - const goodColor = "success"; - const badColor = "error"; - const warningColor = "warning"; - - - const data: SimpleCheck[] = [ - { - id: "application-version", - text: i18n.t("settings.application-version"), - status: appConfig.value.isUpToDate, - errorText: i18n.t("settings.application-version-error-text", [rawAppInfo.value.version, rawAppInfo.value.versionLatest]), - successText: i18n.t("settings.mealie-is-up-to-date"), - color: appConfig.value.isUpToDate ? goodColor : warningColor, - icon: appConfig.value.isUpToDate ? goodIcon : warningIcon, - }, - { - id: "secure-site", - text: i18n.t("settings.secure-site"), - status: appConfig.value.isSiteSecure, - errorText: i18n.t("settings.secure-site-error-text"), - successText: i18n.t("settings.secure-site-success-text"), - color: appConfig.value.isSiteSecure ? goodColor : badColor, - icon: appConfig.value.isSiteSecure ? goodIcon : badIcon, - }, - { - id: "server-side-base-url", - text: i18n.t("settings.server-side-base-url"), - status: appConfig.value.baseUrlSet, - errorText: - i18n.t("settings.server-side-base-url-error-text"), - successText: i18n.t("settings.server-side-base-url-success-text"), - color: appConfig.value.baseUrlSet ? goodColor : badColor, - icon: appConfig.value.baseUrlSet ? goodIcon : badIcon, - }, - { - id: "ldap-ready", - text: i18n.t("settings.ldap-ready"), - status: appConfig.value.ldapReady, - errorText: - i18n.t("settings.ldap-ready-error-text"), - successText: i18n.t("settings.ldap-ready-success-text"), - color: appConfig.value.ldapReady ? goodColor : warningColor, - icon: appConfig.value.ldapReady ? goodIcon : warningIcon, - }, - ]; - - return data; - }); - - async function testEmail() { - state.loading = true; - state.tested = false; - const { data } = await api.email.test({ email: state.address }); - - if (data) { - if (data.success) { - state.success = true; - } else { - state.error = data.error ?? ""; - state.success = false; + layout: "admin", + setup() { + // ========================================================== + // Docker Volume Validation + const docker = reactive({ + loading: false, + state: DockerVolumeState.Unknown, + }); + async function dockerValidate() { + docker.loading = true; + // Do API Check + const { data } = await adminApi.about.checkDocker(); + if (data == null) { + docker.state = DockerVolumeState.Error; + return; + } + // Get File Contents + const { data: fileContents } = await adminApi.about.getDockerValidateFileContents(); + if (data.text === fileContents) { + docker.state = DockerVolumeState.Success; + } + else { + docker.state = DockerVolumeState.Error; + } + docker.loading = false; } - } - state.loading = false; - state.tested = true; - } - - const validEmail = computed(() => { - if (state.address === "") { - return false; - } - const valid = validators.email(state.address); - - // Explicit bool check because validators.email sometimes returns a string - if (valid === true) { - return true; - } - return false; - }); - - // ============================================================ - // General About Info - - const { $globals, i18n } = useContext(); - - const rawAppInfo = ref({ - version: "null", - versionLatest: "null", - }); - - function getAppInfo() { - const statistics = useAsync(async () => { - const { data } = await adminApi.about.about(); - - if (data) { - rawAppInfo.value.version = data.version; - rawAppInfo.value.versionLatest = data.versionLatest; - - const prettyInfo = [ - { - name: i18n.t("about.version"), - icon: $globals.icons.information, - value: data.version, - }, - { - slot: "build", - name: i18n.t("settings.build"), - icon: $globals.icons.information, - value: data.buildId, - }, - { - name: i18n.t("about.application-mode"), - icon: $globals.icons.devTo, - value: data.production ? i18n.t("about.production") : i18n.t("about.development"), - }, - { - name: i18n.t("about.demo-status"), - icon: $globals.icons.testTube, - value: data.demoStatus ? i18n.t("about.demo") : i18n.t("about.not-demo"), - }, - { - name: i18n.t("about.api-port"), - icon: $globals.icons.api, - value: data.apiPort, - }, - { - name: i18n.t("about.api-docs"), - icon: $globals.icons.file, - value: data.apiDocs ? i18n.t("general.enabled") : i18n.t("general.disabled"), - }, - { - name: i18n.t("about.database-type"), - icon: $globals.icons.database, - value: data.dbType, - }, - { - name: i18n.t("about.database-url"), - icon: $globals.icons.database, - value: data.dbUrl, - }, - { - name: i18n.t("about.default-group"), - icon: $globals.icons.group, - value: data.defaultGroup, - }, - { - slot: "recipe-scraper", - name: i18n.t("settings.recipe-scraper-version"), - icon: $globals.icons.primary, - value: data.recipeScraperVersion, - }, - ]; - - return prettyInfo; + const state = reactive({ + loading: false, + address: "", + success: false, + error: "", + tested: false, + }); + const appConfig = ref({ + emailReady: true, + baseUrlSet: true, + isSiteSecure: true, + isUpToDate: false, + ldapReady: false, + }); + function isLocalHostOrHttps() { + return window.location.hostname === "localhost" || window.location.protocol === "https:"; } - - return data; - }, useAsyncKey()); - - return statistics; - } - - const appInfo = getAppInfo(); - - const bugReportDialog = ref(false); - - const bugReportText = computed(() => { - const ignore = { - [i18n.tc("about.database-url")]: true, - [i18n.tc("about.default-group")]: true, - }; - let text = "**Details**\n"; - - appInfo.value?.forEach((item) => { - if (ignore[item.name as string]) { - return; + const api = useUserApi(); + const adminApi = useAdminApi(); + onMounted(async () => { + const { data } = await adminApi.about.checkApp(); + if (data) { + appConfig.value = { ...data, isSiteSecure: false }; + } + appConfig.value.isSiteSecure = isLocalHostOrHttps(); + }); + const simpleChecks = computed(() => { + const goodIcon = $globals.icons.checkboxMarkedCircle; + const badIcon = $globals.icons.alert; + const warningIcon = $globals.icons.alertCircle; + const goodColor = "success"; + const badColor = "error"; + const warningColor = "warning"; + const data: SimpleCheck[] = [ + { + id: "application-version", + text: i18n.t("settings.application-version"), + status: appConfig.value.isUpToDate, + errorText: i18n.t("settings.application-version-error-text", [rawAppInfo.value.version, rawAppInfo.value.versionLatest]), + successText: i18n.t("settings.mealie-is-up-to-date"), + color: appConfig.value.isUpToDate ? goodColor : warningColor, + icon: appConfig.value.isUpToDate ? goodIcon : warningIcon, + }, + { + id: "secure-site", + text: i18n.t("settings.secure-site"), + status: appConfig.value.isSiteSecure, + errorText: i18n.t("settings.secure-site-error-text"), + successText: i18n.t("settings.secure-site-success-text"), + color: appConfig.value.isSiteSecure ? goodColor : badColor, + icon: appConfig.value.isSiteSecure ? goodIcon : badIcon, + }, + { + id: "server-side-base-url", + text: i18n.t("settings.server-side-base-url"), + status: appConfig.value.baseUrlSet, + errorText: i18n.t("settings.server-side-base-url-error-text"), + successText: i18n.t("settings.server-side-base-url-success-text"), + color: appConfig.value.baseUrlSet ? goodColor : badColor, + icon: appConfig.value.baseUrlSet ? goodIcon : badIcon, + }, + { + id: "ldap-ready", + text: i18n.t("settings.ldap-ready"), + status: appConfig.value.ldapReady, + errorText: i18n.t("settings.ldap-ready-error-text"), + successText: i18n.t("settings.ldap-ready-success-text"), + color: appConfig.value.ldapReady ? goodColor : warningColor, + icon: appConfig.value.ldapReady ? goodIcon : warningIcon, + }, + ]; + return data; + }); + async function testEmail() { + state.loading = true; + state.tested = false; + const { data } = await api.email.test({ email: state.address }); + if (data) { + if (data.success) { + state.success = true; + } + else { + state.error = data.error ?? ""; + state.success = false; + } + } + state.loading = false; + state.tested = true; } - text += `${item.name as string}: ${item.value as string}\n`; - }); - - const ignoreChecks: { [key: string]: boolean } = { - "application-version": true, - }; - - text += "\n**Checks**\n"; - - simpleChecks.value.forEach((item) => { - if (ignoreChecks[item.id]) { - return; + const validEmail = computed(() => { + if (state.address === "") { + return false; + } + const valid = validators.email(state.address); + // Explicit bool check because validators.email sometimes returns a string + if (valid === true) { + return true; + } + return false; + }); + // ============================================================ + // General About Info + const { $globals, i18n } = useContext(); + const rawAppInfo = ref({ + version: "null", + versionLatest: "null", + }); + function getAppInfo() { + const statistics = useAsync(async () => { + const { data } = await adminApi.about.about(); + if (data) { + rawAppInfo.value.version = data.version; + rawAppInfo.value.versionLatest = data.versionLatest; + const prettyInfo = [ + { + name: i18n.t("about.version"), + icon: $globals.icons.information, + value: data.version, + }, + { + slot: "build", + name: i18n.t("settings.build"), + icon: $globals.icons.information, + value: data.buildId, + }, + { + name: i18n.t("about.application-mode"), + icon: $globals.icons.devTo, + value: data.production ? i18n.t("about.production") : i18n.t("about.development"), + }, + { + name: i18n.t("about.demo-status"), + icon: $globals.icons.testTube, + value: data.demoStatus ? i18n.t("about.demo") : i18n.t("about.not-demo"), + }, + { + name: i18n.t("about.api-port"), + icon: $globals.icons.api, + value: data.apiPort, + }, + { + name: i18n.t("about.api-docs"), + icon: $globals.icons.file, + value: data.apiDocs ? i18n.t("general.enabled") : i18n.t("general.disabled"), + }, + { + name: i18n.t("about.database-type"), + icon: $globals.icons.database, + value: data.dbType, + }, + { + name: i18n.t("about.database-url"), + icon: $globals.icons.database, + value: data.dbUrl, + }, + { + name: i18n.t("about.default-group"), + icon: $globals.icons.group, + value: data.defaultGroup, + }, + { + slot: "recipe-scraper", + name: i18n.t("settings.recipe-scraper-version"), + icon: $globals.icons.primary, + value: data.recipeScraperVersion, + }, + ]; + return prettyInfo; + } + return data; + }, useAsyncKey()); + return statistics; } - const status = item.status ? i18n.tc("general.yes") : i18n.tc("general.no"); - text += `${item.text.toString()}: ${status}\n`; - }); - - text += `${i18n.tc("settings.email-configured")}: ${appConfig.value.emailReady ? i18n.tc("general.yes") : i18n.tc("general.no")}\n`; - text += `${i18n.tc("settings.docker-volume")}: ${docker.state}`; - - return text; - }); - - return { - bugReportDialog, - bugReportText, - DockerVolumeState, - docker, - dockerValidate, - simpleChecks, - appConfig, - validEmail, - validators, - ...toRefs(state), - testEmail, - appInfo, - }; - }, - head() { - return { - title: this.$t("settings.site-settings") as string, - }; - }, + const appInfo = getAppInfo(); + const bugReportDialog = ref(false); + const bugReportText = computed(() => { + const ignore = { + [i18n.tc("about.database-url")]: true, + [i18n.tc("about.default-group")]: true, + }; + let text = "**Details**\n"; + appInfo.value?.forEach((item) => { + if (ignore[item.name as string]) { + return; + } + text += `${item.name as string}: ${item.value as string}\n`; + }); + const ignoreChecks: { + [key: string]: boolean; + } = { + "application-version": true, + }; + text += "\n**Checks**\n"; + simpleChecks.value.forEach((item) => { + if (ignoreChecks[item.id]) { + return; + } + const status = item.status ? i18n.tc("general.yes") : i18n.tc("general.no"); + text += `${item.text.toString()}: ${status}\n`; + }); + text += `${i18n.tc("settings.email-configured")}: ${appConfig.value.emailReady ? i18n.tc("general.yes") : i18n.tc("general.no")}\n`; + text += `${i18n.tc("settings.docker-volume")}: ${docker.state}`; + return text; + }); + return { + bugReportDialog, + bugReportText, + DockerVolumeState, + docker, + dockerValidate, + simpleChecks, + appConfig, + validEmail, + validators, + ...toRefs(state), + testEmail, + appInfo, + }; + }, + head() { + return { + title: this.$t("settings.site-settings") as string, + }; + }, + components: { AppLoader } }); diff --git a/frontend/pages/group/mealplan/planner.vue b/frontend/pages/group/mealplan/planner.vue index c1de6fd5d..1ae451f9a 100644 --- a/frontend/pages/group/mealplan/planner.vue +++ b/frontend/pages/group/mealplan/planner.vue @@ -24,8 +24,8 @@ - - + + {{ $t('meal-plan.meal-planner') }} {{ $t('general.edit') }}