reCaptcha – localizzazione

In luglio dello scorso anno raccontavo come integrare il controllo reCaptcha. Nel commentare il post risultava come limite la mancanza della localizzazione. Ringrazio oggi il commento che è stato fatto al post in cui si fa notare la possibilità di usare le reCaptcha Client API per applicare una traduzione personalizzata al controllo, in particolare impostando l’opzione custom_translations.

A questo punto il problema: come integare le Client API con il control per asp.net che viene fornito? Il controllo offre la possibilità di impostare solo poche opzioni della variabile “RecaptchaOptions”, necessaria per la personalizzazione del widget reCaptcha.

Accertato che avrebbe poco senso un’estensione per ridefinire il render del controllo, ho valutato 3 opzioni: (1)  reverse del controllo e personalizzazione dello stesso (2) registrare blocchi client per aggiungere modifiche alla variabile “RecaptchaOptions” – ho mollato dopo un paio di tentativi falliti (3) provare a iniettare codice javascript.

Non posso definire “sane” ne l’opzione (1) ne la (3) ma probabilmente la (1) sarebbe la più pulita... ma tutto sommato per quello che mi serve al momento, e soprattutto per fare una primo test per vedere se effettivamente funziona, è troppo effort. Analizzando il codice con reflector ho giudicato più rapido iniettare del codice javascript usando impropriamente alcune proprietà. Riporto i passi e le osservazioni per arrivare ad avere il controllo localizzato italiano.

Questo è come appare il RenderContents del RecaptchaControl. Il controllo renderizza esplicitamente javascript.

image

Questo è il risultato del metodo qui sopra decompilato.

image

La proprietà Theme si presta all’hack. Qui è come sono intervenuto per iniettare il codice che mi serve per la localizzazione in italiano, codice che ho preso AS IS direttamente dalla documentazione http://wiki.recaptcha.net/index.php/I18n, dove si legge “In the above example, we added the option lang : 'it' because the audio challenge for italian people is difficult if in English: so setting the language it, although reCaptcha doesn't have italian speech, at least a list of English numbers is needed to recognize from partially sighted people.

image

Da  notare che il codice andrà a inserirsi esattamente all’interno degli apici del theme senza modificare il comportamento del controllo e aggiungendo le opzioni mancanti. Faccio notare inoltre la partenza con l’apice e la chiusura senza apice, la dove sembra servirebbe... una sorta di hack sulla scia del noto SQL Injection.

Ovviamente... non dobbiamo dimenticare di invocare il metodo sopra definito nel Load della pagina.

image

... ed ecco infine il risultato.

image

oO0( ...rimango in attesa che arricchiscano il controllo con le opzioni mancanti...)

posted @ martedì 23 marzo 2010 02:18

Print
Comments have been closed on this topic.
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011