Domanda

Ho un'applicazione PHP che fa ampio uso di Javascript sul lato client. Ho un semplice sistema sul lato PHP per fornire ai traduttori un modo semplice per fornire nuove lingue. Ma ci sono casi in cui javascript deve mostrare all'utente elementi di linguaggio (forse un pulsante OK o Annulla o "caricamento" o qualcosa del genere).

Con PHP, ho solo un file di testo che viene memorizzato nella cache sul lato server che contiene codici di frase da un lato e la loro traduzione dall'altro. Un traduttore deve solo sostituire l'inglese con la propria lingua e inviarmi la versione tradotta che integro nell'applicazione.

Voglio qualcosa di simile sul lato client. Mi è venuto in mente di includere un javascript che è solo un insieme di costanti tradotte ma poi ogni caricamento di pagina sta scaricando un file potenzialmente grande la maggior parte dei quali non è necessario.

Qualcuno ha dovuto occuparsene? In tal caso, qual è stata la tua soluzione?

MODIFICA : per essere chiari, non mi riferisco a " al volo " traduzioni qui. Le traduzioni sono già state preparate e sono pronte per essere eseguite, ho solo bisogno che siano rese disponibili al cliente in modo efficiente.

È stato utile?

Soluzione

Che ne dici di alimentare javascript da php? Quindi invece di sollevare:

  <script type='text/javascript' src='jsscript.js'></script>

do

 <script type='text/javascript' src='jsscript.php'></script>

E poi nel file php sostituisci tutto il testo emesso con le costanti associate.

Assicurati di generare le intestazioni di cache corrette all'interno del codice PHP.

Modifica

Queste sono le intestazioni che utilizzo:

header('Content-type: text/javascript');
header('Cache-Control: public');
header('expires: '. date("r", time() + ( 7 * 24 * 60 * 60 ) ) ); // 1 week
header("Pragma: public");

Altri suggerimenti

Di solito carico i valori della lingua appropriati come oggetto JavaScript in un file separato a cui il resto del mio codice può fare riferimento:

var messages = {
    "loading": "Chargement"
}

alert(messages.loading);

La libreria delle lingue verrà memorizzata nella cache sul lato client dopo il primo caricamento ed è possibile migliorare l'efficienza del caricamento suddividendo i valori in file separati che vengono caricati in base al contesto: ad es. una piccola libreria per operazioni pubbliche, una aggiuntiva dietro un login, ecc.

Quello che stai cercando sembra essere AJAX (scambio di client e server richieste asincrone utilizzando Javascript).

Se stai cercando qualcosa di pronto, dai un'occhiata a Google API di traduzione AJAX .

Non ho mai dovuto farlo personalmente, ma la mia prima ipotesi sarebbe quella di fare riferimento a una libreria di terze parti. Credo che l'API AJAX di Google potrebbe avere solo lo strumento per farlo, e poiché la libreria è tramite Google, il file javascript non verrà scaricato dal tuo sito.

Prova a cercare nel seguente sito per un po ': http://code.google. com / apis / ajaxlanguage / documentazione /

Fammi sapere se ti aiuta. Potrei essere interessato a implementare qualcosa di simile per il sito Web che gestisco.

Buona fortuna, C

Mi piace la risposta di Pim Jager e l'ho fatta anche io. Se non vuoi che il PHP generi il JavaScript per te (diciamo, per motivi di prestazioni), puoi avere una copia master delle librerie JavaScript e, quando cambiano, eseguire un programma di traduzione per generare una versione di ogni lib per ogni lingua. Quindi fai semplicemente in modo che PHP inserisca la versione corretta per l'utente corrente nel tag di script che invia.

Ho lavorato su un sistema che richiedeva sia una forte localizzazione che un forte marchio per clienti diversi. Ciò che abbiamo fatto è stato tutto ciò che è stato inviato allo schermo con una macro unica, come [ 3027 ] (o qualcosa del genere). Quindi abbiamo avuto un mucchio di file locali e di branding che avevano voci per ciascun codice macro e il testo da sostituire per ogni macro. Un programma dovrebbe scorrere tutti i file sorgente e tutte le lingue e fare le sostituzioni.

Abbiamo scoperto che avevamo anche bisogno di alcune funzioni per la localizzazione, per importi monetari, date, orari, ecc. Tutto ha funzionato abbastanza bene.

Abbiamo scoperto che avevamo bisogno di un'altra cosa importante: uno strumento per esaminare tutti i file della lingua e assicurarsi che tutti avessero tutti i codici necessari. Risparmio di tempo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top