From a8583c8e6901b8014e8ab21aa2c8a098377344f9 Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Sat, 9 Dec 2023 17:12:07 +0000 Subject: [PATCH 01/82] added backend translation support for plurals --- mealie/pkgs/i18n/json_provider.py | 26 ++++++++++++++++--- .../pkgs/i18n/test_locale_provider.py | 23 ++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/mealie/pkgs/i18n/json_provider.py b/mealie/pkgs/i18n/json_provider.py index 34cc7710c458..5fbeb10c902d 100644 --- a/mealie/pkgs/i18n/json_provider.py +++ b/mealie/pkgs/i18n/json_provider.py @@ -1,6 +1,7 @@ import json from dataclasses import dataclass from pathlib import Path +from typing import cast @dataclass(slots=True) @@ -13,6 +14,22 @@ class JsonProvider: else: self.translations = path + def _parse_plurals(self, value: str, count: float): + # based off of: https://kazupon.github.io/vue-i18n/guide/pluralization.html + + values = [v.strip() for v in value.split("|")] + if len(values) == 1: + return value + elif len(values) == 2: + return values[0] if count == 1 else values[1] + elif len(values) == 3: + if count == 0: + return values[0] + else: + return values[1] if count == 1 else values[2] + else: + return values[0] + def t(self, key: str, default=None, **kwargs) -> str: keys = key.split(".") @@ -30,9 +47,12 @@ class JsonProvider: if i == last: for key, value in kwargs.items(): - if not value: + translation_value = cast(str, translation_value) + if value is None: value = "" - translation_value = translation_value.replace("{" + key + "}", value) - return translation_value + if key == "count": + translation_value = self._parse_plurals(translation_value, float(value)) + translation_value = translation_value.replace("{" + key + "}", str(value)) # type: ignore + return translation_value # type: ignore return default or key diff --git a/tests/unit_tests/pkgs/i18n/test_locale_provider.py b/tests/unit_tests/pkgs/i18n/test_locale_provider.py index 73100fb739a6..f4bf3a550521 100644 --- a/tests/unit_tests/pkgs/i18n/test_locale_provider.py +++ b/tests/unit_tests/pkgs/i18n/test_locale_provider.py @@ -9,6 +9,29 @@ def test_json_provider(): assert provider.t("test2", "DEFAULT") == "DEFAULT" +def test_json_provider_plural(): + provider = JsonProvider({"test": "test | tests"}) + assert provider.t("test", count=0) == "tests" + assert provider.t("test", count=0.5) == "tests" + assert provider.t("test", count=1) == "test" + assert provider.t("test", count=1.5) == "tests" + assert provider.t("test", count=2) == "tests" + + provider = JsonProvider({"test": "test 0 | test | tests"}) + assert provider.t("test", count=0) == "test 0" + assert provider.t("test", count=0.5) == "tests" + assert provider.t("test", count=1) == "test" + assert provider.t("test", count=1.5) == "tests" + assert provider.t("test", count=2) == "tests" + + provider = JsonProvider({"test": "zero tests | one test | {count} tests"}) + assert provider.t("test", count=0) == "zero tests" + assert provider.t("test", count=0.5) == "0.5 tests" + assert provider.t("test", count=1) == "one test" + assert provider.t("test", count=1.5) == "1.5 tests" + assert provider.t("test", count=2) == "2 tests" + + def test_json_provider_nested_keys(): nested_dict = { "root": { From 2cfc63b3026e69b4b654180f915b6f02f4809b61 Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Sat, 9 Dec 2023 17:19:06 +0000 Subject: [PATCH 02/82] added timedelta translations --- mealie/lang/messages/en-US.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/en-US.json b/mealie/lang/messages/en-US.json index a4990159d5d5..16bee3cc7743 100644 --- a/mealie/lang/messages/en-US.json +++ b/mealie/lang/messages/en-US.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} has been updated, {url}", "generic-duplicated": "{name} has been duplicated", "generic-deleted": "{name} has been deleted" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 408df286fd0d8dbf883731ae0a3950d86066be60 Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Sat, 9 Dec 2023 17:19:19 +0000 Subject: [PATCH 03/82] added translator to scraper --- mealie/routes/groups/controller_migrations.py | 1 + mealie/routes/recipe/recipe_crud_routes.py | 6 +-- mealie/services/migrations/_migration_base.py | 13 +++++- mealie/services/scraper/cleaner.py | 40 ++++++++++--------- .../services/scraper/recipe_bulk_scraper.py | 8 +++- mealie/services/scraper/recipe_scraper.py | 6 ++- mealie/services/scraper/scraper.py | 5 ++- mealie/services/scraper/scraper_strategies.py | 4 +- 8 files changed, 52 insertions(+), 31 deletions(-) diff --git a/mealie/routes/groups/controller_migrations.py b/mealie/routes/groups/controller_migrations.py index 3beba1083f41..3ec1ca26eb5a 100644 --- a/mealie/routes/groups/controller_migrations.py +++ b/mealie/routes/groups/controller_migrations.py @@ -44,6 +44,7 @@ class GroupMigrationController(BaseUserController): "user_id": self.user.id, "group_id": self.group_id, "add_migration_tag": add_migration_tag, + "translator": self.translator, } table: dict[SupportedMigrations, type[BaseMigrator]] = { diff --git a/mealie/routes/recipe/recipe_crud_routes.py b/mealie/routes/recipe/recipe_crud_routes.py index bace402ebd2e..d479fe2f4ca7 100644 --- a/mealie/routes/recipe/recipe_crud_routes.py +++ b/mealie/routes/recipe/recipe_crud_routes.py @@ -167,7 +167,7 @@ class RecipeController(BaseRecipeController): async def parse_recipe_url(self, req: ScrapeRecipe): """Takes in a URL and attempts to scrape data and load it into the database""" try: - recipe, extras = await create_from_url(req.url) + recipe, extras = await create_from_url(req.url, self.translator) except ForceTimeoutException as e: raise HTTPException( status_code=408, detail=ErrorResponse.respond(message="Recipe Scraping Timed Out") @@ -196,7 +196,7 @@ class RecipeController(BaseRecipeController): @router.post("/create-url/bulk", status_code=202) def parse_recipe_url_bulk(self, bulk: CreateRecipeByUrlBulk, bg_tasks: BackgroundTasks): """Takes in a URL and attempts to scrape data and load it into the database""" - bulk_scraper = RecipeBulkScraperService(self.service, self.repos, self.group) + bulk_scraper = RecipeBulkScraperService(self.service, self.repos, self.group, self.translator) report_id = bulk_scraper.get_report_id() bg_tasks.add_task(bulk_scraper.scrape, bulk) @@ -211,7 +211,7 @@ class RecipeController(BaseRecipeController): async def test_parse_recipe_url(self, url: ScrapeRecipeTest): # Debugger should produce the same result as the scraper sees before cleaning try: - if scraped_data := await RecipeScraperPackage(url.url).scrape_url(): + if scraped_data := await RecipeScraperPackage(url.url, self.translator).scrape_url(): return scraped_data.schema.data except ForceTimeoutException as e: raise HTTPException( diff --git a/mealie/services/migrations/_migration_base.py b/mealie/services/migrations/_migration_base.py index 1268a38fb7cd..6cfa6fa3012c 100644 --- a/mealie/services/migrations/_migration_base.py +++ b/mealie/services/migrations/_migration_base.py @@ -6,6 +6,7 @@ from pydantic import UUID4 from mealie.core import root_logger from mealie.core.exceptions import UnexpectedNone +from mealie.lang.providers import Translator from mealie.repos.all_repositories import AllRepositories from mealie.schema.recipe import Recipe from mealie.schema.recipe.recipe_settings import RecipeSettings @@ -35,12 +36,20 @@ class BaseMigrator(BaseService): helpers: DatabaseMigrationHelpers def __init__( - self, archive: Path, db: AllRepositories, session, user_id: UUID4, group_id: UUID, add_migration_tag: bool + self, + archive: Path, + db: AllRepositories, + session, + user_id: UUID4, + group_id: UUID, + add_migration_tag: bool, + translator: Translator, ): self.archive = archive self.db = db self.session = session self.add_migration_tag = add_migration_tag + self.translator = translator user = db.users.get_one(user_id) if not user: @@ -225,6 +234,6 @@ class BaseMigrator(BaseService): with contextlib.suppress(KeyError): del recipe_dict["id"] - recipe_dict = cleaner.clean(recipe_dict, url=recipe_dict.get("org_url", None)) + recipe_dict = cleaner.clean(recipe_dict, self.translator, url=recipe_dict.get("org_url", None)) return Recipe(**recipe_dict) diff --git a/mealie/services/scraper/cleaner.py b/mealie/services/scraper/cleaner.py index f4bfc0ad7083..294b5c99b42f 100644 --- a/mealie/services/scraper/cleaner.py +++ b/mealie/services/scraper/cleaner.py @@ -10,6 +10,7 @@ from datetime import datetime, timedelta from slugify import slugify from mealie.core.root_logger import get_logger +from mealie.lang.providers import Translator logger = get_logger("recipe-scraper") @@ -32,7 +33,7 @@ MATCH_ERRONEOUS_WHITE_SPACE = re.compile(r"\n\s*\n") """ Matches multiple new lines and removes erroneous white space """ -def clean(recipe_data: dict, url=None) -> dict: +def clean(recipe_data: dict, translator: Translator, url=None) -> dict: """Main entrypoint to clean a recipe extracted from the web and format the data into an accectable format for the database @@ -45,9 +46,9 @@ def clean(recipe_data: dict, url=None) -> dict: recipe_data["description"] = clean_string(recipe_data.get("description", "")) # Times - recipe_data["prepTime"] = clean_time(recipe_data.get("prepTime")) - recipe_data["performTime"] = clean_time(recipe_data.get("performTime")) - recipe_data["totalTime"] = clean_time(recipe_data.get("totalTime")) + recipe_data["prepTime"] = clean_time(recipe_data.get("prepTime"), translator) + recipe_data["performTime"] = clean_time(recipe_data.get("performTime"), translator) + recipe_data["totalTime"] = clean_time(recipe_data.get("totalTime"), translator) recipe_data["recipeCategory"] = clean_categories(recipe_data.get("recipeCategory", [])) recipe_data["recipeYield"] = clean_yield(recipe_data.get("recipeYield")) recipe_data["recipeIngredient"] = clean_ingredients(recipe_data.get("recipeIngredient", [])) @@ -332,7 +333,7 @@ def clean_yield(yld: str | list[str] | None) -> str: return yld -def clean_time(time_entry: str | timedelta | None) -> None | str: +def clean_time(time_entry: str | timedelta | None, translator: Translator) -> None | str: """_summary_ Supported Structures: @@ -358,11 +359,11 @@ def clean_time(time_entry: str | timedelta | None) -> None | str: try: time_delta_instructionsect = parse_duration(time_entry) - return pretty_print_timedelta(time_delta_instructionsect) + return pretty_print_timedelta(time_delta_instructionsect, translator) except ValueError: return str(time_entry) case timedelta(): - return pretty_print_timedelta(time_entry) + return pretty_print_timedelta(time_entry, translator) case {"minValue": str(value)}: return clean_time(value) case [str(), *_]: @@ -371,7 +372,7 @@ def clean_time(time_entry: str | timedelta | None) -> None | str: # TODO: Not sure what to do here return str(time_entry) case _: - logger.warning("[SCRAPER] Unexpected type or structure for time_entrys") + logger.warning("[SCRAPER] Unexpected type or structure for time_entries") return None @@ -405,25 +406,25 @@ def parse_duration(iso_duration: str) -> timedelta: return timedelta(**times) -def pretty_print_timedelta(t: timedelta, max_components=None, max_decimal_places=2): +def pretty_print_timedelta(t: timedelta, translator: Translator, max_components=None, max_decimal_places=2): """ Print a pretty string for a timedelta. For example datetime.timedelta(days=2, seconds=17280) will be printed as '2 days 4 Hours 48 Minutes'. Setting max_components to e.g. 1 will change this to '2.2 days', where the number of decimal points can also be set. """ - time_scale_names_dict = { - timedelta(days=365): "year", - timedelta(days=1): "day", - timedelta(hours=1): "Hour", - timedelta(minutes=1): "Minute", - timedelta(seconds=1): "Second", - timedelta(microseconds=1000): "millisecond", - timedelta(microseconds=1): "microsecond", + time_scale_translation_keys_dict = { + timedelta(days=365): "datetime.year", + timedelta(days=1): "datetime.day", + timedelta(hours=1): "datetime.hour", + timedelta(minutes=1): "datetime.minute", + timedelta(seconds=1): "datetime.second", + timedelta(microseconds=1000): "datetime.millisecond", + timedelta(microseconds=1): "datetime.microsecond", } count = 0 out_list = [] - for scale, scale_name in time_scale_names_dict.items(): + for scale, scale_translation_key in time_scale_translation_keys_dict.items(): if t >= scale: count += 1 n = t / scale if count == max_components else int(t / scale) @@ -433,7 +434,8 @@ def pretty_print_timedelta(t: timedelta, max_components=None, max_decimal_places if n_txt[-2:] == ".0": n_txt = n_txt[:-2] - out_list.append(f"{n_txt} {scale_name}{'s' if n > 1 else ''}") + scale_value = translator.t(scale_translation_key, count=n) + out_list.append(f"{n_txt} {scale_value}") if out_list == []: return "none" diff --git a/mealie/services/scraper/recipe_bulk_scraper.py b/mealie/services/scraper/recipe_bulk_scraper.py index ed701ecc3886..bfd714941152 100644 --- a/mealie/services/scraper/recipe_bulk_scraper.py +++ b/mealie/services/scraper/recipe_bulk_scraper.py @@ -2,6 +2,7 @@ import asyncio from pydantic import UUID4 +from mealie.lang.providers import Translator from mealie.repos.repository_factory import AllRepositories from mealie.schema.recipe.recipe import CreateRecipeByUrlBulk, Recipe from mealie.schema.reports.reports import ( @@ -20,11 +21,14 @@ from mealie.services.scraper.scraper import create_from_url class RecipeBulkScraperService(BaseService): report_entries: list[ReportEntryCreate] - def __init__(self, service: RecipeService, repos: AllRepositories, group: GroupInDB) -> None: + def __init__( + self, service: RecipeService, repos: AllRepositories, group: GroupInDB, translator: Translator + ) -> None: self.service = service self.repos = repos self.group = group self.report_entries = [] + self.translator = translator super().__init__() @@ -81,7 +85,7 @@ class RecipeBulkScraperService(BaseService): async def _do(url: str) -> Recipe | None: async with sem: try: - recipe, _ = await create_from_url(url) + recipe, _ = await create_from_url(url, self.translator) return recipe except Exception as e: self.service.logger.error(f"failed to scrape url during bulk url import {url}") diff --git a/mealie/services/scraper/recipe_scraper.py b/mealie/services/scraper/recipe_scraper.py index a9faeeccb6fc..90a81c636025 100644 --- a/mealie/services/scraper/recipe_scraper.py +++ b/mealie/services/scraper/recipe_scraper.py @@ -1,3 +1,4 @@ +from mealie.lang.providers import Translator from mealie.schema.recipe.recipe import Recipe from mealie.services.scraper.scraped_extras import ScrapedExtras @@ -14,11 +15,12 @@ class RecipeScraper: # List of recipe scrapers. Note that order matters scrapers: list[type[ABCScraperStrategy]] - def __init__(self, scrapers: list[type[ABCScraperStrategy]] | None = None) -> None: + def __init__(self, translator: Translator, scrapers: list[type[ABCScraperStrategy]] | None = None) -> None: if scrapers is None: scrapers = DEFAULT_SCRAPER_STRATEGIES self.scrapers = scrapers + self.translator = translator async def scrape(self, url: str) -> tuple[Recipe, ScrapedExtras] | tuple[None, None]: """ @@ -26,7 +28,7 @@ class RecipeScraper: """ for scraper_type in self.scrapers: - scraper = scraper_type(url) + scraper = scraper_type(url, self.translator) result = await scraper.parse() if result is not None: diff --git a/mealie/services/scraper/scraper.py b/mealie/services/scraper/scraper.py index eb8d415b88d5..bcd240edd302 100644 --- a/mealie/services/scraper/scraper.py +++ b/mealie/services/scraper/scraper.py @@ -5,6 +5,7 @@ from fastapi import HTTPException, status from slugify import slugify from mealie.core.root_logger import get_logger +from mealie.lang.providers import Translator from mealie.pkgs import cache from mealie.schema.recipe import Recipe from mealie.services.recipe.recipe_data_service import RecipeDataService @@ -19,7 +20,7 @@ class ParserErrors(str, Enum): CONNECTION_ERROR = "CONNECTION_ERROR" -async def create_from_url(url: str) -> tuple[Recipe, ScrapedExtras | None]: +async def create_from_url(url: str, translator: Translator) -> tuple[Recipe, ScrapedExtras | None]: """Main entry point for generating a recipe from a URL. Pass in a URL and a Recipe object will be returned if successful. @@ -29,7 +30,7 @@ async def create_from_url(url: str) -> tuple[Recipe, ScrapedExtras | None]: Returns: Recipe: Recipe Object """ - scraper = RecipeScraper() + scraper = RecipeScraper(translator) new_recipe, extras = await scraper.scrape(url) if not new_recipe: diff --git a/mealie/services/scraper/scraper_strategies.py b/mealie/services/scraper/scraper_strategies.py index fd51498023a4..a995ba389204 100644 --- a/mealie/services/scraper/scraper_strategies.py +++ b/mealie/services/scraper/scraper_strategies.py @@ -11,6 +11,7 @@ from slugify import slugify from w3lib.html import get_base_url from mealie.core.root_logger import get_logger +from mealie.lang.providers import Translator from mealie.schema.recipe.recipe import Recipe, RecipeStep from mealie.services.scraper.scraped_extras import ScrapedExtras @@ -77,9 +78,10 @@ class ABCScraperStrategy(ABC): url: str - def __init__(self, url: str) -> None: + def __init__(self, url: str, translator: Translator) -> None: self.logger = get_logger() self.url = url + self.translator = translator @abstractmethod async def get_html(self, url: str) -> str: From 3a30b3216ee69c34bfa960ed9e160dc76675cee9 Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Sat, 9 Dec 2023 17:19:27 +0000 Subject: [PATCH 04/82] fixed tests --- .../scraper_tests/test_cleaner.py | 7 +++++-- .../scraper_tests/test_cleaner_parts.py | 21 +++++++++++-------- tests/unit_tests/test_recipe_parser.py | 6 ++++-- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/tests/unit_tests/services_tests/scraper_tests/test_cleaner.py b/tests/unit_tests/services_tests/scraper_tests/test_cleaner.py index 395b943016d2..7e7bf047fa61 100644 --- a/tests/unit_tests/services_tests/scraper_tests/test_cleaner.py +++ b/tests/unit_tests/services_tests/scraper_tests/test_cleaner.py @@ -4,6 +4,7 @@ from pathlib import Path import pytest +from mealie.lang.providers import local_provider from mealie.services.scraper import cleaner from mealie.services.scraper.scraper_strategies import RecipeScraperOpenGraph from tests import data as test_data @@ -37,15 +38,17 @@ test_cleaner_data = [ @pytest.mark.parametrize("json_file,num_steps", test_cleaner_data) def test_cleaner_clean(json_file: Path, num_steps): - recipe_data = cleaner.clean(json.loads(json_file.read_text())) + translator = local_provider() + recipe_data = cleaner.clean(json.loads(json_file.read_text()), translator) assert len(recipe_data["recipeInstructions"]) == num_steps def test_html_with_recipe_data(): path = test_data.html_healthy_pasta_bake_60759 url = "https://www.bbc.co.uk/food/recipes/healthy_pasta_bake_60759" + translator = local_provider() - open_graph_strategy = RecipeScraperOpenGraph(url) + open_graph_strategy = RecipeScraperOpenGraph(url, translator) recipe_data = open_graph_strategy.get_recipe_fields(path.read_text()) diff --git a/tests/unit_tests/services_tests/scraper_tests/test_cleaner_parts.py b/tests/unit_tests/services_tests/scraper_tests/test_cleaner_parts.py index 67cbf9b34869..5fedb073b7cc 100644 --- a/tests/unit_tests/services_tests/scraper_tests/test_cleaner_parts.py +++ b/tests/unit_tests/services_tests/scraper_tests/test_cleaner_parts.py @@ -4,6 +4,7 @@ from typing import Any import pytest +from mealie.lang.providers import local_provider from mealie.services.scraper import cleaner @@ -324,32 +325,32 @@ time_test_cases = ( CleanerCase( test_id="timedelta", input=timedelta(minutes=30), - expected="30 Minutes", + expected="30 minutes", ), CleanerCase( test_id="timedelta string (1)", input="PT2H30M", - expected="2 Hours 30 Minutes", + expected="2 hours 30 minutes", ), CleanerCase( test_id="timedelta string (2)", input="PT30M", - expected="30 Minutes", + expected="30 minutes", ), CleanerCase( test_id="timedelta string (3)", input="PT2H", - expected="2 Hours", + expected="2 hours", ), CleanerCase( test_id="timedelta string (4)", input="P1DT1H1M1S", - expected="1 day 1 Hour 1 Minute 1 Second", + expected="1 day 1 hour 1 minute 1 second", ), CleanerCase( test_id="timedelta string (4)", input="P1DT1H1M1.53S", - expected="1 day 1 Hour 1 Minute 1 Second", + expected="1 day 1 hour 1 minute 1 second", ), CleanerCase( test_id="timedelta string (5) invalid", @@ -366,7 +367,8 @@ time_test_cases = ( @pytest.mark.parametrize("case", time_test_cases, ids=(x.test_id for x in time_test_cases)) def test_cleaner_clean_time(case: CleanerCase): - result = cleaner.clean_time(case.input) + translator = local_provider() + result = cleaner.clean_time(case.input, translator) assert case.expected == result @@ -536,10 +538,11 @@ def test_cleaner_clean_nutrition(case: CleanerCase): @pytest.mark.parametrize( "t,max_components,max_decimal_places,expected", [ - (timedelta(days=2, seconds=17280), None, 2, "2 days 4 Hours 48 Minutes"), + (timedelta(days=2, seconds=17280), None, 2, "2 days 4 hours 48 minutes"), (timedelta(days=2, seconds=17280), 1, 2, "2.2 days"), (timedelta(days=365), None, 2, "1 year"), ], ) def test_pretty_print_timedelta(t, max_components, max_decimal_places, expected): - assert cleaner.pretty_print_timedelta(t, max_components, max_decimal_places) == expected + translator = local_provider() + assert cleaner.pretty_print_timedelta(t, translator, max_components, max_decimal_places) == expected diff --git a/tests/unit_tests/test_recipe_parser.py b/tests/unit_tests/test_recipe_parser.py index b583543a55f7..e7515d73d98c 100644 --- a/tests/unit_tests/test_recipe_parser.py +++ b/tests/unit_tests/test_recipe_parser.py @@ -1,5 +1,6 @@ import pytest +from mealie.lang.providers import local_provider from mealie.services.scraper import scraper from tests.utils.recipe_data import RecipeSiteTestCase, get_recipe_test_cases @@ -18,9 +19,10 @@ and then use this test case by removing the `@pytest.mark.skip` and than testing @pytest.mark.parametrize("recipe_test_data", test_cases) @pytest.mark.asyncio async def test_recipe_parser(recipe_test_data: RecipeSiteTestCase): - recipe, _ = await scraper.create_from_url(recipe_test_data.url) + translator = local_provider() + recipe, _ = await scraper.create_from_url(recipe_test_data.url, translator) assert recipe.slug == recipe_test_data.expected_slug - assert len(recipe.recipe_instructions) == recipe_test_data.num_steps + assert len(recipe.recipe_instructions or []) == recipe_test_data.num_steps assert len(recipe.recipe_ingredient) == recipe_test_data.num_ingredients assert recipe.org_url == recipe_test_data.url From 437f5c454f484f5f5fb097c204c17f0616b9e5d3 Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Sat, 9 Dec 2023 22:04:21 +0000 Subject: [PATCH 05/82] fixed missing translator --- mealie/services/scraper/scraper_strategies.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/mealie/services/scraper/scraper_strategies.py b/mealie/services/scraper/scraper_strategies.py index a995ba389204..2a9046b5843a 100644 --- a/mealie/services/scraper/scraper_strategies.py +++ b/mealie/services/scraper/scraper_strategies.py @@ -105,7 +105,9 @@ class RecipeScraperPackage(ABCScraperStrategy): return await safe_scrape_html(url) def clean_scraper(self, scraped_data: SchemaScraperFactory.SchemaScraper, url: str) -> tuple[Recipe, ScrapedExtras]: - def try_get_default(func_call: Callable | None, get_attr: str, default: Any, clean_func=None): + def try_get_default( + func_call: Callable | None, get_attr: str, default: Any, clean_func=None, **clean_func_kwargs + ): value = default if func_call: @@ -121,7 +123,7 @@ class RecipeScraperPackage(ABCScraperStrategy): self.logger.error(f"Error parsing recipe attribute '{get_attr}'") if clean_func: - value = clean_func(value) + value = clean_func(value, **clean_func_kwargs) return value @@ -141,9 +143,9 @@ class RecipeScraperPackage(ABCScraperStrategy): except TypeError: return [] - cook_time = try_get_default(None, "performTime", None, cleaner.clean_time) or try_get_default( - None, "cookTime", None, cleaner.clean_time - ) + cook_time = try_get_default( + None, "performTime", None, cleaner.clean_time, translator=self.translator + ) or try_get_default(None, "cookTime", None, cleaner.clean_time, translator=self.translator) extras = ScrapedExtras() @@ -160,8 +162,8 @@ class RecipeScraperPackage(ABCScraperStrategy): scraped_data.ingredients, "recipeIngredient", [""], cleaner.clean_ingredients ), recipe_instructions=get_instructions(), - total_time=try_get_default(None, "totalTime", None, cleaner.clean_time), - prep_time=try_get_default(None, "prepTime", None, cleaner.clean_time), + total_time=try_get_default(None, "totalTime", None, cleaner.clean_time, translator=self.translator), + prep_time=try_get_default(None, "prepTime", None, cleaner.clean_time, translator=self.translator), perform_time=cook_time, org_url=url, ) From 02831859135b65f25c5f49270a23feeef5919e9d Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Thu, 8 Feb 2024 02:52:45 -0600 Subject: [PATCH 06/82] New translations en-us.json (Hebrew) --- frontend/lang/messages/he-IL.json | 44 +++++++++++++++---------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/frontend/lang/messages/he-IL.json b/frontend/lang/messages/he-IL.json index 05c04b93521f..b4a6049306b0 100644 --- a/frontend/lang/messages/he-IL.json +++ b/frontend/lang/messages/he-IL.json @@ -200,7 +200,7 @@ "created-on-date": "נוצר ב-{0}", "unsaved-changes": "יש שינויים שלא נשמרו. לצאת לפני שמירה? אשר לשמירה, בטל למחיקת שינויים.", "clipboard-copy-failure": "כשלון בהעתקה ללוח ההדבקה.", - "confirm-delete-generic-items": "Are you sure you want to delete the following items?" + "confirm-delete-generic-items": "האם אתה בטוח שברצונך למחוק את הפריטים הנבחרים?" }, "group": { "are-you-sure-you-want-to-delete-the-group": "האם את/ה בטוח/ה שברצונך למחוק את {groupName}?", @@ -259,7 +259,7 @@ }, "meal-plan": { "create-a-new-meal-plan": "יצירת תכנית ארוחות חדשה", - "update-this-meal-plan": "Update this Meal Plan", + "update-this-meal-plan": "עדכן את תכנון הארוחות", "dinner-this-week": "ארוחות ערב השבוע", "dinner-today": "ארוחת ערב היום", "dinner-tonight": "ארוחת ערב היום", @@ -474,11 +474,11 @@ "add-to-timeline": "הוסף לציר הזמן", "recipe-added-to-list": "מתכון נוסף לרשימה", "recipes-added-to-list": "מתכונים הוספו לרשימה", - "successfully-added-to-list": "Successfully added to list", + "successfully-added-to-list": "נוסף לרשימה בהצלחה", "recipe-added-to-mealplan": "מתכון נוסף לתכנון ארוחות", "failed-to-add-recipes-to-list": "כשלון בהוספת מתכון לרשימה", "failed-to-add-recipe-to-mealplan": "הוספת מתכון לתכנון ארוחות נכשלה", - "failed-to-add-to-list": "Failed to add to list", + "failed-to-add-to-list": "כשלון בהוספה לרשימה", "yield": "תשואה", "quantity": "כמות", "choose-unit": "בחירת יחידת מידה", @@ -515,7 +515,7 @@ "how-did-it-turn-out": "איך יצא?", "user-made-this": "{user} הכין את זה", "last-made-date": "נעשה לאחרונה ב{date}", - "api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.", + "api-extras-description": "מתכונים נוספים הם יכולת מפתח של Mealie API. הם מאפשרים ליצור צמדי key/value בצורת JSON על מנת לקרוא אותם בתוכנת צד שלישית. תוכלו להשתמש בצמדים האלה כדי לספק מידע, לדוגמא להפעיל אוטומציות או הודעות מותאמות אישית למכשירים מסויימים.", "message-key": "מפתח הודעה", "parse": "ניתוח", "attach-images-hint": "הוסף תמונות ע\"י גרירה ושחרור אל תוך העורך", @@ -537,8 +537,8 @@ "new-recipe-names-must-be-unique": "שם מתכון חדש חייב להיות ייחודי", "scrape-recipe": "קריאת מתכון", "scrape-recipe-description": "קריאת מתכון בעזרת לינק. ספק את הלינק של האתר שברצונך לקרוא, ומילי תנסה לקרוא את המתכון מהאתר ולהוסיף אותו לאוסף.", - "scrape-recipe-have-a-lot-of-recipes": "Have a lot of recipes you want to scrape at once?", - "scrape-recipe-suggest-bulk-importer": "Try out the bulk importer", + "scrape-recipe-have-a-lot-of-recipes": "יש לך הרבה מתכונים שאתה רוצה לקרוא בבת אחת?", + "scrape-recipe-suggest-bulk-importer": "נסה את יכולת קריאת רשימה", "import-original-keywords-as-tags": "ייבא שמות מפתח מקוריות כתגיות", "stay-in-edit-mode": "השאר במצב עריכה", "import-from-zip": "ייבא מקובץ", @@ -562,7 +562,7 @@ "upload-image": "העלה תמונה", "screen-awake": "השאר את המסך פעיל", "remove-image": "האם למחוק את התמונה?", - "nextStep": "Next step" + "nextStep": "השלב הבא" }, "search": { "advanced-search": "חיפוש מתקדם", @@ -797,7 +797,7 @@ "untagged-count": "לא מתוייג {count}", "create-a-tag": "צור תגית", "tag-name": "שם תגית", - "tag": "Tag" + "tag": "תגית" }, "tool": { "tools": "כלים", @@ -807,7 +807,7 @@ "create-new-tool": "יצירת כלי חדש", "on-hand-checkbox-label": "הראה מה יש לי במטבח", "required-tools": "צריך כלים", - "tool": "Tool" + "tool": "כלי" }, "user": { "admin": "אדמין", @@ -898,10 +898,10 @@ "user-can-organize-group-data": "משתמש יכול לשנות מידע של קבוצה", "enable-advanced-features": "אפשר אפשרויות מתקדמות", "it-looks-like-this-is-your-first-time-logging-in": "נראה שזו ההתחברות הראשונה שלך.", - "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!", + "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "לא רוצה לראות את זה יותר? דאג לשנות את המייל של בהגדרות המשתמש!", "forgot-password": "שכחתי סיסמא", - "forgot-password-text": "Please enter your email address and we will send you a link to reset your password.", - "changes-reflected-immediately": "Changes to this user will be reflected immediately." + "forgot-password-text": "נא לספק כתובת דוא\"ל. אנו נשלח לך הודעת דוא\"ל לצורך איפוס הסיסמה שלך.", + "changes-reflected-immediately": "השינויים למשתמש זה יבוצעו מיידית." }, "language-dialog": { "translated": "תורגם", @@ -923,8 +923,8 @@ "food-label": "תוית אוכל", "edit-food": "עריכת מזון", "food-data": "נתוני אוכל", - "example-food-singular": "ex: Onion", - "example-food-plural": "ex: Onions" + "example-food-singular": "דוגמא: בצל", + "example-food-plural": "דוגמא: בצלים" }, "units": { "seed-dialog-text": "אכלס את מסד הנתונים עם יחידות מדידה בהתאם לשפה המקומית שלך.", @@ -935,7 +935,7 @@ "merging-unit-into-unit": "ממזג את {0} לתוך {1}", "create-unit": "יצירת יחידה", "abbreviation": "קיצור", - "plural-abbreviation": "Plural Abbreviation", + "plural-abbreviation": "צורת הרבית", "description": "תיאור", "display-as-fraction": "הצגה כשבר", "use-abbreviation": "השתמש בקיצור", @@ -943,10 +943,10 @@ "unit-data": "נתוני יחידה", "use-abbv": "השתמש בקיצור", "fraction": "שבר", - "example-unit-singular": "ex: Tablespoon", - "example-unit-plural": "ex: Tablespoons", - "example-unit-abbreviation-singular": "ex: Tbsp", - "example-unit-abbreviation-plural": "ex: Tbsps" + "example-unit-singular": "דוגמא: כפית", + "example-unit-plural": "דוגמא: כפיות", + "example-unit-abbreviation-singular": "דוגמא: כף", + "example-unit-abbreviation-plural": "דוגמא: כפות" }, "labels": { "seed-dialog-text": "אכלס את מסד הנתונים בתגיות נפוצות בהתאם לשפה המקומית שלך.", @@ -1187,7 +1187,7 @@ "require-all-tools": "זקוק לכל הכלים", "cookbook-name": "שם ספר בישול", "cookbook-with-name": "ספר בישול {0}", - "create-a-cookbook": "Create a Cookbook", - "cookbook": "Cookbook" + "create-a-cookbook": "צור ספר בישול חדש", + "cookbook": "ספר בישול" } } From 94342081f97f248794042974ea302de2c2654553 Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Thu, 8 Feb 2024 14:43:13 +0000 Subject: [PATCH 07/82] I don't know why I changed this --- mealie/services/scraper/cleaner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mealie/services/scraper/cleaner.py b/mealie/services/scraper/cleaner.py index ba816e0365d3..ee64bd3e3945 100644 --- a/mealie/services/scraper/cleaner.py +++ b/mealie/services/scraper/cleaner.py @@ -375,7 +375,7 @@ def clean_time(time_entry: str | timedelta | None, translator: Translator) -> No # TODO: Not sure what to do here return str(time_entry) case _: - logger.warning("[SCRAPER] Unexpected type or structure for time_entries") + logger.warning("[SCRAPER] Unexpected type or structure for variable time_entry") return None From bb9620b67eef64160ac1270c0478c2fa77f8abf2 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:53:58 -0600 Subject: [PATCH 08/82] New translations en-us.json (Romanian) --- mealie/lang/messages/ro-RO.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/ro-RO.json b/mealie/lang/messages/ro-RO.json index 1507db797937..81c86e865817 100644 --- a/mealie/lang/messages/ro-RO.json +++ b/mealie/lang/messages/ro-RO.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} a fost actualizat, {url}", "generic-duplicated": "{name} a fost duplicat", "generic-deleted": "{name} a fost șters" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From a3693d83a3778890f38254b5fb5042e414a275ed Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:53:59 -0600 Subject: [PATCH 09/82] New translations en-us.json (French) --- mealie/lang/messages/fr-FR.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/fr-FR.json b/mealie/lang/messages/fr-FR.json index 16f7cc787356..fa3c806135c8 100644 --- a/mealie/lang/messages/fr-FR.json +++ b/mealie/lang/messages/fr-FR.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} a été mis à jour, {url}", "generic-duplicated": "{name} a été dupliqué", "generic-deleted": "{name} a été supprimé" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From d916c0a4722176405b43612e71c1edae2922cac6 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:00 -0600 Subject: [PATCH 10/82] New translations en-us.json (Spanish) --- mealie/lang/messages/es-ES.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/es-ES.json b/mealie/lang/messages/es-ES.json index c982a50319a2..b7ee19a8697e 100644 --- a/mealie/lang/messages/es-ES.json +++ b/mealie/lang/messages/es-ES.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "Se ha actualizado {name}, {url}", "generic-duplicated": "Se ha duplicado {name}", "generic-deleted": "Se ha eliminado {name}" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 5a7dc14a48f24f625e09eaafa6299e525cf17cda Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:00 -0600 Subject: [PATCH 11/82] New translations en-us.json (Afrikaans) --- mealie/lang/messages/af-ZA.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/af-ZA.json b/mealie/lang/messages/af-ZA.json index d717ff2c73df..ec80ed4fe38d 100644 --- a/mealie/lang/messages/af-ZA.json +++ b/mealie/lang/messages/af-ZA.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} is opgedateer, {url}", "generic-duplicated": "{name} is gekopieer", "generic-deleted": "{name} is verwyder" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 9cf181b4155d6d33b0341e939567c1828f426a6d Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:01 -0600 Subject: [PATCH 12/82] New translations en-us.json (Arabic) --- mealie/lang/messages/ar-SA.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/ar-SA.json b/mealie/lang/messages/ar-SA.json index d5dc93c9570f..8251d6923d93 100644 --- a/mealie/lang/messages/ar-SA.json +++ b/mealie/lang/messages/ar-SA.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} تم تحديثه، {url}", "generic-duplicated": "تم تكرار {name}", "generic-deleted": "تم حذف {name}" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From d954869dd773e1c5f3af743d4ba141f5aded457e Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:02 -0600 Subject: [PATCH 13/82] New translations en-us.json (Bulgarian) --- frontend/lang/messages/bg-BG.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/frontend/lang/messages/bg-BG.json b/frontend/lang/messages/bg-BG.json index 0c7a74e3efe0..35e0b0872fd8 100644 --- a/frontend/lang/messages/bg-BG.json +++ b/frontend/lang/messages/bg-BG.json @@ -200,7 +200,7 @@ "created-on-date": "Създадено на {0}", "unsaved-changes": "Имате незапазени промени. Желаете ли да ги запазите преди да излезете? Натиснете Ок за запазване и Отказ за отхвърляне на промените.", "clipboard-copy-failure": "Линкът към рецептата е копиран в клипборда.", - "confirm-delete-generic-items": "Are you sure you want to delete the following items?" + "confirm-delete-generic-items": "Сигурни ли сте, че желаете да изтриете следните елементи?" }, "group": { "are-you-sure-you-want-to-delete-the-group": "Сигурни ли сте, че искате да изтриете {groupName}?", @@ -259,7 +259,7 @@ }, "meal-plan": { "create-a-new-meal-plan": "Създаване на нов хранителен план", - "update-this-meal-plan": "Update this Meal Plan", + "update-this-meal-plan": "Обнови този План за хранене", "dinner-this-week": "Вечеря тази седмица", "dinner-today": "Вечеря Днес", "dinner-tonight": "Вечеря ТАЗИ ВЕЧЕР", @@ -474,11 +474,11 @@ "add-to-timeline": "Добави към времевата линия", "recipe-added-to-list": "Рецептата е добавена към списъка", "recipes-added-to-list": "Рецептите са добавени към списъка", - "successfully-added-to-list": "Successfully added to list", + "successfully-added-to-list": "Успешно добавено в списъка", "recipe-added-to-mealplan": "Рецептата е добавена към хранителния план", "failed-to-add-recipes-to-list": "Неуспешно добавяне на рецепта към списъка", "failed-to-add-recipe-to-mealplan": "Рецептата не беше добавена към хранителния план", - "failed-to-add-to-list": "Failed to add to list", + "failed-to-add-to-list": "Неуспешно добавяне към списъка", "yield": "Добив", "quantity": "Количество", "choose-unit": "Избери единица", @@ -537,8 +537,8 @@ "new-recipe-names-must-be-unique": "Името на рецептата трябва да бъде уникално", "scrape-recipe": "Обхождане на рецепта", "scrape-recipe-description": "Обходи рецепта по линк. Предоставете линк за сайт, който искате да бъде обходен. Mealie ще опита да обходи рецептата от този сайт и да я добави във Вашата колекция.", - "scrape-recipe-have-a-lot-of-recipes": "Have a lot of recipes you want to scrape at once?", - "scrape-recipe-suggest-bulk-importer": "Try out the bulk importer", + "scrape-recipe-have-a-lot-of-recipes": "Имате много рецепти, които искате да обходите наведнъж?", + "scrape-recipe-suggest-bulk-importer": "Пробвайте масовото импорторане", "import-original-keywords-as-tags": "Импортирай оригиналните ключови думи като тагове", "stay-in-edit-mode": "Остани в режим на редакция", "import-from-zip": "Импортирай от Zip", @@ -562,7 +562,7 @@ "upload-image": "Качване на изображение", "screen-awake": "Запази екрана активен", "remove-image": "Премахване на изображение", - "nextStep": "Next step" + "nextStep": "Следваща стъпка" }, "search": { "advanced-search": "Разширено търсене", @@ -1187,7 +1187,7 @@ "require-all-tools": "Изискване на всички инструменти", "cookbook-name": "Име на книгата с рецепти", "cookbook-with-name": "Книга с рецепти {0}", - "create-a-cookbook": "Create a Cookbook", - "cookbook": "Cookbook" + "create-a-cookbook": "Създай Готварска книга", + "cookbook": "Готварска книга" } } From 88a52092376466d6048cf27e2076c36d7bac3aca Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:03 -0600 Subject: [PATCH 14/82] New translations en-us.json (Bulgarian) --- mealie/lang/messages/bg-BG.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/bg-BG.json b/mealie/lang/messages/bg-BG.json index 9673ffc2f82d..6b70987568ad 100644 --- a/mealie/lang/messages/bg-BG.json +++ b/mealie/lang/messages/bg-BG.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} беше актуализирано, {url}", "generic-duplicated": "{name} е дублицирано", "generic-deleted": "{name} беше изтрито" + }, + "datetime": { + "year": "година|години", + "day": "ден|дни", + "hour": "час|часове", + "minute": "минута|минути", + "second": "секунда|секунди", + "millisecond": "милисекунда|милисекунди", + "microsecond": "микросекунда|микросекунди" } } From 166f2486a2b6a89b4ab6be3b4aef1ca8f7df9aa9 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:04 -0600 Subject: [PATCH 15/82] New translations en-us.json (Catalan) --- mealie/lang/messages/ca-ES.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/ca-ES.json b/mealie/lang/messages/ca-ES.json index bb7cc17737fc..5257c1c1ad68 100644 --- a/mealie/lang/messages/ca-ES.json +++ b/mealie/lang/messages/ca-ES.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} ha estat actualitzat, {url}", "generic-duplicated": "S'ha duplicat {name}", "generic-deleted": "{name} ha estat eliminat" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From f74610a0f7e651ce4c63375ffd30fa74f48a47df Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:05 -0600 Subject: [PATCH 16/82] New translations en-us.json (Czech) --- mealie/lang/messages/cs-CZ.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/cs-CZ.json b/mealie/lang/messages/cs-CZ.json index 7753ac775190..a944f3a92910 100644 --- a/mealie/lang/messages/cs-CZ.json +++ b/mealie/lang/messages/cs-CZ.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} byl aktualizován, {url}", "generic-duplicated": "{name} byl duplikován", "generic-deleted": "{name} byl odstraněn" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 5f4a36bbd8056968621ceb6c4af2408d4c3bd3e6 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:06 -0600 Subject: [PATCH 17/82] New translations en-us.json (Danish) --- mealie/lang/messages/da-DK.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/da-DK.json b/mealie/lang/messages/da-DK.json index 4be73c5c5aee..987166defe69 100644 --- a/mealie/lang/messages/da-DK.json +++ b/mealie/lang/messages/da-DK.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} er blevet opdateret, {url}", "generic-duplicated": "{name} er blevet dublikeret", "generic-deleted": "{name} er blevet slettet" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From dddeed63599d6295de8b3b71a3d336b8f541a61d Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:07 -0600 Subject: [PATCH 18/82] New translations en-us.json (German) --- mealie/lang/messages/de-DE.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/de-DE.json b/mealie/lang/messages/de-DE.json index 3cd40401117a..07396530601a 100644 --- a/mealie/lang/messages/de-DE.json +++ b/mealie/lang/messages/de-DE.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} wurde aktualisiert, {url}", "generic-duplicated": "{name} wurde dupliziert", "generic-deleted": "{name} wurde gelöscht" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 82dcfb5635e88adcbed4e3ae8861077bfff68849 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:08 -0600 Subject: [PATCH 19/82] New translations en-us.json (Greek) --- mealie/lang/messages/el-GR.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/el-GR.json b/mealie/lang/messages/el-GR.json index a4990159d5d5..16bee3cc7743 100644 --- a/mealie/lang/messages/el-GR.json +++ b/mealie/lang/messages/el-GR.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} has been updated, {url}", "generic-duplicated": "{name} has been duplicated", "generic-deleted": "{name} has been deleted" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From e6351273e278dfafbf206a63b391d2bc7895096d Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:09 -0600 Subject: [PATCH 20/82] New translations en-us.json (Finnish) --- mealie/lang/messages/fi-FI.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/fi-FI.json b/mealie/lang/messages/fi-FI.json index 4e9ac01bb7b1..ba1a8e074e30 100644 --- a/mealie/lang/messages/fi-FI.json +++ b/mealie/lang/messages/fi-FI.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} on päivitetty, {url}", "generic-duplicated": "{name} on kahdennettu", "generic-deleted": "{name} on poistettu" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From fb70bc76b3dfb17fb3bd3236f3a0030da54c6b51 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:10 -0600 Subject: [PATCH 21/82] New translations en-us.json (Hebrew) --- mealie/lang/messages/he-IL.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/he-IL.json b/mealie/lang/messages/he-IL.json index 9fc410fb3041..f36eb1411128 100644 --- a/mealie/lang/messages/he-IL.json +++ b/mealie/lang/messages/he-IL.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} עודכן, {url}", "generic-duplicated": "{name} שוכפל", "generic-deleted": "{name} נמחק" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From a12aba6b9d0b940017e7e397ba7a51964babfc23 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:11 -0600 Subject: [PATCH 22/82] New translations en-us.json (Hungarian) --- mealie/lang/messages/hu-HU.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/hu-HU.json b/mealie/lang/messages/hu-HU.json index 5594f035c3ed..d6c613245fcb 100644 --- a/mealie/lang/messages/hu-HU.json +++ b/mealie/lang/messages/hu-HU.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} frissítve, {url}", "generic-duplicated": "{name} duplikálva", "generic-deleted": "{name} törölve lett" + }, + "datetime": { + "year": "év|év", + "day": "nap/nap", + "hour": "óra|óra", + "minute": "perc/perc", + "second": "másodperc|másodperc", + "millisecond": "ezredmásodperc|ezredmásodperc", + "microsecond": "mikroszekundum|mikroszekundum" } } From de1486c57ff9476bd437bc3df03585ae44cc0dcf Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:12 -0600 Subject: [PATCH 23/82] New translations en-us.json (Italian) --- mealie/lang/messages/it-IT.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/it-IT.json b/mealie/lang/messages/it-IT.json index aae7613341a0..3e0adad96457 100644 --- a/mealie/lang/messages/it-IT.json +++ b/mealie/lang/messages/it-IT.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} è stato aggiornato, {url}", "generic-duplicated": "{name} è stato duplicato", "generic-deleted": "{name} è stato eliminato" + }, + "datetime": { + "year": "anno|anni", + "day": "giorno|giorni", + "hour": "ora|ore", + "minute": "minuto|minuti", + "second": "secondo|secondi", + "millisecond": "millisecondo|millisecondi", + "microsecond": "microsecondo|microsecondi" } } From 3ee53977ecfd6a3acc739ddb68d41de66b0fba30 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:12 -0600 Subject: [PATCH 24/82] New translations en-us.json (Japanese) --- mealie/lang/messages/ja-JP.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/ja-JP.json b/mealie/lang/messages/ja-JP.json index 25ad979ccdc0..5a3f3e0601da 100644 --- a/mealie/lang/messages/ja-JP.json +++ b/mealie/lang/messages/ja-JP.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} has been updated, {url}", "generic-duplicated": "{name} has been duplicated", "generic-deleted": "{name} has been deleted" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 43174dcebe25bffd81bde551aeb68f57f7b484fe Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:13 -0600 Subject: [PATCH 25/82] New translations en-us.json (Korean) --- mealie/lang/messages/ko-KR.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/ko-KR.json b/mealie/lang/messages/ko-KR.json index a4990159d5d5..16bee3cc7743 100644 --- a/mealie/lang/messages/ko-KR.json +++ b/mealie/lang/messages/ko-KR.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} has been updated, {url}", "generic-duplicated": "{name} has been duplicated", "generic-deleted": "{name} has been deleted" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From a14c1b48c64bae24fc2155951061db1ea2a8d830 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:15 -0600 Subject: [PATCH 26/82] New translations en-us.json (Lithuanian) --- mealie/lang/messages/lt-LT.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/lt-LT.json b/mealie/lang/messages/lt-LT.json index 79be148c6b7d..3433e0158c03 100644 --- a/mealie/lang/messages/lt-LT.json +++ b/mealie/lang/messages/lt-LT.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} atnaujintas, {url}", "generic-duplicated": "{name} buvo nukopijuotas", "generic-deleted": "{name} ištrintas" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From a071a7d16b2ca8b6a75a836728faba91877ff58b Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:16 -0600 Subject: [PATCH 27/82] New translations en-us.json (Dutch) --- mealie/lang/messages/nl-NL.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/nl-NL.json b/mealie/lang/messages/nl-NL.json index 3cc264704248..1a63e325a51c 100644 --- a/mealie/lang/messages/nl-NL.json +++ b/mealie/lang/messages/nl-NL.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} is bijgewerkt, {url}", "generic-duplicated": "(naam) is gekopieerd", "generic-deleted": "{name} is verwijderd" + }, + "datetime": { + "year": "jaar|jaren", + "day": "dag|dagen", + "hour": "uur|uren", + "minute": "minuut|minuten", + "second": "seconde|seconden", + "millisecond": "milliseconde milliseconden", + "microsecond": "microseconde microseconden" } } From 2aa8c5810a94e17a256b0f2bc8c08faade78bcc7 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:17 -0600 Subject: [PATCH 28/82] New translations en-us.json (Norwegian) --- mealie/lang/messages/no-NO.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/no-NO.json b/mealie/lang/messages/no-NO.json index 4fb57f87a1b2..307097513c38 100644 --- a/mealie/lang/messages/no-NO.json +++ b/mealie/lang/messages/no-NO.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} har blitt oppdatert, {url}", "generic-duplicated": "{name} har blitt duplisert", "generic-deleted": "{name} har blitt slettet" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 04176f692741f15b3a0312aa93a406fa3bde71ff Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:18 -0600 Subject: [PATCH 29/82] New translations en-us.json (Polish) --- mealie/lang/messages/pl-PL.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/pl-PL.json b/mealie/lang/messages/pl-PL.json index 5be65509c7dc..6bd2e8866eee 100644 --- a/mealie/lang/messages/pl-PL.json +++ b/mealie/lang/messages/pl-PL.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} został zaktualizowany. {url}", "generic-duplicated": "{name} został zduplikowany", "generic-deleted": "{name} został usunięty" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 3f9c46a763258396ae21b29248e01c9cee0d3c41 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:19 -0600 Subject: [PATCH 30/82] New translations en-us.json (Portuguese) --- mealie/lang/messages/pt-PT.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/pt-PT.json b/mealie/lang/messages/pt-PT.json index c84b060bcf5d..e0c59513670c 100644 --- a/mealie/lang/messages/pt-PT.json +++ b/mealie/lang/messages/pt-PT.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} foi atualizado, {url}", "generic-duplicated": "{name} foi duplicado", "generic-deleted": "{name} foi removido" + }, + "datetime": { + "year": "ano|anos", + "day": "dia|dias", + "hour": "hora|horas", + "minute": "minuto|minutos", + "second": "segundo|segundos", + "millisecond": "milissegundo|milissegundos", + "microsecond": "microssegundo|microssegundos" } } From d5d86488a012ab9ce567921127e9ffe5de1529b3 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:20 -0600 Subject: [PATCH 31/82] New translations en-us.json (Russian) --- mealie/lang/messages/ru-RU.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/ru-RU.json b/mealie/lang/messages/ru-RU.json index c123d0b62e45..39c23285a506 100644 --- a/mealie/lang/messages/ru-RU.json +++ b/mealie/lang/messages/ru-RU.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} был обновлен, {url}", "generic-duplicated": "Копия {name} была создана", "generic-deleted": "{name} был удален" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From ac5a63e32d34e59aada58d6c1a4b9fdd251b1be4 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:21 -0600 Subject: [PATCH 32/82] New translations en-us.json (Slovak) --- mealie/lang/messages/sk-SK.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/sk-SK.json b/mealie/lang/messages/sk-SK.json index 29efd24b3c35..dfc3423ded2b 100644 --- a/mealie/lang/messages/sk-SK.json +++ b/mealie/lang/messages/sk-SK.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} bol aktualizovaný, {url}", "generic-duplicated": "{name} bol duplikovaný", "generic-deleted": "{name} bol vymazaný" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 1b3cbb38aeb14921592e7f76b9634e0054ecedd9 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:22 -0600 Subject: [PATCH 33/82] New translations en-us.json (Slovenian) --- mealie/lang/messages/sl-SI.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/sl-SI.json b/mealie/lang/messages/sl-SI.json index f2d4fd205ee1..6502aa11f93e 100644 --- a/mealie/lang/messages/sl-SI.json +++ b/mealie/lang/messages/sl-SI.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} je bil posodobljen, {url}", "generic-duplicated": "{name} je bilo podvojeno", "generic-deleted": "{name} je bil izbrisan" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 90e373582b4c0f189ba7e9d01f06bbcb1bd78969 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:22 -0600 Subject: [PATCH 34/82] New translations en-us.json (Serbian (Cyrillic)) --- mealie/lang/messages/sr-SP.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/sr-SP.json b/mealie/lang/messages/sr-SP.json index 2b07d8cca182..d83526c1a0c9 100644 --- a/mealie/lang/messages/sr-SP.json +++ b/mealie/lang/messages/sr-SP.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} је ажурирано, {url}", "generic-duplicated": "{name} је дуплиран", "generic-deleted": "{name} је обрисан" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From b16fa49f16724435cc2a93ce7901f13bda7ef15b Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:23 -0600 Subject: [PATCH 35/82] New translations en-us.json (Swedish) --- mealie/lang/messages/sv-SE.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/sv-SE.json b/mealie/lang/messages/sv-SE.json index d9bc6728a9f3..d2e59308f6d3 100644 --- a/mealie/lang/messages/sv-SE.json +++ b/mealie/lang/messages/sv-SE.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} har uppdaterats, {url}", "generic-duplicated": "{name} har duplicerats", "generic-deleted": "{name} har tagits bort" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 22cc19a0857fd57f8db6736a751de4c9ff4f243d Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:24 -0600 Subject: [PATCH 36/82] New translations en-us.json (Turkish) --- mealie/lang/messages/tr-TR.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/tr-TR.json b/mealie/lang/messages/tr-TR.json index 8e60c7c1f891..b1292ad53462 100644 --- a/mealie/lang/messages/tr-TR.json +++ b/mealie/lang/messages/tr-TR.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} güncellendi, {url}", "generic-duplicated": "{name} yinelendi", "generic-deleted": "{name} silindi" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 7f6de730a392c6aa74403340f11224745c42d0c2 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:25 -0600 Subject: [PATCH 37/82] New translations en-us.json (Ukrainian) --- mealie/lang/messages/uk-UA.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/uk-UA.json b/mealie/lang/messages/uk-UA.json index aed591982bd7..bb0a9671a242 100644 --- a/mealie/lang/messages/uk-UA.json +++ b/mealie/lang/messages/uk-UA.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} оновлено, {url}", "generic-duplicated": "{name} дубльовано", "generic-deleted": "{name} видалено" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 2b711747656ff29b3b83bb774ed2f24925b8628f Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:26 -0600 Subject: [PATCH 38/82] New translations en-us.json (Chinese Simplified) --- mealie/lang/messages/zh-CN.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/zh-CN.json b/mealie/lang/messages/zh-CN.json index 68b2c62650ac..f77ed0464fdd 100644 --- a/mealie/lang/messages/zh-CN.json +++ b/mealie/lang/messages/zh-CN.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} 已创建, {url}", "generic-duplicated": "{name} 已复制", "generic-deleted": "{name} 已删除" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 6d64418727ef819de00f743f8f8482d3cacdfd98 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:27 -0600 Subject: [PATCH 39/82] New translations en-us.json (Chinese Traditional) --- mealie/lang/messages/zh-TW.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/zh-TW.json b/mealie/lang/messages/zh-TW.json index 1690e19e890f..0d5f022f301e 100644 --- a/mealie/lang/messages/zh-TW.json +++ b/mealie/lang/messages/zh-TW.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} has been updated, {url}", "generic-duplicated": "{name} has been duplicated", "generic-deleted": "{name} has been deleted" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From a5e56dc97fd1ab9d827b1dea27288373559b9dde Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:27 -0600 Subject: [PATCH 40/82] New translations en-us.json (Vietnamese) --- mealie/lang/messages/vi-VN.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/vi-VN.json b/mealie/lang/messages/vi-VN.json index a4990159d5d5..16bee3cc7743 100644 --- a/mealie/lang/messages/vi-VN.json +++ b/mealie/lang/messages/vi-VN.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} has been updated, {url}", "generic-duplicated": "{name} has been duplicated", "generic-deleted": "{name} has been deleted" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From dbec3e58f9f26e93bb1f36b3b6d1fc4e367d99ba Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:28 -0600 Subject: [PATCH 41/82] New translations en-us.json (Galician) --- mealie/lang/messages/gl-ES.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/gl-ES.json b/mealie/lang/messages/gl-ES.json index a4990159d5d5..16bee3cc7743 100644 --- a/mealie/lang/messages/gl-ES.json +++ b/mealie/lang/messages/gl-ES.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} has been updated, {url}", "generic-duplicated": "{name} has been duplicated", "generic-deleted": "{name} has been deleted" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From f0d0d0d463e33369bbaee66fb2aee7760ec8ce1e Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:29 -0600 Subject: [PATCH 42/82] New translations en-us.json (Icelandic) --- mealie/lang/messages/is-IS.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/is-IS.json b/mealie/lang/messages/is-IS.json index a4990159d5d5..16bee3cc7743 100644 --- a/mealie/lang/messages/is-IS.json +++ b/mealie/lang/messages/is-IS.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} has been updated, {url}", "generic-duplicated": "{name} has been duplicated", "generic-deleted": "{name} has been deleted" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 2244c3a8b52837d38e4177df7d084ba61356ff0e Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:30 -0600 Subject: [PATCH 43/82] New translations en-us.json (Portuguese, Brazilian) --- mealie/lang/messages/pt-BR.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/pt-BR.json b/mealie/lang/messages/pt-BR.json index 9adccaaa8e3f..b5fd9f9260c7 100644 --- a/mealie/lang/messages/pt-BR.json +++ b/mealie/lang/messages/pt-BR.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} foi atualizado, {url}", "generic-duplicated": "{name} foi duplicada", "generic-deleted": "{name} foi excluído" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 9ce71c911facda65b64d49f66e03d504f39be2a2 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:31 -0600 Subject: [PATCH 44/82] New translations en-us.json (Croatian) --- mealie/lang/messages/hr-HR.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/hr-HR.json b/mealie/lang/messages/hr-HR.json index 7301dc6a8bd6..fc112264c1f1 100644 --- a/mealie/lang/messages/hr-HR.json +++ b/mealie/lang/messages/hr-HR.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} je ažuriran, {url}", "generic-duplicated": "{name} je dupliciran", "generic-deleted": "{name} je obrisan" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 47086da6b698a48b249243bb16a8ae46417e4a00 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:32 -0600 Subject: [PATCH 45/82] New translations en-us.json (Latvian) --- mealie/lang/messages/lv-LV.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/lv-LV.json b/mealie/lang/messages/lv-LV.json index a4990159d5d5..16bee3cc7743 100644 --- a/mealie/lang/messages/lv-LV.json +++ b/mealie/lang/messages/lv-LV.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} has been updated, {url}", "generic-duplicated": "{name} has been duplicated", "generic-deleted": "{name} has been deleted" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 3d0adda4055c83100054b712bd4b2cde22784cd4 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:33 -0600 Subject: [PATCH 46/82] New translations en-us.json (English, United Kingdom) --- mealie/lang/messages/en-GB.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/en-GB.json b/mealie/lang/messages/en-GB.json index a4990159d5d5..16bee3cc7743 100644 --- a/mealie/lang/messages/en-GB.json +++ b/mealie/lang/messages/en-GB.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} has been updated, {url}", "generic-duplicated": "{name} has been duplicated", "generic-deleted": "{name} has been deleted" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 94a85f997787e9685a003cc6a886d315a54a587f Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:54:34 -0600 Subject: [PATCH 47/82] New translations en-us.json (French, Canada) --- mealie/lang/messages/fr-CA.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mealie/lang/messages/fr-CA.json b/mealie/lang/messages/fr-CA.json index 082f05e7a9cc..10c677ae3347 100644 --- a/mealie/lang/messages/fr-CA.json +++ b/mealie/lang/messages/fr-CA.json @@ -31,5 +31,14 @@ "generic-updated-with-url": "{name} a été mis à jour, {url}", "generic-duplicated": "{name} a été dupliqué", "generic-deleted": "{name} a été supprimé" + }, + "datetime": { + "year": "year|years", + "day": "day|days", + "hour": "hour|hours", + "minute": "minute|minutes", + "second": "second|seconds", + "millisecond": "millisecond|milliseconds", + "microsecond": "microsecond|microseconds" } } From 1e04e9424f1e7f817b991fe9a1c3fc6547370917 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 9 Feb 2024 05:54:04 -0900 Subject: [PATCH 48/82] Update dependency python-slugify to v8.0.4 (#3131) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5b64e4f68904..e63b8fbe213f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1979,13 +1979,13 @@ dev = ["atomicwrites (==1.2.1)", "attrs (==19.2.0)", "coverage (==6.5.0)", "hatc [[package]] name = "python-slugify" -version = "8.0.3" +version = "8.0.4" description = "A Python slugify application that also handles Unicode" optional = false python-versions = ">=3.7" files = [ - {file = "python-slugify-8.0.3.tar.gz", hash = "sha256:e04cba5f1c562502a1175c84a8bc23890c54cdaf23fccaaf0bf78511508cabed"}, - {file = "python_slugify-8.0.3-py2.py3-none-any.whl", hash = "sha256:c71189c161e8c671f1b141034d9a56308a8a5978cd13d40446c879569212fdd1"}, + {file = "python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856"}, + {file = "python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8"}, ] [package.dependencies] From f4e77f6837dc5fa52f9f789bcd09b30a2f85dff6 Mon Sep 17 00:00:00 2001 From: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com> Date: Fri, 9 Feb 2024 16:32:18 +0000 Subject: [PATCH 49/82] add docker in docker --- .devcontainer/devcontainer.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index a37cfd0076fd..2f4334e244b5 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -52,4 +52,10 @@ // "features": { // "git": "latest" // } + "features": { + "docker-in-docker": { + "version": "latest", + "dockerDashComposeVersion": "v2" + } + } } From a38dfc094e542c2ea4b659937ac60ad4acba859f Mon Sep 17 00:00:00 2001 From: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com> Date: Fri, 9 Feb 2024 17:52:41 +0000 Subject: [PATCH 50/82] update to use newer version of the feature --- .devcontainer/devcontainer.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 2f4334e244b5..d8676bc85817 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -53,8 +53,7 @@ // "git": "latest" // } "features": { - "docker-in-docker": { - "version": "latest", + "ghcr.io/devcontainers/features/docker-in-docker:2": { "dockerDashComposeVersion": "v2" } } From 520bc7154a31ba73911b0ec1aca3b16b4836866e Mon Sep 17 00:00:00 2001 From: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com> Date: Fri, 9 Feb 2024 21:12:06 +0100 Subject: [PATCH 51/82] Remove old comments --- .devcontainer/devcontainer.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index d8676bc85817..fe02ce452ff7 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -49,9 +49,6 @@ "onCreateCommand": "sudo chown -R vscode:vscode /workspaces/mealie/frontend/node_modules && task setup", // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. "remoteUser": "vscode", - // "features": { - // "git": "latest" - // } "features": { "ghcr.io/devcontainers/features/docker-in-docker:2": { "dockerDashComposeVersion": "v2" From ce58da8e1870094adf5512191a10c362064de59b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Feb 2024 01:08:10 +0000 Subject: [PATCH 52/82] Update dependency python-multipart to ^0.0.8 --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index e63b8fbe213f..a25735422c51 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1965,13 +1965,13 @@ pyasn1_modules = ">=0.1.5" [[package]] name = "python-multipart" -version = "0.0.7" +version = "0.0.8" description = "A streaming multipart parser for Python" optional = false python-versions = ">=3.7" files = [ - {file = "python_multipart-0.0.7-py3-none-any.whl", hash = "sha256:b1fef9a53b74c795e2347daac8c54b252d9e0df9c619712691c1cc8021bd3c49"}, - {file = "python_multipart-0.0.7.tar.gz", hash = "sha256:288a6c39b06596c1b988bb6794c6fbc80e6c369e35e5062637df256bee0c9af9"}, + {file = "python_multipart-0.0.8-py3-none-any.whl", hash = "sha256:999725bf08cf7a071073d157a27cc34f8669af98da0d2435bde1cc1493a50ec3"}, + {file = "python_multipart-0.0.8.tar.gz", hash = "sha256:613015c642c2f6dc6d22e2d3a4d993683bb4752509ccd87f831dced121ed2f1d"}, ] [package.extras] @@ -2944,4 +2944,4 @@ pgsql = ["psycopg2-binary"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "f1a8d11fafed5d812ea0e54fc01aa5761f47bffb14caaeba7216862377fbeb54" +content-hash = "1736aa5636b88092eb4e998a1a783ea13fdf1e4987b524d3570dfbc7f6e6f35a" diff --git a/pyproject.toml b/pyproject.toml index 509b9134233d..b6a8f944021e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ python-dateutil = "^2.8.2" python-dotenv = "^1.0.0" python-jose = "^3.3.0" python-ldap = "^3.3.1" -python-multipart = "^0.0.7" +python-multipart = "^0.0.8" python-slugify = "^8.0.0" recipe-scrapers = "^14.53.0" requests = "^2.31.0" From 42a33cd993b4638f181d4083a7c5d21bf110e4e4 Mon Sep 17 00:00:00 2001 From: boc-the-git <3479092+boc-the-git@users.noreply.github.com> Date: Sat, 10 Feb 2024 14:49:26 +1100 Subject: [PATCH 53/82] fix: Give update-image-tags job write permissions to the repo, for auto doco updater (#3138) --- .github/workflows/release.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 78162ddcf6cb..91661227fbf1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -49,6 +49,8 @@ jobs: needs: - build-release runs-on: ubuntu-latest + permissions: + contents: write steps: - name: Checkout 🛎 uses: actions/checkout@v4 From 2226d7cbf9f7c23e885dd5701ea3d5ae2d7782c6 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Sat, 10 Feb 2024 02:56:10 -0600 Subject: [PATCH 54/82] New translations en-us.json (French) --- mealie/lang/messages/fr-FR.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mealie/lang/messages/fr-FR.json b/mealie/lang/messages/fr-FR.json index fa3c806135c8..28ebcc20488d 100644 --- a/mealie/lang/messages/fr-FR.json +++ b/mealie/lang/messages/fr-FR.json @@ -33,12 +33,12 @@ "generic-deleted": "{name} a été supprimé" }, "datetime": { - "year": "year|years", - "day": "day|days", - "hour": "hour|hours", + "year": "année|années", + "day": "jour|jours", + "hour": "heure|heures", "minute": "minute|minutes", - "second": "second|seconds", - "millisecond": "millisecond|milliseconds", - "microsecond": "microsecond|microseconds" + "second": "seconde|secondes", + "millisecond": "milliseconde|millisecondes", + "microsecond": "microseconde|microsecondes" } } From 77a05c754e9ced15bc098d1c826eaa804be5db86 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Sat, 10 Feb 2024 02:56:11 -0600 Subject: [PATCH 55/82] New translations en-us.json (Swedish) --- mealie/lang/messages/sv-SE.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mealie/lang/messages/sv-SE.json b/mealie/lang/messages/sv-SE.json index d2e59308f6d3..2962dd45046a 100644 --- a/mealie/lang/messages/sv-SE.json +++ b/mealie/lang/messages/sv-SE.json @@ -33,11 +33,11 @@ "generic-deleted": "{name} har tagits bort" }, "datetime": { - "year": "year|years", - "day": "day|days", - "hour": "hour|hours", - "minute": "minute|minutes", - "second": "second|seconds", + "year": "år|år", + "day": "dag|dagar", + "hour": "timme|timmar", + "minute": "minut|minuter", + "second": "sekund|sekunder", "millisecond": "millisecond|milliseconds", "microsecond": "microsecond|microseconds" } From 38a4215b355ea789215a28ee2d2044db8ff427ac Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Sat, 10 Feb 2024 02:56:12 -0600 Subject: [PATCH 56/82] New translations en-us.json (Turkish) --- mealie/lang/messages/tr-TR.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mealie/lang/messages/tr-TR.json b/mealie/lang/messages/tr-TR.json index b1292ad53462..832c6d80f6ce 100644 --- a/mealie/lang/messages/tr-TR.json +++ b/mealie/lang/messages/tr-TR.json @@ -33,12 +33,12 @@ "generic-deleted": "{name} silindi" }, "datetime": { - "year": "year|years", - "day": "day|days", - "hour": "hour|hours", - "minute": "minute|minutes", - "second": "second|seconds", - "millisecond": "millisecond|milliseconds", - "microsecond": "microsecond|microseconds" + "year": "yıl|yıllar", + "day": "gün|günler", + "hour": "saat|saatler", + "minute": "dakika|dakikalar", + "second": "saniye|saniyeler", + "millisecond": "milisaniye|milisaniyeler", + "microsecond": "mikrosaniye|mikrosaniyeler" } } From 19c5b7c7ab0676060104446851120285d9d2b7a0 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Sat, 10 Feb 2024 02:56:13 -0600 Subject: [PATCH 57/82] New translations en-us.json (Ukrainian) --- mealie/lang/messages/uk-UA.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mealie/lang/messages/uk-UA.json b/mealie/lang/messages/uk-UA.json index bb0a9671a242..3409cc0ee780 100644 --- a/mealie/lang/messages/uk-UA.json +++ b/mealie/lang/messages/uk-UA.json @@ -33,12 +33,12 @@ "generic-deleted": "{name} видалено" }, "datetime": { - "year": "year|years", - "day": "day|days", - "hour": "hour|hours", - "minute": "minute|minutes", - "second": "second|seconds", - "millisecond": "millisecond|milliseconds", - "microsecond": "microsecond|microseconds" + "year": "рік|роки", + "day": "день|дні", + "hour": "година|години", + "minute": "хвилина|хвилини", + "second": "секунда|секунди", + "millisecond": "мілісекунда|мілісекунди", + "microsecond": "мікросекунда|мікросекунди" } } From cb2d8a9a505a8334bd9990469638e0c5a7e741e9 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Sat, 10 Feb 2024 02:56:14 -0600 Subject: [PATCH 58/82] New translations en-us.json (Russian) --- frontend/lang/messages/ru-RU.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/lang/messages/ru-RU.json b/frontend/lang/messages/ru-RU.json index e395d82d1c59..4097021084ed 100644 --- a/frontend/lang/messages/ru-RU.json +++ b/frontend/lang/messages/ru-RU.json @@ -707,7 +707,7 @@ "email-configured": "Email настроен", "email-test-results": "Результаты теста Email", "ready": "Готово", - "not-ready": "Не готово - Проверьте переменные окружающей среды", + "not-ready": "Не готово - Проверьте переменные окружения", "succeeded": "Выполнено успешно", "failed": "Ошибка", "general-about": "Общая информация", From de69a3ca86664fe0ba9e9a302347bab7ff6a06d9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Feb 2024 09:12:22 +0000 Subject: [PATCH 59/82] chore(deps): update dependency mkdocs-material to v9.5.9 --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index a25735422c51..d0bb734a6646 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1220,13 +1220,13 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-imp [[package]] name = "mkdocs-material" -version = "9.5.8" +version = "9.5.9" description = "Documentation that simply works" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.5.8-py3-none-any.whl", hash = "sha256:14563314bbf97da4bfafc69053772341babfaeb3329cde01d3e63cec03997af8"}, - {file = "mkdocs_material-9.5.8.tar.gz", hash = "sha256:2a429213e83f84eda7a588e2b186316d806aac602b7f93990042f7a1f3d3cf65"}, + {file = "mkdocs_material-9.5.9-py3-none-any.whl", hash = "sha256:a5d62b73b3b74349e45472bfadc129c871dd2d4add68d84819580597b2f50d5d"}, + {file = "mkdocs_material-9.5.9.tar.gz", hash = "sha256:635df543c01c25c412d6c22991872267723737d5a2f062490f33b2da1c013c6d"}, ] [package.dependencies] From 1450d6fc4c637cfdfd29d2ca4530de7b84ab6549 Mon Sep 17 00:00:00 2001 From: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com> Date: Sat, 10 Feb 2024 12:09:21 +0100 Subject: [PATCH 60/82] fix password reset link not shown (#3142) --- frontend/pages/admin/manage/users/_id.vue | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/frontend/pages/admin/manage/users/_id.vue b/frontend/pages/admin/manage/users/_id.vue index 182378eda43f..b39f9ae2289d 100644 --- a/frontend/pages/admin/manage/users/_id.vue +++ b/frontend/pages/admin/manage/users/_id.vue @@ -31,7 +31,18 @@ {{ $t("user.generate-password-reset-link") }} - + +
+ +

