Skip to content

Commit 8cda9d8

Browse files
authored
Merge branch 'main' into i18n-update-guides-middleware
2 parents b3da429 + 51f958a commit 8cda9d8

20 files changed

Lines changed: 2501 additions & 376 deletions

src/content/docs/fr/basics/layouts.mdx

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -238,27 +238,39 @@ const { title, fancyJsHelper } = Astro.props;
238238

239239
<ReadMore>Pour en savoir plus sur la prise en charge de Markdown et de MDX par Astro, consultez notre [guide Markdown/MDX](/fr/guides/markdown-content/).</ReadMore>
240240

241-
## Utilisation d'une mise en page unique pour les fichiers `.md`, `.mdx` et `.astro`.
241+
## Utilisation de TypeScript avec des mises en page
242242

243-
Une unique mise en page Astro peut être écrite pour recevoir l'objet `frontmatter` des fichiers `.md` et `.mdx`, ainsi que toutes les propriétés nommées, passées depuis les fichiers `.astro`.
243+
Toute mise en page Astro peut être modifiée pour introduire la sécurité des types et la saisie semi-automatique en fournissant les types pour vos propriétés :
244244

245-
Dans l'exemple ci-dessous, la mise en page va afficher le titre de la page, soit depuis la propriété YAML `title` de frontmatter, soit depuis un composant Astro passant un attribut `title` :
246-
247-
```astro /{?title}?/ /Astro.props[.a-z]*/
245+
```astro ins={2-7} title="src/components/MyLayout.astro"
248246
---
249-
// src/components/MyLayout.astro
250-
const { title } = Astro.props.frontmatter || Astro.props;
247+
interface Props {
248+
title: string;
249+
description: string;
250+
publishDate: string;
251+
viewCount: number;
252+
}
253+
const { title, description, publishDate, viewCount } = Astro.props;
251254
---
252-
<html>
253-
<head></head>
255+
<html lang="fr">
256+
<head>
257+
<meta charset="UTF-8">
258+
<meta name="description" content={description}>
259+
<title>{title}</title>
260+
</head>
254261
<body>
255-
<h1>{title}</h1>
256-
<slot />
262+
<header>
263+
<p>Publié le {publishDate}</p>
264+
<p>Consulté par {viewCount} personnes</p>
265+
</header>
266+
<main>
267+
<slot />
268+
</main>
257269
</body>
258270
</html>
259271
```
260272

261-
## Mises en page d'emboîtement
273+
## Imbrication de mises en page
262274

263275
Les composants de mises en pages ne doivent pas nécessairement contenir une page entière de HTML. Vous pouvez décomposer vos mises en page en composants plus petits et combiner des composants de mises en page pour créer des templates de page encore plus flexibles. Ce modèle est utile lorsque vous souhaitez partager du code entre plusieurs mises en page.
264276

src/content/docs/fr/basics/project-structure.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ Pour plus d'informations en ce qui concerne la création d'un nouveau fichier `p
118118

119119
Ce fichier est généré dans chaque modèle de démarrage et contient des options de configuration pour votre projet Astro. Ici, vous pouvez spécifier les intégrations à utiliser, les options de construction, les options du serveur, et plus encore.
120120

121+
Astro prend en charge plusieurs formats de fichiers pour son fichier de configuration JavaScript : `astro.config.js`, `astro.config.mjs`, `astro.config.cjs` et `astro.config.ts`. Nous vous recommandons d'utiliser `.mjs` dans la plupart des cas ou `.ts` si vous souhaitez utiliser TypeScript dans votre fichier de configuration.
122+
123+
Le chargement du fichier de configuration TypeScript est géré à l'aide de [`tsm`](https://github.com/lukeed/tsm) et respectera les options `tsconfig` de votre projet.
124+
121125
Allez voir la [documentation de configuration](/fr/reference/configuration-reference/) pour plus d'informations sur les options de configuration.
122126

123127
### `tsconfig.json`

