diff --git a/src/content/docs/fr/guides/actions.mdx b/src/content/docs/fr/guides/actions.mdx
index 451aa22e86459..462174da125c8 100644
--- a/src/content/docs/fr/guides/actions.mdx
+++ b/src/content/docs/fr/guides/actions.mdx
@@ -14,7 +14,7 @@ Astro Actions vous permet de définir et d'appeler des fonctions backend avec s
Utilisez des actions à la place de points de terminaison d'API pour une communication transparente entre votre code client et votre code serveur et pour :
-- Valider automatiquement les entrées de données JSON et de formulaire à l'aide de la [validation Zod](https://zod.dev/?id=primitives).
+- Valider automatiquement les entrées de données JSON et de formulaire à l'aide de la [validation Zod](/fr/reference/modules/astro-zod/).
- Générer des fonctions avec sûreté du typage pour appeler votre backend à partir du client et même [à partir des actions de formulaire HTML](#appeler-des-actions-depuis-une-action-de-formulaire-html). Pas besoin d'appels manuels à `fetch()`.
- Standardiser les erreurs du backend avec l'objet [`ActionError`](/fr/reference/modules/astro-actions/#actionerror).
@@ -24,7 +24,7 @@ Les actions sont définies dans un objet `server` exporté depuis `src/actions/i
```ts title="src/actions/index.ts"
import { defineAction } from 'astro:actions';
-import { z } from 'astro:schema';
+import { z } from 'astro/zod';
export const server = {
myAction: defineAction({ /* ... */ })
@@ -62,22 +62,22 @@ Suivez ces étapes pour définir une action et pour l'appeler dans une balise `s
}
```
-2. Importez l'utilitaire `defineAction()` depuis `astro:actions` et l'objet `z` depuis `astro:schema`.
+2. Importez l'utilitaire `defineAction()` depuis `astro:actions` et l'objet `z` depuis `astro/zod`.
```ts ins={1-2} title="src/actions/index.ts"
import { defineAction } from 'astro:actions';
- import { z } from 'astro:schema';
+ import { z } from 'astro/zod';
export const server = {
// déclarations d'action
}
```
-3. Utilisez l'utilitaire `defineAction()` pour définir une action `getGreeting`. La propriété `input` sera utilisée pour valider les paramètres d'entrée avec un schéma [Zod](https://zod.dev) et la fonction `handler()` inclut la logique backend à exécuter sur le serveur.
+3. Utilisez l'utilitaire `defineAction()` pour définir une action `getGreeting`. La propriété `input` sera utilisée pour valider les paramètres d'entrée avec un [schéma Zod](/fr/reference/modules/astro-zod/#validateurs-de-types-de-données-courants) et la fonction `handler()` inclut la logique backend à exécuter sur le serveur.
```ts ins={5-12} title="src/actions/index.ts"
import { defineAction } from 'astro:actions';
- import { z } from 'astro:schema';
+ import { z } from 'astro/zod';
export const server = {
getGreeting: defineAction({
@@ -213,7 +213,7 @@ Cet exemple génère une erreur d'une action `likePost` lorsqu'un utilisateur n'
```ts title="src/actions/index.ts" ins=/ActionError(?= )/ ins={9-12}
import { defineAction, ActionError } from "astro:actions";
-import { z } from "astro:schema";
+import { z } from "astro/zod";
export const server = {
likePost: defineAction({
@@ -290,7 +290,7 @@ Les actions acceptent les données JSON par défaut. Pour accepter les données
```ts title="src/actions/index.ts" ins={6}
import { defineAction } from 'astro:actions';
-import { z } from 'astro:schema';
+import { z } from 'astro/zod';
export const server = {
comment: defineAction({
@@ -319,7 +319,7 @@ Pour appliquer une union de différents validateurs, utilisez l'encapsuleur `z.d
```ts title="src/actions/index.ts" {7-21} "create" "update"
import { defineAction } from 'astro:actions';
-import { z } from 'astro:schema';
+import { z } from 'astro/zod';
export const server = {
changeUser: defineAction({
@@ -378,7 +378,7 @@ L'exemple suivant montre un formulaire d'inscription à une newsletter validé q
```ts title="src/actions/index.ts" ins={5-12}
import { defineAction } from 'astro:actions';
- import { z } from 'astro:schema';
+ import { z } from 'astro/zod';
export const server = {
newsletter: defineAction({
@@ -492,7 +492,7 @@ Par exemple, supposons que vous ayez une action `createProduct` qui renvoie l'id
```ts title="src/actions/index.ts" mark={10}
import { defineAction } from 'astro:actions';
-import { z } from 'astro:schema';
+import { z } from 'astro/zod';
export const server = {
createProduct: defineAction({
diff --git a/src/content/docs/fr/guides/astro-db.mdx b/src/content/docs/fr/guides/astro-db.mdx
index aec56581aa978..a6f9afaee7ce7 100644
--- a/src/content/docs/fr/guides/astro-db.mdx
+++ b/src/content/docs/fr/guides/astro-db.mdx
@@ -401,7 +401,7 @@ Vous pouvez également utiliser [Astro Actions](/fr/guides/actions/) pour insér
// src/actions/index.ts
import { db, Comment } from 'astro:db';
import { defineAction } from 'astro:actions';
-import { z } from 'astro:schema';
+import { z } from 'astro/zod';
export const server = {
addComment: defineAction({
diff --git a/src/content/docs/fr/guides/content-collections.mdx b/src/content/docs/fr/guides/content-collections.mdx
index a9b864fb54eec..c2899278e0b43 100644
--- a/src/content/docs/fr/guides/content-collections.mdx
+++ b/src/content/docs/fr/guides/content-collections.mdx
@@ -64,16 +64,19 @@ Pour définir des collections, vous devez créer un fichier `src/content.config.
```ts title="src/content.config.ts"
// 1. Importer des utilitaires depuis `astro:content`
-import { defineCollection, z } from 'astro:content';
+import { defineCollection } from 'astro:content';
// 2. Importer un ou plusieurs chargeurs
import { glob, file } from 'astro/loaders';
-// 3. Définir votre/vos collection(s)
+// 3. Importer Zod
+import { z } from 'astro/zod';
+
+// 4. Définir votre/vos collection(s)
const blog = defineCollection({ /* ... */ });
const dogs = defineCollection({ /* ... */ });
-// 4. Exporter un seul objet « collections » pour enregistrer votre/vos collection(s)
+// 5. Exporter un seul objet `collections` pour enregistrer votre/vos collection(s)
export const collections = { blog, dogs };
```
@@ -89,9 +92,10 @@ Le [chargeur `glob()`](/fr/reference/content-loader-reference/#le-chargeur-glob)
Le [chargeur `file()`](/fr/reference/content-loader-reference/#le-chargeur-file) crée plusieurs entrées à partir d'un seul fichier local. Chaque entrée du fichier doit avoir un nom de propriété `id` unique. Il accepte un chemin de fichier `base` vers votre fichier et éventuellement une [fonction `parser`](#fonction-parser) pour les fichiers de données qu'il ne peut pas analyser automatiquement. Utilisez ce chargeur lorsque votre fichier de données peut être analysé comme un tableau d'objets.
-```ts title="src/content.config.ts" {5,9}
-import { defineCollection, z } from 'astro:content';
+```ts title="src/content.config.ts" {6,10}
+import { defineCollection } from 'astro:content';
import { glob, file } from 'astro/loaders'; // Non disponible avec l'API héritée
+import { z } from 'astro/zod';
const blog = defineCollection({
loader: glob({ pattern: "**/*.md", base: "./src/data/blog" }),
@@ -208,11 +212,12 @@ Les schémas alimentent également les typages automatiques TypeScript d'Astro p
Pour qu'Astro reconnaisse un schéma nouveau ou mis à jour, vous devrez peut-être redémarrer le serveur de développement ou [synchroniser la couche de contenu](/fr/reference/cli-reference/#astro-dev) (s + Entrée) pour définir le module `astro:content`.
:::
-Chaque frontmatter ou propriété de données de vos entrées de collection doit être défini à l’aide d’un type de données Zod :
+Chaque frontmatter ou propriété de données de vos entrées de collection doit être défini à l’aide d’un [type de données Zod](/fr/reference/modules/astro-zod/#validateurs-de-types-de-données-courants) :
-```ts title="src/content.config.ts" {6-11,15-19}
-import { defineCollection, z } from 'astro:content';
-import { glob, file } from 'astro/loaders'; // Non disponible avec l'API héritée
+```ts title="src/content.config.ts" {7-12,16-20}
+import { defineCollection } from 'astro:content';
+import { glob, file } from 'astro/loaders';
+import { z } from 'astro/zod';
const blog = defineCollection({
loader: glob({ pattern: "**/*.md", base: "./src/data/blog" }),
@@ -239,43 +244,13 @@ export const collections = { blog, dogs };
Astro utilise [Zod](https://github.com/colinhacks/zod) pour alimenter ses schémas de contenu. Avec Zod, Astro est capable de valider les données de chaque fichier au sein d'une collection *et* de fournir des types TypeScript automatiques lorsque vous interrogez le contenu à partir de votre projet.
-Pour utiliser Zod dans Astro, importez l'utilitaire `z` depuis `"astro:content"`. Il s'agit d'une réexportation de la bibliothèque Zod, et elle prend en charge toutes les fonctionnalités de Zod.
-
-```ts
-// Exemple : une aide-mémoire de nombreux types de données Zod courants
-import { z, defineCollection } from 'astro:content';
-
-defineCollection({
- schema: z.object({
- isDraft: z.boolean(),
- title: z.string(),
- sortOrder: z.number(),
- image: z.object({
- src: z.string(),
- alt: z.string(),
- }),
- author: z.string().default('Anonyme'),
- language: z.enum(['en', 'es']),
- tags: z.array(z.string()),
- footnote: z.string().optional(),
-
- // En YAML, les dates écrites sans guillemets sont interprétées comme des objets Date
- publishDate: z.date(), // par exemple 2024-09-17
-
- // Transformer une chaîne de date (par exemple « 2022-07-08 ») en objet Date
- updatedDate: z.string().transform((str) => new Date(str)),
-
- authorContact: z.string().email(),
- canonicalURL: z.string().url(),
- })
-})
-```
+Pour utiliser Zod dans Astro, importez l'utilitaire `z` depuis `"astro/zod"`. Il s'agit d'une réexportation de la bibliothèque Zod, et elle prend en charge toutes les fonctionnalités de Zod.
-Consultez [le fichier README de Zod](https://github.com/colinhacks/zod) pour obtenir une documentation complète sur le fonctionnement de Zod et les fonctionnalités disponibles.
+Consultez la [référence de l'utilitaire `z`](/fr/reference/modules/astro-zod/) pour obtenir un aide-mémoire des types de données courants et pour apprendre comment Zod fonctionne et quelles fonctionnalités sont disponibles.
##### Méthodes de schéma Zod
-Toutes [les méthodes de schéma Zod](https://zod.dev/?id=schema-methods) (p. ex. `.parse()`, `.transform()`) sont disponibles, avec certaines limitations. Notamment, l'exécution de contrôles de validation personnalisés sur les images à l'aide de `image().refine()` n'est pas prise en charge.
+Toutes [les méthodes de schéma Zod](/fr/reference/modules/astro-zod/#utilisation-des-méthodes-de-zod) (p. ex. `.parse()`, `.transform()`) sont disponibles, avec certaines limitations. Notamment, l'exécution de contrôles de validation personnalisés sur les images à l'aide de `image().refine()` n'est pas prise en charge.
#### Définition des références de collection
@@ -286,8 +261,9 @@ Avec la [fonction `reference()`](/fr/reference/modules/astro-content/#reference)
Un exemple courant est un article de blog qui fait référence à des profils d'auteur réutilisables stockés au format JSON ou à des URL d'articles associés stockées dans la même collection :
```ts title="src/content.config.ts"
-import { defineCollection, reference, z } from 'astro:content';
+import { defineCollection, reference } from 'astro:content';
import { glob } from 'astro/loaders';
+import { z } from 'astro/zod';
const blog = defineCollection({
loader: glob({ pattern: '**/[^_]*.md', base: "./src/data/blog" }),
diff --git a/src/content/docs/fr/guides/images.mdx b/src/content/docs/fr/guides/images.mdx
index bf0c8fe30352c..99b9476a7a8b5 100644
--- a/src/content/docs/fr/guides/images.mdx
+++ b/src/content/docs/fr/guides/images.mdx
@@ -590,7 +590,8 @@ Ceci est un article de blog
L'assistant `image` pour le schéma des collections de contenu vous permet de valider et d'importer l'image.
```ts title="src/content.config.ts"
-import { defineCollection, z } from "astro:content";
+import { defineCollection } from "astro:content";
+import { z } from "astro/zod";
const blogCollection = defineCollection({
schema: ({ image }) => z.object({
diff --git a/src/content/docs/fr/guides/integrations-guide/mdx.mdx b/src/content/docs/fr/guides/integrations-guide/mdx.mdx
index 8225525c8cd42..33c37c0f099fc 100644
--- a/src/content/docs/fr/guides/integrations-guide/mdx.mdx
+++ b/src/content/docs/fr/guides/integrations-guide/mdx.mdx
@@ -101,8 +101,9 @@ Les fichiers `.mdx` doivent être écrits en [syntaxe MDX](https://mdxjs.com/doc
Pour inclure des fichiers MDX dans une collection de contenus, assurez-vous que votre [chargeur de collection](/fr/guides/content-collections/#définir-le-chargeur-de-collection-loader) est configuré pour charger du contenu à partir de fichiers `.mdx` :
```js title="src/content.config.ts" ins="mdx"
-import { defineCollection, z } from 'astro:content';
+import { defineCollection } from 'astro:content';
import { glob } from 'astro/loaders';
+import { z } from 'astro/zod';
const blog = defineCollection({
loader: glob({ pattern: "**/*.{md,mdx}", base: "./src/blog" }),
diff --git a/src/content/docs/fr/guides/integrations-guide/react.mdx b/src/content/docs/fr/guides/integrations-guide/react.mdx
index c3bb60da5a0a6..b7f8a46d315ae 100644
--- a/src/content/docs/fr/guides/integrations-guide/react.mdx
+++ b/src/content/docs/fr/guides/integrations-guide/react.mdx
@@ -167,7 +167,7 @@ L'exemple ci-dessous récupère la valeur actuelle des mentions « J'aime »
```ts title="actions.ts" ins={3,11}
import { defineAction, type SafeResult } from 'astro:actions';
-import { z } from 'astro:schema';
+import { z } from 'astro/zod';
import { getActionState } from '@astrojs/react/actions';
export const server = {
diff --git a/src/content/docs/fr/guides/sessions.mdx b/src/content/docs/fr/guides/sessions.mdx
index b22cc7f3ae3e9..98b6d6aad720b 100644
--- a/src/content/docs/fr/guides/sessions.mdx
+++ b/src/content/docs/fr/guides/sessions.mdx
@@ -90,7 +90,7 @@ Dans les actions, l'objet session est disponible dans l'objet `context`. Par exe
```ts title="src/actions/addToCart.ts" "context.session"
import { defineAction } from 'astro:actions';
-import { z } from 'astro:schema';
+import { z } from 'astro/zod';
export const server = {
addToCart: defineAction({
diff --git a/src/content/docs/fr/recipes/build-forms-api.mdx b/src/content/docs/fr/recipes/build-forms-api.mdx
index b36998f6dfc2b..fc77c6b194c8b 100644
--- a/src/content/docs/fr/recipes/build-forms-api.mdx
+++ b/src/content/docs/fr/recipes/build-forms-api.mdx
@@ -428,29 +428,3 @@ Cette méthode vous montre comment envoyer les données du formulaire au point d
-
-{/* ## Extension: Utilisez Zod pour valider votre formulaire
-
-[Zod form data](https://www.npmjs.com/package/zod-form-data) s'appuie sur [Zod](https://github.com/colinhacks/zod) pour valider votre formulaire à l'aide d'un schéma. Cela simplifie votre code, car vous pouvez déclarer les champs et leurs exigences, et laisser Zod s'occuper de la validation.
-
-1. Installer `zod` et `zod-form-data`.
-
-
-
- ```shell
- npm i zod zod-form-data
- ```
-
-
- ```shell
- pnpm i zod zod-form-data
- ```
-
-
- ```shell
- yarn add zod zod-form-data
- ```
-
-
-
-2. Dans votre fichier de route d'API, déclarez votre schéma en utilisant `zfd.formData` et exportez-le. */}
diff --git a/src/content/docs/fr/recipes/i18n.mdx b/src/content/docs/fr/recipes/i18n.mdx
index 74e0f6e997fa2..a739728ddbffd 100644
--- a/src/content/docs/fr/recipes/i18n.mdx
+++ b/src/content/docs/fr/recipes/i18n.mdx
@@ -87,7 +87,8 @@ Si vous préférez que la langue par défaut ne soit pas visible dans l'URL cont
```ts
//src/content.config.ts
- import { defineCollection, z } from 'astro:content';
+ import { defineCollection } from 'astro:content';
+ import { z } from 'astro/zod';
const blogCollection = defineCollection({
schema: z.object({
diff --git a/src/content/docs/fr/reference/content-loader-reference.mdx b/src/content/docs/fr/reference/content-loader-reference.mdx
index 4f60e23b9e00c..6b9169c929797 100644
--- a/src/content/docs/fr/reference/content-loader-reference.mdx
+++ b/src/content/docs/fr/reference/content-loader-reference.mdx
@@ -183,7 +183,7 @@ Le modèle recommandé consiste à définir une fonction qui accepte les options
```ts title=loader.ts
import type { Loader, LoaderContext } from 'astro/loaders';
-import { z } from 'astro:content';
+import { z } from 'astro/zod';
import { loadFeedData } from "./feed.js";
// Définir toutes les options dont le chargeur a besoin
@@ -209,9 +209,10 @@ export function myLoader(options: { url: string, apiKey: string }): Loader {
Ces options de configuration peuvent ensuite être définies lors de la définition d'une collection :
-```ts title="src/content.config.ts" {2,5-8}
-import { defineCollection, z } from 'astro:content';
-import myLoader from '../../loader.ts';
+```ts title="src/content.config.ts" {3,6-9}
+import { defineCollection } from 'astro:content';
+import { z } from 'astro/zod';
+import myLoader from '../../loader.ts';
const blog = defineCollection({
loader: myLoader({
diff --git a/src/content/docs/fr/reference/experimental-flags/live-content-collections.mdx b/src/content/docs/fr/reference/experimental-flags/live-content-collections.mdx
index b2dd157b58889..b5e34211fb8dc 100644
--- a/src/content/docs/fr/reference/experimental-flags/live-content-collections.mdx
+++ b/src/content/docs/fr/reference/experimental-flags/live-content-collections.mdx
@@ -487,7 +487,8 @@ if (error) {
Tout comme avec les collections au moment de la compilation, vous pouvez utiliser des [schémas Zod](/fr/guides/content-collections/#définition-dun-schéma-de-collection) avec des collections en ligne pour valider et transformer les données au moment de l'exécution. Lorsque vous définissez un schéma, il a la priorité sur [les types du chargeur](#données-avec-sûreté-du-typage) lorsque vous interrogez la collection :
```ts title="src/live.config.ts"
-import { z, defineLiveCollection } from 'astro:content';
+import { defineLiveCollection } from 'astro:content';
+import { z } from 'astro/zod';
import { apiLoader } from './loaders/api-loader';
const products = defineLiveCollection({
diff --git a/src/content/docs/fr/reference/legacy-flags.mdx b/src/content/docs/fr/reference/legacy-flags.mdx
index f3ddc628b8a7a..6a3dc96a61444 100644
--- a/src/content/docs/fr/reference/legacy-flags.mdx
+++ b/src/content/docs/fr/reference/legacy-flags.mdx
@@ -42,7 +42,7 @@ Lorsque vous êtes prêt à supprimer cette option et à migrer vers la nouvelle
```js
// src/content/config.ts
-import { defineCollection, z } from 'astro:content';
+import { defineCollection } from 'astro:content';
const blog = defineCollection({ })
diff --git a/src/content/docs/fr/reference/modules/astro-actions.mdx b/src/content/docs/fr/reference/modules/astro-actions.mdx
index d02a7073bb5d2..8d12c7315f520 100644
--- a/src/content/docs/fr/reference/modules/astro-actions.mdx
+++ b/src/content/docs/fr/reference/modules/astro-actions.mdx
@@ -42,7 +42,7 @@ Un utilitaire permettant de définir de nouvelles actions dans le fichier `src/a
```ts title="src/actions/index.ts"
import { defineAction } from 'astro:actions';
-import { z } from 'astro:schema';
+import { z } from 'astro/zod';
export const server = {
getGreeting: defineAction({
@@ -76,7 +76,7 @@ Les valeurs de retour sont analysées à l'aide de la [bibliothèque devalue](ht
**Type :** `ZodType | undefined`
-Une propriété facultative qui accepte un validateur Zod (par exemple, un objet Zod, une union discriminée Zod) pour valider les entrées du gestionnaire lors de l'exécution. Si la validation de l'action échoue, [une erreur `BAD_REQUEST`](#actionerror) est renvoyée et le gestionnaire (`handler`) n'est pas appelé.
+Une propriété facultative qui accepte un [validateur Zod](/fr/reference/modules/astro-zod/#validateurs-de-types-de-données-courants) (par exemple, un objet Zod, une union discriminée Zod) pour valider les entrées du gestionnaire lors de l'exécution. Si la validation de l'action échoue, [une erreur `BAD_REQUEST`](#actionerror) est renvoyée et le gestionnaire (`handler`) n'est pas appelé.
Si `input` est omis, le gestionnaire (`handler`) recevra une entrée de type `unknown` pour les requêtes JSON et de type `FormData` pour les requêtes de formulaire.
diff --git a/src/content/docs/fr/reference/modules/astro-content.mdx b/src/content/docs/fr/reference/modules/astro-content.mdx
index cbed7c46c1281..524e6bf79390b 100644
--- a/src/content/docs/fr/reference/modules/astro-content.mdx
+++ b/src/content/docs/fr/reference/modules/astro-content.mdx
@@ -18,7 +18,6 @@ Les collections de contenu proposent des API pour configurer et interroger vos d
```js
import {
- z,
defineCollection,
getCollection,
getEntry,
@@ -76,7 +75,7 @@ Un `loader` est soit un objet, soit une fonction qui vous permet de charger des
-`schema` est un objet Zod facultatif pour configurer le type et la forme du document pour une collection. Chaque valeur doit utiliser [un validateur Zod](https://github.com/colinhacks/zod).
+`schema` est un objet Zod facultatif pour configurer le type et la forme du document pour une collection. Chaque valeur doit utiliser [un validateur Zod](/fr/reference/modules/astro-zod/#validateurs-de-types-de-données-courants).
[Consultez le guide Collections de contenu](/fr/guides/content-collections/#définition-dun-schéma-de-collection) pour un exemple d'utilisation.
diff --git a/src/content/docs/fr/reference/modules/astro-zod.mdx b/src/content/docs/fr/reference/modules/astro-zod.mdx
new file mode 100644
index 0000000000000..74dfa803b4ec1
--- /dev/null
+++ b/src/content/docs/fr/reference/modules/astro-zod.mdx
@@ -0,0 +1,120 @@
+---
+title: Référence de l'API Zod
+sidebar:
+ label: 'astro/zod'
+i18nReady: true
+tableOfContents:
+ minHeadingLevel: 2
+ maxHeadingLevel: 6
+---
+import ReadMore from '~/components/ReadMore.astro';
+
+[Zod](https://github.com/colinhacks/zod) est une bibliothèque de déclaration et de validation de schémas reposant sur TypeScript. Elle vous permet de définir des schémas que vous pouvez utiliser pour valider et transformer des données, d'un type simple (par exemple `string`, `number`) à des structures de données complexes (par exemple des objets imbriqués).
+
+Le module `astro/zod` expose une réexportation de Zod qui vous donne accès à toutes les fonctionnalités de Zod v3. Grâce à ce module, vous n'avez pas besoin d'installer Zod vous-même. Cela garantit également que votre projet utilise la même version des API qu'Astro lors de l'utilisation de fonctionnalités telles que les [collections de contenu](/fr/guides/content-collections/) ou les [actions](/fr/guides/actions/).
+
+Consultez le [site web de Zod v3](https://v3.zod.dev/) pour obtenir la documentation complète sur le fonctionnement de Zod et les fonctionnalités disponibles.
+
+## Importations depuis `astro/zod`
+
+```ts
+import { z } from 'astro/zod';
+```
+
+### `z`
+
+
+
+**Type :** `object`
+
+
+L'utilitaire `z` vous donne accès à des validateurs pour un large éventail de types de données, des méthodes et des types pour travailler avec vos données.
+
+Apprenez-en plus sur l'utilitaire `z` dans la [documentation de Zod](https://v3.zod.dev/?id=basic-usage).
+
+#### Validateurs de types de données courants
+
+Avec Zod, vous pouvez valider tout type de données, comme les [primitives](https://v3.zod.dev/?id=primitives), les [objets](https://v3.zod.dev/?id=objects), les [tableaux](https://v3.zod.dev/?id=arrays) et plus encore.
+
+L'exemple suivant présente un aide-mémoire regroupant de nombreux types de données courants avec Zod pour créer un schéma `user` :
+
+```ts
+import { z } from 'astro/zod';
+
+const user = z.object({
+ username: z.string(),
+ name: z.string().min(2),
+ email: z.string().email(),
+ role: z.enum(["admin", "editor"]),
+ language: z.enum(["en", "fr", "es"]).default("en"),
+ hobbies: z.array(z.string()),
+ age: z.number(),
+ isEmailConfirmed: z.boolean(),
+ inscriptionDate: z.date(),
+ website: z.string().url().optional(),
+});
+```
+
+#### Extraction d'un type Typescript
+
+Zod vous permet de créer un type Typescript à partir de n'importe quel schéma [en utilisant l'inférence de type Zod](https://v3.zod.dev/?id=type-inference). Cela peut s'avérer utile pour décrire la structure de données attendue lors de la [définition des propriétés d'un composant](/fr/guides/typescript/#les-props-de-composants).
+
+L'exemple suivant crée un type `User` reposant sur le schéma précédent :
+
+```ts
+type User = z.infer;
+
+/* Le type `User` sera :
+ * type User = {
+ * username: string;
+ * name: string;
+ * email: string;
+ * role: "admin" | "editor";
+ * language: "en" | "fr" | "es";
+ * hobbies: string[];
+ * age: number;
+ * isEmailConfirmed: boolean;
+ * inscriptionDate: Date;
+ * website?: string | undefined;
+ * }
+ */
+```
+
+#### Utilisation des méthodes de Zod
+
+Zod fournit diverses [méthodes de schéma](https://v3.zod.dev/?id=schema-methods) pour personnaliser les messages d'erreur, transformer les données ou créer des logiques de validation personnalisées.
+
+```ts
+// Personnaliser le message d'erreur
+const nonEmptyStrings = z.string().array().nonempty({
+ message: "Ne peut pas être vide !",
+});
+
+// Valider des données à partir d'un schéma
+nonEmptyStrings.parse([]); // générera notre erreur personnalisée
+
+// Créer un objet à partir d'une URL pour une image décorative
+const decorativeImg = z.string().transform((value) => {
+ return { src: value, alt: "" };
+});
+
+// Créer un validateur personnalisé et un message d'erreur pour une chaîne de caractères.
+const constrainedString = z
+ .string()
+ .refine((val) => val.length > 0 && val.length <= 255, {
+ message: "Doit contenir entre 1 et 255 caractères.",
+ });
+```
+
+### Importations individuelles
+
+Vous pouvez également importer tous les validateurs, méthodes et types Zod disponibles dans l'[utilitaire `z`](#z) directement depuis le module.
+
+L'exemple suivant importe `coerce` pour créer un objet `Date` à partir d'une date sous forme de chaîne de caractères :
+
+```ts
+import { coerce } from 'astro/zod';
+
+const publishedOn = coerce.date();
+const publicationDate = publishedOn.parse("2025-12-03");
+```
diff --git a/src/content/docs/fr/tutorial/6-islands/4.mdx b/src/content/docs/fr/tutorial/6-islands/4.mdx
index d62c42d5fa596..8319c6defd8c2 100644
--- a/src/content/docs/fr/tutorial/6-islands/4.mdx
+++ b/src/content/docs/fr/tutorial/6-islands/4.mdx
@@ -119,7 +119,9 @@ Effectuez une mise à niveau vers la dernière version d'Astro et mettez à nive
// Importer le chargeur glob
import { glob } from "astro/loaders";
// Importer des utilitaires depuis `astro:content`
- import { z, defineCollection } from "astro:content";
+ import { defineCollection } from "astro:content";
+ // Importer Zod
+ import { z } from "astro/zod";
// Définir un chargeur (`loader`) et un schéma (`schema`) pour chaque collection
const blog = defineCollection({
loader: glob({ pattern: '**/[^_]*.md', base: "./src/blog" }),