Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 53
  1. #1

    internazionalizzare / gestione lingue

    molto semplicemente: una domanda per voi

    come preferite gestire l'internazionalizzazione dei vostri siti/applicazioni php?

  2. #2
    Ciao.
    In un mio progetto sto utilizzando
    questa soluzione devo dire che mi trovo
    benino


    Codice PHP:
    class FileException extends Exception{} 
    class 
    Xml
        public 
    $docnull
        public 
    $xpnull
        public function 
    __construct($fileName){ 
            
    $this->doc= new DOMDocument(); 
            
    $this->load($fileName); 
        } 
        public function 
    save($fileName){ 
            if(!@
    $this->doc->save($fileName)){ 
                 throw new 
    FileException('Error saving file ['.$fileName.'] in class ['.__CLASS__.']'); 
            } 
        } 
        public function 
    xPath(){ 
            
    $this->xp= new domxpath($this->doc); 
        } 
        private function 
    load($fileName){ 
            if(!@
    $this->doc->load($fileName)) { 
                throw new 
    FileException('Error loading file ['.$fileName.'] in class ['.__CLASS__.']'); 
            } 
        } 

    class 
    i18n extends Xml
        private 
    $data = array(); 
        public function 
    __construct($fileName){ 
            
    parent::__construct($fileName); 
            
    $this->setLabel(); 
        } 
        public function 
    __set($name$value) { 
            
    $this->data[$name]= $value
        } 
        public function 
    __get($name) { 
           if (
    array_key_exists($name$this->data)) { 
                return 
    $this->data[$name]; 
            } 
        } 
        private function 
    setLabel(){ 
            
    $root$this->doc->documentElement
            
    $nodes$root->childNodes
            foreach(
    $nodes as $node){ 
                if(
    $node->hasChildNodes()){ 
                    
    $this->{$node->tagName}= $node->firstChild->nodeValue
                } 
            } 
        } 


    try{ 
        
    $i18n= new i18n('/en/form_register.xml'); 
        echo 
    $i18n->username
        echo 
    "
    "

        echo 
    $i18n->password
        
    // and so on 

    catch(
    FileException $e){ 
        echo 
    $e->getMessage(); 

    form_register.xml

    Codice PHP:
    <?xml version="1.0" encoding="UTF-8"?> 
    <items> 
    <username>Choose your username</username> 
    <password>Choose your password</password> 
    <re_password>Confirm password</re_password> 
    <email>Your e-mail address</email> 
    <country>Choose your country</country> 
    <captcha>Authorize your registration</captcha> 
    </items>

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    la cosa più semplice è tenere le traduzioni delle stringhe in PHP ( array associativi ) o sbaglio?

    qualcuno le tiene su db, qualcuno su file... volendo ci sono diversi standard

    lo ZF ne suporta molti http://framework.zend.com/manual/en/zend.translate.html

    symfony http://www.symfony-project.org/book/...-I18n-and-L10n

    comunque non si tratta solo di sostituire stringhe, ma anche di formattare dati ( per esempio le date )... o sbaglio? no che non sbaglio

    tra l'altro voglio implementare anche la traduzione degli errori ( eccezioni )

  4. #4
    interessante la soluzione ibrida di Zend con lingue in XML e possibilità di creare gettext tramite caching, nessun sistema però prende in considerazione il lato client ... come creare tutte le stringhe da usare in JS per avvisi o altro
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Originariamente inviato da andr3a
    interessante la soluzione ibrida di Zend con lingue in XML e possibilità di creare gettext tramite caching, nessun sistema però prende in considerazione il lato client ... come creare tutte le stringhe da usare in JS per avvisi o altro
    beh... intendi quindi in pratica creare template javascript, perchè ( a meno di avere js in pagina, ma direi che lo teniamo esterno no? ) poi le traduzioni le specifichi a livello di template... o sbaglio?

  6. #6
    intendo avere una __("whatever") anche sul client
    codice:
    function __(what){
        return __.language[what];
    };
    __.language = {
        "Hello":"Ciao",
        "World":"Mondo"
    };
    generato via url a seconda della lingua
    language.php?lang=it&type=js

    oppure generare direttamente qualcosa tipo
    codice:
    var Language = {
        "Hello":"Ciao",
        "World":"Mondo"
    };
    e usare semplicemente Language.Hello nel codice client
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    ah ok si se po fa
    mo penso all'oggetto generico
    a sto punto però tanto vale templatizzare anche javascript... poi dentro il javascript varranno le regole che usi per il template engine e quindi errori e traduzioni... o davvero pensi che sia meglio spostare tutta sta logica sul lato client?

    così ad occhio preferirei averlo lato server e più flessibile

    comunque torniamo alla mia domanda iniziale... file o db? come organizzo le stringhe?
    quale standard usare?

  8. #8
    Originariamente inviato da andrea.paiola
    così ad occhio preferirei averlo lato server e più flessibile
    e cosa fai una chiamata per ogni informazione? Devi pre creare tutte le stringhe sul client secondo me.

    Per il server, XML cachato per gettext mi sembra, come ho già detto, la soluzione più interessante. L'XML se lo generi da db magari lo gestisci meglio e senza paranoie utf-8, no?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    Originariamente inviato da andr3a
    e cosa fai una chiamata per ogni informazione? Devi pre creare tutte le stringhe sul client secondo me.
    tratterei js come qualsiasi altra risorsa sul sito, ossia avrà il suo template che verrà localizzato una volta richiamato
    ho paura che diventi pesante caricare tutte le stringhe
    Originariamente inviato da andr3a Per il server, XML cachato per gettext mi sembra, come ho già detto, la soluzione più interessante. L'XML se lo generi da db magari lo gestisci meglio e senza paranoie utf-8, no?
    ovviamente TUTTO è utf-8
    db, connessione al db, file... TUTTO, per evitare ovvi casini
    perchè quella in particolare ti sembra la soluzione più interessante?

    poedit e gettext li ho provati ed effettivamente è comodo...

  10. #10
    Originariamente inviato da andrea.paiola
    perchè quella in particolare ti sembra la soluzione più interessante?
    perchè al solito, puoi riutilizzare un solo file XML per il server e per il client, e con gettext la velocità di risposta è massima
    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.