Documentação de Configuração do Intlayer

    Visão Geral

    Os arquivos de configuração do Intlayer permitem a personalização de vários aspectos do plugin, como internacionalização, middleware e manipulação de conteúdo. Este documento fornece uma descrição detalhada de cada propriedade na configuração.


    Suporte a Arquivos de Configuração

    O Intlayer aceita formatos de arquivo de configuração JSON, JS, MJS e TS:

    • intlayer.config.ts
    • intlayer.config.js
    • intlayer.config.json
    • intlayer.config.cjs
    • intlayer.config.mjs
    • .intlayerrc

    Exemplo de arquivo de configuração

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH],  },  content: {    typesDir: "content/types",  },  middleware: {    noPrefix: false,  },};export default config;

    Referência de Configuração

    As seções a seguir descrevem as várias configurações disponíveis para o Intlayer.


    Configuração de Internacionalização

    Define configurações relacionadas à internacionalização, incluindo os idiomas disponíveis e o idioma padrão para a aplicação.

    Propriedades

    • locales:

      • Tipo: string[]
      • Padrão: ['en']
      • Descrição: A lista de idiomas suportados na aplicação.
      • Exemplo: ['en', 'fr', 'es']
    • requiredLocales:
      • Tipo: string[]
      • Padrão: []
      • Descrição: A lista de idiomas obrigatórios na aplicação.
      • Exemplo: []
      • Nota: Se estiver vazio, todos os idiomas são obrigatórios no modo strict.
      • Nota: Certifique-se de que os idiomas obrigatórios também estejam definidos no campo locales.
    • strictMode:

      • Tipo: string
      • Padrão: inclusive
      • Descrição: Garante implementações rigorosas de conteúdo internacionalizado usando TypeScript.
      • Nota: Se definido como "strict", a função de tradução t exigirá que cada idioma declarado seja definido. Se um idioma estiver ausente ou não for declarado na configuração, ocorrerá um erro.
      • Nota: Se definido como "inclusive", a função de tradução t exigirá que cada idioma declarado seja definido. Se um idioma estiver ausente, será exibido um aviso. Mas aceitará se um idioma não for declarado na configuração, mas existir.
      • Nota: Se definido como "loose", a função de tradução t aceitará qualquer idioma existente.
    • defaultLocale:

      • Tipo: string
      • Padrão: 'en'
      • Descrição: O idioma padrão usado como fallback se o idioma solicitado não for encontrado.
      • Exemplo: 'en'
      • Nota: Isso é usado para determinar o idioma quando nenhum é especificado na URL, cookie ou cabeçalho.

    Configuração do Editor

    Define configurações relacionadas ao editor integrado, incluindo porta do servidor e status ativo.

    Propriedades

    • applicationURL:

      • Tipo: string
      • Padrão: '*'
      • Descrição: A URL da aplicação. Usada para restringir a origem do editor por motivos de segurança.
      • Exemplo:
        • '*'
        • 'http://localhost:3000'
        • 'https://example.com'
        • process.env.INTLAYER_EDITOR_URL
      • Nota: A URL da aplicação. Usada para restringir a origem do editor por motivos de segurança. Se definido como '*', o editor é acessível de qualquer origem.
    • port:

      • Tipo: number
      • Padrão: 8000
      • Descrição: A porta usada pelo servidor do editor visual.
    • editorURL:

      • Tipo: string
      • Padrão: 'http://localhost:8000'
      • Descrição: A URL do servidor do editor. Usada para restringir a origem do editor por motivos de segurança.
        • 'http://localhost:3000'
        • 'https://example.com'
        • process.env.INTLAYER_EDITOR_URL
        • ''*'
      • Nota: A URL do servidor do editor para acessar a aplicação. Usada para restringir as origens que podem interagir com a aplicação por motivos de segurança. Se definido como '*', o editor é acessível de qualquer origem. Deve ser configurado se a porta for alterada ou se o editor estiver hospedado em um domínio diferente.
    • cmsURL:

      • Tipo: string
      • Padrão: 'https://intlayer.org'
      • Descrição: A URL do CMS do Intlayer.
      • Exemplo: 'https://intlayer.org'
      • Nota: A URL do CMS do Intlayer.
    • backendURL:

      • Tipo: string
      • Padrão: https://back.intlayer.org
      • Descrição: A URL do servidor backend.
      • Exemplo: http://localhost:4000
    • enabled:

      • Tipo: boolean
      • Padrão: true
      • Descrição: Indica se a aplicação interage com o editor visual.
      • Exemplo: process.env.NODE_ENV !== 'production'
      • Nota: Se verdadeiro, o editor poderá interagir com a aplicação. Se falso, o editor não poderá interagir com a aplicação. Em qualquer caso, o editor só pode ser ativado pelo editor visual. Desativar o editor para ambientes específicos é uma forma de reforçar a segurança.
    • clientId:

      • Tipo: string | undefined
      • Padrão: undefined
      • Descrição: clientId e clientSecret permitem que os pacotes do Intlayer autentiquem com o backend usando autenticação oAuth2. Um token de acesso é usado para autenticar o usuário relacionado ao projeto. Para obter um token de acesso, acesse https://intlayer.org/dashboard/project e crie uma conta.
      • Exemplo: true
      • Nota: Importante: O clientId e o clientSecret devem ser mantidos em segredo e não compartilhados publicamente. Certifique-se de mantê-los em um local seguro, como variáveis de ambiente.
    • clientSecret:

      • Tipo: string | undefined
      • Padrão: undefined
      • Descrição: clientId e clientSecret permitem que os pacotes do Intlayer autentiquem com o backend usando autenticação oAuth2. Um token de acesso é usado para autenticar o usuário relacionado ao projeto. Para obter um token de acesso, acesse https://intlayer.org/dashboard/project e crie uma conta.
      • Exemplo: true
      • Nota: Importante: O clientId e o clientSecret devem ser mantidos em segredo e não compartilhados publicamente. Certifique-se de mantê-los em um local seguro, como variáveis de ambiente.
    • hotReload:

      • Tipo: boolean
      • Padrão: false
      • Descrição: Indica se a aplicação deve recarregar automaticamente as configurações de idioma quando uma alteração for detectada.
      • Exemplo: true
      • Nota: Por exemplo, quando um novo dicionário é adicionado ou atualizado, a aplicação atualizará o conteúdo exibido na página.
      • Nota: Como o recarregamento automático requer uma conexão contínua com o servidor, está disponível apenas para clientes do plano enterprise.
    • dictionaryPriorityStrategy:

      • Tipo: string
      • Padrão: 'local_first'
      • Descrição: A estratégia para priorizar dicionários no caso de dicionários locais e remotos estarem presentes. Se definido como 'distant_first', a aplicação priorizará dicionários remotos sobre locais. Se definido como 'local_first', a aplicação priorizará dicionários locais sobre remotos.
      • Exemplo: 'distant_first'

    Configuração de Middleware

    Configurações que controlam o comportamento do middleware, incluindo como a aplicação lida com cookies, cabeçalhos e prefixos de URL para gerenciamento de idiomas.

    Propriedades

    • headerName:
      • Tipo: string
      • Padrão: 'x-intlayer-locale'
      • Descrição: O nome do cabeçalho HTTP usado para determinar o idioma.
      • Exemplo: 'x-custom-locale'
      • Nota: Isso é útil para determinação de idioma baseada em API.
    • cookieName:
      • Tipo: string
      • Padrão: 'intlayer-locale'
      • Descrição: O nome do cookie usado para armazenar o idioma.
      • Exemplo: 'custom-locale'
      • Nota: Usado para persistir o idioma entre sessões.
    • prefixDefault:
      • Tipo: boolean
      • Padrão: true
      • Descrição: Se deve incluir o idioma padrão na URL.
      • Exemplo: false
      • Nota: Se false, URLs para o idioma padrão não terão um prefixo de idioma.
    • basePath:
      • Tipo: string
      • Padrão: ''
      • Descrição: O caminho base para as URLs da aplicação.
      • Exemplo: '/my-app'
      • Nota: Isso afeta como as URLs são construídas para a aplicação.
    • serverSetCookie:
      • Tipo: string
      • Padrão: 'always'
      • Descrição: Regra para definir o cookie de idioma no servidor.
      • Opções: 'always', 'never'
      • Exemplo: 'never'
      • Nota: Controla se o cookie de idioma é definido em cada solicitação ou nunca.
    • noPrefix:
      • Tipo: boolean
      • Padrão: false
      • Descrição: Se deve omitir o prefixo de idioma nas URLs.
      • Exemplo: true
      • Nota: Se true, as URLs não conterão informações de idioma.

    Configuração de Conteúdo

    Configurações relacionadas ao manuseio de conteúdo dentro da aplicação, incluindo nomes de diretórios, extensões de arquivos e configurações derivadas.

    Propriedades

    • watch:
      • Tipo: boolean
      • Padrão: process.env.NODE_ENV === 'development'
      • Descrição: Indica se o Intlayer deve observar alterações nos arquivos de declaração de conteúdo no aplicativo para reconstruir os dicionários relacionados.
    • fileExtensions:
      • Tipo: string[]
      • Padrão: ['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.tsx', '.content.jsx']
      • Descrição: Extensões de arquivo a serem procuradas ao construir dicionários.
      • Exemplo: ['.data.ts', '.data.js', '.data.json']
      • Nota: Personalizar extensões de arquivo pode ajudar a evitar conflitos.
    • baseDir:
      • Tipo: string
      • Padrão: process.cwd()
      • Descrição: O diretório base para o projeto.
      • Exemplo: '/path/to/project'
      • Nota: Isso é usado para resolver todos os diretórios relacionados ao Intlayer.
    • dictionaryOutput:
      • Tipo: string[]
      • Padrão: ['intlayer']
      • Descrição: O tipo de saída de dicionário a ser usado, por exemplo, 'intlayer' ou 'i18next'.
    • contentDirName:
      • Tipo: string
      • Padrão: 'src'
      • Descrição: O nome do diretório onde o conteúdo é armazenado.
      • Exemplo: 'data', 'content', 'locales'
      • Nota: Se não estiver no nível do diretório base, atualize o contentDir.
    • contentDir:

      • Tipo: string
      • Derivado de: 'baseDir' / 'contentDirName'
      • Descrição: O caminho do diretório onde o conteúdo é armazenado.
    • resultDirName:
      • Tipo: string
      • Padrão: '.intlayer'
      • Descrição: O nome do diretório onde os resultados são armazenados.
      • Exemplo: 'outputOFIntlayer'
      • Nota: Se este diretório não estiver no nível base, atualize resultDir.
    • resultDir:

      • Tipo: string
      • Derivado de: 'baseDir' / 'resultDirName'
      • Descrição: O caminho do diretório para armazenar resultados intermediários ou de saída.
    • moduleAugmentationDirName:

      • Tipo: string
      • Padrão: 'types'
      • Descrição: Diretório para aumento de módulo, permitindo melhores sugestões de IDE e verificação de tipos.
      • Exemplo: 'intlayer-types'
      • Nota: Certifique-se de incluir isso no tsconfig.json.
    • moduleAugmentationDir:

      • Tipo: string
      • Derivado de: 'baseDir' / 'moduleAugmentationDirName'
      • Descrição: O caminho para aumento de módulo e definições de tipos adicionais.
    • dictionariesDirName:
      • Tipo: string
      • Padrão: 'dictionary'
      • Descrição: Diretório para armazenar dicionários.
      • Exemplo: 'translations'
      • Nota: Se não estiver no nível do diretório de resultados, atualize dictionariesDir.
    • dictionariesDir:

      • Tipo: string
      • Derivado de: 'resultDir' / 'dictionariesDirName'
      • Descrição: O diretório para armazenar dicionários de localização.
    • i18nextResourcesDirName:
      • Tipo: string
      • Padrão: 'i18next_dictionary'
      • Descrição: Diretório para armazenar dicionários i18n.
      • Exemplo: 'translations'
      • Nota: Se não estiver no nível do diretório de resultados, atualize i18nextResourcesDir.
      • Nota: Certifique-se de que a saída dos dicionários i18n inclua i18next para construir os dicionários para i18next.
    • i18nextResourcesDir:

      • Tipo: string
      • Derivado de: 'resultDir' / 'i18nextResourcesDirName'
      • Descrição: O diretório para armazenar dicionários i18n.
      • Nota: Certifique-se de que este diretório esteja configurado para o tipo de saída i18next.
    • typeDirName:

      • Tipo: string
      • Padrão: 'types'
      • Descrição: Diretório para armazenar tipos de dicionário.
      • Exemplo: 'intlayer-types'
      • Nota: Se não estiver no nível do diretório de resultados, atualize typesDir.
    • typesDir:

      • Tipo: string
      • Derivado de: 'resultDir' / 'typeDirName'
      • Descrição: O diretório para armazenar tipos de dicionário.
    • mainDirName:
      • Tipo: string
      • Padrão: 'main'
      • Descrição: Diretório para armazenar arquivos principais.
      • Exemplo: 'intlayer-main'
      • Nota: Se não estiver no nível do diretório de resultados, atualize mainDir.
    • mainDir:
      • Tipo: string
      • Derivado de: 'resultDir' / 'mainDirName'
      • Descrição: O diretório onde os arquivos principais da aplicação são armazenados.
    • excludedPath:
      • Tipo: string[]
      • Padrão: ['node_modules']
      • Descrição: Diretórios excluídos da busca de conteúdo.
      • Nota: Esta configuração ainda não é usada, mas está planejada para implementação futura.

    Configuração do Logger

    Configurações que controlam o logger, incluindo o prefixo a ser usado.

    Propriedades

    • mode:
      • Tipo: string
      • Padrão: default
      • Descrição: Indica o modo do logger.
      • Opções: default, verbose, disabled
      • Exemplo: default
      • Nota: O modo do logger. O modo verbose registrará mais informações, mas pode ser usado para fins de depuração. O modo disabled desativará o logger.
    • prefix:
      • Tipo: string
      • Padrão: '[intlayer] '
      • Descrição: O prefixo do logger.
      • Exemplo: '[my custom prefix] '
      • Nota: O prefixo do logger.

    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