code: def getSupportedLanguageList(self):
          
          descriptor_string, _ = create_binary_buffer(STRING_LENGTH)
          result = libusb1.libusb_get_string_descriptor(
              self.__handle, 0, 0, descriptor_string, sizeof(descriptor_string),
          )
          # pylint: disable=undefined-variable
          if result == ERROR_PIPE:
              # pylint: enable=undefined-variable
              # From libusb_control_transfer doc:
              # control request not supported by the device
              return []
          mayRaiseUSBError(result)
          langid_list = cast(descriptor_string, POINTER(c_uint16))
          return [
              libusb1.libusb_le16_to_cpu(langid_list[offset])
              for offset in xrange(1, cast(descriptor_string, POINTER(c_ubyte))[0] // 2)
          ]
docs: Return a list of USB language identifiers (as integers) supported by
          current device for its string descriptors.
  
          Note: language identifiers seem (I didn't check them all...) very
          similar to windows language identifiers, so you may want to use
          locales.windows_locale to get an rfc3066 representation. The 5 standard
          HID language codes are missing though.