Compare commits

..

4 Commits

Author SHA1 Message Date
Hayden
fe63eb0de4 New translations en-us.json (Chinese Traditional)
[ci skip]
2026-06-26 12:46:34 -05:00
Hayden
7a7be7e880 New translations en-us.json (Chinese Traditional)
[ci skip]
2026-06-26 12:46:33 -05:00
Hayden
e61d6c79dc New translations en-us.json (Chinese Simplified)
[ci skip]
2026-06-26 12:46:32 -05:00
Hayden
caa8126677 New translations en-us.json (German)
[ci skip]
2026-06-24 20:23:05 -05:00
12 changed files with 267 additions and 244 deletions

View File

@@ -1,7 +1,7 @@
###############################################
# Frontend Build
###############################################
FROM node:24@sha256:fdddfb3e688158251943d52eba361de991548f6814007acba4917ae6b512d6be \
FROM node:24@sha256:733e1c06ada118ed9f6133a31aa1290be6929664026fb28821500437c61f2c6f \
AS frontend-builder
WORKDIR /frontend

View File

@@ -31,7 +31,7 @@ To deploy mealie on your local network, it is highly recommended to use Docker t
We've gone through a few versions of Mealie v1 deployment targets. We have settled on a single container deployment, and we've begun publishing the nightly container on github containers. If you're looking to move from the old nightly (split containers _or_ the omni image) to the new nightly, there are a few things you need to do:
1. Take a backup just in case!
2. Replace the image for the API container with `ghcr.io/mealie-recipes/mealie:v3.20.1`
2. Replace the image for the API container with `ghcr.io/mealie-recipes/mealie:v3.19.2`
3. Take the external port from the frontend container and set that as the port mapped to port `9000` on the new container. The frontend is now served on port 9000 from the new container, so it will need to be mapped for you to have access.
4. Restart the container

View File

@@ -10,7 +10,7 @@ PostgreSQL might be considered if you need to support many concurrent users. In
```yaml
services:
mealie:
image: ghcr.io/mealie-recipes/mealie:v3.20.1 # (3)
image: ghcr.io/mealie-recipes/mealie:v3.19.2 # (3)
container_name: mealie
restart: always
ports:

View File

@@ -11,7 +11,7 @@ SQLite is a popular, open source, self-contained, zero-configuration database th
```yaml
services:
mealie:
image: ghcr.io/mealie-recipes/mealie:v3.20.1 # (3)
image: ghcr.io/mealie-recipes/mealie:v3.19.2 # (3)
container_name: mealie
restart: always
ports:

View File

