Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    277

    Gestione multilingua in JS

    Ciao a tutti!

    Sto gestendo un sito (sviluppato principalmente in PHP + JS) multilingua.

    Non ho problemi sulla gestione multilingua server side, mentre ho problemi sulla gestione multilingua a livello di javascript.

    Come poterla gestire?

    Avevo pensato ad un utilizzo dei cookie, ma la dimensione massima di 4 Kb mi sembra un po' limitativa...

    C'è qualche soluzione al mi problema?

    Grazie mille,

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    277
    Nessuno mi risponde?

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    cosa intendi? cosa devi scrivere in un cookie che superi i 4 kb?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    277
    L'idea di fondo è questa: alla login viene riconosciuta la lingua utente.

    Viene quindi creato un cookie dove vado a salvare le caption che richiamerò poi in tutti i JS. Ovvero un array di dimensione 'n' dove 'n' è il numero di caption che utilizzaerò.

    Non so se è fattibile utilizzando i cookie, e cmq quella dei cookie è una mia idea... si può gestire in modo migliore, eventualmente?

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    non suona certo come la migliore delle soluzioni

    se il problema e' avere caption diverse a seconda della lingua per utilizzarle in javascript personalmente procederei a generare un js esterno via php (mandando header opportuno)
    facendo scrivere da php, una volta che questo abbia letto il contenuto del cookie, se presente, e ricavata la lingua da utilizzare
    <script type="text/javascript" src="lingua.php?lang=it"></script>
    prima di includere altri script che si appoggiano a queste caption

    cosi' lo generi una volta sola per lingua e poi il browser lo ripesca dalla cache
    senza impazzire a leggere e rileggere da un cookie molto articolato

    ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    277
    :master: mmm... fammi capire un po' meglio:

    1. Uno script php capisce la lingua utente e al volo genera un file 'CAPTION.JS' contente le caption nella lingua prescelta

    2. Tutti gli altri script devono puntare a CAPTION.JS per caricare le caption.

    E' così?

    Se fosse così allora in realtà non ho caption.JS, ma:
    CAPTION_LINGUA1.JS, CAPTION_LINGUA2.JS
    (non è detto che LINGUA1 sia sempre l'italiano...). Ma allora come far puntare gli altri script allo script di caption corretto (1 piuttosto che 2)?
    Forse non ho capito qualcosa...
    Grazie mille,
    ciao!!!

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    non esistono CAPTION_LINGUA1.JS, CAPTION_LINGUA2.JS perche' fondamentalmente al resto del js non interessa che lingua e' stata scelta, interessa poter prendere dinamicamente i dati corretti

    a fornire i dati corretti ci pensa php, che conosce la lingua scelta e per pulizia e per farlo finire in cache inserisce nel documento un tag <script>
    <script type="text/javascript" src="caption.php?lang=it"></script>

    appende la lingua (anche se magari potrebbe riprenderla autonomamente) perche' altrimenti un file come caption.php, in condizioni normali, finirebbe in cache e o impedisci sempre il ripescaggio dalla cache (male: magari la lingua non cambia mai e invece continui a generarlo come se fosse cambiata) o di base lo permetti, come in questo caso

    la differenza e' che se improvvisamente lang=en e finora e' stato =it viene richiesto il nuovo js al server (nota che se ritorna =it non viene richiesto nuovamente, ma ripesca il vecchio dalla cache)

    caption.php
    manda subito un header per dire che servira' come atteso codice javascript,
    che se non sbaglio e'
    codice:
    header("content-type: application/x-javascript");
    legge quanto passato in get e sa a cosa e' uguale lang, si ricava i dati che deve mandare,
    e li scrive seguendo le regole formali javascript, per es
    codice:
    var lngMsg={
    	cl:"close",
    	nw:"open a new window",
    	xt:"external link"
    };
    questa variabile lngMsg e' globale, accessibile ovunque,
    da quel momento in poi tutto il resto del javascript puo' far riferimento a lngMsg['cl'] o lngMsg.cl quando deve usare "chiudi" nella lingua prescelta

    spero di aver capito bene il problema e di aver reso chiaro perche' lo risolverei cosi'

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    277
    Grazie mille!!!
    La tua risposta era precisissima!

    Allora ti posto qui il codice (funzionante):

    Questa è la pagina principale:

    [CODICE]
    <HTML> <HEAD>
    <TITLE>
    SSP Version 0.0 - USER d - Anno: ND - Azienda ND </TITLE>
    </head>
    <body>
    <script type="text/javascript" src="caption_js.php?LNG=0"></script>
    <script language="JavaScript">
    alert(lngMsg.cl);
    </script>
    </body>
    [/CODICE]

    Mentre questo è il codice di caption.php

    [CODICE]
    <?php
    header("content-type: application/x-javascript");

    if ($_GET['LNG'] == '0')

    {
    echo '
    var lngMsg={
    cl:"close",
    nw:"open a new window",
    xt:"external link"
    };
    if ($_GET['LNG'] == '1')
    {
    echo '
    var lngMsg={
    cl:"chiudi",
    nw:"apri una nuova finestra",
    xt:"link esterno"
    };
    ';
    }
    ?>
    [/CODICE]

    La mia domanda (ultima!) è però questa: ogni pagina richiamerà caption.php. Questo file - se ho ben capito - viene generato una prima volta, poi tutte le volte che lo richiamo (perché lo dovrò richiamare tutte le volte, in ogni scripot, giusto?!) viene ripescato il caption.php in cache, senza quindi la sua rigenerazione da parte del server?

    Grazie mille per la pazienza,

  9. #9
    per forzare il caching devi usare altri metodi, ma non è questa la sezione adatta.
    Comunque sia, solitamente, il browser se richiama lo stesso url con gli stessi headers, sfrutta in automatico la propria cache (ma ripeto, per farlo bene o tentare di farlo in modo forzato devi usare altri metodi che sono parte di PHP, non del JS)

    P.S. il BBCode è inglese, CODE per il CODICE, B per il BOLD ... etc ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.