Internationalization stuff
"Language" is sometime also called "Locale". We call it "Language" as it seems more common to refer to it this way.
Also in Html these are called "lang".
So we consider British English and American English as two different languages rather than two different locales of the same language.
Parse Language from string (IETF format). It's case insensitive.
Parsing language from flags
Utils.I18n.Language.fromString "zh-TW" ===> Just ZH_TW
Utils.I18n.Language.fromString "ZH-TW" ===> Just ZH_TW
Utils.I18n.Language.fromString "foo" ===> NothingConvert Language to full language description
Example to convert ZH_TW to translation in English and Traditional Chinese
toLongString International ZH_TW ===> "Taiwanese"
toLongString Localization ZH_TW ===> "繁體中文"