Skip to content

Commit

Permalink
Translations
Browse files Browse the repository at this point in the history
  • Loading branch information
roelfjan committed Dec 20, 2023
1 parent ff3e9aa commit 17646a5
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 16 deletions.
15 changes: 9 additions & 6 deletions src/HaagsTranslator.Tests/TranslatorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -88,18 +88,18 @@ public class TranslatorTests
[TestCase("Ik heb alleen vijf jaar zandbak, nou en?", "Ik hep enkelt vèf jaah zandbak, nâh en?")]
[TestCase("vliegtuig Waar literatuur orgineel kinderboekenmuseum oudste ontmoet enkele ", "vliegtùig Waah literatuâh oâhgineil kindâhboekemuseijum âhdste ontmoet enkele ")]
[TestCase("ver vers tour kopje tradities kidstips behulp sport deze ", "veâh vegs toeâh koppie tradisies kindâhtips behullep spogt deize ")]
[TestCase("festivals hofvijver greep Vermeers bekende beker voorhoofd toerist audiovisueel verkeersaderlating reserveren ", "festivals hofvèvâh greip Vemeâhs bekende beikâh voâhhauf toeris âhdiauviseweil vekeâhsadâhlating reisâhvere ")]
[TestCase("festivals hofvijver greep Vermeers bekende beker voorhoofd toerist audiovisueel verkeersaderlating reserveren ", "festivals hofvèvâh greip Vemeâhs bekende beikâh voâhhauf toeris âhdiauviseweil vekeâhsadâhlating reisevere ")]
[TestCase("highlights menu see zorgen omgeving boulevard boulevardkrant ideaal platform vormgeving externe depot warm ", "haailaaits menu sie zorrage omgeiving boelevâh boelevâhkrant ideiaal platforrum vorremgeiving eksterne deipau warrem ")]
[TestCase("huisjes food fastfood 't tegenover station stijl ", "hùissies foet fastfoet ut teigenauvâh stasion stèl ")]
[TestCase("huisjes food fastfood 't tegenover station stijl ", "hùissies foet fasfoet ut teigenauvâh stasion stèl ")]
[TestCase("This is The Hague jeugd strand strandpaviljoen lunchroom Uitgaanscentrum Outdoor outdoor", "Dis is De Heek jeug strand strandpavejoen lunsroem Ùitgaanscentrum Âhtdoâh âhtdoâh")]
[TestCase("Restaurant shopping theater Jeugdprijs Last-minute ticketshop Normale prijs Overige Cabaret", "Resterant sjopping theijatâh Jeugprès Lasminnut tikketsjop Noâhmale près Auverige Kabberet")]
[TestCase("Circus Culinair Tentoonstelling Folklore Jazz jazz Moderne dans Hedendaagse Film Musical", "Cirrekus Kulinèâh Tetaunstelling Folklore Djes djes Maudèrrene dans Heidedaagse Fillem Musikol")]
[TestCase("Niet-westerse dans Toneel Poppentheater lezing Show beurs workshop events Locaties", "Niet westagse dans Tauneil Poppetheijatâh leizing Sjow beuâhs wurreksjop ievents Laukasies")]
[TestCase("Strand & Buiten Concerten Shoppen Excursies Dit weekend Vandaag Advertentie Reserveer nu", "Strand & Bùitûh Konsegte Sjoppûh Ekskugsies Dit wiekend Vedaag Advâhtensie Reisâhveâh nâh")]
[TestCase("Strand & Buiten Concerten Shoppen Excursies Dit weekend Vandaag Advertentie Reserveer nu", "Strand & Bùitûh Konsegte Sjoppûh Ekskugsies Dit wiekend Vedaag Advâhtensie Reiseveâh nâh")]
[TestCase("Data & tickets Tentoonstellingen Extra informatie must see Privacy policy", "Data & tikkets Tetaunstellinge Ekstra infoâhmasie mus-sie Praaivesie pollesie")]
[TestCase("Kun je VVV-informatiepunten stadswandelingen eindelijk per ter bied informatiebrochures prof professor ", "Kajje VVV-infoâhmasiepunte staswandelinge èndelijk peâh teâh biedt infoâhmasiebrausjures prof praufessor ")]
[TestCase("souvenirs cadeau bureau vervoersbewijzen bibliotheek touchscreen actuele Palace medewerkers werkdagen ", "soevenieâhs kado buro vevoeâhsbewèze biebeleteik tatskrien akteweile Pellus meidewerrekâhs werrekdage ")]
[TestCase("Gevers gevestigd kunt Herenstraat aankomsthal airport Airport vele gele waarin speciale begeleiding Telefonische ", "Geivâhs gevestag ken Herestraat ankompshal èâhpogt Èâhpogt veile geile waarin speiciale begelèding Telefauniese ")]
[TestCase("Gevers gevestigd kunt Herenstraat aankomsthal airport Airport vele gele waarin speciale begeleiding Telefonische ", "Geivâhs gevestag ken Herestraat ankompshal èâhpogt Èâhpogt veile geile waarin speiciale begelèding Teilefauniese ")]
[TestCase("voorjaarsvakantie Nederland Favorite koninklijke event evenementen internationale januari februari ", "voâhjaahsvekansie Neidâhland Favverietûh kauninklijke ievent eivenemente intâhnasjaunale jannewarie feibruwarie ")]
[TestCase("movies that literatuurfestival favoriete cultureel Ook gemeentemuseum collectie Hieronymus Dance beroemdste winkelen ", "moevies det literatuâhfestival favverietûh kultereil Auk gemeintemuseijum kolleksie Hieraunimus Dens beroempste winkele ")]
[TestCase("flagshipstores Bijenkorf talloze vintage Shop till you drop marktstraat yoga Bergen chique Corona eigentijds ", "fleksjipstoâhs Bèjekorref tallauze vintuts Sjop til joe drop marrekstraat jauga Berrege sjieke Korauna ègetèds ")]
Expand All @@ -109,7 +109,9 @@ public class TranslatorTests
[TestCase("Zinnenprikkelende producten verser dan vers kwalitatieve reeds overgebleven instaprondleiding, je zult je Beauty & the Beast", "Zinneprikkelende praudukte vegsâh dan vegs kwalitatieve reids auvâhgebleive instaprondlèding, je zal je ège Bjoetie & de Bies")]
[TestCase("modeontwerper bezienswaardigheden relaxen markante bloederigste originele dichtbij spectaculaire stork vegetarisch Cuisine cuisine volgens", "maudeontwerrepâh bezienswaahdigheide rielekse magkante bloedâhragste oâhgineile dichbè spektakelère storrek veigetaries Kwiesien kwiesien volleges")]
[TestCase("Tripadvisor skiën Overnachten SEA LIFE Europese Nachtje Bites Crowne .com instituut sterker", "Tripetfaaisoâh skieje Auvâhnachte SIELÈF Euraipeise Nachie Bèts Kraun .kom instituut sterrekâh")]
[TestCase("bospaddenstoelen saus uitwaaien roots bezoekerscentrum strandseizoen plezierig dertig beach verder parkeervergunning vertegenwoordiger tussenletter broer automatiek", "bospaddestoele sâhs ùitwaaie roets bezoekâhscentrum strandsèzoen plezieâhrag deâhtag bietsj veâhdahs pagkeâhvegunning veteigewoâhdegâh tusselettâh broeâh âhtaumatiek")]
[TestCase("bospaddenstoelen saus uitwaaien roots bezoekerscentrum", "bospaddestoele sâhs ùitwaaie roets bezoekâhscentrum")]
[TestCase("strandseizoen plezierig dertig beach", "strandsèzoen plezieâhrag deâhtag bietsj")]
[TestCase("verder parkeervergunning vertegenwoordiger tussenletter broer automatiek", "veâhdahs pagkeâhvegunning veteigewoâhdegâh tusselettâh broeâh âhtaumatiek")]
[TestCase("cultuurschatten übergezellige dieren vooral teams theatervoorstellingen wandelen kenmerken karakteristieke kleding supermarktjes Eten koffietentjes Zeeheldenkwartier borrelen", "kultuâhschatte übâhgezellage diere voâhal tiems theijatâhvoâhstellinge wandele kenmerreke karaktâhristieke kleiding supâhmarrekkies Eite koffietentjes Zeiheldekwagtieâh borrele")]
[TestCase("dagvers gehele algoritme beginselen hen goedkeuring euro bijbehorende ontworpen stuks levendige Omdat nou", "dagvegs geheile algauritme beginsele hen goedkeuâhring euâhro bèbehoâhrende ontworrepe stuks leivendege Omdat nâh")]
[TestCase("Kijkduin Zuiderstrand genieten periode bedenken hieronder routes stap je Iedere Oud", "Kèkdùin Zùidâhstrand geniete periaude bedenke hieâhondâh roetes stappie Iedere Âhd")]
Expand All @@ -123,7 +125,8 @@ public class TranslatorTests
[TestCase("bouwt kern Broodje bal expert vuilcontainer energie uitgeverij geselecteerd positie boorplatform biersoort elke tegelijkertijd persbijeenkomst der", "bâht kerren Beschùitstùitâh expeâh vùilkonteinâh einegie ùitgeiverè geseilekteâhd pausisie boâhplatforrum bieâhsoâht elleke tegelijkertèd pegsbèeinkomps deâh")]
[TestCase("museum branch elektronica vacatures toiletten Toilet superslimme nerds nerd ventures vergeten intern Oranje oranje doneren poule Nederlands account speler", "museijum bransj eilektraunika vakketures pleis Plei supâhslimme neuâhds neuâhd ventjâhs vegeite intern Auranje auranje daunere poel Neidâhlans akkâhnt speilâh")]
[TestCase("Young young You zone levert spijker hals gegaan kledder onderneming vriendelijke vertelde verpakking rundergehakt stenen officiële ondertussen meteen", "Jong jong Joe zone leivâht spèkâh hals gegaan kleddâh ondâhneiming vriendâhlijke vetelde vepakking rundâhgehak steine offesjeile ondâhtusse metein")]
[TestCase("premier provinciale resultaat Verstappen onderbreking regeren groener betrokkenen", "premjei prauvinsjale reisultaat Vestappe ondâhbreiking regere groenâh betrokkene")]
[TestCase("premier provinciale resultaat Verstappen onderbreking regeren groener betrokkenen televisie Amsterdam moeder tijgermug reserve reservekeeper volledige", "premjei prauvinsjale reisultaat Vestappe ondâhbreiking regere groenâh betrokkene teilevisie Amstâhdam moedâh tègâhmug reserreve reserrevekiepâh volleidage")]
[TestCase("fenomenale kerstfeest Valkenswaard", "feinaumenale kegsfeis Vallekeswaahd")]
public void Given_Dutch_Translates_To_Haags(string dutch, string expectedTranslation)
{
var result = Translator.Translate(dutch);
Expand Down
30 changes: 20 additions & 10 deletions src/HaagsTranslator/Translator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@ public static class Translator
new []{ "(?<![t])ain", "ein"}, // 'trainer', geen 'quarantaine'
new []{ "(?<![èijhmr])ds(?![ceèt])", "s" }, // moet na 'ee','godsdienstige', 'gebedsdienst', geen 'ahdste', 'boodschappen', 'beroemdste', 'eigentijds', 'weidsheid', 'reeds', 'strandseizoen', 'wedstrijd', 'nerds'
new []{ "(?<![eh])ens\\b", "es"}, // 'ergens', geen 'weleens', 'hands/hens'
new []{ "kens", "kes"}, // 'Valkenswaard'
new []{ "(D|d)ance", "$1ens" }, // moet na '-ens'
new []{ "(?<![ hi])eden\\b", "eije"}, // geen 'bieden'. 'bezienswaardigheden'
new []{ "(?<![ bgi])eden", "eide" }, // 'hedendaagse', geen 'bedenken'
Expand All @@ -232,21 +233,26 @@ public static class Translator
new []{ "elden", "elde"}, // 'zeeheldenkwartier'
new []{ "oeter", "oetâh" }, // 'Zoetermeer', moet voor 'kermis'
new []{ "erm\\b", "errum"}, // 'scherm', moet voor 'kermis'
new []{ "(?<![ieoptvV])er(m|n)", "erre$1"}, // kermis', geen 'vermeer', 'vermoeide', 'toernooi', 'externe', 'supermarkt', termijn, 'hierna'
new []{ "(?<![iegoptvV])er(m|n)", "erre$1"}, // kermis', geen 'vermeer', 'vermoeide', 'toernooi', 'externe', 'supermarkt', termijn, 'hierna', 'tijgermug'
new []{ "(?<![edktv])(e|E)rg(?!ez|i)", "$1rreg"}, // 'kermis', 'ergens', geen 'achtergelaten', 'neergelegd', 'overgebleven', 'ubergezellige', 'bekergoal', 'energie', 'rundergehakt'
new []{ "ber(?![eoiuaâè])", "bâh"}, // 'ubergezellige', moet na '-erg', geen 'beraden'
new []{ "(?<![i])(g|b)er(?![eoiuaâè])", "$1âh"}, // 'tijgermug', 'ubergezellige', moet na '-erg', geen 'beraden', 'vertegenwoordiger'
new []{ "(P|p)ers(?![l])", "$1egs"}, // 'pers', geen 'superslimme'
new []{ "(K|k)erst", "$1egs"}, // 'kerstfeest'
new []{ "(?<![e])(t|V|v)ers(?![clt])", "$1egs"}, // 'vers', 'personeel', 'versie', 'diverse', geen 'gevers', 'verscheen', 'eerste',
new []{ "(G|g)eve(r|n)", "$1eive$2" }, // 'Gevers', moet na 'vers', geen 'gevestigd'
new []{ "(t|w|W)ene", "$1eine" }, // 'stenen', 'wenen'
new []{ "renstr", "restr" }, // 'herenstraat' (voor koppelwoorden)
new []{ "(?<![eIio])eder", "eider" }, // 'Nederland', geen 'iedereen', 'bloederige', 'Iedere'
new []{ "(?<![eiop])ers\\b", "âhs"}, // 'klinkers', geen 'pers', 'personeel'
new []{ "(H|h)er(?![erp])", "$1eâh" }, // 'herzien', 'herstel', geen 'herenstraat', 'scherm', 'scherp', moet voor 'ers'
new []{ "\\b(K|k)ers", "$1egs"}, // 'kerstfeest'
new []{ "(?<![vV])ers(c|t)", "âhs$1"}, // 'eerste', 'bezoekerscentrum', geen 'verschaffen', 'Verstappen'
new []{ "erwt", "erret" }, // 'erwtensoep'
new []{ "(?<![eo])eci", "eici" }, // 'speciaal'
new []{ "(?<![Bbg])ese", "eise" }, // 'reserveer', geen 'beseffen', 'geselecteerd'
new []{ "eserve(e|r)", "eiserve$1" }, // 'reserveer', 'reserveren'
new []{ "erve\\b", "erreve" }, // 'reserve',
new []{ "ervek", "errevek" }, // 'reservekeeper',
new []{ "serv", "sev" }, // 'reserveren',
new []{ "eiser", "eisâh"}, // 'reserveer'
new []{ "eur\\b", "euâh"}, // worden eindigend op 'eur', zoals 'deur', 'gouveneurlaan', geen 'kleuren'
new []{ "eur(?![eio])", "euâh"}, // worden eindigend op 'eur', zoals 'deur', 'gouveneurlaan', geen 'kleuren', 'goedkeuring', 'euro
Expand All @@ -256,7 +262,7 @@ public static class Translator
new []{ "elk\\b", "ellek"}, // 'elk'
new []{ "(?<![og])ega", "eige"}, // 'negatief', geen 'toegang', 'gegaan'
new []{ "(E|e)xt", "$1kst" }, // 'extra'
new []{ "(H|h|n)ele", "$1eile"}, // 'gehele', 'hele', 'originele'
new []{ "(H|h|n|T|t)ele", "$1eile"}, // 'gehele', 'hele', 'originele', 'televisie'
new []{ "\\b(E|e)le", "$1ile"}, // 'elektronica'
new []{ "ffis", "ffes"}, // 'officiele'
new []{ "(G|g)ese", "$1esei"}, // 'geselecteerd'
Expand All @@ -267,11 +273,11 @@ public static class Translator
new []{ "(?<![diokrs])ele(n|m|r)", "eile$1"}, // 'helemaal', geen 'enkele', 'winkelen', 'wandelen', 'borrelen', 'beginselen'
new []{ "(B|b)eke(?![n])", "$1eike"}, // 'beker', geen 'bekende'
new []{ "(B|b)ene(?![v])", "$1eine" }, // 'benen', geen 'beneveld'
new []{ "(?<![ioBbg])eke", "eike"}, // geen 'aangekeken' op 'gek', wel 'kek'
new []{ "(?<![ioBbg])eke(?![e])", "eike"}, // geen 'aangekeken' op 'gek', wel 'kek', 'reservekeeper'
new []{ "(?<![r])rege(?![r])", "reige" }, // 'gekregen', geen 'berrege', 'regeren'
new []{ "(T|t)ege(?![l])", "$1eige" }, // 'tegen', geen 'tegelijkertijd'
new []{ "(?<![bBIiort])e(g|v|p)e(l|n|m| )", "ei$1e$2" }, // aangegeven, 'leverde', geen 'geleden', 'uitspreken', 'geknepen', 'goeveneur', 'verdiepen', 'postzegels', 'begeleiding', 'berregen', 'tegelijkertijd'
new []{ "dige", "dege"}, // 'vertegenwoordiger', moet na 'ege'
new []{ "(?<![e])dige", "dege"}, // 'vertegenwoordiger', moet na 'ege', geen 'volledige'
new []{ "(L|l)ever", "$1eiver"}, // 'leverde'
new []{ "alve\\b", "alleve"}, // 'halve', moet na 'aangegeven'
new []{ "\\b(K|k)en\\b", "$1an"}, // moet voor -en
Expand All @@ -291,7 +297,9 @@ public static class Translator
new []{ "(E|e)x(c|k)", "$1ksk" }, // 'excursies'
new []{ "(?<![ s])teri", "tâhri" }, // 'karakteristieke'
new []{ "(?<![ sS])ter(?![aeirn])", "tâh"}, // 'achtergesteld', geen 'beluisteren', 'literatuur', 'sterren', 'externe', 'sterker', 'karakteristieke'
new []{ "feli", "feili" }, // 'gefeliciteerd'
new []{ "sterd", "stâhd"}, // 'Amsterdam'
new []{ "(F|f)eli", "$1eili" }, // 'gefeliciteerd'
new []{ "(F|f)en(a|o)", "$1ein$2" }, // 'fenomenale'
new []{ "(I|i)ndeli", "$1ndeili" }, // 'indeling', geen 'eindelijk', 'wandelingen'
new []{ "(f|p)t\\b", "$1"}, // 'blijft', 'betrapt'
new []{ "\\b(N|n)iet\\b", "$1ie" }, // 'niet', geen 'geniet'
Expand Down Expand Up @@ -327,6 +335,7 @@ public static class Translator
new []{ "\\blijk\\b", "lèk" }, // 'lijk' , geen 'eindelijk' ('-lijk')
new []{ "(D|d|K|k|p|R|r|W|w|Z|z)ijk", "$1èk"}, // 'wijk', geen '-lijk'
new []{ "ij([dgslmnftpvz])", "è$1"}, // 'knijp', 'vijver', 'stijl', 'vervoersbewijzen', geen '-lijk'
new []{ "edig", "eidag"}, // 'volledige'
new []{ "(?<![euù])ig\\b", "ag"}, // geen 'kreig', 'vliegtuig'
new []{ "tigdù", "tagdù"}, // 'vijftigduizend'
new []{ "lige\\b", "lage"}, // 'gezellige'
Expand Down Expand Up @@ -398,13 +407,13 @@ public static class Translator
new []{ "\\b(N|n)u\\b", "$1âh"},
new []{ "ny", "ni" }, // 'hieronymus'
new []{ "\\bmad", "med"}, // 'madurodam'
new []{ "oeder", "oedâhr" }, // 'bloederigste'
new []{ "oederi", "oedâhri" }, // 'bloederigste'
new []{ "(?<![v])(a|o)(rdt|rd)(?![eû])", "$1gt"}, // wordt, word, hard, geen 'worden', 'wordûh', 'boulevard'
new []{ "ord(e|û)", "ogd$1"}, // 'worden'
new []{ "(N|n)(|o)od", "$1aud"}, // 'noodzakelijk'
new []{ "nirs\\b", "nieâhs" }, // 'souvenirs'
new []{ "l(f|k|m|p)(?![aeou])", "lle$1"}, // 'volkslied', 'behulp', geen 'elkaar', 'doelpunten', 'IJsselmeer', 'vuilcontainer'
new []{ "(e|o)lk(?![a])", "$1llek"}, // 'volkslied','elke', geen 'elkaar'
new []{ "(a|e|o)lk(?![a])", "$1llek"}, // 'volkslied','elke', 'Valkenswaard', geen 'elkaar'
new []{ "(F|f)olleklore", "$1olklore" },
new []{ "o(c|k)a", "auka" }, // 'locaties'
new []{ "(?<![o])oms", "omps" }, // 'aankomsthal'
Expand Down Expand Up @@ -441,7 +450,7 @@ public static class Translator
new []{ "(p|P)rofe", "$1raufe" }, // 'professor', 'professioneel'
new []{ "ersch", "esch"}, // 'verschijn'
new []{ "(A|a)rme", "$1rreme"}, // 'arme'
new []{ "re(s|tr)(e|o)", "rei$1$2"}, // 'resoluut', 'retro', 'reserveren'
new []{ "re(s|tr)o", "rei$1o"}, // 'resoluut', 'retro'
new []{ "palè", "pelè"}, // voor Vredespaleis
new []{ "(R|r)elax", "$1ieleks" },
new []{ "(R|r)estâhrant", "$1esterant"},
Expand All @@ -460,6 +469,7 @@ public static class Translator
new []{ "st(b|d|g|h|j|k|l|m|n|p|v|w|z)", "s$1"}, // 'lastpakken', geen 'str'
new []{ "(S|s)ouv", "$1oev" }, // 'souvenirs'
new []{ "(?<![gr])st\\b", "s"}, // 'haast', 'troost', 'gebedsdienst', geen 'barst'
new []{ "stf", "sf"}, // 'kerstfeest'
new []{ "tep\\b", "teppie"}, // 'step'
new []{ "té\\b", "tei"}, // 'satè'
new []{ "tion", "sion"}, // 'station'
Expand Down

0 comments on commit 17646a5

Please sign in to comment.