♻️ Refactored Language domain initialization
This commit is contained in:
parent
66dadfe9c3
commit
c83a86119e
|
@ -14,19 +14,25 @@ type Language struct {
|
|||
dir string
|
||||
}
|
||||
|
||||
func NewLanguage(tag language.Tag) Language {
|
||||
out := Language{dir: "ltr"}
|
||||
var LanguageUnd Language = Language{}
|
||||
|
||||
func NewLanguage(raw string) Language {
|
||||
tag, err := language.BCP47.Parse(raw)
|
||||
if err != nil || tag == language.Und {
|
||||
return LanguageUnd
|
||||
}
|
||||
|
||||
out := Language{
|
||||
code: tag.String(),
|
||||
dir: "ltr",
|
||||
name: strings.ToLower(display.Self.Name(tag)),
|
||||
}
|
||||
|
||||
switch tag {
|
||||
case language.Und:
|
||||
return out
|
||||
case language.Arabic, language.Persian, language.Hebrew, language.Urdu:
|
||||
out.dir = "rtl"
|
||||
}
|
||||
|
||||
out.name = strings.ToLower(display.Self.Name(tag))
|
||||
out.code = tag.String()
|
||||
|
||||
base, _ := tag.Base()
|
||||
out.lang = base.String()
|
||||
|
||||
|
@ -50,9 +56,13 @@ func (l Language) Name() string {
|
|||
}
|
||||
|
||||
func (l Language) String() string {
|
||||
return l.code
|
||||
if l.code == "" {
|
||||
return l.code
|
||||
}
|
||||
|
||||
return "und"
|
||||
}
|
||||
|
||||
func (l Language) GoString() string {
|
||||
return "domain.Language(" + l.code + ")"
|
||||
return "domain.Language(" + l.String() + ")"
|
||||
}
|
||||
|
|
|
@ -3,8 +3,6 @@ package domain_test
|
|||
import (
|
||||
"testing"
|
||||
|
||||
"golang.org/x/text/language"
|
||||
|
||||
"source.toby3d.me/toby3d/home/internal/domain"
|
||||
)
|
||||
|
||||
|
@ -12,13 +10,13 @@ func TestLanguage_Lang(t *testing.T) {
|
|||
t.Parallel()
|
||||
|
||||
for name, tc := range map[string]struct {
|
||||
input language.Tag
|
||||
input string
|
||||
expect string
|
||||
}{
|
||||
"2letter": {language.Make("en"), "en"},
|
||||
"3letter": {language.Make("eng"), "en"},
|
||||
"region": {language.Make("en-US"), "en"},
|
||||
"und": {language.Und, ""},
|
||||
"2letter": {"en", "en"},
|
||||
"3letter": {"eng", "en"},
|
||||
"region": {"en-US", "en"},
|
||||
"und": {"", ""},
|
||||
} {
|
||||
name, tc := name, tc
|
||||
|
||||
|
@ -36,13 +34,13 @@ func TestLanguage_Code(t *testing.T) {
|
|||
t.Parallel()
|
||||
|
||||
for name, tc := range map[string]struct {
|
||||
input language.Tag
|
||||
input string
|
||||
expect string
|
||||
}{
|
||||
"2letter": {language.Make("en"), "en"},
|
||||
"3letter": {language.Make("eng"), "en"},
|
||||
"region": {language.Make("en-US"), "en-US"},
|
||||
"und": {language.Und, ""},
|
||||
"2letter": {"en", "en"},
|
||||
"3letter": {"eng", "en"},
|
||||
"region": {"en-US", "en-US"},
|
||||
"und": {"", ""},
|
||||
} {
|
||||
name, tc := name, tc
|
||||
|
||||
|
@ -60,14 +58,14 @@ func TestLanguage_Dir(t *testing.T) {
|
|||
t.Parallel()
|
||||
|
||||
for name, tc := range map[string]struct {
|
||||
input language.Tag
|
||||
input string
|
||||
expect string
|
||||
}{
|
||||
"2letter": {language.Make("en"), "ltr"},
|
||||
"rtl": {language.Urdu, "rtl"},
|
||||
"3letter": {language.Make("eng"), "ltr"},
|
||||
"region": {language.Make("en-US"), "ltr"},
|
||||
"und": {language.Und, "ltr"},
|
||||
"2letter": {"en", "ltr"},
|
||||
"rtl": {"ur", "rtl"},
|
||||
"3letter": {"eng", "ltr"},
|
||||
"region": {"en-US", "ltr"},
|
||||
"und": {"", ""},
|
||||
} {
|
||||
name, tc := name, tc
|
||||
|
||||
|
@ -85,14 +83,14 @@ func TestLanguage_Name(t *testing.T) {
|
|||
t.Parallel()
|
||||
|
||||
for name, tc := range map[string]struct {
|
||||
input language.Tag
|
||||
input string
|
||||
expect string
|
||||
}{
|
||||
"localized": {language.Russian, "русский"},
|
||||
"2letter": {language.Make("en"), "english"},
|
||||
"3letter": {language.Make("eng"), "english"},
|
||||
"region": {language.Make("en-US"), "american english"},
|
||||
"und": {language.Und, ""},
|
||||
"localized": {"ru", "русский"},
|
||||
"2letter": {"en", "english"},
|
||||
"3letter": {"eng", "english"},
|
||||
"region": {"en-US", "american english"},
|
||||
"und": {"", ""},
|
||||
} {
|
||||
name, tc := name, tc
|
||||
|
||||
|
|
Loading…
Reference in New Issue