Стратегии локализации сочетаний клавиш

Конструктор ожидает нулевой или один аргумент, который, если предоставлен, должен быть объектом. Если аргумент не предоставлен, по умолчанию используется пустой объект. Затем он проверяет (возможно, пустой) объект на свойства comparator и initialValues. Если эти свойства существуют в объекте, они извлекаются в эти имена переменных (comparator и initialValues) - в противном случае этим именам переменных присваиваются значения по умолчанию, (a, b) => a - b для comparator и [] для initialValues ]. [1 123]

Например,

new PriorityQueue()

приводит к PriorityQueue с .comparator из (a, b) => a - b и initialValues из [], тогда как

new PriorityQueue({ comparator: (a, b) => a.localeCompare(b) })

приводит к [ 1116] с .comparator из (a, b) => a.localeCompare(b) и initialValues из [].

Если в передаваемом аргументе содержатся свойства, отличные от comparator или initialValues, они игнорируются.

Написано многословно, без параметров по умолчанию:

class PriorityQueue {
  constructor(obj) {
    if (obj === undefined) {
      obj = {};
    }
    if (obj.comparator === undefined) {
      obj.comparator = (a, b) => a - b;
    }
    if (!obj.initialValues === undefined) {
      obj.initialValues = [];
    }

    // main constructor body starts here
    this.comparator = obj.comparator;
    this.data = obj.initialValues;
    this.heapify();
  }
12
задан Jasper 10 September 2011 в 10:51
поделиться

2 ответа

Необходимо избегать ключей символа (такой как * и <), так как они имеют тенденцию перемещаться на международных клавиатурах. Посмотрите Википедию: Раскладка клавиатуры

Если Вы планируете передвижение букв в зависимости от локализации, необходимо позволить пользователю выбрать, если он хочет английские варианты вместо этого. Печально, если я должен изучить два набора ярлыков в зависимости от языка. (То же идет для межплатформенных приложений.)

Лучше всего были бы полностью настраиваемые сочетания клавиш, но это могло быть больше для продвинутых пользователей. Посмотрите Классика Media Player для примера.

3
ответ дан 2 December 2019 в 23:31
поделиться

При поиске большего количества информации я нашел превосходное сообщение в блоге по этой точной теме.

Подводить итог:

  • Если возможный ярлык не изменяется
  • Если ключ не доступен на определенном расположении, мы должны попытаться использовать то же физическое положение
  • Не должно быть никакой ссылки между языком приложения и раскладками клавиатуры
  • Это - ошибка полагать, что язык приложения будет соответствовать раскладке клавиатуры. Я дам Вам просто пример: в Румынии более чем 95% компьютеров используют американскую раскладку клавиатуры, и другие 5% используют одну из 4-5 различных румынских раскладок клавиатуры.
  • Некоторые люди используют несколько раскладок клавиатуры - обычно они - продвинутые пользователи, и мы не можем проигнорировать их, раскладки клавиатуры могут быть переключены в любое время
  • Символы безопасны использоваться, только если они латинские
1
ответ дан 2 December 2019 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: