Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
le_stringhe [26/05/2010 10:51] |
le_stringhe [05/06/2013 17:08] |
||
---|---|---|---|
Linea 1: | Linea 1: | ||
- | ====== Le Stringhe ====== | + | |
- | \\ | + | |
- | OpenDCN è una piattaforma multilingue; finora sono presenti l'italiano e l'inglese.\\ | + | |
- | La visualizzazione della lingua dipende dalla gestione delle stringhe. | + | |
- | \\ | + | |
- | I controller e le view utilizzano all'interno del codice di programmazione dei termini universali che poi vengono tradotti e interpretati a seconda della lingua da visualizzare e la notazione utilizzata per l'inserimento di questi termini è quella di parole maiuscole tra percentuali '%'.\\ | + | |
- | \\ | + | |
- | **Esempio - file che gestisce la visualizzazione dell'agenda: view.tpl**:\\ | + | |
- | //home/app/views/agenda/view.tpl//\\ | + | |
- | \\ | + | |
- | ... | + | |
- | {else} | + | |
- | <li><i>%NO_DEPENDENCES%</i></li> | + | |
- | {/if} | + | |
- | ... | + | |
- | \\ | + | |
- | Per ogni modulo o controller esiste un file .tpl dove sono definiti gli avvisi e le traduzioni da utilizzare a seconda della lingua in uso.\\ | + | |
- | \\ | + | |
- | Il termine //%NO_DEPENDENCES%// utilizzato all'interno del codice viene analizzato e tradotto grazie al file .tpl; questi files sono raccolti nella directory //home/app/strings/ita// per la versione in italiano, mentre nella cartella //eng// per la versione in inglese.\\ | + | |
- | \\ | + | |
- | I files .tpl, inoltre, 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 il termine //%NO_DEPENDENCES%//, il file agenda.tpl si occuperà della sua traduzione.\\ | + | |
- | \\ | + | |
- | **Esempio - file che raccoglie le traduzioni 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 un parametro variabile (solitamente l'inserimento digitato dall'utente durante l'utilizzo della piattaforma), identificato, nelle frasi in cui è richiesta la sua presenza, con '%s'.\\ | + | |
- | Ecco quindi che, nell'elenco delle corrispondenze tra i termini universali e la loro traduzione, se vogliamo riportare nell'avviso tradotto anche il parametro variabile, dobbiamo inserirlo con '%s'.\\ | + | |
- | In questo caso le stringhe verranno prima analizzate dalla funzione //s()// per poter tradurre il termine universale 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")); | + | |
- | \\ | + |