В качестве элемента формы, у меня есть выпадающий список элементов. Почему они не сортируются когда я перевожу элементы в списке?
Несмотря на то, что множество языков программирования имеют выпадающие списки элементов с возможностью сортировки элементов перед выводом на экран, HTML элемент <select> лишен подобного свойства. Он выводит элементы <options> в том порядке, в котором они указаны в коде. Соответственно, для вывода в нужном порядке их нужно отсортировать вручную или использовать различные вспомогательные инструменты разработчиков (например через 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>
Подобная операция производится для каждого отображаемого языка.
Заметьте, что атрибуты value не переводятся. Разделение материала отображаемого пользователю и данных, обрабатываемых на серверной стороне, позволяет разработчикам сохранять неизменной серверную часть. Это обозначает, что они не должны менять обработку значений, которые они получают от пользователя каждый раз, когда добавляется новый язык.
Related links, Authoring HTML & CSS