Case study
Chaos – tool voor lokalisatie van websitecontent
Chaos is een wereldwijde leider in 3D-visualisatietechnologie, opgericht in 1997 en bekend van V-Ray - de fysisch gebaseerde renderer die zowel met een Academy Award als met een Engineering Emmy is onderscheiden. Na de fusie met Enscape omvat het portfolio van het bedrijf V-Ray, Enscape, Corona, Vantage, Phoenix en Cosmos, en bedient het architectuur, engineering en bouw, media en entertainment, productontwerp en productie.
Met het hoofdkantoor in Karlsruhe en kantoren in Sofia, Praag, Tokio, Seoul, Los Angeles en New York bedient Chaos een wereldwijd klantenbestand - waardoor de snelheid en nauwkeurigheid waarmee de webcontent wordt vertaald een direct commercieel belang zijn.
Het project
De uitdaging
De website chaos.com is gebouwd op een componentgedreven architectuur: elke pagina wordt opgeslagen als een JSON-document met een lijst van widgets, elk met een eigen diep genest settings-object. De marketingteksten staan in die settings - koppen, knoplabels, tabtitels, citaten uit klantverhalen, FAQ-items, disclaimers bij formulieren - vermengd met lay-outparameters, mediaverwijzingen, opmaakvlaggen en widget-ID's.
Een pagina lokaliseren betekende dat een ontwikkelaar of contentredacteur ruwe JSON opende en waarden binnen geneste arrays met de hand aanpaste. Het was traag, het kon niet worden uitbesteed aan een vertaalbureau, en één verkeerd geplaatste haak of een per ongeluk gewijzigd widget-ID was genoeg om de pagina onbruikbaar te maken. Chaos had een manier nodig om de vertaalbare tekst eruit te halen, bij vertalers te krijgen en er veilig weer in te zetten.
Onze aanpak
Wij hebben een Windows-desktopapplicatie in C#/.NET gebouwd die een verliesvrije heen-en-terugweg maakt tussen de JSON van de pagina en een vertaalvriendelijk spreadsheet.
De kern is een configureerbare veldmap die meer dan 50 typen widgetcomponenten dekt, waarbij elke component aangeeft welke van zijn parameters vertaalbare tekst bevatten - uitgedrukt als paden in puntnotatie, zoals list.title, tabs.description of button_1.sub_line. Een recursieve doorloopengine lost die paden op door geneste objecten en arrays van willekeurige diepte, zodat de tool tekst in herhalende lijstitems net zo betrouwbaar bereikt als velden op het hoogste niveau. SEO-waarden op paginaniveau (metatitel en -beschrijving) worden samen met de widgetcontent geëxtraheerd.
De JSON zelf wordt behandeld als een dynamisch document in plaats van als een vast datamodel. Alleen de in kaart gebrachte tekstwaarden worden ooit teruggeschreven - widget-ID's, structuur, settings, volgorde en mediaverwijzingen komen onaangeroerd terug, byte voor byte. Dat was de bepalende ontwerpkeuze: de tool kan de structuur van een pagina fysiek niet beschadigen.
Hoe het werkt
- Stap één - de redacteur selecteert een JSON-bestand van een pagina. De tool maakt een Excel-werkmap met daarin elke vertaalbare tekenreeks, met kolommen voor widget-ID, component, parametersleutel, de bronwaarde en een lege kolom Vertaling. Elke component of elk veld dat de map niet herkent, wordt als waarschuwing gemeld in plaats van stilzwijgend overgeslagen.
- Stap twee - de ingevulde werkmap wordt geselecteerd en de tool schrijft een nieuw vertaald JSON-bestand, klaar om terug te importeren in het CMS. Bestandsnamen worden automatisch afgeleid van het origineel, zodat de koppeling tussen bron, spreadsheet en uitvoer nooit kan verschuiven.
Wat we hebben opgeleverd
- Een desktopapplicatie met twee knoppen, bruikbaar door medewerkers van marketing en lokalisatie zonder tussenkomst van een ontwikkelaar en zonder ooit ruwe JSON te zien
- Een veldmap die 50+ widgetcomponenten dekt en met één configuratieregel uitbreidbaar is naar nieuwe componenten
- Recursieve padresolutie door willekeurig geneste objecten en arrays
- Export en import via Excel als primair vertalersformaat, plus XLIFF 1.2-export voor professionele vertaalbureaus en CAT-tools
- Een waarschuwingsrapport dat niet-gemapte componenten en ontbrekende velden zichtbaar maakt vóór de vertaling begint, in plaats van erna
- Niet-destructief terugschrijven dat de integriteit van de paginastructuur garandeert
Het resultaat
Een pagina vertalen ging van een handmatige ontwikkeltaak naar een handeling van twee klikken. Content kan nu worden verstuurd naar externe vertalers of bureaus in een standaardformaat waarmee zij al werken, en weer in de site worden gezet zonder dat iemand de onderliggende JSON aanraakt - waarmee zowel het knelpunt als het risico op kapotte livepagina's verdwijnt. Naarmate de componentbibliotheek van de site groeit, groeit de tool mee via configuratie in plaats van code.
Technologieën
C#
.NET 8
.NET 9- Windows Forms
- Newtonsoft.Json
EPPlus- XLIFF 1.2
Excel automation