@@ -199,6 +216,14 @@ function ListRow({ recipe, selected, selectMode }: { recipe: Recipe; selected: b
{recipe.title}
+ {recipe.sourceUrl && (
+
+
+ } />
+ {t("importedFrom", { host: hostnameOf(recipe.sourceUrl) })}
+
+
+ )}
{recipe.isBatchCook && (
@@ -276,6 +301,14 @@ function CompactRow({ recipe, selected, selectMode }: { recipe: Recipe; selected
{recipe.updatedAt.toLocaleDateString(locale, { month: "short", day: "numeric" })}
+ {recipe.sourceUrl && (
+
+
+ } />
+ {t("importedFrom", { host: hostnameOf(recipe.sourceUrl) })}
+
+
+ )}
{recipe.isBatchCook && (
diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json
index b201792..e8a6e92 100644
--- a/apps/web/messages/en.json
+++ b/apps/web/messages/en.json
@@ -56,6 +56,7 @@
"recipe": {
"byAuthor": "by {name}",
"source": "Source",
+ "importedFrom": "Imported from {host}",
"share": "Share",
"shareLinkCopied": "Link copied to clipboard",
"shareCopyFailed": "Failed to copy link",
@@ -351,6 +352,10 @@
"sun": "Sunday"
}
},
+ "publicShoppingList": {
+ "sharedList": "Shared shopping list",
+ "wantYourOwn": "Want your own shopping lists?"
+ },
"publicRecipe": {
"publicRecipeBy": "Public recipe by",
"viewInLibrary": "View in your library",
@@ -960,7 +965,13 @@
"loadMembersFailed": "Could not load members",
"memberRemoved": "Member removed",
"removeMemberFailed": "Could not remove member",
- "enterEmail": "Enter an email address"
+ "enterEmail": "Enter an email address",
+ "publicLinkTitle": "Public link",
+ "publicLinkDescription": "Anyone with the link can view this list.",
+ "publicLinkToggleFailed": "Could not update the public link",
+ "copyLink": "Copy link",
+ "linkCopied": "Link copied",
+ "copyLinkFailed": "Could not copy link"
},
"social": {
"followed": "Following",
@@ -1055,6 +1066,11 @@
},
"settingsForm": {
"profile": "Profile",
+ "changePhoto": "Change photo",
+ "removePhoto": "Remove photo",
+ "avatarUploadSuccess": "Profile photo updated",
+ "avatarUploadFailed": "Failed to update profile photo",
+ "avatarRemoved": "Profile photo removed",
"displayName": "Display name",
"email": "Email",
"emailReadOnly": "Email cannot be changed here.",
diff --git a/apps/web/messages/fr.json b/apps/web/messages/fr.json
index d128e2c..34e0b46 100644
--- a/apps/web/messages/fr.json
+++ b/apps/web/messages/fr.json
@@ -56,6 +56,7 @@
"recipe": {
"byAuthor": "par {name}",
"source": "Source",
+ "importedFrom": "Importée depuis {host}",
"share": "Partager",
"shareLinkCopied": "Lien copié dans le presse-papiers",
"shareCopyFailed": "Échec de la copie du lien",
@@ -351,6 +352,10 @@
"sun": "Dimanche"
}
},
+ "publicShoppingList": {
+ "sharedList": "Liste de courses partagée",
+ "wantYourOwn": "Envie de vos propres listes de courses ?"
+ },
"publicRecipe": {
"publicRecipeBy": "Recette publique par",
"viewInLibrary": "Voir dans votre bibliothèque",
@@ -948,7 +953,13 @@
"loadMembersFailed": "Impossible de charger les membres",
"memberRemoved": "Membre retiré",
"removeMemberFailed": "Impossible de retirer le membre",
- "enterEmail": "Saisissez une adresse e-mail"
+ "enterEmail": "Saisissez une adresse e-mail",
+ "publicLinkTitle": "Lien public",
+ "publicLinkDescription": "Toute personne disposant du lien peut voir cette liste.",
+ "publicLinkToggleFailed": "Impossible de mettre à jour le lien public",
+ "copyLink": "Copier le lien",
+ "linkCopied": "Lien copié",
+ "copyLinkFailed": "Impossible de copier le lien"
},
"social": {
"followed": "Abonné",
@@ -1043,6 +1054,11 @@
},
"settingsForm": {
"profile": "Profil",
+ "changePhoto": "Changer la photo",
+ "removePhoto": "Supprimer la photo",
+ "avatarUploadSuccess": "Photo de profil mise à jour",
+ "avatarUploadFailed": "Échec de la mise à jour de la photo de profil",
+ "avatarRemoved": "Photo de profil supprimée",
"displayName": "Nom d'affichage",
"email": "E-mail",
"emailReadOnly": "L'e-mail ne peut pas être modifié ici.",