Using prefered language ID when getting strings

Previously language ID 0 was used which does not work with some devices.
Now the language ID array is searched for ID 0x409 (US English) which is
supported by most devices. If it exists it is used. Otherwise the first
language ID in the array is used (suggested by Marco Maccaferri).