Redesign recipe creation and edit view with Form-based layout and URL import
Replace the single "+" button with a 2-option menu (Create New Recipe / Import from URL) across RecipeTabView, RecipeListView, and AllRecipesListView. Add ImportURLSheet for server-side recipe import with loading and error states. Completely redesign edit mode to use a native Form layout with inline editing for all sections (metadata, duration, ingredients, instructions, tools, nutrition) instead of the previous sheet-based EditableListView approach. Move delete action from edit toolbar to view mode context menu. Add recipe image display to the edit form. Refactor RecipeListView and AllRecipesListView to use closure-based callbacks instead of Binding<Bool> for the create/import actions. Add preloadedRecipeDetail support to RecipeView.ViewModel for imported recipes. Add DE/ES/FR translations for all new UI strings. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -317,7 +317,6 @@
|
||||
}
|
||||
},
|
||||
"%lld." : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
@@ -518,6 +517,7 @@
|
||||
}
|
||||
},
|
||||
"Add cooking steps for fellow chefs to follow." : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
@@ -561,6 +561,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Add Ingredient" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Zutat hinzufügen"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Añadir ingrediente"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Ajouter un ingrédient"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Add new recipe" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -583,6 +605,50 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Add Step" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Schritt hinzufügen"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Añadir paso"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Ajouter une étape"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Add Tool" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Werkzeug hinzufügen"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Añadir utensilio"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Ajouter un ustensile"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"All Recipes" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -694,6 +760,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Apple Reminders" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Apple Erinnerungen"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Recordatorios de Apple"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Rappels Apple"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Bad URL" : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
@@ -1139,6 +1227,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Create New Recipe" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Neues Rezept erstellen"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Crear nueva receta"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Créer une nouvelle recette"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Created: %@" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -1360,6 +1470,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Details" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Details"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Detalles"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Détails"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Done" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -1460,6 +1592,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Duration" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Dauer"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Duración"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Durée"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"e.g.: example.com" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -1504,6 +1658,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Edit Recipe" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Rezept bearbeiten"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Editar receta"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Modifier la recette"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Enter a recipe name or keyword to get started." : {
|
||||
"comment" : "A description under the magnifying glass icon in the \"Search for recipes\" view, encouraging the user to start searching.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -1738,6 +1914,72 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Grant Reminders Access" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Zugriff auf Erinnerungen erlauben"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Permitir acceso a Recordatorios"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Autoriser l'accès aux Rappels"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Grocery items are stored locally on this device." : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Einkaufsartikel werden lokal auf diesem Gerät gespeichert."
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Los artículos de la lista se almacenan localmente en este dispositivo."
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Les articles sont stockés localement sur cet appareil."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Grocery items will be saved to Apple Reminders. The Grocery List tab will be hidden since you can manage items directly in the Reminders app." : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Einkaufsartikel werden in Apple Erinnerungen gespeichert. Der Einkaufslisten-Tab wird ausgeblendet, da du die Artikel direkt in der Erinnerungen-App verwalten kannst."
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Los artículos de la lista se guardarán en Recordatorios de Apple. La pestaña de lista de compras se ocultará, ya que puedes gestionar los artículos directamente en la app Recordatorios."
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Les articles seront enregistrés dans Rappels Apple. L'onglet Liste de courses sera masqué car vous pouvez gérer les articles directement dans l'app Rappels."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Grocery List" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -1760,6 +2002,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Grocery list storage" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Einkaufsliste Speicherort"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Almacenamiento de la lista de compras"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Stockage de la liste de courses"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Hours" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -1892,6 +2156,50 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Import Failed" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Import fehlgeschlagen"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Error de importación"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Échec de l'importation"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Import from URL" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Von URL importieren"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Importar desde URL"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Importer depuis une URL"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Import Recipe" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -1914,6 +2222,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"In-App" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "In der App"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "En la app"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Dans l'app"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Ingredient" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -2005,6 +2335,7 @@
|
||||
}
|
||||
},
|
||||
"Instruction" : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
@@ -2159,6 +2490,7 @@
|
||||
}
|
||||
},
|
||||
"List your tools here. 🍴" : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
@@ -2589,16 +2921,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"No recipes in this cookbook" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Keine Rezepte in dieser Kategorie"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"No recipes found" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -2621,6 +2943,16 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"No recipes in this cookbook" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Keine Rezepte in dieser Kategorie"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"No results found" : {
|
||||
"comment" : "A message indicating that no recipes were found for the current search query.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -2721,6 +3053,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Nutrition Information" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Nährwertinformationen"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Información nutricional"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Informations nutritionnelles"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Offline recipes" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -2765,6 +3119,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"OK" : {
|
||||
"comment" : "The text for an OK button.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"On server" : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
@@ -2776,6 +3134,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Open Settings" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Einstellungen öffnen"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Abrir Ajustes"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Ouvrir les Réglages"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Other" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -2822,6 +3202,7 @@
|
||||
}
|
||||
},
|
||||
"Paste the url of a recipe you would like to import in the above, and we will try to fill in the fields for you. This feature does not work with every website. If your favourite website is not supported, feel free to reach out for help. You can find the contact details in the app settings." : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
@@ -2843,6 +3224,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Paste the URL of a recipe you would like to import." : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Füge die URL eines Rezepts ein, das du importieren möchtest."
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Pega la URL de una receta que deseas importar."
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Collez l'URL d'une recette que vous souhaitez importer."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"PDF Document" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -3118,6 +3521,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Recipe URL" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Rezept-URL"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "URL de la receta"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "URL de la recette"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Recipes" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -3196,6 +3621,50 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Reminders access was denied. Please enable it in System Settings to use this feature." : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Der Zugriff auf Erinnerungen wurde verweigert. Bitte aktiviere ihn in den Systemeinstellungen, um diese Funktion zu nutzen."
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Se denegó el acceso a Recordatorios. Actívalo en los Ajustes del sistema para usar esta función."
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "L'accès aux Rappels a été refusé. Veuillez l'activer dans les Réglages système pour utiliser cette fonctionnalité."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Reminders list" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Erinnerungsliste"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Lista de recordatorios"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Liste de rappels"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Same as Device" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -3465,6 +3934,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Servings: %lld" : {
|
||||
"comment" : "A stepper that allows the user to select the number of servings for a recipe. The first argument is a label describing the number of servings. The second argument is a binding to the number of servings, which is",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Settings" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -3622,6 +4095,7 @@
|
||||
}
|
||||
},
|
||||
"Start by adding your first ingredient! 🥬" : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
@@ -3643,6 +4117,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Step %lld" : {
|
||||
"comment" : "A text field where the user can enter a recipe instruction.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Store recipe images locally" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -3842,6 +4320,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"The recipe could not be imported. Please check the URL and try again." : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Das Rezept konnte nicht importiert werden. Bitte überprüfe die URL und versuche es erneut."
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "No se pudo importar la receta. Por favor, verifica la URL e inténtalo de nuevo."
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "La recette n'a pas pu être importée. Veuillez vérifier l'URL et réessayer."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"The recipe has no image whose MIME type matches the Accept header" : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
@@ -4371,6 +4871,7 @@
|
||||
}
|
||||
},
|
||||
"URL (e.g. example.com/recipe)" : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
@@ -4523,204 +5024,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"In-App" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "In der App"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "En la app"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Dans l'app"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Apple Reminders" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Apple Erinnerungen"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Recordatorios de Apple"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Rappels Apple"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Grocery list storage" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Einkaufsliste Speicherort"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Almacenamiento de la lista de compras"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Stockage de la liste de courses"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Reminders list" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Erinnerungsliste"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Lista de recordatorios"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Liste de rappels"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Grant Reminders Access" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Zugriff auf Erinnerungen erlauben"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Permitir acceso a Recordatorios"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Autoriser l'accès aux Rappels"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Open Settings" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Einstellungen öffnen"
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Abrir Ajustes"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Ouvrir les Réglages"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Reminders access was denied. Please enable it in System Settings to use this feature." : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Der Zugriff auf Erinnerungen wurde verweigert. Bitte aktiviere ihn in den Systemeinstellungen, um diese Funktion zu nutzen."
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Se denegó el acceso a Recordatorios. Actívalo en los Ajustes del sistema para usar esta función."
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "L'accès aux Rappels a été refusé. Veuillez l'activer dans les Réglages système pour utiliser cette fonctionnalité."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Grocery items will be saved to Apple Reminders. The Grocery List tab will be hidden since you can manage items directly in the Reminders app." : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Einkaufsartikel werden in Apple Erinnerungen gespeichert. Der Einkaufslisten-Tab wird ausgeblendet, da du die Artikel direkt in der Erinnerungen-App verwalten kannst."
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Los artículos de la lista se guardarán en Recordatorios de Apple. La pestaña de lista de compras se ocultará, ya que puedes gestionar los artículos directamente en la app Recordatorios."
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Les articles seront enregistrés dans Rappels Apple. L'onglet Liste de courses sera masqué car vous pouvez gérer les articles directement dans l'app Rappels."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Grocery items are stored locally on this device." : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Einkaufsartikel werden lokal auf diesem Gerät gespeichert."
|
||||
}
|
||||
},
|
||||
"es" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Los artículos de la lista se almacenan localmente en este dispositivo."
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Les articles sont stockés localement sur cet appareil."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"version" : "1.1"
|
||||
|
||||
Reference in New Issue
Block a user