[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Fwd: Romanizare conform cu regulile Aceademiei Romane



On 27-05-2005, at 22h 22'08", Ruset Zeno wrote about "Re: Fwd: Romanizare conform cu regulile Aceademiei Romane"
> ăsta trebuie scris folosind iso-8859-2 după care cu iconv se transformă în utf-8
> înlocuiţi în script "sed -e s/..." cu "sed -f <nume-fisier>"
> asta e tot
> PS: la scriptul perl în linia 48 la sfârşit lipseşte un ';', mai departe nu ma-m
> chinuit cu el, mi se pare că omor muşte cu tunul.
> 


Cred că aşa am luat în considerare toate variantele:

sed ':a;s/\([a-zA-Z]\)î\([a-zA-Z]\)/\1â\2/;ta' | sed ':a;s/\([A-Za-z]\)Î\([A-Za-z]\)/\1Â\2/;ta' | sed ':a;s/\(\(R\|r\)e\|\(N\|n\)e\|\(D\|d\)e\(s\|z\)\|\(P\|p\)re\|\(P\|p\)ost\)â/\1î/;ta' | sed ':a;s/\(RE\|\NE\|DE\(S\|Z\)\|PRE\|POST\)Â/\1Î/;ta'

Întîi se înlocuiesc toţi î interiori cu â, respectiv Î cu Â, apoi din
regulile cu prefixe se corectează (â->î şi Â->Î) cuvintele compuse:
prefix + îcuvînt.

Pentru UTF-8:

sed ':a;s/\([a-zA-Z]\)Î\([a-zA-Z]\)/\1â\2/;ta' | sed ':a;s/\([A-Za-z]\)�\([A-Za-z]\)/\1�\2/;ta' | sed ':a;s/\(\(R\|r\)e\|\(N\|n\)e\|\(D\|d\)e\(s\|z\)\|\(P\|p\)re\|\(P\|p\)ost\)â/\1Î/;ta' | sed ':a;s/\(RE\|\NE\|DE\(S\|Z\)\|PRE\|POST\)�/\1�/;ta'

Ar fi bine de pus astea într-un fişier şi de verificat codarea mai
întîi. Asta din cauză că ghilimelele în UTF-8 au ca prim caracter în
8biţi chiar litera â sau  şi conform regulilor s-ar înlocui cu î sau
Î şi caracterul Unicode rezultat ar fi invalid.

Verificarea se poate face cu file. Pe un text 8biţi rezultatul este
"ISO-8859 text" iar pe UTF-8 rezultatul este "UTF-8 Unicode text".

Verificaţi şi voi daca fişierul pre-92_to_post-92.tcsh funcţionează.

Mugurel
#!/bin/tcsh

#Acest script transformă scrierea pre-92 în post-92
#Copyright I. M. Ciobîcă şi E. Petrişor, GPL, 2005

#Întîi se verifică dacă argumentul există

if ( $# != 1 ) then
   echo "Usage: `basename $0` arg1"
   exit 1
endif

#Apoi se verifică dacă fişierul există

if !( -e $1 ) then
   echo "Usage: `basename $0` arg1"
   echo "with arg1 a (text) file."
   exit 2
endif

#Back-up?

cp -p $1 $1.bak

#Acum căutăm ce fel de codare avem, iso-8859-16 sau UTF-8?

if ( `file $1 | grep -i UTF-8 | wc -l` == 1 ) then
   #avem UTF-8
   cat $1.bak | sed ':a;s/\([a-zA-Z]\)Î\([a-zA-Z]\)/\1â\2/;ta' | \
              sed ':a;s/\([A-Za-z]\)Ă?\([A-Za-z]\)/\1Ă?\2/;ta' | \
              sed ':a;s/\(\(R\|r\)e\|\(N\|n\)e\|\(D\|d\)e\(s\|z\)\|\(P\|p\)re\|\(P\|p\)ost\)â/\1Î/;ta' | \
              sed ':a;s/\(RE\|\NE\|DE\(S\|Z\)\|PRE\|POST\)Ă?/\1Ă?/;ta' | \
              sed ':a;s/\([Ss]\)ĂŽnt/\1unt/;ta' | \
              sed ':a;s/\([Ss]\)ânt/\1unt/;ta' | \
              sed 's/SĂ?NT/SUNT/g' | sed 's/SĂ?NT/SUNT/g' > $1

else
   #avem iso-8859-ceva, ceva=2,16
   cat $1.bak | sed ':a;s/\([a-zA-Z]\)î\([a-zA-Z]\)/\1â\2/;ta' | \
                sed ':a;s/\([A-Za-z]\)Î\([A-Za-z]\)/\1Â\2/;ta' | \
                sed ':a;s/\(\(R\|r\)e\|\(N\|n\)e\|\(D\|d\)e\(s\|z\)\|\(P\|p\)re\|\(P\|p\)ost\)â/\1î/;ta' | \
                sed ':a;s/\(RE\|\NE\|DE\(S\|Z\)\|PRE\|POST\)Â/\1Î/;ta' |\
                sed ':a;s/\([Ss]\)[îâ]nt/\1unt/;ta' | \
                sed 's/S[ÎÂ]NT/SUNT/g' > $1
endif

#Asta a fost. "diff $1 $1.bak"?
exit 0

Reply to: