diff --git a/pkg/schema/localizer/localizer.go b/pkg/schema/localizer/localizer.go
index 4cc99d6075447c3eefe249f0b2963dca436c6e4f..c8d8604ff39a0938569ae39dd429f3c4a7f897e5 100644
--- a/pkg/schema/localizer/localizer.go
+++ b/pkg/schema/localizer/localizer.go
@@ -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
 }
diff --git a/pkg/schema/localizer/localizer_test.go b/pkg/schema/localizer/localizer_test.go
index ab6b277cdcad36a1ffdd217f1ec198a2bf958f9f..8389f0387a7279a98bd666918fd4854a2b7b3499 100644
--- a/pkg/schema/localizer/localizer_test.go
+++ b/pkg/schema/localizer/localizer_test.go
@@ -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{}{