Blog Stats
  • Posts - 171
  • Articles - 1
  • Comments - 197
  • Trackbacks - 5

 

Un Javascript multilingua

Ho dovuto recentemente affrontare il problema di rendere multilingua un file javascript contenente una serie di validazioni client con relativi messaggi.

Questo js veniva letto, cachato ed aggiunto alla pagina da una classe base per tutti gli usercontrol della mia applicazione.

Non avendo il tempo di pensare ad eventuali sistemi alternativi, la strada più breve è stata quella di sfruttare la capacita di DataBind dei controlli asp.net :

  • trasformo il file .js in un file .ascx, aggiungendo solo l'intestazione degli usercontrol in alto al documento
  • tutti i messaggi li modifico attraverso la notazione del DataBind e chiamando un mio metodo che mi ritorna la risorsa di lingua data una chiave e per la cultura corrente

            <%# this.GetResource("ResourceKey") %>

A questo punto il caricamento del javascript lo eseguo in questo modo:

    UserControl jsControl = (UserControl)this.LoadControl("jsvalidation.ascx");

       jsControl.DataBind();

       js = ((DataBoundLiteralControl)jsControl.Controls[0]).Text;

 

Da notare che tutto il contenuto javascript, durante la compilazione della pagina, viene raggruppato all'interno di un controllo DataBoundLiteralControl, invece che semplicemente LiteralControl.

Questo dal momento che abbiamo inserito delle sintassi di DataBind all'interno del testo javascript.

 

Comments have been closed on this topic.
 

 

Copyright © Luca Mauri