Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072

    Gestione lingue campi DB

    Ciao a tutti, ho una tabella prodotti che contiene una serie di caratteristiche (campi del DB), io dovrei gestire 6 differenti traduzioni per ogni caratteristica.

    Come suggerite di procedere?

    1) creare N campi campo_it campo_en campo_fr


    2) gestire tramite file esterno?


    Nel dettaglio sto usando Yii e vorrei capire se la soluzione 2) è attuabile oppure se è più comoda la 1)

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Io piuttosto che avere una tabella con un'infinità di campi creerei una tabella per ogni lingua(prodotti_it, prodotti_en, prodotti_fr...), così i campi li puoi chiamare sempre allo stesso modo in ogni tabella e sarà solo il nome della tabella nelle query a cambiare a seconda della lingua.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Questo lo eviterei come la peste, dato che mi sto ponendo il problema se gestire una tabella aggiuntiva per differenti tipologie di campi prodotto in funzione della tipologia; quindi vorrebbe dire rendere ancora più complessa una gestione di tabella già articolata. Quali alternative ci sono per la gestione delle lingue?
    Thanks

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Se i campi diversi a seconda della tipologia di prodotto sono pochi, del tipo un tipo di prodotto prevede come caratteristica il peso e un'altra invece altezza/lunghezza/profondità (tanto per dire) fa un'unica tabella con tutti e 4 i campi, poi compili quelli giusti secondo il prodotto (e quindi manterrei anche il discorso delle tabelle diverse per ogni lingua), se invece possono cambiare molte cose allora può aver senso avere una tabella per ogni tipologia di prodotto.

    Secondo me, se puoi, pensaci bene se usare o no il sistema che ti ho proposto per le lingue diverse, il db risulterebbe più ordinato e le query sarebbero comode da gestire.

    Alternative in questi casi non ne vedo, intendo diverse dall'usare il db, usare file esterni non lo prenderei proprio in considerazione, in caso dovessi apportare modifiche ai contenuti sarebbe un suicidio.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Perché sconsigli i files esterni?? tutti i FMK usano soluzioni tramite file di appoggio per la gestione delle lingue.

    E' proprio improponibile avere una "label" nel DB e poi tradurre tramite files?

    Grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Se i campi diversi a seconda della tipologia di prodotto sono pochi, del tipo un tipo di prodotto prevede come caratteristica il peso e un'altra invece altezza/lunghezza/profondità (tanto per dire) fa un'unica tabella con tutti e 4 i campi, poi compili quelli giusti secondo il prodotto (e quindi manterrei anche il discorso delle tabelle diverse per ogni lingua), se invece possono cambiare molte cose allora può aver senso avere una tabella per ogni tipologia di prodotto.

    Secondo me, se puoi, pensaci bene se usare o no il sistema che ti ho proposto per le lingue diverse, il db risulterebbe più ordinato e le query sarebbero comode da gestire.

    Alternative in questi casi non ne vedo, intendo diverse dall'usare il db, usare file esterni non lo prenderei proprio in considerazione, in caso dovessi apportare modifiche ai contenuti sarebbe un suicidio.

    Quindi con 5 lingue, 5 tabelle di appoggio ... e le query come sarebbero? Mi porto sempre dietro tutte le lingue/tabelle? Oppure come posso fare la JOIN solo della tabella corretta?



    Grazie

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Come gestisci la lingua corrente? L'utente sceglie in che lingua visualizzare il sito? Dove si trova questa sua scelta?

    Faccio un esempio: metti in sessione una variabile che dice la lingua scelta $_SESSION['lingua'] = 'it'

    per le query basta fare
    Codice PHP:
    //esempio per una query, le altre saranno fatte allo stesso modo per selezionare la tabella giusta
    $query "SELECT * FROM prodotti_".$_SESSION['lingua'];

    //Essendoci nella variabile di sessione 'it' la query sarà
    // SELECT * FROM prodotti_it
    //se ci fosse stato en
    // SELECT * FROM prodotti_en
    // e così via 

  8. #8
    1) per ogni campo che è multilingua, crei le varie versioni nella stessa tabella (quindi campo_it, campo_en, ... ), ma ha più contro che pro

    2) Una tabella per ogni lingua come dice il nostro buon moderatore, che crea una serie di problemi, uno dei quali è che ogni volta che aggiungi una lingua devi aggiungere una tabella, per non parlare del fatto che se hai piu tabelle da tradurre ti vengono fuori decine di tabelle

    3) crei una relazione molti a molti tra la tabella che vuoi tradurre (per la precisione, i singoli campi che vuoi tradurre) e una tabella delle lingue. es:

    Prodotti(id primary key, prezzo, quantita, id_descrizione, foreign key (id_descrizione) references dictionary(id) on delete set null on update cascade)

    Dictionary(id primary key)

    Languages(id primary key, lang, code)

    Translations(id_dictionary, id_language, translation text, primary key (id_dictionary, id_language), foreign key (id_dictionary) referneces dictionary(id) on delete cascade on update cascade, foreign key (id_language) references languages(id) on delete cascade on update cascade)

    praticamente ogni campo che vuoi tradurre invece di essere testo è una reference ad una entry del dizionario, entry che potrai tradurre come piu ti aggrada.

    Come fare le query, dipende da quanto sei bravo te Puoi fare viste, funzioni parametriche, join al volo... dipende anche dal fatto se usi o meno un framework db sotto.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    visto che stai usando Yii, perchè non provi ad usare questa estensione:
    http://www.yiiframework.com/extensio...gual-behavior/

    Per i "label", puoi usare le funzioni di traduzione di Yii
    http://www.yiiframework.com/doc/guid...en/topics.i18n

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Grazie a tutti, parto dai vostri spunti e mi documento un po'!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.