i have this json file "{"title": "Antiques", "metadata": {"color": "#35C1E0"}, "data_schema": {"steps": [], "fields": [{"name": "images", "step": 2, "type": {"name": "image", "validators": []}, "position": 1, "component": {"data": [{"add": "Add", "l10n": {"ar": {"add": "يسسب", "subtitle": "ذنتي بمتد نبيمتب نمشيستب شمسنيت بنشمسيت بمنشتسي بنمتشسي بنمشتس يبمنشتس يمنب يسمنتب ش"}}, "subtitle": "The first photo will be displayed in the search results, select the best one. You can upload up to 10 photos in JPG or PNG format. The maximum photo size is 10MB.", "nb_images": 9}], "name": "inputImageProduct"}, "form_group": 1, "label_read": "Image(s)", "label_write": "Image(s)", "placeholder": "Images"}, {"name": "description", "step": 1, "type": {"name": "string", "validators": [{"name": "required", "pattern": ".{2,}", "error_message": "Description is required"}, {"name": "minimum", "pattern": 0, "error_message": "Description is too short"}, {"name": "maximum", "pattern": 4000, "error_message": "Description is too big"}]}, "position": 1, "component": {"data": [], "name": "textArea"}, "form_group": 1, "label_read": "Description", "label_write": "Description", "placeholder": "Description"}, {"l10n": {"ar": {"label_read": "تبوك", "label_write": "تبوك", "placeholder": "يسبسيدي"}}, "name": "tag", "step": 1, "type": {"name": "tag", "validators": [{"l10n": {"ar": {"error_message": "الإسم {} الأول مطلوب"}}, "name": "maximum", "pattern": 7, "error_message": "maximum char {} "}]}, "position": 1, "component": {"data": [], "name": "inputTag"}, "form_group": 1, "label_read": "Tag", "label_write": "Tag", "placeholder": "You can add up to {} tags"}, {"l10n": {"ar": {"label_read": "تبوك", "label_write": "تبوك", "placeholder": "سيبس"}}, "name": "price", "step": 1, "type": {"name": "text", "validators": [{"name": "numeric", "pattern": "^(?:[0-9]+(?:.[0-9]{1,})?|.[0-9]{1,})$", "error_message": "Must contain only numbers"}, {"name": "required", "error_message": "required"}]}, "position": 0, "component": {"data": [], "name": "inputPrice", "dependency": [{"l10n": {"ar": {"label_read": "", "label_write": "", "placeholder": "يسيس ب"}}, "name": "negotiable", "step": -1, "type": {"name": "checkbox", "validators": []}, "position": 1, "component": {"data": [], "name": "inputToggleCheckbox"}, "label_read": "Negotiable", "label_write": "Negotiable", "placeholder": ""}]}, "form_group": 1, "label_read": "Price", "label_write": "Price", "placeholder": "AED"}, {"name": "fast sell", "step": 1, "type": {"name": "checkbox", "validators": []}, "position": 1, "component": {"data": {"title": "Want to sell this ad faster", "description": "Your listing will be marked as a faster sell"}, "name": "inputToggleCheckbox"}, "form_group": 1, "label_read": "Fast Sell", "label_write": "Fast Sell", "placeholder": ""}], "filters": [{"l10n": {"ar": {"label_read": "تبوك", "placeholder": ""}}, "name": "type of ads", "type": {"name": "radio", "validators": []}, "position": 1, "component": {"data": [{"id": "11111", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Offers"}, {"id": "333333", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Auctions"}, {"id": "666666", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Live Auctions"}], "name": "inputRadioRounded"}, "label_read": "Type of Ads", "placeholder": "", "filter_group": 1}, {"l10n": {"ar": {"label_read": "تبوك", "label_write": "", "placeholder": ""}}, "name": "delivery methods", "step": 1, "type": {"name": "radio", "validators": []}, "position": 1, "component": {"data": [{"id": "11111", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Pick Up"}, {"id": "22222", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Delivery Service"}], "name": "inputCheckboxRounded"}, "form_group": 2, "label_read": "Delivery Methods", "label_write": "", "placeholder": ""}, {"l10n": {"ar": {"label_read": "تبوك", "label_write": "", "placeholder": ""}}, "name": "payment methods", "step": 1, "type": {"name": "radio", "validators": []}, "position": 1, "component": {"data": [{"id": "11111", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "QR"}, {"id": "22222", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Cash"}, {"id": "22222", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Online Payment"}], "name": "inputCheckboxRounded"}, "form_group": 2, "label_read": "Payment Methods", "label_write": "", "placeholder": ""}, {"l10n": {"ar": {"label_read": "سسيب بسيب", "label_write": "", "placeholder": ""}}, "name": "fast sell", "type": {"name": "checkbox", "validators": []}, "position": 1, "component": {"data": [], "name": "inputCheckboxTic"}, "label_read": "Fast Sell", "placeholder": "", "filter_group": 4}, {"l10n": {"ar": {"label_read": "تبوك", "placeholder": ""}}, "name": "ads posted", "type": {"name": "radio", "validators": []}, "position": 1, "component": {"data": [{"id": "11111", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "24 Hours"}, {"id": "222222", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "7 Days"}, {"id": "333333", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "All Time"}], "name": "inputCheckboxRounded"}, "label_read": "Ads Posted", "placeholder": "", "filter_group": 5}, {"l10n": {"ar": {"label_read": "تبوك", "label_write": "", "placeholder": ""}}, "name": "keyword", "step": 1, "type": {"name": "text", "validators": []}, "position": 0, "component": {"data": [], "name": "inputSearchKeywords"}, "label_read": "Keyword", "label_write": "Keyword", "placeholder": "Type in the keyword", "filter_group": 7}, {"l10n": {"ar": {"label_read": "تبوك", "label_write": "", "placeholder": ""}}, "name": "price", "type": {"name": "text", "validators": [{"l10n": {"ar": {"error_message": ""}}, "name": "", "pattern": "", "error_message": ""}, {"l10n": {"ar": {"error_message": ""}}, "name": "", "pattern": "", "error_message": ""}]}, "position": 1, "component": {"data": {"to": "To", "l10n": {"ar": {"to": "سيبسب", "from_text": "ثسبب"}}, "from_text": "From"}, "name": "inputTextDualPrice", "dependency": [{"l10n": {"ar": {"label_read": "", "label_write": "", "placeholder": "يسيس ب"}}, "name": "negotiable", "step": -1, "type": {"name": "checkbox", "validators": []}, "position": 1, "component": {"data": [], "name": "inputCheckboxTic"}, "label_read": "", "label_write": "", "placeholder": "Negotiable"}]}, "label_read": "Price", "label_write": "", "placeholder": "", "filter_group": 3}, {"l10n": {"ar": {"label_read": "تبوك", "placeholder": "سيبس"}}, "name": "emirate", "type": {"name": "radio", "validators": []}, "position": 1, "component": {"data": [{"id": "11111", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Dubai"}, {"id": "222222", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Abu Dhabi"}, {"id": "333333", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Ras Al Khaimah"}, {"id": "444444", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Sharjah"}, {"id": "555555", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Fujairah"}, {"id": "6666666", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Ajman"}, {"id": "777777", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Umm Al Quwain"}, {"id": "888888", "l10n": {"ar": {"name": "يسببسيب"}}, "name": "Al Ain"}], "name": "inputCheckboxRoundedLocation"}, "label_read": "Emirate", "placeholder": "", "filter_group": 5}], "stepper": [{"id": "", "data": {"l10n": {"ar": {"ad_title": "شي ثهته"}}, "ad_title": "Ad Title", "category": "Category", "background": true, "navigation": true}, "name": "search_product", "position": 1}, {"id": "", "data": {"l10n": {"ar": {"ad_title": "شي ثهته"}}, "ad_title": "Product detailc", "category": "Product detail", "background": true}, "name": "product_detail", "position": 2}, {"id": "", "data": {"l10n": {"ar": {"location": "سنتاي"}}, "location": "Location", "background": true, "navigation": true}, "name": "location", "position": 3}, {"id": "", "data": {"l10n": {"ar": {"delivery": "يثمهد", "payment_methods": "حشغو وثفاخ"}}, "delivery": "Delivery", "background": true, "navigation": true, "payment_cells": [{"id": "1", "alt": "", "hint": "How it works?", "icon": "/delivery-and-payment-method/qr-code.svg", "type": "qrcode", "title": "QR Code Release (Secure)", "additional": "+15 AED", "hint_modal": {"image": "/delivery-and-payment-method/hint.png", "steps": [{"title": "The customer pays the full amount online, but it will be held in our system.", "subtitle": "To protect buyers and sellers from fraud, a mutual exchange can be performed from anywhere, at anytime, using our secure escrow service."}, {"title": "Once the buyer receives the item, they will scan the QR code to release the funds.", "subtitle": "The seller will allow the customer to scan a designated QR code, which confirms that the item has been received, causing the payment to be moved into the seller’s account immediately."}], "title": "Release Online Payment to Seller Via QR Code"}}, {"id": "2", "alt": "", "icon": "/delivery-and-payment-method/cash.svg", "type": "default", "title": "Cash", "additional": ""}, {"id": "3", "alt": "", "icon": "/delivery-and-payment-method/debit-card.svg", "type": "default", "title": "Online Payment"}, {"id": "4", "alt": "", "icon": "/delivery-and-payment-method/cash.svg", "type": "default", "title": "Cash on Delivery"}], "delivery_cells": [{"id": "123", "alt": "", "icon": "/delivery-and-payment-method/pickup.svg", "type": "pickup", "title": "Pick Up", "subtitle": "To hand deliver the item to your buyer", "payment_ids": ["1", "2"]}, {"id": "957", "alt": "", "icon": "/delivery-and-payment-method/truck.svg", "type": "delivery-service", "title": "Delivery Service", "subtitle": "Please select the package size", "payment_ids": ["3", "4"], "package_sizes": [{"id": "1", "alt": "", "icon": "/delivery-and-payment-method/small-box.png", "title": "Small", "subtitle": "E.g. Mobile"}, {"id": "2", "alt": "", "icon": "/delivery-and-payment-method/medium-box.png", "title": "Medium", "subtitle": "E.g. Guitar"}, {"id": "3", "alt": "", "icon": "/delivery-and-payment-method/large-box.png", "title": "Large", "subtitle": "E.g. TV"}, {"id": "4", "alt": "", "icon": "/delivery-and-payment-method/extra-large-box.png", "title": "Extra Large", "subtitle": "E.g. Fridge"}], "delivery_method": [{"icon": "", "title": "", "subtitle": "", "additional": ""}, {"icon": "", "title": "", "subtitle": "", "additional": ""}, {"icon": "", "title": "", "subtitle": "", "additional": ""}]}], "payment_methods": "Payment methods", "payment_methods_title": "Payment Methods ", "delivery_methods_title": "Delivery Methods"}, "name": "delivery_and_payment_methods", "position": 4}, {"id": "", "data": {"l10n": {"ar": {"phone": "حاخر"}}, "phone": "Phone", "background": false, "navigation": false}, "name": "confirm_mobile_number", "position": 5}, {"id": "", "data": {"background": false, "navigation": false}, "name": "review_your_ad", "position": 7}], "form_group": [{"data": [{"l10n": {"ar": {"title": "لقب"}}, "title": ""}]}, {"data": [{"l10n": {"ar": {"title": "لقب"}}, "title": "Images"}]}], "filter_group": [], "auction_fields": [{"l10n": {"ar": {"label_read": "تبوك", "label_write": "تبوك", "placeholder": "سيبس"}}, "name": "initial_price", "step": 1, "type": {"name": "text", "validators": [{"name": "numeric", "pattern": "^(?:[0-9]+(?:.[0-9]{1,})?|.[0-9]{1,})$", "error_message": "Must contain only numbers"}, {"name": "required", "error_message": "required"}]}, "position": 0, "component": {"data": [], "name": "inputPrice", "dependency": []}, "form_group": 1, "label_read": "Initial price", "label_write": "Initial price", "placeholder": "AED"}, {"l10n": {"ar": {"label_read": "تبوك", "label_write": "تبوك", "placeholder": "سيبس"}}, "name": "reserve_price", "step": 1, "type": {"name": "text", "validators": [{"name": "numeric", "pattern": "^(?:[0-9]+(?:.[0-9]{1,})?|.[0-9]{1,})$", "error_message": "Must contain only numbers"}, {"name": "required", "error_message": "required"}]}, "position": 0, "component": {"data": [], "name": "inputPrice", "dependency": []}, "form_group": 1, "label_read": "Reserve price", "label_write": "Reserve price", "placeholder": "AED"}, {"l10n": {"ar": {"label_read": "", "label_write": "", "placeholder": "يسيس ب"}}, "name": "chat", "step": 1, "type": {"name": "checkbox", "validators": []}, "position": 0, "component": {"data": {"title": "Turn on chat"}, "name": "inputToggleCheckbox", "dependency": []}, "form_group": 1, "label_read": "Chat", "label_write": "Chat", "placeholder": ""}, {"name": "duration", "step": 1, "type": {"name": "select", "validators": [{"name": "required", "error_message": "Duration is required"}]}, "position": 0, "component": {"data": [{"id": "1", "l10n": {"ar": {"name": "يسببسيب"}}, "label": "2 Days", "seconds": 172800}, {"id": "2", "l10n": {"ar": {"name": "يسببسيب"}}, "label": "1 Week", "seconds": 604800}, {"id": "3", "l10n": {"ar": {"name": "يسببسيب"}}, "label": "2 Weeks", "seconds": 1209600}, {"id": "4", "l10n": {"ar": {"name": "يسببسيب"}}, "label": "3 Weeks", "seconds": 1814400}, {"id": "5", "l10n": {"ar": {"name": "يسببسيب"}}, "label": "4 Weeks", "seconds": 2419200}], "name": "inputDurationSelect"}, "form_group": 1, "label_read": "Duration", "label_write": "Duration", "placeholder": "Select"}, {"l10n": {"ar": {"label_read": "", "label_write": "", "placeholder": "يسيس ب"}}, "name": "enable_start_date", "step": 1, "type": {"name": "checkbox", "validators": []}, "position": 0, "component": {"data": {"title": "Enable Scheduled auction"}, "name": "inputToggleCheckbox", "dependency": [{"l10n": {"ar": {"label_read": "تبوك", "label_write": "تبوك", "placeholder": "سيبس"}}, "name": "start_date", "step": 1, "type": {"name": "text", "validators": [{"name": "required", "error_message": "required"}]}, "position": 0, "component": {"data": {"title": "Select a date and time"}, "name": "inputDatePicker", "dependency": []}, "form_group": 1, "label_read": "Starts on", "label_write": "Starts on", "placeholder": "Starts on"}]}, "form_group": 1, "label_read": "Scheduled auction", "label_write": "Scheduled auction", "placeholder": ""}], "live_auction_fields": [{"l10n": {"ar": {"label_read": "تبوك", "label_write": "تبوك", "placeholder": "سيبس"}}, "name": "initial_price", "step": 1, "type": {"name": "text", "validators": [{"name": "numeric", "pattern": "^(?:[0-9]+(?:.[0-9]{1,})?|.[0-9]{1,})$", "error_message": "Must contain only numbers"}, {"name": "required", "error_message": "required"}]}, "position": 0, "component": {"data": [], "name": "inputPrice", "dependency": []}, "form_group": 1, "label_read": "Initial price", "label_write": "Initial price", "placeholder": "AED"}, {"l10n": {"ar": {"label_read": "تبوك", "label_write": "تبوك", "placeholder": "سيبس"}}, "name": "reserve_price", "step": 1, "type": {"name": "text", "validators": [{"name": "numeric", "pattern": "^(?:[0-9]+(?:.[0-9]{1,})?|.[0-9]{1,})$", "error_message": "Must contain only numbers"}, {"name": "required", "error_message": "required"}]}, "position": 0, "component": {"data": [], "name": "inputPrice", "dependency": []}, "form_group": 1, "label_read": "Reserve price", "label_write": "Reserve price", "placeholder": "AED"}, {"l10n": {"ar": {"label_read": "", "label_write": "", "placeholder": "يسيس ب"}}, "name": "chat", "step": 1, "type": {"name": "checkbox", "validators": []}, "position": 0, "component": {"data": {"title": "Turn on chat"}, "name": "inputToggleCheckbox", "dependency": []}, "form_group": 1, "label_read": "Chat", "label_write": "Chat", "placeholder": ""}, {"name": "duration", "step": 1, "type": {"name": "select", "validators": [{"name": "required", "error_message": "Duration is required"}]}, "position": 0, "component": {"data": [{"id": "1", "l10n": {"ar": {"name": "يسببسيب"}}, "label": "30 minutes", "seconds": 1800}, {"id": "2", "l10n": {"ar": {"name": "يسببسيب"}}, "label": "45 minutes", "seconds": 2700}, {"id": "3", "l10n": {"ar": {"name": "يسببسيب"}}, "label": "60 minutes", "seconds": 3600}], "name": "inputDurationSelect"}, "form_group": 1, "label_read": "Duration", "label_write": "Duration", "placeholder": "Select"}, {"l10n": {"ar": {"label_read": "تبوك", "label_write": "تبوك", "placeholder": "سيبس"}}, "name": "start_date", "step": 1, "type": {"name": "text", "validators": [{"name": "required", "error_message": "required"}]}, "position": 0, "component": {"data": {"title": "Select a date and time"}, "name": "inputDatePicker", "dependency": []}, "form_group": 1, "label_read": "Starts on", "label_write": "Starts on", "placeholder": "Starts on"}]}}" I need a script to add l10n for all the objects with ar and ru if not found
if we already have l18n with ar we should add ru
"name": "minimum", "pattern": 0, "error_message": "Description is too short", "l10n": { "ar": { "name": "ARA", "pattern": 0, "error_message": "ARABIC" }, "ru": { "name": "RUS", "pattern": 0, "error_message": "RUS"
like this example