Initial open source release

This commit is contained in:
A 2026-06-04 01:37:39 +08:00
commit 74992e893f
377 changed files with 118084 additions and 0 deletions

View file

@ -0,0 +1,53 @@
package langpack
import (
"context"
"telesrv/internal/domain"
"telesrv/internal/store"
)
// Service 提供客户端语言包查询。
type Service struct {
packs store.LangPackStore
}
// NewService 创建 langpack 服务。
func NewService(packs store.LangPackStore) *Service {
return &Service{packs: packs}
}
// GetLangPack 返回完整语言包。
func (s *Service) GetLangPack(ctx context.Context, langPack, langCode string) (domain.LangPack, error) {
return s.GetDifference(ctx, langPack, langCode, 0)
}
// GetDifference 返回从 fromVersion 到当前版本的语言包差异。
func (s *Service) GetDifference(ctx context.Context, langPack, langCode string, fromVersion int) (domain.LangPack, error) {
if s == nil || s.packs == nil {
return domain.LangPack{LangPack: langPack, LangCode: langCode, FromVersion: fromVersion}, nil
}
return s.packs.GetPack(ctx, normalizePack(langPack), normalizeCode(langCode), fromVersion)
}
// GetStrings 返回指定 key 的语言包字符串。
func (s *Service) GetStrings(ctx context.Context, langPack, langCode string, keys []string) (domain.LangPack, error) {
if s == nil || s.packs == nil {
return domain.LangPack{LangPack: langPack, LangCode: langCode}, nil
}
return s.packs.GetStrings(ctx, normalizePack(langPack), normalizeCode(langCode), keys)
}
func normalizePack(langPack string) string {
if langPack == "" {
return "tdesktop"
}
return langPack
}
func normalizeCode(langCode string) string {
if langCode == "" {
return "en"
}
return langCode
}