modulo i18n, traduzione categorie.
Salve,
appena iscritto ecco il mio primo post, ho provato anche su drupalitalia.org, ma difficilmente trovo risposte, quindi spero di avere più fortuna in questo forum.
Se ci sono lettori o utenti di entrambi i forum mi scuso per il cross-post.
Il problema è questo: sto realizzando un sito bi-lingua (italiano-inglese) utilizzando il modulo i18n. Installazione e gestione dei contenuti senza particolari problemi.
Se inserisco un contenuto con relativa traduzione (es node/1=originale, node/2=tradotto) riesco a passare da una lingua all'altra utilizzando il block di selezione della lingua. In questo caso il link sulla bandierina viene modificato in node/1 o node/2 a seconda che dei casi.
I problemi nascono con la traduzione della tassonomia. Secondo documentazione del modulo(c'è un file di testo con un how to apposito) per questa cosa il procedimento è:
-creare un dizionario senza lingua
-all'interno creare i termini in italiano impostando la lingua, creare i termini in inglese impostando la lingua
-associare, passando alla tab "translation", il termine italiano con quello in inglese.
Questo metodo funziona in maniera parziale, nel senzo che l'albero dei menu (generato da taxonmy_menu) è corretto, all'interno del dizionario ho i termini nella lingua che seleziono, ma passando da una lingua all'altra i contenuti non vengono tradotti.
Cerco di spiegarmi meglio: ammettendo che sia taxonomy_menu/7/1 la categoria in italiano e taxonomy_menu/7/2 la categoria in inglese, e che entrambe abbiano un nodo associato (quello nella lingua relativa), selezionando la lingua nel block languages dovrei passare alla pagina taxonomy_menu/7/1 se clicco su italiano, o taxonomy_menu/7/2 se premo su inglese, per poter vedere i nodi della lingua giusta.
In realtà invece entrambe le bandierine di selezione della lingua puntano alla stessa taxonomy_menu (quella attuale), l'unica differenza tra la query string dei due link e la parte iniziale it/ o en/, il risultato però è che se sto visualizzando la categoria 1 in italiano (con relativi nodi), cliccando su inglese non vengo rimandato alla stessa categoria in inglese (quindi nell'esempio taxonomy_menu/7/2),ma su una pagina en/taxonomy_menu/7/1 che però mi restituisce l'errore "questa categoria non contiene contenuti".
Sto sbagliando io? esiste un metodo più comodo per tradurre la tassonomia del sito? mi ci sto veramente rompendo la testa e non so come venirne fuori. Ho anche provato ad inserire la tassonomia in inglese e poi a farne la traduzione utilizzando il modulo per la gestione delle frasi (così come è stato tradotto il menu base di drupal insomma), questo metodo sembra un pò più efficiente, anche perchè non crea doppie categorie (una per italiano e una per inglese), ma ha lo svantaggio di dover lavorare sul sito in inglese e in un secondo tempo fare la traduzione andando a lavorare sul file it.po. Esiste un metodo per invertire il funzionamento, fare cioè in modo che si possa scrivere tutto in italiano e poi aggiungere un file per le traduzioni in inglese?.
Spero che qualcuno abbia tempo e voglia di aiutarmi in questa cosa.
Ciao
Francesco
Risposte
Autorisposta dopo un paio di giorni di smanettamenti
Allora, torno su questo post nella speranza che aiuti qualcuno con il mio stesso problema, per rendere note le soluzioni(o non soluzioni) che ho adottato per risolvere il mio problema.
Fondamentalmente il modulo i18n permette di fare la maggior parte del lavoro per quanto riguarda la traduzione di un sito, con alcune eccezioni, specialmente se usato in combinazione con il modulo taxonomy_menu.
Seguendo l' howto(c'è un file allegato al modulo che si chiama così) è possibile avere la traduzione della tassonomia, in pratica in un dizionario senza lingua si creano i vari termini nelle varie lingue (specificando la lingua nella creazione del termine), e poi si associano tramita la tab translate. Il problema di cui parlo nel mio post (il messaggio "nessun contenuto per questa categoria" al momento del cambio di lingua) può essere scavalcato utilizzando opportunamente gli alias. Mi spiego meglio: se taxonomy_menu/1/1 è la voce in italiano e taxonomy_menu/1/2 il corrispondente inglese, i link delle bandierine punteranno a it/taxonomy_menu/1/1 e en/taxonomy_menu/1/1 creando un alias del tipo taxonomy_menu/1/2->en/taxonomy_menu/1/1 il problema viene risolto(va fatto per tutte le voci di tassonomia). In questo modo, qualsiasi sia il punto di navigazione, cambiando la lingua rimarrete nella categoria giusta.
Il gioco funziona fino a che non dovete linkare direttamente i nodi, perchè a questo punto avreste bisogno di linkare il nodo inglese al termine inglese e quello italiano al termine italiano. Questo il modulo i18n con taxonomy_menu non riesce a farlo e si incasina, in pratica presenta sempre entrambi i nodi nel menu, solamente che uno dei due è senza genitore(quello che non si dovrebbe vedere perchè è nell'altra lingua).
Io dopo aver tenato tutte le strade possibili senza mettere mano al codice (ho preferito non andare in quella direzione, dato che avrebbe probabilmente comportato l'applicazioni di ulteriori patch a moduli standard) ho deciso di creare due diversi dizionari (it e en), e due relativi menu, utilizzando un blocco per mostrare l'uno o l'altro a seconda della lingua (questo si può fare con il modulo i18nblock che è compreso in i18n).
In pratica il modulo viene utilizzato per la traduzione dei nodi, facendo egregiamente il suo lavoro, e per gestire un blocco che visualizzi il menu della lingua selezionata. Ovviamente andranno linkati i nodi inglesi al menu inglese e quelli italiani al menu italiano.
Lo svantaggio è dizionari doppi, menu doppi, con relativa difficoltà di gestione, ma per le mie esigenze era la soluzione più semplice, dato che il mio cliente dovrà gestire i nodi e non le categorie della tassonomia e dei menu.
Spero, anche se ne dubito, di essere stato sufficientemente chiaro, e di aver fatto cosa gradita a chi si troverà a combatter con un modulo non proprio semplicissimo.
Saluti
Francesco