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êsSe você tiver uma ideia para melhorar esta documentação, sinta-se à vontade para contribuir enviando uma pull request no GitHub.
Link do GitHub para a documentaçãoCopiar o Markdown do documento para a área de transferência
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
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
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;
Para usar o conteúdo baseado em seleção em componentes clientes do Next.js, recupere-o através do hook useIntlayer. Aqui está um exemplo:
Copiar o código para a área de transferência
"use client";
import type { FC } from "react";
import { useIntlayer } from "next-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>{publishStatus("draft")}</p>
<p>{publishStatus("published")}</p>
</div>
);
};
export default PostStatus;
Para usar o conteúdo baseado em seleção nos componentes Vue, recupere-o através do hook useIntlayer. Aqui está um exemplo:
Copiar o código para a área de transferência
Para usar o conteúdo baseado em seleção nos componentes Svelte, recupere-o através do hook useIntlayer. A store é acessada com $. Aqui está um exemplo:
Copiar o código para a área de transferência
Para usar o conteúdo baseado em seleção em componentes Preact, recupere-o através do hook useIntlayer. Aqui está um exemplo:
Copiar o código para a área de transferência
import type { FC } from "preact";
import { useIntlayer } from "preact-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>{publishStatus("draft")}</p>
<p>{publishStatus("published")}</p>
</div>
);
};
export default PostStatus;
Para usar o conteúdo baseado em seleção em componentes SolidJS, recupere-o através do hook useIntlayer. Aqui está um exemplo:
Copiar o código para a área de transferência
import type { Component } from "solid-js";
import { useIntlayer } from "solid-intlayer";
const PostStatus: Component = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>{publishStatus("draft")}</p>
<p>{publishStatus("published")}</p>
</div>
);
};
export default PostStatus;
Para usar o conteúdo baseado em seleção em componentes Angular, recupere-o através do hook useIntlayer. Aqui está um exemplo:
Copiar o código para a área de transferência
Para usar o conteúdo baseado em seleção com vanilla-intlayer, recupere-o através do hook useIntlayer. Aqui está um exemplo:
Copiar o código para a área de transferência
import { installIntlayer, useIntlayer } from "vanilla-intlayer";
installIntlayer();
const content = useIntlayer("my_key").onChange((newContent) => {
document.getElementById("status")!.textContent =
newContent.publishStatus("draft");
});
// Renderização inicial
document.getElementById("status")!.textContent = content.publishStatus("draft");
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
Copiar o código para a área de transferência
Migrando 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
torna-se
Copiar o código para a área de transferência
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.