Ctrl K
ComunidadGuías…

internal/domain/translation.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package domain

import "errors"

const (
	// MaxTranslationTexts matches the largest batch currently issued by TDesktop's
	// whole-chat translation tracker.
	MaxTranslationTexts = 20
	// MaxTranslationInputBytes bounds one upstream request independently of the
	// MTProto frame limit. TDesktop starts a new batch at the same 24 KiB boundary.
	MaxTranslationInputBytes = 24 * 1024
	// MaxTranslationOutputBytes permits language expansion while bounding an
	// untrusted provider response before TL encoding.
	MaxTranslationOutputBytes = 4 * MaxTranslationInputBytes
	MaxTranslationToneRunes   = 64
)

var (
	ErrTranslationDisabled            = errors.New("translation disabled")
	ErrTranslationInputEmpty          = errors.New("translation input empty")
	ErrTranslationInputTooLong        = errors.New("translation input too long")
	ErrTranslationLanguageInvalid     = errors.New("translation language invalid")
	ErrTranslationMessageInvalid      = errors.New("translation message invalid")
	ErrTranslationPeerInvalid         = errors.New("translation peer invalid")
	ErrTranslationRateLimited         = errors.New("translation rate limited")
	ErrTranslationProviderUnavailable = errors.New("translation provider unavailable")
	ErrTranslationTimeout             = errors.New("translation timeout")
)

// TranslationText is protocol-neutral text accepted or returned by the
// translation service. Providers may omit entities when they cannot preserve
// offsets safely; they must never return stale source offsets for changed text.
type TranslationText struct {
	Text     string
	Entities []MessageEntity
}

func (t TranslationText) Clone() TranslationText {
	out := t
	out.Entities = append([]MessageEntity(nil), t.Entities...)
	return out
}

type TranslationRequest struct {
	UserID int64
	// Peer+IDs selects stored messages. Texts selects caller-supplied text.
	// Exactly one mode must be used.
	Peer   Peer
	IDs    []int
	Texts  []TranslationText
	ToLang string
	Tone   string
}

type TranslationResult struct {
	Texts []TranslationText
}