Back to top

Autore Topic: Chronoforms - Tradurre i messaggi in italiano  (Letto 5177 volte)

Offline darinic

  • Esploratore
  • **
  • Post: 99
    • Mostra profilo
Chronoforms - Tradurre i messaggi in italiano
« il: 18 Nov 2010, 22:31:56 »
Ciao a tutti. Vorrei tradurre in italiano i messaggi che mi torna il chronoforms. Ovvero sostituire ad esempio il messaggio "required" con l'equivalente italiano "Campo obbligatorio" e via dicendo... Premetto che sto utilizzando la versione 3.1 di Chronoforms. Girando per il forum ho trovato questo post molto utile http://forum.joomla.it/index.php?topic=54864.0
Ho quindi aperto il file mooValidation.js contenuto nella directory components/com_chronocontact/js e ho modificato la parte di codice di interesse inserendo il testo in italiano nella seguente maniera:
Codice: [Seleziona]
Validation.addAllThese([

    ['required', 'Campo obbligatorio', function(v) {

                return !Validation.get('IsEmpty').test(v);

            }],

    ['validate-number', 'Utilizzare solo caratteri numerici', function(v) {

                return Validation.get('IsEmpty').test(v) || (!isNaN(v) && !/^\s+$/.test(v));

            }],

    ['validate-digits', 'Utilizzare solo caratteri numerici, evitare spazi o altri caratteri speciali', function(v) {

                return Validation.get('IsEmpty').test(v) ||  !/[^\d]/.test(v);

            }],

    ['validate-alpha', 'Utilizzare solo lettere [a-z A-Z]', function (v) {

                return Validation.get('IsEmpty').test(v) ||  /^[a-zA-Z]+$/.test(v)

            }],

    ['validate-alphanum', 'Utilizzare solo lettere (a-z) o numeri(0-9). Non inserire spazi', function(v) {

                return Validation.get('IsEmpty').test(v) ||  !/\W/.test(v)

            }],

    ['validate-date', 'Inserire una data valida', function(v) {

                var test = new Date(v);

                return Validation.get('IsEmpty').test(v) || !isNaN(test);

            }],

    ['validate-email', 'Inserire un indirizzo e-mail valido. Ad esempio dario@dominio.com', function (v) {

                return Validation.get('IsEmpty').test(v) || /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(v)

            }],

    ['validate-url', 'Inserire una URL valida', function (v) {

                return Validation.get('IsEmpty').test(v) || /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(v)

            }],

    ['validate-date-au', 'Inserire la data nel seguente formato: dd/mm/yyyy', function(v) {

                if(Validation.get('IsEmpty').test(v)) return true;

                var regex = /^(\d{2})\/(\d{2})\/(\d{4})$/;

                if(!regex.test(v)) return false;

                var d = new Date(v.replace(regex, '$2/$1/$3'));

                return ( parseInt(RegExp.$2, 10) == (1+d.getMonth()) ) &&

                            (parseInt(RegExp.$1, 10) == d.getDate()) &&

                            (parseInt(RegExp.$3, 10) == d.getFullYear() );

            }],

    ['validate-currency-dollar', 'Utilizzare il carattere €. Ad esempio 100.00 €', function(v) {

                // [$]1[##][,###]+[.##]

                // [$]1###+[.##]

                // [$]0.##

                // [$].##

                return Validation.get('IsEmpty').test(v) ||  /^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(v)

            }],

    ['validate-selection', 'Scegli una opzione', function(v,elm){

                return elm.options ? elm.selectedIndex > 0 : !Validation.get('IsEmpty').test(v);

            }],

    ['validate-one-required', 'Scegli una opzione.', function (v,elm) {

        var p = elm.parentNode;

        var options = p.getElementsByTagName('INPUT');

        for(i=0; i<options.length; i++){

            if(options[i].checked == true) {

              return true;

            }

        }

    }]

]);