src/content/docs/fr/guides/content-collections.mdx

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ const allBlogPosts = await getCollection('blog');
343343
const graceHopperProfile = await getEntry('authors', 'grace-hopper');
344344
```
345345

346-
Les deux fonctions renvoient des entrées de contenu telles que définies par le type [`CollectionEntry`](/fr/reference/api-reference/#collection-entry-type).
346+
Les deux fonctions renvoient des entrées de contenu telles que définies par le type [`CollectionEntry`](/fr/reference/api-reference/#type-des-entrées-de-collection).
347347

348348
### Accès aux données référencées
349349

@@ -438,7 +438,7 @@ const blogEntries = await getCollection('blog');
438438

439439
Un composant peut également passer une entrée de contenu entière en tant que propriété.
440440

441-
Si vous faites cela, vous pouvez utiliser l'utilitaire [`CollectionEntry`](/fr/reference/api-reference/#collection-entry-type) pour taper correctement les propriétés de vos composants en utilisant TypeScript. Cet utilitaire prend un argument de type chaîne qui correspond au nom du schéma de votre collection, et hérite de toutes les propriétés du schéma de cette collection.
441+
Si vous faites cela, vous pouvez utiliser l'utilitaire [`CollectionEntry`](/fr/reference/api-reference/#type-des-entrées-de-collection) pour taper correctement les propriétés de vos composants en utilisant TypeScript. Cet utilitaire prend un argument de type chaîne qui correspond au nom du schéma de votre collection, et hérite de toutes les propriétés du schéma de cette collection.
442442

443443
```astro /CollectionEntry(?:<.+>)?/
444444
---
@@ -539,7 +539,38 @@ Explorez le dossier `src/pages/` présent dans la [base de code du tutoriel Cons
539539

540540
Si vous avez un projet Astro existant, comme un blog, qui utilise des fichiers Markdown ou MDX dans les sous-dossiers de `src/pages/`, envisagez de migrer le contenu associé ou les fichiers de données vers des collections de contenus.
541541

542-
Voyez comment convertir un exemple de blog basique de `src/pages/posts/` à `src/content/posts` dans notre [tutoriel étape par étape](/fr/tutorials/add-content-collections/) qui utilise la base de code du [projet fini du tutoriel Construire un blog](https://github.com/withastro/blog-tutorial-demo).
542+
Regardez comment convertir un exemple de blog basique de `src/pages/posts/` à `src/content/posts` dans notre [tutoriel étape par étape](/fr/tutorials/add-content-collections/) qui utilise la base de code du [projet fini du tutoriel Construire un blog](https://github.com/withastro/blog-tutorial-demo).
543+
544+
## Activation de la génération de schémas JSON
545+
546+
<p><Since v="4.13.0" /></p>
547+
548+
Si vous travaillez avec des collections de type `data`, Astro générera automatiquement des fichiers de schéma JSON pour votre éditeur afin d'obtenir IntelliSense et la vérification des types. Un fichier séparé sera créé pour chaque collection de données dans votre projet basé sur vos collections définies dans `src/content/config.ts` en utilisant une bibliothèque appelée [`zod-to-json-schema`](https://github.com/StefanTerdell/zod-to-json-schema#known-issues).
549+
550+
Cette fonctionnalité nécessite que vous définissiez manuellement le chemin d'accès au fichier de votre schéma comme valeur de `$schema` dans chaque fichier de saisie de données de la collection :
551+
552+
```json title="src/content/authors/armand.json" ins={2}
553+
{
554+
"$schema": "../../../.astro/collections/authors.schema.json",
555+
"name": "Armand",
556+
"skills": ["Astro", "Starlight"]
557+
}
558+
```
559+
560+
Vous pouvez également définir cette valeur dans les paramètres de votre éditeur. Par exemple, pour définir cette valeur dans [le paramètre `json.schemas` de VSCode](https://code.visualstudio.com/docs/languages/json#_json-schemas-and-settings), indiquez le chemin des fichiers à faire correspondre et l'emplacement de votre schéma JSON :
561+
562+
```json
563+
{
564+
"json.schemas": [
565+
{
566+
"fileMatch": [
567+
"/src/content/authors/**"
568+
],
569+
"url": "./.astro/collections/authors.schema.json"
570+
}
571+
]
572+
}
573+
```
543574

544575
## Activation de la mise en cache de la construction
545576

src/content/docs/fr/guides/endpoints.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Pour les sites générés statiquement, vos endpoints personnalisés sont appel
1313

1414
Pour créer des endpoint personnalisés, ajoutez un fichier `.js` ou `.ts` à votre dossier `/pages`. L'extension `.js` ou `.ts` sera supprimée pendant le processus de construction, donc le nom du fichier doit inclure l'extension des données que vous souhaitez créer. Par exemple, `src/pages/data.json.ts` générera un endpoint `/data.json`.
1515

16-
Les points de terminaison exportent une fonction `GET` (optionnellement `async`) qui reçoit un [objet de contexte](/fr/reference/api-reference/#endpoint-context) avec des propriétés similaires à celles de l'objet global `Astro`. Ici, elle retourne un objet Response avec un champ `name` et `url`, et Astro l'appellera au moment de la construction et utilisera le contenu du body pour générer le fichier.
16+
Les points de terminaison exportent une fonction `GET` (optionnellement `async`) qui reçoit un [objet de contexte](/fr/reference/api-reference/#contexte-du-point-de-terminaison) avec des propriétés similaires à celles de l'objet global `Astro`. Ici, elle retourne un objet Response avec un champ `name` et `url`, et Astro l'appellera au moment de la construction et utilisera le contenu du body pour générer le fichier.
1717

1818
```ts
1919
// Exemple : src/pages/builtwith.json.ts
@@ -73,7 +73,7 @@ export function getStaticPaths() {
7373
}
7474
```
7575

76-
Cela va générer 4 points de terminaison JSON au moment du build : `/api/0.json`, `/api/1.json`, `/api/2.json` et `/api/3.json`. Le routage dynamique avec les endpoints fonctionne de la même manière qu'avec les pages, mais parce que l'endpoint est une fonction et non un composant, les [props](/fr/reference/api-reference/#data-passing-with-props) ne sont pas supportées.
76+
Cela va générer 4 points de terminaison JSON au moment du build : `/api/0.json`, `/api/1.json`, `/api/2.json` et `/api/3.json`. Le routage dynamique avec les endpoints fonctionne de la même manière qu'avec les pages, mais parce que l'endpoint est une fonction et non un composant, les [props](/fr/reference/api-reference/#transfert-de-données-avec-props) ne sont pas supportées.
7777

7878
### `request`
7979

@@ -92,7 +92,7 @@ export const GET: APIRoute = ({ params, request }) => {
9292

9393
## Points de terminaison du serveur (Routes API)
9494

95-
Tout ce qui est décrit dans la section sur les endpoints des fichiers statiques peut également être utilisé en mode SSR : les fichiers peuvent exporter une fonction `GET` qui reçoit un [objet de contexte](/fr/reference/api-reference/#endpoint-context) avec des propriétés similaires à celles de l'objet global `Astro`.
95+
Tout ce qui est décrit dans la section sur les endpoints des fichiers statiques peut également être utilisé en mode SSR : les fichiers peuvent exporter une fonction `GET` qui reçoit un [objet de contexte](/fr/reference/api-reference/#contexte-du-point-de-terminaison) avec des propriétés similaires à celles de l'objet global `Astro`.
9696

9797
Mais, contrairement au mode `static`, lorsque vous activez le mode de rendu à la demande pour une route, le point de terminaison sera construit lorsqu'il sera demandé. Cela débloque de nouvelles fonctionnalités qui ne sont pas disponibles au moment de la construction, et vous permet de construire des routes d'API qui écoutent les requêtes et exécutent du code de manière sécurisée sur le serveur au moment de l'exécution.
9898

src/content/docs/fr/guides/imports.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ const posts = await Astro.glob('../pages/post/*.md');
213213
</div>
214214
```
215215

216-
Les composants Astro importés avec `Astro.glob` sont de type [`AstroInstance`](/fr/reference/api-reference/#astro-files). Vous pouvez effectuer le rendu de chaque instance de composant en utilisant sa propriété `default` :
216+
Les composants Astro importés avec `Astro.glob` sont de type [`AstroInstance`](/fr/reference/api-reference/#fichiers-astro). Vous pouvez effectuer le rendu de chaque instance de composant en utilisant sa propriété `default` :
217217

218218
```astro title="src/pages/component-library.astro" {8}
219219
---

src/content/docs/fr/guides/internationalization.mdx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ Les dossiers localisés n'ont pas besoin d'être à la racine du dossier `/pages
6060

6161
### Créer des liens
6262

63-
Une fois le routage i18n configuré, vous pouvez désormais calculer des liens vers des pages de votre site à l'aide des fonctions d'assistance telles que [`getRelativeLocaleURL()`](/fr/reference/api-reference/#getrelativelocaleurl) disponible avec le [module `astro:i18n`](/fr/reference/api-reference/#internationalization-astroi18n). Ces liens générés fourniront toujours la bonne route localisée et peuvent vous aider à utiliser ou à vérifier correctement les URL de votre site.
63+
Une fois le routage i18n configuré, vous pouvez désormais calculer des liens vers des pages de votre site à l'aide des fonctions d'assistance telles que [`getRelativeLocaleURL()`](/fr/reference/api-reference/#getrelativelocaleurl) disponible avec le [module `astro:i18n`](/fr/reference/api-reference/#internationalisation-astroi18n). Ces liens générés fourniront toujours la bonne route localisée et peuvent vous aider à utiliser ou à vérifier correctement les URL de votre site.
6464

6565
Vous pouvez également continuer à rédiger les liens manuellement.
6666

@@ -332,33 +332,33 @@ export default defineConfig({
332332
})
333333
```
334334

335-
Lors de l'utilisation des fonctions du [module virtuel `astro:i18n`](/fr/reference/api-reference/#internationalization-astroi18n) pour calculer des chemins d'URL valides en fonction de votre configuration (par exemple `getRelativeLocaleUrl()`), [utilisez `path` comme valeur pour `locale`](/fr/reference/api-reference/#getlocalebypath).
335+
Lors de l'utilisation des fonctions du [module virtuel `astro:i18n`](/fr/reference/api-reference/#internationalisation-astroi18n) pour calculer des chemins d'URL valides en fonction de votre configuration (par exemple `getRelativeLocaleUrl()`), [utilisez `path` comme valeur pour `locale`](/fr/reference/api-reference/#getlocalebypath).
336336

337337
#### Limitations
338338

339-
Cette fonctionnalité présente certaines restrictions :
339+
Cette fonctionnalité présente certaines restrictions :
340340
- L'option `site` est obligatoire.
341341
- L'option `output` doit être définie sur `"server"`.
342342
- Il ne peut pas y avoir de pages individuelles pré-générées.
343343
- La fonctionnalité de l'adaptateur [`functionPerRoute`](/fr/reference/adapter-reference/#functionperroute) n'est pas supportée.
344344

345-
Astro s'appuie sur les en-têtes suivants afin de prendre en charge la fonctionnalité :
345+
Astro s'appuie sur les en-têtes suivants afin de prendre en charge la fonctionnalité :
346346
- [`X-Forwarded-Host`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host) et [`Host`](https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Host). Astro utilisera le premier et, s’il n’est pas présent, essaiera le second.
347347
- [`X-Forwarded-Proto`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto) et [`URL#protocol`](https://developer.mozilla.org/fr/docs/Web/API/URL/protocol) de la requête du serveur.
348348

349349
Assurez-vous que votre serveur proxy/plateforme d'hébergement est en mesure de fournir ces informations. Ne pas récupérer ces en-têtes entraînera une page 404 (code de statut).
350350

351351
## Détection de la langue du navigateur
352352

353-
Le routage i18n d'Astro vous permet d'accéder à deux propriétés de détection de la langue du navigateur dans les pages générées à la demande : `Astro.preferredLocale` et `Astro.preferredLocaleList`. Toutes les pages, y compris les pages statiques pré-générées, ont accès à `Astro.currentLocale`.
353+
Le routage i18n d'Astro vous permet d'accéder à deux propriétés de détection de la langue du navigateur dans les pages générées à la demande : `Astro.preferredLocale` et `Astro.preferredLocaleList`. Toutes les pages, y compris les pages statiques pré-générées, ont accès à `Astro.currentLocale`.
354354

355355
Ceux-ci combinent l'en-tête `Accept-Language` du navigateur et vos paramètres régionaux `locales` (chaînes de caractères ou `codes`) pour respecter automatiquement les langues préférées de votre visiteur.
356356

357-
- [`Astro.preferredLocale`](/fr/reference/api-reference/#astropreferredlocale) : Astro peut calculer un **paramètre régional préféré** pour votre visiteur si les paramètres régionaux préférés de son navigateur sont inclus dans votre tableau `locales`. Cette valeur n'est pas définie si aucune correspondance de ce type n'existe.
357+
- [`Astro.preferredLocale`](/fr/reference/api-reference/#astropreferredlocale) : Astro peut calculer un **paramètre régional préféré** pour votre visiteur si les paramètres régionaux préférés de son navigateur sont inclus dans votre tableau `locales`. Cette valeur n'est pas définie si aucune correspondance de ce type n'existe.
358358

359-
- [`Astro.preferredLocaleList`](/fr/reference/api-reference/#astropreferredlocalelist) : Un tableau de tous les paramètres régionaux demandés par le navigateur et pris en charge par votre site web. Cela produit une liste de toutes les langues compatibles entre votre site et votre visiteur. La valeur est `[]` si aucune des langues demandées par le navigateur n'est trouvée dans votre tableau `locales`. Si le navigateur ne spécifie aucune langue préférée, cette valeur sera [`i18n.locales`].
359+
- [`Astro.preferredLocaleList`](/fr/reference/api-reference/#astropreferredlocalelist) : Un tableau de tous les paramètres régionaux demandés par le navigateur et pris en charge par votre site web. Cela produit une liste de toutes les langues compatibles entre votre site et votre visiteur. La valeur est `[]` si aucune des langues demandées par le navigateur n'est trouvée dans votre tableau `locales`. Si le navigateur ne spécifie aucune langue préférée, cette valeur sera [`i18n.locales`].
360360

361-
- [`Astro.currentLocale`](/fr/reference/api-reference/#astrocurrentlocale) : Le paramètre régional calculé à partir de l'URL actuelle, en utilisant la syntaxe spécifiée dans votre configuration `locales`. Si l'URL ne contient pas de préfixe `/[locale]/`, alors la valeur par défaut sera [`i18n.defaultLocale`](/fr/reference/configuration-reference/#i18ndefaultlocale).
361+
- [`Astro.currentLocale`](/fr/reference/api-reference/#astrocurrentlocale) : Le paramètre régional calculé à partir de l'URL actuelle, en utilisant la syntaxe spécifiée dans votre configuration `locales`. Si l'URL ne contient pas de préfixe `/[locale]/`, alors la valeur par défaut sera [`i18n.defaultLocale`](/fr/reference/configuration-reference/#i18ndefaultlocale).
362362

363363
Afin de réussir à faire correspondre les préférences de vos visiteurs, fournissez vos `codes` en utilisant le même modèle que celui [utilisé par le navigateur](https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Accept-Language#syntaxe).
364364

src/content/docs/fr/guides/middleware.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ Le middleware vous permet également de définir et de partager des informations
4242

4343
### Objet `context`
4444

45-
L'objet [`context`](/fr/reference/api-reference/#endpoint-context) inclut des informations à mettre à disposition d'autres middleware, routes API et routes `.astro` pendant le processus de rendu.
45+
L'objet [`context`](/fr/reference/api-reference/#contexte-du-point-de-terminaison) inclut des informations à mettre à disposition d'autres middleware, routes API et routes `.astro` pendant le processus de rendu.
4646

4747
C'est un argument optionnel passé à `onRequest()` qui peut contenir l'objet `locals` ainsi que toutes les propriétés additionnelles à partager pendant le rendu.Par exemple, l'objet `context` peut inclure les cookies utilisés pour l'authentification.
4848

0 commit comments

Comments
 (0)