[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"main-navigation":3,"footer-homepage":723,"footer-settings":790,"footer-integrations":903,"blog-post-nav-nav":1814,"blog-post-nav-[USE LATEST FEATURED]":1836,"blog-deliver-translated-files-localazy-cdn-tutorial":1856},[4,211,451,582,715,719],{"id":5,"name":6,"url":7,"url_text":7,"status":8,"groups":9},2,"Solutions",null,"published",[10,24,99,135],{"navigation_items_group_id":11},{"id":12,"sort":13,"status":8,"name":14,"render_show_all_url":15,"show_all_url_position":16,"show_favorite_icon":17,"show_all_url":7,"represent_as_tile":15,"items":18},3,5,"Featured Article",false,"top",true,[19],{"collection":20,"item":21},"blog_post_navigation_item_type",{"id":22,"status":8,"sort":7,"show_author_img":17,"blog_post_tag":23,"description":7},4,"nav",{"navigation_items_group_id":25},{"id":13,"sort":26,"status":8,"name":27,"render_show_all_url":15,"show_all_url_position":16,"show_favorite_icon":15,"show_all_url":28,"represent_as_tile":17,"items":29},1,"Your Role","\u002Froles",[30,42,52,64,75,87],{"collection":31,"item":32},"relation_navigation_item_type",{"id":26,"status":8,"sort":7,"name":33,"item":34},"CMO",[35],{"collection":36,"item":37},"personas",{"id":26,"status":8,"sort":7,"slug":38,"icon":39},"chief-marketing-officers",{"id":40,"title":41},"526097d8-176f-48e5-83d3-2fc4d77061f9","La Mail Bulk",{"collection":31,"item":43},{"id":12,"status":8,"sort":7,"name":44,"item":45},"CTO",[46],{"collection":36,"item":47},{"id":22,"status":8,"sort":7,"slug":48,"icon":49},"chief-technical-officers",{"id":50,"title":51},"f808fdf0-c78b-4294-ba59-fe25f46fe825","La Mechanic",{"collection":31,"item":53},{"id":54,"status":8,"sort":7,"name":55,"item":56},20,"Product Manager",[57],{"collection":36,"item":58},{"id":59,"status":8,"sort":7,"slug":60,"icon":61},18,"product-managers",{"id":62,"title":63},"ea39586a-21fc-4b34-ba87-496028e5198f","La Worker",{"collection":31,"item":65},{"id":66,"status":8,"sort":7,"name":67,"item":68},37,"Translator",[69],{"collection":36,"item":70},{"id":54,"status":8,"sort":7,"slug":71,"icon":72},"professional-translators",{"id":73,"title":74},"07945171-d51d-4ca8-96c0-21cde9db258f","La Chat",{"collection":31,"item":76},{"id":77,"status":8,"sort":7,"name":78,"item":79},38,"Developer",[80],{"collection":36,"item":81},{"id":82,"status":8,"sort":7,"slug":83,"icon":84},30,"software-developers",{"id":85,"title":86},"1806e46d-c551-4845-bf42-4407344d229e","La Terminal",{"collection":31,"item":88},{"id":89,"status":8,"sort":7,"name":90,"item":91},27,"Localization Manager",[92],{"collection":36,"item":93},{"id":94,"status":8,"sort":7,"slug":95,"icon":96},6,"localization-managers",{"id":97,"title":98},"dac69bd1-bf5d-41d0-87d4-dd13e314698a","La Language",{"navigation_items_group_id":100},{"id":101,"sort":12,"status":8,"name":102,"render_show_all_url":15,"show_all_url_position":103,"show_favorite_icon":15,"show_all_url":7,"represent_as_tile":15,"items":104},9,"Use cases","bottom",[105,111,116,121,125,130],{"collection":106,"item":107},"simple_link_navigation_item_type",{"id":108,"status":8,"sort":7,"url":109,"url_text":110,"show_favorite_icon":15},24,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fsoftware-localization","Software localization",{"collection":106,"item":112},{"id":113,"status":8,"sort":7,"url":114,"url_text":115,"show_favorite_icon":15},26,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fmobile-app-localization","Mobile app localization",{"collection":106,"item":117},{"id":118,"status":8,"sort":7,"url":119,"url_text":120,"show_favorite_icon":15},25,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fwebsite-localization","Website localization",{"collection":106,"item":122},{"id":89,"status":8,"sort":7,"url":123,"url_text":124,"show_favorite_icon":15},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fdesign-localization","Design localization",{"collection":106,"item":126},{"id":127,"status":8,"sort":7,"url":128,"url_text":129,"show_favorite_icon":15},28,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fgame-localization","Game localization",{"collection":106,"item":131},{"id":132,"status":8,"sort":7,"url":133,"url_text":134,"show_favorite_icon":15},29,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fhelp-and-docs-localization","Help & docs localization",{"navigation_items_group_id":136},{"id":137,"sort":5,"status":8,"name":138,"render_show_all_url":15,"show_all_url_position":103,"show_favorite_icon":15,"show_all_url":7,"represent_as_tile":15,"items":139},8,"Industry",[140,152,163,173,184,193,204],{"collection":31,"item":141},{"id":142,"status":8,"sort":7,"name":143,"item":144},23,"Digital Agencies",[145],{"collection":36,"item":146},{"id":147,"status":8,"sort":7,"slug":148,"icon":149},7,"digital-agencies",{"id":150,"title":151},"547f5619-b21d-4b29-86f1-8b2200313cde","La Digi Agency",{"collection":31,"item":153},{"id":154,"status":8,"sort":7,"name":155,"item":156},39,"Startups & SaaS",[157],{"collection":36,"item":158},{"id":5,"status":8,"sort":7,"slug":159,"icon":160},"startups",{"id":161,"title":162},"da1516e2-4afc-40a2-bcbf-a8161e2d610d","La Saa S",{"collection":31,"item":164},{"id":5,"status":8,"sort":7,"name":165,"item":166},"E-commerce",[167],{"collection":36,"item":168},{"id":13,"status":8,"sort":7,"slug":169,"icon":170},"e-commerce",{"id":171,"title":172},"a3d09cd2-054f-4bb5-a0a2-d3d207db65df","La Ecommerce",{"collection":31,"item":174},{"id":175,"status":8,"sort":7,"name":176,"item":177},19,"FinTech Platforms",[178],{"collection":36,"item":179},{"id":89,"status":8,"sort":7,"slug":180,"icon":181},"fintech",{"id":182,"title":183},"147339ba-07d1-4e5e-baad-23d27e60c919","La Money",{"collection":31,"item":185},{"id":108,"status":8,"sort":7,"name":186,"item":187},"Translation Agencies",[188],{"collection":36,"item":189},{"id":108,"status":8,"sort":7,"slug":190,"icon":191},"translation-agencies",{"id":192,"title":98},"15d6fe33-2af8-4d6e-933d-5caa64394511",{"collection":31,"item":194},{"id":195,"status":8,"sort":7,"name":196,"item":197},22,"Travel & Tourism",[198],{"collection":36,"item":199},{"id":12,"status":8,"sort":7,"slug":200,"icon":201},"tourism",{"id":202,"title":203},"23a785e8-0ae5-4c4b-8452-aab1b58182a6","La Travel",{"collection":31,"item":205},{"id":118,"status":8,"sort":7,"name":206,"item":207},"Nonprofit Causes",[208],{"collection":36,"item":209},{"id":127,"status":8,"sort":7,"slug":210,"icon":7},"nonprofit",{"id":13,"name":212,"url":7,"url_text":7,"status":8,"groups":213},"Features",[214,284,342,392],{"navigation_items_group_id":215},{"id":216,"sort":94,"status":8,"name":217,"render_show_all_url":15,"show_all_url_position":16,"show_favorite_icon":15,"show_all_url":7,"represent_as_tile":15,"items":218},11,"Localization",[219,228,237,246,255,259,267,276],{"collection":31,"item":220},{"id":221,"status":8,"sort":7,"name":222,"item":223},44,"Localization services",[224],{"collection":225,"item":226},"products",{"id":101,"status":8,"slug":227},"continuous-localization-team",{"collection":31,"item":229},{"id":230,"status":8,"sort":7,"name":231,"item":232},45,"Translation management",[233],{"collection":234,"item":235},"term_landing_page",{"id":132,"status":8,"slug":236},"translation-management-system",{"collection":31,"item":238},{"id":239,"status":8,"sort":7,"name":240,"item":241},46,"Context Screenshots",[242],{"collection":225,"item":243},{"id":244,"status":8,"slug":245},13,"context-screenshots-ocr",{"collection":31,"item":247},{"id":248,"status":8,"sort":7,"name":249,"item":250},47,"Translation Glossary",[251],{"collection":225,"item":252},{"id":253,"status":8,"slug":254},17,"glossary",{"collection":106,"item":256},{"id":22,"status":8,"sort":7,"url":257,"url_text":258,"show_favorite_icon":15},"\u002Fdocs\u002Fgeneral\u002Freviewing-translations","Quality control",{"collection":31,"item":260},{"id":261,"status":8,"sort":7,"name":262,"item":263},34,"Connected Projects",[264],{"collection":225,"item":265},{"id":26,"status":8,"slug":266},"connected-projects",{"collection":31,"item":268},{"id":269,"status":8,"sort":7,"name":270,"item":271},64,"Plural handling",[272],{"collection":225,"item":273},{"id":274,"status":8,"slug":275},32,"plurals",{"collection":31,"item":277},{"id":278,"status":8,"sort":7,"name":279,"item":280},65,"Style guides",[281],{"collection":225,"item":282},{"id":77,"status":8,"slug":283},"style-guide",{"navigation_items_group_id":285},{"id":286,"sort":147,"status":8,"name":287,"render_show_all_url":15,"show_all_url_position":16,"show_favorite_icon":15,"show_all_url":7,"represent_as_tile":15,"items":288},12,"Translation",[289,297,305,309,317,325,334],{"collection":31,"item":290},{"id":291,"status":8,"sort":7,"name":292,"item":293},36,"Professional translations",[294],{"collection":234,"item":295},{"id":82,"status":8,"slug":296},"professional-translation-services",{"collection":31,"item":298},{"id":299,"status":8,"sort":7,"name":300,"item":301},48,"Crowdsourced translations",[302],{"collection":225,"item":303},{"id":137,"status":8,"slug":304},"share-tm",{"collection":106,"item":306},{"id":13,"status":8,"sort":7,"url":307,"url_text":308,"show_favorite_icon":15},"\u002Fdocs\u002Fgeneral\u002Ftranslating-strings","Translation interface",{"collection":31,"item":310},{"id":311,"status":8,"sort":7,"name":312,"item":313},55,"Machine translations",[314],{"collection":225,"item":315},{"id":13,"status":8,"slug":316},"machine-translation",{"collection":31,"item":318},{"id":319,"status":8,"sort":7,"name":320,"item":321},60,"Localazy AI translation",[322],{"collection":225,"item":323},{"id":132,"status":8,"slug":324},"localazy-ai",{"collection":31,"item":326},{"id":327,"status":8,"sort":7,"name":328,"item":329},61,"Translation Memory",[330],{"collection":225,"item":331},{"id":332,"status":8,"slug":333},35,"translation-memory",{"collection":31,"item":335},{"id":336,"status":8,"sort":7,"name":337,"item":338},63,"Code & placeholders",[339],{"collection":225,"item":340},{"id":82,"status":8,"slug":341},"code-and-placeholders",{"navigation_items_group_id":343},{"id":244,"sort":137,"status":8,"name":344,"render_show_all_url":15,"show_all_url_position":16,"show_favorite_icon":15,"show_all_url":7,"represent_as_tile":15,"items":345},"Management",[346,350,358,367,376,384,388],{"collection":106,"item":347},{"id":137,"status":8,"sort":7,"url":348,"url_text":349,"show_favorite_icon":15},"\u002Fdocs\u002Fgeneral\u002Fdefining-user-roles","User roles",{"collection":31,"item":351},{"id":352,"status":8,"sort":7,"name":353,"item":354},51,"Duplicity Linking",[355],{"collection":225,"item":356},{"id":175,"status":8,"slug":357},"duplicity-linking",{"collection":31,"item":359},{"id":360,"status":8,"sort":7,"name":361,"item":362},52,"Language Permissions",[363],{"collection":225,"item":364},{"id":365,"status":8,"slug":366},21,"language-permissions",{"collection":31,"item":368},{"id":369,"status":370,"sort":7,"name":371,"item":372},53,"draft","Automations",[373],{"collection":225,"item":374},{"id":54,"status":8,"slug":375},"automations",{"collection":31,"item":377},{"id":378,"status":8,"sort":7,"name":379,"item":380},58,"Branching",[381],{"collection":225,"item":382},{"id":89,"status":8,"slug":383},"branching",{"collection":106,"item":385},{"id":365,"status":370,"sort":7,"url":386,"url_text":387,"show_favorite_icon":15},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fsso-configuration","SSO",{"collection":106,"item":389},{"id":195,"status":370,"sort":7,"url":390,"url_text":391,"show_favorite_icon":15},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Flanguage-statistics","Reporting",{"navigation_items_group_id":393},{"id":394,"sort":101,"status":8,"name":395,"render_show_all_url":15,"show_all_url_position":16,"show_favorite_icon":15,"show_all_url":7,"represent_as_tile":15,"items":396},14,"Development",[397,404,412,419,426,434,443],{"collection":31,"item":398},{"id":132,"status":8,"sort":7,"name":399,"item":400},"Translation API",[401],{"collection":225,"item":402},{"id":216,"status":8,"slug":403},"translation-api",{"collection":31,"item":405},{"id":406,"status":8,"sort":7,"name":407,"item":408},33,"Localazy CLI",[409],{"collection":225,"item":410},{"id":147,"status":8,"slug":411},"cli",{"collection":31,"item":413},{"id":274,"status":8,"sort":7,"name":414,"item":415},"Language CDN",[416],{"collection":225,"item":417},{"id":22,"status":8,"slug":418},"language-cdn",{"collection":31,"item":420},{"id":127,"status":8,"sort":7,"name":421,"item":422},"Releases",[423],{"collection":225,"item":424},{"id":94,"status":8,"slug":425},"releases",{"collection":31,"item":427},{"id":428,"status":370,"sort":7,"name":429,"item":430},57,"Format Conversions",[431],{"collection":225,"item":432},{"id":5,"status":8,"slug":433},"format-conversions",{"collection":31,"item":435},{"id":436,"status":8,"sort":7,"name":437,"item":438},59,"Webhooks",[439],{"collection":225,"item":440},{"id":441,"status":8,"slug":442},31,"webhooks",{"collection":31,"item":444},{"id":445,"status":8,"sort":7,"name":446,"item":447},62,"Export Aliases",[448],{"collection":225,"item":449},{"id":406,"status":8,"slug":450},"export-aliases",{"id":22,"name":452,"url":7,"url_text":7,"status":8,"groups":453},"Integrations",[454,572],{"navigation_items_group_id":455},{"id":147,"sort":456,"status":8,"name":457,"render_show_all_url":15,"show_all_url_position":16,"show_favorite_icon":15,"show_all_url":7,"represent_as_tile":15,"items":458},10,"Most popular",[459],{"collection":31,"item":460},{"id":286,"status":8,"sort":7,"name":452,"item":461},[462,470,477,484,491,498,505,512,519,526,533,542,549,556,564],{"collection":463,"item":464},"platforms",{"id":94,"status":8,"sort":26,"slug":465,"name":466,"icon":467},"android","Android",{"id":468,"title":469},"ff965add-53b0-44ad-b27c-ea4ef641d384","Ic Outline Android",{"collection":463,"item":471},{"id":147,"status":8,"sort":5,"slug":472,"name":473,"icon":474},"ios","iOS",{"id":475,"title":476},"886285d7-816a-4430-b5a5-edfe307b238e","Ios",{"collection":463,"item":478},{"id":406,"status":8,"sort":12,"slug":479,"name":480,"icon":481},"react","React",{"id":482,"title":483},"26757a90-88a3-4a94-b587-9f38614ed3bd","Logos React",{"collection":463,"item":485},{"id":175,"status":8,"sort":22,"slug":486,"name":487,"icon":488},"vuejs","Vue.js",{"id":489,"title":490},"6180b41f-3249-47d3-adcd-50fe1cf11bf1","Vue",{"collection":463,"item":492},{"id":493,"status":8,"sort":13,"slug":494,"name":495,"icon":496},16,"angular","Angular",{"id":497,"title":495},"2a31a97a-48c5-4531-aa36-41c9dd0bdbef",{"collection":463,"item":499},{"id":26,"status":8,"sort":94,"slug":500,"name":501,"icon":502},"flutter","Flutter",{"id":503,"title":504},"b9f13a11-9328-4a03-86cf-b20de0685606","Logos Flutter",{"collection":463,"item":506},{"id":12,"status":8,"sort":216,"slug":507,"name":508,"icon":509},"typescript","TypeScript",{"id":510,"title":511},"8d1319b5-8a96-4199-8407-00add3418b1f","Logos Typescript Icon",{"collection":463,"item":513},{"id":441,"status":8,"sort":286,"slug":514,"name":515,"icon":516},"javascript","JavaScript",{"id":517,"title":518},"4218d0c9-7e6b-494d-9663-37ceaf93ee8c","Logos Javascript",{"collection":463,"item":520},{"id":286,"status":8,"sort":54,"slug":521,"name":522,"icon":523},"json","JSON",{"id":524,"title":525},"99ac3b7c-dba5-4693-a4f4-1f27a6d7782d","Logos Json",{"collection":463,"item":527},{"id":365,"status":8,"sort":365,"slug":528,"name":529,"icon":530},"xliff","XLIFF",{"id":531,"title":532},"ca424cc8-e8a7-4aef-8dca-ef4a4d1334fc","Format",{"collection":463,"item":534},{"id":535,"status":8,"sort":536,"slug":537,"name":538,"icon":539},72,54,"strapi","Strapi",{"id":540,"title":541},"cde7f1d0-f2e0-4243-929e-a3f8f9146e69","Strapi Logo Purple",{"collection":463,"item":543},{"id":319,"status":8,"sort":311,"slug":544,"name":545,"icon":546},"figma","Figma",{"id":547,"title":548},"813745a4-a77d-4735-93b7-e0dd731b2304","Figma Icon",{"collection":463,"item":550},{"id":352,"status":8,"sort":248,"slug":551,"name":552,"icon":553},"microsoft-excel","Microsoft Excel",{"id":554,"title":555},"7a175955-7b96-4561-939f-a0e1924faa40","Excel",{"collection":463,"item":557},{"id":558,"status":8,"sort":327,"slug":559,"name":560,"icon":561},66,"github-actions","GitHub Actions",{"id":562,"title":563},"da17554f-ac6d-443d-9bac-1f29645ec1c6","Github Icon",{"collection":463,"item":565},{"id":566,"status":8,"sort":567,"slug":568,"name":569,"icon":570},97,999,"webflow","Webflow",{"id":571,"title":569},"ff43a386-52f8-499f-b77c-ab9a30f4a77e",{"navigation_items_group_id":573},{"id":22,"sort":216,"status":8,"name":574,"render_show_all_url":15,"show_all_url_position":16,"show_favorite_icon":15,"show_all_url":7,"represent_as_tile":15,"items":575},"Explore more",[576],{"collection":577,"item":578},"text_link_navigation_item_type",{"id":26,"status":8,"sort":7,"text":579,"url":580,"url_text":581},"Localazy is a technology-agnostic platform supporting 50+ frameworks, file formats & popular tools.","\u002Fintegrations","See all integrations",{"id":26,"name":583,"url":7,"url_text":7,"status":8,"groups":584},"Resources",[585,618,624],{"navigation_items_group_id":586},{"id":26,"sort":286,"status":8,"name":587,"render_show_all_url":15,"show_all_url_position":16,"show_favorite_icon":15,"show_all_url":7,"represent_as_tile":15,"items":588},"Helpful Links",[589,593,597,601,605,609,614],{"collection":106,"item":590},{"id":244,"status":8,"sort":7,"url":591,"url_text":592,"show_favorite_icon":17},"\u002Fblog","Localazy Blog",{"collection":106,"item":594},{"id":394,"status":8,"sort":7,"url":595,"url_text":596,"show_favorite_icon":17},"\u002Fdocs","Documentation",{"collection":106,"item":598},{"id":26,"status":8,"sort":7,"url":599,"url_text":600,"show_favorite_icon":15},"https:\u002F\u002Fdiscuss.localazy.com\u002F","Discussion Forum",{"collection":106,"item":602},{"id":286,"status":8,"sort":7,"url":603,"url_text":604,"show_favorite_icon":15},"\u002Fcase-study","Case Studies",{"collection":106,"item":606},{"id":12,"status":8,"sort":7,"url":607,"url_text":608,"show_favorite_icon":15},"\u002Fpartnership","Become a Partner",{"collection":106,"item":610},{"id":611,"status":8,"sort":7,"url":612,"url_text":613,"show_favorite_icon":15},15,"\u002Ffaq","FAQ",{"collection":106,"item":615},{"id":253,"status":8,"sort":7,"url":616,"url_text":617,"show_favorite_icon":15},"\u002Ftags\u002Frelease-update","Release Updates",{"navigation_items_group_id":619},{"id":5,"sort":394,"status":8,"name":592,"render_show_all_url":17,"show_all_url_position":16,"show_favorite_icon":15,"show_all_url":591,"represent_as_tile":15,"items":620},[621],{"collection":20,"item":622},{"id":12,"status":8,"sort":7,"show_author_img":15,"blog_post_tag":623,"description":7},"[USE LATEST FEATURED]",{"navigation_items_group_id":625},{"id":94,"sort":244,"status":8,"name":596,"render_show_all_url":17,"show_all_url_position":16,"show_favorite_icon":15,"show_all_url":595,"represent_as_tile":15,"items":626},[627,641,653,664,676,686,697,705],{"collection":31,"item":628},{"id":22,"status":8,"sort":7,"name":629,"item":630},"General",[631],{"collection":632,"item":633},"docs_section",{"id":5,"status":8,"sort":26,"slug":634,"name":629,"icon":635,"featured_icon":638},"general",{"id":636,"title":637},"423101f1-308c-42f1-8dfe-53272019e7cb","Global",{"id":639,"title":640},"0f7ca4cb-dc3b-4f62-b476-132ed5c4931f","General Doc",{"collection":31,"item":642},{"id":13,"status":8,"sort":7,"name":643,"item":644},"CLI",[645],{"collection":632,"item":646},{"id":12,"status":8,"sort":5,"slug":411,"name":643,"icon":647,"featured_icon":650},{"id":648,"title":649},"2f7a4573-8265-4d76-8d55-ce0cc79b8983","Cli",{"id":651,"title":652},"3f76ff7b-0e74-4046-bb03-4ca99c3b66d5","Doc Cat Cli",{"collection":31,"item":654},{"id":137,"status":8,"sort":7,"name":655,"item":656},"API",[657],{"collection":632,"item":658},{"id":54,"status":8,"sort":12,"slug":659,"name":655,"icon":660,"featured_icon":661},"api",{"id":648,"title":649},{"id":662,"title":663},"20866781-e69b-4e01-9456-05437487b75c","API Doc",{"collection":31,"item":665},{"id":666,"status":8,"sort":7,"name":667,"item":668},50,"CDN",[669],{"collection":632,"item":670},{"id":113,"status":8,"sort":22,"slug":671,"name":667,"icon":672,"featured_icon":673},"cdn",{"id":636,"title":637},{"id":674,"title":675},"a8ee9cb7-4e02-41f0-b595-eb518c3085b6","Doc Cat Cdn",{"collection":31,"item":677},{"id":94,"status":8,"sort":7,"name":466,"item":678},[679],{"collection":632,"item":680},{"id":26,"status":8,"sort":13,"slug":465,"name":466,"icon":681,"featured_icon":683},{"id":682,"title":466},"fb8329ae-0c0c-4fbc-bcdc-83f2eeda1039",{"id":684,"title":685},"f7c0dec8-5b42-4943-ab3a-e3665723ad6f","Doc Cat Android",{"collection":31,"item":687},{"id":147,"status":8,"sort":7,"name":473,"item":688},[689],{"collection":632,"item":690},{"id":22,"status":8,"sort":94,"slug":472,"name":473,"icon":691,"featured_icon":694},{"id":692,"title":693},"289e136c-55df-4d51-847b-1782a2308ee4","Ios Blue",{"id":695,"title":696},"2968d3f0-14b5-4427-82e7-f1ea2de17846","Doc Cat Ios",{"collection":31,"item":698},{"id":101,"status":8,"sort":7,"name":545,"item":699},[700],{"collection":632,"item":701},{"id":365,"status":8,"sort":147,"slug":544,"name":545,"icon":702,"featured_icon":703},{"id":648,"title":649},{"id":704,"title":545},"f5e66b5b-a439-47f6-af4a-6ad261de2e87",{"collection":31,"item":706},{"id":456,"status":8,"sort":7,"name":538,"item":707},[708],{"collection":632,"item":709},{"id":142,"status":8,"sort":137,"slug":537,"name":538,"icon":710,"featured_icon":712},{"id":711,"title":538},"3b4b03c7-e131-49e6-a014-c8c2c8a2751e",{"id":713,"title":714},"1dd05c76-e517-4aea-a3d8-49cfddb40056","Strapi Doc",{"id":12,"name":716,"url":717,"url_text":716,"status":8,"groups":718},"Pricing","\u002Fpricing",[],{"id":94,"name":720,"url":721,"url_text":720,"status":8,"groups":722},"Book a demo","\u002Fbook-demo",[],{"status":8,"header_badges":724,"footer_badges":742,"footer_secured_badges":748,"slider_badges":760},[725,732,737],{"id":26,"status":8,"sort":7,"link":726,"title":727,"badgeType":728,"badgeName":729,"metadata":7,"image":730},"https:\u002F\u002Fwww.g2.com\u002Fproducts\u002Flocalazy\u002Freviews","Best meets requirements","Other","G2-winter-24-best-meets-requirments",{"id":731},"8d5dd6fd-6995-4c92-8219-a6ed5ba6acdc",{"id":5,"status":8,"sort":7,"link":726,"title":733,"badgeType":728,"badgeName":734,"metadata":7,"image":735},"Best support","G2-winter-24-best-support",{"id":736},"e59dd465-84d9-45c7-987d-dd4048fd6992",{"id":12,"status":8,"sort":7,"link":726,"title":738,"badgeType":728,"badgeName":739,"metadata":7,"image":740},"Easiest admin","G2-winter-24-easiest-admin",{"id":741},"5f12c4c8-bec0-47cf-87b4-a4502e9f1bd2",[743],{"id":286,"status":8,"sort":7,"link":726,"title":744,"badgeType":728,"badgeName":745,"metadata":7,"image":746},"Users love us","Users love us 25",{"id":747},"232416a5-86ba-4be6-85a5-b88802003d53",[749,755],{"id":216,"status":8,"sort":7,"link":750,"title":751,"badgeType":728,"badgeName":752,"metadata":7,"image":753},"https:\u002F\u002Fsprinto.com\u002Fget-iso-27001\u002F","Sprinto ISO 27001","Sprinto ISO 27001 certificate",{"id":754},"c1c6c06c-6caf-4b78-8a7e-9606c395eb61",{"id":244,"status":8,"sort":7,"link":756,"title":757,"badgeType":728,"badgeName":757,"metadata":7,"image":758},"https:\u002F\u002Fwww.aicpa.org\u002Fsoc4so","SOC certificate",{"id":759},"4f4bc0a6-09a0-41df-8295-8f990d96d941",[761,767,771,775,779,783,788],{"id":13,"status":8,"sort":7,"link":726,"title":762,"badgeType":728,"badgeName":763,"metadata":764,"image":765},"Most likely to recommend","a","",{"id":766},"da055731-3f11-4fc7-96f2-c11c0b84c831",{"id":94,"status":8,"sort":7,"link":726,"title":768,"badgeType":728,"badgeName":7,"metadata":7,"image":769},"EMEA High Performer",{"id":770},"586fb488-81f2-41db-a4e8-ef309e50c0e6",{"id":147,"status":8,"sort":7,"link":726,"title":772,"badgeType":728,"badgeName":7,"metadata":7,"image":773},"Ease of Doing Business With",{"id":774},"bfa26865-430e-463d-9886-cb56a8a8ecf6",{"id":137,"status":8,"sort":7,"link":726,"title":776,"badgeType":728,"badgeName":7,"metadata":7,"image":777},"High Performer",{"id":778},"2cc1ba0f-c23a-4c97-ad4a-a655c97466fe",{"id":101,"status":8,"sort":7,"link":726,"title":780,"badgeType":728,"badgeName":7,"metadata":7,"image":781},"Fastest Implementation",{"id":782},"6f297758-1c95-45f4-a6e9-528319897132",{"id":456,"status":8,"sort":7,"link":784,"title":785,"badgeType":728,"badgeName":7,"metadata":7,"image":786},"https:\u002F\u002Fwww.intercert.com\u002Fservices\u002Fgovernance-risk-compliance\u002Fiso-iec-27001","Intercert ISO 27001",{"id":787},"0521a5f1-e1f2-4da6-a2bc-dc92773f2a7b",{"id":216,"status":8,"sort":7,"link":750,"title":751,"badgeType":728,"badgeName":752,"metadata":7,"image":789},{"id":754},{"id":26,"status":8,"security_section_title":791,"loved_section_title":792,"columns":793,"social_links":863,"policy_links":893},"Secured & trusted","Loved by users",[794,806,821,842,845],{"id":26,"status":8,"sort":7,"title":795,"column_key":796,"links":797},"Localazy","connect",[798,800,803],{"id":216,"status":8,"sort":26,"title":720,"url":799},"___LOCALAZY_MEETING_URL___",{"id":286,"status":8,"sort":5,"title":801,"url":802},"Contact","\u002Fcontact",{"id":365,"status":8,"sort":12,"title":804,"url":805},"About us","\u002Fabout-us",{"id":5,"status":8,"sort":7,"title":807,"column_key":808,"links":809},"Programs","programs",[810,812,815,818],{"id":26,"status":8,"sort":22,"title":811,"url":607},"Partner Program",{"id":5,"status":8,"sort":13,"title":813,"url":814},"Ambassador Program","\u002Fambassador",{"id":12,"status":8,"sort":94,"title":816,"url":817},"Startup Program","\u002Ffor\u002Fstartups",{"id":22,"status":8,"sort":147,"title":819,"url":820},"Nonprofits","\u002Ffor\u002Fnonprofit",{"id":12,"status":8,"sort":7,"title":822,"column_key":823,"links":824},"Use Cases","use_cases",[825,828,831,833,836,839],{"id":13,"status":8,"sort":137,"title":826,"url":827},"Software Localization","\u002Fterm\u002Fsoftware-localization",{"id":94,"status":8,"sort":101,"title":829,"url":830},"Machine Translation Services","\u002Ffeatures\u002Fmachine-translation",{"id":147,"status":8,"sort":456,"title":399,"url":832},"\u002Ffeatures\u002Ftranslation-api",{"id":137,"status":8,"sort":216,"title":834,"url":835},"Crowdsourced Translations","\u002Ffeatures\u002Fshare-tm",{"id":101,"status":8,"sort":286,"title":837,"url":838},"Figma i18n & localization","\u002Ffeatures\u002Ffigma-localization-plugin",{"id":456,"status":8,"sort":244,"title":840,"url":841},"Translation as a Service","\u002Fterm\u002Ftranslation-service",{"id":22,"status":8,"sort":7,"title":452,"column_key":843,"links":844},"integrations",[],{"id":13,"status":8,"sort":7,"title":583,"column_key":846,"links":847},"resources",[848,849,852,853,856,858,859,860],{"id":244,"status":8,"sort":394,"title":596,"url":595},{"id":394,"status":8,"sort":611,"title":850,"url":851},"Dictionary","\u002Fdictionary",{"id":611,"status":8,"sort":493,"title":604,"url":603},{"id":493,"status":8,"sort":253,"title":854,"url":855},"Discussion forum","___DISCUSS_URL___",{"id":253,"status":8,"sort":59,"title":857,"url":591},"Localization Blog",{"id":59,"status":8,"sort":175,"title":613,"url":612},{"id":175,"status":8,"sort":54,"title":716,"url":717},{"id":54,"status":8,"sort":365,"title":861,"url":862},"Brand assets","https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Fu\u002F1\u002Ffolders\u002F1tZqsZHBlGelz7A2FwTsiwrs4j3sd9HTk",[864,869,874,879,884,889],{"id":26,"status":8,"sort":7,"platform":865,"icon":866,"url":867,"label":868},"feed","rss","\u002Ffeed.xml","Localazy RSS Feed",{"id":5,"status":8,"sort":7,"platform":870,"icon":871,"url":872,"label":873},"facebook","fb-logo","https:\u002F\u002Fwww.facebook.com\u002Flocalazy\u002F","Localazy facebook",{"id":12,"status":8,"sort":7,"platform":875,"icon":876,"url":877,"label":878},"github","github-logo","https:\u002F\u002Fgithub.com\u002Flocalazy","Localazy GitHub",{"id":22,"status":8,"sort":7,"platform":880,"icon":881,"url":882,"label":883},"x","x-twitter","https:\u002F\u002Fx.com\u002Flocalazy","Localazy X",{"id":13,"status":8,"sort":7,"platform":885,"icon":886,"url":887,"label":888},"linkedin","linkedin-logo","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002F37836599\u002F","Localazy LinkedIn",{"id":94,"status":8,"sort":7,"platform":890,"icon":891,"url":855,"label":892},"discourse","discourse-logo","Localazy Discourse",[894,897,900],{"id":26,"status":8,"sort":7,"title":895,"url":896,"action":7},"Privacy policy","\u002Fprivacy-policy",{"id":5,"status":8,"sort":7,"title":898,"url":899,"action":7},"Terms & Conditions","\u002Fterms-and-conditions",{"id":12,"status":8,"sort":7,"title":901,"url":7,"action":902},"Cookies","cookie-consent",[904,1044,1122,1228,1314,1393,1482,1573,1660,1759],{"id":406,"status":8,"created_on":905,"modified_on":906,"name":480,"slug":479,"description":907,"docs_link":908,"priority":7,"has_sdk":15,"sort":12,"highlighted":15,"in_menu":17,"changefreq":7,"support_type":909,"show_in_spa":17,"is_file_format":15,"meta_title":7,"meta_description":7,"featured_on_web":17,"marketing_subtitle":910,"tile_subtitle":911,"tile_description":912,"is_enterprise":15,"is_popular":15,"primary_use_case":7,"hierarchy_handling":7,"best_for":7,"file_extension":7,"format_code_example":7,"format_to_extension":913,"upload_features":914,"icon":915,"meta_image":916,"primary_tag":918,"tags":934,"integration_methods":952,"recommended_methods":1028,"default_integration_method":1029,"faq_categories":1036,"translations":1042,"platforms_id":406},"2022-03-18T08:09:24.000Z","2025-02-26T13:36:08.000Z","Manage your React app translations with Localazy, a continuous localization tool. React i18n done right. ","\u002Fdocs\u002Fcli\u002Fjson-format","JSON format support","CLI support","react-i18next and more","Use Localazy to translate your React projects with your favorite i18n library.",{"json":521},[],{"id":482},{"id":917},"a97492ec-ee8d-429c-bf66-d0fe59b6e5c9",{"id":13,"status":8,"sort":5,"created_on":919,"label":920,"hidden":15,"icon":921,"translations":923},"2022-03-17T12:23:44.000Z","Web apps",{"id":922},"c9e70e4f-8136-432a-8d82-53c3501a9eb4",[924,926,929,932],{"id":13,"languages_code":925,"label":920},"xxa",{"id":230,"languages_code":927,"label":928},"es","Aplicaciones web",{"id":666,"languages_code":930,"label":931},"cs","Webové aplikace",{"id":436,"languages_code":933,"label":920},"en",[935,942],{"id":13,"status":8,"sort":5,"label":920,"hidden":15,"created_on":919,"icon":936,"translations":937},{"id":922},[938,939,940,941],{"id":13,"languages_code":925,"label":920},{"id":230,"languages_code":927,"label":928},{"id":666,"languages_code":930,"label":931},{"id":436,"languages_code":933,"label":920},{"id":137,"status":8,"sort":101,"label":943,"hidden":15,"created_on":944,"icon":7,"translations":945},"Framework","2022-03-17T12:23:45.000Z",[946,947,949,950],{"id":137,"languages_code":925,"label":943},{"id":369,"languages_code":927,"label":948},"Marco",{"id":319,"languages_code":930,"label":943},{"id":951,"languages_code":933,"label":943},67,[953,965,990,1011],{"id":22,"status":8,"sort":94,"label":655,"alternative_label":7,"slug":659,"description":954,"documentation_link":955,"loc_icon":659,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":956},"Translate strings directly or upload them into your Localazy project.","\u002Fdocs\u002Fapi\u002Fintroduction",[957,958,961,963],{"id":22,"languages_code":925,"label":655,"description":954,"slug":659},{"id":959,"languages_code":927,"label":655,"description":960,"slug":659},40,"Utilice la API para exportar traducciones e importar contenido de\u002Fa Localazy mediante programación.",{"id":666,"languages_code":933,"label":655,"description":962,"slug":659},"Choose between translating strings directly or uploading them into Localazy.",{"id":436,"languages_code":930,"label":655,"description":964,"slug":659},"Pomocí rozhraní API můžete programovaně exportovat překlady a importovat obsah z\u002Fdo Localazy.",{"id":12,"status":8,"sort":13,"label":966,"alternative_label":7,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":971},"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",[972,973,976,977,980,983,984,985],{"id":12,"languages_code":925,"label":966,"description":968,"slug":967},{"id":154,"languages_code":927,"label":974,"description":975,"slug":7},"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":352,"languages_code":933,"label":966,"description":968,"slug":967},{"id":319,"languages_code":930,"label":978,"description":979,"slug":7},"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":269,"languages_code":927,"label":981,"description":982,"slug":967},"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":278,"languages_code":933,"label":966,"description":968,"slug":967},{"id":558,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":7},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":5,"status":8,"sort":22,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":997},"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",[998,999,1002,1003,1007],{"id":5,"languages_code":925,"label":991,"description":994,"slug":993},{"id":77,"languages_code":927,"label":1000,"description":1001,"slug":7},"Carga directa de archivos","Cargue sus textos y traducciones existentes en cualquier formato directamente para empezar rápidamente.",{"id":248,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":7},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":1008,"languages_code":987,"label":1009,"description":1010,"slug":7},85,"Direkter Datei-Upload","Laden Sie Ihre Texte und vorhandenen Übersetzungen in einem beliebigen Format direkt hoch, um schnell loszulegen.",{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1015},"Command Line Interface","The best option for developers that want to make localization an automated part of their workflow.","\u002Fdocs\u002Fcli\u002Fthe-basics",[1016,1017,1020,1021,1024],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},"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":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},"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":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},87,"Befehlszeilenschnittstelle","Die beste Option für Entwickler, die die Lokalisierung zu einem automatisierten Teil ihres Arbeitsablaufs machen möchten.",[],{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1030},[1031,1032,1033,1034,1035],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[1037],{"id":1038,"status":8,"created_on":1039,"sort":7,"slug":1040,"label":1041,"on_faq_index":7},76,"2025-02-26T12:44:29.000Z","front-end-common","Front-end Common",[1043],{"languages_code":925,"name":480,"slug":479,"description":907,"support_type":909,"meta_title":7,"meta_description":7,"marketing_subtitle":910,"tile_subtitle":911,"tile_description":912,"id":406,"platforms_id":406,"docs_link":908},{"id":175,"status":8,"created_on":905,"modified_on":1045,"name":487,"slug":486,"description":1046,"docs_link":908,"priority":7,"has_sdk":15,"sort":22,"highlighted":15,"in_menu":17,"changefreq":7,"support_type":909,"show_in_spa":17,"is_file_format":15,"meta_title":7,"meta_description":7,"featured_on_web":17,"marketing_subtitle":910,"tile_subtitle":1047,"tile_description":1048,"is_enterprise":15,"is_popular":15,"primary_use_case":7,"hierarchy_handling":7,"best_for":7,"file_extension":7,"format_code_example":7,"format_to_extension":1049,"upload_features":1050,"icon":1051,"meta_image":1052,"primary_tag":1054,"tags":1061,"integration_methods":1075,"recommended_methods":1106,"default_integration_method":1107,"faq_categories":1114,"translations":1120,"platforms_id":175},"2025-02-26T13:35:41.000Z","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":521},[],{"id":489},{"id":1053},"8171b836-d6b8-4354-8db3-34ccd384970d",{"id":13,"status":8,"sort":5,"created_on":919,"label":920,"hidden":15,"icon":1055,"translations":1056},{"id":922},[1057,1058,1059,1060],{"id":13,"languages_code":925,"label":920},{"id":230,"languages_code":927,"label":928},{"id":666,"languages_code":930,"label":931},{"id":436,"languages_code":933,"label":920},[1062,1069],{"id":13,"status":8,"sort":5,"label":920,"hidden":15,"created_on":919,"icon":1063,"translations":1064},{"id":922},[1065,1066,1067,1068],{"id":13,"languages_code":925,"label":920},{"id":230,"languages_code":927,"label":928},{"id":666,"languages_code":930,"label":931},{"id":436,"languages_code":933,"label":920},{"id":137,"status":8,"sort":101,"label":943,"hidden":15,"created_on":944,"icon":7,"translations":1070},[1071,1072,1073,1074],{"id":137,"languages_code":925,"label":943},{"id":369,"languages_code":927,"label":948},{"id":319,"languages_code":930,"label":943},{"id":951,"languages_code":933,"label":943},[1076,1082,1092,1099],{"id":22,"status":8,"sort":94,"label":655,"alternative_label":7,"slug":659,"description":954,"documentation_link":955,"loc_icon":659,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1077},[1078,1079,1080,1081],{"id":22,"languages_code":925,"label":655,"description":954,"slug":659},{"id":959,"languages_code":927,"label":655,"description":960,"slug":659},{"id":666,"languages_code":933,"label":655,"description":962,"slug":659},{"id":436,"languages_code":930,"label":655,"description":964,"slug":659},{"id":12,"status":8,"sort":13,"label":966,"alternative_label":7,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1083},[1084,1085,1086,1087,1088,1089,1090,1091],{"id":12,"languages_code":925,"label":966,"description":968,"slug":967},{"id":154,"languages_code":927,"label":974,"description":975,"slug":7},{"id":352,"languages_code":933,"label":966,"description":968,"slug":967},{"id":319,"languages_code":930,"label":978,"description":979,"slug":7},{"id":269,"languages_code":927,"label":981,"description":982,"slug":967},{"id":278,"languages_code":933,"label":966,"description":968,"slug":967},{"id":558,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":7},{"id":5,"status":8,"sort":22,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1093},[1094,1095,1096,1097,1098],{"id":5,"languages_code":925,"label":991,"description":994,"slug":993},{"id":77,"languages_code":927,"label":1000,"description":1001,"slug":7},{"id":248,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":7},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":7},{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1100},[1101,1102,1103,1104,1105],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[],{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1108},[1109,1110,1111,1112,1113],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[1115,1119],{"id":1004,"status":8,"created_on":1116,"sort":7,"slug":1117,"label":1118,"on_faq_index":7},"2023-03-01T11:21:41.000Z","vue-localization","Vue.js Localization",{"id":1038,"status":8,"created_on":1039,"sort":7,"slug":1040,"label":1041,"on_faq_index":7},[1121],{"languages_code":925,"name":487,"slug":486,"description":1046,"support_type":909,"meta_title":7,"meta_description":7,"marketing_subtitle":910,"tile_subtitle":1047,"tile_description":1048,"id":175,"platforms_id":175,"docs_link":908},{"id":26,"status":8,"created_on":905,"modified_on":1123,"name":501,"slug":500,"description":1124,"docs_link":1125,"priority":7,"has_sdk":15,"sort":94,"highlighted":15,"in_menu":17,"changefreq":7,"support_type":1126,"show_in_spa":17,"is_file_format":15,"meta_title":7,"meta_description":7,"featured_on_web":15,"marketing_subtitle":910,"tile_subtitle":1126,"tile_description":1127,"is_enterprise":15,"is_popular":15,"primary_use_case":1128,"hierarchy_handling":1129,"best_for":1130,"file_extension":1131,"format_code_example":1132,"format_to_extension":1133,"upload_features":1135,"icon":1136,"meta_image":1137,"primary_tag":1139,"tags":1150,"integration_methods":1186,"recommended_methods":1217,"default_integration_method":1218,"faq_categories":1225,"translations":1226,"platforms_id":26},"2025-07-03T14:21:42.000Z","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":1134},"arb",[],{"id":503},{"id":1138},"c2674666-4371-4aa4-9a65-438c7363fafe",{"id":94,"status":8,"sort":137,"created_on":944,"label":1140,"hidden":15,"icon":1141,"translations":1143},"Mobile apps",{"id":1142},"c9c7e1f5-8b59-4016-ae0c-6fba9469cd55",[1144,1145,1147,1149],{"id":94,"languages_code":925,"label":1140},{"id":239,"languages_code":927,"label":1146},"Aplicaciones móviles",{"id":311,"languages_code":930,"label":1148},"Mobilní aplikace",{"id":278,"languages_code":933,"label":1140},[1151,1162,1169,1176],{"id":147,"status":8,"sort":175,"label":1152,"hidden":15,"created_on":944,"icon":1153,"translations":1155},"Desktop & Games",{"id":1154},"65b04533-5b4c-430c-b8a4-ecce84754200",[1156,1157,1159,1161],{"id":147,"languages_code":925,"label":1152},{"id":248,"languages_code":927,"label":1158},"Escritorio y Juegos",{"id":1004,"languages_code":930,"label":1160},"Stolní počítače & Hry",{"id":558,"languages_code":933,"label":1152},{"id":13,"status":8,"sort":5,"label":920,"hidden":15,"created_on":919,"icon":1163,"translations":1164},{"id":922},[1165,1166,1167,1168],{"id":13,"languages_code":925,"label":920},{"id":230,"languages_code":927,"label":928},{"id":666,"languages_code":930,"label":931},{"id":436,"languages_code":933,"label":920},{"id":94,"status":8,"sort":137,"label":1140,"hidden":15,"created_on":944,"icon":1170,"translations":1171},{"id":1142},[1172,1173,1174,1175],{"id":94,"languages_code":925,"label":1140},{"id":239,"languages_code":927,"label":1146},{"id":311,"languages_code":930,"label":1148},{"id":278,"languages_code":933,"label":1140},{"id":82,"status":8,"sort":274,"label":1177,"hidden":17,"created_on":944,"icon":7,"translations":1178},"ARB",[1179,1180,1182,1184],{"id":82,"languages_code":925,"label":1177},{"id":1181,"languages_code":927,"label":1177},120,{"id":1183,"languages_code":930,"label":1177},125,{"id":1185,"languages_code":933,"label":1177},130,[1187,1193,1203,1210],{"id":22,"status":8,"sort":94,"label":655,"alternative_label":7,"slug":659,"description":954,"documentation_link":955,"loc_icon":659,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1188},[1189,1190,1191,1192],{"id":22,"languages_code":925,"label":655,"description":954,"slug":659},{"id":959,"languages_code":927,"label":655,"description":960,"slug":659},{"id":666,"languages_code":933,"label":655,"description":962,"slug":659},{"id":436,"languages_code":930,"label":655,"description":964,"slug":659},{"id":12,"status":8,"sort":13,"label":966,"alternative_label":7,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1194},[1195,1196,1197,1198,1199,1200,1201,1202],{"id":12,"languages_code":925,"label":966,"description":968,"slug":967},{"id":154,"languages_code":927,"label":974,"description":975,"slug":7},{"id":352,"languages_code":933,"label":966,"description":968,"slug":967},{"id":319,"languages_code":930,"label":978,"description":979,"slug":7},{"id":269,"languages_code":927,"label":981,"description":982,"slug":967},{"id":278,"languages_code":933,"label":966,"description":968,"slug":967},{"id":558,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":7},{"id":5,"status":8,"sort":22,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1204},[1205,1206,1207,1208,1209],{"id":5,"languages_code":925,"label":991,"description":994,"slug":993},{"id":77,"languages_code":927,"label":1000,"description":1001,"slug":7},{"id":248,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":7},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":7},{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1211},[1212,1213,1214,1215,1216],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[],{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1219},[1220,1221,1222,1223,1224],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[],[1227],{"languages_code":925,"name":501,"slug":500,"description":1124,"support_type":1126,"meta_title":7,"meta_description":7,"marketing_subtitle":910,"tile_subtitle":1126,"tile_description":1127,"id":26,"platforms_id":26,"docs_link":1125},{"id":441,"status":8,"created_on":1229,"modified_on":1230,"name":515,"slug":514,"description":1231,"docs_link":1232,"priority":7,"has_sdk":15,"sort":286,"highlighted":15,"in_menu":17,"changefreq":7,"support_type":1233,"show_in_spa":17,"is_file_format":15,"meta_title":7,"meta_description":7,"featured_on_web":17,"marketing_subtitle":910,"tile_subtitle":1233,"tile_description":1234,"is_enterprise":15,"is_popular":15,"primary_use_case":7,"hierarchy_handling":7,"best_for":7,"file_extension":7,"format_code_example":7,"format_to_extension":1235,"upload_features":1237,"icon":1238,"meta_image":1239,"primary_tag":1241,"tags":1254,"integration_methods":1269,"recommended_methods":1300,"default_integration_method":1301,"faq_categories":1308,"translations":1312,"platforms_id":441},"2022-03-18T08:09:25.000Z","2024-07-17T07:43:22.000Z","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":1236},"js",[],{"id":517},{"id":1240},"2c6699eb-1d80-4772-8268-5597dbcead8c",{"id":456,"status":8,"sort":456,"created_on":944,"label":1242,"hidden":15,"icon":1243,"translations":1245},"Programming Languages",{"id":1244},"8c5836bb-1fbe-49c5-9330-8f931838c457",[1246,1247,1249,1252],{"id":456,"languages_code":925,"label":1242},{"id":336,"languages_code":927,"label":1248},"Lenguajes de Programación",{"id":1250,"languages_code":930,"label":1251},68,"Programovací Jazyky",{"id":1253,"languages_code":933,"label":1242},70,[1255,1262],{"id":13,"status":8,"sort":5,"label":920,"hidden":15,"created_on":919,"icon":1256,"translations":1257},{"id":922},[1258,1259,1260,1261],{"id":13,"languages_code":925,"label":920},{"id":230,"languages_code":927,"label":928},{"id":666,"languages_code":930,"label":931},{"id":436,"languages_code":933,"label":920},{"id":456,"status":8,"sort":456,"label":1242,"hidden":15,"created_on":944,"icon":1263,"translations":1264},{"id":1244},[1265,1266,1267,1268],{"id":456,"languages_code":925,"label":1242},{"id":336,"languages_code":927,"label":1248},{"id":1250,"languages_code":930,"label":1251},{"id":1253,"languages_code":933,"label":1242},[1270,1276,1286,1293],{"id":22,"status":8,"sort":94,"label":655,"alternative_label":7,"slug":659,"description":954,"documentation_link":955,"loc_icon":659,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1271},[1272,1273,1274,1275],{"id":22,"languages_code":925,"label":655,"description":954,"slug":659},{"id":959,"languages_code":927,"label":655,"description":960,"slug":659},{"id":666,"languages_code":933,"label":655,"description":962,"slug":659},{"id":436,"languages_code":930,"label":655,"description":964,"slug":659},{"id":12,"status":8,"sort":13,"label":966,"alternative_label":7,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1277},[1278,1279,1280,1281,1282,1283,1284,1285],{"id":12,"languages_code":925,"label":966,"description":968,"slug":967},{"id":154,"languages_code":927,"label":974,"description":975,"slug":7},{"id":352,"languages_code":933,"label":966,"description":968,"slug":967},{"id":319,"languages_code":930,"label":978,"description":979,"slug":7},{"id":269,"languages_code":927,"label":981,"description":982,"slug":967},{"id":278,"languages_code":933,"label":966,"description":968,"slug":967},{"id":558,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":7},{"id":5,"status":8,"sort":22,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1287},[1288,1289,1290,1291,1292],{"id":5,"languages_code":925,"label":991,"description":994,"slug":993},{"id":77,"languages_code":927,"label":1000,"description":1001,"slug":7},{"id":248,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":7},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":7},{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1294},[1295,1296,1297,1298,1299],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[],{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1302},[1303,1304,1305,1306,1307],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[1309],{"id":332,"status":8,"created_on":1310,"sort":7,"slug":1311,"label":515,"on_faq_index":15},"2022-06-10T09:49:33.000Z","javascript-i18n-localization",[1313],{"languages_code":925,"name":515,"slug":514,"description":1231,"support_type":1233,"meta_title":7,"meta_description":7,"marketing_subtitle":910,"tile_subtitle":1233,"tile_description":1234,"id":441,"platforms_id":441,"docs_link":1232},{"id":286,"status":8,"created_on":1229,"modified_on":1315,"name":522,"slug":521,"description":1316,"docs_link":908,"priority":7,"has_sdk":15,"sort":54,"highlighted":15,"in_menu":17,"changefreq":7,"support_type":1317,"show_in_spa":17,"is_file_format":17,"meta_title":7,"meta_description":7,"featured_on_web":17,"marketing_subtitle":910,"tile_subtitle":1318,"tile_description":1319,"is_enterprise":15,"is_popular":17,"primary_use_case":1320,"hierarchy_handling":1321,"best_for":1322,"file_extension":1323,"format_code_example":1324,"format_to_extension":1325,"upload_features":1326,"icon":1327,"meta_image":1328,"primary_tag":1330,"tags":1341,"integration_methods":1349,"recommended_methods":1380,"default_integration_method":1381,"faq_categories":1388,"translations":1391,"platforms_id":286},"2025-10-14T11:22:29.000Z","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":521},[],{"id":524},{"id":1329},"8d614c20-667e-4bee-a64d-7d7ce9c0ee0a",{"id":22,"status":8,"sort":13,"created_on":944,"label":1331,"hidden":15,"icon":1332,"translations":1334},"File formats",{"id":1333},"ab7c8f89-dcce-45ab-9e21-8605aef289c3",[1335,1336,1338,1340],{"id":22,"languages_code":925,"label":1331},{"id":221,"languages_code":927,"label":1337},"Formatos de archivo",{"id":352,"languages_code":930,"label":1339},"Formáty souborů",{"id":445,"languages_code":933,"label":1331},[1342],{"id":22,"status":8,"sort":13,"label":1331,"hidden":15,"created_on":944,"icon":1343,"translations":1344},{"id":1333},[1345,1346,1347,1348],{"id":22,"languages_code":925,"label":1331},{"id":221,"languages_code":927,"label":1337},{"id":352,"languages_code":930,"label":1339},{"id":445,"languages_code":933,"label":1331},[1350,1356,1366,1373],{"id":22,"status":8,"sort":94,"label":655,"alternative_label":7,"slug":659,"description":954,"documentation_link":955,"loc_icon":659,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1351},[1352,1353,1354,1355],{"id":22,"languages_code":925,"label":655,"description":954,"slug":659},{"id":959,"languages_code":927,"label":655,"description":960,"slug":659},{"id":666,"languages_code":933,"label":655,"description":962,"slug":659},{"id":436,"languages_code":930,"label":655,"description":964,"slug":659},{"id":12,"status":8,"sort":13,"label":966,"alternative_label":7,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1357},[1358,1359,1360,1361,1362,1363,1364,1365],{"id":12,"languages_code":925,"label":966,"description":968,"slug":967},{"id":154,"languages_code":927,"label":974,"description":975,"slug":7},{"id":352,"languages_code":933,"label":966,"description":968,"slug":967},{"id":319,"languages_code":930,"label":978,"description":979,"slug":7},{"id":269,"languages_code":927,"label":981,"description":982,"slug":967},{"id":278,"languages_code":933,"label":966,"description":968,"slug":967},{"id":558,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":7},{"id":5,"status":8,"sort":22,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1367},[1368,1369,1370,1371,1372],{"id":5,"languages_code":925,"label":991,"description":994,"slug":993},{"id":77,"languages_code":927,"label":1000,"description":1001,"slug":7},{"id":248,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":7},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":7},{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1374},[1375,1376,1377,1378,1379],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[],{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1382},[1383,1384,1385,1386,1387],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[1389],{"id":291,"status":8,"created_on":1390,"sort":7,"slug":521,"label":522,"on_faq_index":15},"2022-06-10T10:49:07.000Z",[1392],{"languages_code":925,"name":522,"slug":521,"description":1316,"support_type":1317,"meta_title":7,"meta_description":7,"marketing_subtitle":910,"tile_subtitle":1318,"tile_description":1319,"id":286,"platforms_id":286,"docs_link":908},{"id":365,"status":8,"created_on":1229,"modified_on":1394,"name":529,"slug":528,"description":1395,"docs_link":1396,"priority":7,"has_sdk":15,"sort":365,"highlighted":15,"in_menu":17,"changefreq":7,"support_type":1397,"show_in_spa":15,"is_file_format":17,"meta_title":7,"meta_description":7,"featured_on_web":17,"marketing_subtitle":910,"tile_subtitle":1398,"tile_description":1399,"is_enterprise":15,"is_popular":17,"primary_use_case":1400,"hierarchy_handling":1401,"best_for":1402,"file_extension":1403,"format_code_example":1404,"format_to_extension":1405,"upload_features":1407,"icon":1408,"meta_image":1409,"primary_tag":1411,"tags":1418,"integration_methods":1440,"recommended_methods":1471,"default_integration_method":1472,"faq_categories":1479,"translations":1480,"platforms_id":365},"2025-07-03T14:28:31.000Z","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":1406},"xlf",[],{"id":531},{"id":1410},"889970a6-cce8-4055-b96a-9c3f292aa67f",{"id":22,"status":8,"sort":13,"created_on":944,"label":1331,"hidden":15,"icon":1412,"translations":1413},{"id":1333},[1414,1415,1416,1417],{"id":22,"languages_code":925,"label":1331},{"id":221,"languages_code":927,"label":1337},{"id":352,"languages_code":930,"label":1339},{"id":445,"languages_code":933,"label":1331},[1419,1426,1433],{"id":22,"status":8,"sort":13,"label":1331,"hidden":15,"created_on":944,"icon":1420,"translations":1421},{"id":1333},[1422,1423,1424,1425],{"id":22,"languages_code":925,"label":1331},{"id":221,"languages_code":927,"label":1337},{"id":352,"languages_code":930,"label":1339},{"id":445,"languages_code":933,"label":1331},{"id":22,"status":8,"sort":13,"label":1331,"hidden":15,"created_on":944,"icon":1427,"translations":1428},{"id":1333},[1429,1430,1431,1432],{"id":22,"languages_code":925,"label":1331},{"id":221,"languages_code":927,"label":1337},{"id":352,"languages_code":930,"label":1339},{"id":445,"languages_code":933,"label":1331},{"id":22,"status":8,"sort":13,"label":1331,"hidden":15,"created_on":944,"icon":1434,"translations":1435},{"id":1333},[1436,1437,1438,1439],{"id":22,"languages_code":925,"label":1331},{"id":221,"languages_code":927,"label":1337},{"id":352,"languages_code":930,"label":1339},{"id":445,"languages_code":933,"label":1331},[1441,1447,1457,1464],{"id":22,"status":8,"sort":94,"label":655,"alternative_label":7,"slug":659,"description":954,"documentation_link":955,"loc_icon":659,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1442},[1443,1444,1445,1446],{"id":22,"languages_code":925,"label":655,"description":954,"slug":659},{"id":959,"languages_code":927,"label":655,"description":960,"slug":659},{"id":666,"languages_code":933,"label":655,"description":962,"slug":659},{"id":436,"languages_code":930,"label":655,"description":964,"slug":659},{"id":12,"status":8,"sort":13,"label":966,"alternative_label":7,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1448},[1449,1450,1451,1452,1453,1454,1455,1456],{"id":12,"languages_code":925,"label":966,"description":968,"slug":967},{"id":154,"languages_code":927,"label":974,"description":975,"slug":7},{"id":352,"languages_code":933,"label":966,"description":968,"slug":967},{"id":319,"languages_code":930,"label":978,"description":979,"slug":7},{"id":269,"languages_code":927,"label":981,"description":982,"slug":967},{"id":278,"languages_code":933,"label":966,"description":968,"slug":967},{"id":558,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":7},{"id":5,"status":8,"sort":22,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1458},[1459,1460,1461,1462,1463],{"id":5,"languages_code":925,"label":991,"description":994,"slug":993},{"id":77,"languages_code":927,"label":1000,"description":1001,"slug":7},{"id":248,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":7},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":7},{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1465},[1466,1467,1468,1469,1470],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[],{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1473},[1474,1475,1476,1477,1478],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[],[1481],{"languages_code":925,"name":529,"slug":528,"description":1395,"support_type":1397,"meta_title":7,"meta_description":7,"marketing_subtitle":910,"tile_subtitle":1398,"tile_description":1399,"id":365,"platforms_id":365,"docs_link":1396},{"id":54,"status":8,"created_on":1483,"modified_on":1483,"name":1484,"slug":1485,"description":1486,"docs_link":1487,"priority":7,"has_sdk":15,"sort":108,"highlighted":15,"in_menu":17,"changefreq":7,"support_type":1397,"show_in_spa":17,"is_file_format":17,"meta_title":7,"meta_description":7,"featured_on_web":15,"marketing_subtitle":910,"tile_subtitle":1488,"tile_description":1489,"is_enterprise":15,"is_popular":17,"primary_use_case":7,"hierarchy_handling":7,"best_for":7,"file_extension":7,"format_code_example":7,"format_to_extension":1490,"upload_features":1491,"icon":1492,"meta_image":1494,"primary_tag":1496,"tags":1503,"integration_methods":1531,"recommended_methods":1562,"default_integration_method":1563,"faq_categories":1570,"translations":1571,"platforms_id":54},"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","Seamless integration","Upload, edit and translate PO files with Localazy.",{"po":1485},[],{"id":1493},"25f317fe-0c10-4f0b-92cd-f80d1f3c6a67",{"id":1495},"490022f9-d91a-4e1a-9e79-db374ec997c2",{"id":22,"status":8,"sort":13,"created_on":944,"label":1331,"hidden":15,"icon":1497,"translations":1498},{"id":1333},[1499,1500,1501,1502],{"id":22,"languages_code":925,"label":1331},{"id":221,"languages_code":927,"label":1337},{"id":352,"languages_code":930,"label":1339},{"id":445,"languages_code":933,"label":1331},[1504,1511,1521],{"id":22,"status":8,"sort":13,"label":1331,"hidden":15,"created_on":944,"icon":1505,"translations":1506},{"id":1333},[1507,1508,1509,1510],{"id":22,"languages_code":925,"label":1331},{"id":221,"languages_code":927,"label":1337},{"id":352,"languages_code":930,"label":1339},{"id":445,"languages_code":933,"label":1331},{"id":261,"status":8,"sort":261,"label":1512,"hidden":17,"created_on":944,"icon":7,"translations":1513},"C++",[1514,1515,1517,1519],{"id":261,"languages_code":925,"label":1512},{"id":1516,"languages_code":927,"label":1512},135,{"id":1518,"languages_code":930,"label":1512},140,{"id":1520,"languages_code":933,"label":1512},144,{"id":365,"status":8,"sort":108,"label":1522,"hidden":17,"created_on":944,"icon":7,"translations":1523},"Gettext",[1524,1525,1527,1529],{"id":365,"languages_code":925,"label":1522},{"id":1526,"languages_code":927,"label":1522},101,{"id":1528,"languages_code":930,"label":1522},106,{"id":1530,"languages_code":933,"label":1522},111,[1532,1538,1548,1555],{"id":22,"status":8,"sort":94,"label":655,"alternative_label":7,"slug":659,"description":954,"documentation_link":955,"loc_icon":659,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1533},[1534,1535,1536,1537],{"id":22,"languages_code":925,"label":655,"description":954,"slug":659},{"id":959,"languages_code":927,"label":655,"description":960,"slug":659},{"id":666,"languages_code":933,"label":655,"description":962,"slug":659},{"id":436,"languages_code":930,"label":655,"description":964,"slug":659},{"id":12,"status":8,"sort":13,"label":966,"alternative_label":7,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1539},[1540,1541,1542,1543,1544,1545,1546,1547],{"id":12,"languages_code":925,"label":966,"description":968,"slug":967},{"id":154,"languages_code":927,"label":974,"description":975,"slug":7},{"id":352,"languages_code":933,"label":966,"description":968,"slug":967},{"id":319,"languages_code":930,"label":978,"description":979,"slug":7},{"id":269,"languages_code":927,"label":981,"description":982,"slug":967},{"id":278,"languages_code":933,"label":966,"description":968,"slug":967},{"id":558,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":7},{"id":5,"status":8,"sort":22,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1549},[1550,1551,1552,1553,1554],{"id":5,"languages_code":925,"label":991,"description":994,"slug":993},{"id":77,"languages_code":927,"label":1000,"description":1001,"slug":7},{"id":248,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":7},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":7},{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1556},[1557,1558,1559,1560,1561],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[],{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1564},[1565,1566,1567,1568,1569],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[],[1572],{"languages_code":925,"name":1484,"slug":1485,"description":1486,"support_type":1397,"meta_title":7,"meta_description":7,"marketing_subtitle":910,"tile_subtitle":1488,"tile_description":1489,"id":54,"platforms_id":54,"docs_link":1487},{"id":113,"status":8,"created_on":1229,"modified_on":1574,"name":1575,"slug":1576,"description":1577,"docs_link":1578,"priority":7,"has_sdk":15,"sort":89,"highlighted":15,"in_menu":17,"changefreq":7,"support_type":1397,"show_in_spa":17,"is_file_format":17,"meta_title":7,"meta_description":7,"featured_on_web":15,"marketing_subtitle":910,"tile_subtitle":1579,"tile_description":1580,"is_enterprise":15,"is_popular":15,"primary_use_case":1581,"hierarchy_handling":1582,"best_for":1583,"file_extension":1584,"format_code_example":1585,"format_to_extension":1586,"upload_features":1587,"icon":1588,"meta_image":1589,"primary_tag":1591,"tags":1598,"integration_methods":1616,"recommended_methods":1647,"default_integration_method":1648,"faq_categories":1655,"translations":1658,"platforms_id":113},"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",".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":1576},[],{"id":1493},{"id":1590},"1f07bf83-9363-47d6-b21b-a5121c0efaf6",{"id":22,"status":8,"sort":13,"created_on":944,"label":1331,"hidden":15,"icon":1592,"translations":1593},{"id":1333},[1594,1595,1596,1597],{"id":22,"languages_code":925,"label":1331},{"id":221,"languages_code":927,"label":1337},{"id":352,"languages_code":930,"label":1339},{"id":445,"languages_code":933,"label":1331},[1599,1606],{"id":22,"status":8,"sort":13,"label":1331,"hidden":15,"created_on":944,"icon":1600,"translations":1601},{"id":1333},[1602,1603,1604,1605],{"id":22,"languages_code":925,"label":1331},{"id":221,"languages_code":927,"label":1337},{"id":352,"languages_code":930,"label":1339},{"id":445,"languages_code":933,"label":1331},{"id":108,"status":8,"sort":113,"label":1607,"hidden":17,"created_on":944,"icon":7,"translations":1608},"C#",[1609,1610,1612,1614],{"id":108,"languages_code":925,"label":1607},{"id":1611,"languages_code":927,"label":1607},103,{"id":1613,"languages_code":930,"label":1607},108,{"id":1615,"languages_code":933,"label":1607},113,[1617,1623,1633,1640],{"id":22,"status":8,"sort":94,"label":655,"alternative_label":7,"slug":659,"description":954,"documentation_link":955,"loc_icon":659,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1618},[1619,1620,1621,1622],{"id":22,"languages_code":925,"label":655,"description":954,"slug":659},{"id":959,"languages_code":927,"label":655,"description":960,"slug":659},{"id":666,"languages_code":933,"label":655,"description":962,"slug":659},{"id":436,"languages_code":930,"label":655,"description":964,"slug":659},{"id":12,"status":8,"sort":13,"label":966,"alternative_label":7,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1624},[1625,1626,1627,1628,1629,1630,1631,1632],{"id":12,"languages_code":925,"label":966,"description":968,"slug":967},{"id":154,"languages_code":927,"label":974,"description":975,"slug":7},{"id":352,"languages_code":933,"label":966,"description":968,"slug":967},{"id":319,"languages_code":930,"label":978,"description":979,"slug":7},{"id":269,"languages_code":927,"label":981,"description":982,"slug":967},{"id":278,"languages_code":933,"label":966,"description":968,"slug":967},{"id":558,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":7},{"id":5,"status":8,"sort":22,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1634},[1635,1636,1637,1638,1639],{"id":5,"languages_code":925,"label":991,"description":994,"slug":993},{"id":77,"languages_code":927,"label":1000,"description":1001,"slug":7},{"id":248,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":7},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":7},{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1641},[1642,1643,1644,1645,1646],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[],{"id":26,"status":8,"sort":12,"label":1012,"alternative_label":643,"slug":411,"description":1013,"documentation_link":1014,"loc_icon":411,"is_official_plugin":15,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1649},[1650,1651,1652,1653,1654],{"id":26,"languages_code":925,"label":1012,"description":1013,"slug":411},{"id":66,"languages_code":927,"label":1018,"description":1019,"slug":411},{"id":239,"languages_code":933,"label":1012,"description":1013,"slug":411},{"id":311,"languages_code":930,"label":1022,"description":1023,"slug":411},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":7},[1656],{"id":221,"status":8,"created_on":1657,"sort":7,"slug":1576,"label":1575,"on_faq_index":7},"2022-08-01T16:44:06.000Z",[1659],{"languages_code":925,"name":1575,"slug":1576,"description":1577,"support_type":1397,"meta_title":7,"meta_description":7,"marketing_subtitle":910,"tile_subtitle":1579,"tile_description":1580,"id":113,"platforms_id":113,"docs_link":1578},{"id":535,"status":8,"created_on":1661,"modified_on":1662,"name":538,"slug":537,"description":1663,"docs_link":1664,"priority":7,"has_sdk":7,"sort":536,"highlighted":15,"in_menu":17,"changefreq":7,"support_type":1665,"show_in_spa":17,"is_file_format":7,"meta_title":7,"meta_description":7,"featured_on_web":17,"marketing_subtitle":1665,"tile_subtitle":1665,"tile_description":1666,"is_enterprise":15,"is_popular":17,"primary_use_case":7,"hierarchy_handling":7,"best_for":7,"file_extension":7,"format_code_example":7,"format_to_extension":7,"upload_features":7,"icon":1667,"meta_image":1668,"primary_tag":1670,"tags":1682,"integration_methods":1726,"recommended_methods":1746,"default_integration_method":1747,"faq_categories":1754,"translations":1757,"platforms_id":535},"2022-06-16T09:08:11.000Z","2026-04-27T18:16:54.000Z","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","Localization Plugin","Localize your Strapi website with our official localization plugin. Easy setup and installation.",{"id":540},{"id":1669},"5995b721-a2ea-487e-ad4b-298a489bbd24",{"id":286,"status":8,"sort":216,"created_on":944,"label":1671,"hidden":15,"icon":1672,"translations":1674},"CMS",{"id":1673},"1172a655-928c-4594-9263-d8afdfd9cd79",[1675,1676,1678,1680],{"id":286,"languages_code":925,"label":1671},{"id":1677,"languages_code":927,"label":1671},73,{"id":1679,"languages_code":930,"label":1671},81,{"id":1681,"languages_code":933,"label":1671},84,[1683,1695,1707,1714],{"id":59,"status":8,"sort":253,"label":1684,"hidden":15,"created_on":944,"icon":7,"translations":1685},"Multilingual SEO",[1686,1687,1690,1693],{"id":59,"languages_code":925,"label":1684},{"id":1688,"languages_code":927,"label":1689},89,"SEO multilingüe",{"id":1691,"languages_code":930,"label":1692},94,"Vícejazyčné SEO",{"id":1694,"languages_code":933,"label":1684},99,{"id":406,"status":8,"sort":406,"label":165,"hidden":15,"created_on":944,"icon":1696,"translations":1698},{"id":1697},"e782ed3f-d954-45ca-8b17-5bf5fe95f30a",[1699,1700,1703,1705],{"id":406,"languages_code":925,"label":165},{"id":1701,"languages_code":927,"label":1702},132,"Comercio electrónico",{"id":1704,"languages_code":930,"label":165},137,{"id":1706,"languages_code":933,"label":165},142,{"id":286,"status":8,"sort":216,"label":1671,"hidden":15,"created_on":944,"icon":1708,"translations":1709},{"id":1673},[1710,1711,1712,1713],{"id":286,"languages_code":925,"label":1671},{"id":1677,"languages_code":927,"label":1671},{"id":1679,"languages_code":930,"label":1671},{"id":1681,"languages_code":933,"label":1671},{"id":5,"status":8,"sort":94,"label":1715,"hidden":15,"created_on":944,"icon":1716,"translations":1718},"Marketing tools",{"id":1717},"098fe6a4-dd2e-42d8-937e-2d8121e6e266",[1719,1720,1723,1725],{"id":5,"languages_code":925,"label":1715},{"id":1721,"languages_code":927,"label":1722},43,"Herramientas de marketing",{"id":299,"languages_code":930,"label":1724},"Marketingové nástroje",{"id":378,"languages_code":933,"label":1715},[1727],{"id":137,"status":8,"sort":7,"label":1728,"alternative_label":1729,"slug":1730,"description":1731,"documentation_link":1732,"loc_icon":1733,"is_official_plugin":17,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1734},"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",[1735,1736,1739,1740,1743],{"id":137,"languages_code":925,"label":1728,"description":1731,"slug":1730},{"id":1721,"languages_code":927,"label":1737,"description":1738,"slug":7},"Complemento Oficial de Strapi","Nuestros desarrolladores mantienen un complemento oficial de localización de Strapi. ¡Empiece en unos pocos clics!",{"id":369,"languages_code":933,"label":1728,"description":1731,"slug":1730},{"id":445,"languages_code":930,"label":1741,"description":1742,"slug":7},"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":1688,"languages_code":987,"label":1744,"description":1745,"slug":7},"Offizielles Strapi-Plugin","Unsere Entwickler pflegen ein offizielles Strapi-Lokalisierungs-Plugin. Starten Sie mit ein paar Klicks!",[],{"id":137,"status":8,"sort":7,"label":1728,"alternative_label":1729,"slug":1730,"description":1731,"documentation_link":1732,"loc_icon":1733,"is_official_plugin":17,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1748},[1749,1750,1751,1752,1753],{"id":137,"languages_code":925,"label":1728,"description":1731,"slug":1730},{"id":1721,"languages_code":927,"label":1737,"description":1738,"slug":7},{"id":369,"languages_code":933,"label":1728,"description":1731,"slug":1730},{"id":445,"languages_code":930,"label":1741,"description":1742,"slug":7},{"id":1688,"languages_code":987,"label":1744,"description":1745,"slug":7},[1755],{"id":66,"status":8,"created_on":1756,"sort":7,"slug":537,"label":538,"on_faq_index":7},"2022-06-16T09:24:13.000Z",[1758],{"languages_code":925,"name":538,"slug":537,"description":1663,"support_type":1665,"meta_title":7,"meta_description":7,"marketing_subtitle":1665,"tile_subtitle":1665,"tile_description":1666,"id":535,"platforms_id":535,"docs_link":1664},{"id":319,"status":8,"created_on":1229,"modified_on":1760,"name":545,"slug":544,"description":7,"docs_link":1761,"priority":7,"has_sdk":15,"sort":311,"highlighted":15,"in_menu":17,"changefreq":7,"support_type":1762,"show_in_spa":17,"is_file_format":15,"meta_title":7,"meta_description":7,"featured_on_web":17,"marketing_subtitle":1763,"tile_subtitle":1764,"tile_description":1765,"is_enterprise":15,"is_popular":17,"primary_use_case":7,"hierarchy_handling":7,"best_for":7,"file_extension":7,"format_code_example":7,"format_to_extension":7,"upload_features":1766,"icon":1767,"meta_image":1768,"primary_tag":1770,"tags":1783,"integration_methods":1791,"recommended_methods":1804,"default_integration_method":1805,"faq_categories":1811,"translations":1812,"platforms_id":319},"2024-12-20T15:00:22.000Z","\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":547},{"id":1769},"7573fed6-8817-4cb4-84d2-be327e6c4891",{"id":12,"status":8,"sort":147,"created_on":944,"label":1771,"hidden":15,"icon":1772,"translations":1774},"Design tools",{"id":1773},"1053d863-b690-4fbd-aadf-dbf2ba282768",[1775,1776,1779,1782],{"id":12,"languages_code":925,"label":1771},{"id":1777,"languages_code":927,"label":1778},42,"Herramientas de diseño",{"id":1780,"languages_code":930,"label":1781},49,"Nástroje pro návrh",{"id":428,"languages_code":933,"label":1771},[1784],{"id":12,"status":8,"sort":147,"label":1771,"hidden":15,"created_on":944,"icon":1785,"translations":1786},{"id":1773},[1787,1788,1789,1790],{"id":12,"languages_code":925,"label":1771},{"id":1777,"languages_code":927,"label":1778},{"id":1780,"languages_code":930,"label":1781},{"id":428,"languages_code":933,"label":1771},[1792],{"id":147,"status":8,"sort":7,"label":1729,"alternative_label":1729,"slug":1793,"description":1794,"documentation_link":595,"loc_icon":1733,"is_official_plugin":17,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1795},"official-plugin","Our developers maintain an official plugin for this integration. Start in a few clicks!",[1796,1797,1800,1801],{"id":147,"languages_code":925,"label":1729,"description":1794,"slug":1793},{"id":142,"languages_code":927,"label":1798,"description":1799,"slug":7},"Plugin Oficial","Nuestros desarrolladores mantienen un plugin oficial para esta integración. ¡Empiece con unos pocos clics!",{"id":132,"languages_code":933,"label":1729,"description":1794,"slug":1793},{"id":332,"languages_code":930,"label":1802,"description":1803,"slug":7},"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":147,"status":8,"sort":7,"label":1729,"alternative_label":1729,"slug":1793,"description":1794,"documentation_link":595,"loc_icon":1733,"is_official_plugin":17,"is_universal_plugin":15,"universal_plugin_vendor":7,"translations":1806},[1807,1808,1809,1810],{"id":147,"languages_code":925,"label":1729,"description":1794,"slug":1793},{"id":142,"languages_code":927,"label":1798,"description":1799,"slug":7},{"id":132,"languages_code":933,"label":1729,"description":1794,"slug":1793},{"id":332,"languages_code":930,"label":1802,"description":1803,"slug":7},[],[1813],{"languages_code":925,"name":545,"slug":544,"description":7,"support_type":1762,"meta_title":7,"meta_description":7,"marketing_subtitle":1763,"tile_subtitle":1764,"tile_description":1765,"id":319,"platforms_id":319,"docs_link":1761},{"id":1815,"owner":1816,"created_by":7,"sort":7,"title":1821,"slug":1822,"modified_on":764,"created_on":1823,"pinned":15,"badge":7,"priority":1824,"main_image":1825,"status":8,"tags":1826,"dictionary":1834,"reading_time":1835,"excerpt":-1,"og_title":764,"og_description":764,"og_image":764},"69d78a237ab1270001eddabf",{"id":1817,"first_name":1818,"last_name":764,"slug":1819,"avatar":1820},"606c233dcf7b6a0001d1da93","Petr Hodný","petr-hodny","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Fpetr.png","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","0.7","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002FLocalazy-AI-translation-api.png",[1827,1829,1832],{"id":319,"created_on":1828,"status":8,"label":655,"slug":659,"on_index_page":15},"2026-06-05 20:37:34",{"id":269,"created_on":1828,"status":8,"label":1830,"slug":1831,"on_index_page":17},"AI","ai",{"id":319,"created_on":1828,"status":8,"label":217,"slug":1833,"on_index_page":17},"localization",[],0,{"id":1837,"owner":1838,"created_by":7,"sort":7,"title":1843,"slug":1844,"modified_on":764,"created_on":1845,"pinned":15,"badge":7,"priority":1824,"main_image":1846,"status":8,"tags":1847,"dictionary":1855,"reading_time":1835,"excerpt":-1,"og_title":764,"og_description":764,"og_image":764},"6a145e3f8550a300014081e4",{"id":1839,"first_name":1840,"last_name":764,"slug":1841,"avatar":1842},"65647a510470910001942876","Dorota Pawlak","dorota-pawlak","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2024\u002F07\u002Fdorota.png","The great LLM translation war, pt. 2: Context beats model choice in 2026","the-great-llm-translation-war-pt-2-2026","2026-06-05T14:56:58.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F06\u002Flocalazy-AI-series-11.png",[1848,1849,1852],{"id":269,"created_on":1828,"status":8,"label":1830,"slug":1831,"on_index_page":17},{"id":269,"created_on":1828,"status":8,"label":1850,"slug":1851,"on_index_page":15},"ChatGPT","chatgpt",{"id":319,"created_on":1828,"status":8,"label":1853,"slug":1854,"on_index_page":15},"Translations","translations",[],{"post":1857,"relatedPosts":2055,"banner":2116},{"id":1858,"owner":1859,"created_by":7,"sort":7,"title":1864,"slug":1865,"modified_on":1866,"created_on":1867,"pinned":17,"badge":7,"priority":1824,"main_image":1868,"status":8,"tags":1869,"dictionary":1876,"reading_time":101,"excerpt":1972,"og_title":764,"og_description":764,"og_image":764,"content":1973,"meta_title":764,"meta_description":764,"canonical":764,"cta":1974,"fullGhostPost":1982},"60f754536f8ebe0001bd8214",{"id":1860,"first_name":1861,"last_name":764,"slug":1862,"avatar":1863},"60a36fbecf7b6a0001d1e87b","Francisco Melo","francisco-melo","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Ffrancisco-1.png","Deliver translated files seamlessly via Localazy CDN","deliver-translated-files-localazy-cdn-tutorial","2026-04-16T16:29:37.000+02:00","2021-08-12T01:11:02.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F02\u002FLocalazy-CDN.png",[1870,1872,1875],{"id":1871,"created_on":1828,"status":8,"label":667,"slug":671,"on_index_page":15},611456,{"id":319,"created_on":1828,"status":8,"label":1873,"slug":1874,"on_index_page":15},"HowTo","howto",{"id":319,"created_on":1828,"status":8,"label":515,"slug":514,"on_index_page":15},[1877,1886,1911,1930,1934,1950,1963],{"id":54,"status":8,"owner":1878,"created_on":1879,"title":466,"excerpt":1880,"content":1881,"slug":465,"meta_title":7,"meta_description":7,"canonical":7,"related_terms":1882},"2bac48a8-b362-482f-b574-3bc71dca4c5b","2022-03-17T12:22:55.000Z","A mobile operating system (OS) primarily designed for touchscreen devices such as smartphones and tablets.","Based on a modified version of the Linux operating system kernel with proprietary elements (such as Google Play), the Android operating system is currently one of the most popular solutions for mobile devices and smart TVs.\n\n## Distributions of OS based on Android:\n\n+ LineageOS and Replicant\n+ \u002Fe\u002F\n\n![StatCounter](https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F2af45fe7-e7e2-463d-940f-75b0c49a79ba\n)\n\n## Some alternatives to Android:\n\n+ iOS\n+ TizenOS\n+ PureOS\u002FLibrem\n+ LuneOS\n+ SailfishOS\n\n## Useful information about Android:\n\n+ [Android Studio](\u002Fdictionary\u002Fandroid-studio\u002F) for development\n+ [Android Gradle Plugin](https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fandroid\u002Flocalazy-gradle-plugin) - Build automation tool",[1883,1884],{"id":54,"slug":465},{"id":118,"slug":1885},"android-studio",{"id":319,"status":8,"owner":1878,"created_on":1887,"title":1888,"excerpt":1889,"content":1890,"slug":1891,"meta_title":764,"meta_description":764,"canonical":764,"related_terms":1892},"2026-05-12T07:09:23.000Z","Externalized string","Text separated from source code so it can be translated and reused across languages.","An externalized string is a piece of text stored outside the core codebase, usually in a resource file or localization file, that enables app developers to maintain translations. This separation allows developers and localization teams to manage, translate, and update text without touching the code itself. It’s a basic requirement for internationalizing software or digital products.\n\nWhen strings are hard-coded directly into the application, they cannot be detected or processed by translation tools. Externalizing them makes it possible to feed content into translation workflows, apply translation memory, and reuse strings across different parts of the app.\n\nString externalization is one of the first steps in making a product ready for international audiences. It makes collaboration between developers and translators much easier, reduces the risk of introducing bugs during translation, and supports content consistency across languages and platforms.\n\n### 📂 Benefits of externalized strings\n\n* Make content available for translation.\n* Keep source code clean and easier to maintain.\n* Support translation memory and consistency.\n* Prevent hard-coded text from blocking localization.\n* Allow content updates without redeploying the app.\n\nWithout externalized strings, localization tools can’t do their job. Treating text as data, rather than as part of the code, gives teams the option to work with it and translate it into the target languages needed. ","externalized-string",[1893,1896,1899,1902,1905,1908],{"id":1894,"slug":1895},340,"key-based-internationalization",{"id":1897,"slug":1898},79,"internationalization",{"id":1900,"slug":1901},171,"strings",{"id":1903,"slug":1904},256,"TODO",{"id":1906,"slug":1907},277,"string-catalog",{"id":1909,"slug":1910},344,"101-matching",{"id":986,"status":8,"owner":1878,"created_on":1887,"title":1912,"excerpt":1913,"content":1914,"slug":1912,"meta_title":7,"meta_description":7,"canonical":7,"related_terms":1915},"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)**",[1916,1917,1919,1920,1921,1922,1925,1927],{"id":5,"slug":1833},{"id":1918,"slug":514},75,{"id":1897,"slug":1898},{"id":1250,"slug":479},{"id":1253,"slug":486},{"id":1923,"slug":1924},156,"next.js",{"id":1679,"slug":1926},"ruby-on-rails",{"id":1928,"slug":1929},78,"rails-i18n",{"id":365,"status":8,"owner":1878,"created_on":1879,"title":473,"excerpt":1931,"content":1932,"slug":472,"meta_title":7,"meta_description":7,"canonical":7,"related_terms":1933},"A mobile device's operating system developed by Apple Inc. exclusively for Apple devices.","iOS operating system for mobile devices is a proprietary (excluding some OpenSource components) made entirely for Apple hardware, which makes it a powerful solution for company's devices from iPhones and iPads (now a special version iPadOS is in charge) to wearables such as Apple iWatch.\n\niOS is second most widely used operating system for mobile devices.\n\n![StatCounter](https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F2af45fe7-e7e2-463d-940f-75b0c49a79ba\n)\n\n## Translate your iOS app with Localazy\n[Localize your iOS apps](\u002Fios) conveniently. Integrate Localazy to make localization of your iOS app an automated part of your workflow and forget about it. \n\n## Some useful info about iOS:\n\n+ Major versions of iOS are released annually.\n+ iOS 13 does not support devices with less than 2 GB of RAM, including the iPhone 5s, iPod Touch (6th generation), and the iPhone 6 and iPhone 6 Plus, which still make up over 10% of all iOS devices.\n+ The [iOS SDK (Software Development Kit)](https:\u002F\u002Fdeveloper.apple.com\u002Fios\u002F) allows for the development of mobile apps on iOS.\n\n",[],{"id":1918,"status":8,"owner":1878,"created_on":1879,"title":515,"excerpt":1935,"content":1936,"slug":514,"meta_title":764,"meta_description":7,"canonical":7,"related_terms":1937},"JavaScript is a scripting language that allows developers to create interactive web interfaces.","JavaScript is a scripting language that makes it possible to dynamically update content, control multimedia, animate images, and achieve many other things. Most websites use JavaScript on the client-side to change how pages look and behave when users interact with them. JavaScript is most well-known as the scripting language for web interfaces, although many non-browser environments also use it, such as [Node.js](\u002Fdictionary\u002Fnodejs). \n\nJavaScript first appeared in 1995. Brendan Eich of Netscape initially designed it, but others have also contributed to the ECMAScript standard that forms the basis of JavaScript.\n\nJavaScript is the basis for many popular web development frameworks, such as:\n- [Vue.js](\u002Fdictionary\u002Fvuejs)\n- [Angular](\u002Fdictionary\u002Fangular)\n- [React](\u002Fdictionary\u002Freact)\n\nLocalazy supports [integrations](\u002Fintegrations) with many JavaScript frameworks and file formats.\n\n## Helpful resources:\n- [MDN Web Docs - JavaScript](https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript) \n- [JavaScript.com Learning Resources](https:\u002F\u002Fwww.javascript.com\u002F)\n- [Tutorial: How to localize JavaScript project with Localazy](\u002Fblog\u002Fjavascript-app-localization-i18next-localazy)",[1938,1940,1941,1943,1944,1947],{"id":1939,"slug":507},74,{"id":1250,"slug":479},{"id":1942,"slug":494},69,{"id":1253,"slug":486},{"id":1945,"slug":1946},80,"nodejs",{"id":1948,"slug":1949},77,"nuxt",{"id":5,"status":8,"owner":1878,"created_on":1951,"title":217,"excerpt":1952,"content":1953,"slug":1833,"meta_title":7,"meta_description":7,"canonical":7,"related_terms":1954},"2022-03-17T12:22:54.000Z","The process of preparing a product for a particular market.","Localization (l10n) is an essential part of the **[internationalization](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Finternationalization)** process. During localization, a product is prepared to be used in a particular destination, language and culture. Part of the localization process consists of changing locales such as currency, text orientation, or date format; and aligning the product with local, technical, or legislative requirements.\n\nA crucial part of localization is **[translation](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Ftranslation\u002F)**.\n\nLocalization is the process of adapting an internationalized product to meet the specific needs of a target market by translating it into the native language of that market. This includes translating the user interface, text, graphics, and other content to match the specific target locale.\n\nThe goal of localization is to provide an optimal user experience for the target market, as well as to make the product accessible to a wider audience. This process often involves more than just translation, and may include adjusting graphics, changing text length to accommodate different writing systems, and modifying the product's layout to fit cultural differences.\n\nInternationalization and localization are essential components of **[globalization](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fglobalization)** (g11n) and play a key role in expanding a product's reach and success. It's important to ensure that any Creative Commons attribution is considered during localization to prevent copyright infringement.\n\nBy localizing products, companies can reach new markets and increase their customer base, ultimately helping their business grow and thrive. The number of letters in the term i18n and l10n refers to the number of characters between the first and last letters in the term, and is used as a shorthand for internationalization and localization, respectively.",[1955,1956,1958,1960,1962],{"id":5,"slug":1833},{"id":22,"slug":1957},"translation",{"id":101,"slug":1959},"gilt",{"id":154,"slug":1961},"translation-management-system-tms",{"id":1897,"slug":1898},{"id":26,"status":8,"owner":1878,"created_on":1951,"title":1964,"excerpt":1965,"content":1966,"slug":1967,"meta_title":764,"meta_description":764,"canonical":764,"related_terms":1968},"ShareTM","The shared translation memory at Localazy.","ShareTM is the shared translation memory used by the Localazy user community. You can enable SharedTM to cut down on translation costs across the many languages available.\n\n> [*Learn more about ShareTM in the documentation*](\u002Fdocs\u002Fgeneral\u002Fwhat-is-localazy-sharetm)","sharetm",[1969,1970],{"id":147,"slug":333},{"id":286,"slug":1971},"intm","Learn how to use the Localazy CDN to deliver translated content globally and automatically and scale your project with less effort!","\u003Cp>As developers, we want to deliver content fast, secure, and reliably to our users. In the case of a small business website, it's no issue leaving all of the content stored with the website's hosting provider. But when your project becomes bigger and bigger, you must be able to scale accordingly. In regards to the scalability of \u003Ca href=\"\u002Fdictionary\u002Flocalization\">localization\u003C\u002Fa> files delivery, we got your back with the Localazy CDN.\u003C\u002Fp>\u003Ch2 id=\"what-is-a-cdn\">🤔 What is a CDN?  \u003Ca class=\"markdownit-header-anchor\" href=\"#what-is-a-cdn\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>CDN is an abbreviation for \u003Cstrong>Content Delivery Network. \u003C\u002Fstrong>At its core, it's a network of servers also named Points of Presence (PoPs) that store replicas of content in their memory (cache) and then deliver it to requesting users. The geographic location determines this delivery to connect the user to the nearest and fastest server, reducing data transfer time (latency). \u003C\u002Fp>\u003Ch3 id=\"what-is-a-language-cdn\">What is a language CDN? \u003Ca class=\"markdownit-header-anchor\" href=\"#what-is-a-language-cdn\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>At Localazy, we strive to help developers worldwide with localization. Localazy language CDN delivers the up-to-date translations reliably and directly to the distributed version of your project, without the need of having to download and update the translation files every single time you make an update.\u003C\u002Fp>\u003Cp>All of this is powered by the reliable AWS CloudFront.\u003C\u002Fp>\u003Cblockquote>\u003Cem>Learn more about \u003Ca href=\"\u002Fdocs\u002Fgeneral\u002Flocalazy-cdn\">\u003Cstrong>Localazy CDN\u003C\u002Fstrong> in the documentation\u003C\u002Fa>.\u003C\u002Fem>\u003C\u002Fblockquote>\u003Ch3 id=\"localazy-cdn-vs-ota-updates\">Localazy CDN vs. OTA updates \u003Ca class=\"markdownit-header-anchor\" href=\"#localazy-cdn-vs-ota-updates\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>We designed the Localazy CDN to work mainly with web applications. For mobile apps (\u003Ca href=\"\u002Fandroid\">Android\u003C\u002Fa> &amp; \u003Ca href=\"\u002Fios\">iOS\u003C\u002Fa>), we have OTA (Over-the-air) updates. Both serve the same purpose, which is delivering translated content directly to your users.\u003C\u002Fp>\u003Cp>The difference is that our \u003Ca href=\"\u002Fdocs\u002Fgeneral\u002Fota-updates\">OTA Updates\u003C\u002Fa> already come with a library\u002FSDK for Android &amp; iOS. The library\u002FSDK will then automate the process of distributing the content for you. There are so many available options to implement the CDN that we leave it to our users to decide their best approach.\u003C\u002Fp>\u003Cblockquote>\u003Cem>Learn more about \u003Ca href=\"\u002Fdocs\u002Fgeneral\u002Fota-updates\">\u003Cstrong>OTA Updates \u003C\u002Fstrong>in the documentation\u003C\u002Fa>.\u003C\u002Fem>\u003C\u002Fblockquote>\u003Ch3 id=\"is-localazy-cdn-free-or-paid\">Is Localazy CDN free or paid? \u003Ca class=\"markdownit-header-anchor\" href=\"#is-localazy-cdn-free-or-paid\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Localazy CDN is available with the Free plan, and is a part of Online Services so the pricing is usage based.\u003C\u002Fp>\u003Cblockquote>You can check the pricing \u003Ca href=\"\u002Fdocs\u002Fgeneral\u002Flocalazy-cdn#pricing\">here\u003C\u002Fa>.\u003C\u002Fblockquote>\u003Ch2 id=\"sample-project\">🕹️ Sample project \u003Ca class=\"markdownit-header-anchor\" href=\"#sample-project\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>To illustrate the use of CDN, we'll put together a simple project in \u003Cstrong>\u003Ca href=\"\u002Fdictionary\u002Fjavascript\">JavaScript\u003C\u002Fa>\u003C\u002Fstrong> using the \u003Cstrong>\u003Ca href=\"\u002Fdictionary\u002Fi18next\">i18next\u003C\u002Fa>\u003C\u002Fstrong> library.\u003C\u002Fp>\u003Cp>We will build this example project with the help of the article: \u003Ca href=\"\u002Fblog\u002Fjavascript-app-localization-i18next-localazy\">JavaScript app localization with i18next and Localazy\u003C\u002Fa>.\u003C\u002Fp>\u003Ch3 id=\"creating-the-project\">Creating the project \u003Ca class=\"markdownit-header-anchor\" href=\"#creating-the-project\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Let’s start with an empty project.  We'll be using \u003Ccode>npm\u003C\u002Fcode> to manage dependencies, so we'll need \u003Ca href=\"https:\u002F\u002Fnodejs.org\u002Fen\u002F\">Node.js\u003C\u002Fa> installed. You can verify the installation by running \u003Ccode>npm -v\u003C\u002Fcode>.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-bash\">mkdir cdn-js-app &amp;&amp; cd cdn-js-app &amp;&amp; npm init\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>After running the above command and answering the initial questions, a \u003Ccode>package.json\u003C\u002Fcode> file should be created. We'll use the following structure to hold our project:\u003C\u002Fp>\u003Cpre>\u003Ccode>.\n├── index.html\n├── package.json\n├── src\n│   ├── i18n.js\n│   └── index.js\n└── style.css\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Inside the \u003Ccode>index.html\u003C\u002Fcode> file, paste the following code. We will not modify it anymore, meaning that all content will be created dynamically with JavaScript.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n  &lt;title&gt;Localize Javascript App with Localazy's CDN&lt;\u002Ftitle&gt;\n  &lt;link rel=\"stylesheet\" href=\"style.css\"\u002F&gt;\n  &lt;meta charset=\"UTF-8\" \u002F&gt;\n&lt;\u002Fhead&gt;\n&lt;body&gt;\n  &lt;div id=\"app\"&gt;&lt;\u002Fdiv&gt;\n  &lt;script src=\"src\u002Findex.js\"&gt;\n  &lt;\u002Fscript&gt;\n&lt;\u002Fbody&gt;\n&lt;\u002Fhtml&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>To make it easier to work with the project, we'll install the \u003Ccode>parcel-bundler\u003C\u002Fcode> first. If you don't know \u003Ca href=\"https:\u002F\u002Fparceljs.org\u002Fgetting_started.html\">Parcel\u003C\u002Fa> yet, it's a web application bundler with a great developer experience.\u003C\u002Fp>\u003Cp>Parcel offers blazing-fast performance and requires zero configuration. So basically, with one package installed, you'll get a development server with hot-reloading and production builds. Excellent for quick projects and rapid prototyping.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-bash\">npm install -D parcel-bundler\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>You can then simplify running the Parcel bundler by adding a \u003Cem>run\u003C\u002Fem> and \u003Cem>build\u003C\u002Fem> task to the scripts section in your \u003Ccode>package.json\u003C\u002Fcode>. \u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-json\">{\n  \"scripts\": {\n    \"start\": \"parcel index.html --open\",\n    \"build\": \"parcel build index.html\"\n  }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"add-source-language-to-localazy\">Add source language to Localazy \u003Ca class=\"markdownit-header-anchor\" href=\"#add-source-language-to-localazy\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Because we will get our language file with \u003Ca href=\"\u002Fdictionary\u002Fexternalized-string\">externalized strings\u003C\u002Fa> through the CDN, we should first add it to Localazy.\u003C\u002Fp>\u003Cp>To do that, we will start by creating a translation file, and we'll name it \u003Ccode>en.json\u003C\u002Fcode>. Inside it, we'll place the following English strings, as it is our source language:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JSON\">{\n  \"hello_localazy\": \"Hello Localazy!\",\n  \"cdn_testing\": \"We're testing the CDN\",\n  \"using_javascript\": \"In this project we decided to use JavaScript\",\n  \"cdn_info\": \"With the CDN you can deliver the translation files instantly\"\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>To add the file to Localazy, \u003Ca href=\"\u002Fregister\">sign up\u003C\u002Fa> or log in and when you find yourself in the dashboard, click \u003Cstrong>Add New App.\u003C\u002Fstrong>\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F1-1.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1349\" height=\"689\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002F1-1.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002F1-1.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F1-1.PNG 1349w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Creating a new app in Localazy\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>Here, you can name your app, set it public or private, and decide whether to use community translations (\u003Ca href=\"\u002Fdocs\u002Fgeneral\u002Fwhat-is-localazy-sharetm\">ShareTM\u003C\u002Fa>) for your project.\u003C\u002Fp>\u003Cp>Now that our app is created, we can add the language file through the \u003Cstrong>File management \u003C\u002Fstrong>screen.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F2.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1348\" height=\"622\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002F2.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002F2.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F2.PNG 1348w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Localazy File management screen\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>Click the ➕ blue button in the top right, drag and drop the file, pick your choices and upload it.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F3.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1349\" height=\"642\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002F3.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002F3.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F3.PNG 1349w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Localazy File management screen\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>Our file is officially uploaded and ready to be implemented with the CDN.\u003C\u002Fp>\u003Ch2 id=\"integrating-the-project-with-localazy-cdn\">🌎 Integrating the project with Localazy CDN \u003Ca class=\"markdownit-header-anchor\" href=\"#integrating-the-project-with-localazy-cdn\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>As a next step, we’re going to install the \u003Ccode>i18next\u003C\u002Fcode> library. It will help us to quickly load all the locales we have.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-bash\">npm install i18next\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The following code needs to be added to our\u003Cstrong> i18n.js \u003C\u002Fstrong>file:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">\u002F\u002F i18n.js\nimport i18next from \"i18next\";\n\nexport const i18n = i18next;\n\nexport const fetchLanguage = async (code) =&gt; {\n  const result = await fetch(`https:\u002F\u002Fdelivery.localazy.com\u002F_a855374211039568660198b39c31\u002F_e0\u002Fdfe5b84c1598c8c56b6f1a11efcd483bb3f417ea\u002F${code}\u002Ffile.json`);  \n  return result.json();\n}\n\n\nexport const initI18n = async (callback) =&gt; {\n  const result = await fetchLanguage(\"en\");\n\n  i18next.init({\n    lng: \"en\",\n    debug: true,    \n    resources: {\n      en: {\n        translation: result\n      },\n    },\n  }, function (err, t) {\n    \u002F\u002F Call this function once i18next is initialized\n    callback()\n  });\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>It works by creating the \u003Ccode>fetchLanguage\u003C\u002Fcode>\u003Cstrong> \u003C\u002Fstrong>function that loads the specific JSON file from the CDN. The input parameter is the language code; notice that the fetch function inside contains the file URL. This URL can be obtained by clicking on the three dots of the file we uploaded in the \u003Cstrong>File Manager\u003C\u002Fstrong> or clicking the button right next to it.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F4.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1349\" height=\"646\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002F4.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002F4.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F4.PNG 1349w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Localazy CDN option in the File management\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>The URL in the function has been modified with a \u003Ccode>${code}\u003C\u002Fcode> placeholder, and this placeholder is going to be used to fetch the different language files dynamically.\u003C\u002Fp>\u003Cp>Looking at the\u003Cstrong> index.js\u003C\u002Fstrong> file, we will need to use the following code to show the strings on the screen.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">\u002F\u002F index.js\nimport { i18n, initI18n } from \".\u002Fi18n\";\n\nconst initPageContent = () =&gt; document.write(`\n\n${i18n.t(\"hello_localazy\")}\n&lt;br&gt;&lt;br&gt;\n${i18n.t(\"cdn_testing\")}\n&lt;br&gt;&lt;br&gt;\n${i18n.t(\"using_javascript\")}\n&lt;br&gt;&lt;br&gt;\n${i18n.t(\"cdn_info\")}\n`);\n\ninitI18n(initPageContent);\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Depending on your browser, you might have to add the code below to the \u003Ccode>package.json\u003C\u002Fcode> file or you can get an \u003Ccode>Uncaught ReferenceError: regeneratorRuntime\u003C\u002Fcode> error.\u003C\u002Fp>\u003Cpre>\u003Ccode>\"browserslist\": [\n    \"last 1 Chrome version\"\n  ]\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Once done, try to run the development server with \u003Ccode>npm start\u003C\u002Fcode>.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F5.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"838\" height=\"454\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002F5.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F5.PNG 838w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>The desired output\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>You should see the above result if you set everything up correctly.\u003C\u002Fp>\u003Ch3 id=\"implementing-a-language-switcher\">Implementing a language switcher \u003Ca class=\"markdownit-header-anchor\" href=\"#implementing-a-language-switcher\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>What we implemented above is a basic setup of the CDN, and it's enough for one language, but if you're reading this, most likely you want your project translated into different languages.\u003C\u002Fp>\u003Cp>For this, we will dynamically fetch all the languages you have associated with your project at Localazy, and we will display them with a simple language switcher, all of this without the need for any local files.\u003C\u002Fp>\u003Ch4 id=\"fetching-different-language-files\">Fetching different language files \u003C\u002Fh4>\u003Cp>Our \u003Ccode>fetchLanguage\u003C\u002Fcode> function in our \u003Cstrong>i18n.js\u003C\u002Fstrong> file accepts language codes to fetch the string files, but we would have to add them manually each time we add a new language. Luckily for us, Localazy offers you a CDN metadata file. This file contains objects with data for each locale we have on our project.\u003C\u002Fp>\u003Cp>First things first: we should add more languages to our project. To do this, we head back to our project at Localazy and click on \u003Cstrong>the Translations\u003C\u002Fstrong> tab. Here, we can see the \u003Cstrong>Add Languages tab\u003C\u002Fstrong>, where we can choose the languages we will add to our project.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1348\" height=\"694\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F08\u002F1.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F08\u002F1.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1.PNG 1348w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Adding Languages in Localazy\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>We will choose European Portuguese (pt_PT) and Spanish (es) for this example, but feel free to choose whatever languages you would like to add.\u003C\u002Fp>\u003Cp>Your screen will then look like this:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F2.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1348\" height=\"692\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F08\u002F2.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F08\u002F2.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F2.PNG 1348w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Added Languages in Localazy\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>To start translating them, click the blue button on your selected language, and you'll be redirected to this screen:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-1.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1345\" height=\"680\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F08\u002F1-1.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F08\u002F1-1.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-1.PNG 1345w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Translating the strings\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>When all the languages have been translated, this is what it'll look like:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-2.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1344\" height=\"693\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F08\u002F1-2.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F08\u002F1-2.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-2.PNG 1344w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Translated languages in Localazy\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>We now need to fetch all the string files. To do that, we will use the metadata file to get the language codes associated with the languages we translated. After we get the language codes, we will then fetch the language file using the \u003Ccode>fetchLanguage\u003C\u002Fcode> function.\u003C\u002Fp>\u003Cp>We will need the metadata URL, which can be accessed from Localazy CDN options:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F4.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1349\" height=\"646\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002F4.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002F4.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F4.PNG 1349w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Localazy CDN option in the File management\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>To fetch the metadata file, we will add the following functions to the \u003Cstrong>i18n.js\u003C\u002Fstrong> file:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">export const fetchLocalazyMeta = async () =&gt; {\n  const result = await fetch(`https:\u002F\u002Fdelivery.localazy.com\u002F_a855374211039568660198b39c31\u002F_e0.json`); \n  localazyLocales = Object.values(await result.json())[0][\"locales\"];\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>In this function, the metadata file is already being processed for the locales objects to be added into an array called \u003Ccode>localazyLocales\u003C\u002Fcode>, making it easier to access.\u003C\u002Fp>\u003Cp>To extract the language codes, we use this function:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">export const getSupportedLangCodes = () =&gt; {\n\nconst languages = localazyLocales.map(\n    (locale) =&gt; {\n      let langCode = locale.language;\n      if (locale.region) {\n        langCode = langCode + \"-\" + locale.region;\n      }\n\n      return langCode;\n    }\n  );\n\n  return languages;\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This function retrieves the language parameter from the metadata file, and if it has a region associated with it, it will add it to the string, creating the language codes.\u003C\u002Fp>\u003Cp>To get the current language, we use the following code:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">export const getCurrentLanguage = () =&gt; {\n  return window.localStorage.i18nextLng || 'en';\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>To get all languages, we have this:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">export const getLanguages = ()=&gt;{\n\n  return localazyLocales;\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This last two functions are needed in the \u003Cstrong>index.js\u003C\u002Fstrong> file.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">export const initI18n = async (callback) =&gt; {\n\n  await fetchLocalazyMeta()\n  const langCodes = getSupportedLangCodes();\n  const result = await Promise.all([\n    ...langCodes.map(lng=&gt; fetchLanguage(lng))\n  ]);\n\n  let resources = {};\n\n  result.forEach((res,index)=&gt;{\n    resources[langCodes[index]] = {translation: res};\n  })\n  i18next.init({\n    lng: \"en\",\n    fallbackLng: \"en\",\n    debug: true,\n    supportedLngs: langCodes,\n    resources,\n  }, function (err, t) {\n    callback()\n  });\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This the last function of our \u003Cstrong>i18n.js\u003C\u002Fstrong> file, it will separate the locales and allow them to be displayed in \u003Cstrong>index.js.\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp>The full content of the\u003Cstrong> i18n.js\u003C\u002Fstrong> file is:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">\nimport i18next from \"i18next\";\n\nexport const i18n = i18next;\n\nexport let localazyLocales = [];\n\n\nexport const fetchLanguage = async (code) =&gt; {\n  const result = await fetch(`https:\u002F\u002Fdelivery.localazy.com\u002F_a855374211039568660198b39c31\u002F_e0\u002Fdfe5b84c1598c8c56b6f1a11efcd483bb3f417ea\u002F${code}\u002Ffile.json`);  \n  return result.json();\n}\n\nexport const fetchLocalazyMeta = async () =&gt; {\n  const result = await fetch(`https:\u002F\u002Fdelivery.localazy.com\u002F_a855374211039568660198b39c31\u002F_e0.json`); \n  localazyLocales = Object.values(await result.json())[0][\"locales\"];\n}\n\nexport const getSupportedLangCodes = () =&gt; {\n\nconst languages =localazyLocales.map(\n    (locale) =&gt; {\n      let langCode = locale.language;\n      if (locale.region) {\n        langCode = langCode + \"-\" + locale.region;\n      }\n\n      return langCode;\n    }\n  );\n\n  return languages;\n}\n\nexport const getCurrentLanguage = () =&gt; {\n  return window.localStorage.i18nextLng || 'en';\n}\n\nexport const getLanguages = ()=&gt;{\n\n  return localazyLocales;\n}\n\nexport const initI18n = async (callback) =&gt; {\n\n  await fetchLocalazyMeta()\n  const langCodes = getSupportedLangCodes();\n  const result = await Promise.all([\n    ...langCodes.map(lng=&gt; fetchLanguage(lng))\n  ]);\n\n  let resources = {};\n\n  result.forEach((res,index)=&gt;{\n    resources[langCodes[index]] = {translation: res};\n  })\n  i18next.init({\n    lng: \"en\",\n    fallbackLng: \"en\",\n    debug: true,\n    supportedLngs: langCodes,\n    resources,\n  }, function (err, t) {\n    callback()\n  });\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch4 id=\"creating-the-language-switcher-element\">Creating the language switcher element\u003C\u002Fh4>\u003Cp>Now that we can dynamically load the files, we must present them in the browser. We will use this very simple language switcher in \u003Ccode>index.js\u003C\u002Fcode> to easily switch between languages.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">import { i18n, initI18n, getLanguages, getCurrentLanguage, getSupportedLangCodes } from \".\u002Fi18n\";\n\nconst createLanguageSelector = () =&gt; {\n    const languages = getLanguages();\n    const langCodes = getSupportedLangCodes();\n    let template = '&lt;select id=\"selector\"&gt;';\n    languages.forEach((l, i) =&gt; {\n        template += `\n    &lt;option ${l.language === getCurrentLanguage() ? \"selected\" : \"\"} value=\"${langCodes[i]}\"&gt;\n      ${l.localizedName}\n    &lt;\u002Foption&gt;`\n    })\n    template += '&lt;\u002Fselect&gt;';\n    return template;\n}\n\nconst getTranslatedContent = () =&gt; {\n    return `${i18n.t(\"hello_localazy\")}&lt;br&gt;&lt;br&gt;\n  ${i18n.t(\"cdn_testing\")}&lt;br&gt;&lt;br&gt;\n  ${i18n.t(\"using_javascript\")}&lt;br&gt;&lt;br&gt;\n  ${i18n.t(\"cdn_info\")}&lt;br&gt;&lt;br&gt;`;\n}\n\nconst updateTranslatedContent = () =&gt; {\n    document.querySelector(\"#content\").innerHTML = getTranslatedContent();\n}\n\nconst initPageContent = () =&gt; {\n    document.querySelector(\"#app\").innerHTML = `  \n  ${createLanguageSelector()}   \n  &lt;div id=\"content\"&gt;  \n    ${getTranslatedContent()}\n  &lt;\u002Fdiv&gt;`;\n\n    document.querySelector(\"#selector\").addEventListener(\"change\", (e) =&gt; {\n        i18n.changeLanguage(e.target.value);\n        updateTranslatedContent();\n    })\n}\n\ninitI18n(initPageContent);\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>After running the development server with  \u003Ccode>npm start\u003C\u002Fcode> , we should now see this outcome:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-3.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"711\" height=\"356\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F08\u002F1-3.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-3.PNG 711w\">\u003Cfigcaption>The language switcher\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Ch3 id=\"adding-a-new-language\">Adding a new language \u003Ca class=\"markdownit-header-anchor\" href=\"#adding-a-new-language\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>The best part is that everything is automated now. If we decide to add a new language in the project in Localazy, we will have it automatically added to the project without any intervention ⚙️.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-5.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"836\" height=\"423\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F08\u002F1-5.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-5.PNG 836w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>German language added\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cblockquote>Please remember that the CDN works with cached memory. It might take a bit to refresh the content after it's been added. Just sit back, relax, and soon it'll be delivered ⛱️.\u003C\u002Fblockquote>\u003Ch2 id=\"closing-words\">✔️ Closing words \u003Ca class=\"markdownit-header-anchor\" href=\"#closing-words\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>We hope you enjoyed this tutorial and learned how to set up the CDN and how easy it is to start localizing any JavaScript app with it. This might just be the advantage you need for your projects to stay ahead🥇.\u003C\u002Fp>\u003Cp>There are obviously various ways you can take to achieve the output above. Feel free to use the code or modify it to your needs.\u003C\u002Fp>\u003Cp>If you would like to play around with the prototype, you can check it out on \u003Ca href=\"https:\u002F\u002Fcodesandbox.io\u002Fs\u002Fgreat-haibt-2uhfs\">CodeSandbox\u003C\u002Fa>. The whole git repository is available on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flocalazy\u002Fi18next-cdn-example\">GitHub\u003C\u002Fa>. If you have any questions, join us on our \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FsQucDznuMp\">Localazy Discord\u003C\u002Fa> for a chat.\u003C\u002Fp>",{"id":493,"status":8,"created_on":1975,"modified_on":1976,"icon":1977,"header":1978,"description":1979,"button_label":1980,"link":1981},"2022-03-17T12:23:03.000Z","2023-01-19T11:50:20.000Z","member","Enjoy localization on autopilot! 🚀","Grab the Autopilot plan and let Localazy translate your projects while you sleep. Automatically.","Take off","register",{"slug":1865,"id":1858,"uuid":1983,"title":1864,"html":1984,"comment_id":1858,"feature_image":1868,"featured":17,"visibility":1985,"email_recipient_filter":1986,"created_at":1987,"updated_at":1866,"published_at":1867,"custom_excerpt":1972,"codeinjection_head":1988,"codeinjection_foot":7,"custom_template":7,"canonical_url":7,"authors":1989,"tags":1993,"primary_author":2052,"primary_tag":2053,"url":2054,"excerpt":1972,"reading_time":456,"access":17,"send_email_when_published":15,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"email_subject":7,"frontmatter":7,"dictionary":1876,"cta":1974,"plainTags":1869},"4b580909-f11f-41cc-8802-374ee716ce8b","\u003Cp>As developers, we want to deliver content fast, secure, and reliably to our users. In the case of a small business website, it's no issue leaving all of the content stored with the website's hosting provider. But when your project becomes bigger and bigger, you must be able to scale accordingly. In regards to the scalability of \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdictionary\u002Flocalization\">localization\u003C\u002Fa> files delivery, we got your back with the Localazy CDN.\u003C\u002Fp>\u003Ch2 id=\"%F0%9F%A4%94-what-is-a-cdn\">🤔 What is a CDN? \u003C\u002Fh2>\u003Cp>CDN is an abbreviation for \u003Cstrong>Content Delivery Network. \u003C\u002Fstrong>At its core, it's a network of servers also named Points of Presence (PoPs) that store replicas of content in their memory (cache) and then deliver it to requesting users. The geographic location determines this delivery to connect the user to the nearest and fastest server, reducing data transfer time (latency). \u003C\u002Fp>\u003Ch3 id=\"what-is-a-language-cdn\">What is a language CDN?\u003C\u002Fh3>\u003Cp>At Localazy, we strive to help developers worldwide with localization. Localazy language CDN delivers the up-to-date translations reliably and directly to the distributed version of your project, without the need of having to download and update the translation files every single time you make an update.\u003C\u002Fp>\u003Cp>All of this is powered by the reliable AWS CloudFront.\u003C\u002Fp>\u003Cblockquote>\u003Cem>Learn more about \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdocs\u002Fgeneral\u002Flocalazy-cdn\">\u003Cstrong>Localazy CDN\u003C\u002Fstrong> in the documentation\u003C\u002Fa>.\u003C\u002Fem>\u003C\u002Fblockquote>\u003Ch3 id=\"localazy-cdn-vs-ota-updates\">Localazy CDN vs. OTA updates\u003C\u002Fh3>\u003Cp>We designed the Localazy CDN to work mainly with web applications. For mobile apps (\u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fandroid\">Android\u003C\u002Fa> &amp; \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fios\">iOS\u003C\u002Fa>), we have OTA (Over-the-air) updates. Both serve the same purpose, which is delivering translated content directly to your users.\u003C\u002Fp>\u003Cp>The difference is that our \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdocs\u002Fgeneral\u002Fota-updates\">OTA Updates\u003C\u002Fa> already come with a library\u002FSDK for Android &amp; iOS. The library\u002FSDK will then automate the process of distributing the content for you. There are so many available options to implement the CDN that we leave it to our users to decide their best approach.\u003C\u002Fp>\u003Cblockquote>\u003Cem>Learn more about \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdocs\u002Fgeneral\u002Fota-updates\">\u003Cstrong>OTA Updates \u003C\u002Fstrong>in the documentation\u003C\u002Fa>.\u003C\u002Fem>\u003C\u002Fblockquote>\u003Ch3 id=\"is-localazy-cdn-free-or-paid\">Is Localazy CDN free or paid?\u003C\u002Fh3>\u003Cp>Localazy CDN is available with the Free plan, and is a part of Online Services so the pricing is usage based.\u003C\u002Fp>\u003Cblockquote>You can check the pricing \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdocs\u002Fgeneral\u002Flocalazy-cdn#pricing\">here\u003C\u002Fa>.\u003C\u002Fblockquote>\u003Ch2 id=\"%F0%9F%95%B9%EF%B8%8F-sample-project\">🕹️ Sample project\u003C\u002Fh2>\u003Cp>To illustrate the use of CDN, we'll put together a simple project in \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdictionary\u002Fjavascript\">JavaScript\u003C\u002Fa>\u003C\u002Fstrong> using the \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdictionary\u002Fi18next\">i18next\u003C\u002Fa>\u003C\u002Fstrong> library.\u003C\u002Fp>\u003Cp>We will build this example project with the help of the article: \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fblog\u002Fjavascript-app-localization-i18next-localazy\">JavaScript app localization with i18next and Localazy\u003C\u002Fa>.\u003C\u002Fp>\u003Ch3 id=\"creating-the-project\">Creating the project\u003C\u002Fh3>\u003Cp>Let’s start with an empty project.  We'll be using \u003Ccode>npm\u003C\u002Fcode> to manage dependencies, so we'll need \u003Ca href=\"https:\u002F\u002Fnodejs.org\u002Fen\u002F\">Node.js\u003C\u002Fa> installed. You can verify the installation by running \u003Ccode>npm -v\u003C\u002Fcode>.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-bash\">mkdir cdn-js-app &amp;&amp; cd cdn-js-app &amp;&amp; npm init\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>After running the above command and answering the initial questions, a \u003Ccode>package.json\u003C\u002Fcode> file should be created. We'll use the following structure to hold our project:\u003C\u002Fp>\u003Cpre>\u003Ccode>.\n├── index.html\n├── package.json\n├── src\n│   ├── i18n.js\n│   └── index.js\n└── style.css\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Inside the \u003Ccode>index.html\u003C\u002Fcode> file, paste the following code. We will not modify it anymore, meaning that all content will be created dynamically with JavaScript.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n  &lt;title&gt;Localize Javascript App with Localazy's CDN&lt;\u002Ftitle&gt;\n  &lt;link rel=\"stylesheet\" href=\"style.css\"\u002F&gt;\n  &lt;meta charset=\"UTF-8\" \u002F&gt;\n&lt;\u002Fhead&gt;\n&lt;body&gt;\n  &lt;div id=\"app\"&gt;&lt;\u002Fdiv&gt;\n  &lt;script src=\"src\u002Findex.js\"&gt;\n  &lt;\u002Fscript&gt;\n&lt;\u002Fbody&gt;\n&lt;\u002Fhtml&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>To make it easier to work with the project, we'll install the \u003Ccode>parcel-bundler\u003C\u002Fcode> first. If you don't know \u003Ca href=\"https:\u002F\u002Fparceljs.org\u002Fgetting_started.html\">Parcel\u003C\u002Fa> yet, it's a web application bundler with a great developer experience.\u003C\u002Fp>\u003Cp>Parcel offers blazing-fast performance and requires zero configuration. So basically, with one package installed, you'll get a development server with hot-reloading and production builds. Excellent for quick projects and rapid prototyping.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-bash\">npm install -D parcel-bundler\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>You can then simplify running the Parcel bundler by adding a \u003Cem>run\u003C\u002Fem> and \u003Cem>build\u003C\u002Fem> task to the scripts section in your \u003Ccode>package.json\u003C\u002Fcode>. \u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-json\">{\n  \"scripts\": {\n    \"start\": \"parcel index.html --open\",\n    \"build\": \"parcel build index.html\"\n  }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"add-source-language-to-localazy\">Add source language to Localazy\u003C\u002Fh3>\u003Cp>Because we will get our language file with \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdictionary\u002Fexternalized-string\">externalized strings\u003C\u002Fa> through the CDN, we should first add it to Localazy.\u003C\u002Fp>\u003Cp>To do that, we will start by creating a translation file, and we'll name it \u003Ccode>en.json\u003C\u002Fcode>. Inside it, we'll place the following English strings, as it is our source language:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JSON\">{\n  \"hello_localazy\": \"Hello Localazy!\",\n  \"cdn_testing\": \"We're testing the CDN\",\n  \"using_javascript\": \"In this project we decided to use JavaScript\",\n  \"cdn_info\": \"With the CDN you can deliver the translation files instantly\"\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>To add the file to Localazy, \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fregister\">sign up\u003C\u002Fa> or log in and when you find yourself in the dashboard, click \u003Cstrong>Add New App.\u003C\u002Fstrong>\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F1-1.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1349\" height=\"689\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002F1-1.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002F1-1.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F1-1.PNG 1349w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Creating a new app in Localazy\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>Here, you can name your app, set it public or private, and decide whether to use community translations (\u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdocs\u002Fgeneral\u002Fwhat-is-localazy-sharetm\">ShareTM\u003C\u002Fa>) for your project.\u003C\u002Fp>\u003Cp>Now that our app is created, we can add the language file through the \u003Cstrong>File management \u003C\u002Fstrong>screen.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F2.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1348\" height=\"622\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002F2.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002F2.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F2.PNG 1348w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Localazy File management screen\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>Click the ➕ blue button in the top right, drag and drop the file, pick your choices and upload it.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F3.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1349\" height=\"642\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002F3.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002F3.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F3.PNG 1349w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Localazy File management screen\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>Our file is officially uploaded and ready to be implemented with the CDN.\u003C\u002Fp>\u003Ch2 id=\"%F0%9F%8C%8E-integrating-the-project-with-localazy-cdn\">🌎 Integrating the project with Localazy CDN\u003C\u002Fh2>\u003Cp>As a next step, we’re going to install the \u003Ccode>i18next\u003C\u002Fcode> library. It will help us to quickly load all the locales we have.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-bash\">npm install i18next\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The following code needs to be added to our\u003Cstrong> i18n.js \u003C\u002Fstrong>file:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">\u002F\u002F i18n.js\nimport i18next from \"i18next\";\n\nexport const i18n = i18next;\n\nexport const fetchLanguage = async (code) =&gt; {\n  const result = await fetch(`https:\u002F\u002Fdelivery.localazy.com\u002F_a855374211039568660198b39c31\u002F_e0\u002Fdfe5b84c1598c8c56b6f1a11efcd483bb3f417ea\u002F${code}\u002Ffile.json`);  \n  return result.json();\n}\n\n\nexport const initI18n = async (callback) =&gt; {\n  const result = await fetchLanguage(\"en\");\n\n  i18next.init({\n    lng: \"en\",\n    debug: true,    \n    resources: {\n      en: {\n        translation: result\n      },\n    },\n  }, function (err, t) {\n    \u002F\u002F Call this function once i18next is initialized\n    callback()\n  });\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>It works by creating the \u003Ccode>fetchLanguage\u003C\u002Fcode>\u003Cstrong> \u003C\u002Fstrong>function that loads the specific JSON file from the CDN. The input parameter is the language code; notice that the fetch function inside contains the file URL. This URL can be obtained by clicking on the three dots of the file we uploaded in the \u003Cstrong>File Manager\u003C\u002Fstrong> or clicking the button right next to it.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F4.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1349\" height=\"646\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002F4.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002F4.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F4.PNG 1349w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Localazy CDN option in the File management\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>The URL in the function has been modified with a \u003Ccode>${code}\u003C\u002Fcode> placeholder, and this placeholder is going to be used to fetch the different language files dynamically.\u003C\u002Fp>\u003Cp>Looking at the\u003Cstrong> index.js\u003C\u002Fstrong> file, we will need to use the following code to show the strings on the screen.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">\u002F\u002F index.js\nimport { i18n, initI18n } from \".\u002Fi18n\";\n\nconst initPageContent = () =&gt; document.write(`\n\n${i18n.t(\"hello_localazy\")}\n&lt;br&gt;&lt;br&gt;\n${i18n.t(\"cdn_testing\")}\n&lt;br&gt;&lt;br&gt;\n${i18n.t(\"using_javascript\")}\n&lt;br&gt;&lt;br&gt;\n${i18n.t(\"cdn_info\")}\n`);\n\ninitI18n(initPageContent);\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Depending on your browser, you might have to add the code below to the \u003Ccode>package.json\u003C\u002Fcode> file or you can get an \u003Ccode>Uncaught ReferenceError: regeneratorRuntime\u003C\u002Fcode> error.\u003C\u002Fp>\u003Cpre>\u003Ccode>\"browserslist\": [\n    \"last 1 Chrome version\"\n  ]\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Once done, try to run the development server with \u003Ccode>npm start\u003C\u002Fcode>.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F5.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"838\" height=\"454\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002F5.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F5.PNG 838w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>The desired output\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>You should see the above result if you set everything up correctly.\u003C\u002Fp>\u003Ch3 id=\"implementing-a-language-switcher\">Implementing a language switcher\u003C\u002Fh3>\u003Cp>What we implemented above is a basic setup of the CDN, and it's enough for one language, but if you're reading this, most likely you want your project translated into different languages.\u003C\u002Fp>\u003Cp>For this, we will dynamically fetch all the languages you have associated with your project at Localazy, and we will display them with a simple language switcher, all of this without the need for any local files.\u003C\u002Fp>\u003Ch4 id=\"fetching-different-language-files\">Fetching different language files \u003C\u002Fh4>\u003Cp>Our \u003Ccode>fetchLanguage\u003C\u002Fcode> function in our \u003Cstrong>i18n.js\u003C\u002Fstrong> file accepts language codes to fetch the string files, but we would have to add them manually each time we add a new language. Luckily for us, Localazy offers you a CDN metadata file. This file contains objects with data for each locale we have on our project.\u003C\u002Fp>\u003Cp>First things first: we should add more languages to our project. To do this, we head back to our project at Localazy and click on \u003Cstrong>the Translations\u003C\u002Fstrong> tab. Here, we can see the \u003Cstrong>Add Languages tab\u003C\u002Fstrong>, where we can choose the languages we will add to our project.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1348\" height=\"694\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F08\u002F1.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F08\u002F1.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1.PNG 1348w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Adding Languages in Localazy\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>We will choose European Portuguese (pt_PT) and Spanish (es) for this example, but feel free to choose whatever languages you would like to add.\u003C\u002Fp>\u003Cp>Your screen will then look like this:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F2.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1348\" height=\"692\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F08\u002F2.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F08\u002F2.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F2.PNG 1348w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Added Languages in Localazy\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>To start translating them, click the blue button on your selected language, and you'll be redirected to this screen:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-1.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1345\" height=\"680\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F08\u002F1-1.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F08\u002F1-1.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-1.PNG 1345w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Translating the strings\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>When all the languages have been translated, this is what it'll look like:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-2.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1344\" height=\"693\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F08\u002F1-2.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F08\u002F1-2.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-2.PNG 1344w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Translated languages in Localazy\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>We now need to fetch all the string files. To do that, we will use the metadata file to get the language codes associated with the languages we translated. After we get the language codes, we will then fetch the language file using the \u003Ccode>fetchLanguage\u003C\u002Fcode> function.\u003C\u002Fp>\u003Cp>We will need the metadata URL, which can be accessed from Localazy CDN options:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F4.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"1349\" height=\"646\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002F4.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002F4.PNG 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002F4.PNG 1349w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Localazy CDN option in the File management\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>To fetch the metadata file, we will add the following functions to the \u003Cstrong>i18n.js\u003C\u002Fstrong> file:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">export const fetchLocalazyMeta = async () =&gt; {\n  const result = await fetch(`https:\u002F\u002Fdelivery.localazy.com\u002F_a855374211039568660198b39c31\u002F_e0.json`); \n  localazyLocales = Object.values(await result.json())[0][\"locales\"];\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>In this function, the metadata file is already being processed for the locales objects to be added into an array called \u003Ccode>localazyLocales\u003C\u002Fcode>, making it easier to access.\u003C\u002Fp>\u003Cp>To extract the language codes, we use this function:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">export const getSupportedLangCodes = () =&gt; {\n\nconst languages = localazyLocales.map(\n    (locale) =&gt; {\n      let langCode = locale.language;\n      if (locale.region) {\n        langCode = langCode + \"-\" + locale.region;\n      }\n\n      return langCode;\n    }\n  );\n\n  return languages;\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This function retrieves the language parameter from the metadata file, and if it has a region associated with it, it will add it to the string, creating the language codes.\u003C\u002Fp>\u003Cp>To get the current language, we use the following code:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">export const getCurrentLanguage = () =&gt; {\n  return window.localStorage.i18nextLng || 'en';\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>To get all languages, we have this:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">export const getLanguages = ()=&gt;{\n\n  return localazyLocales;\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This last two functions are needed in the \u003Cstrong>index.js\u003C\u002Fstrong> file.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">export const initI18n = async (callback) =&gt; {\n\n  await fetchLocalazyMeta()\n  const langCodes = getSupportedLangCodes();\n  const result = await Promise.all([\n    ...langCodes.map(lng=&gt; fetchLanguage(lng))\n  ]);\n\n  let resources = {};\n\n  result.forEach((res,index)=&gt;{\n    resources[langCodes[index]] = {translation: res};\n  })\n  i18next.init({\n    lng: \"en\",\n    fallbackLng: \"en\",\n    debug: true,\n    supportedLngs: langCodes,\n    resources,\n  }, function (err, t) {\n    callback()\n  });\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This the last function of our \u003Cstrong>i18n.js\u003C\u002Fstrong> file, it will separate the locales and allow them to be displayed in \u003Cstrong>index.js.\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp>The full content of the\u003Cstrong> i18n.js\u003C\u002Fstrong> file is:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">\nimport i18next from \"i18next\";\n\nexport const i18n = i18next;\n\nexport let localazyLocales = [];\n\n\nexport const fetchLanguage = async (code) =&gt; {\n  const result = await fetch(`https:\u002F\u002Fdelivery.localazy.com\u002F_a855374211039568660198b39c31\u002F_e0\u002Fdfe5b84c1598c8c56b6f1a11efcd483bb3f417ea\u002F${code}\u002Ffile.json`);  \n  return result.json();\n}\n\nexport const fetchLocalazyMeta = async () =&gt; {\n  const result = await fetch(`https:\u002F\u002Fdelivery.localazy.com\u002F_a855374211039568660198b39c31\u002F_e0.json`); \n  localazyLocales = Object.values(await result.json())[0][\"locales\"];\n}\n\nexport const getSupportedLangCodes = () =&gt; {\n\nconst languages =localazyLocales.map(\n    (locale) =&gt; {\n      let langCode = locale.language;\n      if (locale.region) {\n        langCode = langCode + \"-\" + locale.region;\n      }\n\n      return langCode;\n    }\n  );\n\n  return languages;\n}\n\nexport const getCurrentLanguage = () =&gt; {\n  return window.localStorage.i18nextLng || 'en';\n}\n\nexport const getLanguages = ()=&gt;{\n\n  return localazyLocales;\n}\n\nexport const initI18n = async (callback) =&gt; {\n\n  await fetchLocalazyMeta()\n  const langCodes = getSupportedLangCodes();\n  const result = await Promise.all([\n    ...langCodes.map(lng=&gt; fetchLanguage(lng))\n  ]);\n\n  let resources = {};\n\n  result.forEach((res,index)=&gt;{\n    resources[langCodes[index]] = {translation: res};\n  })\n  i18next.init({\n    lng: \"en\",\n    fallbackLng: \"en\",\n    debug: true,\n    supportedLngs: langCodes,\n    resources,\n  }, function (err, t) {\n    callback()\n  });\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch4 id=\"creating-the-language-switcher-element\">Creating the language switcher element\u003C\u002Fh4>\u003Cp>Now that we can dynamically load the files, we must present them in the browser. We will use this very simple language switcher in \u003Ccode>index.js\u003C\u002Fcode> to easily switch between languages.\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-JavaScript\">import { i18n, initI18n, getLanguages, getCurrentLanguage, getSupportedLangCodes } from \".\u002Fi18n\";\n\nconst createLanguageSelector = () =&gt; {\n    const languages = getLanguages();\n    const langCodes = getSupportedLangCodes();\n    let template = '&lt;select id=\"selector\"&gt;';\n    languages.forEach((l, i) =&gt; {\n        template += `\n    &lt;option ${l.language === getCurrentLanguage() ? \"selected\" : \"\"} value=\"${langCodes[i]}\"&gt;\n      ${l.localizedName}\n    &lt;\u002Foption&gt;`\n    })\n    template += '&lt;\u002Fselect&gt;';\n    return template;\n}\n\nconst getTranslatedContent = () =&gt; {\n    return `${i18n.t(\"hello_localazy\")}&lt;br&gt;&lt;br&gt;\n  ${i18n.t(\"cdn_testing\")}&lt;br&gt;&lt;br&gt;\n  ${i18n.t(\"using_javascript\")}&lt;br&gt;&lt;br&gt;\n  ${i18n.t(\"cdn_info\")}&lt;br&gt;&lt;br&gt;`;\n}\n\nconst updateTranslatedContent = () =&gt; {\n    document.querySelector(\"#content\").innerHTML = getTranslatedContent();\n}\n\nconst initPageContent = () =&gt; {\n    document.querySelector(\"#app\").innerHTML = `  \n  ${createLanguageSelector()}   \n  &lt;div id=\"content\"&gt;  \n    ${getTranslatedContent()}\n  &lt;\u002Fdiv&gt;`;\n\n    document.querySelector(\"#selector\").addEventListener(\"change\", (e) =&gt; {\n        i18n.changeLanguage(e.target.value);\n        updateTranslatedContent();\n    })\n}\n\ninitI18n(initPageContent);\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>After running the development server with  \u003Ccode>npm start\u003C\u002Fcode> , we should now see this outcome:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-3.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"711\" height=\"356\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F08\u002F1-3.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-3.PNG 711w\">\u003Cfigcaption>The language switcher\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Ch3 id=\"adding-a-new-language\">Adding a new language\u003C\u002Fh3>\u003Cp>The best part is that everything is automated now. If we decide to add a new language in the project in Localazy, we will have it automatically added to the project without any intervention ⚙️.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-5.PNG\" class=\"kg-image\" alt loading=\"lazy\" width=\"836\" height=\"423\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F08\u002F1-5.PNG 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F08\u002F1-5.PNG 836w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>German language added\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cblockquote>Please remember that the CDN works with cached memory. It might take a bit to refresh the content after it's been added. Just sit back, relax, and soon it'll be delivered ⛱️.\u003C\u002Fblockquote>\u003Ch2 id=\"%E2%9C%94%EF%B8%8F-closing-words\">✔️ Closing words\u003C\u002Fh2>\u003Cp>We hope you enjoyed this tutorial and learned how to set up the CDN and how easy it is to start localizing any JavaScript app with it. This might just be the advantage you need for your projects to stay ahead🥇.\u003C\u002Fp>\u003Cp>There are obviously various ways you can take to achieve the output above. Feel free to use the code or modify it to your needs.\u003C\u002Fp>\u003Cp>If you would like to play around with the prototype, you can check it out on \u003Ca href=\"https:\u002F\u002Fcodesandbox.io\u002Fs\u002Fgreat-haibt-2uhfs\">CodeSandbox\u003C\u002Fa>. The whole git repository is available on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flocalazy\u002Fi18next-cdn-example\">GitHub\u003C\u002Fa>. If you have any questions, join us on our \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FsQucDznuMp\">Localazy Discord\u003C\u002Fa> for a chat.\u003C\u002Fp>","public","none","2021-07-21T00:55:15.000+02:00","{\"intercomArticleUrl\":\"\"}",[1990],{"id":1860,"name":1861,"slug":1862,"profile_image":1863,"cover_image":7,"bio":7,"website":7,"location":1991,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"url":1992},"Munich, Germany","https:\u002F\u002Fghost.localazy.com\u002Fauthor\u002Ffrancisco-melo\u002F",[1994,1997,2003,2009,2014,2019,2025,2030,2036,2041,2044,2047],{"id":1995,"name":667,"slug":671,"description":7,"feature_image":7,"visibility":1985,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":1996},"611456df6f8ebe0001bda0dd","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fcdn\u002F",{"id":1998,"name":1999,"slug":2000,"description":2001,"feature_image":7,"visibility":1985,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":2002},"60ba4b8fcf7b6a0001d1f9b9","[CTA] Enjoy localization on autopilot! 🚀","cta-16","Grab the brand new Autopilot plan and let Localazy translate your apps while you sleep. Automatically.","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fcta-16\u002F",{"id":2004,"name":2005,"slug":2006,"description":2007,"feature_image":7,"visibility":1985,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":2008},"60a37fc7cf7b6a0001d1f131","[DICT] Android","term-20","Android is a mobile operating system (OS) primarily designed for touchscreen devices such as smartphones and tablets.","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-20\u002F",{"id":2010,"name":2011,"slug":2012,"description":1889,"feature_image":7,"visibility":1985,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":2013},"60a37fc7cf7b6a0001d1f159","[DICT] Externalized string","term-60","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-60\u002F",{"id":2015,"name":2016,"slug":2017,"description":1913,"feature_image":7,"visibility":1985,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":2018},"60a37fc7cf7b6a0001d1f175","[DICT] i18next","term-88","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-88\u002F",{"id":2020,"name":2021,"slug":2022,"description":2023,"feature_image":7,"visibility":1985,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":2024},"60a37fc7cf7b6a0001d1f132","[DICT] iOS","term-21","iOS is a mobile devices operating system developed by Apple Inc. exclusively for Apple devices.","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-21\u002F",{"id":2026,"name":2027,"slug":2028,"description":1935,"feature_image":7,"visibility":1985,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":2029},"60a37fc7cf7b6a0001d1f168","[DICT] JavaScript","term-75","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-75\u002F",{"id":2031,"name":2032,"slug":2033,"description":2034,"feature_image":7,"visibility":1985,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":2035},"60a37fc7cf7b6a0001d1f11f","[DICT] Localization","term-2","Localization is a process of preparing a product for a particular market.","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-2\u002F",{"id":2037,"name":2038,"slug":2039,"description":1965,"feature_image":7,"visibility":1985,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":2040},"60a37fc7cf7b6a0001d1f11e","[DICT] ShareTM","term-1","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-1\u002F",{"id":2042,"name":1873,"slug":1874,"description":1873,"feature_image":7,"visibility":1985,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":2043},"60a37fc7cf7b6a0001d1f0fa","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fhowto\u002F",{"id":2045,"name":515,"slug":514,"description":515,"feature_image":7,"visibility":1985,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":2046},"60a37fc7cf7b6a0001d1f105","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fjavascript\u002F",{"id":2048,"name":2049,"slug":2050,"description":7,"feature_image":7,"visibility":1985,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":2051},"64710a2f047091000193ca3d","[INTERCOM]","intercom","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fintercom\u002F",{"id":1860,"name":1861,"slug":1862,"profile_image":1863,"cover_image":7,"bio":7,"website":7,"location":1991,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"url":1992},{"id":1995,"name":667,"slug":671,"description":7,"feature_image":7,"visibility":1985,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":1996},"https:\u002F\u002Fghost.localazy.com\u002Fdeliver-translated-files-localazy-cdn-tutorial\u002F",[2056,2079,2100],{"id":2057,"owner":2058,"created_by":7,"sort":7,"title":2063,"slug":2064,"modified_on":764,"created_on":2065,"pinned":15,"badge":7,"priority":1824,"main_image":2066,"status":8,"tags":2067,"dictionary":2078,"reading_time":1835,"excerpt":-1,"og_title":764,"og_description":764,"og_image":764},"6372308e04709100019374c9",{"id":2059,"first_name":2060,"last_name":764,"slug":2061,"avatar":2062},"6061ffdd2a37af00016d413d","Daniel Charvát","daniel-charvat","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Fdan-1.png","Figma in Localization: Figma as a Source of Truth","figma-series-figma-as-source-of-truth","2023-02-08T20:43:55.000+01:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F01\u002FFigma-Series-3.png",[2068,2071,2072,2075],{"id":2069,"created_on":2070,"status":8,"label":545,"slug":544,"on_index_page":17},6183,"2026-06-05 20:37:35",{"id":319,"created_on":2070,"status":8,"label":1873,"slug":1874,"on_index_page":15},{"id":319,"created_on":2070,"status":8,"label":2073,"slug":2074,"on_index_page":17},"DevTips","devtips",{"id":278,"created_on":2070,"status":8,"label":2076,"slug":2077,"on_index_page":15},"Design","design",[],{"id":2080,"owner":2081,"created_by":7,"sort":7,"title":2086,"slug":2087,"modified_on":764,"created_on":2088,"pinned":15,"badge":7,"priority":1824,"main_image":2089,"status":8,"tags":2090,"dictionary":2099,"reading_time":1835,"excerpt":-1,"og_title":764,"og_description":764,"og_image":764},"63dd1bf30470910001939f8b",{"id":2082,"first_name":2083,"last_name":764,"slug":2084,"avatar":2085},"61dc4e87df4bcb00010bd508","Mary Okosun","mary-okosun","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Fokosun.png","The ultimate guide to Localazy API","the-ultimate-guide-to-localazy-api","2023-03-15T10:00:00.000+01:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F03\u002Fultimate-localazy-api-guide.png",[2091,2092,2095,2096],{"id":319,"created_on":2070,"status":8,"label":655,"slug":659,"on_index_page":15},{"id":319,"created_on":2070,"status":8,"label":2093,"slug":2094,"on_index_page":15},"Automated Localization","automated-localization",{"id":319,"created_on":2070,"status":8,"label":1873,"slug":1874,"on_index_page":15},{"id":319,"created_on":2070,"status":8,"label":2097,"slug":2098,"on_index_page":15},"Guide","guide",[],{"id":2101,"owner":2102,"created_by":7,"sort":7,"title":2107,"slug":2108,"modified_on":764,"created_on":2109,"pinned":15,"badge":7,"priority":1824,"main_image":2110,"status":8,"tags":2111,"dictionary":2115,"reading_time":1835,"excerpt":-1,"og_title":764,"og_description":764,"og_image":764},"60a37fc7cf7b6a0001d1f18c",{"id":2103,"first_name":2104,"last_name":764,"slug":2105,"avatar":2106},"1","Václav Hodek","vaclav-hodek","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Fvasek.png","Quick guide to Android localization with Localazy","quick-guide-to-android-localization-localazy","2022-02-09T09:00:00.000+01:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F09\u002FHow-to-lokalize-Android-app.png",[2112,2113,2114],{"id":319,"created_on":2070,"status":8,"label":466,"slug":465,"on_index_page":15},{"id":319,"created_on":2070,"status":8,"label":217,"slug":1833,"on_index_page":17},{"id":319,"created_on":2070,"status":8,"label":1873,"slug":1874,"on_index_page":15},[],{"id":26,"sort":7,"created_on":2117,"name":2118,"cta_link":2119,"banner_image":2120},"2022-03-17T12:23:14.000Z","default","https:\u002F\u002Flocalazy.com\u002Ffeatures\u002Flocalazy-ai",{"id":2121},"72defd59-a21d-44b9-822c-4e183ca62b99"]