28 lines
899 B
Go
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
|
|
}
|