Sortowanie rozwijanej listy

Intended audience: XHTML/HTML coders (using editors or scripting), script developers (PHP, JSP, etc.).

Question

W części formularza znajduje się rozwijana lista wyrazów. Dlaczego wyrazy te nie są odpowiednio posortowane po przetłumaczeniu listy na inny język?

Answer

Mimo, że wiele języków programowania ma narzędzia, które sortują rozwijaną listę wyrażeń przed wyświetleniem, funkcja HTML <select> nie ma możliwości sortowania. Funkcja ta wyświetla <options> w podanej kolejności. Dlatego należy samemu posortować przetłumaczone opcje przed ich prezentacją. Przeważnie robi się to ręcznie, albo za pomocą zaprojektowanych przez programistów procesów (jak na przykład XSLT transform).

Powiedzmy, na przykład, że mamy rozwijaną listę zwierzątek w porządku alfabetycznym:

<form .....>
    <select size="1" name="pet">
       <option value='cat'>cat</option>
       <option value='dog'>dog</option>
       <option value='mouse'>mouse</option>
    </select>
...
...
</form>

Przetłumaczona na język holenderski lista wygląda tak:

<form .....>
    <select size="1" name="pet">
       <option value='cat'>kat</option>
       <option value='dog'>hond</option>
       <option value='mouse'>muis</option>
    </select>
...
...
</form>

Jednakże, aby lista była w porządku alfabetycznym w języku holenderskim musimy posortować listę w następujący sposób:

<form .....>
    <select size="1" name="pet">
       <option value='dog'>hond</option>
       <option value='cat'>kat</option>
       <option value='mouse'>muis</option>
    </select>
...
...
</form>

Należy tak zrobić dla każdego wyświetlanego języka.

By the way

Zauważ, że parametry wartości w powyższych przykładach nie zostały przetłumaczone. Takie oddzielenie wyświetlanej treści od danych pozwala programiście na zachowanie danych. Oznacza to, że programista nie musi zmieniać treści otrzymanych od użytkownika za każdym razem gdy dodawany jest nowy język.