Posez votre question et obtenez un résumé du document en referencant cette page et le Provider AI de votre choix
Historique des versions
- "Introduire le contenu basé sur la sélection"v9.1.030/07/2026
Le contenu de cette page a été traduit à l'aide d'une IA.
Voir la dernière version du contenu original en anglaisIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Contenu Basé sur la Sélection / Select dans Intlayer
Comment fonctionne la Sélection (Select)
Dans Intlayer, le contenu basé sur la sélection est réalisé grâce à la fonction select, qui mappe des valeurs de chaîne arbitraires à leur contenu correspondant. C'est l'équivalent d'un message ICU {value, select, …}, ou d'une instruction switch dans le code de votre application.
Utilisez select lorsque le discriminant est une chaîne de caractères libre — un statut, un forfait, une plateforme, un rôle. Pour les autres discriminants, Intlayer fournit des nœuds dédiés :
Ouvrir le tableau dans une fenêtre modale pour voir tout le contenu clairement
| Discriminant | Nœud |
|---|---|
| Une quantité | enu() |
| Un booléen | cond() |
| Un genre | gender() |
| Toute autre valeur de chaîne | select() |
Configuration du contenu basé sur la sélection
Pour configurer le contenu basé sur la sélection dans votre projet Intlayer, créez un module de contenu qui inclut vos définitions de sélection. Vous trouverez ci-dessous des exemples dans différents formats.
Copier le code dans le presse-papiers
import { select, type Dictionary } from "intlayer";
const myPostContent = {
key: "my_key",
content: {
publishStatus: select({
draft: "This post is a draft",
published: "This post is live",
scheduled: "This post is scheduled",
fallback: "Unknown status", // Optionnel
}),
},
} satisfies Dictionary;
export default myPostContent;Si aucunfallbackn'est déclaré, la dernière clé déclarée sera prise comme valeur par défaut lorsque la valeur fournie ne correspond à aucun cas déclaré — le même contrat que pourcond()etgender().
Sécurité du typage
L'argument accepté est déduit des cas déclarés :
- Sans
fallback, seuls les cas déclarés sont acceptés — une faute de frappe est une erreur de typage. - Avec un
fallback, n'importe quelle chaîne de caractères est acceptée (la valeur par défaut couvre les valeurs non correspondantes) tandis que les cas déclarés sont toujours proposés en autocomplétion.
Pourquoi ne pas utiliser un objet simple ?
Il est tentant de déclarer un objet simple et de l'indexer avec la valeur d'exécution :
Copier le code dans le presse-papiers
// ❌ Ne faites pas celaconst { publishStatus } = useIntlayer("my_key");return <p>{publishStatus[publishType]}</p>;Le compilateur Intlayer analyse votre code source pour supprimer le contenu inutilisé et minifier les clés restantes. Un accès calculé dynamique (obj[expr]) ne peut pas être résolu de manière statique, de sorte que toute la branche est marquée comme opaque : elle est conservée dans le bundle et ses clés ne sont pas minifiées.
Avec select(), la résolution du cas se produit à l'intérieur d'un appel de fonction plutôt que comme un accès à une propriété. Le compilateur voit un seul accès à un champ statique et optimise le nœud exactement comme enu(), cond() ou gender() :
Copier le code dans le presse-papiers
// ✅ Faites ceciconst { publishStatus } = useIntlayer("my_key");return <p>{publishStatus(publishType)}</p>;Utilisation du contenu basé sur la sélection
Pour utiliser le contenu basé sur la sélection dans un composant React, importez et utilisez le hook useIntlayer du package react-intlayer. Ce hook récupère le contenu de la clé spécifiée et vous permet de transmettre une valeur pour sélectionner la sortie appropriée.
Copier le code dans le presse-papiers
import type { FC } from "react";
import { useIntlayer } from "react-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>
{
/* Sortie : This post is a draft */
publishStatus("draft")
}
</p>
<p>
{
/* Sortie : This post is live */
publishStatus("published")
}
</p>
<p>
{
/* Sortie : Unknown status */
publishStatus("Archived")
}
</p>
</div>
);
};
export default PostStatus;Combinaison de Select avec d'autres Nœuds
Chaque cas contient un nœud de contenu complet, de sorte que select se combine avec t(), insert(), md() et les autres :
Copier le code dans le presse-papiers
import { insert, select, t, type Dictionary } from "intlayer";const myPostContent = { key: "my_key", content: { publishStatus: select({ draft: insert( t({ en: "{{name}} saved a draft", fr: "{{name}} a enregistré un brouillon", }) ), published: insert( t({ en: "{{name}} published the post", fr: "{{name}} a publié l’article", }) ), fallback: insert( t({ en: "{{name}} updated the post", fr: "{{name}} a mis à jour l’article", }) ), }), },} satisfies Dictionary;export default myPostContent;Copier le code dans le presse-papiers
publishStatus("draft")({ name: "Alice" }); // Sortie : Alice a enregistré un brouillonMigration depuis select d'ICU
Les messages utilisant l'argument select d'ICU sont importés en tant que nœuds select :
Copier le code dans le presse-papiers
{publishType, select, draft {draft} published {published} other {Unknown}}devient
Copier le code dans le presse-papiers
select( { draft: "draft", published: "published", fallback: "Unknown", }, "publishType");Le cas other d'ICU est renommé en fallback, qui est le nom canonique d'Intlayer pour la valeur par défaut de rattrapage. Le deuxième argument enregistre le nom de la variable ICU afin que le message puisse être reconverti exactement dans la même chaîne ICU lors de son exportation.
UnselectICU dont les cas sont des valeurs de genre (male/female/other) est importé en tant que nœudgenderà la place.
Ressources Supplémentaires
Pour des informations plus détaillées sur la configuration et l'utilisation, consultez les ressources suivantes :
Ces ressources offrent des informations approfondies sur la configuration et l'utilisation d'Intlayer dans divers environnements et frameworks.