Getting Started
Choosing a Localization Library
Enabling Localization
package main
import (
"github.com/diamondburned/ariakwa/v2/discord"
"github.com/mavolin/adam/pkg/i18n"
"github.com/mavolin/disstate/v3/pkg/state"
i18nimpl "github.com/nicksnyder/go-i18n/v2/i18n"
)
type settingsRepository interface {
GuildSettings(discord.GuildID) (prefixes []string, lang string, err error)
}
func newSettingsProvider(
repo settingsRepository, bundle *i18nimpl.Bundle,
) bot.SettingsProvider {
return func (_ *state.Base, m *discord.Message) (
[]string, *i18n.Localizer, bool,
) {
prefixes, lang, err := repo.GuildSettings(m.GuildID)
if err != nil {
log.Println(err)
// allow execution regardless, and just use fallbacks
return nil, nil, true
}
return prefixes, i18n.NewLocalizer(lang, newI18nFunc(bundle, lang)), true
}
}
func newI18nFunc(b *i18nimpl.Bundle, lang string) i18n.Func {
l := i18nimpl.NewLocalizer(b, lang)
return func(
term i18n.Term, placeholders map[string]interface{}, plural interface{},
) (string, error) {
return l.Localize(&i18nimpl.LocalizeConfig{
MessageID: string(term),
TemplateData: placeholders,
PluralCount: plural,
})
}
}Last updated
Was this helpful?