Een Turkse adresgenerator produceert Turkse adressen die de eigen postconventies van het land volgen in plaats van een Engelstalige benadering ervan. De hiërarchie loopt van de provincie naar beneden tot de straat, de postcode bestaat altijd uit vijf cijfers, en de geschreven volgorde zet de grootste administratieve eenheid voorop — een volgorde die veel internationale formulieren stilletjes omdraaien.
Deze gids legt uit hoe een Turks adres is gestructureerd, hoe de eenentachtig provincies zich verhouden tot postcodes en telefoonvoorvoegsels, waarom Turkse letters met en zonder punt echte fouten in adresvelden veroorzaken, en waarvoor een gegenereerd record wel en niet kan staan. Aan het einde zou je moeten kunnen beoordelen of een Turks adres in je fixture slechts plausibel is of werkelijk consistent.
Hoe is een Turks adres geordend?
Een Turks adres wordt van de grootste eenheid naar de kleinste geschreven, en de postdienst verwacht dat die volgorde wordt gerespecteerd wanneer het adres op één label wordt gepresenteerd. Eerst komt de provincie, dan het district, dan de buurt, dan de straat of laan, dan het gebouwnummer, dan het appartementnummer binnen het gebouw, en ten slotte de vijfcijferige postcode gevolgd door nogmaals de provincienaam of de districtsnaam.
Die richting van groot naar klein is het omgekeerde van de Verenigde Staten en het Verenigd Koninkrijk, waar de straatregel vooropgaat en de administratieve eenheden volgen. De verkeerde conventie in het verkeerde land gebruiken is een van de betrouwbaarste manieren om een adres te produceren dat vertaald aandoet. Ontwikkelaars die één adressjabloon voor elk land bouwen, schrijven Turkse records vaak in de Amerikaanse volgorde zonder het te merken, omdat beide als één plausibel uitziende regel worden weergegeven.
De gebouw- en appartementselementen zijn afzonderlijke waarden in plaats van één gecombineerd unitveld. Een Turks adres onderscheidt het straatnummer van het nummer van het flatje in het gebouw, en beide zijn meestal kleine gehele getallen die in de compacte vorm zonder unitwoord worden geschreven. Straatnummers kunnen ook een lettersuffix dragen wanneer een perceel is opgesplitst, dus een veld dat beperkt is tot cijfers, zal een geldige ingang afwijzen. Systemen die de twee nummers in één veld samenvoegen, verliezen informatie die Turkse koeriers en gemeenten routinematig gebruiken.
Wat doen de lagen provincie, district en buurt?
De eerste laag is de provincie, en Turkije heeft er eenentachtig. Provincies worden op formulieren vaak afgekort met hun tweecijferige plaatcode in plaats van met een naam, wat betekent dat een testsuite die alleen provincienamen beoefent, nooit het numerieke pad raakt. Een goed gevormde dataset hoort voor elke provincie beide representaties te dragen, zodat elk van beide velden kan worden beoefend.
Onder de provincie ligt het district, en onder het district de buurt of het dorp. De buurt is het niveau waarvoor de meeste buitenlandse adresmodellen geen equivalent hebben, en daarom is het het niveau dat het vaakst uit internationale formulieren wordt weggelaten en later wordt ontdekt wanneer een Turkse gebruiker klaagt. Postcodes in Turkije worden op een fijner niveau dan de provincie toegewezen, dus de postcode vernauwt de locatie aanzienlijk zodra hij aan het juiste district is gekoppeld.
Omdat de lagen strikt genest zijn, zijn de consistentieregels ook strikt genest. Een district hoort bij precies één provincie, een buurt bij precies één district, en een postcode bij een kleine verzameling buurten. Elk record waarin het district en de provincie het oneens zijn, is niet subtiel fout; het is onmogelijk, en een validator die het paar controleert, vangt het onmiddellijk af.
Waarom de postcode en de provincie moeten overeenstemmen
Turkse postcodes bestaan uit vijf cijfers, en de eerste cijfers dragen een geografische betekenis die aan de provincie en de ruimere regio is gekoppeld. De praktische consequentie is dat een postcode die willekeurig uit de volledige vijfcijferige ruimte wordt getrokken, bijna altijd ergens naar verwijst wat niets met de provincie in hetzelfde record te maken heeft.
Dit is dezelfde klasse van fout die in elk land opduikt, en het is de moeite waard om het te herhalen omdat het zo vaak voorkomt: een enkel veld kan perfect zijn opgemaakt en toch verkeerd zijn. Vijf cijfers zijn vijf cijfers. Wat een Turks record bruikbaar maakt, is dat de cijfers overeenkomen met de provincie die ernaast staat.
Generatoren vermijden dit door eerst de provincie te kiezen en daaruit het district, de buurt en de postcode af te leiden, nooit andersom. Wanneer je een hulpmiddel beoordeelt dat Turkse dekking claimt, is die afleidingsvolgorde het punt om te sonderen. Vraag verscheidene records voor één provincie op en controleer of de postcodes op een verstandige manier clusteren of over het hele numerieke bereik uiteenlopen.
Het telefoonvoorvoegsel volgt hetzelfde principe. Turkse netnummers van vaste lijnen komen overeen met provincies, dus een telefoonnummer dat begint met een code die bij de ene stad hoort terwijl het adres een andere noemt, is een mismatch die een zorgvuldige testsuite zou moeten opvangen. Mobiele nummers zijn anders, want die zijn overdraagbaar en duiden niet langer een regio aan, wat betekent dat een Turks testrecord alleen de relatie met de vaste lijn hoort te toetsen. Het artikel over telefoonvoorvoegsel en plaatsmatching gaat dieper op deze relatie in.
Welke Turkse letters breken adresvelden?
Het Turks schrijft de letter i in twee vormen. Er is enerzijds een gepunte hoofdletter en een puntloze kleine letter, en anderzijds een puntloze hoofdletter met een gepunte kleine letter, en de twee zijn afzonderlijke letters in het alfabet in plaats van stilistische varianten van één teken. Hoofdletterconversie die dit negeert, zal stilletjes een stads- of straatnaam corrumperen.
De fout is stil en daarom gevaarlijk. Een Turkse plaatsnaam met een generieke routine naar hoofdletters converteren, verandert de gepunte kleine i in een gepunte hoofdletter, wat de verkeerde letter is voor woorden die de puntloze bevatten. Adressen komen dan niet overeen met de referentielijst, zelfs als de gebruiker de naam correct heeft getypt, en het resulterende bugrapport zegt dat het adres ongeldig is terwijl de echte fout de hoofdlettertoewijzing is. Het omgekeerde gebeurt ook: een puntloze hoofdletter naar kleine letters converteren levert in het Turks een puntloze kleine letter op en in de meeste andere talen een gepunte kleine letter, en code die het tweede aanneemt, slaat een waarde op die later niet kan worden gematcht.
Sorteren heeft hetzelfde probleem vanuit de andere richting. Turkse collatie plaatst de gepunte en puntloze letters op andere posities dan die ze in het Engels innemen, dus een lijst van provincies die met een Latijns-1- of Engelse collatie is gesorteerd, ziet er voor een Turkse gebruiker door elkaar gegooid uit. Als je adreskeuzelijst aan de serverzijde volgens een Engelse regel is gesorteerd, is dat een fout die het waard is om eerst te repareren.
De tekenset zelf is ook breder dan gewone ASCII. Turkse plaatsnamen dragen de gepunte i, de puntloze i, de c met cedille, de g met breve, de o en u met trema, en de s met cedille. Een veld dat diakritische tekens bij invoer verwijdert, verandert sommige daarvan in letters die de betekenis van de naam wijzigen, dus normalisatie moet omkeerbaar verliesvrij zijn of bewust conservatief.
Hoe moeten Turkse adresformulieren worden gestructureerd?
Modelleer het adres als geneste paren in plaats van als vrije tekst plus een postcode. Provincie en plaatcode horen bij elkaar, het district hoort bij de geselecteerde provincie, de buurt hoort bij het geselecteerde district, en de postcode wordt tegen het district gevalideerd in plaats van op zichzelf. Elk niveau hoort door het niveau erboven te worden gefilterd, wat de meeste ongeldige combinaties voorkomt voordat ze worden getypt.
Geef de gebouw- en appartementnummers hun eigen velden en hun eigen lengtelimieten. Turkse straatnummers kunnen een lettersuffix dragen, en appartementnummers kunnen in grote blokken tot drie cijfers oplopen, dus een veld van één teken zal op gewone invoer falen. Sta toe dat de postcode met of zonder scheidende spatie wordt ingevoerd, en normaliseer hem na opslag in plaats van hem bij de deur af te wijzen.
Waar je een internationaal formulier accepteert, voeg het buurtveld toe, zelfs als je andere landen het niet gebruiken. Eén veld optioneel maken voor vijftig landen en verplicht voor Turkije is een kleine schemakosten en een grote vermindering van supporttickets, en een testfixture hoort ten minste één Turks record met een buurt en één zonder te bevatten, zodat beide paden worden beoefend.
Komt een gegenereerd Turks adres overeen met een echte locatie?
Nee. Een gegenereerd Turks adres heeft de juiste hiërarchie, de juiste veldvolgorde en een postcode die consistent is met zijn provincie, en dat is alles wat een formulier, een parser of een routeringsregel nodig heeft om te worden beoefend. Het identificeert geen echt gebouw, het staat op naam van niemand, en geen enkele koerier zou er kunnen bezorgen.
De bekende waarschuwing geldt in Turkije met een extra wending, omdat de tussenliggende lagen talrijk zijn en een plausibel uitziende combinatie vrij makkelijk met de hand kan worden samengesteld. Het verschil tussen een handmatig gebouwd record en een gegenereerd record is niet de verschijning van de velden maar de diepte van de relaties erachter. Een generator leidt de lagere lagen van de hogere af; iemand die een record met de hand samenstelt, gokt op elk niveau afzonderlijk.
Openbaar referentiemateriaal voor Turkse administratieve onderverdelingen wordt bijgehouden door het nationale statistiekbureau, en de gepubliceerde lijsten zijn het soort bron waarnaar een onderhouden dataset herleidbaar hoort te zijn. Weten waar de waarden vandaan komen, is wat het mogelijk maakt ze later te vernieuwen zonder te gokken. Het maakt ook het verschil tussen een generator en een spreadsheet zichtbaar: een spreadsheet veroudert stilletjes, terwijl een dataset met een vermelde bron ertegen kan worden gecontroleerd.
Wat te controleren voordat je een Turkse dataset vertrouwt
Controleer eerst het aantal provincies, want een dataset die tekortschiet op provincies, schiet ook ergens anders tekort op dekking. Controleer dan dat districten genest zijn in plaats van globaal, en dat het record een plaatcode naast de provincienaam draagt. Controleer dan de tekenbehandeling: genereer een provincie waarvan de naam een puntloze i bevat, converteer het record in je eigen code naar hoofdletters, en bevestig dat het overleeft.
Controleer ten slotte de reproduceerbaarheid. Dezelfde sleutel en hetzelfde land horen elke keer hetzelfde record terug te geven, want een adres dat bij elke aanroep verandert, kan niet in een bewering worden gebruikt. Een generator die zijn uitvoer bij elk verzoek door elkaar gooit, is prima voor een handmatige demonstratie en nutteloos voor een regressietest, en het verschil wordt pas zichtbaar zodra op de uitvoer wordt getoetst. De landpagina voor Turkije beschrijft hoe de landdata is georganiseerd, en de adresgenerator is waar records voor Turkije en de andere ondersteunde landen kunnen worden geproduceerd en geëxporteerd.
Elk record dat op deze manier wordt geproduceerd, is synthetische testdata. De veldvolgorde, de hiërarchie en de relaties zijn trouw aan de gepubliceerde formaten, maar de records komen overeen met geen echte persoon, geen echt pand en geen echte postbezorging, en ze mogen niet worden gebruikt om iemand na te doen, om daadwerkelijke post te ontvangen, om een adres aan te tonen, of om enige identiteits- of verblijfsverificatie te doorstaan.