Lettere accentate

Discussione sulle traduzioni italiane di osCommerce

Moderatore: mod Generali

Rispondi
Il_Cuffia
membro Junior
membro Junior
Messaggi: 10
Iscritto il: 14/07/2004, 0:00
Località: ITA

Lettere accentate

Messaggio 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\&agrave;\3/g
s/\(.*\)\(é\)\(.*\)/\1\&eacute;\3/g
s/\(.*\)\(è\)\(.*\)/\1\&egrave;\3/g
s/\(.*\)\(ì\)\(.*\)/\1\&igrave;\3/g
s/\(.*\)\(ù\)\(.*\)/\1\&ugrave;\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.
Ultima modifica di Il_Cuffia il 16/07/2004, 11:54, modificato 1 volta in totale.
Il_Cuffia
membro Junior
membro Junior
Messaggi: 10
Iscritto il: 14/07/2004, 0:00
Località: ITA

Giorni della settimana

Messaggio 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()

alexcami
membro Junior
membro Junior
Messaggi: 1
Iscritto il: 28/12/2004, 1:00
Località: Italy

Lettere accentate ...

Messaggio 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\&agrave;\3/g
#s/\(.*\)\(é\)\(.*\)/\1\&eacute;\3/g
#s/\(.*\)\(è\)\(.*\)/\1\&egrave;\3/g
#s/\(.*\)\(ì\)\(.*\)/\1\&igrave;\3/g
#s/\(.*\)\(ù\)\(.*\)/\1\&ugrave;\3/g

TEMP_SED=$(mktemp)
cat << EOF > $TEMP_SED
s/À/\&Agrave;/g
s/Á/\&Aacute;/g
s/Â/\&Acirc;/g
s/Ã/\&Atilde;/g
s/Ä/\&Auml;/g
s/Å/\&Aring;/g
s/Æ/\&AElig;/g
s/Ç/\&Ccedil;/g
s/È/\&Egrave;/g
s/É/\&Eacute;/g
s/Ê/\&Ecirc;/g
s/Ë/\&Euml;/g
s/Ì/\&Igrave;/g
s/Í/\&Iacute;/g
s/Î/\&Icirc;/g
s/Ï/\&Iuml;/g
s/Ñ/\&Ntilde;/g
s/Ò/\&Ograve;/g
s/Ó/\&Oacute;/g
s/Ô/\&Ocirc;/g
s/Õ/\&Otilde;/g
s/Ö/\&Ouml;/g
s/Ø/\&Oslash;/g
s/Ù/\&Ugrave;/g
s/Ú/\&Uacute;/g
s/Û/\&Ucirc;/g
s/Ü/\&Uuml;/g
s/Ý/\&Yacute;/g
s/Þ/\&THORN;/g
s/ß/\&szlig;/g
s/à/\&agrave;/g
s/á/\&aacute;/g
s/â/\&acirc;/g
s/ã/\&atilde;/g
s/ä/\&auml;/g
s/å/\&aring;/g
s/æ/\&aelig;/g
s/ç/\&ccedil;/g
s/è/\&egrave;/g
s/é/\&eacute;/g
s/ê/\&ecirc;/g
s/ë/\&euml;/g
s/ì/\&igrave;/g
s/í/\&iacute;/g
s/î/\&icirc;/g
s/ï/\&iuml;/g
s/ð/\&eth;/g
s/ñ/\&ntilde;/g
s/ò/\&ograve;/g
s/ó/\&oacute;/g
s/ô/\&ocirc;/g
s/õ/\&otilde;/g
s/ö/\&ouml;/g
s/ø/\&oslash;/g
s/ù/\&ugrave;/g
s/ú/\&uacute;/g
s/û/\&ucirc;/g
s/ü/\&uuml;/g
s/ý/\&yacute;/g
s/þ/\&thorn;/g
s/ÿ/\&yuml;/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
altealuca
membro Junior
membro Junior
Messaggi: 2
Iscritto il: 28/12/2006, 10:43

Script shell???

Messaggio da altealuca »

Scusa la mia ignoranza, ma cosa vuol dire praticamente lanciare lo script? :oops:
Rispondi