Fuori il vecchio

Il sito doveva supportare dieci lingue, quindi per ogni pagina avrei avuto bisogno di dieci file di risorse. Ho considerato l'utilizzo di tali file di risorse per gestire il mio testo tradotto, ma dopo la dovuta considerazione l'idea di mantenere un file per lingua per pagina sembrava un lavoro da amministratore infernale. Per una o forse due lingue extra potrebbe funzionare per te, ma avevo bisogno di un file di facile manutenzione soluzione in grado di gestire set di caratteri UTF-8 in modo che lingue come il polacco siano corrette reso. Ho preso in considerazione l'idea di generare i file di risorse direttamente da un database, ma ho deciso di seguire il vecchio percorso di archiviare le varie frasi in un database con un record separato per ciascuna lingua. L'utilizzo di questa tecnica significava che non avevo bisogno di convertire tutte le mie vecchie pagine ASP in ASP.NET per inserirvi i file di risorse.

Fuori il vecchio

Ancora una volta, sono sconcertato dal fatto che Microsoft fornisca un meccanismo come i file di risorse senza la possibilità di crearli facilmente al volo da un database, come alternativa alla creazione di un'enorme raccolta di file di cui gran parte del contenuto sarebbe simile per ciascuno pagina. Poiché ASP.NET è estremamente estensibile, sono sicuro che qualche lettore mi scriverà per dirmi che potrei scrivere una classe che si aggancia a qualche oscura chiamata di sistema che otterrà ciò che desidero. Anche se il mio atteggiamento è che è fantastico avere tale flessibilità, nella mia esperienza i fornitori di software ripiegano su questo questo come scusa dopo aver rilasciato prodotti incompleti, dicendo che potresti sempre “scrivere quella funzionalità te stesso".

La mia soluzione ha funzionato? Sì, come un sogno, ad eccezione del controllo dei pulsanti in ASP.NET. Sembra che questo sistema operativo completamente multilingue, abbinato a strumenti di sviluppo multilingue, presenti ancora alcuni problemi. Prima di entrare nei dettagli, lasciatemi spiegare come ho inserito le varie traduzioni nel sistema. Per prima cosa viene creato un foglio di calcolo Excel, con una colonna separata per ogni lingua, e nelle sue righe viene inserito il testo inglese di ogni frase. Il foglio viene quindi inviato ai nostri traduttori in tutto il mondo e ritorna tramite allegati e-mail. Tutte le traduzioni vengono combinate in un unico foglio principale che viene poi importato in una tabella in un database Microsoft SQL Server 2005. Questo database viene utilizzato per sostituire qualsiasi testo sulla pagina web. Il Dataset nella pagina web è una query di selezione che restituisce un solo record contenente le frasi di testo nella lingua desiderata e nella pagina viene visualizzata la colonna relativa. Vale la pena notare qui che è una buona idea dimenticare la consueta convenzione di denominazione per i nomi dei campi del database e scegliere invece qualcosa che ti dia un'idea del testo contenuto in ciascun campo, poiché ciò renderà molto più semplice la comprensione della tua pagina il futuro. Ad esempio, questo schema rende più semplice capire quale testo va dove:

rispetto a questa versione più convenzionale:

Fin qui tutto bene e sia Excel che SQL Server sembravano supportare pienamente tutti i caratteri di cui avevamo bisogno. Anche le pagine ASP sembravano esserlo, anche se occasionalmente si verificava l'abbandono di alcuni accenti i personaggi dovevano essere sostituiti dai loro cugini senza accento, cosa che sia io che il cliente abbiamo deciso di fare vivere con. Tuttavia, mentre la maggior parte dei controlli ASP.NET Framework 3.5 SP1 erano soddisfatti, al controllo pulsante non piaceva il polacco? carattere (e probabilmente anche altri) e il controllo Visualizzazione griglia mostrava lo stesso problema tecnico, mentre il controllo etichetta era felice di visualizzarlo.