Сортування випадаючого списку

Intended audience: шифрувальники XHTML/HTML (за допомогою редакторів і скриптів), розробники скриптів (PHP, JSP, і т. п.).

Question

У рамках формі у мене є список термінів у випадаючому списку. Чому вони не правильно сортуються коли я перекладаю елементи зі списку?

Answer

Незважаючи на те, що безліч мов програмування мають випадаючі списки елементів з можливістю сортування елементів перед виведенням на екран, HTML елемент <select> позбавлений подібної властивості. Він виводить елементи <option> в тому порядку, в якому вони вказані в коді. Відповідно, для виведення у потрібному порядку їх потрібно відсортувати вручну або використовувати різні допоміжні інструменти розробників (наприклад через XSLT-перетворення).

Наприклад, у нас є випадаючий список, що складається з назв домашніх тварин. У списку містяться такі елементи в алфавітному порядку:

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

Коли список переведений на Голандський мову, в ньому присутні такі елементи:

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

Для того щоб відповідати правилам сортування за алфавітом у Голаднській мові, ми повинні переставити елементи списку наступним чином:

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

Подібна операція проводиться для кожної відображуваної мови.

By the way

Зауважте, що атрибути значення не переводяться. Поділ матеріалу відображуваного користувачеві і даних, які обробляються на стороні сервера, дозволяє розробникам зберігати незмінною серверну частину. Це означає, що вони не повинні міняти обробку значень, які вони отримують від користувача кожного разу, коли додається нова мова.