diff --git a/pkg/items/item.go b/pkg/items/item.go index b29dfe98d02f9a373504c6e75295d20c0ef7d76b..a145bf532ef43353ad2a25ddb92d4f0471e37723 100644 --- a/pkg/items/item.go +++ b/pkg/items/item.go @@ -219,7 +219,7 @@ func (i *Item) Localize(localizer *localizer.Localizer) (err error) { func (i Item) Encode(ctx context.Context, s *schema.Schema) (*Item, error) { if i.Data != nil { - dt, err := schema.Encode(nil, s, i.Data) + dt, err := schema.Encode(ctx, s, i.Data) if err != nil { // return errors.WithField(err, "data") return nil, err @@ -228,7 +228,7 @@ func (i Item) Encode(ctx context.Context, s *schema.Schema) (*Item, error) { } if len(i.Translations) > 0 { for l, v := range i.Translations { - dt, err := schema.Encode(nil, s, v) + dt, err := schema.Encode(ctx, s, v) if err != nil { // return errors.WithField(err, fmt.Sprintf("translations.%s", l)) return nil, err @@ -240,7 +240,6 @@ func (i Item) Encode(ctx context.Context, s *schema.Schema) (*Item, error) { } func (i Item) Decode(ctx context.Context, s *schema.Schema) (res *Item, err error) { - if i.Data != nil { i.Data, err = s.Decode(ctx, i.Data) if err != nil { @@ -248,7 +247,15 @@ func (i Item) Decode(ctx context.Context, s *schema.Schema) (res *Item, err erro // return errors.WithField(err, "data") } } - + if len(i.Translations) > 0 { + for l, v := range i.Translations { + dt, err := schema.Decode(ctx, s, v) + if err != nil { + return nil, err + } + i.Translations[l] = dt.(map[string]interface{}) + } + } return &i, nil }