BruttoOriginariamente inviato da mtx_maurizio
Una sessione?![]()
Le sessioni sono state ideate per scambiare dati tra pagine, non tanto per la stessa pagina. Poi non credo sia consigliato l'utilizzo per questo tipo di dati...
Volevo qualcosa più tipo un array.... avevo pensato a delle costanti con prefisso "lang_", tipo la costante "lang_welcome" che riempio con "Benvenuto!", "lang_contacts" che riempio con "contatti".
Le creo dinamicamente dal database.
Ma le traduzioni le ho nel DB. Non vorrei appoggiarmi al filesystem...Originariamente inviato da whisher
Un file xml con le labels una classe per gestirlo/parsarlo
(usa le simpleXml hanno l'accesso ai nodi + diretto)
e una classe registry per renderlo disponile in tutto
lo script.
![]()
E cosa permette una classe 'registry'?
Comunque...
Stavo cercando piuttosto di capire tutti i vantaggi e svantaggi di ogni approccio.
1) Ad inizializzazione della pagina, creare dinamicamente una costante 'lng_stringa' per ogni stinga, leggendo dal database.
PRO:
- Le costanti sono visibili dovunque, senza aggiungere niente.
CONTRO:
- Memorizzano solo stringhe e numeri
- Non si possono usare direttamente all'interno delle virgolette (come accade per le variaibli: "$lang_hello $nomeutente")
- Se voglio applicare un'elaborazione/funzione a tutte le stringhe devo farlo ogni volta
2) Utilizzo le sessioni.
PRO:
- Disponibili ovunque
CONTRO:
- (se non sbaglio) si basano sui cookies. Se sono disabilitati non si possono usare.
- Appesantiscono il codice
- Sono state pensate per altri tipi di casistica
3) Creo un array con chiave e valore (x esempio: "hello"=>"ciao"). L'array lo dichiaro statico, così è disponibile ovunque
PRO:
- Se uso "static" posso leggerne i valori dovunque
CONTRO:
- meno immediata l'inclusione del codice rispetto al semplice nome di una costante
4) Classe registry o singleton (che devo ancora capire cosa sono precisamente) per rendere disponibili delle configurazioni ovunque nel portale
PRO:
- Disponibilità ovunque
- Versatililità del codice per future modifiche
- OOP... quindi più PHP5
- Riutilizzo del codice in futuro, se strutturato in classi
CONTRO:
- Più codice
- Ho poca confidenza con la OOP e i pattern
- meno immediata l'inclusione del codice; magari per scrivere "ciao" devo fare "$language.getTranslation('hello', 'it')"....
- Utilizzando un metodo posso elaborare le stringhe preventivamente (per esempio per fare l'esaping dei caratteri pericolosi)
5) Funzione statica che ricava il valore della chiave passata
PRO:
- Disponibile ovunque
CONTRO:
- Se non la faccio singleton mi fa una query al DB per ogni singola stringa che voglio tradurre
- Più codice
- Appesantimento dell'elaborazione
- Meno immediata l'inclusione nel codice rispetto al semplice nome di una costante
- Posso fare elaborazioni sulle stringhe (tipo l'escape degli apici), 'in massa' senza applicarle ogni volta
.... questi come metodi basati sulle traduzioni presenti nel DB nella tabella "translations" (ogni record è identificato da "chiave" + "id_lingua").
Che ne dite?
Qual'è il più versatile e comodo da utilizzare secondo voi?

Rispondi quotando