@@ -1144,7 +1144,7 @@
},
"data-pages": {
"foods": {
"delete-affects-recipes": "Warning: this food is used in {count} recipe(s). Deleting it will leave an empty ingredient in the recipe(s).",
"delete-affects-recipes": "Warnung: Dieses Lebensmittel wird in {count} Rezept(en) verwendet. Beim Löschen verbleibt in den betroffenen Rezept(en) eine leere Zutat.",
"delete-affects-recipes-more": "Zeige alle {count} Rezepte",
"merge-dialog-text": "Zusammenführen der ausgewählten Lebensmittel führt diese zusammen in ein einzelnes Lebensmittel. Die Ausgangslebensmittel werden gelöscht und alle Verweise werden auf das zusammengeführte Lebensmittel angepasst.",
"merge-food-example": "{food1} wird zu {food2} zusammengeführt",

View File

@@ -51,7 +51,7 @@
"category": "分类"
},
"events": {
"apprise-url": "Apprise URL",
"apprise-url": "Apprise 网址",
"database": "数据库",
"delete-event": "删除事件",
"event-delete-confirmation": "你确定要删除这个事件?",
@@ -98,7 +98,7 @@
"dashboard": "仪表盘",
"delete": "删除",
"disabled": "已禁用",
"done": "Done",
"done": "完成",
"download": "下载",
"duplicate": "创建副本",
"edit": "编辑",
@@ -169,7 +169,7 @@
"token": "密钥",
"tuesday": "周二",
"type": "类型",
"undo": "Undo",
"undo": "还原",
"update": "更新",
"updated": "已更新",
"upload": "上传",
@@ -224,8 +224,8 @@
"add-field": "添加项目",
"date-created": "创建日期",
"date-updated": "修改日期",
"key": "Key",
"value": "Value"
"key": "",
"value": ""
},
"group": {
"are-you-sure-you-want-to-delete-the-group": "您确定要删除<b>{groupName}<b/>吗?",
@@ -287,37 +287,37 @@
"total-households": "总共家庭",
"you-must-select-a-group-before-selecting-a-household": "你必须先选择一个组才能选择一个家庭",
"ai-provider-settings": {
"ai-provider-settings": "AI Provider Settings",
"ai-provider": "AI Provider",
"ai-providers": "AI Providers",
"ai-provider-settings-description": "Configure AI providers to enable AI-powered features, such as enhanced ingredient parsing, creating recipes from videos, and more!",
"providers": "Providers",
"create-provider": "Create Provider",
"edit-provider": "Edit Provider",
"default-provider": "Default Provider",
"ai-provider-settings": "AI 提供者设置",
"ai-provider": "AI 提供者",
"ai-providers": "AI 提供者",
"ai-provider-settings-description": "设置 AI 提供者以启用 AI功能例如增强食材解析、从视频中创建食谱等",
"providers": "提供者",
"create-provider": "创建提供者",
"edit-provider": "编辑提供者",
"default-provider": "默认提供者",
"default-provider-description": "Required to enable AI features",
"audio-provider": "Audio Provider",
"audio-provider-description": "Enables audio transcription features, such as creating recipes from videos",
"image-provider": "Image Provider",
"image-provider-description": "Enables image recognition features, such as creating recipes from images",
"provider-name": "Provider Name",
"api-key": "API Key",
"provider-name": "提供者名称",
"api-key": "API 密钥",
"api-key-description-create": "Your provider's API key for authentication. If your service (e.g. Ollama) doesn't use an API key, you still have to put something here.",
"api-key-description-edit": "Leave this blank unless you want to change it.",
"base-url": "Base URL",
"base-url-description": "If you're using OpenAI leave this blank. Must be an OpenAI-compatible endpoint (e.g. \"http://localhost:11434/v1\").",
"model": "Model",
"model-description": "Which model your AI provider should use (e.g. \"gpt-5\").",
"request-timeout-seconds": "Request Timeout (seconds)",
"provider-created": "Provider created",
"provider-updated": "Provider updated",
"provider-deleted": "Provider deleted",
"provider-create-failed": "Failed to create provider",
"provider-update-failed": "Failed to update provider",
"provider-delete-failed": "Failed to delete provider",
"request-headers": "Request Headers",
"request-params": "Request Parameters",
"no-default-provider-warning": "You have not set a default provider, so AI features are disabled"
"base-url": "基本网址",
"base-url-description": "如果您使用 OpenAI 请留空。必须是 OpenAI兼容的端点(例如,\"http://localhost:11434/v1\")",
"model": "模型",
"model-description": "您的 AI 提供者应该使用哪个模型(例如,\"gpt-5\")",
"request-timeout-seconds": "请求超时(秒)",
"provider-created": "提供者已创建",
"provider-updated": "提供者已更新",
"provider-deleted": "提供商已删除",
"provider-create-failed": "创建提供者失败",
"provider-update-failed": "更新提供者失败",
"provider-delete-failed": "删除提供者失败",
"request-headers": "请求标头",
"request-params": "请求参数",
"no-default-provider-warning": "您尚未设置默认提供者所以AI 功能已被禁用"
}
},
"household": {
@@ -368,8 +368,8 @@
"any-household": "所有家庭",
"no-meal-plan-defined-yet": "还没有制定饮食计划",
"no-meal-planned-for-today": "今日没有饮食计划",
"numberOfDaysPast-hint": "Number of days in the past on page load",
"numberOfDaysPast-label": "Default Days in the Past",
"numberOfDaysPast-hint": "页面加载时过去的天数",
"numberOfDaysPast-label": "默认过去天数",
"numberOfDays-hint": "页面加载天数",
"numberOfDays-label": "默认天数",
"only-recipes-with-these-categories-will-be-used-in-meal-plans": "只有属于这些分类的食谱才会被用于饮食计划",
@@ -427,7 +427,7 @@
"nextcloud": {
"description": "从Nextcloud Cookbook迁移数据",
"description-long": "Nextcloud食谱可以从存储在Nextcloud云端的含有食谱数据的zip文件导入。请参阅下方的文件夹结构示例确保您的食谱可以被正确导入。",
"title": "Nextcloud Cookbook"
"title": "Nextcloud 食谱"
},
"copymethat": {
"description-long": "Mealie 可以从 Copy Mee That导入食谱。将您的食谱以HTML 格式导出,然后在下面上传 .zip压缩包",
@@ -663,7 +663,7 @@
"create-recipe-description": "从头创建一个新食谱。",
"create-recipes": "创建食谱",
"import-with-zip": "使用 .zip 导入",
"create-recipe-from-images": "Create Recipe from Images",
"create-recipe-from-images": "用图片创建食谱",
"create-recipe-from-an-image-description": "通过上传食谱文本的图片来创建一个食谱。Mealie将尝试使用人工智能从图像中提取文本并从中创建一个新的食谱。",
"crop-and-rotate-the-image": "裁剪并旋转图片,使仅文字可见且方向正确。",
"create-from-images": "从图片创建",
@@ -676,7 +676,7 @@
"new-recipe-names-must-be-unique": "新食谱名必须唯一",
"scrape-recipe": "刮削食谱",
"scrape-recipe-description": "通过URL采集食谱。提供你想要采集网址的URLMealie会尝试从该网采集食谱并添加到你的收藏中。",
"scrape-recipe-description-transcription": "You can also provide the url to a video and Mealie will attempt to transcribe it into a recipe.",
"scrape-recipe-description-transcription": "您也可以提供一个视频地址Mealie 将尝试将其导入为食谱。",
"scrape-recipe-have-a-lot-of-recipes": "你想要一次刮削多个食谱吗?",
"scrape-recipe-suggest-bulk-importer": "试试批量导入器",
"scrape-recipe-have-raw-html-or-json-data": "有原始 HTML 或 JSON 数据?",
@@ -684,7 +684,7 @@
"scrape-recipe-website-being-blocked": "网站被屏蔽?",
"scrape-recipe-try-importing-raw-html-instead": "请尝试导入原始HTML。",
"import-original-keywords-as-tags": "导入原始关键字作为标签",
"import-original-categories": "Import original categories",
"import-original-categories": "导入原始分类",
"stay-in-edit-mode": "留在编辑模式",
"parse-recipe-ingredients-after-import": "导入后解析食材",
"import-from-zip": "从Zip压缩包导入",
@@ -733,12 +733,12 @@
"this-unit-could-not-be-parsed-automatically": "无法自动解析此单元",
"this-food-could-not-be-parsed-automatically": "这种食物不能被自动解析",
"no-food": "没有食物",
"review-parsed-ingredients": "Review parsed ingredients",
"review-parsed-ingredients": "复查解析后的食材",
"confidence-score": "置信度",
"ingredient-parser-description": "您的食材已成功解析。请检查我们不确定的食材。",
"ingredient-parser-final-review-description": "一旦所有食材都检查完毕,在将更改应用到您的菜谱之前,您还有最后一次机会检查所有食材。",
"add-text-as-alias-for-item": "将“{text}”添加为“{item}”的别名",
"delete-item": "Delete Item"
"delete-item": "删除项目"
},
"reset-servings-count": "重置份量数量",
"not-linked-ingredients": "附加配料",
@@ -894,7 +894,7 @@
"webhooks": {
"test-webhooks": "测试Webhooks",
"the-urls-listed-below-will-recieve-webhooks-containing-the-recipe-data-for-the-meal-plan-on-its-scheduled-day-currently-webhooks-will-execute-at": "下列URL将会在预定日期收到当日饮食计划包含的食谱数据。当前webhooks将于执行于",
"webhook-url": "Webhook URL",
"webhook-url": "Webhook 网址",
"webhooks-caps": "WEBHOOKS",
"webhooks": "Webhooks",
"webhook-name": "Webhook名称",
@@ -928,17 +928,17 @@
"server-side-base-url-error-text": "环境变量“BASE_URL“仍是API服务器上的默认值。这可能造成服务器自动发送的邮件所包含的通知链接不可用等问题。",
"server-side-base-url-success-text": "已配置服务器端URL",
"ldap-ready": "LDAP 已就绪",
"ldap-not-ready": "LDAP Not Ready",
"ldap-not-ready": "LDAP 未就绪",
"ldap-ready-error-text": "某些LDAP环境变量尚未配置。如果你不使用LDAP验证可以忽略该报错",
"ldap-ready-success-text": "LDAP所需的环境变量均已配置。",
"build": "构建",
"recipe-scraper-version": "食谱刮削器版本",
"oidc-ready": "OIDC 已就绪",
"oidc-not-ready": "OIDC Not Ready",
"oidc-not-ready": "OIDC 未就绪",
"oidc-ready-error-text": "某些OIDC环境变量尚未配置。如果你不使用OIDC验证可以忽略该报错",
"oidc-ready-success-text": "OIDC所需的环境变量均已配置。",
"openai-ready": "OpenAI 准备好了",
"openai-not-ready": "OpenAI Not Ready",
"openai-not-ready": "OpenAI 未就绪",
"openai-ready-error-text": "并非所有的 OpenAI 值都已配置。如果您不使用 OpenAI 功能,这将被忽略。",
"openai-ready-success-text": "所需的 OpenAI 变量已全部设置。"
},
@@ -946,13 +946,13 @@
"all-lists": "所有购物清单",
"create-shopping-list": "创建购物清单",
"from-recipe": "从食谱创建",
"ingredient-of-recipe": "Ingredient of {recipe}",
"ingredient-of-recipe": "{recipe} 的食品配料",
"list-name": "购物清单名称",
"new-list": "创建购物清单",
"quantity": "数量: {0} 个",
"shopping-list": "购物清单",
"shopping-lists": "购物清单",
"add-item": "Add item",
"add-item": "添加项目",
"food": "食品",
"note": "备注",
"label": "标注",
@@ -978,7 +978,7 @@
"are-you-sure-you-want-to-uncheck-all-items": "您确定要取消选中所有项目吗?",
"are-you-sure-you-want-to-delete-checked-items": "您确定要删除所有选中的项目吗?",
"no-shopping-lists-found": "没有发现购物清单",
"item-checked-off": "Checked off {item}"
"item-checked-off": "已勾除 {item}"
},
"sidebar": {
"all-recipes": "全部食谱",
@@ -1132,8 +1132,8 @@
"forgot-password": "忘记密码",
"forgot-password-text": "请输入你的邮箱地址,我们会发给你重置密码的链接。",
"changes-reflected-immediately": "对用户的更改将立即生效。",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
"default-activity": "默认页面",
"default-activity-hint": "选择在此设备登录后的默认页面"
},
"language-dialog": {
"translated": "已翻译",
@@ -1144,8 +1144,8 @@
},
"data-pages": {
"foods": {
"delete-affects-recipes": "Warning: this food is used in {count} recipe(s). Deleting it will leave an empty ingredient in the recipe(s).",
"delete-affects-recipes-more": "View all {count} recipes",
"delete-affects-recipes": "警告:{count} 个食谱使用这个食材。刪除会导致食谱出现空缺食材。",
"delete-affects-recipes-more": "查看全部 {count} 个食谱",
"merge-dialog-text": "此操作将把“待合并食物”和“目标食物”合并为一个食物(即“目标食物”)。 “待合并食物”将会被删除 ,之前所有对“待合并食物”的引用都会指向“目标食物”。",
"merge-food-example": "正在将{food1}合并到{food2} ",
"seed-dialog-text": "根据你当地的语言在数据库中输入食物。这将创建大约2700种常见的食物可以用来组织你的数据库。食物是通过社区努力翻译的。",
@@ -1183,20 +1183,20 @@
"example-unit-plural": "中文用户可忽略",
"example-unit-abbreviation-singular": "例如:勺",
"example-unit-abbreviation-plural": "中文用户可忽略",
"standardization": "Standardization",
"standardization": "标准化",
"standardization-description": "How this unit can be represented as a standard unit. This enables unit conversion features such as merging compatible units in shopping lists.",
"standard-unit": "Standard Unit",
"standard-quantity": "Standard Quantity",
"unit-conversion": "Unit Conversion",
"standard-unit": "标准单位",
"standard-quantity": "标准量",
"unit-conversion": "单位转换",
"standard-unit-labels": {
"fluid-ounce": "fluid ounce",
"cup": "cup",
"ounce": "ounce",
"pound": "pound",
"milliliter": "milliliter",
"liter": "liter",
"gram": "gram",
"kilogram": "kilogram"
"fluid-ounce": "液体盎司",
"cup": "",
"ounce": "盎司",
"pound": "",
"milliliter": "毫升",
"liter": "",
"gram": "",
"kilogram": "千克"
}
},
"labels": {
@@ -1233,7 +1233,7 @@
"edit-recipe-action": "编辑食谱行为",
"action-type": "行为种类",
"action-types": {
"link": "Link",
"link": "链接",
"post": "Post"
}
},
@@ -1519,7 +1519,7 @@
"announcements": "Announcements",
"all-announcements": "All announcements",
"mark-all-as-read": "Mark All as Read",
"show-announcements-from-mealie": "Show announcements from Mealie",
"show-announcements-setting-description": "Whether or not you want to allow users to see announcements from Mealie. When enabled users can still opt-out from seeing them in their user settings"
"show-announcements-from-mealie": "显示来自Mealie的公告",
"show-announcements-setting-description": "是否允许用户查看来自Mealie的公告。 如果启用,用户仍然可以在其用户设置中选择退出查看"
}
}

View File

@@ -98,7 +98,7 @@
"dashboard": "控制面板",
"delete": "刪除",
"disabled": "已停用",
"done": "Done",
"done": "完成",
"download": "下載",
"duplicate": "複製",
"edit": "編輯",
@@ -169,7 +169,7 @@
"token": "金鑰",
"tuesday": "星期二",
"type": "類型",
"undo": "Undo",
"undo": "還原",
"update": "更新",
"updated": "已更新",
"upload": "上傳",
@@ -224,8 +224,8 @@
"add-field": "新增欄位",
"date-created": "建立日期",
"date-updated": "更新日期",
"key": "Key",
"value": "Value"
"key": "",
"value": ""
},
"group": {
"are-you-sure-you-want-to-delete-the-group": "確定要刪除 <b>{groupName}</b>",
@@ -287,37 +287,37 @@
"total-households": "家庭群組總數",
"you-must-select-a-group-before-selecting-a-household": "請先選擇群組,再選擇家庭群組",
"ai-provider-settings": {
"ai-provider-settings": "AI Provider Settings",
"ai-provider": "AI Provider",
"ai-providers": "AI Providers",
"ai-provider-settings-description": "Configure AI providers to enable AI-powered features, such as enhanced ingredient parsing, creating recipes from videos, and more!",
"providers": "Providers",
"create-provider": "Create Provider",
"edit-provider": "Edit Provider",
"default-provider": "Default Provider",
"default-provider-description": "Required to enable AI features",
"audio-provider": "Audio Provider",
"audio-provider-description": "Enables audio transcription features, such as creating recipes from videos",
"image-provider": "Image Provider",
"image-provider-description": "Enables image recognition features, such as creating recipes from images",
"provider-name": "Provider Name",
"api-key": "API Key",
"api-key-description-create": "Your provider's API key for authentication. If your service (e.g. Ollama) doesn't use an API key, you still have to put something here.",
"api-key-description-edit": "Leave this blank unless you want to change it.",
"base-url": "Base URL",
"base-url-description": "If you're using OpenAI leave this blank. Must be an OpenAI-compatible endpoint (e.g. \"http://localhost:11434/v1\").",
"model": "Model",
"model-description": "Which model your AI provider should use (e.g. \"gpt-5\").",
"request-timeout-seconds": "Request Timeout (seconds)",
"provider-created": "Provider created",
"provider-updated": "Provider updated",
"provider-deleted": "Provider deleted",
"provider-create-failed": "Failed to create provider",
"provider-update-failed": "Failed to update provider",
"provider-delete-failed": "Failed to delete provider",
"request-headers": "Request Headers",
"request-params": "Request Parameters",
"no-default-provider-warning": "You have not set a default provider, so AI features are disabled"
"ai-provider-settings": "AI 提供者設定",
"ai-provider": "AI 提供者",
"ai-providers": "AI 提供者",
"ai-provider-settings-description": "請設定AI提供者以啟用AI輔助功能如強化食材解析從視頻建立食譜及更多",
"providers": "提供者",
"create-provider": "新增提供者",
"edit-provider": "編輯提供者",
"default-provider": "預設提供者",
"default-provider-description": "必須選擇以啟用AI功能",
"audio-provider": "音頻提供者",
"audio-provider-description": "啟用音頻轉錄功能,如從視頻建立食譜",
"image-provider": "圖片提供者",
"image-provider-description": "啟用圖片辨識功能,如從圖片建立食譜",
"provider-name": "提供者名稱",
"api-key": "API 密鑰",
"api-key-description-create": "你的提供者用作認證的API密鑰。如果你的服務 (如 Ollama) 不使用API密鑰你仍需在此欄填寫一些東西。",
"api-key-description-edit": "除非你需要更改,請留空此欄。",
"base-url": "基本網址",
"base-url-description": "如使用OpenAI請留空。必須為OpenAI兼容接口 (如 \"http://localhost:11434/v1\")",
"model": "模型",
"model-description": "AI提供者使用的模型 (如 \"gpt-5\")",
"request-timeout-seconds": "請求逾時 (秒)",
"provider-created": "提供者已建立",
"provider-updated": "提供者已更新",
"provider-deleted": "提供者已刪除",
"provider-create-failed": "提供者建立失敗",
"provider-update-failed": "提供者更新失敗",
"provider-delete-failed": "提供者刪除失敗",
"request-headers": "請求標頭",
"request-params": "請求參數",
"no-default-provider-warning": "你未設置預設提供者所以AI功能已停用"
}
},
"household": {
@@ -368,8 +368,8 @@
"any-household": "任何家庭",
"no-meal-plan-defined-yet": "目前無用餐計劃",
"no-meal-planned-for-today": "今日無用餐計劃",
"numberOfDaysPast-hint": "Number of days in the past on page load",
"numberOfDaysPast-label": "Default Days in the Past",
"numberOfDaysPast-hint": "頁面加載時過去的日數",
"numberOfDaysPast-label": "預設過去日數",
"numberOfDays-hint": "頁面載入時顯示的天數",
"numberOfDays-label": "預設天數",
"only-recipes-with-these-categories-will-be-used-in-meal-plans": "只有屬於這些類別的食譜會被用於用餐計劃",
@@ -663,7 +663,7 @@
"create-recipe-description": "從頭開始建立新食譜。",
"create-recipes": "建立食譜",
"import-with-zip": "以 .zip 匯入",
"create-recipe-from-images": "Create Recipe from Images",
"create-recipe-from-images": "從圖片建立食譜",
"create-recipe-from-an-image-description": "上傳食譜圖片來建立食譜Mealie 將嘗試使用 AI 從圖片中擷取文字並建立食譜。",
"crop-and-rotate-the-image": "請裁切並旋轉圖片,使其僅顯示文字且方向正確。",
"create-from-images": "從圖片建立",
@@ -675,8 +675,8 @@
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "輸入名稱來建立食譜,所有食譜名稱必須是唯一的。",
"new-recipe-names-must-be-unique": "新食譜名稱必須是唯一的",
"scrape-recipe": "爬取食譜",
"scrape-recipe-description": "Scrape a recipe by url. Provide the url for the site you want to scrape, and Mealie will attempt to scrape the recipe from that site and add it to your collection.",
"scrape-recipe-description-transcription": "You can also provide the url to a video and Mealie will attempt to transcribe it into a recipe.",
"scrape-recipe-description": "透過網址爬取食譜。提供您想爬取的網站網址Mealie 將嘗試從該網站擷取食譜並加入您的收藏。",
"scrape-recipe-description-transcription": "你也可以提供視頻的網址Mealie會嘗試轉錄為食譜。",
"scrape-recipe-have-a-lot-of-recipes": "想一次爬取大量食譜?",
"scrape-recipe-suggest-bulk-importer": "試試批次匯入工具",
"scrape-recipe-have-raw-html-or-json-data": "有原始 HTML 或 JSON 資料?",
@@ -904,7 +904,7 @@
"bug-report-information": "請使用以下資訊回報問題。提供您的執行環境詳細資訊,是讓開發人員快速解決問題的最佳方式。",
"tracker": "問題追蹤器",
"configuration": "設定",
"docker-volume": "Docker Volume",
"docker-volume": "Docker 資料卷",
"docker-volume-help": "Mealie 要求前端容器與後端共用相同的 Docker Volume 或儲存空間,以確保前端容器能正確存取儲存在磁碟上的圖片與資源。",
"volumes-are-misconfigured": "Volume 設定有誤。",
"volumes-are-configured-correctly": "Volume 設定正確。",
@@ -928,17 +928,17 @@
"server-side-base-url-error-text": "API 伺服器上的 `BASE_URL` 仍為預設值,這將導致伺服器產生的通知連結(如電子郵件等)出現問題。",
"server-side-base-url-success-text": "伺服器端 URL 與預設值不符",
"ldap-ready": "LDAP 就緒",
"ldap-not-ready": "LDAP Not Ready",
"ldap-not-ready": "LDAP 未就緒",
"ldap-ready-error-text": "部分 LDAP 設定尚未完成,若未使用 LDAP 驗證可忽略此訊息。",
"ldap-ready-success-text": "所有必要的 LDAP 變數均已設定。",
"build": "建置",
"recipe-scraper-version": "食譜擷取器版本",
"oidc-ready": "OIDC 就緒",
"oidc-not-ready": "OIDC Not Ready",
"oidc-not-ready": "OIDC 未就緒",
"oidc-ready-error-text": "部分 OIDC 設定尚未完成,若未使用 OIDC 驗證可忽略此訊息。",
"oidc-ready-success-text": "所有必要的 OIDC 變數均已設定。",
"openai-ready": "OpenAI 就緒",
"openai-not-ready": "OpenAI Not Ready",
"openai-not-ready": "OpenAI 未就緒",
"openai-ready-error-text": "部分 OpenAI 設定尚未完成,若未使用 OpenAI 功能可忽略此訊息。",
"openai-ready-success-text": "所有必要的 OpenAI 變數均已設定。"
},
@@ -946,13 +946,13 @@
"all-lists": "所有清單",
"create-shopping-list": "建立購物清單",
"from-recipe": "從食譜",
"ingredient-of-recipe": "Ingredient of {recipe}",
"ingredient-of-recipe": "{recipe} 的食材",
"list-name": "清單名稱",
"new-list": "新增清單",
"quantity": "數量:{0}",
"shopping-list": "購物清單",
"shopping-lists": "購物清單",
"add-item": "Add item",
"add-item": "新增項目",
"food": "食材",
"note": "備註",
"label": "標籤",
@@ -978,7 +978,7 @@
"are-you-sure-you-want-to-uncheck-all-items": "確定要取消勾選所有項目嗎?",
"are-you-sure-you-want-to-delete-checked-items": "確定要刪除所有已勾選的項目嗎?",
"no-shopping-lists-found": "找不到購物清單",
"item-checked-off": "Checked off {item}"
"item-checked-off": "已勾除 {item}"
},
"sidebar": {
"all-recipes": "所有食譜",
@@ -1144,8 +1144,8 @@
},
"data-pages": {
"foods": {
"delete-affects-recipes": "Warning: this food is used in {count} recipe(s). Deleting it will leave an empty ingredient in the recipe(s).",
"delete-affects-recipes-more": "View all {count} recipes",
"delete-affects-recipes": "警告:{count} 個食譜使用這個食材。刪除將導致食譜出現空缺食材。",
"delete-affects-recipes-more": "查看全部 {count} 個食譜",
"merge-dialog-text": "合併所選食材將把來源食材與目標食材合併為單一食材。來源食材將被刪除,所有對來源食材的參照將更新為指向目標食材。",
"merge-food-example": "將 {food1} 合併至 {food2}",
"seed-dialog-text": "根據您的本地語言,將常見食材植入資料庫。這將建立 200 種以上可用於整理資料庫的常見食材。食材翻譯由社群共同維護。",
@@ -1183,20 +1183,20 @@
"example-unit-plural": "例:湯匙(複數)",
"example-unit-abbreviation-singular": "例tbsp",
"example-unit-abbreviation-plural": "例tbsps",
"standardization": "Standardization",
"standardization-description": "How this unit can be represented as a standard unit. This enables unit conversion features such as merging compatible units in shopping lists.",
"standard-unit": "Standard Unit",
"standard-quantity": "Standard Quantity",
"unit-conversion": "Unit Conversion",
"standardization": "標準化",
"standardization-description": "這個單位可以如何以標準單位表達。這可啟用單位轉換功能如合併購物清單中的相容單位。",
"standard-unit": "標準單位",
"standard-quantity": "標準數量",
"unit-conversion": "單位轉換",
"standard-unit-labels": {
"fluid-ounce": "fluid ounce",
"cup": "cup",
"ounce": "ounce",
"pound": "pound",
"milliliter": "milliliter",
"liter": "liter",
"gram": "gram",
"kilogram": "kilogram"
"fluid-ounce": "液量盎司",
"cup": "",
"ounce": "盎司",
"pound": "",
"milliliter": "毫升",
"liter": "公升",
"gram": "",
"kilogram": "公斤"
}
},
"labels": {
@@ -1381,7 +1381,7 @@
"ingredients-natural-language-processor": "食材自然語言處理器",
"ingredients-natural-language-processor-explanation": "Mealie 使用條件隨機場CRF來解析和處理食材。食材所使用的模型基於紐約時報彙整的超過 10 萬筆食材資料集。由於模型僅以英文訓練,在其他語言下的結果可能有所差異。此頁面為測試模型的練習場。",
"ingredients-natural-language-processor-explanation-2": "雖然並不完美,但整體而言效果良好,是手動將食材解析為個別欄位的良好起點。此外,您也可以使用「暴力」處理器,透過模式比對技術來識別食材。",
"nlp": "NLP",
"nlp": "自然語言處理",
"brute": "暴力比對",
"openai": "OpenAI",
"show-individual-confidence": "顯示個別信心值",
@@ -1399,7 +1399,7 @@
"already-set-up-bring-to-homepage": "我已完成設定,直接帶我到首頁",
"common-settings-for-new-sites": "以下是新站台的常用設定",
"setup-complete": "設定完成!",
"ai-providers-description": "Optionally configure AI providers for your group. AI providers enable features like creating recipes from images, importing recipes from videos, and enhanced ingredient parsing. You can always configure this later from your group settings.",
"ai-providers-description": "可選地為你的群組設定AI提供者。AI提供者啟用如從圖片建立食譜從視頻導入食譜和強化食材解析等功能。你可以之後隨時在群組設定中設定。",
"here-are-a-few-things-to-help-you-get-started": "以下幾項可幫助您開始使用 Mealie",
"restore-from-v1-backup": "有舊版 Mealie v1 的備份?您可以在這裡還原。",
"manage-profile-or-get-invite-link": "管理您的個人資料,或取得邀請連結與他人分享。"
@@ -1516,10 +1516,10 @@
"max-length": "最多 {max} 個字元|最多 {max} 個字元"
},
"announcements": {
"announcements": "Announcements",
"all-announcements": "All announcements",
"mark-all-as-read": "Mark All as Read",
"show-announcements-from-mealie": "Show announcements from Mealie",
"show-announcements-setting-description": "Whether or not you want to allow users to see announcements from Mealie. When enabled users can still opt-out from seeing them in their user settings"
"announcements": "公告",
"all-announcements": "全部公告",
"mark-all-as-read": "將全部標記為已讀",
"show-announcements-from-mealie": "顯示來自Mealie的公告",
"show-announcements-setting-description": "允許用戶查看來自Mealie的公吿與否。當啟用時用戶仍可在自己的用戶設定中選擇不查看"
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "mealie",
"version": "3.20.1",
"version": "3.19.2",
"private": true,
"scripts": {
"dev": "nuxt dev",
@@ -41,8 +41,8 @@
"vue-advanced-cropper": "^2.8.9",
"vue-draggable-plus": "^0.6.0",
"vue-i18n": "^11.4.4",
"vuetify": "^4.1.2",
"vuetify-nuxt-module": "^1.0.0-rc.1"
"vuetify": "^4.0.5",
"vuetify-nuxt-module": "^0.19.5"
},
"devDependencies": {
"@nuxt/eslint": "^1.2.0",

View File

@@ -18,6 +18,11 @@
package-manager-detector "^1.3.0"
tinyexec "^1.0.1"
"@antfu/utils@^8.1.0":
version "8.1.1"
resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-8.1.1.tgz#95b1947d292a9a2efffba2081796dcaa05ecedfb"
integrity sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==
"@apideck/better-ajv-errors@^0.3.1":
version "0.3.7"
resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.7.tgz#89238f689d81a644139a47e0ebc2e236bca1ff2c"
@@ -2242,7 +2247,7 @@
unplugin "^2.3.3"
unstorage "^1.16.0"
"@nuxt/kit@4.4.8", "@nuxt/kit@^4.4.2", "@nuxt/kit@^4.4.8":
"@nuxt/kit@4.4.8", "@nuxt/kit@^3.15.4 || ^4.0.0", "@nuxt/kit@^4.4.2", "@nuxt/kit@^4.4.8":
version "4.4.8"
resolved "https://registry.yarnpkg.com/@nuxt/kit/-/kit-4.4.8.tgz#19e583f8e29c5363fd41f6f25995d2ae00611096"
integrity sha512-ZUlZ5iYfyfJFDPluhn6ZxFWcsuxWbLnZBc8w3MAROcQ4lYfZ+qFpALBLSNlpc0zhOa++33EE+5PEbOAdVIY+dw==
@@ -3169,13 +3174,6 @@
resolved "https://registry.yarnpkg.com/@poppinss/exception/-/exception-1.2.3.tgz#b713855e6c9fe2110fea0949455c50828145e64a"
integrity sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==
"@quansync/fs@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@quansync/fs/-/fs-1.0.0.tgz#17131b1f1c261fcfb63893272c488df89c73f48f"
integrity sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==
dependencies:
quansync "^1.0.0"
"@replit/codemirror-indentation-markers@^6.5.3":
version "6.5.3"
resolved "https://registry.yarnpkg.com/@replit/codemirror-indentation-markers/-/codemirror-indentation-markers-6.5.3.tgz#1cfe5c557c45dd7f2988cbee278f17607010591b"
@@ -4182,15 +4180,6 @@
dependencies:
upath "^2.0.1"
"@vuetify/unplugin-styles@^1.0.0-beta.11":
version "1.0.0-beta.11"
resolved "https://registry.yarnpkg.com/@vuetify/unplugin-styles/-/unplugin-styles-1.0.0-beta.11.tgz#f21257c411a48e9dfc0abc575986594318ff2919"
integrity sha512-cMqc4HVOmR4IvqrBJ+jVen7OVht32RvjM2f46OG07nVWwmumH4j6Vr9S+q+kl3frtxjVIZyEosl4a43VPGZUQQ==
dependencies:
pathe "^2.0.3"
semver "^7.7.4"
unplugin "^3.0.0"
"@vueuse/core@^12.7.0":
version "12.8.2"
resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-12.8.2.tgz#007c6dd29a7d1f6933e916e7a2f8ef3c3f968eaa"
@@ -4695,6 +4684,13 @@ bundle-name@^4.1.0:
dependencies:
run-applescript "^7.0.0"
bundle-require@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-5.1.0.tgz#8db66f41950da3d77af1ef3322f4c3e04009faee"
integrity sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==
dependencies:
load-tsconfig "^0.2.3"
c12@^3.3.4:
version "3.3.4"
resolved "https://registry.yarnpkg.com/c12/-/c12-3.3.4.tgz#1253a5faf8b61244884d42459b4a6412571fe9f3"
@@ -5296,7 +5292,7 @@ depd@~2.0.0:
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
destr@^2.0.5:
destr@^2.0.3, destr@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.5.tgz#7d112ff1b925fb8d2079fac5bdb4a90973b51fdb"
integrity sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==
@@ -5614,7 +5610,7 @@ es-to-primitive@^1.3.0:
is-date-object "^1.1.0"
is-symbol "^1.1.1"
esbuild@^0.25.1, esbuild@^0.25.4:
"esbuild@^0.20.2 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", esbuild@^0.25.1, esbuild@^0.25.4:
version "0.25.12"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.12.tgz#97a1d041f4ab00c2fce2f838d2b9969a2d2a97a5"
integrity sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==
@@ -5678,7 +5674,7 @@ esbuild@^0.27.0:
"@esbuild/win32-ia32" "0.27.7"
"@esbuild/win32-x64" "0.27.7"
esbuild@^0.28.0:
esbuild@^0.28.0, esbuild@~0.28.0:
version "0.28.1"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.28.1.tgz#ef45b4634c9c9d97a296aea4114a5f9840f95578"
integrity sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==
@@ -6769,6 +6765,18 @@ import-fresh@^3.2.1:
parent-module "^1.0.0"
resolve-from "^4.0.0"
importx@^0.5.1:
version "0.5.2"
resolved "https://registry.yarnpkg.com/importx/-/importx-0.5.2.tgz#db5f142d10e1c2a10f4ae14d69d1e6a8bf2c86f8"
integrity sha512-YEwlK86Ml5WiTxN/ECUYC5U7jd1CisAVw7ya4i9ZppBoHfFkT2+hChhr3PE2fYxUKLkNyivxEQpa5Ruil1LJBQ==
dependencies:
bundle-require "^5.1.0"
debug "^4.4.0"
esbuild "^0.20.2 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0"
jiti "^2.4.2"
pathe "^2.0.3"
tsx "^4.19.2"
impound@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/impound/-/impound-1.1.5.tgz#ce3acc2988fde76cf5c793127b89f26270302b54"
@@ -7566,6 +7574,11 @@ listr2@^8.2.5:
rfdc "^1.4.1"
wrap-ansi "^9.0.0"
load-tsconfig@^0.2.3:
version "0.2.5"
resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1"
integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==
local-pkg@^1.0.0, local-pkg@^1.1.2, local-pkg@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-1.2.1.tgz#9628389399851d78f3b50c9236eddb02f0c31b2b"
@@ -8521,7 +8534,7 @@ path-scurry@^2.0.0, path-scurry@^2.0.2:
lru-cache "^11.0.0"
minipass "^7.1.2"
pathe@^1.0.0, pathe@^1.1.1:
pathe@^1.0.0, pathe@^1.1.1, pathe@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec"
integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==
@@ -8531,6 +8544,11 @@ pathe@^2.0.1, pathe@^2.0.2, pathe@^2.0.3:
resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716"
integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==
perfect-debounce@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a"
integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==
perfect-debounce@^2.0.0, perfect-debounce@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-2.1.0.tgz#e7078e38f231cb191855c3136a4423aef725d261"
@@ -8891,11 +8909,6 @@ quansync@^0.2.11:
resolved "https://registry.yarnpkg.com/quansync/-/quansync-0.2.11.tgz#f9c3adda2e1272e4f8cf3f1457b04cbdb4ee692a"
integrity sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==
quansync@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/quansync/-/quansync-1.0.0.tgz#1c29acccd544cd68d97a7350c5099e0a9bc7e5ee"
integrity sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@@ -10193,6 +10206,15 @@ tslib@^2.1.0, tslib@^2.4.0, tslib@^2.8.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
tsx@^4.19.2:
version "4.22.4"
resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.22.4.tgz#0ab3b7fb4ec7feeee74e5b1f26337caa71e44700"
integrity sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==
dependencies:
esbuild "~0.28.0"
optionalDependencies:
fsevents "~2.3.3"
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
@@ -10292,24 +10314,14 @@ unbox-primitive@^1.1.0:
has-symbols "^1.1.0"
which-boxed-primitive "^1.1.1"
unconfig-core@7.5.0:
version "7.5.0"
resolved "https://registry.yarnpkg.com/unconfig-core/-/unconfig-core-7.5.0.tgz#68f3d000701288418f3d36203d886f38c3986677"
integrity sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==
unconfig@^0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/unconfig/-/unconfig-0.6.1.tgz#ae5a1b46e6e50426da8060d46879511f5874515b"
integrity sha512-cVU+/sPloZqOyJEAfNwnQSFCzFrZm85vcVkryH7lnlB/PiTycUkAjt5Ds79cfIshGOZ+M5v3PBDnKgpmlE5DtA==
dependencies:
"@quansync/fs" "^1.0.0"
quansync "^1.0.0"
unconfig@^7.5.0:
version "7.5.0"
resolved "https://registry.yarnpkg.com/unconfig/-/unconfig-7.5.0.tgz#122d8ef27e27aedf5551485069161c0852ab534d"
integrity sha512-oi8Qy2JV4D3UQ0PsopR28CzdQ3S/5A1zwsUwp/rosSbfhJ5z7b90bIyTwi/F7hCLD4SGcZVjDzd4XoUQcEanvA==
dependencies:
"@quansync/fs" "^1.0.0"
"@antfu/utils" "^8.1.0"
defu "^6.1.4"
jiti "^2.6.1"
quansync "^1.0.0"
unconfig-core "7.5.0"
importx "^0.5.1"
uncrypto@^0.1.3:
version "0.1.3"
@@ -10796,6 +10808,15 @@ vite-plugin-vue-tracer@^1.3.0:
pathe "^2.0.3"
source-map-js "^1.2.1"
vite-plugin-vuetify@^2.1.3:
version "2.1.3"
resolved "https://registry.yarnpkg.com/vite-plugin-vuetify/-/vite-plugin-vuetify-2.1.3.tgz#9968d1e85429f93fc2dc06da8c4a5e7651986964"
integrity sha512-Q4SC/4TqbNvaZIFb9YsfBqkGlYHbJJJ6uU3CnRBZqLUF3s5eCMVZAaV4GkTbehIH/bhSj42lMXztOwc71u6rVw==
dependencies:
"@vuetify/loader-shared" "^2.1.2"
debug "^4.3.3"
upath "^2.0.1"
"vite@^6.0.0 || ^7.0.0 || ^8.0.0":
version "8.0.16"
resolved "https://registry.yarnpkg.com/vite/-/vite-8.0.16.tgz#ae073866c06563d6634a90169a496e11bd84f1a6"
@@ -10972,23 +10993,25 @@ vue@^3.4, vue@^3.5.13, vue@^3.5.35:
"@vue/server-renderer" "3.5.38"
"@vue/shared" "3.5.38"
vuetify-nuxt-module@^1.0.0-rc.1:
version "1.0.0-rc.1"
resolved "https://registry.yarnpkg.com/vuetify-nuxt-module/-/vuetify-nuxt-module-1.0.0-rc.1.tgz#0254dd78d1ee6ac94d319d95a7b6def9a2e7aff1"
integrity sha512-uGMT8HmIC//ekwBMxQZkzjl+KB4bYOjGX+6ceOy0smdJ4cPPK7MdF9Yy4Rh2rPjMRIXT1KBa1+4LdvDZPpLYmQ==
vuetify-nuxt-module@^0.19.5:
version "0.19.5"
resolved "https://registry.yarnpkg.com/vuetify-nuxt-module/-/vuetify-nuxt-module-0.19.5.tgz#196240bd7a62a07272d78102ec4b12367688adae"
integrity sha512-B4SgLFqNlxaF/PZacxy+Wdy09G33E/aZXAPjNbFIblT7JOs07+VuNPrGUQuAzKwiGmU30xgkm5PL9opNpVcXTg==
dependencies:
"@nuxt/kit" "^4.4.8"
"@vuetify/loader-shared" "^2.1.2"
"@vuetify/unplugin-styles" "^1.0.0-beta.11"
defu "^6.1.7"
local-pkg "^1.2.1"
pathe "^2.0.3"
perfect-debounce "^2.1.0"
semver "^7.8.4"
ufo "^1.6.4"
unconfig "^7.5.0"
"@nuxt/kit" "^3.15.4 || ^4.0.0"
defu "^6.1.4"
destr "^2.0.3"
local-pkg "^1.1.2"
pathe "^1.1.2"
perfect-debounce "^1.0.0"
semver "^7.7.3"
ufo "^1.5.4"
unconfig "^0.6.1"
upath "^2.0.1"
vite-plugin-vuetify "^2.1.3"
vuetify "^3.7.0 || ^4.0.0-0"
vuetify@^4.1.2:
"vuetify@^3.7.0 || ^4.0.0-0", vuetify@^4.0.5:
version "4.1.2"
resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-4.1.2.tgz#a2240e7b91e459d4b33a5cae59e28746341deda4"
integrity sha512-2SUzXt2Q71/cVmSZhU6kOmAo1ev3NZaI/ynj55TTcu6jXAc9kezoqZKY+Xm+0STnAOcCoTseF0qPSs01LjUaaA==

View File

@@ -18,17 +18,17 @@
"yield": "產出",
"yields": "產出"
},
"and-amount": "and {amount}",
"or-ingredient": "or {ingredient}",
"and-amount": " {amount}",
"or-ingredient": " {ingredient}",
"create-progress": {
"creating-recipe-with-ai": "Creating recipe with AI...",
"creating-recipe-from-transcript-with-ai": "Creating recipe from transcript with AI...",
"creating-recipe-from-webpage-data": "Creating recipe from webpage data...",
"downloading-image": "Downloading image...",
"downloading-video": "Downloading video...",
"extracting-recipe-data": "Extracting recipe data...",
"fetching-webpage": "Fetching webpage...",
"transcribing-audio-with-ai": "Transcribing audio with AI..."
"creating-recipe-with-ai": "正在使用AI建立食譜……",
"creating-recipe-from-transcript-with-ai": "正在使用AI轉錄建立食譜……",
"creating-recipe-from-webpage-data": "正在使用網頁資料建立食譜……",
"downloading-image": "圖片下載中……",
"downloading-video": "影片下載中……",
"extracting-recipe-data": "提取食譜資料中……",
"fetching-webpage": "抓取網頁中……",
"transcribing-audio-with-ai": "正在使用AI轉錄音頻……"
}
},
"mealplan": {

View File

@@ -1,6 +1,6 @@
[project]
name = "mealie"
version = "3.20.1"
version = "3.19.2"
description = "A Recipe Manager"
authors = [{ name = "Hayden", email = "hay-kot@pm.me" }]
license = "AGPL-3.0-only"
@@ -15,7 +15,7 @@ dependencies = [
"apprise==1.11.0",
"bcrypt==5.0.0",
"extruct==0.18.0",
"fastapi==0.138.0",
"fastapi==0.137.2",
"httpx==0.28.1",
"lxml==6.1.1",
"orjson==3.11.9",
@@ -37,7 +37,7 @@ dependencies = [
"authlib==1.7.2",
"html2text==2025.4.15",
"paho-mqtt==1.6.1",
"pydantic-settings==2.14.2",
"pydantic-settings==2.14.1",
"pillow-heif==1.4.0",
"pyjwt==2.13.0",
"openai==2.43.0",
@@ -62,13 +62,13 @@ docs = [
"mkdocs-material==9.7.6",
]
dev = [
"coverage==7.14.2",
"coverage==7.14.1",
"coveragepy-lcov==0.1.2",
"mkdocs-material==9.7.6",
"mypy==2.1.0",
"pre-commit==4.6.0",
"pylint==4.0.6",
"pytest==9.1.1",
"pytest==9.1.0",
"pytest-asyncio==1.4.0",
"rich==15.0.0",
"ruff==0.15.18",

64
uv.lock generated
View File

@@ -284,26 +284,26 @@ wheels = [
[[package]]
name = "coverage"
version = "7.14.2"
version = "7.14.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/9c/a3/3834a5564fe8f32154cd7032400d3c2f9c565b2a373fa671f2bbdad6f634/coverage-7.14.2.tar.gz", hash = "sha256:7a2da3d81cfe17c18038c6d98e6592aa9147d596d056119b0ee612c3c8bd5230", size = 923982, upload-time = "2026-06-20T14:49:30.885Z" }
sdist = { url = "https://files.pythonhosted.org/packages/54/fd/0ab2772530e946e1be1abd0bc09e647ec9b02e88f0867857601fefca8953/coverage-7.14.1.tar.gz", hash = "sha256:30c08f7d90415aa98b3c990385dea2939b0da55f38515e5b369b83655f8523be", size = 920132, upload-time = "2026-05-26T20:41:36.783Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/d0/d9/bdd141aa2c605096a8ef63b8435fd4f5fec78946a3cb7b9145840ec78291/coverage-7.14.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:37c94712e533ea06f0b1e4d934811c520b1914ce0e4da3916220717aa7a86bc6", size = 220528, upload-time = "2026-06-20T14:47:49.652Z" },
{ url = "https://files.pythonhosted.org/packages/02/97/d24ae7d2afc62c54a36313d4dedb655c9afbba3003f0f7f1ae81e97af31f/coverage-7.14.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c050bbc7bba94c77e4ed7438f4fda1babe98ab145691d80aa6f60df934a1468b", size = 220883, upload-time = "2026-06-20T14:47:51.036Z" },
{ url = "https://files.pythonhosted.org/packages/f8/0e/d8f00efd3df0d63e6843ebcbade9e4119d60f5376753c9705d84b014c775/coverage-7.14.2-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a7af571767a2ee342a171c16fc1b1a07a0bf511606d381703fb7cf397fe49d46", size = 252395, upload-time = "2026-06-20T14:47:52.627Z" },
{ url = "https://files.pythonhosted.org/packages/1c/1c/ab9510dfe1a16a35a10f90efad0d9a9cf61b9876973752968f2ba882f73f/coverage-7.14.2-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8b4910cce599cd2438f8da65f5ef199a70a1cdb6ab314926df78271ca5954240", size = 255131, upload-time = "2026-06-20T14:47:54.235Z" },
{ url = "https://files.pythonhosted.org/packages/ba/dd/70171e9371003b33dc6b20f527ac216ff91bbe5c1088e754eb8950d79193/coverage-7.14.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c33e9e4878972f430b0cc06de3bf2a28d054a9efb4f8426d27de0d9cb81396ff", size = 256246, upload-time = "2026-06-20T14:47:55.61Z" },
{ url = "https://files.pythonhosted.org/packages/0f/80/a68b1dd81d5c011e17fd6ab0d707d33297df1d0c618114b9b750a2219c80/coverage-7.14.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e7967ea55c6dea6becba4d5870e2fa0aa4915a8be7ebff1bb79e6207aa75ce8d", size = 258504, upload-time = "2026-06-20T14:47:56.979Z" },
{ url = "https://files.pythonhosted.org/packages/8e/7b/40baaa946189f5317cd77d484e39b9b0727d02ebada0a12162374f2faee2/coverage-7.14.2-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d1322f237c2979b84096f4239c17828ff17fea6b3bbe96c44381c5f587c44c26", size = 252808, upload-time = "2026-06-20T14:47:58.418Z" },
{ url = "https://files.pythonhosted.org/packages/d5/05/b19517b09c43d1e8591de6c13178b0c03166c31e1adbebda378e64c66b9a/coverage-7.14.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:77849525340c99f516d793dddbcee16b18d50af892ac43c8de1a6f343d41e3b5", size = 254166, upload-time = "2026-06-20T14:48:00.004Z" },
{ url = "https://files.pythonhosted.org/packages/ae/f5/6e65da5957e041d2094a9b97736628dd80160f1cc007a50790bbb2668c1a/coverage-7.14.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ef11695493ec3f06f7b2678ca274bcabb4ca04057317df268ddbfd8b05f661a8", size = 252310, upload-time = "2026-06-20T14:48:01.458Z" },
{ url = "https://files.pythonhosted.org/packages/2d/de/01b5274f0db63175b04d9354eff68d2d268b8b57a1b2db7d3dcb1f2c9dbb/coverage-7.14.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8134f0e0723e080d1c27bbe8fc149f0162e429fa1852482150015d0fce83eaf1", size = 256379, upload-time = "2026-06-20T14:48:02.981Z" },
{ url = "https://files.pythonhosted.org/packages/71/d6/9a2ffbca41e2f8f86f61e8b78b86afa433ec8cdeac4908ace93a28fe3ff0/coverage-7.14.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:914eead2b843fc357f733b3fe39cc94f1b53d466e8cfe03080b1ed9d24ccfc73", size = 251880, upload-time = "2026-06-20T14:48:04.463Z" },
{ url = "https://files.pythonhosted.org/packages/e3/ff/20bd54a43c88c08f474e6cb355a97e024e38412873ef0a581629abe1e26f/coverage-7.14.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e4b2d5e847fb7958583b74910cc19e5ec4ece514487385677b26433b2546116e", size = 253753, upload-time = "2026-06-20T14:48:05.99Z" },
{ url = "https://files.pythonhosted.org/packages/35/2a/2b3482c30d8344f301d8df6ff232a321f2ab87d5ac97ba21891a68638131/coverage-7.14.2-cp312-cp312-win32.whl", hash = "sha256:e753db9e40dda7302e0ac3e1e6e1325fb7f7b4694f87a7314ab15dd5d57911a7", size = 222584, upload-time = "2026-06-20T14:48:07.361Z" },
{ url = "https://files.pythonhosted.org/packages/f6/5e/83934ffff147edd313fe925db426e8f7ccad9e4663262eb5c4db4e345658/coverage-7.14.2-cp312-cp312-win_amd64.whl", hash = "sha256:d32e5ca5f16dafb269ee50b60d32b00c704b3f6f78e238105f1d94a3a5f24bf5", size = 223118, upload-time = "2026-06-20T14:48:08.837Z" },
{ url = "https://files.pythonhosted.org/packages/bb/ee/616b4f38a34f076f3045d3eedfa764d34d82e6a6cc6b300acb0f1ff22a98/coverage-7.14.2-cp312-cp312-win_arm64.whl", hash = "sha256:dc366f158e2fb2add9d4e57338ca48f12611024278688ee657eb0b853fcb5de5", size = 222504, upload-time = "2026-06-20T14:48:10.436Z" },
{ url = "https://files.pythonhosted.org/packages/a3/5e/a8ba14ceb014f39bd5e3f7077150718c7de61c01ce326bfe7e8eae9b19b2/coverage-7.14.2-py3-none-any.whl", hash = "sha256:04d92589e481a8b68a005a5a1e0646a91c76f322c397c4635298c57cf63699b5", size = 212325, upload-time = "2026-06-20T14:49:28.991Z" },
{ url = "https://files.pythonhosted.org/packages/3d/b7/bdbb725ba02c5b42825b200c940f38b7a54fcad24627b7192f78f8110d76/coverage-7.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a06c76364a9360e33d6d23769aefdf7f66f38e2ffb60ceb1baaa4989d83b695c", size = 220022, upload-time = "2026-05-26T20:39:03.702Z" },
{ url = "https://files.pythonhosted.org/packages/72/81/fdc0898a55c6219223291ec1a1fe89966ef212ce82276aa0899df84b5de0/coverage-7.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fad54e871165f6ec2f536063ac74c3104508a12963e64072ba44bd822de52b0c", size = 220379, upload-time = "2026-05-26T20:39:05.381Z" },
{ url = "https://files.pythonhosted.org/packages/de/72/de048c4a25e13bce59ac6a339351c10bdf2515e07459afcdaf04dc3143a2/coverage-7.14.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:84b535f00655ecafe1d929d1fb00ed5d6fa3051ea643ab2c161a3887b86f294b", size = 251888, upload-time = "2026-05-26T20:39:07.367Z" },
{ url = "https://files.pythonhosted.org/packages/28/30/300c343f68beb9d4cbb64ec81e58c5b6b80b56927f72d2b38654ac26e013/coverage-7.14.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6b6b0853b895fe0e98cbfc580d1ec3393d9302b4b1e96a77b3f5c91fdab899e6", size = 254624, upload-time = "2026-05-26T20:39:09.037Z" },
{ url = "https://files.pythonhosted.org/packages/b1/ed/7b25642496e8170b6bac14adce00537c6e5fa2d586159401a4de3e8b49e6/coverage-7.14.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:442cc9c952b2df400cda54bb04ab87330cf2cd08a8692cbbea36773531eb6f37", size = 255739, upload-time = "2026-05-26T20:39:10.889Z" },
{ url = "https://files.pythonhosted.org/packages/7f/a2/abd210b8c4e29c24e4624916db97bb519097a91034aaeb767f937e7da794/coverage-7.14.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8270544c361ed405a27a060dbc9ed2c124b084d96dfdc2d9a2510482aef981ad", size = 257998, upload-time = "2026-05-26T20:39:12.722Z" },
{ url = "https://files.pythonhosted.org/packages/7f/24/7c50beed3792fe62f6ce0545c6686ce83379719e2c0276179333d97eae92/coverage-7.14.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:48b283b1dd6372e8de2a7a9a4c4d5dc06f4d4fd209b876f3c88a7a205a0c8f84", size = 252296, upload-time = "2026-05-26T20:39:14.259Z" },
{ url = "https://files.pythonhosted.org/packages/15/05/0f874628ebcbfc77ead559ff210281ef06a97db08481832e7dd39274a135/coverage-7.14.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5b0c99ba93a07d56f6df340bb79be53202a082b2fdb81bfe6190b741a3470d54", size = 253658, upload-time = "2026-05-26T20:39:15.923Z" },
{ url = "https://files.pythonhosted.org/packages/99/6f/ca6ad067364b337ef997802115e7ecad2abd2248b05471464b0dea02b4d4/coverage-7.14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e471bc5769ff073b058cfadb0d736b56ce067c8560eabeb0da88462df98c23e7", size = 251803, upload-time = "2026-05-26T20:39:17.537Z" },
{ url = "https://files.pythonhosted.org/packages/c0/30/b9b4d377cd9f40baf228068f5a81faf8450c6228503011bd499708483a50/coverage-7.14.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f497a1ea81d4cd7c10ddcaa685135b9aabd291af3d55775a9ddf3cb7a364cdd9", size = 255873, upload-time = "2026-05-26T20:39:19.414Z" },
{ url = "https://files.pythonhosted.org/packages/3c/21/7c721a9e5e6bb88547d30a787aefb97512d3f54c1324c7488d9b3743f7f9/coverage-7.14.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2222be86d0b54f5dd5a38f45f17f315f737245e857bf0bdedc70734f84a13c02", size = 251372, upload-time = "2026-05-26T20:39:21.169Z" },
{ url = "https://files.pythonhosted.org/packages/9d/8c/f8ae5a2200130e1503cd7661a6cd3b2b7bacef98277fbf3571fb13f8b766/coverage-7.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:85e85586565842f6932abebd4c18bcb1074223dc0b3576e7d173ca710622813a", size = 253245, upload-time = "2026-05-26T20:39:23.097Z" },
{ url = "https://files.pythonhosted.org/packages/34/62/70a9024672a5f6910517d9628c52c9afbdd3cf8f46426af52bb148a56fff/coverage-7.14.1-cp312-cp312-win32.whl", hash = "sha256:4a28fd227808366b196a75476dced2eb35b351d6766ba9c858dc93319e87f4f1", size = 222567, upload-time = "2026-05-26T20:39:24.868Z" },
{ url = "https://files.pythonhosted.org/packages/f6/81/8b7cd386839b039ebe1855733b9f9449a8dec5d79564018234f185a7fa70/coverage-7.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:54acdb6674a4661768d7bf7db32dfb9f46ab1d764f8aba6df75ce1a6a088724e", size = 223372, upload-time = "2026-05-26T20:39:26.603Z" },
{ url = "https://files.pythonhosted.org/packages/ae/ba/b44d472022f620d289d95fa830143235c0c36461c6f2437ea8d51e5481ed/coverage-7.14.1-cp312-cp312-win_arm64.whl", hash = "sha256:99cd41ff91afd94896fea3bc002706b6ae4ce95727d06e4a0f39c0a8d8bd8b1a", size = 221989, upload-time = "2026-05-26T20:39:28.242Z" },
{ url = "https://files.pythonhosted.org/packages/8a/3c/1a983b9a745d7f83d53f057bcc5bf79ba6a2bbc08266b3f0c7d6fe630c9b/coverage-7.14.1-py3-none-any.whl", hash = "sha256:a252f21c27e38347e60111a3266b03827422a7d5525951aceee313aa68bab1d2", size = 211815, upload-time = "2026-05-26T20:41:34.078Z" },
]
[[package]]
@@ -429,7 +429,7 @@ wheels = [
[[package]]
name = "fastapi"
version = "0.138.0"
version = "0.137.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "annotated-doc" },
@@ -438,9 +438,9 @@ dependencies = [
{ name = "typing-extensions" },
{ name = "typing-inspection" },
]
sdist = { url = "https://files.pythonhosted.org/packages/5b/58/ff455d9fe47c60abadb34b9e05a304b1f05f5ab8000ac01565156b6f5e43/fastapi-0.138.0.tar.gz", hash = "sha256:d445a4877636ad191e7053e08c9bf98cb921a6756776848400bb773d1740c061", size = 419240, upload-time = "2026-06-20T01:18:05.259Z" }
sdist = { url = "https://files.pythonhosted.org/packages/e2/29/cc5819dc24d3daa80cdaa1aec023bf8652a70dd7fd1c96b0b225c99a7690/fastapi-0.137.2.tar.gz", hash = "sha256:b9d893bebc97dcfbdcb1917e88a292d062844ea19445a5fa4f7eb28c4baea9e3", size = 410332, upload-time = "2026-06-18T06:58:24.434Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/6c/ff/8496d9847a5fedae775eb49460722d3efaa80487854273e9647ae876218c/fastapi-0.138.0-py3-none-any.whl", hash = "sha256:b6f54fd1bd72c80b0f899f172c61a600f6f7af9b43d4d772a018f35624048cb0", size = 126779, upload-time = "2026-06-20T01:18:03.483Z" },
{ url = "https://files.pythonhosted.org/packages/2f/ed/0c6b644e99fb5697d8bdcd36cdb47c52e77a63fc7a1514b1f03a6ecab955/fastapi-0.137.2-py3-none-any.whl", hash = "sha256:791d36261e916a98b25ac85ee591bc3db159394070f6d3d096d94fb378f60ce2", size = 122252, upload-time = "2026-06-18T06:58:26.074Z" },
]
[[package]]
@@ -881,7 +881,7 @@ wheels = [
[[package]]
name = "mealie"
version = "3.20.1"
version = "3.19.2"
source = { editable = "." }
dependencies = [
{ name = "aiofiles" },
@@ -965,7 +965,7 @@ requires-dist = [
{ name = "bcrypt", specifier = "==5.0.0" },
{ name = "beautifulsoup4", specifier = "==4.15.0" },
{ name = "extruct", specifier = "==0.18.0" },
{ name = "fastapi", specifier = "==0.138.0" },
{ name = "fastapi", specifier = "==0.137.2" },
{ name = "html2text", specifier = "==2025.4.15" },
{ name = "httpx", specifier = "==0.28.1" },
{ name = "httpx-curl-cffi", specifier = "==0.1.5" },
@@ -982,7 +982,7 @@ requires-dist = [
{ name = "pint", specifier = "==0.25.3" },
{ name = "psycopg2-binary", marker = "extra == 'pgsql'", specifier = "==2.9.12" },
{ name = "pydantic", specifier = "==2.13.4" },
{ name = "pydantic-settings", specifier = "==2.14.2" },
{ name = "pydantic-settings", specifier = "==2.14.1" },
{ name = "pyhumps", specifier = "==3.8.0" },
{ name = "pyjwt", specifier = "==2.13.0" },
{ name = "python-dateutil", specifier = "==2.9.0.post0" },
@@ -1005,7 +1005,7 @@ provides-extras = ["pgsql"]
[package.metadata.requires-dev]
dev = [
{ name = "coverage", specifier = "==7.14.2" },
{ name = "coverage", specifier = "==7.14.1" },
{ name = "coveragepy-lcov", specifier = "==0.1.2" },
{ name = "freezegun", specifier = "==1.5.5" },
{ name = "mkdocs-material", specifier = "==9.7.6" },
@@ -1013,7 +1013,7 @@ dev = [
{ name = "pre-commit", specifier = "==4.6.0" },
{ name = "pydantic-to-typescript2", specifier = "==1.0.6" },
{ name = "pylint", specifier = "==4.0.6" },
{ name = "pytest", specifier = "==9.1.1" },
{ name = "pytest", specifier = "==9.1.0" },
{ name = "pytest-asyncio", specifier = "==1.4.0" },
{ name = "rich", specifier = "==15.0.0" },
{ name = "ruff", specifier = "==0.15.18" },
@@ -1458,16 +1458,16 @@ wheels = [
[[package]]
name = "pydantic-settings"
version = "2.14.2"
version = "2.14.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pydantic" },
{ name = "python-dotenv" },
{ name = "typing-inspection" },
]
sdist = { url = "https://files.pythonhosted.org/packages/5c/b5/8f48e906c3e0205276e8bd8cb7512217a87b2685304d64be27cad5b3019f/pydantic_settings-2.14.2.tar.gz", hash = "sha256:c19dd64b19097f1de80184f0cc7b0272a13ae6e170cbf240a3e27e381ed14a5f", size = 237700, upload-time = "2026-06-19T13:44:56.324Z" }
sdist = { url = "https://files.pythonhosted.org/packages/07/60/1d1e59c9c90d54591469ada7d268251f71c24bdb765f1a8a832cee8c6653/pydantic_settings-2.14.1.tar.gz", hash = "sha256:e874d3bec7e787b0c9958277956ed9b4dd5de6a80e162188fdaff7c5e26fd5fa", size = 235551, upload-time = "2026-05-08T13:40:06.542Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/77/c1/6e422f34e569cf8e18df68d1939c81c099d2b61e4f7d9621c8a77560799c/pydantic_settings-2.14.2-py3-none-any.whl", hash = "sha256:a20c97b37910b6550d5ea50fbcc2d4187defe58cd57070b73863d069419c9440", size = 61715, upload-time = "2026-06-19T13:44:55.02Z" },
{ url = "https://files.pythonhosted.org/packages/ae/8d/f1af3832f5e6eb13ba94ee809e72b8ecb5eef226d27ee0bef7d963d943c7/pydantic_settings-2.14.1-py3-none-any.whl", hash = "sha256:6e3c7edfd8277687cdc598f56e5cff0e9bfff0910a3749deaa8d4401c3a2b9de", size = 60964, upload-time = "2026-05-08T13:40:04.958Z" },
]
[[package]]
@@ -1565,7 +1565,7 @@ wheels = [
[[package]]
name = "pytest"
version = "9.1.1"
version = "9.1.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
@@ -1574,9 +1574,9 @@ dependencies = [
{ name = "pluggy" },
{ name = "pygments" },
]
sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" }
sdist = { url = "https://files.pythonhosted.org/packages/84/0e/b5858858d74958632c49b72cb25a3976ff9f632397626715be71c89d3971/pytest-9.1.0.tar.gz", hash = "sha256:41dd9148c08072446394cefd3d79701701335a9f4cae69ba92e39f6c7f5c061c", size = 1634181, upload-time = "2026-06-13T18:52:45.983Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" },
{ url = "https://files.pythonhosted.org/packages/8b/5a/ba30a81239b909821b3153e303e7def45178bf353da4f72380e6c5e8793b/pytest-9.1.0-py3-none-any.whl", hash = "sha256:8ebb0e7888bdf2bdfc602ec51f8f62d50200af37356c74e503c79a94f5c81f32", size = 386453, upload-time = "2026-06-13T18:52:44.045Z" },
]
[[package]]