ciao SlowFox,
ok, ora penso di aver capito.
Comprendo che tu voglia "unificare" la gestione dei testi tradotti ma probabilmente dovresti tenere separate le risorse locali, cioè quei testi come "Aggiungi al carrello" propri della pagina aspx, dalle descrizioni prodotti.
Può capitare infatti di dover presentare un prodotto anche in altri punti dell'applicazione, come in una pagina di ricerca oppure nella vetrina in homepage. In questo caso legheresti le descrizioni anche a quelle altre pagine?
No, è preferibile che i contenuti restino
agnostici sul come poi verranno presentati nel sito.
Per i prodotti, potresti predisporre nel database una tabella secondaria che conterrà i testi tradotti ed avrà una chiave primaria composta da due campi: l'id del prodotto e l'id della lingua. Qui trovi una possibile implementazione, vedi il paragrafo "The good design".
http://www.codeproject.com/Articles/8084/Creating-multilingual-websites-Part-2#databasedesignIl tuo strato di accesso ai dati dovrà dunque mettere in JOIN la tabella principale dei Prodotti e quella secondaria che contiene le traduzioni. Nella clausola ON della join, andrà indicato anche il criterio della lingua, in modo che tra le tante traduzioni sia scelto solo il record relativo alla lingua dell'utente.
Trovi l'esatta query SQL nello stesso articolo che ho linkato qui sopra.
SlowFox ha scritto:
dovrei passare i parametri idProdotto e idCategoria per avere qualcosa di univoco
Da questo punto di vista, conoscere l'idProdotto e l'idCategoria non ti serve più perché l'inserimento delle traduzioni avverrebbe dalle pagine di amministrazione dello specifico prodotto o categoria.
Nella pagina di modifica prodotto potresti predisporre un editor del genere, avente tante tabs quante sono le lingue disponibili nel sito.
http://help.convio.net/images/content/pagebuilder/TabsEditorEnglish.pngAl salvataggio, ogni contenuto tradotto verrebbe poi inserito nella tabella secondaria di cui parlavo.
ciao
Modificato da BrightSoul il 09 maggio 2013 23.26 -