Проект
Chaos – локализация на съдържанието на сайта
Chaos е глобален лидер в технологиите за 3D визуализация, основан през 1997 г. и известен с V-Ray — физически базирания рендер механизъм, отличен и с „Оскар“, и с Engineering Emmy. След сливането с Enscape портфолиото на компанията обхваща V-Ray, Enscape, Corona, Vantage, Phoenix и Cosmos и обслужва архитектурата, инженеринга и строителството, медиите и развлеченията, продуктовия дизайн и производството.
С централа в Карлсруе и офиси в София, Прага, Токио, Сеул, Лос Анджелис и Ню Йорк Chaos работи с клиенти по цял свят — което прави скоростта и точността на превода на уеб съдържанието им пряк търговски въпрос.
Проектът
Предизвикателството
Сайтът chaos.com е изграден върху компонентна архитектура: всяка страница се съхранява като JSON документ със списък от уиджети, всеки със собствен дълбоко вложен обект с настройки. Маркетинговите текстове живеят вътре в тези настройки — заглавия, надписи на бутони, имена на табове, цитати от препоръки, въпроси и отговори, дисклеймъри на формуляри — смесени с параметри за оформление, референции към медия, стилови флагове и ID-та на уиджети.
Локализирането на страница означаваше разработчик или редактор на съдържание да отвори суровия JSON и да редактира на ръка стойности във вложени масиви. Беше бавно, не можеше да се възложи на преводаческа агенция, а една сгрешена скоба или случайно променено ID на уиджет стигаше, за да счупи страницата. На Chaos им трябваше начин да извадят преводимия текст, да го дадат на преводачите и да го върнат обратно безопасно.
Нашият подход
Разработихме настолно приложение за Windows на C#/.NET, което прави беззагубен цикъл между JSON-а на страницата и таблица, удобна за преводачи.
В основата стои конфигурируема карта на полетата за над 50 типа компоненти, в която всеки компонент декларира кои от параметрите му носят преводим текст — записани като пътища с точкова нотация, например list.title, tabs.description или button_1.sub_line. Рекурсивен механизъм за обхождане разрешава тези пътища през вложени обекти и масиви с произволна дълбочина, така че инструментът достига текста в повтарящи се елементи от списък също толкова надеждно, колкото и полетата на най-горно ниво. SEO стойностите на ниво страница (meta заглавие и описание) се извличат заедно със съдържанието на уиджетите.
Самият JSON се обработва като динамичен документ, а не като фиксиран модел на данни. Обратно се записват само картографираните текстови стойности — ID-тата на уиджетите, структурата, настройките, подредбата и референциите към медия се връщат непокътнати, байт по байт. Това беше ключовото решение в дизайна: инструментът физически не може да повреди структурата на страницата.
Как работи
- Стъпка едно — редакторът избира JSON файла на страницата. Инструментът създава Excel таблица с всички преводими текстове, с колони за ID на уиджета, компонент, ключ на параметъра, изходната стойност и празна колона Превод. Всеки компонент или поле, което картата не разпознава, се съобщава като предупреждение, вместо да бъде мълчаливо пропуснато.
- Стъпка две — избира се попълнената таблица и инструментът записва нов преведен JSON файл, готов за импорт обратно в CMS. Имената на файловете се извеждат автоматично от оригинала, така че връзката между източник, таблица и резултат не може да се разпадне.
Какво доставихме
- Настолно приложение с два бутона, което маркетинг и локализация ползват без участие на разработчик и без досег до суров JSON
- Карта на полетата за 50+ компонента, разширяема с нови компоненти чрез добавяне на един конфигурационен запис
- Рекурсивно разрешаване на пътища през произволно вложени обекти и масиви
- Експорт и импорт през Excel като основен формат за преводачи, плюс XLIFF 1.2 експорт за професионални агенции и CAT инструменти
- Отчет с предупреждения, който показва некартографирани компоненти и липсващи полета преди началото на превода, а не след него
- Недеструктивен запис обратно, който гарантира целостта на структурата на страницата
Резултатът
Преводът на страница се превърна от ръчна задача за разработчик в операция от два клика. Съдържанието вече може да се изпраща на външни преводачи или агенции в стандартен формат, с който те и без това работят, и да се връща в сайта, без някой да пипа JSON-а отдолу — с което отпадат и тясното място, и рискът от счупване на живи страници. С разрастването на библиотеката от компоненти инструментът расте заедно с нея — чрез конфигурация, а не чрез код.
Технологии
C#
.NET 8
.NET 9- Windows Forms
- Newtonsoft.Json
EPPlus- XLIFF 1.2
Excel automation