Lettere accentate
Inviato: 16/07/2004, 11:44
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:
e lanciare il seguente script shell in ognuna directory:
lo script effettua comunque il backup dei file originali.
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
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