Update features and dependencies
This commit is contained in:
+105
-5
@@ -28,6 +28,28 @@
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"delete": "Delete",
|
||||
"noIngredientsSteps": "No ingredients or steps yet.",
|
||||
"generateContent": "Generate with AI",
|
||||
"editManually": "Edit manually",
|
||||
"deleted": "Recipe deleted",
|
||||
"deleteFailed": "Delete failed",
|
||||
"imported": "Recipe imported! Review before publishing.",
|
||||
"adapted": "Adapted recipe saved as draft",
|
||||
"adaptFailed": "Failed to adapt recipe",
|
||||
"adaptConstraintRequired": "Select at least one ingredient to exclude or add a constraint",
|
||||
"variationsDirectionsPlaceholder": "e.g. make it vegan, use only pantry staples, reduce sugar…",
|
||||
"historyRestoreFailed": "Failed to restore version",
|
||||
"pairingMealFailed": "Failed to suggest pairings",
|
||||
"pairingDrinkFailed": "Failed to suggest drinks",
|
||||
"pairingGenerateFailed": "Failed to generate \"{name}\"",
|
||||
"pairingSaveFailed": "Failed to save \"{name}\"",
|
||||
"pairingSuccess": "Recipe generated — review before publishing",
|
||||
"shoppingListCreateFailed": "Failed to create list",
|
||||
"shoppingListAddFailed": "Failed to add ingredients",
|
||||
"bulkDeleted": "{count, plural, one {1 recipe deleted} other {{count} recipes deleted}}",
|
||||
"bulkVisibility": "{count, plural, one {1 recipe set to {visibility}} other {{count} recipes set to {visibility}}}",
|
||||
"bulkDeleteFailed": "Delete failed",
|
||||
"bulkUpdateFailed": "Update failed",
|
||||
"visibility": {
|
||||
"private": "Private",
|
||||
"unlisted": "Unlisted",
|
||||
@@ -52,14 +74,32 @@
|
||||
"generate": {
|
||||
"title": "Generate recipe with AI",
|
||||
"description": "Describe what you want to cook and AI will create a complete recipe.",
|
||||
"descriptionFull": "Describe a dish in words or snap a photo — AI builds the full recipe.",
|
||||
"tabDescribe": "Describe",
|
||||
"tabPhoto": "From photo",
|
||||
"surpriseMe": "Surprise me",
|
||||
"prompt": "What do you want to cook?",
|
||||
"placeholder": "e.g. A creamy mushroom risotto with parmesan, serves 4, easy difficulty",
|
||||
"language": "Language",
|
||||
"language": "Recipe language",
|
||||
"difficulty": "Difficulty",
|
||||
"anyDifficulty": "Any",
|
||||
"button": "Generate",
|
||||
"generating": "Generating…",
|
||||
"success": "Recipe generated! Review and edit before publishing.",
|
||||
"error": "Failed to generate recipe",
|
||||
"saveError": "Failed to save generated recipe"
|
||||
"saveError": "Failed to save generated recipe",
|
||||
"uploadClick": "Click to upload",
|
||||
"uploadDrag": "or drag a food photo",
|
||||
"uploadFormats": "JPEG, PNG or WebP · AI will reverse-engineer the recipe",
|
||||
"analyzing": "Analyzing…",
|
||||
"analyzePhoto": "Analyzing dish photo…",
|
||||
"recognizeDish": "Recognize dish",
|
||||
"photoSuccess": "Recipe recognized! Review and edit before publishing.",
|
||||
"photoError": "Failed to analyze photo",
|
||||
"contentGenerated": "Ingredients and steps generated!",
|
||||
"contentGenerateFailed": "Generation failed",
|
||||
"contentSaveFailed": "Failed to save generated content",
|
||||
"generatingContent": "Generating recipe content…"
|
||||
},
|
||||
"variations": {
|
||||
"title": "AI Recipe Variations",
|
||||
@@ -102,19 +142,31 @@
|
||||
"save": "Save",
|
||||
"saved": "Saved",
|
||||
"saveFailed": "Failed to save",
|
||||
"deleteFailed": "Delete failed",
|
||||
"updateFailed": "Update failed",
|
||||
"copyFailed": "Failed to copy to clipboard",
|
||||
"deleted": "Deleted",
|
||||
"cancel": "Cancel",
|
||||
"delete": "Delete",
|
||||
"confirm": "Confirm",
|
||||
"back": "Back"
|
||||
"back": "Back",
|
||||
"difficulty": "Difficulty",
|
||||
"anyDifficulty": "Any",
|
||||
"editManually": "Edit manually",
|
||||
"surpriseMe": "Surprise me",
|
||||
"generatingContent": "Generating recipe content…"
|
||||
},
|
||||
"auth": {
|
||||
"signIn": "Sign in",
|
||||
"signInTitle": "Sign in to your recipe library",
|
||||
"signInLoading": "Signing in…",
|
||||
"signInFailed": "Sign in failed",
|
||||
"signUp": "Sign up",
|
||||
"signUpTitle": "Create account",
|
||||
"signUpSubtitle": "Start building your recipe library",
|
||||
"signUpLoading": "Creating account…",
|
||||
"signUpFailed": "Sign up failed",
|
||||
"signUpSuccess": "Account created — check your email to verify",
|
||||
"continueWithGoogle": "Continue with Google",
|
||||
"email": "Email",
|
||||
"emailPlaceholder": "you@example.com",
|
||||
@@ -126,6 +178,7 @@
|
||||
"forgotPasswordSent": "Check your inbox",
|
||||
"forgotPasswordDescription": "Enter your email and we'll send you a reset link.",
|
||||
"forgotPasswordSentDescription": "If an account exists for that email, you'll receive a reset link shortly.",
|
||||
"forgotPasswordFailed": "Failed to send reset email",
|
||||
"sendResetLink": "Send reset link",
|
||||
"sendingLink": "Sending…",
|
||||
"resetPasswordTitle": "Reset password",
|
||||
@@ -135,6 +188,9 @@
|
||||
"updatePassword": "Update password",
|
||||
"updatingPassword": "Updating…",
|
||||
"invalidToken": "Invalid or missing reset token.",
|
||||
"resetPasswordMismatch": "Passwords don't match",
|
||||
"resetPasswordFailed": "Reset failed — link may have expired",
|
||||
"resetPasswordSuccess": "Password updated",
|
||||
"noAccount": "No account? Sign up",
|
||||
"alreadyHaveAccount": "Already have an account? Sign in",
|
||||
"backToSignIn": "Back to sign in",
|
||||
@@ -142,6 +198,8 @@
|
||||
"checkInboxVerification": "Check your inbox for a verification email.",
|
||||
"resendVerification": "Resend verification email",
|
||||
"resendingSending": "Sending…",
|
||||
"resendFailed": "Failed to resend",
|
||||
"resendSuccess": "Verification email sent — check your inbox",
|
||||
"or": "or"
|
||||
},
|
||||
"recipes": {
|
||||
@@ -172,6 +230,9 @@
|
||||
"cookMins": "Cook (min)",
|
||||
"difficulty": "Difficulty",
|
||||
"visibility": "Visibility",
|
||||
"tags": "Tags",
|
||||
"tagsHelp": "Press Enter to add · Backspace to remove last · max 20 tags",
|
||||
"tagsPlaceholder": "Add tags… (press Enter)",
|
||||
"dietaryTags": "Dietary tags",
|
||||
"photos": "Photos",
|
||||
"ingredients": "Ingredients",
|
||||
@@ -209,7 +270,11 @@
|
||||
"addTo": "Add to {day} – {meal}",
|
||||
"searchRecipes": "Search recipes…",
|
||||
"servings": "Servings",
|
||||
"difficulty": "Difficulty",
|
||||
"noRecipes": "No recipes found",
|
||||
"addFailed": "Failed to add",
|
||||
"addedToPantry": "{count, plural, one {1 item added to pantry} other {{count} items added to pantry}}",
|
||||
"listCreated": "List created",
|
||||
"days": {
|
||||
"mon": "Mon",
|
||||
"tue": "Tue",
|
||||
@@ -268,6 +333,17 @@
|
||||
"recipeCount": "{count} recipe",
|
||||
"recipeCountPlural": "{count} recipes"
|
||||
},
|
||||
"social": {
|
||||
"followed": "Following",
|
||||
"unfollowed": "Unfollowed",
|
||||
"commentFailed": "Failed to post comment",
|
||||
"deleted": "Deleted",
|
||||
"ratingSaved": "Rating saved",
|
||||
"collectionCreated": "Collection created",
|
||||
"collectionForked": "Collection forked to your library",
|
||||
"inviteSent": "Invitation sent",
|
||||
"memberRemoved": "Member removed"
|
||||
},
|
||||
"cookingMode": {
|
||||
"cooking": "Cooking",
|
||||
"stepOf": "Step {current} of {total}",
|
||||
@@ -336,6 +412,30 @@
|
||||
"changingPassword": "Changing…",
|
||||
"changePasswordButton": "Change password",
|
||||
"passwordChanged": "Password changed successfully.",
|
||||
"passwordChangeFailed": "Failed to change password."
|
||||
"passwordChangeFailed": "Failed to change password.",
|
||||
"webhookCreateFailed": "Failed to create webhook",
|
||||
"webhookDeleteFailed": "Failed to delete webhook",
|
||||
"webhookUpdateFailed": "Failed to update webhook",
|
||||
"redeliverySuccess": "Redelivery queued",
|
||||
"redeliveryFailed": "Failed to redeliver",
|
||||
"apiKeyCreateFailed": "Failed to create API key",
|
||||
"apiKeyRevokeFailed": "Failed to revoke API key",
|
||||
"copyFailed": "Failed to copy to clipboard",
|
||||
"byokSaveFailed": "Failed to save key",
|
||||
"byokRemoveFailed": "Failed to remove key",
|
||||
"modelSaved": "Model preferences saved",
|
||||
"modelSaveFailed": "Failed to save",
|
||||
"userUpdated": "User updated successfully",
|
||||
"userUpdateFailed": "Failed to save",
|
||||
"adminSettingsSaved": "Settings saved",
|
||||
"adminSettingsFailed": "Failed to save settings",
|
||||
"nutritionGoalsSaved": "Nutrition goals saved",
|
||||
"bio": "Bio",
|
||||
"publicBio": "Public bio",
|
||||
"publicBioDescription": "Shown on your public profile.",
|
||||
"publicBioPlaceholder": "Tell other cooks about yourself…",
|
||||
"privateBio": "AI context (private)",
|
||||
"privateBioDescription": "Never shown publicly. Injected into AI prompts to personalise suggestions — add your dietary preferences, kitchen equipment, cooking skill level, allergies, etc.",
|
||||
"privateBioPlaceholder": "e.g. I'm vegetarian, have a stand mixer and an air fryer, intermediate cook, allergic to tree nuts, prefer Mediterranean flavours…"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -336,6 +336,13 @@
|
||||
"changingPassword": "Modification…",
|
||||
"changePasswordButton": "Changer le mot de passe",
|
||||
"passwordChanged": "Mot de passe modifié avec succès.",
|
||||
"passwordChangeFailed": "Échec de la modification du mot de passe."
|
||||
"passwordChangeFailed": "Échec de la modification du mot de passe.",
|
||||
"bio": "Bio",
|
||||
"publicBio": "Bio publique",
|
||||
"publicBioDescription": "Affichée sur votre profil public.",
|
||||
"publicBioPlaceholder": "Parlez de vous aux autres cuisiniers…",
|
||||
"privateBio": "Contexte IA (privé)",
|
||||
"privateBioDescription": "Jamais visible publiquement. Injecté dans les prompts IA pour personnaliser les suggestions — ajoutez vos préférences alimentaires, équipements, niveau de cuisine, allergies, etc.",
|
||||
"privateBioPlaceholder": "ex. Je suis végétarien, j'ai un robot pâtissier et une friteuse à air, niveau intermédiaire, allergique aux fruits à coque, je préfère les saveurs méditerranéennes…"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user