Internacionalização (i18n)
O Starlight oferece suporte integrado para sites multi-idioma, incluindo roteamento, conteúdo de fallback e suporte completo para idiomas direita para esquerda (RTL).
Configurar i18n
-
Diga ao Starlight os idiomas que você suporta, passando
locales
edefaultLocale
para a integração Starlight:Seu
defaultLocale
será utilizado para o conteúdo de fallback e rótulos da UI, então escolha o idioma que é a mais provável que você começe a escrever conteúdo, ou já tem conteúdo escrito. -
Crie um diretório para cada idioma em
src/content/docs/
. Por exemplo, para a configuração mostrada acima, crie as seguintes pastas:Directorysrc/
Directorycontent/
Directorydocs/
Directoryar/
- …
Directorypt-br/
- …
Directoryzh-cn/
- …
-
Você agora pode adicionar arquivos de conteúdo em seus diretórios de idioma. Use o mesmo nome de arquivo para associar páginas entre idiomas e se aproveite do conjunto completo de funcionalidades de internacionalização do Starlight, incluindo conteúdo de fallback, avisos de tradução e mais.
Por exemplo, crie
ar/index.md
ept-br/index.md
para representar a página inicial em Árabe e Português do Brasil respectivamente.
Use uma localidade raiz
Você pode usar uma localidade “raiz” para servir um idioma sem nenhum prefixo de internacionalização no seu diretório. Por exemplo, se Português do Brasil é sua localidade raiz, um diretório de página em Português do Brasil seria /sobre
ao invés de /pt-br/sobre
.
Para definir uma localidade raiz, use a chave root
na sua configuração de locales
. Se a localidade raiz também for a localidade padrão do seu conteúdo, remova defaultLocale
ou defina como 'root'
.
Ao utilizar uma localidade root
, mantenha as páginas para aquele idioma diretamente em src/content/docs/
ao invés de em uma pasta dedicada para o idioma. Por exemplo, aqui estão os arquivos para a página inicial em Português do Brasil e Chinês ao utilizar a configuração acima:
Directorysrc/
Directorycontent/
Directorydocs/
- index.md
Directoryzh-cn/
- index.md
Sites mono-idioma
Por padrão, Starlight é um site mono-idioma (em Inglês). Para criar um site de idioma único em outro idioma, o defina como o root
na sua configuração de locales
:
Isso te permite sobrescrever o idioma padrão do Starlight sem habilitar outras funcionalidades de internacionalização para sites multi-idioma, como o seletor de idiomas.
Conteúdo de Fallback
Starlight espera que você crie páginas equivalentes em todos os idiomas. Por exemplo, se você tem um arquivo en/about.md
crie, um about.md
para cada outro idioma que o site suporta. Isso permite ao Starlight oferecer conteúdo de fallback automático para páginas que você ainda não tenha traduzido.
Se uma tradução ainda não está disponível para um idioma, Starlight irá mostrar aos leitores o conteúdo dessa página no idioma padrão (definido através de defaultLocale
). Por exemplo, se você ainda não criou uma versão em Francês da sua página “Sobre” e seu idioma padrão é Português do Brasil, visitantes de /fr/about
verão o conteúdo em Português do Brasil de /pt-br/about
com um aviso de que esta página ainda não foi traduzida. Isso te ajuda a adicionar conteúdo no seu idioma padrão e então progressivamente traduzí-lo quando seus tradutores tiverem tempo.
Traduza a UI do Starlight
Além de arquivos de conteúdo traduzido, o Starlight te permite traduzir as strings padrão da UI (e.x. o cabeçalho “Nesta página” no índice) para que seus leitores possam utilizar seu site inteiramente no idioma selecionado.
Strings da UI estão disponíveis para alemão, árabe, bokmål norueguês, catalão, chinês, chinês (Taiwan), coreano, dinamarquês, eslovaco, espanhol, francês, galego, hebraico, híndi, holandês, indonésio, inglês, italiano, japonês, persa, polonês, português, romeno, russo, sueco, tcheco, turco, ucraniano e vietnamita por padrão, e são bem vindas contribuições para adicionar mais idiomas padrão.
Você pode fornecer traduções para idiomas adicionais que você suporta — ou sobrescrever nossos rótulos padrões — através da coleção de dados i18n
.
-
Configure a coleção de dados
i18n
emsrc/content/config.ts
se já não tiver configurado: -
Crie um arquivo JSON em
src/content/i18n/
para cada localidade adicional que você quer oferecer tradução de strings da UI. Por exemplo, isso adicionaria arquivos de tradução para Árabe e Chinês Simplificado:Directorysrc/
Directorycontent/
Directoryi18n/
- ar.json
- zh-CN.json
-
Adicione traduções para os rótulos que você quer traduzir nos arquivos JSON. Traduza apenas os valores, deixando as chaves em Inglês (e.x.
"search.label": "Buscar"
).Essas são as strings padrões existentes em Inglês que vem com o Starlight:
O blocos de código do Starlight usam a biblioteca Expressive Code. Você pode traduzir as strings de UI do Expressive Code no mesmo arquivo JSON usando as chaves
expressiveCode
:O modal de pesquisa do Starlight é fornecido pela biblioteca Pagefind. Você pode traduzir as strings de UI do Pagefind no mesmo arquivo JSON utilizando chaves com
pagefind
:
Esquema de tradução extendida
Você pode adicionar chaves personalizadas no dicionário de tradução do seu site configurando a propriedade extend
nas opções do i18nSchema()
.
No exemplo a seguir, a nova chave custom.label
, opcional, é adicionada às chaves padrão:
Saiba mais sobre o esquemas de coleções de conteúdos em “Definindo um esquema de coleção” na documentação do Astro.