Internacionalização (i18n) em Módulos
1. Suporte Nativo a Múltiplos Idiomas
O Adventure Keeper possui infraestrutura multilíngue nativa (suportando Português pt-BR e Inglês en). Para garantir que suas extensões proporcionem a mesma qualidade de experiência internacional, os módulos suportam dicionários de strings desacoplados.
2. Estrutura de Diretórios de Tradução
As traduções devem ser organizadas na pasta locales/ do módulo:
meu-modulo/
├── module.json
├── schemas/
└── locales/
├── pt-BR.json
└── en.json
3. Formato do Arquivo de Catálogo
Cada arquivo JSON contém um mapa de chaves aninhadas ou com notação de ponto:
locales/pt-BR.json
{
"pf2e": {
"tabs": {
"stats": "Estatísticas PF2e"
},
"fields": {
"level": "Nível",
"strength": "Força",
"dexterity": "Destreza",
"hitPoints": "Pontos de Vida"
}
}
}
locales/en.json
{
"pf2e": {
"tabs": {
"stats": "PF2e Stats"
},
"fields": {
"level": "Level",
"strength": "Strength",
"dexterity": "Dexterity",
"hitPoints": "Hit Points"
}
}
}
4. Algoritmo de Fallback Determinístico
Quando uma chave de tradução é solicitada na interface:
Idioma Selecionado pelo Usuário (ex: "en")
↓ Se ausente
Idioma Padrão do Módulo ("defaultLocale" no manifesto, ex: "pt-BR")
↓ Se ausente
Nome Bruto da Chave (ex: "pf2e.fields.level")
Essa cadeia garante que mesmo que um módulo não possua tradução para todos os idiomas, ele nunca quebrará a tela ou exibirá campos em branco.