Skip to content

Commit

Permalink
i18n(fr): update configuration-reference.mdx and cli-reference.mdx (
Browse files Browse the repository at this point in the history
withastro#9246)

* i18n(fr): update `configuration-reference.mdx`

Add `i18n.routing.fallbackType` section (see withastro#9224)

* Fix links

* i18n(fr): remove experimental.actions from configuration reference

See withastro#9237

* i18n(fr): update cli-reference.mdx

---------

Co-authored-by: Yan <[email protected]>
  • Loading branch information
ArmandPhilippot and yanthomasdev authored Aug 30, 2024
1 parent 1d0e9c4 commit 4c91eaa
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 101 deletions.
2 changes: 1 addition & 1 deletion src/content/docs/fr/reference/cli-reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ Génère des types TypeScript pour tous les modules Astro. Cela configure un [fi
- Le module `astro:content` pour l'[API des Collections de contenus](/fr/guides/content-collections/).
- Le module `astro:db` pour [Astro DB](/fr/guides/astro-db/).
- Le module `astro:env` pour [la fonctionnalité expérimentale Astro Env](/fr/reference/configuration-reference/#experimentalenv).
- Le module `astro:actions` pour [la fonctionnalité expérimentale Astro Actions](/fr/reference/configuration-reference/#experimentalactions)
- Le module `astro:actions` pour [Astro Actions](/fr/guides/actions/)

## `astro add`

Expand Down
135 changes: 35 additions & 100 deletions src/content/docs/fr/reference/configuration-reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -1168,6 +1168,41 @@ export default defineConfig({
})
```

#### i18n.routing.fallbackType

<p>

**Type :** `"redirect" | "rewrite"`<br />
**Par défaut :** `"redirect"`<br />
<Since v="4.15.0" />
</p>

Lorsque [`i18n.fallback`](#i18nfallback) est configuré pour éviter d'afficher une page 404 pour les routes de page manquantes, cette option contrôle s'il faut [rediriger](/fr/guides/routing/#redirections) vers la page de secours ou [réécrire](/fr/guides/routing/#réécritures) le contenu de la page de secours en place.

Par défaut, le routage i18n d'Astro crée des pages qui redirigent vos visiteurs vers une nouvelle destination en fonction de votre configuration de secours. Le navigateur s'actualise et affiche l'adresse de destination dans la barre d'URL.

Lorsque `i18n.routing.fallback: "rewrite"` est configuré, Astro crée des pages qui restituent le contenu de la page de secours sur l'URL d'origine demandée.

Avec la configuration suivante, si vous avez le fichier `src/pages/en/about.astro` mais pas `src/pages/fr/about.astro`, la commande `astro build` générera `dist/fr/about.html` avec le même contenu que la page `dist/en/about.html`.
Le visiteur de votre site verra la version anglaise de la page à l'adresse `https://example.com/fr/about/` et ne sera pas redirigé.

```js
//astro.config.mjs
export default defineConfig({
i18n: {
defaultLocale: "en",
locales: ["en", "fr"],
routing: {
prefixDefaultLocale: false,
fallbackType: "rewrite",
},
fallback: {
fr: "en",
}
},
})
```

#### i18n.routing.manual

<p>
Expand Down Expand Up @@ -1227,106 +1262,6 @@ Cette option sera activée par défaut dans Astro 5.0.
}
```

### experimental.actions

<p>

**Type :** `boolean`<br />
**Par défaut :** `false`<br />
<Since v="4.8.0" />
</p>

Les actions vous aident à écrire des fonctions backend avec des types sécurisés que vous pouvez appeler de n'importe où. Activez le rendu côté serveur [en utilisant la propriété `output`](/fr/basics/rendering-modes/#rendu-à-la-demande) et ajoutez l'indicateur `actions` à l'objet `experimental` :

```js
{
output: 'hybrid', // ou 'server'
experimental: {
actions: true,
},
}
```

Déclarez toutes vos actions dans `src/actions/index.ts`. Ce fichier est le gestionnaire d'actions globales.

Définissez une action à l'aide de l'utilitaire `defineAction()` du module `astro:actions`. Une action accepte la propriété `handler` pour définir votre gestionnaire de requêtes côté serveur. Si votre action accepte des arguments, appliquez la propriété `input` pour valider les paramètres avec Zod.

Cet exemple définit deux actions : `like` et `comment`. L'action `like` accepte un objet JSON avec une chaîne de caractères `postId`, tandis que l'action `comment` accepte un objet [FormData](https://developer.mozilla.org/fr/docs/Web/API/XMLHttpRequest_API/Using_FormData_Objects) avec les propriétés `postId`, `author` et `body`. Chaque `handler` met à jour votre base de données et renvoie une réponse avec des types sécurisés.

```ts
// src/actions/index.ts
import { defineAction, z } from "astro:actions";

export const server = {
like: defineAction({
input: z.object({ postId: z.string() }),
handler: async ({ postId }) => {
// mettre à jour les likes dans la base de données

return likes;
},
}),
comment: defineAction({
accept: 'form',
input: z.object({
postId: z.string(),
author: z.string(),
body: z.string(),
}),
handler: async ({ postId }) => {
// insérer des commentaires dans la base de données

return comment;
},
}),
};
```

Ensuite, appelez une action à partir de vos composants clients en utilisant l'objet `actions` de `astro:actions`. Vous pouvez transmettre un objet avec des types sécurisés lors de l'utilisation de JSON ou un objet [FormData](https://developer.mozilla.org/fr/docs/Web/API/XMLHttpRequest_API/Using_FormData_Objects) lorsque vous utilisez `accept: 'form'` dans votre définition d'action.

Cet exemple appelle les actions `like` et `comment` à partir d'un composant React :

```tsx "actions"
// src/components/blog.tsx
import { actions } from "astro:actions";
import { useState } from "react";

export function Like({ postId }: { postId: string }) {
const [likes, setLikes] = useState(0);
return (
<button
onClick={async () => {
const newLikes = await actions.like({ postId });
setLikes(newLikes);
}}
>
{likes} likes
</button>
);
}

export function Comment({ postId }: { postId: string }) {
return (
<form
onSubmit={async (e) => {
e.preventDefault();
const formData = new FormData(e.target as HTMLFormElement);
const result = await actions.blog.comment(formData);
// gérer le résultat
}}
>
<input type="hidden" name="postId" value={postId} />
<label htmlFor="author">Auteur</label>
<input id="author" type="text" name="author" />
<textarea rows={10} name="body"></textarea>
<button type="submit">Envoyer</button>
</form>
);
}
```

Pour un aperçu complet et pour donner votre avis sur cette API expérimentale, consultez la [RFC Actions](https://github.com/withastro/roadmap/blob/actions/proposals/0046-actions.md).

### experimental.contentCollectionCache

<p>
Expand Down

0 comments on commit 4c91eaa

Please sign in to comment.