fix(langpack): sync WebK catalog alias support
This commit is contained in:
parent
9ef746d45e
commit
a785ae7491
7 changed files with 313 additions and 8 deletions
|
|
@ -70,6 +70,9 @@ func (s *Service) GetDifference(ctx context.Context, langPack, langCode string,
|
|||
if s == nil || s.packs == nil {
|
||||
return domain.LangPack{LangPack: packName, LangCode: code, FromVersion: fromVersion}, nil
|
||||
}
|
||||
if err := s.validateLanguage(ctx, packName, code); err != nil {
|
||||
return domain.LangPack{}, err
|
||||
}
|
||||
var (
|
||||
pack domain.LangPack
|
||||
err error
|
||||
|
|
@ -96,6 +99,9 @@ func (s *Service) GetStrings(ctx context.Context, langPack, langCode string, key
|
|||
if s == nil || s.packs == nil {
|
||||
return domain.LangPack{LangPack: packName, LangCode: code}, nil
|
||||
}
|
||||
if err := s.validateLanguage(ctx, packName, code); err != nil {
|
||||
return domain.LangPack{}, err
|
||||
}
|
||||
pack, err := s.effectivePack(ctx, packName, code)
|
||||
if err != nil {
|
||||
return domain.LangPack{}, err
|
||||
|
|
@ -123,7 +129,14 @@ func (s *Service) ListLanguages(ctx context.Context, langPack string) ([]domain.
|
|||
if s == nil || s.packs == nil {
|
||||
return nil, nil
|
||||
}
|
||||
return s.cachedLanguages(ctx, packName)
|
||||
languages, err := s.cachedLanguages(ctx, packName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(languages) == 0 {
|
||||
return nil, domain.ErrLangPackInvalid
|
||||
}
|
||||
return languages, nil
|
||||
}
|
||||
|
||||
func normalizePack(langPack string) string {
|
||||
|
|
@ -131,6 +144,9 @@ func normalizePack(langPack string) string {
|
|||
if pack == "" {
|
||||
return "tdesktop"
|
||||
}
|
||||
if pack == "web" {
|
||||
return "webk"
|
||||
}
|
||||
return pack
|
||||
}
|
||||
|
||||
|
|
@ -262,6 +278,22 @@ func (s *Service) cachedLanguages(ctx context.Context, langPack string) ([]domai
|
|||
}
|
||||
}
|
||||
|
||||
func (s *Service) validateLanguage(ctx context.Context, langPack, langCode string) error {
|
||||
languages, err := s.cachedLanguages(ctx, langPack)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(languages) == 0 {
|
||||
return domain.ErrLangPackInvalid
|
||||
}
|
||||
for _, language := range languages {
|
||||
if normalizeCode(language.LangCode) == langCode {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return domain.ErrLangCodeNotSupported
|
||||
}
|
||||
|
||||
func (s *Service) brandPack(pack domain.LangPack) domain.LangPack {
|
||||
for i := range pack.Strings {
|
||||
item := &pack.Strings[i]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue