Salve,
ieri sera ho tentato di convertire un piccolo modulo della 1.5 che utilizzavo sul sito in modo da farlo funzionare sulla 1.7.2 (per ora in locale).
Ho sistemato l'XML manifest secondo
le nuove regole di sintassi ma non ho fatto in tempo ad arrivare al codice che il primo scoglio che ho dovuto affrontare è stato il language file che non veniva caricato.
Così mi sono armato di pazienza (e di google) e mi son messo a fare un po' di ricerche e di prove.
Il risultato è un piccolo prontuario che ho scritto in parte traducendo e in parte "decodificando" la
documentazione originale della 1.6 che vi sottopongo perché ho ancora qualche lacuna da chiarire e sperimentare sugli effetti della posizione dei files di lingua.
Più in generale, comunque, la sintassi è cambiata e il mancato rispetto delle regole indicate porta, quasi inevitabilmente, al mancato caricamento dei files di lingua.
Secondo quando esposto nella wiki di Joomla.org, questi sono i canoni a cui i language file delle estensioni (ma anche del sito) devono sottostare:
- sintassi del tipo NOME_ESTENSIONE_CHIAVE="valore"
- la chiave non deve contenere spazi ma solo _ (underscore)
- il valore deve essere contenuto tra due " (double quote, virgolette doppie) per tutti i valori alfanumerici
- {}|&~![()^" sono caratteri non ammessi all'interno della chiave
- le righe di commento devono iniziare con ; (puntoevirgola), non con #
- i valori "null, yes, no, true, false, on, off, none" sono riservati, non possono essere usati.
Vanno utilizzati quelli predefiniti nei file di lingua (in /language/[ln-LN]/[ln-LN].ini): JNULL, JYES, JNO, JTRUE, JFALSE, JON, JOFF - Eventuali doppie virgolette (double quotes) all'interno di un valore vanno sostituite con la stringa _QQ_
- La definizione di un linguaggio per una estensione è suddivisa in 2 files che vanno denominati
[ln-LN].[nome_estensione].ini
[ln-LN].[nome_estensione].sys.ini
Il file con singola estensione ".ini" contiene le traduzioni delle chiavi usate nel manifest file [nome_estensione].xml e utilizzate dall'estensione durante la normale attività.
Il file con doppia estensione ".sys.ini" contiene le traduzioni delle chiavi utilizzate
a. durante l'installazione dell'estensione per localizzarne i messaggi
b. per costruire il menu di amministrazione dei Componenti
c. per localizzare i parametri del componente ed i parametri del menu
d. in "Estensioni->Gestione Estensioni->Gestisci". - i files della lingua possono essere posizionati nelle cartelle:
a. /language/[ln-LN]/ (frontend system wide)
b. /administrator/language/[ln-LN]/ (backend system wide)
c. [cartella_estensione]/language/[ln-LN]/ (locale all'estensione)
IMPORTANTE: per fare in modo che il file .sys.ini sia caricato automaticamente durante l'installazione dell'estensione, questo DEVE essere posizionato nella stessa cartella dell'estensione. In altre parole, un file .sys.ini posizionato nella cartella globale /language/ non sarà caricato durante l'installazione. (Il chè è abbastanza logico se si pensa che, se stiamo installano l'estensione, i files non sono ancora stati copiati secondo quanto indicato dal manifest per cui è necessario che siano strettamente legati alla cartella dell'estensione)
SE esiste solo un file .sys.ini nella cartella dell'estensione (caso c) questo sarà usato per l'uso normale del back-end.
MA, IMPORTANTE: se esistono i files .ini posizionati nelle cartelle globali (casi a,b) questi vengono SEMPRE utilizzati al posto di quelli presenti nelle cartelle dell'estensione (caso c) e utilizzati per l'installazione.
Questo consente di avere due diversi file di lingua .sys.ini, uno per l'uso comune e l'altro per poter offrire una diversa descrizione nelle fasi di installazione dell'estensione. - La voce di menu mostrata nel menu Componenti deriva sempre dalla traduzione della chiave che corrisponde al nome della cartella dell'estensione messa in maiuscolo.
Es: se l'estensione è nella cartella /com_mia_estensione/ allora nel menu verrà mostrata la traduzione presente nel .sys.ini della chiave COM_MIA_ESTENSIONE
Ogni commento o correzione è gradito.