Introduçã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.ts
- .content.tsx
- .content.js
- .content.mjs
- .content.cjs
O aplicativo buscará arquivos que correspondam ao padrão glob ./src/**/*.content.{ts,tsx,js,jsx,mjs,cjs} 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; }; multilingualContent: string; quantityContent: string; conditionalContent: string; nestedContent: string; markdownContent: string; externalContent: string; };}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: async () => await fetch("https://example.com"), 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