Questo sito utilizza cookie anche di terze parti. Per avere maggiori informazioni e per negare il tuo consenso al l'utilizzo dei cookie clicca qui. Se prosegui la navigazione acconsenti all'utilizzo dei cookie.OK
  • salta al contenuto

Documentazione openDCN

Strumenti Utente

  • Entra

Strumenti Sito

  • Ultime modifiche
  • Informativa sui cookie
Ti trovi qui: start » le_stringhe

le_stringhe

Questa è una vecchia versione del documento!


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, degli identificatori di stringhe costanti che poi vengono utilizzati per effettuare la sostituzione cono la stringa corrispondente nella lingua impostata nella specifica istanza.
La notazione utilizzata per l'inserimento di questi identificaori è 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 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 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"));


le_stringhe.1275295835.txt.gz · Ultima modifica: 05/06/2013 17:08 (modifica esterna)

Strumenti Pagina

  • Mostra sorgente
  • Revisioni precedenti
  • Puntano qui
  • Torna su
Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è soggetto alla seguente licenza: CC Attribution-Noncommercial-Share Alike 3.0 Unported
CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki