Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από skeftomilos » 04 Ιουν 2006 00:46

@kalxas: Σωστή η επισήμανση σχετικά με τα ΐ και ΰ. Όσο για τα κεφαλαία μπορούν να γίνουν πεζά αλλάζοντας της τελευταία γραμμή από...

Κώδικας: Επιλογή όλων

return text.toUpperCase()
...σε...

Κώδικας: Επιλογή όλων

return text
Το σωστό θα ήταν βέβαια να διατηρηθεί το αρχικό case του κειμένου, π.χ. ΓκουΧ -> GkouCH, αλλά φοβάμαι πώς είναι αρκετά ζόρικο από άποψη υλοποίησης. :whistle:

@panosru: Μπορεί να τρέξει JS μέσω PHP έτσι απλά; Νόμιζα ότι χρειάζεται η εγκατάσταση κάποιου module, τρέχα γύρευε δηλαδή.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από panosru » 04 Ιουν 2006 13:14

kala basika kano ayth thn "maimoudia" :P

Κώδικας: Επιλογή όλων

<script type="text/javascript">
<!--
function translate&#40;text&#41; &#123; 
  var expressions = &#123; 
    'αι'                    &#58; 'ai', 
    'αυ&#40;&#91;θκξπσςτφχψ&#93;|\\s|$&#41;'&#58; 'af$1', 
    'αυ'                    &#58; 'av', 
    'οι'                    &#58; 'oi', 
    'ου'                    &#58; 'ou', 
    'ει'                    &#58; 'ei', 
    'ευ&#40;&#91;θκξπσςτφχψ&#93;|\\s|$&#41;'&#58; 'ef$1', 
    'ευ'                    &#58; 'ev', 
    
    '&#40;^|\\s&#41;μπ'             &#58; '$1b', 
    'μπ&#40;\\s|$&#41;'             &#58; 'b$1', 
    'μπ'                    &#58; 'mp', 
    'ντ'                    &#58; 'nt', 
    'τσ'                    &#58; 'ts', 
    'τζ'                    &#58; 'tz', 
    'γγ'                    &#58; 'ng', 
    'γκ'                    &#58; 'gk', 
    'ηυ&#40;&#91;θκξπσςτφχψ&#93;|\\s|$&#41;'&#58; 'if$1', 
    'ηυ'                    &#58; 'iy', 
    
    'θ'                     &#58; 'th', 
    'χ'                     &#58; 'ch', 
    'ψ'                     &#58; 'ps' 
  &#125; 
  var GR  = 'αάβγδεέζηθιίϊΐκλμνξοόπρσςτυύϋΰφχψωώ' 
  var ENG = 'aavgdeezi.iiiiklmnxooprsstyyyyf..oo' 
  for &#40;var i = 0; i < GR.length; i++&#41; &#123; 
    if &#40;!expressions&#91;GR.charAt&#40;i&#41;&#93;&#41; &#123; 
      expressions&#91;GR.charAt&#40;i&#41;&#93; = ENG.charAt&#40;i&#41; 
    &#125; 
  &#125; 
  text = text.toLowerCase&#40;&#41; 
  for &#40;var expression in expressions&#41; &#123; 
    text = text.replace&#40;new RegExp&#40;expression, 'g'&#41;, expressions&#91;expression&#93;&#41; 
  &#125; 
  return text;//.toUpperCase&#40;&#41; 
&#125;
-->
</script>
<?php

function Greek2GreeklishTranslator &#40;$value&#41;
&#123;
	$value = "<script type=\"text/javascript\">document.write&#40;translate&#40;'&#123;$value&#125;'&#41;&#41;;</script>";
	return &#40;$value&#41;;
&#125;

echo Greek2GreeklishTranslator&#40;"Κολο ελενκτη που μου εφαγεσ τα 20 ευρω!!"&#41;;

?>
mhn gelasei kaneis! :P :kaloe:

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από skeftomilos » 04 Ιουν 2006 16:34

Χε, χε! Καλό αυτό αλλά ο κώδικας τρέχει client-side, δηλαδή η επιστρεφόμενη τιμή δε μπορεί να χρησιμοποιηθεί από την PHP για επιπλέον υπολογισμούς.

Btw η τοποθέτηση στη σελίδα πολλών block <script>...</script> έχει αρνητικές συνέπειες στην performance, γιατί ο browser δημιουργεί κάθε φορά ένα νέο script execution context. Επιπλέον αν πάει κάτι στραβά στην αρχική δημιουργία της ρουτίνας translate, θα δημιουργηθεί από ένα σφάλμα για κάθε <script>...</script> που χρησιμοποιεί τη ρουτίνα. Που στον IE σημαίνει πολλά popup error messages. Ακόμα η επαναλαμβανόμενη χρήση της document.write() είναι άλλος ένας παράγοντας καθυστέρησης του rendering της σελίδας.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από panosru » 05 Ιουν 2006 19:25

xm.. ontos exeis dikio an mporeis ekshghse mou ayto to shmio tou kodika:

Κώδικας: Επιλογή όλων

    if &#40;!expressions&#91;GR.charAt&#40;i&#41;&#93;&#41; &#123; 
      expressions&#91;GR.charAt&#40;i&#41;&#93; = ENG.charAt&#40;i&#41; 
    &#125; 
  &#125; 
  text = text.toLowerCase&#40;&#41; 
  for &#40;var expression in expressions&#41; &#123; 
    text = text.replace&#40;new RegExp&#40;expression, 'g'&#41;, expressions&#91;expression&#93;&#41; 
  &#125; 
gia na to metatrepso se php :D

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από skeftomilos » 06 Ιουν 2006 02:22

Αυτό που συμβαίνει είναι η δημιουργία μίας σειράς regular expressions και των αντίστοιχων string αντικατάστασης, π.χ. /τζ/g -> 'tz'

Οι regular expressions αποθηκεύονται στη μεταβλητή expressions με τη μορφή ενός αντικειμένου JavaScript, που εδώ έχει περισσότερο τη μορφή name-value collection. Το κάθε name περιέχει μία regular expression σε μορφή string, και το αντίστοιχο value είναι το string αντικατάστασης. Το αντικείμενο-συλλογή expressions διατρέχεται με ένα βρόγχο for-in όπου τα names-strings μετατρέπονται σε κανονικά αντικείμενα RegExp, και ακολουθεί αντικατάσταση.

Τώρα που τον ξανακοιτάω σκέφτομαι πώς ο κώδικας είναι optimized για αντικαταστάσεις λίγων μεγάλων κειμένων. Για πολλά μικρά κείμενα δε θα είναι αποτελεσματικός.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
RADICAL
Δημοσιεύσεις: 386
Εγγραφή: 14 Ιούλ 2004 01:07
Τοποθεσία: Athens
Επικοινωνία:

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από RADICAL » 30 Ιουν 2006 20:18

λείπει το "ή" μου φαίνετε :)
Εικόνα

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από panosru » 18 Σεπ 2006 03:31

loipon, topic deyro ekso (anastash)..

exo ton parakato kodika,

Κώδικας: Επιλογή όλων

 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http&#58;//www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>Elot 743</title>
<meta http-equiv="Content-Type" content=
"text/html; charset=iso-8859-7">

<script>

	var cEOF='\x01', cNL='\x0a', cCR='\x0c', cTAB='\x09' ;
   	var ENDWORD = cEOF + cTAB + cNL + cCR + " ,.&#40;!#%^&*&#40;&#41;-_+=~&#91;&#93;\|;&#58;" + '\"' + "'&#123;&#125;<>/?&#41;" ;
	var TESTNEXT = "θκξπσςτφχψ" + ENDWORD;

	var GR2 = "αιαίαυαύειείευεύοιοίουούμπνττζτστςηυηύγγγκγξγχ"
	var EN2 = "aiaiavaveieievevoioiououmpnttztstsiyiynggkgx.."  // γχ->gch

	var GR1 = "αβγδεζηθικλμνξοπρσςτυφχψωάέήίϊΐόύϋΰώ"   //θ -> th, χ-> ch, ψ -> ps
	var EN1 = "avgdezi.iklmnxoprsstyf..oaeiiiioyyyo"

	function toElot743&#40; strX &#41;
	&#123;		
		var rv="";  //return value
		var tmp="", c="",  nextC="",  prevC=".";
		var s = strX.toLowerCase&#40;&#41; + cEOF + cEOF + cEOF;
		var temp3c = s.substring&#40;0,3&#41;;
		var tmp = temp3c&#91;0&#93;;
		var pos, n, i=0;
		
		while &#40; tmp != cEOF &#41; 
		&#123;
			n=1;
			if&#40; tmp >= '\xa2'&#41; /* 162 */ 
			&#123;
				//Πρώτα ψάξε για δίφθογγο και 2πλά γράμματα
			         pos = GR2.indexOf&#40;temp3c.substring&#40;0,2&#41;&#41;
			         if &#40; &#40;pos % 2&#41; == 0&#41; 
					 &#123; 
					 	n=2;
						nextC = temp3c&#91;2&#93;;
						tmp = EN2.substring&#40;pos, pos+2&#41;;
						if &#40;&#40;tmp == "av"&#41; || &#40;tmp == "ev"&#41; || &#40;tmp == "iy"&#41; &#41; 
						&#123;
							if &#40;TESTNEXT.indexOf&#40;nextC&#41;>=0&#41; tmp = tmp&#91;0&#93; + "f"; 
						&#125;
						else if&#40;tmp == ".."&#41; 
						&#123;
							tmp = "nch";
						&#125;
						else if&#40;tmp=="mp"&#41; 
						&#123;
							pos = ENDWORD.indexOf&#40;nextC&#41;;
							if &#40;pos < 0&#41; 
							&#123;
								pos = ENDWORD.indexOf&#40;prevC&#41;;	
							&#125;
							if &#40;pos >= 0&#41; tmp="b";
						&#125;						
					&#125;
				// Απλά/Μονά γράμματα
        			if &#40;n < 2&#41; 
					&#123;
						pos = GR1.indexOf&#40;tmp&#41;;
						if&#40;pos >= 0&#41; 
						&#123;
							c = tmp;
							tmp = EN1&#91;pos&#93;;
							if&#40;tmp == "." &#41; 
							&#123;
								pos = "θχψ".indexOf&#40;c&#41;;
								tmp = "thchps".substring&#40; 2 * pos , 2*pos + 2&#41;;
							&#125;
						&#125;
					&#125;
			&#125;
			//read next
			prevC = temp3c&#91;n-1&#93;;
			rv += tmp;
			i += n;
		    temp3c=s.substring&#40;i, i+3&#41;;
	        tmp = temp3c&#91;0&#93;;
   		&#125;
		return rv;	
	&#125;
	
	function capitalize&#40;strX&#41;  
	&#123;
		var s="", prevC = " ";
		for&#40;var i=0; i<strX.length; i++&#41; 
		&#123;
			c =strX&#91;i&#93;;
			if &#40;ENDWORD.indexOf&#40;prevC&#41; >= 0 &#41; 
			&#123;
		      c = c.toUpperCase&#40;&#41;;
   			&#125;
			else 
			&#123;
				c = c.toLowerCase&#40;&#41;;
			&#125;
 			s += c;
	        prevC = c;
	  &#125;
   	  return  s;
   &#125;
</script>

</head>

<body>
<h1>ΕΛΟΤ 743</h1>
<form>
Ελληνικά&#58;<br>

<textarea name="taGR" cols=
"65" rows="7"></textarea><br>
Elot743&#58;<br>
<textarea name="taEN" cols="65" 
rows="7"></textarea><br><br
>
<input type="reset" value="Καθαρισμός"
>
<input type="button" value="Κεφαλαία" 
onClick="s=this.form.taEN.value; this.form.taEN.value=s.toUpperCase&#40;&#41;;">
<input type="button" value="πεζά" 
onClick="s=this.form.taEN.value; this.form.taEN.value=s.toLowerCase&#40;&#41;;">
<input type="button" value="Κ/πεζά" 
onClick="s=this.form.taEN.value; this.form.taEN.value=capitalize&#40;s&#41;;">
&nbsp;&nbsp;&nbsp;&nbsp;
<input type="button" value="  Μετατροπή σε Elot743  " 
onClick="this.form.taEN.value=toElot743&#40;this.form.taGR.value&#41;">
</form>
</form>

</body>
</html>
ma na mhn leei na paiksei se internet explorer me tpt... :/ ligo help.. :/

episeis, an exete parathrhseis, sxolia, protaseis gia beltioseis dektes! :D

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από skeftomilos » 18 Σεπ 2006 11:10

Ωχ! Έχασα τη μπάλλα. :) Αν καταλαβαίνω καλά ο παραπάνω είναι ένας κανονικός parser και πάει γράμμα-γράμμα. Στη JavaScript οι parsers έχουν συνήθως μέτρια απόδοση, γι αυτό προτιμώ RegExps όπου είναι δυνατό.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από panosru » 18 Σεπ 2006 13:58

nai etsi einai alla o parapano kodikas trexei para poly grhgora omos.. :/

Ta pernei ana 3 gramata :D

@ngel
Δημοσιεύσεις: 31
Εγγραφή: 21 Σεπ 2003 13:20
Τοποθεσία: Κρήτη
Επικοινωνία:

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από @ngel » 07 Μαρ 2008 10:10

Παιδιά, ξέρει κάποιος πως μπορώ να μετατρέψω το % σε 0/0; Η εντολή

else if (inp_char=="%") {return "0/0"}

δε δουλεύει!
Σας ευχαριστώ πάρα πολύ!

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από skeftomilos » 07 Μαρ 2008 16:22

return inp_char.replace(/%/g, '0/0')

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από skeftomilos » 10 Ιούλ 2008 20:27

Βελτίωσα τη μετατροπή σε greeklish ώστε να λαμβάνει υπόψη και τα πεζά-κεφαλαία, και είναι διαθέσιμη online εδώ: Μετατροπέας σύνθετης ελληνικής γραφής σε greeklish

Παράδειγμα output από ένα τυχαία επιλεγμένο κείμενο (Βικιπέδια: Γλωσσικό ζήτημα)

O glossikos dichasmos emfanizetai istorika kata ton 1o aiona p.X. otan oi attikistes eisigagan ti diglossia ston elliniko kosmo, kathos epevalan mia apomimisi tis klasikis attikis, i opoia antiparatethike me tin idi kyriarchi dimodi proforiki. Meta tis kataktiseis tou Megalou Alexandrou, to kratos ton Makedonon vasileon tou yiothetei tin attiki dialekto gia tis dioikitikes, emporikes kai diplomatikes tou anagkes. I attiki dialektos diamorfonetai stadiaka se nea morfi ellinikis glossas, tin Ellinistiki i Koini, i opoia tha kathorisei argotera ti Vyzantini kai nea Elliniki glossa. Oi politikes, thesmikes kai koinonikes allages, i epikratisi tis neas thriskeias, einai oi kyries aities themeliosis kai epikratisis tis Koinis, pou echei ypostei alloioseis toso sti fonitiki oso kai sti morfologia, ti syntaxi kai to lexilogio. Oi Alexandrinoi grammatikoi epinooun tous tonous kai, pistevontas oti me ti chrisi tis attikis tha synechizotan i paradosi sti syngrafi ergon, didaskoun ton attikismo, me apotelesma ti strofi ton logion se ena technito grapto idioma, ti diglossia kai tin epikratisi enos akamptou archaismou metagenestera.

Gia ti grapti kai proforiki metadosi tis didaskalias tou Christianismou chrisimopoieitai archika i Koini. I Palaia Diathiki metafrazetai se aftin kai i Kaini Diathiki grafetai schedon ex oloklirou archika se afti ti glossa, alla argotera oi Treis Ierarches chrisimopoioun ton attikismo ston episimo ekklisiastiko logo gia logous symfiliosis kai exoikeiosis me tin elliniki paideia. Sti synecheia, kata tou vyzantinous chronous, i diglossia, metaxy graptis-omiloumenis, attikis &#8211;koinis synetelese sti choristi tous exelixi. O graptos logos odigeitai se mia proodeftiki syntaktiki stryfnotita, eno o proforikos aplopoieitai fonitika kai morfosyntaktika. Sygchronos eisagontai nees lexeis daneies, toso archaies oso kai apo allous laous, exaitias tou ekchristianismou tous.

MerNion
Δημοσιεύσεις: 10
Εγγραφή: 05 Απρ 2008 17:34

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από MerNion » 20 Αύγ 2008 13:17

Πολύ καλό!
Σόρρυ που θα βγω εκτός θέματος αλλά το αντίστροφο μπορεί να γίνει "εξισου εύκολα"; Μια εφαρμογή (javascript ή php) που να μετατρέπει τα greeklish σε Ελληνικά..

Άβαταρ μέλους
supernet
Honorary Member
Δημοσιεύσεις: 877
Εγγραφή: 22 Μαρ 2001 01:00
Τοποθεσία: Thessaloniki

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από supernet » 14 Ιαν 2009 09:11

skeftomilos έγραψε:Βελτίωσα τη μετατροπή σε greeklish ώστε να λαμβάνει υπόψη και τα πεζά-κεφαλαία, και είναι διαθέσιμη online εδώ: Μετατροπέας σύνθετης ελληνικής γραφής σε greeklish
ΘΕΟΣ :D

Thanks!

cho_fan
Δημοσιεύσεις: 1
Εγγραφή: 22 Ιουν 2009 10:45

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από cho_fan » 22 Ιουν 2009 10:50

skeftomilos έγραψε:Βελτίωσα τη μετατροπή σε greeklish ώστε να λαμβάνει υπόψη και τα πεζά-κεφαλαία, και είναι διαθέσιμη online εδώ: [url=http://users.freestuff.gr/skeftomilos/u ... verter.htm]
Φοβερό. Από εδώ και πέρα θα χρησιμοποιώ αυτό αντί για το σχετικά αργό converter του translatum.

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες