Handleidingen
Meertalige content
Sitetalen, taaladressen, vertaalde velden en interfaceteksten.
Een Nimbly-site kan in elk aantal talen draaien. Talen werken op drie niveaus: de site-instellingen, de adressen en de data.
1. Talen van de site
Zet de talen in de site-instellingen, /nb-admin/settings, of in ext/data/.config/site:
{
"languages": ["en", "nl"]
}
Codes hebben twee letters. De eerste taal is de terugvaltaal. Arabisch, Perzisch en Hebreeuws worden automatisch van rechts naar links gezet; de tekstrichting kun je per taal instellen in de instellingen.
2. Adressen
Elke taal krijgt een eigen voorvoegsel, als mappen in 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
De root stuurt bezoekers naar hun taal met [#redirect [#detect-language#]#] in ext/uri/index.tpl. De taal wordt gehaald uit het adres, dan uit ?lang=, het domein en de browser, in die volgorde.
Talen mogen verschillen in structuur en adressen. Waar pagina's gelijk zijn, deel je de content via een template:
[#page-about#]
in zowel en/about/main.tpl als nl/over-ons/main.tpl. Om een pagina aan zijn tegenhangers te koppelen, zet je i18n-url.json naast de index.tpl; [#language-switch#] linkt dan in elke taal naar de juiste pagina. Zie Routing.
3. Vertaalde data
Markeer de velden die per taal verschillen met "i18n": true, en noem de talen op de resource:
{
"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}
}
}
Eén record bevat elke taal: "title": {"en": "Harbour Atlas", "nl": "Havenatlas"}. Velden zonder i18n worden gedeeld, zoals het jaar. Een slug die van een vertaalde titel is afgeleid, wordt mee vertaald.
Templates hoeven niet te veranderen: [#get project.title#] en [#get-html project.description#] tonen de huidige taal. Gebruik lang=nl om om een bepaalde taal te vragen. In de admin heeft elk vertaald veld een taalwisselaar, en redacteuren kunnen daar een veld met AI laten vertalen als er een OpenAI-sleutel is ingesteld.
Interfaceteksten
Teksten die bij de interface horen, zoals knoppen en labels, gebruiken [#text#]:
<button>[#text Read_more#]</button>
[#text str="Search projects"#]
Vertalingen staan in ext/data/.i18n/text.<language>.po:
msgid "Read_more"
msgstr "Lees meer"
Draai ./nimbly build nadat je de bestanden hebt aangepast.
AI-vertaling sturen
Een veld kan instructies voor de AI-vertaling meekrijgen, gedeeld of per taal:
"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."]
}
}
Vraag bij HTML-velden uitdrukkelijk om de markup te behouden.