Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Next revision | Previous revision | ||
le_stringhe [14/05/2010 16:53] creata |
le_stringhe [05/06/2013 17:08] (versione attuale) |
||
---|---|---|---|
Linea 1: | Linea 1: | ||
====== Le Stringhe ====== | ====== Le Stringhe ====== | ||
\\ | \\ | ||
- | OpenDCN è una piattaforma multilingue e finora sono presenti l'italiano e l'inglese.\\ | + | OpenDCN è una piattaforma multilingue; finora sono presenti l'italiano e l'inglese.\\ |
- | Attraverso le stringhe il sistema gestisce la visualizzazione dei moduli e degli avvisi all'utente a seconda della lingua selezionata.\\ | + | La visualizzazione della lingua dipende dalla gestione delle stringhe. |
+ | \\ | ||
+ | I controller e le view utilizzano, all'interno del codice di programmazione, degli identificatori di stringhe costanti che poi vengono utilizzati per effettuare la sostituzione con la stringa corrispondente nella lingua impostata nella specifica istanza. \\ | ||
+ | La notazione utilizzata per l'inserimento di questi identificaori è quella di parole maiuscole tra percentuali '%'.\\ | ||
+ | La gestione delle stringhe è quindi affidata a due tipi di file //.tpl//: uno che è quello delle viste (//home/app/views/...//) nel quale troviamo gli identificatori e l'altro è quello delle stringhe (//home/app/strings/...//) nel quale sono definite le coppie identificatore-stringa da utilizzare a seconda della lingua in uso.\\ | ||
+ | \\ | ||
+ | **Esempio - file che gestisce la visualizzazione dell'agenda: view.tpl**:\\ | ||
+ | //home/app/views/agenda/view.tpl//\\ | ||
+ | \\ | ||
+ | ... | ||
+ | {else} | ||
+ | <li><i>%NO_DEPENDENCES%</i></li> | ||
+ | {/if} | ||
+ | ... | ||
+ | \\ | ||
+ | Il termine //%NO_DEPENDENCES%// utilizzato all'interno del codice viene analizzato e tradotto grazie al file .tpl che troviamo in //home/app/strings/ita/agenda.tpl//.\\ | ||
+ | I files .tpl delle stringhe sono raccolti nella directory //home/app/strings/ita// per la versione in italiano, mentre nella cartella //eng// per la versione in inglese.\\ | ||
+ | \\ | ||
+ | Inoltre questi files sono divisi in due parti: una relativa alle stringhe che riguardano IL CONTROLLER e un'altra relative alle stringhe che riguardano la VIEW.\\ | ||
+ | \\ | ||
+ | ---- | ||
+ | \\ | ||
+ | **Esempio - agenda.tpl**:\\ | ||
+ | //home/app/strings/ita/agenda.tpl//\\ | ||
+ | \\ | ||
+ | [Controller] | ||
+ | ... | ||
+ | STEP_SUCCESSIFULLY_CREATED = "La fase è stata creata con successo" | ||
+ | ... | ||
+ | [View] | ||
+ | ... | ||
+ | SELECT_LOCATION = 'Seleziona la localizzazione' | ||
+ | ... | ||
+ | \\ | ||
+ | ---- | ||
+ | \\ | ||
+ | Per tornare all'esempio precedente in cui la view dell'agenda utilizzava l'identificatore //%NO_DEPENDENCES%//, il file agenda.tpl si occuperà della sua traduzione.\\ | ||
+ | \\ | ||
+ | **Esempio - file che raccoglie le coppie identificatore-stringa che riguardano l'agenda: agenda.tpl**:\\ | ||
+ | //home/app/strings/ita/agenda.tpl//\\ | ||
+ | \\ | ||
+ | ... | ||
+ | NO_DEPENDENCES = "Nessuna dipendenza" | ||
+ | ... | ||
+ | \\ | ||
+ | Infine, l'analisi delle stringhe viene attivata grazie alla funzione //s()// definita nell'app_controller.php.\\ | ||
+ | \\ | ||
+ | function s($string, $force_encode = true) { | ||
+ | return RegisterStrings::get($string, $this->name, 'Controller', $force_encode); | ||
+ | } | ||
+ | \\ | ||
+ | ---- | ||
+ | \\ | ||
+ | E' possibile che all'interno delle stringhe debba essere visualizzato anche uno o più parametri variabili (solitamente l'inserimento digitato dall'utente durante l'utilizzo della piattaforma), identificati, nelle frasi in cui è richiesta la loro presenza, con '%s'.\\ | ||
+ | Ecco quindi che, nell'elenco delle corrispondenze tra identificatori e la loro traduzione, se vogliamo tradurre anche il parametro variabile, dobbiamo inserirlo con '%s'.\\ | ||
+ | In questo caso le stringhe verranno prima analizzate dalla funzione //s()// per poter tradurre l'identificatore e, prima di essere visualizzate, analizzate ulteriormente tramite la funzione //sprintf()// che inserisce all'interno della frase il parametro variabile.\\ | ||
+ | \\ | ||
+ | **Esempio - users.tpl**:\\ | ||
+ | //home/app/strings/ita/users.tpl//\\ | ||
+ | \\ | ||
+ | [Controller] | ||
+ | ... | ||
+ | REGISTRATION_SUBJECT_NOTIFICATION_EMAIL = "Nuovo utente registrato su %s" | ||
+ | ... | ||
+ | \\ | ||
+ | **Richiamo della funzione sprintf() in users_controller.php**:\\ | ||
+ | //home/app/controllers/users_controller.php//\\ | ||
+ | \\ | ||
+ | registration_subject_notification_email = $this->s('REGISTRATION_SUBJECT_NOTIFICATION_EMAIL'); | ||
+ | $registration_text_notification_email = html_entity_decode($this->s('REGISTRATION_TEXT_NOTIFICATION_EMAIL'), ENT_COMPAT, "ISO-8859-1"); | ||
+ | ... | ||
+ | ... | ||
+ | $this->Email->subject = sprintf($registration_subject_notification_email, Configure::read("system_name")); | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | [[le api | indietro]] - [[i moduli di base | avanti]] | ||
+ | \\ | ||
\\ | \\ | ||
- | Ogni modulo o controller invia i dati elaborati alla view, che si occupa di far visualizzare il contenuto. A seconda della lingua, il controller view elabora i dati attraverso dei file .tpl dove sono specificate le traduzioni da visualizzare sia per l'italiano che per l'inglese.\\ | ||
\\ | \\ | ||
- | I file .tpl che definiscono le traduzoni italiane da utilizzare si trovano nella directory home/app/strings/ita, mentre quelle inglesi nella cartella eng.\\ | ||
- |