Hallo
Eins vorab. Ich bin mir bewusst, dass ohne Locale es keine geeignete Sortierung geben kann.
Jedoch bin ich wohl nicht der einzige, der ein locale nicht immer für die geeignete Lösung hält. Wer eine mehrsprachige Webseite publiziert, ist gleich gezwungen, für jede Sprache ein locale umzuschalten. Einerseits ist dies wohl nicht wahnsinnig performant, anderseits befriedigt dies auch nicht Situationen, in welchen Artikel aus mehreren Sprachen gleichzeitig verarbeitet werden müssen.
Deshalb meine Frage die im Kontext eines Sortieralgorythmus steht.
Ich kann viele Kombinuierte Zeichen auf ein Alphabetisches Zeichen aus A-Z zurückführen.
Dabei gilt jedoch zu beachten:
éêè sind erweiterungen von e und nach e zu sortieren.
ö ist ein Umlaut und ist damit eine Variante die nach oz, aber vor p einzuordnen ist.
ebenso das Smörebröd Ø ist wie ö einzuordnen.
ß ist nach ss aber vor st einzuordnen.
Ich habe also zwei Klassen von erweiterten Wurzelbuchstaben, ohne aber innerhalb der Klasse noch eine weitere Rangstufe zu definieren.
Meine Frage nun.
Mit welchem Mechanismus kann ich (in Perl oder allgemein) einen Wurzelbuchstaben zu einem Kombinierten Buchstaben ermitteln, um für den sortkey eine s/// Ersetzung im Sinne neuer Gewichtung vornehmen zu können?
Mir schwebt vor, dass im sortkey die Ersetzung vorgenommen wird:
a => a0
à => a1
ä => a2
Von den ursprünglichen Buchstaben sollen also eine Wurzel aus [a-zA-Z] plus eine Klassenziffer übrigbleiben.
werden sollte. Damit das möglich ist, muss ich auch via Unicode einen Unterschied zwischen â und ä definieren.
In Perl kann ich selber Unicode Properties definieren. Das würde dann halt eine lange Liste.
Aber auch hier die Frage: Gibt es zwei Eigenschaften, nach welchen ich ä von ã unterscheiden kann, oder muss ich die erst selber definieren.
PS: Die Problemstellung besteht für einen Sortieralgorithmus. Es würde mir jedoch an dieser Stelle ein fertiges Unicode Sort paket wenig nützen, da ich zusätzlich ein natural sort implementiere.
mfg Beat
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische