Pagina 1 di 1

Lettere accentate

Inviato: 16/07/2004, 11:44
da Il_Cuffia
Ho installato osCommerce-2.2ms2 dopodichè la traduzione italiana osc_2.2-MS2_ITA-lang-1.1.zip su di una macchina linux, i client utilizzati sono windows.

Il problema riscontrato riguardava le lettere accentate, che erano visualizzate male nonostante il charset specificato nelle pagine html fosse giusto (iso-8859-1).

La questione risiedeva nel fatto che nei files di localizzazione non sono specificate le corrispondenti entità iso html al posto delle lettere accentate: ovvero ci sono 'è' invece di "è", 'ì' invece di "ì", ecc...

La soluzione consiste nel convertire tutte le lettere accentate nelle corrispondenti entità iso. Ovviamente la soluzione proposta funziona solo sotto linux (ma tramite un editor html dovrebbe essere possibile una conversione semi-automatica anche sotto windows):

Una volta installata la traduzione basta spostarsi nelle directories delle localizzazioni:

Codice: Seleziona tutto

$WWWROOT/oscommerce-2.2ms2/catalog/includes/languages
$WWWROOT/oscommerce-2.2ms2/catalog/admin/includes/languages

e lanciare il seguente script shell in ognuna directory:

Codice: Seleziona tutto

#!/bin/sh 
TEMP_SED=$(mktemp) 
cat << EOF > $TEMP_SED 
s/\(.*\)\(à\)\(.*\)/\1\à\3/g
s/\(.*\)\(é\)\(.*\)/\1\é\3/g
s/\(.*\)\(è\)\(.*\)/\1\è\3/g
s/\(.*\)\(ì\)\(.*\)/\1\ì\3/g
s/\(.*\)\(ù\)\(.*\)/\1\ù\3/g
EOF 
PHP_FILES="italian.php $(find italian -name '*.php')" 
for i in $PHP_FILES; 
do 
    sed -f $TEMP_SED $i > $i.temp; 
    mv -vfb $i.temp $i 
done 
rm -f $TEMP_SED 

lo script effettua comunque il backup dei file originali.

Giorni della settimana

Inviato: 16/07/2004, 11:53
da Il_Cuffia
Un ulteriore problema sussiste ancora per le date generate tramite

Codice: Seleziona tutto

strftime

nel file:

Codice: Seleziona tutto

$WWWROOT/oscommerce-2.2ms2/catalog/includes/footer.php

infatti le date generate dall'istruzione non contengono le entità iso html corrispondenti alle lettere accentate (lunedì, martedì, ecc...)

La soluzione a questo problema richiederebbe un cambiamento direttamente all'interno di osCommerce (o meglio in php?).

Un semplice workaround consiste nel cambiare il formato specificato nella variabile DATE_FORMAT_LONG del file

Codice: Seleziona tutto

italian.php

Al posto del nome completo del giorno della settimana (specificato da "%A") mettere l'abbreviazione "%a", alla riga 22:

Codice: Seleziona tutto

define('DATE_FORMAT_LONG', '%a %d %B, %Y'); // this is used for strftime()


Lettere accentate ...

Inviato: 28/12/2004, 16:22
da alexcami
Su Fedora Core 3 ... mi sono permesso di modificare lo script per ottenere risultati anche per eventuali altri linguaggi stranieri ...

#!/bin/sh

#s/\(.*\)\(à\)\(.*\)/\1\à\3/g
#s/\(.*\)\(é\)\(.*\)/\1\é\3/g
#s/\(.*\)\(è\)\(.*\)/\1\è\3/g
#s/\(.*\)\(ì\)\(.*\)/\1\ì\3/g
#s/\(.*\)\(ù\)\(.*\)/\1\ù\3/g

TEMP_SED=$(mktemp)
cat << EOF > $TEMP_SED
s/À/\À/g
s/Á/\Á/g
s/Â/\Â/g
s/Ã/\Ã/g
s/Ä/\Ä/g
s/Å/\Å/g
s/Æ/\Æ/g
s/Ç/\Ç/g
s/È/\È/g
s/É/\É/g
s/Ê/\Ê/g
s/Ë/\Ë/g
s/Ì/\Ì/g
s/Í/\Í/g
s/Î/\Î/g
s/Ï/\Ï/g
s/Ñ/\Ñ/g
s/Ò/\Ò/g
s/Ó/\Ó/g
s/Ô/\Ô/g
s/Õ/\Õ/g
s/Ö/\Ö/g
s/Ø/\Ø/g
s/Ù/\Ù/g
s/Ú/\Ú/g
s/Û/\Û/g
s/Ü/\Ü/g
s/Ý/\Ý/g
s/Þ/\Þ/g
s/ß/\ß/g
s/à/\à/g
s/á/\á/g
s/â/\â/g
s/ã/\ã/g
s/ä/\ä/g
s/å/\å/g
s/æ/\æ/g
s/ç/\ç/g
s/è/\è/g
s/é/\é/g
s/ê/\ê/g
s/ë/\ë/g
s/ì/\ì/g
s/í/\í/g
s/î/\î/g
s/ï/\ï/g
s/ð/\ð/g
s/ñ/\ñ/g
s/ò/\ò/g
s/ó/\ó/g
s/ô/\ô/g
s/õ/\õ/g
s/ö/\ö/g
s/ø/\ø/g
s/ù/\ù/g
s/ú/\ú/g
s/û/\û/g
s/ü/\ü/g
s/ý/\ý/g
s/þ/\þ/g
s/ÿ/\ÿ/g
EOF
PHP_FILES="italian.php $(find italian -name '*.php')"
for i in $PHP_FILES;
do
iconv -f latin1 -t utf-8 $i > $i.utf;
sed -f $TEMP_SED $i.utf > $i.utf.temp;
iconv -f utf-8 -t latin1 $i.utf.temp > $i.temp;
mv -vfb $i.temp $i
done
rm -f $TEMP_SED
risorse consultate:

http://linuxproblem.org/art_21.html
http://pluto.topnet.it/ftp/pluto/ildp/u ... n2sgml.sed

Script shell???

Inviato: 29/12/2006, 11:01
da altealuca
Scusa la mia ignoranza, ma cosa vuol dire praticamente lanciare lo script? :oops: