Kenneth Dammyr Skrevet 22. oktober 2005 Del Skrevet 22. oktober 2005 Hei Jeg fortsetter min utvidelse av programmeringens verden og javascript ser ut som kan bli det nye store. Enkelt, samtidig som det er masse festlige muligheter. Det jeg skal lage nå er en webside hvor du skriver inn en tekst på bokmål. Og så kommer den ut på nynorsk. Selvsagt ikke noe perfekt nynorsk, men jeg ser for meg at den gjør om enkle ord som: "gutter" til "gutar" osv. Jeg har sett litt på websider som gjør det samme. For eksempel Freetranslation.com og denne siden. Det jeg ser er de er laget med langt mer avanserte løsninger. Det ser ut for meg som de henter oversettelsen fra et annet dokument/database. En slik løsning ønsker jeg ikke. Men W3schools har svaret. Nesten. <script type="text/javascript"> var str="Tre store gutter" document.write(str.replace(/gutter/,"gutar")) </script> Her har vi kjernen i det jeg søker. Men, det er jo flere ord i språket enn gutter. Jeg vil oversette mange flere i samme slengen. Så spørsmålet er enkelt: Finnes det et tegn eller lignende jeg kan sette inn slik at jeg kan legge inn flere kriterier? Evt. andre måter å gjøre dette enkelt på. Antakelig vil jeg få behov for å implementere dette i en tekstboks etterhvert, men først må jeg klare dette. På forhånd takk! Lenke til kommentar
Inge_aning Skrevet 24. oktober 2005 Del Skrevet 24. oktober 2005 Lope en array med ordpar Hei Jeg fortsetter min utvidelse av programmeringens verden og javascript ser ut som kan bli det nye store. Enkelt, samtidig som det er masse festlige muligheter. Det jeg skal lage nå er en webside hvor du skriver inn en tekst på bokmål. Og så kommer den ut på nynorsk. Selvsagt ikke noe perfekt nynorsk, men jeg ser for meg at den gjør om enkle ord som: "gutter" til "gutar" osv. Jeg har sett litt på websider som gjør det samme. For eksempel Freetranslation.com og denne siden. Det jeg ser er de er laget med langt mer avanserte løsninger. Det ser ut for meg som de henter oversettelsen fra et annet dokument/database. En slik løsning ønsker jeg ikke. Men W3schools har svaret. Nesten. <script type="text/javascript"> var str="Tre store gutter" document.write(str.replace(/gutter/,"gutar")) </script> Her har vi kjernen i det jeg søker. Men, det er jo flere ord i språket enn gutter. Jeg vil oversette mange flere i samme slengen. Så spørsmålet er enkelt: Finnes det et tegn eller lignende jeg kan sette inn slik at jeg kan legge inn flere kriterier? Evt. andre måter å gjøre dette enkelt på. Antakelig vil jeg få behov for å implementere dette i en tekstboks etterhvert, men først må jeg klare dette. På forhånd takk! 5044967[/snapback] Lenke til kommentar
Kenneth Dammyr Skrevet 24. oktober 2005 Forfatter Del Skrevet 24. oktober 2005 Jeg kan så og si ingenting om dette. Så array med ordpar sier meg lite. Lyst til å utdype? Lenke til kommentar
Me sjøl Skrevet 31. oktober 2005 Del Skrevet 31. oktober 2005 Spørs om det ikke er lettere å gjøre dette serverside. F.eks. i php: <?php /* * En liste med ord i formatet: * $ord['gutter'] = 'gutar'; */ include('ord.php'); $text = $_POST['text']; // Fra et tekstfelt kalt "text" i en form $splittet = preg_split("/\s+/", $text); // Splitt i ord foreach ($splittet as $ordet) { foreach ($ord as &$bokmaal => &$nynorsk) { str_replace($bokmaal, $nynorsk, $ordet); // Erstatt hvert bokmålord med nynorskord } } $tekst = implode(' ', $splittet); echo "<h2>Oversatt tekst:</h2>\n<p>$tekst</p>"; ?> Om du absolutt vil gjøre dette med Javascript, kan jeg ikke gi deg noe konkret forslag. Da blir du nødt til å splitte teksten til ord, antagelig slik: var splittet = tekst.split(/\s+/) // Loop gjennom ordene med foreach (var ord in splittet) // For hvert ord, loop gjennom en liste over nynorske ord // Replace så bokmålordet med nynorsk ord // Oversimplisert Dessuten skulle det ikke forundre meg om replace kan ta arrays som parametre, så du kan gjøre noe slikt: var str = "tre store gutter" str.replace(["gutter", "andrebokmålord"], ["gutar", "andreordpånynorsk"]) Lenke til kommentar
dabear Skrevet 31. oktober 2005 Del Skrevet 31. oktober 2005 (endret) string.replace tar desverre bare imot to strenger som parametere. Viss du bruker «/tekst/» , «/text/i» osv som første, gjør du et regular expression søk. Dropp dét, og bruk strings for vanlig replace. Husk å sørge for at de to arraysene har like mange keys string = 'alle guttene spiser mat, før de så går hjem og sover i husene sine' bokmaal = new Array('gutter','de', 'husene', 'sover','hjem') newNorwegian = new Array('guttar','dei', 'husa', 'søv','heim') len = bokmaal.length for(x=0; x > len; x++) { string = string.replace(bokmaal[x], newNorwegian[x]) } Endret 31. oktober 2005 av dabear Lenke til kommentar
Kenneth Dammyr Skrevet 31. oktober 2005 Forfatter Del Skrevet 31. oktober 2005 (endret) That's it? Så enkelt!? ... ... Dere får unskylde min manglende kunnskap om emne, men når jeg gjør slik: <body> <script language="javascript"> string = 'alle guttene spiser mat, før de så går hjem og sover i husene sine' bokmaal = new Array('gutter','de', 'husene', 'sover','hjem') newNorwegian = new Array('guttar','dei', 'husa', 'søv','heim') len = bokmaal.length for(x=0; x > len; x++) { string = string.replace(bokmaal[x], newNorwegian[x]) } </script> Da kommer det ingenting... Endret 31. oktober 2005 av kennethdammyr Lenke til kommentar
dabear Skrevet 31. oktober 2005 Del Skrevet 31. oktober 2005 Nå har jeg ikke testa koden, kan være flere feil, men du må ta en document.write av string (viss du bruker html), eller .appendChild(document.createTextNode(string)) (xhtml eller html) Lenke til kommentar
Kenneth Dammyr Skrevet 1. november 2005 Forfatter Del Skrevet 1. november 2005 Slik altså? <script language="javascript"> string = 'alle guttene spiser mat, før de så går hjem og sover i husene sine' bokmaal = new Array('gutter','de', 'husene', 'sover','hjem') newNorwegian = new Array('guttar','dei', 'husa', 'søv','heim') len = bokmaal.length for(x=0; x > len; x++) { string = string.replace(bokmaal[x], newNorwegian[x]) } document.write ("newNorwegian()") </script> (Hvordan får skriver jeg at en string skal vises?) Hvis dette funker blir jeg glad! Lenke til kommentar
dabear Skrevet 2. november 2005 Del Skrevet 2. november 2005 <html> <head> <script type="text/javascript"> string = 'alle guttene spiser mat, før de så går hjem og sover i husene sine' bokmaal = new Array('guttene','de', 'spiser', 'husene', 'sover','hjem') newNorwegian = new Array('gutane','dei', 'eter', 'husa', 'søv','heim') len = bokmaal.length for(x=0; x < len; x++) { string = string.replace(bokmaal[x], newNorwegian[x]) } document.write (string) </script> </head> <body> </body> </html> Men helst slik: <html> <head> <script type="text/javascript"> function changeLanguage(HTMLId) { elem = document.getElementById(HTMLId) string = elem.childNodes[0].nodeValue bokmaal = new Array('guttene','de', 'spiser', 'husene', 'sover','hjem') newNorwegian = new Array('gutane','dei', 'et', 'husa', 'søv','heim') len = bokmaal.length for(x=0; x < len; x++) { string = string.replace(bokmaal[x], newNorwegian[x]) } //fjerner teksten removeChildren(elem) //ny tekst elem.appendChild(document.createTextNode(string)) } function removeChildren(id) { try { while(id.childNodes) { id.removeChild(id.childNodes[0]) } }catch(e){} } </script> </head> <body onload="changeLanguage('dynamicContainer')"> <div id="dynamicContainer"> alle guttene spiser mat, før de så går hjem og sover i husene sine </div> </body> </html> Litt mer kode men Lenke til kommentar
Kenneth Dammyr Skrevet 2. november 2005 Forfatter Del Skrevet 2. november 2005 Tusen takk! Det fungerte fint og jeg så også lønnsomheten med den andre metoden din. Her er en ekstremt tidlig beta: Link! Lenke til kommentar
Kenneth Dammyr Skrevet 2. november 2005 Forfatter Del Skrevet 2. november 2005 Da har jeg jobbet litt mer med den. Og problemene begynner å komme. Det er to saker som er ganske sentrale. 1. Den er veldig sensitiv og oversetter ikke bare enkle ord, men ord som er inni ord. Eksempel: Navnet "Kenneth". Den gjør da om "en" til "ein". Resultatet blir "Keinneith". Altså vil jeg gjøre slik at den kun tar ordene når de står alene og ikke inni andre ord. 2. Skriver man et ord med stor bokstav vil den ikke oversette med mindre jeg skriver inn oversettelsen også med store bokstaver. Er det mulig å gjøre oversettelsen uavhengig av størrelsen på bokstavene? Takk for all hjelp så langt. Tjenesten ligger her: nynorsk.moo.no Lenke til kommentar
dabear Skrevet 2. november 2005 Del Skrevet 2. november 2005 Da har jeg jobbet litt mer med den. Og problemene begynner å komme. Det er to saker som er ganske sentrale. 1. Den er veldig sensitiv og oversetter ikke bare enkle ord, men ord som er inni ord. Eksempel: Navnet "Kenneth". Den gjør da om "en" til "ein". Resultatet blir "Keinneith". Altså vil jeg gjøre slik at den kun tar ordene når de står alene og ikke inni andre ord. Hvordan definerer du et ord? Jo for at det skal være et ord, må det opptre som noen bokstaver, fulgt av et mellomrom, komma,eller et annet tegn. Skal du bare erstatte ord som er fulgt av et mellomrom, kan du gjøre string = string.replace(bokmaal[x]+ ' ', newNorwegian[x]+ ' ') Men du må nok bruke regex for å matche andre tegn. 2. Skriver man et ord med stor bokstav vil den ikke oversette med mindre jeg skriver inn oversettelsen også med store bokstaver. Er det mulig å gjøre oversettelsen uavhengig av størrelsen på bokstavene? Takk for all hjelp så langt. Tjenesten ligger her: nynorsk.moo.no 5096869[/snapback] Da må du gå over til regex igjen, med modifieren i for å få case-insensitive replace, uansett er dette en jobb for et serverside språk; i php kan du fks bruke str_ireplace, som er case-insensitiv søk uten regex Lenke til kommentar
Kenneth Dammyr Skrevet 2. november 2005 Forfatter Del Skrevet 2. november 2005 (endret) Dette med store bokstaver var vanskelig. Men det er mulig jeg klarer å lage en hjemmelagd løsning hvor jeg samtidig kopierer alle ordene, gjør om til stor forbokstav og limer inn igjen. Det ordner seg. Løsningen for å unngå at "Kenneth" ble "Keinneith" fungerte halveis. Av en eller anne grunn fungerer det bare med "en", ikke med "et". EDIT: Litt tenking og jeg finner ut at det er jo selvfølgelig fordi "et" så ofte ligger på slutten av ordet. Og da gjelder jo det samme for "en". "Stolen" blir til "stolein" osv. Endret 2. november 2005 av kennethdammyr Lenke til kommentar
Kenneth Dammyr Skrevet 3. november 2005 Forfatter Del Skrevet 3. november 2005 Nå har jeg løst begge problemene på med hjemmelagde løsninger. Jeg la inn slik: string = string.replace(' ' + bokmaal[x]+ ' ', ' ' + newNorwegian[x]+ ' ') Dermed tar den kun enkeltstående ord. Store bokstaver har jeg løst litt mer kreativt. Jeg lagde et Excel-dokument som har funksjoner slik at jeg limer inn alle ordene et sted og får ut en versjon med stor forbokstav. Da er det bare å lime det inn i php-fila igjen. Dermed begynner ting å fungere bra. Takk for hjelpa! http://nynorsk.moo.no Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå