Faça sua pergunta e obtenha um resumo do documento referenciando esta página e o provedor AI de sua escolha
Histórico de versões
- "Introduzido o conteúdo baseado em seleção"v9.1.030/07/2026
O conteúdo desta página foi traduzido com uma IA.
Veja a última versão do conteúdo original em inglêsIf 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
Conteúdo Baseado em Seleção / Select no Intlayer
Como o Select Funciona
No Intlayer, o conteúdo baseado em seleção é obtido através da função select, que mapeia valores de string arbitrários ao seu conteúdo correspondente. É o equivalente a uma mensagem {value, select, …} do ICU, ou a uma declaração switch no código da sua aplicação.
Use o select quando o discriminante for uma string de formato livre: um status, um plano, uma plataforma, um cargo. Para os demais discriminantes, o Intlayer fornece nós dedicados:
Abrir a tabela em um modal para ver todo o conteúdo claramente
| Discriminante | Nó |
|---|---|
| Uma quantidade | enu() |
| Um booleano | cond() |
| Um gênero | gender() |
| Qualquer outra string | select() |
Configurando Conteúdo Baseado em Seleção
Para configurar o conteúdo baseado em seleção no seu projeto Intlayer, crie um módulo de conteúdo que inclua as suas definições de seleção. Abaixo estão exemplos em vários formatos.
Copiar o código para a área de transferência
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", // Opcional
}),
},
} satisfies Dictionary;
export default myPostContent;Se umfallbacknão for declarado, a última chave declarada será considerada o fallback quando o valor fornecido não corresponder a nenhum caso declarado: o mesmo contrato decond()egender().
Segurança de Tipo
O argumento aceito é inferido dos casos declarados:
- Sem um
fallback, apenas os casos declarados são aceitos: um erro de digitação é um erro de tipo. - Com um
fallback, qualquer string é aceita (o fallback cobre os valores não correspondentes) enquanto os casos declarados continuam fornecendo o preenchimento automático (autocompletion).
Por Que Não um Objeto Simples?
É tentador declarar um objeto simples e acessá-lo usando o valor em tempo de execução:
Copiar o código para a área de transferência
// ❌ Não faça issoconst { publishStatus } = useIntlayer("my_key");return <p>{publishStatus[publishType]}</p>;O compilador do Intlayer analisa o seu código fonte para descartar o conteúdo não utilizado e minificar as chaves restantes. Um acesso computado dinâmico (obj[expr]) não pode ser resolvido estaticamente, fazendo com que todo o ramo seja marcado como opaco: ele é mantido no pacote (bundle) e as suas chaves não são minificadas.
Com select(), a resolução do caso ocorre dentro de uma chamada de função e não como um acesso de propriedade. O compilador enxerga um único acesso de campo estático e otimiza o nó exatamente como faz com enu(), cond() ou gender():
Copiar o código para a área de transferência
// ✅ Faça issoconst { publishStatus } = useIntlayer("my_key");return <p>{publishStatus(publishType)}</p>;Usando Conteúdo Baseado em Seleção
Para utilizar o conteúdo baseado em seleção num componente React, importe e use o hook useIntlayer a partir do pacote react-intlayer. Este hook recupera o conteúdo da chave especificada e permite que você passe um valor para selecionar a saída apropriada.
Copiar o código para a área de transferência
import type { FC } from "react";
import { useIntlayer } from "react-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>
{
/* Saída: This post is a draft */
publishStatus("draft")
}
</p>
<p>
{
/* Saída: This post is live */
publishStatus("published")
}
</p>
<p>
{
/* Saída: Unknown status */
publishStatus("Archived")
}
</p>
</div>
);
};
export default PostStatus;Combinando Select com Outros Nós
Cada caso contém um nó de conteúdo completo, de forma que o select pode ser composto com t(), insert(), md() e outros:
Copiar o código para a área de transferência
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", pt: "{{name}} salvou um rascunho", }) ), published: insert( t({ en: "{{name}} published the post", fr: "{{name}} a publié l’article", pt: "{{name}} publicou o post", }) ), fallback: insert( t({ en: "{{name}} updated the post", fr: "{{name}} a mis à jour l’article", pt: "{{name}} atualizou o post", }) ), }), },} satisfies Dictionary;export default myPostContent;Copiar o código para a área de transferência
publishStatus("draft")({ name: "Alice" }); // Saída: Alice salvou um rascunhoMigrando do ICU select
Mensagens que usam o argumento ICU select são importadas como nós select:
Copiar o código para a área de transferência
{publishType, select, draft {draft} published {published} other {Unknown}}torna-se
Copiar o código para a área de transferência
select( { draft: "draft", published: "published", fallback: "Unknown", }, "publishType");O caso ICU other é renomeado para fallback, que é o nome canônico do Intlayer para o caso "pega-tudo" (catch-all). O segundo argumento registra o nome da variável ICU para que a mensagem seja revertida exatamente à mesma string do ICU no momento da exportação.
Umselectdo ICU em que os casos são valores de gênero (male/female/other) é, ao invés disso, importado como um nógender.
Recursos Adicionais
Para informações mais detalhadas sobre configuração e uso, consulte os seguintes recursos:
Esses recursos oferecem mais detalhes sobre como configurar e usar o Intlayer em vários ambientes e frameworks.