Ho salvato e liberato la cache ma non era cambiato niente.
Ho allora aperto anche il file jsvalidation2.js e modificato la seguente parte di codice inserendo il testo in italiano:
Codice: [Seleziona]
$ES('input', $(chronoformname)).each(function(field){

        var message_required = 'Campo obbligatorio';

        var message_validate_number = 'Utilizzare solo caratteri numerici';

        var message_validate_digits = 'Utilizzare solo caratteri numerici, evitare spazi o altri caratteri speciali';

        var message_validate_alpha = 'Utilizzare solo lettere [a-z A-Z]';

        var message_validate_alphanum = 'Utilizzare solo lettere (a-z) o numeri(0-9). Non inserire spazi';

        var message_validate_date = 'Inserire una data valida';

        var message_validate_email = 'Inserire un indirizzo e-mail valido. Ad esempio dario@dominio.com';

        var message_validate_url = 'Inserire una URL valida';

        var message_validate_date_au = 'Inserire la data nel seguente formato: dd/mm/yyyy';

        var message_validate_currency_dollar = 'Utilizzare il carattere €. Ad esempio 100.00 €';

        var message_validate_match = 'Assicurati che i due campi coincidano';

        var message_validate_one_required = 'Scegli una opzione';

        var message_validate_selection = 'Scegli una opzione';

E questa volta qualcosa è cambiato, ma non proprio tutto. Nel senso che alcuni messaggi appaiono correttamente in italiano (tipo "Campo obbligatorio", "Inserire indirizzo e-mail valido..." etc), altri invece no. In particolare nel campo TELEFONO del mio form (che da wizard di chronoforms ho configurato come "only numbers") se provo a inserire lettere o spazi mi appare il seguente messaggio in inglese "Must be number" anziché l'equivalente italiano da me inserito "Inserire solo caratteri numerici"
Stessa cosa per quanto riguarda il campo MESSAGGIO del mio form dove appare il testo "Can't be empty" se non compongo il messaggio.
La cosa che non riesco a capire è che i messaggi  "Must be number" e "Can't be empty" non li trovo presenti all'interno di nessuno dei due file .js

Come faccio a ottenere integralmente la lingua italiana?
Sto sbagliando qualcosa o semplicemente c'è un altro modo?

Grazie mille

Offline darinic

  • Esploratore
  • **
  • Post: 99
    • Mostra profilo
Re:Chronoforms - Tradurre i messaggi in italiano
« Risposta #1 il: 18 Nov 2010, 23:34:30 »
Ciao. Ho trovato questa guida di Vales: http://valesweb.altervista.org/tutorial-chronoforms-multi-language-2.html che sembra molto chiara. Tuttavia a me proprio non funziona... :-(
Ho seguito la guida alla lettera ma, cosa strana, anziché apparire i messaggi in italiano appaiono i vari titlenome, titleindirizzo, titlemessaggio etc.

Il form html è questo:
Codice: [Seleziona]
<div class="form_item">
  <div class="form_element cf_heading">
    <h1 class="cf_text">Richiesta Informazioni</h1>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_text"> <span class="cf_text">Compilare il seguente form o scrivere all'indirizzo info@arteziapina.it se si è interessati all'acquisto di uno o più articoli mostrati in galleria, o anche solo per semplici informazioni. Selezionare l'opzione NUOVO ARTICOLO se si vuole proporre un articolo non presente in galleria....</span> </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 150px;">Nome</label>
    <input class="cf_inputbox required" maxlength="150" size="30" title="titlenome" id="text_2" name="text_2" type="text" />
 
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 150px;">Indirizzo e-mail</label>
    <input class="cf_inputbox required validate-email" maxlength="150" size="30" title="titleindirizzo" id="text_15" name="text_15" type="text" />
 
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 150px;">Telefono</label>
    <input class="cf_inputbox required validate-digits" maxlength="150" size="30" title="titletelefono" id="text_14" name="text_14" type="text" />
 
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 150px;">Selezionare la Categoria di interesse</label>
    <select class="cf_inputbox" id="select_9" size="1" title=""  name="select_9">
    <option value="">Scegli l'opzione</option>
     
    </select>
   
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 150px;">Selezionare l'Articolo di interesse</label>
    <select class="cf_inputbox" id="select_10" size="1" title=""  name="select_10">
    <option value="">Scegli l'opzione</option>
     
    </select>
   
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 150px;">Oggetto del messaggio</label>
    <input class="cf_inputbox required" maxlength="150" size="30" title="titleoggettomessaggio" id="text_10" name="text_10" type="text" />
 
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label" style="width: 150px;">Messaggio</label>
    <textarea class="cf_inputbox required" rows="6" id="text_19" title="titlemessaggio" cols="25" name="text_19"></textarea>
   
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_button">
    <input value="Invia" name="button_21" type="submit" />
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

mentre per quanto riguarda la parte Multilanguage, nel primo Language Strings ho inserito quanto segue:
Codice: [Seleziona]
Nome=Nome
titlenome=Campo obbligatorio
Indirizzo e-mail=Indirizzo e-mail
titleindirizzo=Inserire un indirizzo e-mail valido
Telefono=Telefono
titletelefono=Inserire solo caratteri numerici
Oggetto del messaggio=Oggetto del messaggio
titleoggettomessaggio=Campo obbligatorio
Messaggio=Messaggio
titlemessaggio=Campo obbligatorio

Eppure continua ad apparire titlenome, titleindirizzo..etc..
E' come se il plugin Multi Language non lavorasse correttamente...
Aiuto.. :-(

Offline darinic

  • Esploratore
  • **
  • Post: 99
    • Mostra profilo
Re:Chronoforms - Tradurre i messaggi in italiano
« Risposta #2 il: 19 Nov 2010, 00:05:35 »
Ho risolto editando opportunamente il campo validation sul wizard (a cui corrisponde "title" nell'HTML Code), laddove il vincolo è semplicemente di tipo "required". Laddove invece il vincolo è doppio (ovvero required + email, ad esempio) editando il validation message non distingueva il mancato inserimento del campo dall'errato inserimento del campo (in quanto mi restituiva in entrambi i casi Campo obbligatorio, ovvero quello che avevo inserito all'interno del Validation Message). Per risolvere questo caso ho tradotto i campi all'interno dei file .js, come avevo fatto inizialmente. Per quanto riguarda il campo Telefono ho risolto impostandolo come "number only" e non come "digits only". In quest'ultimo caso mi restituiva il messaggio "Must be a number!". Impostandolo invece come "number only" mi torna correttamente il messaggio che ho inserito all'interno dei file .js... ovvero "Inserire solo caratteri numerici" Chissà perché con number only funziona, mentre impostandolo come digits only mi torna il messaggio in inglese Must be a number! e non quello che avevo messo in italiano ???

Alla fine sono riuscito a sistemare la cosa in qualche modo, anche se devo essere sincero sono andato a tentativi e tutt'ora non ho ben capito il perché delle anomalie evidenziate nel mio primo post...
Se qualcuno potesse chiarirmi un po' le idee sull'argomento glie ne sarei molto lieto...
Grazie mille  e buonanotte.. :o

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Chronoforms - Tradurre i messaggi in italiano
« Risposta #3 il: 19 Nov 2010, 22:39:36 »
No, non è quella la via. Hai modificato i file originali ed in caso di aggiornamenti salta tutto.

Per il multilanguage occorre anche joomfish per i siti multilingua ma non mi sembra il tuo caso.

Per avere i messaggi in italiano basta che tu gli inserisca negli attributi title di ciascun campo.

Puoi già inserirli in sede di creazione form con il wizard nel campo Validation message nella tab grigia a destra.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline darinic

  • Esploratore
  • **
  • Post: 99
    • Mostra profilo
Re:Chronoforms - Tradurre i messaggi in italiano
« Risposta #4 il: 20 Nov 2010, 09:47:03 »
Ciao Vales. In effetti avevo pensato inizialmente di inserire il messaggio direttamente nel title, o da wizard nel campo Validation Message, come suggerisci tu..tuttavia ho riscontrato un problema: Nel campo Telefono ho inserito da wizard le opzioni "Required" e "Numbers only". Nelle mie intenzioni dovrebbero quindi apparire due messaggi di output in italiano: un messaggio "Campo obbligatorio" (associato al Required) quando l'utente non compila il campo "Telefono" e un altro messaggio del tipo "Inserire solo caratteri numerici" (associato al Numbers only) che appare però quando l'utente compila il campo Telefono con caratteri diversi da quelli numerici. Se io faccio come suggerisci tu, sia nell'una che l'altra situazione apparirebbe un unico messaggio (quello che avrei inserito nel Validation Message), ad esempio di Campo Obbligatorio...
Modificando i file .js ho risolto in qualche modo ma in effetti al primo avanzamento tornerebbe tutto come prima...
Possibili alternative? 

Grazie

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Chronoforms - Tradurre i messaggi in italiano
« Risposta #5 il: 28 Nov 2010, 10:05:05 »
Mentre pensiamo meglio a questa cosa, metterei il doppio messaggio nell'attributo title esempio: "Il campo è obbigatorio e deve contenere sono numeri". Mi sembra che il problema è esposto in modo chiaro. Chi non lo comprende ha altri problemi. ;D

Ti segnalo che il plugin multilanguage necessità di una patch che trovi qui

http://forum.joomla.it/index.php/topic,85035.msg372000.html#msg372000

è uscita anche una nuova versione di Chronoforms la 3.2.0 che forse non necessita di patch




Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

 



Web Design Bolzano Kreatif