package main

import (
	"fmt"
	"net/http"

	"golang.org/x/text/language"
)

type Text struct {
	Language string
	Strings  map[string]string
}

func (t *Text) Translate(str string) string {
	if tr, ok := t.Strings[str]; ok {
		return tr
	}
	return str
}

var (
	Languages = map[language.Tag]Text{
		language.English: {
			Strings: map[string]string{
				"Homepage": "Homepage",
				"Search":   "Search",
			},
		},

		language.German: {
			Strings: map[string]string{
				"Homepage": "Homepage",
				"Search":   "Suche",
			},
		},

		language.Japanese: {
			Strings: map[string]string{
				"Homepage": "ホームページ",
				"Search":   "検索",
			},
		},
	}
)

var languageMatcher = language.NewMatcher([]language.Tag{
	language.English,
	language.German,
	language.Japanese,
})

func GetText(r *http.Request) *Text {
	fmt.Println(r.Header.Get("Accept-Language"))
	lang, _ := language.MatchStrings(languageMatcher, r.Header.Get("Accept-Language"))
	text := Languages[lang]
	base, _ := lang.Base()
	text.Language = base.String()
	return &text
}
