Prima di tutto, gettext
è una buona strada da percorrere, quindi non scartare se all'inizio non sembra facile; Tuttavia ci sono anche altre opzioni che possono essere utili da sapere. Prima di spiegare che diamo un'occhiata ai tuoi suggerimenti:
Nel tuo modo array
di fare questo, hai una soluzione praticamente semplice. La cosa buona è che puoi archiviare le tue traduzioni in una memoria dati, quindi caricarle nello script PHP come un array, e il gioco è fatto. Tuttavia, se si desidera archiviare l'array in modo statico in un file PHP, la modifica richiede a) un programmatore PHP o un utente espropriato che abbia familiarità con la sintassi di PHP, solo per modificare il file b) sincronizzazione tra anche quattro o cinque file di lingue diverse potrebbe essere abbastanza fastidioso e soggetto a errori.
Quello che devi considerare qui è: come aggiungere successivamente nuovi elementi al file della lingua? Posso lasciarlo a un traduttore o dovrebbe esserci un programmatore PHP?
Il tuo modo variable
di farlo non è pratico. Perché? Presumo che avrai almeno un paio di funzioni nella tua applicazione, giusto? Quindi è necessario passare tutte queste variabili quando si chiama la funzione o è necessario per global
loro. Se pensi di avere più di dieci variabili come questa, ti scoraggio fortemente a farlo. Potrebbero esserci anche conflitti di nomi - puoi potenzialmente sovrascrivere il valore di un'altra variabile con lo stesso nome, tuttavia questo potrebbe essere risolto aggiungendo un prefisso anche semplice come un carattere di sottolineatura, quindi avrai $_welcome
ad esempio. Comunque, se fossi in te non ci penserei nemmeno; Non farlo
Un buon modo per farlo è definire Costanti con un prefisso. Quindi per esempio nel tuo en.lang.php
avrai qualcosa di simile define( 'LABEL_WELCOME', 'Welcome' );
e nel tuo no.lang.php
avrai define ( 'LABEL_WELCOME', 'Velkommen' );
. L'aspetto positivo dell'uso di costante anziché di variabili è che sono sempre disponibili nel tuo script. Quindi non è necessario iniettarli o globalizzarli. Rispetto sia alle matrici che alle variabili, sono più veloci a causa del modo in cui PHP le gestisce: occupano meno spazio nella memoria. Lo svantaggio è che non puoi passarli al traduttore, quindi hai di nuovo bisogno di uno sviluppatore PHP. Anche la sincronizzazione tra i file potrebbe essere di nuovo un po 'dolorosa.
L'altra opzione è avere una funzione o classe / metodo per recuperare la traduzione. Sarà meno efficiente, tuttavia non credo che tu abbia bisogno di quel tipo di micro-ottimizzazione, ma il vantaggio è che puoi applicare una logica personalizzata durante il recupero della traduzione. Ad esempio, immagina che un giorno il tuo amato project manager verrà da te chiedendoti se potresti convertire tutti quei testi in maiuscolo. Non puoi rifiutarti di farlo, quindi avere una funzione in mezzo potrebbe aiutarti molto quando devi applicare / cambiare un modello a tutte le tue traduzioni.
Per concludere:
Pensa a come i traduttori possono usarlo e trovare una soluzione KISS funzionante per loro.
Pensa a come rimanere sincronizzati tra lingue diverse.
Pensa se potrebbe essere necessaria la stessa traduzione, diciamo per l'app mobile. Una soluzione multipiattaforma potrebbe farti risparmiare tempo. Non eliminare i database JSON e ordinari.
Pensa a come applicare / modificare la logica durante il recupero delle traduzioni.
Dimenticato la performance. Il 99,9% delle volte non riuscirai a fare la micro-ottimizzazione come Costante vs. Variabili vs. Chiamate di funzione . Presumo che il tuo tempo come sviluppatore / personale sia più costoso di un tempo di elaborazione.
Aggiornamento n. 1
Mio Dio, ho postato una risposta per una domanda di un anno. Perché nessuno sta dicendo qualcosa qui? Abbiamo bisogno di avvisi per questi casi.
Aggiornamento n. 2
Sul lato destro dice che è una domanda di un anno; Tuttavia è stato chiesto due anni fa! Qui tutto è fuorviante!