Skip to navigation
Logo Penaz's Area

cat /dev/random > penaz

Un piccolo traduttore Albhed


Se avete giocato a Final Fantasy X o al suo seguito X-2 potrebbe esservi utile questo piccolo programma di traduzione Albhed.

Buongiorno a tutti, se avete giocato a Final Fantasy X o Final Fantasy X-2 non potete non conoscere gli Albhed, riconoscibili per la loro lingua, a prima vista incomprensibile.

Un mio amico mi ha chiesto se era possibile creare un traduttore bidirezionale Italiano - Albhed, dandomi i parametri su cui era basata questa "lingua". La lingua Albhed si basa su un sistema simile al ROT-13 infatti ogni lettera nel linguaggio Albhed corrisponde ad un'altra lettera nell'Italiano. Con l'uso di un dizionario ed un po' di espressioni regolari è possibile costruire un traduttore veloce con pochissime righe di codice.

Ecco il codice completo:

#!/usr/bin/env python
import re
#Il dizionario principale Italiano -> Albhed
sys={"a":"y","b":"p","c":"l","d":"t","e":"a","f":"v","g":"k","h":"r","i":"e","j":"z","k":"g","l":"m","m":"s","n":"h","o":"u","p":"b","q":"x","r":"n","s":"c","t":"d","u":"i","v":"j","w":"f","x":"q","y":"o","z":"w"," ":" "}
#Perchè faticare per riscrivere il dizionario? Facciamolo fare a Python
sys2={sys[x]:x for x in sys}
# ---- Inizio del programma ----
print "albhed Translator - By Penaz"
valid=False
global ch
while (not valid):
    print 90*"-"
    print "1) Italiano -> Albhed"
    print "2) Albhed -> Italiano"
    print "3) Esci"
    print ""
    ch=str(raw_input("Inserire l'operazione da effettuare: "))
    try:
        ch=int(ch)
        if ch==1 or ch==2 or ch==3:
            valid=True
    except:
        print "Opzione non valida"
if ch!=3:
    string=str(raw_input("Inserire la frase da tradurre: ")).lower()
    s2=""
print ""
if ch==1:
    for x in string:
        if re.search("\W",x):    #Trova tutti i caratteri che non sono lettere
            s2+=x     #E attaccali
        else:
            s2+=sys[x]     #Altrimenti traduci
    print "Traduzione: " +s2
elif ch==2:
    for x in string:
        if re.search("\W",x):
            s2+=x
        else:
            s2+=sys2[x]
    print "Traduzione: " +s2
elif ch==3:
    exit()

Questo programma è estremamente grezzo, ma fa il suo lavoro.

Buon Divertimento a tutti!

Saluti e alla prossima!

Penaz