owpengram-server/internal/domain/client_session.go
2026-09-01 12:06:31 +03:00

28 lines
899 B
Go

package domain
import "strings"
// ClientSessionMetadata is request-scoped initConnection/session context for
// in-process features such as localized service bots. It is deliberately not a
// durable message field and must never be exposed through the public Bot API.
type ClientSessionMetadata struct {
AuthKeyID [8]byte
SessionID int64
SystemLangCode string
LangPack string
LangCode string
}
// PreferredLanguage returns a normalized BCP-47 primary language subtag.
// Telegram clients normally send lang_code, with system_lang_code as fallback.
func (m ClientSessionMetadata) PreferredLanguage() string {
value := strings.TrimSpace(m.LangCode)
if value == "" {
value = strings.TrimSpace(m.SystemLangCode)
}
value = strings.ToLower(strings.ReplaceAll(value, "_", "-"))
if at := strings.IndexByte(value, '-'); at >= 0 {
value = value[:at]
}
return value
}