对选项菜单进行排序

你可能在表单中有一个下拉框。本文回答了这个问题:为什么在翻译列表中的项目时它们没有正确排序?

答案

尽管许多编程语言都有类似下拉框的功能,并且可以在显示项目列表之前对其进行排序,但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>

我们必须为每种要显示的语言进行这项工作。

顺便说一下

请注意,在上面的示例中,我们没有翻译value参数。这种将要显示给用户的数据与后端要处理的数据分离的做法,让开发者保持后端处理的一致性。他们不必在每次添加新语言支持时都更改他们期望从用户那里接收的内容。