Less aggressive locale setting

Unless the parser was initialized explicitly with the current
locale, it would clobber the current I18n.locale setting. This
change respects locale if it is passed (still overwriting
I18n.locale in the process) but does nothing if it is not; the
parser will use whatever I18n.locale is already in effect.