Локаль узла INTL Сопоставление

Я работаю над побочным проектом, который включает в себя сортировку японских и тайских строк. Когда я тестировал сортировку в Javascript на стороне клиента, я смог использовать a.localeCompare(b, "languageCode"), который работал. Когда я попробовал ту же логику в Node, она не сработала, потому что Node Объект INTL ограничен английским языком по умолчанию.

Я хочу настроить свою сборку узла, как описано в приведенной выше ссылке, и наткнулся на модуль узла ICU4C-data., который, как я понимаю, содержит полный набор данных ICU. Я играл с разными флагами сборки, такими как указанный в (разреженном) README: --icu-data-dir=node_modules/icu4c-data, но безрезультатно — независимо от того, какие флаги я устанавливал, я не могу получить функция сравнения INTL Collator, чтобы получить ожидаемые результаты. Есть ли очевидный флаг, который мне не хватает, или ключевое предположение, в котором я ошибаюсь?

Вот несколько важных заметок/ресурсов:

  • Конечной целью является сопоставление тайского и японского языков. Если есть другой подход, использующий Node для реализации этого, я открыт для предложений.
  • Сопоставление должно быть выполнено в узле
  • Я буду полагаться на Array.prototype .sort() - в основном ищет компаратор
  • Использование Node 0.12 с поддержкой ECMA
  • Моя первая настройка сборки Node (~ 1 месяц опыта)

person Christian    schedule 23.01.2016    source источник


Ответы (1)


Вместо этого установите пакет full-icu. Он даст инструкции о том, как загрузить остальные данные.

Также обратите внимание, что будущие версии узлов не должны требовать какой-либо настройки для получения новых данных, вы можете увидеть #3460. если интересно.

Мне нужно исправить файл readme icu4c-data, чтобы отразить это.

person Steven R. Loomis    schedule 18.02.2016