Case study
Chaos – narzędzie do lokalizacji treści strony
Chaos to światowy lider technologii wizualizacji 3D, założony w 1997 roku i znany dzięki V-Ray - silnikowi renderującemu opartemu na fizyce, uhonorowanemu zarówno Oscarem, jak i nagrodą Engineering Emmy. Po fuzji z Enscape portfolio firmy obejmuje V-Ray, Enscape, Corona, Vantage, Phoenix i Cosmos i służy architekturze, inżynierii i budownictwu, mediom i rozrywce, wzornictwu przemysłowemu oraz produkcji.
Z centralą w Karlsruhe oraz biurami w Sofii, Pradze, Tokio, Seulu, Los Angeles i Nowym Jorku, Chaos obsługuje klientów na całym świecie - co sprawia, że szybkość i dokładność tłumaczenia treści na stronie internetowej ma bezpośrednie znaczenie handlowe.
Projekt
Wyzwanie
Witryna chaos.com jest zbudowana w architekturze opartej na komponentach: każda strona jest przechowywana jako dokument JSON zawierający listę widgetów, z których każdy ma własny, głęboko zagnieżdżony obiekt ustawień. Treści marketingowe znajdują się wewnątrz tych ustawień - nagłówki, etykiety przycisków, tytuły zakładek, cytaty z opinii, wpisy FAQ, klauzule w formularzach - wymieszane z parametrami układu, odwołaniami do multimediów, flagami stylów i identyfikatorami widgetów.
Lokalizacja strony oznaczała, że programista lub redaktor treści otwierał surowy JSON i ręcznie edytował wartości wewnątrz zagnieżdżonych tablic. Było to powolne, nie dało się tego przekazać agencji tłumaczeniowej, a jeden źle postawiony nawias lub przypadkowo zmieniony identyfikator widgetu wystarczał, aby zepsuć stronę. Chaos potrzebował sposobu na wyciągnięcie tekstu do tłumaczenia, przekazanie go tłumaczom i bezpieczne wprowadzenie z powrotem.
Nasze podejście
Zbudowaliśmy aplikację desktopową dla systemu Windows w C#/.NET, która wykonuje bezstratną podróż w obie strony między plikiem JSON strony a arkuszem kalkulacyjnym przyjaznym dla tłumacza.
W jej centrum znajduje się konfigurowalna mapa pól obejmująca ponad 50 typów komponentów widgetów, w której każdy komponent deklaruje, które z jego parametrów zawierają tekst do tłumaczenia - wyrażone jako ścieżki w notacji kropkowej, takie jak list.title, tabs.description czy button_1.sub_line. Rekurencyjny mechanizm przechodzenia rozwiązuje te ścieżki w zagnieżdżonych obiektach i tablicach o dowolnej głębokości, dzięki czemu narzędzie sięga po tekst wewnątrz powtarzalnych elementów listy równie niezawodnie, jak po pola najwyższego poziomu. Wartości SEO na poziomie strony (meta title i description) są pobierane razem z treścią widgetów.
Sam JSON jest traktowany jako dokument dynamiczny, a nie jako sztywny model danych. Zapisywane z powrotem są wyłącznie zmapowane wartości tekstowe - identyfikatory widgetów, struktura, ustawienia, kolejność i odwołania do multimediów wracają nietknięte, bajt po bajcie. To była kluczowa decyzja projektowa: narzędzie fizycznie nie jest w stanie uszkodzić struktury strony.
Jak to działa
- Krok pierwszy - redaktor wybiera plik JSON strony. Narzędzie tworzy skoroszyt Excela z listą wszystkich ciągów do tłumaczenia, z kolumnami na identyfikator widgetu, komponent, klucz parametru, wartość źródłową oraz pustą kolumnę Tłumaczenie. Każdy komponent lub pole, którego mapa nie rozpoznaje, jest zgłaszane jako ostrzeżenie, zamiast zostać po cichu pominięte.
- Krok drugi - wybierany jest wypełniony skoroszyt, a narzędzie zapisuje nowy przetłumaczony plik JSON, gotowy do zaimportowania z powrotem do CMS-a. Nazwy plików są wyprowadzane automatycznie z oryginału, więc powiązanie między źródłem, arkuszem i wynikiem nigdy się nie rozjedzie.
Co dostarczyliśmy
- Aplikacja desktopowa z dwoma przyciskami, z której korzystają pracownicy marketingu i lokalizacji bez udziału programisty i bez kontaktu z surowym JSON-em
- Mapa pól obejmująca 50+ komponentów widgetów, rozszerzalna o nowe komponenty przez dodanie pojedynczego wpisu konfiguracyjnego
- Rekurencyjne rozwiązywanie ścieżek w dowolnie zagnieżdżonych obiektach i tablicach
- Eksport i import Excela jako podstawowy format dla tłumaczy oraz eksport XLIFF 1.2 dla profesjonalnych agencji tłumaczeniowych i narzędzi CAT
- Raport ostrzeżeń pokazujący niezmapowane komponenty i brakujące pola przed rozpoczęciem tłumaczenia, a nie po nim
- Nieniszczący zapis zwrotny, który gwarantuje nienaruszalność struktury strony
Rezultat
Tłumaczenie strony zmieniło się z ręcznego zadania programisty w operację na dwa kliknięcia. Treści można teraz wysyłać zewnętrznym tłumaczom lub agencjom w standardowym formacie, z którym już pracują, i wprowadzać z powrotem na stronę bez dotykania przez kogokolwiek bazowego JSON-a - co usuwa zarówno wąskie gardło, jak i ryzyko zepsucia działających stron. W miarę jak rośnie biblioteka komponentów witryny, narzędzie rośnie razem z nią dzięki konfiguracji, a nie kodowi.
Technologie
C#
.NET 8
.NET 9- Windows Forms
- Newtonsoft.Json
EPPlus- XLIFF 1.2
Excel automation