[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