Guias
Conteúdo multilíngue
Idiomas do site, endereços por idioma, campos traduzidos e textos da interface.
Um site Nimbly pode rodar em quantos idiomas quiser. Os idiomas funcionam em três níveis: as configurações do site, os endereços e os dados.
1. Idiomas do site
Liste os idiomas nas configurações do site, /nb-admin/settings, ou em ext/data/.config/site:
{
"languages": ["en", "nl"]
}
Os códigos têm duas letras. O primeiro idioma é o padrão de reserva. Árabe, persa e hebraico ficam automaticamente da direita para a esquerda; a direção do texto pode ser definida por idioma nas configurações.
2. Endereços
Cada idioma ganha seu próprio prefixo, como pastas em ext/uri/:
ext/uri/en/index.tpl /en/
ext/uri/en/about/index.tpl /en/about
ext/uri/nl/index.tpl /nl/
ext/uri/nl/over-ons/index.tpl /nl/over-ons
A raiz manda os visitantes para o idioma deles com [#redirect [#detect-language#]#] em ext/uri/index.tpl. O idioma vem do endereço, depois de ?lang=, do domínio e do navegador, nessa ordem.
Os idiomas podem ter estrutura e endereços diferentes. Onde as páginas são iguais, compartilhe o conteúdo por meio de um template:
[#page-about#]
tanto em en/about/main.tpl quanto em nl/over-ons/main.tpl. Para ligar uma página às suas equivalentes, acrescente um i18n-url.json ao lado do index.tpl dela; o [#language-switch#] então leva à página certa em cada idioma. Veja Roteamento.
3. Dados traduzidos
Marque os campos que mudam por idioma com "i18n": true, e liste os idiomas no recurso:
{
"languages": ["en", "nl"],
"fields": {
"title": {"name": "Title", "type": "text", "required": true, "i18n": true},
"title_slug": {"name": "URL slug", "type": "slug", "source": "title"},
"year": {"name": "Year", "type": "text"},
"description": {"name": "Description", "type": "html", "buttons": "bold,italic", "i18n": true}
}
}
Um registro guarda todos os idiomas: "title": {"en": "Harbour Atlas", "nl": "Havenatlas"}. Os campos sem i18n são compartilhados, como o ano. Um slug derivado de um título traduzido é traduzido junto.
Os templates não precisam mudar: [#get project.title#] e [#get-html project.description#] exibem o idioma atual. Use lang=nl para pedir um idioma específico. No admin, cada campo traduzido tem um seletor de idioma, e os editores podem traduzir um campo com IA a partir dali quando há uma chave da OpenAI configurada.
Textos da interface
Os textos que fazem parte da interface, como botões e rótulos, usam [#text#]:
<button>[#text Read_more#]</button>
[#text str="Search projects"#]
As traduções ficam em ext/data/.i18n/text.<language>.po:
msgid "Read_more"
msgstr "Lees meer"
Rode ./nimbly build depois de alterar os arquivos.
Orientando a tradução com IA
Um campo pode levar instruções para a tradução com IA, compartilhadas ou por idioma:
"description": {
"type": "html",
"i18n": true,
"ai_prompts": {
"_all": ["The input and output are HTML. Keep every tag, link and image.", "The tone is clear and professional."],
"nl": ["You translate to Dutch."]
}
}
Em campos HTML, peça explicitamente que o markup seja mantido.