Di Admin (del 30/08/2006 @ 11:22:06, in ASP, linkato 4140 volte)
Supponiamo di dover realizzare un sito multilingua
Possiamo affrontare il problema in diversi modi, ne propongo due:
1. realizzare tante copie del sito e tradurre il testo tante quante sono le lingue in cui vogliamo proporre le pagine dinamiche
2. caricare dinamicamente a runtime da una base dati o da un file XML i contenuti da tradurre ed inserirli nelle opportune sezioni utilizzando dei 'checkpoint'
Il sistema 1. è sicuramente il più; semplice e tecnologicamente non presenta particolari difficoltà. Una volta pronto il sito di partenza, è sufficiente copiare tutta la directory del sito con un altro nome, correggere gli eventuali link e tradurre i contenuti del secondo sito; poi, si ripete questo modus operandi con tutte le versioni che ci servono.
Se da un lato questo sistema presenta l'innegabile vantaggio di essere molto semplice, dall'altro presenta una indubbia difficoltà e di manutenibilità; tutte le volte che viene modificata una parte grafica del sito, la sua struttura o altro (e vi assicuro che capita MOLTO spesso), è necessario propagare questo cambiamento a tutte le pagine di tutte le copie multilingua del sito.
Il metodo 2. richiede inizialmente uno sforzo maggiore che viene però immediatamente ripagato nel momento in cui bisogna apportare le prime modifiche alla struttura o per aggiungere ulteriori contenuti.<
Si tratta di costruire un file dizionario per ogni lingua che desideriamo gestire; tale file sarà un file XML formattato come segue. Successivamente si costruiranno le pagine ASP in modo classico facendo attenzione a sostituire il contenuto della sezione (quello che vogliamo tradurre) con un riferimento che la funzione Traduci andrà a sostituire con il contenuto vero e proprio.
Prima di tutto costruiamo il seguente file diz_IT.XML come dizionario per il nostro sito in italiano:
ed uno analogo (diz_EN.XML) per la versione inglese
<?xml version="1.0" encoding="ISO-8859-1"?> <lingua> <lang name="english"> <translation name="home01">Welcome in my site</translation> </lang> </lingua>
Definiamo ora, come segue, il file aux_vb.asp con una semplice funzione con l'accesso al file XML:
<% Function Traduci(Termine, Lingua) Dim XMLdom Set XMLdom = Server.CreateObject("Microsoft.XMLDOM") XMLdom.async = False strFile = Server.MapPath("diz_" & lingua & ".xml") If XMLdom.Load(strFile) Then Set rXML = XMLdom.selectSingleNode("//translation [@name=""" & Termine & """]") if NOT rXML is Nothing then Traduci = rXML.text else Traduci = Termine & "-" & Lingua End if Set rXML = Nothing End if Set XMLdom = Nothing End function %>
Questa funzione accetta due parametri in ingresso:
il termine da tradurre
la lingua di destinazione
Costruiamo adesso una semplice pagina Home.asp che contenga i riferimenti (i checkpoint menzionati poco sopra) per le traduzioni:
Nella pagina è stato inserita la riga contenente il riferimento alla funzione "Traduci" dove il secondo argomento consiste nella lingua desiderata;
Naturalmente è possibile specificare questa variabile in diversi modi, sicuramente più idonei che non un passaggio statico come fatto in questa sede per brevità.
E' infatti semplice far lavorare questa funzione in modo efficace mediante l'utilizzo dei cookie, magari settando direttamente dalla home page del sito la lingua preferita dall'utente, oppure con un passaggio di request.querystring("lingua") o con una variabile di sessione.
Di Admin (del 25/07/2006 @ 12:40:28, in ASP, linkato 819 volte)
Spesso si vuole inviare una email a seguito di interazioni con gli utenti. Inviare email è possibile utilizzando il componente CDONTS nei sistemi gestiti da IIS4.0.
Inviare email da pagine ASP richiede pochi semplici passaggi; Microsoft a partire dalla versione IIS4.0 ha messo a disposizione lo strumento CDONTS che nel tempo si è evoluto e a partire dalla versione IIS5.0 distribuita con Windows2000 ha fatto la sua comparsa CDOSYS. Sebbene si ancora possibile installare la vecchia versione anche in sistemi operativi recenti, è è bene sottolineare, comunque, il componente CDOSYS presenta sostanziali miglioramenti come evidenziato nel bulletin board di Microsoft. Tra di essi i più significativi sono un più basso overhead del servizio, una più efficiente gestione del codice HTML e una più ampia varietà di proprietà e metodi.
Lasciano ad una successivo post l'implementazione del codice per l'invio con il componente CDOSYS, ora concentriamoci sulle poche, semplici e fin troppo chiare righe per l'utilizzo dell'ancora diffusissimo CDONTS.
Set objMail = Server.CreateObject("CDONTS.NewMail") ' Creo l'oggetto
objMail.From = "mittente@miodominio.suffisso" ' definisco gli attributi come il mittente, il destinatario, etc etc. objMail.To = "destinatario@suodominio.suffisso"
objMail.Subject = "Subject della mail" objMail.Body = & "Testo della mail da inviare"
objMail.Importance = 0 '*
objMail.MailFormat = 0 ' 0 è il formato testo, 1 è HTML objMail.BodyFormat = 0 ' 0 è il formato testo, 1 è HTML
' Se volessi allegare un file, inoltre, è sufficiente inserire la riga seguente indicando ' in "path\nome_file.ext" il percorso fisico del file nel disco mentre in "nomefiledesiderato.ext" ' il nome del file che risulta visibile nella mail
Di Admin (del 16/06/2006 @ 10:57:23, in ASP, linkato 1045 volte)
L'utilizzo di feed RSS è diffuso in tutte le tipologie di siti o portali a livello mondiale. RSS è un formato per la distribuzione di contenuti sul Web ed è strutturato come un'applicazione XML, perciò deve essere conforme alle specifiche XML (http://www.w3.org/TR/REC-xml) Con poche righe di codice è possibile creare veloce un flusso RSS prelevando i dati da un database. Vediamo prima come è strutturato un semplice file RSS:
I miei annunci L'elenco degli annunci di questa settimana Automobile Vendesi auto modello Topolino http://miosito/annunci/topolino.htm http://miosito/annunci/images/topolino.htm
Per la serializzazione del corpo centrale (quella dell'annuncio vero e proprio), possiamo costruire una semplice applicazione asp che ciclando sugli elementi di un database crei il feed RSS.
<% ' Definizione stringa di connessione al db ed inizializzazione della connessione str_conn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/db") & "\bacheca.mdb" Set Conn = Server.CreateObject("ADODB.Connection") Conn.ConnectionTimeout = 5 Conn.CommandTimeout = 1 ' Conn.Open str_conn
' Definizione stringa sql, parametri recordset str_sql ="SELECT * FROM annunci ORDER BY data_pub DESC" Set rs_feed = Server.CreateObject("ADODB.RecordSet") rs_feed.CursorLocation=3 rs_feed.CacheSize=5 rs_feed.Open str_sql, Conn, 1,1
' Costruzione del feed str_feed = "I miei annunciL'elenco degli annunci di questa settimana"
' Dopo aver impostato il prologo tipico dei files XML, ciclo suglie elementi della tabella del db If Not rs_feed.oef then Do until rs.eof str_feed = str_feed & "" & rs_feed("articolo") & "" & rs_feed("messaggio") & "" &_ "" & rs_feed("link") & "" & rs_feed("foto") & "" rs_feed.movenext Loop End If
' Chiudo il file str_feed = str_feed & ""
Response.Write str_feed
' Chiudo il recordset e la connessione alla fine delle operazioni rs_feed.close set rs_feed = Nothing Conn.Close set Conn=nothing %>
Totale articoli postati: 233
Totale letture: 443393
Totale commenti: 206
In questo sito si parla di programmazione in ASP e in ambiente .NET (con esempi e cosigli su come utilizzare controlli, creare controlli dinamicamente e poi validarli, utilizzo delle Regular Expression, Dataset e Datareader, Datagrid, Themes ed altro), di SQL Server (utilizzo dei vari costrutti, definizione ed uso dei cursori, normalizzazione, ...) di tecnologia in genere, di news in ambito informatico e di alcuni miei interessi.