[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-settings":3,"main-navigation":153,"footer-homepage":836,"footer-integrations":903,"blog-post-nav-nav":1814,"blog-post-nav-[USE LATEST FEATURED]":1836,"blog-localize-angular-app-i18n-l10n-localazy":1851},{"id":4,"status":5,"security_section_title":6,"loved_section_title":7,"columns":8,"social_links":113,"policy_links":143},1,"published","Secured & trusted","Loved by users",[9,28,48,74,78],{"id":4,"status":5,"sort":10,"title":11,"column_key":12,"links":13},null,"Localazy","connect",[14,18,23],{"id":15,"status":5,"sort":4,"title":16,"url":17},11,"Book a demo","___LOCALAZY_MEETING_URL___",{"id":19,"status":5,"sort":20,"title":21,"url":22},12,2,"Contact","\u002Fcontact",{"id":24,"status":5,"sort":25,"title":26,"url":27},21,3,"About us","\u002Fabout-us",{"id":20,"status":5,"sort":10,"title":29,"column_key":30,"links":31},"Programs","programs",[32,36,40,44],{"id":4,"status":5,"sort":33,"title":34,"url":35},4,"Partner Program","\u002Fpartnership",{"id":20,"status":5,"sort":37,"title":38,"url":39},5,"Ambassador Program","\u002Fambassador",{"id":25,"status":5,"sort":41,"title":42,"url":43},6,"Startup Program","\u002Ffor\u002Fstartups",{"id":33,"status":5,"sort":45,"title":46,"url":47},7,"Nonprofits","\u002Ffor\u002Fnonprofit",{"id":25,"status":5,"sort":10,"title":49,"column_key":50,"links":51},"Use Cases","use_cases",[52,56,60,64,67,70],{"id":37,"status":5,"sort":53,"title":54,"url":55},8,"Software Localization","\u002Fterm\u002Fsoftware-localization",{"id":41,"status":5,"sort":57,"title":58,"url":59},9,"Machine Translation Services","\u002Ffeatures\u002Fmachine-translation",{"id":45,"status":5,"sort":61,"title":62,"url":63},10,"Translation API","\u002Ffeatures\u002Ftranslation-api",{"id":53,"status":5,"sort":15,"title":65,"url":66},"Crowdsourced Translations","\u002Ffeatures\u002Fshare-tm",{"id":57,"status":5,"sort":19,"title":68,"url":69},"Figma i18n & localization","\u002Ffeatures\u002Ffigma-localization-plugin",{"id":61,"status":5,"sort":71,"title":72,"url":73},13,"Translation as a Service","\u002Fterm\u002Ftranslation-service",{"id":33,"status":5,"sort":10,"title":75,"column_key":76,"links":77},"Integrations","integrations",[],{"id":37,"status":5,"sort":10,"title":79,"column_key":80,"links":81},"Resources","resources",[82,86,90,94,98,102,106,110],{"id":71,"status":5,"sort":83,"title":84,"url":85},14,"Documentation","\u002Fdocs",{"id":83,"status":5,"sort":87,"title":88,"url":89},15,"Dictionary","\u002Fdictionary",{"id":87,"status":5,"sort":91,"title":92,"url":93},16,"Case Studies","\u002Fcase-study",{"id":91,"status":5,"sort":95,"title":96,"url":97},17,"Discussion forum","___DISCUSS_URL___",{"id":95,"status":5,"sort":99,"title":100,"url":101},18,"Localization Blog","\u002Fblog",{"id":99,"status":5,"sort":103,"title":104,"url":105},19,"FAQ","\u002Ffaq",{"id":103,"status":5,"sort":107,"title":108,"url":109},20,"Pricing","\u002Fpricing",{"id":107,"status":5,"sort":24,"title":111,"url":112},"Brand assets","https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Fu\u002F1\u002Ffolders\u002F1tZqsZHBlGelz7A2FwTsiwrs4j3sd9HTk",[114,119,124,129,134,139],{"id":4,"status":5,"sort":10,"platform":115,"icon":116,"url":117,"label":118},"feed","rss","\u002Ffeed.xml","Localazy RSS Feed",{"id":20,"status":5,"sort":10,"platform":120,"icon":121,"url":122,"label":123},"facebook","fb-logo","https:\u002F\u002Fwww.facebook.com\u002Flocalazy\u002F","Localazy facebook",{"id":25,"status":5,"sort":10,"platform":125,"icon":126,"url":127,"label":128},"github","github-logo","https:\u002F\u002Fgithub.com\u002Flocalazy","Localazy GitHub",{"id":33,"status":5,"sort":10,"platform":130,"icon":131,"url":132,"label":133},"x","x-twitter","https:\u002F\u002Fx.com\u002Flocalazy","Localazy X",{"id":37,"status":5,"sort":10,"platform":135,"icon":136,"url":137,"label":138},"linkedin","linkedin-logo","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002F37836599\u002F","Localazy LinkedIn",{"id":41,"status":5,"sort":10,"platform":140,"icon":141,"url":97,"label":142},"discourse","discourse-logo","Localazy Discourse",[144,147,150],{"id":4,"status":5,"sort":10,"title":145,"url":146,"action":10},"Privacy policy","\u002Fprivacy-policy",{"id":20,"status":5,"sort":10,"title":148,"url":149,"action":10},"Terms & Conditions","\u002Fterms-and-conditions",{"id":25,"status":5,"sort":10,"title":151,"url":10,"action":152},"Cookies","cookie-consent",[154,347,580,708,831,833],{"id":20,"name":155,"url":10,"url_text":10,"status":5,"groups":156},"Solutions",[157,168,239,274],{"navigation_items_group_id":158},{"id":25,"sort":37,"status":5,"name":159,"render_show_all_url":160,"show_all_url_position":161,"show_favorite_icon":162,"show_all_url":10,"represent_as_tile":160,"items":163},"Featured Article",false,"top",true,[164],{"collection":165,"item":166},"blog_post_navigation_item_type",{"id":33,"status":5,"sort":10,"show_author_img":162,"blog_post_tag":167,"description":10},"nav",{"navigation_items_group_id":169},{"id":37,"sort":4,"status":5,"name":170,"render_show_all_url":160,"show_all_url_position":161,"show_favorite_icon":160,"show_all_url":171,"represent_as_tile":162,"items":172},"Your Role","\u002Froles",[173,185,195,205,216,228],{"collection":174,"item":175},"relation_navigation_item_type",{"id":4,"status":5,"sort":10,"name":176,"item":177},"CMO",[178],{"collection":179,"item":180},"personas",{"id":4,"status":5,"sort":10,"slug":181,"icon":182},"chief-marketing-officers",{"id":183,"title":184},"526097d8-176f-48e5-83d3-2fc4d77061f9","La Mail Bulk",{"collection":174,"item":186},{"id":25,"status":5,"sort":10,"name":187,"item":188},"CTO",[189],{"collection":179,"item":190},{"id":33,"status":5,"sort":10,"slug":191,"icon":192},"chief-technical-officers",{"id":193,"title":194},"f808fdf0-c78b-4294-ba59-fe25f46fe825","La Mechanic",{"collection":174,"item":196},{"id":107,"status":5,"sort":10,"name":197,"item":198},"Product Manager",[199],{"collection":179,"item":200},{"id":99,"status":5,"sort":10,"slug":201,"icon":202},"product-managers",{"id":203,"title":204},"ea39586a-21fc-4b34-ba87-496028e5198f","La Worker",{"collection":174,"item":206},{"id":207,"status":5,"sort":10,"name":208,"item":209},37,"Translator",[210],{"collection":179,"item":211},{"id":107,"status":5,"sort":10,"slug":212,"icon":213},"professional-translators",{"id":214,"title":215},"07945171-d51d-4ca8-96c0-21cde9db258f","La Chat",{"collection":174,"item":217},{"id":218,"status":5,"sort":10,"name":219,"item":220},38,"Developer",[221],{"collection":179,"item":222},{"id":223,"status":5,"sort":10,"slug":224,"icon":225},30,"software-developers",{"id":226,"title":227},"1806e46d-c551-4845-bf42-4407344d229e","La Terminal",{"collection":174,"item":229},{"id":230,"status":5,"sort":10,"name":231,"item":232},27,"Localization Manager",[233],{"collection":179,"item":234},{"id":41,"status":5,"sort":10,"slug":235,"icon":236},"localization-managers",{"id":237,"title":238},"dac69bd1-bf5d-41d0-87d4-dd13e314698a","La Language",{"navigation_items_group_id":240},{"id":57,"sort":25,"status":5,"name":241,"render_show_all_url":160,"show_all_url_position":242,"show_favorite_icon":160,"show_all_url":10,"represent_as_tile":160,"items":243},"Use cases","bottom",[244,250,255,260,264,269],{"collection":245,"item":246},"simple_link_navigation_item_type",{"id":247,"status":5,"sort":10,"url":248,"url_text":249,"show_favorite_icon":160},24,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fsoftware-localization","Software localization",{"collection":245,"item":251},{"id":252,"status":5,"sort":10,"url":253,"url_text":254,"show_favorite_icon":160},26,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fmobile-app-localization","Mobile app localization",{"collection":245,"item":256},{"id":257,"status":5,"sort":10,"url":258,"url_text":259,"show_favorite_icon":160},25,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fwebsite-localization","Website localization",{"collection":245,"item":261},{"id":230,"status":5,"sort":10,"url":262,"url_text":263,"show_favorite_icon":160},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fdesign-localization","Design localization",{"collection":245,"item":265},{"id":266,"status":5,"sort":10,"url":267,"url_text":268,"show_favorite_icon":160},28,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fgame-localization","Game localization",{"collection":245,"item":270},{"id":271,"status":5,"sort":10,"url":272,"url_text":273,"show_favorite_icon":160},29,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fhelp-and-docs-localization","Help & docs localization",{"navigation_items_group_id":275},{"id":53,"sort":20,"status":5,"name":276,"render_show_all_url":160,"show_all_url_position":242,"show_favorite_icon":160,"show_all_url":10,"represent_as_tile":160,"items":277},"Industry",[278,289,300,310,320,329,340],{"collection":174,"item":279},{"id":280,"status":5,"sort":10,"name":281,"item":282},23,"Digital Agencies",[283],{"collection":179,"item":284},{"id":45,"status":5,"sort":10,"slug":285,"icon":286},"digital-agencies",{"id":287,"title":288},"547f5619-b21d-4b29-86f1-8b2200313cde","La Digi Agency",{"collection":174,"item":290},{"id":291,"status":5,"sort":10,"name":292,"item":293},39,"Startups & SaaS",[294],{"collection":179,"item":295},{"id":20,"status":5,"sort":10,"slug":296,"icon":297},"startups",{"id":298,"title":299},"da1516e2-4afc-40a2-bcbf-a8161e2d610d","La Saa S",{"collection":174,"item":301},{"id":20,"status":5,"sort":10,"name":302,"item":303},"E-commerce",[304],{"collection":179,"item":305},{"id":37,"status":5,"sort":10,"slug":306,"icon":307},"e-commerce",{"id":308,"title":309},"a3d09cd2-054f-4bb5-a0a2-d3d207db65df","La Ecommerce",{"collection":174,"item":311},{"id":103,"status":5,"sort":10,"name":312,"item":313},"FinTech Platforms",[314],{"collection":179,"item":315},{"id":230,"status":5,"sort":10,"slug":316,"icon":317},"fintech",{"id":318,"title":319},"147339ba-07d1-4e5e-baad-23d27e60c919","La Money",{"collection":174,"item":321},{"id":247,"status":5,"sort":10,"name":322,"item":323},"Translation Agencies",[324],{"collection":179,"item":325},{"id":247,"status":5,"sort":10,"slug":326,"icon":327},"translation-agencies",{"id":328,"title":238},"15d6fe33-2af8-4d6e-933d-5caa64394511",{"collection":174,"item":330},{"id":331,"status":5,"sort":10,"name":332,"item":333},22,"Travel & Tourism",[334],{"collection":179,"item":335},{"id":25,"status":5,"sort":10,"slug":336,"icon":337},"tourism",{"id":338,"title":339},"23a785e8-0ae5-4c4b-8452-aab1b58182a6","La Travel",{"collection":174,"item":341},{"id":257,"status":5,"sort":10,"name":342,"item":343},"Nonprofit Causes",[344],{"collection":179,"item":345},{"id":266,"status":5,"sort":10,"slug":346,"icon":10},"nonprofit",{"id":37,"name":348,"url":10,"url_text":10,"status":5,"groups":349},"Features",[350,417,474,523],{"navigation_items_group_id":351},{"id":15,"sort":41,"status":5,"name":352,"render_show_all_url":160,"show_all_url_position":161,"show_favorite_icon":160,"show_all_url":10,"represent_as_tile":160,"items":353},"Localization",[354,363,372,380,388,392,400,409],{"collection":174,"item":355},{"id":356,"status":5,"sort":10,"name":357,"item":358},44,"Localization services",[359],{"collection":360,"item":361},"products",{"id":57,"status":5,"slug":362},"continuous-localization-team",{"collection":174,"item":364},{"id":365,"status":5,"sort":10,"name":366,"item":367},45,"Translation management",[368],{"collection":369,"item":370},"term_landing_page",{"id":271,"status":5,"slug":371},"translation-management-system",{"collection":174,"item":373},{"id":374,"status":5,"sort":10,"name":375,"item":376},46,"Context Screenshots",[377],{"collection":360,"item":378},{"id":71,"status":5,"slug":379},"context-screenshots-ocr",{"collection":174,"item":381},{"id":382,"status":5,"sort":10,"name":383,"item":384},47,"Translation Glossary",[385],{"collection":360,"item":386},{"id":95,"status":5,"slug":387},"glossary",{"collection":245,"item":389},{"id":33,"status":5,"sort":10,"url":390,"url_text":391,"show_favorite_icon":160},"\u002Fdocs\u002Fgeneral\u002Freviewing-translations","Quality control",{"collection":174,"item":393},{"id":394,"status":5,"sort":10,"name":395,"item":396},34,"Connected Projects",[397],{"collection":360,"item":398},{"id":4,"status":5,"slug":399},"connected-projects",{"collection":174,"item":401},{"id":402,"status":5,"sort":10,"name":403,"item":404},64,"Plural handling",[405],{"collection":360,"item":406},{"id":407,"status":5,"slug":408},32,"plurals",{"collection":174,"item":410},{"id":411,"status":5,"sort":10,"name":412,"item":413},65,"Style guides",[414],{"collection":360,"item":415},{"id":218,"status":5,"slug":416},"style-guide",{"navigation_items_group_id":418},{"id":19,"sort":45,"status":5,"name":419,"render_show_all_url":160,"show_all_url_position":161,"show_favorite_icon":160,"show_all_url":10,"represent_as_tile":160,"items":420},"Translation",[421,429,437,441,449,457,466],{"collection":174,"item":422},{"id":423,"status":5,"sort":10,"name":424,"item":425},36,"Professional translations",[426],{"collection":369,"item":427},{"id":223,"status":5,"slug":428},"professional-translation-services",{"collection":174,"item":430},{"id":431,"status":5,"sort":10,"name":432,"item":433},48,"Crowdsourced translations",[434],{"collection":360,"item":435},{"id":53,"status":5,"slug":436},"share-tm",{"collection":245,"item":438},{"id":37,"status":5,"sort":10,"url":439,"url_text":440,"show_favorite_icon":160},"\u002Fdocs\u002Fgeneral\u002Ftranslating-strings","Translation interface",{"collection":174,"item":442},{"id":443,"status":5,"sort":10,"name":444,"item":445},55,"Machine translations",[446],{"collection":360,"item":447},{"id":37,"status":5,"slug":448},"machine-translation",{"collection":174,"item":450},{"id":451,"status":5,"sort":10,"name":452,"item":453},60,"Localazy AI translation",[454],{"collection":360,"item":455},{"id":271,"status":5,"slug":456},"localazy-ai",{"collection":174,"item":458},{"id":459,"status":5,"sort":10,"name":460,"item":461},61,"Translation Memory",[462],{"collection":360,"item":463},{"id":464,"status":5,"slug":465},35,"translation-memory",{"collection":174,"item":467},{"id":468,"status":5,"sort":10,"name":469,"item":470},63,"Code & placeholders",[471],{"collection":360,"item":472},{"id":223,"status":5,"slug":473},"code-and-placeholders",{"navigation_items_group_id":475},{"id":71,"sort":53,"status":5,"name":476,"render_show_all_url":160,"show_all_url_position":161,"show_favorite_icon":160,"show_all_url":10,"represent_as_tile":160,"items":477},"Management",[478,482,490,498,507,515,519],{"collection":245,"item":479},{"id":53,"status":5,"sort":10,"url":480,"url_text":481,"show_favorite_icon":160},"\u002Fdocs\u002Fgeneral\u002Fdefining-user-roles","User roles",{"collection":174,"item":483},{"id":484,"status":5,"sort":10,"name":485,"item":486},51,"Duplicity Linking",[487],{"collection":360,"item":488},{"id":103,"status":5,"slug":489},"duplicity-linking",{"collection":174,"item":491},{"id":492,"status":5,"sort":10,"name":493,"item":494},52,"Language Permissions",[495],{"collection":360,"item":496},{"id":24,"status":5,"slug":497},"language-permissions",{"collection":174,"item":499},{"id":500,"status":501,"sort":10,"name":502,"item":503},53,"draft","Automations",[504],{"collection":360,"item":505},{"id":107,"status":5,"slug":506},"automations",{"collection":174,"item":508},{"id":509,"status":5,"sort":10,"name":510,"item":511},58,"Branching",[512],{"collection":360,"item":513},{"id":230,"status":5,"slug":514},"branching",{"collection":245,"item":516},{"id":24,"status":501,"sort":10,"url":517,"url_text":518,"show_favorite_icon":160},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fsso-configuration","SSO",{"collection":245,"item":520},{"id":331,"status":501,"sort":10,"url":521,"url_text":522,"show_favorite_icon":160},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Flanguage-statistics","Reporting",{"navigation_items_group_id":524},{"id":83,"sort":57,"status":5,"name":525,"render_show_all_url":160,"show_all_url_position":161,"show_favorite_icon":160,"show_all_url":10,"represent_as_tile":160,"items":526},"Development",[527,533,541,548,555,563,572],{"collection":174,"item":528},{"id":271,"status":5,"sort":10,"name":62,"item":529},[530],{"collection":360,"item":531},{"id":15,"status":5,"slug":532},"translation-api",{"collection":174,"item":534},{"id":535,"status":5,"sort":10,"name":536,"item":537},33,"Localazy CLI",[538],{"collection":360,"item":539},{"id":45,"status":5,"slug":540},"cli",{"collection":174,"item":542},{"id":407,"status":5,"sort":10,"name":543,"item":544},"Language CDN",[545],{"collection":360,"item":546},{"id":33,"status":5,"slug":547},"language-cdn",{"collection":174,"item":549},{"id":266,"status":5,"sort":10,"name":550,"item":551},"Releases",[552],{"collection":360,"item":553},{"id":41,"status":5,"slug":554},"releases",{"collection":174,"item":556},{"id":557,"status":501,"sort":10,"name":558,"item":559},57,"Format Conversions",[560],{"collection":360,"item":561},{"id":20,"status":5,"slug":562},"format-conversions",{"collection":174,"item":564},{"id":565,"status":5,"sort":10,"name":566,"item":567},59,"Webhooks",[568],{"collection":360,"item":569},{"id":570,"status":5,"slug":571},31,"webhooks",{"collection":174,"item":573},{"id":574,"status":5,"sort":10,"name":575,"item":576},62,"Export Aliases",[577],{"collection":360,"item":578},{"id":535,"status":5,"slug":579},"export-aliases",{"id":33,"name":75,"url":10,"url_text":10,"status":5,"groups":581},[582,698],{"navigation_items_group_id":583},{"id":45,"sort":61,"status":5,"name":584,"render_show_all_url":160,"show_all_url_position":161,"show_favorite_icon":160,"show_all_url":10,"represent_as_tile":160,"items":585},"Most popular",[586],{"collection":174,"item":587},{"id":19,"status":5,"sort":10,"name":75,"item":588},[589,597,604,611,618,624,631,638,645,652,659,668,675,682,690],{"collection":590,"item":591},"platforms",{"id":41,"status":5,"sort":4,"slug":592,"name":593,"icon":594},"android","Android",{"id":595,"title":596},"ff965add-53b0-44ad-b27c-ea4ef641d384","Ic Outline Android",{"collection":590,"item":598},{"id":45,"status":5,"sort":20,"slug":599,"name":600,"icon":601},"ios","iOS",{"id":602,"title":603},"886285d7-816a-4430-b5a5-edfe307b238e","Ios",{"collection":590,"item":605},{"id":535,"status":5,"sort":25,"slug":606,"name":607,"icon":608},"react","React",{"id":609,"title":610},"26757a90-88a3-4a94-b587-9f38614ed3bd","Logos React",{"collection":590,"item":612},{"id":103,"status":5,"sort":33,"slug":613,"name":614,"icon":615},"vuejs","Vue.js",{"id":616,"title":617},"6180b41f-3249-47d3-adcd-50fe1cf11bf1","Vue",{"collection":590,"item":619},{"id":91,"status":5,"sort":37,"slug":620,"name":621,"icon":622},"angular","Angular",{"id":623,"title":621},"2a31a97a-48c5-4531-aa36-41c9dd0bdbef",{"collection":590,"item":625},{"id":4,"status":5,"sort":41,"slug":626,"name":627,"icon":628},"flutter","Flutter",{"id":629,"title":630},"b9f13a11-9328-4a03-86cf-b20de0685606","Logos Flutter",{"collection":590,"item":632},{"id":25,"status":5,"sort":15,"slug":633,"name":634,"icon":635},"typescript","TypeScript",{"id":636,"title":637},"8d1319b5-8a96-4199-8407-00add3418b1f","Logos Typescript Icon",{"collection":590,"item":639},{"id":570,"status":5,"sort":19,"slug":640,"name":641,"icon":642},"javascript","JavaScript",{"id":643,"title":644},"4218d0c9-7e6b-494d-9663-37ceaf93ee8c","Logos Javascript",{"collection":590,"item":646},{"id":19,"status":5,"sort":107,"slug":647,"name":648,"icon":649},"json","JSON",{"id":650,"title":651},"99ac3b7c-dba5-4693-a4f4-1f27a6d7782d","Logos Json",{"collection":590,"item":653},{"id":24,"status":5,"sort":24,"slug":654,"name":655,"icon":656},"xliff","XLIFF",{"id":657,"title":658},"ca424cc8-e8a7-4aef-8dca-ef4a4d1334fc","Format",{"collection":590,"item":660},{"id":661,"status":5,"sort":662,"slug":663,"name":664,"icon":665},72,54,"strapi","Strapi",{"id":666,"title":667},"cde7f1d0-f2e0-4243-929e-a3f8f9146e69","Strapi Logo Purple",{"collection":590,"item":669},{"id":451,"status":5,"sort":443,"slug":670,"name":671,"icon":672},"figma","Figma",{"id":673,"title":674},"813745a4-a77d-4735-93b7-e0dd731b2304","Figma Icon",{"collection":590,"item":676},{"id":484,"status":5,"sort":382,"slug":677,"name":678,"icon":679},"microsoft-excel","Microsoft Excel",{"id":680,"title":681},"7a175955-7b96-4561-939f-a0e1924faa40","Excel",{"collection":590,"item":683},{"id":684,"status":5,"sort":459,"slug":685,"name":686,"icon":687},66,"github-actions","GitHub Actions",{"id":688,"title":689},"da17554f-ac6d-443d-9bac-1f29645ec1c6","Github Icon",{"collection":590,"item":691},{"id":692,"status":5,"sort":693,"slug":694,"name":695,"icon":696},97,999,"webflow","Webflow",{"id":697,"title":695},"ff43a386-52f8-499f-b77c-ab9a30f4a77e",{"navigation_items_group_id":699},{"id":33,"sort":15,"status":5,"name":700,"render_show_all_url":160,"show_all_url_position":161,"show_favorite_icon":160,"show_all_url":10,"represent_as_tile":160,"items":701},"Explore more",[702],{"collection":703,"item":704},"text_link_navigation_item_type",{"id":4,"status":5,"sort":10,"text":705,"url":706,"url_text":707},"Localazy is a technology-agnostic platform supporting 50+ frameworks, file formats & popular tools.","\u002Fintegrations","See all integrations",{"id":4,"name":79,"url":10,"url_text":10,"status":5,"groups":709},[710,734,740],{"navigation_items_group_id":711},{"id":4,"sort":19,"status":5,"name":712,"render_show_all_url":160,"show_all_url_position":161,"show_favorite_icon":160,"show_all_url":10,"represent_as_tile":160,"items":713},"Helpful Links",[714,717,719,723,725,728,730],{"collection":245,"item":715},{"id":71,"status":5,"sort":10,"url":101,"url_text":716,"show_favorite_icon":162},"Localazy Blog",{"collection":245,"item":718},{"id":83,"status":5,"sort":10,"url":85,"url_text":84,"show_favorite_icon":162},{"collection":245,"item":720},{"id":4,"status":5,"sort":10,"url":721,"url_text":722,"show_favorite_icon":160},"https:\u002F\u002Fdiscuss.localazy.com\u002F","Discussion Forum",{"collection":245,"item":724},{"id":19,"status":5,"sort":10,"url":93,"url_text":92,"show_favorite_icon":160},{"collection":245,"item":726},{"id":25,"status":5,"sort":10,"url":35,"url_text":727,"show_favorite_icon":160},"Become a Partner",{"collection":245,"item":729},{"id":87,"status":5,"sort":10,"url":105,"url_text":104,"show_favorite_icon":160},{"collection":245,"item":731},{"id":95,"status":5,"sort":10,"url":732,"url_text":733,"show_favorite_icon":160},"\u002Ftags\u002Frelease-update","Release Updates",{"navigation_items_group_id":735},{"id":20,"sort":83,"status":5,"name":716,"render_show_all_url":162,"show_all_url_position":161,"show_favorite_icon":160,"show_all_url":101,"represent_as_tile":160,"items":736},[737],{"collection":165,"item":738},{"id":25,"status":5,"sort":10,"show_author_img":160,"blog_post_tag":739,"description":10},"[USE LATEST FEATURED]",{"navigation_items_group_id":741},{"id":41,"sort":71,"status":5,"name":84,"render_show_all_url":162,"show_all_url_position":161,"show_favorite_icon":160,"show_all_url":85,"represent_as_tile":160,"items":742},[743,757,769,780,792,802,813,821],{"collection":174,"item":744},{"id":33,"status":5,"sort":10,"name":745,"item":746},"General",[747],{"collection":748,"item":749},"docs_section",{"id":20,"status":5,"sort":4,"slug":750,"name":745,"icon":751,"featured_icon":754},"general",{"id":752,"title":753},"423101f1-308c-42f1-8dfe-53272019e7cb","Global",{"id":755,"title":756},"0f7ca4cb-dc3b-4f62-b476-132ed5c4931f","General Doc",{"collection":174,"item":758},{"id":37,"status":5,"sort":10,"name":759,"item":760},"CLI",[761],{"collection":748,"item":762},{"id":25,"status":5,"sort":20,"slug":540,"name":759,"icon":763,"featured_icon":766},{"id":764,"title":765},"2f7a4573-8265-4d76-8d55-ce0cc79b8983","Cli",{"id":767,"title":768},"3f76ff7b-0e74-4046-bb03-4ca99c3b66d5","Doc Cat Cli",{"collection":174,"item":770},{"id":53,"status":5,"sort":10,"name":771,"item":772},"API",[773],{"collection":748,"item":774},{"id":107,"status":5,"sort":25,"slug":775,"name":771,"icon":776,"featured_icon":777},"api",{"id":764,"title":765},{"id":778,"title":779},"20866781-e69b-4e01-9456-05437487b75c","API Doc",{"collection":174,"item":781},{"id":782,"status":5,"sort":10,"name":783,"item":784},50,"CDN",[785],{"collection":748,"item":786},{"id":252,"status":5,"sort":33,"slug":787,"name":783,"icon":788,"featured_icon":789},"cdn",{"id":752,"title":753},{"id":790,"title":791},"a8ee9cb7-4e02-41f0-b595-eb518c3085b6","Doc Cat Cdn",{"collection":174,"item":793},{"id":41,"status":5,"sort":10,"name":593,"item":794},[795],{"collection":748,"item":796},{"id":4,"status":5,"sort":37,"slug":592,"name":593,"icon":797,"featured_icon":799},{"id":798,"title":593},"fb8329ae-0c0c-4fbc-bcdc-83f2eeda1039",{"id":800,"title":801},"f7c0dec8-5b42-4943-ab3a-e3665723ad6f","Doc Cat Android",{"collection":174,"item":803},{"id":45,"status":5,"sort":10,"name":600,"item":804},[805],{"collection":748,"item":806},{"id":33,"status":5,"sort":41,"slug":599,"name":600,"icon":807,"featured_icon":810},{"id":808,"title":809},"289e136c-55df-4d51-847b-1782a2308ee4","Ios Blue",{"id":811,"title":812},"2968d3f0-14b5-4427-82e7-f1ea2de17846","Doc Cat Ios",{"collection":174,"item":814},{"id":57,"status":5,"sort":10,"name":671,"item":815},[816],{"collection":748,"item":817},{"id":24,"status":5,"sort":45,"slug":670,"name":671,"icon":818,"featured_icon":819},{"id":764,"title":765},{"id":820,"title":671},"f5e66b5b-a439-47f6-af4a-6ad261de2e87",{"collection":174,"item":822},{"id":61,"status":5,"sort":10,"name":664,"item":823},[824],{"collection":748,"item":825},{"id":280,"status":5,"sort":53,"slug":663,"name":664,"icon":826,"featured_icon":828},{"id":827,"title":664},"3b4b03c7-e131-49e6-a014-c8c2c8a2751e",{"id":829,"title":830},"1dd05c76-e517-4aea-a3d8-49cfddb40056","Strapi Doc",{"id":25,"name":108,"url":109,"url_text":108,"status":5,"groups":832},[],{"id":41,"name":16,"url":834,"url_text":16,"status":5,"groups":835},"\u002Fbook-demo",[],{"status":5,"header_badges":837,"footer_badges":855,"footer_secured_badges":861,"slider_badges":873},[838,845,850],{"id":4,"status":5,"sort":10,"link":839,"title":840,"badgeType":841,"badgeName":842,"metadata":10,"image":843},"https:\u002F\u002Fwww.g2.com\u002Fproducts\u002Flocalazy\u002Freviews","Best meets requirements","Other","G2-winter-24-best-meets-requirments",{"id":844},"8d5dd6fd-6995-4c92-8219-a6ed5ba6acdc",{"id":20,"status":5,"sort":10,"link":839,"title":846,"badgeType":841,"badgeName":847,"metadata":10,"image":848},"Best support","G2-winter-24-best-support",{"id":849},"e59dd465-84d9-45c7-987d-dd4048fd6992",{"id":25,"status":5,"sort":10,"link":839,"title":851,"badgeType":841,"badgeName":852,"metadata":10,"image":853},"Easiest admin","G2-winter-24-easiest-admin",{"id":854},"5f12c4c8-bec0-47cf-87b4-a4502e9f1bd2",[856],{"id":19,"status":5,"sort":10,"link":839,"title":857,"badgeType":841,"badgeName":858,"metadata":10,"image":859},"Users love us","Users love us 25",{"id":860},"232416a5-86ba-4be6-85a5-b88802003d53",[862,868],{"id":15,"status":5,"sort":10,"link":863,"title":864,"badgeType":841,"badgeName":865,"metadata":10,"image":866},"https:\u002F\u002Fsprinto.com\u002Fget-iso-27001\u002F","Sprinto ISO 27001","Sprinto ISO 27001 certificate",{"id":867},"c1c6c06c-6caf-4b78-8a7e-9606c395eb61",{"id":71,"status":5,"sort":10,"link":869,"title":870,"badgeType":841,"badgeName":870,"metadata":10,"image":871},"https:\u002F\u002Fwww.aicpa.org\u002Fsoc4so","SOC certificate",{"id":872},"4f4bc0a6-09a0-41df-8295-8f990d96d941",[874,880,884,888,892,896,901],{"id":37,"status":5,"sort":10,"link":839,"title":875,"badgeType":841,"badgeName":876,"metadata":877,"image":878},"Most likely to recommend","a","",{"id":879},"da055731-3f11-4fc7-96f2-c11c0b84c831",{"id":41,"status":5,"sort":10,"link":839,"title":881,"badgeType":841,"badgeName":10,"metadata":10,"image":882},"EMEA High Performer",{"id":883},"586fb488-81f2-41db-a4e8-ef309e50c0e6",{"id":45,"status":5,"sort":10,"link":839,"title":885,"badgeType":841,"badgeName":10,"metadata":10,"image":886},"Ease of Doing Business With",{"id":887},"bfa26865-430e-463d-9886-cb56a8a8ecf6",{"id":53,"status":5,"sort":10,"link":839,"title":889,"badgeType":841,"badgeName":10,"metadata":10,"image":890},"High Performer",{"id":891},"2cc1ba0f-c23a-4c97-ad4a-a655c97466fe",{"id":57,"status":5,"sort":10,"link":839,"title":893,"badgeType":841,"badgeName":10,"metadata":10,"image":894},"Fastest Implementation",{"id":895},"6f297758-1c95-45f4-a6e9-528319897132",{"id":61,"status":5,"sort":10,"link":897,"title":898,"badgeType":841,"badgeName":10,"metadata":10,"image":899},"https:\u002F\u002Fwww.intercert.com\u002Fservices\u002Fgovernance-risk-compliance\u002Fiso-iec-27001","Intercert ISO 27001",{"id":900},"0521a5f1-e1f2-4da6-a2bc-dc92773f2a7b",{"id":15,"status":5,"sort":10,"link":863,"title":864,"badgeType":841,"badgeName":865,"metadata":10,"image":902},{"id":867},[904,1044,1122,1228,1314,1393,1482,1573,1660,1759],{"id":535,"status":5,"created_on":905,"modified_on":906,"name":607,"slug":606,"description":907,"docs_link":908,"priority":10,"has_sdk":160,"sort":25,"highlighted":160,"in_menu":162,"changefreq":10,"support_type":909,"show_in_spa":162,"is_file_format":160,"meta_title":10,"meta_description":10,"featured_on_web":162,"marketing_subtitle":910,"tile_subtitle":911,"tile_description":912,"is_enterprise":160,"is_popular":160,"primary_use_case":10,"hierarchy_handling":10,"best_for":10,"file_extension":10,"format_code_example":10,"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":535},"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":647},[],{"id":609},{"id":917},"a97492ec-ee8d-429c-bf66-d0fe59b6e5c9",{"id":37,"status":5,"sort":20,"created_on":919,"label":920,"hidden":160,"icon":921,"translations":923},"2022-03-17T12:23:44.000Z","Web apps",{"id":922},"c9e70e4f-8136-432a-8d82-53c3501a9eb4",[924,926,929,932],{"id":37,"languages_code":925,"label":920},"xxa",{"id":365,"languages_code":927,"label":928},"es","Aplicaciones web",{"id":782,"languages_code":930,"label":931},"cs","Webové aplikace",{"id":565,"languages_code":933,"label":920},"en",[935,942],{"id":37,"status":5,"sort":20,"label":920,"hidden":160,"created_on":919,"icon":936,"translations":937},{"id":922},[938,939,940,941],{"id":37,"languages_code":925,"label":920},{"id":365,"languages_code":927,"label":928},{"id":782,"languages_code":930,"label":931},{"id":565,"languages_code":933,"label":920},{"id":53,"status":5,"sort":57,"label":943,"hidden":160,"created_on":944,"icon":10,"translations":945},"Framework","2022-03-17T12:23:45.000Z",[946,947,949,950],{"id":53,"languages_code":925,"label":943},{"id":500,"languages_code":927,"label":948},"Marco",{"id":451,"languages_code":930,"label":943},{"id":951,"languages_code":933,"label":943},67,[953,965,990,1011],{"id":33,"status":5,"sort":41,"label":771,"alternative_label":10,"slug":775,"description":954,"documentation_link":955,"loc_icon":775,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":956},"Translate strings directly or upload them into your Localazy project.","\u002Fdocs\u002Fapi\u002Fintroduction",[957,958,961,963],{"id":33,"languages_code":925,"label":771,"description":954,"slug":775},{"id":959,"languages_code":927,"label":771,"description":960,"slug":775},40,"Utilice la API para exportar traducciones e importar contenido de\u002Fa Localazy mediante programación.",{"id":782,"languages_code":933,"label":771,"description":962,"slug":775},"Choose between translating strings directly or uploading them into Localazy.",{"id":565,"languages_code":930,"label":771,"description":964,"slug":775},"Pomocí rozhraní API můžete programovaně exportovat překlady a importovat obsah z\u002Fdo Localazy.",{"id":25,"status":5,"sort":37,"label":966,"alternative_label":10,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"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":25,"languages_code":925,"label":966,"description":968,"slug":967},{"id":291,"languages_code":927,"label":974,"description":975,"slug":10},"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":484,"languages_code":933,"label":966,"description":968,"slug":967},{"id":451,"languages_code":930,"label":978,"description":979,"slug":10},"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":402,"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":411,"languages_code":933,"label":966,"description":968,"slug":967},{"id":684,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":10},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":20,"status":5,"sort":33,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"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":20,"languages_code":925,"label":991,"description":994,"slug":993},{"id":218,"languages_code":927,"label":1000,"description":1001,"slug":10},"Carga directa de archivos","Cargue sus textos y traducciones existentes en cualquier formato directamente para empezar rápidamente.",{"id":382,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":10},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":10},85,"Direkter Datei-Upload","Laden Sie Ihre Texte und vorhandenen Übersetzungen in einem beliebigen Format direkt hoch, um schnell loszulegen.",{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"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":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},"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":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},"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":10},87,"Befehlszeilenschnittstelle","Die beste Option für Entwickler, die die Lokalisierung zu einem automatisierten Teil ihres Arbeitsablaufs machen möchten.",[],{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1030},[1031,1032,1033,1034,1035],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[1037],{"id":1038,"status":5,"created_on":1039,"sort":10,"slug":1040,"label":1041,"on_faq_index":10},76,"2025-02-26T12:44:29.000Z","front-end-common","Front-end Common",[1043],{"languages_code":925,"name":607,"slug":606,"description":907,"support_type":909,"meta_title":10,"meta_description":10,"marketing_subtitle":910,"tile_subtitle":911,"tile_description":912,"id":535,"platforms_id":535,"docs_link":908},{"id":103,"status":5,"created_on":905,"modified_on":1045,"name":614,"slug":613,"description":1046,"docs_link":908,"priority":10,"has_sdk":160,"sort":33,"highlighted":160,"in_menu":162,"changefreq":10,"support_type":909,"show_in_spa":162,"is_file_format":160,"meta_title":10,"meta_description":10,"featured_on_web":162,"marketing_subtitle":910,"tile_subtitle":1047,"tile_description":1048,"is_enterprise":160,"is_popular":160,"primary_use_case":10,"hierarchy_handling":10,"best_for":10,"file_extension":10,"format_code_example":10,"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":103},"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":647},[],{"id":616},{"id":1053},"8171b836-d6b8-4354-8db3-34ccd384970d",{"id":37,"status":5,"sort":20,"created_on":919,"label":920,"hidden":160,"icon":1055,"translations":1056},{"id":922},[1057,1058,1059,1060],{"id":37,"languages_code":925,"label":920},{"id":365,"languages_code":927,"label":928},{"id":782,"languages_code":930,"label":931},{"id":565,"languages_code":933,"label":920},[1062,1069],{"id":37,"status":5,"sort":20,"label":920,"hidden":160,"created_on":919,"icon":1063,"translations":1064},{"id":922},[1065,1066,1067,1068],{"id":37,"languages_code":925,"label":920},{"id":365,"languages_code":927,"label":928},{"id":782,"languages_code":930,"label":931},{"id":565,"languages_code":933,"label":920},{"id":53,"status":5,"sort":57,"label":943,"hidden":160,"created_on":944,"icon":10,"translations":1070},[1071,1072,1073,1074],{"id":53,"languages_code":925,"label":943},{"id":500,"languages_code":927,"label":948},{"id":451,"languages_code":930,"label":943},{"id":951,"languages_code":933,"label":943},[1076,1082,1092,1099],{"id":33,"status":5,"sort":41,"label":771,"alternative_label":10,"slug":775,"description":954,"documentation_link":955,"loc_icon":775,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1077},[1078,1079,1080,1081],{"id":33,"languages_code":925,"label":771,"description":954,"slug":775},{"id":959,"languages_code":927,"label":771,"description":960,"slug":775},{"id":782,"languages_code":933,"label":771,"description":962,"slug":775},{"id":565,"languages_code":930,"label":771,"description":964,"slug":775},{"id":25,"status":5,"sort":37,"label":966,"alternative_label":10,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1083},[1084,1085,1086,1087,1088,1089,1090,1091],{"id":25,"languages_code":925,"label":966,"description":968,"slug":967},{"id":291,"languages_code":927,"label":974,"description":975,"slug":10},{"id":484,"languages_code":933,"label":966,"description":968,"slug":967},{"id":451,"languages_code":930,"label":978,"description":979,"slug":10},{"id":402,"languages_code":927,"label":981,"description":982,"slug":967},{"id":411,"languages_code":933,"label":966,"description":968,"slug":967},{"id":684,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":10},{"id":20,"status":5,"sort":33,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1093},[1094,1095,1096,1097,1098],{"id":20,"languages_code":925,"label":991,"description":994,"slug":993},{"id":218,"languages_code":927,"label":1000,"description":1001,"slug":10},{"id":382,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":10},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":10},{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1100},[1101,1102,1103,1104,1105],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[],{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1108},[1109,1110,1111,1112,1113],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[1115,1119],{"id":1004,"status":5,"created_on":1116,"sort":10,"slug":1117,"label":1118,"on_faq_index":10},"2023-03-01T11:21:41.000Z","vue-localization","Vue.js Localization",{"id":1038,"status":5,"created_on":1039,"sort":10,"slug":1040,"label":1041,"on_faq_index":10},[1121],{"languages_code":925,"name":614,"slug":613,"description":1046,"support_type":909,"meta_title":10,"meta_description":10,"marketing_subtitle":910,"tile_subtitle":1047,"tile_description":1048,"id":103,"platforms_id":103,"docs_link":908},{"id":4,"status":5,"created_on":905,"modified_on":1123,"name":627,"slug":626,"description":1124,"docs_link":1125,"priority":10,"has_sdk":160,"sort":41,"highlighted":160,"in_menu":162,"changefreq":10,"support_type":1126,"show_in_spa":162,"is_file_format":160,"meta_title":10,"meta_description":10,"featured_on_web":160,"marketing_subtitle":910,"tile_subtitle":1126,"tile_description":1127,"is_enterprise":160,"is_popular":160,"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":4},"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":629},{"id":1138},"c2674666-4371-4aa4-9a65-438c7363fafe",{"id":41,"status":5,"sort":53,"created_on":944,"label":1140,"hidden":160,"icon":1141,"translations":1143},"Mobile apps",{"id":1142},"c9c7e1f5-8b59-4016-ae0c-6fba9469cd55",[1144,1145,1147,1149],{"id":41,"languages_code":925,"label":1140},{"id":374,"languages_code":927,"label":1146},"Aplicaciones móviles",{"id":443,"languages_code":930,"label":1148},"Mobilní aplikace",{"id":411,"languages_code":933,"label":1140},[1151,1162,1169,1176],{"id":45,"status":5,"sort":103,"label":1152,"hidden":160,"created_on":944,"icon":1153,"translations":1155},"Desktop & Games",{"id":1154},"65b04533-5b4c-430c-b8a4-ecce84754200",[1156,1157,1159,1161],{"id":45,"languages_code":925,"label":1152},{"id":382,"languages_code":927,"label":1158},"Escritorio y Juegos",{"id":1004,"languages_code":930,"label":1160},"Stolní počítače & Hry",{"id":684,"languages_code":933,"label":1152},{"id":37,"status":5,"sort":20,"label":920,"hidden":160,"created_on":919,"icon":1163,"translations":1164},{"id":922},[1165,1166,1167,1168],{"id":37,"languages_code":925,"label":920},{"id":365,"languages_code":927,"label":928},{"id":782,"languages_code":930,"label":931},{"id":565,"languages_code":933,"label":920},{"id":41,"status":5,"sort":53,"label":1140,"hidden":160,"created_on":944,"icon":1170,"translations":1171},{"id":1142},[1172,1173,1174,1175],{"id":41,"languages_code":925,"label":1140},{"id":374,"languages_code":927,"label":1146},{"id":443,"languages_code":930,"label":1148},{"id":411,"languages_code":933,"label":1140},{"id":223,"status":5,"sort":407,"label":1177,"hidden":162,"created_on":944,"icon":10,"translations":1178},"ARB",[1179,1180,1182,1184],{"id":223,"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":33,"status":5,"sort":41,"label":771,"alternative_label":10,"slug":775,"description":954,"documentation_link":955,"loc_icon":775,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1188},[1189,1190,1191,1192],{"id":33,"languages_code":925,"label":771,"description":954,"slug":775},{"id":959,"languages_code":927,"label":771,"description":960,"slug":775},{"id":782,"languages_code":933,"label":771,"description":962,"slug":775},{"id":565,"languages_code":930,"label":771,"description":964,"slug":775},{"id":25,"status":5,"sort":37,"label":966,"alternative_label":10,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1194},[1195,1196,1197,1198,1199,1200,1201,1202],{"id":25,"languages_code":925,"label":966,"description":968,"slug":967},{"id":291,"languages_code":927,"label":974,"description":975,"slug":10},{"id":484,"languages_code":933,"label":966,"description":968,"slug":967},{"id":451,"languages_code":930,"label":978,"description":979,"slug":10},{"id":402,"languages_code":927,"label":981,"description":982,"slug":967},{"id":411,"languages_code":933,"label":966,"description":968,"slug":967},{"id":684,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":10},{"id":20,"status":5,"sort":33,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1204},[1205,1206,1207,1208,1209],{"id":20,"languages_code":925,"label":991,"description":994,"slug":993},{"id":218,"languages_code":927,"label":1000,"description":1001,"slug":10},{"id":382,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":10},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":10},{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1211},[1212,1213,1214,1215,1216],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[],{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1219},[1220,1221,1222,1223,1224],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[],[1227],{"languages_code":925,"name":627,"slug":626,"description":1124,"support_type":1126,"meta_title":10,"meta_description":10,"marketing_subtitle":910,"tile_subtitle":1126,"tile_description":1127,"id":4,"platforms_id":4,"docs_link":1125},{"id":570,"status":5,"created_on":1229,"modified_on":1230,"name":641,"slug":640,"description":1231,"docs_link":1232,"priority":10,"has_sdk":160,"sort":19,"highlighted":160,"in_menu":162,"changefreq":10,"support_type":1233,"show_in_spa":162,"is_file_format":160,"meta_title":10,"meta_description":10,"featured_on_web":162,"marketing_subtitle":910,"tile_subtitle":1233,"tile_description":1234,"is_enterprise":160,"is_popular":160,"primary_use_case":10,"hierarchy_handling":10,"best_for":10,"file_extension":10,"format_code_example":10,"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":570},"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":643},{"id":1240},"2c6699eb-1d80-4772-8268-5597dbcead8c",{"id":61,"status":5,"sort":61,"created_on":944,"label":1242,"hidden":160,"icon":1243,"translations":1245},"Programming Languages",{"id":1244},"8c5836bb-1fbe-49c5-9330-8f931838c457",[1246,1247,1249,1252],{"id":61,"languages_code":925,"label":1242},{"id":468,"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":37,"status":5,"sort":20,"label":920,"hidden":160,"created_on":919,"icon":1256,"translations":1257},{"id":922},[1258,1259,1260,1261],{"id":37,"languages_code":925,"label":920},{"id":365,"languages_code":927,"label":928},{"id":782,"languages_code":930,"label":931},{"id":565,"languages_code":933,"label":920},{"id":61,"status":5,"sort":61,"label":1242,"hidden":160,"created_on":944,"icon":1263,"translations":1264},{"id":1244},[1265,1266,1267,1268],{"id":61,"languages_code":925,"label":1242},{"id":468,"languages_code":927,"label":1248},{"id":1250,"languages_code":930,"label":1251},{"id":1253,"languages_code":933,"label":1242},[1270,1276,1286,1293],{"id":33,"status":5,"sort":41,"label":771,"alternative_label":10,"slug":775,"description":954,"documentation_link":955,"loc_icon":775,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1271},[1272,1273,1274,1275],{"id":33,"languages_code":925,"label":771,"description":954,"slug":775},{"id":959,"languages_code":927,"label":771,"description":960,"slug":775},{"id":782,"languages_code":933,"label":771,"description":962,"slug":775},{"id":565,"languages_code":930,"label":771,"description":964,"slug":775},{"id":25,"status":5,"sort":37,"label":966,"alternative_label":10,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1277},[1278,1279,1280,1281,1282,1283,1284,1285],{"id":25,"languages_code":925,"label":966,"description":968,"slug":967},{"id":291,"languages_code":927,"label":974,"description":975,"slug":10},{"id":484,"languages_code":933,"label":966,"description":968,"slug":967},{"id":451,"languages_code":930,"label":978,"description":979,"slug":10},{"id":402,"languages_code":927,"label":981,"description":982,"slug":967},{"id":411,"languages_code":933,"label":966,"description":968,"slug":967},{"id":684,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":10},{"id":20,"status":5,"sort":33,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1287},[1288,1289,1290,1291,1292],{"id":20,"languages_code":925,"label":991,"description":994,"slug":993},{"id":218,"languages_code":927,"label":1000,"description":1001,"slug":10},{"id":382,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":10},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":10},{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1294},[1295,1296,1297,1298,1299],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[],{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1302},[1303,1304,1305,1306,1307],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[1309],{"id":464,"status":5,"created_on":1310,"sort":10,"slug":1311,"label":641,"on_faq_index":160},"2022-06-10T09:49:33.000Z","javascript-i18n-localization",[1313],{"languages_code":925,"name":641,"slug":640,"description":1231,"support_type":1233,"meta_title":10,"meta_description":10,"marketing_subtitle":910,"tile_subtitle":1233,"tile_description":1234,"id":570,"platforms_id":570,"docs_link":1232},{"id":19,"status":5,"created_on":1229,"modified_on":1315,"name":648,"slug":647,"description":1316,"docs_link":908,"priority":10,"has_sdk":160,"sort":107,"highlighted":160,"in_menu":162,"changefreq":10,"support_type":1317,"show_in_spa":162,"is_file_format":162,"meta_title":10,"meta_description":10,"featured_on_web":162,"marketing_subtitle":910,"tile_subtitle":1318,"tile_description":1319,"is_enterprise":160,"is_popular":162,"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":19},"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":647},[],{"id":650},{"id":1329},"8d614c20-667e-4bee-a64d-7d7ce9c0ee0a",{"id":33,"status":5,"sort":37,"created_on":944,"label":1331,"hidden":160,"icon":1332,"translations":1334},"File formats",{"id":1333},"ab7c8f89-dcce-45ab-9e21-8605aef289c3",[1335,1336,1338,1340],{"id":33,"languages_code":925,"label":1331},{"id":356,"languages_code":927,"label":1337},"Formatos de archivo",{"id":484,"languages_code":930,"label":1339},"Formáty souborů",{"id":574,"languages_code":933,"label":1331},[1342],{"id":33,"status":5,"sort":37,"label":1331,"hidden":160,"created_on":944,"icon":1343,"translations":1344},{"id":1333},[1345,1346,1347,1348],{"id":33,"languages_code":925,"label":1331},{"id":356,"languages_code":927,"label":1337},{"id":484,"languages_code":930,"label":1339},{"id":574,"languages_code":933,"label":1331},[1350,1356,1366,1373],{"id":33,"status":5,"sort":41,"label":771,"alternative_label":10,"slug":775,"description":954,"documentation_link":955,"loc_icon":775,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1351},[1352,1353,1354,1355],{"id":33,"languages_code":925,"label":771,"description":954,"slug":775},{"id":959,"languages_code":927,"label":771,"description":960,"slug":775},{"id":782,"languages_code":933,"label":771,"description":962,"slug":775},{"id":565,"languages_code":930,"label":771,"description":964,"slug":775},{"id":25,"status":5,"sort":37,"label":966,"alternative_label":10,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1357},[1358,1359,1360,1361,1362,1363,1364,1365],{"id":25,"languages_code":925,"label":966,"description":968,"slug":967},{"id":291,"languages_code":927,"label":974,"description":975,"slug":10},{"id":484,"languages_code":933,"label":966,"description":968,"slug":967},{"id":451,"languages_code":930,"label":978,"description":979,"slug":10},{"id":402,"languages_code":927,"label":981,"description":982,"slug":967},{"id":411,"languages_code":933,"label":966,"description":968,"slug":967},{"id":684,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":10},{"id":20,"status":5,"sort":33,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1367},[1368,1369,1370,1371,1372],{"id":20,"languages_code":925,"label":991,"description":994,"slug":993},{"id":218,"languages_code":927,"label":1000,"description":1001,"slug":10},{"id":382,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":10},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":10},{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1374},[1375,1376,1377,1378,1379],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[],{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1382},[1383,1384,1385,1386,1387],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[1389],{"id":423,"status":5,"created_on":1390,"sort":10,"slug":647,"label":648,"on_faq_index":160},"2022-06-10T10:49:07.000Z",[1392],{"languages_code":925,"name":648,"slug":647,"description":1316,"support_type":1317,"meta_title":10,"meta_description":10,"marketing_subtitle":910,"tile_subtitle":1318,"tile_description":1319,"id":19,"platforms_id":19,"docs_link":908},{"id":24,"status":5,"created_on":1229,"modified_on":1394,"name":655,"slug":654,"description":1395,"docs_link":1396,"priority":10,"has_sdk":160,"sort":24,"highlighted":160,"in_menu":162,"changefreq":10,"support_type":1397,"show_in_spa":160,"is_file_format":162,"meta_title":10,"meta_description":10,"featured_on_web":162,"marketing_subtitle":910,"tile_subtitle":1398,"tile_description":1399,"is_enterprise":160,"is_popular":162,"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":24},"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":657},{"id":1410},"889970a6-cce8-4055-b96a-9c3f292aa67f",{"id":33,"status":5,"sort":37,"created_on":944,"label":1331,"hidden":160,"icon":1412,"translations":1413},{"id":1333},[1414,1415,1416,1417],{"id":33,"languages_code":925,"label":1331},{"id":356,"languages_code":927,"label":1337},{"id":484,"languages_code":930,"label":1339},{"id":574,"languages_code":933,"label":1331},[1419,1426,1433],{"id":33,"status":5,"sort":37,"label":1331,"hidden":160,"created_on":944,"icon":1420,"translations":1421},{"id":1333},[1422,1423,1424,1425],{"id":33,"languages_code":925,"label":1331},{"id":356,"languages_code":927,"label":1337},{"id":484,"languages_code":930,"label":1339},{"id":574,"languages_code":933,"label":1331},{"id":33,"status":5,"sort":37,"label":1331,"hidden":160,"created_on":944,"icon":1427,"translations":1428},{"id":1333},[1429,1430,1431,1432],{"id":33,"languages_code":925,"label":1331},{"id":356,"languages_code":927,"label":1337},{"id":484,"languages_code":930,"label":1339},{"id":574,"languages_code":933,"label":1331},{"id":33,"status":5,"sort":37,"label":1331,"hidden":160,"created_on":944,"icon":1434,"translations":1435},{"id":1333},[1436,1437,1438,1439],{"id":33,"languages_code":925,"label":1331},{"id":356,"languages_code":927,"label":1337},{"id":484,"languages_code":930,"label":1339},{"id":574,"languages_code":933,"label":1331},[1441,1447,1457,1464],{"id":33,"status":5,"sort":41,"label":771,"alternative_label":10,"slug":775,"description":954,"documentation_link":955,"loc_icon":775,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1442},[1443,1444,1445,1446],{"id":33,"languages_code":925,"label":771,"description":954,"slug":775},{"id":959,"languages_code":927,"label":771,"description":960,"slug":775},{"id":782,"languages_code":933,"label":771,"description":962,"slug":775},{"id":565,"languages_code":930,"label":771,"description":964,"slug":775},{"id":25,"status":5,"sort":37,"label":966,"alternative_label":10,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1448},[1449,1450,1451,1452,1453,1454,1455,1456],{"id":25,"languages_code":925,"label":966,"description":968,"slug":967},{"id":291,"languages_code":927,"label":974,"description":975,"slug":10},{"id":484,"languages_code":933,"label":966,"description":968,"slug":967},{"id":451,"languages_code":930,"label":978,"description":979,"slug":10},{"id":402,"languages_code":927,"label":981,"description":982,"slug":967},{"id":411,"languages_code":933,"label":966,"description":968,"slug":967},{"id":684,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":10},{"id":20,"status":5,"sort":33,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1458},[1459,1460,1461,1462,1463],{"id":20,"languages_code":925,"label":991,"description":994,"slug":993},{"id":218,"languages_code":927,"label":1000,"description":1001,"slug":10},{"id":382,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":10},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":10},{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1465},[1466,1467,1468,1469,1470],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[],{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1473},[1474,1475,1476,1477,1478],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[],[1481],{"languages_code":925,"name":655,"slug":654,"description":1395,"support_type":1397,"meta_title":10,"meta_description":10,"marketing_subtitle":910,"tile_subtitle":1398,"tile_description":1399,"id":24,"platforms_id":24,"docs_link":1396},{"id":107,"status":5,"created_on":1483,"modified_on":1483,"name":1484,"slug":1485,"description":1486,"docs_link":1487,"priority":10,"has_sdk":160,"sort":247,"highlighted":160,"in_menu":162,"changefreq":10,"support_type":1397,"show_in_spa":162,"is_file_format":162,"meta_title":10,"meta_description":10,"featured_on_web":160,"marketing_subtitle":910,"tile_subtitle":1488,"tile_description":1489,"is_enterprise":160,"is_popular":162,"primary_use_case":10,"hierarchy_handling":10,"best_for":10,"file_extension":10,"format_code_example":10,"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":107},"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":33,"status":5,"sort":37,"created_on":944,"label":1331,"hidden":160,"icon":1497,"translations":1498},{"id":1333},[1499,1500,1501,1502],{"id":33,"languages_code":925,"label":1331},{"id":356,"languages_code":927,"label":1337},{"id":484,"languages_code":930,"label":1339},{"id":574,"languages_code":933,"label":1331},[1504,1511,1521],{"id":33,"status":5,"sort":37,"label":1331,"hidden":160,"created_on":944,"icon":1505,"translations":1506},{"id":1333},[1507,1508,1509,1510],{"id":33,"languages_code":925,"label":1331},{"id":356,"languages_code":927,"label":1337},{"id":484,"languages_code":930,"label":1339},{"id":574,"languages_code":933,"label":1331},{"id":394,"status":5,"sort":394,"label":1512,"hidden":162,"created_on":944,"icon":10,"translations":1513},"C++",[1514,1515,1517,1519],{"id":394,"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":24,"status":5,"sort":247,"label":1522,"hidden":162,"created_on":944,"icon":10,"translations":1523},"Gettext",[1524,1525,1527,1529],{"id":24,"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":33,"status":5,"sort":41,"label":771,"alternative_label":10,"slug":775,"description":954,"documentation_link":955,"loc_icon":775,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1533},[1534,1535,1536,1537],{"id":33,"languages_code":925,"label":771,"description":954,"slug":775},{"id":959,"languages_code":927,"label":771,"description":960,"slug":775},{"id":782,"languages_code":933,"label":771,"description":962,"slug":775},{"id":565,"languages_code":930,"label":771,"description":964,"slug":775},{"id":25,"status":5,"sort":37,"label":966,"alternative_label":10,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1539},[1540,1541,1542,1543,1544,1545,1546,1547],{"id":25,"languages_code":925,"label":966,"description":968,"slug":967},{"id":291,"languages_code":927,"label":974,"description":975,"slug":10},{"id":484,"languages_code":933,"label":966,"description":968,"slug":967},{"id":451,"languages_code":930,"label":978,"description":979,"slug":10},{"id":402,"languages_code":927,"label":981,"description":982,"slug":967},{"id":411,"languages_code":933,"label":966,"description":968,"slug":967},{"id":684,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":10},{"id":20,"status":5,"sort":33,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1549},[1550,1551,1552,1553,1554],{"id":20,"languages_code":925,"label":991,"description":994,"slug":993},{"id":218,"languages_code":927,"label":1000,"description":1001,"slug":10},{"id":382,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":10},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":10},{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1556},[1557,1558,1559,1560,1561],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[],{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1564},[1565,1566,1567,1568,1569],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[],[1572],{"languages_code":925,"name":1484,"slug":1485,"description":1486,"support_type":1397,"meta_title":10,"meta_description":10,"marketing_subtitle":910,"tile_subtitle":1488,"tile_description":1489,"id":107,"platforms_id":107,"docs_link":1487},{"id":252,"status":5,"created_on":1229,"modified_on":1574,"name":1575,"slug":1576,"description":1577,"docs_link":1578,"priority":10,"has_sdk":160,"sort":230,"highlighted":160,"in_menu":162,"changefreq":10,"support_type":1397,"show_in_spa":162,"is_file_format":162,"meta_title":10,"meta_description":10,"featured_on_web":160,"marketing_subtitle":910,"tile_subtitle":1579,"tile_description":1580,"is_enterprise":160,"is_popular":160,"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":252},"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":33,"status":5,"sort":37,"created_on":944,"label":1331,"hidden":160,"icon":1592,"translations":1593},{"id":1333},[1594,1595,1596,1597],{"id":33,"languages_code":925,"label":1331},{"id":356,"languages_code":927,"label":1337},{"id":484,"languages_code":930,"label":1339},{"id":574,"languages_code":933,"label":1331},[1599,1606],{"id":33,"status":5,"sort":37,"label":1331,"hidden":160,"created_on":944,"icon":1600,"translations":1601},{"id":1333},[1602,1603,1604,1605],{"id":33,"languages_code":925,"label":1331},{"id":356,"languages_code":927,"label":1337},{"id":484,"languages_code":930,"label":1339},{"id":574,"languages_code":933,"label":1331},{"id":247,"status":5,"sort":252,"label":1607,"hidden":162,"created_on":944,"icon":10,"translations":1608},"C#",[1609,1610,1612,1614],{"id":247,"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":33,"status":5,"sort":41,"label":771,"alternative_label":10,"slug":775,"description":954,"documentation_link":955,"loc_icon":775,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1618},[1619,1620,1621,1622],{"id":33,"languages_code":925,"label":771,"description":954,"slug":775},{"id":959,"languages_code":927,"label":771,"description":960,"slug":775},{"id":782,"languages_code":933,"label":771,"description":962,"slug":775},{"id":565,"languages_code":930,"label":771,"description":964,"slug":775},{"id":25,"status":5,"sort":37,"label":966,"alternative_label":10,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1624},[1625,1626,1627,1628,1629,1630,1631,1632],{"id":25,"languages_code":925,"label":966,"description":968,"slug":967},{"id":291,"languages_code":927,"label":974,"description":975,"slug":10},{"id":484,"languages_code":933,"label":966,"description":968,"slug":967},{"id":451,"languages_code":930,"label":978,"description":979,"slug":10},{"id":402,"languages_code":927,"label":981,"description":982,"slug":967},{"id":411,"languages_code":933,"label":966,"description":968,"slug":967},{"id":684,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":10},{"id":20,"status":5,"sort":33,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1634},[1635,1636,1637,1638,1639],{"id":20,"languages_code":925,"label":991,"description":994,"slug":993},{"id":218,"languages_code":927,"label":1000,"description":1001,"slug":10},{"id":382,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":10},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":10},{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1641},[1642,1643,1644,1645,1646],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[],{"id":4,"status":5,"sort":25,"label":1012,"alternative_label":759,"slug":540,"description":1013,"documentation_link":1014,"loc_icon":540,"is_official_plugin":160,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1649},[1650,1651,1652,1653,1654],{"id":4,"languages_code":925,"label":1012,"description":1013,"slug":540},{"id":207,"languages_code":927,"label":1018,"description":1019,"slug":540},{"id":374,"languages_code":933,"label":1012,"description":1013,"slug":540},{"id":443,"languages_code":930,"label":1022,"description":1023,"slug":540},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":10},[1656],{"id":356,"status":5,"created_on":1657,"sort":10,"slug":1576,"label":1575,"on_faq_index":10},"2022-08-01T16:44:06.000Z",[1659],{"languages_code":925,"name":1575,"slug":1576,"description":1577,"support_type":1397,"meta_title":10,"meta_description":10,"marketing_subtitle":910,"tile_subtitle":1579,"tile_description":1580,"id":252,"platforms_id":252,"docs_link":1578},{"id":661,"status":5,"created_on":1661,"modified_on":1662,"name":664,"slug":663,"description":1663,"docs_link":1664,"priority":10,"has_sdk":10,"sort":662,"highlighted":160,"in_menu":162,"changefreq":10,"support_type":1665,"show_in_spa":162,"is_file_format":10,"meta_title":10,"meta_description":10,"featured_on_web":162,"marketing_subtitle":1665,"tile_subtitle":1665,"tile_description":1666,"is_enterprise":160,"is_popular":162,"primary_use_case":10,"hierarchy_handling":10,"best_for":10,"file_extension":10,"format_code_example":10,"format_to_extension":10,"upload_features":10,"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":661},"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":666},{"id":1669},"5995b721-a2ea-487e-ad4b-298a489bbd24",{"id":19,"status":5,"sort":15,"created_on":944,"label":1671,"hidden":160,"icon":1672,"translations":1674},"CMS",{"id":1673},"1172a655-928c-4594-9263-d8afdfd9cd79",[1675,1676,1678,1680],{"id":19,"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":99,"status":5,"sort":95,"label":1684,"hidden":160,"created_on":944,"icon":10,"translations":1685},"Multilingual SEO",[1686,1687,1690,1693],{"id":99,"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":535,"status":5,"sort":535,"label":302,"hidden":160,"created_on":944,"icon":1696,"translations":1698},{"id":1697},"e782ed3f-d954-45ca-8b17-5bf5fe95f30a",[1699,1700,1703,1705],{"id":535,"languages_code":925,"label":302},{"id":1701,"languages_code":927,"label":1702},132,"Comercio electrónico",{"id":1704,"languages_code":930,"label":302},137,{"id":1706,"languages_code":933,"label":302},142,{"id":19,"status":5,"sort":15,"label":1671,"hidden":160,"created_on":944,"icon":1708,"translations":1709},{"id":1673},[1710,1711,1712,1713],{"id":19,"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":20,"status":5,"sort":41,"label":1715,"hidden":160,"created_on":944,"icon":1716,"translations":1718},"Marketing tools",{"id":1717},"098fe6a4-dd2e-42d8-937e-2d8121e6e266",[1719,1720,1723,1725],{"id":20,"languages_code":925,"label":1715},{"id":1721,"languages_code":927,"label":1722},43,"Herramientas de marketing",{"id":431,"languages_code":930,"label":1724},"Marketingové nástroje",{"id":509,"languages_code":933,"label":1715},[1727],{"id":53,"status":5,"sort":10,"label":1728,"alternative_label":1729,"slug":1730,"description":1731,"documentation_link":1732,"loc_icon":1733,"is_official_plugin":162,"is_universal_plugin":160,"universal_plugin_vendor":10,"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":53,"languages_code":925,"label":1728,"description":1731,"slug":1730},{"id":1721,"languages_code":927,"label":1737,"description":1738,"slug":10},"Complemento Oficial de Strapi","Nuestros desarrolladores mantienen un complemento oficial de localización de Strapi. ¡Empiece en unos pocos clics!",{"id":500,"languages_code":933,"label":1728,"description":1731,"slug":1730},{"id":574,"languages_code":930,"label":1741,"description":1742,"slug":10},"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":10},"Offizielles Strapi-Plugin","Unsere Entwickler pflegen ein offizielles Strapi-Lokalisierungs-Plugin. Starten Sie mit ein paar Klicks!",[],{"id":53,"status":5,"sort":10,"label":1728,"alternative_label":1729,"slug":1730,"description":1731,"documentation_link":1732,"loc_icon":1733,"is_official_plugin":162,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1748},[1749,1750,1751,1752,1753],{"id":53,"languages_code":925,"label":1728,"description":1731,"slug":1730},{"id":1721,"languages_code":927,"label":1737,"description":1738,"slug":10},{"id":500,"languages_code":933,"label":1728,"description":1731,"slug":1730},{"id":574,"languages_code":930,"label":1741,"description":1742,"slug":10},{"id":1688,"languages_code":987,"label":1744,"description":1745,"slug":10},[1755],{"id":207,"status":5,"created_on":1756,"sort":10,"slug":663,"label":664,"on_faq_index":10},"2022-06-16T09:24:13.000Z",[1758],{"languages_code":925,"name":664,"slug":663,"description":1663,"support_type":1665,"meta_title":10,"meta_description":10,"marketing_subtitle":1665,"tile_subtitle":1665,"tile_description":1666,"id":661,"platforms_id":661,"docs_link":1664},{"id":451,"status":5,"created_on":1229,"modified_on":1760,"name":671,"slug":670,"description":10,"docs_link":1761,"priority":10,"has_sdk":160,"sort":443,"highlighted":160,"in_menu":162,"changefreq":10,"support_type":1762,"show_in_spa":162,"is_file_format":160,"meta_title":10,"meta_description":10,"featured_on_web":162,"marketing_subtitle":1763,"tile_subtitle":1764,"tile_description":1765,"is_enterprise":160,"is_popular":162,"primary_use_case":10,"hierarchy_handling":10,"best_for":10,"file_extension":10,"format_code_example":10,"format_to_extension":10,"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":451},"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":673},{"id":1769},"7573fed6-8817-4cb4-84d2-be327e6c4891",{"id":25,"status":5,"sort":45,"created_on":944,"label":1771,"hidden":160,"icon":1772,"translations":1774},"Design tools",{"id":1773},"1053d863-b690-4fbd-aadf-dbf2ba282768",[1775,1776,1779,1782],{"id":25,"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":557,"languages_code":933,"label":1771},[1784],{"id":25,"status":5,"sort":45,"label":1771,"hidden":160,"created_on":944,"icon":1785,"translations":1786},{"id":1773},[1787,1788,1789,1790],{"id":25,"languages_code":925,"label":1771},{"id":1777,"languages_code":927,"label":1778},{"id":1780,"languages_code":930,"label":1781},{"id":557,"languages_code":933,"label":1771},[1792],{"id":45,"status":5,"sort":10,"label":1729,"alternative_label":1729,"slug":1793,"description":1794,"documentation_link":85,"loc_icon":1733,"is_official_plugin":162,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1795},"official-plugin","Our developers maintain an official plugin for this integration. Start in a few clicks!",[1796,1797,1800,1801],{"id":45,"languages_code":925,"label":1729,"description":1794,"slug":1793},{"id":280,"languages_code":927,"label":1798,"description":1799,"slug":10},"Plugin Oficial","Nuestros desarrolladores mantienen un plugin oficial para esta integración. ¡Empiece con unos pocos clics!",{"id":271,"languages_code":933,"label":1729,"description":1794,"slug":1793},{"id":464,"languages_code":930,"label":1802,"description":1803,"slug":10},"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":45,"status":5,"sort":10,"label":1729,"alternative_label":1729,"slug":1793,"description":1794,"documentation_link":85,"loc_icon":1733,"is_official_plugin":162,"is_universal_plugin":160,"universal_plugin_vendor":10,"translations":1806},[1807,1808,1809,1810],{"id":45,"languages_code":925,"label":1729,"description":1794,"slug":1793},{"id":280,"languages_code":927,"label":1798,"description":1799,"slug":10},{"id":271,"languages_code":933,"label":1729,"description":1794,"slug":1793},{"id":464,"languages_code":930,"label":1802,"description":1803,"slug":10},[],[1813],{"languages_code":925,"name":671,"slug":670,"description":10,"support_type":1762,"meta_title":10,"meta_description":10,"marketing_subtitle":1763,"tile_subtitle":1764,"tile_description":1765,"id":451,"platforms_id":451,"docs_link":1761},{"id":1815,"owner":1816,"created_by":10,"sort":10,"title":1821,"slug":1822,"modified_on":877,"created_on":1823,"pinned":160,"badge":10,"priority":1824,"main_image":1825,"status":5,"tags":1826,"dictionary":1834,"reading_time":1835,"excerpt":-1,"og_title":877,"og_description":877,"og_image":877},"69d78a237ab1270001eddabf",{"id":1817,"first_name":1818,"last_name":877,"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":451,"created_on":1828,"status":5,"label":771,"slug":775,"on_index_page":160},"2026-05-28 17:35:45",{"id":402,"created_on":1828,"status":5,"label":1830,"slug":1831,"on_index_page":162},"AI","ai",{"id":451,"created_on":1828,"status":5,"label":352,"slug":1833,"on_index_page":162},"localization",[],0,{"id":1837,"owner":1838,"created_by":10,"sort":10,"title":1839,"slug":1840,"modified_on":877,"created_on":1841,"pinned":160,"badge":10,"priority":1824,"main_image":1842,"status":5,"tags":1843,"dictionary":1850,"reading_time":1835,"excerpt":-1,"og_title":877,"og_description":877,"og_image":877},"69ea1abb7ab1270001ede902",{"id":1817,"first_name":1818,"last_name":877,"slug":1819,"avatar":1820},"You can just build things. But should you? The build vs. buy debate in localization","build-vs-buy-in-localization-you-can-build-things-but-should-you","2026-05-25T08:43:00.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F05\u002Flocalazy-Vibe-coding.png",[1844,1845,1849],{"id":402,"created_on":1828,"status":5,"label":1830,"slug":1831,"on_index_page":162},{"id":1846,"created_on":1828,"status":5,"label":1847,"slug":1848,"on_index_page":160},646,"Business Development","business-development",{"id":451,"created_on":1828,"status":5,"label":352,"slug":1833,"on_index_page":162},[],{"post":1852,"relatedPosts":2025,"banner":2081},{"id":1853,"owner":1854,"created_by":10,"sort":10,"title":1859,"slug":1860,"modified_on":1861,"created_on":1862,"pinned":160,"badge":10,"priority":1824,"main_image":1863,"status":5,"tags":1864,"dictionary":1871,"reading_time":61,"excerpt":1934,"og_title":877,"og_description":877,"og_image":877,"content":1935,"meta_title":1936,"meta_description":1937,"canonical":877,"cta":1938,"fullGhostPost":1946},"60a37fc7cf7b6a0001d1f1c6",{"id":1855,"first_name":1856,"last_name":877,"slug":1857,"avatar":1858},"61dc4e87df4bcb00010bd508","Mary Okosun","mary-okosun","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Fokosun.png","How to localize an Angular app with angular-i18n and Localazy","localize-angular-app-i18n-l10n-localazy","2026-04-16T16:25:54.000+02:00","2025-10-29T18:39:00.000+01:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002Ftechnical-article.png",[1865,1868,1869],{"id":451,"created_on":1828,"status":5,"label":1866,"slug":1867,"on_index_page":160},"HowTo","howto",{"id":451,"created_on":1828,"status":5,"label":621,"slug":620,"on_index_page":160},{"id":451,"created_on":1828,"status":5,"label":1870,"slug":1870,"on_index_page":162},"i18n",[1872,1881,1896,1907,1928],{"id":1873,"status":5,"owner":1874,"created_on":1875,"title":621,"excerpt":1876,"content":1877,"slug":620,"meta_title":877,"meta_description":10,"canonical":10,"related_terms":1878},69,"2bac48a8-b362-482f-b574-3bc71dca4c5b","2022-03-17T12:22:55.000Z","Angular is a TypeScript-based open-source platform for building mobile and desktop web applications. ","Angular enables you to build applications that range from simple, single-developer projects to enterprise-level applications.\n\nThe Angular platform consists of:\n- a framework for building scalable web applications that consist of several individual components,\n- an extensive collection of integrated libraries that support the development of application features, including routing, forms management, and client-server communication,\n- a set of tools designed to help you write code, build software, test your work, and update your applications.\n\nGoogle designed Angular as a ground-up rewrite of AngularJS. Angular has been developed and maintained by Google developers since 2016 with help from a community of individuals and corporations. \n\nYou can learn more about Angular on the [official website](https:\u002F\u002Fangular.io\u002F).\n\nRelated links:\n[How to localize Angular app with angular-i18n and Localazy](\u002Fblog\u002Flocalize-angular-app-i18n-l10n-localazy)",[1879],{"id":1880,"slug":633},74,{"id":1882,"status":5,"owner":1874,"created_on":1883,"title":1884,"excerpt":1885,"content":1886,"slug":1887,"meta_title":877,"meta_description":877,"canonical":877,"related_terms":1888},79,"2026-05-12T07:09:23.000Z","Internationalization (i18n)","The process of making your software localizable.","Internationalization (i18n) is the process of preparing software, digital products, and content so they can be easily adapted for various languages, regions, and cultures without requiring extensive reengineering.\n\nThis foundational step ensures that a product can be efficiently localized to meet the needs of different global markets. To internationalize your software, you need to pay attention to technical requirements. The code structure and design has to be prepared to allow for [localization](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Flocalization).\n\nIt involves considering various linguistic and cultural factors during the initial design and development phases. This process should start, ideally, in the design phase. For example, you may want to have externalised strings so you can bring your strings to the translation management tool.\n\nEvery business looking to expand their reach and provide User Experiences (UX) across diverse markets needs to consider internationalization and then localization.\n\n## 🌐 Key points about internationalization (i18n): \n\n* Internationalization involves creating flexible and adaptable designs that accommodate various languages, scripts, and cultural norms.\n* By preparing content and software for localization, internationalization simplifies the process of translating and adapting products for specific markets.\n* This process includes using Unicode, supporting different character sets, and ensuring compatibility with various regional formats (dates, currencies, etc.).\n* Investing in internationalization upfront reduces the time and cost associated with localizing products for multiple markets.\n\nBy prioritizing internationalization, companies can create products that are more versatile and ready for global distribution, ensuring they meet the needs of international users effectively.","internationalization",[1889,1890,1892,1894],{"id":20,"slug":1833},{"id":33,"slug":1891},"translation",{"id":37,"slug":1893},"globalization",{"id":57,"slug":1895},"gilt",{"id":20,"status":5,"owner":1874,"created_on":1897,"title":352,"excerpt":1898,"content":1899,"slug":1833,"meta_title":10,"meta_description":10,"canonical":10,"related_terms":1900},"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.",[1901,1902,1903,1904,1906],{"id":20,"slug":1833},{"id":33,"slug":1891},{"id":57,"slug":1895},{"id":291,"slug":1905},"translation-management-system-tms",{"id":1882,"slug":1887},{"id":1908,"status":5,"owner":1909,"created_on":1910,"title":1911,"excerpt":1912,"content":1913,"slug":1914,"meta_title":877,"meta_description":877,"canonical":877,"related_terms":1915},255,"a5e46ee7-1f50-4f81-ae2d-68a664c76aa2","2026-05-12T07:09:24.000Z","ICU Message Format","A localization-friendly syntax that lets developers write dynamic, multilingual messages using placeholders and logic rules.","ICU Message Format is part of the [International Components for Unicode (ICU)](https:\u002F\u002Ficu.unicode.org \"https:\u002F\u002Ficu.unicode.org\") suite. It is widely used in localization to create dynamic, context-aware messages that adapt to grammatical and structural rules across languages. Instead of hardcoding separate strings for each scenario, developers use ICU Message Format to define templates that automatically adjust based on variables such as quantity, gender, or other contextual inputs.\n\nThis system is essential in software localization, where content like notifications, user messages, and UI text often depends on dynamic data. It allows translators to focus on conveying the intended meaning without restructuring sentences manually for every case or language.\n\nFor example, in English, the sentence “You have 1 new message” changes to “You have 5 new messages” depending on the number. In other languages, the change might involve gender-specific words, different sentence structures, or alternate verb conjugations. \n\nICU Message Format enables this by using placeholders and conditional logic, ensuring that messages are grammatically correct and natural-sounding in all supported languages.\n\n### 🧩 Highlights of ICU Message Format:\n\n* Handles pluralization, gender variations, and context-based message structures\n* Uses placeholders to insert dynamic values such as numbers, names, and dates\n* Supports nested messages and conditional formatting for advanced use cases\n* Integrates with localization platforms like Localazy, Phrase, and Transifex\n* Keeps translations consistent and reusable across multiple contexts\n* Reduces the need for multiple translation strings per language\n* Improves translation speed by minimizing structural rework \n\n### 🛠️ **Example:**\n\n```\n\"You have {NUM_MESSAGES, plural, one {# new message} other {# new messages}}.\"\n```","icu-message-format",[1916,1917,1920,1923,1925],{"id":1613,"slug":647},{"id":1918,"slug":1919},90,"icu",{"id":1921,"slug":1922},116,"yaml",{"id":1181,"slug":1924},"placeholder",{"id":1926,"slug":1927},274,"software-localization",{"id":423,"status":5,"owner":1874,"created_on":1875,"title":1929,"excerpt":1930,"content":1931,"slug":1932,"meta_title":10,"meta_description":10,"canonical":10,"related_terms":1933},"Locale","In software, the term locale refers to the set of parameters defining a language environment. ","Locales are used to define the user's language, region, and other interface preferences (like time zones, date formats, or currencies) to facilitate communication.\n\nUsing the appropiate locale is key to enhance [UX](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fux) and deploy an effective [i18n](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Finternationalization) strategy. \n\nLocales are identified with:\n- **A language code** for each language variety (i.e. fr for French, de for German or ja for Japanese). \n- **A region code**, in case differentiation is needed, like es_MX for Mexican Spanish, en_AU for Australian English or it_CH for Swiss Italian.\n\nClassification of locales is governed by the [ISO 639](https:\u002F\u002Fwww.iso.org\u002Fiso-639-language-code) standard.\n\n*See the available Localazy's [locale guides](https:\u002F\u002Flocalazy.com\u002Ftags\u002Flocales) in our blog.*","locale",[],"Angular is a powerful web framework that helps developers build fast and scalable applications. In this guide, we’ll create an app to explore how to localize an Angular project using angular-i18n and Localazy. The result? Quick, easy, streamlined translations. Let's get into it. ","\u003Cp>\u003Ca href=\"https:\u002F\u002Fangular.dev\u002F\">Angular\u003C\u002Fa> is a web framework that empowers developers to build fast, reliable applications. It provides a broad suite of tools, APIs, and libraries to simplify and streamline your development workflow.\u003C\u002Fp>\u003Cp>The framework gives you a solid platform on which to build fast, reliable applications that scale with both the size of your team and the size of your codebase. In this article, we will create a demo app showing how to localize an Angular app with \u003Ca href=\"https:\u002F\u002Fangular.dev\u002Fguide\u002Fi18n\">angular-18n\u003C\u002Fa> and Localazy.\u003C\u002Fp>\u003Ch2 id=\"prerequisites\">📋 Prerequisites \u003Ca class=\"markdownit-header-anchor\" href=\"#prerequisites\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cul>\u003Cli>\u003Cstrong>Install\u003Ca href=\"https:\u002F\u002Fnodejs.org\u002Fen\u002F\"> Node.js\u003C\u002Fa>\u003C\u002Fstrong> if you don't have it already. The Angular CLI requires a minimum Node.js version of v20.19 for Angular v20, which is the most recent version as of the time of writing this article.\u003C\u002Fli>\u003Cli>\u003Cstrong>Install \u003Ca href=\"https:\u002F\u002Fangular.dev\u002Finstallation#install-angular-cli\">Angular CLI\u003C\u002Fa> \u003C\u002Fstrong>using the command \u003Ccode>npm install -g @angular\u002Fcli\u003C\u002Fcode>\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"set-up-a-new-angular-project\">👩🏾‍💻 Set up a new Angular project \u003Ca class=\"markdownit-header-anchor\" href=\"#set-up-a-new-angular-project\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>In your terminal, run the CLI command \u003Ccode>ng new\u003C\u002Fcode> with the desired project name. In the following example, we'll be using the \u003Ccode>angular-i18n-localazy-demo\u003C\u002Fcode>project name:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-shell\">ng new angular-i18n-localazy-demo\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>You will be presented with some configuration options for your project. Use the arrow and enter keys to navigate and select which options you desire.\u003C\u002Fp>\u003Cp>If you don't have any preferences, just hit Enter to take the default options and continue with the setup.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-09-at-2.57.20-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1884\" height=\"1246\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-09-at-2.57.20-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-09-at-2.57.20-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-09-at-2.57.20-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-09-at-2.57.20-PM.png 1884w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>At this point, we are ready to run our project locally!\u003C\u002Fp>\u003Cp>To start a local development server, run the command:\u003C\u002Fp>\u003Cpre>\u003Ccode>ng run start\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This command should open a browser window with the application running.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.24.31-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1426\" height=\"896\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.24.31-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.24.31-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.24.31-PM.png 1426w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>We can temporarily stop the server and initiate the process of internationalization.\u003C\u002Fp>\u003Cblockquote>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Finternationalization\">Internationalization (i18n)\u003C\u002Fa>\u003C\u002Fstrong> is the process of preparing your application to support multiple languages and regional formats without needing code changes. It involves extracting text from templates, managing translation files, and handling formats like dates or currencies.\u003C\u002Fblockquote>\u003Cp>The package that is needed for internationalization in Angular is \u003Ccode>@angular\u002Flocalize\u003C\u002Fcode>. It was introduced in v9 and adds i18n support to an Angular app. \u003C\u002Fp>\u003Cp>You can find detailed information about \u003Ca href=\"https:\u002F\u002Fangular.dev\u002Fguide\u002Fi18n\">internationalization\u003C\u002Fa> in the official Angular documentation.\u003C\u002Fp>\u003Cp>To add the \u003Ccode>@angular\u002Flocalize\u003C\u002Fcode> package, use the following command to update the \u003Ccode>package.json\u003C\u002Fcode> and TypeScript configuration files in your project:\u003C\u002Fp>\u003Cpre>\u003Ccode>ng add @angular\u002Flocalize\u003C\u002Fcode>\u003C\u002Fpre>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.54.02-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1224\" height=\"320\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.54.02-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.54.02-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.54.02-PM.png 1224w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Ch2 id=\"preparing-templates-for-translations\">🔧 Preparing templates for translations \u003Ca class=\"markdownit-header-anchor\" href=\"#preparing-templates-for-translations\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>Our project should follow a standard Angular project structure. We’ll do some work on our \u003Ccode>app\u003C\u002Fcode> component template. The \u003Ccode>app.html\u003C\u002Fcode> file placement is shown in the tree below.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-16-at-10.48.12-AM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1140\" height=\"316\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-16-at-10.48.12-AM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-16-at-10.48.12-AM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-16-at-10.48.12-AM.png 1140w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Open the file \u003Ccode>app.html\u003C\u002Fcode> and replace its content with our boilerplate:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-Angular\">&lt;style&gt;\n  h1 {\n    font-size: 2.125rem;\n  }\n\n  main {\n    width: 60%;\n    margin: 10% auto;\n    padding: 50px;\n    background: #eae6e4;\n  }\n\n  div {\n    padding: 5px 0;\n  }\n  span {\n    padding: 5px;\n  }\n&lt;\u002Fstyle&gt;\n\n&lt;main class=\"main\"&gt;\n  &lt;!-- CODE 1 --&gt;\n  &lt;h1 i18n&gt;\n    Hello!! We're thrilled that you've decided to use Localazy for translating your {{ title() }} app!\n  &lt;\u002Fh1&gt;\n\n  &lt;!-- CODE 2 --&gt;\n &lt;ng-container i18n&gt;I am free, wrapped just in a body&lt;\u002Fng-container&gt;\n\n  &lt;!-- CODE 3 --&gt;\n  &lt;div\n    i18n=\"merged div translation\"\n    i18n-data-title=\"merged div translation\"\n    data-title=\"Can we also translate this? Awesome!\"\n  &gt;\n    Can we also translate this? Awesome!\n  &lt;\u002Fdiv&gt;\n\n  &lt;!-- CODE 3 --&gt;\n  &lt;div&gt;\n    &lt;input type=\"number\" min=\"0\" [(ngModel)]=\"minutes\" \u002F&gt;\n    &lt;span i18=\"icu_plural\"&gt;\n      Updated {minutes(), plural, =1 {one minute ago} other {{{ minutes() }} minutes ago}}\n    &lt;\u002Fspan&gt;\n  &lt;\u002Fdiv&gt;\n\n  &lt;!-- CODE 4 --&gt;\n  &lt;div&gt;\n    &lt;select [(ngModel)]=\"user\"&gt;\n      &lt;option value=\"male\" i18n&gt;Male&lt;\u002Foption&gt;\n      &lt;option value=\"female\" i18n&gt;Female&lt;\u002Foption&gt;\n      &lt;option value=\"you\" i18n&gt;in love with Localazy!&lt;\u002Foption&gt;\n    &lt;\u002Fselect&gt;\n    &lt;span i18n&gt;The author is {{ user() }}&lt;\u002Fspan&gt;\n  &lt;\u002Fdiv&gt;\n&lt;\u002Fmain&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"block-1-i18n-attribute\">Block 1: i18n attribute \u003Ca class=\"markdownit-header-anchor\" href=\"#block-1-i18n-attribute\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cpre>\u003Ccode>&lt;h1 i18n&gt;\n    Hello!! We're thrilled that you've decided to use Localazy for translating your {{ title() }} app!\n &lt;\u002Fh1&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The \u003Ccode>i18n\u003C\u002Fcode> attribute marks the text within the \u003Cem>&lt;h1&gt;\u003C\u002Fem> tag for translation. The extracted translated files will appear in the translation file, allowing translators to provide equivalents in other languages. \u003C\u002Fp>\u003Ch3 id=\"block-2-text-grouping\">Block 2: Text grouping \u003Ca class=\"markdownit-header-anchor\" href=\"#block-2-text-grouping\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cpre>\u003Ccode>&lt;ng-container i18n&gt;I am free, wrapped just in a body&lt;\u002Fng-container&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Ccode>&lt;ng-container&gt;\u003C\u002Fcode> is a\u003Cstrong> \u003C\u002Fstrong>grouping element in Angular templates that does not render any actual HTML in the DOM. This means the text exists freely within the body without any form of tags or wrappers. The \u003Ccode>i18n\u003C\u002Fcode> attribute also marks the text within for translation.\u003C\u002Fp>\u003Ch3 id=\"block-3-data-attributes\">Block 3: Data attributes \u003Ca class=\"markdownit-header-anchor\" href=\"#block-3-data-attributes\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cpre>\u003Ccode> &lt;div\n    i18n=\"merged div translation\"\n    i18n-data-title=\"merged div translation\"\n    data-title=\"Can we also translate this? Awesome!\"\n  &gt;\n    Can we also translate this? Awesome!\n  &lt;\u002Fdiv&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Within the &lt;div&gt; tag, we can translate both the element text and HTML attributes (like \u003Ccode>data-title\u003C\u002Fcode>). \u003C\u002Fp>\u003Cp>\u003Ccode>i18n=\"merged div translation\"\u003C\u002Fcode> provides a description to translators, while \u003Ccode>i18n-data-title=\"merged div translation\"\u003C\u002Fcode> marks the data-title attribute for translation as well.\u003C\u002Fp>\u003Ch3 id=\"block-4-pluralization\">Block 4: Pluralization \u003Ca class=\"markdownit-header-anchor\" href=\"#block-4-pluralization\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cpre>\u003Ccode> &lt;div&gt;\n     &lt;input type=\"number\" min=\"0\" [(ngModel)]=\"minutes\" \u002F&gt;\n      &lt;br \u002F&gt;\n      &lt;span i18n&gt;Updated &lt;\u002Fspan&gt;\n      &lt;span i18=\"icu_plural\"&gt;\n        {minutes(), plural, =1 {one minute ago} other {{{ minutes() }} minutes ago}}\n      &lt;\u002Fspan&gt;\n &lt;\u002Fdiv&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This block handles pluralization with Angular’s ICU syntax. The input binds to the component variable \u003Ccode>minutes\u003C\u002Fcode> using \u003Ccode>[(ngModel)]\u003C\u002Fcode>. The first span marks the text within the tag for translation. The second span displays a message that depends on the \u003Ccode>\u003Cstrong>minutes\u003C\u002Fstrong>\u003C\u002Fcode> value:\u003C\u002Fp>\u003Cp>If \u003Ccode>minutes\u003C\u002Fcode> == 1, the span reflects \u003Cem>one minute ago\u003C\u002Fem>. Otherwise, the span shows, for example, \u003Cem>5 minutes ago\u003C\u002Fem>.\u003C\u002Fp>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-blue\">\u003Cdiv class=\"kg-callout-emoji\">☝️\u003C\u002Fdiv>\u003Cdiv class=\"kg-callout-text\">\u003Cstrong>Note\u003C\u002Fstrong>: Different languages abide by diverse pluralization rules. Following these rules is \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Fpluralization-in-software-localization-beginners-guide\u002F\">one of the most demanding tasks\u003C\u002Fa> when localizing apps. For instance, English has pretty straightforward rules. A word can have either a singular or a plural form (also known as \u003Cem>“one”\u003C\u002Fem> and \u003Cem>“other”\u003C\u002Fem>). The Czech language, however, is quite complicated as it distinguishes \u003Cem>“one”\u003C\u002Fem>, \u003Cem>“few”,\u003C\u002Fem> and \u003Cem>“other”\u003C\u002Fem> forms. Luckily, \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Ffeatures\u002Fplurals\u002F\">Localazy covers the entire specification\u003C\u002Fa> automatically!\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cp>The code snippet above respects the \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fcldr\">CLDR\u003C\u002Fa> rules and, therefore, will be parsed in Localazy. If we don’t respect the rules, we do not lose a phrase, don’t worry. It will be transferred to Localazy and kept as-is.\u003C\u002Fp>\u003Cblockquote>You can get familiar with the list of possible forms for common world languages on the \u003Ca href=\"https:\u002F\u002Funicode-org.github.io\u002Fcldr-staging\u002Fcharts\u002F37\u002Fsupplemental\u002Flanguage_plural_rules.html\">Language Plural Rules\u003C\u002Fa> of the \u003Ca href=\"http:\u002F\u002Fcldr.unicode.org\u002F\">Unicode Common Locale Data Repository (CLDR)\u003C\u002Fa>\u003C\u002Fblockquote>\u003Ch3 id=\"block-5-user-attributes\">Block 5: User attributes \u003Ca class=\"markdownit-header-anchor\" href=\"#block-5-user-attributes\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cpre>\u003Ccode>&lt;div&gt;\n    &lt;select [(ngModel)]=\"user\"&gt;\n      &lt;option value=\"male\" i18n&gt;Male&lt;\u002Foption&gt;\n      &lt;option value=\"female\" i18n&gt;Female&lt;\u002Foption&gt;\n      &lt;option value=\"you\" i18n&gt;in love with Localazy!&lt;\u002Foption&gt;\n    &lt;\u002Fselect&gt;\n    &lt;span i18n&gt;The author is {{ user() }}&lt;\u002Fspan&gt;\n  &lt;\u002Fdiv&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The \u003Ccode>&lt;select&gt;\u003C\u002Fcode> binds to a component variable user. The options themselves (Male, Female, etc.) are marked with i18n for translation. \u003C\u002Fp>\u003Cp>The span displays: \"The author is male\" \u002F \"The author is female\" \u002F \"The author is in love with Localazy!\" depending on the selected value.\u003C\u002Fp>\u003Cp>To avoid compilation errors, we need to import \u003Ccode>FormsModule\u003C\u002Fcode> into our \u003Ccode>app.ts\u003C\u002Fcode> file. This gives template-driven forms support, like \u003Ccode>[(ngModel)]\u003C\u002Fcode>. \u003C\u002Fp>\u003Cp>We can also include the code snippets:\u003C\u002Fp>\u003Cpre>\u003Ccode>protected readonly minutes = signal(0);\nprotected readonly user = signal('localazy');\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Cstrong>Signal\u003C\u002Fstrong> is the new Angular reactive primitive (introduced in Angular v16) used to create reactive state variables just like \u003Ccode>useState()\u003C\u002Fcode>in React. Each property (\u003Ccode>minutes\u003C\u002Fcode>, \u003Ccode>user\u003C\u002Fcode>) is a \u003Cstrong>signal, \u003C\u002Fstrong>a reactive value that automatically triggers re-render when changed.\u003C\u002Fp>\u003Cp>Modify the file so it looks like this:\u003C\u002Fp>\u003Cpre>\u003Ccode>import { Component, signal } from '@angular\u002Fcore';\nimport { RouterOutlet } from '@angular\u002Frouter';\nimport { FormsModule } from '@angular\u002Fforms';\n\n@Component({\n  selector: 'app-root',\n  imports: [RouterOutlet, FormsModule],\n  templateUrl: '.\u002Fapp.html',\n  styleUrl: '.\u002Fapp.css'\n})\nexport class App {\n  protected readonly title = signal('angular-i18n-localazy-demo');\n  protected readonly minutes = signal(0);\n  protected readonly user = signal('localazy');\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The UI should be similar to the following screenshot:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-20-at-4.28.10-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"732\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-20-at-4.28.10-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-20-at-4.28.10-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-20-at-4.28.10-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-20-at-4.28.10-PM.png 2116w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Ch2 id=\"extracting-a-source-language-file\">📨 Extracting a source language file \u003Ca class=\"markdownit-header-anchor\" href=\"#extracting-a-source-language-file\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>Our template is now prepared and ready to be translated. Now we need to define a source language in the \u003Ccode>angular.json\u003C\u002Fcode> configuration file. Open the file and add:\u003C\u002Fp>\u003Cpre>\u003Ccode>...\n\"projects\": {\n  \"angular-i18n-localazy-demo\": {\n    ...\n    \"i18n\": {\n        \"sourceLocale\": \"en\",\n      },\n      ...\n  }\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>To ensure that we have a correct setup, a \u003Ccode>sourceLocale\u003C\u002Fcode> value should be equal to Localazy project’s source language code (in our case \u003Cem>“en”\u003C\u002Fem>).\u003C\u002Fp>\u003Cp>Next, we'll use the Angular CLI command to extract the marked text in the template into the source language file. Open a terminal window in the project root directory and run:\u003C\u002Fp>\u003Cpre>\u003Ccode>ng extract-i18n --output-path src\u002Flocale --out-file en.xliff --format=xlf2\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This command creates a \u003Ccode>en.xliff\u003C\u002Fcode> file in the \u003Ccode>.\u002Fsrc\u002Flocale\u003C\u002Fcode> directory.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.42.26-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"660\" height=\"148\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.42.26-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.42.26-PM.png 660w\">\u003C\u002Ffigure>\u003Ch2 id=\"localization-with-localazy\">🪁 Localization with Localazy \u003Ca class=\"markdownit-header-anchor\" href=\"#localization-with-localazy\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>Once your app is internationalized, \u003Cstrong>localization (l10n)\u003C\u002Fstrong> comes into play, as this is where you adapt your app for specific audiences by translating the extracted text, adjusting formats, and applying cultural differences. \u003C\u002Fp>\u003Cblockquote>i18n sets up your app for global readiness, while localization makes it feel native to each user’s region\u003C\u002Fblockquote>\u003Cp>This is the part where the real fun begins. In any project, we certainly do not want to handle things that can be automated manually. \u003Cstrong>A manual approach is error-prone, boring, and takes a long time\u003C\u002Fstrong>. And localization is undoubtedly one of the processes that can benefit from automation.\u003C\u002Fp>\u003Ch3 id=\"create-a-new-project\">Create a new project \u003Ca class=\"markdownit-header-anchor\" href=\"#create-a-new-project\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>Go to \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fregister\">Localazy signup\u003C\u002Fa>, join our community by creating an account, then create a new project. We can leave it public so other contributors can freely help with translating our app. Select English as a source language (generally, of course, you can use any other). Also, enable the \u003Cem>Use community translations (\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fwhat-is-localazy-sharetm\">ShareTM\u003C\u002Fa>)\u003C\u002Fem> option, so some parts of the app can be translated automatically. \u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.46.22-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1874\" height=\"866\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.46.22-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.46.22-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.46.22-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.46.22-PM.png 1874w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>The project is successfully created. On the integration filter, we can search and choose Angular.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.49.10-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1906\" height=\"964\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.49.10-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.49.10-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.49.10-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.49.10-PM.png 1906w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Ch3 id=\"angular-integration-and-content-upload\">Angular integration and content upload \u003Ca class=\"markdownit-header-anchor\" href=\"#angular-integration-and-content-upload\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>After clicking on the \u003Cem>Angular\u003C\u002Fem> button, we see the integration instructions. \u003C\u002Fp>\u003Cp>Let’s dig into the process a step at a time:\u003C\u002Fp>\u003Col>\u003Cli>Install \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fcli\u002Finstallation\">Localazy CLI\u003C\u002Fa> by running the command in our demo app’s terminal.\u003C\u002Fli>\u003C\u002Fol>\u003Cpre>\u003Ccode>npm install -g @localazy\u002Fcli\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>2.  Afterwards, create a configuration file \u003Ccode>localazy.json\u003C\u002Fcode> in the root folder of your project. Modify the file and include the following snippets:\u003C\u002Fp>\u003Cpre>\u003Ccode>{\n\n  \"writeKey\": \"&lt;your-write-key&gt;\",\n  \"readKey\": \"&lt;your-read-key&gt;\",\n  \n  \"upload\": {  \n    \"type\": \"xliff\",\n    \"files\": \"src\u002Flocale\u002Fen.xliff\",\n    \"features\": [\"parse_plurals_icu\"]\n  },\n  \n  \"download\": {\n    \"files\": \"src\u002Flocale\u002F${lang}.xliff\"\n  }\n  \n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp> The \u003Cstrong>writeKey\u003C\u002Fstrong> and the \u003Cstrong>readKey\u003C\u002Fstrong> can be obtained from the \u003Cem>Access Keys\u003C\u002Fem> tab on the project dashboard. These keys are used to authorize our request.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.57.31-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"843\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.57.31-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.57.31-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.57.31-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.57.31-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>The \u003Cstrong>upload\u003C\u002Fstrong> section instructs Localazy CLI on how to collect files to be uploaded and, optionally, provides metadata for these files. In our case, the type of file we'll upload to the dashboard is an XLIFF file, which can be found in the \u003Ccode>\u003Cstrong>src\u002Flocale\u003C\u002Fstrong>\u003C\u002Fcode> directory. Because we have defined some plurals string resources in ICU Message Format earlier, we need to add \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fcli\u002Fxliff-20-format#icu-plurals\">parsing support\u003C\u002Fa> for ICU plurals within the upload section.\u003C\u002Fp>\u003Cp>The \u003Cstrong>download\u003C\u002Fstrong> section describes how to process translated files and where to write them. In our case, after successful translation, the downloaded translated files will be placed in \u003Cstrong>\u003Ccode>src\u002Flocale\u002F${lang}\u003C\u002Fcode>, \u003C\u002Fstrong>where \u003Cem>lang\u003C\u002Fem> is the language of the translated file.\u003C\u002Fp>\u003Cp>Now it’s finally time to upload our source language phrases to Localazy. Navigate to the project terminal and run the following command:\u003C\u002Fp>\u003Cpre>\u003Ccode>localazy upload -s\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Great! We’ve just simulated (\u003Ccode>-s\u003C\u002Fcode> stands for simulate) the upload without actually uploading anything. It is \u003Cstrong>a good practice to test out the configuration\u003C\u002Fstrong> to make sure that nothing unexpected occurs. \u003C\u002Fp>\u003Cp>For example, having an incorrect writeKey or (and) readKey pasted would output lines similar to these:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.24.06-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1146\" height=\"610\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.24.06-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.24.06-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.24.06-PM.png 1146w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>However, with the correct writeKey and readKey, a proper simulation will verify and validate the process. \u003C\u002Fp>\u003Cp>Now let’s upload the phrases for real:\u003C\u002Fp>\u003Cpre>\u003Ccode>localazy upload\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>We can either refresh the browser to see the uploaded content or redirect to the project link in the terminal:\u003C\u002Fp>\u003Cpre>\u003Ccode>Verifying...\n\nValidating...\n\nUploading 1 kB...\n\nUpload results: 9 added, 0 updated, 0 deprecated\nUsing 230 out of 800 source keys\n\nYour app on Localazy: https:\u002F\u002Flocalazy.com\u002Fp\u002Fangular-localize-app\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"translation-and-download\">Translation and download \u003Ca class=\"markdownit-header-anchor\" href=\"#translation-and-download\">🔗\u003C\u002Fa>\u003C\u002Fh3>\u003Cp>The next step is to add new languages. \u003C\u002Fp>\u003Cp>In our case, we will be translating our content to \u003Cstrong>Czech (cs)\u003C\u002Fstrong> and \u003Cstrong>Spanish(es)\u003C\u002Fstrong>:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.53.05-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1280\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.53.05-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.53.05-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.53.05-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.53.05-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Using the pluralization rules we mentioned earlier, we can notice that Localazy automatically recognized the language plural rules. When translating to Czech(cs), we can see that we have options for \u003Cem>one, few, and others\u003C\u002Fem>, while for the translation to Spanish(es), we have options for only \u003Cem>one and others \u003C\u002Fem>according to the language plural rules noted above:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.10.13-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1242\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.10.13-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.10.13-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.10.13-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.10.13-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Czech plurals.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cblockquote>Translating plural rules is possible either through pre-translation with Localazy AI or using human translators. Both suggestions can be activated for the \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Ftiers\u002Fautopilot\">Autopilot plan\u003C\u002Fa> and higher.\u003C\u002Fblockquote>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.06.33-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1129\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.06.33-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.06.33-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.06.33-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.06.33-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Spanish plurals.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>After the initial automatic translations with \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fmachine-translations\u002F\">your preferred MT engine\u003C\u002Fa> or Localazy AI, we can invite human reviewers as contributors and translators by email and assigning them a specific language to translate:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-7.14.11-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"528\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-7.14.11-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-7.14.11-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-7.14.11-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-7.14.11-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>We can also place an order for \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fcontinuous-localization-team\">professional human translators and reviewers\u003C\u002Fa> and let Localazy’s team of professional linguists handle it for you. This hybrid process checks and improve these translations, giving us speed and accuracy with less manual effort.\u003C\u002Fp>\u003Cp>Let’s finish translating our app and get back to our Angular project.\u003C\u002Fp>\u003Cp>It’s time to download our translated phrases:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-shell\">localazy download\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This command downloads all the freshly added languages and newly accepted phrases. We now have the \u003Cem>cs.xliff \u003C\u002Fem>and \u003Cem>es.xliff\u003C\u002Fem> files in our \u003Cem>locale\u003C\u002Fem> folder containing translated phrases. Let’s build the project!\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.14.07-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"640\" height=\"228\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.14.07-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.14.07-PM.png 640w\">\u003C\u002Ffigure>\u003Ch2 id=\"build-your-project-in-different-languages\">🗣️ Build your project in different languages \u003Ca class=\"markdownit-header-anchor\" href=\"#build-your-project-in-different-languages\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>Due to the deployment complexities of i18n and the need to minimize rebuild time, the development server only supports localizing a single locale at a time. For these reasons, we need to update the \u003Cem>angular.json\u003C\u002Fem> project configuration that allows serving more locales at distinct ports at the same time.\u003C\u002Fp>\u003Cp>Firstly, we need to \u003Cstrong>define locales in the build configuration\u003C\u002Fstrong>. Use the \u003Cem>i18n\u003C\u002Fem> project option to define a map of locale identifiers to translation files. Adapt the following code snippet from angular.json:\u003C\u002Fp>\u003Cpre>\u003Ccode>...\n\"projects\": {\n  \"angular-i18n-localazy-demo\": {\n    ...\n    \"i18n\": {\n        \"sourceLocale\": \"en\",\n        \"locales\": {\n           \"cs\": {\n            \"translation\": \"src\u002Flocale\u002Fcs.xliff\"\n          },\n          \"es\": {\n            \"translation\": \"src\u002Flocale\u002Fes.xliff\"\n          }\n        }\n      },\n      ...\n  }\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Next, we need to \u003Cstrong>apply specific build options for each locale\u003C\u002Fstrong>. To do that, we can create a custom locale-specific configuration by specifying a single locale, as shown in the following example:\u003C\u002Fp>\u003Cpre>\u003Ccode>...\n\"projects\": {\n  \"angular-i18n-localazy-demo\": {\n    ...\n    \"architect\": {\n      \"build\": {\n        ...\n        \"configurations\":  {\n          ...\n          \"cs\": {\n              \"localize\": [\n                \"cs\"\n              ]\n            },\n            \"es\": {\n              \"localize\": [\n                \"es\"\n              ]\n            },\n            \"en\": {\n              \"localize\": [\n                \"en\"\n              ]\n            }\n        }\n      },\n      \"serve\": {\n        ...\n        \"configurations\": {\n          ...\n          \"en\": {\n              \"buildTarget\": \"angular-i18n-localazy-demo:build:en\",\n              \"port\": 4200\n            },\n            \"cs\": {\n              \"buildTarget\": \"angular-i18n-localazy-demo:build:cs\",\n              \"port\": 4201\n            },\n            \"es\": {\n              \"buildTarget\": \"angular-i18n-localazy-demo:build:es\",\n              \"port\": 4202\n            }\n        }\n      }\n    },\n    ...\n  }\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Great! Our locale-specific project configuration is ready. Use three terminal windows pointing into the project root and run a command in each:\u003C\u002Fp>\u003Cpre>\u003Ccode># 1st terminal window\nng serve -c=en\n\n# 2nd terminal window\nng serve -c=cs\n\n# 3rd terminal window\nng serve -c=es\u003C\u002Fcode>\u003C\u002Fpre>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.26.03-PM-1.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"819\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.26.03-PM-1.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.26.03-PM-1.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.26.03-PM-1.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.26.03-PM-1.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>The source English UI.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.25.44-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"860\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.25.44-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.25.44-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.25.44-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.25.44-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>The resulting Czech UI...\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-6.17.09-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"880\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-6.17.09-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-6.17.09-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-6.17.09-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-6.17.09-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>and the translated Spanish UI.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Ch2 id=\"conclusion\">✔️ Conclusion \u003Ca class=\"markdownit-header-anchor\" href=\"#conclusion\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>In this article, we demonstrated how to use Localazy and the angular-i18n library to localize an Angular App. Localazy is a powerful tool that makes translating Angular and other applications faster, easier, error-proof, and more fun.\u003C\u002Fp>\u003Cp>Now, you can\u003Cstrong> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flocalazy\u002Fangular-i18n-example\">download the repository\u003C\u002Fa> with the demo project to explore it\u003C\u002Fstrong> or \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fregister\">start localizing Angular apps\u003C\u002Fa> on your own! If you have any questions, check out the Localazy \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fintegrations\u002Fangular\u002F\">FAQs\u003C\u002Fa> about the framework or \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fcontact\">drop the team a line\u003C\u002Fa> for quick support. 📞\u003C\u002Fp>","How to localize Angular apps with ease","Tutorial on how to add i18n support and localize Angular apps using Localazy and angular-i18n.",{"id":365,"status":5,"created_on":1939,"modified_on":1940,"icon":1941,"header":1942,"description":1943,"button_label":1944,"link":1945},"2025-04-22T13:11:52.000Z","2025-04-22T13:55:18.000Z","app","Explore our developer hub 🧑‍💻","Got questions? Find quick answers in our Developer Portal, a space built for you with easy access to repositories, documentation, SDKs, and more.","Take me there","\u002Fdeveloper-portal",{"slug":1860,"id":1853,"uuid":1947,"title":1859,"html":1948,"comment_id":1949,"feature_image":1863,"featured":160,"visibility":1950,"email_recipient_filter":1951,"created_at":1952,"updated_at":1861,"published_at":1862,"custom_excerpt":1934,"codeinjection_head":1953,"codeinjection_foot":10,"custom_template":1949,"canonical_url":10,"authors":1954,"tags":1961,"primary_author":2022,"primary_tag":2023,"url":2024,"excerpt":1934,"reading_time":15,"access":162,"send_email_when_published":160,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":1936,"meta_description":1937,"email_subject":10,"frontmatter":10,"dictionary":1871,"cta":1938,"plainTags":1864},"a1fd5ef4-33fc-4845-b01a-2450a4278808","\u003Cp>\u003Ca href=\"https:\u002F\u002Fangular.dev\u002F\">Angular\u003C\u002Fa> is a web framework that empowers developers to build fast, reliable applications. It provides a broad suite of tools, APIs, and libraries to simplify and streamline your development workflow.\u003C\u002Fp>\u003Cp>The framework gives you a solid platform on which to build fast, reliable applications that scale with both the size of your team and the size of your codebase. In this article, we will create a demo app showing how to localize an Angular app with \u003Ca href=\"https:\u002F\u002Fangular.dev\u002Fguide\u002Fi18n\">angular-18n\u003C\u002Fa> and Localazy.\u003C\u002Fp>\u003Ch2 id=\"-prerequisites\">📋 Prerequisites\u003C\u002Fh2>\u003Cul>\u003Cli>\u003Cstrong>Install\u003Ca href=\"https:\u002F\u002Fnodejs.org\u002Fen\u002F\"> Node.js\u003C\u002Fa>\u003C\u002Fstrong> if you don't have it already. The Angular CLI requires a minimum Node.js version of v20.19 for Angular v20, which is the most recent version as of the time of writing this article.\u003C\u002Fli>\u003Cli>\u003Cstrong>Install \u003Ca href=\"https:\u002F\u002Fangular.dev\u002Finstallation#install-angular-cli\">Angular CLI\u003C\u002Fa> \u003C\u002Fstrong>using the command \u003Ccode>npm install -g @angular\u002Fcli\u003C\u002Fcode>\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"-set-up-a-new-angular-project\">👩🏾‍💻 Set up a new Angular project\u003C\u002Fh2>\u003Cp>In your terminal, run the CLI command \u003Ccode>ng new\u003C\u002Fcode> with the desired project name. In the following example, we'll be using the \u003Ccode>angular-i18n-localazy-demo\u003C\u002Fcode>project name:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-shell\">ng new angular-i18n-localazy-demo\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>You will be presented with some configuration options for your project. Use the arrow and enter keys to navigate and select which options you desire.\u003C\u002Fp>\u003Cp>If you don't have any preferences, just hit Enter to take the default options and continue with the setup.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-09-at-2.57.20-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1884\" height=\"1246\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-09-at-2.57.20-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-09-at-2.57.20-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-09-at-2.57.20-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-09-at-2.57.20-PM.png 1884w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>At this point, we are ready to run our project locally!\u003C\u002Fp>\u003Cp>To start a local development server, run the command:\u003C\u002Fp>\u003Cpre>\u003Ccode>ng run start\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This command should open a browser window with the application running.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.24.31-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1426\" height=\"896\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.24.31-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.24.31-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.24.31-PM.png 1426w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>We can temporarily stop the server and initiate the process of internationalization.\u003C\u002Fp>\u003Cblockquote>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Finternationalization\">Internationalization (i18n)\u003C\u002Fa>\u003C\u002Fstrong> is the process of preparing your application to support multiple languages and regional formats without needing code changes. It involves extracting text from templates, managing translation files, and handling formats like dates or currencies.\u003C\u002Fblockquote>\u003Cp>The package that is needed for internationalization in Angular is \u003Ccode>@angular\u002Flocalize\u003C\u002Fcode>. It was introduced in v9 and adds i18n support to an Angular app. \u003C\u002Fp>\u003Cp>You can find detailed information about \u003Ca href=\"https:\u002F\u002Fangular.dev\u002Fguide\u002Fi18n\">internationalization\u003C\u002Fa> in the official Angular documentation.\u003C\u002Fp>\u003Cp>To add the \u003Ccode>@angular\u002Flocalize\u003C\u002Fcode> package, use the following command to update the \u003Ccode>package.json\u003C\u002Fcode> and TypeScript configuration files in your project:\u003C\u002Fp>\u003Cpre>\u003Ccode>ng add @angular\u002Flocalize\u003C\u002Fcode>\u003C\u002Fpre>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.54.02-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1224\" height=\"320\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.54.02-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.54.02-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-15-at-1.54.02-PM.png 1224w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Ch2 id=\"-preparing-templates-for-translations\">🔧 Preparing templates for translations\u003C\u002Fh2>\u003Cp>Our project should follow a standard Angular project structure. We’ll do some work on our \u003Ccode>app\u003C\u002Fcode> component template. The \u003Ccode>app.html\u003C\u002Fcode> file placement is shown in the tree below.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-16-at-10.48.12-AM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1140\" height=\"316\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-16-at-10.48.12-AM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-16-at-10.48.12-AM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-16-at-10.48.12-AM.png 1140w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Open the file \u003Ccode>app.html\u003C\u002Fcode> and replace its content with our boilerplate:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-Angular\">&lt;style&gt;\n  h1 {\n    font-size: 2.125rem;\n  }\n\n  main {\n    width: 60%;\n    margin: 10% auto;\n    padding: 50px;\n    background: #eae6e4;\n  }\n\n  div {\n    padding: 5px 0;\n  }\n  span {\n    padding: 5px;\n  }\n&lt;\u002Fstyle&gt;\n\n&lt;main class=\"main\"&gt;\n  &lt;!-- CODE 1 --&gt;\n  &lt;h1 i18n&gt;\n    Hello!! We're thrilled that you've decided to use Localazy for translating your {{ title() }} app!\n  &lt;\u002Fh1&gt;\n\n  &lt;!-- CODE 2 --&gt;\n &lt;ng-container i18n&gt;I am free, wrapped just in a body&lt;\u002Fng-container&gt;\n\n  &lt;!-- CODE 3 --&gt;\n  &lt;div\n    i18n=\"merged div translation\"\n    i18n-data-title=\"merged div translation\"\n    data-title=\"Can we also translate this? Awesome!\"\n  &gt;\n    Can we also translate this? Awesome!\n  &lt;\u002Fdiv&gt;\n\n  &lt;!-- CODE 3 --&gt;\n  &lt;div&gt;\n    &lt;input type=\"number\" min=\"0\" [(ngModel)]=\"minutes\" \u002F&gt;\n    &lt;span i18=\"icu_plural\"&gt;\n      Updated {minutes(), plural, =1 {one minute ago} other {{{ minutes() }} minutes ago}}\n    &lt;\u002Fspan&gt;\n  &lt;\u002Fdiv&gt;\n\n  &lt;!-- CODE 4 --&gt;\n  &lt;div&gt;\n    &lt;select [(ngModel)]=\"user\"&gt;\n      &lt;option value=\"male\" i18n&gt;Male&lt;\u002Foption&gt;\n      &lt;option value=\"female\" i18n&gt;Female&lt;\u002Foption&gt;\n      &lt;option value=\"you\" i18n&gt;in love with Localazy!&lt;\u002Foption&gt;\n    &lt;\u002Fselect&gt;\n    &lt;span i18n&gt;The author is {{ user() }}&lt;\u002Fspan&gt;\n  &lt;\u002Fdiv&gt;\n&lt;\u002Fmain&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"block-1-i18n-attribute\">Block 1: i18n attribute\u003C\u002Fh3>\u003Cpre>\u003Ccode>&lt;h1 i18n&gt;\n    Hello!! We're thrilled that you've decided to use Localazy for translating your {{ title() }} app!\n &lt;\u002Fh1&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The \u003Ccode>i18n\u003C\u002Fcode> attribute marks the text within the \u003Cem>&lt;h1&gt;\u003C\u002Fem> tag for translation. The extracted translated files will appear in the translation file, allowing translators to provide equivalents in other languages. \u003C\u002Fp>\u003Ch3 id=\"block-2-text-grouping\">Block 2: Text grouping\u003C\u002Fh3>\u003Cpre>\u003Ccode>&lt;ng-container i18n&gt;I am free, wrapped just in a body&lt;\u002Fng-container&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Ccode>&lt;ng-container&gt;\u003C\u002Fcode> is a\u003Cstrong> \u003C\u002Fstrong>grouping element in Angular templates that does not render any actual HTML in the DOM. This means the text exists freely within the body without any form of tags or wrappers. The \u003Ccode>i18n\u003C\u002Fcode> attribute also marks the text within for translation.\u003C\u002Fp>\u003Ch3 id=\"block-3-data-attributes\">Block 3: Data attributes\u003C\u002Fh3>\u003Cpre>\u003Ccode> &lt;div\n    i18n=\"merged div translation\"\n    i18n-data-title=\"merged div translation\"\n    data-title=\"Can we also translate this? Awesome!\"\n  &gt;\n    Can we also translate this? Awesome!\n  &lt;\u002Fdiv&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Within the &lt;div&gt; tag, we can translate both the element text and HTML attributes (like \u003Ccode>data-title\u003C\u002Fcode>). \u003C\u002Fp>\u003Cp>\u003Ccode>i18n=\"merged div translation\"\u003C\u002Fcode> provides a description to translators, while \u003Ccode>i18n-data-title=\"merged div translation\"\u003C\u002Fcode> marks the data-title attribute for translation as well.\u003C\u002Fp>\u003Ch3 id=\"block-4-pluralization\">Block 4: Pluralization\u003C\u002Fh3>\u003Cpre>\u003Ccode> &lt;div&gt;\n     &lt;input type=\"number\" min=\"0\" [(ngModel)]=\"minutes\" \u002F&gt;\n      &lt;br \u002F&gt;\n      &lt;span i18n&gt;Updated &lt;\u002Fspan&gt;\n      &lt;span i18=\"icu_plural\"&gt;\n        {minutes(), plural, =1 {one minute ago} other {{{ minutes() }} minutes ago}}\n      &lt;\u002Fspan&gt;\n &lt;\u002Fdiv&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This block handles pluralization with Angular’s ICU syntax. The input binds to the component variable \u003Ccode>minutes\u003C\u002Fcode> using \u003Ccode>[(ngModel)]\u003C\u002Fcode>. The first span marks the text within the tag for translation. The second span displays a message that depends on the \u003Ccode>\u003Cstrong>minutes\u003C\u002Fstrong>\u003C\u002Fcode> value:\u003C\u002Fp>\u003Cp>If \u003Ccode>minutes\u003C\u002Fcode> == 1, the span reflects \u003Cem>one minute ago\u003C\u002Fem>. Otherwise, the span shows, for example, \u003Cem>5 minutes ago\u003C\u002Fem>.\u003C\u002Fp>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-blue\">\u003Cdiv class=\"kg-callout-emoji\">☝️\u003C\u002Fdiv>\u003Cdiv class=\"kg-callout-text\">\u003Cstrong>Note\u003C\u002Fstrong>: Different languages abide by diverse pluralization rules. Following these rules is \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Fpluralization-in-software-localization-beginners-guide\u002F\">one of the most demanding tasks\u003C\u002Fa> when localizing apps. For instance, English has pretty straightforward rules. A word can have either a singular or a plural form (also known as \u003Cem>“one”\u003C\u002Fem> and \u003Cem>“other”\u003C\u002Fem>). The Czech language, however, is quite complicated as it distinguishes \u003Cem>“one”\u003C\u002Fem>, \u003Cem>“few”,\u003C\u002Fem> and \u003Cem>“other”\u003C\u002Fem> forms. Luckily, \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Ffeatures\u002Fplurals\u002F\">Localazy covers the entire specification\u003C\u002Fa> automatically!\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cp>The code snippet above respects the \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fcldr\">CLDR\u003C\u002Fa> rules and, therefore, will be parsed in Localazy. If we don’t respect the rules, we do not lose a phrase, don’t worry. It will be transferred to Localazy and kept as-is.\u003C\u002Fp>\u003Cblockquote>You can get familiar with the list of possible forms for common world languages on the \u003Ca href=\"https:\u002F\u002Funicode-org.github.io\u002Fcldr-staging\u002Fcharts\u002F37\u002Fsupplemental\u002Flanguage_plural_rules.html\">Language Plural Rules\u003C\u002Fa> of the \u003Ca href=\"http:\u002F\u002Fcldr.unicode.org\u002F\">Unicode Common Locale Data Repository (CLDR)\u003C\u002Fa>\u003C\u002Fblockquote>\u003Ch3 id=\"block-5-user-attributes\">Block 5: User attributes\u003C\u002Fh3>\u003Cpre>\u003Ccode>&lt;div&gt;\n    &lt;select [(ngModel)]=\"user\"&gt;\n      &lt;option value=\"male\" i18n&gt;Male&lt;\u002Foption&gt;\n      &lt;option value=\"female\" i18n&gt;Female&lt;\u002Foption&gt;\n      &lt;option value=\"you\" i18n&gt;in love with Localazy!&lt;\u002Foption&gt;\n    &lt;\u002Fselect&gt;\n    &lt;span i18n&gt;The author is {{ user() }}&lt;\u002Fspan&gt;\n  &lt;\u002Fdiv&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The \u003Ccode>&lt;select&gt;\u003C\u002Fcode> binds to a component variable user. The options themselves (Male, Female, etc.) are marked with i18n for translation. \u003C\u002Fp>\u003Cp>The span displays: \"The author is male\" \u002F \"The author is female\" \u002F \"The author is in love with Localazy!\" depending on the selected value.\u003C\u002Fp>\u003Cp>To avoid compilation errors, we need to import \u003Ccode>FormsModule\u003C\u002Fcode> into our \u003Ccode>app.ts\u003C\u002Fcode> file. This gives template-driven forms support, like \u003Ccode>[(ngModel)]\u003C\u002Fcode>. \u003C\u002Fp>\u003Cp>We can also include the code snippets:\u003C\u002Fp>\u003Cpre>\u003Ccode>protected readonly minutes = signal(0);\nprotected readonly user = signal('localazy');\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Cstrong>Signal\u003C\u002Fstrong> is the new Angular reactive primitive (introduced in Angular v16) used to create reactive state variables just like \u003Ccode>useState()\u003C\u002Fcode>in React. Each property (\u003Ccode>minutes\u003C\u002Fcode>, \u003Ccode>user\u003C\u002Fcode>) is a \u003Cstrong>signal, \u003C\u002Fstrong>a reactive value that automatically triggers re-render when changed.\u003C\u002Fp>\u003Cp>Modify the file so it looks like this:\u003C\u002Fp>\u003Cpre>\u003Ccode>import { Component, signal } from '@angular\u002Fcore';\nimport { RouterOutlet } from '@angular\u002Frouter';\nimport { FormsModule } from '@angular\u002Fforms';\n\n@Component({\n  selector: 'app-root',\n  imports: [RouterOutlet, FormsModule],\n  templateUrl: '.\u002Fapp.html',\n  styleUrl: '.\u002Fapp.css'\n})\nexport class App {\n  protected readonly title = signal('angular-i18n-localazy-demo');\n  protected readonly minutes = signal(0);\n  protected readonly user = signal('localazy');\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The UI should be similar to the following screenshot:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-20-at-4.28.10-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"732\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-20-at-4.28.10-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-20-at-4.28.10-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-20-at-4.28.10-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-20-at-4.28.10-PM.png 2116w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Ch2 id=\"-extracting-a-source-language-file\">📨 Extracting a source language file\u003C\u002Fh2>\u003Cp>Our template is now prepared and ready to be translated. Now we need to define a source language in the \u003Ccode>angular.json\u003C\u002Fcode> configuration file. Open the file and add:\u003C\u002Fp>\u003Cpre>\u003Ccode>...\n\"projects\": {\n  \"angular-i18n-localazy-demo\": {\n    ...\n    \"i18n\": {\n        \"sourceLocale\": \"en\",\n      },\n      ...\n  }\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>To ensure that we have a correct setup, a \u003Ccode>sourceLocale\u003C\u002Fcode> value should be equal to Localazy project’s source language code (in our case \u003Cem>“en”\u003C\u002Fem>).\u003C\u002Fp>\u003Cp>Next, we'll use the Angular CLI command to extract the marked text in the template into the source language file. Open a terminal window in the project root directory and run:\u003C\u002Fp>\u003Cpre>\u003Ccode>ng extract-i18n --output-path src\u002Flocale --out-file en.xliff --format=xlf2\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This command creates a \u003Ccode>en.xliff\u003C\u002Fcode> file in the \u003Ccode>.\u002Fsrc\u002Flocale\u003C\u002Fcode> directory.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.42.26-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"660\" height=\"148\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.42.26-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.42.26-PM.png 660w\">\u003C\u002Ffigure>\u003Ch2 id=\"-localization-with-localazy\">🪁 Localization with Localazy\u003C\u002Fh2>\u003Cp>Once your app is internationalized, \u003Cstrong>localization (l10n)\u003C\u002Fstrong> comes into play, as this is where you adapt your app for specific audiences by translating the extracted text, adjusting formats, and applying cultural differences. \u003C\u002Fp>\u003Cblockquote>i18n sets up your app for global readiness, while localization makes it feel native to each user’s region\u003C\u002Fblockquote>\u003Cp>This is the part where the real fun begins. In any project, we certainly do not want to handle things that can be automated manually. \u003Cstrong>A manual approach is error-prone, boring, and takes a long time\u003C\u002Fstrong>. And localization is undoubtedly one of the processes that can benefit from automation.\u003C\u002Fp>\u003Ch3 id=\"create-a-new-project\">Create a new project\u003C\u002Fh3>\u003Cp>Go to \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fregister\">Localazy signup\u003C\u002Fa>, join our community by creating an account, then create a new project. We can leave it public so other contributors can freely help with translating our app. Select English as a source language (generally, of course, you can use any other). Also, enable the \u003Cem>Use community translations (\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fwhat-is-localazy-sharetm\">ShareTM\u003C\u002Fa>)\u003C\u002Fem> option, so some parts of the app can be translated automatically. \u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.46.22-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1874\" height=\"866\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.46.22-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.46.22-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.46.22-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.46.22-PM.png 1874w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>The project is successfully created. On the integration filter, we can search and choose Angular.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.49.10-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1906\" height=\"964\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.49.10-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.49.10-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.49.10-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.49.10-PM.png 1906w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Ch3 id=\"angular-integration-and-content-upload\">Angular integration and content upload\u003C\u002Fh3>\u003Cp>After clicking on the \u003Cem>Angular\u003C\u002Fem> button, we see the integration instructions. \u003C\u002Fp>\u003Cp>Let’s dig into the process a step at a time:\u003C\u002Fp>\u003Col>\u003Cli>Install \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fcli\u002Finstallation\">Localazy CLI\u003C\u002Fa> by running the command in our demo app’s terminal.\u003C\u002Fli>\u003C\u002Fol>\u003Cpre>\u003Ccode>npm install -g @localazy\u002Fcli\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>2.  Afterwards, create a configuration file \u003Ccode>localazy.json\u003C\u002Fcode> in the root folder of your project. Modify the file and include the following snippets:\u003C\u002Fp>\u003Cpre>\u003Ccode>{\n\n  \"writeKey\": \"&lt;your-write-key&gt;\",\n  \"readKey\": \"&lt;your-read-key&gt;\",\n  \n  \"upload\": {  \n    \"type\": \"xliff\",\n    \"files\": \"src\u002Flocale\u002Fen.xliff\",\n    \"features\": [\"parse_plurals_icu\"]\n  },\n  \n  \"download\": {\n    \"files\": \"src\u002Flocale\u002F${lang}.xliff\"\n  }\n  \n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp> The \u003Cstrong>writeKey\u003C\u002Fstrong> and the \u003Cstrong>readKey\u003C\u002Fstrong> can be obtained from the \u003Cem>Access Keys\u003C\u002Fem> tab on the project dashboard. These keys are used to authorize our request.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.57.31-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"843\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.57.31-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.57.31-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.57.31-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-3.57.31-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>The \u003Cstrong>upload\u003C\u002Fstrong> section instructs Localazy CLI on how to collect files to be uploaded and, optionally, provides metadata for these files. In our case, the type of file we'll upload to the dashboard is an XLIFF file, which can be found in the \u003Ccode>\u003Cstrong>src\u002Flocale\u003C\u002Fstrong>\u003C\u002Fcode> directory. Because we have defined some plurals string resources in ICU Message Format earlier, we need to add \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fcli\u002Fxliff-20-format#icu-plurals\">parsing support\u003C\u002Fa> for ICU plurals within the upload section.\u003C\u002Fp>\u003Cp>The \u003Cstrong>download\u003C\u002Fstrong> section describes how to process translated files and where to write them. In our case, after successful translation, the downloaded translated files will be placed in \u003Cstrong>\u003Ccode>src\u002Flocale\u002F${lang}\u003C\u002Fcode>, \u003C\u002Fstrong>where \u003Cem>lang\u003C\u002Fem> is the language of the translated file.\u003C\u002Fp>\u003Cp>Now it’s finally time to upload our source language phrases to Localazy. Navigate to the project terminal and run the following command:\u003C\u002Fp>\u003Cpre>\u003Ccode>localazy upload -s\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Great! We’ve just simulated (\u003Ccode>-s\u003C\u002Fcode> stands for simulate) the upload without actually uploading anything. It is \u003Cstrong>a good practice to test out the configuration\u003C\u002Fstrong> to make sure that nothing unexpected occurs. \u003C\u002Fp>\u003Cp>For example, having an incorrect writeKey or (and) readKey pasted would output lines similar to these:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.24.06-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1146\" height=\"610\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.24.06-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.24.06-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.24.06-PM.png 1146w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>However, with the correct writeKey and readKey, a proper simulation will verify and validate the process. \u003C\u002Fp>\u003Cp>Now let’s upload the phrases for real:\u003C\u002Fp>\u003Cpre>\u003Ccode>localazy upload\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>We can either refresh the browser to see the uploaded content or redirect to the project link in the terminal:\u003C\u002Fp>\u003Cpre>\u003Ccode>Verifying...\n\nValidating...\n\nUploading 1 kB...\n\nUpload results: 9 added, 0 updated, 0 deprecated\nUsing 230 out of 800 source keys\n\nYour app on Localazy: https:\u002F\u002Flocalazy.com\u002Fp\u002Fangular-localize-app\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"translation-and-download\">Translation and download\u003C\u002Fh3>\u003Cp>The next step is to add new languages. \u003C\u002Fp>\u003Cp>In our case, we will be translating our content to \u003Cstrong>Czech (cs)\u003C\u002Fstrong> and \u003Cstrong>Spanish(es)\u003C\u002Fstrong>:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.53.05-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1280\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.53.05-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.53.05-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.53.05-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-4.53.05-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>Using the pluralization rules we mentioned earlier, we can notice that Localazy automatically recognized the language plural rules. When translating to Czech(cs), we can see that we have options for \u003Cem>one, few, and others\u003C\u002Fem>, while for the translation to Spanish(es), we have options for only \u003Cem>one and others \u003C\u002Fem>according to the language plural rules noted above:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.10.13-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1242\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.10.13-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.10.13-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.10.13-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.10.13-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Czech plurals.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cblockquote>Translating plural rules is possible either through pre-translation with Localazy AI or using human translators. Both suggestions can be activated for the \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Ftiers\u002Fautopilot\">Autopilot plan\u003C\u002Fa> and higher.\u003C\u002Fblockquote>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.06.33-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1129\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.06.33-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.06.33-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.06.33-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.06.33-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Spanish plurals.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>After the initial automatic translations with \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fmachine-translations\u002F\">your preferred MT engine\u003C\u002Fa> or Localazy AI, we can invite human reviewers as contributors and translators by email and assigning them a specific language to translate:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-7.14.11-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"528\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-7.14.11-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-7.14.11-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-7.14.11-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-7.14.11-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>We can also place an order for \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fcontinuous-localization-team\">professional human translators and reviewers\u003C\u002Fa> and let Localazy’s team of professional linguists handle it for you. This hybrid process checks and improve these translations, giving us speed and accuracy with less manual effort.\u003C\u002Fp>\u003Cp>Let’s finish translating our app and get back to our Angular project.\u003C\u002Fp>\u003Cp>It’s time to download our translated phrases:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-shell\">localazy download\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This command downloads all the freshly added languages and newly accepted phrases. We now have the \u003Cem>cs.xliff \u003C\u002Fem>and \u003Cem>es.xliff\u003C\u002Fem> files in our \u003Cem>locale\u003C\u002Fem> folder containing translated phrases. Let’s build the project!\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.14.07-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"640\" height=\"228\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.14.07-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.14.07-PM.png 640w\">\u003C\u002Ffigure>\u003Ch2 id=\"-build-your-project-in-different-languages\">🗣️ Build your project in different languages\u003C\u002Fh2>\u003Cp>Due to the deployment complexities of i18n and the need to minimize rebuild time, the development server only supports localizing a single locale at a time. For these reasons, we need to update the \u003Cem>angular.json\u003C\u002Fem> project configuration that allows serving more locales at distinct ports at the same time.\u003C\u002Fp>\u003Cp>Firstly, we need to \u003Cstrong>define locales in the build configuration\u003C\u002Fstrong>. Use the \u003Cem>i18n\u003C\u002Fem> project option to define a map of locale identifiers to translation files. Adapt the following code snippet from angular.json:\u003C\u002Fp>\u003Cpre>\u003Ccode>...\n\"projects\": {\n  \"angular-i18n-localazy-demo\": {\n    ...\n    \"i18n\": {\n        \"sourceLocale\": \"en\",\n        \"locales\": {\n           \"cs\": {\n            \"translation\": \"src\u002Flocale\u002Fcs.xliff\"\n          },\n          \"es\": {\n            \"translation\": \"src\u002Flocale\u002Fes.xliff\"\n          }\n        }\n      },\n      ...\n  }\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Next, we need to \u003Cstrong>apply specific build options for each locale\u003C\u002Fstrong>. To do that, we can create a custom locale-specific configuration by specifying a single locale, as shown in the following example:\u003C\u002Fp>\u003Cpre>\u003Ccode>...\n\"projects\": {\n  \"angular-i18n-localazy-demo\": {\n    ...\n    \"architect\": {\n      \"build\": {\n        ...\n        \"configurations\":  {\n          ...\n          \"cs\": {\n              \"localize\": [\n                \"cs\"\n              ]\n            },\n            \"es\": {\n              \"localize\": [\n                \"es\"\n              ]\n            },\n            \"en\": {\n              \"localize\": [\n                \"en\"\n              ]\n            }\n        }\n      },\n      \"serve\": {\n        ...\n        \"configurations\": {\n          ...\n          \"en\": {\n              \"buildTarget\": \"angular-i18n-localazy-demo:build:en\",\n              \"port\": 4200\n            },\n            \"cs\": {\n              \"buildTarget\": \"angular-i18n-localazy-demo:build:cs\",\n              \"port\": 4201\n            },\n            \"es\": {\n              \"buildTarget\": \"angular-i18n-localazy-demo:build:es\",\n              \"port\": 4202\n            }\n        }\n      }\n    },\n    ...\n  }\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Great! Our locale-specific project configuration is ready. Use three terminal windows pointing into the project root and run a command in each:\u003C\u002Fp>\u003Cpre>\u003Ccode># 1st terminal window\nng serve -c=en\n\n# 2nd terminal window\nng serve -c=cs\n\n# 3rd terminal window\nng serve -c=es\u003C\u002Fcode>\u003C\u002Fpre>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.26.03-PM-1.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"819\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.26.03-PM-1.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.26.03-PM-1.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.26.03-PM-1.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.26.03-PM-1.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>The source English UI.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cp>\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.25.44-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"860\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.25.44-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.25.44-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.25.44-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-21-at-5.25.44-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>The resulting Czech UI...\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-6.17.09-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"880\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-6.17.09-PM.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-6.17.09-PM.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1600\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-6.17.09-PM.png 1600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw2400\u002F2025\u002F10\u002FScreenshot-2025-10-28-at-6.17.09-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>and the translated Spanish UI.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Ch2 id=\"-conclusion\">✔️ Conclusion\u003C\u002Fh2>\u003Cp>In this article, we demonstrated how to use Localazy and the angular-i18n library to localize an Angular App. Localazy is a powerful tool that makes translating Angular and other applications faster, easier, error-proof, and more fun.\u003C\u002Fp>\u003Cp>Now, you can\u003Cstrong> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flocalazy\u002Fangular-i18n-example\">download the repository\u003C\u002Fa> with the demo project to explore it\u003C\u002Fstrong> or \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fregister\">start localizing Angular apps\u003C\u002Fa> on your own! If you have any questions, check out the Localazy \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fintegrations\u002Fangular\u002F\">FAQs\u003C\u002Fa> about the framework or \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fcontact\">drop the team a line\u003C\u002Fa> for quick support. 📞\u003C\u002Fp>","89","public","none","2021-04-05T18:39:08.000+02:00","{\"intercomArticleUrl\":\"\"}",[1955],{"id":1855,"name":1856,"slug":1857,"profile_image":1858,"cover_image":10,"bio":1956,"website":1957,"location":1958,"facebook":10,"twitter":1959,"meta_title":10,"meta_description":10,"url":1960},"I am a backend developer that focuses more on JavaScript technologies. I have a flair for writing and I am looking to improve my knowledge as a developer through technical writing.","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fmary-okosun-a5195915b","Lagos, Nigeria","@marynoir_","https:\u002F\u002Fghost.localazy.com\u002Fauthor\u002Fmary-okosun\u002F",[1962,1965,1968,1973,1978,1984,1989,1992,1997,2002,2007,2012,2017],{"id":1963,"name":1866,"slug":1867,"description":1866,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":1964},"60a37fc7cf7b6a0001d1f0fa","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fhowto\u002F",{"id":1966,"name":621,"slug":620,"description":621,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":1967},"60a37fc7cf7b6a0001d1f10b","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fangular\u002F",{"id":1969,"name":1970,"slug":1971,"description":1876,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":1972},"60a37fc7cf7b6a0001d1f162","[DICT] Angular","term-69","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-69\u002F",{"id":1974,"name":1975,"slug":1976,"description":1885,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":1977},"60a37fc7cf7b6a0001d1f16c","[DICT] Internationalization (i18n)","term-79","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-79\u002F",{"id":1979,"name":1980,"slug":1981,"description":1982,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":1983},"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":1985,"name":1986,"slug":1987,"description":10,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":1988},"60fffb486f8ebe0001bd8ddd","[COMSHARE]","comshare","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fcomshare\u002F",{"id":1990,"name":1870,"slug":1870,"description":10,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":1991},"60f567ab6f8ebe0001bd80ec","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fi18n\u002F",{"id":1993,"name":1994,"slug":1995,"description":10,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":1996},"61a0daffdf4bcb00010bc50c","[SYNDICATE]","syndicate","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fsyndicate\u002F",{"id":1998,"name":1999,"slug":2000,"description":10,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":2001},"64710a2f047091000193ca3d","[INTERCOM]","intercom","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fintercom\u002F",{"id":2003,"name":2004,"slug":2005,"description":1943,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":2006},"6807959863350c0001d59590","[CTA] Explore our developer hub","cta-45","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fcta-45\u002F",{"id":2008,"name":2009,"slug":2010,"description":10,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":2011},"670f4deb34f1ce00011a4443","[AD] Intercom","ad-23","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fad-23\u002F",{"id":2013,"name":2014,"slug":2015,"description":1912,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":2016},"67f7fb3563350c0001d58fee","[DICT] ICU Message Format","term-255","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-255\u002F",{"id":2018,"name":2019,"slug":2020,"description":1930,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":2021},"60a37fc7cf7b6a0001d1f141","[DICT] Locale","term-36","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-36\u002F",{"id":1855,"name":1856,"slug":1857,"profile_image":1858,"cover_image":10,"bio":1956,"website":1957,"location":1958,"facebook":10,"twitter":1959,"meta_title":10,"meta_description":10,"url":1960},{"id":1963,"name":1866,"slug":1867,"description":1866,"feature_image":10,"visibility":1950,"og_image":10,"og_title":10,"og_description":10,"twitter_image":10,"twitter_title":10,"twitter_description":10,"meta_title":10,"meta_description":10,"codeinjection_head":10,"codeinjection_foot":10,"canonical_url":10,"accent_color":10,"url":1964},"https:\u002F\u002Fghost.localazy.com\u002Flocalize-angular-app-i18n-l10n-localazy\u002F",[2026,2048,2065],{"id":2027,"owner":2028,"created_by":10,"sort":10,"title":2033,"slug":2034,"modified_on":877,"created_on":2035,"pinned":160,"badge":10,"priority":1824,"main_image":2036,"status":5,"tags":2037,"dictionary":2047,"reading_time":1835,"excerpt":-1,"og_title":877,"og_description":877,"og_image":877},"6372308e04709100019374c9",{"id":2029,"first_name":2030,"last_name":877,"slug":2031,"avatar":2032},"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",[2038,2040,2041,2044],{"id":2039,"created_on":1828,"status":5,"label":671,"slug":670,"on_index_page":162},6183,{"id":451,"created_on":1828,"status":5,"label":1866,"slug":1867,"on_index_page":160},{"id":451,"created_on":1828,"status":5,"label":2042,"slug":2043,"on_index_page":162},"DevTips","devtips",{"id":411,"created_on":1828,"status":5,"label":2045,"slug":2046,"on_index_page":160},"Design","design",[],{"id":2049,"owner":2050,"created_by":10,"sort":10,"title":2051,"slug":2052,"modified_on":877,"created_on":2053,"pinned":160,"badge":10,"priority":1824,"main_image":2054,"status":5,"tags":2055,"dictionary":2064,"reading_time":1835,"excerpt":-1,"og_title":877,"og_description":877,"og_image":877},"63dd1bf30470910001939f8b",{"id":1855,"first_name":1856,"last_name":877,"slug":1857,"avatar":1858},"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",[2056,2057,2060,2061],{"id":451,"created_on":1828,"status":5,"label":771,"slug":775,"on_index_page":160},{"id":451,"created_on":1828,"status":5,"label":2058,"slug":2059,"on_index_page":160},"Automated Localization","automated-localization",{"id":451,"created_on":1828,"status":5,"label":1866,"slug":1867,"on_index_page":160},{"id":451,"created_on":1828,"status":5,"label":2062,"slug":2063,"on_index_page":160},"Guide","guide",[],{"id":2066,"owner":2067,"created_by":10,"sort":10,"title":2072,"slug":2073,"modified_on":877,"created_on":2074,"pinned":160,"badge":10,"priority":1824,"main_image":2075,"status":5,"tags":2076,"dictionary":2080,"reading_time":1835,"excerpt":-1,"og_title":877,"og_description":877,"og_image":877},"60a37fc7cf7b6a0001d1f18c",{"id":2068,"first_name":2069,"last_name":877,"slug":2070,"avatar":2071},"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",[2077,2078,2079],{"id":451,"created_on":1828,"status":5,"label":593,"slug":592,"on_index_page":160},{"id":451,"created_on":1828,"status":5,"label":352,"slug":1833,"on_index_page":162},{"id":451,"created_on":1828,"status":5,"label":1866,"slug":1867,"on_index_page":160},[],{"id":280,"sort":10,"created_on":2082,"name":2083,"cta_link":2084,"banner_image":2085},"2024-10-15T21:44:30.000Z","Intercom","https:\u002F\u002Flocalazy.com\u002Fintercom",{"id":2086},"d9023582-0426-4865-b4f9-b6f9d327bf6e"]