dillonkearns / elm-bcp47-language-tag / LanguageTag.Parser

Parse BCP 47 language tags.

parseBcp47 : String -> Maybe ( LanguageTag.Language.Language, LanguageTag.Options )

Parse a BCP47 language tag. Returns Nothing if the input is not valid.

import LanguageTag
import LanguageTag.Language as Language
import LanguageTag.Region as Region

empty : LanguageTag.Options
empty = LanguageTag.emptySubtags

parseBcp47 "en-us"
--> Just (Language.en, { empty | region = Just Region.us })

parseBcp47 "completely-invalid-tag"
--> Nothing

parseLanguageTag : String -> LanguageTag

This will attempt to parse the tag as a BCP47 tag. If it fails, it will construct a LanguageTag using custom, with no validation.

import LanguageTag

parseLanguageTag "en-US" |> LanguageTag.toSegments
--> [ "en", "US" ]

parseLanguageTag "completely-invalid-tag" |> LanguageTag.toSegments
--> [ "completely", "invalid", "tag" ]