Dyskusja modułu:categoriesIndexing

Najnowszy komentarz napisał 4 lata temu Peter Bowman w wątku problemy

znaki unicode w pierwszej literze edytuj

Chciałbym zaproponować zamianę poniższego kodu w funkcji "stripAccents":

local result = ''
 
for codepoint in mw.ustring.gcodepoint( text ) do
    local unstripped = mw.ustring.char(codepoint)
    local stripped = indexing[ unstripped ]

    if stripped == nil then
        stripped = unstripped
    end
 
    result = result .. stripped
end

na następujący:

local result, poczatek = '', true
 
for codepoint in mw.ustring.gcodepoint( text ) do
    local unstripped = mw.ustring.char(codepoint)
    local stripped = indexing[ unstripped ]

    if (stripped == nil) or (poczatek and (string.sub(stripped, -1) == "+")) then
        stripped = unstripped
        poczatek = false
    end
 
    result = result .. stripped
end

Służyłby on do wykrywania znaków unicode, które nie są diakrytykami, tzn. mają swoje określone miejsce w alfabecie, a więc tworzą osobny nagłówek w kategoriach. Na myśli mam przypadek hiszpańskiej spółgłoski „ñ”, aczkolwiek można to samo przenieść na polskie „ć”, „ś”, „ź”, itp. W chwili obecnej nie da się tego zrobić, dopisując kolejne litery do listy zamian, albowiem wszystkie wyrazy zaczynające się na „ñ” będą źle kategoryzowane (pod nagłówkiem „N”). Proponowany kod sprawdza najpierw, czy wykryta została pierwsza litera danego wyrazu, a potem bada obecność znaku kontrolnego (w tym przykładzie jest to „+”). Tak więc po dopisaniu:

local hiszpanski = {
    …
    N = "N1", n = "n1",
    ["Ñ"] = "N2+", ["ñ"] = "n2+"
}

skrypt powiniem umiejscawiać „nieve” i „ñu” pod osobnym nagłówkiem, a następne wyrazy w podanej kolejności: bandera, baño, batalla (obecnie baño trafia na sam koniec, po *baz-).

Jedna końcowa uwaga: zauważyłem, że MediaWiki indeksuje najpierw cyfry 0-9, a dopiero potem litery (kolejność ASCII?); dlatego należy dopisać literę bazową „n” w powyższym przykładzie. W przeciwnym razie wyraz „baño” trafiłby przed „bandera”. Peter Bowman (dyskusja) 20:04, 24 mar 2013 (CET)Odpowiedz

Jasne, bardzo dobry pomysł, nie mam nic przeciwko zmianom (: Alkamid (dyskusja) 20:36, 24 mar 2013 (CET)Odpowiedz
Zrobione. Uzupełniono też wietnamski, jednak wypadałoby go jeszcze raz sprawdzić (znak ơ powinien chyba być pod o2, a jest teraz pod o1). Są jakieś zastrzeżenia, żeby dodać polski do skryptu? Peter Bowman (dyskusja) 14:22, 25 mar 2013 (CET)Odpowiedz
Czy categoriesIndexing nie powinno być też uwzględnione w kategoryzowaniu a tergo (w {{nagłówek języka}} lub bezpośrednio w Module:a tergo) oraz w wywołaniach adresów kategorii w szablonach {{zaczynające się od}} i {{kończące się na}}? Liteman (dyskusja) 14:31, 25 mar 2013 (CET)Odpowiedz

W chwili obecnej rozpoznawanie znaków diakrytycznych działa tak:

  1. Jeżeli znak nie tworzy nagłówka (nie jest osobną literą w danym alfabecie), wpisujemy odpowiednik bez tego znaku: ["á"] = "a"
  2. Jeżeli znak tworzy nagłówek, ale nie jest stricte znakiem diakrytycznym (np. polskie c i ć to dwie różne litery): c = "c1", ["ć"] = "c2+"
  3. Jeżeli znak tworzy nagłówek i jest znakiem diakrytycznym; np. w wietnamskim dla grupy znaków ă:
    a = "a0", ["ă"] = "a1+",
    ["ắ"] = "a1+", ["ằ"] = "a1+", … -- kombinacje znaku "ă" z różnymi akcentami
    ["ắ+"] = "ă", ["ằ+"] = "ă", …

Peter Bowman (dyskusja) 13:39, 27 mar 2013 (CET)Odpowiedz

problemy edytuj

Moduł wycofano w 2013 (Specjalna:Diff/3221713) z powodu ograniczeń MW: Dyskusja:a perro flaco, todas son pulgas oraz Dyskusja kategorii:polski (indeks a tergo)#Znaki diakrytyczne. Peter Bowman (dyskusja) 22:32, 14 wrz 2019 (CEST)Odpowiedz

Powrót do strony „categoriesIndexing”.