[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-homepage":3,"footer-settings":84,"footer-integrations":220,"main-navigation":1197,"blog-post-nav-[USE LATEST FEATURED]":1814,"blog-post-nav-nav":1835,"blog-react-i18next-localazy-part-2-setting-up-translations":1850},{"status":4,"header_badges":5,"footer_badges":27,"footer_secured_badges":34,"slider_badges":48},"published",[6,15,21],{"id":7,"status":4,"sort":8,"link":9,"title":10,"badgeType":11,"badgeName":12,"metadata":8,"image":13},1,null,"https:\u002F\u002Fwww.g2.com\u002Fproducts\u002Flocalazy\u002Freviews","Best meets requirements","Other","G2-winter-24-best-meets-requirments",{"id":14},"8d5dd6fd-6995-4c92-8219-a6ed5ba6acdc",{"id":16,"status":4,"sort":8,"link":9,"title":17,"badgeType":11,"badgeName":18,"metadata":8,"image":19},2,"Best support","G2-winter-24-best-support",{"id":20},"e59dd465-84d9-45c7-987d-dd4048fd6992",{"id":22,"status":4,"sort":8,"link":9,"title":23,"badgeType":11,"badgeName":24,"metadata":8,"image":25},3,"Easiest admin","G2-winter-24-easiest-admin",{"id":26},"5f12c4c8-bec0-47cf-87b4-a4502e9f1bd2",[28],{"id":29,"status":4,"sort":8,"link":9,"title":30,"badgeType":11,"badgeName":31,"metadata":8,"image":32},12,"Users love us","Users love us 25",{"id":33},"232416a5-86ba-4be6-85a5-b88802003d53",[35,42],{"id":36,"status":4,"sort":8,"link":37,"title":38,"badgeType":11,"badgeName":39,"metadata":8,"image":40},11,"https:\u002F\u002Fsprinto.com\u002Fget-iso-27001\u002F","Sprinto ISO 27001","Sprinto ISO 27001 certificate",{"id":41},"c1c6c06c-6caf-4b78-8a7e-9606c395eb61",{"id":43,"status":4,"sort":8,"link":44,"title":45,"badgeType":11,"badgeName":45,"metadata":8,"image":46},13,"https:\u002F\u002Fwww.aicpa.org\u002Fsoc4so","SOC certificate",{"id":47},"4f4bc0a6-09a0-41df-8295-8f990d96d941",[49,56,61,66,71,76,82],{"id":50,"status":4,"sort":8,"link":9,"title":51,"badgeType":11,"badgeName":52,"metadata":53,"image":54},5,"Most likely to recommend","a","",{"id":55},"da055731-3f11-4fc7-96f2-c11c0b84c831",{"id":57,"status":4,"sort":8,"link":9,"title":58,"badgeType":11,"badgeName":8,"metadata":8,"image":59},6,"EMEA High Performer",{"id":60},"586fb488-81f2-41db-a4e8-ef309e50c0e6",{"id":62,"status":4,"sort":8,"link":9,"title":63,"badgeType":11,"badgeName":8,"metadata":8,"image":64},7,"Ease of Doing Business With",{"id":65},"bfa26865-430e-463d-9886-cb56a8a8ecf6",{"id":67,"status":4,"sort":8,"link":9,"title":68,"badgeType":11,"badgeName":8,"metadata":8,"image":69},8,"High Performer",{"id":70},"2cc1ba0f-c23a-4c97-ad4a-a655c97466fe",{"id":72,"status":4,"sort":8,"link":9,"title":73,"badgeType":11,"badgeName":8,"metadata":8,"image":74},9,"Fastest Implementation",{"id":75},"6f297758-1c95-45f4-a6e9-528319897132",{"id":77,"status":4,"sort":8,"link":78,"title":79,"badgeType":11,"badgeName":8,"metadata":8,"image":80},10,"https:\u002F\u002Fwww.intercert.com\u002Fservices\u002Fgovernance-risk-compliance\u002Fiso-iec-27001","Intercert ISO 27001",{"id":81},"0521a5f1-e1f2-4da6-a2bc-dc92773f2a7b",{"id":36,"status":4,"sort":8,"link":37,"title":38,"badgeType":11,"badgeName":39,"metadata":8,"image":83},{"id":41},{"id":7,"status":4,"security_section_title":85,"loved_section_title":86,"columns":87,"social_links":180,"policy_links":210},"Secured & trusted","Loved by users",[88,102,119,141,145],{"id":7,"status":4,"sort":8,"title":89,"column_key":90,"links":91},"Localazy","connect",[92,95,98],{"id":36,"status":4,"sort":7,"title":93,"url":94},"Book a demo","___LOCALAZY_MEETING_URL___",{"id":29,"status":4,"sort":16,"title":96,"url":97},"Contact","\u002Fcontact",{"id":99,"status":4,"sort":22,"title":100,"url":101},21,"About us","\u002Fabout-us",{"id":16,"status":4,"sort":8,"title":103,"column_key":104,"links":105},"Programs","programs",[106,110,113,116],{"id":7,"status":4,"sort":107,"title":108,"url":109},4,"Partner Program","\u002Fpartnership",{"id":16,"status":4,"sort":50,"title":111,"url":112},"Ambassador Program","\u002Fambassador",{"id":22,"status":4,"sort":57,"title":114,"url":115},"Startup Program","\u002Ffor\u002Fstartups",{"id":107,"status":4,"sort":62,"title":117,"url":118},"Nonprofits","\u002Ffor\u002Fnonprofit",{"id":22,"status":4,"sort":8,"title":120,"column_key":121,"links":122},"Use Cases","use_cases",[123,126,129,132,135,138],{"id":50,"status":4,"sort":67,"title":124,"url":125},"Software Localization","\u002Fterm\u002Fsoftware-localization",{"id":57,"status":4,"sort":72,"title":127,"url":128},"Machine Translation Services","\u002Ffeatures\u002Fmachine-translation",{"id":62,"status":4,"sort":77,"title":130,"url":131},"Translation API","\u002Ffeatures\u002Ftranslation-api",{"id":67,"status":4,"sort":36,"title":133,"url":134},"Crowdsourced Translations","\u002Ffeatures\u002Fshare-tm",{"id":72,"status":4,"sort":29,"title":136,"url":137},"Figma i18n & localization","\u002Ffeatures\u002Ffigma-localization-plugin",{"id":77,"status":4,"sort":43,"title":139,"url":140},"Translation as a Service","\u002Fterm\u002Ftranslation-service",{"id":107,"status":4,"sort":8,"title":142,"column_key":143,"links":144},"Integrations","integrations",[],{"id":50,"status":4,"sort":8,"title":146,"column_key":147,"links":148},"Resources","resources",[149,153,157,161,165,169,173,177],{"id":43,"status":4,"sort":150,"title":151,"url":152},14,"Documentation","\u002Fdocs",{"id":150,"status":4,"sort":154,"title":155,"url":156},15,"Dictionary","\u002Fdictionary",{"id":154,"status":4,"sort":158,"title":159,"url":160},16,"Case Studies","\u002Fcase-study",{"id":158,"status":4,"sort":162,"title":163,"url":164},17,"Discussion forum","___DISCUSS_URL___",{"id":162,"status":4,"sort":166,"title":167,"url":168},18,"Localization Blog","\u002Fblog",{"id":166,"status":4,"sort":170,"title":171,"url":172},19,"FAQ","\u002Ffaq",{"id":170,"status":4,"sort":174,"title":175,"url":176},20,"Pricing","\u002Fpricing",{"id":174,"status":4,"sort":99,"title":178,"url":179},"Brand assets","https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Fu\u002F1\u002Ffolders\u002F1tZqsZHBlGelz7A2FwTsiwrs4j3sd9HTk",[181,186,191,196,201,206],{"id":7,"status":4,"sort":8,"platform":182,"icon":183,"url":184,"label":185},"feed","rss","\u002Ffeed.xml","Localazy RSS Feed",{"id":16,"status":4,"sort":8,"platform":187,"icon":188,"url":189,"label":190},"facebook","fb-logo","https:\u002F\u002Fwww.facebook.com\u002Flocalazy\u002F","Localazy facebook",{"id":22,"status":4,"sort":8,"platform":192,"icon":193,"url":194,"label":195},"github","github-logo","https:\u002F\u002Fgithub.com\u002Flocalazy","Localazy GitHub",{"id":107,"status":4,"sort":8,"platform":197,"icon":198,"url":199,"label":200},"x","x-twitter","https:\u002F\u002Fx.com\u002Flocalazy","Localazy X",{"id":50,"status":4,"sort":8,"platform":202,"icon":203,"url":204,"label":205},"linkedin","linkedin-logo","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002F37836599\u002F","Localazy LinkedIn",{"id":57,"status":4,"sort":8,"platform":207,"icon":208,"url":164,"label":209},"discourse","discourse-logo","Localazy Discourse",[211,214,217],{"id":7,"status":4,"sort":8,"title":212,"url":213,"action":8},"Privacy policy","\u002Fprivacy-policy",{"id":16,"status":4,"sort":8,"title":215,"url":216,"action":8},"Terms & Conditions","\u002Fterms-and-conditions",{"id":22,"status":4,"sort":8,"title":218,"url":8,"action":219},"Cookies","cookie-consent",[221,387,468,579,671,755,847,940,1029,1136],{"id":222,"status":4,"created_on":223,"modified_on":224,"name":225,"slug":226,"description":227,"docs_link":228,"priority":8,"has_sdk":229,"sort":22,"highlighted":229,"in_menu":230,"changefreq":8,"support_type":231,"show_in_spa":230,"is_file_format":229,"meta_title":8,"meta_description":8,"featured_on_web":230,"marketing_subtitle":232,"tile_subtitle":233,"tile_description":234,"is_enterprise":229,"is_popular":229,"primary_use_case":8,"hierarchy_handling":8,"best_for":8,"file_extension":8,"format_code_example":8,"format_to_extension":235,"upload_features":237,"icon":238,"meta_image":240,"primary_tag":242,"tags":261,"integration_methods":281,"recommended_methods":371,"default_integration_method":372,"faq_categories":379,"translations":385,"platforms_id":222},33,"2022-03-18T08:09:24.000Z","2025-02-26T13:36:08.000Z","React","react","Manage your React app translations with Localazy, a continuous localization tool. React i18n done right. ","\u002Fdocs\u002Fcli\u002Fjson-format",false,true,"JSON format support","CLI support","react-i18next and more","Use Localazy to translate your React projects with your favorite i18n library.",{"json":236},"json",[],{"id":239},"26757a90-88a3-4a94-b587-9f38614ed3bd",{"id":241},"a97492ec-ee8d-429c-bf66-d0fe59b6e5c9",{"id":50,"status":4,"sort":16,"created_on":243,"label":244,"hidden":229,"icon":245,"translations":247},"2022-03-17T12:23:44.000Z","Web apps",{"id":246},"c9e70e4f-8136-432a-8d82-53c3501a9eb4",[248,250,254,258],{"id":50,"languages_code":249,"label":244},"xxa",{"id":251,"languages_code":252,"label":253},45,"es","Aplicaciones web",{"id":255,"languages_code":256,"label":257},50,"cs","Webové aplikace",{"id":259,"languages_code":260,"label":244},59,"en",[262,269],{"id":50,"status":4,"sort":16,"label":244,"hidden":229,"created_on":243,"icon":263,"translations":264},{"id":246},[265,266,267,268],{"id":50,"languages_code":249,"label":244},{"id":251,"languages_code":252,"label":253},{"id":255,"languages_code":256,"label":257},{"id":259,"languages_code":260,"label":244},{"id":67,"status":4,"sort":72,"label":270,"hidden":229,"created_on":271,"icon":8,"translations":272},"Framework","2022-03-17T12:23:45.000Z",[273,274,277,279],{"id":67,"languages_code":249,"label":270},{"id":275,"languages_code":252,"label":276},53,"Marco",{"id":278,"languages_code":256,"label":270},60,{"id":280,"languages_code":260,"label":270},67,[282,296,326,349],{"id":107,"status":4,"sort":57,"label":283,"alternative_label":8,"slug":284,"description":285,"documentation_link":286,"loc_icon":284,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":287},"API","api","Translate strings directly or upload them into your Localazy project.","\u002Fdocs\u002Fapi\u002Fintroduction",[288,289,292,294],{"id":107,"languages_code":249,"label":283,"description":285,"slug":284},{"id":290,"languages_code":252,"label":283,"description":291,"slug":284},40,"Utilice la API para exportar traducciones e importar contenido de\u002Fa Localazy mediante programación.",{"id":255,"languages_code":260,"label":283,"description":293,"slug":284},"Choose between translating strings directly or uploading them into Localazy.",{"id":259,"languages_code":256,"label":283,"description":295,"slug":284},"Pomocí rozhraní API můžete programovaně exportovat překlady a importovat obsah z\u002Fdo Localazy.",{"id":22,"status":4,"sort":50,"label":297,"alternative_label":8,"slug":298,"description":299,"documentation_link":300,"loc_icon":301,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":302},"Create source keys online","add-keys-manually","Add source keys via the web interface online and sync them into your project later.","\u002Fdocs\u002Fgeneral\u002Fimporting-localization-files#add-new-keys-in-ui","vpn-key-outline",[303,304,308,310,313,317,319,321],{"id":22,"languages_code":249,"label":297,"description":299,"slug":298},{"id":305,"languages_code":252,"label":306,"description":307,"slug":8},39,"Cree claves fuente en línea","Añada claves fuente a través de la interfaz web en línea y sincronícelas posteriormente en su proyecto.",{"id":309,"languages_code":260,"label":297,"description":299,"slug":298},51,{"id":278,"languages_code":256,"label":311,"description":312,"slug":8},"Vytvářejte zdrojové klíče online","Přidejte zdrojové klíče přes webové rozhraní online a synchronizujte je do svého projektu později.",{"id":314,"languages_code":252,"label":315,"description":316,"slug":298},64,"Cree claves de origen en línea","Añada claves de origen a través de la interfaz web en línea y sincronícelas posteriormente en su proyecto.",{"id":318,"languages_code":260,"label":297,"description":299,"slug":298},65,{"id":320,"languages_code":256,"label":311,"description":312,"slug":298},66,{"id":322,"languages_code":323,"label":324,"description":325,"slug":8},88,"de","Erstellen Sie Quellschlüssel online","Fügen Sie Quellschlüssel über die Weboberfläche online hinzu und synchronisieren Sie sie später mit Ihrem Projekt.",{"id":16,"status":4,"sort":107,"label":327,"alternative_label":328,"slug":329,"description":330,"documentation_link":331,"loc_icon":332,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":333},"Direct file upload","File upload","web-upload","Upload your texts and existing translations in any format directly to start quickly.","\u002Fdocs\u002Fgeneral\u002Fimporting-localization-files","file-upload",[334,335,339,341,345],{"id":16,"languages_code":249,"label":327,"description":330,"slug":329},{"id":336,"languages_code":252,"label":337,"description":338,"slug":8},38,"Carga directa de archivos","Cargue sus textos y traducciones existentes en cualquier formato directamente para empezar rápidamente.",{"id":340,"languages_code":260,"label":327,"description":330,"slug":329},47,{"id":342,"languages_code":256,"label":343,"description":344,"slug":8},56,"Přímé nahrávání souborů","Nahrajte přímo své texty a stávající překlady v libovolném formátu a začněte pracovat ihned.",{"id":346,"languages_code":323,"label":347,"description":348,"slug":8},85,"Direkter Datei-Upload","Laden Sie Ihre Texte und vorhandenen Übersetzungen in einem beliebigen Format direkt hoch, um schnell loszulegen.",{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":355},"Command Line Interface","CLI","cli","The best option for developers that want to make localization an automated part of their workflow.","\u002Fdocs\u002Fcli\u002Fthe-basics",[356,357,361,363,367],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},37,"Interfaz de Línea de Comandos","La mejor opción para los desarrolladores que deseen hacer de la localización una parte automatizada de su flujo de trabajo.",{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},46,{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},55,"Rozhraní Příkazového Řádku","Nejlepší volba pro vývojáře, kteří chtějí, aby se lokalizace stala automatizovanou součástí jejich pracovních postupů.",{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},87,"Befehlszeilenschnittstelle","Die beste Option für Entwickler, die die Lokalisierung zu einem automatisierten Teil ihres Arbeitsablaufs machen möchten.",[],{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":373},[374,375,376,377,378],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[380],{"id":381,"status":4,"created_on":382,"sort":8,"slug":383,"label":384,"on_faq_index":8},76,"2025-02-26T12:44:29.000Z","front-end-common","Front-end Common",[386],{"languages_code":249,"name":225,"slug":226,"description":227,"support_type":231,"meta_title":8,"meta_description":8,"marketing_subtitle":232,"tile_subtitle":233,"tile_description":234,"id":222,"platforms_id":222,"docs_link":228},{"id":170,"status":4,"created_on":223,"modified_on":388,"name":389,"slug":390,"description":391,"docs_link":228,"priority":8,"has_sdk":229,"sort":107,"highlighted":229,"in_menu":230,"changefreq":8,"support_type":231,"show_in_spa":230,"is_file_format":229,"meta_title":8,"meta_description":8,"featured_on_web":230,"marketing_subtitle":232,"tile_subtitle":392,"tile_description":393,"is_enterprise":229,"is_popular":229,"primary_use_case":8,"hierarchy_handling":8,"best_for":8,"file_extension":8,"format_code_example":8,"format_to_extension":394,"upload_features":395,"icon":396,"meta_image":398,"primary_tag":400,"tags":407,"integration_methods":421,"recommended_methods":452,"default_integration_method":453,"faq_categories":460,"translations":466,"platforms_id":170},"2025-02-26T13:35:41.000Z","Vue.js","vuejs","Online Vue.js project localization tool for your translation management. Enjoy true continuous localization with Localazy & translate your JSON files automatically.","Vue.js & JSON","Enjoy true continuous localization with Localazy & translate your Vue projects automatically.",{"json":236},[],{"id":397},"6180b41f-3249-47d3-adcd-50fe1cf11bf1",{"id":399},"8171b836-d6b8-4354-8db3-34ccd384970d",{"id":50,"status":4,"sort":16,"created_on":243,"label":244,"hidden":229,"icon":401,"translations":402},{"id":246},[403,404,405,406],{"id":50,"languages_code":249,"label":244},{"id":251,"languages_code":252,"label":253},{"id":255,"languages_code":256,"label":257},{"id":259,"languages_code":260,"label":244},[408,415],{"id":50,"status":4,"sort":16,"label":244,"hidden":229,"created_on":243,"icon":409,"translations":410},{"id":246},[411,412,413,414],{"id":50,"languages_code":249,"label":244},{"id":251,"languages_code":252,"label":253},{"id":255,"languages_code":256,"label":257},{"id":259,"languages_code":260,"label":244},{"id":67,"status":4,"sort":72,"label":270,"hidden":229,"created_on":271,"icon":8,"translations":416},[417,418,419,420],{"id":67,"languages_code":249,"label":270},{"id":275,"languages_code":252,"label":276},{"id":278,"languages_code":256,"label":270},{"id":280,"languages_code":260,"label":270},[422,428,438,445],{"id":107,"status":4,"sort":57,"label":283,"alternative_label":8,"slug":284,"description":285,"documentation_link":286,"loc_icon":284,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":423},[424,425,426,427],{"id":107,"languages_code":249,"label":283,"description":285,"slug":284},{"id":290,"languages_code":252,"label":283,"description":291,"slug":284},{"id":255,"languages_code":260,"label":283,"description":293,"slug":284},{"id":259,"languages_code":256,"label":283,"description":295,"slug":284},{"id":22,"status":4,"sort":50,"label":297,"alternative_label":8,"slug":298,"description":299,"documentation_link":300,"loc_icon":301,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":429},[430,431,432,433,434,435,436,437],{"id":22,"languages_code":249,"label":297,"description":299,"slug":298},{"id":305,"languages_code":252,"label":306,"description":307,"slug":8},{"id":309,"languages_code":260,"label":297,"description":299,"slug":298},{"id":278,"languages_code":256,"label":311,"description":312,"slug":8},{"id":314,"languages_code":252,"label":315,"description":316,"slug":298},{"id":318,"languages_code":260,"label":297,"description":299,"slug":298},{"id":320,"languages_code":256,"label":311,"description":312,"slug":298},{"id":322,"languages_code":323,"label":324,"description":325,"slug":8},{"id":16,"status":4,"sort":107,"label":327,"alternative_label":328,"slug":329,"description":330,"documentation_link":331,"loc_icon":332,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":439},[440,441,442,443,444],{"id":16,"languages_code":249,"label":327,"description":330,"slug":329},{"id":336,"languages_code":252,"label":337,"description":338,"slug":8},{"id":340,"languages_code":260,"label":327,"description":330,"slug":329},{"id":342,"languages_code":256,"label":343,"description":344,"slug":8},{"id":346,"languages_code":323,"label":347,"description":348,"slug":8},{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":446},[447,448,449,450,451],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[],{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":454},[455,456,457,458,459],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[461,465],{"id":342,"status":4,"created_on":462,"sort":8,"slug":463,"label":464,"on_faq_index":8},"2023-03-01T11:21:41.000Z","vue-localization","Vue.js Localization",{"id":381,"status":4,"created_on":382,"sort":8,"slug":383,"label":384,"on_faq_index":8},[467],{"languages_code":249,"name":389,"slug":390,"description":391,"support_type":231,"meta_title":8,"meta_description":8,"marketing_subtitle":232,"tile_subtitle":392,"tile_description":393,"id":170,"platforms_id":170,"docs_link":228},{"id":7,"status":4,"created_on":223,"modified_on":469,"name":470,"slug":471,"description":472,"docs_link":473,"priority":8,"has_sdk":229,"sort":57,"highlighted":229,"in_menu":230,"changefreq":8,"support_type":474,"show_in_spa":230,"is_file_format":229,"meta_title":8,"meta_description":8,"featured_on_web":229,"marketing_subtitle":232,"tile_subtitle":474,"tile_description":475,"is_enterprise":229,"is_popular":229,"primary_use_case":476,"hierarchy_handling":477,"best_for":478,"file_extension":479,"format_code_example":480,"format_to_extension":481,"upload_features":483,"icon":484,"meta_image":486,"primary_tag":488,"tags":499,"integration_methods":537,"recommended_methods":568,"default_integration_method":569,"faq_categories":576,"translations":577,"platforms_id":7},"2025-07-03T14:21:42.000Z","Flutter","flutter","Learn how to use Localazy CLI for localization of Flutter app. Flutter’s ARB format is fully supported including arrays, plurals, and selected context information. No extra configuration is necessary, but you can enable certain features if you want to.","\u002Fdocs\u002Fcli\u002Fflutter-format","ARB format support","Use the Localazy CLI for localization of Flutter projects. Flutter’s ARB format is fully supported.","Supports metadata like placeholders","JSON-like key-value","Flutter apps",".arb","```\n{\n  \"localazy_message\": \"Go international, today. With Localazy.\"\n}\n```",{"arb":482},"arb",[],{"id":485},"b9f13a11-9328-4a03-86cf-b20de0685606",{"id":487},"c2674666-4371-4aa4-9a65-438c7363fafe",{"id":57,"status":4,"sort":67,"created_on":271,"label":489,"hidden":229,"icon":490,"translations":492},"Mobile apps",{"id":491},"c9c7e1f5-8b59-4016-ae0c-6fba9469cd55",[493,494,496,498],{"id":57,"languages_code":249,"label":489},{"id":362,"languages_code":252,"label":495},"Aplicaciones móviles",{"id":364,"languages_code":256,"label":497},"Mobilní aplikace",{"id":318,"languages_code":260,"label":489},[500,511,518,525],{"id":62,"status":4,"sort":170,"label":501,"hidden":229,"created_on":271,"icon":502,"translations":504},"Desktop & Games",{"id":503},"65b04533-5b4c-430c-b8a4-ecce84754200",[505,506,508,510],{"id":62,"languages_code":249,"label":501},{"id":340,"languages_code":252,"label":507},"Escritorio y Juegos",{"id":342,"languages_code":256,"label":509},"Stolní počítače & Hry",{"id":320,"languages_code":260,"label":501},{"id":50,"status":4,"sort":16,"label":244,"hidden":229,"created_on":243,"icon":512,"translations":513},{"id":246},[514,515,516,517],{"id":50,"languages_code":249,"label":244},{"id":251,"languages_code":252,"label":253},{"id":255,"languages_code":256,"label":257},{"id":259,"languages_code":260,"label":244},{"id":57,"status":4,"sort":67,"label":489,"hidden":229,"created_on":271,"icon":519,"translations":520},{"id":491},[521,522,523,524],{"id":57,"languages_code":249,"label":489},{"id":362,"languages_code":252,"label":495},{"id":364,"languages_code":256,"label":497},{"id":318,"languages_code":260,"label":489},{"id":526,"status":4,"sort":527,"label":528,"hidden":230,"created_on":271,"icon":8,"translations":529},30,32,"ARB",[530,531,533,535],{"id":526,"languages_code":249,"label":528},{"id":532,"languages_code":252,"label":528},120,{"id":534,"languages_code":256,"label":528},125,{"id":536,"languages_code":260,"label":528},130,[538,544,554,561],{"id":107,"status":4,"sort":57,"label":283,"alternative_label":8,"slug":284,"description":285,"documentation_link":286,"loc_icon":284,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":539},[540,541,542,543],{"id":107,"languages_code":249,"label":283,"description":285,"slug":284},{"id":290,"languages_code":252,"label":283,"description":291,"slug":284},{"id":255,"languages_code":260,"label":283,"description":293,"slug":284},{"id":259,"languages_code":256,"label":283,"description":295,"slug":284},{"id":22,"status":4,"sort":50,"label":297,"alternative_label":8,"slug":298,"description":299,"documentation_link":300,"loc_icon":301,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":545},[546,547,548,549,550,551,552,553],{"id":22,"languages_code":249,"label":297,"description":299,"slug":298},{"id":305,"languages_code":252,"label":306,"description":307,"slug":8},{"id":309,"languages_code":260,"label":297,"description":299,"slug":298},{"id":278,"languages_code":256,"label":311,"description":312,"slug":8},{"id":314,"languages_code":252,"label":315,"description":316,"slug":298},{"id":318,"languages_code":260,"label":297,"description":299,"slug":298},{"id":320,"languages_code":256,"label":311,"description":312,"slug":298},{"id":322,"languages_code":323,"label":324,"description":325,"slug":8},{"id":16,"status":4,"sort":107,"label":327,"alternative_label":328,"slug":329,"description":330,"documentation_link":331,"loc_icon":332,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":555},[556,557,558,559,560],{"id":16,"languages_code":249,"label":327,"description":330,"slug":329},{"id":336,"languages_code":252,"label":337,"description":338,"slug":8},{"id":340,"languages_code":260,"label":327,"description":330,"slug":329},{"id":342,"languages_code":256,"label":343,"description":344,"slug":8},{"id":346,"languages_code":323,"label":347,"description":348,"slug":8},{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":562},[563,564,565,566,567],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[],{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":570},[571,572,573,574,575],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[],[578],{"languages_code":249,"name":470,"slug":471,"description":472,"support_type":474,"meta_title":8,"meta_description":8,"marketing_subtitle":232,"tile_subtitle":474,"tile_description":475,"id":7,"platforms_id":7,"docs_link":473},{"id":580,"status":4,"created_on":581,"modified_on":582,"name":583,"slug":584,"description":585,"docs_link":586,"priority":8,"has_sdk":229,"sort":29,"highlighted":229,"in_menu":230,"changefreq":8,"support_type":587,"show_in_spa":230,"is_file_format":229,"meta_title":8,"meta_description":8,"featured_on_web":230,"marketing_subtitle":232,"tile_subtitle":587,"tile_description":588,"is_enterprise":229,"is_popular":229,"primary_use_case":8,"hierarchy_handling":8,"best_for":8,"file_extension":8,"format_code_example":8,"format_to_extension":589,"upload_features":591,"icon":592,"meta_image":594,"primary_tag":596,"tags":610,"integration_methods":625,"recommended_methods":656,"default_integration_method":657,"faq_categories":664,"translations":669,"platforms_id":580},31,"2022-03-18T08:09:25.000Z","2024-07-17T07:43:22.000Z","JavaScript","javascript","Localize your app with JavaScript localizations and Localazy CLI.\nUpload JavaScript files with strings to Localazy and manage your translations easily. Download translated files back.","\u002Fdocs\u002Fcli\u002Fjavascript-format","JS file support","Translating JS files is easy as a pie with Localazy!",{"js":590},"js",[],{"id":593},"4218d0c9-7e6b-494d-9663-37ceaf93ee8c",{"id":595},"2c6699eb-1d80-4772-8268-5597dbcead8c",{"id":77,"status":4,"sort":77,"created_on":271,"label":597,"hidden":229,"icon":598,"translations":600},"Programming Languages",{"id":599},"8c5836bb-1fbe-49c5-9330-8f931838c457",[601,602,605,608],{"id":77,"languages_code":249,"label":597},{"id":603,"languages_code":252,"label":604},63,"Lenguajes de Programación",{"id":606,"languages_code":256,"label":607},68,"Programovací Jazyky",{"id":609,"languages_code":260,"label":597},70,[611,618],{"id":50,"status":4,"sort":16,"label":244,"hidden":229,"created_on":243,"icon":612,"translations":613},{"id":246},[614,615,616,617],{"id":50,"languages_code":249,"label":244},{"id":251,"languages_code":252,"label":253},{"id":255,"languages_code":256,"label":257},{"id":259,"languages_code":260,"label":244},{"id":77,"status":4,"sort":77,"label":597,"hidden":229,"created_on":271,"icon":619,"translations":620},{"id":599},[621,622,623,624],{"id":77,"languages_code":249,"label":597},{"id":603,"languages_code":252,"label":604},{"id":606,"languages_code":256,"label":607},{"id":609,"languages_code":260,"label":597},[626,632,642,649],{"id":107,"status":4,"sort":57,"label":283,"alternative_label":8,"slug":284,"description":285,"documentation_link":286,"loc_icon":284,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":627},[628,629,630,631],{"id":107,"languages_code":249,"label":283,"description":285,"slug":284},{"id":290,"languages_code":252,"label":283,"description":291,"slug":284},{"id":255,"languages_code":260,"label":283,"description":293,"slug":284},{"id":259,"languages_code":256,"label":283,"description":295,"slug":284},{"id":22,"status":4,"sort":50,"label":297,"alternative_label":8,"slug":298,"description":299,"documentation_link":300,"loc_icon":301,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":633},[634,635,636,637,638,639,640,641],{"id":22,"languages_code":249,"label":297,"description":299,"slug":298},{"id":305,"languages_code":252,"label":306,"description":307,"slug":8},{"id":309,"languages_code":260,"label":297,"description":299,"slug":298},{"id":278,"languages_code":256,"label":311,"description":312,"slug":8},{"id":314,"languages_code":252,"label":315,"description":316,"slug":298},{"id":318,"languages_code":260,"label":297,"description":299,"slug":298},{"id":320,"languages_code":256,"label":311,"description":312,"slug":298},{"id":322,"languages_code":323,"label":324,"description":325,"slug":8},{"id":16,"status":4,"sort":107,"label":327,"alternative_label":328,"slug":329,"description":330,"documentation_link":331,"loc_icon":332,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":643},[644,645,646,647,648],{"id":16,"languages_code":249,"label":327,"description":330,"slug":329},{"id":336,"languages_code":252,"label":337,"description":338,"slug":8},{"id":340,"languages_code":260,"label":327,"description":330,"slug":329},{"id":342,"languages_code":256,"label":343,"description":344,"slug":8},{"id":346,"languages_code":323,"label":347,"description":348,"slug":8},{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":650},[651,652,653,654,655],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[],{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":658},[659,660,661,662,663],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[665],{"id":666,"status":4,"created_on":667,"sort":8,"slug":668,"label":583,"on_faq_index":229},35,"2022-06-10T09:49:33.000Z","javascript-i18n-localization",[670],{"languages_code":249,"name":583,"slug":584,"description":585,"support_type":587,"meta_title":8,"meta_description":8,"marketing_subtitle":232,"tile_subtitle":587,"tile_description":588,"id":580,"platforms_id":580,"docs_link":586},{"id":29,"status":4,"created_on":581,"modified_on":672,"name":673,"slug":236,"description":674,"docs_link":228,"priority":8,"has_sdk":229,"sort":174,"highlighted":229,"in_menu":230,"changefreq":8,"support_type":675,"show_in_spa":230,"is_file_format":230,"meta_title":8,"meta_description":8,"featured_on_web":230,"marketing_subtitle":232,"tile_subtitle":676,"tile_description":677,"is_enterprise":229,"is_popular":230,"primary_use_case":678,"hierarchy_handling":679,"best_for":680,"file_extension":681,"format_code_example":682,"format_to_extension":683,"upload_features":684,"icon":685,"meta_image":687,"primary_tag":689,"tags":702,"integration_methods":710,"recommended_methods":741,"default_integration_method":742,"faq_categories":749,"translations":753,"platforms_id":29},"2025-10-14T11:22:29.000Z","JSON","Online JSON translator you will love. Comfortable JSON language files editor with powerful CLI under your fingers for continuous localization.","Advanced format support","{Objectively the best}","Translate any JSON files with Localazy, with the best in class plural and array support.","Used for structured data storage and APIs","Uses key-value pairs","Web & mobile apps, APIs",".json","```\n{\n  \"parent\": {\n    \"child\": {\n      \"another_nested_level\": \"All is supported.\"\n    }\n  }\n}\n```",{"json":236},[],{"id":686},"99ac3b7c-dba5-4693-a4f4-1f27a6d7782d",{"id":688},"8d614c20-667e-4bee-a64d-7d7ce9c0ee0a",{"id":107,"status":4,"sort":50,"created_on":271,"label":690,"hidden":229,"icon":691,"translations":693},"File formats",{"id":692},"ab7c8f89-dcce-45ab-9e21-8605aef289c3",[694,695,698,700],{"id":107,"languages_code":249,"label":690},{"id":696,"languages_code":252,"label":697},44,"Formatos de archivo",{"id":309,"languages_code":256,"label":699},"Formáty souborů",{"id":701,"languages_code":260,"label":690},62,[703],{"id":107,"status":4,"sort":50,"label":690,"hidden":229,"created_on":271,"icon":704,"translations":705},{"id":692},[706,707,708,709],{"id":107,"languages_code":249,"label":690},{"id":696,"languages_code":252,"label":697},{"id":309,"languages_code":256,"label":699},{"id":701,"languages_code":260,"label":690},[711,717,727,734],{"id":107,"status":4,"sort":57,"label":283,"alternative_label":8,"slug":284,"description":285,"documentation_link":286,"loc_icon":284,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":712},[713,714,715,716],{"id":107,"languages_code":249,"label":283,"description":285,"slug":284},{"id":290,"languages_code":252,"label":283,"description":291,"slug":284},{"id":255,"languages_code":260,"label":283,"description":293,"slug":284},{"id":259,"languages_code":256,"label":283,"description":295,"slug":284},{"id":22,"status":4,"sort":50,"label":297,"alternative_label":8,"slug":298,"description":299,"documentation_link":300,"loc_icon":301,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":718},[719,720,721,722,723,724,725,726],{"id":22,"languages_code":249,"label":297,"description":299,"slug":298},{"id":305,"languages_code":252,"label":306,"description":307,"slug":8},{"id":309,"languages_code":260,"label":297,"description":299,"slug":298},{"id":278,"languages_code":256,"label":311,"description":312,"slug":8},{"id":314,"languages_code":252,"label":315,"description":316,"slug":298},{"id":318,"languages_code":260,"label":297,"description":299,"slug":298},{"id":320,"languages_code":256,"label":311,"description":312,"slug":298},{"id":322,"languages_code":323,"label":324,"description":325,"slug":8},{"id":16,"status":4,"sort":107,"label":327,"alternative_label":328,"slug":329,"description":330,"documentation_link":331,"loc_icon":332,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":728},[729,730,731,732,733],{"id":16,"languages_code":249,"label":327,"description":330,"slug":329},{"id":336,"languages_code":252,"label":337,"description":338,"slug":8},{"id":340,"languages_code":260,"label":327,"description":330,"slug":329},{"id":342,"languages_code":256,"label":343,"description":344,"slug":8},{"id":346,"languages_code":323,"label":347,"description":348,"slug":8},{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":735},[736,737,738,739,740],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[],{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":743},[744,745,746,747,748],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[750],{"id":751,"status":4,"created_on":752,"sort":8,"slug":236,"label":673,"on_faq_index":229},36,"2022-06-10T10:49:07.000Z",[754],{"languages_code":249,"name":673,"slug":236,"description":674,"support_type":675,"meta_title":8,"meta_description":8,"marketing_subtitle":232,"tile_subtitle":676,"tile_description":677,"id":29,"platforms_id":29,"docs_link":228},{"id":99,"status":4,"created_on":581,"modified_on":756,"name":757,"slug":758,"description":759,"docs_link":760,"priority":8,"has_sdk":229,"sort":99,"highlighted":229,"in_menu":230,"changefreq":8,"support_type":761,"show_in_spa":229,"is_file_format":230,"meta_title":8,"meta_description":8,"featured_on_web":230,"marketing_subtitle":232,"tile_subtitle":762,"tile_description":763,"is_enterprise":229,"is_popular":230,"primary_use_case":764,"hierarchy_handling":765,"best_for":766,"file_extension":767,"format_code_example":768,"format_to_extension":769,"upload_features":771,"icon":772,"meta_image":774,"primary_tag":776,"tags":783,"integration_methods":805,"recommended_methods":836,"default_integration_method":837,"faq_categories":844,"translations":845,"platforms_id":99},"2025-07-03T14:28:31.000Z","XLIFF","xliff","XLIFF is meant for localization. Enjoy Localazy - an online XLIFF editor for your translation management. Integrate your XLIFF files with Localazy to achieve true continuous localization and translate XLIFF files on autopilot.","\u002Fdocs\u002Fcli\u002Fxliff-12-format","File format support","Meant for localization","XLIFF stands for XML Localization Interchange File Format - and Localazy is the best way to manage XLIFF files.","Used in translation pipelines","XML-based exchange format","Translation & software",".xliff","```\n\u003Ctrans-unit id=\"localazy_message\">\n    \u003Csource>Go international, today. With Localazy.\u003C\u002Fsource>\n\u003C\u002Ftrans-unit>\n```",{"xliff":770},"xlf",[],{"id":773},"ca424cc8-e8a7-4aef-8dca-ef4a4d1334fc",{"id":775},"889970a6-cce8-4055-b96a-9c3f292aa67f",{"id":107,"status":4,"sort":50,"created_on":271,"label":690,"hidden":229,"icon":777,"translations":778},{"id":692},[779,780,781,782],{"id":107,"languages_code":249,"label":690},{"id":696,"languages_code":252,"label":697},{"id":309,"languages_code":256,"label":699},{"id":701,"languages_code":260,"label":690},[784,791,798],{"id":107,"status":4,"sort":50,"label":690,"hidden":229,"created_on":271,"icon":785,"translations":786},{"id":692},[787,788,789,790],{"id":107,"languages_code":249,"label":690},{"id":696,"languages_code":252,"label":697},{"id":309,"languages_code":256,"label":699},{"id":701,"languages_code":260,"label":690},{"id":107,"status":4,"sort":50,"label":690,"hidden":229,"created_on":271,"icon":792,"translations":793},{"id":692},[794,795,796,797],{"id":107,"languages_code":249,"label":690},{"id":696,"languages_code":252,"label":697},{"id":309,"languages_code":256,"label":699},{"id":701,"languages_code":260,"label":690},{"id":107,"status":4,"sort":50,"label":690,"hidden":229,"created_on":271,"icon":799,"translations":800},{"id":692},[801,802,803,804],{"id":107,"languages_code":249,"label":690},{"id":696,"languages_code":252,"label":697},{"id":309,"languages_code":256,"label":699},{"id":701,"languages_code":260,"label":690},[806,812,822,829],{"id":107,"status":4,"sort":57,"label":283,"alternative_label":8,"slug":284,"description":285,"documentation_link":286,"loc_icon":284,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":807},[808,809,810,811],{"id":107,"languages_code":249,"label":283,"description":285,"slug":284},{"id":290,"languages_code":252,"label":283,"description":291,"slug":284},{"id":255,"languages_code":260,"label":283,"description":293,"slug":284},{"id":259,"languages_code":256,"label":283,"description":295,"slug":284},{"id":22,"status":4,"sort":50,"label":297,"alternative_label":8,"slug":298,"description":299,"documentation_link":300,"loc_icon":301,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":813},[814,815,816,817,818,819,820,821],{"id":22,"languages_code":249,"label":297,"description":299,"slug":298},{"id":305,"languages_code":252,"label":306,"description":307,"slug":8},{"id":309,"languages_code":260,"label":297,"description":299,"slug":298},{"id":278,"languages_code":256,"label":311,"description":312,"slug":8},{"id":314,"languages_code":252,"label":315,"description":316,"slug":298},{"id":318,"languages_code":260,"label":297,"description":299,"slug":298},{"id":320,"languages_code":256,"label":311,"description":312,"slug":298},{"id":322,"languages_code":323,"label":324,"description":325,"slug":8},{"id":16,"status":4,"sort":107,"label":327,"alternative_label":328,"slug":329,"description":330,"documentation_link":331,"loc_icon":332,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":823},[824,825,826,827,828],{"id":16,"languages_code":249,"label":327,"description":330,"slug":329},{"id":336,"languages_code":252,"label":337,"description":338,"slug":8},{"id":340,"languages_code":260,"label":327,"description":330,"slug":329},{"id":342,"languages_code":256,"label":343,"description":344,"slug":8},{"id":346,"languages_code":323,"label":347,"description":348,"slug":8},{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":830},[831,832,833,834,835],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[],{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":838},[839,840,841,842,843],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[],[846],{"languages_code":249,"name":757,"slug":758,"description":759,"support_type":761,"meta_title":8,"meta_description":8,"marketing_subtitle":232,"tile_subtitle":762,"tile_description":763,"id":99,"platforms_id":99,"docs_link":760},{"id":174,"status":4,"created_on":848,"modified_on":848,"name":849,"slug":850,"description":851,"docs_link":852,"priority":8,"has_sdk":229,"sort":853,"highlighted":229,"in_menu":230,"changefreq":8,"support_type":761,"show_in_spa":230,"is_file_format":230,"meta_title":8,"meta_description":8,"featured_on_web":229,"marketing_subtitle":232,"tile_subtitle":854,"tile_description":855,"is_enterprise":229,"is_popular":230,"primary_use_case":8,"hierarchy_handling":8,"best_for":8,"file_extension":8,"format_code_example":8,"format_to_extension":856,"upload_features":857,"icon":858,"meta_image":860,"primary_tag":862,"tags":869,"integration_methods":898,"recommended_methods":929,"default_integration_method":930,"faq_categories":937,"translations":938,"platforms_id":174},"2026-05-21T20:49:09.000Z","PO","po","Edit .po and .pot files with your team, automate translation with AI, and ship faster.","\u002Fdocs\u002Fcli\u002Fpo-format",24,"Seamless integration","Upload, edit and translate PO files with Localazy.",{"po":850},[],{"id":859},"25f317fe-0c10-4f0b-92cd-f80d1f3c6a67",{"id":861},"490022f9-d91a-4e1a-9e79-db374ec997c2",{"id":107,"status":4,"sort":50,"created_on":271,"label":690,"hidden":229,"icon":863,"translations":864},{"id":692},[865,866,867,868],{"id":107,"languages_code":249,"label":690},{"id":696,"languages_code":252,"label":697},{"id":309,"languages_code":256,"label":699},{"id":701,"languages_code":260,"label":690},[870,877,888],{"id":107,"status":4,"sort":50,"label":690,"hidden":229,"created_on":271,"icon":871,"translations":872},{"id":692},[873,874,875,876],{"id":107,"languages_code":249,"label":690},{"id":696,"languages_code":252,"label":697},{"id":309,"languages_code":256,"label":699},{"id":701,"languages_code":260,"label":690},{"id":878,"status":4,"sort":878,"label":879,"hidden":230,"created_on":271,"icon":8,"translations":880},34,"C++",[881,882,884,886],{"id":878,"languages_code":249,"label":879},{"id":883,"languages_code":252,"label":879},135,{"id":885,"languages_code":256,"label":879},140,{"id":887,"languages_code":260,"label":879},144,{"id":99,"status":4,"sort":853,"label":889,"hidden":230,"created_on":271,"icon":8,"translations":890},"Gettext",[891,892,894,896],{"id":99,"languages_code":249,"label":889},{"id":893,"languages_code":252,"label":889},101,{"id":895,"languages_code":256,"label":889},106,{"id":897,"languages_code":260,"label":889},111,[899,905,915,922],{"id":107,"status":4,"sort":57,"label":283,"alternative_label":8,"slug":284,"description":285,"documentation_link":286,"loc_icon":284,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":900},[901,902,903,904],{"id":107,"languages_code":249,"label":283,"description":285,"slug":284},{"id":290,"languages_code":252,"label":283,"description":291,"slug":284},{"id":255,"languages_code":260,"label":283,"description":293,"slug":284},{"id":259,"languages_code":256,"label":283,"description":295,"slug":284},{"id":22,"status":4,"sort":50,"label":297,"alternative_label":8,"slug":298,"description":299,"documentation_link":300,"loc_icon":301,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":906},[907,908,909,910,911,912,913,914],{"id":22,"languages_code":249,"label":297,"description":299,"slug":298},{"id":305,"languages_code":252,"label":306,"description":307,"slug":8},{"id":309,"languages_code":260,"label":297,"description":299,"slug":298},{"id":278,"languages_code":256,"label":311,"description":312,"slug":8},{"id":314,"languages_code":252,"label":315,"description":316,"slug":298},{"id":318,"languages_code":260,"label":297,"description":299,"slug":298},{"id":320,"languages_code":256,"label":311,"description":312,"slug":298},{"id":322,"languages_code":323,"label":324,"description":325,"slug":8},{"id":16,"status":4,"sort":107,"label":327,"alternative_label":328,"slug":329,"description":330,"documentation_link":331,"loc_icon":332,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":916},[917,918,919,920,921],{"id":16,"languages_code":249,"label":327,"description":330,"slug":329},{"id":336,"languages_code":252,"label":337,"description":338,"slug":8},{"id":340,"languages_code":260,"label":327,"description":330,"slug":329},{"id":342,"languages_code":256,"label":343,"description":344,"slug":8},{"id":346,"languages_code":323,"label":347,"description":348,"slug":8},{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":923},[924,925,926,927,928],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[],{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":931},[932,933,934,935,936],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[],[939],{"languages_code":249,"name":849,"slug":850,"description":851,"support_type":761,"meta_title":8,"meta_description":8,"marketing_subtitle":232,"tile_subtitle":854,"tile_description":855,"id":174,"platforms_id":174,"docs_link":852},{"id":941,"status":4,"created_on":581,"modified_on":942,"name":943,"slug":944,"description":945,"docs_link":946,"priority":8,"has_sdk":229,"sort":947,"highlighted":229,"in_menu":230,"changefreq":8,"support_type":761,"show_in_spa":230,"is_file_format":230,"meta_title":8,"meta_description":8,"featured_on_web":229,"marketing_subtitle":232,"tile_subtitle":948,"tile_description":949,"is_enterprise":229,"is_popular":229,"primary_use_case":950,"hierarchy_handling":951,"best_for":952,"file_extension":953,"format_code_example":954,"format_to_extension":955,"upload_features":956,"icon":957,"meta_image":958,"primary_tag":960,"tags":967,"integration_methods":985,"recommended_methods":1016,"default_integration_method":1017,"faq_categories":1024,"translations":1027,"platforms_id":941},26,"2025-10-02T08:32:44.000Z","RESX","resx","Quickly translate and manage your RESX files with Localazy or integrate Localazy with your .NET project and enjoy a fully automated localization process. ","\u002Fdocs\u002Fcli\u002Fresx-format",27,".NET localization","Translate .NET projects using RESX files and Localazy.","Standard format for Windows\u002F.NET localization","Flat key-value structure",".NET applications",".resx","```\n\u003C?xml version=\"1.0\" encoding=\"utf-8\"?>\n\u003Croot>\n  \u003Cdata name=\"localazy_message\" xml:space=\"preserve\">\n    \u003Cvalue>Go international, today. With Localazy.\u003C\u002Fvalue>\n  \u003C\u002Fdata>\n\u003C\u002Froot>\n```",{"resx":944},[],{"id":859},{"id":959},"1f07bf83-9363-47d6-b21b-a5121c0efaf6",{"id":107,"status":4,"sort":50,"created_on":271,"label":690,"hidden":229,"icon":961,"translations":962},{"id":692},[963,964,965,966],{"id":107,"languages_code":249,"label":690},{"id":696,"languages_code":252,"label":697},{"id":309,"languages_code":256,"label":699},{"id":701,"languages_code":260,"label":690},[968,975],{"id":107,"status":4,"sort":50,"label":690,"hidden":229,"created_on":271,"icon":969,"translations":970},{"id":692},[971,972,973,974],{"id":107,"languages_code":249,"label":690},{"id":696,"languages_code":252,"label":697},{"id":309,"languages_code":256,"label":699},{"id":701,"languages_code":260,"label":690},{"id":853,"status":4,"sort":941,"label":976,"hidden":230,"created_on":271,"icon":8,"translations":977},"C#",[978,979,981,983],{"id":853,"languages_code":249,"label":976},{"id":980,"languages_code":252,"label":976},103,{"id":982,"languages_code":256,"label":976},108,{"id":984,"languages_code":260,"label":976},113,[986,992,1002,1009],{"id":107,"status":4,"sort":57,"label":283,"alternative_label":8,"slug":284,"description":285,"documentation_link":286,"loc_icon":284,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":987},[988,989,990,991],{"id":107,"languages_code":249,"label":283,"description":285,"slug":284},{"id":290,"languages_code":252,"label":283,"description":291,"slug":284},{"id":255,"languages_code":260,"label":283,"description":293,"slug":284},{"id":259,"languages_code":256,"label":283,"description":295,"slug":284},{"id":22,"status":4,"sort":50,"label":297,"alternative_label":8,"slug":298,"description":299,"documentation_link":300,"loc_icon":301,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":993},[994,995,996,997,998,999,1000,1001],{"id":22,"languages_code":249,"label":297,"description":299,"slug":298},{"id":305,"languages_code":252,"label":306,"description":307,"slug":8},{"id":309,"languages_code":260,"label":297,"description":299,"slug":298},{"id":278,"languages_code":256,"label":311,"description":312,"slug":8},{"id":314,"languages_code":252,"label":315,"description":316,"slug":298},{"id":318,"languages_code":260,"label":297,"description":299,"slug":298},{"id":320,"languages_code":256,"label":311,"description":312,"slug":298},{"id":322,"languages_code":323,"label":324,"description":325,"slug":8},{"id":16,"status":4,"sort":107,"label":327,"alternative_label":328,"slug":329,"description":330,"documentation_link":331,"loc_icon":332,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":1003},[1004,1005,1006,1007,1008],{"id":16,"languages_code":249,"label":327,"description":330,"slug":329},{"id":336,"languages_code":252,"label":337,"description":338,"slug":8},{"id":340,"languages_code":260,"label":327,"description":330,"slug":329},{"id":342,"languages_code":256,"label":343,"description":344,"slug":8},{"id":346,"languages_code":323,"label":347,"description":348,"slug":8},{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":1010},[1011,1012,1013,1014,1015],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[],{"id":7,"status":4,"sort":22,"label":350,"alternative_label":351,"slug":352,"description":353,"documentation_link":354,"loc_icon":352,"is_official_plugin":229,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":1018},[1019,1020,1021,1022,1023],{"id":7,"languages_code":249,"label":350,"description":353,"slug":352},{"id":358,"languages_code":252,"label":359,"description":360,"slug":352},{"id":362,"languages_code":260,"label":350,"description":353,"slug":352},{"id":364,"languages_code":256,"label":365,"description":366,"slug":352},{"id":368,"languages_code":323,"label":369,"description":370,"slug":8},[1025],{"id":696,"status":4,"created_on":1026,"sort":8,"slug":944,"label":943,"on_faq_index":8},"2022-08-01T16:44:06.000Z",[1028],{"languages_code":249,"name":943,"slug":944,"description":945,"support_type":761,"meta_title":8,"meta_description":8,"marketing_subtitle":232,"tile_subtitle":948,"tile_description":949,"id":941,"platforms_id":941,"docs_link":946},{"id":1030,"status":4,"created_on":1031,"modified_on":1032,"name":1033,"slug":1034,"description":1035,"docs_link":1036,"priority":8,"has_sdk":8,"sort":1037,"highlighted":229,"in_menu":230,"changefreq":8,"support_type":1038,"show_in_spa":230,"is_file_format":8,"meta_title":8,"meta_description":8,"featured_on_web":230,"marketing_subtitle":1038,"tile_subtitle":1038,"tile_description":1039,"is_enterprise":229,"is_popular":230,"primary_use_case":8,"hierarchy_handling":8,"best_for":8,"file_extension":8,"format_code_example":8,"format_to_extension":8,"upload_features":8,"icon":1040,"meta_image":1042,"primary_tag":1044,"tags":1056,"integration_methods":1103,"recommended_methods":1123,"default_integration_method":1124,"faq_categories":1131,"translations":1134,"platforms_id":1030},72,"2022-06-16T09:08:11.000Z","2026-04-27T18:16:54.000Z","Strapi","strapi","Enjoy seamless integration of Strapi & Localazy and translate your website efficiently. Download the official Localazy plugin in the Strapi Marketplace to get started!","\u002Fdocs\u002Fstrapi\u002Fstrapi-plugin-introduction",54,"Localization Plugin","Localize your Strapi website with our official localization plugin. Easy setup and installation.",{"id":1041},"cde7f1d0-f2e0-4243-929e-a3f8f9146e69",{"id":1043},"5995b721-a2ea-487e-ad4b-298a489bbd24",{"id":29,"status":4,"sort":36,"created_on":271,"label":1045,"hidden":229,"icon":1046,"translations":1048},"CMS",{"id":1047},"1172a655-928c-4594-9263-d8afdfd9cd79",[1049,1050,1052,1054],{"id":29,"languages_code":249,"label":1045},{"id":1051,"languages_code":252,"label":1045},73,{"id":1053,"languages_code":256,"label":1045},81,{"id":1055,"languages_code":260,"label":1045},84,[1057,1069,1082,1089],{"id":166,"status":4,"sort":162,"label":1058,"hidden":229,"created_on":271,"icon":8,"translations":1059},"Multilingual SEO",[1060,1061,1064,1067],{"id":166,"languages_code":249,"label":1058},{"id":1062,"languages_code":252,"label":1063},89,"SEO multilingüe",{"id":1065,"languages_code":256,"label":1066},94,"Vícejazyčné SEO",{"id":1068,"languages_code":260,"label":1058},99,{"id":222,"status":4,"sort":222,"label":1070,"hidden":229,"created_on":271,"icon":1071,"translations":1073},"E-commerce",{"id":1072},"e782ed3f-d954-45ca-8b17-5bf5fe95f30a",[1074,1075,1078,1080],{"id":222,"languages_code":249,"label":1070},{"id":1076,"languages_code":252,"label":1077},132,"Comercio electrónico",{"id":1079,"languages_code":256,"label":1070},137,{"id":1081,"languages_code":260,"label":1070},142,{"id":29,"status":4,"sort":36,"label":1045,"hidden":229,"created_on":271,"icon":1083,"translations":1084},{"id":1047},[1085,1086,1087,1088],{"id":29,"languages_code":249,"label":1045},{"id":1051,"languages_code":252,"label":1045},{"id":1053,"languages_code":256,"label":1045},{"id":1055,"languages_code":260,"label":1045},{"id":16,"status":4,"sort":57,"label":1090,"hidden":229,"created_on":271,"icon":1091,"translations":1093},"Marketing tools",{"id":1092},"098fe6a4-dd2e-42d8-937e-2d8121e6e266",[1094,1095,1098,1101],{"id":16,"languages_code":249,"label":1090},{"id":1096,"languages_code":252,"label":1097},43,"Herramientas de marketing",{"id":1099,"languages_code":256,"label":1100},48,"Marketingové nástroje",{"id":1102,"languages_code":260,"label":1090},58,[1104],{"id":67,"status":4,"sort":8,"label":1105,"alternative_label":1106,"slug":1107,"description":1108,"documentation_link":1109,"loc_icon":1110,"is_official_plugin":230,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":1111},"Official Strapi Plugin","Official Plugin","official-strapi-plugin","Our developers maintain an official Strapi localization plugin. Start in a few clicks!","\u002Fdocs\u002Fstrapi","localazy-box",[1112,1113,1116,1117,1120],{"id":67,"languages_code":249,"label":1105,"description":1108,"slug":1107},{"id":1096,"languages_code":252,"label":1114,"description":1115,"slug":8},"Complemento Oficial de Strapi","Nuestros desarrolladores mantienen un complemento oficial de localización de Strapi. ¡Empiece en unos pocos clics!",{"id":275,"languages_code":260,"label":1105,"description":1108,"slug":1107},{"id":701,"languages_code":256,"label":1118,"description":1119,"slug":8},"Oficiál Plugin Strapi","Naši vývojáři udržují a neustále vylepšují oficiální lokalizační plugin Strapi. Začněte několika kliknutími!",{"id":1062,"languages_code":323,"label":1121,"description":1122,"slug":8},"Offizielles Strapi-Plugin","Unsere Entwickler pflegen ein offizielles Strapi-Lokalisierungs-Plugin. Starten Sie mit ein paar Klicks!",[],{"id":67,"status":4,"sort":8,"label":1105,"alternative_label":1106,"slug":1107,"description":1108,"documentation_link":1109,"loc_icon":1110,"is_official_plugin":230,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":1125},[1126,1127,1128,1129,1130],{"id":67,"languages_code":249,"label":1105,"description":1108,"slug":1107},{"id":1096,"languages_code":252,"label":1114,"description":1115,"slug":8},{"id":275,"languages_code":260,"label":1105,"description":1108,"slug":1107},{"id":701,"languages_code":256,"label":1118,"description":1119,"slug":8},{"id":1062,"languages_code":323,"label":1121,"description":1122,"slug":8},[1132],{"id":358,"status":4,"created_on":1133,"sort":8,"slug":1034,"label":1033,"on_faq_index":8},"2022-06-16T09:24:13.000Z",[1135],{"languages_code":249,"name":1033,"slug":1034,"description":1035,"support_type":1038,"meta_title":8,"meta_description":8,"marketing_subtitle":1038,"tile_subtitle":1038,"tile_description":1039,"id":1030,"platforms_id":1030,"docs_link":1036},{"id":278,"status":4,"created_on":581,"modified_on":1137,"name":1138,"slug":1139,"description":8,"docs_link":1140,"priority":8,"has_sdk":229,"sort":364,"highlighted":229,"in_menu":230,"changefreq":8,"support_type":1141,"show_in_spa":230,"is_file_format":229,"meta_title":8,"meta_description":8,"featured_on_web":230,"marketing_subtitle":1142,"tile_subtitle":1143,"tile_description":1144,"is_enterprise":229,"is_popular":230,"primary_use_case":8,"hierarchy_handling":8,"best_for":8,"file_extension":8,"format_code_example":8,"format_to_extension":8,"upload_features":1145,"icon":1146,"meta_image":1148,"primary_tag":1150,"tags":1164,"integration_methods":1172,"recommended_methods":1187,"default_integration_method":1188,"faq_categories":1194,"translations":1195,"platforms_id":278},"2024-12-20T15:00:22.000Z","Figma","figma","\u002Fdocs\u002Fintegrations\u002Fquick-start-figma","plugin","Figma plugin","Localization plugin","Quickly translate your Figma designs and seamlessly reuse the translations during the development of your project.",[],{"id":1147},"813745a4-a77d-4735-93b7-e0dd731b2304",{"id":1149},"7573fed6-8817-4cb4-84d2-be327e6c4891",{"id":22,"status":4,"sort":62,"created_on":271,"label":1151,"hidden":229,"icon":1152,"translations":1154},"Design tools",{"id":1153},"1053d863-b690-4fbd-aadf-dbf2ba282768",[1155,1156,1159,1162],{"id":22,"languages_code":249,"label":1151},{"id":1157,"languages_code":252,"label":1158},42,"Herramientas de diseño",{"id":1160,"languages_code":256,"label":1161},49,"Nástroje pro návrh",{"id":1163,"languages_code":260,"label":1151},57,[1165],{"id":22,"status":4,"sort":62,"label":1151,"hidden":229,"created_on":271,"icon":1166,"translations":1167},{"id":1153},[1168,1169,1170,1171],{"id":22,"languages_code":249,"label":1151},{"id":1157,"languages_code":252,"label":1158},{"id":1160,"languages_code":256,"label":1161},{"id":1163,"languages_code":260,"label":1151},[1173],{"id":62,"status":4,"sort":8,"label":1106,"alternative_label":1106,"slug":1174,"description":1175,"documentation_link":152,"loc_icon":1110,"is_official_plugin":230,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":1176},"official-plugin","Our developers maintain an official plugin for this integration. Start in a few clicks!",[1177,1178,1182,1184],{"id":62,"languages_code":249,"label":1106,"description":1175,"slug":1174},{"id":1179,"languages_code":252,"label":1180,"description":1181,"slug":8},23,"Plugin Oficial","Nuestros desarrolladores mantienen un plugin oficial para esta integración. ¡Empiece con unos pocos clics!",{"id":1183,"languages_code":260,"label":1106,"description":1175,"slug":1174},29,{"id":666,"languages_code":256,"label":1185,"description":1186,"slug":8},"Oficiální Plugin","Naši vývojáři udržují a neustále vylepšují oficiální plugin pro tuto integraci. Začněte několika kliknutími!",[],{"id":62,"status":4,"sort":8,"label":1106,"alternative_label":1106,"slug":1174,"description":1175,"documentation_link":152,"loc_icon":1110,"is_official_plugin":230,"is_universal_plugin":229,"universal_plugin_vendor":8,"translations":1189},[1190,1191,1192,1193],{"id":62,"languages_code":249,"label":1106,"description":1175,"slug":1174},{"id":1179,"languages_code":252,"label":1180,"description":1181,"slug":8},{"id":1183,"languages_code":260,"label":1106,"description":1175,"slug":1174},{"id":666,"languages_code":256,"label":1185,"description":1186,"slug":8},[],[1196],{"languages_code":249,"name":1138,"slug":1139,"description":8,"support_type":1141,"meta_title":8,"meta_description":8,"marketing_subtitle":1142,"tile_subtitle":1143,"tile_description":1144,"id":278,"platforms_id":278,"docs_link":1140},[1198,1379,1589,1690,1809,1811],{"id":16,"name":1199,"url":8,"url_text":8,"status":4,"groups":1200},"Solutions",[1201,1210,1277,1309],{"navigation_items_group_id":1202},{"id":22,"sort":50,"status":4,"name":1203,"render_show_all_url":229,"show_all_url_position":1204,"show_favorite_icon":230,"show_all_url":8,"represent_as_tile":229,"items":1205},"Featured Article","top",[1206],{"collection":1207,"item":1208},"blog_post_navigation_item_type",{"id":107,"status":4,"sort":8,"show_author_img":230,"blog_post_tag":1209,"description":8},"nav",{"navigation_items_group_id":1211},{"id":50,"sort":7,"status":4,"name":1212,"render_show_all_url":229,"show_all_url_position":1204,"show_favorite_icon":229,"show_all_url":1213,"represent_as_tile":230,"items":1214},"Your Role","\u002Froles",[1215,1227,1237,1247,1257,1267],{"collection":1216,"item":1217},"relation_navigation_item_type",{"id":7,"status":4,"sort":8,"name":1218,"item":1219},"CMO",[1220],{"collection":1221,"item":1222},"personas",{"id":7,"status":4,"sort":8,"slug":1223,"icon":1224},"chief-marketing-officers",{"id":1225,"title":1226},"526097d8-176f-48e5-83d3-2fc4d77061f9","La Mail Bulk",{"collection":1216,"item":1228},{"id":22,"status":4,"sort":8,"name":1229,"item":1230},"CTO",[1231],{"collection":1221,"item":1232},{"id":107,"status":4,"sort":8,"slug":1233,"icon":1234},"chief-technical-officers",{"id":1235,"title":1236},"f808fdf0-c78b-4294-ba59-fe25f46fe825","La Mechanic",{"collection":1216,"item":1238},{"id":174,"status":4,"sort":8,"name":1239,"item":1240},"Product Manager",[1241],{"collection":1221,"item":1242},{"id":166,"status":4,"sort":8,"slug":1243,"icon":1244},"product-managers",{"id":1245,"title":1246},"ea39586a-21fc-4b34-ba87-496028e5198f","La Worker",{"collection":1216,"item":1248},{"id":358,"status":4,"sort":8,"name":1249,"item":1250},"Translator",[1251],{"collection":1221,"item":1252},{"id":174,"status":4,"sort":8,"slug":1253,"icon":1254},"professional-translators",{"id":1255,"title":1256},"07945171-d51d-4ca8-96c0-21cde9db258f","La Chat",{"collection":1216,"item":1258},{"id":336,"status":4,"sort":8,"name":1259,"item":1260},"Developer",[1261],{"collection":1221,"item":1262},{"id":526,"status":4,"sort":8,"slug":1263,"icon":1264},"software-developers",{"id":1265,"title":1266},"1806e46d-c551-4845-bf42-4407344d229e","La Terminal",{"collection":1216,"item":1268},{"id":947,"status":4,"sort":8,"name":1269,"item":1270},"Localization Manager",[1271],{"collection":1221,"item":1272},{"id":57,"status":4,"sort":8,"slug":1273,"icon":1274},"localization-managers",{"id":1275,"title":1276},"dac69bd1-bf5d-41d0-87d4-dd13e314698a","La Language",{"navigation_items_group_id":1278},{"id":72,"sort":22,"status":4,"name":1279,"render_show_all_url":229,"show_all_url_position":1280,"show_favorite_icon":229,"show_all_url":8,"represent_as_tile":229,"items":1281},"Use cases","bottom",[1282,1287,1291,1296,1300,1305],{"collection":1283,"item":1284},"simple_link_navigation_item_type",{"id":853,"status":4,"sort":8,"url":1285,"url_text":1286,"show_favorite_icon":229},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fsoftware-localization","Software localization",{"collection":1283,"item":1288},{"id":941,"status":4,"sort":8,"url":1289,"url_text":1290,"show_favorite_icon":229},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fmobile-app-localization","Mobile app localization",{"collection":1283,"item":1292},{"id":1293,"status":4,"sort":8,"url":1294,"url_text":1295,"show_favorite_icon":229},25,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fwebsite-localization","Website localization",{"collection":1283,"item":1297},{"id":947,"status":4,"sort":8,"url":1298,"url_text":1299,"show_favorite_icon":229},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fdesign-localization","Design localization",{"collection":1283,"item":1301},{"id":1302,"status":4,"sort":8,"url":1303,"url_text":1304,"show_favorite_icon":229},28,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fgame-localization","Game localization",{"collection":1283,"item":1306},{"id":1183,"status":4,"sort":8,"url":1307,"url_text":1308,"show_favorite_icon":229},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fhelp-and-docs-localization","Help & docs localization",{"navigation_items_group_id":1310},{"id":67,"sort":16,"status":4,"name":1311,"render_show_all_url":229,"show_all_url_position":1280,"show_favorite_icon":229,"show_all_url":8,"represent_as_tile":229,"items":1312},"Industry",[1313,1323,1333,1342,1352,1361,1372],{"collection":1216,"item":1314},{"id":1179,"status":4,"sort":8,"name":1315,"item":1316},"Digital Agencies",[1317],{"collection":1221,"item":1318},{"id":62,"status":4,"sort":8,"slug":1319,"icon":1320},"digital-agencies",{"id":1321,"title":1322},"547f5619-b21d-4b29-86f1-8b2200313cde","La Digi Agency",{"collection":1216,"item":1324},{"id":305,"status":4,"sort":8,"name":1325,"item":1326},"Startups & SaaS",[1327],{"collection":1221,"item":1328},{"id":16,"status":4,"sort":8,"slug":1329,"icon":1330},"startups",{"id":1331,"title":1332},"da1516e2-4afc-40a2-bcbf-a8161e2d610d","La Saa S",{"collection":1216,"item":1334},{"id":16,"status":4,"sort":8,"name":1070,"item":1335},[1336],{"collection":1221,"item":1337},{"id":50,"status":4,"sort":8,"slug":1338,"icon":1339},"e-commerce",{"id":1340,"title":1341},"a3d09cd2-054f-4bb5-a0a2-d3d207db65df","La Ecommerce",{"collection":1216,"item":1343},{"id":170,"status":4,"sort":8,"name":1344,"item":1345},"FinTech Platforms",[1346],{"collection":1221,"item":1347},{"id":947,"status":4,"sort":8,"slug":1348,"icon":1349},"fintech",{"id":1350,"title":1351},"147339ba-07d1-4e5e-baad-23d27e60c919","La Money",{"collection":1216,"item":1353},{"id":853,"status":4,"sort":8,"name":1354,"item":1355},"Translation Agencies",[1356],{"collection":1221,"item":1357},{"id":853,"status":4,"sort":8,"slug":1358,"icon":1359},"translation-agencies",{"id":1360,"title":1276},"15d6fe33-2af8-4d6e-933d-5caa64394511",{"collection":1216,"item":1362},{"id":1363,"status":4,"sort":8,"name":1364,"item":1365},22,"Travel & Tourism",[1366],{"collection":1221,"item":1367},{"id":22,"status":4,"sort":8,"slug":1368,"icon":1369},"tourism",{"id":1370,"title":1371},"23a785e8-0ae5-4c4b-8452-aab1b58182a6","La Travel",{"collection":1216,"item":1373},{"id":1293,"status":4,"sort":8,"name":1374,"item":1375},"Nonprofit Causes",[1376],{"collection":1221,"item":1377},{"id":1302,"status":4,"sort":8,"slug":1378,"icon":8},"nonprofit",{"id":50,"name":1380,"url":8,"url_text":8,"status":4,"groups":1381},"Features",[1382,1441,1492,1538],{"navigation_items_group_id":1383},{"id":36,"sort":57,"status":4,"name":1384,"render_show_all_url":229,"show_all_url_position":1204,"show_favorite_icon":229,"show_all_url":8,"represent_as_tile":229,"items":1385},"Localization",[1386,1394,1402,1409,1416,1420,1427,1434],{"collection":1216,"item":1387},{"id":696,"status":4,"sort":8,"name":1388,"item":1389},"Localization services",[1390],{"collection":1391,"item":1392},"products",{"id":72,"status":4,"slug":1393},"continuous-localization-team",{"collection":1216,"item":1395},{"id":251,"status":4,"sort":8,"name":1396,"item":1397},"Translation management",[1398],{"collection":1399,"item":1400},"term_landing_page",{"id":1183,"status":4,"slug":1401},"translation-management-system",{"collection":1216,"item":1403},{"id":362,"status":4,"sort":8,"name":1404,"item":1405},"Context Screenshots",[1406],{"collection":1391,"item":1407},{"id":43,"status":4,"slug":1408},"context-screenshots-ocr",{"collection":1216,"item":1410},{"id":340,"status":4,"sort":8,"name":1411,"item":1412},"Translation Glossary",[1413],{"collection":1391,"item":1414},{"id":162,"status":4,"slug":1415},"glossary",{"collection":1283,"item":1417},{"id":107,"status":4,"sort":8,"url":1418,"url_text":1419,"show_favorite_icon":229},"\u002Fdocs\u002Fgeneral\u002Freviewing-translations","Quality control",{"collection":1216,"item":1421},{"id":878,"status":4,"sort":8,"name":1422,"item":1423},"Connected Projects",[1424],{"collection":1391,"item":1425},{"id":7,"status":4,"slug":1426},"connected-projects",{"collection":1216,"item":1428},{"id":314,"status":4,"sort":8,"name":1429,"item":1430},"Plural handling",[1431],{"collection":1391,"item":1432},{"id":527,"status":4,"slug":1433},"plurals",{"collection":1216,"item":1435},{"id":318,"status":4,"sort":8,"name":1436,"item":1437},"Style guides",[1438],{"collection":1391,"item":1439},{"id":336,"status":4,"slug":1440},"style-guide",{"navigation_items_group_id":1442},{"id":29,"sort":62,"status":4,"name":1443,"render_show_all_url":229,"show_all_url_position":1204,"show_favorite_icon":229,"show_all_url":8,"represent_as_tile":229,"items":1444},"Translation",[1445,1452,1459,1463,1470,1477,1485],{"collection":1216,"item":1446},{"id":751,"status":4,"sort":8,"name":1447,"item":1448},"Professional translations",[1449],{"collection":1399,"item":1450},{"id":526,"status":4,"slug":1451},"professional-translation-services",{"collection":1216,"item":1453},{"id":1099,"status":4,"sort":8,"name":1454,"item":1455},"Crowdsourced translations",[1456],{"collection":1391,"item":1457},{"id":67,"status":4,"slug":1458},"share-tm",{"collection":1283,"item":1460},{"id":50,"status":4,"sort":8,"url":1461,"url_text":1462,"show_favorite_icon":229},"\u002Fdocs\u002Fgeneral\u002Ftranslating-strings","Translation interface",{"collection":1216,"item":1464},{"id":364,"status":4,"sort":8,"name":1465,"item":1466},"Machine translations",[1467],{"collection":1391,"item":1468},{"id":50,"status":4,"slug":1469},"machine-translation",{"collection":1216,"item":1471},{"id":278,"status":4,"sort":8,"name":1472,"item":1473},"Localazy AI translation",[1474],{"collection":1391,"item":1475},{"id":1183,"status":4,"slug":1476},"localazy-ai",{"collection":1216,"item":1478},{"id":1479,"status":4,"sort":8,"name":1480,"item":1481},61,"Translation Memory",[1482],{"collection":1391,"item":1483},{"id":666,"status":4,"slug":1484},"translation-memory",{"collection":1216,"item":1486},{"id":603,"status":4,"sort":8,"name":1487,"item":1488},"Code & placeholders",[1489],{"collection":1391,"item":1490},{"id":526,"status":4,"slug":1491},"code-and-placeholders",{"navigation_items_group_id":1493},{"id":43,"sort":67,"status":4,"name":1494,"render_show_all_url":229,"show_all_url_position":1204,"show_favorite_icon":229,"show_all_url":8,"represent_as_tile":229,"items":1495},"Management",[1496,1500,1507,1515,1523,1530,1534],{"collection":1283,"item":1497},{"id":67,"status":4,"sort":8,"url":1498,"url_text":1499,"show_favorite_icon":229},"\u002Fdocs\u002Fgeneral\u002Fdefining-user-roles","User roles",{"collection":1216,"item":1501},{"id":309,"status":4,"sort":8,"name":1502,"item":1503},"Duplicity Linking",[1504],{"collection":1391,"item":1505},{"id":170,"status":4,"slug":1506},"duplicity-linking",{"collection":1216,"item":1508},{"id":1509,"status":4,"sort":8,"name":1510,"item":1511},52,"Language Permissions",[1512],{"collection":1391,"item":1513},{"id":99,"status":4,"slug":1514},"language-permissions",{"collection":1216,"item":1516},{"id":275,"status":1517,"sort":8,"name":1518,"item":1519},"draft","Automations",[1520],{"collection":1391,"item":1521},{"id":174,"status":4,"slug":1522},"automations",{"collection":1216,"item":1524},{"id":1102,"status":4,"sort":8,"name":1525,"item":1526},"Branching",[1527],{"collection":1391,"item":1528},{"id":947,"status":4,"slug":1529},"branching",{"collection":1283,"item":1531},{"id":99,"status":1517,"sort":8,"url":1532,"url_text":1533,"show_favorite_icon":229},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fsso-configuration","SSO",{"collection":1283,"item":1535},{"id":1363,"status":1517,"sort":8,"url":1536,"url_text":1537,"show_favorite_icon":229},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Flanguage-statistics","Reporting",{"navigation_items_group_id":1539},{"id":150,"sort":72,"status":4,"name":1540,"render_show_all_url":229,"show_all_url_position":1204,"show_favorite_icon":229,"show_all_url":8,"represent_as_tile":229,"items":1541},"Development",[1542,1548,1554,1561,1568,1575,1582],{"collection":1216,"item":1543},{"id":1183,"status":4,"sort":8,"name":130,"item":1544},[1545],{"collection":1391,"item":1546},{"id":36,"status":4,"slug":1547},"translation-api",{"collection":1216,"item":1549},{"id":222,"status":4,"sort":8,"name":1550,"item":1551},"Localazy CLI",[1552],{"collection":1391,"item":1553},{"id":62,"status":4,"slug":352},{"collection":1216,"item":1555},{"id":527,"status":4,"sort":8,"name":1556,"item":1557},"Language CDN",[1558],{"collection":1391,"item":1559},{"id":107,"status":4,"slug":1560},"language-cdn",{"collection":1216,"item":1562},{"id":1302,"status":4,"sort":8,"name":1563,"item":1564},"Releases",[1565],{"collection":1391,"item":1566},{"id":57,"status":4,"slug":1567},"releases",{"collection":1216,"item":1569},{"id":1163,"status":1517,"sort":8,"name":1570,"item":1571},"Format Conversions",[1572],{"collection":1391,"item":1573},{"id":16,"status":4,"slug":1574},"format-conversions",{"collection":1216,"item":1576},{"id":259,"status":4,"sort":8,"name":1577,"item":1578},"Webhooks",[1579],{"collection":1391,"item":1580},{"id":580,"status":4,"slug":1581},"webhooks",{"collection":1216,"item":1583},{"id":701,"status":4,"sort":8,"name":1584,"item":1585},"Export Aliases",[1586],{"collection":1391,"item":1587},{"id":222,"status":4,"slug":1588},"export-aliases",{"id":107,"name":142,"url":8,"url_text":8,"status":4,"groups":1590},[1591,1680],{"navigation_items_group_id":1592},{"id":62,"sort":77,"status":4,"name":1593,"render_show_all_url":229,"show_all_url_position":1204,"show_favorite_icon":229,"show_all_url":8,"represent_as_tile":229,"items":1594},"Most popular",[1595],{"collection":1216,"item":1596},{"id":29,"status":4,"sort":8,"name":142,"item":1597},[1598,1606,1613,1617,1621,1627,1631,1638,1642,1646,1650,1654,1658,1665,1672],{"collection":1599,"item":1600},"platforms",{"id":57,"status":4,"sort":7,"slug":1601,"name":1602,"icon":1603},"android","Android",{"id":1604,"title":1605},"ff965add-53b0-44ad-b27c-ea4ef641d384","Ic Outline Android",{"collection":1599,"item":1607},{"id":62,"status":4,"sort":16,"slug":1608,"name":1609,"icon":1610},"ios","iOS",{"id":1611,"title":1612},"886285d7-816a-4430-b5a5-edfe307b238e","Ios",{"collection":1599,"item":1614},{"id":222,"status":4,"sort":22,"slug":226,"name":225,"icon":1615},{"id":239,"title":1616},"Logos React",{"collection":1599,"item":1618},{"id":170,"status":4,"sort":107,"slug":390,"name":389,"icon":1619},{"id":397,"title":1620},"Vue",{"collection":1599,"item":1622},{"id":158,"status":4,"sort":50,"slug":1623,"name":1624,"icon":1625},"angular","Angular",{"id":1626,"title":1624},"2a31a97a-48c5-4531-aa36-41c9dd0bdbef",{"collection":1599,"item":1628},{"id":7,"status":4,"sort":57,"slug":471,"name":470,"icon":1629},{"id":485,"title":1630},"Logos Flutter",{"collection":1599,"item":1632},{"id":22,"status":4,"sort":36,"slug":1633,"name":1634,"icon":1635},"typescript","TypeScript",{"id":1636,"title":1637},"8d1319b5-8a96-4199-8407-00add3418b1f","Logos Typescript Icon",{"collection":1599,"item":1639},{"id":580,"status":4,"sort":29,"slug":584,"name":583,"icon":1640},{"id":593,"title":1641},"Logos Javascript",{"collection":1599,"item":1643},{"id":29,"status":4,"sort":174,"slug":236,"name":673,"icon":1644},{"id":686,"title":1645},"Logos Json",{"collection":1599,"item":1647},{"id":99,"status":4,"sort":99,"slug":758,"name":757,"icon":1648},{"id":773,"title":1649},"Format",{"collection":1599,"item":1651},{"id":1030,"status":4,"sort":1037,"slug":1034,"name":1033,"icon":1652},{"id":1041,"title":1653},"Strapi Logo Purple",{"collection":1599,"item":1655},{"id":278,"status":4,"sort":364,"slug":1139,"name":1138,"icon":1656},{"id":1147,"title":1657},"Figma Icon",{"collection":1599,"item":1659},{"id":309,"status":4,"sort":340,"slug":1660,"name":1661,"icon":1662},"microsoft-excel","Microsoft Excel",{"id":1663,"title":1664},"7a175955-7b96-4561-939f-a0e1924faa40","Excel",{"collection":1599,"item":1666},{"id":320,"status":4,"sort":1479,"slug":1667,"name":1668,"icon":1669},"github-actions","GitHub Actions",{"id":1670,"title":1671},"da17554f-ac6d-443d-9bac-1f29645ec1c6","Github Icon",{"collection":1599,"item":1673},{"id":1674,"status":4,"sort":1675,"slug":1676,"name":1677,"icon":1678},97,999,"webflow","Webflow",{"id":1679,"title":1677},"ff43a386-52f8-499f-b77c-ab9a30f4a77e",{"navigation_items_group_id":1681},{"id":107,"sort":36,"status":4,"name":1682,"render_show_all_url":229,"show_all_url_position":1204,"show_favorite_icon":229,"show_all_url":8,"represent_as_tile":229,"items":1683},"Explore more",[1684],{"collection":1685,"item":1686},"text_link_navigation_item_type",{"id":7,"status":4,"sort":8,"text":1687,"url":1688,"url_text":1689},"Localazy is a technology-agnostic platform supporting 50+ frameworks, file formats & popular tools.","\u002Fintegrations","See all integrations",{"id":7,"name":146,"url":8,"url_text":8,"status":4,"groups":1691},[1692,1716,1722],{"navigation_items_group_id":1693},{"id":7,"sort":29,"status":4,"name":1694,"render_show_all_url":229,"show_all_url_position":1204,"show_favorite_icon":229,"show_all_url":8,"represent_as_tile":229,"items":1695},"Helpful Links",[1696,1699,1701,1705,1707,1710,1712],{"collection":1283,"item":1697},{"id":43,"status":4,"sort":8,"url":168,"url_text":1698,"show_favorite_icon":230},"Localazy Blog",{"collection":1283,"item":1700},{"id":150,"status":4,"sort":8,"url":152,"url_text":151,"show_favorite_icon":230},{"collection":1283,"item":1702},{"id":7,"status":4,"sort":8,"url":1703,"url_text":1704,"show_favorite_icon":229},"https:\u002F\u002Fdiscuss.localazy.com\u002F","Discussion Forum",{"collection":1283,"item":1706},{"id":29,"status":4,"sort":8,"url":160,"url_text":159,"show_favorite_icon":229},{"collection":1283,"item":1708},{"id":22,"status":4,"sort":8,"url":109,"url_text":1709,"show_favorite_icon":229},"Become a Partner",{"collection":1283,"item":1711},{"id":154,"status":4,"sort":8,"url":172,"url_text":171,"show_favorite_icon":229},{"collection":1283,"item":1713},{"id":162,"status":4,"sort":8,"url":1714,"url_text":1715,"show_favorite_icon":229},"\u002Ftags\u002Frelease-update","Release Updates",{"navigation_items_group_id":1717},{"id":16,"sort":150,"status":4,"name":1698,"render_show_all_url":230,"show_all_url_position":1204,"show_favorite_icon":229,"show_all_url":168,"represent_as_tile":229,"items":1718},[1719],{"collection":1207,"item":1720},{"id":22,"status":4,"sort":8,"show_author_img":229,"blog_post_tag":1721,"description":8},"[USE LATEST FEATURED]",{"navigation_items_group_id":1723},{"id":57,"sort":43,"status":4,"name":151,"render_show_all_url":230,"show_all_url_position":1204,"show_favorite_icon":229,"show_all_url":152,"represent_as_tile":229,"items":1724},[1725,1739,1750,1759,1770,1780,1791,1799],{"collection":1216,"item":1726},{"id":107,"status":4,"sort":8,"name":1727,"item":1728},"General",[1729],{"collection":1730,"item":1731},"docs_section",{"id":16,"status":4,"sort":7,"slug":1732,"name":1727,"icon":1733,"featured_icon":1736},"general",{"id":1734,"title":1735},"423101f1-308c-42f1-8dfe-53272019e7cb","Global",{"id":1737,"title":1738},"0f7ca4cb-dc3b-4f62-b476-132ed5c4931f","General Doc",{"collection":1216,"item":1740},{"id":50,"status":4,"sort":8,"name":351,"item":1741},[1742],{"collection":1730,"item":1743},{"id":22,"status":4,"sort":16,"slug":352,"name":351,"icon":1744,"featured_icon":1747},{"id":1745,"title":1746},"2f7a4573-8265-4d76-8d55-ce0cc79b8983","Cli",{"id":1748,"title":1749},"3f76ff7b-0e74-4046-bb03-4ca99c3b66d5","Doc Cat Cli",{"collection":1216,"item":1751},{"id":67,"status":4,"sort":8,"name":283,"item":1752},[1753],{"collection":1730,"item":1754},{"id":174,"status":4,"sort":22,"slug":284,"name":283,"icon":1755,"featured_icon":1756},{"id":1745,"title":1746},{"id":1757,"title":1758},"20866781-e69b-4e01-9456-05437487b75c","API Doc",{"collection":1216,"item":1760},{"id":255,"status":4,"sort":8,"name":1761,"item":1762},"CDN",[1763],{"collection":1730,"item":1764},{"id":941,"status":4,"sort":107,"slug":1765,"name":1761,"icon":1766,"featured_icon":1767},"cdn",{"id":1734,"title":1735},{"id":1768,"title":1769},"a8ee9cb7-4e02-41f0-b595-eb518c3085b6","Doc Cat Cdn",{"collection":1216,"item":1771},{"id":57,"status":4,"sort":8,"name":1602,"item":1772},[1773],{"collection":1730,"item":1774},{"id":7,"status":4,"sort":50,"slug":1601,"name":1602,"icon":1775,"featured_icon":1777},{"id":1776,"title":1602},"fb8329ae-0c0c-4fbc-bcdc-83f2eeda1039",{"id":1778,"title":1779},"f7c0dec8-5b42-4943-ab3a-e3665723ad6f","Doc Cat Android",{"collection":1216,"item":1781},{"id":62,"status":4,"sort":8,"name":1609,"item":1782},[1783],{"collection":1730,"item":1784},{"id":107,"status":4,"sort":57,"slug":1608,"name":1609,"icon":1785,"featured_icon":1788},{"id":1786,"title":1787},"289e136c-55df-4d51-847b-1782a2308ee4","Ios Blue",{"id":1789,"title":1790},"2968d3f0-14b5-4427-82e7-f1ea2de17846","Doc Cat Ios",{"collection":1216,"item":1792},{"id":72,"status":4,"sort":8,"name":1138,"item":1793},[1794],{"collection":1730,"item":1795},{"id":99,"status":4,"sort":62,"slug":1139,"name":1138,"icon":1796,"featured_icon":1797},{"id":1745,"title":1746},{"id":1798,"title":1138},"f5e66b5b-a439-47f6-af4a-6ad261de2e87",{"collection":1216,"item":1800},{"id":77,"status":4,"sort":8,"name":1033,"item":1801},[1802],{"collection":1730,"item":1803},{"id":1179,"status":4,"sort":67,"slug":1034,"name":1033,"icon":1804,"featured_icon":1806},{"id":1805,"title":1033},"3b4b03c7-e131-49e6-a014-c8c2c8a2751e",{"id":1807,"title":1808},"1dd05c76-e517-4aea-a3d8-49cfddb40056","Strapi Doc",{"id":22,"name":175,"url":176,"url_text":175,"status":4,"groups":1810},[],{"id":57,"name":93,"url":1812,"url_text":93,"status":4,"groups":1813},"\u002Fbook-demo",[],{"id":1815,"owner":1816,"created_by":8,"sort":8,"title":1821,"slug":1822,"modified_on":53,"created_on":1823,"pinned":229,"badge":8,"priority":1824,"main_image":1825,"status":4,"tags":1826,"dictionary":1833,"reading_time":1834,"excerpt":-1,"og_title":53,"og_description":53,"og_image":53},"6a1eb1ef8550a30001408466",{"id":1817,"first_name":1818,"last_name":53,"slug":1819,"avatar":1820},"606c233dcf7b6a0001d1da93","Petr Hodný","petr-hodny","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Fpetr.png","Release Update: New features in CLI & API, revamped glossary, Strapi plugin updates, and more!","release-update-june-2026-new-features-localazy-cli-glossary-strapi-plugin","2026-06-02T16:10:29.000+02:00","0.7","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F06\u002FRelease-update-Localazy-may-2026.png",[1827,1831,1832],{"id":278,"created_on":1828,"status":4,"label":1829,"slug":1830,"on_index_page":230},"2026-06-04 18:15:34","Release Update","release-update",{"id":278,"created_on":1828,"status":4,"label":351,"slug":352,"on_index_page":229},{"id":278,"created_on":1828,"status":4,"label":283,"slug":284,"on_index_page":229},[],0,{"id":1836,"owner":1837,"created_by":8,"sort":8,"title":1838,"slug":1839,"modified_on":53,"created_on":1840,"pinned":229,"badge":8,"priority":1824,"main_image":1841,"status":4,"tags":1842,"dictionary":1849,"reading_time":1834,"excerpt":-1,"og_title":53,"og_description":53,"og_image":53},"69d78a237ab1270001eddabf",{"id":1817,"first_name":1818,"last_name":53,"slug":1819,"avatar":1820},"Translation API: Translate your content on the fly with Localazy AI!","translation-api-translate-your-content-on-the-fly-with-localazy-ai","2026-04-24T09:27:26.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002FLocalazy-AI-translation-api.png",[1843,1844,1847],{"id":278,"created_on":1828,"status":4,"label":283,"slug":284,"on_index_page":229},{"id":314,"created_on":1828,"status":4,"label":1845,"slug":1846,"on_index_page":230},"AI","ai",{"id":278,"created_on":1828,"status":4,"label":1384,"slug":1848,"on_index_page":230},"localization",[],{"post":1851,"relatedPosts":2033,"banner":2089},{"id":1852,"owner":1853,"created_by":8,"sort":8,"title":1858,"slug":1859,"modified_on":1860,"created_on":1860,"pinned":230,"badge":8,"priority":1824,"main_image":1861,"status":4,"tags":1862,"dictionary":1870,"reading_time":77,"excerpt":1954,"og_title":53,"og_description":53,"og_image":53,"content":1955,"meta_title":1956,"meta_description":1957,"canonical":53,"cta":1958,"fullGhostPost":1965},"69e111967ab1270001ede2f4",{"id":1854,"first_name":1855,"last_name":53,"slug":1856,"avatar":1857},"6824a22d63350c0001d5a5cb","Kevine Nzapdi","kevine-nzapdi","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F11\u002FKevine.png","React + i18next + Localazy | Part 2: Setting up translations 🌎","react-i18next-localazy-part-2-setting-up-translations","2026-05-20T13:34:38.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F05\u002Ftechnical-article-4.png",[1863,1865,1866],{"id":278,"created_on":1828,"status":4,"label":1864,"slug":1864,"on_index_page":230},"i18n",{"id":278,"created_on":1828,"status":4,"label":225,"slug":226,"on_index_page":229},{"id":1867,"created_on":1828,"status":4,"label":1868,"slug":1869,"on_index_page":229},6556628,"Tutorial","tutorial",[1871,1876,1897,1918,1941],{"id":606,"status":4,"owner":1872,"created_on":1873,"title":225,"excerpt":1874,"content":1874,"slug":226,"meta_title":53,"meta_description":8,"canonical":8,"related_terms":1875},"2bac48a8-b362-482f-b574-3bc71dca4c5b","2022-03-17T12:22:55.000Z","React is a development kit written in NodeJS. It is used for building frontend components of applications. Notable apps that use React include Facebook and Netflix.\n",[],{"id":1877,"status":4,"owner":1878,"created_on":1879,"title":1880,"excerpt":1881,"content":1882,"slug":1883,"meta_title":53,"meta_description":53,"canonical":53,"related_terms":1884},339,"a5e46ee7-1f50-4f81-ae2d-68a664c76aa2","2025-07-30T18:16:41.000Z","React-Intl","A JavaScript library for managing internationalization in React applications.","React-Intl is a library that helps developers build multilingual user interfaces in projects that use React. It provides a set of components and APIs to format strings, numbers, dates, and messages based on locale data. Instead of manually handling translations or regional formats, developers can rely on react-intl to manage these variations in a consistent way.\n\nIt supports [ICU Message](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Ficu-message-format \"https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Ficu-message-format\") syntax, which allows dynamic formatting of plural rules, gender options, and variable interpolation in a single string. This makes it easier to manage complex translations inside code.\n\nReact-Intl is part of [FormatJS,](https:\u002F\u002Fformatjs.github.io \"https:\u002F\u002Fformatjs.github.io\") a set of open-source tools built to improve JavaScript internationalization. It works well with translation management platforms and can integrate cleanly into localization workflows.\n\n### ⚛️ What React-Intl can do:\n\n* Format messages using ICU syntax with support for variables and plurals\n* Format dates, times, numbers, and currencies based on the locale\n* Detect and switch between languages in a React app\n* Extract and manage translatable strings from components\n* Keep translations separate from code with external message files\n\n[React-Intl](https:\u002F\u002Fformatjs.github.io\u002Fdocs\u002Freact-intl\u002F \"https:\u002F\u002Fformatjs.github.io\u002Fdocs\u002Freact-intl\u002F\") helps product teams keep translation logic clean and maintainable. With it, you can externalize strings and use locale-aware components, which reduces the risk of hardcoded text and makes apps easier to localize at scale.","react-intl",[1885,1888,1889,1891,1894],{"id":1886,"slug":1887},280,"pluralization",{"id":606,"slug":226},{"id":1890,"slug":584},75,{"id":1892,"slug":1893},90,"icu",{"id":1895,"slug":1896},283,"variable",{"id":322,"status":4,"owner":1872,"created_on":1898,"title":1899,"excerpt":1900,"content":1901,"slug":1899,"meta_title":8,"meta_description":8,"canonical":8,"related_terms":1902},"2026-05-12T07:09:23.000Z","i18next","i18next is one of the top open-source internationalization frameworks written in and for JavaScript.","i18next is a powerful open-source internationalization (i18n) framework built for JavaScript. It provides a flexible, JSON-based approach to localization, and it works well with modern tech stacks, including popular frameworks like React, Angular, and Node, as well as platforms such as iOS and Ruby on Rails.\n\n[i18next](https:\u002F\u002Fwww.i18next.com\u002F) supports all key i18n features like plurals, context, and interpolation. It offers a flexible and scalable solution for localizing products across web, mobile, and desktop applications.\n\n### Key points about i18next: 🔧\n\n- **It’s versatile.**  i18next supports a wide range of modern tech stacks, making it adaptable for different environments and platforms.\n- **It’s a comprehensive localization solution.** In addition to standard i18n features, i18next offers advanced capabilities for managing translations and content variations.\n- **It’s flexible and extensible.** Its plugin-based system lets you extend functionality to match your needs, whether it’s through adding middleware, loading external translations, or detecting languages.\n- **It works across platforms.** i18next can be used for web, mobile, and desktop applications, providing consistent localization across different platforms.\n- **Supports multiple environments.** It works well with both server-side (Node.js, Express) and client-side (React, Angular) applications, giving you a consistent translation framework for all environments.\n- **It integrates with Localazy.** i18next integrates smoothly with localization platforms like Localazy, enhancing efficiency in managing multilingual software projects.\n\ni18next simplifies the internationalization process, making it easy to build localized experiences that scale across different platforms and audiences. It can be a great addition to your tech stack if you’re looking to localize your products. \n\n**[See the list of available integrations](\u002Fintegrations)**",[1903,1904,1905,1908,1909,1910,1913,1915],{"id":16,"slug":1848},{"id":1890,"slug":584},{"id":1906,"slug":1907},79,"internationalization",{"id":606,"slug":226},{"id":609,"slug":390},{"id":1911,"slug":1912},156,"next.js",{"id":1053,"slug":1914},"ruby-on-rails",{"id":1916,"slug":1917},78,"rails-i18n",{"id":1919,"status":4,"owner":1878,"created_on":1920,"title":1921,"excerpt":1922,"content":1923,"slug":1924,"meta_title":53,"meta_description":53,"canonical":53,"related_terms":1925},428,"2026-05-12T07:09:27.000Z","Pseudo-locale","A test locale that applies controlled text changes to mimic a real locale's behaviour and reveal early i18n faults.","A pseudo-locale modifies visible strings automatically during development or testing. It helps developers and QA see where the UI breaks, where placeholders fail, and where text assumptions hide i18n issues. Typical transformations include accenting characters, expanding length, adding visible delimiters, and flipping direction. Pseudo-locales reveal functional and design problems early, reducing rework and translation costs.\n\nTeams use pseudo-locales to find issues that often appear only after localization: clipped text, missing externalization, broken placeholders, font limits, or incorrect handling of right-to-left content. This makes pseudo-locales a direct way to test international readiness before translators start working. However, pseudo-locales do not check tone or cultural fit. Their purpose is to expose technical problems.\n\n### 🧪 What pseudo-locales change\n\n* Accent or extended characters.\n* Longer text through padded segments.\n* Bracket or symbol markers around each string.\n* Unicode direction marks for RTL testing.\n* Visible markers around variables and placeholders.\n\n### 🤔 How to create useful pseudo-locales:\n\n1. Accent or substitute characters (e → è\u002Fë) so ASCII-only code reveals encoding or font issues.\n2. Expand strings (add padding or repeat words) to test layout and wrapping.\n3. Insert visible placeholders or tags around variables to catch missing or reordered placeholders.\n4. Apply Unicode RTL markers or mirror characters for right-to-left testing.\n5. Automate generation from the source string bundle and include pseudo-locales in smoke tests.\n\n### Notes\n\nA pseudo-locale must reflect realistic stress on the interface. Avoid extreme growth patterns that no natural language produces, and check every part of the product, including error states and secondary screens. This ensures the test mirrors real usage instead of producing noise. ","pseudo-locale ",[1926,1929,1932,1935,1938],{"id":1927,"slug":1928},161,"rtl",{"id":1930,"slug":1931},270,"unicode",{"id":1933,"slug":1934},306,"localization-quality-assurance",{"id":1936,"slug":1937},409,"localization-testing",{"id":1939,"slug":1940},427,"pseudo-testing",{"id":1892,"status":4,"owner":1872,"created_on":1898,"title":1942,"excerpt":1943,"content":1944,"slug":1893,"meta_title":53,"meta_description":53,"canonical":53,"related_terms":1945},"ICU","A robust set of C\u002FC++ and Java libraries designed to support Unicode and globalization features in software applications.","ICU is an [open-source](https:\u002F\u002Fwww.unicode.org\u002Fcopyright.html#License \"https:\u002F\u002Fwww.unicode.org\u002Fcopyright.html#License\") set of libraries that enables consistent behavior across platforms and languages, making it essential for internationalization (i18n) and localization (l10n) tasks. \n\nIt ensures that text, dates, numbers, and other culturally sensitive content are processed and displayed according to locale-specific rules.\n\nOriginally developed by IBM and now maintained by the Unicode Consortium, ICU is widely used in enterprise and open-source applications. Its integration with the [Common Locale Data Repository (CLDR)](https:\u002F\u002Fcldr.unicode.org\u002F) allows it to stay up to date with locale-specific conventions, supporting accurate formatting, sorting, and parsing across hundreds of languages and regions.\n\nThe ICU libraries are especially valuable in modern localization platforms and global software development, where linguistic precision and regional accuracy directly impact user experience. They are widely portable and gives applications the same results on all platforms and between C\u002FC++ and Java software.\n\n### 🛠️ What can ICU do?\n\n* Provides robust code page conversion between Unicode and legacy encodings\n* Enables language-sensitive string comparison with locale-specific collation rules\n* Formats numbers, dates, and currency according to regional conventions\n* Implements Unicode-aware regular expressions for global text processing\n* Handles bidirectional text (e.g., combining Arabic with English) accurately\n* Offers full access to Unicode properties and normalization functions\n* Supports multiple calendar systems and time zone calculations\n* Detects text boundaries for words, sentences, and line breaks\n* Integrates with the CLDR for up-to-date localization data\n\n> *📚 You can read more about ICU in their [official docs](https:\u002F\u002Ficu.unicode.org\u002F).*  ",[1946,1949,1950,1953],{"id":1947,"slug":1948},272,"cldr",{"id":1906,"slug":1907},{"id":1951,"slug":1952},255,"icu-message-format",{"id":1930,"slug":1931},"With i18next configured, it's time to put Localazy to work. We'll upload translations, handle ICU plurals, and set up a sync workflow you can run whenever new strings land in the codebase.","\u003Cp>In this second part of the series, we continue \u003Cstrong>turning our React project into a fully localized, production-ready app\u003C\u002Fstrong>. You'll learn how to upload and download translations, enable pseudo-locales for visual QA, and keep everything in sync as your project evolves.\u003C\u002Fp>\u003Cp>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Freact-i18next-localazy-tutorial-part-1-i18n-foundations\">In Part 1\u003C\u002Fa>, we set up the foundation for the React multilingual app. Now we move from configuration to \u003Cstrong>a real-world workflow\u003C\u002Fstrong>: uploading translations to Localazy, pulling them back into the app, testing the localized UI, and using pseudo-locales for visual QA.\u003C\u002Fp>\u003Ch2 id=\"1-step-1-upload-translations-to-localazy\">1️⃣ Step 1: Upload translations to Localazy \u003Ca class=\"markdownit-header-anchor\" href=\"#1-step-1-upload-translations-to-localazy\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>To manage translations centrally, we’ll \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fintegrations\u002Freact\">connect our React project to Localazy\u003C\u002Fa>. This lets us upload our English source file, translate it through the dashboard, and later pull updated language files back into the app.\u003C\u002Fp>\u003Ch3 id=\"log-in-and-get-your-keys\">Log in and get your keys \u003Ca class=\"markdownit-header-anchor\" href=\"#log-in-and-get-your-keys\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Log into Localazy and create a new project:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--3-.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1909\" height=\"801\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fimage--3-.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fimage--3-.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fimage--3-.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--3-.png 1909w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Give it a name and service details, then click on \u003Cstrong>Create new project\u003C\u002Fstrong>:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment482a3b72-d9db-4e3b-96b.png\" class=\"kg-image\" alt=\"attachment482a3b72-d9db-4e3b-96b.png\" loading=\"lazy\" width=\"1900\" height=\"778\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment482a3b72-d9db-4e3b-96b.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment482a3b72-d9db-4e3b-96b.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment482a3b72-d9db-4e3b-96b.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment482a3b72-d9db-4e3b-96b.png 1900w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Naming your project and setting the project type.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>After creation, Localazy asks how you want to integrate. Select \u003Cstrong>React\u003C\u002Fstrong> from the list of integrations:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmentcb644780-caf3-4989-a08.png\" class=\"kg-image\" alt=\"attachmentcb644780-caf3-4989-a08.png\" loading=\"lazy\" width=\"1897\" height=\"928\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachmentcb644780-caf3-4989-a08.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachmentcb644780-caf3-4989-a08.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachmentcb644780-caf3-4989-a08.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmentcb644780-caf3-4989-a08.png 1897w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Localazy will generate setup instructions along with your project keys:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmentaa2c5de7-0365-46d1-a3d.png\" class=\"kg-image\" alt=\"attachmentaa2c5de7-0365-46d1-a3d.png\" loading=\"lazy\" width=\"1912\" height=\"940\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachmentaa2c5de7-0365-46d1-a3d.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachmentaa2c5de7-0365-46d1-a3d.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachmentaa2c5de7-0365-46d1-a3d.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmentaa2c5de7-0365-46d1-a3d.png 1912w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Create a tiny keys file you \u003Cstrong>do not commit\u003C\u002Fstrong>:\u003C\u002Fp>\u003Cp>\u003Ccode>localazy.keys.json\u003C\u002Fcode> (root)\u003C\u002Fp>\u003Cpre>\u003Ccode>{ \n\t\"writeKey\": \"YOUR_WRITE_KEY\", \n\t\"readKey\": \"YOUR_READ_KEY\"\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Add to \u003Ccode>.gitignore\u003C\u002Fcode>:\u003C\u002Fp>\u003Cpre>\u003Ccode>localazy.keys.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>You’ll use \u003Cstrong>Write Key\u003C\u002Fstrong> for uploads and \u003Cstrong>Read Key\u003C\u002Fstrong> for downloads.\u003C\u002Fp>\u003Ch3 id=\"upload-the-english-source-file\">Upload the English source file \u003Ca class=\"markdownit-header-anchor\" href=\"#upload-the-english-source-file\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Run:\u003C\u002Fp>\u003Cpre>\u003Ccode>npx localazy upload -k localazy.keys.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Localazy will process \u003Ccode>\u003Cstrong>en.json\u003C\u002Fstrong>\u003C\u002Fcode> and push its contents to your project.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment24e9a1af-060d-4ecb-9a4.png\" class=\"kg-image\" alt=\"attachment24e9a1af-060d-4ecb-9a4.png\" loading=\"lazy\" width=\"1905\" height=\"796\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment24e9a1af-060d-4ecb-9a4.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment24e9a1af-060d-4ecb-9a4.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment24e9a1af-060d-4ecb-9a4.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment24e9a1af-060d-4ecb-9a4.png 1905w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Your uploaded English source keys in the Localazy dashboard.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>After the upload finishes, open your Localazy dashboard and you should see the keys from your React localization setup complete with the ICU plural message we included earlier.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment1b94bfbc-49f2-486e-aee.png\" class=\"kg-image\" alt=\"attachment1b94bfbc-49f2-486e-aee.png\" loading=\"lazy\" width=\"1903\" height=\"769\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment1b94bfbc-49f2-486e-aee.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment1b94bfbc-49f2-486e-aee.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment1b94bfbc-49f2-486e-aee.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment1b94bfbc-49f2-486e-aee.png 1903w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Ch3 id=\"add-your-target-languages\">Add your target languages \u003Ca class=\"markdownit-header-anchor\" href=\"#add-your-target-languages\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Once your English source has been uploaded, \u003Cstrong>add a target language \u003C\u002Fstrong>(for example, French).\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment4cb277fc-8c68-433c-810.png\" class=\"kg-image\" alt=\"attachment4cb277fc-8c68-433c-810.png\" loading=\"lazy\" width=\"1899\" height=\"759\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment4cb277fc-8c68-433c-810.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment4cb277fc-8c68-433c-810.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment4cb277fc-8c68-433c-810.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment4cb277fc-8c68-433c-810.png 1899w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Chose a translation engine. Remember that you can fill translations manually or pre-fill them using MT or Localazy AI.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment0bae55be-80e0-4aa1-93f.png\" class=\"kg-image\" alt=\"attachment0bae55be-80e0-4aa1-93f.png\" loading=\"lazy\" width=\"1894\" height=\"796\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment0bae55be-80e0-4aa1-93f.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment0bae55be-80e0-4aa1-93f.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment0bae55be-80e0-4aa1-93f.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment0bae55be-80e0-4aa1-93f.png 1894w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Now, begin your translation:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment892ffe68-784c-46e8-9b6.png\" class=\"kg-image\" alt=\"attachment892ffe68-784c-46e8-9b6.png\" loading=\"lazy\" width=\"1906\" height=\"757\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment892ffe68-784c-46e8-9b6.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment892ffe68-784c-46e8-9b6.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment892ffe68-784c-46e8-9b6.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment892ffe68-784c-46e8-9b6.png 1906w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmenta5ca4661-747c-4cfd-929.png\" class=\"kg-image\" alt=\"attachmenta5ca4661-747c-4cfd-929.png\" loading=\"lazy\" width=\"1885\" height=\"487\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachmenta5ca4661-747c-4cfd-929.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachmenta5ca4661-747c-4cfd-929.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachmenta5ca4661-747c-4cfd-929.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmenta5ca4661-747c-4cfd-929.png 1885w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Localazy handles ICU plural messages natively, so translators see structured plural forms, no raw syntax.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment01ca2f67-a8f8-4354-833.png\" class=\"kg-image\" alt=\"attachment01ca2f67-a8f8-4354-833.png\" loading=\"lazy\" width=\"1906\" height=\"768\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment01ca2f67-a8f8-4354-833.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment01ca2f67-a8f8-4354-833.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment01ca2f67-a8f8-4354-833.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment01ca2f67-a8f8-4354-833.png 1906w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>ICU plural forms displayed in the translation editor.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>Once translations are ready, \u003Cstrong>we’ll pull them back into the \u003Ccode>src\u002Fi18n\u003C\u002Fcode> folder\u003C\u002Fstrong> and React will treat them just like the English file.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmentcfa8b68b-eb0b-40b8-ab0.png\" class=\"kg-image\" alt=\"attachmentcfa8b68b-eb0b-40b8-ab0.png\" loading=\"lazy\" width=\"1891\" height=\"381\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachmentcfa8b68b-eb0b-40b8-ab0.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachmentcfa8b68b-eb0b-40b8-ab0.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachmentcfa8b68b-eb0b-40b8-ab0.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmentcfa8b68b-eb0b-40b8-ab0.png 1891w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Ch2 id=\"2-step-2-download-translations-back-into-the-project\">2️⃣ Step 2: Download translations back into the project \u003Ca class=\"markdownit-header-anchor\" href=\"#2-step-2-download-translations-back-into-the-project\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>With your English source strings uploaded, Localazy will generate translations for every enabled language. Instead of manually creating files like \u003Ccode>fr.json\u003C\u002Fcode>,\u003Cstrong> we'll simply pull them down using the CLI\u003C\u002Fstrong>.\u003C\u002Fp>\u003Cp>Run the download command:\u003C\u002Fp>\u003Cpre>\u003Ccode>npx localazy download -k localazy.keys.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>When it finishes, open your \u003Ccode>src\u002Fi18n\u003C\u002Fcode> folder. You should now see fresh language files, something like:\u003C\u002Fp>\u003Cpre>\u003Ccode>src\u002Fi18n\u002Fen.json\nsrc\u002Fi18n\u002Ffr.json \u002F\u002F Localazy added this\nsrc\u002Fi18n\u002Findex.js\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>React reads these just like the English file, so as soon as translations exist, \u003Cstrong>the language switcher will show real changes in the UI\u003C\u002Fstrong>.\u003C\u002Fp>\u003Cp>Downloading \u003Ccode>fr.json\u003C\u002Fcode> isn't enough: React must know about it. Update your \u003Ca href=\"https:\u002F\u002Freact.i18next.com\u002F\">i18n config\u003C\u002Fa> to import and register the language:\u003C\u002Fp>\u003Cpre>\u003Ccode>\u002F\u002F src\u002Fi18n\u002Findex.js\nimport i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport en from \".\u002Fen.json\";\nimport fr from \".\u002Ffr.json\"; \u002F\u002F new file from Localazy\n\ni18n.use(initReactI18next)  \n\t\t.init({\n\t\t  resources: {\n\t\t    en: { translation: en },\n\t\t    fr: { translation: fr } \u002F\u002F add the language here\n\t\t  },\n\t\t  lng: \"en\",\n\t\t  fallbackLng: \"en\",\n\t\t});\nexport default i18n;\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>If you add more languages later (e.g., Spanish, German, Arabic), import and register them the same way after running \u003Ccode>localazy download\u003C\u002Fcode>.\u003C\u002Fp>\u003Ch2 id=\"3-step-3-test-the-localized-react-app\">3️⃣ Step 3: Test the localized React app \u003Ca class=\"markdownit-header-anchor\" href=\"#3-step-3-test-the-localized-react-app\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>With English and French files in place, it’s time to verify everything behaves like a real multilingual interface rather than a static demo.\u003C\u002Fp>\u003Cp>Start the dev server if it's not running:\u003C\u002Fp>\u003Cpre>\u003Ccode>yarn dev\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The app should load in English by default. Click on the language switcher:\u003C\u002Fp>\u003Cpre>\u003Ccode>&lt;button\n  onClick={() =&gt; {\n    i18n.changeLanguage(i18n.language === \"en\" ? \"fr\" : \"en\");\n  }}\n&gt;\n  {t(\"language\")}\n&lt;\u002Fbutton&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>When you switch to French, the heading, button label, and any other localized UI elements should update immediately \u003Cstrong>with no page refresh\u003C\u002Fstrong> as in the \u003Ccode>fr.json\u003C\u002Fcode>.\u003C\u002Fp>\u003Ch3 id=\"test-icu-plurals-in-the-real-ui\">Test ICU plurals in the real UI \u003Ca class=\"markdownit-header-anchor\" href=\"#test-icu-plurals-in-the-real-ui\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Now that our React localization setup switches languages correctly, let’s verify that plural rules work as expected. We already defined the ICU plural message in both languages:\u003C\u002Fp>\u003Cp>\u003Ccode>\u003Cstrong>en.json\u003C\u002Fstrong>\u003C\u002Fcode>\u003C\u002Fp>\u003Cpre>\u003Ccode>\"items\": \"{count, plural, one {# item} other {# items}}\"\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Ccode>\u003Cstrong>fr.json\u003C\u002Fstrong>\u003C\u002Fcode>\u003C\u002Fp>\u003Cpre>\u003Ccode>\"items\": \"{count, plural, one {# élément} other {# éléments}}\"\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>To test it, we need a dynamic number. For now, we’ll simulate that with a temporary component state.\u003C\u002Fp>\u003Cp>Add this to \u003Ccode>App.jsx\u003C\u002Fcode>:\u003C\u002Fp>\u003Cpre>\u003Ccode>import { useState } from \"react\";\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Then inside the component:\u003C\u002Fp>\u003Cpre>\u003Ccode>const [count, setCount] = useState(1);\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Render the plural message:\u003C\u002Fp>\u003Cpre>\u003Ccode>&lt;p className=\"mt-4 text-gray-700\"&gt;\n  {t(\"items\", { count })}\n&lt;\u002Fp&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Add simple buttons to change the count:\u003C\u002Fp>\u003Cpre>\u003Ccode> &lt;div className=\"flex gap-3 mt-3 justify-center\"&gt;\n     &lt;button onClick={() =&gt; setCount((c) =&gt; Math.max(0, c - 1))} className=\"text-blue-950\"&gt;-&lt;\u002Fbutton&gt;\n     &lt;button onClick={() =&gt; setCount((c) =&gt; c + 1)} className=\"text-blue-950\"&gt;+&lt;\u002Fbutton&gt;\n &lt;\u002Fdiv&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>When you test it, you will see something like this:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment57e1f6ab-f1cd-4de0-8cb.png\" class=\"kg-image\" alt=\"attachment57e1f6ab-f1cd-4de0-8cb.png\" loading=\"lazy\" width=\"493\" height=\"166\">\u003C\u002Ffigure>\u003Cp>This is because right now i18next is treating that whole ICU string as plain text. We never told i18next “this is ICU syntax, please parse it,” so it just prints the raw message. By default, \u003Ccode>i18next\u003C\u002Fcode> does not understand ICU format. It has its own pluralization system and to use ICU, you need an extra plugin. \u003C\u002Fp>\u003Cp>There are two ways to handle this:\u003C\u002Fp>\u003Col>\u003Cli>The first method is to \u003Cstrong>use i18next’s default plural handling instead of ICU \u003C\u002Fstrong>(so no need of a plugin):\u003C\u002Fli>\u003C\u002Fol>\u003Cp>\u003Cstrong>\u003Ccode>src\u002Fi18n\u002Fen.json\u003C\u002Fcode>\u003C\u002Fstrong>\u003C\u002Fp>\u003Cpre>\u003Ccode>{\n  \"items_zero\": \"No items\",\n  \"items_one\": \"1 item\",\n  \"items_other\": \"{{count}} items\"\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Cstrong>\u003Ccode>src\u002Fi18n\u002Ffr.json\u003C\u002Fcode>\u003C\u002Fstrong>\u003C\u002Fp>\u003Cpre>\u003Ccode>{\n  \"items_zero\": \"Aucun élément\",\n  \"items_one\": \"1 élément\",\n  \"items_other\": \"{{count}} éléments\"\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Then in React, call:\u003C\u002Fp>\u003Cpre>\u003Ccode>{t(\"items\", { count })}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>i18next will automatically map:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ccode>count = 0\u003C\u002Fcode> → \u003Ccode>items_zero\u003C\u002Fcode>\u003C\u002Fli>\u003Cli>\u003Ccode>count = 1\u003C\u002Fcode> → \u003Ccode>items_one\u003C\u002Fcode>\u003C\u002Fli>\u003Cli>\u003Ccode>count &gt; 1\u003C\u002Fcode> → \u003Ccode>items_other\u003C\u002Fcode>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>2. The second method is to \u003Cstrong>keep the ICU and teach i18next to understand it\u003C\u002Fstrong>. This guide uses the second method. First you need to install \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fi18next\u002Fi18next-icu\">i18next-icu\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fformatjs.github.io\u002Fdocs\u002Fintl-messageformat\u002F\">intl-messageformat\u003C\u002Fa>:\u003C\u002Fp>\u003Cpre>\u003Ccode>yarn add i18next-icu intl-messageformat\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>i18next-icu teaches i18next how to interpret ICU messages. It hooks into i18n processing and says:\u003C\u002Fp>\u003Cblockquote>\u003Cem>\"Instead of treating this as plain text, handle it as an ICU-formatted translation.\"\u003C\u002Fem>\u003C\u002Fblockquote>\u003Cp>\u003Ccode>\u003Cstrong>intl-messageformat\u003C\u002Fstrong>\u003C\u002Fcode> \u003Cstrong>library\u003C\u002Fstrong> is the actual ICU parser. It looks at the ICU expression and decides which branch to output. Localazy supports ICU messages when \u003Ccode>\"features\": [\"plural_icu\"]\u003C\u002Fcode> is enabled, which we did ealier. Installing these packages \u003Cstrong>ensures the app behaves the same way Localazy interprets translations\u003C\u002Fstrong>, so translators don’t see one format in Localazy and another in the UI.\u003C\u002Fp>\u003Cp>Next, we'll update the i18n initialization so ICU handling is part of the pipeline.\u003C\u002Fp>\u003Cp>Open \u003Ccode>src\u002Fi18n\u002Findex.js\u003C\u002Fcode> and make sure it looks like this:\u003C\u002Fp>\u003Cpre>\u003Ccode>import ICU from \"i18next-icu\";\n\n...\n\ni18n\n  .use(ICU) \u002F\u002F enable ICU message formatting\n  .use(initReactI18next)\n  .init({\n    \u002F\u002F same config…\n  });\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The order matters: \u003Cstrong>\u003Ccode>ICU()\u003C\u002Fcode> has to run before \u003Ccode>initReactI18next\u003C\u002Fcode>\u003C\u002Fstrong>, so messages are parsed correctly before they reach React.\u003C\u002Fp>\u003Cp>Now restart your application and test both the English and French ICU messages, along with the counter, to make sure everything behaves exactly as described.\u003C\u002Fp>\u003Ch2 id=\"4-step-4-enable-pseudo-locale-for-visual-qa\">4️⃣ Step 4: Enable pseudo-locale for visual QA \u003Ca class=\"markdownit-header-anchor\" href=\"#4-step-4-enable-pseudo-locale-for-visual-qa\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>A \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fpseudo-locale\">pseudo-locale\u003C\u002Fa> works like a visual stress test for your UI. It takes your English strings and transforms them. \u003C\u002Fp>\u003Cp>For example:\u003C\u002Fp>\u003Cp>\u003Ccode>Welcome to the React localized app\u003C\u002Fcode> becomes:\u003C\u002Fp>\u003Cp>\u003Ccode>Ŵēłćōṁē ţō ţĥē Ŕēąçţ ļōćąłįżēđ ąpp\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>You can still kind of read the text if you squint, but everything looks a bit off. Some words get weirdly stretched out, random accents show up everywhere, and the whole shape of each sentence changes.\u003C\u002Fp>\u003Cp>When you render your app with that locale, \u003Cstrong>you can immediately spot buttons where text is cut off or suddenly cropped\u003C\u002Fstrong>, labels that overflow their containers, texts or layout that only works well in English, and places where you accidentally concatenated strings instead of using proper keys.\u003C\u002Fp>\u003Cp>It’s a very handy tool in a React localization workflow before real translators even touch the strings.\u003C\u002Fp>\u003Ch3 id=\"create-a-pseudo-locale-in-localazy\">Create a pseudo-locale in Localazy \u003Ca class=\"markdownit-header-anchor\" href=\"#create-a-pseudo-locale-in-localazy\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Open your Localazy project &gt; Click on \u003Cstrong>Add New Language\u003C\u002Fstrong>.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--7-.png\" class=\"kg-image\" alt=\"image (7).png\" loading=\"lazy\" width=\"1897\" height=\"657\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fimage--7-.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fimage--7-.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fimage--7-.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--7-.png 1897w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Creating a custom locale in Localazy.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>Instead of choosing a real language, scroll to \u003Cstrong>Custom Locales\u003C\u002Fstrong> and create one manually.\u003C\u002Fp>\u003Cp>Once the language is created, we need to map it to the code used in our app. In Localazy, then \u003Cstrong>add a language alias \u003C\u002Fstrong>so \u003Ccode>xxd\u003C\u002Fcode> corresponds to our internal pseudo-locale code (\u003Ccode>qps\u003C\u002Fcode>):\u003C\u002Fp>\u003Cpre>\u003Ccode>{\n  \"upload\": {\n    ...\n  },\n  \"download\": {\n    \"files\": [\n      {\n        \"output\": \"${path}\u002F${lang}.json\"\n      }\n    \"langAliases\": { \"xxd\": \"qps\" }\n    ]\n  }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Ccode>xxd\u003C\u002Fcode> is the custom locale code created in Localazy and \u003Ccode>qps\u003C\u002Fcode> is the pseudo-locale code used inside React. This tells Localazy: \"Whenever you download \u003Ccode>xxd\u003C\u002Fcode>, output the file under the name \u003Ccode>qps.json\u003C\u002Fcode>.\"\u003C\u002Fp>\u003Cp>Note that Localazy does \u003Cstrong>not\u003C\u002Fstrong> automatically generate pseudo-localized text. It does support pseudo-locales as a testing concept (a locale that applies visual changes like accenting characters and expanding text). We'll add the pseudo-localized strings manually. For example, we translate English by adding accented characters like this: \u003Cem>Ĕńĝłįšĥ\u003C\u002Fem>.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--8-.png\" class=\"kg-image\" alt=\"image (8).png\" loading=\"lazy\" width=\"1909\" height=\"616\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fimage--8-.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fimage--8-.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fimage--8-.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--8-.png 1909w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Adding accented characters to pseudo-localize a string.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>We'll do this for the rest of the strings to translate.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--9-.png\" class=\"kg-image\" alt=\"image (9).png\" loading=\"lazy\" width=\"1905\" height=\"679\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fimage--9-.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fimage--9-.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fimage--9-.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--9-.png 1905w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>All strings pseudo-localized in the custom locale.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Ch3 id=\"download-pseudo-locale-into-your-project\">Download pseudo-locale into your project \u003Ca class=\"markdownit-header-anchor\" href=\"#download-pseudo-locale-into-your-project\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Run:\u003C\u002Fp>\u003Cpre>\u003Ccode>npx localazy download -k localazy.keys.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Now check your translation directory:\u003C\u002Fp>\u003Cpre>\u003Ccode>src\u002Fi18n\u002F\n ├─ en.json\n ├─ fr.json\n └─ qps.json    \u002F\u002F pseudo-locale for visual testing\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"register-the-pseudo-locale-in-your-react-i18n-config\">Register the pseudo-locale in your React i18n config \u003Ca class=\"markdownit-header-anchor\" href=\"#register-the-pseudo-locale-in-your-react-i18n-config\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Add it like any other language:\u003C\u002Fp>\u003Cpre>\u003Ccode>import qps from \".\u002Fqps.json\";\n\ni18n.init({\n  resources: {\n    en: { translation: en },\n    fr: { translation: fr },\n    qps: { translation: qps } \u002F\u002F add this line\n  },\n  lng: \"en\",\n  fallbackLng: \"en\"\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Update the tour button tag to select tag:\u003C\u002Fp>\u003Cpre>\u003Ccode>&lt;select\n  value={i18n.language}\n  onChange={(e) =&gt; i18n.changeLanguage(e.target.value)}\n  className=\"mt-4 bg-amber-600 p-3 rounded-md text-white\"\n&gt;\n  &lt;option value=\"en\"&gt;{t(\"lang.en\")}&lt;\u002Foption&gt;\n  &lt;option value=\"fr\"&gt;{t(\"lang.fr\")}&lt;\u002Foption&gt;\n  &lt;option value=\"qps\"&gt;{t(\"lang.qps\")}&lt;\u002Foption&gt;\n&lt;\u002Fselect&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Then test.\u003C\u002Fp>\u003Cblockquote>\u003Cstrong>Note\u003C\u002Fstrong>: The pseudo-locale is meant only for development, not production. It helps you visually catch layout issues early by exaggerating text length, accents, and spacing, but it isn’t a real language and shouldn’t be shipped to end users or exposed in production builds\u003C\u002Fblockquote>\u003Ch2 id=\"5-step-5-sync-translations-as-the-app-evolves\">5️⃣ Step 5: Sync translations as the app evolves \u003Ca class=\"markdownit-header-anchor\" href=\"#5-step-5-sync-translations-as-the-app-evolves\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>Once localization is set up, \u003Cstrong>you’ll repeat the same workflow whenever you add or change text in the app\u003C\u002Fstrong>. Localazy keeps your translations aligned with your source language instead of making you track changes manually.\u003C\u002Fp>\u003Ch3 id=\"update-your-source-language\">Update your source language \u003Ca class=\"markdownit-header-anchor\" href=\"#update-your-source-language\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Make changes in \u003Ccode>\u003Cstrong>src\u002Fi18n\u002Fen.json\u003C\u002Fstrong>\u003C\u002Fcode>. Example:\u003C\u002Fp>\u003Cpre>\u003Ccode>\"invoice_total\": \"Total amount\"\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"upload-changes-to-localazy\">Upload changes to Localazy \u003Ca class=\"markdownit-header-anchor\" href=\"#upload-changes-to-localazy\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cpre>\u003Ccode>npx localazy upload -k localazy.keys.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Localazy marks new or changed keys automatically so translators know what to update.\u003C\u002Fp>\u003Ch3 id=\"translate-in-localazy\">Translate in Localazy \u003Ca class=\"markdownit-header-anchor\" href=\"#translate-in-localazy\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Open the dashboard and fill in translations for other languages (\u003Ccode>fr\u003C\u002Fcode>, \u003Ccode>qps\u003C\u002Fcode>). ICU messages stay structured, so plural rules are handled cleanly.\u003C\u002Fp>\u003Ch3 id=\"download-updated-translations\">Download updated translations \u003Ca class=\"markdownit-header-anchor\" href=\"#download-updated-translations\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cpre>\u003Ccode>npx localazy download -k localazy.keys.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This refreshes the files:\u003C\u002Fp>\u003Cpre>\u003Ccode>src\u002Fi18n\u002Ffr.json\nsrc\u002Fi18n\u002Fqps.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"lessstronggreatertest-changes-in-the-uilessstronggreater\">\u003Cstrong>Test changes in the UI\u003C\u002Fstrong> \u003Ca class=\"markdownit-header-anchor\" href=\"#lessstronggreatertest-changes-in-the-uilessstronggreater\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Restart if needed:\u003C\u002Fp>\u003Cpre>\u003Ccode>yarn dev\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Switch languages and verify that the translations render correctly.\u003C\u002Fp>\u003Ch3 id=\"workflow-summary\">Workflow summary \u003Ca class=\"markdownit-header-anchor\" href=\"#workflow-summary\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cpre>\u003Ccode>Update en.json → Upload → Translate → Download → Test\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Flocalazy-workflow.gif\" class=\"kg-image\" alt=\"localazy workflow.gif\" loading=\"lazy\" width=\"610\" height=\"334\">\u003C\u002Ffigure>\u003Ch2 id=\"quick-recap\">🔍 Quick recap \u003Ca class=\"markdownit-header-anchor\" href=\"#quick-recap\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>In this guide, we enabled ICU plural rules, uploaded and synced translations with Localazy, and introduced a pseudo-locale for visual QA. Finally, we prepared the setup for production, including fallback languages, safe handling of pseudo-locales, and caching considerations. You can work through the full code of this guide in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FGunkev\u002Freact-localized-app\" rel=\"noopener noreferrer nofollow\">this Git repository.\u003C\u002Fa>\u003C\u002Fp>\u003Ch2 id=\"best-practices-to-consider-for-production\">🏁 Best practices to consider for production \u003Ca class=\"markdownit-header-anchor\" href=\"#best-practices-to-consider-for-production\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>Now that your app supports multiple languages, make sure it behaves correctly when deployed. The goal here is to make your localization setup stable, predictable, and production-safe.\u003C\u002Fp>\u003Ch3 id=\"1-keep-the-pseudo-locale-in-development-only\">1. Keep the pseudo-locale in development only \u003Ca class=\"markdownit-header-anchor\" href=\"#1-keep-the-pseudo-locale-in-development-only\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Pseudo-locales are helpful for visual QA, but they’re not real languages, so they shouldn’t be exposed to end users. You can simply \u003Cstrong>hide the option in production\u003C\u002Fstrong>:\u003C\u002Fp>\u003Cpre>\u003Ccode>{process.env.NODE_ENV !== \"production\" &amp;&amp; (\n  &lt;option value=\"qps\"&gt;Pseudo&lt;\u002Foption&gt;\n)}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This keeps the testing locale available during development without affecting real users.\u003C\u002Fp>\u003Ch3 id=\"2-use-a-fallback-language\">2. Use a fallback language \u003Ca class=\"markdownit-header-anchor\" href=\"#2-use-a-fallback-language\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Missing translations shouldn’t leave blank UI elements. A fallback ensures the app always displays meaningful text when a key isn’t available in another locale:\u003C\u002Fp>\u003Cpre>\u003Ccode>fallbackLng: \"en\"\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This is standard practice with \u003Ccode>i18next\u003C\u002Fcode> and prevents unexpected gaps during incremental localization.\u003C\u002Fp>\u003Ch3 id=\"3-bundle-translations-locally-vs-dynamic-delivery\">3. Bundle translations locally vs. dynamic delivery \u003Ca class=\"markdownit-header-anchor\" href=\"#3-bundle-translations-locally-vs-dynamic-delivery\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>For this guide, translations are bundled as static JSON:\u003C\u002Fp>\u003Cpre>\u003Ccode>src\u002Fi18n\u002Fen.json\nsrc\u002Fi18n\u002Ffr.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This is ideal for static hosting, offline mode, and fast load times. Localazy also supports more dynamic delivery patterns (for example, \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Fautomated-localization-gitlab-cicd-localazy\" rel=\"noopener noreferrer nofollow\">integrating downloads into CI\u002FCD\u003C\u002Fa> or backend workflows) if you need more frequent translation updates later.\u003C\u002Fp>\u003Ch3 id=\"4-handle-caching-appropriately\">4. Handle caching appropriately \u003Ca class=\"markdownit-header-anchor\" href=\"#4-handle-caching-appropriately\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>If you're hosting translation files on a CDN or static host, you may \u003Cstrong>enable caching for faster loads\u003C\u002Fstrong>. Just remember: long-lived caching improves performance, but you should clear caches when translations change. This avoids outdated text appearing in production.\u003C\u002Fp>\u003Ch3 id=\"final-launch-checklist\">Final launch checklist \u003Ca class=\"markdownit-header-anchor\" href=\"#final-launch-checklist\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Before shipping:\u003C\u002Fp>\u003Cul>\u003Cli>☑️ Make sure language switching updates the UI instantly, with no page reload\u003C\u002Fli>\u003Cli>☑️ Confirm all visible UI strings have French translations\u003C\u002Fli>\u003Cli>☑️ Hide the pseudo-locale option in production builds\u003C\u002Fli>\u003Cli>☑️ Test that plurals and ICU rules behave correctly in both languages\u003C\u002Fli>\u003Cli>☑️ Verify the fallback language catches any missing keys gracefully\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"go-build-something-multilingual\">🚀 Go build something multilingual \u003Ca class=\"markdownit-header-anchor\" href=\"#go-build-something-multilingual\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>You now have i18next parsing translations at runtime, Localazy keeping your locales in sync, ICU plurals handling the edge cases, and a pseudo-locale catching layout issues before real translators ever see your strings. Moving forward, you can add a new locale, push a key update, automate the sync in CI... It all fits into the same cycle you've already built. \u003C\u002Fp>\u003Cp>With that, you're ready to ship!\u003C\u002Fp>","React + i18next + Localazy, #2: Setting up translations","Learn to upload translations to Localazy, handle ICU plurals, and set up a sync workflow you can run whenever new strings land in the codebase.",{"id":50,"status":4,"created_on":1959,"modified_on":1960,"icon":1961,"header":1962,"description":1963,"button_label":1964,"link":226},"2022-03-17T12:23:03.000Z","2025-04-04T16:30:30.000Z","app","React i18n done right with Localazy","Make your React app international in a few steps! Enjoy improved plural support, placeholder detection, and a variety of CI\u002FCD options — all in the same platform.","See React integration",{"slug":1859,"id":1852,"uuid":1966,"title":1858,"html":1967,"comment_id":1852,"feature_image":1861,"featured":230,"visibility":1968,"email_recipient_filter":1969,"created_at":1970,"updated_at":1860,"published_at":1860,"custom_excerpt":1954,"codeinjection_head":8,"codeinjection_foot":8,"custom_template":8,"canonical_url":8,"authors":1971,"tags":1977,"primary_author":2030,"primary_tag":2031,"url":2032,"excerpt":1954,"reading_time":77,"access":230,"send_email_when_published":229,"og_image":8,"og_title":8,"og_description":8,"twitter_image":8,"twitter_title":8,"twitter_description":8,"meta_title":1956,"meta_description":1957,"email_subject":8,"frontmatter":8,"dictionary":1870,"cta":1958,"plainTags":1862},"73237d96-f524-40d6-a61f-74930175a2d2","\u003Cp>In this second part of the series, we continue \u003Cstrong>turning our React project into a fully localized, production-ready app\u003C\u002Fstrong>. You'll learn how to upload and download translations, enable pseudo-locales for visual QA, and keep everything in sync as your project evolves.\u003C\u002Fp>\u003Cp>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Freact-i18next-localazy-tutorial-part-1-i18n-foundations\">In Part 1\u003C\u002Fa>, we set up the foundation for the React multilingual app. Now we move from configuration to \u003Cstrong>a real-world workflow\u003C\u002Fstrong>: uploading translations to Localazy, pulling them back into the app, testing the localized UI, and using pseudo-locales for visual QA.\u003C\u002Fp>\u003Ch2 id=\"1%EF%B8%8F%E2%83%A3-step-1-upload-translations-to-localazy\">1️⃣ Step 1: Upload translations to Localazy\u003C\u002Fh2>\u003Cp>To manage translations centrally, we’ll \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fintegrations\u002Freact\">connect our React project to Localazy\u003C\u002Fa>. This lets us upload our English source file, translate it through the dashboard, and later pull updated language files back into the app.\u003C\u002Fp>\u003Ch3 id=\"log-in-and-get-your-keys\">Log in and get your keys\u003C\u002Fh3>\u003Cp>Log into Localazy and create a new project:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--3-.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1909\" height=\"801\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fimage--3-.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fimage--3-.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fimage--3-.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--3-.png 1909w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Give it a name and service details, then click on \u003Cstrong>Create new project\u003C\u002Fstrong>:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment482a3b72-d9db-4e3b-96b.png\" class=\"kg-image\" alt=\"attachment482a3b72-d9db-4e3b-96b.png\" loading=\"lazy\" width=\"1900\" height=\"778\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment482a3b72-d9db-4e3b-96b.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment482a3b72-d9db-4e3b-96b.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment482a3b72-d9db-4e3b-96b.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment482a3b72-d9db-4e3b-96b.png 1900w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Naming your project and setting the project type.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>After creation, Localazy asks how you want to integrate. Select \u003Cstrong>React\u003C\u002Fstrong> from the list of integrations:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmentcb644780-caf3-4989-a08.png\" class=\"kg-image\" alt=\"attachmentcb644780-caf3-4989-a08.png\" loading=\"lazy\" width=\"1897\" height=\"928\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachmentcb644780-caf3-4989-a08.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachmentcb644780-caf3-4989-a08.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachmentcb644780-caf3-4989-a08.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmentcb644780-caf3-4989-a08.png 1897w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Localazy will generate setup instructions along with your project keys:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmentaa2c5de7-0365-46d1-a3d.png\" class=\"kg-image\" alt=\"attachmentaa2c5de7-0365-46d1-a3d.png\" loading=\"lazy\" width=\"1912\" height=\"940\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachmentaa2c5de7-0365-46d1-a3d.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachmentaa2c5de7-0365-46d1-a3d.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachmentaa2c5de7-0365-46d1-a3d.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmentaa2c5de7-0365-46d1-a3d.png 1912w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Create a tiny keys file you \u003Cstrong>do not commit\u003C\u002Fstrong>:\u003C\u002Fp>\u003Cp>\u003Ccode>localazy.keys.json\u003C\u002Fcode> (root)\u003C\u002Fp>\u003Cpre>\u003Ccode>{ \n\t\"writeKey\": \"YOUR_WRITE_KEY\", \n\t\"readKey\": \"YOUR_READ_KEY\"\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Add to \u003Ccode>.gitignore\u003C\u002Fcode>:\u003C\u002Fp>\u003Cpre>\u003Ccode>localazy.keys.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>You’ll use \u003Cstrong>Write Key\u003C\u002Fstrong> for uploads and \u003Cstrong>Read Key\u003C\u002Fstrong> for downloads.\u003C\u002Fp>\u003Ch3 id=\"upload-the-english-source-file\">Upload the English source file\u003C\u002Fh3>\u003Cp>Run:\u003C\u002Fp>\u003Cpre>\u003Ccode>npx localazy upload -k localazy.keys.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Localazy will process \u003Ccode>\u003Cstrong>en.json\u003C\u002Fstrong>\u003C\u002Fcode> and push its contents to your project.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment24e9a1af-060d-4ecb-9a4.png\" class=\"kg-image\" alt=\"attachment24e9a1af-060d-4ecb-9a4.png\" loading=\"lazy\" width=\"1905\" height=\"796\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment24e9a1af-060d-4ecb-9a4.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment24e9a1af-060d-4ecb-9a4.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment24e9a1af-060d-4ecb-9a4.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment24e9a1af-060d-4ecb-9a4.png 1905w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Your uploaded English source keys in the Localazy dashboard.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>After the upload finishes, open your Localazy dashboard and you should see the keys from your React localization setup complete with the ICU plural message we included earlier.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment1b94bfbc-49f2-486e-aee.png\" class=\"kg-image\" alt=\"attachment1b94bfbc-49f2-486e-aee.png\" loading=\"lazy\" width=\"1903\" height=\"769\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment1b94bfbc-49f2-486e-aee.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment1b94bfbc-49f2-486e-aee.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment1b94bfbc-49f2-486e-aee.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment1b94bfbc-49f2-486e-aee.png 1903w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Ch3 id=\"add-your-target-languages\">Add your target languages\u003C\u002Fh3>\u003Cp>Once your English source has been uploaded, \u003Cstrong>add a target language \u003C\u002Fstrong>(for example, French).\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment4cb277fc-8c68-433c-810.png\" class=\"kg-image\" alt=\"attachment4cb277fc-8c68-433c-810.png\" loading=\"lazy\" width=\"1899\" height=\"759\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment4cb277fc-8c68-433c-810.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment4cb277fc-8c68-433c-810.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment4cb277fc-8c68-433c-810.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment4cb277fc-8c68-433c-810.png 1899w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Chose a translation engine. Remember that you can fill translations manually or pre-fill them using MT or Localazy AI.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment0bae55be-80e0-4aa1-93f.png\" class=\"kg-image\" alt=\"attachment0bae55be-80e0-4aa1-93f.png\" loading=\"lazy\" width=\"1894\" height=\"796\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment0bae55be-80e0-4aa1-93f.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment0bae55be-80e0-4aa1-93f.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment0bae55be-80e0-4aa1-93f.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment0bae55be-80e0-4aa1-93f.png 1894w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Now, begin your translation:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment892ffe68-784c-46e8-9b6.png\" class=\"kg-image\" alt=\"attachment892ffe68-784c-46e8-9b6.png\" loading=\"lazy\" width=\"1906\" height=\"757\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment892ffe68-784c-46e8-9b6.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment892ffe68-784c-46e8-9b6.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment892ffe68-784c-46e8-9b6.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment892ffe68-784c-46e8-9b6.png 1906w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmenta5ca4661-747c-4cfd-929.png\" class=\"kg-image\" alt=\"attachmenta5ca4661-747c-4cfd-929.png\" loading=\"lazy\" width=\"1885\" height=\"487\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachmenta5ca4661-747c-4cfd-929.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachmenta5ca4661-747c-4cfd-929.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachmenta5ca4661-747c-4cfd-929.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmenta5ca4661-747c-4cfd-929.png 1885w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Localazy handles ICU plural messages natively, so translators see structured plural forms, no raw syntax.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment01ca2f67-a8f8-4354-833.png\" class=\"kg-image\" alt=\"attachment01ca2f67-a8f8-4354-833.png\" loading=\"lazy\" width=\"1906\" height=\"768\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachment01ca2f67-a8f8-4354-833.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachment01ca2f67-a8f8-4354-833.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachment01ca2f67-a8f8-4354-833.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment01ca2f67-a8f8-4354-833.png 1906w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>ICU plural forms displayed in the translation editor.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>Once translations are ready, \u003Cstrong>we’ll pull them back into the \u003Ccode>src\u002Fi18n\u003C\u002Fcode> folder\u003C\u002Fstrong> and React will treat them just like the English file.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmentcfa8b68b-eb0b-40b8-ab0.png\" class=\"kg-image\" alt=\"attachmentcfa8b68b-eb0b-40b8-ab0.png\" loading=\"lazy\" width=\"1891\" height=\"381\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fattachmentcfa8b68b-eb0b-40b8-ab0.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fattachmentcfa8b68b-eb0b-40b8-ab0.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fattachmentcfa8b68b-eb0b-40b8-ab0.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachmentcfa8b68b-eb0b-40b8-ab0.png 1891w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Ch2 id=\"2%EF%B8%8F%E2%83%A3-step-2-download-translations-back-into-the-project\">2️⃣ Step 2: Download translations back into the project\u003C\u002Fh2>\u003Cp>With your English source strings uploaded, Localazy will generate translations for every enabled language. Instead of manually creating files like \u003Ccode>fr.json\u003C\u002Fcode>,\u003Cstrong> we'll simply pull them down using the CLI\u003C\u002Fstrong>.\u003C\u002Fp>\u003Cp>Run the download command:\u003C\u002Fp>\u003Cpre>\u003Ccode>npx localazy download -k localazy.keys.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>When it finishes, open your \u003Ccode>src\u002Fi18n\u003C\u002Fcode> folder. You should now see fresh language files, something like:\u003C\u002Fp>\u003Cpre>\u003Ccode>src\u002Fi18n\u002Fen.json\nsrc\u002Fi18n\u002Ffr.json \u002F\u002F Localazy added this\nsrc\u002Fi18n\u002Findex.js\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>React reads these just like the English file, so as soon as translations exist, \u003Cstrong>the language switcher will show real changes in the UI\u003C\u002Fstrong>.\u003C\u002Fp>\u003Cp>Downloading \u003Ccode>fr.json\u003C\u002Fcode> isn't enough: React must know about it. Update your \u003Ca href=\"https:\u002F\u002Freact.i18next.com\u002F\">i18n config\u003C\u002Fa> to import and register the language:\u003C\u002Fp>\u003Cpre>\u003Ccode>\u002F\u002F src\u002Fi18n\u002Findex.js\nimport i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport en from \".\u002Fen.json\";\nimport fr from \".\u002Ffr.json\"; \u002F\u002F new file from Localazy\n\ni18n.use(initReactI18next)  \n\t\t.init({\n\t\t  resources: {\n\t\t    en: { translation: en },\n\t\t    fr: { translation: fr } \u002F\u002F add the language here\n\t\t  },\n\t\t  lng: \"en\",\n\t\t  fallbackLng: \"en\",\n\t\t});\nexport default i18n;\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>If you add more languages later (e.g., Spanish, German, Arabic), import and register them the same way after running \u003Ccode>localazy download\u003C\u002Fcode>.\u003C\u002Fp>\u003Ch2 id=\"3%EF%B8%8F%E2%83%A3-step-3-test-the-localized-react-app\">3️⃣ Step 3: Test the localized React app\u003C\u002Fh2>\u003Cp>With English and French files in place, it’s time to verify everything behaves like a real multilingual interface rather than a static demo.\u003C\u002Fp>\u003Cp>Start the dev server if it's not running:\u003C\u002Fp>\u003Cpre>\u003Ccode>yarn dev\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The app should load in English by default. Click on the language switcher:\u003C\u002Fp>\u003Cpre>\u003Ccode>&lt;button\n  onClick={() =&gt; {\n    i18n.changeLanguage(i18n.language === \"en\" ? \"fr\" : \"en\");\n  }}\n&gt;\n  {t(\"language\")}\n&lt;\u002Fbutton&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>When you switch to French, the heading, button label, and any other localized UI elements should update immediately \u003Cstrong>with no page refresh\u003C\u002Fstrong> as in the \u003Ccode>fr.json\u003C\u002Fcode>.\u003C\u002Fp>\u003Ch3 id=\"test-icu-plurals-in-the-real-ui\">Test ICU plurals in the real UI\u003C\u002Fh3>\u003Cp>Now that our React localization setup switches languages correctly, let’s verify that plural rules work as expected. We already defined the ICU plural message in both languages:\u003C\u002Fp>\u003Cp>\u003Ccode>\u003Cstrong>en.json\u003C\u002Fstrong>\u003C\u002Fcode>\u003C\u002Fp>\u003Cpre>\u003Ccode>\"items\": \"{count, plural, one {# item} other {# items}}\"\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Ccode>\u003Cstrong>fr.json\u003C\u002Fstrong>\u003C\u002Fcode>\u003C\u002Fp>\u003Cpre>\u003Ccode>\"items\": \"{count, plural, one {# élément} other {# éléments}}\"\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>To test it, we need a dynamic number. For now, we’ll simulate that with a temporary component state.\u003C\u002Fp>\u003Cp>Add this to \u003Ccode>App.jsx\u003C\u002Fcode>:\u003C\u002Fp>\u003Cpre>\u003Ccode>import { useState } from \"react\";\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Then inside the component:\u003C\u002Fp>\u003Cpre>\u003Ccode>const [count, setCount] = useState(1);\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Render the plural message:\u003C\u002Fp>\u003Cpre>\u003Ccode>&lt;p className=\"mt-4 text-gray-700\"&gt;\n  {t(\"items\", { count })}\n&lt;\u002Fp&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Add simple buttons to change the count:\u003C\u002Fp>\u003Cpre>\u003Ccode> &lt;div className=\"flex gap-3 mt-3 justify-center\"&gt;\n     &lt;button onClick={() =&gt; setCount((c) =&gt; Math.max(0, c - 1))} className=\"text-blue-950\"&gt;-&lt;\u002Fbutton&gt;\n     &lt;button onClick={() =&gt; setCount((c) =&gt; c + 1)} className=\"text-blue-950\"&gt;+&lt;\u002Fbutton&gt;\n &lt;\u002Fdiv&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>When you test it, you will see something like this:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fattachment57e1f6ab-f1cd-4de0-8cb.png\" class=\"kg-image\" alt=\"attachment57e1f6ab-f1cd-4de0-8cb.png\" loading=\"lazy\" width=\"493\" height=\"166\">\u003C\u002Ffigure>\u003Cp>This is because right now i18next is treating that whole ICU string as plain text. We never told i18next “this is ICU syntax, please parse it,” so it just prints the raw message. By default, \u003Ccode>i18next\u003C\u002Fcode> does not understand ICU format. It has its own pluralization system and to use ICU, you need an extra plugin. \u003C\u002Fp>\u003Cp>There are two ways to handle this:\u003C\u002Fp>\u003Col>\u003Cli>The first method is to \u003Cstrong>use i18next’s default plural handling instead of ICU \u003C\u002Fstrong>(so no need of a plugin):\u003C\u002Fli>\u003C\u002Fol>\u003Cp>\u003Cstrong>\u003Ccode>src\u002Fi18n\u002Fen.json\u003C\u002Fcode>\u003C\u002Fstrong>\u003C\u002Fp>\u003Cpre>\u003Ccode>{\n  \"items_zero\": \"No items\",\n  \"items_one\": \"1 item\",\n  \"items_other\": \"{{count}} items\"\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Cstrong>\u003Ccode>src\u002Fi18n\u002Ffr.json\u003C\u002Fcode>\u003C\u002Fstrong>\u003C\u002Fp>\u003Cpre>\u003Ccode>{\n  \"items_zero\": \"Aucun élément\",\n  \"items_one\": \"1 élément\",\n  \"items_other\": \"{{count}} éléments\"\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Then in React, call:\u003C\u002Fp>\u003Cpre>\u003Ccode>{t(\"items\", { count })}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>i18next will automatically map:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ccode>count = 0\u003C\u002Fcode> → \u003Ccode>items_zero\u003C\u002Fcode>\u003C\u002Fli>\u003Cli>\u003Ccode>count = 1\u003C\u002Fcode> → \u003Ccode>items_one\u003C\u002Fcode>\u003C\u002Fli>\u003Cli>\u003Ccode>count &gt; 1\u003C\u002Fcode> → \u003Ccode>items_other\u003C\u002Fcode>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>2. The second method is to \u003Cstrong>keep the ICU and teach i18next to understand it\u003C\u002Fstrong>. This guide uses the second method. First you need to install \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fi18next\u002Fi18next-icu\">i18next-icu\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fformatjs.github.io\u002Fdocs\u002Fintl-messageformat\u002F\">intl-messageformat\u003C\u002Fa>:\u003C\u002Fp>\u003Cpre>\u003Ccode>yarn add i18next-icu intl-messageformat\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>i18next-icu teaches i18next how to interpret ICU messages. It hooks into i18n processing and says:\u003C\u002Fp>\u003Cblockquote>\u003Cem>\"Instead of treating this as plain text, handle it as an ICU-formatted translation.\"\u003C\u002Fem>\u003C\u002Fblockquote>\u003Cp>\u003Ccode>\u003Cstrong>intl-messageformat\u003C\u002Fstrong>\u003C\u002Fcode> \u003Cstrong>library\u003C\u002Fstrong> is the actual ICU parser. It looks at the ICU expression and decides which branch to output. Localazy supports ICU messages when \u003Ccode>\"features\": [\"plural_icu\"]\u003C\u002Fcode> is enabled, which we did ealier. Installing these packages \u003Cstrong>ensures the app behaves the same way Localazy interprets translations\u003C\u002Fstrong>, so translators don’t see one format in Localazy and another in the UI.\u003C\u002Fp>\u003Cp>Next, we'll update the i18n initialization so ICU handling is part of the pipeline.\u003C\u002Fp>\u003Cp>Open \u003Ccode>src\u002Fi18n\u002Findex.js\u003C\u002Fcode> and make sure it looks like this:\u003C\u002Fp>\u003Cpre>\u003Ccode>import ICU from \"i18next-icu\";\n\n...\n\ni18n\n  .use(ICU) \u002F\u002F enable ICU message formatting\n  .use(initReactI18next)\n  .init({\n    \u002F\u002F same config…\n  });\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The order matters: \u003Cstrong>\u003Ccode>ICU()\u003C\u002Fcode> has to run before \u003Ccode>initReactI18next\u003C\u002Fcode>\u003C\u002Fstrong>, so messages are parsed correctly before they reach React.\u003C\u002Fp>\u003Cp>Now restart your application and test both the English and French ICU messages, along with the counter, to make sure everything behaves exactly as described.\u003C\u002Fp>\u003Ch2 id=\"4%EF%B8%8F%E2%83%A3-step-4-enable-pseudo-locale-for-visual-qa\">4️⃣ Step 4: Enable pseudo-locale for visual QA\u003C\u002Fh2>\u003Cp>A \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fpseudo-locale\">pseudo-locale\u003C\u002Fa> works like a visual stress test for your UI. It takes your English strings and transforms them. \u003C\u002Fp>\u003Cp>For example:\u003C\u002Fp>\u003Cp>\u003Ccode>Welcome to the React localized app\u003C\u002Fcode> becomes:\u003C\u002Fp>\u003Cp>\u003Ccode>Ŵēłćōṁē ţō ţĥē Ŕēąçţ ļōćąłįżēđ ąpp\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>You can still kind of read the text if you squint, but everything looks a bit off. Some words get weirdly stretched out, random accents show up everywhere, and the whole shape of each sentence changes.\u003C\u002Fp>\u003Cp>When you render your app with that locale, \u003Cstrong>you can immediately spot buttons where text is cut off or suddenly cropped\u003C\u002Fstrong>, labels that overflow their containers, texts or layout that only works well in English, and places where you accidentally concatenated strings instead of using proper keys.\u003C\u002Fp>\u003Cp>It’s a very handy tool in a React localization workflow before real translators even touch the strings.\u003C\u002Fp>\u003Ch3 id=\"create-a-pseudo-locale-in-localazy\">Create a pseudo-locale in Localazy\u003C\u002Fh3>\u003Cp>Open your Localazy project &gt; Click on \u003Cstrong>Add New Language\u003C\u002Fstrong>.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--7-.png\" class=\"kg-image\" alt=\"image (7).png\" loading=\"lazy\" width=\"1897\" height=\"657\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fimage--7-.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fimage--7-.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fimage--7-.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--7-.png 1897w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Creating a custom locale in Localazy.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>Instead of choosing a real language, scroll to \u003Cstrong>Custom Locales\u003C\u002Fstrong> and create one manually.\u003C\u002Fp>\u003Cp>Once the language is created, we need to map it to the code used in our app. In Localazy, then \u003Cstrong>add a language alias \u003C\u002Fstrong>so \u003Ccode>xxd\u003C\u002Fcode> corresponds to our internal pseudo-locale code (\u003Ccode>qps\u003C\u002Fcode>):\u003C\u002Fp>\u003Cpre>\u003Ccode>{\n  \"upload\": {\n    ...\n  },\n  \"download\": {\n    \"files\": [\n      {\n        \"output\": \"${path}\u002F${lang}.json\"\n      }\n    \"langAliases\": { \"xxd\": \"qps\" }\n    ]\n  }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Ccode>xxd\u003C\u002Fcode> is the custom locale code created in Localazy and \u003Ccode>qps\u003C\u002Fcode> is the pseudo-locale code used inside React. This tells Localazy: \"Whenever you download \u003Ccode>xxd\u003C\u002Fcode>, output the file under the name \u003Ccode>qps.json\u003C\u002Fcode>.\"\u003C\u002Fp>\u003Cp>Note that Localazy does \u003Cstrong>not\u003C\u002Fstrong> automatically generate pseudo-localized text. It does support pseudo-locales as a testing concept (a locale that applies visual changes like accenting characters and expanding text). We'll add the pseudo-localized strings manually. For example, we translate English by adding accented characters like this: \u003Cem>Ĕńĝłįšĥ\u003C\u002Fem>.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--8-.png\" class=\"kg-image\" alt=\"image (8).png\" loading=\"lazy\" width=\"1909\" height=\"616\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fimage--8-.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fimage--8-.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fimage--8-.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--8-.png 1909w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Adding accented characters to pseudo-localize a string.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>We'll do this for the rest of the strings to translate.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--9-.png\" class=\"kg-image\" alt=\"image (9).png\" loading=\"lazy\" width=\"1905\" height=\"679\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2026\u002F04\u002Fimage--9-.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2026\u002F04\u002Fimage--9-.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2026\u002F04\u002Fimage--9-.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Fimage--9-.png 1905w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>All strings pseudo-localized in the custom locale.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Ch3 id=\"download-pseudo-locale-into-your-project\">Download pseudo-locale into your project\u003C\u002Fh3>\u003Cp>Run:\u003C\u002Fp>\u003Cpre>\u003Ccode>npx localazy download -k localazy.keys.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Now check your translation directory:\u003C\u002Fp>\u003Cpre>\u003Ccode>src\u002Fi18n\u002F\n ├─ en.json\n ├─ fr.json\n └─ qps.json    \u002F\u002F pseudo-locale for visual testing\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"register-the-pseudo-locale-in-your-react-i18n-config\">Register the pseudo-locale in your React i18n config\u003C\u002Fh3>\u003Cp>Add it like any other language:\u003C\u002Fp>\u003Cpre>\u003Ccode>import qps from \".\u002Fqps.json\";\n\ni18n.init({\n  resources: {\n    en: { translation: en },\n    fr: { translation: fr },\n    qps: { translation: qps } \u002F\u002F add this line\n  },\n  lng: \"en\",\n  fallbackLng: \"en\"\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Update the tour button tag to select tag:\u003C\u002Fp>\u003Cpre>\u003Ccode>&lt;select\n  value={i18n.language}\n  onChange={(e) =&gt; i18n.changeLanguage(e.target.value)}\n  className=\"mt-4 bg-amber-600 p-3 rounded-md text-white\"\n&gt;\n  &lt;option value=\"en\"&gt;{t(\"lang.en\")}&lt;\u002Foption&gt;\n  &lt;option value=\"fr\"&gt;{t(\"lang.fr\")}&lt;\u002Foption&gt;\n  &lt;option value=\"qps\"&gt;{t(\"lang.qps\")}&lt;\u002Foption&gt;\n&lt;\u002Fselect&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Then test.\u003C\u002Fp>\u003Cblockquote>\u003Cstrong>Note\u003C\u002Fstrong>: The pseudo-locale is meant only for development, not production. It helps you visually catch layout issues early by exaggerating text length, accents, and spacing, but it isn’t a real language and shouldn’t be shipped to end users or exposed in production builds\u003C\u002Fblockquote>\u003Ch2 id=\"5%EF%B8%8F%E2%83%A3-step-5-sync-translations-as-the-app-evolves\">5️⃣ Step 5: Sync translations as the app evolves\u003C\u002Fh2>\u003Cp>Once localization is set up, \u003Cstrong>you’ll repeat the same workflow whenever you add or change text in the app\u003C\u002Fstrong>. Localazy keeps your translations aligned with your source language instead of making you track changes manually.\u003C\u002Fp>\u003Ch3 id=\"update-your-source-language\">Update your source language\u003C\u002Fh3>\u003Cp>Make changes in \u003Ccode>\u003Cstrong>src\u002Fi18n\u002Fen.json\u003C\u002Fstrong>\u003C\u002Fcode>. Example:\u003C\u002Fp>\u003Cpre>\u003Ccode>\"invoice_total\": \"Total amount\"\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"upload-changes-to-localazy\">Upload changes to Localazy\u003C\u002Fh3>\u003Cpre>\u003Ccode>npx localazy upload -k localazy.keys.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Localazy marks new or changed keys automatically so translators know what to update.\u003C\u002Fp>\u003Ch3 id=\"translate-in-localazy\">Translate in Localazy\u003C\u002Fh3>\u003Cp>Open the dashboard and fill in translations for other languages (\u003Ccode>fr\u003C\u002Fcode>, \u003Ccode>qps\u003C\u002Fcode>). ICU messages stay structured, so plural rules are handled cleanly.\u003C\u002Fp>\u003Ch3 id=\"download-updated-translations\">Download updated translations\u003C\u002Fh3>\u003Cpre>\u003Ccode>npx localazy download -k localazy.keys.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This refreshes the files:\u003C\u002Fp>\u003Cpre>\u003Ccode>src\u002Fi18n\u002Ffr.json\nsrc\u002Fi18n\u002Fqps.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"test-changes-in-the-ui\">\u003Cstrong>Test changes in the UI\u003C\u002Fstrong>\u003C\u002Fh3>\u003Cp>Restart if needed:\u003C\u002Fp>\u003Cpre>\u003Ccode>yarn dev\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Switch languages and verify that the translations render correctly.\u003C\u002Fp>\u003Ch3 id=\"workflow-summary\">Workflow summary\u003C\u002Fh3>\u003Cpre>\u003Ccode>Update en.json → Upload → Translate → Download → Test\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002Flocalazy-workflow.gif\" class=\"kg-image\" alt=\"localazy workflow.gif\" loading=\"lazy\" width=\"610\" height=\"334\">\u003C\u002Ffigure>\u003Ch2 id=\"%F0%9F%94%8D-quick-recap\">🔍 Quick recap\u003C\u002Fh2>\u003Cp>In this guide, we enabled ICU plural rules, uploaded and synced translations with Localazy, and introduced a pseudo-locale for visual QA. Finally, we prepared the setup for production, including fallback languages, safe handling of pseudo-locales, and caching considerations. You can work through the full code of this guide in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FGunkev\u002Freact-localized-app\" rel=\"noopener noreferrer nofollow\">this Git repository.\u003C\u002Fa>\u003C\u002Fp>\u003Ch2 id=\"%F0%9F%8F%81-best-practices-to-consider-for-production\">🏁 Best practices to consider for production\u003C\u002Fh2>\u003Cp>Now that your app supports multiple languages, make sure it behaves correctly when deployed. The goal here is to make your localization setup stable, predictable, and production-safe.\u003C\u002Fp>\u003Ch3 id=\"1-keep-the-pseudo-locale-in-development-only\">1. Keep the pseudo-locale in development only\u003C\u002Fh3>\u003Cp>Pseudo-locales are helpful for visual QA, but they’re not real languages, so they shouldn’t be exposed to end users. You can simply \u003Cstrong>hide the option in production\u003C\u002Fstrong>:\u003C\u002Fp>\u003Cpre>\u003Ccode>{process.env.NODE_ENV !== \"production\" &amp;&amp; (\n  &lt;option value=\"qps\"&gt;Pseudo&lt;\u002Foption&gt;\n)}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This keeps the testing locale available during development without affecting real users.\u003C\u002Fp>\u003Ch3 id=\"2-use-a-fallback-language\">2. Use a fallback language\u003C\u002Fh3>\u003Cp>Missing translations shouldn’t leave blank UI elements. A fallback ensures the app always displays meaningful text when a key isn’t available in another locale:\u003C\u002Fp>\u003Cpre>\u003Ccode>fallbackLng: \"en\"\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This is standard practice with \u003Ccode>i18next\u003C\u002Fcode> and prevents unexpected gaps during incremental localization.\u003C\u002Fp>\u003Ch3 id=\"3-bundle-translations-locally-vs-dynamic-delivery\">3. Bundle translations locally vs. dynamic delivery\u003C\u002Fh3>\u003Cp>For this guide, translations are bundled as static JSON:\u003C\u002Fp>\u003Cpre>\u003Ccode>src\u002Fi18n\u002Fen.json\nsrc\u002Fi18n\u002Ffr.json\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This is ideal for static hosting, offline mode, and fast load times. Localazy also supports more dynamic delivery patterns (for example, \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Fautomated-localization-gitlab-cicd-localazy\" rel=\"noopener noreferrer nofollow\">integrating downloads into CI\u002FCD\u003C\u002Fa> or backend workflows) if you need more frequent translation updates later.\u003C\u002Fp>\u003Ch3 id=\"4-handle-caching-appropriately\">4. Handle caching appropriately\u003C\u002Fh3>\u003Cp>If you're hosting translation files on a CDN or static host, you may \u003Cstrong>enable caching for faster loads\u003C\u002Fstrong>. Just remember: long-lived caching improves performance, but you should clear caches when translations change. This avoids outdated text appearing in production.\u003C\u002Fp>\u003Ch3 id=\"final-launch-checklist\">Final launch checklist\u003C\u002Fh3>\u003Cp>Before shipping:\u003C\u002Fp>\u003Cul>\u003Cli>☑️ Make sure language switching updates the UI instantly, with no page reload\u003C\u002Fli>\u003Cli>☑️ Confirm all visible UI strings have French translations\u003C\u002Fli>\u003Cli>☑️ Hide the pseudo-locale option in production builds\u003C\u002Fli>\u003Cli>☑️ Test that plurals and ICU rules behave correctly in both languages\u003C\u002Fli>\u003Cli>☑️ Verify the fallback language catches any missing keys gracefully\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"%F0%9F%9A%80-go-build-something-multilingual\">🚀 Go build something multilingual\u003C\u002Fh2>\u003Cp>You now have i18next parsing translations at runtime, Localazy keeping your locales in sync, ICU plurals handling the edge cases, and a pseudo-locale catching layout issues before real translators ever see your strings. Moving forward, you can add a new locale, push a key update, automate the sync in CI... It all fits into the same cycle you've already built. \u003C\u002Fp>\u003Cp>With that, you're ready to ship!\u003C\u002Fp>","public","none","2026-04-16T18:43:02.000+02:00",[1972],{"id":1854,"name":1855,"slug":1856,"profile_image":1857,"cover_image":8,"bio":1973,"website":1974,"location":1975,"facebook":8,"twitter":8,"meta_title":8,"meta_description":8,"url":1976},"Curious technical writer who loves turning complex tools into clear, helpful documentation for developers.","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fkevine-nzapdi\u002F","Yaoundé, Cameroon","https:\u002F\u002Fghost.localazy.com\u002Fauthor\u002Fkevine-nzapdi\u002F",[1978,1983,1988,1993,1998,2004,2010,2015,2021,2024,2027],{"id":1979,"name":1980,"slug":1981,"description":1874,"feature_image":8,"visibility":1968,"og_image":8,"og_title":8,"og_description":8,"twitter_image":8,"twitter_title":8,"twitter_description":8,"meta_title":8,"meta_description":8,"codeinjection_head":8,"codeinjection_foot":8,"canonical_url":8,"accent_color":8,"url":1982},"60a37fc7cf7b6a0001d1f161","[DICT] React","term-68","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-68\u002F",{"id":1984,"name":1985,"slug":1986,"description":1881,"feature_image":8,"visibility":1968,"og_image":8,"og_title":8,"og_description":8,"twitter_image":8,"twitter_title":8,"twitter_description":8,"meta_title":8,"meta_description":8,"codeinjection_head":8,"codeinjection_foot":8,"canonical_url":8,"accent_color":8,"url":1987},"688a618963350c0001d5d641","[DICT] React-Intl","term-339","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-339\u002F",{"id":1989,"name":1990,"slug":1991,"description":1900,"feature_image":8,"visibility":1968,"og_image":8,"og_title":8,"og_description":8,"twitter_image":8,"twitter_title":8,"twitter_description":8,"meta_title":8,"meta_description":8,"codeinjection_head":8,"codeinjection_foot":8,"canonical_url":8,"accent_color":8,"url":1992},"60a37fc7cf7b6a0001d1f175","[DICT] i18next","term-88","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-88\u002F",{"id":1994,"name":1995,"slug":1996,"description":8,"feature_image":8,"visibility":1968,"og_image":8,"og_title":8,"og_description":8,"twitter_image":8,"twitter_title":8,"twitter_description":8,"meta_title":8,"meta_description":8,"codeinjection_head":8,"codeinjection_foot":8,"canonical_url":8,"accent_color":8,"url":1997},"60fffb486f8ebe0001bd8ddd","[COMSHARE]","comshare","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fcomshare\u002F",{"id":1999,"name":2000,"slug":2001,"description":2002,"feature_image":8,"visibility":1968,"og_image":8,"og_title":8,"og_description":8,"twitter_image":8,"twitter_title":8,"twitter_description":8,"meta_title":8,"meta_description":8,"codeinjection_head":8,"codeinjection_foot":8,"canonical_url":8,"accent_color":8,"url":2003},"60a37fc7cf7b6a0001d1f113","[CTA] React i18n done right with Localazy","cta-5","Go ahead and make your React app international in a few steps. Rich shared translations memory is waiting to be used in minutes from now.","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fcta-5\u002F",{"id":2005,"name":2006,"slug":2007,"description":2008,"feature_image":8,"visibility":1968,"og_image":8,"og_title":8,"og_description":8,"twitter_image":8,"twitter_title":8,"twitter_description":8,"meta_title":8,"meta_description":8,"codeinjection_head":8,"codeinjection_foot":8,"canonical_url":8,"accent_color":8,"url":2009},"6983306c63350c0001d634cf","[AD] Localazy AI","ad-28","https:\u002F\u002Flocalazy.com\u002Ffeatures\u002Flocalazy-ai","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fad-28\u002F",{"id":2011,"name":2012,"slug":2013,"description":1922,"feature_image":8,"visibility":1968,"og_image":8,"og_title":8,"og_description":8,"twitter_image":8,"twitter_title":8,"twitter_description":8,"meta_title":8,"meta_description":8,"codeinjection_head":8,"codeinjection_foot":8,"canonical_url":8,"accent_color":8,"url":2014},"691481ba63350c0001d61925","[DICT] Pseudo-locale","term-428","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-428\u002F",{"id":2016,"name":2017,"slug":2018,"description":2019,"feature_image":8,"visibility":1968,"og_image":8,"og_title":8,"og_description":8,"twitter_image":8,"twitter_title":8,"twitter_description":8,"meta_title":8,"meta_description":8,"codeinjection_head":8,"codeinjection_foot":8,"canonical_url":8,"accent_color":8,"url":2020},"60ba4141cf7b6a0001d1f946","[DICT] ICU","term-90","ICU stands for International Components for Unicode","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-90\u002F",{"id":2022,"name":1864,"slug":1864,"description":8,"feature_image":8,"visibility":1968,"og_image":8,"og_title":8,"og_description":8,"twitter_image":8,"twitter_title":8,"twitter_description":8,"meta_title":8,"meta_description":8,"codeinjection_head":8,"codeinjection_foot":8,"canonical_url":8,"accent_color":8,"url":2023},"60f567ab6f8ebe0001bd80ec","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fi18n\u002F",{"id":2025,"name":225,"slug":226,"description":225,"feature_image":8,"visibility":1968,"og_image":8,"og_title":8,"og_description":8,"twitter_image":8,"twitter_title":8,"twitter_description":8,"meta_title":8,"meta_description":8,"codeinjection_head":8,"codeinjection_foot":8,"canonical_url":8,"accent_color":8,"url":2026},"60a37fc7cf7b6a0001d1f0fc","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Freact\u002F",{"id":2028,"name":1868,"slug":1869,"description":8,"feature_image":8,"visibility":1968,"og_image":8,"og_title":8,"og_description":8,"twitter_image":8,"twitter_title":8,"twitter_description":8,"meta_title":8,"meta_description":8,"codeinjection_head":8,"codeinjection_foot":8,"canonical_url":8,"accent_color":8,"url":2029},"6556628a0470910001941ffe","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Ftutorial\u002F",{"id":1854,"name":1855,"slug":1856,"profile_image":1857,"cover_image":8,"bio":1973,"website":1974,"location":1975,"facebook":8,"twitter":8,"meta_title":8,"meta_description":8,"url":1976},{"id":1979,"name":1980,"slug":1981,"description":1874,"feature_image":8,"visibility":1968,"og_image":8,"og_title":8,"og_description":8,"twitter_image":8,"twitter_title":8,"twitter_description":8,"meta_title":8,"meta_description":8,"codeinjection_head":8,"codeinjection_foot":8,"canonical_url":8,"accent_color":8,"url":1982},"https:\u002F\u002Fghost.localazy.com\u002Freact-i18next-localazy-part-2-setting-up-translations\u002F",[2034,2050,2071],{"id":2035,"owner":2036,"created_by":8,"sort":8,"title":2037,"slug":2038,"modified_on":53,"created_on":2039,"pinned":229,"badge":8,"priority":1824,"main_image":2040,"status":4,"tags":2041,"dictionary":2049,"reading_time":1834,"excerpt":-1,"og_title":53,"og_description":53,"og_image":53},"60a37fc7cf7b6a0001d1f1d1",{"id":1817,"first_name":1818,"last_name":53,"slug":1819,"avatar":1820},"An overview of software localization and i18n tools (2022)","overview-software-localization-i18n-tools-2021","2021-05-02T15:08:51.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2022\u002F04\u002FSoftware-localization-overview22.png",[2042,2044,2047,2048],{"id":278,"created_on":1828,"status":4,"label":89,"slug":2043,"on_index_page":229},"localazy",{"id":278,"created_on":1828,"status":4,"label":2045,"slug":2046,"on_index_page":229},"Tip","tip",{"id":278,"created_on":1828,"status":4,"label":1384,"slug":1848,"on_index_page":230},{"id":278,"created_on":1828,"status":4,"label":1864,"slug":1864,"on_index_page":230},[],{"id":2051,"owner":2052,"created_by":8,"sort":8,"title":2057,"slug":2058,"modified_on":53,"created_on":2059,"pinned":229,"badge":8,"priority":1824,"main_image":2060,"status":4,"tags":2061,"dictionary":2070,"reading_time":1834,"excerpt":-1,"og_title":53,"og_description":53,"og_image":53},"649de936047091000193d3a3",{"id":2053,"first_name":2054,"last_name":53,"slug":2055,"avatar":2056},"619d2332df4bcb00010bc032","Moyinoluwa Adenuga","moyinoluwa-adenuga","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Fadenuga.png","How to integrate Localazy into Vercel builds for frontend applications","how-to-integrate-localazy-into-vercel-builds-for-frontend-applications","2023-07-12T11:36:54.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F06\u002FVercel.png",[2062,2065,2068,2069],{"id":314,"created_on":1828,"status":4,"label":2063,"slug":2064,"on_index_page":229},"Vercel","vercel",{"id":278,"created_on":1828,"status":4,"label":2066,"slug":2067,"on_index_page":229},"HowTo","howto",{"id":278,"created_on":1828,"status":4,"label":351,"slug":352,"on_index_page":229},{"id":278,"created_on":1828,"status":4,"label":225,"slug":226,"on_index_page":229},[],{"id":2072,"owner":2073,"created_by":8,"sort":8,"title":2074,"slug":2075,"modified_on":53,"created_on":2076,"pinned":229,"badge":8,"priority":1824,"main_image":2077,"status":4,"tags":2078,"dictionary":2088,"reading_time":1834,"excerpt":-1,"og_title":53,"og_description":53,"og_image":53},"646b7e63047091000193c33b",{"id":2053,"first_name":2054,"last_name":53,"slug":2055,"avatar":2056},"How to localize a NestJS application with nestjs-i18n and Localazy","how-to-localize-a-nestjs-application-with-nestjs-i18n-and-localazy","2023-05-24T14:22:32.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F05\u002Flocalazy-article-nestj-js-1.png",[2079,2083,2084,2085],{"id":2080,"created_on":1828,"status":4,"label":2081,"slug":2082,"on_index_page":229},646,"NestJS","nestjs",{"id":278,"created_on":1828,"status":4,"label":1864,"slug":1864,"on_index_page":230},{"id":278,"created_on":1828,"status":4,"label":2066,"slug":2067,"on_index_page":229},{"id":278,"created_on":1828,"status":4,"label":2086,"slug":2087,"on_index_page":229},"Automated Localization","automated-localization",[],{"id":1302,"sort":8,"created_on":2090,"name":2091,"cta_link":2008,"banner_image":2092},"2026-02-04T11:41:32.000Z","Localazy AI",{"id":2093},"315b6431-8996-4c39-84a4-8f1d896fb618"]