diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 000000000..32bb0f76f
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+deploy/fdc.db.zip filter=lfs diff=lfs merge=lfs -text
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
index d7af92055..07bef0f04 100644
--- a/.idea/dataSources.xml
+++ b/.idea/dataSources.xml
@@ -1,7 +1,7 @@
-
+
sqlite.xerial
true
org.sqlite.JDBC
diff --git a/deploy/fdc.db.zip b/deploy/fdc.db.zip
index 734396bdc..94e8f1aa2 100644
Binary files a/deploy/fdc.db.zip and b/deploy/fdc.db.zip differ
diff --git a/docs/papers/Information Extraction from Unstructured Recipe Data.pdf b/docs/papers/Information Extraction from Unstructured Recipe Data.pdf
deleted file mode 100644
index 7bc9dd202..000000000
Binary files a/docs/papers/Information Extraction from Unstructured Recipe Data.pdf and /dev/null differ
diff --git a/docs/website/content/_index.md b/docs/website/content/en/_index.md
similarity index 77%
rename from docs/website/content/_index.md
rename to docs/website/content/en/_index.md
index 82c88fbe6..503e72c0e 100644
--- a/docs/website/content/_index.md
+++ b/docs/website/content/en/_index.md
@@ -3,40 +3,38 @@ title: Recipya
layout: hextra-home
---
-
+
{{< hextra/hero-headline >}}
Recipya
{{< /hextra/hero-headline >}}
-
+
{{< hextra/hero-subtitle >}}
A clean, simple and powerful recipe manager your whole family can enjoy.
{{< /hextra/hero-subtitle >}}
-
-{{< hextra/hero-button text="Get Started" link="/guide/docs" style="margin-right: 0.5rem" >}}
-{{< hextra/hero-button text="Open App" link="/guide/login" style="background-color: rgb(139 92 246)">}}
+
+{{< hextra/hero-button text="Get Started" link="/guide/docs/" style="margin-right: 0.5rem" >}}
+{{< hextra/hero-button text="Open App" link="/guide/auth/login" style="background-color: rgb(139 92 246)">}}
-
-
{{< hextra/feature-grid >}}
{{< hextra/feature-card
title="Curate Recipes"
subtitle="Effortlessly import your favorite recipes from around the web, digitize paper recipes, and add recipes manually."
- class="aspect-auto md:aspect-[1.1/1] max-md:min-h-[340px]"
+ class="hxaspect-auto md:hx-aspect-[1.1/1] max-md:hx-min-h-[340px]"
image="/images/curate.webp"
- imageClass="small w-[180%] left-[36px] sm:w-[110%] dark:opacity-80"
+ imageClass="small hx-w-[180%] hx-left-[36px] sm:hx-w-[110%] dark:hx-opacity-80"
style="background: radial-gradient(ellipse at 50% 80%,rgba(194,97,254,0.15),hsla(0,0%,100%,0));"
>}}
{{< hextra/feature-card
title="One Measurement System"
subtitle="All your recipes can be converted to your preferred measurement system. Say goodbye to imperial or metric."
- class="aspect-auto md:aspect-[1.1/1] max-lg:min-h-[340px]"
+ class="hx-aspect-auto md:hx-aspect-[1.1/1] max-lg:hx-min-h-[340px]"
image="/images/view-recipe.webp"
- imageClass="small w-[110%] sm:w-[110%] dark:opacity-80"
+ imageClass="small hx-w-[110%] sm:hx-w-[110%] dark:hx-opacity-80"
icon="globe"
style="background: radial-gradient(ellipse at 50% 80%,rgba(142,53,74,0.15),hsla(0,0%,100%,0));"
>}}
@@ -44,9 +42,9 @@ layout: hextra-home
title="Self-Hostable"
subtitle="Easily self-host the software on your server with Docker."
icon="desktop-computer"
- class="aspect-auto md:aspect-[1.1/1] max-md:min-h-[340px]"
+ class="hx-aspect-auto md:hx-aspect-[1.1/1] max-md:hx-min-h-[340px]"
image="/images/devices.svg"
- imageClass="small w-[110%] sm:w-[110%] dark:opacity-80"
+ imageClass="small hx-w-[110%] sm:hx-w-[110%] dark:hx-opacity-80"
style="background: radial-gradient(ellipse at 50% 80%,rgba(221,210,59,0.15),hsla(0,0%,100%,0));"
>}}
{{< hextra/feature-card
diff --git a/docs/website/content/about/_index.md b/docs/website/content/en/about/_index.md
similarity index 95%
rename from docs/website/content/about/_index.md
rename to docs/website/content/en/about/_index.md
index 1c550eb4b..3e5180531 100644
--- a/docs/website/content/about/_index.md
+++ b/docs/website/content/en/about/_index.md
@@ -13,7 +13,7 @@ It is focused on simplicity for the whole family to enjoy.
- Import recipes from around the web
- Digitize paper recipes
- Organize your recipes into cookbooks
-- Works seamlessly with [Nextcloud Cookbook](https://apps.nextcloud.com/apps/cookbook)
+- Easily migrate your recipes from [Mealie](https://mealie.io), [Tandoor](https://tandoor.dev) and [Nextcloud Cookbook](https://apps.nextcloud.com/apps/cookbook)
- Automatic conversion to your preferred measurement system (imperial/metric)
- Calculate nutritional information automatically
- Print any recipe in your collection
diff --git a/docs/website/content/about/changelog/_index.md b/docs/website/content/en/about/changelog/_index.md
similarity index 71%
rename from docs/website/content/about/changelog/_index.md
rename to docs/website/content/en/about/changelog/_index.md
index 688bf5d9f..7caa501d0 100644
--- a/docs/website/content/about/changelog/_index.md
+++ b/docs/website/content/en/about/changelog/_index.md
@@ -8,15 +8,15 @@ weight: 1
Overview of Recipya's releases.
{{< cards >}}
- {{< card link="/guide/about/changelog/v1.2.0/"
+ {{< card link="/guide/en/about/changelog/v1.2.0/"
title="v1.2.0"
subtitle="View changelog for v1.2.0."
icon="newspaper">}}
- {{< card link="/guide/about/changelog/v1.1.0/"
+ {{< card link="/guide/en/about/changelog/v1.1.0/"
title="v1.1.0"
subtitle="View changelog for v1.1.0."
icon="newspaper">}}
- {{< card link="/guide/about/changelog/v1.0.1/"
+ {{< card link="/guide/en/about/changelog/v1.0.1/"
title="v1.0.1"
subtitle="View changelog for v1.0.1."
icon="newspaper">}}
diff --git a/docs/website/content/about/changelog/images/v1.0.1/fixed-salmon.webp b/docs/website/content/en/about/changelog/images/v1.0.1/fixed-salmon.webp
similarity index 100%
rename from docs/website/content/about/changelog/images/v1.0.1/fixed-salmon.webp
rename to docs/website/content/en/about/changelog/images/v1.0.1/fixed-salmon.webp
diff --git a/docs/website/content/about/changelog/v1.0.1.md b/docs/website/content/en/about/changelog/v1.0.1.md
similarity index 99%
rename from docs/website/content/about/changelog/v1.0.1.md
rename to docs/website/content/en/about/changelog/v1.0.1.md
index c2a699c7d..7fddeb12a 100644
--- a/docs/website/content/about/changelog/v1.0.1.md
+++ b/docs/website/content/en/about/changelog/v1.0.1.md
@@ -1,6 +1,6 @@
---
title: v1.0.1 (11 January 2024)
-weight: 3
+weight: 4
---
## Authentication
diff --git a/docs/website/content/about/changelog/v1.1.0.md b/docs/website/content/en/about/changelog/v1.1.0.md
similarity index 96%
rename from docs/website/content/about/changelog/v1.1.0.md
rename to docs/website/content/en/about/changelog/v1.1.0.md
index 72c78fcf2..060f5769b 100644
--- a/docs/website/content/about/changelog/v1.1.0.md
+++ b/docs/website/content/en/about/changelog/v1.1.0.md
@@ -1,6 +1,6 @@
---
title: v1.1.0 (28 March 2024)
-weight: 2
+weight: 3
---
## Authentication
@@ -53,7 +53,7 @@ field of the recipes. Now, you can choose either **By name** or **Full search**.
Application data is now backed up automatically every third day.
It is possible to restore a previous backup.
-Please consult the [features tour](/guide/docs/features/backups) for more information.
+Please consult the [features tour](/guide/en/docs/features/backups) for more information.
### Directory
@@ -152,7 +152,7 @@ The default is by order of insertion into the database.
## Reports
Reports are generated after importing recipes. They are accessible from the /reports endpoint.
-Please consult the [features tour](/guide/docs/features/reports) for more information.
+Please consult the [features tour](/guide/en/docs/features/reports) for more information.
## Scraper
diff --git a/docs/website/content/about/changelog/v1.2.0.md b/docs/website/content/en/about/changelog/v1.2.0.md
similarity index 99%
rename from docs/website/content/about/changelog/v1.2.0.md
rename to docs/website/content/en/about/changelog/v1.2.0.md
index 83e67d29d..147cd5f59 100644
--- a/docs/website/content/about/changelog/v1.2.0.md
+++ b/docs/website/content/en/about/changelog/v1.2.0.md
@@ -1,11 +1,11 @@
---
title: v1.2.0 (16 July 2024)
-weight: 1
+weight: 2
---
## Added
-- đ **Advanced search**: The advanced search lets you tweak your search query for the desired results. Please consult the [docs](/docs/features/recipes/search/) to learn how to use it.
+- đ **Advanced search**: The advanced search lets you tweak your search query for the desired results. Please consult the [docs](guide/en/docs/features/recipes/search/) to learn how to use it.
- đ© **Configuration**: Added the ability to change most of the fields in the configuration file from the UI under the settings page.
- đ±ïž **Filter by category**: It is now possible to click the category of a recipe from the home page to display all recipes with the same category.
- đȘ” **Logs**: A logging mechanism has been introduced using [log/slog](https://pkg.go.dev/log/slog). The logs are stored
diff --git a/docs/website/content/about/changelog/v1.3.0.md b/docs/website/content/en/about/changelog/v1.3.0.md
similarity index 82%
rename from docs/website/content/about/changelog/v1.3.0.md
rename to docs/website/content/en/about/changelog/v1.3.0.md
index 9f06691f6..fb3a409af 100644
--- a/docs/website/content/about/changelog/v1.3.0.md
+++ b/docs/website/content/en/about/changelog/v1.3.0.md
@@ -1,5 +1,5 @@
---
-title: v1.2.0 (16 July 2024)
+title: v1.3.0 (TBD)
weight: 1
---
@@ -7,6 +7,7 @@ weight: 1
- [EMOJI] **Bypass Guide option**: You may now bypass the guide and go straight to the login page when anonymous by setting the `server.bypassGuide` configuration variable or the `RECIPYA_SERVER_BYPASS_GUIDE` environment variable to `true`. You may also do so from the settings.
- [EMOJI] **Share**: It's now possible to share to multiple installed apps, e.g. WhatsApp, Gmail and Telegram.
+- [EMOJI] **Docs translations**: The documentation has been translated to French.
## Fixed
diff --git a/docs/website/content/about/coc.md b/docs/website/content/en/about/coc.md
similarity index 100%
rename from docs/website/content/about/coc.md
rename to docs/website/content/en/about/coc.md
diff --git a/docs/website/content/about/community-guide.md b/docs/website/content/en/about/community-guide.md
similarity index 100%
rename from docs/website/content/about/community-guide.md
rename to docs/website/content/en/about/community-guide.md
diff --git a/docs/website/content/about/credits.md b/docs/website/content/en/about/credits.md
similarity index 100%
rename from docs/website/content/about/credits.md
rename to docs/website/content/en/about/credits.md
diff --git a/docs/website/content/about/roadmap.md b/docs/website/content/en/about/roadmap.md
similarity index 100%
rename from docs/website/content/about/roadmap.md
rename to docs/website/content/en/about/roadmap.md
diff --git a/docs/website/content/blog/2023-08-26-welcome.md b/docs/website/content/en/blog/2023-08-26-welcome.md
similarity index 100%
rename from docs/website/content/blog/2023-08-26-welcome.md
rename to docs/website/content/en/blog/2023-08-26-welcome.md
diff --git a/docs/website/content/blog/2024-01-02-launch.md b/docs/website/content/en/blog/2024-01-02-launch.md
similarity index 100%
rename from docs/website/content/blog/2024-01-02-launch.md
rename to docs/website/content/en/blog/2024-01-02-launch.md
diff --git a/docs/website/content/blog/2024-03-28-v1.1.md b/docs/website/content/en/blog/2024-03-28-v1.1.md
similarity index 100%
rename from docs/website/content/blog/2024-03-28-v1.1.md
rename to docs/website/content/en/blog/2024-03-28-v1.1.md
diff --git a/docs/website/content/blog/2024-07-16-v1.2.0.md b/docs/website/content/en/blog/2024-07-16-v1.2.0.md
similarity index 100%
rename from docs/website/content/blog/2024-07-16-v1.2.0.md
rename to docs/website/content/en/blog/2024-07-16-v1.2.0.md
diff --git a/docs/website/content/blog/_index.md b/docs/website/content/en/blog/_index.md
similarity index 100%
rename from docs/website/content/blog/_index.md
rename to docs/website/content/en/blog/_index.md
diff --git a/docs/website/content/blog/authors.yml b/docs/website/content/en/blog/authors.yml
similarity index 100%
rename from docs/website/content/blog/authors.yml
rename to docs/website/content/en/blog/authors.yml
diff --git a/docs/website/content/docs/_index.md b/docs/website/content/en/docs/_index.md
similarity index 100%
rename from docs/website/content/docs/_index.md
rename to docs/website/content/en/docs/_index.md
diff --git a/docs/website/content/docs/deployment/_index.md b/docs/website/content/en/docs/deployment/_index.md
similarity index 100%
rename from docs/website/content/docs/deployment/_index.md
rename to docs/website/content/en/docs/deployment/_index.md
diff --git a/docs/website/content/docs/deployment/internet.md b/docs/website/content/en/docs/deployment/internet.md
similarity index 100%
rename from docs/website/content/docs/deployment/internet.md
rename to docs/website/content/en/docs/deployment/internet.md
diff --git a/docs/website/content/docs/deployment/local-network.md b/docs/website/content/en/docs/deployment/local-network.md
similarity index 100%
rename from docs/website/content/docs/deployment/local-network.md
rename to docs/website/content/en/docs/deployment/local-network.md
diff --git a/docs/website/content/docs/development/_index.md b/docs/website/content/en/docs/development/_index.md
similarity index 100%
rename from docs/website/content/docs/development/_index.md
rename to docs/website/content/en/docs/development/_index.md
diff --git a/docs/website/content/docs/development/build.md b/docs/website/content/en/docs/development/build.md
similarity index 100%
rename from docs/website/content/docs/development/build.md
rename to docs/website/content/en/docs/development/build.md
diff --git a/docs/website/content/docs/development/devcontainer.md b/docs/website/content/en/docs/development/devcontainer.md
similarity index 100%
rename from docs/website/content/docs/development/devcontainer.md
rename to docs/website/content/en/docs/development/devcontainer.md
diff --git a/docs/website/content/docs/development/intro.md b/docs/website/content/en/docs/development/intro.md
similarity index 100%
rename from docs/website/content/docs/development/intro.md
rename to docs/website/content/en/docs/development/intro.md
diff --git a/docs/website/content/docs/development/test.md b/docs/website/content/en/docs/development/test.md
similarity index 100%
rename from docs/website/content/docs/development/test.md
rename to docs/website/content/en/docs/development/test.md
diff --git a/docs/website/content/docs/development/workflow/_index.md b/docs/website/content/en/docs/development/workflow/_index.md
similarity index 100%
rename from docs/website/content/docs/development/workflow/_index.md
rename to docs/website/content/en/docs/development/workflow/_index.md
diff --git a/docs/website/content/docs/development/workflow/add-endpoint.md b/docs/website/content/en/docs/development/workflow/add-endpoint.md
similarity index 100%
rename from docs/website/content/docs/development/workflow/add-endpoint.md
rename to docs/website/content/en/docs/development/workflow/add-endpoint.md
diff --git a/docs/website/content/docs/development/workflow/import-website.md b/docs/website/content/en/docs/development/workflow/import-website.md
similarity index 100%
rename from docs/website/content/docs/development/workflow/import-website.md
rename to docs/website/content/en/docs/development/workflow/import-website.md
diff --git a/docs/website/content/docs/features/_index.md b/docs/website/content/en/docs/features/_index.md
similarity index 100%
rename from docs/website/content/docs/features/_index.md
rename to docs/website/content/en/docs/features/_index.md
diff --git a/docs/website/content/docs/features/admin.md b/docs/website/content/en/docs/features/admin.md
similarity index 100%
rename from docs/website/content/docs/features/admin.md
rename to docs/website/content/en/docs/features/admin.md
diff --git a/docs/website/content/docs/features/backups.md b/docs/website/content/en/docs/features/backups.md
similarity index 98%
rename from docs/website/content/docs/features/backups.md
rename to docs/website/content/en/docs/features/backups.md
index 2a3d2f9c5..4a5506a9b 100644
--- a/docs/website/content/docs/features/backups.md
+++ b/docs/website/content/en/docs/features/backups.md
@@ -77,7 +77,7 @@ Restoring a global backup is done only by the one who has access to the server.
2. Navigate to `path/to/recipya/data/Backup/global/`
3. Unzip the backup you wish to restore
4. Replace the content under `path/to/recipya/data/*` with the one from the unzipped backup
-5. If applicable, delete `path/to/recipya/data/Database/recipya.db-shm` and `path/to/recipya/data/Database/recipya.db-wal
+5. If applicable, delete `path/to/recipya/data/Database/recipya.db-shm` and `path/to/recipya/data/Database/recipya.db-wal`
6. Start the application
### User
diff --git a/docs/website/content/docs/features/cookbooks/_index.md b/docs/website/content/en/docs/features/cookbooks/_index.md
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/_index.md
rename to docs/website/content/en/docs/features/cookbooks/_index.md
diff --git a/docs/website/content/docs/features/cookbooks/add.md b/docs/website/content/en/docs/features/cookbooks/add.md
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/add.md
rename to docs/website/content/en/docs/features/cookbooks/add.md
diff --git a/docs/website/content/docs/features/cookbooks/delete.md b/docs/website/content/en/docs/features/cookbooks/delete.md
similarity index 93%
rename from docs/website/content/docs/features/cookbooks/delete.md
rename to docs/website/content/en/docs/features/cookbooks/delete.md
index adac24ab6..c9f51901d 100644
--- a/docs/website/content/docs/features/cookbooks/delete.md
+++ b/docs/website/content/en/docs/features/cookbooks/delete.md
@@ -1,6 +1,7 @@
---
title: Delete
weight: 4
+next: /docs/features/measurement-systems
---
To delete a cookbook from your collection, first click the three vertical dots at the top right of
diff --git a/docs/website/content/docs/features/cookbooks/download.md b/docs/website/content/en/docs/features/cookbooks/download.md
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/download.md
rename to docs/website/content/en/docs/features/cookbooks/download.md
diff --git a/docs/website/content/docs/features/cookbooks/edit.md b/docs/website/content/en/docs/features/cookbooks/edit.md
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/edit.md
rename to docs/website/content/en/docs/features/cookbooks/edit.md
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbook-add.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbook-add.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbook-add.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbook-add.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbook-delete-aftermath.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbook-delete-aftermath.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbook-delete-aftermath.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbook-delete-aftermath.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbook-delete.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbook-delete.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbook-delete.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbook-delete.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbook-download.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbook-download.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbook-download.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbook-download.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbook-no-recipes.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbook-no-recipes.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbook-no-recipes.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbook-no-recipes.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbook-recipe-added.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbook-recipe-added.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbook-recipe-added.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbook-recipe-added.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbook-recipes-after-reorder.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbook-recipes-after-reorder.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbook-recipes-after-reorder.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbook-recipes-after-reorder.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbook-recipes-before-reorder.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbook-recipes-before-reorder.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbook-recipes-before-reorder.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbook-recipes-before-reorder.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbook-search-results-add.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbook-search-results-add.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbook-search-results-add.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbook-search-results-add.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbook-share-anonymous.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbook-share-anonymous.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbook-share-anonymous.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbook-share-anonymous.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbook-share-link.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbook-share-link.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbook-share-link.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbook-share-link.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbook-share.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbook-share.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbook-share.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbook-share.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbooks-grid-mode.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbooks-grid-mode.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbooks-grid-mode.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbooks-grid-mode.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbooks-grid.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbooks-grid.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbooks-grid.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbooks-grid.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbooks-list.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbooks-list.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbooks-list.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbooks-list.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbooks-update-image.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbooks-update-image.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbooks-update-image.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbooks-update-image.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbooks-updated-image.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbooks-updated-image.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbooks-updated-image.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbooks-updated-image.webp
diff --git a/docs/website/content/docs/features/cookbooks/images/cookbooks-view.webp b/docs/website/content/en/docs/features/cookbooks/images/cookbooks-view.webp
similarity index 100%
rename from docs/website/content/docs/features/cookbooks/images/cookbooks-view.webp
rename to docs/website/content/en/docs/features/cookbooks/images/cookbooks-view.webp
diff --git a/docs/website/content/docs/features/cookbooks/share.md b/docs/website/content/en/docs/features/cookbooks/share.md
similarity index 93%
rename from docs/website/content/docs/features/cookbooks/share.md
rename to docs/website/content/en/docs/features/cookbooks/share.md
index d8363c333..455172e93 100644
--- a/docs/website/content/docs/features/cookbooks/share.md
+++ b/docs/website/content/en/docs/features/cookbooks/share.md
@@ -1,7 +1,6 @@
---
title: Share
weight: 5
-next: /docs/features/measurement-systems
---
You can share a cookbook to your family and friends. To do so, you must first generate the cookbook's share
diff --git a/docs/website/content/docs/features/export-data.md b/docs/website/content/en/docs/features/export-data.md
similarity index 100%
rename from docs/website/content/docs/features/export-data.md
rename to docs/website/content/en/docs/features/export-data.md
diff --git a/docs/website/content/docs/features/images/admin-access.webp b/docs/website/content/en/docs/features/images/admin-access.webp
similarity index 100%
rename from docs/website/content/docs/features/images/admin-access.webp
rename to docs/website/content/en/docs/features/images/admin-access.webp
diff --git a/docs/website/content/docs/features/images/admin-overview.webp b/docs/website/content/en/docs/features/images/admin-overview.webp
similarity index 100%
rename from docs/website/content/docs/features/images/admin-overview.webp
rename to docs/website/content/en/docs/features/images/admin-overview.webp
diff --git a/docs/website/content/docs/features/images/reports-access-after.webp b/docs/website/content/en/docs/features/images/reports-access-after.webp
similarity index 100%
rename from docs/website/content/docs/features/images/reports-access-after.webp
rename to docs/website/content/en/docs/features/images/reports-access-after.webp
diff --git a/docs/website/content/docs/features/images/reports-access.webp b/docs/website/content/en/docs/features/images/reports-access.webp
similarity index 100%
rename from docs/website/content/docs/features/images/reports-access.webp
rename to docs/website/content/en/docs/features/images/reports-access.webp
diff --git a/docs/website/content/docs/features/images/reports-errors.webp b/docs/website/content/en/docs/features/images/reports-errors.webp
similarity index 100%
rename from docs/website/content/docs/features/images/reports-errors.webp
rename to docs/website/content/en/docs/features/images/reports-errors.webp
diff --git a/docs/website/content/docs/features/images/reports-fresh.webp b/docs/website/content/en/docs/features/images/reports-fresh.webp
similarity index 100%
rename from docs/website/content/docs/features/images/reports-fresh.webp
rename to docs/website/content/en/docs/features/images/reports-fresh.webp
diff --git a/docs/website/content/docs/features/images/reports-latest.webp b/docs/website/content/en/docs/features/images/reports-latest.webp
similarity index 100%
rename from docs/website/content/docs/features/images/reports-latest.webp
rename to docs/website/content/en/docs/features/images/reports-latest.webp
diff --git a/docs/website/content/docs/features/images/settings-access.webp b/docs/website/content/en/docs/features/images/settings-access.webp
similarity index 100%
rename from docs/website/content/docs/features/images/settings-access.webp
rename to docs/website/content/en/docs/features/images/settings-access.webp
diff --git a/docs/website/content/docs/features/images/settings-convert-automatically.webp b/docs/website/content/en/docs/features/images/settings-convert-automatically.webp
similarity index 100%
rename from docs/website/content/docs/features/images/settings-convert-automatically.webp
rename to docs/website/content/en/docs/features/images/settings-convert-automatically.webp
diff --git a/docs/website/content/docs/features/images/settings-export.webp b/docs/website/content/en/docs/features/images/settings-export.webp
similarity index 100%
rename from docs/website/content/docs/features/images/settings-export.webp
rename to docs/website/content/en/docs/features/images/settings-export.webp
diff --git a/docs/website/content/docs/features/images/settings-integrations-nextcloud.webp b/docs/website/content/en/docs/features/images/settings-integrations-nextcloud.webp
similarity index 100%
rename from docs/website/content/docs/features/images/settings-integrations-nextcloud.webp
rename to docs/website/content/en/docs/features/images/settings-integrations-nextcloud.webp
diff --git a/docs/website/content/docs/features/images/settings-integrations.webp b/docs/website/content/en/docs/features/images/settings-integrations.webp
similarity index 100%
rename from docs/website/content/docs/features/images/settings-integrations.webp
rename to docs/website/content/en/docs/features/images/settings-integrations.webp
diff --git a/docs/website/content/docs/features/images/settings-measurement-system.webp b/docs/website/content/en/docs/features/images/settings-measurement-system.webp
similarity index 100%
rename from docs/website/content/docs/features/images/settings-measurement-system.webp
rename to docs/website/content/en/docs/features/images/settings-measurement-system.webp
diff --git a/docs/website/content/docs/features/images/settings-nutrition-facts.webp b/docs/website/content/en/docs/features/images/settings-nutrition-facts.webp
similarity index 100%
rename from docs/website/content/docs/features/images/settings-nutrition-facts.webp
rename to docs/website/content/en/docs/features/images/settings-nutrition-facts.webp
diff --git a/docs/website/content/docs/features/images/settings-restore-backup.webp b/docs/website/content/en/docs/features/images/settings-restore-backup.webp
similarity index 100%
rename from docs/website/content/docs/features/images/settings-restore-backup.webp
rename to docs/website/content/en/docs/features/images/settings-restore-backup.webp
diff --git a/docs/website/content/docs/features/images/update-available.webp b/docs/website/content/en/docs/features/images/update-available.webp
similarity index 100%
rename from docs/website/content/docs/features/images/update-available.webp
rename to docs/website/content/en/docs/features/images/update-available.webp
diff --git a/docs/website/content/docs/features/images/update-button.webp b/docs/website/content/en/docs/features/images/update-button.webp
similarity index 100%
rename from docs/website/content/docs/features/images/update-button.webp
rename to docs/website/content/en/docs/features/images/update-button.webp
diff --git a/docs/website/content/docs/features/images/update-success-restart.webp b/docs/website/content/en/docs/features/images/update-success-restart.webp
similarity index 100%
rename from docs/website/content/docs/features/images/update-success-restart.webp
rename to docs/website/content/en/docs/features/images/update-success-restart.webp
diff --git a/docs/website/content/docs/features/integrations.md b/docs/website/content/en/docs/features/integrations.md
similarity index 99%
rename from docs/website/content/docs/features/integrations.md
rename to docs/website/content/en/docs/features/integrations.md
index 6950c2f90..83a23d8d1 100644
--- a/docs/website/content/docs/features/integrations.md
+++ b/docs/website/content/en/docs/features/integrations.md
@@ -1,7 +1,7 @@
---
title: Integrations
weight: 4
-next: /docs/installation
+next: /docs/measurement-system
---
Recipya offers data import integrations with other recipe manager applications.
diff --git a/docs/website/content/docs/features/measurement-systems.md b/docs/website/content/en/docs/features/measurement-systems.md
similarity index 100%
rename from docs/website/content/docs/features/measurement-systems.md
rename to docs/website/content/en/docs/features/measurement-systems.md
diff --git a/docs/website/content/docs/features/nutrition-facts.md b/docs/website/content/en/docs/features/nutrition-facts.md
similarity index 100%
rename from docs/website/content/docs/features/nutrition-facts.md
rename to docs/website/content/en/docs/features/nutrition-facts.md
diff --git a/docs/website/content/docs/features/recipes/_index.md b/docs/website/content/en/docs/features/recipes/_index.md
similarity index 100%
rename from docs/website/content/docs/features/recipes/_index.md
rename to docs/website/content/en/docs/features/recipes/_index.md
diff --git a/docs/website/content/docs/features/recipes/add.md b/docs/website/content/en/docs/features/recipes/add.md
similarity index 100%
rename from docs/website/content/docs/features/recipes/add.md
rename to docs/website/content/en/docs/features/recipes/add.md
diff --git a/docs/website/content/docs/features/recipes/categories.md b/docs/website/content/en/docs/features/recipes/categories.md
similarity index 87%
rename from docs/website/content/docs/features/recipes/categories.md
rename to docs/website/content/en/docs/features/recipes/categories.md
index c40c0cb94..94c84dcb9 100644
--- a/docs/website/content/docs/features/recipes/categories.md
+++ b/docs/website/content/en/docs/features/recipes/categories.md
@@ -1,7 +1,6 @@
---
-title: Wakelock
+title: Categories
weight: 8
-next: /docs/features/cookbooks
---
You can manage your categories from the **Categories** option in the **Recipes** tab of the settings.
diff --git a/docs/website/content/docs/features/recipes/delete.md b/docs/website/content/en/docs/features/recipes/delete.md
similarity index 100%
rename from docs/website/content/docs/features/recipes/delete.md
rename to docs/website/content/en/docs/features/recipes/delete.md
diff --git a/docs/website/content/docs/features/recipes/edit.md b/docs/website/content/en/docs/features/recipes/edit.md
similarity index 100%
rename from docs/website/content/docs/features/recipes/edit.md
rename to docs/website/content/en/docs/features/recipes/edit.md
diff --git a/docs/website/content/docs/features/recipes/images/add-recipe-import.webp b/docs/website/content/en/docs/features/recipes/images/add-recipe-import.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/add-recipe-import.webp
rename to docs/website/content/en/docs/features/recipes/images/add-recipe-import.webp
diff --git a/docs/website/content/docs/features/recipes/images/add-recipe-manual.webp b/docs/website/content/en/docs/features/recipes/images/add-recipe-manual.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/add-recipe-manual.webp
rename to docs/website/content/en/docs/features/recipes/images/add-recipe-manual.webp
diff --git a/docs/website/content/docs/features/recipes/images/add-recipe-options.webp b/docs/website/content/en/docs/features/recipes/images/add-recipe-options.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/add-recipe-options.webp
rename to docs/website/content/en/docs/features/recipes/images/add-recipe-options.webp
diff --git a/docs/website/content/docs/features/recipes/images/add-recipe-scan.webp b/docs/website/content/en/docs/features/recipes/images/add-recipe-scan.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/add-recipe-scan.webp
rename to docs/website/content/en/docs/features/recipes/images/add-recipe-scan.webp
diff --git a/docs/website/content/docs/features/recipes/images/add-recipe-website.gif b/docs/website/content/en/docs/features/recipes/images/add-recipe-website.gif
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/add-recipe-website.gif
rename to docs/website/content/en/docs/features/recipes/images/add-recipe-website.gif
diff --git a/docs/website/content/docs/features/recipes/images/add-recipe.webp b/docs/website/content/en/docs/features/recipes/images/add-recipe.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/add-recipe.webp
rename to docs/website/content/en/docs/features/recipes/images/add-recipe.webp
diff --git a/docs/website/content/docs/features/recipes/images/delete-recipe.webp b/docs/website/content/en/docs/features/recipes/images/delete-recipe.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/delete-recipe.webp
rename to docs/website/content/en/docs/features/recipes/images/delete-recipe.webp
diff --git a/docs/website/content/docs/features/recipes/images/edit-recipe-enter.webp b/docs/website/content/en/docs/features/recipes/images/edit-recipe-enter.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/edit-recipe-enter.webp
rename to docs/website/content/en/docs/features/recipes/images/edit-recipe-enter.webp
diff --git a/docs/website/content/docs/features/recipes/images/edit-recipe.webp b/docs/website/content/en/docs/features/recipes/images/edit-recipe.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/edit-recipe.webp
rename to docs/website/content/en/docs/features/recipes/images/edit-recipe.webp
diff --git a/docs/website/content/docs/features/recipes/images/print-dialog.webp b/docs/website/content/en/docs/features/recipes/images/print-dialog.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/print-dialog.webp
rename to docs/website/content/en/docs/features/recipes/images/print-dialog.webp
diff --git a/docs/website/content/docs/features/recipes/images/print-icon.webp b/docs/website/content/en/docs/features/recipes/images/print-icon.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/print-icon.webp
rename to docs/website/content/en/docs/features/recipes/images/print-icon.webp
diff --git a/docs/website/content/docs/features/recipes/images/recipes-categories.webp b/docs/website/content/en/docs/features/recipes/images/recipes-categories.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/recipes-categories.webp
rename to docs/website/content/en/docs/features/recipes/images/recipes-categories.webp
diff --git a/docs/website/content/docs/features/recipes/images/recipes-search-help.webp b/docs/website/content/en/docs/features/recipes/images/recipes-search-help.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/recipes-search-help.webp
rename to docs/website/content/en/docs/features/recipes/images/recipes-search-help.webp
diff --git a/docs/website/content/docs/features/recipes/images/recipes-search-query.webp b/docs/website/content/en/docs/features/recipes/images/recipes-search-query.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/recipes-search-query.webp
rename to docs/website/content/en/docs/features/recipes/images/recipes-search-query.webp
diff --git a/docs/website/content/docs/features/recipes/images/recipes-search-view.webp b/docs/website/content/en/docs/features/recipes/images/recipes-search-view.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/recipes-search-view.webp
rename to docs/website/content/en/docs/features/recipes/images/recipes-search-view.webp
diff --git a/docs/website/content/docs/features/recipes/images/recipya-bookmarklet.gif b/docs/website/content/en/docs/features/recipes/images/recipya-bookmarklet.gif
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/recipya-bookmarklet.gif
rename to docs/website/content/en/docs/features/recipes/images/recipya-bookmarklet.gif
diff --git a/docs/website/content/docs/features/recipes/images/search-settings.webp b/docs/website/content/en/docs/features/recipes/images/search-settings.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/search-settings.webp
rename to docs/website/content/en/docs/features/recipes/images/search-settings.webp
diff --git a/docs/website/content/docs/features/recipes/images/sharing-dialog.webp b/docs/website/content/en/docs/features/recipes/images/sharing-dialog.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/sharing-dialog.webp
rename to docs/website/content/en/docs/features/recipes/images/sharing-dialog.webp
diff --git a/docs/website/content/docs/features/recipes/images/sharing-icon.webp b/docs/website/content/en/docs/features/recipes/images/sharing-icon.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/sharing-icon.webp
rename to docs/website/content/en/docs/features/recipes/images/sharing-icon.webp
diff --git a/docs/website/content/docs/features/recipes/images/view-recipe-enter.webp b/docs/website/content/en/docs/features/recipes/images/view-recipe-enter.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/view-recipe-enter.webp
rename to docs/website/content/en/docs/features/recipes/images/view-recipe-enter.webp
diff --git a/docs/website/content/docs/features/recipes/images/view-recipe-scale.webp b/docs/website/content/en/docs/features/recipes/images/view-recipe-scale.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/view-recipe-scale.webp
rename to docs/website/content/en/docs/features/recipes/images/view-recipe-scale.webp
diff --git a/docs/website/content/docs/features/recipes/images/view-recipe.webp b/docs/website/content/en/docs/features/recipes/images/view-recipe.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/view-recipe.webp
rename to docs/website/content/en/docs/features/recipes/images/view-recipe.webp
diff --git a/docs/website/content/docs/features/recipes/images/wakelock-off.webp b/docs/website/content/en/docs/features/recipes/images/wakelock-off.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/wakelock-off.webp
rename to docs/website/content/en/docs/features/recipes/images/wakelock-off.webp
diff --git a/docs/website/content/docs/features/recipes/images/wakelock-on.webp b/docs/website/content/en/docs/features/recipes/images/wakelock-on.webp
similarity index 100%
rename from docs/website/content/docs/features/recipes/images/wakelock-on.webp
rename to docs/website/content/en/docs/features/recipes/images/wakelock-on.webp
diff --git a/docs/website/content/docs/features/recipes/print.md b/docs/website/content/en/docs/features/recipes/print.md
similarity index 100%
rename from docs/website/content/docs/features/recipes/print.md
rename to docs/website/content/en/docs/features/recipes/print.md
diff --git a/docs/website/content/docs/features/recipes/search.md b/docs/website/content/en/docs/features/recipes/search.md
similarity index 100%
rename from docs/website/content/docs/features/recipes/search.md
rename to docs/website/content/en/docs/features/recipes/search.md
diff --git a/docs/website/content/docs/features/recipes/share.md b/docs/website/content/en/docs/features/recipes/share.md
similarity index 100%
rename from docs/website/content/docs/features/recipes/share.md
rename to docs/website/content/en/docs/features/recipes/share.md
diff --git a/docs/website/content/docs/features/recipes/view.md b/docs/website/content/en/docs/features/recipes/view.md
similarity index 100%
rename from docs/website/content/docs/features/recipes/view.md
rename to docs/website/content/en/docs/features/recipes/view.md
diff --git a/docs/website/content/docs/features/recipes/wakelock.md b/docs/website/content/en/docs/features/recipes/wakelock.md
similarity index 97%
rename from docs/website/content/docs/features/recipes/wakelock.md
rename to docs/website/content/en/docs/features/recipes/wakelock.md
index f16cd1088..adffee959 100644
--- a/docs/website/content/docs/features/recipes/wakelock.md
+++ b/docs/website/content/en/docs/features/recipes/wakelock.md
@@ -1,6 +1,7 @@
---
title: Wakelock
weight: 8
+next: /docs/features/cookbooks
---
Imagine you are cooking a recipe from a mobile device. You gather all the ingredients, and you are ready to start,
diff --git a/docs/website/content/docs/features/reports.md b/docs/website/content/en/docs/features/reports.md
similarity index 100%
rename from docs/website/content/docs/features/reports.md
rename to docs/website/content/en/docs/features/reports.md
diff --git a/docs/website/content/docs/features/updater.md b/docs/website/content/en/docs/features/updater.md
similarity index 98%
rename from docs/website/content/docs/features/updater.md
rename to docs/website/content/en/docs/features/updater.md
index a8e099139..2dad948df 100644
--- a/docs/website/content/docs/features/updater.md
+++ b/docs/website/content/en/docs/features/updater.md
@@ -17,6 +17,6 @@ Finally, click the `Update` button.
![](images/update-button.webp)
-On success, the application will reload automatically after five secconds.
+On success, the application will reload automatically after five seconds.
![](images/update-success-restart.webp)
diff --git a/docs/website/content/docs/installation/_index.md b/docs/website/content/en/docs/installation/_index.md
similarity index 100%
rename from docs/website/content/docs/installation/_index.md
rename to docs/website/content/en/docs/installation/_index.md
diff --git a/docs/website/content/docs/installation/build/Install.md b/docs/website/content/en/docs/installation/build/Install.md
similarity index 94%
rename from docs/website/content/docs/installation/build/Install.md
rename to docs/website/content/en/docs/installation/build/Install.md
index 48aa5411e..bbde8c693 100644
--- a/docs/website/content/docs/installation/build/Install.md
+++ b/docs/website/content/en/docs/installation/build/Install.md
@@ -17,14 +17,14 @@ Then, start the server by opening a command prompt in the folder, and run the fo
The application will perform a one-time setup if not already done.
```bash
-./recipya-{os}-{architecture} serve
+./recipya serve
```
You can now access the website at the address specified.
## Example
-Let's say you have a Windows 11 computer, and you want to install Recipya v1.0.0 on it.
+Let's say you have a Windows 11 computer, and you want to install Recipya v1.2.0 on it.
{{% steps %}}
@@ -34,7 +34,7 @@ You would first access the [releases page](https://github.com/reaper47/recipya/r
### Download
-Identify version `v1.0.0` and download `recipya-windows-amd64.zip` under the **Assets** section.
+Identify version `v1.2.0` and download `recipya-windows-amd64.zip` under the **Assets** section.
### Extract
diff --git a/docs/website/content/docs/installation/build/_index.md b/docs/website/content/en/docs/installation/build/_index.md
similarity index 100%
rename from docs/website/content/docs/installation/build/_index.md
rename to docs/website/content/en/docs/installation/build/_index.md
diff --git a/docs/website/content/docs/installation/build/config-file.md b/docs/website/content/en/docs/installation/build/config-file.md
similarity index 53%
rename from docs/website/content/docs/installation/build/config-file.md
rename to docs/website/content/en/docs/installation/build/config-file.md
index a99280c0d..f080096ae 100644
--- a/docs/website/content/docs/installation/build/config-file.md
+++ b/docs/website/content/en/docs/installation/build/config-file.md
@@ -25,12 +25,3 @@ The admin may change most of these options from the settings.
- **noSignups**: Whether to disable user account registrations. Set to `true` when you don't want people to create accounts. Default: `false`.
- **port**: The port the app will be served through if localhost. __Is required__.
- **url**: The website the app is served on. This URL will serve as the base link in the emails. Default: `http://0.0.0.0`.
-
-### Deprecations
-
-The following table lists deprecated environment variables in v1.2.0. They will be removed in v1.3.0.
-
-| Variable | Reason |
-|-----------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| **integrations.azureComputerVision.resourceKey** | Replaced the use of [Azure AI Vision](https://azure.microsoft.com/en-us/products/ai-services/ai-vision) to digitize recipes in favor of [Azure AI Document Intelligence](https://azure.microsoft.com/en-us/products/ai-services/ai-document-intelligence). |
-| **integrations.azureComputerVision.visionEndpoint** | Same as above. | |
diff --git a/docs/website/content/docs/installation/docker.md b/docs/website/content/en/docs/installation/docker.md
similarity index 100%
rename from docs/website/content/docs/installation/docker.md
rename to docs/website/content/en/docs/installation/docker.md
diff --git a/docs/website/content/docs/installation/integrations.md b/docs/website/content/en/docs/installation/integrations.md
similarity index 100%
rename from docs/website/content/docs/installation/integrations.md
rename to docs/website/content/en/docs/installation/integrations.md
diff --git a/docs/website/content/docs/installation/system-requirements.md b/docs/website/content/en/docs/installation/system-requirements.md
similarity index 100%
rename from docs/website/content/docs/installation/system-requirements.md
rename to docs/website/content/en/docs/installation/system-requirements.md
diff --git a/docs/website/content/docs/installation/windows-users.md b/docs/website/content/en/docs/installation/windows-users.md
similarity index 88%
rename from docs/website/content/docs/installation/windows-users.md
rename to docs/website/content/en/docs/installation/windows-users.md
index 52c5be997..c80d4c818 100644
--- a/docs/website/content/docs/installation/windows-users.md
+++ b/docs/website/content/en/docs/installation/windows-users.md
@@ -1,7 +1,7 @@
---
title: Windows Users
weight: 4
-next: /docs/deployment
+next: /docs/integrations
---
Please follow these [instructions](/guide/docs/installation/build/) to install Recipya without Docker.
@@ -20,7 +20,7 @@ If you intend to access the website on other devices within your home network, p
## Windows Defender
-If you executed the `recipya-windows-{arch}.exe` binary from the GitHub releases page and Windows Defender quarantined the
+If you executed the `recipya.exe` binary from the GitHub releases page and Windows Defender quarantined the
executable, then you should add the folder or file to the exclusion list. This happens because the builds are not signed yet.
1. Unzip a fresh instance of the build.
diff --git a/docs/website/content/fr/_index.md b/docs/website/content/fr/_index.md
new file mode 100644
index 000000000..21fc1731f
--- /dev/null
+++ b/docs/website/content/fr/_index.md
@@ -0,0 +1,85 @@
+---
+title: Recipya
+layout: hextra-home
+---
+
+
+{{< hextra/hero-headline >}}
+ Recipya
+{{< /hextra/hero-headline >}}
+
+
+
+{{< hextra/hero-subtitle >}}
+ Un gestionnaire de recettes propre, simple et puissant dont toute la famille aimera.
+{{< /hextra/hero-subtitle >}}
+
+
+
+{{< hextra/hero-button text="Commencer" link="docs" style="margin-right: 0.5rem" >}}
+{{< hextra/hero-button text="Ouvrir l'application" link="/guide/fr/auth/login" style="background-color: rgb(139 92 246)">}}
+
+
+{{< hextra/feature-grid >}}
+{{< hextra/feature-card
+ title="Collectionner des recettes"
+ subtitle="Importez sans effort vos recettes préférées sur le Web, numérisez les recettes papier et ajoutez des recettes manuellement."
+ class="hxaspect-auto md:hx-aspect-[1.1/1] max-md:hx-min-h-[340px]"
+ image="/images/curate.webp"
+ imageClass="small hx-w-[180%] hx-left-[36px] sm:hx-w-[110%] dark:hx-opacity-80"
+ style="background: radial-gradient(ellipse at 50% 80%,rgba(194,97,254,0.15),hsla(0,0%,100%,0));"
+ >}}
+{{< hextra/feature-card
+ title="Un systĂšme de mesures"
+ subtitle="Toutes vos recettes peuvent ĂȘtre converties vers votre systĂšme de mesure prĂ©fĂ©rĂ©. Dites au revoir Ă l'impĂ©rial ou au mĂ©trique."
+ class="hx-aspect-auto md:hx-aspect-[1.1/1] max-lg:hx-min-h-[340px]"
+ image="/images/view-recipe.webp"
+ imageClass="small hx-w-[110%] sm:hx-w-[110%] dark:hx-opacity-80"
+ icon="globe"
+ style="background: radial-gradient(ellipse at 50% 80%,rgba(142,53,74,0.15),hsla(0,0%,100%,0));"
+ >}}
+{{< hextra/feature-card
+ title="Auto-hébergable"
+ subtitle="Auto-hébergez facilement le logiciel sur votre serveur avec Docker."
+ icon="desktop-computer"
+ class="hx-aspect-auto md:hx-aspect-[1.1/1] max-md:hx-min-h-[340px]"
+ image="/images/devices.svg"
+ imageClass="small hx-w-[110%] sm:hx-w-[110%] dark:hx-opacity-80"
+ style="background: radial-gradient(ellipse at 50% 80%,rgba(221,210,59,0.15),hsla(0,0%,100%,0));"
+ >}}
+{{< hextra/feature-card
+ title="Information nutritionnelle"
+ icon="information-circle"
+ subtitle="Laissez le logiciel calculer automatiquement les informations nutritionnelles lors de l'ajout de recettes."
+ >}}
+{{< hextra/feature-card
+ title="Intégrations"
+ icon="chip"
+ subtitle="Importez vos recettes à partir de différentes solutions, telles que Mealie, Tandoor, Nextcloud Cookbook, MasterCook et Paprika."
+ >}}
+{{< hextra/feature-card
+ title="Verrouillage de réveil"
+ icon="light-bulb"
+ subtitle="EmpĂȘchez votre appareil de se mettre en veille pendant l'affichage d'une recette."
+ >}}
+{{< hextra/feature-card
+ title="Imprimer"
+ icon="printer"
+ subtitle="Imprimez n'importe quelle recette ou livre de cuisine de votre collection."
+ >}}
+{{< hextra/feature-card
+ title="Adaptif"
+ icon="device-mobile"
+ subtitle="L'application a une bonne allure sur différentes tailles d'écran."
+ >}}
+{{< hextra/feature-card
+ title="Compilation croisée"
+ icon="chip"
+ subtitle="Peut ĂȘtre installer sur Windows, Linux, and macOS."
+ >}}
+{{< hextra/feature-card
+ title="Et beaucoup plus..."
+ icon="sparkles"
+ subtitle="Assurez-vous de ne pas négliger la visite guidée des fonctionnalités dans la documentation pour en savoir plus!"
+ >}}
+{{< /hextra/feature-grid >}}
diff --git a/docs/website/content/fr/about/_index.md b/docs/website/content/fr/about/_index.md
new file mode 100644
index 000000000..edf5dc938
--- /dev/null
+++ b/docs/website/content/fr/about/_index.md
@@ -0,0 +1,71 @@
+---
+title: About
+cascade:
+ type: docs
+---
+
+Un gestionnaire de recettes propre, simple et puissant dont toute la famille aimera.
+Il est axé sur la simplicité pour que toute la famille puisse en profiter.
+
+## Features
+
+- Gérez vos recettes préférées
+- Importez des recettes du Web
+- Numérisez des recettes papier
+- Organisez vos recettes dans des livres de cuisine
+- Migrez facilement vos recettes depuis [Mealie](https://mealie.io), [Tandoor](https://tandoor.dev) et [Nextcloud Cookbook](https://apps.nextcloud.com/apps/cookbook)
+- Conversion automatique vers votre systÚme de mesure préféré (impérial/métrique)
+- Calculez automatiquement les informations nutritionnelles
+- Imprimez n'importe quelle recette de votre collection
+- EmpĂȘchez votre appareil de se mettre en veille pendant que vous consultez une recette
+- Suivez le thÚme de votre systÚme (clair/foncé)
+- Compilation croisée pour Windows, Linux et macOS
+
+## Mise en route
+
+Les instructions d'installation sont Ă©crites dans la [section installation](/guide/fr/docs/installation/) de la documentation.
+
+## Contribution
+
+Les contributions sont toujours les bienvenues ! Veuillez ouvrir un ticket, démarrer une [discussion](https://github.com/reaper47/recipya/discussions), ouvrir une pull request ou envoyer un e-mail à macpoule@gmail.com.
+Il en va de mĂȘme si vous avez des commentaires ou si vous avez besoin d'aide.
+
+Vous pouvez également rejoindre notre canal de développement et d'assistance sur
+[l'espace Matrix: #recipya:matrix.org](https://app.element.io/#/room/#recipya:matrix.org).
+Matrix est similaire Ă Discord mais est open source.
+
+## Sponsors
+
+Je suis reconnaissant pour tout soutien qui m'aide à continuer à développer ce projet et à l'héberger de maniÚre fiable. Votre parrainage m'aidera
+Ă payer le plan SendGrid Essentials pour augmenter le nombre d'e-mails pouvant ĂȘtre envoyĂ©s. Le plan gratuit actuellement
+utilisé permet d'envoyer jusqu'à 100 e-mails par jour.
+
+Vous pouvez me sponsoriser sur
+[GitHub Sponsors](https://github.com/sponsors/reaper47) ou
+[Buy Me a Coffee](https://www.buymeacoffee.com/macpoule).
+
+Votre soutien est grandement apprĂ©ciĂ© ! Un tiers des dons sera envoyĂ© aux forces armĂ©es ukrainiennes đșđŠ
+
+## Autres applications de gestion de recettes
+
+- [Tandoor](https://github.com/TandoorRecipes/recipes)
+- [Mealie](https://github.com/mealie-recipes/mealie)
+- [Paprika](https://www.paprikaapp.com/)
+- [Grocy](https://grocy.info/)
+- [Cooklist](https://cooklist.com/)
+- [Grossr](https://grossr.com/)
+- [Awesome List](https://github.com/awesome-selfhosted/awesome-selfhosted#recipe-management)
+
+# Inspiration
+
+Ce projet a été principalement codé en blastant les albums suivants:
+- [Archspire - Bleed the Future](https://www.youtube.com/watch?v=o8H9ahswldM)
+- [Sonata Arctica - Talviyö](https://www.youtube.com/watch?v=x6rEDMqM36I)
+- [Cattle Decapitation - Terrasite](https://www.youtube.com/watch?v=x6rEDMqM36I)
+- [Mozart - Requiem Dm](https://www.youtube.com/watch?v=pBGVfwOLU1w0)
+- [Ensiferum - From Afar](https://www.youtube.com/watch?v=6r8OPu3SRSM)
+- [Pain - You Only Live Twice](https://www.youtube.com/watch?v=obgCEoLzLs4)
+- [Abysmal Dawn - Phylogenesis](https://www.youtube.com/watch?v=xJMybqRMedk&pp=ygUMYWJ5c21hbCBkYXdu)
+- [Lofi Girl - lofi hip hop radio](https://www.youtube.com/watch?v=jfKfPfyJRdk)
+- [Lofi Girl - synthwave radio](https://www.youtube.com/watch?v=4xDzrJKXOOY)
+- [4am](https://www.youtube.com/watch?v=tBcPji_jRDc)
diff --git a/docs/website/content/fr/about/changelog/_index.md b/docs/website/content/fr/about/changelog/_index.md
new file mode 100644
index 000000000..ef418a5f1
--- /dev/null
+++ b/docs/website/content/fr/about/changelog/_index.md
@@ -0,0 +1,23 @@
+---
+title: Journal des modifications
+cascade:
+ type: docs
+weight: 1
+---
+
+Aperçu des versions de Recipya.
+
+{{< cards >}}
+ {{< card link="/guide/fr/about/changelog/v1.2.0/"
+ title="v1.2.0"
+ subtitle="Afficher le journal des modifications pour la version 1.2.0."
+ icon="newspaper">}}
+ {{< card link="/guide/fr/about/changelog/v1.1.0/"
+ title="v1.1.0"
+ subtitle="Afficher le journal des modifications pour la version v1.1.0."
+ icon="newspaper">}}
+ {{< card link="/guide/fr/about/changelog/v1.0.1/"
+ title="v1.0.1"
+ subtitle="Afficher le journal des modifications pour la version v1.0.1."
+ icon="newspaper">}}
+{{< /cards >}}
diff --git a/docs/website/content/fr/about/changelog/images/v1.0.1/fixed-salmon.webp b/docs/website/content/fr/about/changelog/images/v1.0.1/fixed-salmon.webp
new file mode 100644
index 000000000..3c455cf54
Binary files /dev/null and b/docs/website/content/fr/about/changelog/images/v1.0.1/fixed-salmon.webp differ
diff --git a/docs/website/content/fr/about/changelog/v1.0.1.md b/docs/website/content/fr/about/changelog/v1.0.1.md
new file mode 100644
index 000000000..0621b6152
--- /dev/null
+++ b/docs/website/content/fr/about/changelog/v1.0.1.md
@@ -0,0 +1,53 @@
+---
+title: v1.0.1 (11 January 2024)
+weight: 4
+---
+
+## Authentification
+
+Les utilisateurs peuvent désormais se connecter lorsque la clé `server.isProduction` dans le fichier de configuration est définie sur `true` et que la valeur de la clé `server.url` utilise le protocole HTTP.
+
+## Crashes
+
+Les utilisateurs pouvaient télécharger un fichier ou un fichier zip et le serveur plantait. C'est maintenant géré.
+
+## Docker
+
+Une image Docker `nightly` avec prise en charge arm64 a été ajoutée.
+
+## Scraper
+
+### Corrections
+
+Le symbole du degré a été standardisé pour les conversions de température.
+
+### Actualiser
+Le module scraper a été actualisé pour le maintenir à jour.
+
+### Sites Web
+
+Le site Web `mob.co.uk` a été supprimé, car la balise de script de la recette dans le HTML récupéré contient du JSON non valide.
+Les bibliothÚques `json` et `yaml` ne peuvent malheureusement pas décoder le JSON.
+
+Le site `nutritionbynathalie.com` a Ă©tĂ© supprimĂ©, car il ne peut plus ĂȘtre scrapĂ©.
+
+## Recettes
+
+### Catégories
+
+De nombreux utilisateurs mélangeaient les mots-clés avec les catégories. Par conséquent, une recette peut désormais avoir jusqu'à une catégorie plutÎt que plusieurs.
+
+### Base de données
+
+Correction d'un bug oĂč l'utilisateur 2+ voyait les recettes de l'utilisateur 1 lors de l'accĂšs Ă la page `/` ou `/recipes`.
+
+### Ingrédients
+
+Suppression du barré lorsque l'utilisateur vérifie un ingrédient.
+
+### Valeurs nutritionnelles par portion
+
+Les informations nutritionnelles sont désormais affichées par portion lors de l'importation d'un site Web dont les informations nutritionnelles sont fournies par portion plutÎt que par 100 g.
+![](images/v1.0.1/fixed-salmon.webp)
+
+Sous le capot, le champ `NutritionSchema.Servings` doit ĂȘtre un nombre reprĂ©sentĂ© sous forme de chaĂźne. Si le champ est vide, les informations nutritionnelles seront affichĂ©es par 100 g. Sinon, par portion.
\ No newline at end of file
diff --git a/docs/website/content/fr/about/changelog/v1.1.0.md b/docs/website/content/fr/about/changelog/v1.1.0.md
new file mode 100644
index 000000000..cd2ff1e66
--- /dev/null
+++ b/docs/website/content/fr/about/changelog/v1.1.0.md
@@ -0,0 +1,209 @@
+---
+title: v1.1.0 (28 March 2024)
+weight: 3
+---
+
+## Authentification
+
+### Enregistrements de compte
+
+Il est désormais possible de désactiver les enregistrements de compte. Ceci est utile lorsque vous souhaitez éviter que des personnes aléatoires enregistrent un compte lorsque l'application est exposée à Internet.
+
+Pour désactiver les comptes d'utilisateur, définissez l'option **server.noSignups** dans le fichier de configuration sur `true`. Pour les utilisateurs de Docker,
+définissez la variable d'environnement `RECIPYA_SERVER_NO_SIGNUPS` sur `true`.
+
+Vous pourrez gérer vos utilisateurs depuis le tableau de bord `/admin`.
+
+### Connexion automatique
+
+Il est désormais possible de se connecter automatiquement à l'application. Ceci est utile lorsque les comptes d'utilisateur ne sont pas nécessaires.
+
+Pour activer cette fonctionnalité, définissez l'option **server.autologin** dans le fichier de configuration sur `true`. Pour les utilisateurs de Docker,
+définissez la variable d'environnement `RECIPYA_SERVER_AUTOLOGIN` sur `true`.
+
+Un compte par défaut sera créé au démarrage de l'application lorsque aucun compte n'a encore été créé. Ses identifiants sont les suivants :
+- **email** : admin@autologin.com
+- **mot de passe** : admin
+
+### Cookies
+
+Correction d'un problĂšme oĂč le cookie *se souvenir de moi* ne fonctionnait pas.
+
+## Admin
+
+Une page d'administration accessible via le point de terminaison `/admin` a été démarrée.
+
+## Livres de cuisine
+
+Correction d'un problĂšme oĂč l'utilisateur ne pouvait pas accĂ©der Ă ses livres de cuisine.
+
+Correction d'un problĂšme oĂč un livre de cuisine sans recettes pouvait ĂȘtre tĂ©lĂ©chargĂ©.
+
+Le nom des livres de cuisine est désormais automatiquement ajusté à la casse du titre. Il n'est dorénavant plus possible de créer un livre de cuisine nommé
+`meilleur petit-dĂ©jeuner` lorsque `Meilleur petit-dĂ©jeuner` existe, car ils ont le mĂȘme nom.
+
+Auparavant, le mode de recherche de recettes par dĂ©faut Ă©tait par nom, ce qui signifie que votre requĂȘte de recherche ne recherchait que le
+champ titre des recettes. DĂ©sormais, vous pouvez choisir **Par nom** ou **Recherche complĂšte**.
+
+## Données
+
+### Sauvegardes et restauration
+
+Les données de l'application sont désormais sauvegardées automatiquement tous les trois jours.
+Il est possible de restaurer une sauvegarde précédente.
+
+Veuillez consulter la [visite des fonctionnalités](/guide/fr/docs/features/backups) pour plus d'informations.
+
+### RĂ©pertoire
+
+La base de données a été déplacée de `path/to/recipya/` vers `path/to/recipya/data/backup/database/`. Ce changement permet
+aux utilisateurs de Docker de conserver les données de l'application. Les utilisateurs n'ont aucune action à effectuer, car la migration vers le nouveau dossier
+est automatique au démarrage de l'application.
+
+### TĂąches
+
+La tùche de nettoyage des images non référencées évite désormais de supprimer les images de livre de recettes référencées.
+
+## Docker
+
+Les variables d'environnement peuvent dĂ©sormais ĂȘtre transmises via la commande `docker run` et le fichier `docker-compose`.
+
+## Infrastructure
+
+Ajout d'un environnement de développement `.devcontainer`, qui vous permet de configurer tout ce dont vous avez besoin pour développer et exécuter Recipya.
+
+Mise Ă niveau de la version Go de 1.21 Ă 1.22.
+
+Mise Ă jour de tous les packages Go et NPM.
+
+## Recettes
+
+### Bookmarklet Recipya
+
+Le bookmarklet Recipya permet à un utilisateur d'exécuter un extrait JavaScript à partir de son navigateur qui extrait une recette d'une page Web.
+
+C'est pour les sites Web qui, Ă la fois :
+- ne peuvent pas ĂȘtre rĂ©cupĂ©rĂ©s via une requĂȘte serveur, c'est-Ă -dire qui ont quelque chose comme un captcha ou une dĂ©tection de bot
+- qui ont des extraits de script de recette json+ld sur leur page
+
+Pour obtenir le bookmarklet :
+1. Accédez à `/recipes/add`
+2. Ajoutez le lien `Recipya Bookmarklet` Ă vos favoris dans la carte `Import`.
+
+Pour l'utiliser :
+1. Ouvrez une page Web de recette, par exemple [pain aux noix et bananes doubles](https://www.allrecipes.com/recipe/231961/double-banana-nut-bread/)
+2. Cliquez sur le bookmarklet
+3. Un fichier JSON est téléchargé lorsqu'il réussit.
+
+Vous pouvez ensuite importer la recette extraite depuis `Ajouter une recette -> Importer`.
+
+### Importer
+
+#### Fichiers texte
+
+Il est désormais possible d'importer des fichiers texte de recettes au format « .txt ».
+Les fichiers texte doivent idĂ©alement ĂȘtre structurĂ©s comme suit :
+
+```texte
+Titre
+
+Description
+
+Métadonnées, comme le temps de préparation, le temps de cuisson, le temps total, les portions, etc.
+
+Liste des ingrédients
+QuantitĂ© | UnitĂ© de mesure | IngrĂ©dient | Ăventuellement des instructions
+
+Instructions
+
+Ăventuellement une URL d'oĂč provient la recette
+```
+
+#### Sites Web
+
+L'importation en masse d'URL est dĂ©sormais possible. Pour ce faire, accĂ©dez Ă la boĂźte de dialogue depuis *Ajouter une recette â Site Web â RĂ©cupĂ©rer*.
+Dans la zone de texte, collez votre liste d'URL, chacune sur une nouvelle ligne et appuyez sur *Envoyer*.
+
+### Recherche
+
+La pagination de recherche a été implémentée lors de la recherche de recettes et lors de la recherche de recettes à ajouter à un livre de cuisine.
+
+Vous pouvez désormais choisir parmi les modes de recherche suivants :
+- Par nom
+- Recherche complĂšte
+
+La recherche complÚte est la valeur par défaut.
+
+### Trier
+
+Les recettes peuvent dĂ©sormais ĂȘtre triĂ©es de la maniĂšre suivante :
+
+- Par nom :
+- De A Ă Z
+- De Z Ă A
+- Par date de création :
+- Du plus récent au plus ancien
+- Du plus ancien au plus récent
+- Aléatoire
+
+La valeur par défaut est par ordre d'insertion dans la base de données.
+
+## Rapports
+
+Les rapports sont générés aprÚs l'importation des recettes. Ils sont accessibles depuis le point de terminaison /reports.
+Veuillez consulter la [visite des fonctionnalités](/guide/fr/docs/features/reports) pour plus d'informations.
+
+## Scraper
+
+Le scraper a été actualisé.
+
+Ajout de la prise en charge des sites Web suivants :
+- aberlehome.com
+- ah.nl
+- all-clad.com
+- argiro.gr
+- bergamot.app
+- bettybossi.ch
+- bingingwithbabish.com
+- brianlagerstrom.com
+- chuckycruz.substack.com
+- drinkoteket.se
+- foodbag.be
+- foodnetwork.com
+- francescakookt.nl
+- jaimyskitchen.nl
+- kuchynalidla.sk
+- lidl-kochen.de
+- leukerecepten.nl
+- livingthegreenlife.com
+- maangchi.com
+- marmiton.org
+- moulinex.fr
+- myjewishlearning.com
+- puurgezond.nl
+- quitoque.fr
+- recipescommunity.com.au
+- reddit.com
+- yumelise.fr
+
+## SystĂšme
+
+### Utilisation de la mémoire
+
+Réduisez l'utilisation de la mémoire de moitié en supprimant la dépendance sur [Boostport/mjml-go](https://github.com/Boostport/mjml-go).
+Lors de l'analyse de profilage du tas, il a été observé que l'application conservait une instance de *wazero* en mémoire.
+Reconnaissant ce comportement comme indésirable, le package a été supprimé. à sa place, une commande `build:mjml` a été ajoutée
+au fichier `package.json` pour convertir les fichiers `.mjml` en `.gohtml` pendant le processus de construction.
+
+Réduisez encore davantage l'utilisation de la mémoire d'environ 10 % en utilisant [templ](https://github.com/a-h/templ) au lieu de stocker les modÚles `gohtml` en mémoire.
+
+## UI/UX
+
+L'ensemble du frontend a été repensé pour s'adapter à n'importe quel appareil et présenter un design plus propre et plus beau.
+
+La mise en page d'impression des recettes a été améliorée.
+
+## Mise Ă jour
+
+Le logiciel peut désormais se mettre à jour automatiquement lorsqu'une mise à jour est disponible. Vous remarquerez une icÎne de notification à cÎté de votre avatar
+lorsqu'il est temps de procéder à la mise à jour.
diff --git a/docs/website/content/fr/about/changelog/v1.2.0.md b/docs/website/content/fr/about/changelog/v1.2.0.md
new file mode 100644
index 000000000..2a2dd2cf4
--- /dev/null
+++ b/docs/website/content/fr/about/changelog/v1.2.0.md
@@ -0,0 +1,227 @@
+---
+title: v1.2.0 (16 July 2024)
+weight: 2
+---
+
+## Ajouts
+
+- đ **Recherche AvancĂ©e** : La recherche avancĂ©e vous permet d'affiner votre requĂȘte de recherche pour obtenir les rĂ©sultats souhaitĂ©s. Veuillez consulter la [doc](/guide/fr/docs/features/recipes/search/) pour savoir comment l'utiliser.
+- đ© **Configuration** : Ajout de la possibilitĂ© de modifier la plupart des champs du fichier de configuration Ă partir de l'interface utilisateur sous la page des paramĂštres.
+- đ±ïž **Filtrer par catĂ©gorie** : Il est dĂ©sormais possible de cliquer sur la catĂ©gorie d'une recette depuis la page d'accueil pour afficher toutes les recettes ayant la mĂȘme catĂ©gorie.
+- đȘ” **Journaux** : un mĂ©canisme de journalisation a Ă©tĂ© introduit Ă l'aide de [log/slog](https://pkg.go.dev/log/slog). Les journaux sont stockĂ©s sous `%APPDATA%\Recipya\Logs`. Les journaux changent une fois que la taille d'un fichier journal atteint 500 Mo. Jusqu'Ă trois fichiers journaux sont stockĂ©s Ă la fois.
+- đ§âđ» **Importer depuis des applications** : Il est dĂ©sormais possible d'importer des recettes depuis les applications suivantes.
+ - AccuChef
+ - ChefTap
+ - Crouton
+ - Easy Recipe Deluxe
+ - Kalorio
+ - Mealie
+ - Paprika
+ - Recipe Keeper
+ - RecipeSage
+ - Saffron
+ - Tandoor
+- đïž **Mots-clĂ©s** : Ajout d'une section de mots-clĂ©s aux recettes.
+- đ **GĂ©rer les catĂ©gories** : L'utilisateur peut dĂ©sormais contrĂŽler ses catĂ©gories de recettes Ă partir de la boĂźte de dialogue des paramĂštres.
+- đ» **Mascotte** : Bananacat est dĂ©sormais la mascotte de Recipya.
+- đ· **Images multiples** : Prise en charge de l'ajout de plusieurs images aux recettes.
+- đïž **SchĂ©ma de recette** : Ajout de `nutrition.transFat`, `thumbnailUrl` et `video` au schĂ©ma de recette.
+- đ„ **Sous-catĂ©gories** : Ajout de la possibilitĂ© de sous-catĂ©goriser les catĂ©gories. Par exemple, la catĂ©gorie `boissons:cocktails:vodka` signifie ce qui suit :
+ - `boissons` est la catégorie principale
+ - `cocktails` est une sous-catégorie de `boissons`
+ - `vodka` est une sous-catégorie de `cocktails`
+- 𧰠**Outils** : Ajout d'une section d'outils aux recettes.
+- đ **Transitions** : Ajout de transitions de vue lorsque l'utilisateur saisit une recette, sĂ©lectionne une page dans la pagination et lorsqu'il bascule entre
+ les onglets dans la barre latérale. Cette fonctionnalité n'est pas disponible dans Firefox.
+- đș **VidĂ©os** : Ajout de la possibilitĂ© d'ajouter des vidĂ©os aux recettes.
+- đžïž **Sites Web** : Ajout de la prise en charge de 109 sites Web, Ă©numĂ©rĂ©s au bas de ces notes.
+
+## Corrections
+
+- â **Ajouter Ă la collection** : correction du bouton « Ajouter une recette Ă la collection » qui ne fonctionnait pas.
+- đž **Sites Web approuvĂ©s** : les sites Web prĂ©cĂ©demment approuvĂ©s, mais qui ont Ă©chouĂ© lors de leur ajout via l'interface utilisateur, ont Ă©tĂ© corrigĂ©s.
+- đ **Liste des catĂ©gories** : correction de la liste des catĂ©gories en mode d'Ă©dition de recette qui n'affichait pas la liste des catĂ©gories de l'utilisateur.
+- đ **Suppression du livre de recettes** : correction d'un problĂšme oĂč le mauvais livre de recettes Ă©tait supprimĂ©.
+- đïž **Course de donnĂ©es** : prĂ©vention d'une condition de course de donnĂ©es causĂ©e par des lectures et des Ă©critures simultanĂ©es sur la carte des sessions.
+- đïž **Compression d'image** : correction de la recompression des images aprĂšs chaque modification.
+- đ **Conversion d'ingrĂ©dients** : correction d'une conversion d'ingrĂ©dients incorrecte.
+- âïž **Mise Ă l'Ă©chelle des ingrĂ©dients** : correction de certains problĂšmes de mise Ă l'Ă©chelle des ingrĂ©dients.
+- đ„ł **jamieoliver.com** : AmĂ©lioration du scraper jamieoliver.com.
+- đ **kingarthurbaking** : Analyse raffinĂ©e de kingarthurbaking.com.
+- đš **Maangchi.com** : Analyse corrigĂ©e et amĂ©liorĂ©e de maangchi.com.
+- đ© **ParenthĂšse manquante** : Correction de la parenthĂšse fermante manquante dans l'en-tĂȘte de la premiĂšre colonne du tableau nutritionnel.
+- đ« **Normaliser la nutrition** : Normalisation des propriĂ©tĂ©s nutritionnelles.
+- 𧟠**Calcul nutritionnel** : Calculer la nutrition lorsque les ingrédients d'une recette sont mis à jour.
+- đŁ **Exportation de recettes** : Correction d'un crash lors de l'exportation des recettes au format PDF.
+- â **Importations de recettes** : Le logiciel importait uniquement une partie des recettes Ă partir du fichier JSON exportĂ©. Par exemple, si votre fichier ZIP exportĂ© contenait
+ 350 recettes, seules 40 pourraient ĂȘtre importĂ©es avec succĂšs. Ce problĂšme a Ă©tĂ© rĂ©solu, garantissant qu'aucune recette dans
+ l'archive exportée ne soit ignorée.
+- đȘ **Redirection** : correction d'une erreur de redirection lors de la connexion lorsqu'un cookie de session existe.
+- đȘč **Recharger** : la page ne se recharge plus lorsque la requĂȘte de recherche est vide.
+- đ„ **Restaurer la sauvegarde** : restauration de la sauvegarde utilisateur corrigĂ©e lorsque des fichiers facultatifs dans l'archive de sauvegarde sont manquants.
+## Modifications
+
+- đŸ **Data directory**: The database has been moved from `path/to/recipya/data/backup/database/` to where user data is stored.
+ - Windows: `%APPDATA%\Recipya`
+ - Linux: `$XDG_CONFIG_HOME/Recipya`
+ - MacOS: `$HOME/Library/Application Support/Recipya`
+
+Users do not have to take any action because the migration to the new folder is automatic on application startup.
+
+{{< callout type="warning" >}}
+__Utilisateurs Docker__:
+Assurez-vous d'ajuster le chemin de votre volume Ă `recipya-data:/root/.config/Recipya`.
+{{< /callout >}}
+- đ°ïž **AccĂšs Ă la documentation** : DĂ©placement du lien vers la documentation de la boĂźte de dialogue Ă propos vers le menu Avatar.
+- 𩻠**Type de fichier image** : Les images sont désormais stockées au format WebP plutÎt que JPG pour une meilleure compression et une meilleure qualité d'image.
+- đïž **Page d'index** : La page d'index de la vue mobile des recettes et des livres de cuisine affiche dĂ©sormais deux colonnes au lieu d'une.
+- 1ïžâŁ **Liste des catĂ©gories** : Seule la premiĂšre catĂ©gorie est conservĂ©e lors de l'insertion d'une recette dans la base de donnĂ©es.
+- 𫧠**Notifications** : La plupart des notifications sont dĂ©sormais envoyĂ©es via des websockets au lieu de htmx, ce qui signifie que tous vos onglets ouverts afficheront les mĂȘmes notifications envoyĂ©es.
+- đ§ **Prise en charge de la plateforme** : Abandon de la prise en charge des plateformes suivantes, car le logiciel ne se compilait pas :
+ - Linux sur architecture x86 32 bits (linux/386).
+ - Linux sur architecture ARMv6 (linux/arm)
+ - Linux sur architecture RISC-V 64 bits (linux/riscv64)
+ - Linux sur architecture IBM System z (linux/s390x)
+- đČ **CatĂ©gorie de recette** : Le rĂ©glage de la catĂ©gorie est dĂ©sormais facultatif et la valeur par dĂ©faut est « non catĂ©gorisĂ© » lorsqu'elle n'est pas dĂ©finie.
+- đč **Description de la recette** : Le champ de description est dĂ©sormais facultatif. Masquez Ă©galement la section sur mobile si elle est vide.
+- đ« **Champs de recette (manuel)** : Les champs obligatoires manquants gĂ©nĂšrent dĂ©sormais une erreur.
+- đŠ **Export JSON de recette** : L'archive zip des recettes exportĂ©es au format JSON ne contient dĂ©sormais que des fichiers JSON, un par recette. Avant, nous
+ avions un dossier par recette. Chacun contenait l'image de la recette et son schéma JSON. Inclure les fichiers image dans l'archive
+ n'est plus nécessaire, car les images et les vignettes sont dorénavant dans le schéma de recette.
+- đ **Source de la recette** : Le rĂ©glage de la source est dĂ©sormais facultatif et la valeur par dĂ©faut est « Inconnu » lorsqu'elle n'est pas dĂ©finie.
+- 3ïžâŁ **Rendement de la recette** : Un rendement non dĂ©fini est dĂ©sormais par dĂ©faut de 1.
+- âšïž **Raccourci de la barre de recherche** : Suppression du raccourci `Crtl + /` pour focaliser la barre de recherche.
+- đ **Mode de recherche** : Le mode de recherche a Ă©tĂ© supprimĂ© au profit d'une recherche avancĂ©e.
+- đ„ïž **URL du serveur** : La variable de configuration `server.url` et la variable d'environnement `RECIPYA_SERVER_URL` sont dĂ©sormais facultatives et la valeur par dĂ©faut est `http://0.0.0.0`
+- âïž **ParamĂštres** : Les paramĂštres ont Ă©tĂ© remaniĂ©s pour un aspect plus propre et plus soignĂ© inspirĂ© de la boĂźte de dialogue des paramĂštres de ChatGPT et d'Open WebUI.
+- đŽ **Moteur OCR** : l'utilisation d'[Azure AI Vision](https://azure.microsoft.com/en-us/products/ai-services/ai-vision) pour numĂ©riser les
+ recettes est déconseillée au profit d'[Azure AI Document Intelligence](https://azure.microsoft.com/en-us/products/ai-services/ai-document-intelligence), car il est plus précis et accepte plusieurs formats de fichiers.
+
+**Important**Â : le bloc *integrations.azureComputerVision* dans le fichier de configuration et les variables dâenvironnement
+`RECIPYA_VISION_ENDPOINT`/`RECIPYA_VISION_KEY` sont obsolÚtes et seront supprimés dans la version 1.3.0.
+
+Pour migrer :
+1. Ajoutez la ressource *Document intelligences* Ă votre [compte Azure](https://portal.azure.com/#allservices)
+2. Accédez à la ressource.
+3. Dans la barre latérale, sélectionnez *Clés et point de terminaison* sous *Gestion des ressources*.
+ ![texte alternatif](https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/media/containers/keys-and-endpoint.png?view=doc-intel-3.1.0)
+4. Copiez *KEY 1* dans le champ **integrations.azureDocumentIntelligence.key** de votre fichier de configuration ou dans la variable d'environnement `RECIPYA_DI_KEY` si vous utilisez Docker.
+5. Copiez *Endpoint* dans le champ **integrations.azureDocumentIntelligence.endpoint** de votre fichier de configuration ou dans la variable d'environnement `RECIPYA_DI_ENDPOINT` si vous utilisez Docker.
+6. Redémarrez Recipya et testez la connexion *Azure AI Document Intelligence* à partir des paramÚtres.
+7.
+- **Limitations**
+ - Pour les formats PDF et TIFF, jusqu'Ă 2000 pages peuvent ĂȘtre traitĂ©es (avec un abonnement gratuit, seules les deux premiĂšres pages sont traitĂ©es).
+ - La taille du fichier pour l'analyse des documents est de 500 Mo pour le niveau payant (S0) et de 4 Mo pour le niveau gratuit (F0).
+ - Si vos PDF sont verrouillés par un mot de passe, vous devez supprimer le verrou avant la soumission.
+
+## Nouveaux sites Web pris en charge
+
+- 24kitchen.nl
+- ah.be
+- aflavorjournal.com
+- aldi.com.au
+- alexandracooks.com
+- alittlebityummy.com
+- allthehealthythings.com
+- aniagotuje.pl
+- americastestkitchen.com
+- angielaeats.com
+- antilliaans-eten.nl
+- avocadoskillet.com
+- bakels.com.au
+- barefeetinthekitchen.com
+- beyondkimchee.com
+- bottomlessgreens.com
+- breadtopia.com
+- britishbakels.co.uk
+- chatelaine.com
+- chejorge.com
+- chetnamakan.co.uk
+- chinesecookingdemystified.substack.com
+- colruyt.be
+- culy.nl
+- cuisineandtravel.com
+- daringgourmet.com
+- dherbs.com
+- damndelicious.net
+- dinnerthendessert.com
+- dinneratthezoo.com
+- dish.co.nz
+- donnahay.com.au
+- dreenaburton.com
+- elephantasticvegan.com
+- entertainingwithbeth.com
+- etenvaneefke.nl
+- evolvingtable.com
+- familyfoodonthetable
+- feastingathome.com
+- felix.kitchen
+- findingtimeforcooking.com
+- foodal.com
+- foodbymaria.com
+- foodiecrush.com
+- food-guide.canada.ca
+- foolproofliving.com
+- gastroplant.com
+- gazoakleychef.com
+- glutenfreetables.com
+- goodeatings.com
+- goodto.com
+- gourmettraveller.com.au
+- gousto.co.uk
+- greenevi.com
+- gurki.no
+- healthylittlefoodies.com
+- hellofresh.se
+- homebrewanswers.com
+- inbloombakery.com
+- instantpot.com
+- jaroflemons.com
+- jocooks.com
+- joythebaker.com
+- jumbo.com
+- keepinitkind.com
+- kitchenaid.com
+- kitchensanctuary.com
+- kookjij.nl
+- kristineskitchenblog.com
+- lahbco.com
+- lekkerensimpel.com
+- lidl.nl
+- lithuanianintheusa.com
+- loveandlemons.com
+- madewithlau.com
+- mccormick.com
+- mexicanmademeatless.com
+- modernhoney.com
+- momontimeout.com
+- mygingergarlickitchen.com
+- mykoreankitchen.com
+- natashaskitchen.com
+- notenoughcinnamon.com
+- nigella.com
+- ohmyveggies.com
+- okokorecepten.nl
+- onesweetappetite.com
+- parsleyandparm.com
+- plentyvegan.com
+- potatorolls.com
+- purewow.com
+- radiofrance.fr
+- recipegirl.com
+- robinasbell.com
+- saltandlavender.com
+- sarahsveganguide.com
+- savorynothings.com
+- smittenkitchen.com
+- spiceboxtravels.com
+- tasteatlas.com
+- thatvegandad.com
+- thecookierookie.com
+- thefoodflamingo.com
+- theguccha.com
+- theheartysoul.com
+- thesaltymarshmallow.com
+- twosleevers.com
+- unsophisticook.com
+- vegan-pratique.fr
diff --git a/docs/website/content/fr/about/changelog/v1.3.0.md b/docs/website/content/fr/about/changelog/v1.3.0.md
new file mode 100644
index 000000000..28010b695
--- /dev/null
+++ b/docs/website/content/fr/about/changelog/v1.3.0.md
@@ -0,0 +1,16 @@
+---
+title: v1.3.0 (TBD)
+weight: 1
+---
+
+## Added
+
+- [EMOJI] **Option Contourner le guide** : Vous pouvez désormais contourner le guide et accéder directement à la page de connexion en mode anonyme en définissant la variable de configuration `server.bypassGuide` ou la variable d'environnement `RECIPYA_SERVER_BYPASS_GUIDE` sur `true`. Vous pouvez également le faire à partir des paramÚtres.
+- [EMOJI] **Partager** : Il est désormais possible de partager avec plusieurs applications installées, par exemple WhatsApp, Gmail et Telegram.
+- [EMOJI] **Traductions de la documentation** : La documentation a été traduite en français.
+
+## Fixed
+
+## Changed
+
+## Newly-supported Websites
diff --git a/docs/website/content/fr/about/coc.md b/docs/website/content/fr/about/coc.md
new file mode 100644
index 000000000..ffd9a726c
--- /dev/null
+++ b/docs/website/content/fr/about/coc.md
@@ -0,0 +1,133 @@
+---
+title: Code de conduite Contributor Covenant
+weight: 3
+---
+
+## Notre engagement
+
+En tant que membres, contributeur·trice·s et dirigeant·e·s, nous nous engageons
+à faire de la participation à notre communauté une expérience sans harcÚlement,
+quel que soit l'ùge, la taille, le handicap visible ou non, l'ethnicité, les
+caractéristiques sexuelles, l'identité et l'expression de genre, le niveau
+d'expérience, l'éducation, le statut socio-économique, la nationalité,
+l'apparence, la race, la caste, la couleur de peau, la religion, ou
+l'identité et l'orientation sexuelle.
+
+Nous nous engageons à agir et interagir de maniÚre à contribuer à une communauté
+ouverte, accueillante, diversifiée, inclusive et saine.
+
+## Nos critĂšres
+
+Exemples de comportements qui contribuent à créer un environnement positif :
+
+* Faire preuve d'empathie et de bienveillance envers les autres
+* Ătre respectueux des opinions, points de vue et expĂ©riences divergents
+* Donner et recevoir avec grĂące les critiques constructives
+* Assumer ses responsabilités et s'excuser auprÚs des personnes affectées par nos erreurs et apprendre de ces expériences
+* Se concentrer sur ce qui est le meilleur non pas uniquement pour nous en tant qu'individu, mais aussi pour l'ensemble de la communauté
+
+Exemples de comportements inacceptables :
+
+* L'utilisation de langage ou d'images sexualisés et d'attentions ou d'avances sexuelles de toute nature
+* Le _trolling_, les commentaires insultants ou désobligeants et les attaques
+ personnelles ou d'ordre politique
+* Le harcÚlement en public ou en privé
+* La publication d'informations privées d'autrui, telle qu'une
+ adresse postale ou une adresse Ă©lectronique, sans leur autorisation explicite
+* Toute autre conduite qui pourrait raisonnablement ĂȘtre considĂ©rĂ©e comme inappropriĂ©e
+ dans un cadre professionnel
+
+## Responsabilités d'application
+
+Les dirigeant·e·s de la communauté sont chargé·e·s de clarifier et de faire respecter nos normes de
+comportements acceptables et prendront des mesures correctives appropriées et équitables en
+réponse à tout comportement qu'ils ou elles jugent inapproprié, menaçant, offensant ou nuisible.
+
+Les dirigeant·e·s de la communauté ont le droit et la responsabilité de supprimer, modifier ou rejeter
+les commentaires, les contributions, le code, les modifications de wikis, les rapports d'incidents ou de bogues et autres contributions qui
+ne sont pas alignés sur ce code de conduite, et communiqueront les raisons des décisions de modération
+le cas échéant.
+
+## Portée d'application
+
+Ce code de conduite s'applique Ă la fois au sein des espaces du projet ainsi que
+dans les espaces publics lorsqu'un individu représente officiellement le projet ou sa
+communauté. Font parties des exemples de représentation d'un projet ou d'une
+communauté l'utilisation d'une adresse électronique officielle, la publication sur
+les réseaux sociaux à l'aide d'un compte officiel ou le fait d'agir en tant que représentant·e désigné·e
+lors d'un événement en ligne ou hors-ligne.
+
+## Application
+
+Les cas de comportements abusifs, harcelants ou tout autre comportement
+inacceptables peuvent ĂȘtre signalĂ©s aux dirigeant·e·s de la communautĂ© responsables de l'application du code de conduite Ă
+[INSĂRER UNE ADRESSE EMAIL].
+Toutes les plaintes seront examinĂ©es et feront l'objet d'une enquĂȘte rapide et Ă©quitable.
+
+Tou·te·s les dirigeant·e·s de la communauté sont tenu·e·s de respecter la vie privée et la sécurité des
+personnes ayant signalé un incident.
+
+## Directives d'application
+
+Les dirigeant·e·s de communauté suivront ces directives d'application sur l'impact communautaire afin de déterminer
+les conséquences de toute action qu'ils jugent contraire au présent code de conduite :
+
+### 1. Correction
+
+**Impact communautaire** : utilisation d'un langage inapproprié ou tout autre comportement jugé
+non professionnel ou indésirable dans la communauté.
+
+**Conséquence** : un avertissement écrit et privé de la part des dirigeant·e·s de la communauté, clarifiant
+la nature du non-respect et expliquant pourquoi
+le comportement Ă©tait inappropriĂ©. Des excuses publiques peuvent ĂȘtre demandĂ©es.
+
+### 2. Avertissement
+
+**Impact communautaire** : un non-respect par un seul incident ou une série d'actions.
+
+**Conséquence** : un avertissement avec des conséquences dû à la poursuite du comportement.
+Aucune interaction avec les personnes concernées, y compris l'interaction non sollicitée avec
+celles et ceux qui sont chargé·e·s de l'application de ce code de conduite, pendant une période déterminée.
+Cela comprend le fait d'Ă©viter les interactions dans les espaces communautaires ainsi que sur les canaux externes
+comme les médias sociaux. Le non-respect de ces conditions peut entraßner
+un bannissement temporaire ou permanent.
+
+### 3. Bannissement temporaire
+
+**Impact communautaire** : un non-respect grave des normes communautaires, notamment
+un comportement inapproprié soutenu.
+
+**Conséquence** : un bannissement temporaire de toutes formes d'interactions ou de
+communications avec la communauté pendant une période déterminée. Aucune interaction publique ou
+privée avec les personnes concernées, y compris les interactions non sollicitées
+avec celles et ceux qui appliquent ce code de conduite, n'est autorisée pendant cette période.
+Le non-respect de ces conditions peut entraĂźner un bannissement permanent.
+
+### 4. Bannissement permanent
+
+**Impact communautaire** : démontrer un schéma récurrent de non-respect des normes de la
+communauté y compris un comportement inapproprié soutenu, le harcÚlement d'un individu
+ainsi que l'agression ou le dénigrement de catégories d'individus.
+
+**Conséquence** : un bannissement permanent de toutes formes d'interactions publiques au sein de
+la communauté.
+
+## Attributions
+
+Ce code de conduite est adapté du
+[Contributor Covenant][homepage], version 2.1,
+disponible Ă
+[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
+
+Les Directives d'application ont été inspirées par le
+[Code of conduct enforcement ladder][Mozilla CoC] de Mozilla.
+
+Pour obtenir des rĂ©ponses aux questions courantes sur ce code de conduite, consultez la FAQ Ă
+[https://www.contributor-covenant.org/faq][FAQ]. Les traductions sont disponibles
+sur [https://www.contributor-covenant.org/translations][translations].
+
+[homepage]: https://www.contributor-covenant.org
+[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
+[Mozilla CoC]: https://github.com/mozilla/diversity
+[FAQ]: https://www.contributor-covenant.org/faq
+[translations]: https://www.contributor-covenant.org/translations
diff --git a/docs/website/content/fr/about/community-guide.md b/docs/website/content/fr/about/community-guide.md
new file mode 100644
index 000000000..480c4b240
--- /dev/null
+++ b/docs/website/content/fr/about/community-guide.md
@@ -0,0 +1,88 @@
+---
+title: Guide communautaire
+weight: 2
+---
+
+Bienvenue dans le guide communautaire du projet !
+
+## Canaux de support
+
+- [Espace Matrix](https://app.element.io/#/room/#recipya:matrix.org)
+- [GitHub Issues](https://github.com/reaper47/recipya/issues)
+- [GitHub Discussions](https://github.com/reaper47/recipya/discussions)
+
+## Façons de contribuer
+
+Recipya est un projet open source collaboratif. Nous accueillons tous ceux qui souhaitent nous aider Ă faire de ce gestionnaire de
+recettes le meilleur possible ! Votre contribution et vos contributions sont essentielles alors que nous travaillons à la création
+une solution Ă©tonnante de gestion de recettes. Ne pas savoir coder n'est pas une condition pour contribuer !
+
+Les sous-sections suivantes détaillent les différentes maniÚres dont vous pouvez contribuer.
+
+### Développement de fonctionnalités
+
+N'hésitez pas à travailler sur des fonctionnalités qui ne sont pas [assignées](https://github.com/reaper47/recipya/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement+no%3Aassignee).
+Je vous encourage également à ouvrir une [demande de fonctionnalité](https://github.com/reaper47/recipya/issues/new?assignees=&labels=enhancement&projects=&template=feature_request.md&title=)
+lorsque vous avez des idées qui peuvent améliorer le logiciel.
+
+Vous n'ĂȘtes pas obligĂ© d'implĂ©menter les fonctionnalitĂ©s vous-mĂȘme si vous ne vous sentez pas Ă l'aise. Cependant, si vous le souhaitez, la procĂ©dure est la suivante.
+
+1. Vérifiez la liste des fonctionnalités actuellement [demandées](https://github.com/reaper47/recipya/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement+no%3Aassignee).
+2. SĂ©lectionnez celle sur laquelle vous souhaitez travailler.
+3. Indiquez en commentaire que vous souhaitez la corriger ou envoyez-moi un message dans l'espace [Matrix](https://app.element.io/#/room/#recipya:matrix.org)
+ afin que je puisse déplacer la tùche vers la colonne « en cours » du [board](https://github.com/users/reaper47/projects/2) et vous l'attribuer.
+4. Forkez le dépÎt si vous ne l'avez pas encore fait.
+5. Implémentez la fonctionnalité et écrivez des tests.
+6. Envoyez les modifications Ă votre fork.
+7. Ouvrez un pull request afin que je puisse fusionner votre travail dans « main ».
+
+{{< callout type="info" >}}
+Sachez que travailler sur une fonctionnalité sans ouvrir d'abord un problÚme sur GitHub peut entraßner un rejet si j'estime que
+cela ne convient pas Ă Recipya.
+{{< /callout >}}
+
+### Bugs
+
+N'hésitez pas à signaler des bugs lorsque vous en découvrez ! Veuillez vous assurer que le bug que vous avez trouvé n'a pas été signalé dans le
+[GitHub issues](https://github.com/reaper47/recipya/issues?q=is%3Aopen+is%3Aissue+label%3Abug) before d'en [ouvrir un](https://github.com/reaper47/recipya/issues/new?assignees=&labels=&projects=&template=bug_report.md&title=)
+pour réduire le nombre de doublons.
+
+Vous n'ĂȘtes pas obligĂ© de corriger le bug vous-mĂȘme si vous ne vous sentez pas Ă l'aise. Cependant, si vous le souhaitez, la procĂ©dure est la suivante.
+
+1. Vérifiez la liste des bugs actuellement [enregistrés](https://github.com/reaper47/recipya/issues?q=is%3Aopen+is%3Aissue+label%3Abug).
+2. SĂ©lectionnez un problĂšme sur lequel vous souhaitez travailler.
+3. Indiquez en commentaire que vous souhaitez le résoudre ou envoyez-moi un message dans l'espace [Matrix](https://app.element.io/#/room/#recipya:matrix.org)
+ afin que je puisse déplacer la tùche vers la colonne « en cours » du [board](https://github.com/users/reaper47/projects/2)
+ et vous l'assigner.
+4. Forkez le dépÎt si vous ne l'avez pas encore fait.
+5. Corrigez le bug, testez-le correctement et transmettez les modifications Ă votre fork.
+6. Ouvrez un pull request afin que je puisse fusionner votre travail dans « main ».
+
+### Documentation
+
+Ce site Web est la documentation officielle de Recipya. Il est construit Ă l'aide de [Hextra](https://imfing.github.io/hextra/), qui
+est un générateur de site statique trÚs simple à utiliser et à comprendre. Vous n'avez pas besoin d'ouvrir un problÚme concernant les mises à jour
+de la documentation. N'hésitez pas à mettre à jour comme vous le jugez approprié et à ouvrir une demande d'extraction. Vous pouvez nous aider avec
+les traductions, l'ajout d'une langue, la correction des fautes de frappe, l'amélioration de la grammaire, l'ajout de sections, la mise à jour des images, le contrÎle de version, etc.
+
+Pour développer la documentation localement, vous devez d'abord [fork](https://github.com/reaper47/recipya/fork) le projet.
+
+Ensuite, ouvrez une invite de commande ou un terminal et accédez à `recipya/docs/website`.
+
+```bash
+cd path/to/recipya/docs/website
+```
+
+Ensuite, diffusez le site Web localement.
+
+```bash
+hugo serve
+```
+
+Le site Web devrait s'ouvrir automatiquement dans votre navigateur Ă l'adresse http://localhost:3000.
+Vous ĂȘtes maintenant libre de modifier le texte et les modifications seront reflĂ©tĂ©es dans le navigateur lors de l'enregistrement du fichier.
+
+### Aider les autres
+
+C'est toujours un plaisir d'aider quelqu'un qui a besoin d'aide. Veuillez consulter les [canaux d'assistance](#canaux-de-support)
+pour savoir oĂč vous pouvez apporter votre aide.
diff --git a/docs/website/content/fr/about/credits.md b/docs/website/content/fr/about/credits.md
new file mode 100644
index 000000000..5ad0e8eb8
--- /dev/null
+++ b/docs/website/content/fr/about/credits.md
@@ -0,0 +1,18 @@
+---
+title: Crédits
+weight: 5
+---
+
+## Core
+
+- [Marc-André Charland](https://github.com/reaper47) - Propriétaire du projet et développeur principal
+
+## Contributors
+
+- [bakker](https://github.com/bakker)
+- [Daim Bin Khalid](https://github.com/daimbk)
+- [Daniel Simpson](https://github.com/daniel-simpson)
+- [ged](https://github.com/gedw99)
+- [Julian](https://github.com/jesp1999)
+- [Marcus BlennegÄrd](https://github.com/mblennegard)
+- [thehijacker](https://github.com/thehijacker)
diff --git a/docs/website/content/fr/about/roadmap.md b/docs/website/content/fr/about/roadmap.md
new file mode 100644
index 000000000..fa936b19c
--- /dev/null
+++ b/docs/website/content/fr/about/roadmap.md
@@ -0,0 +1,184 @@
+---
+title: Feuille de route
+weight: 4
+---
+
+{{< tabs items="v1.3.0,v1.4.0" >}}
+
+{{< tab >}}
+**Types de base d'ingrédients**:
+Mappage des données des ingrédients standards avec les types réels de ces ingrédients.
+[Issue](https://github.com/reaper47/recipya/issues/116).
+
+**Possibilité d'ajouter des images aux instructions**
+Il devrait ĂȘtre possible pour les utilisateurs d'ajouter des images aux instructions.
+[Issue](https://github.com/reaper47/recipya/issues/262)
+
+**i18n**:
+L'utilisateur pourra changer la langue de l'application.
+[Issue](https://github.com/reaper47/recipya/issues/125).
+
+**Améliorer le systÚme de mesure**
+Offrir un contrÎle plus précis du systÚme de mesure.
+[Issue](https://github.com/reaper47/recipya/issues/175).
+
+**DiffĂ©rences de soutien entre les Ătats-Unis, le Royaume-Uni et l'Australie**
+Soutenir les diffĂ©rences entre les Ătats-Unis, le Royaume-Uni et lâAustralie.
+[Issue](https://github.com/reaper47/recipya/issues/181).
+
+**Partager des recettes entre comptes**
+Autoriser le partage d'une recette sur plusieurs comptes locaux.
+[Issue](https://github.com/reaper47/recipya/issues/203)
+
+**Ajoutez des balises et des icÎnes pour les régimes spéciaux**
+Les recettes peuvent ĂȘtre marquĂ©es pour des rĂ©gimes spĂ©ciaux, tels que vĂ©gĂ©talien, vĂ©gĂ©tarien, cĂ©togĂšne, sans gluten, etc.
+[Issue](https://github.com/reaper47/recipya/issues/208)
+
+**Soutenez RTL**
+Certaines langues fonctionnent comme RTL.
+[Issue](https://github.com/reaper47/recipya/issues/237)
+
+**Sections de support dans les ingrédients et les instructions**
+Offrir la possibilité d'étiqueter les sections dans les ingrédients et les instructions.
+[Issue](https://github.com/reaper47/recipya/issues/254)
+
+**Images des instructions**
+Permettre aux utilisateurs d'ajouter des images aux instructions.
+[Issue](https://github.com/reaper47/recipya/issues/262)
+
+**Traduire la documentation**
+Le site de documentation est uniquement en anglais. D'autres langues seront bientĂŽt disponibles.
+[Issue](https://github.com/reaper47/recipya/issues/269)
+
+**Conversion de mesures dynamiques**
+Conversion en direct entre les systÚmes impérial et métrique ou offre l'option des deux systÚmes.
+[Issue](https://github.com/reaper47/recipya/issues/335)
+
+**ParamĂštre permettant de modifier la force de compression de l'image**
+Autoriser différentes forces de compression.
+[Issue](https://github.com/reaper47/recipya/issues/339)
+
+**Ajouter une conversion au poids**
+Ajoutez la possibilité de convertir entre les mesures de volume et de poids.
+[Issue](https://github.com/reaper47/recipya/issues/346)
+
+**Ajoutez des en-tĂȘtes aux ingrĂ©dients et aux instructions**
+Permettre d'ajouter des en-tĂȘtes aux ingrĂ©dients et aux instructions.
+[Issue](https://github.com/reaper47/recipya/issues/347)
+
+**Ajouter une section Notes**
+Ajoutez une section de notes au schéma de recette et à la vue de recette.
+[Issue](https://github.com/reaper47/recipya/issues/348)
+
+**Afficher les valeurs utilisateur lors de la recherche**
+Lorsqu'un utilisateur tape un mot-clé de recherche, par exemple « tag: », une liste de tags lui est proposée.
+[Issue](https://github.com/reaper47/recipya/issues/349)
+
+**Paginer la liste des rapports**
+La liste des rapports sur /reports devient assez longue.
+[Issue](https://github.com/reaper47/recipya/issues/350)
+
+**Partage Ă l'aide de l'API de partage Web**
+Autoriser le partage avec différentes applications installées par l'utilisateur.
+[Issue](https://github.com/reaper47/recipya/issues/358)
+
+**Autoriser d'autres moteurs OCR**
+Proposer d'autres moteurs OCR qu'Azure Document Intelligence.
+[Issue](https://github.com/reaper47/recipya/issues/359)
+
+**Possibilité de contourner le guide**
+Ajoutez une option (ParamÚtres -> Serveur) pour contourner le guide et accéder directement à la page de connexion.
+[Issue](https://github.com/reaper47/recipya/issues/372)
+
+**Extraire plusieurs images lors de l'ajout d'une recette via une URL**
+Extraire toutes les images de l'URL.
+[Issue](https://github.com/reaper47/recipya/issues/374)
+
+**Ajoutez la possibilité de scrapper manuellement les sites web**
+Ătre capable de re-gratter la recette sans avoir Ă supprimer manuellement l'ancienne, puis de gratter la recette comme une toute nouvelle recette.
+[Issue](https://github.com/reaper47/recipya/issues/376)
+
+**Améliorer l'interface utilisateur pour les temps de recette**
+Pour faciliter la lecture, ajoutez un espace entre chaque unité.
+[Issue](https://github.com/reaper47/recipya/issues/380)
+
+**Utiliser la taille de la portion Ă partir des informations nutritionnelles**
+Utilisez la taille de la portion à partir des informations nutritionnelles, si le rendement de la recette n'est pas disponible dans le schéma.
+[Issue](https://github.com/reaper47/recipya/issues/384)
+
+**DĂ©finissez les valeurs nutritionnelles par portion et par 100 g**
+Ajout de la possibilitĂ© de dĂ©finir des valeurs nutritionnelles par portion et par 100 g pour la mĂȘme recette.
+[Issue](https://github.com/reaper47/recipya/issues/385)
+
+**Ajouter des thĂšmes frontend**
+Ajoutez plus de thĂšmes frontaux Ă l'application. Nous avons actuellement des thĂšmes clairs et sombres.
+[Issue](https://github.com/reaper47/recipya/issues/388)
+
+**Ăvaluer une recette**
+Ajouter la possibilité de noter une recette.
+[Issue](https://github.com/reaper47/recipya/issues/390)
+
+**Ajouter une fonction de minuterie**
+Lors de la visualisation d'une recette, il serait utile d'avoir la possibilité d'activer un ou plusieurs minuteurs de cuisine.
+[Issue](https://github.com/reaper47/recipya/issues/392)
+
+**Marquer une recette comme favorite**
+Ajouter un bouton pour marquer une recette comme favorite.
+[Issue](https://github.com/reaper47/recipya/issues/393)
+
+**DĂ©placer les boutons mobiles**
+Mobile : déplacer les boutons du titre vers le menu à trois points.
+[Issue](https://github.com/reaper47/recipya/issues/394)
+
+**Ajouter des fonctionnalités d'accessibilité**
+L'application web pourrait bénéficier de fonctionnalités d'accessibilité.
+[Issue](https://github.com/reaper47/recipya/issues/395)
+
+**Réessayer les importations ayant échoué**
+Implémenter la possibilité de réessayer les importations ayant échoué.
+[Issue](https://github.com/reaper47/recipya/issues/398)
+
+**Gratter les aliments Samsung**
+Grattez depuis https://app.samsungfood.com.
+[Issue](https://github.com/reaper47/recipya/issues/399)
+{{< /tab >}}
+
+{{< tab >}}
+**Installateur de Windows**:
+Sous Windows, l'utilisateur pourra installer le logiciel comme n'importe quel autre logiciel. Peut-ĂȘtre que d'autres plateformes seront prises en charge.
+[Issue](https://github.com/reaper47/recipya/issues/29).
+
+**Substituts d'ingrédients**:
+L'utilisateur pourra visualiser les substituts des ingrédients qu'il souhaite remplacer.
+[Issue](https://github.com/reaper47/recipya/issues/37).
+
+**Listes de courses**:
+L'utilisateur pourra créer des listes de courses à partir de l'application.
+[Issue](https://github.com/reaper47/recipya/issues/103).
+
+**Capacité de planification des repas**
+Mettre en Ćuvre le planificateur de repas.
+[Issue](https://github.com/reaper47/recipya/issues/178)
+
+**L'API REST de Recipya**
+Implémenter l'API REST de Recipya.
+[Issue](https://github.com/reaper47/recipya/issues/234)
+
+**Soutenir davantage de bases de données nutritionnelles**
+La base de donnĂ©es nutritionnelle amĂ©ricaine nâest pas la seule qui existe.
+[Issue](https://github.com/reaper47/recipya/issues/259)
+
+**Ajouter une fonction de chronologie pour les recettes cuisinées**
+Dans ces cas-là , il serait trÚs agréable d'avoir une fonction de chronologie, similaire à celle de Mealie..
+[Issue](https://github.com/reaper47/recipya/issues/391)
+
+**Intégrer ComfyUI pour générer des images par défaut**
+Une image par défaut de sushi sur une assiette est utilisée lorsqu'une recette n'a pas d'image. Il n'y a pas de variété lorsque vous avez une page entiÚre de recettes sans images.
+[Issue](https://github.com/reaper47/recipya/issues/396)
+
+**Intégrer l'API d'Ollama**
+L'IA gĂ©nĂ©rative pourrait ĂȘtre intĂ©grĂ©e Ă Recipya.
+[Issue](https://github.com/reaper47/recipya/issues/397)
+{{< /tab >}}
+
+{{< /tabs >}}
\ No newline at end of file
diff --git a/docs/website/content/fr/blog/2023-08-26-welcome.md b/docs/website/content/fr/blog/2023-08-26-welcome.md
new file mode 100644
index 000000000..78b9c9aa1
--- /dev/null
+++ b/docs/website/content/fr/blog/2023-08-26-welcome.md
@@ -0,0 +1,31 @@
+---
+title: Bienvue
+date: 2023-08-23
+authors:
+ - name: reaper47
+ link: https://github.com/reaper47
+ image: https://github.com/reaper47.png
+tags:
+ - auto-hébergeable
+ - technologie
+ - recettes
+excludeSearch: true
+---
+
+Je suis ravie de vous présenter le site officiel de Recipya ! Ce projet de gestionnaire de recettes est axé sur la simplicité et la facilité d'utilisation.
+Il est destinĂ© Ă ĂȘtre utilisĂ© et apprĂ©ciĂ© par toute la famille.
+
+La raison est qu'aucune de ces solutions ne me satisfait. Soit elles étaient soit trop lentes, difficiles à installer, avaient trop de fonctionnalités dont
+je ne voulais pas ou dont je n'avais pas besoin, soit le site Web n'était pas à mon goût. Il n'existe pas non plus de gestionnaire de recettes écrit
+dans mon langage de programmation préféré, [Go](https://go.dev). J'ai donc décidé de tenter le coup et de créer l'un des meilleurs
+programmes de gestion de recettes du marché. Le chemin à parcourir sera semé d'embûches et de longues étapes, car les autres solutions sont bien plus
+matures que l'état actuel de Recipya. Cependant, je crois que l'effort sera récompensé.
+
+GrĂące Ă Go, vous pouvez ĂȘtre sĂ»r que le logiciel est bien testĂ©, solide, facile Ă lire et Ă entretenir, et simple Ă crĂ©er et Ă installer. Le dĂ©veloppement doit
+ĂȘtre simple. Veuillez lire le [guide du dĂ©veloppeur](/guide/fr/docs/development) si vous souhaitez contribuer avec du code.
+
+L'objectif principal du projet aujourd'hui est de progresser vers l'étape 1.0.0. Les problÚmes restant à résoudre avant de
+célébrer la premiÚre version officielle sur [GitHub](https://github.com/reaper47/recipya/issues?q=is%3Aopen+is%3Aissue+milestone%3Av1.0.0).
+
+Merci de votre lecture ! Si vous croyez en ce projet, n'hésitez pas à nous donner un coup de main. Le [guide communautaire](/guide/fr/about/community-guide)
+explique comment vous pouvez aider. Vous n'ĂȘtes pas obligĂ© de savoir coder đ
\ No newline at end of file
diff --git a/docs/website/content/fr/blog/2024-01-02-launch.md b/docs/website/content/fr/blog/2024-01-02-launch.md
new file mode 100644
index 000000000..a0df92040
--- /dev/null
+++ b/docs/website/content/fr/blog/2024-01-02-launch.md
@@ -0,0 +1,44 @@
+---
+title: Le future est maintenant
+date: 2024-01-02
+authors:
+ - name: reaper47
+ link: https://github.com/reaper47
+ image: https://github.com/reaper47.png
+tags:
+ - auto-hébergeable
+ - technologie
+ - recettes
+ - version
+ - lancement
+excludeSearch: true
+---
+
+Voici, votre cuisine tremblante pour [Recipya] https://github.com/reaper47/recipya) a été officiellement déchaßnée
+dans la nature !
+
+Je suis heureux de pouvoir enfin montrer au monde le logiciel de gestion de recettes sur lequel je travaille dur depuis
+mon premier commit en mai 2021. Vous vous demandez peut-ĂȘtre pourquoi un autre gestionnaire de recettes alors que nous
+avons [Tandoor](https://github.com/TandoorRecipes/recipes), [Mealie](https://github.com/mealie-recipes/mealie), [Paprika](https://www.paprikaapp.com/),
+[Grocy](https://grocy.info/), [Cooklist](https://cooklist.com/), [Grossr](https://grossr.com/), et bien [d'autres encore*](https://github.com/awesome-selfhosted/awesome-selfhosted#recipe-management) ?
+La réponse est simple : aucun d'entre eux ne répond à mes besoins. Soit ils n'étaient pas gratuits et open source, soit ils avaient trop de fonctionnalités inutiles, soit leur interface était lente,
+soit ils Ă©taient trop difficiles Ă installer. MĂȘme si je dois admettre que Tandoor Recipes est le roi aprĂšs l'avoir dĂ©couvert il y a quelques mois.
+
+Et c'est ainsi que j'ai commencé ce projet ambitieux dans [Go](https://go.dev). L'objectif était de créer un gestionnaire de recettes simple, propre
+et puissant dont toute ma famille puisse profiter. Comme avec toute autre solution de ce type, vous pouvez ajouter des recettes Ă votre collection de
+recettes en constante augmentation, créer des livres de cuisine, afficher et imprimer des recettes. Une grande fonctionnalité qui différencie Recipya
+des autres est son module de systĂšmes de mesure. Essentiellement, le logiciel peut convertir toutes les nouvelles recettes dans votre systĂšme de mesure
+prĂ©fĂ©rĂ©, soit l'insatiable impĂ©rial ou le puissant mĂ©trique. Fini le temps oĂč vous convertissiez toutes vos cuillĂšres Ă cafĂ© et tasses en grammes. Une
+autre fonctionnalité puissante est le scraper de site Web. La plupart des autres solutions sont écrites en Python et utilisent donc le
+package [hhursev/recipe-scrapers](https://github.com/hhursev/recipe-scrapers) pour importer des recettes du Web. Comme il n'y en a pas d'Ă©crit en Go,
+j'ai décidé de créer [le mien](https://github.com/reaper47/recipya/tree/main/internal/scraper) de toutes piÚces. Il a été largement testé et supporte
+entiĂšrement [264](https://github.com/reaper47/recipya/blob/main/internal/services/migrations/20230522154229_websites.sql#L11) sites web au moment de la
+rédaction de cet article. Une autre fonctionnalité intéressante de Recipya est le calcul automatique des valeurs nutritionnelles pour 100 g lors de l'ajout
+d'une recette. Consultez le [visiteur des fonctionnalités](/guide/fr/docs/features/) pour découvrir tout ce que le logiciel peut faire.
+
+Essayez-le ! Ne vous inquiétez pas si ce logiciel ne vous convient pas :) Le moyen le plus simple est d'essayer la [démo](https://recipes.musicavis.ca).
+D'autres moyens incluent l'installation de la [version 1.0.0](/guide/fr/docs/installation/build/) localement ou avec [Docker](/guide/fr/docs/installation/docker/).
+Vous pouvez suivre les [instructions](/guide/fr/docs/installation/).
+
+Et cela marque le début du voyage de Recipya. Les contributions sont [encouragées et bienvenues](/guide/fr/about/community-guide/).
+La feuille de route est disponible [ici](/guide/fr/about/roadmap/). Merci !
diff --git a/docs/website/content/fr/blog/2024-03-28-v1.1.md b/docs/website/content/fr/blog/2024-03-28-v1.1.md
new file mode 100644
index 000000000..ccfbce958
--- /dev/null
+++ b/docs/website/content/fr/blog/2024-03-28-v1.1.md
@@ -0,0 +1,41 @@
+---
+title: DĂ©couvrez la montagne montante
+date: 2024-03-28
+authors:
+ - name: reaper47
+ link: https://github.com/reaper47
+ image: https://github.com/reaper47.png
+tags:
+ - version
+ - auto-hébergeable
+ - technologie
+ - recettes
+excludeSearch: true
+---
+
+Levez vos épées haut vers le soleil éternel alors que nous sortons victorieux d'une bataille monumentale !
+Nous rentrons à notre taverne pour célébrer la fin de ces jours sombres. L'alcool et l'élan nous attendent.
+Alors que nous sirotons notre septiĂšme biĂšre, nous remarquons une lumiĂšre Ă©blouissante dans la cuisine, l'ignorant
+d'abord. Elle brille de plus en plus fort, si fort qu'elle nous aveugle. Nous nous levons, épées à la main, marchant
+ivres vers la source, pour découvrir quelque chose d'un autre monde. La lumiÚre aveuglante s'estompe à mesure que
+nous nous en approchons, révélant une boßte rectangulaire, fine et inconnue. Nous nous réjouissons lorsque l'écran
+affiche "Recipya v1.1.0 est maintenant disponible". Jared, as-tu compris ? Recipya v1.1.0 est sorti !
+
+Une attention monumentale et méticuleuse a été accordée à l'interface utilisateur. Vous remarquerez à quel point l'interface
+améliorée est plus agréable et réactive par rapport à la version 1.0.0. Vous pouvez désormais désactiver les enregistrements
+de compte si vous hĂ©bergez vous-mĂȘme une instance via le rĂ©seau. Vous pouvez Ă©galement vous connecter automatiquement si vous
+n'avez pas l'intention d'avoir plus d'un compte utilisateur. Les recettes peuvent dorĂ©navant ĂȘtre triĂ©es et recherchĂ©es de diffĂ©rentes
+maniĂšres. Avez-vous des recettes de fichiers texte ? Si c'est le cas, Recipya peut les importer. Veuillez ouvrir un problĂšme si
+l'importation résultante est désactivée. Le dernier point fort que je souhaite mentionner est qu'un module de mise à jour automatique
+a été implémenté, ce qui signifie que vous serez averti dans l'application dÚs qu'une mise à jour sera disponible. C'est vraiment cool !
+De plus, le module de récupération de recettes a été actualisé pour garantir que tous les sites fonctionnent comme prévu. De plus,
+vous pouvez désormais récupérer 28 sites Web supplémentaires.
+
+Veuillez lire les [notes de publication](/guide/fr/about/changelog/v1.1.0/) pour découvrir tous les autres bonus gratuits apportés par cette mise à jour !
+
+La mise à niveau est simple. Si vous utilisez Docker, récupérez la derniÚre image. Sinon, téléchargez la derniÚre version depuis GitHub et remplacez
+votre exĂ©cutable Recipya actuel par le dernier. Assurez-vous de sauvegarder votre base de donnĂ©es avant d'exĂ©cuter le nouvel exĂ©cutable au cas oĂč quelque
+chose se passerait mal.
+
+Les contributions sont encouragées et bienvenues. Un conteneur de développement a été ajouté pour vous permettre de commencer à écrire du code en un rien de
+temps. La feuille de route a été mise à jour et est disponible [ici](/guide/fr/about/roadmap/). Merci !
diff --git a/docs/website/content/fr/blog/2024-07-16-v1.2.0.md b/docs/website/content/fr/blog/2024-07-16-v1.2.0.md
new file mode 100644
index 000000000..11ad5b6a5
--- /dev/null
+++ b/docs/website/content/fr/blog/2024-07-16-v1.2.0.md
@@ -0,0 +1,53 @@
+---
+title: Le voyage continue
+date: 2024-07-16
+authors:
+ - name: reaper47
+ link: https://github.com/reaper47
+ image: https://github.com/reaper47.png
+tags:
+ - version
+excludeSearch: true
+---
+
+Ouf, quelle aventure ces 4 derniers mois ont Ă©tĂ© ! Aujourd'hui marque le jour oĂč Recipya v1.2.0 est officiellement sorti đ
+Alors, quoi de neuf ? Beaucoup de choses. Passons en revue quatre points marquants.
+
+Tout d'abord, le module de recettes prend désormais en charge les outils, les mots-clés et les vidéos. Oui, c'est vrai !
+Vous pouvez dorénavant joindre des vidéos aux recettes, et les recettes récupérées qui contiennent des vidéos intégrées,
+par exemple une vidéo YouTube, les afficheront dans le carrousel multimédia.
+
+DeuxiÚmement, la [recherche avancée](/guide/fr/docs/features/recipes/search/). Cette fonctionnalité vous permet d'affiner
+votre requĂȘte de recherche pour obtenir les rĂ©sultats souhaitĂ©s. Par exemple, disons que votre base de donnĂ©es contient
+plus de 200 recettes et que vous souhaitez rechercher toutes celles dont le titre contient `poulet`. Dans la barre de
+recherche, vous devez saisir `nom:poulet` et appuyer sur Entrée. Toutes les recettes dont le titre contient `poulet` s'afficheront alors.
+
+TroisiÚmement, l'importation est prise en charge depuis des dizaines d'applications de gestion de recettes. Vous pouvez désormais importer des
+recettes depuis Mealie, Tandoor, Paprika, AccuChef, ChefTap, Crouton, Easy Recipe Deluxe, Kalorio, Recipe Keeper, RecipeSage, Saffron.
+Veuillez consulter la [documentation](/guide/fr/docs/features/integrations/) pour obtenir des instructions spécifiques au logiciel.
+
+Enfin, la page des paramÚtres a été déplacée vers une boßte de dialogue de paramÚtres inspirée de [Open WebUI](https://github.com/open-webui/open-webui).
+Elle a l'air fraßche, moderne et bien organisée.
+
+En bonus, Recipya a désormais une mascotte officielle, Bananacat la mignonne !
+
+![](https://github.com/raw/reaper47/recipya/main/web/static/mstile-150x150.png)
+
+De plus, de nombreux bugs, tels que des problÚmes avec les importations de recettes JSON, la conversion et la mise à l'échelle des ingrédients,
+les courses de données et les recompressions d'images, ont heureusement été corrigés. Et, plus important pour beaucoup, plus de 100 sites Web
+supplémentaires sont désormais pris en charge ! Veuillez lire les [notes de version](/guide/fr/about/changelog/v1.2.0/) pour connaßtre toutes
+les derniÚres nouveautés.
+
+Ce qui m'a étonné, c'est que de nombreuses personnes ont ouvert une ou plusieurs demandes d'extraction pour cette version. C'est vraiment génial !
+Je remercie tous les contributeurs â [bakker](https://github.com/bakker), [ged](https://github.com/gedw99), [Julian](https://github.com/jesp1999) et
+[Marcus BlennegĂ„rd](https://github.com/mblennegard) â d'avoir fouillĂ© dans ma base de code, dont beaucoup n'ont jamais touchĂ© Ă Go, et d'avoir amĂ©liorĂ©
+ce qui devait l'ĂȘtre. Continuez votre excellent travail, les gars, et je suis heureux que vous apprĂ©ciez le logiciel.
+
+Vous vous demandez peut-ĂȘtre ce qui va suivre dans la version 1.3.0 et au-delĂ . Eh bien, attachez vos ceintures et vĂ©rifiez ce qui est prĂ©vu sur
+la [feuille de route](/guide/about/roadmap/) ou dans les [problĂšmes GitHub](https://github.com/reaper47/recipya/issues). Je suis particuliĂšrement
+enthousiaste à l'idée d'améliorer le systÚme de mesure. N'hésitez pas à ouvrir des problÚmes si vous avez des idées sur la façon dont Recipya peut
+ĂȘtre amĂ©liorĂ©, en particulier sur la façon dont l'IA gĂ©nĂ©rative [pourrait ĂȘtre utilisĂ©e](https://github.com/reaper47/recipya/issues/397)
+pourrait ĂȘtre utilisĂ©e. Vous ĂȘtes invitĂ©s Ă travailler sur certains problĂšmes ouverts. Ne vous inquiĂ©tez pas, je ne mords pas !
+
+Bon, il est temps pour moi de continuer Ă coder et pour vous de commencer Ă cuisiner. Ă plus tard, vous tous !
+[screenshot-recipes.webp](..%2F..%2F..%2F..%2F.github%2Fscreenshot-recipes.webp)
\ No newline at end of file
diff --git a/docs/website/content/fr/blog/_index.md b/docs/website/content/fr/blog/_index.md
new file mode 100644
index 000000000..1d4f4a3c7
--- /dev/null
+++ b/docs/website/content/fr/blog/_index.md
@@ -0,0 +1,10 @@
+---
+title: Blog
+---
+
+
+{{< hextra/hero-badge link="index.xml" >}}
+ Flux RSS
+ {{< icon name="rss" attributes="height=14" >}}
+{{< /hextra/hero-badge >}}
+
diff --git a/docs/website/content/fr/blog/authors.yml b/docs/website/content/fr/blog/authors.yml
new file mode 100644
index 000000000..46495a606
--- /dev/null
+++ b/docs/website/content/fr/blog/authors.yml
@@ -0,0 +1,5 @@
+reaper47:
+ name: reaper47
+ title: Lead developer of Recipya
+ url: https://github.com/reaper47
+ image_url: https://github.com/reaper47.png
diff --git a/docs/website/content/fr/docs/_index.md b/docs/website/content/fr/docs/_index.md
new file mode 100644
index 000000000..9d5cdc66c
--- /dev/null
+++ b/docs/website/content/fr/docs/_index.md
@@ -0,0 +1,23 @@
+---
+linkTitle: Documentation
+title: Introduction
+weight: 1
+next: /docs/getting-started
+---
+
+Recipya est une application web propre pour la gestion de vos recettes familiales inoubliables, vous permettant de gérer et
+partagez vos recettes préférées. Il est axé sur la simplicité pour que toute la famille puisse en profiter.
+
+## Features
+
+- [Gérez vos recettes préférées](features/recipes)
+- [Importez des recettes de partout sur le web](features/recipes/add#website)
+- [Numérisez les recettes papier](features/recipes/add#scan)
+- [Organisez vos recettes dans des livres de cuisine](features/cookbooks)
+- [Migrez facilement vos recettes depuis Mealie, Tandoor et Nextcloud Cookbook](features/integrations)
+- [Conversion automatique vers votre systÚme de mesure préféré](features/measurement-systems) (imperial/metric)
+- [Calculer automatiquement les informations nutritionnelles](features/nutrition-facts)
+- [Imprimez n'importe quelle recette de votre collection](features/recipes/print)
+- [EmpĂȘchez votre appareil de se mettre en veille pendant l'affichage d'une recette](features/recipes/wakelock)
+- Suit le thĂšme de votre systĂšme (light/dark)
+- Compilation croisée pour Windows, Linux, and macOS
diff --git a/docs/website/content/fr/docs/deployment/_index.md b/docs/website/content/fr/docs/deployment/_index.md
new file mode 100644
index 000000000..0fff7b48b
--- /dev/null
+++ b/docs/website/content/fr/docs/deployment/_index.md
@@ -0,0 +1,19 @@
+---
+title: DĂ©ploiement
+weight: 3
+next: /docs/deployment/local-network
+prev: /docs/installation/windows-users
+---
+
+Apprenez comment déployer Recipya pour le monde entier. L'application est auto-hébergeable.
+
+{{< cards >}}
+{{< card link="local-network/"
+ title="RĂ©seau local"
+ icon="newspaper"
+ subtitle="Le projet peut ĂȘtre auto-hĂ©bergĂ© sur l'ensemble de votre rĂ©seau local pour y accĂ©der Ă partir d'appareils autres que l'ordinateur sur lequel vous l'avez installĂ©." >}}
+{{< card link="internet"
+ title="HĂ©bergement Web"
+ subtitle="Apprenez comment configurer votre serveur pour déployer le logiciel."
+ icon="newspaper" >}}
+{{< /cards >}}
diff --git a/docs/website/content/fr/docs/deployment/internet.md b/docs/website/content/fr/docs/deployment/internet.md
new file mode 100644
index 000000000..4842106ba
--- /dev/null
+++ b/docs/website/content/fr/docs/deployment/internet.md
@@ -0,0 +1,96 @@
+---
+title: HĂ©bergement web
+weight: 2
+next: /docs/development
+---
+
+## Apache
+
+Le [serveur HTTP Apache](https://httpd.apache.org) est un logiciel de serveur web open source qui set du contenu web sur l'internet.
+Il est largement utilisé en raison de sa fiabilité, de sa flexibilité et de son extensibilité dans la prise en charge de divers
+technologies du Web.
+
+Le bloc suivant montre le minimum requis dans le fichier de configuration d'Apache pour héberger Recipya sur le réseau.
+
+```text
+
+
+ ServerAdmin [email]
+ ServerName [subdomain.domain.com]
+
+ ProxyPass / http://127.0.0.1:/
+ ProxyPassReverse / http://127.0.0.1:/
+
+ RewriteEngine on
+ RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
+ RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
+ RewriteRule .* ws://127.0.0.1:%{REQUEST_URI} [P]
+
+ ErrorLog ${APACHE_LOG_DIR}/[log file]
+ CustomLog ${APACHE_LOG_DIR}/[log file]
+
+ SSLCertificateFile [letsencrypt file]
+ SSLCertificateKeyFile [letsencrypt file]
+ Include [letsencrypt ssl file]
+
+
+```
+
+## Caddy
+
+[Caddy](https://caddyserver.com/) est un serveur web open source léger et extensible qui obtient et renouvelle automatiquement les certificats TLS pour tous vos sites.
+
+Le bloc suivant montre le minimum requis dans le fichier de configuration de Caddy, nommé Caddyfile, pour héberger Recipya sur le réseau.
+Si vous utilisez Linux, assurez-vous que Recipya s'exécute en tant que [service](/guide/docs/deployment/local-network/#linux).
+
+```text
+$ sudo cat /etc/caddy/Caddyfile
+
+domain.com {
+ encode zstd gzip
+ reverse_proxy localhost:PORT
+
+ header /static/* Cache-Control "public, max-age=2678400, must-revalidate"
+
+ log {
+ output file /var/log/caddy/domain.com.access.log
+ }
+}
+```
+
+## Nginx
+
+[Nginx](https://en.wikipedia.org/wiki/Nginx) est un serveur web puissant qui peut Ă©galement ĂȘtre utilisĂ© comme proxy inverse, Ă©quilibreur de charge, proxy de messagerie et cache HTTP.
+Il est largement utilisé pour ses hautes performances, son efficacité dans la gestion des connexions simultanées et sa faible consommation de ressources.
+
+Le bloc suivant montre le minimum requis dans le fichier de configuration de Nginx pour héberger Recipya sur le réseau.
+
+```text
+server {
+ listen 80;
+ server_name domain.com;
+
+ gzip on;
+ gzip_types text/plain text/css application/json application/javascript text/xml application/xml text/javascript;
+
+ location / {
+ proxy_pass http://127.0.0.1:
/;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ }
+
+ location ~* /static/ {
+ add_header Cache-Control "public, max-age=2678400, must-revalidate";
+ }
+
+ location /ws {
+ proxy_pass http://127.0.0.1:8125;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "Upgrade";
+ proxy_set_header Host $host;
+ }
+}
+```
\ No newline at end of file
diff --git a/docs/website/content/fr/docs/deployment/local-network.md b/docs/website/content/fr/docs/deployment/local-network.md
new file mode 100644
index 000000000..c1323174f
--- /dev/null
+++ b/docs/website/content/fr/docs/deployment/local-network.md
@@ -0,0 +1,50 @@
+---
+title: RĂ©seau local
+weight: 1
+prev: /docs/installation/windows-users
+---
+
+Le projet est auto-hébergeable sur l'ensemble de votre réseau local pour y accéder à partir d'appareils autres que
+l'ordinateur sur lequel vous l'avez installé.
+
+## Docker
+
+AprÚs avoir [installé l'image Docker](/guide/docs/installation/docker), vous pouvez accéder à l'ensemble du réseau du site à l'adresse http://:[](/guide/docs/installation/build/config-file/].
+
+## Release Build
+
+### Linux
+
+Créez un service pour exécuter l'application automatiquement au démarrage.
+
+```bash
+sudo nano /etc/systemd/system/recipya.service
+```
+
+Copiez le contenu suivant dans le fichier nouvellement créé.
+
+```bash
+[Unit]
+Description=Recipya Service
+Wants=network.target
+
+[Service]
+ExecStart=/path/to/binary/recipya serve
+Environment=HOME=/root
+
+[Install]
+WantedBy=multi-user.target
+```
+
+Démarrez le service au démarrage.
+
+```bash
+sudo systemctl start recipya.service
+sudo systemctl enable recipya.service
+```
+
+Vous pouvez désormais accéder l'application sur votre réseau local à l'adresse http://:[](/docs/installation/build/config-file)].
+
+### Windows
+
+La faisabilité sur Windows reste à explorer.
diff --git a/docs/website/content/fr/docs/development/_index.md b/docs/website/content/fr/docs/development/_index.md
new file mode 100644
index 000000000..8963cebb3
--- /dev/null
+++ b/docs/website/content/fr/docs/development/_index.md
@@ -0,0 +1,31 @@
+---
+title: Development
+weight: 4
+next: /docs/development/intro
+prev: /docs/deployment/internet
+---
+
+Learn how developing Recipya works.
+
+{{< cards >}}
+ {{< card link="/guide/docs/development/intro/"
+ title="Introduction"
+ icon="newspaper"
+ subtitle="This chapter serves as the developer's guide to building the application." >}}
+ {{< card link="/guide/docs/development/dependencies/"
+ title="Dependencies"
+ subtitle="Install the software required to build the application."
+ icon="newspaper" >}}
+ {{< card link="/guide/docs/development/build/"
+ title="Build"
+ subtitle="Learn how to build the application."
+ icon="newspaper" >}}
+ {{< card link="/guide/docs/development/test/"
+ title="Test"
+ subtitle="Learn how to write tests for the application."
+ icon="newspaper" >}}
+ {{< card link="/guide/docs/development/workflow/"
+ title="Workflow"
+ subtitle="2 items"
+ icon="book-open" >}}
+{{< /cards >}}
diff --git a/docs/website/content/fr/docs/development/build.md b/docs/website/content/fr/docs/development/build.md
new file mode 100644
index 000000000..76891f21e
--- /dev/null
+++ b/docs/website/content/fr/docs/development/build.md
@@ -0,0 +1,25 @@
+---
+title: Build
+weight: 3
+---
+
+Go to the project directory.
+
+```bash
+cd recipya
+```
+
+Build the project.
+
+```bash
+task build
+```
+
+Start the server. You will go through the interactive setup process if
+your [configuration file](/docs/installation/build/config-file) is nonexistent.
+
+```bash
+./bin/recipya serve
+```
+
+Access the application through a web browser at the address specified in the terminal.
diff --git a/docs/website/content/fr/docs/development/devcontainer.md b/docs/website/content/fr/docs/development/devcontainer.md
new file mode 100644
index 000000000..8d2ffbd11
--- /dev/null
+++ b/docs/website/content/fr/docs/development/devcontainer.md
@@ -0,0 +1,32 @@
+---
+title: Dev Container
+weight: 2
+---
+
+A dev container is a lightweight, portable development environment defined by a `devcontainer.json` file inside the .devcontainer folder, typically used with containerization technologies like Docker.
+It allows developers to quickly set up their environment, with containerization technology being the only prerequisite, as the container defines the necessary tools, dependencies, and settings for
+a consistent development environment across any platform.
+
+
+## Visual Studio Code
+
+### Setup
+
+First follow the [vsccode](https://code.visualstudio.com/docs/devcontainers/containers#_installation) installation instructions.
+
+Then, clone the Recipya repository.
+```bash
+git clone --recurse-submodules https://github.com/reaper47/recipya.git
+```
+
+Finally, open the folder in a container by following these [steps](https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-an-existing-folder-in-a-container).
+
+### Debugging
+
+To debug from the container:
+1. Build the debug recipya: `task build-debug`
+2. Start recipya: `./bin/recipya_debug serve`
+3. Press F5 to start the VS Code debugger
+4. Select the `recipya_debug` process from the list
+
+
diff --git a/docs/website/content/fr/docs/development/intro.md b/docs/website/content/fr/docs/development/intro.md
new file mode 100644
index 000000000..474f73cc3
--- /dev/null
+++ b/docs/website/content/fr/docs/development/intro.md
@@ -0,0 +1,41 @@
+---
+title: Introduction
+weight: 1
+---
+
+This chapter serves as the developer's guide to building Recipya.
+
+## Fetch the Code
+
+Run the following command to get the code.
+
+```bash
+git clone --recurse-submodules https://github.com/reaper47/recipya.git
+```
+
+## Dependencies
+
+The following software is required to build the project.
+
+| Software | Version |
+|-------------------------------------------|----------|
+| [Go](https://go.dev/dl) | 1.22+ |
+| [Node.js](https://nodejs.org/en/download) | 20.10.0+ |
+| [Task](https://taskfile.dev/) | latest |
+| [Templ](https://templ.guide/) | latest |
+| [Hugo](https://gohugo.io/installation/) | latest |
+
+## Recommended CLI Programs
+
+The following lists CLI programs you should install to help you develop the project.
+
+- The [Goose](https://github.com/pressly/goose?tab=readme-ov-file#install) database migration tool
+
+## Technology Stack
+
+| Frontend | Backend |
+|------------------------------------------|---------------------------------------------|
+| [daisyUI](https://daisyui.com/) | [Go](https://go.dev/) |
+| [htmx](https://htmx.org/) | [SQLite](https://www.sqlite.org/index.html) |
+| [_hyperscript](https://hyperscript.org/) | |
+| [templ](https://templ.guide/) | |
\ No newline at end of file
diff --git a/docs/website/content/fr/docs/development/test.md b/docs/website/content/fr/docs/development/test.md
new file mode 100644
index 000000000..7a6575b2e
--- /dev/null
+++ b/docs/website/content/fr/docs/development/test.md
@@ -0,0 +1,26 @@
+---
+title: Test
+weight: 4
+next: /docs/development/workflow
+---
+
+Recipya has extensive test suites to ensure the software works as expected.
+The tests are run during the [Go workflow](https://github.com/reaper47/recipya/blob/main/.github/workflows/go.yml)
+when you open a pull request against the main branch.
+
+Execute the following when you wish to run all the tests locally.
+
+```bash
+task test-no-build
+```
+
+## Writing Tests
+
+It is of vital important to write tests when submitting pull requests. This
+[article](https://www.codemag.com/Article/1901071/10-Reasons-Why-Unit-Testing-Matters) explains why
+unit testing matters.
+
+You will see many files under the `internal` folder that finish with `*_test.go`. That is where tests are written.
+Please refer to the [development workflow](/guide/docs/development/workflow) section for more information and examples.
+
+Please feel free to add as many tests as you deem fit to any of those files.
diff --git a/docs/website/content/fr/docs/development/workflow/_index.md b/docs/website/content/fr/docs/development/workflow/_index.md
new file mode 100644
index 000000000..063d441fd
--- /dev/null
+++ b/docs/website/content/fr/docs/development/workflow/_index.md
@@ -0,0 +1,19 @@
+---
+title: Workflow
+weight: 4
+next: /docs/development/workflow/add-endpoint
+prev: /docs/development/test
+---
+
+Learn the development workflow for features and enhancements.
+
+{{< cards >}}
+ {{< card link="/guide/docs/development/workflow/add-endpoint/"
+ title="Add an Endpoint"
+ icon="newspaper"
+ subtitle="It is essential to grasp how the server works before bringing any modifications." >}}
+ {{< card link="/guide/docs/development/workflow/import-website/"
+ title="Support a Website"
+ subtitle="You first need to understand how the scraper works to support a website."
+ icon="newspaper" >}}
+{{< /cards >}}
diff --git a/docs/website/content/fr/docs/development/workflow/add-endpoint.md b/docs/website/content/fr/docs/development/workflow/add-endpoint.md
new file mode 100644
index 000000000..54deb8e67
--- /dev/null
+++ b/docs/website/content/fr/docs/development/workflow/add-endpoint.md
@@ -0,0 +1,217 @@
+---
+title: Add an Endpoint
+---
+
+It is essential to grasp how the server works before bringing any modifications.
+Then, we will guide you through the process of incorporating an HTTP endpoint into the server.
+
+## The Server
+
+Recipya's server code is located within the `internal/server` package. The main file
+is [server.go](https://github.com/reaper47/recipya/blob/main/internal/server/server.go). It exports a single with
+a receiver function and a corresponding struct.
+
+- `Server`: This struct holds the HTTP router, the repository, the email service and the files service. You can
+ find the declaration of each service in the [internal/services/service.go](https://github.com/reaper47/recipya/blob/main/internal/services/service.go)
+ file.
+- `Server.Run`: Starts the web server.
+- `NewServer`: Creates a server that is ready for use. It requires the services to be passed as arguments.
+
+The HTTP router is initialized during the server's creation. We use [chi](https://github.com/go-chi/chi) due to
+its simplicity in organizing endpoints. Please read the `mountHandlers` function to observe the router in action.
+
+## Example
+
+Let's walk through an example aimed at adding an endpoint that searches for recipes.
+
+### Router
+
+The first step involves adding the endpoint to the router. A suitable endpoint is `GET /recipes/search?q=query`. Open the
+[internal/server/server.go](https://github.com/reaper47/recipya/blob/main/internal/server/server.go) file and include the
+endpoint within the `/recipes` route block. The handler should be named `recipesSearchHandler`, following the
+ `{resource}{LastWordEndpoint}{Handler}` naming convention.
+
+```go {filename="internal/server/server.go"}
+r.Route("/recipes", func(r chi.Router) {
+ r.Use(s.mustBeLoggedInMiddleware)
+
+ r.Get("/search", recipesSearchHandler)
+ ...
+})
+```
+
+With the route established, it is time to declare the handler. Since we are dealing with the `/recipes` resource,
+add the handler to the [handlers_recipes.go](https://github.com/reaper47/recipya/blob/main/internal/server/handlers_recipes.go)
+file.
+
+```go {filename="internal/server/handlers_recipes.go"}
+func (s *Server) recipesSearchHandler(w http.ResponseWriter, r *http.Request) {
+ panic("TODO: To implement")
+}
+```
+
+We are now ready to create tests for our route.
+
+### Test
+
+Tests related to the server are written in the `handlers_{resource}_test.go` files. The tests for our handlers are
+stored in the [handlers_recipes_test.go](https://github.com/reaper47/recipya/blob/main/internal/server/handlers_recipes_test.go)
+file. The naming convention for test functions is `TestHandlers_{Resource}_{Endpoint}`. Let's write the foundation
+function of our tests.
+
+```go {filename="internal/server/handlers_recipes_test.go"}
+func TestHandlers_Recipes_AddManual(t *testing.T) {
+ srv := newServerTest()
+
+ uri := "/recipes/search"
+}
+```
+
+The subsequent step involves writing the different tests that add value to the users.
+
+```go {filename="internal/server/handlers_recipes_test.go"}
+func TestHandlers_Recipes_AddManual(t *testing.T) {
+ srv := newServerTest()
+
+ uri := "/recipes/search"
+
+ t.Run("must be logged in", func(t *testing.T) {
+ assertMustBeLoggedIn(t, srv, http.MethodGet, uri)
+ })
+
+ t.Run("search fails", func(t *testing.T) {
+ t.Fail()
+ })
+
+ t.Run("user has no recipes", func(t *testing.T) {
+ t.Fail()
+ })
+
+ t.Run("user searches empty string", func(t *testing.T) {
+ t.Fail()
+ })
+
+ testcases := []struct {
+ name string
+ in string
+ want models.Recipes
+ }{
+ {name: "user searches empty string", in: "", want: ...},
+ {name: "user searches for lunch", in: "lunch", want: ...},
+ ...
+ }
+ for _, tc := range testcases {
+ t.Run(tc.name, func(t *testing.T) {
+ rr := sendHxRequestAsLoggedIn(srv, http.MethodGet, uri+"?q="+tc.in, noHeader, nil)
+
+ ...
+ })
+ }
+}
+```
+
+The body of the tests is omitted for brevity. Run the tests to ensure that they fail.
+
+### Handler
+
+The next step entails crafting the handler's code. Return to the `handles_recipes.go` file, and implement
+the `recipesSearchHandler` function that will make the tests go green. For instance, the implementation could resemble
+the following.
+
+```go {filename="internal/server/handlers_recipes.go"}
+func (s *Server) recipesSearchHandler(w http.ResponseWriter, r *http.Request) {
+ userID := getUserID(r)
+ query := chi.URLParam(r, "q")
+
+ recipes, err := s.Repository.SearchRecipes(query, userID)
+ if err != nil {
+ w.Header().Set("HX-Trigger", makeToast("Failed to search recipes.", errorToast))
+ w.WriteHeader(http.StatusInternalServerError)
+ return
+ }
+
+ templates.RenderComponent(w, "recipes", "search-recipes", templates.Data{Recipes: recipes})
+}
+```
+
+This code gets the logged-in user's ID and the search query, then passes them to the `SearchRecipes` function of the
+repository. If this function encounters an error, an HTMX toast is sent to the user, accompanied by an HTTP 500
+status code. Otherwise, the HTML containing the recipes is sent.
+
+The `templates.RenderComponent` function displays a template from the [web/templates/components](https://github.com/reaper47/recipya/tree/main/web/templates/components)
+directory. Its second parameter is the name of one of the files within that directory, excluding the extension.
+The third parameter is the name of the template within a file in that folder. Lastly, the fourth parameter is
+a [struct](https://github.com/reaper47/recipya/blob/main/internal/templates/data.go) containing data for the
+GoHTML template.
+
+### Repository
+
+The final piece of the puzzle involves writing the `s.Repository.SearchRecipes` function. The repository is an interface
+that declares functions for interacting with a database. Currently, Recipya supports [sqlite](https://github.com/reaper47/recipya/blob/main/internal/services/sqlite_service.go)
+only. To support other databases, we need define a struct to satisfy the [RepositoryService](https://github.com/reaper47/recipya/blob/main/internal/services/service.go)
+interface.
+
+Let's declare the function within the `RepositoryService` interface. The functions are declared alphabetically.
+
+```go {filename="internal/services/service.go"}
+type RepositoryService interface {
+ // AddAuthToken adds an authentication token to the database.
+ AddAuthToken(selector, validator string, userID int64) error
+
+ // AddRecipe adds a recipe to the user's collection.
+ AddRecipe(r *models.Recipe, userID int64) (int64, error)
+
+ ...
+
+ // SearchRecipes gets the user's recipes that include the search query.
+ SearchRecipes(query string, userID int64) (models.Recipes, error)
+
+ ...
+
+ // VerifyLogin checks whether the user provided correct login credentials.
+ // If yes, their user ID will be returned. Otherwise, -1 is returned.
+ VerifyLogin(email, password string) int64
+
+ // Websites gets the list of supported websites from which to extract the recipe.
+ Websites() models.Websites
+}
+```
+
+Subsequently, let's implement the function within the `sqlite_service.go` file.
+
+```go {filename="internal/services/sqlite_service.go"}
+func (s *SQLiteService) SearchRecipes(query string, userID int64) (models.Recipes, error) {
+ // s.Mutex.Lock() // Lock when you are inserting, updating or deleting from the database.
+ // defer s.Mutex.Unlock()
+
+ ctx, cancel := context.WithTimeout(context.Background(), shortCtxTimeout)
+ defer cancel()
+
+ rows, err := s.DB.QueryContext(ctx, statements.SelectSearchRecipes, query, userID)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+
+ var recipes models.Recipes
+ for rows.Next() {
+ // code to scan a recipe
+ ...
+ recipes = append(recipes, c)
+ }
+ return recipes, nil
+}
+```
+
+Remember, invoking `s.Mutex.Lock()` and `defer s.Mutex.Unlock()` is necessary when inserting, updating, or deleting
+database entries. However, in this scenario, we're merely fetching data, rendering the mutex unnecessary.
+
+SQL statements are organized by action within the [internal/services/statements](https://github.com/reaper47/recipya/tree/main/internal/services/statements)
+directory. The naming convention is `{Action}{Resource}`. In our case, a `SELECT` statement for fetching recipes is termed
+`SelectSearchRecipes` and would reside in the
+[select.go](https://github.com/reaper47/recipya/tree/main/internal/services/statements) file.
+
+Every statement is a `const` whose value is the SQLite statement itself. If Recipya ever supports other databases, we
+shall find a way to organize the statements per database type.
+
+You can call it a day and open a PR once you wrote your SQL and the tests pass.
\ No newline at end of file
diff --git a/docs/website/content/fr/docs/development/workflow/import-website.md b/docs/website/content/fr/docs/development/workflow/import-website.md
new file mode 100644
index 000000000..898a235db
--- /dev/null
+++ b/docs/website/content/fr/docs/development/workflow/import-website.md
@@ -0,0 +1,85 @@
+---
+title: Support a Website
+---
+
+You first need to understand how the scraper works to support a website.
+Then, we will guide you through adding a website to the supported list with an example.
+
+## The Scraper
+
+Recipya developed its own recipe scraper, which resides in the [internal/scraper](https://github.com/reaper47/recipya/tree/main/internal/scraper)
+package. This scraper uses [goquery](https://github.com/PuerkitoBio/goquery) to extract information from web pages.
+Its main file is [scraper.go](https://github.com/reaper47/recipya/blob/main/internal/scraper/scraper.go). You will find a single exposed function named `Scrape`, which
+takes a URL and a [files service](https://github.com/reaper47/recipya/blob/main/internal/services/service.go#L102) as parameters. The files services is an interface with functions to
+manipulate files in the OS. The use of an interface simplifies the process of mocking file operations during testing.
+
+You can read how the function works, but essentially it involves fetching the web page using Go's HTTP client,
+creating a `goquery` document from the response, extracting into a
+[models.RecipeSchema](https://github.com/reaper47/recipya/blob/main/internal/models/schema-recipe.go) struct, uploading
+the image to the server, and finally returning the recipe schema model. The image is compressed and resized.
+Whether compression is too high remains is subject to evaluation.
+
+## Workflow
+
+Let's assume a user requests https://www.example.com/recipes/declicious-bbq-steak to be supported.
+This section will help you understand how to add this website to the list of supported sites.
+
+### Database
+
+Initially, a SQLite migration file needs to be created using Goose to insert the desired website into the
+websites table. To do so, open a terminal and navigate to the root of the project. Then, generate
+the migration file.
+
+```bash
+task new-migration name=support_website
+```
+
+The `support_website` is the name of the migration. It can be anything else. The command will create a new file of the
+form `timestamp_name_of_migration.sql` under `internal/services/migrations`. It will be embedded into the executable on build
+and will be executed when the user starts the server.
+
+The final step involves inserting the website into the database:
+
+```sql {filename="internal/services/migrations/timestamp_support_website.sql"}
+-- +goose Up
+INSERT INTO websites (host, url)
+VALUES ('example.com', 'https://www.example.com/recipes/declicious-bbq-steak');
+
+-- +goose Down
+DELETE FROM websites
+WHERE host IN ('example.com');
+```
+
+The host field could eventually be removed because we can determine it from Go using
+the [net/url](https://pkg.go.dev/net/url#URL.Hostname) package.
+
+### Test
+
+Setting up a test involves accessing the website and creating a test case within `internal/scraper/scraper_{letter}_test.go`.
+In our case, open [internal/scraper/scraper_E_test.go](https://github.com/reaper47/recipya/blob/main/internal/scraper/scraper_E_test.go)
+because `example` begins with `E`. The tests within the `testcases` slice are listed alphabetically so insert your `name: "example.com"`
+test where appropriate. You can use an existing struct as a template.
+
+Next, alternate between the recipe web page and the test to modify the `models.RecipeSchema` of
+the `want` field. You can proceed to writing code once the setup is done.
+
+Executing the test by clicking the green play button to the left it should confirm its failure.
+If you notice the test returns a `models.RecipeSchema` that looks valid, then replace the empty schema
+of the test with the one from the output and make the test go green. Otherwise, continue to the next section.
+
+### The Go Code
+
+The initial step is to include the `example.com` case within the list of supported websites. To achieve this, open
+[internal/scraper/websites.go](https://github.com/reaper47/recipya/blob/main/internal/scraper/websites.go). This file contains the `scrapeWebsite` function, which executes the relevant
+scrape function for the parsed HTML web page. Your task involves adding the host within the switch-case block.
+Therefore, add `case "example"` to the switch-case block
+of [case 'e'](https://github.com/reaper47/recipya/blob/main/internal/scraper/websites.go#L64).
+
+Following this, the body of the case must be added by calling a custom HTML parser function.
+Its naming convention is `scrape{Host}`. In your case, it would be `return scrapeExample(doc)`.
+Then, create a new file named `example.go` under `internal/scraper` and add the
+`func scrapeKuchniadomova(root *goquery.Document) (models.RecipeSchema, error)` function. Please check any
+custom scraper file to understand how to write your own.
+
+Congratulations! That is all you need to know to support a website. Feel free to open a PR once your scrape function is
+written and the tests pass.
diff --git a/docs/website/content/fr/docs/features/_index.md b/docs/website/content/fr/docs/features/_index.md
new file mode 100644
index 000000000..97c0f6a56
--- /dev/null
+++ b/docs/website/content/fr/docs/features/_index.md
@@ -0,0 +1,51 @@
+---
+title: Visite des fonctionnalités
+weight: 2
+prev: /docs
+next: /docs/features/recipes
+---
+
+Aperçu des fonctionnalités de Recipya.
+
+{{< cards >}}
+ {{< card link="admin/"
+ title="Administration"
+ subtitle="En savoir plus sur la page d'administration."
+ icon="newspaper" >}}
+ {{< card link="backups/"
+ title="Sauvegardes"
+ subtitle="Découvrez comment fonctionnent les sauvegardes et comment restaurer vos données."
+ icon="newspaper" >}}
+ {{< card link="cookbooks/"
+ title="Livres de cuisine"
+ subtitle="5 items"
+ icon="book-open" >}}
+ {{< card link="export-data/"
+ title="Exporter des données"
+ subtitle="Apprenez à télécharger vos données."
+ icon="newspaper" >}}
+ {{< card link="integrations/"
+ title="Intégrations"
+ subtitle="L'application propose des intégrations avec d'autres applications de gestion de recettes."
+ icon="newspaper" >}}
+ {{< card link="measurement-systems/"
+ title="SystĂšmes de mesure"
+ subtitle="Les utilisateurs adhĂšrent gĂ©nĂ©ralement Ă un systĂšme de mesure prĂ©fĂ©rĂ© et se sentent rarement Ă lâaise avec plusieurs systĂšmes."
+ icon="newspaper" >}}
+ {{< card link="nutrition-facts/"
+ title="Information nutritionnelle"
+ subtitle="De nombreuses recettes manquent d'informations nutritionnelles que les utilisateurs peuvent ĂȘtre rĂ©ticents Ă calculer eux-mĂȘmes. Recipya rĂ©sout ce problĂšme."
+ icon="newspaper" >}}
+ {{< card link="recipes/"
+ title="Recettes"
+ icon="book-open"
+ subtitle="8 items" >}}
+ {{< card link="reports/"
+ title="Rapports"
+ subtitle="DĂ©couvrez en quoi consiste le module de rapports."
+ icon="newspaper" >}}
+ {{< card link="updater/"
+ title="Mise Ă jour"
+ subtitle="DĂ©couvrez en quoi consiste le module de mise Ă jour automatique."
+ icon="newspaper" >}}
+{{< /cards >}}
diff --git a/docs/website/content/fr/docs/features/admin.md b/docs/website/content/fr/docs/features/admin.md
new file mode 100644
index 000000000..4e4a0c532
--- /dev/null
+++ b/docs/website/content/fr/docs/features/admin.md
@@ -0,0 +1,15 @@
+---
+title: Administration
+weight: 1
+---
+
+Un administrateur est défini comme l'utilisateur initial, généralement celui qui a configuré Recipya.
+Seul l'administrateur peut accéder à la page d'administration.
+
+Pour y accéder, sélectionnez l'option « Admin » dans le menu de l'avatar.
+
+![](images/admin-access.webp)
+
+Vous pouvez ajouter et supprimer des utilisateurs.
+
+![](images/admin-overview.webp)
diff --git a/docs/website/content/fr/docs/features/backups.md b/docs/website/content/fr/docs/features/backups.md
new file mode 100644
index 000000000..a49d9e177
--- /dev/null
+++ b/docs/website/content/fr/docs/features/backups.md
@@ -0,0 +1,93 @@
+---
+title: Sauvegardes
+weight: 2
+---
+
+Il existe deux types de sauvegardes de données, chacune effectuée une fois tous les trois jours.
+Un maximum de dix sauvegardes sont stockées pour chaque type, la sauvegarde la plus ancienne
+ayant donc un mois.
+
+### Global
+
+Une sauvegarde globale est une sauvegarde qui enregistre l'état actuel des données de l'application.
+Elle est stockée sous `path/to/recipya/data/backup/global/`.
+
+Sa structure est la suivante :
+
+{{< filetree/container >}}
+ {{< filetree/folder name="recipya.{year-month-day}.zip" >}}
+ {{< filetree/folder name="Recipya" state="open" >}}
+ {{< filetree/folder name="Database" state="open" >}}
+ {{< filetree/file name="recipya.db" >}}
+ {{< /filetree/folder >}}
+ {{< filetree/folder name="Images" state="open" >}}
+ {{< filetree/folder name="Thumbnails" state="closed" >}}
+ {{< filetree/file name="{uuid_1}.webp" >}}
+ {{< filetree/file name="{uuid_2}.webp" >}}
+ {{< filetree/file name="{uuid_...}.webp" >}}
+ {{< filetree/file name="{uuid_N}.webp" >}}
+ {{< /filetree/folder >}}
+ {{< filetree/file name="{uuid_1}.webp" >}}
+ {{< filetree/file name="{uuid_2}.webp" >}}
+ {{< filetree/file name="{uuid_...}.webp" >}}
+ {{< filetree/file name="{uuid_N}.webp" >}}
+ {{< /filetree/folder >}}
+ {{< filetree/folder name="Logs" state="open" >}}
+ {{< filetree/file name="recipya.log" >}}
+ {{< /filetree/folder >}}
+ {{< filetree/folder name="Videos" state="open" >}}
+ {{< filetree/file name="{uuid_1}.webm" >}}
+ {{< filetree/file name="{uuid_2}.webm" >}}
+ {{< filetree/file name="{uuid_...}.webm" >}}
+ {{< filetree/file name="{uuid_N}.webm" >}}
+ {{< /filetree/folder >}}
+ {{< filetree/file name="config.json" >}}
+ {{< /filetree/folder >}}
+ {{< /filetree/folder >}}
+{{< /filetree/container >}}
+
+### Utilisateur
+
+Une sauvegarde utilisateur est une sauvegarde qui enregistre l'état actuel des données d'un utilisateur. Les éléments suivants sont enregistrés :
+- Recettes
+- Livres de cuisine
+- Recettes partagées
+- Livres de cuisine partagés
+
+Les sauvegardes utilisateur sont stockées sous `path/to/recipya/data/Backup/users/{userID}`.
+
+Its structure is as follows:
+{{< filetree/container >}}
+ {{< filetree/folder name="recipya.{year-month-day}.zip" >}}
+ {{< filetree/file name="recipes.zip" >}}
+ {{< filetree/file name="backup-deletes.sql" >}}
+ {{< filetree/file name="backup-inserts.sql" >}}
+ {{< /filetree/folder >}}
+{{< /filetree/container >}}
+
+## Restaurer
+
+Il est possible de restaurer une sauvegarde précédente. Les instructions pour procéder dépendent de son type.
+
+### Sauvegarde globale
+
+La restauration d'une sauvegarde globale est effectuée uniquement par la personne ayant accÚs au serveur.
+
+1. Fermez l'application
+2. Accédez à `path/to/recipya/data/Backup/global/`
+3. DĂ©compressez la sauvegarde que vous souhaitez restaurer
+4. Remplacez le contenu sous `path/to/recipya/data/*` par celui de la sauvegarde décompressée
+5. Le cas échéant, supprimez `path/to/recipya/data/Database/recipya.db-shm` et `path/to/recipya/data/Database/recipya.db-wal`
+6. DĂ©marrez l'application
+
+### Utilisateur
+
+La restauration d'une sauvegarde utilisateur s'effectue via l'interface utilisateur de l'application Web.
+
+1. Accédez à la boßte de dialogue des paramÚtres
+2. Cliquez sur l'onglet « Données »
+3. Identifiez le paramĂštre **Restaurer Ă partir de la sauvegarde**
+4. SĂ©lectionnez la date de sauvegarde
+5. Cliquez sur l'icÎne de lancement de fusée
+
+![](images/settings-restore-backup.webp)
diff --git a/docs/website/content/fr/docs/features/cookbooks/_index.md b/docs/website/content/fr/docs/features/cookbooks/_index.md
new file mode 100644
index 000000000..b0f99d212
--- /dev/null
+++ b/docs/website/content/fr/docs/features/cookbooks/_index.md
@@ -0,0 +1,31 @@
+---
+title: Livres de cuisine
+weight: 3
+next: /docs/features/cookbooks/add
+prev: /docs/features/backups
+---
+
+Un livre de cuisine est un recueil de recettes. Vous pouvez accéder à cette fonctionnalité à partir de l'onglet « Livre de cuisine » de la barre latérale.
+
+{{< cards >}}
+ {{< card link="cookbooks/add"
+ title="Créer"
+ subtitle="Cliquez sur le bouton Ajouter un livre de recettes dans l'onglet de la fonction Livre de recettes pour créer un livre de recettes."
+ icon="newspaper" >}}
+ {{< card link="cookbooks/edit"
+ title="Modifier"
+ subtitle="Vous pouvez mettre à jour l'image d'un livre de cuisine ainsi que réorganiser les recettes."
+ icon="newspaper" >}}
+ {{< card link="cookbooks/delete"
+ title="Supprimer"
+ subtitle="Pour supprimer un livre de recettes de votre collection, cliquez d'abord sur les trois points verticaux en haut Ă droite du livre de recettes que vous souhaitez supprimer."
+ icon="newspaper" >}}
+ {{< card link="cookbooks/download"
+ title="Télécharger"
+ subtitle="N'importe lequel de vos livres de cuisine peut ĂȘtre tĂ©lĂ©chargĂ© sous forme de fichier PDF Ă des fins physiques, hors ligne ou d'archivage."
+ icon="newspaper" >}}
+ {{< card link="cookbooks/share"
+ title="Partager"
+ subtitle="Vous pouvez partager un livre de cuisine avec votre famille et vos amis."
+ icon="newspaper" >}}
+{{< /cards >}}
diff --git a/docs/website/content/fr/docs/features/cookbooks/add.md b/docs/website/content/fr/docs/features/cookbooks/add.md
new file mode 100644
index 000000000..a85faba4c
--- /dev/null
+++ b/docs/website/content/fr/docs/features/cookbooks/add.md
@@ -0,0 +1,28 @@
+---
+title: Créer
+weight: 1
+prev: /docs/features/cookbooks
+---
+
+Cliquez sur le bouton *Ajouter un livre de recettes* dans l'onglet de la fonction Livre de recettes pour créer un livre de recettes. Vous serez invité à saisir son titre.
+
+![](images/cookbook-add.webp)
+
+Le livre de recettes s'affiche alors immédiatement. L'image suivante montre deux livres de recettes créés.
+
+![](images/cookbooks-view.webp)
+
+## Ajout de recettes
+
+Votre livre de recettes est vide aprÚs sa création. Vous pouvez ajouter des recettes en les recherchant dans la zone de recherche.
+
+![](images/cookbook-no-recipes.webp)
+
+AprÚs avoir tapé, appuyez sur **Entrée** ou cliquez sur la loupe pour soumettre votre demande de recherche. Les résultats
+s'afficheront sous la zone de recherche. Les requĂȘtes ne sont pas sensibles Ă la casse.
+
+Enfin, cliquez sur le bouton *Ajouter* sur les recettes que vous souhaitez ajouter au livre de cuisine.
+
+![](images/cookbook-search-results-add.webp)
+
+![](images/cookbook-recipe-added.webp)
diff --git a/docs/website/content/fr/docs/features/cookbooks/delete.md b/docs/website/content/fr/docs/features/cookbooks/delete.md
new file mode 100644
index 000000000..643be094b
--- /dev/null
+++ b/docs/website/content/fr/docs/features/cookbooks/delete.md
@@ -0,0 +1,19 @@
+---
+title: Supprimer
+weight: 4
+next: /docs/features/measurement-systems
+---
+
+Pour supprimer un livre de recettes de votre collection, cliquez d'abord sur les trois points verticaux en haut Ă droite
+du livre de recettes que vous souhaitez supprimer. Cliquez ensuite sur l'Ă©lĂ©ment de sous-menu **Supprimer**. Vous serez invitĂ© Ă
+continuer avant la suppression.
+
+![](images/cookbook-delete.webp)
+
+{{< callout type="error" >}}
+La suppression d'un livre de cuisine est irréversible. Il disparaßtra définitivement. Cependant, ses recettes resteront intactes.
+{{< /callout >}}
+
+Le livre de recettes sera alors supprimé de votre collection et les modifications seront immédiatement répercutées.
+
+![](images/cookbook-delete-aftermath.webp)
diff --git a/docs/website/content/fr/docs/features/cookbooks/download.md b/docs/website/content/fr/docs/features/cookbooks/download.md
new file mode 100644
index 000000000..06005b4f3
--- /dev/null
+++ b/docs/website/content/fr/docs/features/cookbooks/download.md
@@ -0,0 +1,13 @@
+---
+title: Télécharger
+weight: 5
+---
+
+N'importe lequel de vos livres de cuisine peut ĂȘtre tĂ©lĂ©chargĂ© sous forme de fichier PDF Ă des fins physiques, hors ligne ou d'archivage.
+Cliquez [ici](https://sea.musicavis.ca/f/9f87258f6d5f485692d1) pour voir un Ă©chantillon.
+
+Pour télécharger un livre de cuisine, cliquez d'abord sur les trois points verticaux en haut à droite
+du livre de cuisine que vous souhaitez télécharger. Cliquez ensuite sur l'élément de sous-menu **Télécharger**. Le fichier sera
+téléchargé immédiatement.
+
+![](images/cookbook-download.webp)
diff --git a/docs/website/content/fr/docs/features/cookbooks/edit.md b/docs/website/content/fr/docs/features/cookbooks/edit.md
new file mode 100644
index 000000000..b5ddc9f2b
--- /dev/null
+++ b/docs/website/content/fr/docs/features/cookbooks/edit.md
@@ -0,0 +1,49 @@
+---
+title: Modifier
+weight: 3
+---
+
+Vous pouvez mettre à jour l'image d'un livre de recettes ainsi que réorganiser les recettes.
+
+## Mettre Ă jour l'image
+
+Cliquez sur l'image d'un livre de recettes pour la mettre Ă jour.
+Vous serez alors invité à utiliser le sélecteur de fichiers du systÚme d'exploitation pour sélectionner une image.
+
+![](images/cookbooks-update-image.webp)
+
+L'image du livre de recettes sera mise à jour immédiatement aprÚs la sélection du fichier.
+
+![](images/cookbooks-updated-image.webp)
+
+## RĂ©organiser les recettes
+
+Vous pouvez réorganiser les recettes d'un livre de cuisine. Cela est utile lorsque vous souhaitez que les recettes
+s'enchaßnent d'une certaine maniÚre. Par exemple, vous pouvez vouloir que toutes les entrées apparaissent en premier, puis les déjeuners et
+enfin les dĂźners.
+
+Pour les réorganiser, ouvrez d'abord un livre de cuisine. Dans l'image suivante, nous voulons échanger la position de la
+premiĂšre recette avec celle de la derniĂšre.
+
+![](images/cookbook-recipes-before-reorder.webp)
+
+Ensuite, faites glisser le numéro de page de la recette que vous souhaitez mettre à jour. Une fois à la position souhaitée,
+relùchez la souris. Les pages seront immédiatement mises à jour.
+
+![](images/cookbook-recipes-after-reorder.webp)
+
+## Changer de mode d'affichage
+
+Les livres de recettes peuvent ĂȘtre affichĂ©s dans les modes suivants :
+- Grille
+- Liste
+
+Pour les afficher sous forme de grille, cliquez sur l'icĂŽne de grille sous votre avatar.
+
+![](images/cookbooks-grid.webp)
+
+![](images/cookbooks-grid-mode.webp)
+
+Pour les afficher sous forme de liste, cliquez sur lâicĂŽne de liste.
+
+![](images/cookbooks-list.webp)
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbook-add.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-add.webp
new file mode 100644
index 000000000..e5c369bee
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-add.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbook-delete-aftermath.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-delete-aftermath.webp
new file mode 100644
index 000000000..e965efaa2
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-delete-aftermath.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbook-delete.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-delete.webp
new file mode 100644
index 000000000..086dcb9ac
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-delete.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbook-download.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-download.webp
new file mode 100644
index 000000000..557eaf7a0
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-download.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbook-no-recipes.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-no-recipes.webp
new file mode 100644
index 000000000..2830762c3
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-no-recipes.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbook-recipe-added.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-recipe-added.webp
new file mode 100644
index 000000000..d3258ee67
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-recipe-added.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbook-recipes-after-reorder.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-recipes-after-reorder.webp
new file mode 100644
index 000000000..e7239fca4
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-recipes-after-reorder.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbook-recipes-before-reorder.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-recipes-before-reorder.webp
new file mode 100644
index 000000000..7c6c43144
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-recipes-before-reorder.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbook-search-results-add.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-search-results-add.webp
new file mode 100644
index 000000000..8ff96973c
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-search-results-add.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbook-share-anonymous.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-share-anonymous.webp
new file mode 100644
index 000000000..e38cc0cf3
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-share-anonymous.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbook-share-link.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-share-link.webp
new file mode 100644
index 000000000..2d600fec6
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-share-link.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbook-share.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-share.webp
new file mode 100644
index 000000000..9bd42030d
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbook-share.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-grid-mode.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-grid-mode.webp
new file mode 100644
index 000000000..b877f43c5
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-grid-mode.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-grid.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-grid.webp
new file mode 100644
index 000000000..741bc9c3a
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-grid.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-list.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-list.webp
new file mode 100644
index 000000000..85ad24c6d
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-list.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-update-image.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-update-image.webp
new file mode 100644
index 000000000..bda6dab31
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-update-image.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-updated-image.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-updated-image.webp
new file mode 100644
index 000000000..b133f9c4b
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-updated-image.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-view.webp b/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-view.webp
new file mode 100644
index 000000000..dc7462ce2
Binary files /dev/null and b/docs/website/content/fr/docs/features/cookbooks/images/cookbooks-view.webp differ
diff --git a/docs/website/content/fr/docs/features/cookbooks/share.md b/docs/website/content/fr/docs/features/cookbooks/share.md
new file mode 100644
index 000000000..e94623bf0
--- /dev/null
+++ b/docs/website/content/fr/docs/features/cookbooks/share.md
@@ -0,0 +1,18 @@
+---
+title: Partager
+weight: 5
+---
+
+Vous pouvez partager un livre de recettes avec votre famille et vos amis. Pour ce faire, vous devez d'abord générer le lien de partage du livre
+de recettes en cliquant sur l'option de sous-menu **Partager** dans le menu de l'icĂŽne Ă trois points.
+
+![](images/cookbook-share.webp)
+
+Le lien vous sera alors affichĂ©, prĂȘt Ă ĂȘtre envoyĂ© Ă votre famille et Ă vos amis.
+
+![](images/cookbook-share-link.webp)
+
+Toute personne qui ouvre ce lien verra les recettes que vous avez ajoutées au livre de cuisine que vous avez partagé.
+Toute recette peut alors ĂȘtre consultĂ©e sans avoir Ă se connecter.
+
+![](images/cookbook-share-anonymous.webp)
\ No newline at end of file
diff --git a/docs/website/content/fr/docs/features/export-data.md b/docs/website/content/fr/docs/features/export-data.md
new file mode 100644
index 000000000..2fba94b01
--- /dev/null
+++ b/docs/website/content/fr/docs/features/export-data.md
@@ -0,0 +1,25 @@
+---
+title: Exporter des données
+weight: 3
+prev: /docs/features/cookbooks
+---
+
+Vous pouvez télécharger vos données depuis l'onglet « Données » dans les paramÚtres.
+
+![](images/settings-export.webp)
+
+La liste déroulante est organisée en groupes. Passons-les en revue.
+
+## Recettes
+
+Vous pouvez exporter vos recettes dans les formats suivants.
+- JSON
+- PDF
+
+Le format JSON exporte toutes vos recettes dans une archive zippée organisée hiérarchiquement, chaque dossier
+contenant un fichier JSON de la recette. Le fichier de recette suit la
+norme [Schéma de recette](https://schema.org/Recipe).
+
+Le format PDF exporte toutes vos recettes dans une archive zippée. Chaque fichier de l'archive suit la convention de
+dénomination
+`{nom de la recette}.pdf`.
\ No newline at end of file
diff --git a/docs/website/content/fr/docs/features/images/admin-access.webp b/docs/website/content/fr/docs/features/images/admin-access.webp
new file mode 100644
index 000000000..554b0c5b5
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/admin-access.webp differ
diff --git a/docs/website/content/fr/docs/features/images/admin-overview.webp b/docs/website/content/fr/docs/features/images/admin-overview.webp
new file mode 100644
index 000000000..0c8292206
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/admin-overview.webp differ
diff --git a/docs/website/content/fr/docs/features/images/reports-access-after.webp b/docs/website/content/fr/docs/features/images/reports-access-after.webp
new file mode 100644
index 000000000..ad13a3a55
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/reports-access-after.webp differ
diff --git a/docs/website/content/fr/docs/features/images/reports-access.webp b/docs/website/content/fr/docs/features/images/reports-access.webp
new file mode 100644
index 000000000..b375e4c2d
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/reports-access.webp differ
diff --git a/docs/website/content/fr/docs/features/images/reports-errors.webp b/docs/website/content/fr/docs/features/images/reports-errors.webp
new file mode 100644
index 000000000..af0b46a81
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/reports-errors.webp differ
diff --git a/docs/website/content/fr/docs/features/images/reports-fresh.webp b/docs/website/content/fr/docs/features/images/reports-fresh.webp
new file mode 100644
index 000000000..5d21e42d0
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/reports-fresh.webp differ
diff --git a/docs/website/content/fr/docs/features/images/reports-latest.webp b/docs/website/content/fr/docs/features/images/reports-latest.webp
new file mode 100644
index 000000000..1f9feed92
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/reports-latest.webp differ
diff --git a/docs/website/content/fr/docs/features/images/settings-access.webp b/docs/website/content/fr/docs/features/images/settings-access.webp
new file mode 100644
index 000000000..df506c634
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/settings-access.webp differ
diff --git a/docs/website/content/fr/docs/features/images/settings-convert-automatically.webp b/docs/website/content/fr/docs/features/images/settings-convert-automatically.webp
new file mode 100644
index 000000000..b6d88e6b7
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/settings-convert-automatically.webp differ
diff --git a/docs/website/content/fr/docs/features/images/settings-export.webp b/docs/website/content/fr/docs/features/images/settings-export.webp
new file mode 100644
index 000000000..20f6cbb1f
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/settings-export.webp differ
diff --git a/docs/website/content/fr/docs/features/images/settings-integrations-nextcloud.webp b/docs/website/content/fr/docs/features/images/settings-integrations-nextcloud.webp
new file mode 100644
index 000000000..124794793
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/settings-integrations-nextcloud.webp differ
diff --git a/docs/website/content/fr/docs/features/images/settings-integrations.webp b/docs/website/content/fr/docs/features/images/settings-integrations.webp
new file mode 100644
index 000000000..e2233e8d9
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/settings-integrations.webp differ
diff --git a/docs/website/content/fr/docs/features/images/settings-measurement-system.webp b/docs/website/content/fr/docs/features/images/settings-measurement-system.webp
new file mode 100644
index 000000000..5e88434e3
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/settings-measurement-system.webp differ
diff --git a/docs/website/content/fr/docs/features/images/settings-nutrition-facts.webp b/docs/website/content/fr/docs/features/images/settings-nutrition-facts.webp
new file mode 100644
index 000000000..1cd5fc971
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/settings-nutrition-facts.webp differ
diff --git a/docs/website/content/fr/docs/features/images/settings-restore-backup.webp b/docs/website/content/fr/docs/features/images/settings-restore-backup.webp
new file mode 100644
index 000000000..92e4b2157
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/settings-restore-backup.webp differ
diff --git a/docs/website/content/fr/docs/features/images/update-available.webp b/docs/website/content/fr/docs/features/images/update-available.webp
new file mode 100644
index 000000000..4ba889fae
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/update-available.webp differ
diff --git a/docs/website/content/fr/docs/features/images/update-button.webp b/docs/website/content/fr/docs/features/images/update-button.webp
new file mode 100644
index 000000000..2d0903fd4
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/update-button.webp differ
diff --git a/docs/website/content/fr/docs/features/images/update-success-restart.webp b/docs/website/content/fr/docs/features/images/update-success-restart.webp
new file mode 100644
index 000000000..1f6b6f61c
Binary files /dev/null and b/docs/website/content/fr/docs/features/images/update-success-restart.webp differ
diff --git a/docs/website/content/fr/docs/features/integrations.md b/docs/website/content/fr/docs/features/integrations.md
new file mode 100644
index 000000000..690af13b0
--- /dev/null
+++ b/docs/website/content/fr/docs/features/integrations.md
@@ -0,0 +1,185 @@
+---
+title: Intégrations
+weight: 4
+next: /docs/measurement-system
+---
+
+Recipya propose des intégrations d'importation de données avec d'autres applications de gestion de recettes.
+
+Vous pouvez importer vos recettes depuis Nextcloud Cookbook, Mealie et Tandoor en utilisant leurs API respectives depuis l'onglet
+`Data` dans les paramÚtres. Il vous suffit de sélectionner la solution à partir de laquelle vous souhaitez importer, ainsi que son
+URL de base et vos identifiants.
+
+![](images/settings-integrations.webp)
+
+Comme pour les autres applications, vous pouvez le faire depuis la fonctionnalitĂ© [Add recipe â Import](/guide/fr/docs/features/recipes/add/#import).
+
+## Compatibilité
+
+| Intégration | Importer | Emplacement |
+|------------------------------------------------------------------------|:--------------------:|:------------------------:|
+ | [AccuChef](https://www.accuchef.com) | {{< icon "check" >}} | Add recipe â Import |
+| [ChefTap](https://cheftap.com) | {{< icon "check" >}} | Add recipe â Import |
+| [Crouton](https://crouton.app) | {{< icon "check" >}} | Add recipe â Import |
+| [Easy Recipe Deluxe](https://easy-recipe-deluxe.software.informer.com) | {{< icon "check" >}} | Add recipe â Import |
+ | [Kalorio](https://www.kalorio.de) | {{< icon "check" >}} | Add recipe â Import |
+| [MasterCook](https://www.mastercook.com) | {{< icon "check" >}} | Add recipe â Import |
+ | [Mealie](https://mealie.io) | {{< icon "check" >}} | Settings â Data â Import |
+| [Nextcloud Cookbook](https://apps.nextcloud.com/apps/cookbook) | {{< icon "check" >}} | Settings â Data â Import |
+ | [Paprika](https://www.paprikaapp.com) | {{< icon "check" >}} | Add recipe â Import |
+| [Recipe Keeper](https://www.paprikaapp.com) | {{< icon "check" >}} | Add recipe â Import |
+| [RecipeSage](https://recipesage.com/#/welcome) | {{< icon "check" >}} | Add recipe â Import |
+ | [Saffron](https://www.mysaffronapp.com) | {{< icon "check" >}} | Add recipe â Import |
+ | [Tandoor](https://tandoor.dev) | {{< icon "check" >}} | Settings â Data â Import |
+
+## Instructions spécifiques à l'application.
+
+### AccuChef
+
+Suivez ces Ă©tapes pour importer vos recettes depuis AccuChef :
+
+1. Exportez vos recettes dans AccuChef.
+2. Dans Recipya, cliquez sur le bouton « Ajouter une recette ».
+3. Cliquez sur le bouton « Importer ».
+4. Sélectionnez le fichier « .txt » exporté.
+5. Cliquez sur « Soumettre ».
+
+### ChefTap
+
+Suivez ces Ă©tapes pour importer vos recettes depuis ChefTap :
+
+1. Depuis l'application mobile « ChefTap », exportez vos recettes au format texte.
+2. Dans Recipya, cliquez sur le bouton « Ajouter une recette ».
+3. Cliquez sur le bouton « Importer ».
+4. Sélectionnez le fichier « .zip » exporté.
+5. Cliquez sur « Soumettre ».
+
+### Crouton
+
+Suivez ces Ă©tapes pour importer vos recettes depuis Crouton :
+
+1. Exportez vos recettes dans « Crouton ».
+2. Dans Recipya, cliquez sur le bouton « Ajouter une recette ».
+3. Cliquez sur le bouton « Importer ».
+4. Sélectionnez le fichier « .zip » exporté.
+5. Cliquez sur « Envoyer ».
+
+### Easy Recipe Deluxe
+
+Suivez ces Ă©tapes pour importer vos recettes depuis Easy Recipe Deluxe :
+
+1. Exportez vos recettes dans « Easy Recipe Deluxe » : Publier -> Texte.
+2. Dans Recipya, cliquez sur le bouton « Ajouter une recette ».
+3. Cliquez sur le bouton « Importer ».
+4. Sélectionnez le fichier « .txt » exporté.
+5. Cliquez sur « Envoyer ».
+
+## ChefTap
+
+Suivez ces Ă©tapes pour importer vos recettes depuis ChefTap :
+
+1. Depuis l'application mobile « ChefTap », exportez vos recettes au format texte.
+2. Dans Recipya, cliquez sur le bouton « Ajouter une recette ».
+3. Cliquez sur le bouton « Importer ».
+4. Sélectionnez le fichier « .zip » exporté.
+5. Cliquez sur « Soumettre ».
+
+## Easy Recipe Deluxe
+
+Suivez ces Ă©tapes pour importer vos recettes depuis Easy Recipe Deluxe :
+
+1. Exportez vos recettes dans « Easy Recipe Deluxe » : Publier -> Texte.
+2. Dans Recipya, cliquez sur le bouton « Ajouter une recette ».
+3. Cliquez sur le bouton « Importer ».
+4. Sélectionnez le fichier « .txt » exporté.
+5. Cliquez sur « Envoyer ».
+
+### Kalorio
+
+Suivez ces Ă©tapes pour importer des recettes depuis Kalorio.
+
+1. Exportez vos recettes [Kalorio](https://www.kalorio.de/index.php?Mod=Ka&Cap=EI&SCa=kal_export) au format `CookML`.
+2. Dans Recipya, cliquez sur le bouton `Ajouter une recette`.
+3. Cliquez sur le bouton `Importer`.
+4. Sélectionnez le fichier exporté.
+5. Cliquez sur `Soumettre`.
+
+## MasterCook
+
+Vous pouvez importer vos recettes MasterCook Ă partir du bouton d'importation de la page
+[ajouter une recette](/guide/fr/docs/features/recipes/add#import). Vous pouvez soit télécharger un seul
+fichier `.mxp`, soit une archive zip contenant plusieurs fichiers `.mxp`.
+
+Ce [site Web](https://www.grassrootsrecipes.com/) contient d'innombrables collections de recettes MasterCook que vous pouvez essayer.
+
+### Mealie
+
+Suivez ces Ă©tapes pour importer vos recettes depuis une instance Mealie :
+
+1. Accédez au paramÚtre **Intégrations** et sélectionnez l'option **Mealie**.
+2. Cliquez sur le bouton adjacent au menu d'options.
+3. Dans la boĂźte de dialogue qui s'affiche, saisissez l'URL et les informations d'identification d'une instance Mealie.
+4. Cliquez sur le bouton **Importer**.
+
+## Nextcloud Cookbook
+
+[Nextcloud Cookbook](https://github.com/nextcloud/cookbook) est une application pour [Nextcloud](https://nextcloud.com/).
+Suivez ces Ă©tapes pour importer vos recettes Ă partir d'une instance Nextcloud Cookbook :
+
+1. Accédez au paramÚtre **Intégrations** et sélectionnez l'option **Nextcloud**.
+2. Cliquez sur le bouton adjacent.
+3. Dans la boĂźte de dialogue qui s'affiche, saisissez l'URL et les informations d'identification de votre instance Nextcloud.
+ ![](images/settings-integrations-nextcloud.webp)
+4. Cliquez sur le bouton **Importer**.
+
+### Paprika
+
+Suivez ces Ă©tapes pour importer des recettes depuis Paprika.
+
+1. [Exportez](https://www.paprikaapp.com/help/windows/#exportrecipes) vos recettes Paprika au format « Paprika Recipe Format ».
+2. Dans Recipya, cliquez sur le bouton « Ajouter une recette ».
+3. Cliquez sur le bouton « Importer ».
+4. Sélectionnez votre fichier « .paprikarecipes ». Vous pouvez également compresser plusieurs fichiers « .paprikarecipes » ensemble et sélectionner le fichier résultant.
+5. Cliquez sur « Soumettre ».
+
+### Recipe Keeper
+
+Suivez ces Ă©tapes pour importer des recettes depuis Recipe Keeper.
+
+1. Accédez aux paramÚtres dans Recipe Keeper.
+2. Accédez à l'onglet « Importer/Exporter ».
+3. Cliquez sur le bouton « Fichier .zip Recipe Keeper » en haut.
+4. Enregistrez le fichier.
+5. Dans Recipya, cliquez sur le bouton « Ajouter une recette ».
+6. Cliquez sur le bouton « Importer ».
+7. Sélectionnez le fichier zip que vous avez enregistré.
+8. Cliquez sur « Soumettre ».
+
+### RecipeSage
+
+Suivez ces Ă©tapes pour importer des recettes depuis RecipeSage.
+
+1. Exportez vos recettes [RecipeSage](https://docs.recipesage.com/docs/tutorials/settings/export/) au format « JSON-LD ».
+2. Dans Recipya, cliquez sur le bouton « Ajouter une recette ».
+3. Cliquez sur le bouton « Importer ».
+4. Sélectionnez le fichier exporté.
+5. Cliquez sur « Envoyer ».
+
+### Saffron
+
+Suivez ces Ă©tapes pour importer des recettes depuis Saffron.
+
+1. Exportez vos recettes [Saffron](https://www.mysaffronapp.com/account).
+2. Dans Recipya, cliquez sur le bouton « Ajouter une recette ».
+3. Cliquez sur le bouton « Importer ».
+4. Sélectionnez le fichier « .zip » exporté.
+5. Cliquez sur « Soumettre ».
+
+### Tandoor
+
+Suivez ces Ă©tapes pour importer vos recettes Ă partir d'une instance Tandoor :
+
+1. Accédez au paramÚtre **Intégrations** et sélectionnez l'option **Tandoor**.
+2. Cliquez sur le bouton adjacent.
+3. Dans la boĂźte de dialogue qui s'affiche, saisissez l'URL et les informations d'identification d'une instance Tandoor.
+4. Cliquez sur le bouton **Importer**.
diff --git a/docs/website/content/fr/docs/features/measurement-systems.md b/docs/website/content/fr/docs/features/measurement-systems.md
new file mode 100644
index 000000000..c8697f9be
--- /dev/null
+++ b/docs/website/content/fr/docs/features/measurement-systems.md
@@ -0,0 +1,36 @@
+---
+title: SystĂšmes de mesure
+weight: 5
+prev: /docs/features/cookbooks/share
+---
+
+Les utilisateurs adhĂšrent gĂ©nĂ©ralement Ă un systĂšme de mesure prĂ©fĂ©rĂ© et se sentent rarement Ă lâaise avec plusieurs systĂšmes.
+
+Dans Recipya, vous avez la possibilité de définir votre systÚme de mesure préféré. Les systÚmes actuellement pris en charge sont
+les systÚmes impérial et métrique. Les Européens utilisent principalement le systÚme métrique, tandis que les Américains
+favoriser lâimpĂ©rial.
+
+Toutes les options liées à cela se trouvent sous l'onglet **Recipes** dans les paramÚtres.
+
+## Changement de systĂšme
+
+Vous pouvez modifier le systÚme de mesure en fonction de votre préférence en sélectionnant un systÚme dans la liste déroulante à cÎté du paramÚtre **Measurement system**.
+
+{{< callout type="info" >}}
+Le systÚme de mesure par défaut est impérial.
+{{< /callout >}}
+
+![](images/settings-measurement-system.webp)
+
+Toutes vos recettes de votre collection seront converties dans le systÚme de mesure que vous avez sélectionné.
+Ce processus est automatique si vous avez coché l'option **Convert automatically**.
+
+## Conversion automatique
+
+Sélectionnez cette option si vous souhaitez convertir automatiquement les nouvelles recettes selon votre systÚme de mesure préféré.
+
+Par exemple, supposons que vous préférez le systÚme de mesure métrique et que vous souhaitiez importer une délicieuse recette à partir d'un
+site Web américain. Le site Web utilise le systÚme impérial. Lors de l'importation, la recette sera automatiquement convertie au systÚme métrique
+si la case **Convert automatically** est cochée. Sinon, la recette restera dans le systÚme impérial.
+
+![](images/settings-convert-automatically.webp)
diff --git a/docs/website/content/fr/docs/features/nutrition-facts.md b/docs/website/content/fr/docs/features/nutrition-facts.md
new file mode 100644
index 000000000..9c6ac0192
--- /dev/null
+++ b/docs/website/content/fr/docs/features/nutrition-facts.md
@@ -0,0 +1,25 @@
+---
+title: Information nutritionnelle
+weight: 6
+---
+
+De nombreuses recettes manquent dâinformations nutritionnelles et les utilisateurs peuvent ne pas vouloir calculer eux-mĂȘmes. Pour rĂ©soudre ce problĂšme,
+Recipya peut calculer automatiquement les informations nutritionnelles pour vous lors de l'ajout d'une recette.
+
+Pour activer cette fonctionnalité, accédez à la boßte de dialogue des paramÚtres depuis l'avatar, cliquez sur l'onglet `Recipes` à gauche et
+cochez la case du paramĂštre **Calculate nutrition facts**.
+
+![](images/settings-nutrition-facts.webp)
+
+Ce paramÚtre est initialement désactivé, car l'ajout d'une recette peut prendre jusqu'à quelques secondes supplémentaires. Cela se produit, car
+l'interrogation de la base de données nutritionnelles pour chaque ingrédient prend du temps. Le traitement est effectué en arriÚre-plan
+pour garantir que votre interaction avec l'application ne soit pas interrompue.
+
+Recipya fait de son mieux pour calculer les informations nutritionnelles en fonction des ingrédients d'une recette. Cependant, veuillez
+comprendre que le calcul est plus indicatif qu'absolu. Les informations sont basées sur le [FoodData Central](https://fdc.nal.usda.gov) du département
+de l'agriculture des Ătats-Unis, qui est un systĂšme de donnĂ©es intĂ©grĂ© qui fournit des donnĂ©es de profil nutritionnel Ă©tendues. Veuillez [ouvrir un problĂšme](https://github.com/reaper47/recipya/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&title=Problem+with+nutrition+facts)
+sur GitHub si jamais vous remarquez une recette avec des informations nutritionnelles qui semblent trĂšs inexactes.
+
+{{< callout type="info" >}}
+Le calcul ne peut ĂȘtre effectuĂ© qu'avec des ingrĂ©dients Ă©crits en anglais, car la base de donnĂ©es est uniquement en anglais.
+{{< /callout >}}
diff --git a/docs/website/content/fr/docs/features/recipes/_index.md b/docs/website/content/fr/docs/features/recipes/_index.md
new file mode 100644
index 000000000..78ad86b3c
--- /dev/null
+++ b/docs/website/content/fr/docs/features/recipes/_index.md
@@ -0,0 +1,47 @@
+---
+title: Recettes
+weight: 7
+next: /docs/features/recipes/add
+prev: /docs/features/nutrition-facts
+---
+
+Vous pouvez ajouter, afficher, modifier et supprimer n'importe quelle recette de votre collection.
+
+{{< cards >}}
+ {{< card link="recipes/add"
+ title="Ajouter"
+ icon="newspaper"
+ subtitle="Vous pouvez ajouter une recette en cliquant sur le bouton bleu Ajouter une recette au milieu de la barre d'application." >}}
+ {{< card link="recipes/view"
+ title="Vue"
+ subtitle="Pour visualiser une recette, vous devez d'abord consulter votre collection de recettes."
+ icon="newspaper" >}}
+ {{< card link="recipes/edit"
+ title="Modifier"
+ subtitle="Pour modifier une recette dans votre collection, vous devez d'abord afficher une recette."
+ icon="newspaper" >}}
+ {{< card link="recipes/delete"
+ title="Supprimer"
+ subtitle="Pour supprimer une recette de votre collection, vous devez d'abord afficher une recette."
+ icon="newspaper" >}}
+ {{< card link="recipes/search"
+ title="Recherche"
+ subtitle="Vous pouvez rechercher des recettes à partir de la zone de texte de recherche située sous le bouton Ajouter des recettes de la page d'affichage des recettes."
+ icon="newspaper" >}}
+ {{< card link="recipes/share"
+ title="Partager"
+ subtitle="Une recette peut ĂȘtre partagĂ©e avec toute personne disposant du lien de partage."
+ icon="newspaper" >}}
+ {{< card link="recipes/print"
+ title="Imprimer"
+ subtitle="Une recette peut ĂȘtre imprimĂ©e pour votre commoditĂ© et vos prĂ©fĂ©rences."
+ icon="newspaper" >}}
+ {{< card link="recipes/wakelock"
+ title="Verrouillage de réveil"
+ subtitle="Apprenez à garder votre appareil éveillé pendant que vous cuisinez."
+ icon="newspaper" >}}
+ {{< card link="recipes/categories"
+ title="Catégories"
+ subtitle="Apprenez à gérer vos catégories de recettes."
+ icon="newspaper" >}}
+{{< /cards >}}
diff --git a/docs/website/content/fr/docs/features/recipes/add.md b/docs/website/content/fr/docs/features/recipes/add.md
new file mode 100644
index 000000000..f97105f9b
--- /dev/null
+++ b/docs/website/content/fr/docs/features/recipes/add.md
@@ -0,0 +1,134 @@
+---
+title: Ajouter
+weight: 1
+prev: /docs/features/recipes
+---
+
+Vous pouvez ajouter une recette en cliquant sur le bouton bleu **Ajouter une recette** au milieu de la barre d'application.
+
+![](images/add-recipe.webp)
+
+## Ajout de recettes
+
+Quatre façons diffĂ©rentes dâajouter une recette Ă votre collection vous seront prĂ©sentĂ©es.
+
+- [Manuellement](#manuellement)
+- [Scan](#scan)
+- [Site Web](#site-web)
+- [Importer](#importer)
+
+![](images/add-recipe-options.webp)
+
+### Manuellement
+
+La méthode la plus simple pour saisir une recette consiste à remplir un formulaire décrivant votre plat.
+
+Les champs suivants, indiqués par un astérisque (*), sont obligatoires :
+- Titre
+- Ingrédients
+- Instructions
+
+Les valeurs par défaut des champs vides aprÚs la soumission sont les suivantes :
+- MĂ©dia â Image de sushi par dĂ©faut
+- CatĂ©gorie â « non catĂ©gorisĂ© »
+- Portions â 1
+- Source â « Inconnu »
+- Mots-clĂ©s â aucun
+- Temps â 15 min (prĂ©paration), 30 min (cuisson)
+- Description â vide
+- Outils â aucun
+
+![](images/add-recipe-manual.webp)
+
+Ces raccourcis pourraient vous ĂȘtre utiles si vous remplissez le formulaire depuis votre ordinateur.
+
+| Raccourci | Comment activer | RĂ©sultat |
+|---------------|----------------------------------------------|----------------------------------|
+| Entrée | Focus sur la saisie de texte d'un ingrédient | Ajouter une ligne d'ingrédients |
+| Ctrl + Entrée | Focus sur une zone de texte d'instruction | Ajouter une ligne d'instructions |
+
+Vous pouvez également réorganiser les ingrédients et les instructions en faisant glisser la flÚche verticalement.
+
+### Scan
+
+Vous pouvez télécharger une image ou un scan d'une recette manuscrite ou imprimée pour l'ajouter à votre collection.
+Cette option est utile pour numériser vos recettes papier et celles de votre famille.
+
+Pour ce faire, cliquez sur le bouton *Télécharger* et sélectionnez un document sur votre ordinateur.
+
+![](images/add-recipe-scan.webp)
+
+Vous pouvez télécharger des fichiers dans les formats suivants :
+- Images (JPEG/JPG, PNG, BMP, HEIF)
+- PDF
+- TIFF
+
+{{< callout type="warning" >}}
+Vous devez disposer dâune instance [Azure AI Document Intelligence](/guide/fr/docs/installation/integrations#azure-AI Document Intelligence) pour utiliser cette fonctionnalitĂ©.
+{{< /callout >}}
+
+### Site Web
+
+Vous pouvez importer n'importe quelle recette à partir des sites Web pris en charge. Pour ce faire, cliquez sur le bouton **Récupérer**,
+collez l'URL ou les URL de la recette, chacune sur une nouvelle ligne, et cliquez sur *Envoyer*. Une notification
+apparaßtra lorsque l'opération sera terminée.
+
+Son bouton d'action exécute une action en fonction du résultat. Lorsque vous avez importé une URL et que
+l'opération réussit, l'action vous redirige vers la recette. Sinon, vous serez redirigé
+vers le dernier rapport.
+
+Pour afficher tous les sites Web pris en charge, veuillez cliquer sur le mot supported. Vous pouvez extraire un
+site Web qui ne figure pas dans la liste prise en charge, mais l'extraction de la recette peut Ă©chouer. Veuillez ouvrir un problĂšme sur GitHub si
+c'est le cas.
+
+![](images/add-recipe-website.gif)
+
+### Importer
+
+Vous pouvez importer des recettes dans les formats suivants :
+- `.json` : si elles sont conformes Ă la norme [Recipe schema](https://schema.org/Recipe)
+- `.mxp` : recettes exportées depuis [MasterCook](https://www.mastercook.com)
+- `.paprikarecipes` : recettes exportées depuis [Paprika](https://www.paprikaapp.com) dans le format `Paprika Recipe Format`
+- `.txt`
+- `.zip`
+
+![](images/add-recipe-import.webp)
+
+Vous pouvez tĂ©lĂ©charger un fichier unique ou une archive zip contenant plusieurs recettes. Les recettes d'un fichier zip peuvent ĂȘtre
+organisées par dossier. Chaque dossier peut contenir le fichier `.json` de la recette. Tous les autres fichiers d'un dossier
+seront ignorés pendant le traitement.
+
+Vous pouvez également télécharger des recettes exportées à partir des applications suivantes :
+- AccuChef
+- ChefTap
+- Crouton
+- Easy Recipe Deluxe
+- Kalorio
+- MasterCook
+- Paprika
+- Recipe Keeper
+- RecipeSage
+- Saffron
+
+Veuillez vous référer à la [page des intégrations](/guide/fr/docs/features/integrations/) pour obtenir des instructions spécifiques à l'application.
+
+#### Bookmarklet de Recipya
+
+Le bookmarklet Recipya permet à un utilisateur d'exécuter un extrait JavaScript à partir de son navigateur qui extrait une recette d'une page Web.
+
+Il est destiné aux sites Web qui à la fois :
+- ne peuvent pas ĂȘtre rĂ©cupĂ©rĂ©s via une requĂȘte serveur, c'est-Ă -dire qui ont quelque chose comme un captcha ou une dĂ©tection de bot
+- qui ont des extraits de script de recette json+ld sur leur page
+
+Pour obtenir le bookmarklet :
+1. Accédez à `/recipes/add`
+2. Ajoutez le lien `Recipya Bookmarklet` Ă vos favoris dans la carte `Import`.
+
+Pour l'utiliser :
+1. Ouvrez une page Web de recette, par exemple [double banana nut bread](https://www.allrecipes.com/recipe/231961/double-banana-nut-bread/)
+2. Cliquez sur le bookmarklet
+3. Un fichier JSON est téléchargé lorsqu'il réussit.
+
+Vous pouvez ensuite importer la recette extraite depuis `Ajouter une recette -> Importer`.
+
+![](images/recipya-bookmarklet.gif)
diff --git a/docs/website/content/fr/docs/features/recipes/categories.md b/docs/website/content/fr/docs/features/recipes/categories.md
new file mode 100644
index 000000000..e84a9fd86
--- /dev/null
+++ b/docs/website/content/fr/docs/features/recipes/categories.md
@@ -0,0 +1,12 @@
+---
+title: Catégories
+weight: 8
+---
+
+Vous pouvez gérer vos catégories depuis l'option **Catégories** dans l'onglet **Recettes** des paramÚtres.
+
+![](images/recipes-categories.webp)
+
+Pour ajouter une catégorie, saisissez-la dans le dernier badge vide et cliquez sur la coche.
+
+Pour supprimer une catégorie, cliquez sur le bouton « x » à droite de n'importe quel badge de catégorie.
\ No newline at end of file
diff --git a/docs/website/content/fr/docs/features/recipes/delete.md b/docs/website/content/fr/docs/features/recipes/delete.md
new file mode 100644
index 000000000..dfefccc52
--- /dev/null
+++ b/docs/website/content/fr/docs/features/recipes/delete.md
@@ -0,0 +1,14 @@
+---
+title: Supprimer
+weight: 4
+---
+
+Pour supprimer une recette de votre collection, vous devez d'abord [afficher](/guide/fr/docs/features/recipes/view)
+une recette. Cliquez ensuite sur l'icÎne de la corbeille à droite du titre de la recette. Il vous sera demandé si
+vous souhaitez continuer avant la suppression.
+
+![](images/delete-recipe.webp)
+
+{{< callout type="error" >}}
+La suppression d'une recette est irréversible. Elle disparaßtra définitivement.
+{{< /callout >}}
diff --git a/docs/website/content/fr/docs/features/recipes/edit.md b/docs/website/content/fr/docs/features/recipes/edit.md
new file mode 100644
index 000000000..a17542c9a
--- /dev/null
+++ b/docs/website/content/fr/docs/features/recipes/edit.md
@@ -0,0 +1,14 @@
+---
+title: Modifier
+weight: 3
+---
+
+Pour Ă©diter une recette de votre collection, vous devez d'abord [visualiser](/guide/fr/docs/features/recipes/view) une recette.
+Cliquez ensuite sur l'icĂŽne en forme de crayon Ă gauche du titre de la recette.
+
+![](images/edit-recipe-enter.webp)
+
+Vous entrerez dans le mode Ă©dition, qui vous permettra de modifier n'importe quelle information de la recette.
+Appuyez sur le bouton bleu **Mettre Ă jour** en bas du formulaire pour enregistrer vos modifications.
+
+![](images/edit-recipe.webp)
diff --git a/docs/website/content/fr/docs/features/recipes/images/add-recipe-import.webp b/docs/website/content/fr/docs/features/recipes/images/add-recipe-import.webp
new file mode 100644
index 000000000..303f7aa71
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/add-recipe-import.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/add-recipe-manual.webp b/docs/website/content/fr/docs/features/recipes/images/add-recipe-manual.webp
new file mode 100644
index 000000000..fe2eecef7
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/add-recipe-manual.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/add-recipe-options.webp b/docs/website/content/fr/docs/features/recipes/images/add-recipe-options.webp
new file mode 100644
index 000000000..e122c4fb2
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/add-recipe-options.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/add-recipe-scan.webp b/docs/website/content/fr/docs/features/recipes/images/add-recipe-scan.webp
new file mode 100644
index 000000000..0d5c10116
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/add-recipe-scan.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/add-recipe-website.gif b/docs/website/content/fr/docs/features/recipes/images/add-recipe-website.gif
new file mode 100644
index 000000000..fe5bdcbcf
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/add-recipe-website.gif differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/add-recipe.webp b/docs/website/content/fr/docs/features/recipes/images/add-recipe.webp
new file mode 100644
index 000000000..80c8a8f42
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/add-recipe.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/delete-recipe.webp b/docs/website/content/fr/docs/features/recipes/images/delete-recipe.webp
new file mode 100644
index 000000000..cf54b4fa7
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/delete-recipe.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/edit-recipe-enter.webp b/docs/website/content/fr/docs/features/recipes/images/edit-recipe-enter.webp
new file mode 100644
index 000000000..1b0657db8
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/edit-recipe-enter.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/edit-recipe.webp b/docs/website/content/fr/docs/features/recipes/images/edit-recipe.webp
new file mode 100644
index 000000000..c62e3cbad
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/edit-recipe.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/print-dialog.webp b/docs/website/content/fr/docs/features/recipes/images/print-dialog.webp
new file mode 100644
index 000000000..b13d63abb
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/print-dialog.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/print-icon.webp b/docs/website/content/fr/docs/features/recipes/images/print-icon.webp
new file mode 100644
index 000000000..8f5979408
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/print-icon.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/recipes-categories.webp b/docs/website/content/fr/docs/features/recipes/images/recipes-categories.webp
new file mode 100644
index 000000000..1c45fef5d
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/recipes-categories.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/recipes-search-help.webp b/docs/website/content/fr/docs/features/recipes/images/recipes-search-help.webp
new file mode 100644
index 000000000..eeb89afb4
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/recipes-search-help.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/recipes-search-query.webp b/docs/website/content/fr/docs/features/recipes/images/recipes-search-query.webp
new file mode 100644
index 000000000..141fcb607
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/recipes-search-query.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/recipes-search-view.webp b/docs/website/content/fr/docs/features/recipes/images/recipes-search-view.webp
new file mode 100644
index 000000000..85eebd889
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/recipes-search-view.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/recipya-bookmarklet.gif b/docs/website/content/fr/docs/features/recipes/images/recipya-bookmarklet.gif
new file mode 100644
index 000000000..42afce6eb
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/recipya-bookmarklet.gif differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/search-settings.webp b/docs/website/content/fr/docs/features/recipes/images/search-settings.webp
new file mode 100644
index 000000000..04ea6340e
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/search-settings.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/sharing-dialog.webp b/docs/website/content/fr/docs/features/recipes/images/sharing-dialog.webp
new file mode 100644
index 000000000..bcbc836ba
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/sharing-dialog.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/sharing-icon.webp b/docs/website/content/fr/docs/features/recipes/images/sharing-icon.webp
new file mode 100644
index 000000000..51b86613e
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/sharing-icon.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/view-recipe-enter.webp b/docs/website/content/fr/docs/features/recipes/images/view-recipe-enter.webp
new file mode 100644
index 000000000..7bd9acb41
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/view-recipe-enter.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/view-recipe-scale.webp b/docs/website/content/fr/docs/features/recipes/images/view-recipe-scale.webp
new file mode 100644
index 000000000..1d171b056
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/view-recipe-scale.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/view-recipe.webp b/docs/website/content/fr/docs/features/recipes/images/view-recipe.webp
new file mode 100644
index 000000000..f605f9a1c
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/view-recipe.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/wakelock-off.webp b/docs/website/content/fr/docs/features/recipes/images/wakelock-off.webp
new file mode 100644
index 000000000..e2cd7bee9
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/wakelock-off.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/images/wakelock-on.webp b/docs/website/content/fr/docs/features/recipes/images/wakelock-on.webp
new file mode 100644
index 000000000..75feab9ae
Binary files /dev/null and b/docs/website/content/fr/docs/features/recipes/images/wakelock-on.webp differ
diff --git a/docs/website/content/fr/docs/features/recipes/print.md b/docs/website/content/fr/docs/features/recipes/print.md
new file mode 100644
index 000000000..168993cd9
--- /dev/null
+++ b/docs/website/content/fr/docs/features/recipes/print.md
@@ -0,0 +1,15 @@
+---
+title: Imprimer
+weight: 7
+---
+
+Une recette peut ĂȘtre imprimĂ©e selon vos prĂ©fĂ©rences et votre convenance.
+
+Pour imprimer, vous devez d'abord [afficher une recette](/guide/fr/docs/features/recipes/view).
+Ensuite, cliquez sur l'icĂŽne d'imprimante Ă droite du titre de la recette.
+
+![](images/print-icon.webp)
+
+La boĂźte de dialogue dâimpression sâaffichera alors.
+
+![](images/print-dialog.webp)
diff --git a/docs/website/content/fr/docs/features/recipes/search.md b/docs/website/content/fr/docs/features/recipes/search.md
new file mode 100644
index 000000000..ea37cd0e6
--- /dev/null
+++ b/docs/website/content/fr/docs/features/recipes/search.md
@@ -0,0 +1,67 @@
+---
+title: Recherche
+weight: 5
+---
+
+Vous pouvez rechercher des recettes à partir de la zone de texte de recherche située sous le bouton Ajouter des recettes de la page d'affichage des recettes.
+Tapez vos mots-clés délimités par un espace, une virgule ou les deux. Appuyez ensuite sur la touche Entrée pour lancer la recherche.
+![](images/recipes-search-view.webp)
+
+## Recherche de base
+
+La recherche de base est celle dans laquelle l'utilisateur saisit quelque chose dans la zone de recherche sans utiliser aucun
+des concepts de recherche avancée.
+
+Le mode de recherche par dĂ©faut est __Recherche complĂšte__. En d'autres termes, votre requĂȘte recherchera les champs suivants de toutes les
+recettes vous appartenant :
+- Titre
+- Description
+- Catégorie
+- Ingrédients
+- Instructions
+- Mots-clés
+- Source
+- Outils
+
+Les résultats seront classés en fonction de leur pertinence par rapport aux termes de recherche.
+
+![](images/recipes-search-query.webp)
+
+## Recherche Avancée
+
+La fonction de recherche avancĂ©e vous permet d'adapter la requĂȘte de recherche Ă des besoins spĂ©cifiques. Elle est similaire Ă l'utilisation des fonctions de recherche
+avancées de Google. Par exemple, la recherche de `magnetic declination site:.edu` dans Google donnera des résultats
+contenant les termes « déclinaison magnétique » pour les sites Web du domaine de premier niveau `.edu`.
+
+Le tableau suivant fournit des exemples de la maniÚre d'effectuer différentes recherches. Vous pouvez combiner n'importe laquelle des recherches dans n'importe quel ordre.
+
+| Recherche | Exemple |
+|----------------------------------------|--------------------------------------------------------|
+| N'importe quel champ | big green squash |
+| Par catégorie | cat:dinner |
+| Plusieurs catégories | cat:breakfast,dinner |
+| Sous-catégorie | cat:beverages:cocktails |
+| N'importe quel champ de catégorie | chicken cat:dinner |
+| Par nom | name:chicken kyiv |
+| Par nom et par catégorie | name:chicken kyiv cat:lunch |
+| N'importe quel champ, nom et catégorie | best name:chicken kyiv cat:lunch |
+| Par description | desc:tender savory stacked |
+| Plusieurs descriptions | desc:tender savory stacked,juicy crispy pieces chicken |
+| Par cuisine | cuisine:ukrainian |
+| Plusieurs cuisines | cuisine:ukrainian,japanese |
+| Par ingrédient | ing:onions |
+| Plusieurs ingrédients | ing:olive oil,thyme,butter |
+| Par instruction | ins:preheat oven 350 |
+| Plusieurs instructions | ins:preheat oven 350,melt butter |
+| Par mot-clé | tag:biscuits |
+| Plusieurs mots-clés | tag:biscuits,mardi gras |
+| Par outil | tool:frying pan |
+| Plusieurs outils | tool:frying pan,wok |
+| Par source | src:allrecipes.com |
+| Plusieurs sources | src:allrecipes.com,tasteofhome.com |
+
+### Aide
+
+Vous pouvez accĂ©der Ă la boĂźte de dialogue d'aide Ă la recherche avancĂ©e en cliquant sur le bouton d'information Ă l'extrĂȘme gauche de la barre de recherche.
+
+![](images/recipes-search-help.webp)
diff --git a/docs/website/content/fr/docs/features/recipes/share.md b/docs/website/content/fr/docs/features/recipes/share.md
new file mode 100644
index 000000000..22927227f
--- /dev/null
+++ b/docs/website/content/fr/docs/features/recipes/share.md
@@ -0,0 +1,17 @@
+---
+title: Partager
+weight: 6
+---
+
+Une recette peut ĂȘtre partagĂ©e avec toute personne disposant du lien de partage.
+
+Pour générer le lien, vous devez d'abord [afficher une recette](/guide/fr/docs/features/recipes/view).
+Ensuite, cliquez sur l'icĂŽne de partage Ă droite du titre de la recette.
+
+![](images/sharing-icon.webp)
+
+Le lien sera gĂ©nĂ©rĂ© et affichĂ© pour que vous puissiez le copier, prĂȘt Ă ĂȘtre envoyĂ© Ă vos amis.
+Sa convention de nommage est `{host}/r/{UUID}`. L'UUID empĂȘchera tout conflit avec la recette partagĂ©e
+de quelqu'un d'autre, car aucun UUID n'est identique.
+
+![](images/sharing-dialog.webp)
diff --git a/docs/website/content/fr/docs/features/recipes/view.md b/docs/website/content/fr/docs/features/recipes/view.md
new file mode 100644
index 000000000..c3571f6a2
--- /dev/null
+++ b/docs/website/content/fr/docs/features/recipes/view.md
@@ -0,0 +1,52 @@
+---
+title: Vue
+weight: 2
+---
+
+Pour visualiser une recette, vous devez dâabord cliquer sur le bouton « Afficher » ou sur lâimage dâune recette sous votre collection de recettes.
+
+![](images/view-recipe-enter.webp)
+
+Les informations de la recette vous seront ensuite présentées afin que vous puissiez les suivre pendant la cuisson.
+
+![](images/view-recipe.webp)
+
+{{< callout type="info" >}}
+Vous pouvez cliquer ou appuyer sur les ingrédients et les instructions pour les rayer.
+{{< /callout >}}
+
+## Mise Ă l'Ă©chelle
+
+Pour adapter une recette, utilisez le nombre saisi dans le carré de rendement pour sélectionner le nombre de portions que vous souhaitez préparer.
+
+Si vous souhaitez préparer plus de portions, saisissez un nombre plus élevé.
+Si vous souhaitez en préparer moins, saisissez un nombre plus faible.
+
+Par exemple, la recette ci-dessus donne 4 portions. Pour doubler la recette, définissez le nombre de portions à 8.
+La recette sera alors automatiquement adaptée pour préparer 8 portions de shiitake et de riz au poulet, comme indiqué ci-dessous.
+
+![](images/view-recipe-scale.webp)
+
+{{< callout type="warning" >}}
+La fonction de mise à l'échelle ne met actuellement à l'échelle que les ingrédients, laissant les instructions intactes. Cela
+signifie que si une instruction mentionne une quantité spécifique d'un ingrédient, cette quantité ne sera pas mise à l'échelle.
+Cette limitation sera abordée à l'avenir.
+{{< /callout >}}
+
+## Vidéos
+
+Il est possible de joindre des vidéos aux recettes. Chaque vidéo sera convertie au format de fichier multimédia audiovisuel
+[WebM](https://en.wikipedia.org/wiki/WebM) Ă l'aide de [FFmpeg](https://en.wikipedia.org/wiki/FFmpeg).
+
+FFmpeg est inclus dans la version Docker.
+
+Sinon :
+- Si vous utilisez Windows, le programme d'installation tentera de l'installer Ă l'aide de [winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/).
+- Si vous utilisez Linux, vous devez l'installer vous-mĂȘme en exĂ©cutant la commande appropriĂ©e pour votre distribution.
+- Si vous utilisez macOS, vous devez l'installer vous-mĂȘme en exĂ©cutant `brew install ffmpeg`.
+
+La conversion vidĂ©o peut ĂȘtre lente. Par consĂ©quent, la vidĂ©o peut ne pas ĂȘtre immĂ©diatement disponible pour la visualisation aprĂšs l'avoir jointe Ă une recette.
+
+Les recettes des sites Web incluent parfois des vidéos, par exemple [celle-ci](https://www.allrecipes.com/recipe/10813/best-chocolate-chip-cookies/).
+Elles seront extraites automatiquement et seront affichées dans le carrousel d'images. Elles ne sont pas téléchargées localement ni
+converties en WebM à l'aide de FFmpeg. Ils sont conservés dans leur format d'origine.
diff --git a/docs/website/content/fr/docs/features/recipes/wakelock.md b/docs/website/content/fr/docs/features/recipes/wakelock.md
new file mode 100644
index 000000000..7bd404728
--- /dev/null
+++ b/docs/website/content/fr/docs/features/recipes/wakelock.md
@@ -0,0 +1,28 @@
+---
+title: Verrouillage de réveil
+weight: 8
+next: /docs/features/cookbooks
+---
+
+Imaginez que vous prĂ©parez une recette Ă partir d'un appareil mobile. Vous rassemblez tous les ingrĂ©dients et vous ĂȘtes prĂȘt Ă commencer,
+mais votre appareil se met en veille. Vous déverrouillez votre appareil et commencez à vous salir les mains dans la farine. Votre appareil
+s'endort à nouveau. Vous vous lavez les mains, déverrouillez votre téléphone et continuez la recette. Votre appareil se met
+en veille Ă nouveau. Vous ĂȘtes frustrĂ©. Ce processus se rĂ©pĂšte encore et encore. Votre appareil est sale et votre nourriture aussi.
+
+Vous ne voulez pas que l'appareil se mette en veille pendant que vous cuisinez.
+
+Recipya rĂ©sout ce problĂšme en fournissant un wakelock du navigateur lors de la visualisation d'une recette, empĂȘchant ainsi l'appareil
+de se mettre en veille.
+
+{{< callout type="info" >}}
+Le wakelock est activé automatiquement lors de la visualisation d'une recette.
+{{< /callout >}}
+
+Sur les navigateurs pris en charge, vous remarquerez une icĂŽne d'ampoule Ă l'extrĂȘme gauche du titre d'une recette. Lorsque l'ampoule
+est allumée, le wakelock est activé et l'écran ne se met pas en veille.
+
+![](images/wakelock-on.webp)
+
+Lorsqu'il est désactivé, le wakelock est désactivé et l'écran finira par se mettre en veille.
+
+![](images/wakelock-off.webp)
diff --git a/docs/website/content/fr/docs/features/reports.md b/docs/website/content/fr/docs/features/reports.md
new file mode 100644
index 000000000..b118e0657
--- /dev/null
+++ b/docs/website/content/fr/docs/features/reports.md
@@ -0,0 +1,52 @@
+---
+title: Rapports
+weight: 8
+prev: /docs/features/recipes
+---
+
+La page des rapports vous permet de visualiser les journaux d'opérations aprÚs l'importation de recettes.
+
+## Accéder
+
+Il existe deux façons d'accéder à la page.
+
+### Menu avatar
+
+![](images/reports-access.webp)
+
+La page des rapports répertorie tous les rapports dans le volet de gauche. Aucun rapport ne sera sélectionné initialement.
+
+![](images/reports-fresh.webp)
+
+### AprĂšs les importations
+
+![](images/reports-access-after.webp)
+
+La page des rapports répertorie également tous les rapports dans le volet de gauche. Le rapport le plus récent sera sélectionné.
+
+![](images/reports-latest.webp)
+
+## Structure
+
+La page des rapports est structurée en deux volets d'affichage. Celui de gauche répertorie tous les rapports disponibles pour le
+type de rapport, tandis que le volet de droite affiche le contenu du rapport sélectionné. Le type de rapport est sélectionné dans la
+barre latérale à cÎté de la liste des rapports.
+
+Vous pouvez choisir parmi les types suivants :
+- **Importation** : un rapport d'importation est un rapport généré aprÚs l'importation de recettes.
+-
+### Volet gauche
+
+Le volet de gauche répertorie tous les rapports du type sélectionné. Chaque élément affiche les informations suivantes :
+- **Time stamp** : le titre de l'Ă©lĂ©ment. Indique le moment oĂč le rapport a Ă©tĂ© gĂ©nĂ©rĂ©.
+- **Execution time** : le temps nécessaire à l'importation des recettes.
+- **Log count** : situé à droite de l'heure d'exécution. Indique le nombre d'entrées associées au rapport.
+
+### Volet droit
+
+Le volet de droite affiche toutes les entrées de journal associées au rapport sélectionné dans un tableau. Vous pouvez trier n'importe quelle colonne, par ordre décroissant ou
+croissant, en cliquant sur son en-tĂȘte.
+
+Les opérations ayant échoué seront surlignées en rouge.
+
+![](images/reports-errors.webp)
diff --git a/docs/website/content/fr/docs/features/updater.md b/docs/website/content/fr/docs/features/updater.md
new file mode 100644
index 000000000..df9b122e3
--- /dev/null
+++ b/docs/website/content/fr/docs/features/updater.md
@@ -0,0 +1,21 @@
+---
+title: Mise Ă jour
+weight: 9
+prev: /docs/features/reports
+---
+
+Vous pouvez mettre à jour l'application depuis l'application Web dÚs qu'une mise à jour est disponible. Vos données seront préalablement sauvegardées
+sous `/path/to/recipya/Backup/global` au cas oĂč quelque chose tourne mal. Le vĂ©rificateur de mise Ă jour est exĂ©cutĂ© une fois tous les trois jours.
+
+Vous remarquerez d'abord un badge rose `New update` sur votre avatar.
+
+![](images/update-available.webp)
+
+Cliquez sur votre avatar, accédez à la boßte de dialogue des paramÚtres et sélectionnez l'onglet
+`About`. Enfin, cliquez sur le bouton `Update`.
+
+![](images/update-button.webp)
+
+En cas de succĂšs, l'application se rechargera automatiquement aprĂšs cinq secondes.
+
+![](images/update-success-restart.webp)
diff --git a/docs/website/content/fr/docs/installation/_index.md b/docs/website/content/fr/docs/installation/_index.md
new file mode 100644
index 000000000..c32578932
--- /dev/null
+++ b/docs/website/content/fr/docs/installation/_index.md
@@ -0,0 +1,32 @@
+---
+title: Installation
+weight: 2
+next: /docs/installation/system-requirements
+prev: /docs/features/integrations
+---
+
+DĂ©couvrez comment installer Recipya.
+
+{{< cards >}}
+ {{< card link="system-requirements/"
+ title="Prérequis"
+ icon="newspaper"
+ subtitle="DĂ©couvrez quelle est la configuration systĂšme requise." >}}
+ {{< card link="build/config-file/"
+ title="Fichier de configuration"
+ subtitle="Explorer le fichier de configuration."
+ icon="newspaper" >}}
+ {{< card link="docker/"
+ title="Docker"
+ subtitle="Installez l'application avec Docker."
+ icon="newspaper" >}}
+ {{< card link="build/"
+ title="Version release"
+ subtitle="Installez une version release de l'application."
+ icon="newspaper" >}}
+ {{< card link="windows-users/"
+ title="Utilisateurs Windows"
+ subtitle="Informations importantes pour les utilisateurs Windows."
+ icon="newspaper" >}}
+{{< /cards >}}
+
diff --git a/docs/website/content/fr/docs/installation/build/Install.md b/docs/website/content/fr/docs/installation/build/Install.md
new file mode 100644
index 000000000..530c17ca1
--- /dev/null
+++ b/docs/website/content/fr/docs/installation/build/Install.md
@@ -0,0 +1,76 @@
+---
+title: Install
+weight: 1
+prev: /docs/installation/build
+---
+
+Cette section cible une installation sans Docker.
+
+Les versions portables et autonomes sont disponibles sur la [page des versions](https://github.com/reaper47/recipya/releases) sur GitHub.
+La [version nocturne](https://github.com/reaper47/recipya/releases/tag/nightly) est mise Ă jour tous les soirs si la branche principale a de nouveaux commits.
+
+Tout dâabord, tĂ©lĂ©chargez la version du logiciel que vous souhaitez installer compatible avec votre systĂšme et extrayez le fichier zip.
+Veuillez consulter le tableau des [plateformes prises en charge](/guide/fr/docs/installation/system-requirements) si vous ne savez pas quel fichier télécharger.
+
+Ensuite, démarrez le serveur en ouvrant une invite de commande dans le dossier et exécutez la commande suivante.
+L'application effectuera une configuration de démarrage unique si ce n'est déjà fait.
+
+```bash
+./recipya serve
+```
+
+Vous pouvez désormais accéder au site Internet à l'adresse indiquée.
+
+## Example
+
+Supposons que vous ayez un ordinateur Windows 11 et que vous souhaitiez y installer Recipya v1.2.0.
+
+{{% steps %}}
+
+### AccĂšs
+
+Vous accéderez d'abord à la [page des versions](https://github.com/reaper47/recipya/releases).
+
+### Télécharger
+
+Identifiez la version « v1.2.0 » et téléchargez « recipya-windows-amd64.zip » dans la section **Assets**.
+
+### Extraire
+
+Extrayez le fichier zip sur votre ordinateur.
+
+### Exécuter
+
+130 / 5,000
+Ouvrez une [invite de commande](https://en.wikiversity.org/wiki/Command_Prompt/Open) et accédez au dossier que vous avez précédemment extrait.
+
+```text
+cd C:\path\to\recipya
+```
+
+Ensuite, exécutez Recipya une fois que votre invite de commande est dans son dossier.
+
+```text
+.\recipya serve
+```
+
+### Profite bien
+
+Ouvrez votre navigateur à l'adresse spécifiée dans le texte de l'invite de commande.
+
+Si vous voyez le résultat suivant:
+```text
+OK FDC database
+OK Configuration file
+Recipya is properly set up
+File locations:
+ - Backups: C:\Users\\AppData\Roaming\Recipya\Backup
+ - Database: C:\Users\\AppData\Roaming\Recipya\Database
+ - Images: C:\Users\\AppData\Roaming\Recipya\Images
+ - Logs: C:\Users\\AppData\Roaming\Recipya\Logs
+2024/05/23 07:46:46 goose: no migrations to run. current version: 20240522133726
+```
+
+Tout est beau et vous accéderez ensuite à « http://127.0.0.1:8078 ».
+
+{{% /steps %}}
diff --git a/docs/website/content/fr/docs/installation/build/_index.md b/docs/website/content/fr/docs/installation/build/_index.md
new file mode 100644
index 000000000..2698a5efd
--- /dev/null
+++ b/docs/website/content/fr/docs/installation/build/_index.md
@@ -0,0 +1,19 @@
+---
+title: Version de logiciel
+weight: 2
+next: /docs/installation/build/install
+prev: /docs/installation/system-requirements
+---
+
+Vous pouvez installer une version stable de Recipya si vous n'utilisez pas Docker. C'est simple Ă faire.
+
+{{< cards >}}
+ {{< card link="install"
+ title="Installation"
+ icon="newspaper"
+ subtitle="DĂ©couvrez comment installer la version release." >}}
+ {{< card link="config-file"
+ title="Fichier de configuration"
+ subtitle="En savoir plus sur le fichier de configuration important."
+ icon="newspaper" >}}
+{{< /cards >}}
diff --git a/docs/website/content/fr/docs/installation/build/config-file.md b/docs/website/content/fr/docs/installation/build/config-file.md
new file mode 100644
index 000000000..7516a769b
--- /dev/null
+++ b/docs/website/content/fr/docs/installation/build/config-file.md
@@ -0,0 +1,27 @@
+---
+title: Configuration File
+weight: 2
+next: /docs/installation/docker
+---
+
+Le [fichier de configuration](https://github.com/reaper47/recipya/blob/main/deploy/config.example.json) définit des variables importantes pour l'application.
+Examinons chacun d'eux.
+
+{{< callout type="info" >}}
+L'administrateur peut modifier la plupart de ces options Ă partir des paramĂštres.
+{{< /callout >}}
+
+- **email**
+ - **from**: L'adresse e-mail de votre compte [SendGrid](https://sendgrid.com/). DĂ©faut: `""`.
+ - **sendGridAPIKey**: Votre clĂ© API [SendGrid](https://app.sendgrid.com/settings/api_keys). Le niveau gratuit devrait ĂȘtre suffisant pour vos besoins. DĂ©faut: `""`.
+- **integrations**
+ - **azureDocumentIntelligence**
+ - **key**: La variable *CLà 1* affiché dans l'onglet *Clés et point de terminaison* de votre ressource [Azure AI Document Intelligence](https://azure.microsoft.com/en-us/products/ai-services/ai-document-intelligence) dans le [portail Azure](https://portal.azure.com/#home). Défaut: `""`.
+ - **endpoint**: La variable *Endpoint* affichée dans l'onglet *Clés et point de terminaison* de votre ressource *Document Intelligence* dans le portail Azure. Défaut: `""`.
+- **server**
+ - **autologin**: S'il faut se connecter automatiquement Ă l'application. Utile lorsque vous n'avez pas besoin de comptes d'utilisateurs. Peut ĂȘtre `true` ou `false`. DĂ©fault: `false`.
+ - **isDemo**: Si lâapplication est une version dĂ©mo. Peut ĂȘtre `true` ou `false`. DĂ©fault: `false`.
+ - **isProduction**: Si l'application est en production. Peut ĂȘtre `true` ou `false`. DĂ©fault: `false`.
+ - **noSignups**: S'il faut désactiver les enregistrements de comptes utilisateur. Définissez sur `true` lorsque vous ne souhaitez pas que les gens créent des comptes. Défault: `false`.
+ - **port**: Le port via lequel l'application sera servie s'il est localhost. __Est requis__.
+ - **url**: Le site web sur lequel l'application est diffusée. Cette URL servira de lien de base dans les e-mails. Défault: `http://0.0.0.0`.
diff --git a/docs/website/content/fr/docs/installation/docker.md b/docs/website/content/fr/docs/installation/docker.md
new file mode 100644
index 000000000..48fefbaca
--- /dev/null
+++ b/docs/website/content/fr/docs/installation/docker.md
@@ -0,0 +1,137 @@
+---
+title: Docker
+weight: 3
+---
+
+Une image Docker [stable](https://hub.docker.com/layers/reaper99/recipya/v1.2.0/images/sha256-a32780f33d0c50388ebb955fb837f6ee9b1339987e3898a53ddd5b1f737c7f6e?context=repo) est produite Ă chaque version.
+Une image [instable](https://hub.docker.com/layers/reaper99/recipya/nightly/images/sha256-b2238a11a53982953df5bbcfd7796a19fa382abf75d316b62fa05ac1c867332c?context=repo) est produite le soir Ă chaque fois la branche `main` a de nouveaux commits.
+
+Vous pouvez installer l'application Ă l'aide de [Docker](https://www.docker.com/) ou de [Docker Compose](https://docs.docker.com/compose/).
+
+## Utiliser Docker
+
+Il faut d'abord tirer l'image.
+
+```bash
+docker pull reaper99/recipya:nightly
+```
+
+Ensuite, exécutez l'image. Les variables d'environnement `-e` sont décrites ci-dessous.
+
+```bash
+docker run -d \
+ --name recipya
+ --restart unless-stopped
+ -p 8085:8078 \
+ -v recipya-data:/root/.config/Recipya \
+ -e RECIPYA_SERVER_PORT=8078 \
+ reaper99/recipya:nightly
+```
+
+Recipya est accessible depuis votre machine hĂŽte Ă l'adresse [http://localhost:8085](http://localhost:8085).
+
+### Mettre Ă jour votre conteneur
+
+Exécutez la commande ci-dessous pour une mise à jour rapide avec Watchtower.
+
+N'oubliez pas de remplacer `recipya` par le nom réel de votre conteneur s'il diffÚre et de [sauvegarder les données de votre volume](#sauvegarder-un-volume).
+
+```bash
+docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once recipya
+```
+
+### Synology NAS
+
+La commande Docker suivante devrait ĂȘtre utilisĂ©e si vous utilisez Synology.
+
+```bash
+docker run -d \
+ --name recipya
+ --restart unless-stopped
+ -p 8085:8078 \
+ -v /shared/path/here:/root/.config/Recipya/:rw \
+ -e RECIPYA_SERVER_PORT=8078 \
+ reaper99/recipya:nightly
+```
+
+## Utiliser Docker Composer
+
+Vous pouvez utiliser Docker Compose pour exécuter le conteneur. Tout d'abord, téléchargez le fichier [compose.yaml](https://github.com/reaper47/recipya/blob/main/deploy/compose.yaml).
+Modifier les sections `environment` et `ports`. Les variables d'environnement sont décrites ci-dessous. Ensuite, démarrez l'application.
+
+```bash
+docker-compose up -d
+```
+
+Accédez à l'application via votre navigateur à l'adresse `http://localhost:[host port]`.
+
+Si vous utilisez Windows et que vous avez l'intention d'accéder à l'application sur d'autres appareils de votre réseau domestique,
+assurez-vous d'« Autoriser la connexion » de la rÚgle de pare-feu Windows Defender entrant « Docker Desktop Backend ».
+
+### Mettre Ă jour votre conteneur
+
+Suivez ces Ă©tapes pour mettre Ă jour Recipya. N'oubliez pas de [sauvegarder vos donnĂ©es de volume](#sauvegarder-un-volume) au cas oĂč quelque chose tournerait mal.
+
+1. Tirez la derniĂšre image
+```bash
+docker compose pull
+```
+2. Recréez le conteneur avec la derniÚre image
+```bash
+docker compose up -d
+```
+
+## Variables d'environnement
+
+| Variable | Description |
+|-----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| RECIPYA_DI_ENDPOINT | La variable **Endpoint** affichée dans l'onglet *Clés et point de terminaison* de votre [Azure AI Intelligence documentaire](https://azure.microsoft.com/en-us/products/ai-services/ai-document-intelligence) ressource dans le portail Azure.
Par défaut: `""`. |
+| RECIPYA_DI_KEY | La variable **KEY 1** affichée dans l'onglet *Clés et point de terminaison* de votre ressource *Document Intelligence* dans le [portail Azure](https://portal.azure.com/#home).
Par défaut: `""`. |
+| RECIPYA_EMAIL | L'adresse e-mail de votre compte [SendGrid](https://sendgrid.com/).
Par défaut: `""`. |
+| RECIPYA_EMAIL_SENDGRID | Your [SendGrid](https://app.sendgrid.com/settings/api_keys) API key. The free tier should be sufficient for your needs.
Default: `""`. |
+| RECIPYA_SERVER_AUTOLOGIN | Si vous souhaitez vous connecter automatiquement Ă l'application. Peut ĂȘtre `true` ou `false`.
Par défaut: `false`. |
+| RECIPYA_SERVER_BYPASS_GUIDE | S'il faut accĂ©der directement Ă la page de connexion en cas d'anonymat. Peut ĂȘtre `true` ou `false`.
Par défaut: `false`. |
+| RECIPYA_SERVER_IS_DEMO | Si l'application est une version de dĂ©monstration. Peut ĂȘtre `true` ou `false`.
Par défaut: `false`. |
+| RECIPYA_SERVER_IS_PROD | Si l'application est en production. Peut ĂȘtre `true` ou `false`.
Par défaut : `false`. |
+| RECIPYA_SERVER_NO_SIGNUPS | S'il faut désactiver les enregistrements de comptes utilisateur. Défini sur « true » lorsque vous ne souhaitez pas que les gens créent des comptes.
Par défaut: « false ». |
+| RECIPYA_SERVER_PORT | Le port via lequel l'application sera servie si localhost.
**Est requis**. |
+| RECIPYA_SERVER_URL | Le site Web sur lequel l'application est diffusée. Cette URL servira de lien de base dans les e-mails.
Par défaut: `http://0.0.0.0`. |
+
+## Sauvegarder un volume
+
+Il est d'une importance vitale de sauvegarder vos donnĂ©es de volume avant de mettre Ă jour le logiciel au cas oĂč quelque chose tournerait mal et que vous perdriez votre base de donnĂ©es.
+
+### Docker Desktop
+
+Si vous utilisez Docker Desktop, alors
+1. Sélectionnez l'onglet « Volumes » à gauche
+2. Identifiez le volume «recipya-data»
+3. Cliquez sur le bouton d'action « Exporter »
+4. Sélectionnez « Fichier local », sélectionnez le répertoire cible et cliquez sur « Exporter ».
+
+### Terminale
+
+Sinon, exécutez la commande suivante:
+```bash
+docker run --rm --volumes-from recipya -v $(pwd):/backup ubuntu tar cvf /backup/recipya-volume-backup.tar /root/.config/Recipya
+```
+
+## Restaurer le volume Ă partir d'une sauvegarde
+
+Supposons que vous ayez mis à jour l'image Docker et que vous ayez par conséquent perdu vos données. Grùce à une sauvegarde externe, la journée sera sauvée.
+
+### Docker Desktop
+
+Suivez ces étapes pour restaurer vos données à l'aide de Docker desktop:
+1. Sélectionnez l'onglet « Volumes » à gauche
+2. Identifiez le volume «recipya-data»
+3. Cliquez sur le bouton d'action « Importer »
+4. Sélectionnez le volume sauvegardé et cliquez sur « Importer »
+
+### Terminale
+
+Sinon, exécutez la commande suivante :
+
+```bash
+docker run --rm --volumes-from recipya -v $(pwd):/backup ubuntu bash -c "cd /root && tar xvf /backup/recipya-volume-backup.tar --strip 1"
+```
diff --git a/docs/website/content/fr/docs/installation/integrations.md b/docs/website/content/fr/docs/installation/integrations.md
new file mode 100644
index 000000000..c7818def1
--- /dev/null
+++ b/docs/website/content/fr/docs/installation/integrations.md
@@ -0,0 +1,48 @@
+---
+title: Intégrations
+weight: 5
+---
+
+Recipya utilise les services tiers suivants pour améliorer l'expérience du produit.
+
+## SendGrid
+
+[SendGrid](https://sendgrid.com) fournit un service cloud qui aide les entreprises Ă envoyer des e-mails.
+Ils offrent un [forfait gratuit](https://sendgrid.com/en-us/pricing) qui vous permet d'envoyer jusqu'Ă 100 e-mails par jour.
+
+Au sein de Recipya, le module email est utilisé pour les événements suivants :
+- Envoyer un email de confirmation Ă un utilisateur inscrit.
+- Envoyer un e-mail de mot de passe oublié
+
+Si aucune de ces raisons ne vous persuade d'utiliser ce service, laissez les champs `email.from` et `email.sendGridAPIKey` dans le
+[fichier de configuration](https://github.com/reaper47/recipya/blob/main/) déployer/config.example.json) vide. Aucun email ne sera alors envoyé.
+
+## Azure AI Intelligence documentaire
+
+[Azure AI Intelligence documentaire](https://azure.microsoft.com/en-us/products/ai-services/ai-vision) est un service d'intelligence
+artificielle qui applique l'apprentissage automatique avancé pour extraire automatiquement et avec précision du texte, des paires clé-valeur,
+des tableaux et des structures Ă partir de documents. Microsoft offre un [plan gratuit](https://azure.microsoft.com/en-us/pricing/details/ai-document-intelligence/)
+(F0) qui vous permet d'effectuer jusqu'Ă 500 transactions gratuites par mois.
+
+Au sein de Recipya, ce service est utilisé pour [numériser des recettes](/guide/fr/docs/features/recipes/add#scan).
+
+Si vous ne prévoyez pas de numériser des recettes, laissez les champs `integrations.azureDocumentIntelligence.key` et `integrations.azureDocumentIntelligence.endpoint`
+dans le [fichier de configuration](https://github.com/reaper47/recipya/blob/main/deploy/config.example.json) vide.
+Laissez les variables d'environnement `RECIPYA_DI_ENDPOINT` et `RECIPYA_DI_KEY` vides si vous utilisez Docker.
+Cette fonctionnalité sera alors désactivée.
+
+Suivez ces étapes pour utiliser cette intégration:
+1. Obtenez un abonnement Azure. Vous pouvez [en créer un gratuitement](https://azure.microsoft.com/free/cognitive-services/).
+2. Ajoutez une [instance Intelligence documentaire](https://portal.azure.com/#create/Microsoft.CognitiveServicesFormRecognizer) dans le portail Azure. Vous pouvez utiliser le niveau tarifaire gratuit (F0) pour essayer le service.
+3. Sous **Détails de l'instance**, sélectionnez **Région** _East US_, _West US2_ ou _West Europe_. Les autres régions sont incompatibles avec cette ressource.
+4. Une fois votre ressource déployée, sélectionnez *Clés et point de terminaison* sous *Gestion des ressources* dans la barre de navigation.
+ ![alt text](https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/media/containers/keys-and-endpoint.png?view=doc-intel-3.1.0)
+5. Copiez *KEY 1* dans le champ correspondant dans les paramĂštres de Recipya. Vous pouvez Ă©galement le copier dans le champ **integrations.azureDocumentIntelligence.key** de votre fichier de configuration ou dans la variable d'environnement `RECIPYA_DI_KEY` si vous utilisez Docker.
+6. Copiez *Endpoint* dans le champ correspondant dans les paramĂštres de Recipya. Vous pouvez Ă©galement le copier dans le champ **integrations.azureDocumentIntelligence.endpoint** de votre fichier de configuration ou dans la variable d'environnement `RECIPYA_DI_ENDPOINT` si vous utilisez Docker.
+7. Redémarrez Recipya et testez la connexion *Azure AI Document Intelligence* à partir des paramÚtres.
+
+### Limitations
+
+- Pour les PDF et TIFF, jusqu'Ă 2000 pages peuvent ĂȘtre traitĂ©es (avec un abonnement gratuit, seules les deux premiĂšres pages sont traitĂ©es).
+- La taille du fichier pour l'analyse des documents est de 500 Mo pour le niveau payant (S0) et de 4 Mo pour le niveau gratuit (F0).
+- Si vos fichiers PDF sont verrouillés par mot de passe, vous devez supprimer le verrou avant de les soumettre.
diff --git a/docs/website/content/fr/docs/installation/system-requirements.md b/docs/website/content/fr/docs/installation/system-requirements.md
new file mode 100644
index 000000000..3ee4429b6
--- /dev/null
+++ b/docs/website/content/fr/docs/installation/system-requirements.md
@@ -0,0 +1,48 @@
+---
+title: Prérequis
+weight: 1
+next: /docs/installation/build/
+prev: /docs/installation/
+---
+
+## Configuration requise
+
+Le tableau suivant répertorie les plateformes et appareils pris en charge.
+
+| Plateforme | Explication | Exemples d'appareils |
+|---------------|-----------------------------------------------|-------------------------------------------------------------------------|
+| darwin/amd64 | macOS sur architecture Intel 64 bits (x86-64) | Apple MacBook, iMac, Mac Mini, Mac Pro |
+| darwin/arm64 | macOS sur architecture ARM64 | MacBook Air (M1), MacBook Pro (M1), Mac Mini (M1) |
+| linux/amd64 | Linux sur architecture x86 64 bits (x86-64) | Ordinateurs de bureau, ordinateurs portables, serveurs, instances cloud |
+| linux/arm64 | Linux sur architecture ARMv8 64 bits | Raspberry Pi 3e/4e génération, smartphones modernes |
+| windows/amd64 | Windows sur architecture x86 64 bits | PC, serveurs et machines virtuelles Windows modernes |
+| windows/arm64 | Windows sur architecture ARM64 | Microsoft Surface Pro X, appareils Windows basés sur ARM |
+
+De plus, vous devez disposer d'au moins 300 Mo d'espace libre.
+
+## Compatibilité du navigateur
+
+| Navigateur | Version | Compatibilité |
+|------------|:-------:|:----------------------:|
+| Brave | 37+ | {{< icon "check" >}} |
+| Chrome | 114+ | {{< icon "check" >}} |
+| Edge | 114+ | {{< icon "check" >}} |
+| Firefox | 125+ | {{< icon "check" >}} |
+| IE | N/A | {{< icon "x" >}} |
+| Opera | 100+ | {{< icon "check" >}} |
+| Safari | 17+ | {{< icon "check" >}} |
+| Vanadium | 114+ | {{< icon "check" >}} |
+
+## DĂ©pendances logicielles
+
+| Logiciel | Version | Facultatif |
+|----------|:-------:|:--------------------:|
+| FFmpeg | 7+ | {{< icon "check" >}} |
+
+### FFmpeg
+
+[FFmpeg](https://en.wikipedia.org/wiki/FFmpeg) est utilisé pour convertir des fichiers vidéo au format de fichier multimédia audiovisuel [WebM](https://en.wikipedia.org/wiki/WebM).
+Il est inclus dans l'image Docker. Sinon, il sera automatiquement installé si vous utilisez Windows.
+Si vous utilisez macOS ou Linux, vous devez l'installer manuellement.
+
+La fonction vidéo sera désactivée si FFmpeg n'est pas installé. Vous n'avez pas besoin de ce logiciel si vous n'avez pas l'intention d'ajouter des vidéos aux recettes.
diff --git a/docs/website/content/fr/docs/installation/windows-users.md b/docs/website/content/fr/docs/installation/windows-users.md
new file mode 100644
index 000000000..392a246f3
--- /dev/null
+++ b/docs/website/content/fr/docs/installation/windows-users.md
@@ -0,0 +1,32 @@
+---
+title: Utilisateurs Windows
+weight: 4
+next: /docs/integrations
+---
+
+Veuillez suivre ces [instructions](/guide/fr/docs/installation/build/) pour installer Recipya sans Docker.
+
+## AccÚs à l'ensemble du réseau
+
+Si vous avez l'intention d'accéder au site Web sur d'autres appareils au sein de votre réseau domestique, veuillez vous assurer que le programme est autorisé via le pare-feu.
+Pour vérifier:
+
+1. Ouvrez le « ParamÚtre de protection pare-feu et réseau »
+2. Cliquez sur « Autoriser une application via le pare-feu »
+3. DĂ©filer jusqu'Ă recipya*.exe
+4. Assurez-vous que les cases privées et publiques sont cochées
+5. Appliquez les paramĂštres
+6. Recherchez l'adresse IP de votre machine (ParamĂštres Wi-Fi -> Cliquez sur le rĂ©seau auquel vous ĂȘtes connectĂ© -> Adresse IPv4)
+7. Sur votre autre appareil, accédez http://[adresse IPv4]:[port]
+
+## Windows Defender
+
+Si vous avez exécuté le binaire « recipya.exe » à partir de la page des versions de GitHub et que Windows Defender a mis l'exécutable
+en quarantaine, vous devez alors ajouter le dossier ou le fichier à la liste d'exclusion. Cela se produit car les versions ne sont pas encore signées.
+
+1. DĂ©compressez une nouvelle instance de la build.
+2. Ouvrez la sécurité Windows.
+3. Sélectionnez « Protection contre les virus et les menaces ».
+4. Cliquez sur « Gérer les paramÚtres » sous « ParamÚtres de protection contre les virus et les menaces ».
+5. Cliquez sur « Ajouter ou supprimer des exclusions » sous « Exclusions ».
+6. Cliquez sur le bouton « Ajouter une exclusion », sélectionnez le fichier et sélectionnez l'exécutable.
diff --git a/docs/website/hugo.yaml b/docs/website/hugo.yaml
index 59e32e345..8a5bca7ca 100644
--- a/docs/website/hugo.yaml
+++ b/docs/website/hugo.yaml
@@ -6,16 +6,91 @@ enableInlineShortcodes: true
enableRobotsTXT: true
enableGitInfo: true
-languageCode: en-us
defaultContentLanguage: en
+defaultContentLanguageInSubdir: true
languages:
en:
+ contentDir: content/en
languageName: English
- weight: 1
+ languageCode: en-US
title: Recipya
+ weight: 1
+ menu:
+ main:
+ - name: Open App
+ params:
+ rel: external
+ url: /login
+ weight: 1
+ - identifier: documentation
+ name: Documentation
+ pageRef: /docs
+ weight: 2
+ - identifier: blog
+ name: Blog
+ pageRef: /blog
+ weight: 3
+ - identifier: about
+ name: About
+ pageRef: /about
+ weight: 4
+ - identifier: searchPlaceholder
+ name: Search
+ weight: 5
+ params:
+ type: search
+ - identifier: sponsor
+ name: Sponsor
+ url: "https://github.com/sponsors/reaper47"
+ weight: 6
+ params:
+ icon: heart
+ - name: GitHub
+ weight: 7
+ url: "https://github.com/reaper47/recipya"
+ params:
+ icon: github
fr:
+ contentDir: content/fr
languageName: Français
+ languageCode: fr-CA
+ title: Recipya
weight: 2
+ menu:
+ main:
+ - name: Ouvrir l'application
+ params:
+ rel: external
+ url: /login
+ weight: 1
+ - identifier: documentation
+ name: Documentation
+ pageRef: /docs
+ weight: 2
+ - identifier: blog
+ name: Blog
+ pageRef: /blog
+ weight: 3
+ - identifier: about
+ name: Ă propos
+ pageRef: /about
+ weight: 4
+ - identifier: searchPlaceholder
+ name: Search
+ weight: 5
+ params:
+ type: search
+ - identifier: sponsor
+ name: Sponsor
+ url: "https://github.com/sponsors/reaper47"
+ weight: 6
+ params:
+ icon: heart
+ - name: GitHub
+ weight: 7
+ url: "https://github.com/reaper47/recipya"
+ params:
+ icon: github
markup:
goldmark:
diff --git a/docs/website/i18n/en.yaml b/docs/website/i18n/en.yaml
deleted file mode 100644
index 7e5a7a223..000000000
--- a/docs/website/i18n/en.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-backToTop: "Scroll to top"
-blog: Blog
-changeLanguage: "Change language"
-changeTheme: "Change theme"
-copyCode: "Copy code"
-copyright: "© 2023 Marc-André Charland"
-dark: "Dark"
-documentation: Documentation
-editThisPage: "Edit this page on GitHub â"
-lastUpdated: "Last updated on"
-light: "Light"
-noResultsFound: "No results found."
-onThisPage: "On this page"
-poweredBy: "Powered by Hextra"
-readMore: "Read more â"
-searchPlaceholder: "Search..."
-sponsor: Sponsor
\ No newline at end of file
diff --git a/docs/website/i18n/fr.yaml b/docs/website/i18n/fr.yaml
deleted file mode 100644
index 59f17b842..000000000
--- a/docs/website/i18n/fr.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-documentation: Documentation
-blog: Blog
-searchPlaceholder: "Rechercher..."
-sponsor: Sponsor
\ No newline at end of file
diff --git a/docs/website/i18n/sl.yaml b/docs/website/i18n/sl.yaml
deleted file mode 100644
index 6849fd85b..000000000
--- a/docs/website/i18n/sl.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-backToTop: "Pomakni se na vrh"
-blog: Blog
-changeLanguage: "Zamenjaj jezik"
-changeTheme: "Zamenjaj temo"
-copyCode: "Kopiraj kodo"
-copyright: "© 2023 Marc-André Charland"
-dark: "Temna"
-documentation: Dokumentacija
-editThisPage: "Uredi to stran na GitHub â"
-lastUpdated: "Zadnja posodobitev ob"
-light: "Svetla"
-noResultsFound: "Ni zadetkov."
-onThisPage: "Na tej strani"
-poweredBy: "Stran poganja Hextra"
-readMore: "Preberi veÄ â"
-searchPlaceholder: "IĆĄÄi..."
-sponsor: Sponzor
\ No newline at end of file
diff --git a/internal/server/handlers_general.go b/internal/server/handlers_general.go
index a77f0070b..e68e4765c 100644
--- a/internal/server/handlers_general.go
+++ b/internal/server/handlers_general.go
@@ -71,7 +71,7 @@ func (s *Server) indexHandler(w http.ResponseWriter, r *http.Request) {
return
}
- redirectURL := "/guide"
+ redirectURL := "/guide/en"
if app.Config.Server.IsBypassGuide {
redirectURL = "/auth/login"
}
diff --git a/internal/server/handlers_general_test.go b/internal/server/handlers_general_test.go
index e19037c4a..f2b3d8cc9 100644
--- a/internal/server/handlers_general_test.go
+++ b/internal/server/handlers_general_test.go
@@ -85,7 +85,7 @@ func TestHandlers_General_Index(t *testing.T) {
assertStatus(t, rr.Code, http.StatusSeeOther)
got := getBodyHTML(rr)
want := []string{
- `See Other`,
+ `See Other`,
}
assertStringsInHTML(t, got, want)
notWant := []string{
@@ -136,7 +136,7 @@ func TestHandlers_General_Index(t *testing.T) {
``,
``,
diff --git a/internal/server/handlers_settings_test.go b/internal/server/handlers_settings_test.go
index 001fad0af..8a84d8f19 100644
--- a/internal/server/handlers_settings_test.go
+++ b/internal/server/handlers_settings_test.go
@@ -117,7 +117,7 @@ func TestHandlers_Settings(t *testing.T) {
assertStatus(t, rr.Code, http.StatusOK)
assertStringsInHTML(t, getBodyHTML(rr), []string{
- `Recipya Version
v1.3.0 (update available)
Last checked: 0001-01-01
Last updated: 0001-01-01
Read the release notes
`,
+ `
Recipya Version
v1.3.0 (update available)
Last checked: 0001-01-01
Last updated: 0001-01-01
Read the release notes
`,
})
})
@@ -158,7 +158,7 @@ func TestHandlers_Settings(t *testing.T) {
`
`,
`
Import data
Import from Mealie, Tandoor, Nextcloud, etc.
Export data
Download your data in the selected file format.
`,
`
Change password
Delete Account
This will delete all your data.
`,
- `
Recipya Version
v1.3.0 (latest)
Last checked: 0001-01-01
Last updated: 0001-01-01
Read the release notes
`,
+ `Recipya Version
v1.3.0 (latest)
Last checked: 0001-01-01
Last updated: 0001-01-01
Read the release notes
`,
}
assertStringsInHTML(t, getBodyHTML(rr), want)
})
diff --git a/internal/server/server.go b/internal/server/server.go
index 2dc97bbda..61705fbe4 100644
--- a/internal/server/server.go
+++ b/internal/server/server.go
@@ -81,9 +81,9 @@ func (s *Server) mountHandlers() {
// Static files routes
subFS, _ := fs.Sub(docs.FS, "website/public")
- mux.HandleFunc("GET /guide", http.StripPrefix("/guide", http.FileServerFS(subFS)).ServeHTTP)
- mux.HandleFunc("GET /guide/*", http.StripPrefix("/guide", http.FileServerFS(subFS)).ServeHTTP)
- mux.HandleFunc("GET /guide/login", guideLoginHandler)
+ mux.HandleFunc("GET /guide/en", http.StripPrefix("/guide/en", http.FileServerFS(subFS)).ServeHTTP)
+ mux.HandleFunc("GET /guide/en/*", http.StripPrefix("/guide/en", http.FileServerFS(subFS)).ServeHTTP)
+ mux.HandleFunc("GET /guide/en/login", guideLoginHandler)
mux.HandleFunc("GET /static/*", http.StripPrefix("/static", http.FileServerFS(static.FS)).ServeHTTP)
mux.HandleFunc("GET /data/images/*", http.StripPrefix("/data/images", http.FileServer(http.Dir(app.ImagesDir))).ServeHTTP)
mux.HandleFunc("GET /data/images/thumbnails/*", http.StripPrefix("/data/images/thumbnails", http.FileServer(http.Dir(app.ThumbnailsDir))).ServeHTTP)
diff --git a/internal/services/migrations/20240710054825_refresh_scraper.sql b/internal/services/migrations/20240710054825_refresh_scraper.sql
index 79f35cbef..4406e30e9 100644
--- a/internal/services/migrations/20240710054825_refresh_scraper.sql
+++ b/internal/services/migrations/20240710054825_refresh_scraper.sql
@@ -10,4 +10,4 @@ WHERE host IN (
-- +goose Down
INSERT INTO websites (host, url)
VALUES ('bingingwithbabish.com', 'https://www.bingingwithbabish.com'),
- ('chuckycruz.substack.com', 'https://chuckycruz.substack.com'),;
+ ('chuckycruz.substack.com', 'shadow_last_inserted_recipehttps://chuckycruz.substack.com'),;
diff --git a/web/components/core.templ b/web/components/core.templ
index 15feec106..8204d212b 100644
--- a/web/components/core.templ
+++ b/web/components/core.templ
@@ -434,7 +434,7 @@ templ SettingsAbout(data templates.Data) {
Last updated: { data.About.LastUpdatedAt.Format(time.DateOnly) }
- Read the release notes
+ Read the release notes
diff --git a/web/components/layouts.templ b/web/components/layouts.templ
index 521d35920..4128e2005 100644
--- a/web/components/layouts.templ
+++ b/web/components/layouts.templ
@@ -127,7 +127,7 @@ templ layoutMain(title string, data templates.Data) {
-
+
@iconBook()
Guide