[TYPO3-UG Italy] localizzazione records: curioso problema: l'INTRUSO

Alessandro Tuveri at at uniud.it
Wed Sep 20 08:32:29 CEST 2006


Ciao a tutti
sto terminando lo sviluppo di un interessante programma che prevede la  
localizzazione dei records. La parte semiseria o comica del discorso  
riguarda quello che io ho definito L'INTRUSO che qui vado a descrivere  
nella speranza di ricevere un consiglio su come risolvere o commento.

Supponiamo di avere un set di records di prodotti che hanno questi  
nomi di prodotti (frutta) con le id di record, per fare un esempio:

ANGURIA  uid# 1
MELA     uid# 2
PESCA    uid# 3

con i corrispondenti records inglesi tradotti in:

APPLE      uid#4, parent: #2
APRICOT    uid#5, parent: #3
WATERMELON uid#6, parent: #1

seguendo le code guidelines, etc. per localizzare (e quindi  
cercare...) un prodotto sulla base del nome, bisogna "spedire" in  
avanti in GET/POST sempre lal uid della lingua di default, che  
nell'esempio e' italiano. Poi si usa questa uid per localzzare e  
ottenere il record (ho usato alcune righe trovate in tt_news).  
Cercando per APPLE quindi si deve inviare la uid# 2 ad una pagina la  
quale, se e' inglese, attraverso le classi di TYPO3 estrae il record  
#2 (Apple) oppure in presenza di piu' lingue implementa il CONTENT  
FALLBACK.

Il punto o meglio problema e' questo: tutto funziona per le normali  
operazioni: invece quando si fanno estrazioni di record secondo una  
certa lettera dell'alfabeto iniziano i primi problemi. Se ad esempio  
facciamo una estensione che cerca per tutti i frutti che iniziano per  
M nel nostro semplice DB estraiamo nella lingua italiana la M(ela) poi  
andiamo a localizzazare e ci troviamo un APRICOT. In pratica in una  
situazione più complessa rischiamo di trovare dei record 'misti' che  
iniziano per A e per M (o altre lettere).

Questo curioso problemo lo ho denominato L'INTRUSO.

Il problema dell'INTRUSO si verifica anche estraendo piu' records dal  
database. Se inviamo una query per recuperare i records di cui sopra  
in lingua italiana con un ORDER BY name ASC otteniamo la lista:

ANGURIA  uid# 1
MELA     uid# 2
PESCA    uid# 3

in lingua italiana. Ordiniamo la localizzazione dei record e li  
troviamo tutti fuori ordine alfabetico infatti avremo:

WATERMELON
APPLE
APRICOT

(in questo caso si puo' risolvere con un ordinamento tramite  
array_multisort) ma sfido chiunque a ordinare un set dopo aver usato  
nella query anche un inevitabile e utilissimo LIMIT 0,10, infatti il  
sort va fatto sull'intero set dei records...

Penso che l'unico metodo per aggirare il problema sia di limitare le  
ricerche nella lingua corrente, comunque il problema e' veramente  
curioso, infatti con questa soluzione non e' possibile restituire a  
video una lista 'mista' composta da records della lingua corrente e  
non localizzati.

Commenti?!?

--
ALEX TUVERI
CSIT - UNIV. DI UDINE
--------------------------------------

----------------------------------------------------------------------
SEMEL (SErvizio di Messaging ELettronico) - CSIT -Universita' di Udine






More information about the TYPO3-UG-italy mailing list