+ {{ resetUrl }} +

+
+ + {{ $t("general.close") }} + + +
From 673ad6d42b2048d3e4fb89137480f6698a5e6e9a Mon Sep 17 00:00:00 2001 From: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com> Date: Sat, 10 Feb 2024 13:26:24 +0100 Subject: [PATCH 61/82] Update Taskfile.yml --- Taskfile.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Taskfile.yml b/Taskfile.yml index ed3f47d015b4..74fd6bbcf455 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -15,6 +15,7 @@ env: SMTP_PORT: 1025 SMTP_FROM_NAME: MealieDev SMTP_AUTH_STRATEGY: NONE + SMTP_FROM_EMAIL: mealie@example.com LANG: en-US # loads .env file if it exists From 0dc85844854ec335f0409ec753022388f856f72d Mon Sep 17 00:00:00 2001 From: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com> Date: Sat, 10 Feb 2024 13:30:02 +0100 Subject: [PATCH 62/82] =?UTF-8?q?=E2=86=95=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Taskfile.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Taskfile.yml b/Taskfile.yml index 74fd6bbcf455..2166b361e392 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -14,8 +14,8 @@ env: SMTP_HOST: localhost SMTP_PORT: 1025 SMTP_FROM_NAME: MealieDev - SMTP_AUTH_STRATEGY: NONE SMTP_FROM_EMAIL: mealie@example.com + SMTP_AUTH_STRATEGY: NONE LANG: en-US # loads .env file if it exists From 3317e061a8e4120323689d9687590f0c6c72d491 Mon Sep 17 00:00:00 2001 From: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com> Date: Sat, 10 Feb 2024 12:51:38 +0000 Subject: [PATCH 63/82] add user reset email functionality --- frontend/pages/admin/manage/users/_id.vue | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/frontend/pages/admin/manage/users/_id.vue b/frontend/pages/admin/manage/users/_id.vue index b39f9ae2289d..53c709c5e6ba 100644 --- a/frontend/pages/admin/manage/users/_id.vue +++ b/frontend/pages/admin/manage/users/_id.vue @@ -38,9 +38,15 @@ {{ resetUrl }}

- + {{ $t("general.close") }} + + + {{ $t("user.email") }} + @@ -57,7 +63,8 @@