10 anni di Locize
Dieci anni.
Più o meno in questo periodo, nel 2016, abbiamo lanciato locize.com. All'epoca era un piccolo backend per i18next che faceva una cosa sola: distribuire le traduzioni alle app in esecuzione senza un nuovo deploy. Oggi continua a farlo, e parecchio altro.
Da dove siamo partiti
La storia comincia davvero cinque anni prima, nel 2011. Ci serviva una libreria i18n che funzionasse sia su Node.js sia nel browser, e nessuna fra quelle disponibili calzava a pennello. Così è nato i18next. È cresciuto più rapidamente di quanto ci aspettassimo. Attorno alla libreria si è formata una community, sono comparsi plugin per ogni framework che contasse e noi abbiamo continuato a perfezionare il core.
Quella era la parte facile.
La parte difficile, è venuto fuori, era tutto ciò che sta attorno al runtime: come le traduzioni vengono effettivamente scritte, revisionate, versionate, distribuite, modificate in contesto, messe in coda per l'assistenza AI/MT, sottoposte ad audit, esportate, reimportate, tenute allineate al codice. La libreria poteva fare solo fino a un certo punto. Il workflow era un animale a sé.
Nel 2016 avevamo sopportato quel problema di workflow abbastanza a lungo da sapere cosa volevamo. Localizzazione continua. Traduzioni distribuite via CDN. Un vero editor per chi traduce. saveMissing, così chi sviluppa non deve più copiare stringhe in un foglio di calcolo. Un editor in-context che si apre sopra l'app in esecuzione, in modo che un traduttore possa cliccare una frase e modificarla dove vive davvero. È diventato Locize.
Su questo blog c'è un post precedente, scritto in quelle prime settimane, se volete l'impostazione originale: Day zero, how all began.
Cosa abbiamo costruito
A dieci anni di distanza, il prodotto è più grande del suo schizzo iniziale, ma la spina dorsale è la stessa.
- Translation management con i workflow di cui i team reali hanno bisogno (versioni, cronologia, permessi, segmenti, stati).
- Una CDN che distribuisce a livello globale le traduzioni pubblicate, sia su infrastruttura Standard (BunnyCDN) sia su Pro (AWS CloudFront).
- Supporto nativo per una lunga lista di formati i18n, non solo JSON di i18next.
- Traduzione AI che lavora a partire dalla vostra lingua di riferimento, dalla vostra terminologia e dal vostro contesto. Non un accessorio, ma un workflow di prima classe.
- Un editor in-context che vive nel pacchetto
locizee che ora si integra con vue-i18n accanto a i18next. - Una raccolta in crescita di ricette per framework: Next.js, React Router v7, Nuxt 4, Astro, e le guide meno recenti per React, Vue, Remix e il resto.
- Swiss-made, conforme al GDPR di default, Swiss-made.
Dietro a tutto questo, la cosa più profonda: un workflow in cui chi sviluppa rilascia codice e chi traduce rilascia traduzioni, e nessuna delle due parti blocca l'altra. Era l'obiettivo nel 2016 ed è ancora oggi.
Come si sente, davvero
Mandare avanti un piccolo SaaS per dieci anni non è una linea retta.
Certe settimane rilasci una major release e un cliente scrive per dirti che gli ha rallegrato la settimana. Altre settimane passi tre giorni a inseguire un bug di hydration che si rivela una singola N maiuscola mancante nel nome di una classe (storia vera, risolta in locize@4.0.24). Certi trimestri il churn cala da solo e non sai perché. Certi trimestri rilasci la feature più pulita dell'anno e le metriche non si muovono.
Il portatile non resta a casa in vacanza. Il telefono è sempre a portata di mano. Sei sempre un passo avanti rispetto a qualcosa, e un passo indietro rispetto a qualcos'altro.
In cambio ottieni una quantità irragionevole di flessibilità. Decidi cosa costruire, quando costruirlo e quali compromessi accettare. Rispondi ai clienti, al codice e alle persone con cui lavori, e a poco altro. Per noi, da dieci anni, questo scambio vale la candela.
Una torta da casa
Una piccola storia, per chiudere.
Per festeggiare l'anniversario, la moglie di un cofondatore (che cura il food blog frangipani.food) ha preparato una torta al pistacchio farcita con chantilly al mascarpone e fiori di sambuco. La ricetta è sul suo sito, in tedesco e in italiano, se volete farla anche voi. I fiori di sambuco devono riposare nella panna per 24 ore prima di montarla con il mascarpone, ma la nota floreale che emerge poi ripaga ampiamente la pianificazione.
Sul suo sito ha scritto anche qualche riga su cosa significa vivere accanto a chi porta avanti una piccola impresa: il portatile che viaggia ovunque, il telefono che non si ferma mai, la libertà che comunque ne deriva. Vale la pena leggerla nel post originale.
Dieci anni come questi non si costruiscono con i soli fondatori. Le famiglie che convivono con i portatili e le notti tardi. Il team. La community i18next. I clienti che ci sono rimasti accanto attraverso ogni iterazione. Le persone che mantengono i progetti open source su cui Locize si appoggia. Voi tutti.
Lo sguardo avanti
In questo post non c'è alcuna rivelazione di roadmap. I prossimi dieci anni andranno dove andranno. L'AI continua a riscrivere il contratto fra ciò che fanno il software e le persone, le guerre fra framework JavaScript continuano a rimescolare le carte, e problemi a forma di i18next continueranno a spuntare in luoghi che non ci aspettiamo. Continueremo ad andare loro incontro dove si presentano.
Se avete usato Locize per anche solo una parte di questo decennio, grazie. Se state leggendo per la prima volta, benvenute e benvenuti.
Stesso workflow. Stessa piattaforma Swiss-made. Stessi cofondatori. Ancora dieci anni davanti.
— Il team Locize