lang.go (476B)
1 package lang 2 3 import ( 4 "fmt" 5 6 "github.com/barbashov/iso639-3" 7 ) 8 9 var ( 10 Default = "eng" // ISO639-3 11 ) 12 13 type Language struct { 14 Code string 15 Name string 16 } 17 18 func LanguageFromCode(code string) (Language, error) { 19 r := iso639_3.FromAnyCode(code) 20 if r == nil { 21 return Language{}, fmt.Errorf("invalid language code: %s", code) 22 } 23 return Language{ 24 Code: r.Part3, 25 Name: r.Name, 26 }, nil 27 } 28 29 func(l Language) String() string { 30 return fmt.Sprintf("%s (%s)", l.Code, l.Name) 31 }