# react-native: Derive URL: https://generaltranslation.com/fr/docs/react-native/api/components/derive.mdx --- title: Derive description: Référence de l’API du composant Derive --- {/* GÉNÉRÉ AUTOMATIQUEMENT : ne modifiez pas ce fichier directement. Modifiez plutôt le template dans content/docs-templates/. */} ## Vue d’ensemble Le composant `` sert à gérer la fragmentation des phrases et le contenu réutilisable sans compromettre l’accord grammatical, la conjugaison ni les changements d’ordre des mots. Dans l’exemple suivant, deux traductions distinctes sont générées : "Le beau garçon joue avec le ballon" et "La belle fille joue avec le ballon". ```jsx function getSubject(gender) { return gender === 'male' ? 'boy' : 'girl'; } The beautiful {getSubject(gender)} plays with the ball. ; ``` Le composant `` indique à l’outil CLI de déréférencer un appel de fonction et de recenser tous les contenus possibles renvoyés par cette fonction, en traitant chaque instruction `return` comme si elle était enveloppée dans un composant ``. **Utilisation avancée :** Le composant `` est une fonctionnalité avancée et doit être utilisé avec prudence, car il peut générer un nombre d’entrées de traduction plus élevé qu’il n’y paraît. De plus, `` impose une contrainte stricte : toutes les variantes possibles du contenu doivent être analysables statiquement. Pour plus d’informations, consultez les notes de version de [gt-next@6.8.0](/devlog/gt-next_v6_8_0). *** ## Référence ### Props ### Description | Prop | Description | | ---------- | ------------------------------------------------------------------------------- | | `children` | Contenu statique. L’outil CLI analysera toutes les valeurs de retour possibles. | ### Valeur de retour `React.JSX.Element` contenant le contenu produit par l’appel de fonction, chaque résultat possible donnant lieu à une entrée de traduction distincte. *** ## Comportement ### Analyse au build Pendant le processus de build, l’outil CLI analyse les enfants des composants `` et crée des entrées de traduction distinctes pour chaque résultat possible. Cela permet de gérer correctement l’accord grammatical et l’ordre des mots selon les langues. ### Prérequis Les enfants des composants `` doivent pouvoir être déterminés au moment du build. La syntaxe prise en charge comprend : * Les littéraux de chaîne de caractères, numériques et booléens * Les expressions JSX avec des composants `` et `` imbriqués * Les opérateurs ternaires * Les appels de fonction (dont les résultats peuvent être analysés statiquement) *** ## Exemples ### Utilisation de base Utilisez `` pour gérer le contenu dynamique qui influe sur la structure de la phrase. ```jsx title="BasicExample.jsx" copy import { T, Derive } from 'gt-react-native'; export default function Example({ gender }) { return ( The {gender === 'male' ? 'boy' : 'girl'} is beautiful. ); } ``` Cela crée deux entrées de traduction : * "Le garçon est beau" * "La fille est belle" ### Avec des appels de fonction Utilisez `` pour gérer le contenu dynamique provenant d’un appel de fonction et qui affecte la structure de la phrase. ```jsx title="BasicExample.jsx" copy import { T, Derive } from 'gt-react-native'; function getSubject(gender) { return gender === 'male' ? 'boy' : 'girl'; } export default function Example({ gender }) { return ( The {getSubject(gender)} is beautiful. ); } ``` ### Avec des variables Combinez `` avec `` pour intégrer du contenu dynamique dans des valeurs de retour de fonction statiques. ```jsx title="WithVariables.jsx" copy import { T, Derive, Var } from 'gt-react-native'; function getTitle(title) { return title === 'Mr.' ? 'Mr.' : 'Ms.'; } function getGreeting(title) { return ( <> Hello, {getTitle(title)}. How are you, {name}? ); } export default function Greeting({ title, name }) { return ( {getGreeting(title)} ); } ``` ### Plusieurs composants Derive Soyez prudent lorsque vous utilisez plusieurs composants ``, car cela multiplie les entrées de traduction. ```jsx title="MultipleDerive.jsx" copy import { T, Derive } from 'gt-react-native'; function getSubject(gender) { return gender === 'male' ? 'boy' : 'girl'; } function getObject(toy) { return toy === 'ball' ? 'ball' : 'crayon'; } export default function PlayExample({ gender, toy }) { return ( {getSubject(gender)} plays with the{' '} {getObject(toy)}. ); } ``` Cela crée quatre entrées de traduction (2 × 2 combinaisons) : * "le garçon joue avec le ballon" * "le garçon joue avec le crayon" * "la fille joue avec le ballon" * "la fille joue avec le crayon" ### Syntaxes de fonction prises en charge ```jsx title="SupportedSyntax.jsx" copy function getExamples(key) { switch (key) { case 'literals': if (condition1) { return 'The boy'; } else if (condition2) { return 22; } else { return true; } case 'jsx': return ( <> Hello, {getTitle(title)}. How are you,{' '} {name}? ); case 'ternary': return condition ? 'The boy' : 'The girl'; case 'function_calls': return otherStaticFunction(); } } ``` *** ## Limitations ### Impact sur les performances L’utilisation de `` peut entraîner une augmentation exponentielle du nombre d’entrées de traduction. Chaque composant `` supplémentaire multiplie le nombre total d’entrées de traduction. ### Contenu variable Tout contenu dynamique ou variable dans les valeurs de retour de fonctions statiques doit être placé dans des composants ``. ```jsx // Correct function getContent() { return ( <> Hello, {userName}! ); } // Incorrect - provoquera des erreurs de build function getContent() { return <>Hello, {userName}!; } ``` *** ## Remarques * Le composant `` est conçu pour gérer la fragmentation des phrases tout en conservant la justesse grammaticale dans les différentes langues. * Tenez toujours compte de l’impact sur les performances de l’utilisation de plusieurs composants `` dans une même traduction. * Traitez chaque instruction return dans les fonctions statiques comme si elle était encapsulée dans un composant ``. * Utilisez `` avec discernement - privilégiez des structures de traduction plus simples lorsque c’est possible. ## Prochaines étapes * Pour le contenu variable au sein des traductions, consultez le composant [``](/docs/react-native/api/components/var). * Pour le composant de traduction principal, consultez [``](/docs/react-native/api/components/t). * Pour la version sous forme de chaîne de caractères de ``, consultez [`derive`](/docs/react-native/api/strings/derive).