Skip to content

Commit aa00849

Browse files
authored
Merge pull request #89 from javaevolved/copilot/translate-to-french
Add French (fr) locale
2 parents bf6842b + be220ff commit aa00849

File tree

114 files changed

+2100
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+2100
-0
lines changed

html-generators/locales.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ en=English
33
de=Deutsch
44
es=Español
55
pt-BR=Português (Brasil)
6+
fr=Français
67
ja=日本語
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: "Collectors.teeing()"
3+
oldApproach: "Deux passages"
4+
modernApproach: "teeing()"
5+
summary: "Calcule deux agrégations en un seul passage du stream."
6+
explanation: "Collectors.teeing() envoie chaque élément à deux collectors aval et combine les résultats. Cela évite de parcourir les données deux fois ou d'utiliser un accumulateur mutable."
7+
whyModernWins:
8+
- icon: ""
9+
title: "Un seul passage"
10+
desc: "Traite le stream une seule fois au lieu de deux."
11+
- icon: "🧩"
12+
title: "Composable"
13+
desc: "Combine deux collectors quelconques avec une fonction de fusion."
14+
- icon: "🔒"
15+
title: "Résultat immutable"
16+
desc: "Fusionne directement dans un record ou un objet valeur."
17+
support:
18+
description: "Disponible depuis JDK 12 (mars 2019)"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: "Copie immutable de collections"
3+
oldApproach: "Copie manuelle + wrapper"
4+
modernApproach: "List.copyOf()"
5+
summary: "Crée une copie immutable de n'importe quelle collection en un seul appel."
6+
explanation: "List.copyOf(), Set.copyOf() et Map.copyOf() créent des instantanés immutables de collections existantes. Si la source est déjà une collection immutable, aucune copie n'est effectuée."
7+
whyModernWins:
8+
- icon: ""
9+
title: "Copie intelligente"
10+
desc: "Ignore la copie si la source est déjà immutable."
11+
- icon: "📏"
12+
title: "Un seul appel"
13+
desc: "Sans construction manuelle d'ArrayList + wrapper."
14+
- icon: "🛡️"
15+
title: "Copie défensive"
16+
desc: "Les modifications de l'original n'affectent pas la copie."
17+
support:
18+
description: "Disponible depuis JDK 10 (mars 2018)"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: "Création de listes immutables"
3+
oldApproach: "Wrapper verbeux"
4+
modernApproach: "List.of()"
5+
summary: "Crée des listes immutables en une seule expression claire."
6+
explanation: "List.of() crée une liste véritablement immutable — sans wrapper, sans copie défensive. Elle rejette les éléments null et est structurellement immutable. L'ancienne méthode nécessitait trois appels imbriqués."
7+
whyModernWins:
8+
- icon: "📏"
9+
title: "Un seul appel"
10+
desc: "Remplace trois appels imbriqués par une unique méthode factory."
11+
- icon: "🔒"
12+
title: "Véritablement immutable"
13+
desc: "Ce n'est pas juste un wrapper — la liste elle-même est immutable."
14+
- icon: "🛡️"
15+
title: "Sûre contre null"
16+
desc: "Rejette les éléments null à la création, échouant rapidement."
17+
support:
18+
description: "Disponible depuis JDK 9 (sept. 2017)"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: "Création de maps immutables"
3+
oldApproach: "Pattern builder de Map"
4+
modernApproach: "Map.of()"
5+
summary: "Crée des maps immutables en ligne sans avoir besoin d'un builder."
6+
explanation: "Map.of() accepte des paires clé-valeur en ligne et retourne une map immutable. Pour plus de 10 entrées, utilisez Map.ofEntries() avec des paires Map.entry()."
7+
whyModernWins:
8+
- icon: "📏"
9+
title: "Création en ligne"
10+
desc: "Aucune map mutable temporaire nécessaire."
11+
- icon: "🔒"
12+
title: "Résultat immutable"
13+
desc: "La map ne peut pas être modifiée après sa création."
14+
- icon: "🚫"
15+
title: "Sans clés/valeurs null"
16+
desc: "Les entrées null sont rejetées immédiatement."
17+
support:
18+
description: "Disponible depuis JDK 9 (sept. 2017)"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: "Création de sets immutables"
3+
oldApproach: "Wrapper verbeux"
4+
modernApproach: "Set.of()"
5+
summary: "Crée des sets immutables avec un unique appel factory."
6+
explanation: "Set.of() crée un set véritablement immutable qui rejette les éléments null et les doublons à la création. Fini de wrapper des sets mutables."
7+
whyModernWins:
8+
- icon: "📏"
9+
title: "Concis"
10+
desc: "Une ligne au lieu de trois appels imbriqués."
11+
- icon: "🚫"
12+
title: "Détecte les doublons"
13+
desc: "Lève une exception si vous passez des éléments dupliqués par accident."
14+
- icon: "🔒"
15+
title: "Immutable"
16+
desc: "Impossible d'ajouter ou de supprimer après la création."
17+
support:
18+
description: "Disponible depuis JDK 9 (sept. 2017)"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: "Factory Map.entry()"
3+
oldApproach: "SimpleEntry"
4+
modernApproach: "Map.entry()"
5+
summary: "Crée des entrées de map avec une méthode factory propre."
6+
explanation: "Map.entry() remplace le constructeur verbeux de AbstractMap.SimpleEntry. Elle retourne une entrée immutable, idéale pour Map.ofEntries() et les opérations de stream."
7+
whyModernWins:
8+
- icon: "📏"
9+
title: "Concis"
10+
desc: "Une ligne au lieu de trois, avec une intention plus claire."
11+
- icon: "🔒"
12+
title: "Immutable"
13+
desc: "L'entrée retournée ne peut pas être modifiée."
14+
- icon: "🧩"
15+
title: "Composable"
16+
desc: "Fonctionne parfaitement avec Map.ofEntries() pour les grandes maps."
17+
support:
18+
description: "Disponible depuis JDK 9 (sept. 2017)"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: "Itération inverse de listes"
3+
oldApproach: "ListIterator manuel"
4+
modernApproach: "reversed()"
5+
summary: "Itère sur une liste dans l'ordre inverse avec une boucle for-each propre."
6+
explanation: "La méthode reversed() de SequencedCollection retourne une vue dans l'ordre inverse de la liste. Cette vue est soutenue par la liste originale, donc aucune copie n'est effectuée. La syntaxe de la boucle for améliorée rend l'itération inverse aussi lisible que l'itération vers l'avant."
7+
whyModernWins:
8+
- icon: "📖"
9+
title: "Syntaxe naturelle"
10+
desc: "Boucle for améliorée au lieu du verbose ListIterator."
11+
- icon: ""
12+
title: "Sans copie"
13+
desc: "reversed() retourne une vue — sans surcharge de performance."
14+
- icon: "🧩"
15+
title: "API cohérente"
16+
desc: "Fonctionne uniformément sur List, Deque et SortedSet."
17+
support:
18+
description: "Disponible depuis JDK 21 LTS (sept. 2023)"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: "Collections séquencées"
3+
oldApproach: "Arithmétique d'indices"
4+
modernApproach: "getFirst/getLast"
5+
summary: "Accédez au premier et dernier élément et obtenez des vues inversées avec des méthodes d'API propres."
6+
explanation: "SequencedCollection ajoute getFirst(), getLast(), reversed(), addFirst() et addLast() à List, Deque, SortedSet et LinkedHashSet. Fini l'arithmétique size-1 ou l'itération inverse manuelle."
7+
whyModernWins:
8+
- icon: "📖"
9+
title: "Auto-documenté"
10+
desc: "getLast() est plus clair que get(size()-1)."
11+
- icon: "🔄"
12+
title: "Vue inverse"
13+
desc: "reversed() offre une vue — sans besoin de copier."
14+
- icon: "🧩"
15+
title: "API uniforme"
16+
desc: "Fonctionne pareillement sur List, Deque et SortedSet."
17+
support:
18+
description: "Disponible depuis JDK 21 LTS (sept. 2023)"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: "toArray typé dans les streams"
3+
oldApproach: "Copie manuelle de tableau"
4+
modernApproach: "toArray(generator)"
5+
summary: "Convertit des streams en tableaux typés avec une référence de méthode."
6+
explanation: "La méthode toArray(IntFunction) crée un tableau correctement typé à partir d'un stream. Le générateur (String[]::new) indique au stream quel type de tableau créer."
7+
whyModernWins:
8+
- icon: "🎯"
9+
title: "Sûr en termes de types"
10+
desc: "Sans cast vers Object[] — le type du tableau est correct."
11+
- icon: "🔗"
12+
title: "Enchaînable"
13+
desc: "Fonctionne à la fin de n'importe quel pipeline de stream."
14+
- icon: "📏"
15+
title: "Concis"
16+
desc: "Une seule expression remplace la boucle manuelle."
17+
support:
18+
description: "Disponible depuis JDK 8 (mars 2014)"

0 commit comments

Comments
 (0)