slogan3

Help me met het configureren van meertalige ondersteuning in Statamic

description

Met deze prompt kan de gebruiker een efficiënte en schaalbare meertalige setup opzetten in Statamic, wat de bereikbaarheid en gebruiksvriendelijkheid van de website voor internationale doelgroepen verbetert. Het helpt specifieke uitdagingen rondom vertalingen en contentbeheer aan te pakken, waardoor fouten en inefficiënties worden voorkomen.

prompt

Help me mijn Statamic website in te richten voor meertalige content. Mijn huidige taalinstellingen zijn: <voer je huidige taalinstellingen in>. Ik wil ondersteuning voor de vol ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een stapsgewijze handleiding om je Statamic-website meertalig te maken met ondersteuning voor Nederlands, Engels en Frans, inclusief automatische taaldetectie en een vertaalworkflow: 1. Taalconfiguratie instellen: - Installeer de Statamic Multilingual Support Add-on (indien nodig). Sommige functies kunnen standaard beschikbaar zijn, maar voor uitgebreide meertalige functionaliteit is een add-on handig. - Ga naar het configbestand `config/statamic/multilingual.php` (of maak dit aan als het niet bestaat) en voeg de talen toe: ```php return [ 'locales' => [ 'nl' => [ 'name' => 'Nederlands', 'locale' => 'nl_NL', ], 'en' => [ 'name' => 'Engels', 'locale' => 'en_US', ], 'fr' => [ 'name' => 'Frans', 'locale' => 'fr_FR', ], ], 'default' => 'nl', ]; ``` 2. Content structureren: - Gebruik statische pagina's of collectie-items met taal-specifieke URL's, bijvoorbeeld `/nl/`, `/en/`, `/fr/`. - Voeg voor elke pagina of content-item een `locale`-veld toe zodat je de taal kunt identificeren. 3. Automatische taaldetectie implementeren: - Gebruik bijvoorbeeld een JavaScript-bibliotheek zoals `detectlanguage.js` of een API zoals Google Cloud Translation API om de taal van de bezoeker te bepalen. - Op basis van de gedetecteerde taal leid je de gebruiker automatisch door naar de juiste taalversie: - Bijvoorbeeld door een redirect in de `routes.php` of via JavaScript op de homepage. 4. Vertaalworkflow voor redacteuren: - Maak voor elke taal een aparte collectie of gebruik een meertalige structuur binnen je content. - Gebruik de `translatable` feature van Statamic (via add-ons zoals `Statamic Translatable`) om vertalingen te beheren. - Voor een workflow: - Redacteuren maken de basiscontent in de standaardtaal (bijvoorbeeld Nederlands). - Vertalingen worden aangemaakt door andere redacteuren of vertalers via een backend interface. - Gebruik bijvoorbeeld een add-on zoals `Statamic Translations` voor overzicht en beheer van vertalingen. 5. Taalkeuzemenu toevoegen: - Plaats een taalkeuzemenu in de header of footer, met links naar de taalversies van de pagina. - Dynamisch genereren op basis van beschikbare vertalingen: ```blade <ul> @foreach (Statamic\Facades\LocalizedSite::all() as $locale) <li><a href="{{ localized_url($locale->handle()) }}">{{ $locale->name() }}</a></li> @endforeach </ul> ``` 6. Extra tips: - Zorg dat je sitemap en SEO-tags per taal geoptimaliseerd zijn. - Test uitgebreid met verschillende browsers en regio-instellingen. - Overweeg het gebruik van een vertaalbeheer tool of API om het vertaalproces te stroomlijnen. Met deze stappen kun je je Statamic-website succesvol meertalig maken met automatische detectie en een goede vertaalworkflow. Wil je meer details over een specifieke stap?
provider: deepseek
model: deepseek-chat
Zeker, ik help je graag op weg. Hier is een stapsgewijze handleiding om je Statamic website (van eentalig Nederlands) meertalig te maken met Nederlands, Engels en Frans, inclusief automatische taaldetectie en een vertaalworkflow. --- ### Stap 1: Basis Meertalige Configuratie **1. Site-instellingen aanpassen (`config/sites.php`)** Vervang de bestaande configuratie door de volgende, waarbij je de `name`, `url` en `locale` voor elke taal specificeert. ```php <?php return [ 'sites' => [ 'nederlands' => [ 'name' => 'Nederlands', 'locale' => 'nl_NL', 'url' => '/', ], 'engels' => [ 'name' => 'Engels', 'locale' => 'en_US', 'url' => '/en/', ], 'frans' => [ 'name' => 'Frans', 'locale' => 'fr_FR', 'url' => '/fr/', ], ], ]; ``` **2. Lokalisatie-instellingen (`config/statamic/sites.php`) (indien aanwezig)** Zorg ervoor dat de `locales` array alle talen bevat. ```php 'locales' => [ 'nl_NL' => 'Nederlands (Nederland)', 'en_US' => 'English (United States)', 'fr_FR' => 'Français (France)', ], ``` --- ### Stap 2: Automatische Taaldetectie De eenvoudigste manier is om een middleware te gebruiken die de browser-taal van de bezoeker detecteert en doorverwijst. **1. Pakket installatie (Aanbevolen)** Installeer het officiële Statamic `statamic/mechanic` pakket via Composer. Dit bevat vaak betere en onderhouden tools voor dit soort taken. ```bash composer require statamic/mechanic ``` **2. Alternatief: Eigen Middleware maken** Maak een nieuwe middleware aan, bijvoorbeeld `app/Http/Middleware/DetectLanguage.php`. ```php <?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Session; class DetectLanguage { public function handle($request, Closure $next) { $supportedLocales = ['nl', 'en', 'fr']; // Je ondersteunde talen $browserLocale = substr($request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2); // Als de browser-taal wordt ondersteund EN de gebruiker nog geen keuze heeft gemaakt (geen sessie) if (in_array($browserLocale, $supportedLocales) && !Session::has('locale')) { // Stel de applicatietaalt in op de gedetecteerde taal App::setLocale($browserLocale); // Sla de keuze op in de sessie voor toekomstige bezoeken Session::put('locale', $browserLocale); // Redirect naar de corresponderende site URL return redirect('/' . $browserLocale . '/'); } // Als er al een sessie is, gebruik die taal if (Session::has('locale')) { App::setLocale(Session::get('locale')); } return $next($request); } } ``` **3. Middleware registreren** Registreer je nieuwe middleware in `app/Http/Kernel.php` in de `$middleware` array (voor globale detectie) of in een groep naar keuze. ```php protected $middleware = [ // ... andere middleware \App\Http\Middleware\DetectLanguage::class, ]; ``` --- ### Stap 3: Vertaalworkflow voor Redacteuren Statamic heeft hiervoor ingebouwde, krachtige functies. **1. "Origin" en vertalingen instellen** Ga in het Control Panel naar **Collections** -> Kies je collectie (bv. `pages`) -> **Blueprint** -> **Content** tab. Voeg het **`Origin`** veld toe aan je blueprint. Dit veld koppelt alle vertalingen van een entry aan elkaar en is de basis van de workflow. **2. Vertaalstatus instellen** Voeg een **`Publish Status`** veld of een custom **`Select`** veld (bijv. `vertaal_status`) toe aan je blueprint. Redacteuren kunnen dit gebruiken om de status bij te houden (bv. "Niet vertaald", "In behandeling", "Gereed voor review", "Gepubliceerd"). **3. Werken in het Control Panel** * Redacteuren kunnen de site-switcher (bovenaan links) gebruiken om tussen talen te schakelen. * Wanneer een redacteur een entry in de *originele taal* (bijv. Nederlands) bewerkt, kunnen ze het **`Origin`** veld leeg laten (het is de originele entry). * Wanneer een redacteur een nieuwe vertaling wil maken, maakt hij een nieuwe entry aan in de gewenste taal (Engels of Frans) en **kiest hij de bestaande Nederlandse entry in het `Origin` veld**. Statamic koppelt de entries nu automatisch. * De redacteur kan de `vertaal_status` instellen om de workflow te volgen. **4. Geavanceerde workflow (Optioneel)** Voor complexere workflows kunken addons zoals **"Protect"** of **"Retrofit"** worden gebruikt om bepaalde vertalingen te vergrendelen of goedkeuringsprocessen in te richten. --- ### Stap 4: Templates en Front-end aanpassen **1. Taalswitcher maken** Maak een menu of dropdown waarmee gebruikers van taal kunnen wisselen. ```antlers {{ sites }} <a href="{{ url }}" class="{{ if is_current }} font-bold {{ /if }}">{{ name }}</a> {{ /sites }} ``` **2. Content ophalen op basis van de huidige site** Je hoeft niets speciaals te doen. Statamic haalt automatisch de content op voor de huidige site/taal waarin je je bevindt. Gebruik gewoon je normale template tags. ```antlers <title>{{ title }} - {{ site:name }}</title> ... <div class="content">{{ content }}</div> ``` --- ### Belangrijke punten en Uitdagingen * **Fallback-mechanisme:** Configureer in `config/statamic/sites.php` een `fallback_locale` (bijv. `'fallback_locale' => 'nl_NL'`). Als een vertaalde string of entry ontbreekt, valt Statamic dan terug op het Nederlands. * **URL-structuur:** De hier voorgestelde structuur gebruikt taalcodes in de URL (`/nl/`, `/en/`). Dit is goed voor SEO en de gebruikerservaring. Zorg dat je server is ingesteld (bv. via `.htaccess` of Laravel's `public/.htaccess`) om deze URLs correct door te sturen naar `index.php`. * **Shared Content:** Voor inhoud die tussen alle talen hetzelfde blijft (bijv. afbeeldingen in een gallery), gebruik je het **`Replicator`** of **`Bard`** fieldtype. De ingevoerde content wordt standaard over alle vertalingen gekopieerd, tenzij een redacteur handmatig een vertaling overschrijft. * **Testen:** Test de automatische detectie grondig met verschillende browserinstellingen. Test ook de vertaalworkflow met gebruikers die verschillende rechten hebben (auteur, redacteur). Succes met het inrichten van je meertalige Statamic website!