package context

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

// I18nReadOnly is the interface which contains the read-only i18n features.
// Read the "i18n" package fo details.
type I18nReadOnly interface {
	Tags() []language.Tag
	GetLocale(ctx *Context) Locale
	Tr(lang string, key string, args ...interface{}) string
	TrContext(ctx *Context, key string, args ...interface{}) string
}

// Locale is the interface which returns from a `Localizer.GetLocale` method.
// It serves the translations based on "key" or format. See `GetMessage`.
type Locale interface {
	// Index returns the current locale index from the languages list.
	Index() int
	// Tag returns the full language Tag attached to this Locale,
	// it should be unique across different Locales.
	Tag() *language.Tag
	// Language should return the exact languagecode of this `Locale`
	//that the user provided on `New` function.
	//
	// Same as `Tag().String()` but it's static.
	Language() string
	// GetMessage should return translated text based on the given "key".
	GetMessage(key string, args ...interface{}) string
}