Skip to content
Snippets Groups Projects
Commit d5d63c0a authored by Pavel Antonov's avatar Pavel Antonov :asterisk:
Browse files

Merge branch 'feature/3264-FixExtracTranslationsArrays' into 'master'

Исправлена ошибка при "прореживании" переводов элементов массивов

See merge request perxis/perxis-go!468
parents 5472b224 72154f77
No related branches found
No related tags found
No related merge requests found
......@@ -240,14 +240,20 @@ func localize(c *walk.WalkContext) (err error) {
return
}
func extractTranslation(c *walk.WalkContext) (err error) {
func extractTranslation(c *walk.WalkContext) error {
if c.Dst == nil {
return
return nil
}
if reflect.DeepEqual(c.Src, c.Dst) {
c.Dst = nil
c.Changed = true
return nil
}
return
// если массивы отличаются, то не очищаем совпадающие элементы
if _, ok := c.Field.Params.(*field.ArrayParameters); ok {
c.Src = nil
return nil
}
return nil
}
......@@ -370,6 +370,32 @@ func TestLocalizer_localize(t *testing.T) {
},
},
},
{
name: "Success arrays",
fallback: map[string]any{
"slice": []any{"en_s1", "en_s2"},
"arr": []any{
map[string]any{"num": 11},
map[string]any{"num": 22},
},
},
target: map[string]any{
"slice": []any{nil, nil, "ru_s3"},
"arr": []any{
nil,
map[string]any{"num": 2},
nil,
},
},
want: map[string]any{
"slice": []any{"en_s1", "en_s2", "ru_s3"},
"arr": []any{
map[string]any{"num": 11},
map[string]any{"num": 2},
nil,
},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
......@@ -613,6 +639,31 @@ func TestLocalizer_extractTranslation(t *testing.T) {
},
},
},
{
name: "Success arrays",
fallback: map[string]any{
"slice": []any{"en_s1", "en_s2"},
"arr": []any{
map[string]any{"num": 11},
map[string]any{"num": 22},
},
},
target: map[string]any{
"slice": []interface{}{"en_s1", "en_s2"},
"arr": []interface{}{
map[string]any{"num": 11},
map[string]any{"num": 2},
map[string]any{"num": 22},
},
},
want: map[string]any{
"arr": []interface{}{
map[string]any{"num": 11},
map[string]any{"num": 2},
map[string]any{"num": 22},
},
},
},
{
name: "Success singlelocale obj",
fallback: map[string]interface{}{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment