2017-01-01 14 views
0

Я использую libusb в среде POSIXy (в частности, FreeBSD, но я надеюсь быть довольно портативным).Картирование из локали в USB LANGID

Я хочу получить некоторые строки с USB-устройства, используя libusb_get_string_descriptor, но я не уверен, какое значение я должен использовать для langid. Я знаю официальный список от http://www.usb.org/developers/docs/USB_LANGIDs.pdf, но есть простой способ сопоставить результат, например. setlocale(LC_MESSAGES, NULL) и LANGID в этом PDF-файле?

Это даже правильный подход? Пример кода, который я видел, появляется, чтобы все извлекали первую строку, не беспокоясь о выборе языка.

+0

В POSIX не указан формат идентификатора локали. Поэтому он не будет переносимым. (Я видел различные системы, использующие разные локальные идентификаторы) –

ответ

0

Я не смог найти какое-либо сопоставление, как вы описали, и я не уверен, что кто-то его создал, особенно потому, что имена языков не являются стандартными для всех ОС.

В моем (по общему признанию ограниченном) опыте устройства, как правило, игнорируют langid и всегда возвращают одну и ту же строку для заданного индекса. Тем не менее, я нахожусь в США и не имею доступа к оборудованию, предназначенному для поддержки нескольких языков, поэтому это может быть неверным во всем мире.

Это означает, что каждое устройство USB (которое поддерживает дескрипторы строк вообще) требуется для обеспечения хотя бы одного поддерживаемого langid на нулевом индексе строки, поэтому вы могли бы захватить это, сначала (с langid 0), для использования по умолчанию ,