{translation1} {translation2} {translation3}
; } ``` ### Phrases fragmentées Vous pouvez utiliser `derive` pour gérer les phrases fragmentées dans les appels de fonction. ```jsx copy import { derive, gt } from 'gt-react-native'; function getSubject(gender) { return gender === 'male' ? 'boy' : 'girl'; } function Component({ gender }) { const translation = gt(`The ${derive(getSubject(gender))} is playing.`); return{translation}
; } ``` ### Accord Sans `derive`, traduire l’accord est syntaxiquement lourd. Vous devez ajouter une instruction `select` pour gérer l’accord (pluriel, genre, etc.). Ensuite, vous devez aussi énumérer chaque résultat possible. ```jsx copy import { gt } from 'gt-react-native'; function getSubject(gender) { return gender === 'male' ? 'boy' : 'girl'; } function Component({ gender }) { const translation = gt( '{gender, select, boy {The boy is playing.} girl {The girl is playing.} other {}}', { gender: getSubject(gender) , }, ); return{translation}
; } ``` Avec `derive`, la gestion de l’accord devient triviale. Aucune instruction `select` n’est nécessaire, et vous n’avez pas besoin de spécifier chaque cas. ```jsx copy import { derive, declareVar, gt } from 'gt-react-native'; function getSubject(gender) { return gender === 'male' ? 'boy' : 'girl'; } function Component({ gender }) { const translation = gt(`The ${derive(getSubject(gender))} is playing.`); return{translation}
; } ``` En utilisant `derive`, l’outil CLI identifie que `getSubject` a deux résultats possibles et crée une entrée de traduction pour chacune d’elles. Ainsi, l’accord est géré automatiquement. * "Le garçon joue" -> "*El* niño está jugando" * "La fille joue" -> "*La* niña está jugando" ### Avec des variables Vous pouvez combiner `derive` et `declareVar` pour gérer du contenu dynamique. ```jsx copy import { derive, declareVar, gt } from 'gt-react-native'; function getGreeting(name) { return name ? `Hello, ${declareVar(name)}` : 'Hello, stranger'; } function Component({ name }) { const translation = gt(`${derive(getGreeting(name))}! How are you?`); return{translation}
; } ``` ### Fonctions complexes Les fonctions peuvent contenir plusieurs branches conditionnelles et des instructions `return`. ```jsx copy import { derive, gt } from 'gt-react-native'; function getStatusMessage(status, priority) { if (status === 'complete') { return priority === 'high' ? 'Urgent task completed' : 'Task completed'; } else if (status === 'pending') { return priority === 'high' ? 'Urgent task pending' : 'Task pending'; } return 'Task status unknown'; } function Component({ status, priority }) { const message = gt(`${derive(getStatusMessage(status, priority))}.`); return{message}
; } ``` ### Expressions et logique intégrées Vous pouvez intégrer directement de la logique dans l’appel à `derive`. ```jsx copy import { derive, gt } from 'gt-react-native'; function Component({ gender }) { const message = gt(`The ${derive(gender === 'male' ? 'boy' : 'girl')} is playing.`); return{message}
; } ``` *** ## Remarques * Utilisez `derive` avec discernement, car cela peut augmenter de manière exponentielle le nombre d'entrées de traduction * Tous les résultats possibles doivent être analysables statiquement au moment du build * Les variables dans les fonctions statiques doivent être encapsulées avec `declareVar` ## Étapes suivantes * Consultez [`declareVar`](/docs/react-native/api/strings/declare-var) pour marquer le contenu dynamique dans des fonctions statiques * Consultez [`decodeVars`](/docs/react-native/api/strings/decode-vars) pour extraire les valeurs d’origine des variables déclarées * Consultez [`