O conteúdo desta página foi traduzido com uma IA.
Veja a última versão do conteúdo original em inglêsIntrodução à declaração do seu conteúdo
Extensões de arquivos
Por padrão, o Intlayer monitora todos os arquivos com as seguintes extensões para declarações de conteúdo:
- .content.json
- .content.ts
- .content.tsx
- .content.js
- .content.jsx
- .content.mjs
- .content.mjx
- .content.cjs
- .content.cjx
O aplicativo buscará arquivos que correspondam ao padrão glob ./src/**/*.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx} por padrão.
Essas extensões padrão são adequadas para a maioria das aplicações. No entanto, se você tiver requisitos específicos, consulte o guia de personalização de extensões de conteúdo para obter instruções sobre como gerenciá-las.
Para uma lista completa de opções de configuração, visite a documentação de configuração.
Declare Seu Conteúdo
Crie e gerencie seus dicionários:
import { t, enu, cond, nest, md, type Dictionary } from "intlayer";
interface Content {
imbricatedContent: {
imbricatedContent2: {
stringContent: string;
numberContent: number;
booleanContent: boolean;
javaScriptContent: string;
};
};
multilingualContent: string;
quantityContent: string;
conditionalContent: string;
externalContent: string;
insertionContent: string;
fileContent: string;
nestedContent: any;
markdownContent: any;
jsxContent: any;
}
export default {
key: "page",
content: {
imbricatedContent: {
imbricatedContent2: {
stringContent: "Olá Mundo",
numberContent: 123,
booleanContent: true,
javaScriptContent: `${process.env.NODE_ENV}`,
},
},
multilingualContent: t({
en: "English content",
"en-GB": "English content (UK)",
fr: "French content",
es: "Spanish content",
pt: "Conteúdo em Português",
}),
quantityContent: enu({
"<-1": "Menos de menos um carro",
"-1": "Menos um carro",
"0": "Nenhum carro",
"1": "Um carro",
">5": "Alguns carros",
">19": "Muitos carros",
}),
conditionalContent: cond({
true: "Validação está habilitada",
false: "Validação está desabilitada",
}),
nestedContent: nest(
"navbar", // A chave do dicionário a ser aninhada
"login.button" // [Opcional] O caminho para o conteúdo a ser aninhado
),
externalContent: fetch("https://example.com").then((res) => res.json())
markdownContent: md("# Exemplo de Markdown"),
/*
* Disponível apenas usando `react-intlayer` ou `next-intlayer`
*/
jsxContent: <h1>Meu título</h1>,
},
} satisfies Dictionary<Content>; // [opcional] Dictionary é genérico e permite fortalecer o formato do seu dicionário
Imbricação de funções
Você pode, sem problemas, imbricar funções dentro de outras.
Exemplo:
import { t, enu, cond, nest, md, type Dictionary } from "intlayer";
const getName = async () => "João Silva";
export default {
key: "page",
content: {
// `getIntlayer('page','pt').hiMessage` retorna `['Oi', ' ', 'João Silva']`
hiMessage: [
t({
en: "Hi",
fr: "Salut",
es: "Hola",
pt: "Oi",
}),
" ",
getName(),
],
// Conteúdo composto imbricando condição, enumeração e conteúdo multilíngue
// `getIntlayer('page','pt').advancedContent(true)(10) retorna 'Vários itens encontrados'`
advancedContent: cond({
true: enu({
"0": t({
en: "No items found",
fr: "Aucun article trouvé",
es: "No se encontraron artículos",
pt: "Nenhum item encontrado",
}),
"1": t({
en: "One item found",
fr: "Un article trouvé",
es: "Se encontró un artículo",
pt: "Um item encontrado",
}),
">1": t({
en: "Multiple items found",
fr: "Plusieurs articles trouvés",
es: "Se encontraron múltiples artículos",
pt: "Vários itens encontrados",
}),
}),
false: t({
en: "No valid data available",
fr: "Aucune donnée valide disponible",
es: "No hay datos válidos disponibles",
pt: "Nenhum dado válido disponível",
}),
}),
},
} satisfies Dictionary;
Se 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ção