[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-homepage":3,"footer-settings":84,"main-navigation":220,"footer-integrations":903,"faq-how-to-use-format-conversions-feature":1814,"faq-how-to-use-format-conversions-feature-structured":1999,"blog-post-nav-nav":2000,"blog-post-nav-[USE LATEST FEATURED]":2022},{"status":4,"header_badges":5,"footer_badges":27,"footer_secured_badges":34,"slider_badges":48},"published",[6,15,21],{"id":7,"status":4,"sort":8,"link":9,"title":10,"badgeType":11,"badgeName":12,"metadata":8,"image":13},1,null,"https:\u002F\u002Fwww.g2.com\u002Fproducts\u002Flocalazy\u002Freviews","Best meets requirements","Other","G2-winter-24-best-meets-requirments",{"id":14},"8d5dd6fd-6995-4c92-8219-a6ed5ba6acdc",{"id":16,"status":4,"sort":8,"link":9,"title":17,"badgeType":11,"badgeName":18,"metadata":8,"image":19},2,"Best support","G2-winter-24-best-support",{"id":20},"e59dd465-84d9-45c7-987d-dd4048fd6992",{"id":22,"status":4,"sort":8,"link":9,"title":23,"badgeType":11,"badgeName":24,"metadata":8,"image":25},3,"Easiest admin","G2-winter-24-easiest-admin",{"id":26},"5f12c4c8-bec0-47cf-87b4-a4502e9f1bd2",[28],{"id":29,"status":4,"sort":8,"link":9,"title":30,"badgeType":11,"badgeName":31,"metadata":8,"image":32},12,"Users love us","Users love us 25",{"id":33},"232416a5-86ba-4be6-85a5-b88802003d53",[35,42],{"id":36,"status":4,"sort":8,"link":37,"title":38,"badgeType":11,"badgeName":39,"metadata":8,"image":40},11,"https:\u002F\u002Fsprinto.com\u002Fget-iso-27001\u002F","Sprinto ISO 27001","Sprinto ISO 27001 certificate",{"id":41},"c1c6c06c-6caf-4b78-8a7e-9606c395eb61",{"id":43,"status":4,"sort":8,"link":44,"title":45,"badgeType":11,"badgeName":45,"metadata":8,"image":46},13,"https:\u002F\u002Fwww.aicpa.org\u002Fsoc4so","SOC certificate",{"id":47},"4f4bc0a6-09a0-41df-8295-8f990d96d941",[49,56,61,66,71,76,82],{"id":50,"status":4,"sort":8,"link":9,"title":51,"badgeType":11,"badgeName":52,"metadata":53,"image":54},5,"Most likely to recommend","a","",{"id":55},"da055731-3f11-4fc7-96f2-c11c0b84c831",{"id":57,"status":4,"sort":8,"link":9,"title":58,"badgeType":11,"badgeName":8,"metadata":8,"image":59},6,"EMEA High Performer",{"id":60},"586fb488-81f2-41db-a4e8-ef309e50c0e6",{"id":62,"status":4,"sort":8,"link":9,"title":63,"badgeType":11,"badgeName":8,"metadata":8,"image":64},7,"Ease of Doing Business With",{"id":65},"bfa26865-430e-463d-9886-cb56a8a8ecf6",{"id":67,"status":4,"sort":8,"link":9,"title":68,"badgeType":11,"badgeName":8,"metadata":8,"image":69},8,"High Performer",{"id":70},"2cc1ba0f-c23a-4c97-ad4a-a655c97466fe",{"id":72,"status":4,"sort":8,"link":9,"title":73,"badgeType":11,"badgeName":8,"metadata":8,"image":74},9,"Fastest Implementation",{"id":75},"6f297758-1c95-45f4-a6e9-528319897132",{"id":77,"status":4,"sort":8,"link":78,"title":79,"badgeType":11,"badgeName":8,"metadata":8,"image":80},10,"https:\u002F\u002Fwww.intercert.com\u002Fservices\u002Fgovernance-risk-compliance\u002Fiso-iec-27001","Intercert ISO 27001",{"id":81},"0521a5f1-e1f2-4da6-a2bc-dc92773f2a7b",{"id":36,"status":4,"sort":8,"link":37,"title":38,"badgeType":11,"badgeName":39,"metadata":8,"image":83},{"id":41},{"id":7,"status":4,"security_section_title":85,"loved_section_title":86,"columns":87,"social_links":180,"policy_links":210},"Secured & trusted","Loved by users",[88,102,119,141,145],{"id":7,"status":4,"sort":8,"title":89,"column_key":90,"links":91},"Localazy","connect",[92,95,98],{"id":36,"status":4,"sort":7,"title":93,"url":94},"Book a demo","___LOCALAZY_MEETING_URL___",{"id":29,"status":4,"sort":16,"title":96,"url":97},"Contact","\u002Fcontact",{"id":99,"status":4,"sort":22,"title":100,"url":101},21,"About us","\u002Fabout-us",{"id":16,"status":4,"sort":8,"title":103,"column_key":104,"links":105},"Programs","programs",[106,110,113,116],{"id":7,"status":4,"sort":107,"title":108,"url":109},4,"Partner Program","\u002Fpartnership",{"id":16,"status":4,"sort":50,"title":111,"url":112},"Ambassador Program","\u002Fambassador",{"id":22,"status":4,"sort":57,"title":114,"url":115},"Startup Program","\u002Ffor\u002Fstartups",{"id":107,"status":4,"sort":62,"title":117,"url":118},"Nonprofits","\u002Ffor\u002Fnonprofit",{"id":22,"status":4,"sort":8,"title":120,"column_key":121,"links":122},"Use Cases","use_cases",[123,126,129,132,135,138],{"id":50,"status":4,"sort":67,"title":124,"url":125},"Software Localization","\u002Fterm\u002Fsoftware-localization",{"id":57,"status":4,"sort":72,"title":127,"url":128},"Machine Translation Services","\u002Ffeatures\u002Fmachine-translation",{"id":62,"status":4,"sort":77,"title":130,"url":131},"Translation API","\u002Ffeatures\u002Ftranslation-api",{"id":67,"status":4,"sort":36,"title":133,"url":134},"Crowdsourced Translations","\u002Ffeatures\u002Fshare-tm",{"id":72,"status":4,"sort":29,"title":136,"url":137},"Figma i18n & localization","\u002Ffeatures\u002Ffigma-localization-plugin",{"id":77,"status":4,"sort":43,"title":139,"url":140},"Translation as a Service","\u002Fterm\u002Ftranslation-service",{"id":107,"status":4,"sort":8,"title":142,"column_key":143,"links":144},"Integrations","integrations",[],{"id":50,"status":4,"sort":8,"title":146,"column_key":147,"links":148},"Resources","resources",[149,153,157,161,165,169,173,177],{"id":43,"status":4,"sort":150,"title":151,"url":152},14,"Documentation","\u002Fdocs",{"id":150,"status":4,"sort":154,"title":155,"url":156},15,"Dictionary","\u002Fdictionary",{"id":154,"status":4,"sort":158,"title":159,"url":160},16,"Case Studies","\u002Fcase-study",{"id":158,"status":4,"sort":162,"title":163,"url":164},17,"Discussion forum","___DISCUSS_URL___",{"id":162,"status":4,"sort":166,"title":167,"url":168},18,"Localization Blog","\u002Fblog",{"id":166,"status":4,"sort":170,"title":171,"url":172},19,"FAQ","\u002Ffaq",{"id":170,"status":4,"sort":174,"title":175,"url":176},20,"Pricing","\u002Fpricing",{"id":174,"status":4,"sort":99,"title":178,"url":179},"Brand assets","https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Fu\u002F1\u002Ffolders\u002F1tZqsZHBlGelz7A2FwTsiwrs4j3sd9HTk",[181,186,191,196,201,206],{"id":7,"status":4,"sort":8,"platform":182,"icon":183,"url":184,"label":185},"feed","rss","\u002Ffeed.xml","Localazy RSS Feed",{"id":16,"status":4,"sort":8,"platform":187,"icon":188,"url":189,"label":190},"facebook","fb-logo","https:\u002F\u002Fwww.facebook.com\u002Flocalazy\u002F","Localazy facebook",{"id":22,"status":4,"sort":8,"platform":192,"icon":193,"url":194,"label":195},"github","github-logo","https:\u002F\u002Fgithub.com\u002Flocalazy","Localazy GitHub",{"id":107,"status":4,"sort":8,"platform":197,"icon":198,"url":199,"label":200},"x","x-twitter","https:\u002F\u002Fx.com\u002Flocalazy","Localazy X",{"id":50,"status":4,"sort":8,"platform":202,"icon":203,"url":204,"label":205},"linkedin","linkedin-logo","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002F37836599\u002F","Localazy LinkedIn",{"id":57,"status":4,"sort":8,"platform":207,"icon":208,"url":164,"label":209},"discourse","discourse-logo","Localazy Discourse",[211,214,217],{"id":7,"status":4,"sort":8,"title":212,"url":213,"action":8},"Privacy policy","\u002Fprivacy-policy",{"id":16,"status":4,"sort":8,"title":215,"url":216,"action":8},"Terms & Conditions","\u002Fterms-and-conditions",{"id":22,"status":4,"sort":8,"title":218,"url":8,"action":219},"Cookies","cookie-consent",[221,414,647,775,898,900],{"id":16,"name":222,"url":8,"url_text":8,"status":4,"groups":223},"Solutions",[224,235,306,341],{"navigation_items_group_id":225},{"id":22,"sort":50,"status":4,"name":226,"render_show_all_url":227,"show_all_url_position":228,"show_favorite_icon":229,"show_all_url":8,"represent_as_tile":227,"items":230},"Featured Article",false,"top",true,[231],{"collection":232,"item":233},"blog_post_navigation_item_type",{"id":107,"status":4,"sort":8,"show_author_img":229,"blog_post_tag":234,"description":8},"nav",{"navigation_items_group_id":236},{"id":50,"sort":7,"status":4,"name":237,"render_show_all_url":227,"show_all_url_position":228,"show_favorite_icon":227,"show_all_url":238,"represent_as_tile":229,"items":239},"Your Role","\u002Froles",[240,252,262,272,283,295],{"collection":241,"item":242},"relation_navigation_item_type",{"id":7,"status":4,"sort":8,"name":243,"item":244},"CMO",[245],{"collection":246,"item":247},"personas",{"id":7,"status":4,"sort":8,"slug":248,"icon":249},"chief-marketing-officers",{"id":250,"title":251},"526097d8-176f-48e5-83d3-2fc4d77061f9","La Mail Bulk",{"collection":241,"item":253},{"id":22,"status":4,"sort":8,"name":254,"item":255},"CTO",[256],{"collection":246,"item":257},{"id":107,"status":4,"sort":8,"slug":258,"icon":259},"chief-technical-officers",{"id":260,"title":261},"f808fdf0-c78b-4294-ba59-fe25f46fe825","La Mechanic",{"collection":241,"item":263},{"id":174,"status":4,"sort":8,"name":264,"item":265},"Product Manager",[266],{"collection":246,"item":267},{"id":166,"status":4,"sort":8,"slug":268,"icon":269},"product-managers",{"id":270,"title":271},"ea39586a-21fc-4b34-ba87-496028e5198f","La Worker",{"collection":241,"item":273},{"id":274,"status":4,"sort":8,"name":275,"item":276},37,"Translator",[277],{"collection":246,"item":278},{"id":174,"status":4,"sort":8,"slug":279,"icon":280},"professional-translators",{"id":281,"title":282},"07945171-d51d-4ca8-96c0-21cde9db258f","La Chat",{"collection":241,"item":284},{"id":285,"status":4,"sort":8,"name":286,"item":287},38,"Developer",[288],{"collection":246,"item":289},{"id":290,"status":4,"sort":8,"slug":291,"icon":292},30,"software-developers",{"id":293,"title":294},"1806e46d-c551-4845-bf42-4407344d229e","La Terminal",{"collection":241,"item":296},{"id":297,"status":4,"sort":8,"name":298,"item":299},27,"Localization Manager",[300],{"collection":246,"item":301},{"id":57,"status":4,"sort":8,"slug":302,"icon":303},"localization-managers",{"id":304,"title":305},"dac69bd1-bf5d-41d0-87d4-dd13e314698a","La Language",{"navigation_items_group_id":307},{"id":72,"sort":22,"status":4,"name":308,"render_show_all_url":227,"show_all_url_position":309,"show_favorite_icon":227,"show_all_url":8,"represent_as_tile":227,"items":310},"Use cases","bottom",[311,317,322,327,331,336],{"collection":312,"item":313},"simple_link_navigation_item_type",{"id":314,"status":4,"sort":8,"url":315,"url_text":316,"show_favorite_icon":227},24,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fsoftware-localization","Software localization",{"collection":312,"item":318},{"id":319,"status":4,"sort":8,"url":320,"url_text":321,"show_favorite_icon":227},26,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fmobile-app-localization","Mobile app localization",{"collection":312,"item":323},{"id":324,"status":4,"sort":8,"url":325,"url_text":326,"show_favorite_icon":227},25,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fwebsite-localization","Website localization",{"collection":312,"item":328},{"id":297,"status":4,"sort":8,"url":329,"url_text":330,"show_favorite_icon":227},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fdesign-localization","Design localization",{"collection":312,"item":332},{"id":333,"status":4,"sort":8,"url":334,"url_text":335,"show_favorite_icon":227},28,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fgame-localization","Game localization",{"collection":312,"item":337},{"id":338,"status":4,"sort":8,"url":339,"url_text":340,"show_favorite_icon":227},29,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fhelp-and-docs-localization","Help & docs localization",{"navigation_items_group_id":342},{"id":67,"sort":16,"status":4,"name":343,"render_show_all_url":227,"show_all_url_position":309,"show_favorite_icon":227,"show_all_url":8,"represent_as_tile":227,"items":344},"Industry",[345,356,367,377,387,396,407],{"collection":241,"item":346},{"id":347,"status":4,"sort":8,"name":348,"item":349},23,"Digital Agencies",[350],{"collection":246,"item":351},{"id":62,"status":4,"sort":8,"slug":352,"icon":353},"digital-agencies",{"id":354,"title":355},"547f5619-b21d-4b29-86f1-8b2200313cde","La Digi Agency",{"collection":241,"item":357},{"id":358,"status":4,"sort":8,"name":359,"item":360},39,"Startups & SaaS",[361],{"collection":246,"item":362},{"id":16,"status":4,"sort":8,"slug":363,"icon":364},"startups",{"id":365,"title":366},"da1516e2-4afc-40a2-bcbf-a8161e2d610d","La Saa S",{"collection":241,"item":368},{"id":16,"status":4,"sort":8,"name":369,"item":370},"E-commerce",[371],{"collection":246,"item":372},{"id":50,"status":4,"sort":8,"slug":373,"icon":374},"e-commerce",{"id":375,"title":376},"a3d09cd2-054f-4bb5-a0a2-d3d207db65df","La Ecommerce",{"collection":241,"item":378},{"id":170,"status":4,"sort":8,"name":379,"item":380},"FinTech Platforms",[381],{"collection":246,"item":382},{"id":297,"status":4,"sort":8,"slug":383,"icon":384},"fintech",{"id":385,"title":386},"147339ba-07d1-4e5e-baad-23d27e60c919","La Money",{"collection":241,"item":388},{"id":314,"status":4,"sort":8,"name":389,"item":390},"Translation Agencies",[391],{"collection":246,"item":392},{"id":314,"status":4,"sort":8,"slug":393,"icon":394},"translation-agencies",{"id":395,"title":305},"15d6fe33-2af8-4d6e-933d-5caa64394511",{"collection":241,"item":397},{"id":398,"status":4,"sort":8,"name":399,"item":400},22,"Travel & Tourism",[401],{"collection":246,"item":402},{"id":22,"status":4,"sort":8,"slug":403,"icon":404},"tourism",{"id":405,"title":406},"23a785e8-0ae5-4c4b-8452-aab1b58182a6","La Travel",{"collection":241,"item":408},{"id":324,"status":4,"sort":8,"name":409,"item":410},"Nonprofit Causes",[411],{"collection":246,"item":412},{"id":333,"status":4,"sort":8,"slug":413,"icon":8},"nonprofit",{"id":50,"name":415,"url":8,"url_text":8,"status":4,"groups":416},"Features",[417,484,541,590],{"navigation_items_group_id":418},{"id":36,"sort":57,"status":4,"name":419,"render_show_all_url":227,"show_all_url_position":228,"show_favorite_icon":227,"show_all_url":8,"represent_as_tile":227,"items":420},"Localization",[421,430,439,447,455,459,467,476],{"collection":241,"item":422},{"id":423,"status":4,"sort":8,"name":424,"item":425},44,"Localization services",[426],{"collection":427,"item":428},"products",{"id":72,"status":4,"slug":429},"continuous-localization-team",{"collection":241,"item":431},{"id":432,"status":4,"sort":8,"name":433,"item":434},45,"Translation management",[435],{"collection":436,"item":437},"term_landing_page",{"id":338,"status":4,"slug":438},"translation-management-system",{"collection":241,"item":440},{"id":441,"status":4,"sort":8,"name":442,"item":443},46,"Context Screenshots",[444],{"collection":427,"item":445},{"id":43,"status":4,"slug":446},"context-screenshots-ocr",{"collection":241,"item":448},{"id":449,"status":4,"sort":8,"name":450,"item":451},47,"Translation Glossary",[452],{"collection":427,"item":453},{"id":162,"status":4,"slug":454},"glossary",{"collection":312,"item":456},{"id":107,"status":4,"sort":8,"url":457,"url_text":458,"show_favorite_icon":227},"\u002Fdocs\u002Fgeneral\u002Freviewing-translations","Quality control",{"collection":241,"item":460},{"id":461,"status":4,"sort":8,"name":462,"item":463},34,"Connected Projects",[464],{"collection":427,"item":465},{"id":7,"status":4,"slug":466},"connected-projects",{"collection":241,"item":468},{"id":469,"status":4,"sort":8,"name":470,"item":471},64,"Plural handling",[472],{"collection":427,"item":473},{"id":474,"status":4,"slug":475},32,"plurals",{"collection":241,"item":477},{"id":478,"status":4,"sort":8,"name":479,"item":480},65,"Style guides",[481],{"collection":427,"item":482},{"id":285,"status":4,"slug":483},"style-guide",{"navigation_items_group_id":485},{"id":29,"sort":62,"status":4,"name":486,"render_show_all_url":227,"show_all_url_position":228,"show_favorite_icon":227,"show_all_url":8,"represent_as_tile":227,"items":487},"Translation",[488,496,504,508,516,524,533],{"collection":241,"item":489},{"id":490,"status":4,"sort":8,"name":491,"item":492},36,"Professional translations",[493],{"collection":436,"item":494},{"id":290,"status":4,"slug":495},"professional-translation-services",{"collection":241,"item":497},{"id":498,"status":4,"sort":8,"name":499,"item":500},48,"Crowdsourced translations",[501],{"collection":427,"item":502},{"id":67,"status":4,"slug":503},"share-tm",{"collection":312,"item":505},{"id":50,"status":4,"sort":8,"url":506,"url_text":507,"show_favorite_icon":227},"\u002Fdocs\u002Fgeneral\u002Ftranslating-strings","Translation interface",{"collection":241,"item":509},{"id":510,"status":4,"sort":8,"name":511,"item":512},55,"Machine translations",[513],{"collection":427,"item":514},{"id":50,"status":4,"slug":515},"machine-translation",{"collection":241,"item":517},{"id":518,"status":4,"sort":8,"name":519,"item":520},60,"Localazy AI translation",[521],{"collection":427,"item":522},{"id":338,"status":4,"slug":523},"localazy-ai",{"collection":241,"item":525},{"id":526,"status":4,"sort":8,"name":527,"item":528},61,"Translation Memory",[529],{"collection":427,"item":530},{"id":531,"status":4,"slug":532},35,"translation-memory",{"collection":241,"item":534},{"id":535,"status":4,"sort":8,"name":536,"item":537},63,"Code & placeholders",[538],{"collection":427,"item":539},{"id":290,"status":4,"slug":540},"code-and-placeholders",{"navigation_items_group_id":542},{"id":43,"sort":67,"status":4,"name":543,"render_show_all_url":227,"show_all_url_position":228,"show_favorite_icon":227,"show_all_url":8,"represent_as_tile":227,"items":544},"Management",[545,549,557,565,574,582,586],{"collection":312,"item":546},{"id":67,"status":4,"sort":8,"url":547,"url_text":548,"show_favorite_icon":227},"\u002Fdocs\u002Fgeneral\u002Fdefining-user-roles","User roles",{"collection":241,"item":550},{"id":551,"status":4,"sort":8,"name":552,"item":553},51,"Duplicity Linking",[554],{"collection":427,"item":555},{"id":170,"status":4,"slug":556},"duplicity-linking",{"collection":241,"item":558},{"id":559,"status":4,"sort":8,"name":560,"item":561},52,"Language Permissions",[562],{"collection":427,"item":563},{"id":99,"status":4,"slug":564},"language-permissions",{"collection":241,"item":566},{"id":567,"status":568,"sort":8,"name":569,"item":570},53,"draft","Automations",[571],{"collection":427,"item":572},{"id":174,"status":4,"slug":573},"automations",{"collection":241,"item":575},{"id":576,"status":4,"sort":8,"name":577,"item":578},58,"Branching",[579],{"collection":427,"item":580},{"id":297,"status":4,"slug":581},"branching",{"collection":312,"item":583},{"id":99,"status":568,"sort":8,"url":584,"url_text":585,"show_favorite_icon":227},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fsso-configuration","SSO",{"collection":312,"item":587},{"id":398,"status":568,"sort":8,"url":588,"url_text":589,"show_favorite_icon":227},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Flanguage-statistics","Reporting",{"navigation_items_group_id":591},{"id":150,"sort":72,"status":4,"name":592,"render_show_all_url":227,"show_all_url_position":228,"show_favorite_icon":227,"show_all_url":8,"represent_as_tile":227,"items":593},"Development",[594,600,608,615,622,630,639],{"collection":241,"item":595},{"id":338,"status":4,"sort":8,"name":130,"item":596},[597],{"collection":427,"item":598},{"id":36,"status":4,"slug":599},"translation-api",{"collection":241,"item":601},{"id":602,"status":4,"sort":8,"name":603,"item":604},33,"Localazy CLI",[605],{"collection":427,"item":606},{"id":62,"status":4,"slug":607},"cli",{"collection":241,"item":609},{"id":474,"status":4,"sort":8,"name":610,"item":611},"Language CDN",[612],{"collection":427,"item":613},{"id":107,"status":4,"slug":614},"language-cdn",{"collection":241,"item":616},{"id":333,"status":4,"sort":8,"name":617,"item":618},"Releases",[619],{"collection":427,"item":620},{"id":57,"status":4,"slug":621},"releases",{"collection":241,"item":623},{"id":624,"status":568,"sort":8,"name":625,"item":626},57,"Format Conversions",[627],{"collection":427,"item":628},{"id":16,"status":4,"slug":629},"format-conversions",{"collection":241,"item":631},{"id":632,"status":4,"sort":8,"name":633,"item":634},59,"Webhooks",[635],{"collection":427,"item":636},{"id":637,"status":4,"slug":638},31,"webhooks",{"collection":241,"item":640},{"id":641,"status":4,"sort":8,"name":642,"item":643},62,"Export Aliases",[644],{"collection":427,"item":645},{"id":602,"status":4,"slug":646},"export-aliases",{"id":107,"name":142,"url":8,"url_text":8,"status":4,"groups":648},[649,765],{"navigation_items_group_id":650},{"id":62,"sort":77,"status":4,"name":651,"render_show_all_url":227,"show_all_url_position":228,"show_favorite_icon":227,"show_all_url":8,"represent_as_tile":227,"items":652},"Most popular",[653],{"collection":241,"item":654},{"id":29,"status":4,"sort":8,"name":142,"item":655},[656,664,671,678,685,691,698,705,712,719,726,735,742,749,757],{"collection":657,"item":658},"platforms",{"id":57,"status":4,"sort":7,"slug":659,"name":660,"icon":661},"android","Android",{"id":662,"title":663},"ff965add-53b0-44ad-b27c-ea4ef641d384","Ic Outline Android",{"collection":657,"item":665},{"id":62,"status":4,"sort":16,"slug":666,"name":667,"icon":668},"ios","iOS",{"id":669,"title":670},"886285d7-816a-4430-b5a5-edfe307b238e","Ios",{"collection":657,"item":672},{"id":602,"status":4,"sort":22,"slug":673,"name":674,"icon":675},"react","React",{"id":676,"title":677},"26757a90-88a3-4a94-b587-9f38614ed3bd","Logos React",{"collection":657,"item":679},{"id":170,"status":4,"sort":107,"slug":680,"name":681,"icon":682},"vuejs","Vue.js",{"id":683,"title":684},"6180b41f-3249-47d3-adcd-50fe1cf11bf1","Vue",{"collection":657,"item":686},{"id":158,"status":4,"sort":50,"slug":687,"name":688,"icon":689},"angular","Angular",{"id":690,"title":688},"2a31a97a-48c5-4531-aa36-41c9dd0bdbef",{"collection":657,"item":692},{"id":7,"status":4,"sort":57,"slug":693,"name":694,"icon":695},"flutter","Flutter",{"id":696,"title":697},"b9f13a11-9328-4a03-86cf-b20de0685606","Logos Flutter",{"collection":657,"item":699},{"id":22,"status":4,"sort":36,"slug":700,"name":701,"icon":702},"typescript","TypeScript",{"id":703,"title":704},"8d1319b5-8a96-4199-8407-00add3418b1f","Logos Typescript Icon",{"collection":657,"item":706},{"id":637,"status":4,"sort":29,"slug":707,"name":708,"icon":709},"javascript","JavaScript",{"id":710,"title":711},"4218d0c9-7e6b-494d-9663-37ceaf93ee8c","Logos Javascript",{"collection":657,"item":713},{"id":29,"status":4,"sort":174,"slug":714,"name":715,"icon":716},"json","JSON",{"id":717,"title":718},"99ac3b7c-dba5-4693-a4f4-1f27a6d7782d","Logos Json",{"collection":657,"item":720},{"id":99,"status":4,"sort":99,"slug":721,"name":722,"icon":723},"xliff","XLIFF",{"id":724,"title":725},"ca424cc8-e8a7-4aef-8dca-ef4a4d1334fc","Format",{"collection":657,"item":727},{"id":728,"status":4,"sort":729,"slug":730,"name":731,"icon":732},72,54,"strapi","Strapi",{"id":733,"title":734},"cde7f1d0-f2e0-4243-929e-a3f8f9146e69","Strapi Logo Purple",{"collection":657,"item":736},{"id":518,"status":4,"sort":510,"slug":737,"name":738,"icon":739},"figma","Figma",{"id":740,"title":741},"813745a4-a77d-4735-93b7-e0dd731b2304","Figma Icon",{"collection":657,"item":743},{"id":551,"status":4,"sort":449,"slug":744,"name":745,"icon":746},"microsoft-excel","Microsoft Excel",{"id":747,"title":748},"7a175955-7b96-4561-939f-a0e1924faa40","Excel",{"collection":657,"item":750},{"id":751,"status":4,"sort":526,"slug":752,"name":753,"icon":754},66,"github-actions","GitHub Actions",{"id":755,"title":756},"da17554f-ac6d-443d-9bac-1f29645ec1c6","Github Icon",{"collection":657,"item":758},{"id":759,"status":4,"sort":760,"slug":761,"name":762,"icon":763},97,999,"webflow","Webflow",{"id":764,"title":762},"ff43a386-52f8-499f-b77c-ab9a30f4a77e",{"navigation_items_group_id":766},{"id":107,"sort":36,"status":4,"name":767,"render_show_all_url":227,"show_all_url_position":228,"show_favorite_icon":227,"show_all_url":8,"represent_as_tile":227,"items":768},"Explore more",[769],{"collection":770,"item":771},"text_link_navigation_item_type",{"id":7,"status":4,"sort":8,"text":772,"url":773,"url_text":774},"Localazy is a technology-agnostic platform supporting 50+ frameworks, file formats & popular tools.","\u002Fintegrations","See all integrations",{"id":7,"name":146,"url":8,"url_text":8,"status":4,"groups":776},[777,801,807],{"navigation_items_group_id":778},{"id":7,"sort":29,"status":4,"name":779,"render_show_all_url":227,"show_all_url_position":228,"show_favorite_icon":227,"show_all_url":8,"represent_as_tile":227,"items":780},"Helpful Links",[781,784,786,790,792,795,797],{"collection":312,"item":782},{"id":43,"status":4,"sort":8,"url":168,"url_text":783,"show_favorite_icon":229},"Localazy Blog",{"collection":312,"item":785},{"id":150,"status":4,"sort":8,"url":152,"url_text":151,"show_favorite_icon":229},{"collection":312,"item":787},{"id":7,"status":4,"sort":8,"url":788,"url_text":789,"show_favorite_icon":227},"https:\u002F\u002Fdiscuss.localazy.com\u002F","Discussion Forum",{"collection":312,"item":791},{"id":29,"status":4,"sort":8,"url":160,"url_text":159,"show_favorite_icon":227},{"collection":312,"item":793},{"id":22,"status":4,"sort":8,"url":109,"url_text":794,"show_favorite_icon":227},"Become a Partner",{"collection":312,"item":796},{"id":154,"status":4,"sort":8,"url":172,"url_text":171,"show_favorite_icon":227},{"collection":312,"item":798},{"id":162,"status":4,"sort":8,"url":799,"url_text":800,"show_favorite_icon":227},"\u002Ftags\u002Frelease-update","Release Updates",{"navigation_items_group_id":802},{"id":16,"sort":150,"status":4,"name":783,"render_show_all_url":229,"show_all_url_position":228,"show_favorite_icon":227,"show_all_url":168,"represent_as_tile":227,"items":803},[804],{"collection":232,"item":805},{"id":22,"status":4,"sort":8,"show_author_img":227,"blog_post_tag":806,"description":8},"[USE LATEST FEATURED]",{"navigation_items_group_id":808},{"id":57,"sort":43,"status":4,"name":151,"render_show_all_url":229,"show_all_url_position":228,"show_favorite_icon":227,"show_all_url":152,"represent_as_tile":227,"items":809},[810,824,836,847,859,869,880,888],{"collection":241,"item":811},{"id":107,"status":4,"sort":8,"name":812,"item":813},"General",[814],{"collection":815,"item":816},"docs_section",{"id":16,"status":4,"sort":7,"slug":817,"name":812,"icon":818,"featured_icon":821},"general",{"id":819,"title":820},"423101f1-308c-42f1-8dfe-53272019e7cb","Global",{"id":822,"title":823},"0f7ca4cb-dc3b-4f62-b476-132ed5c4931f","General Doc",{"collection":241,"item":825},{"id":50,"status":4,"sort":8,"name":826,"item":827},"CLI",[828],{"collection":815,"item":829},{"id":22,"status":4,"sort":16,"slug":607,"name":826,"icon":830,"featured_icon":833},{"id":831,"title":832},"2f7a4573-8265-4d76-8d55-ce0cc79b8983","Cli",{"id":834,"title":835},"3f76ff7b-0e74-4046-bb03-4ca99c3b66d5","Doc Cat Cli",{"collection":241,"item":837},{"id":67,"status":4,"sort":8,"name":838,"item":839},"API",[840],{"collection":815,"item":841},{"id":174,"status":4,"sort":22,"slug":842,"name":838,"icon":843,"featured_icon":844},"api",{"id":831,"title":832},{"id":845,"title":846},"20866781-e69b-4e01-9456-05437487b75c","API Doc",{"collection":241,"item":848},{"id":849,"status":4,"sort":8,"name":850,"item":851},50,"CDN",[852],{"collection":815,"item":853},{"id":319,"status":4,"sort":107,"slug":854,"name":850,"icon":855,"featured_icon":856},"cdn",{"id":819,"title":820},{"id":857,"title":858},"a8ee9cb7-4e02-41f0-b595-eb518c3085b6","Doc Cat Cdn",{"collection":241,"item":860},{"id":57,"status":4,"sort":8,"name":660,"item":861},[862],{"collection":815,"item":863},{"id":7,"status":4,"sort":50,"slug":659,"name":660,"icon":864,"featured_icon":866},{"id":865,"title":660},"fb8329ae-0c0c-4fbc-bcdc-83f2eeda1039",{"id":867,"title":868},"f7c0dec8-5b42-4943-ab3a-e3665723ad6f","Doc Cat Android",{"collection":241,"item":870},{"id":62,"status":4,"sort":8,"name":667,"item":871},[872],{"collection":815,"item":873},{"id":107,"status":4,"sort":57,"slug":666,"name":667,"icon":874,"featured_icon":877},{"id":875,"title":876},"289e136c-55df-4d51-847b-1782a2308ee4","Ios Blue",{"id":878,"title":879},"2968d3f0-14b5-4427-82e7-f1ea2de17846","Doc Cat Ios",{"collection":241,"item":881},{"id":72,"status":4,"sort":8,"name":738,"item":882},[883],{"collection":815,"item":884},{"id":99,"status":4,"sort":62,"slug":737,"name":738,"icon":885,"featured_icon":886},{"id":831,"title":832},{"id":887,"title":738},"f5e66b5b-a439-47f6-af4a-6ad261de2e87",{"collection":241,"item":889},{"id":77,"status":4,"sort":8,"name":731,"item":890},[891],{"collection":815,"item":892},{"id":347,"status":4,"sort":67,"slug":730,"name":731,"icon":893,"featured_icon":895},{"id":894,"title":731},"3b4b03c7-e131-49e6-a014-c8c2c8a2751e",{"id":896,"title":897},"1dd05c76-e517-4aea-a3d8-49cfddb40056","Strapi Doc",{"id":22,"name":175,"url":176,"url_text":175,"status":4,"groups":899},[],{"id":57,"name":93,"url":901,"url_text":93,"status":4,"groups":902},"\u002Fbook-demo",[],[904,1044,1122,1228,1314,1393,1482,1573,1660,1759],{"id":602,"status":4,"created_on":905,"modified_on":906,"name":674,"slug":673,"description":907,"docs_link":908,"priority":8,"has_sdk":227,"sort":22,"highlighted":227,"in_menu":229,"changefreq":8,"support_type":909,"show_in_spa":229,"is_file_format":227,"meta_title":8,"meta_description":8,"featured_on_web":229,"marketing_subtitle":910,"tile_subtitle":911,"tile_description":912,"is_enterprise":227,"is_popular":227,"primary_use_case":8,"hierarchy_handling":8,"best_for":8,"file_extension":8,"format_code_example":8,"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":602},"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":714},[],{"id":676},{"id":917},"a97492ec-ee8d-429c-bf66-d0fe59b6e5c9",{"id":50,"status":4,"sort":16,"created_on":919,"label":920,"hidden":227,"icon":921,"translations":923},"2022-03-17T12:23:44.000Z","Web apps",{"id":922},"c9e70e4f-8136-432a-8d82-53c3501a9eb4",[924,926,929,932],{"id":50,"languages_code":925,"label":920},"xxa",{"id":432,"languages_code":927,"label":928},"es","Aplicaciones web",{"id":849,"languages_code":930,"label":931},"cs","Webové aplikace",{"id":632,"languages_code":933,"label":920},"en",[935,942],{"id":50,"status":4,"sort":16,"label":920,"hidden":227,"created_on":919,"icon":936,"translations":937},{"id":922},[938,939,940,941],{"id":50,"languages_code":925,"label":920},{"id":432,"languages_code":927,"label":928},{"id":849,"languages_code":930,"label":931},{"id":632,"languages_code":933,"label":920},{"id":67,"status":4,"sort":72,"label":943,"hidden":227,"created_on":944,"icon":8,"translations":945},"Framework","2022-03-17T12:23:45.000Z",[946,947,949,950],{"id":67,"languages_code":925,"label":943},{"id":567,"languages_code":927,"label":948},"Marco",{"id":518,"languages_code":930,"label":943},{"id":951,"languages_code":933,"label":943},67,[953,965,990,1011],{"id":107,"status":4,"sort":57,"label":838,"alternative_label":8,"slug":842,"description":954,"documentation_link":955,"loc_icon":842,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":956},"Translate strings directly or upload them into your Localazy project.","\u002Fdocs\u002Fapi\u002Fintroduction",[957,958,961,963],{"id":107,"languages_code":925,"label":838,"description":954,"slug":842},{"id":959,"languages_code":927,"label":838,"description":960,"slug":842},40,"Utilice la API para exportar traducciones e importar contenido de\u002Fa Localazy mediante programación.",{"id":849,"languages_code":933,"label":838,"description":962,"slug":842},"Choose between translating strings directly or uploading them into Localazy.",{"id":632,"languages_code":930,"label":838,"description":964,"slug":842},"Pomocí rozhraní API můžete programovaně exportovat překlady a importovat obsah z\u002Fdo Localazy.",{"id":22,"status":4,"sort":50,"label":966,"alternative_label":8,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"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":22,"languages_code":925,"label":966,"description":968,"slug":967},{"id":358,"languages_code":927,"label":974,"description":975,"slug":8},"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":551,"languages_code":933,"label":966,"description":968,"slug":967},{"id":518,"languages_code":930,"label":978,"description":979,"slug":8},"Vytvářejte zdrojové klíče online","Přidejte zdrojové klíče přes webové rozhraní online a synchronizujte je do svého projektu později.",{"id":469,"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":478,"languages_code":933,"label":966,"description":968,"slug":967},{"id":751,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":8},88,"de","Erstellen Sie Quellschlüssel online","Fügen Sie Quellschlüssel über die Weboberfläche online hinzu und synchronisieren Sie sie später mit Ihrem Projekt.",{"id":16,"status":4,"sort":107,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"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":16,"languages_code":925,"label":991,"description":994,"slug":993},{"id":285,"languages_code":927,"label":1000,"description":1001,"slug":8},"Carga directa de archivos","Cargue sus textos y traducciones existentes en cualquier formato directamente para empezar rápidamente.",{"id":449,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":8},56,"Přímé nahrávání souborů","Nahrajte přímo své texty a stávající překlady v libovolném formátu a začněte pracovat ihned.",{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":8},85,"Direkter Datei-Upload","Laden Sie Ihre Texte und vorhandenen Übersetzungen in einem beliebigen Format direkt hoch, um schnell loszulegen.",{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"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":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},"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":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},"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":8},87,"Befehlszeilenschnittstelle","Die beste Option für Entwickler, die die Lokalisierung zu einem automatisierten Teil ihres Arbeitsablaufs machen möchten.",[],{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1030},[1031,1032,1033,1034,1035],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[1037],{"id":1038,"status":4,"created_on":1039,"sort":8,"slug":1040,"label":1041,"on_faq_index":8},76,"2025-02-26T12:44:29.000Z","front-end-common","Front-end Common",[1043],{"languages_code":925,"name":674,"slug":673,"description":907,"support_type":909,"meta_title":8,"meta_description":8,"marketing_subtitle":910,"tile_subtitle":911,"tile_description":912,"id":602,"platforms_id":602,"docs_link":908},{"id":170,"status":4,"created_on":905,"modified_on":1045,"name":681,"slug":680,"description":1046,"docs_link":908,"priority":8,"has_sdk":227,"sort":107,"highlighted":227,"in_menu":229,"changefreq":8,"support_type":909,"show_in_spa":229,"is_file_format":227,"meta_title":8,"meta_description":8,"featured_on_web":229,"marketing_subtitle":910,"tile_subtitle":1047,"tile_description":1048,"is_enterprise":227,"is_popular":227,"primary_use_case":8,"hierarchy_handling":8,"best_for":8,"file_extension":8,"format_code_example":8,"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":170},"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":714},[],{"id":683},{"id":1053},"8171b836-d6b8-4354-8db3-34ccd384970d",{"id":50,"status":4,"sort":16,"created_on":919,"label":920,"hidden":227,"icon":1055,"translations":1056},{"id":922},[1057,1058,1059,1060],{"id":50,"languages_code":925,"label":920},{"id":432,"languages_code":927,"label":928},{"id":849,"languages_code":930,"label":931},{"id":632,"languages_code":933,"label":920},[1062,1069],{"id":50,"status":4,"sort":16,"label":920,"hidden":227,"created_on":919,"icon":1063,"translations":1064},{"id":922},[1065,1066,1067,1068],{"id":50,"languages_code":925,"label":920},{"id":432,"languages_code":927,"label":928},{"id":849,"languages_code":930,"label":931},{"id":632,"languages_code":933,"label":920},{"id":67,"status":4,"sort":72,"label":943,"hidden":227,"created_on":944,"icon":8,"translations":1070},[1071,1072,1073,1074],{"id":67,"languages_code":925,"label":943},{"id":567,"languages_code":927,"label":948},{"id":518,"languages_code":930,"label":943},{"id":951,"languages_code":933,"label":943},[1076,1082,1092,1099],{"id":107,"status":4,"sort":57,"label":838,"alternative_label":8,"slug":842,"description":954,"documentation_link":955,"loc_icon":842,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1077},[1078,1079,1080,1081],{"id":107,"languages_code":925,"label":838,"description":954,"slug":842},{"id":959,"languages_code":927,"label":838,"description":960,"slug":842},{"id":849,"languages_code":933,"label":838,"description":962,"slug":842},{"id":632,"languages_code":930,"label":838,"description":964,"slug":842},{"id":22,"status":4,"sort":50,"label":966,"alternative_label":8,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1083},[1084,1085,1086,1087,1088,1089,1090,1091],{"id":22,"languages_code":925,"label":966,"description":968,"slug":967},{"id":358,"languages_code":927,"label":974,"description":975,"slug":8},{"id":551,"languages_code":933,"label":966,"description":968,"slug":967},{"id":518,"languages_code":930,"label":978,"description":979,"slug":8},{"id":469,"languages_code":927,"label":981,"description":982,"slug":967},{"id":478,"languages_code":933,"label":966,"description":968,"slug":967},{"id":751,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":8},{"id":16,"status":4,"sort":107,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1093},[1094,1095,1096,1097,1098],{"id":16,"languages_code":925,"label":991,"description":994,"slug":993},{"id":285,"languages_code":927,"label":1000,"description":1001,"slug":8},{"id":449,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":8},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":8},{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1100},[1101,1102,1103,1104,1105],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[],{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1108},[1109,1110,1111,1112,1113],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[1115,1119],{"id":1004,"status":4,"created_on":1116,"sort":8,"slug":1117,"label":1118,"on_faq_index":8},"2023-03-01T11:21:41.000Z","vue-localization","Vue.js Localization",{"id":1038,"status":4,"created_on":1039,"sort":8,"slug":1040,"label":1041,"on_faq_index":8},[1121],{"languages_code":925,"name":681,"slug":680,"description":1046,"support_type":909,"meta_title":8,"meta_description":8,"marketing_subtitle":910,"tile_subtitle":1047,"tile_description":1048,"id":170,"platforms_id":170,"docs_link":908},{"id":7,"status":4,"created_on":905,"modified_on":1123,"name":694,"slug":693,"description":1124,"docs_link":1125,"priority":8,"has_sdk":227,"sort":57,"highlighted":227,"in_menu":229,"changefreq":8,"support_type":1126,"show_in_spa":229,"is_file_format":227,"meta_title":8,"meta_description":8,"featured_on_web":227,"marketing_subtitle":910,"tile_subtitle":1126,"tile_description":1127,"is_enterprise":227,"is_popular":227,"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":7},"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":696},{"id":1138},"c2674666-4371-4aa4-9a65-438c7363fafe",{"id":57,"status":4,"sort":67,"created_on":944,"label":1140,"hidden":227,"icon":1141,"translations":1143},"Mobile apps",{"id":1142},"c9c7e1f5-8b59-4016-ae0c-6fba9469cd55",[1144,1145,1147,1149],{"id":57,"languages_code":925,"label":1140},{"id":441,"languages_code":927,"label":1146},"Aplicaciones móviles",{"id":510,"languages_code":930,"label":1148},"Mobilní aplikace",{"id":478,"languages_code":933,"label":1140},[1151,1162,1169,1176],{"id":62,"status":4,"sort":170,"label":1152,"hidden":227,"created_on":944,"icon":1153,"translations":1155},"Desktop & Games",{"id":1154},"65b04533-5b4c-430c-b8a4-ecce84754200",[1156,1157,1159,1161],{"id":62,"languages_code":925,"label":1152},{"id":449,"languages_code":927,"label":1158},"Escritorio y Juegos",{"id":1004,"languages_code":930,"label":1160},"Stolní počítače & Hry",{"id":751,"languages_code":933,"label":1152},{"id":50,"status":4,"sort":16,"label":920,"hidden":227,"created_on":919,"icon":1163,"translations":1164},{"id":922},[1165,1166,1167,1168],{"id":50,"languages_code":925,"label":920},{"id":432,"languages_code":927,"label":928},{"id":849,"languages_code":930,"label":931},{"id":632,"languages_code":933,"label":920},{"id":57,"status":4,"sort":67,"label":1140,"hidden":227,"created_on":944,"icon":1170,"translations":1171},{"id":1142},[1172,1173,1174,1175],{"id":57,"languages_code":925,"label":1140},{"id":441,"languages_code":927,"label":1146},{"id":510,"languages_code":930,"label":1148},{"id":478,"languages_code":933,"label":1140},{"id":290,"status":4,"sort":474,"label":1177,"hidden":229,"created_on":944,"icon":8,"translations":1178},"ARB",[1179,1180,1182,1184],{"id":290,"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":107,"status":4,"sort":57,"label":838,"alternative_label":8,"slug":842,"description":954,"documentation_link":955,"loc_icon":842,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1188},[1189,1190,1191,1192],{"id":107,"languages_code":925,"label":838,"description":954,"slug":842},{"id":959,"languages_code":927,"label":838,"description":960,"slug":842},{"id":849,"languages_code":933,"label":838,"description":962,"slug":842},{"id":632,"languages_code":930,"label":838,"description":964,"slug":842},{"id":22,"status":4,"sort":50,"label":966,"alternative_label":8,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1194},[1195,1196,1197,1198,1199,1200,1201,1202],{"id":22,"languages_code":925,"label":966,"description":968,"slug":967},{"id":358,"languages_code":927,"label":974,"description":975,"slug":8},{"id":551,"languages_code":933,"label":966,"description":968,"slug":967},{"id":518,"languages_code":930,"label":978,"description":979,"slug":8},{"id":469,"languages_code":927,"label":981,"description":982,"slug":967},{"id":478,"languages_code":933,"label":966,"description":968,"slug":967},{"id":751,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":8},{"id":16,"status":4,"sort":107,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1204},[1205,1206,1207,1208,1209],{"id":16,"languages_code":925,"label":991,"description":994,"slug":993},{"id":285,"languages_code":927,"label":1000,"description":1001,"slug":8},{"id":449,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":8},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":8},{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1211},[1212,1213,1214,1215,1216],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[],{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1219},[1220,1221,1222,1223,1224],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[],[1227],{"languages_code":925,"name":694,"slug":693,"description":1124,"support_type":1126,"meta_title":8,"meta_description":8,"marketing_subtitle":910,"tile_subtitle":1126,"tile_description":1127,"id":7,"platforms_id":7,"docs_link":1125},{"id":637,"status":4,"created_on":1229,"modified_on":1230,"name":708,"slug":707,"description":1231,"docs_link":1232,"priority":8,"has_sdk":227,"sort":29,"highlighted":227,"in_menu":229,"changefreq":8,"support_type":1233,"show_in_spa":229,"is_file_format":227,"meta_title":8,"meta_description":8,"featured_on_web":229,"marketing_subtitle":910,"tile_subtitle":1233,"tile_description":1234,"is_enterprise":227,"is_popular":227,"primary_use_case":8,"hierarchy_handling":8,"best_for":8,"file_extension":8,"format_code_example":8,"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":637},"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":710},{"id":1240},"2c6699eb-1d80-4772-8268-5597dbcead8c",{"id":77,"status":4,"sort":77,"created_on":944,"label":1242,"hidden":227,"icon":1243,"translations":1245},"Programming Languages",{"id":1244},"8c5836bb-1fbe-49c5-9330-8f931838c457",[1246,1247,1249,1252],{"id":77,"languages_code":925,"label":1242},{"id":535,"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":50,"status":4,"sort":16,"label":920,"hidden":227,"created_on":919,"icon":1256,"translations":1257},{"id":922},[1258,1259,1260,1261],{"id":50,"languages_code":925,"label":920},{"id":432,"languages_code":927,"label":928},{"id":849,"languages_code":930,"label":931},{"id":632,"languages_code":933,"label":920},{"id":77,"status":4,"sort":77,"label":1242,"hidden":227,"created_on":944,"icon":1263,"translations":1264},{"id":1244},[1265,1266,1267,1268],{"id":77,"languages_code":925,"label":1242},{"id":535,"languages_code":927,"label":1248},{"id":1250,"languages_code":930,"label":1251},{"id":1253,"languages_code":933,"label":1242},[1270,1276,1286,1293],{"id":107,"status":4,"sort":57,"label":838,"alternative_label":8,"slug":842,"description":954,"documentation_link":955,"loc_icon":842,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1271},[1272,1273,1274,1275],{"id":107,"languages_code":925,"label":838,"description":954,"slug":842},{"id":959,"languages_code":927,"label":838,"description":960,"slug":842},{"id":849,"languages_code":933,"label":838,"description":962,"slug":842},{"id":632,"languages_code":930,"label":838,"description":964,"slug":842},{"id":22,"status":4,"sort":50,"label":966,"alternative_label":8,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1277},[1278,1279,1280,1281,1282,1283,1284,1285],{"id":22,"languages_code":925,"label":966,"description":968,"slug":967},{"id":358,"languages_code":927,"label":974,"description":975,"slug":8},{"id":551,"languages_code":933,"label":966,"description":968,"slug":967},{"id":518,"languages_code":930,"label":978,"description":979,"slug":8},{"id":469,"languages_code":927,"label":981,"description":982,"slug":967},{"id":478,"languages_code":933,"label":966,"description":968,"slug":967},{"id":751,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":8},{"id":16,"status":4,"sort":107,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1287},[1288,1289,1290,1291,1292],{"id":16,"languages_code":925,"label":991,"description":994,"slug":993},{"id":285,"languages_code":927,"label":1000,"description":1001,"slug":8},{"id":449,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":8},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":8},{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1294},[1295,1296,1297,1298,1299],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[],{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1302},[1303,1304,1305,1306,1307],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[1309],{"id":531,"status":4,"created_on":1310,"sort":8,"slug":1311,"label":708,"on_faq_index":227},"2022-06-10T09:49:33.000Z","javascript-i18n-localization",[1313],{"languages_code":925,"name":708,"slug":707,"description":1231,"support_type":1233,"meta_title":8,"meta_description":8,"marketing_subtitle":910,"tile_subtitle":1233,"tile_description":1234,"id":637,"platforms_id":637,"docs_link":1232},{"id":29,"status":4,"created_on":1229,"modified_on":1315,"name":715,"slug":714,"description":1316,"docs_link":908,"priority":8,"has_sdk":227,"sort":174,"highlighted":227,"in_menu":229,"changefreq":8,"support_type":1317,"show_in_spa":229,"is_file_format":229,"meta_title":8,"meta_description":8,"featured_on_web":229,"marketing_subtitle":910,"tile_subtitle":1318,"tile_description":1319,"is_enterprise":227,"is_popular":229,"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":29},"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":714},[],{"id":717},{"id":1329},"8d614c20-667e-4bee-a64d-7d7ce9c0ee0a",{"id":107,"status":4,"sort":50,"created_on":944,"label":1331,"hidden":227,"icon":1332,"translations":1334},"File formats",{"id":1333},"ab7c8f89-dcce-45ab-9e21-8605aef289c3",[1335,1336,1338,1340],{"id":107,"languages_code":925,"label":1331},{"id":423,"languages_code":927,"label":1337},"Formatos de archivo",{"id":551,"languages_code":930,"label":1339},"Formáty souborů",{"id":641,"languages_code":933,"label":1331},[1342],{"id":107,"status":4,"sort":50,"label":1331,"hidden":227,"created_on":944,"icon":1343,"translations":1344},{"id":1333},[1345,1346,1347,1348],{"id":107,"languages_code":925,"label":1331},{"id":423,"languages_code":927,"label":1337},{"id":551,"languages_code":930,"label":1339},{"id":641,"languages_code":933,"label":1331},[1350,1356,1366,1373],{"id":107,"status":4,"sort":57,"label":838,"alternative_label":8,"slug":842,"description":954,"documentation_link":955,"loc_icon":842,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1351},[1352,1353,1354,1355],{"id":107,"languages_code":925,"label":838,"description":954,"slug":842},{"id":959,"languages_code":927,"label":838,"description":960,"slug":842},{"id":849,"languages_code":933,"label":838,"description":962,"slug":842},{"id":632,"languages_code":930,"label":838,"description":964,"slug":842},{"id":22,"status":4,"sort":50,"label":966,"alternative_label":8,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1357},[1358,1359,1360,1361,1362,1363,1364,1365],{"id":22,"languages_code":925,"label":966,"description":968,"slug":967},{"id":358,"languages_code":927,"label":974,"description":975,"slug":8},{"id":551,"languages_code":933,"label":966,"description":968,"slug":967},{"id":518,"languages_code":930,"label":978,"description":979,"slug":8},{"id":469,"languages_code":927,"label":981,"description":982,"slug":967},{"id":478,"languages_code":933,"label":966,"description":968,"slug":967},{"id":751,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":8},{"id":16,"status":4,"sort":107,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1367},[1368,1369,1370,1371,1372],{"id":16,"languages_code":925,"label":991,"description":994,"slug":993},{"id":285,"languages_code":927,"label":1000,"description":1001,"slug":8},{"id":449,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":8},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":8},{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1374},[1375,1376,1377,1378,1379],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[],{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1382},[1383,1384,1385,1386,1387],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[1389],{"id":490,"status":4,"created_on":1390,"sort":8,"slug":714,"label":715,"on_faq_index":227},"2022-06-10T10:49:07.000Z",[1392],{"languages_code":925,"name":715,"slug":714,"description":1316,"support_type":1317,"meta_title":8,"meta_description":8,"marketing_subtitle":910,"tile_subtitle":1318,"tile_description":1319,"id":29,"platforms_id":29,"docs_link":908},{"id":99,"status":4,"created_on":1229,"modified_on":1394,"name":722,"slug":721,"description":1395,"docs_link":1396,"priority":8,"has_sdk":227,"sort":99,"highlighted":227,"in_menu":229,"changefreq":8,"support_type":1397,"show_in_spa":227,"is_file_format":229,"meta_title":8,"meta_description":8,"featured_on_web":229,"marketing_subtitle":910,"tile_subtitle":1398,"tile_description":1399,"is_enterprise":227,"is_popular":229,"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":99},"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":724},{"id":1410},"889970a6-cce8-4055-b96a-9c3f292aa67f",{"id":107,"status":4,"sort":50,"created_on":944,"label":1331,"hidden":227,"icon":1412,"translations":1413},{"id":1333},[1414,1415,1416,1417],{"id":107,"languages_code":925,"label":1331},{"id":423,"languages_code":927,"label":1337},{"id":551,"languages_code":930,"label":1339},{"id":641,"languages_code":933,"label":1331},[1419,1426,1433],{"id":107,"status":4,"sort":50,"label":1331,"hidden":227,"created_on":944,"icon":1420,"translations":1421},{"id":1333},[1422,1423,1424,1425],{"id":107,"languages_code":925,"label":1331},{"id":423,"languages_code":927,"label":1337},{"id":551,"languages_code":930,"label":1339},{"id":641,"languages_code":933,"label":1331},{"id":107,"status":4,"sort":50,"label":1331,"hidden":227,"created_on":944,"icon":1427,"translations":1428},{"id":1333},[1429,1430,1431,1432],{"id":107,"languages_code":925,"label":1331},{"id":423,"languages_code":927,"label":1337},{"id":551,"languages_code":930,"label":1339},{"id":641,"languages_code":933,"label":1331},{"id":107,"status":4,"sort":50,"label":1331,"hidden":227,"created_on":944,"icon":1434,"translations":1435},{"id":1333},[1436,1437,1438,1439],{"id":107,"languages_code":925,"label":1331},{"id":423,"languages_code":927,"label":1337},{"id":551,"languages_code":930,"label":1339},{"id":641,"languages_code":933,"label":1331},[1441,1447,1457,1464],{"id":107,"status":4,"sort":57,"label":838,"alternative_label":8,"slug":842,"description":954,"documentation_link":955,"loc_icon":842,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1442},[1443,1444,1445,1446],{"id":107,"languages_code":925,"label":838,"description":954,"slug":842},{"id":959,"languages_code":927,"label":838,"description":960,"slug":842},{"id":849,"languages_code":933,"label":838,"description":962,"slug":842},{"id":632,"languages_code":930,"label":838,"description":964,"slug":842},{"id":22,"status":4,"sort":50,"label":966,"alternative_label":8,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1448},[1449,1450,1451,1452,1453,1454,1455,1456],{"id":22,"languages_code":925,"label":966,"description":968,"slug":967},{"id":358,"languages_code":927,"label":974,"description":975,"slug":8},{"id":551,"languages_code":933,"label":966,"description":968,"slug":967},{"id":518,"languages_code":930,"label":978,"description":979,"slug":8},{"id":469,"languages_code":927,"label":981,"description":982,"slug":967},{"id":478,"languages_code":933,"label":966,"description":968,"slug":967},{"id":751,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":8},{"id":16,"status":4,"sort":107,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1458},[1459,1460,1461,1462,1463],{"id":16,"languages_code":925,"label":991,"description":994,"slug":993},{"id":285,"languages_code":927,"label":1000,"description":1001,"slug":8},{"id":449,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":8},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":8},{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1465},[1466,1467,1468,1469,1470],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[],{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1473},[1474,1475,1476,1477,1478],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[],[1481],{"languages_code":925,"name":722,"slug":721,"description":1395,"support_type":1397,"meta_title":8,"meta_description":8,"marketing_subtitle":910,"tile_subtitle":1398,"tile_description":1399,"id":99,"platforms_id":99,"docs_link":1396},{"id":174,"status":4,"created_on":1483,"modified_on":1483,"name":1484,"slug":1485,"description":1486,"docs_link":1487,"priority":8,"has_sdk":227,"sort":314,"highlighted":227,"in_menu":229,"changefreq":8,"support_type":1397,"show_in_spa":229,"is_file_format":229,"meta_title":8,"meta_description":8,"featured_on_web":227,"marketing_subtitle":910,"tile_subtitle":1488,"tile_description":1489,"is_enterprise":227,"is_popular":229,"primary_use_case":8,"hierarchy_handling":8,"best_for":8,"file_extension":8,"format_code_example":8,"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":174},"2026-05-21T20:49:09.000Z","PO","po","Edit .po and .pot files with your team, automate translation with AI, and ship faster.","\u002Fdocs\u002Fcli\u002Fpo-format","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":107,"status":4,"sort":50,"created_on":944,"label":1331,"hidden":227,"icon":1497,"translations":1498},{"id":1333},[1499,1500,1501,1502],{"id":107,"languages_code":925,"label":1331},{"id":423,"languages_code":927,"label":1337},{"id":551,"languages_code":930,"label":1339},{"id":641,"languages_code":933,"label":1331},[1504,1511,1521],{"id":107,"status":4,"sort":50,"label":1331,"hidden":227,"created_on":944,"icon":1505,"translations":1506},{"id":1333},[1507,1508,1509,1510],{"id":107,"languages_code":925,"label":1331},{"id":423,"languages_code":927,"label":1337},{"id":551,"languages_code":930,"label":1339},{"id":641,"languages_code":933,"label":1331},{"id":461,"status":4,"sort":461,"label":1512,"hidden":229,"created_on":944,"icon":8,"translations":1513},"C++",[1514,1515,1517,1519],{"id":461,"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":99,"status":4,"sort":314,"label":1522,"hidden":229,"created_on":944,"icon":8,"translations":1523},"Gettext",[1524,1525,1527,1529],{"id":99,"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":107,"status":4,"sort":57,"label":838,"alternative_label":8,"slug":842,"description":954,"documentation_link":955,"loc_icon":842,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1533},[1534,1535,1536,1537],{"id":107,"languages_code":925,"label":838,"description":954,"slug":842},{"id":959,"languages_code":927,"label":838,"description":960,"slug":842},{"id":849,"languages_code":933,"label":838,"description":962,"slug":842},{"id":632,"languages_code":930,"label":838,"description":964,"slug":842},{"id":22,"status":4,"sort":50,"label":966,"alternative_label":8,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1539},[1540,1541,1542,1543,1544,1545,1546,1547],{"id":22,"languages_code":925,"label":966,"description":968,"slug":967},{"id":358,"languages_code":927,"label":974,"description":975,"slug":8},{"id":551,"languages_code":933,"label":966,"description":968,"slug":967},{"id":518,"languages_code":930,"label":978,"description":979,"slug":8},{"id":469,"languages_code":927,"label":981,"description":982,"slug":967},{"id":478,"languages_code":933,"label":966,"description":968,"slug":967},{"id":751,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":8},{"id":16,"status":4,"sort":107,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1549},[1550,1551,1552,1553,1554],{"id":16,"languages_code":925,"label":991,"description":994,"slug":993},{"id":285,"languages_code":927,"label":1000,"description":1001,"slug":8},{"id":449,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":8},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":8},{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1556},[1557,1558,1559,1560,1561],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[],{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1564},[1565,1566,1567,1568,1569],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[],[1572],{"languages_code":925,"name":1484,"slug":1485,"description":1486,"support_type":1397,"meta_title":8,"meta_description":8,"marketing_subtitle":910,"tile_subtitle":1488,"tile_description":1489,"id":174,"platforms_id":174,"docs_link":1487},{"id":319,"status":4,"created_on":1229,"modified_on":1574,"name":1575,"slug":1576,"description":1577,"docs_link":1578,"priority":8,"has_sdk":227,"sort":297,"highlighted":227,"in_menu":229,"changefreq":8,"support_type":1397,"show_in_spa":229,"is_file_format":229,"meta_title":8,"meta_description":8,"featured_on_web":227,"marketing_subtitle":910,"tile_subtitle":1579,"tile_description":1580,"is_enterprise":227,"is_popular":227,"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":319},"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":107,"status":4,"sort":50,"created_on":944,"label":1331,"hidden":227,"icon":1592,"translations":1593},{"id":1333},[1594,1595,1596,1597],{"id":107,"languages_code":925,"label":1331},{"id":423,"languages_code":927,"label":1337},{"id":551,"languages_code":930,"label":1339},{"id":641,"languages_code":933,"label":1331},[1599,1606],{"id":107,"status":4,"sort":50,"label":1331,"hidden":227,"created_on":944,"icon":1600,"translations":1601},{"id":1333},[1602,1603,1604,1605],{"id":107,"languages_code":925,"label":1331},{"id":423,"languages_code":927,"label":1337},{"id":551,"languages_code":930,"label":1339},{"id":641,"languages_code":933,"label":1331},{"id":314,"status":4,"sort":319,"label":1607,"hidden":229,"created_on":944,"icon":8,"translations":1608},"C#",[1609,1610,1612,1614],{"id":314,"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":107,"status":4,"sort":57,"label":838,"alternative_label":8,"slug":842,"description":954,"documentation_link":955,"loc_icon":842,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1618},[1619,1620,1621,1622],{"id":107,"languages_code":925,"label":838,"description":954,"slug":842},{"id":959,"languages_code":927,"label":838,"description":960,"slug":842},{"id":849,"languages_code":933,"label":838,"description":962,"slug":842},{"id":632,"languages_code":930,"label":838,"description":964,"slug":842},{"id":22,"status":4,"sort":50,"label":966,"alternative_label":8,"slug":967,"description":968,"documentation_link":969,"loc_icon":970,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1624},[1625,1626,1627,1628,1629,1630,1631,1632],{"id":22,"languages_code":925,"label":966,"description":968,"slug":967},{"id":358,"languages_code":927,"label":974,"description":975,"slug":8},{"id":551,"languages_code":933,"label":966,"description":968,"slug":967},{"id":518,"languages_code":930,"label":978,"description":979,"slug":8},{"id":469,"languages_code":927,"label":981,"description":982,"slug":967},{"id":478,"languages_code":933,"label":966,"description":968,"slug":967},{"id":751,"languages_code":930,"label":978,"description":979,"slug":967},{"id":986,"languages_code":987,"label":988,"description":989,"slug":8},{"id":16,"status":4,"sort":107,"label":991,"alternative_label":992,"slug":993,"description":994,"documentation_link":995,"loc_icon":996,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1634},[1635,1636,1637,1638,1639],{"id":16,"languages_code":925,"label":991,"description":994,"slug":993},{"id":285,"languages_code":927,"label":1000,"description":1001,"slug":8},{"id":449,"languages_code":933,"label":991,"description":994,"slug":993},{"id":1004,"languages_code":930,"label":1005,"description":1006,"slug":8},{"id":1008,"languages_code":987,"label":1009,"description":1010,"slug":8},{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1641},[1642,1643,1644,1645,1646],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[],{"id":7,"status":4,"sort":22,"label":1012,"alternative_label":826,"slug":607,"description":1013,"documentation_link":1014,"loc_icon":607,"is_official_plugin":227,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1649},[1650,1651,1652,1653,1654],{"id":7,"languages_code":925,"label":1012,"description":1013,"slug":607},{"id":274,"languages_code":927,"label":1018,"description":1019,"slug":607},{"id":441,"languages_code":933,"label":1012,"description":1013,"slug":607},{"id":510,"languages_code":930,"label":1022,"description":1023,"slug":607},{"id":1025,"languages_code":987,"label":1026,"description":1027,"slug":8},[1656],{"id":423,"status":4,"created_on":1657,"sort":8,"slug":1576,"label":1575,"on_faq_index":8},"2022-08-01T16:44:06.000Z",[1659],{"languages_code":925,"name":1575,"slug":1576,"description":1577,"support_type":1397,"meta_title":8,"meta_description":8,"marketing_subtitle":910,"tile_subtitle":1579,"tile_description":1580,"id":319,"platforms_id":319,"docs_link":1578},{"id":728,"status":4,"created_on":1661,"modified_on":1662,"name":731,"slug":730,"description":1663,"docs_link":1664,"priority":8,"has_sdk":8,"sort":729,"highlighted":227,"in_menu":229,"changefreq":8,"support_type":1665,"show_in_spa":229,"is_file_format":8,"meta_title":8,"meta_description":8,"featured_on_web":229,"marketing_subtitle":1665,"tile_subtitle":1665,"tile_description":1666,"is_enterprise":227,"is_popular":229,"primary_use_case":8,"hierarchy_handling":8,"best_for":8,"file_extension":8,"format_code_example":8,"format_to_extension":8,"upload_features":8,"icon":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":728},"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":733},{"id":1669},"5995b721-a2ea-487e-ad4b-298a489bbd24",{"id":29,"status":4,"sort":36,"created_on":944,"label":1671,"hidden":227,"icon":1672,"translations":1674},"CMS",{"id":1673},"1172a655-928c-4594-9263-d8afdfd9cd79",[1675,1676,1678,1680],{"id":29,"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":166,"status":4,"sort":162,"label":1684,"hidden":227,"created_on":944,"icon":8,"translations":1685},"Multilingual SEO",[1686,1687,1690,1693],{"id":166,"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":602,"status":4,"sort":602,"label":369,"hidden":227,"created_on":944,"icon":1696,"translations":1698},{"id":1697},"e782ed3f-d954-45ca-8b17-5bf5fe95f30a",[1699,1700,1703,1705],{"id":602,"languages_code":925,"label":369},{"id":1701,"languages_code":927,"label":1702},132,"Comercio electrónico",{"id":1704,"languages_code":930,"label":369},137,{"id":1706,"languages_code":933,"label":369},142,{"id":29,"status":4,"sort":36,"label":1671,"hidden":227,"created_on":944,"icon":1708,"translations":1709},{"id":1673},[1710,1711,1712,1713],{"id":29,"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":16,"status":4,"sort":57,"label":1715,"hidden":227,"created_on":944,"icon":1716,"translations":1718},"Marketing tools",{"id":1717},"098fe6a4-dd2e-42d8-937e-2d8121e6e266",[1719,1720,1723,1725],{"id":16,"languages_code":925,"label":1715},{"id":1721,"languages_code":927,"label":1722},43,"Herramientas de marketing",{"id":498,"languages_code":930,"label":1724},"Marketingové nástroje",{"id":576,"languages_code":933,"label":1715},[1727],{"id":67,"status":4,"sort":8,"label":1728,"alternative_label":1729,"slug":1730,"description":1731,"documentation_link":1732,"loc_icon":1733,"is_official_plugin":229,"is_universal_plugin":227,"universal_plugin_vendor":8,"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":67,"languages_code":925,"label":1728,"description":1731,"slug":1730},{"id":1721,"languages_code":927,"label":1737,"description":1738,"slug":8},"Complemento Oficial de Strapi","Nuestros desarrolladores mantienen un complemento oficial de localización de Strapi. ¡Empiece en unos pocos clics!",{"id":567,"languages_code":933,"label":1728,"description":1731,"slug":1730},{"id":641,"languages_code":930,"label":1741,"description":1742,"slug":8},"Oficiál Plugin Strapi","Naši vývojáři udržují a neustále vylepšují oficiální lokalizační plugin Strapi. Začněte několika kliknutími!",{"id":1688,"languages_code":987,"label":1744,"description":1745,"slug":8},"Offizielles Strapi-Plugin","Unsere Entwickler pflegen ein offizielles Strapi-Lokalisierungs-Plugin. Starten Sie mit ein paar Klicks!",[],{"id":67,"status":4,"sort":8,"label":1728,"alternative_label":1729,"slug":1730,"description":1731,"documentation_link":1732,"loc_icon":1733,"is_official_plugin":229,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1748},[1749,1750,1751,1752,1753],{"id":67,"languages_code":925,"label":1728,"description":1731,"slug":1730},{"id":1721,"languages_code":927,"label":1737,"description":1738,"slug":8},{"id":567,"languages_code":933,"label":1728,"description":1731,"slug":1730},{"id":641,"languages_code":930,"label":1741,"description":1742,"slug":8},{"id":1688,"languages_code":987,"label":1744,"description":1745,"slug":8},[1755],{"id":274,"status":4,"created_on":1756,"sort":8,"slug":730,"label":731,"on_faq_index":8},"2022-06-16T09:24:13.000Z",[1758],{"languages_code":925,"name":731,"slug":730,"description":1663,"support_type":1665,"meta_title":8,"meta_description":8,"marketing_subtitle":1665,"tile_subtitle":1665,"tile_description":1666,"id":728,"platforms_id":728,"docs_link":1664},{"id":518,"status":4,"created_on":1229,"modified_on":1760,"name":738,"slug":737,"description":8,"docs_link":1761,"priority":8,"has_sdk":227,"sort":510,"highlighted":227,"in_menu":229,"changefreq":8,"support_type":1762,"show_in_spa":229,"is_file_format":227,"meta_title":8,"meta_description":8,"featured_on_web":229,"marketing_subtitle":1763,"tile_subtitle":1764,"tile_description":1765,"is_enterprise":227,"is_popular":229,"primary_use_case":8,"hierarchy_handling":8,"best_for":8,"file_extension":8,"format_code_example":8,"format_to_extension":8,"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":518},"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":740},{"id":1769},"7573fed6-8817-4cb4-84d2-be327e6c4891",{"id":22,"status":4,"sort":62,"created_on":944,"label":1771,"hidden":227,"icon":1772,"translations":1774},"Design tools",{"id":1773},"1053d863-b690-4fbd-aadf-dbf2ba282768",[1775,1776,1779,1782],{"id":22,"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":624,"languages_code":933,"label":1771},[1784],{"id":22,"status":4,"sort":62,"label":1771,"hidden":227,"created_on":944,"icon":1785,"translations":1786},{"id":1773},[1787,1788,1789,1790],{"id":22,"languages_code":925,"label":1771},{"id":1777,"languages_code":927,"label":1778},{"id":1780,"languages_code":930,"label":1781},{"id":624,"languages_code":933,"label":1771},[1792],{"id":62,"status":4,"sort":8,"label":1729,"alternative_label":1729,"slug":1793,"description":1794,"documentation_link":152,"loc_icon":1733,"is_official_plugin":229,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1795},"official-plugin","Our developers maintain an official plugin for this integration. Start in a few clicks!",[1796,1797,1800,1801],{"id":62,"languages_code":925,"label":1729,"description":1794,"slug":1793},{"id":347,"languages_code":927,"label":1798,"description":1799,"slug":8},"Plugin Oficial","Nuestros desarrolladores mantienen un plugin oficial para esta integración. ¡Empiece con unos pocos clics!",{"id":338,"languages_code":933,"label":1729,"description":1794,"slug":1793},{"id":531,"languages_code":930,"label":1802,"description":1803,"slug":8},"Oficiální Plugin","Naši vývojáři udržují a neustále vylepšují oficiální plugin pro tuto integraci. Začněte několika kliknutími!",[],{"id":62,"status":4,"sort":8,"label":1729,"alternative_label":1729,"slug":1793,"description":1794,"documentation_link":152,"loc_icon":1733,"is_official_plugin":229,"is_universal_plugin":227,"universal_plugin_vendor":8,"translations":1806},[1807,1808,1809,1810],{"id":62,"languages_code":925,"label":1729,"description":1794,"slug":1793},{"id":347,"languages_code":927,"label":1798,"description":1799,"slug":8},{"id":338,"languages_code":933,"label":1729,"description":1794,"slug":1793},{"id":531,"languages_code":930,"label":1802,"description":1803,"slug":8},[],[1813],{"languages_code":925,"name":738,"slug":737,"description":8,"support_type":1762,"meta_title":8,"meta_description":8,"marketing_subtitle":1763,"tile_subtitle":1764,"tile_description":1765,"id":518,"platforms_id":518,"docs_link":1761},{"faq":1815},{"id":274,"status":4,"title":1816,"content":1817,"slug":1818,"created_on":1819,"modified_on":1820,"owner":1821,"meta_title":8,"category":1822,"related_terms":1826,"related_docs":1827,"additional_categories":1990},"How can I convert different localization file formats?","In the File Management section of Localazy, when downloading your files, you can select the desired format and download your strings in any of the available file formats.\n\nFormat Conversions feature is also an integral part of the [Localazy CLI tool](\u002Fdocs\u002Fcli\u002Fthe-basics), so if you want to automate format conversions, you will need to install Localazy CLI on your preferred platform.\n\n> Read the article: [How to convert localization files into different formats?](\u002Fblog\u002Fconvert-localization-files-different-formats-localazy)\n\n*Note: Format Conversions are available only as a part of the [Professional plan](\u002Ftiers\u002Fprofessional)*","how-to-use-format-conversions-feature","2022-03-17T12:23:00.000Z","2023-05-26T19:28:13.000Z","2bac48a8-b362-482f-b574-3bc71dca4c5b",{"id":166,"status":4,"created_on":1823,"sort":8,"slug":1824,"label":1825,"on_faq_index":229},"2022-03-17T12:22:58.000Z","file-formats","File Formats",[],[1828,1838,1847,1856,1865,1874,1883,1892,1901,1910,1918,1928,1937,1947,1955,1963,1972,1981],{"documentation_id":1829},{"id":423,"status":4,"slug":1830,"title":1831,"excerpt":1832,"content":1833,"created_on":1834,"modified_on":1835,"meta_title":1831,"meta_description":1832,"pinned":227,"sort":1836,"section":1837,"main_image":8},"ios-format","File Format - iOS \u002F macOS","Learn how to use Localazy CLI for localization of your iOS and macOS apps.","If you are looking for the **XCode Strings Catalog** format, navigate to its [**dedicated page**](\u002Fdocs\u002Fcli\u002Fxcstrings-format).\n\nFor iOS and macOS apps, Localazy supports **.strings**, **.stringsdict**, **.plist** and [**XLIFF**](\u002Fdocs\u002Fcli\u002Fxliff-12-format) files. \n\nThe XLIFF format is supported including the Apple's extension for plurals and [is described in its own article](\u002Fdocs\u002Fcli\u002Fxliff-12-format).\n\n## .strings and .stringsdict\n\n**Typical usage:**\n\n```\n{\n\n  \u002F\u002F ... other parts omitted for brevity ...\n\n  \"upload\": {    \n    \"features\": [\"parse_array\", \"parse_plurals\"],\n    \"files\": [\n      {\n        \"type\": \"ios-strings\",\n        \"pattern\": \"Base.lproj\u002FLocalizable.strings\"\n      },\n      {\n        \"type\": \"ios-stringsdict\",\n        \"pattern\": \"Base.lproj\u002FLocalizable.stringsdict\"\n      }\n    ]\n  },\n\n  \"download\": {\n    \"files\": \"${iosLprojFolder}\u002F${file}\"\n  }\n\n}\n```\n\nUsing the **features**, you can change the encoding, enable plurals and arrays. \n\n### Encoding of .strings files\n\nThe default encoding is **auto**. You can change it by including **encoding={encoding}** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. Available options are: `utf8`, `utf16`, `utf16le`, `utf16be`.\n\nIf you need BOM (byte order mark) to be exported in the output file, please add **add_bom** to features in the  [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n### Arrays in .strings\n\nArrays are good but beware of changing the number of items to prevent mismatching translations. If your files contain incomplete arrays, don't use array features at all. \n\nIt's possible to enable support for arrays using the feature `parse_array`. The file below will be parsed as an array instead of separate strings:\n\n```\n\"array[7]\" = \"Array 7\";\n\"array[11]\" = \"Array 11\";\n\"array[27]\" = \"Array 27\";\n\"array[30]\" = \"Array 30\";\n```\n\nAdditional metadata is stored, so Localazy can restore the indexes correctly. All valid indexes are processed where the valid index is a non-negative integer value.  \n\n### Plurals in .strings\n\nIt's possible to enable support for plurals using the feature `parse_plurals`. The file below will be parsed as a plural string instead of separate strings:\n\n```\n\"plural[one]\" = \"You have 1 item.\";\n\"plural[other]\" = \"You have {count} items.\";\n```\n\nWhen parsed as plural, the translated file may contain different quantities (eg. for the Czech language). Your app should be prepared for it.    \n\n```\n\"plural[one]\" = \"Máte 1 položku.\";\n\"plural[few]\" = \"Máte {count} položky.\";\n\"plural[other]\" = \"Máte {count} položek.\";\n```\n\n### .stringsdict\n\nAs .stringsdict format is based on .plist, it's possible to use it for more than just plurals. Localazy can handle also other data and can be used for parsing structured translations (as described below in .plist chapter). You can disable this behavior by disabling the feature `parse_others` (use `!parse_others` for disabling). \n\nLocalazy can correctly parse and translate complex plurals such as: \n\n```xml\n\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003C!DOCTYPE plist PUBLIC \"-\u002F\u002FApple\u002F\u002FDTD PLIST 1.0\u002F\u002FEN\" \"http:\u002F\u002Fwww.apple.com\u002FDTDs\u002FPropertyList-1.0.dtd\">\n\u003Cplist version=\"1.0\">\n\u003Cdict>\n\n\u003Ckey>geese.landed.ct\u003C\u002Fkey>\n\u003Cdict>\n  \u003Ckey>NSStringLocalizedFormatKey\u003C\u002Fkey>\n  \u003Cstring>%1$#@geese@ landed on %2$#@fields@\u003C\u002Fstring>\n  \u003Ckey>geese\u003C\u002Fkey>\n  \u003Cdict>\n    \u003Ckey>NSStringFormatSpecTypeKey\u003C\u002Fkey>\n    \u003Cstring>NSStringPluralRuleType\u003C\u002Fstring>\n    \u003Ckey>NSStringFormatValueTypeKey\u003C\u002Fkey>\n    \u003Cstring>d\u003C\u002Fstring>\n    \u003Ckey>one\u003C\u002Fkey>\n    \u003Cstring>A goose\u003C\u002Fstring>\n    \u003Ckey>other\u003C\u002Fkey>\n    \u003Cstring>%d geese\u003C\u002Fstring>\n  \u003C\u002Fdict>\n  \u003Ckey>fields\u003C\u002Fkey>\n  \u003Cdict>\n    \u003Ckey>NSStringFormatSpecTypeKey\u003C\u002Fkey>\n    \u003Cstring>NSStringPluralRuleType\u003C\u002Fstring>\n    \u003Ckey>NSStringFormatValueTypeKey\u003C\u002Fkey>\n    \u003Cstring>d\u003C\u002Fstring>\n    \u003Ckey>one\u003C\u002Fkey>\n    \u003Cstring>1 field\u003C\u002Fstring>\n    \u003Ckey>other\u003C\u002Fkey>\n    \u003Cstring>%d fields\u003C\u002Fstring>\n  \u003C\u002Fdict>\n\u003C\u002Fdict>\n\n\u003C\u002Fdict>\n\u003C\u002Fplist>\n```\n  \n## .plist\n\nStructured .plist files can be imported for translating. Elements `\u003Carray>` are parsed as arrays in Localazy. No extra configuration is necessary.\n\n```xml\n\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003C!DOCTYPE plist PUBLIC \"-\u002F\u002FApple\u002F\u002FDTD PLIST 1.0\u002F\u002FEN\" \"http:\u002F\u002Fwww.apple.com\u002FDTDs\u002FPropertyList-1.0.dtd\">\n\u003Cplist version=\"1.0\">\n\u003Cdict>\n\n    \u003C!-- Comment for the strings test_key_1. -->\n    \u003Ckey>test_key_1\u003C\u002Fkey>\n    \u003Cstring>Test String 1\u003C\u002Fstring>\n\n    \u003C!-- Comment for the strings test_key_2. -->\n    \u003Ckey>test_key_2\u003C\u002Fkey>\n    \u003Cstring>Test String 2\u003C\u002Fstring>\n\n    \u003Ckey>test_obj\u003C\u002Fkey>\n    \u003Cdict>\n\n        \u003Ckey>test_obj_key_1\u003C\u002Fkey>\n        \u003Cstring>Test Obj Key 1\u003C\u002Fstring>\n\n        \u003Ckey>test_obj_key_2\u003C\u002Fkey>\n        \u003Cstring>Tet Obj key 2\u003C\u002Fstring>\n\n        \u003Ckey>test_inner\u003C\u002Fkey>\n        \u003Cdict>\n            \u003Ckey>test_inner_key_1\u003C\u002Fkey>\n            \u003Cstring>Test Inner Key 1\u003C\u002Fstring>\n        \u003C\u002Fdict>\n\n    \u003C\u002Fdict>\n\n    \u003Ckey>test_array\u003C\u002Fkey>\n    \u003Carray>\n        \u003Cstring>Array Test 1\u003C\u002Fstring>\n        \u003Cstring>Array Test 2\u003C\u002Fstring>\n        \u003Cstring>Array Test 3\u003C\u002Fstring>\n    \u003C\u002Farray>\n\n\u003C\u002Fdict>\n\u003C\u002Fplist>\n```\n\nBy default, the .plist parser process plurals that are in the format compatible with .stringsdict as plurals. You can disable this behavior by disabling feature `parse_plurals` (use `!parse_plurals` for disabling) or skip plurals completely by leaving `parse_plurals` and adding `skip_plurals`. \n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n___CLI_LINKS___ ","2022-03-18T07:51:25.000Z","2024-07-16T15:14:41.000Z","32020",{"id":22,"slug":607,"name":826},{"documentation_id":1839},{"id":1721,"status":4,"slug":1840,"title":1841,"excerpt":1842,"content":1843,"created_on":1834,"modified_on":1844,"meta_title":1841,"meta_description":1842,"pinned":227,"sort":1845,"section":1846,"main_image":8},"flutter-format","File Format - Flutter ARB","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. \n\n## Generate @@locale\n\n\nAdd `arb_locale_full` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section to generate full locale. Example for `cs_CZ`:\n\n```json\n{\n  \"@@locale\": \"cs_CZ\"\n}\n```\n\nAdd `arb_locale_lang` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section to generate language only. Example for `cs_CZ`:\n\n\n```json\n{\n  \"@@locale\": \"cs\"\n}\n```\n\n\n## Context information\n\nAllows defining additional metadata for the string using `@key` notation.\n\nBy default, Localazy extracts content from `description`, `context` and `placeholders` and presents it to the translators to provide better context and improve translation quality.\n\nYou can disable metadata in the output files by adding `arb_dont_export_metadata` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\nFor plurals and arrays, metadata can be defined using the base form without the suffix. \n\n```json\n{\n\n  \"singleString\": \"This is just a normal string.\",\n  \"@singleString\": {\n    \"context\": \"views:Home page\",\n    \"description\": \"Comment for the single string.\"\n  },\n\n  \"datePickerMinuteOne\": \"1 minute\",\n  \"datePickerMinuteOther\": \"$minute minutes\",\n  \"@datePickerMinute\": {    \n    \"description\": \"Accessibility announcement for the selected minute on a time picker such as '15 minutes' or '15分'\",\n    \"plural\": \"minute\",\n    \"placeholders\": {\n      \"minute\": {\n        \"description\": \"the number of minutes\",\n        \"example\": \"15\"\n      }\n    }\n  }\n\n}\n```\n\nIt's also possible to specify context information (a comment for translators and character limit) using our own extension:\n\n```json\n{\n  \"category\": {\n    \"my_key\": \"This is a text of my key.\",\n    \"@@localazy:comment:my_key\": \"This is a comment for translators.\",\n    \"@@localazy:limit:my_key\": \"100\"\n  }\n}\n```\n\n::: info\nPlease note that keys starting with `@@localazy` will not be exported to the output files. Do not overwrite your source files. \n:::\n\n## Arrays\n\nArrays are good but beware of changing the number of items to prevent mismatching translations. If your files contain incomplete arrays, don't use array features at all. \n\nThere are two ways how to define arrays.  \n\n### JSON Arrays\n\nStandard JSON arrays are recognized as arrays and stored with Localazy in a corresponding way.\n\nThis feature can be enabled by adding `array` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```json\n{\n  \"game.difficulty\": [\n    \"easy\",\n    \"medium\",\n    \"hard\"\n  ]\n}\n```\n\n### Arrays defined by suffix\n\nAs using JSON arrays in ARB is not common, Localazy parses automatically also the suffixed variant shown below and presents it to translators in a way that keeps items together and thus improves context and translation quality. \n\nThis feature can be enabled by adding `array_br` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```json\n{\n  \"difficulty[0]\": \"easy\",\n  \"difficulty[4]\": \"normal\",\n  \"difficulty[7]\": \"hard\",\n  \"difficulty[9]\": \"extreme\"\n}\n```\n\nThe code above will be processed as an array and additional metadata will be stored, so Localazy can restore the indexes correctly.\n\nAll valid indexes are processed where valid index is non-negative integer value.  \n\n\n## Plurals\n\nBeware that plurals may lead to different output for translated files due to how plurals are handled in different languages. \n\n```json\n\u002F\u002F English has only two plural forms:\n{\n  \"pluralOne\": \"You have 1 item.\",\n  \"pluralOther\": \"You have %d items.\"\n}\n\n\u002F\u002F Czech has three plural forms:\n{\n  \"pluralOne\": \"Máte 1 položku.\",\n  \"pluralFew\": \"Máte %d položky.\",\n  \"pluralOther\": \"Máte %d položek.\"\n}\n```\n\nLocalazy knows the rules for different languages and adapt its interface to assist translators to correctly translate all mandatory forms.\n\nYour app should be able to handle this. We are also working on SDK to help you with this task. \n\nAllowed plurals types are: **zero**, **one**, **two**, **few**, **many**, **other**. \n\n### Suffixed with camelCase\n\nThis feature can be disabled by adding `!plural_postfix_cc` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n**Example:**\n\n```json\n{\n\n  \"camelCase\": {\n    \"usersOne\": \"There is one user.\",\n    \"usersOther\": \"There are $number users.\"  \n  }\n\n}\n```\n\n### Suffixed with brackets\n\nThis feature can be disabled by adding `!plural_postfix_br` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n \n**Example:**\n\n```json\n{\n\n  \"brackets\": {\n    \"users[one]\": \"There is one user.\",\n    \"users[other]\": \"There are $number users.\"  \n  }\n\n}\n```\n\n### Defined using ICU\n\nThis feature can be disabled by adding `!plural_icu` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```json\n{\n  \"users\": \"There are {COUNT, plural, one {one user} other {# users}}.\"\n}\n```\n\nOnly one ICU plural can be used in the string as otherwise, it wouldn't be possible to convert it to a specific Localazy plural structure. If more than two ICU plurals are contained, the string is kept in the original form.\n\nAllowed plurals types are: zero (=0), one (=1), two (=2), few, many, other.\n \nOther ICU types like gender, number, etc. can be used but will not be converted and will be kept in string in the original form.\n\n### Defined using pipeline\nEnabled by `plural_pipeline` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nSingular\u002Fplural variant:\n\n```json\n{\n  \"key_plural\": \"one | other\"\n}\n```\n\n## JSON parser compatibility\n\nOur ARB parser is based on top of [our JSON support](\u002Fdocs\u002Fcli\u002Fjson-format) and so you can additionally enable any other feature you need.  \n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n___CLI_LINKS___","2025-02-27T21:19:59.000Z","32030",{"id":22,"slug":607,"name":826},{"documentation_id":1848},{"id":469,"status":4,"slug":1849,"title":1850,"excerpt":1851,"content":1852,"created_on":1834,"modified_on":1853,"meta_title":1850,"meta_description":1851,"pinned":227,"sort":1854,"section":1855,"main_image":8},"javascript-format","File Format - Javascript","Learn how to use Localazy CLI for app and software localization with translations in Javascript files. ","You can use Localazy to directly localize Javascript files with various formats supported, and with a configurable parser based on [our JSON support](\u002Fdocs\u002Fcli\u002Fjson-format). \n\n## The format\n\nOur parser can adapt to many formats of JS files that follow the rule `PREFIX { localizable content } SUFFIX` such as the examples below.\n\nPlease note that **functions**, **imports**, **lambdas**, **explicit types** (for TypeScript), **string concatenation**, etc. are not supported in the localizable content part. Also, there can be only one localizable part in the file. \n\nFor multiline strings, you can use backticks. \n\n\n```js\nexport default {\n  parent1: {\n    \u002F\u002F Comment is used as a context information for translator.\n    child_1: \"Text 1\",\n    child_2: \"Text 2\",\n    child_3: \"Text 3\",\n  },\n  parent2: {\n    ...\n  } \n};\n```\n\n---\n\n```js\nvar translations = {\n  parent: {\n    child: \"Text 1\"\n  }\n}\n```\n---\n\n```js\ndefine({\n  parent: {\n    child: \"Text 1\"\n  }\n});\n```\n\n## Forcing double quotes\n\nBy default, the variable names are not double-quoted. We only use double quotes when the variable name contains unsupported characters to prevent issues with the generated file.\n\nYou can add `force_quotes` to the **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section to force using double quotes for all variable names. \n\n\n## Available features\n\n**[All features supported by Localazy for JSON](\u002Fdocs\u002Fcli\u002Fjson-format)** are available including plurals, arrays, multilingual files, etc. Only the support for `requirejs` is not available.   \n\n\n## Context information\n\nIt's possible to use comments. They are parsed and stored as context information for translators. \n\n```js\nexport default {\n  \n  \u002F\u002F Please keep translation short.\n  short_name: \"Short Name\",\n\n  \u002F*\n  Multi-line comments are allowed as well.\n  *\u002F\n  long_name: \"Long Name\"\n\n};\n```\n\nIt's also possible to specify context information (a comment for translators and character limit) using our own extension:\n\n```js\nexport default {\n  category: {\n    my_key: \"This is a text of my key.\",\n    \"@@localazy:comment:my_key\": \"This is a comment for translators.\",\n    \"@@localazy:limit:my_key\": \"100\"\n  }\n}\n```\n\n::: info\nPlease note that keys starting with `@@localazy` will not be exported to the output files. Do not overwrite your source files. \n:::\n\n\n## Skipping empty translations\n\nBy default, empty translations are imported as empty strings. If your format use empty translations for untranslated texts, add `skip_empty` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.  \n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n___CLI_LINKS___","2024-07-16T15:14:44.000Z","32050",{"id":22,"slug":607,"name":826},{"documentation_id":1857},{"id":498,"status":4,"slug":1858,"title":1859,"excerpt":1860,"content":1861,"created_on":1834,"modified_on":1862,"meta_title":1859,"meta_description":1860,"pinned":227,"sort":1863,"section":1864,"main_image":8},"xliff-12-format","File Format - XLIFF 1.2","Learn how to use Localazy CLI for app and software localization with XLIFF 1.2.","Selected elements of XLIFF 1.2 are supported, and the format is fully compliant with Apple's XLIFF files generated by XCode including Apple's plural extension (described below).  \n\n**Example:**\n\n```xml\n\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003Cxliff xmlns=\"urn:oasis:names:tc:xliff:document:1.2\"       \n       version=\"1.2\">\n\n  \u003Cfile original=\"Interface.storyboard\" source-language=\"en\" target-language=\"en\" datatype=\"plaintext\">\n    \u003Cbody>\n      \u003Ctrans-unit id=\"text1\" xml:space=\"preserve\">\n        \u003Csource>Source Text 1\u003C\u002Fsource>\n        \u003Ctarget>Translated Text 1\u003C\u002Ftarget>\n        \u003Cnote>Comment for the translator.\u003C\u002Fnote>\n      \u003C\u002Ftrans-unit>\n      \u003Ctrans-unit id=\"text2\" xml:space=\"preserve\">\n        \u003Csource>Source Text 2\u003C\u002Fsource>\n        \u003Ctarget>Translated Text 2\u003C\u002Ftarget>\n      \u003C\u002Ftrans-unit>\n    \u003C\u002Fbody>\n  \u003C\u002Ffile>\n\n\u003C\u002Fxliff>\n```\n\n## Supported elements\n\n### &lt;file&gt;\n\nAttributes `original`, `source-language`, `target-language`, and `datatype` are used for obtaining locale information and retained. \n\n### &lt;body&gt;\n\nNo extra functionality is provided.\n\n### &lt;trans-unit&gt;\n\nIf the attribute **translate** is set to **no** or **false**, the phrase is skipped.\n\n```xml\n\u003Ctrans-unit id=\"skipped_text1\" xml:space=\"preserve\" translate=\"yes\">\n  \u003Csource>Skipped Source Text 1\u003C\u002Fsource>\n  \u003Ctarget>Skipped Translated Text 1\u003C\u002Ftarget>\n\u003C\u002Ftrans-unit>\n```\n\nSub-elements `source`, `target` and `note` are supported.\n\n### &lt;group&gt;\n\nIf the group element contains **id**, it's retained, and stored data is structured accordingly. Without **id**, the group is just removed.\n\nIf the attribute **translate** is set to **no** or **false**, the whole group is skipped.\n  \n```xml\n\u003Cgroup id=\"\" translate=\"yes\">\n  \u003Ctrans-unit id=\"inner_text1\" xml:space=\"preserve\">\n    \u003Csource>Inner Source Text 1\u003C\u002Fsource>\n    \u003Ctarget>Inner Translated Text 1\u003C\u002Ftarget>\n  \u003C\u002Ftrans-unit>\n\u003C\u002Fgroup>\n```\n\n## Prevent  &lt;file original=\"...\"&gt; from being parsed\n\nBy default, Localazy stores several attributes from the **file** tag such as the languages, datatype and original filename making the reference to the **file** tag unique. \n\nIf your framework or library generates XLIFF files with the different **original** attribute per language, it's not possible to correctly link translations together and thus it's necessary to ignore it during the upload. \n\nThis feature can be enabled by adding `ignore_original` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nIn such case, if the **original** attribute is required, you need to introduce a custom logic to restore the parameter as needed by your framework. \n\n## Prevent  &lt;file id=\"...\"&gt; from being parsed\n\nSimilarly to the previous chapter, if the **id** attribute is different per language, you can stop processing it. \n\nThis feature can be enabled by adding `ignore_id` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n## Support for Unity\n\nXLIFF files generated by Unity have different **original** and **id** attributes for the **file** tag per language. \n\nAdd `ignore_original` and `ignore_id` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section to upload existing translations from Unity and link them correctly. \n\nEverything else works out of the box. \n\n## Handling locales\n\nBy default, both source and target strings are processed and the locale is taken from the XLIFF file with fuzzy match being applied for the source language. \n\nBy adding `dont_fuzzy_match_lang` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section, no fuzzy match is applied to the source langauge. And you can also change how languages are obtained from the XLIFF file by adding features mentioned in the table below to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n| Feature | Description |\n| --- | --- |\n| dont_parse_source | Do not parse *source* strings. |\n| dont_parse_target | Do not parse *target* strings. |\n| use_project_lang | Use the project base language for *source* strings. |\n| use_defined_lang_for_source | Use language defined for the uploaded file for *source* strings. |\n| use_defined_lang_for_target | Use language defined for the uploaded file for *target* strings. |\n\nFeatures `use_project_lang`, `use_defined_lang_for_source` and `use_defined_lang_for_target` cannot be combined and they are processed in the same order as mentioned. \n\n## XML entities\n\nBy default, XML entities are converted while importing your file. They may not be converted back while exporting it, because it's not necessary. \n\nIt's possible to output certain XML 1.1 entities (such as &amp;apos;) in the final file. This feature can be enabled by adding `output_entities` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nThis feature is useful for **Angular** to get the output in the same format as input. \n\n## HTML entities\n\nHTML entities are not allowed in XLIFF files because they are not defined in the XML standard. Localazy can convert HTML entities to their Unicode representation when the file is imported. This feature can be enabled by adding `decode_html_entities` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nBy default, tags are imported as tags and entities **&amp;lt;** and **&amp;gt;** are kept as entities and not decoded. We do so to preserve the exact form in the output file. If you are sure that you don't need this feature, you can add `decode_tags` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section to force decoding tag entities. \n\n## Unicode entities\n\nBy default, Unicode entities are encoded using the `#&nnnn;` format. To export Unicode entities as characters (e.g., smilies), which is necessary for XCode, add `use_unicode` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. However, this setting only applies to a known HTML entities. \n\nYou can also add `encode_output` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section to force all the `#&nnnn;` entities to be encoded as Unicode characters in the output file.\n\n## Key in source\n\nSome frameworks such as Symfony, use the `\u003Csource>` tag for string keys. You can enable support for this by adding `source_is_key` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nThis feature can be used together with **use_project_lang** or **use_defined_lang_for_source**.\n\nBy default, **id** from the `\u003Ctrans-unit id=\"..\">` tag is included in the string key. You can enable the **omit_id_for_source_is_key** feature to remove it. With this feature enabled, numeric **id** is generated for each of the `\u003Ctrans-unit>` tags.\n\n## Attributes of the translation unit\n\nBy default, Localazy doesn't store attributes of the `\u003Ctrans-unit>`, except for important ones such as **id**. If you want to store all the attributes, add **store_attrs** feature. \n\nThis feature is only necessary for some frameworks that populate `\u003Ctrans-unit>` with additional parameters. \n\n## Array support\n\nArrays are good but beware of changing the number of items to prevent mismatching translations. If your files contain incomplete arrays, don't use array features at all. \n\nThis feature can be enabled by adding `parse_array` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n\n```xml\n\u003Ctrans-unit id=\"array[1]\" xml:space=\"preserve\">\n  \u003Csource>Array Item 1\u003C\u002Fsource>\n\u003C\u002Ftrans-unit>\n\n\u003Ctrans-unit id=\"array[13]\" xml:space=\"preserve\">\n  \u003Csource>Array Item 13\u003C\u002Fsource>\n\u003C\u002Ftrans-unit>\n\n\u003Ctrans-unit id=\"array[27]\" xml:space=\"preserve\">\n  \u003Csource>Array Item 27\u003C\u002Fsource>\n\u003C\u002Ftrans-unit>\n```\n\nThe code above will be processed as an array and additional metadata will be stored, so Localazy can restore the indexes correctly.\n\nAll valid indexes are processed where the valid index is a non-negative integer value.  \n\n## Plurals support\n\nThis feature can be enabled by adding `parse_plurals` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```xml\n\u003Ctrans-unit id=\"plural[one]\" xml:space=\"preserve\">\n  \u003Csource>You have 1 item.\u003C\u002Fsource>\n\u003C\u002Ftrans-unit>\n\n\u003Ctrans-unit id=\"plural[other]\" xml:space=\"preserve\">\n  \u003Csource>You have {count} items.\u003C\u002Fsource>\n\u003C\u002Ftrans-unit>\n```\n\n## Apple's plural extension\n\nThe plural format below is fully supported. Enable the support with `parse_plurals_ios` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```xml\n\u003Ctrans-unit id=\"\u002Fplural string:dict\u002Fcount:dict\u002Fone:dict\u002F:string\" xml:space=\"preserve\">\n  \u003Csource>You have 1 item.\u003C\u002Fsource>\n  \u003Ctarget>Máte 1 položku.\u003C\u002Ftarget>\n\u003C\u002Ftrans-unit>\n\n\u003Ctrans-unit id=\"\u002Fplural string:dict\u002Fcount:dict\u002Fother:dict\u002F:string\" xml:space=\"preserve\">\n  \u003Csource>You have {count} item.\u003C\u002Fsource>\n  \u003Ctarget>Máte {count} položek.\u003C\u002Ftarget>\n\u003C\u002Ftrans-unit>\n```\n\n## ICU plurals\n\nEnabled by `parse_plurals_icu` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```xml\n\u003Ctrans-unit id=\"icu_plural\" xml:space=\"preserve\">\n  \u003Csource>You {count, plural, one {have # project} other {have # projects}}.\u003C\u002Fsource>\n\u003C\u002Ftrans-unit>\n```\n\nOnly one ICU plural can be used in the string as otherwise, it wouldn't be possible to convert it to a specific Localazy plural structure. If more than two ICU plurals are contained, the string is kept in the original form.\n\nAllowed plurals types are: zero (=0), one (=1), two (=2), few, many, other.\n \nOther ICU types like gender, number, etc. can be used but will not be converted and will be kept in string in the original form.\n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n\n___CLI_LINKS___","2025-02-27T21:37:26.000Z","32060",{"id":22,"slug":607,"name":826},{"documentation_id":1866},{"id":1780,"status":4,"slug":1867,"title":1868,"excerpt":1869,"content":1870,"created_on":1834,"modified_on":1871,"meta_title":1868,"meta_description":1869,"pinned":227,"sort":1872,"section":1873,"main_image":8},"xliff-20-format","File Format - XLIFF 2.0","Learn how to use Localazy CLI for app and software localization with XLIFF 2.0.","Selected elements of XLIFF 2.0 are supported, and we added extra support for Apple's plural extension, arrays, and other forms of plurals.  \n \n**Example:**\n\n```xml\n\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003Cxliff xmlns=\"urn:oasis:names:tc:xliff:document:2.0\" version=\"2.0\" srcLang=\"en\" trgLang=\"cs\">\n\n  \u003Cfile id=\"f1\" original=\"soubor.cs\" datatype=\"plaintext\">\n\n    \u003Cunit id=\"string_key\">\n\n      \u003Cnotes>\n        \u003Cnote id=\"comment_1\">Comment for translator.\u003C\u002Fnote>\n      \u003C\u002Fnotes>\n  \n      \u003Csegment id=\"seg_1\">\n        \u003Csource>PART 1 EN\u003C\u002Fsource>\n        \u003Ctarget>PART 1 CS\u003C\u002Ftarget>\n      \u003C\u002Fsegment>\n\n      \u003Csegment id=\"seg_2\">\n        \u003Csource>PART 2 EN\u003C\u002Fsource>\n        \u003Ctarget>PART 2 CS\u003C\u002Ftarget>\n      \u003C\u002Fsegment>\n\n    \u003C\u002Funit>\n\n  \u003C\u002Ffile>\n\u003C\u002Fxliff>\n```\n\n## Supported elements\n\n### &lt;xliff&gt;\n\nAttributes `srcLang` and `trgLang` are used for obtaining locale information.\n\n### &lt;file&gt;\n\nAttributes `id`, `original`, and `datatype` are stored and retained in translated files.\n\n\n### &lt;unit&gt;\n\nIf the attribute **translate** is set to **no** or **false**, the phrase is skipped.\n\n```xml\n\u003Cunit id=\"skipped_text1\" translate=\"yes\">\n  ...\n\u003C\u002Funit>\n```\n\n### &lt;notes&gt; and &lt;note&gt;\n\nAllows defining comments and context information for translators. \n\n```xml\n\u003Cunit id=\"string_key\">\n\n  \u003Cnotes>\n    \u003Cnote id=\"comment_1\">Comment for translator.\u003C\u002Fnote>\n  \u003C\u002Fnotes>\n \n  ...\n\n\u003C\u002Funit>\n```\n\n### &lt;segment&gt;\n\nMultiple segments inside one `\u003Cunit>` are supported, but the segments are imported as a separate string.  \n\n```xml\n\u003Cunit id=\"string_key\">\n\n  \u003Csegment id=\"segment_1\">\n    \u003Csource>Original String: Segment 1\u003C\u002Fsource>\n    \u003Ctarget>Translated String: Segment 1\u003C\u002Ftarget>\n  \u003C\u002Fsegment>\n\n  \u003Csegment id=\"segment_2\">\n    \u003Csource>Original String: Segment 2\u003C\u002Fsource>\n    \u003Ctarget>Translated String: Segment 2\u003C\u002Ftarget>\n  \u003C\u002Fsegment>\n\n\u003C\u002Funit>\n```\n\n### &lt;group&gt;\n\nIf the group element contains **id**, it's retained, and stored data is structured accordingly. Without **id**, the group is just removed.\n\nIf the attribute **translate** is set to **no** or **false**, the whole group is skipped.\n  \n```xml\n\u003Cgroup id=\"\" translate=\"yes\">\n  ...\n\u003C\u002Fgroup>\n```\n\n## Prevent  &lt;file original=\"...\"&gt; from being parsed\n\nBy default, Localazy stores several attributes from the **file** tag such as the languages, datatype and original filename making the reference to the **file** tag unique. \n\nIf your framework or library generates XLIFF files with the different **original** attribute per language, it's not possible to correctly link translations together and thus it's necessary to ignore it during the upload. \n\nThis feature can be enabled by adding `ignore_original` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nIn such case, if the **original** attribute is required, you need to introduce a custom logic to restore the parameter as needed by your framework. \n\n## Prevent  &lt;file id=\"...\"&gt; from being parsed\n\nSimilarly to the previous chapter, if the **id** attribute is different per language, you can stop processing it. \n\nThis feature can be enabled by adding `ignore_id` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n## Support for Unity\n\nXLIFF files generated by Unity have different **original** and **id** attributes for the **file** tag per language. \n\nAdd `ignore_original` and `ignore_id` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section to upload existing translations from Unity and link them correctly. \n\nEverything else works out of the box. \n\n## Handling locales\n\nBy default, both source and target strings are processed and the locale is taken from the XLIFF file with fuzzy match being applied for the source language. \n\nBy adding `dont_fuzzy_match_lang` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section, no fuzzy match is applied to the source langauge. And you can also change how languages are obtained from the XLIFF file by adding features mentioned in the table below to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n| Feature | Description |\n| --- | --- |\n| dont_parse_source | Do not parse *source* strings. |\n| dont_parse_target | Do not parse *target* strings. |\n| use_project_lang | Use the project base language for *source* strings. |\n| use_defined_lang_for_source | Use language defined for the uploaded file for *source* strings. |\n| use_defined_lang_for_target | Use language defined for the uploaded file for *target* strings. |\n\nFeatures `use_project_lang`, `use_defined_lang_for_source` and `use_defined_lang_for_target` cannot be combined and they are processed in the same order as mentioned. \n\n## XML entities\n\nBy default, XML entities are converted while importing your file. They may not be converted back while exporting it, because it's not necessary. \n\nIt's possible to output certain XML 1.1 entities (such as &amp;apos;) in the final file. This feature can be enabled by adding `output_entities` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nThis feature is useful for **Angular** to get the output in the same format as input. \n\n## HTML entities\n\nHTML entities are not allowed in XLIFF files because they are not defined in the XML standard. Localazy can convert HTML entities to their Unicode representation when the file is imported. This feature can be enabled by adding `decode_html_entities` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nBy default, tags are imported as tags and entities **&amp;lt;** and **&amp;gt;** are kept as entities and not decoded. We do so to preserve the exact form in the output file. If you are sure that you don't need this feature, you can add `decode_tags` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section to force decoding tag entities. \n\n## Unicode entities\n\nBy default, Unicode entities are encoded using the `#&nnnn;` format. To export Unicode entities as characters (e.g., smilies), which is necessary for XCode, add `use_unicode` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. However, this setting only applies to a known HTML entities. \n\nYou can also add `encode_output` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section to force all the `#&nnnn;` entities to be encoded as Unicode characters in the output file.\n\n## Key in source\n\nSome frameworks such as Symfony, use the `\u003Csource>` tag for string keys. You can enable support for this by adding `source_is_key` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nThis feature can be used together with **use_project_lang** or **use_defined_lang_for_source**.\n\nBy default, **id** from the `\u003Cunit id=\"..\">` tag is included in the string key. You can enable the **omit_id_for_source_is_key** feature to remove it. Please note that it can have some consequences related to multiple segments as it's no longer possible to group them by key. With this feature enabled, numeric **id** is generated for each of the `\u003Cunit>` tags.\n\n## Attributes of the translation unit\n\nBy default, Localazy doesn't store attributes of the `\u003Cunit>`, except for important ones such as **id**. If you want to store all the attributes, add **store_attrs** feature. \n\nThis feature is only necessary for some frameworks that populate `\u003Cunit>` with additional parameters. \n\n## Array support\n\nArrays are good but beware of changing the number of items to prevent mismatching translations. If your files contain incomplete arrays, don't use array features at all. \n\nThis feature can be enabled by adding `parse_array` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n\n```xml\n\u003Cunit id=\"array[1]\">\n  \u003Csegment id=\"s1\">\n    \u003Csource>Array Item 1\u003C\u002Fsource>\n  \u003C\u002Fsegment>\n\u003C\u002Funit>\n\n\u003Cunit id=\"array[13]\">\n  \u003Csegment id=\"s1\">\n    \u003Csource>Array Item 13\u003C\u002Fsource>\n  \u003C\u002Fsegment>\n\u003C\u002Funit>\n\n\u003Cunit id=\"array[27]\">\n  \u003Csegment id=\"s1\">\n    \u003Csource>Array Item 27\u003C\u002Fsource>\n  \u003C\u002Fsegment>\n\u003C\u002Funit>\n```\n\nThe code above will be processed as an array and additional metadata will be stored, so Localazy can restore the indexes correctly.\n\nAll valid indexes are processed where the valid index is a non-negative integer value.  \n\n## Plurals support\n\nThis feature can be enabled by adding `parse_plurals` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```xml\n\u003Cunit id=\"plural[one]\">\n  \u003Csegment id=\"s1\">\n    \u003Csource>You have 1 item.\u003C\u002Fsource>\n  \u003C\u002Fsegment>\n\u003C\u002Funit>\n\n\u003Cunit id=\"plural[other]\">\n  \u003Csegment id=\"s1\">\n    \u003Csource>You have {count} items.\u003C\u002Fsource>\n  \u003C\u002Fsegment>\n\u003C\u002Funit>\n```\n\n## Apple's plural extension\n\nThe plural format below is fully supported. Enable the support with `parse_plurals_ios` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```xml\n\u003Cunit id=\"\u002Fplural string:dict\u002Fcount:dict\u002Fone:dict\u002F:string\">\n  \u003Csegment id=\"s1\">\n    \u003Csource>You have 1 item.\u003C\u002Fsource>\n    \u003Ctarget>Máte 1 položku.\u003C\u002Ftarget>\n  \u003C\u002Fsegment>\n\u003C\u002Funit>\n\n\u003Cunit id=\"\u002Fplural string:dict\u002Fcount:dict\u002Fother:dict\u002F:string\">\n  \u003Csegment id=\"s1\">\n    \u003Csource>You have {count} item.\u003C\u002Fsource>\n    \u003Ctarget>Máte {count} položek.\u003C\u002Ftarget>\n  \u003C\u002Fsegment>\n\u003C\u002Funit>\n```\n\n## ICU plurals\n\nEnabled by `parse_plurals_icu` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```xml\n\u003Cunit id=\"icu_plural\" xml:space=\"preserve\">\n  \u003Csegment id=\"s1\">\n    \u003Csource>You {count, plural, one {have # project} other {have # projects}}.\u003C\u002Fsource>\n  \u003C\u002Fsegment>\n\u003C\u002Funit>\n```\n\nOnly one ICU plural can be used in the string as otherwise, it wouldn't be possible to convert it to a specific Localazy plural structure. If more than two ICU plurals are contained, the string is kept in the original form.\n\nAllowed plurals types are: zero (=0), one (=1), two (=2), few, many, other.\n \nOther ICU types like gender, number, etc. can be used but will not be converted and will be kept in string in the original form.\n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n___CLI_LINKS___","2025-02-27T21:38:07.000Z","32070",{"id":22,"slug":607,"name":826},{"documentation_id":1875},{"id":729,"status":4,"slug":1876,"title":1877,"excerpt":1878,"content":1879,"created_on":1834,"modified_on":1880,"meta_title":1877,"meta_description":1878,"pinned":227,"sort":1881,"section":1882,"main_image":8},"po-format","File Format - PO\u002FPOT","Learn how to use Localazy CLI for app and software localization with translations in PO\u002FPOT files. ","Gettext PO\u002FPOT format is fully supported including plurals and context information. \n\nSee [the full specification](https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002Fmanual\u002Fhtml_node\u002FPO-Files.html) for more details.\n\n## Context information\n\nThese comments are parsed and processed:\n\n- `#` - general comment\n- `#.` - extracted comment\n- `#:` - reference\n\nBy default, comments are not restored in the output file. If you want to preserve them, enable **preserve_comments** in **features** in the [upload section](\u002Fdocs\u002Fcli\u002Fupload-reference). \n\n## Texts\n\nThe standard format for single and multi-line line strings is fully supported. \n\n```text\n# Single line\nmsgctxt \"Context\"\nmsgid \"Input text\"\nmsgstr \"Translation\"\n\n# Multiple lines\nmsgid \"\"\n\"The input text\\n\"\n\"splitted to several\\n\"\n\"lines\"\nmsgstr \"Translation\\n\"\n\"can also be splitted.\"\n```\n\n## Plurals\n\nPlurals are fully supported in the standard form described below.\n\n```text\nmsgid \"\"\nmsgstr \"\"\n\"...\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\"...\"\n\nmsgid \"Just one user online\"\nmsgid_plural \"There are %d users online\"\nmsgstr[0] \"Un seul utilisateur en ligne\"\nmsgstr[1] \"Il y a %d utilisateurs en ligne\"\n```\n\n::: info\nWe generate `Plural-Forms` field in the header from the latest CLDR data, so the formula may be a bit different. However, it should be accurate and recent.  \n:::\n\n## Use msgid for ID\u002Fkey\n\nBy default, Localazy parses **po** files the way they are planned to be used. The content of **msgid** is used for the source language and **msgstr** for the target language. \n\nIf you use **msgid** for ID\u002Fkey and don't want to parse **msgid** for the source language, enable **skip_source** in **features** in the [upload section](\u002Fdocs\u002Fcli\u002Fupload-reference). This way, **msgid** is used for the key and **msgstr** for content. \n\n## Use key for missing texts\n\nEnable **use_key_for_content** in **features** in the [upload section](\u002Fdocs\u002Fcli\u002Fupload-reference) to use the **msgid** as a content where **msgstr** is empty.\n\n## Working with empty translations\n\nIf you, for some reason, need to preserve empty translations, you will need two options that you can use in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n| Feature | Description |\n| --- | --- |\n| `ignore_blank_content` | By default, empty translations in the input file are considered a valid empty translation. There are many reasons when using empty translation is a valid case. With this option enabled, empty translations are filtered out and the string is considered untranslated. |\n| `empty_untranslated` | This feature tells Localazy to output untranslated strings as empty translation. |\n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n## Generating MO\n\nYou can instruct Localazy to generate binary MO files instead of PO files. Add `output_mo` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section to enable it. \n\nIf you need both PO and MO files, you can use [Format Conversions](\u002Fdocs\u002Fcli\u002Fformat-conversions) in your `localazy.json`. For example:\n\n```json\n{\n  \"readKey\": \"---\",\n  \"writeKey\": \"---\",\n\n  \"upload\": {\n  \t\"files\": \"locales\u002Fen.po\"     \n  },\n\n  \"download\": {   \n    \"files\": \"my_po_files\u002F${lang}.po\"\n  },\n  \n  \"conversion\": {\n    \"actions\": {\n      \"type\": \"mo\",\n      \"output\": \"my_mo_files\u002F${lang}.mo\"\n    }\n  }\n\n}\n```\n\n___CLI_LINKS___","2025-03-03T10:19:16.000Z","32080",{"id":22,"slug":607,"name":826},{"documentation_id":1884},{"id":510,"status":4,"slug":1885,"title":1886,"excerpt":1887,"content":1888,"created_on":1834,"modified_on":1889,"meta_title":1886,"meta_description":1887,"pinned":227,"sort":1890,"section":1891,"main_image":8},"resx-format","File Format - RESX","Learn how to use Localazy CLI for app and software localization with translations in RESX files. ","RESX format is supported and with Localazy, it's possible to use also plurals and arrays for more comfortable and accurate translations.  \n\n## Context information\n\nBy default, Localazy extracts content from preceding XML comments and from sub-elements `description`, `context`, `comment`, and `developer_comment` and presents it to the translators to provide better context and improve translation quality.\n\n```xml\n\u003Croot>\n\n    \u003C!-- Context information. -->\n    \u003Cdata name=\"string_key\">\n        \u003Cvalue>The translated content\u003C\u002Fvalue>       \n        \u003Ccomment>Another way to specify context information.\u003C\u002Fcomment>\n    \u003C\u002Fdata>\n\n\u003C\u002Froot>\n```\n\n## HTML entities\n\nHTML entities are not allowed in RESX files because they are not defined in the XML standard. Localazy can convert HTML entities to their Unicode representation when the file is imported.\n\nThis feature can be enabled by adding `decode_html_entities` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n## Arrays\n\nArrays are good but beware of changing the number of items to prevent mismatching translations. If your files contain incomplete arrays, don't use array features at all. \n\nUsing arrays in RESX is not a standard. However, Localazy can parse the suffixed variant shown below and present it to translators in a way that keeps items together and thus improves context and translation quality. \n\nThis feature can be enabled by adding `array_br` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```xml\n\u003Croot>\n\n    \u003Cdata name=\"difficulty[0]\">\n        \u003Cvalue>easy\u003C\u002Fvalue>\n    \u003C\u002Fdata>\n\n    \u003Cdata name=\"difficulty[4]\">\n        \u003Cvalue>normal\u003C\u002Fvalue>\n    \u003C\u002Fdata>\n\n    \u003Cdata name=\"difficulty[7]\">\n        \u003Cvalue>hard\u003C\u002Fvalue>\n    \u003C\u002Fdata>\n\n    \u003Cdata name=\"difficulty[9]\">\n        \u003Cvalue>extreme\u003C\u002Fvalue>\n    \u003C\u002Fdata>\n\n\u003C\u002Froot>\n```\n\nThe code above will be processed as an array and additional metadata will be stored, so Localazy can restore the indexes correctly.\n\nAll valid indexes are processed where the valid index is a non-negative integer value.  \n\n\n## Plurals\n\nBeware that plurals may lead to different outputs for translated files due to how plurals are handled in different languages. \n\n```xml\n\u003Croot>\n\n  \u003C!-- English has only two plural forms: -->\n  \n  \u003Cdata name=\"items[one]\">\n    \u003Cvalue>You have 1 item.\u003C\u002Fvalue>\n  \u003C\u002Fdata>\n\n  \u003Cdata name=\"items[other]\">\n    \u003Cvalue>You have %d items.\u003C\u002Fvalue>\n  \u003C\u002Fdata>\n\n  \u003C!-- Czech has three plural forms: -->\n  \n  \u003Cdata name=\"items[one]\">\n    \u003Cvalue>Máte 1 položku.\u003C\u002Fvalue>\n  \u003C\u002Fdata>\n\n  \u003Cdata name=\"items[few]\">\n    \u003Cvalue>Máte %d položky.\u003C\u002Fvalue>\n  \u003C\u002Fdata>\n\n  \u003Cdata name=\"items[other]\">\n    \u003Cvalue>Máte %d položek.\u003C\u002Fvalue>\n  \u003C\u002Fdata>\n\n\u003C\u002Froot>\n```\n\nLocalazy knows the rules for different languages and adapts its interface to assist translators to correctly translate all mandatory forms.\n\nYour app should be able to handle this. We are also working on SDK to help you with this task. \n\nAllowed plurals types are: **zero**, **one**, **two**, **few**, **many**, **other**. \n\n### Suffixed with camelCase\n\nThis feature can be enabled by adding `plural_postfix_cc` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n**Example:**\n\n```xml\n\u003Croot>\n  \n  \u003Cdata name=\"usersOne\">\n    \u003Cvalue>There is one user.\u003C\u002Fvalue>\n  \u003C\u002Fdata>\n\n  \u003Cdata name=\"usersOther\">\n    \u003Cvalue>There are $number users.\u003C\u002Fvalue>\n  \u003C\u002Fdata>\n\n\u003C\u002Froot>\n```\n\n### Suffixed with brackets\n\nThis feature can be enabled by adding `plural_postfix_br` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n \n**Example:**\n\n```xml\n\u003Croot>\n  \n  \u003Cdata name=\"users[one]\">\n    \u003Cvalue>There is one user.\u003C\u002Fvalue>\n  \u003C\u002Fdata>\n\n  \u003Cdata name=\"users[other]\">\n    \u003Cvalue>There are $number users.\u003C\u002Fvalue>\n  \u003C\u002Fdata>\n\n\u003C\u002Froot>\n```\n\n### Defined using ICU\n\nThis feature can enabled by adding `plural_icu` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```xml\n\u003Croot> \n  \u003Cdata name=\"users\">\n    \u003Cvalue>There are {COUNT, plural, one {one user} other {# users}}.\u003C\u002Fvalue>\n  \u003C\u002Fdata>\n\u003C\u002Froot>\n```\n\nOnly one ICU plural can be used in the string as otherwise, it wouldn't be possible to convert it to a specific Localazy plural structure. If more than two ICU plurals are contained, the string is kept in the original form.\n\nAllowed plurals types are: zero (=0), one (=1), two (=2), few, many, other.\n \nOther ICU types like gender, number, etc. can be used but will not be converted and will be kept in string in the original form.\n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n## Add BOM (for UTF encoding)\n\nIf you need BOM (byte order mark) to be exported in the output file, please add `add_bom` to features in the  [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n___CLI_LINKS___","2024-07-16T15:14:43.000Z","32090",{"id":22,"slug":607,"name":826},{"documentation_id":1893},{"id":1004,"status":4,"slug":1894,"title":1895,"excerpt":1896,"content":1897,"created_on":1834,"modified_on":1898,"meta_title":1895,"meta_description":1896,"pinned":227,"sort":1899,"section":1900,"main_image":8},"yaml-format","File Format - YAML","Learn how to use Localazy CLI for app and software localization with translations in YAML files. ","Localazy doesn't come with small parsers for each of the different flavors of YAML files used for app and software localization. Instead, it comes with a flexible and configurable solution and you can fine-tune it for your specific needs. \n\n## Plain YAMLs\n\nSimple plain YAML files are supported out-of-the-box and no extra configuration is necessary.  \n\n```yaml\nkey1: Key 1\nkey2: Key 2\n```\n\n## Structured YAMLs\n\nStructured YAMLs are supported by default and no configuration is necessary. \n\n```yaml\nparent:\n  child:\n    another_nested_level: All is supported.\n```\n\n## Rails i18n YAML\n\nThe support for Rails i18n YAML can be enabled by including `lang_root` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nIf enabled, there must be only one root node. It's removed when the file is parsed, and restored again with the correct locale code when translated files are produced. \n\n```yaml\n---\nen-US:\n  parent:\n    child:\n      another_nested_level: All is supported.\n```\n\n## Multilingual YAML\n\nMultilingual YAMLs allow defining more languages inside a single file. Localazy supports multilingual YAMLs with all the features describe in this document. \n\nThe top-level elements must be locale codes, and the corresponding source language as set in the project must be included. \n\nThe multilingual support must be enabled by adding `multilingual` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.   \n\n```yaml\nen: \n  key: in English\n\ncs:\n  key: in Czech\n```\n\nLocale codes can be defined using one of the supported methods:\n\n* **LL_RR_Scrp**\n* **LL_Scrp_RR**\n* **LL_RR#Scrp**\n* **LL-RR-Scrp**\n* **LL-Scrp-RR**\n* **LL-RR#Scrp**\n* **LL+RR+Scrp**\n* **LL+Scrp+RR**\n* **Locale name**  (English, German, Czech, …)\n\nWhere **LL** is the language code (ISO 639-1), **RR** is the region code (ISO 3166-2), **Scrp** is the script code (ISO 15924). Parameters **RR** and **Scrp** can be omitted. \n\nIf the locale is not known to Localazy, it's skipped during the processing of uploaded files. \n\nYou can define the output format by adding `lang_format=xxx` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section where `xxx` is one of the following: \n\n* **ll-rr#scrp**\n* **ll-rr-scrp**\n* **ll-scrp-rr**\n* **ll-scrp_rr**\n* **ll_rr_scrp**\n* **ll_scrp_rr**\n* **ll+rr+scrp**\n* **ll+scrp+rr**\n* **locale_name**\n* **bcp**\n* **android_noscript**\n* **android**\n\nIt's a good practice to define the output format since it may not be inherited from the input file.  \n \n## Object-based YAML\n\nBy including `content_as_object` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section, you can enable parsing of more complex YAML files where the content is based on sub-structures.  \n\n```yaml\nkey:\n  message: String content\n  description: Optional additional comment for translators.\n```\n\nInstead of `message`, you can use `string`, `value`, `text`, `content` or `translation`. Localazy remembers the field name and generates exactly the same document - just translated - for each of languages.  \n\nFor the context information, instead of `description`, any of `context`, `comment` and `developer_comment` can be used. \n\n::: info\nAll other features describe in this document are still available including structured YAML, arrays and plurals parsing, etc. \n:::\n   \n## Array-based YAML\n\nAnother used YAML format is an array of objects. Enable it by listing `content_as_array` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```yaml\n- id: string1\n  content: String 1\n  description: Information for the translator.\n\n- id: string2\n  content: String 2\n  description: Information for the translator.\n```\n\nAs with the object-based YAML above, you can use different names for fields. See the table below.\n\n| Type | Variants |\n| --- | --- |\n| String Id \u002F key | `id`, `key`, `name` |\n| Text content | `message`, `string`, `text`, `value`, `content`, `translation` |\n| Comment | `description`, `context`, `comment`, `developer_comment` |\n\n::: info\nAll other features describe in this document are still available including structured YAMLs, arrays and plurals parsing, etc.  \n:::\n\n## Contextual metadata\n\nWe have adopted metadata format from ARB files to our YAML support allowing to define additional metadata for the string using `@key` notation.\n\nWith `arb_metadata` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section, you can enable ARB-style metadata. With the feature enabled, Localazy extracts content from `description`, `context` and `placeholders` and presents it to the translators to provide better context and improve translation quality.\n\nFor plurals and arrays, metadata can be defined using the base form without the suffix. \n\n```yaml\nsingleString: This is just a normal string.\n\"@singleString\": \n  context: views:Home page\n  description: Comment for the single string.\n  \ndatePickerMinuteOne: 1 minute\ndatePickerMinuteOther: \"%minute minutes\"\n\"@datePickerMinute\":\n  description: Accessibility announcement for the selected minute on a time picker such as '15 minutes' or '15分'\n  plural: minute\n  placeholders:\n    minute:\n      description: the number of minutes\n      example: 15\n```\n\nIt's also possible to specify context information (a comment for translators and character limit) using our own extension:\n\n```yaml\ncategory:\n  my_key: This is a text of my key.\n  \"@@localazy:comment:my_key\": This is a comment for translators.\n  \"@@localazy:limit:my_key\": 100\n```\n\n::: info\nPlease note that keys starting with `@@localazy` will not be exported to the output files. Do not overwrite your source files. \n:::\n\n## Arrays\n\nArrays are good but beware changing number of items to prevent mismatching translations. If your files contain incomplete arrays, don't use array features at all. \n\nThere are two ways how to define arrays.  \n\n### YAML Arrays\n\nStandard YAML arrays are recognized as arrays and stored with Localazy in corresponding way.\n\nThis feature can be enabled by adding `array` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```yaml\ngame.difficulty:\n  - easy\n  - medium\n  - hard\n```\n\n### Arrays defined by suffix\n\nLocalazy parses automatically also the suffixed variant shown below and present it to translators in a way that keeps items together and thus improves context and translation quality. \n\nThis feature can be enabled by adding `array_br` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```yaml\ndifficulty[0]: easy\ndifficulty[4]: normal\ndifficulty[7]: hard\ndifficulty[9]: extreme\n```\n\nThe code above will be processed as an array and additional metadata will be stored, so Localazy can restore the indexes correctly.\n\nAll valid indexes are processed where valid index is non-negative integer value.  \n\n\n## Plurals\n\nBeware that plurals may lead to different output for translated files due to how plurals are handled in different languages. \n\n```yaml\n# English has only two plural forms:\npluralOne: You have 1 item.\npluralOther: You have %d items.\n\n# Czech has three plural forms:\npluralOne: Máte 1 položku.\npluralFew: Máte %d položky.\npluralOther: Máte %d položek.\n```\n\nLocalazy knows the rules for different languages and adapt its interface to assist translators to correctly translate all mandatory forms.\n\nYour app should be able to handle this. We are also working on SDK to help you with this task. \n\nAllowed plurals types are: **zero**, **one**, **two**, **few**, **many**, **other**. \n\n\n### Defined as array\n\nEnabled by `plural_array` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```yaml\nusers:\n  - quantity: one\n    content: There is one user.\n  - quantity: other\n    content: There are %d users.\n```\n\nIt's also possible to use `type`, `t` or `q` instead of `quantity` and `value`, `v` or `c` instead of `content` for shorter form.  \n\nIf the exact structure is not met, the array is not considered plural and is read as structured YAML instead. \n\n\n### Defined by suffix\n\nSeveral variants are available, and you can enable any of them and even combine them together. Localazy remembers how the plurals are formatted in the input file and keeps the same format for the translated files.\n\nAdd desired variants below to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section: \n\n* `plural_postfix_sd` for single dot variant.\n* `plural_postfix_us` for underscore variant.\n* `plural_postfix_cc` for camelCase variant.\n* `plural_postfix_br` for [brackets] variant.\n\n**Examples:**\n \n```yaml\nsingle_dot: \n  users.one: There is one user.\n  users.other: There are $number users.\n\nunderscore: \n  users_one: There is one user.\n  users_other: There are $number users.\n\ncamelCase: \n  usersOne: There is one user.\n  usersOther: There are $number users.\n\nbrackets: \n  users[one]: There is one user.\n  users[other]: There are $number users.\n```\n\n### Defined as object\n\nEnabled by `plural_object` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```yaml\nusers: \n  one: There is one user.\n  other: There are $number users.\n```\n\nThe object is considered plural if and only if all items are key-value strings with keys being valid plural types (zero, one, two, few, many, other).\n\nIf the condition above is not met, the object is not considered plural and is parsed as a structured YAML.\n\n\n### Defined using i18Next plural\n\nEnabled by `plural_i18next` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nSingular\u002Fplural variant:\n\n```yaml\nkey: item\nkey_plural: items\n```\n\nAll plural forms:\n\n```yaml\nkey_0: zero\nkey_1: singular\nkey_2: two\nkey_3: few\nkey_4: many\nkey_5: other\n```\n\n### Defined using ICU\n\nEnabled by `plural_icu` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```yaml\nusers: There are {COUNT, plural, one {one user} other {# users}}.\n```\n\nOnly one ICU plural can be used in the string as otherwise, it wouldn't be possible to convert it to a specific Localazy plural structure. If more than two ICU plurals are contained, the string is kept in the original form.\n\nAllowed plurals types are: zero (=0), one (=1), two (=2), few, many, other.\n \nOther ICU types like gender, number, etc. can be used but will not be converted and will be kept in string in the original form.\n\n### Defined using pipeline\nEnabled by `plural_pipeline` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nSingular\u002Fplural variant:\n\n```yaml\n{\n  key_plural: one | other\n}\n```\n\n## Skipping empty translations\n\nBy default, empty translations are imported as empty strings. If your format use empty translations for untranslated texts, add `skip_empty` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.  \n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n## Using key as the source translation\n\nThere is a special format where the key is also the source language translation. It's possible to enable the support for this format by adding `source_is_key` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```yaml\n\"Text in the source language\": \"Translation in the defined\"\n```\n\n## Add BOM (for UTF encoding)\n\nIf you need BOM (byte order mark) to be exported in the output file, please add `add_bom` to features in the  [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n## Features overview\n\nThe table below is a summary of all available features for YAML parser.\n\n| Feature | Description |\n| --- | --- |\n| `lang_root` | Parses\u002Fproduces files with root node being the locale code (Rails i18n). |  \n| `content_as_object` | Enable object-based YAML. |\n| `content_as_array` | Enable array-based YAML. |\n| `multilingual` | Enable support of multilingual YAML files. |\n| `lang_format=xxx` | Define how to output locales for multilingual files. |\n| `array` | Parse YAML arrays as arrays and not as list of single strings. |\n| `array_br` | Parse strings with keys suffixed by `[x]` as arrays. |\n| `plural_array` | Enable plurals defined as arrays. |\n| `plural_postfix_us` | Parse strings with keys suffixed by `_type` as plural. |\n| `plural_postfix_cc` | Parse strings with keys suffixed by `Type` as plural. |\n| `plural_postfix_br` | Parse strings with keys suffixed by `[type]` as plural. |\n| `plural_postfix_sd` | Parse strings with keys suffixed by `.type` as plural. |\n| `plural_object` | Enable plurals defined as objects. |\n| `plural_i18next` | Enable i18Next plurals. |\n| `plural_icu` | Enable support for ICU plurals. |\n| `plural_pipeline` | Enable support for plurals defined using pipeline. |\n| `arb_metadata` | Enable support for ARB-style metadata. |\n| `skip_empty` | Consider empty translations as untranslated. |\n| `filter_untranslated` | Don't use the source language texts for missing translations. |\n| `source_is_key` | Use the key as the source translation. |\n| `add_bom` | Include byte order mark in the output file. |\n\n___CLI_LINKS___\n","2024-07-16T15:14:58.000Z","32100",{"id":22,"slug":607,"name":826},{"documentation_id":1902},{"id":641,"status":4,"slug":1903,"title":1904,"excerpt":1905,"content":1906,"created_on":1834,"modified_on":1907,"meta_title":1904,"meta_description":1905,"pinned":227,"sort":1908,"section":1909,"main_image":8},"json5-format","File Format - JSON5","Learn how to use Localazy CLI for app and software localization with translations in JSON5 files. ","Localazy comes with support for modern formats such as [JSON5](https:\u002F\u002Fjson5.org) for human-friendly localization. \n\n## Available features\n\n**[All features supported by Localazy for JSON](\u002Fdocs\u002Fcli\u002Fjson-format)** are available including plurals, arrays, multilingual files, etc. Only the support for `requirejs` is not available. \n\n## Context information\n\nIt's possible to use JSON5 comments. They are parsed and stored as a context information for translators. \n\n```json5\n{\n\n  \u002F\u002F Please keep translation short.\n  short_name: \"Short Name\",\n\n  \u002F*\n  Multi-line comments are allowed as well\n  as multi-line strings. \n  *\u002F\n  multiline_string: \"This string spans \\\nacross more lines.\"\n \n}\n```\n\nIt's also possible to specify context information (a comment for translators and character limit) using our own extension:\n\n```json5\n{\n  category: {\n    my_key: \"This is a text of my key.\",\n    \"@@localazy:comment:my_key\": \"This is a comment for translators.\",\n    \"@@localazy:limit:my_key\": \"100\"\n  }\n}\n```\n\n::: info\nPlease note that keys starting with `@@localazy` will not be exported to the output files. Do not overwrite your source files. \n:::\n\n\n## Output format\n\nThe output format is compatible with standard JSON files allowing to use our JSON5 support for human-friendly localization of software based on older JSON standard.\n\n___CLI_LINKS___","2024-07-16T15:14:45.000Z","32165",{"id":22,"slug":607,"name":826},{"documentation_id":1911},{"id":535,"status":4,"slug":1912,"title":1913,"excerpt":1914,"content":1915,"created_on":1834,"modified_on":1907,"meta_title":1913,"meta_description":1914,"pinned":227,"sort":1916,"section":1917,"main_image":8},"hjson-format","File Format - HJSON","Learn how to use Localazy CLI for app and software localization with translations in HJSON files. ","Localazy comes with support for modern formats such as [HJSON](https:\u002F\u002Fhjson.github.io) for human-friendly localization. \n\n## Available features\n\n**[All features supported by Localazy for JSON](\u002Fdocs\u002Fcli\u002Fjson-format)** are available including plurals, arrays, multilingual files, etc. Only the support for `requirejs` is not available.   \n\n## Context information\n\n```json5\n{\n  \n  \u002F\u002F It's possible to include comments in the HJSON file\n  \u002F\u002F but due to a limitation of the HJSON parser, they are \n  \u002F\u002F not used as context information for translators. \n\n}\n```\n\nIt's possible to specify context information (a comment for translators and character limit) using our own extension:\n\n```json5\n{\n  \"category\": {\n    \"my_key\": \"This is a text of my key.\",\n    \"@@localazy:comment:my_key\": \"This is a comment for translators.\",\n    \"@@localazy:limit:my_key\": \"100\"\n  }\n}\n```\n\n::: info\nPlease note that keys starting with `@@localazy` will not be exported to the output files. Do not overwrite your source files. \n:::\n\n\n## Output format\n\nBy default, output format is HJSON.\n\nYou can switch to the standard JSON by adding `output_json` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nOutputting the standard JSON allows using our HJSON support for human-friendly localization of software based on older JSON standard.\n\n## Add BOM (for UTF encoding)\n\nIf you need BOM (byte order mark) to be exported in the output file, please add `add_bom` to features in the  [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n___CLI_LINKS___","32166",{"id":22,"slug":607,"name":826},{"documentation_id":1919},{"id":1920,"status":4,"slug":1921,"title":1922,"excerpt":1923,"content":1924,"created_on":1834,"modified_on":1925,"meta_title":1922,"meta_description":1923,"pinned":227,"sort":1926,"section":1927,"main_image":8},80,"php-format","File Format - PHP","Learn how to use Localazy CLI for app and software localization with translations in PHP files. ","\nLocalazy allows using PHP files based on associative arrays such as those commonly used with Laravel framework. As an addition, we support for many different features - plurals, ICU, etc.  \n\n\n## Plain PHP\n\nSimple plain PHP files are supported out-of-the-box and no extra configuration is necessary.  \n\n```php\n\u003C?php\nreturn [\n  \"key1\" => \"Key 1\",\n  \"key2\" => \"Key 2\"\n];\n?>\n```\n\nIt's possible to use `array()` method instead of the short `[]` notation:\n\n```php\n\u003C?php\nreturn array(\n  \"key1\" => \"Key 1\",\n  \"key2\" => \"Key 2\"\n);\n?>\n```\n\nPlease note that we always output files with the short `[]` notation.\n\nLocalazy is able to parse string and integer keys:\n\n```php\n\u003C?php\nreturn array(\n  \"key1\" => \"String Key 1\",\n  \"key2\" => \"String Key 2\",\n  1 => \"Integer Key 1\",\n  2 => \"Integer Key 2\"\n);\n?>\n```\n\n## Structured PHP\n\nStructured PHP files are supported by default and no configuration is necessary. \n\n```php\n\u003C?php\nreturn [\n  \"parent\" => [\n    \"child\" => array(\n       \"another_nested_level\" => \"All is supported.\"\n    )\n  ]\n];\n?>  \n```\n\n## Multilingual PHP\n\nMultilingual PHP files allow defining more languages inside a single file. Localazy supports multilingual PHP files with all the features describe in this document. \n\nThe top-level elements must be locale codes, and the corresponding source language as set in the project must be included. \n\nThe multilingual support must be enabled by adding `multilingual` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.   \n\n```php\n\u003C?php\nreturn [\n  \"en\" => [\n    \"key\" => \"in English\"\n  ],\n  \"cs\" => [\n    \"key\" => \"in Czech\"\n  ]\n];\n```\n\nLocale codes can be defined using one of the supported methods:\n\n* **LL_RR_Scrp**\n* **LL_Scrp_RR**\n* **LL_RR#Scrp**\n* **LL-RR-Scrp**\n* **LL-Scrp-RR**\n* **LL-RR#Scrp**\n* **LL+RR+Scrp**\n* **LL+Scrp+RR**\n* **Locale name**  (English, German, Czech, …)\n\nWhere **LL** is the language code (ISO 639-1), **RR** is the region code (ISO 3166-2), **Scrp** is the script code (ISO 15924). Parameters **RR** and **Scrp** can be omitted. \n\nIf the locale is not known to Localazy, it's skipped during the processing of uploaded files. \n\nYou can define the output format by adding `lang_format=xxx` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section where `xxx` is one of the following: \n\n* **ll-rr#scrp**\n* **ll-rr-scrp**\n* **ll-scrp-rr**\n* **ll-scrp_rr**\n* **ll_rr_scrp**\n* **ll_scrp_rr**\n* **ll+rr+scrp**\n* **ll+scrp+rr**\n* **locale_name**\n* **bcp**\n* **android_noscript**\n* **android**\n\nIt's a good practice to define the output format since it may not be inherited from the input file.  \n \n## Object-based PHP\n\nBy including `content_as_object` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section, you can enable parsing of more complex PHP files where the content is based on sub-structures.  \n\n```php\n\u003C?php\nreturn [\n  \"key\" => [\n    \"message\" => \"String content\",\n    \"description\" => \"Optional additional comment for translators.\"\n  ]\n];\n?>\n```\n\nInstead of `message`, you can use `string`, `value`, `text`, `content` or `translation`. Localazy remembers the field name and generates exactly the same document - just translated - for each of languages.  \n\nFor the context information, instead of `description`, any of `context`, `comment` and `developer_comment` can be used. \n\n::: info\nAll other features describe in this document are still available including structured PHP, arrays and plurals parsing, etc. \n:::\n   \n## Context information\n\nIt's possible to specify context information (a comment for translators and character limit) using our own extension:\n\n```json\n\u003C?php\nreturn [\n  \"category\" => [\n    \"my_key\" => \"This is a text of my key.\",\n    \"@@localazy:comment:my_key\" => \"This is a comment for translators.\",\n    \"@@localazy:limit:my_key\" => \"100\"\n  ]\n];\n?>\n```\n\n::: info\nPlease note that keys starting with `@@localazy` will not be exported to the output files. Do not overwrite your source files. \n:::\n\n## Arrays\n\nArrays are good but beware changing number of items to prevent mismatching translations. If your files contain incomplete arrays, don't use array features at all. \n\n\n### Arrays defined by suffix\n\nLocalazy parses automatically also the suffixed variant shown below and present it to translators in a way that keeps items together and thus improves context and translation quality. \n\nThis feature can be enabled by adding `array_br` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```php\n\u003C?php\nreturn [\n  \"difficulty[0]\" => \"easy\",\n  \"difficulty[4]\" => \"normal\",\n  \"difficulty[7]\" => \"hard\",\n  \"difficulty[9]\" => \"extreme\"\n];\n```\n\nThe code above will be processed as an array and additional metadata will be stored, so Localazy can restore the indexes correctly.\n\nAll valid indexes are processed where valid index is non-negative integer value.  \n\n\n## Plurals\n\nBeware that plurals may lead to different output for translated files due to how plurals are handled in different languages. \n\n```php\n\u003C?php\nreturn [\n  \u002F\u002F English has only two plural forms:\n  \"pluralOne\" => \"You have 1 item.\",\n  \"pluralOther\" => \"You have %d items.\"\n\n  \u002F\u002F Czech has three plural forms:\n  \"pluralOne\" => \"Máte 1 položku.\",\n  \"pluralFew\" => \"Máte %d položky.\",\n  \"pluralOther\" => \"Máte %d položek.\"\n];\n```\n\nLocalazy knows the rules for different languages and adapt its interface to assist translators to correctly translate all mandatory forms.\n\nYour app should be able to handle this. We are also working on SDK to help you with this task. \n\nAllowed plurals types are: **zero**, **one**, **two**, **few**, **many**, **other**. \n\n\n### Defined by suffix\n\nSeveral variants are available, and you can enable any of them and even combine them together. Localazy remembers how the plurals are formatted in the input file and keeps the same format for the translated files.\n\nAdd desired variants below to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section: \n\n* `plural_postfix_sd` for single dot variant.\n* `plural_postfix_us` for underscore variant.\n* `plural_postfix_cc` for camelCase variant.\n* `plural_postfix_br` for [brackets] variant.\n\n**Examples:**\n \n```php\n\u003C?php\nreturn [\n\n  \"single_dot\" => [\n    \"users.one\" => \"There is one user.\",\n    \"users.other\" => \"There are {{number}} users.\"\n  ],\n\n  \"underscore\" => [\n    \"users_one\" => \"There is one user.\",\n    \"users_other\" => \"There are {{number}} users.\"\n  ],\n\n  \"camelCase\" => [\n    \"usersOne\" => \"There is one user.\",\n    \"usersOther\" => \"There are {{number}} users.\"\n  ],  \n\n  \"brackets\" => [\n    \"users[one]\" => \"There is one user.\",\n    \"users[other]\" => \"There are {{number}} users.\"\n  ],\n];\n```\n\n\n### Defined as object\n\nEnabled by `plural_object` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```php\n\u003C?php\nreturn [\n  \"users\" => [\n    \"one\" => \"There is one user.\",\n    \"other\" => \"There are $number users.\"\n  ]\n];\n```\n\nThe object is considered plural if and only if all items are key-value strings with keys being valid plural types (zero, one, two, few, many, other).\n\nIf the condition above is not met, the object is not considered plural and is parsed as a structured PHP.\n\n### Defined using i18Next plural\n\nEnabled by `plural_i18next` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nSingular\u002Fplural variant:\n\n```php\n\u003C?php\nreturn [\n  \"key\" => \"item\",\n  \"key_plural\" => \"items\"\n];\n```\n\nAll plural forms:\n\n```php\n\u003C?php\nreturn [\n  \"key_0\" => \"zero\",\n  \"key_1\" => \"singular\",\n  \"key_2\" => \"two\",\n  \"key_3\" => \"few\",\n  \"key_4\" => \"many\",\n  \"key_5\" => \"other\"\n];\n```\n\n### Defined using ICU\n\nEnabled by `plural_icu` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```php\n\u003C?php\nreturn [\n  \"users\" => \"There are {COUNT, plural, one {one user} other {# users}}.\"\n];\n```\n\nOnly one ICU plural can be used in the string as otherwise, it wouldn't be possible to convert it to a specific Localazy plural structure. If more than two ICU plurals are contained, the string is kept in the original form.\n\nAllowed plurals types are: zero (=0), one (=1), two (=2), few, many, other.\n \nOther ICU types like gender, number, etc. can be used but will not be converted and will be kept in string in the original form.\n\n ### Defined using pipeline\nEnabled by `plural_pipeline` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nSingular\u002Fplural variant:\n```php\n\u003C?php\nreturn [\n  \"key_plural\" => \"one | other\"\n];\n```\n\n## Skipping empty translations\n\nBy default, empty translations are imported as empty strings. If your format use empty translations for untranslated texts, add `skip_empty` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.  \n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n\n## Using key as the source translation\n\nThere is a special format where the key is also the source language translation. It's possible to enable the support for this format by adding `source_is_key` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```php\n\u003C?php\nreturn [\n  \"Text in the source language\" => \"Translation in the defined language\"\n];\n```\n\n## String concatenation \u002F variables\n\nIt's possible to use string interpolation with variables. \n\n**This is supported:**\n\n```php\n\u003C?php\nreturn [\n  \"key\" => \"String with variable: $variable\"\n];\n```\n\nIt's possible to use string concatenation, but only without variables. \n\n**This is supported:**\n\n```php\n\u003C?php\nreturn [\n  \"key\" => \"multiline\" .\n           \"strings\" .\n           \"can\" .\n           \"be\" .\n           \"concatenated\"\n];\n```\n\nVariables in concatenation are not supported.\n\n**This is NOT supported:**\n\n```php\n\u003C?php\nreturn [\n  \"key\" => \"There is \" . VARIABLE . \" items.\"\n];\n```\n\nPlease use string interpolation or placeholders instead.\n\n## Add BOM (for UTF encoding)\n\nIf you need BOM (byte order mark) to be exported in the output file, please add `add_bom` to features in the  [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n## Features overview\n\nThe table below is a summary of all available features for PHP parser.\n\n| Feature | Description |\n| --- | --- |\n| `content_as_object` | Enable object-based PHP. |\n| `multilingual` | Enable support of multilingual PHP files. |\n| `lang_format=xxx` | Define how to output locales for multilingual files. |\n| `array_br` | Parse strings with keys suffixed by `[x]` as arrays. |\n| `plural_postfix_us` | Parse strings with keys suffixed by `_type` as plural. |\n| `plural_postfix_cc` | Parse strings with keys suffixed by `Type` as plural. |\n| `plural_postfix_br` | Parse strings with keys suffixed by `[type]` as plural. |\n| `plural_postfix_sd` | Parse strings with keys suffixed by `.type` as plural. |\n| `plural_object` | Enable plurals defined as objects. |\n| `plural_i18next` | Enable i18Next plurals. |\n| `plural_icu` | Enable support for ICU plurals. |\n| `plural_pipeline` | Enable plurals defined using pipeline. |\n| `skip_empty` | Consider empty translations as untranslated. |\n| `filter_untranslated` | Don't use the source language texts for missing translations. |\n| `source_is_key` | Use the key as the source translation. |\n| `add_bom` | Include byte order mark in the output file. |\n\n___CLI_LINKS___","2024-07-16T15:14:53.000Z","32105",{"id":22,"slug":607,"name":826},{"documentation_id":1929},{"id":1679,"status":4,"slug":1930,"title":1931,"excerpt":1932,"content":1933,"created_on":1834,"modified_on":1934,"meta_title":1931,"meta_description":1932,"pinned":227,"sort":1935,"section":1936,"main_image":8},"ini-format","File Format - INI","Learn how to use Localazy CLI for app and software localization with translations in INI files. ","INI files are supported and with Localazy, it's possible to use also plurals and arrays for more comfortable and accurate translations.  \n\n## Encoding\n\nThe default encoding is **auto**. You can change it by including **encoding={encoding}** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. Available options are: `utf8`, `utf16`, `utf16le`, `utf16be`, `ansi`.\n\nIf you need BOM (byte order mark) to be exported in the output file, please add **add_bom** to features in the  [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n## Multilingual INIs\n\nMultilingual INIs allow defining more languages inside a single file. Localazy supports multilingual INIs with all the features described in this document. \n\nThe top-level elements must be locale codes, and the corresponding source language as set in the project must be included. \n\nThe multilingual support must be enabled by adding `multilingual` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.   \n\n```ini\n[en]\nkey = in English\n\n[cs]\nkey = in Czech\n```\n\nLocale codes can be defined using one of the supported methods:\n\n* **LL_RR_Scrp**\n* **LL_Scrp_RR**\n* **LL_RR#Scrp**\n* **LL-RR-Scrp**\n* **LL-Scrp-RR**\n* **LL-RR#Scrp**\n* **LL+RR+Scrp**\n* **LL+Scrp+RR**\n* **Locale name**  (English, German, Czech, …)\n\nWhere **LL** is the language code (ISO 639-1), **RR** is the region code (ISO 3166-2), **Scrp** is the script code (ISO 15924). Parameters **RR** and **Scrp** can be omitted. \n\nIf the locale is not known to Localazy, it's skipped during the processing of uploaded files. \n\nYou can define the output format by adding `lang_format=xxx` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section where `xxx` is one of the following: \n\n* **ll-rr#scrp**\n* **ll-rr-scrp**\n* **ll-scrp-rr**\n* **ll-scrp_rr**\n* **ll_rr_scrp**\n* **ll_scrp_rr**\n* **ll+rr+scrp**\n* **ll+scrp+rr**\n* **locale_name**\n* **bcp**\n* **android_noscript**\n* **android**\n\nIt's a good practice to define the output format since it may not be inherited from the input file.  \n\n## Arrays\n\nArrays are good but beware of changing the number of items to prevent mismatching translations. If your files contain incomplete arrays, don't use array features at all. \n\nUsing arrays in INI is not standard. However, Localazy can parse the suffixed variant shown below and present it to translators in a way that keeps items together and thus improves context and translation quality. \n\nThis feature can be enabled by adding `array_br` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```ini\n[game]\ndifficulty[0]=easy\ndifficulty[4]=normal\ndifficulty[7]=hard\ndifficulty[9]=extreme\n```\n\nThe code above will be processed as an array and additional metadata will be stored, so Localazy can restore the indexes correctly.\n\nAll valid indexes are processed where valid index is non-negative integer value.  \n\n\n## Plurals\n\nBeware that plurals may lead to different output for translated files due to how plurals are handled in different languages. \n\n```ini\n# English has only two plural forms:\nitems[one]=You have 1 item.\nitems[other]=You have %d items.\n  \n# Czech has three plural forms:\nitems[one]=Máte 1 položku.\nitems[few]=Máte %d položky.\nitems[other]=Máte %d položek.\n```\n\nLocalazy knows the rules for different languages and adapt its interface to assist translators to correctly translate all mandatory forms.\n\nYour app should be able to handle this. We are also working on SDK to help you with this task. \n\nAllowed plurals types are: **zero**, **one**, **two**, **few**, **many**, **other**. \n\n### Suffixed with camelCase\n\nThis feature can be enabled by adding `plural_postfix_cc` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n**Example:**\n\n```properties\nusersOne=There is one user.\nusersOther=There are $number users.\n```\n\n### Suffixed with brackets\n\nThis feature can be enabled by adding `plural_postfix_br` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n \n**Example:**\n\n```properties\nusers[one]=There is one user.\nusers[other]=There are $number users.\n```\n\n### Defined using ICU\n\nThis feature can enabled by adding `plural_icu` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```properties\nusers=There are {COUNT, plural, one {one user} other {# users}}.\n```\n\nOnly one ICU plural can be used in the string as otherwise, it wouldn't be possible to convert it to a specific Localazy plural structure. If more ICU plurals are contained, the string is kept in the original form.\n\nAllowed plurals types are: zero (=0), one (=1), two (=2), few, many, other.\n \nOther ICU types like gender, number, etc. can be used but will not be converted and will be kept in string in the original form.\n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n## Forced escaping\n\nBy default, the output file doesn't use escaping sequences if not required. By adding `force_escaping` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section, you can force more aggressive escaping for better compatibility. \n\n___CLI_LINKS___","2024-07-16T15:14:54.000Z","32140",{"id":22,"slug":607,"name":826},{"documentation_id":1938},{"id":1939,"status":4,"slug":1940,"title":1941,"excerpt":1942,"content":1943,"created_on":1834,"modified_on":1925,"meta_title":1941,"meta_description":1944,"pinned":227,"sort":1945,"section":1946,"main_image":8},82,"qt-ts-format","File Format - Qt TS","Learn how to use Localazy CLI for app and software localization with translations in Qt's Linguist .TS files. ","Qt's Linguist .TS files are fully supported by Localazy.\n\n## id-based files\n\nBy default, Localazy prefer `message id` as the identifier and in such a situation, the `source` is not required.  \n\n```xml\n\u003C!DOCTYPE TS>\n  \u003CTS>\n    \u003Ccontext>\n      \u003Cmessage id=\"file_identifier\">\n        \u003Csource>\u003C\u002Fsource>\n        \u003Ctranslation>Translations of the given string\u003C\u002Ftranslation>\n    \u003C\u002Fmessage>\n  \u003C\u002Fcontext>\n\u003C\u002FTS>\n```\n\nBy default, in the output file, the `source` is kept empty, but you can include `include_source` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section to tell Localazy to output the source language translation.\n\nAlso, you can add `prefer_message_id` to prefer output of the `message id` even when the key is inherited from `source`. \n\n## source-based files\n\nIf the `message id` is not provided or if you specify `prefer_source_as_key` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section, the content of `source` is used as the key instead.\n\n\n```xml\n\u003C!DOCTYPE TS>\n  \u003CTS>\n    \u003Ccontext>\n      \u003Cmessage>\n        \u003Csource>source string or identifier\u003C\u002Fsource>\n        \u003Ctranslation>Translations of the given string\u003C\u002Ftranslation>\n    \u003C\u002Fmessage>\n  \u003C\u002Fcontext>\n\u003C\u002FTS>\n```\n\nIn such a situation, it's not replaced with the current source language translation when generating the translated file. \n\n\n## Using the source translation\n\nThe common situation is that there is no file for the source language, and the source translation is instead provided in the translated files like this:\n\n```xml\n\u003C!DOCTYPE TS>\n  \u003CTS>\n    \u003Ccontext>\n      \u003Cmessage id=\"string_id\">\n        \u003Csource>Source language translation\u003C\u002Fsource>\n        \u003Ctranslation>Translations of the given string\u003C\u002Ftranslation>\n    \u003C\u002Fmessage>\n  \u003C\u002Fcontext>\n\u003C\u002FTS>\n```\n\nBy adding `source_is_content` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section, you can tell Localazy, to use content from `source` as the source language translation. \n\n\n## ICU plurals\n\nThis feature can enabled by adding `plural_icu` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```xml\n\u003C!DOCTYPE TS>\n  \u003CTS>\n    \u003Ccontext>\n      \u003Cmessage id=\"icu_plural\">\n        \u003Csource>\u003C\u002Fsource>\n        \u003Ctranslation>There are {COUNT, plural, one {one user} other {# users}}.\u003C\u002Ftranslation>\n    \u003C\u002Fmessage>\n  \u003C\u002Fcontext>\n\u003C\u002FTS>\n```\n\nOnly one ICU plural can be used in the string as otherwise, it wouldn't be possible to convert it to a specific Localazy plural structure. If more ICU plurals are contained, the string is kept in the original form.\n\nAllowed plurals types are: zero (=0), one (=1), two (=2), few, many, other.\n \nOther ICU types like gender, number, etc. can be used but will not be converted and will be kept in string in the original form.\n\n\n## HTML entities\n\nHTML entities are not allowed in TS files because they are not defined in the XML standard. Localazy can convert HTML entities to their Unicode representation when the file is imported.\n\nThis feature can be enabled by adding `decode_html_entities` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n## Skipping empty translations\n\nBy default, empty translations are imported as empty strings. If your format use empty translations for untranslated texts, add `skip_empty` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.  \n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n\n___CLI_LINKS___","Learn how to use Localazy CLI for app and software localization with translations in Qt's Linguist .TS  files. ","32150",{"id":22,"slug":607,"name":826},{"documentation_id":1948},{"id":526,"status":4,"slug":1949,"title":1950,"excerpt":1951,"content":1952,"created_on":1834,"modified_on":1853,"meta_title":1950,"meta_description":1951,"pinned":227,"sort":1953,"section":1954,"main_image":8},"properties-format","File Format - Java Properties","Learn how to use Localazy CLI for app and software localization with translations in Java Properties files. ","Java Properties files are supported and with Localazy, it's possible to use also plurals and arrays for more comfortable and accurate translations.  \n\n## Encoding\n\nThe default encoding is **UTF-8** which is a new standard from Java 9. \n\nYou can switch to **ISO-8859-1 (Latin 1)** encoding by adding `latin1` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nIf you need BOM (byte order mark) to be exported in the output file, please add **add_bom** to features in the  [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n## Arrays\n\nArrays are good but beware changing number of items to prevent mismatching translations. If your files contain incomplete arrays, don't use array features at all. \n\nUsing arrays in Java Properties is not a standard. However, Localazy can parse the suffixed variant shown below and present it to translators in a way that keeps items together and thus improves context and translation quality. \n\nThis feature can be enabled by adding `array_br` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```properties\ndifficulty[0]=easy\ndifficulty[4]=normal\ndifficulty[7]=hard\ndifficulty[9]=extreme\n```\n\nThe code above will be processed as an array and additional metadata will be stored, so Localazy can restore the indexes correctly.\n\nAll valid indexes are processed where valid index is non-negative integer value.  \n\n\n## Plurals\n\nBeware that plurals may lead to different output for translated files due to how plurals are handled in different languages. \n\n```properties\n# English has only two plural forms:\nitems[one]=You have 1 item.\nitems[other]=You have %d items.\n  \n# Czech has three plural forms:\nitems[one]=Máte 1 položku.\nitems[few]=Máte %d položky.\nitems[other]=Máte %d položek.\n```\n\nLocalazy knows the rules for different languages and adapt its interface to assist translators to correctly translate all mandatory forms.\n\nYour app should be able to handle this. We are also working on SDK to help you with this task. \n\nAllowed plurals types are: **zero**, **one**, **two**, **few**, **many**, **other**. \n\n### Suffixed with camelCase\n\nThis feature can be enabled by adding `plural_postfix_cc` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n**Example:**\n\n```properties\nusersOne=There is one user.\nusersOther=There are $number users.\n```\n\n### Suffixed with brackets\n\nThis feature can be enabled by adding `plural_postfix_br` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n \n**Example:**\n\n```properties\nusers[one]=There is one user.\nusers[other]=There are $number users.\n```\n\n### Defined using ICU\n\nThis feature can enabled by adding `plural_icu` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```properties\nusers=There are {COUNT, plural, one {one user} other {# users}}.\n```\n\nOnly one ICU plural can be used in the string as otherwise, it wouldn't be possible to convert it to a specific Localazy plural structure. If more than two ICU plurals are contained, the string is kept in the original form.\n\nAllowed plurals types are: zero (=0), one (=1), two (=2), few, many, other.\n \nOther ICU types like gender, number, etc. can be used but will not be converted and will be kept in string in the original form.\n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n___CLI_LINKS___","32160",{"id":22,"slug":607,"name":826},{"documentation_id":1956},{"id":1025,"status":4,"slug":1957,"title":625,"excerpt":1958,"content":1959,"created_on":1834,"modified_on":1960,"meta_title":8,"meta_description":8,"pinned":227,"sort":1961,"section":1962,"main_image":8},"format-conversions-feature","With the Format Conversions, you can output your translations in many different formats either manually or even automatically using our CLI.","> Format Conversions are available in the [Professional plan](\u002Fdocs\u002Fgeneral\u002Flocalazy-professional-tier) and higher. \n\n## How to use Format Conversions?\n\n### Conversions in the UI\nWhen activated, converting a file into a different file format is pretty straightforward task in Localazy UI. \n\n1. Navigate to the **File management page** and click on the **Export and download**  button ![](https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fea3a68a1-7c79-4bb6-9cc0-cc236223d94c){.inline}.\n\n2. In the modal, select one of the **Export format**s and click on **Export & download** to download the file.\n\n![](https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F815681ce-1483-484c-9964-e83ae00e7daf)\n\n> Please note that not all format conversion are always possible and the available options will depend on the original file format of your content.\n\n### Localazy CLI\nIf you are a developer, you can also use the `conversion` option in the [Localazy CLI](\u002Fdocs\u002Fcli\u002Fformat-conversions) configuration to convert your localizable files into different formats.\nMake it a part of your workflow and automate file format conversions to seamlessly output your translations in many different formats. \nWhen configured, running a `localazy download` command will automatically generate the converted files.\n\n**[See the list of available options](\u002Fdocs\u002Fcli\u002Fformat-conversions)** \n","2024-08-12T06:35:18.000Z","10030",{"id":16,"slug":817,"name":812},{"documentation_id":1964},{"id":461,"status":4,"slug":1965,"title":1966,"excerpt":1967,"content":1968,"created_on":1834,"modified_on":1969,"meta_title":1966,"meta_description":1967,"pinned":227,"sort":1970,"section":1971,"main_image":8},"android-format","File Format - Android XML","Learn how to use Localazy CLI for localization of your Android app.","Android XML format is fully supported including array-lists and plurals. No extra configuration is necessary. \n\n**For Android app localization, we recommend using the [Localazy Gradle plugin](\u002Fdocs\u002Fandroid\u002Flocalazy-gradle-plugin) that automatically handles uploads, downloads and adds code for [OTA (over-the-air) updates](\u002Fdocs\u002Fandroid\u002Fonly-ota-updates-that-really-work).**\n\n\n## The basic usage\n\nUploading the source language is easy and with a [number of variables](\u002Fdocs\u002Fcli\u002Fvariables) for the download part, including preformatted Android language `${langAndroidRes}`, it's also simple to store translated files to their correct destination.\n\n```json\n{\n\n  \"writeKey\": \"your-apps-write-key\", \n  \"readKey\": \"your-apps-read-key\",\n\n  \"upload\": {\n    \"type\": \"android\",   \n    \"files\": \"src\u002Fmain\u002Fres\u002Fvalues\u002Fstrings.xml\"\n  },\n\n  \"download\": {\n    \"files\": \"src\u002Fmain\u002Fres\u002Fvalues-${langAndroidRes}\u002F${file}\"\n  }\n\n}\n```\n\n\n## Upload existing translations\n\nFor Android projects, you can rely on the [auto-detection of the language from path\u002Ffile](\u002Fdocs\u002Fcli\u002Ftransformations).\n\n```json\n{\n\n  \"writeKey\": \"your-apps-write-key\", \n  \"readKey\": \"your-apps-read-key\",\n\n  \"upload\": {\n    \"type\": \"android\",\n        \n    \"files\": [\n\n      \u002F\u002F For repeated upload of the source language.\n      \u002F\u002F Path is not necessary, so we remove it.  \n      {\n        \"pattern\": \"src\u002Fmain\u002Fres\u002Fvalues\u002Fstrings*.xml\"\n      },\n\n      \u002F\u002F For initial upload of all existing translations.\n      \u002F\u002F Run: `localazy upload all` to upload all translations.  \n      {\n        \"group\": \"all\",\n        \"pattern\": \"src\u002Fmain\u002Fres\u002Fvalues-*\u002Fstrings*.xml\",\n        \"lang\": \"${autodetectLang}\"\n      }\n\n    ]\n  },\n\n  \u002F\u002F Place downloaded translations to the correct folder.\n  \"download\": {\n    \"files\": \"src\u002Fmain\u002Fres\u002Fvalues-${langAndroidRes}\u002F${file}\"\n  }\n\n}\n```\n\n\n## Product flavors & build type\n\nLocalazy comes with full support for product flavors and build types. There are [transformations](\u002Fdocs\u002Fcli\u002Ftransformations) `androidBuildType` and `androidProductFlavors` for detecting those from the standard project structure.\n\nAlso, with the [preformatted variable](\u002Fdocs\u002Fcli\u002Fvariables) `${androidFlavoredFolder}`, it's easy to place downloaded translations to the correct folders.\n\n```json\n{\n\n  \"writeKey\": \"your-apps-write-key\", \n  \"readKey\": \"your-apps-read-key\",\n  \n  \u002F\u002F Use transformations to get product flavors and the build type from path.\n  \"transformations\": [\n    {\n      \"name\": \"product_flavors\",\n      \"source\": \"${path}\",\n      \"operations\": [\n        \"androidProductFlavors: gp am, free full auto\"\n      ]\n    },\n    {\n      \"name\": \"build_type\",\n      \"source\": \"${path}\",\n      \"operations\": [\n        \"androidBuildType: debug, release\"\n      ]\n    }\n  ],\n\n  \"upload\": {\n  \n    \"type\": \"android\",\n    \n    \"files\": [\n    \n      \u002F\u002F For repeated upload of the source language from all flavors and product types.\n      \u002F\u002F Path is not necessary, so we remove it. We can rebuild path from other variables.  \n      {\n        \"pattern\": \"src\u002F*\u002Fres\u002Fvalues\u002Fstrings*.xml\",\n        \"productFlavors\": \"${product_flavors}\",\n        \"buildType\": \"${build_type}\"\n      },\n      \n      \u002F\u002F For initial upload of all existing translations.\n      \u002F\u002F Run: `localazy upload all` to upload all translations. \n      {\n        \"group\": \"all\",\n        \"pattern\": \"src\u002F*\u002Fres\u002Fvalues-*\u002Fstrings*.xml\",\n        \"lang\": \"${autodetectLang}\",\n        \"productFlavors\": \"${product_flavors}\",\n        \"buildType\": \"${build_type}\"\n      }\n      \n    ]\n  },\n\n  \u002F\u002F Place downloaded translations to the correct folder.\n  \"download\": {\n    \"files\": \"src\u002F${androidFlavoredFolder}\u002Fres\u002Fvalues-${langAndroidRes}\u002F${file}\"\n  }\n\n}\n```\n\n## Strings uploaded with the Gradle plugin\n\nThe Gradle plugin uploads data in a very similar way as described above and so it's possible to download translations using:\n\n```json\n{\n\n  \u002F\u002F ... other parts omitted for brevity ...\n  \n  \"download\": {\n    \"files\": \"src\u002F${androidFlavoredFolder}\u002Fres\u002Fvalues-${langAndroidRes}\u002F${file}\"\n  }\n\n}\n```\n\n## Running with Gradle\n\nWe recommend using the [Localazy Gradle plugin](\u002Fdocs\u002Fandroid\u002Flocalazy-gradle-plugin) that automatically handles uploads, downloads and adds code for [OTA (over-the-air) updates](\u002Fdocs\u002Fandroid\u002Fonly-ota-updates-that-really-work).\n\nHowever, you can run the CLI tool directly from your Gradle build script. Just place the CLI binary to the app's module folder along with the configuration file `localazy.json` and create task:   \n\n```groovy\n\u002F\u002F Create task for running Localazy CLI. \ntask downloadTranslations(type: Exec) {\n    executable \".\u002Flocalazy\"\n    args \"download\", \"-q\"\n} \n\n\u002F\u002F Run the Localazy CLI task only for release versions. \nandroid.applicationVariants.all { variant ->\n    if (!variant.buildType.debuggable) {\n        variant.preBuildProvider.get().dependsOn(downloadTranslations)\n    }\n}\n```\n\n## Encoding of new lines\n\nBy default, new lines are represented by actual new lines. If you prefer escape them using `\\n`, add `escape_new_lines` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n___CLI_LINKS___\n","2024-07-16T15:14:40.000Z","32010",{"id":22,"slug":607,"name":826},{"documentation_id":1973},{"id":1777,"status":4,"slug":1974,"title":1975,"excerpt":1976,"content":1977,"created_on":1834,"modified_on":1978,"meta_title":1975,"meta_description":1976,"pinned":227,"sort":1979,"section":1980,"main_image":8},"json-format","File Format - JSON","Learn how to use Localazy CLI for app and software localization with translations in JSON files. ","Localazy doesn't come with small parsers for each of the different flavors of JSON files used for app and software localization. Instead, it comes with flexible and configurable solution and you can fine-tune it for your specific needs. \n\n## Plain JSONs\n\nThe most common JSON format for apps and sofware localization is simple plain JSON as shown below. It's supported out-of-the-box and no extra configuration is necessary.  \n\n```json\n{\n  \"key1\": \"Text 1\",\n  \"key2\": \"Text 2\"\n}\n```\n\n## Structured JSONs\n\nStructured JSONs are supported by default and no configuration is necessary. \n\n```json\n{\n  \"parent\": {\n    \"child\": {\n      \"another_nested_level\": \"All is supported.\"\n    }\n  }\n}\n```\n\n## Multilingual JSONs\n\nMultilingual JSONs allow defining more languages inside a single file. Localazy supports multilingual JSONs with all the features describe in this document. \n\nThe top-level elements must be locale codes, and the corresponding source language as set in the project must be included. \n\nThe multilingual support must be enabled by adding `multilingual` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.   \n\n```json\n{\n\n  \"en\": {\n    \"key\": \"in English\"\n  },\n\n  \"cs\": {\n    \"key\": \"in Czech\"\n  }\n\n}\n```\n\nLocale codes can be defined using one of the supported methods:\n\n* **LL_RR_Scrp**\n* **LL_Scrp_RR**\n* **LL_RR#Scrp**\n* **LL-RR-Scrp**\n* **LL-Scrp-RR**\n* **LL-RR#Scrp**\n* **LL+RR+Scrp**\n* **LL+Scrp+RR**\n* **Locale name** (English, German, Czech, ...)\n\nWhere **LL** is the language code (ISO 639-1), **RR** is the region code (ISO 3166-2), **Scrp** is the script code (ISO 15924). Parameters **RR** and **Scrp** can be omitted. \n\nIf the locale is not known to Localazy, it's skipped during the processing of uploaded files. \n\nYou can define the output format by adding `lang_format=xxx` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section where `xxx` is one of the following: \n\n* **ll-rr#scrp**\n* **ll-rr-scrp**\n* **ll-scrp-rr**\n* **ll-scrp_rr**\n* **ll_rr_scrp**\n* **ll_scrp_rr**\n* **ll+rr+scrp**\n* **ll+scrp+rr**\n* **locale_name**\n* **bcp**\n* **android_noscript**\n* **android**\n\nIt's a good practice to define the output format since it may not be inherited from the input file.  \n\n## Mozilla\u002FChrome i18n\n\nBy including `content_as_object` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section, you can enable parsing of more complex JSON files often referred as Mozilla i18n or Chrome i18n.  \n\n```json\n{\n  \"key\": {\n    \"message\": \"String content\",\n    \"description\": \"Optional additional comment for translators.\"\n  }\n}\n```\n\nInstead of `message`, you can use `string`, `value`, `text`, `content` or `translation`. Localazy remembers the field name and generates exactly the same document - just translated - for each of languages.  \n\nFor the context information, instead of `description`, any of `context`, `comment` and `developer_comment` can be used. \n\n::: info\nAll other features describe in this document are still available including structured JSONs, arrays and plurals parsing, etc. \n:::\n   \n## Array notation (i18next)\n\nAnother commonly used JSON format is an array of objects. Enable it by listing `content_as_array` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```json\n[\n  {\n    \"id\": \"string1\",\n    \"content\": \"String 1\",\n    \"description\": \"Information for the translator.\"\n  },\n  {\n    \"id\": \"string2\",\n    \"content\": \"String 2\",\n    \"description\": \"Information for the translator.\"\n  }\n]\n```\n\nAs with the Mozilla\u002FChrome i18n, you can use different names for fields. See the table below.\n\n| Type | Variants |\n| --- | --- |\n| String Id \u002F key | `id`, `key`, `name` |\n| Text content | `message`, `string`, `text`, `value`, `content`, `translation` |\n| Comment | `description`, `context`, `comment`, `developer_comment` |\n\n::: info\nAll other features describe in this document are still available including structured JSONs, arrays and plurals parsing, etc.  \n:::\n\n## RequireJS\n\nFor RequireJS files with the format shown below, you can use our JSON parser. Just add `requirejs` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and it will correctly remove `define(...);` wrapping before parsing and add it back when generating output files.\n\n```javascript\ndefine({\n    \"root\": {\n        \"red\": \"red\",\n        \"blue\": \"blue\",\n        \"green\": \"green\"\n    }\n});\n```\n\n::: info\nAll other features describe in this document are still available including structured JSONs, arrays and plurals parsing, etc. \n:::\n\n## ARB-style metadata\n\nAllows defining additional metadata for the string using `@key` notation.\n\nWith `arb_metadata` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section, you can enable ARB-style metadata. With the feature enabled, Localazy extracts content from `description`, `context` and `placeholders` and presents it to the translators to provide better context and improve translation quality.\n\nFor plurals and arrays, metadata can be defined using the base form without the suffix. \n\n```json\n{\n\n  \"singleString\": \"This is just a normal string.\",\n  \"@singleString\": {\n    \"context\": \"views:Home page\",\n    \"description\": \"Comment for the single string.\"\n  },\n\n  \"datePickerMinuteOne\": \"1 minute\",\n  \"datePickerMinuteOther\": \"$minute minutes\",\n  \"@datePickerMinute\": {    \n    \"description\": \"Accessibility announcement for the selected minute on a time picker such as '15 minutes' or '15分'\",\n    \"plural\": \"minute\",\n    \"placeholders\": {\n      \"minute\": {\n        \"description\": \"the number of minutes\",\n        \"example\": \"15\"\n      }\n    }\n  }\n\n}\n```\n\n## Context information\n\nIt's possible to specify context information (a comment for translators and character limit) using our own extension:\n\n```json\n{\n  \"category\": {\n    \"my_key\": \"This is a text of my key.\",\n    \"@@localazy:comment:my_key\": \"This is a comment for translators.\",\n    \"@@localazy:limit:my_key\": \"100\"\n  }\n}\n```\n\n::: info\nPlease note that keys starting with `@@localazy` will not be exported to the output files. Do not overwrite your source files. \n:::\n\n## Arrays\n\nArrays are good but beware changing number of items to prevent mismatching translations. If your files contain incomplete arrays, don't use array features at all. \n\nThere are two ways how to define arrays.  \n\n### JSON Arrays\n\nStandard JSON arrays are recognized as arrays and stored with Localazy in corresponding way.\n\nThis feature can be enabled by adding `array` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```json\n{\n  \"game.difficulty\": [\n    \"easy\",\n    \"medium\",\n    \"hard\"\n  ]\n}\n```\n\n### Arrays defined by suffix\n\nLocalazy parses automatically also the suffixed variant shown below and present it to translators in a way that keeps items together and thus improves context and translation quality. \n\nThis feature can be enabled by adding `array_br` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```json\n{\n  \"difficulty[0]\": \"easy\",\n  \"difficulty[4]\": \"normal\",\n  \"difficulty[7]\": \"hard\",\n  \"difficulty[9]\": \"extreme\"\n}\n```\n\nThe code above will be processed as an array and additional metadata will be stored, so Localazy can restore the indexes correctly.\n\nAll valid indexes are processed where valid index is non-negative integer value.  \n\n\n\n \n\n## Plurals\n\nBeware that plurals may lead to different output for translated files due to how plurals are handled in different languages. \n\n```json\n\u002F\u002F English has only two plural forms:\n{\n  \"pluralOne\": \"You have 1 item.\",\n  \"pluralOther\": \"You have %d items.\"\n}\n\n\u002F\u002F Czech has three plural forms:\n{\n  \"pluralOne\": \"Máte 1 položku.\",\n  \"pluralFew\": \"Máte %d položky.\",\n  \"pluralOther\": \"Máte %d položek.\"\n}\n```\n\nLocalazy knows the rules for different languages and adapt its interface to assist translators to correctly translate all mandatory forms.\n\nYour app should be able to handle this. We are also working on SDK to help you with this task. \n\nAllowed plurals types are: **zero**, **one**, **two**, **few**, **many**, **other**. \n\n\n### Defined as array\n\nEnabled by `plural_array` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```json\n{\n  \"users\": [\n    {\n      \"quantity\": \"one\",\n      \"content\": \"There is one user.\"\n    },\n    {\n      \"quantity\": \"other\",\n      \"content\": \"There are %d users.\"\n    }\n  ]\n}\n```\n\nIt's also possible to use `type`, `t` or `q` instead of `quantity` and `value`, `v` or `c` instead of `content` for shorter form.  \n\nIf the exact structure is not met, the array is not considered plural and is read as structured JSON instead. \n\n\n### Defined by suffix\n\nSeveral variants are available, and you can enable any of them and even combine them together. Localazy remembers how the plurals are formatted in the input file and keeps the same format for the translated files.\n\nAdd desired variants below to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section: \n\n* `plural_postfix_sd` for single dot variant.\n* `plural_postfix_dd` for colon variant.\n* `plural_postfix_us` for underscore variant.\n* `plural_postfix_cc` for camelCase variant.\n* `plural_postfix_br` for [brackets] variant.\n\n**Examples:**\n \n```json\n{\n\n  \"single_dot\": {\n    \"users.one\": \"There is one user.\",\n    \"users.other\": \"There are $number users.\"\n  },\n\n  \"colon\": {\n    \"users:one\": \"There is one user.\",\n    \"users:other\": \"There are $number users.\"\n  },\n\n  \"underscore\": {\n    \"users_one\": \"There is one user.\",\n    \"users_other\": \"There are $number users.\"\n  },\n\n  \"camelCase\": {\n    \"usersOne\": \"There is one user.\",\n    \"usersOther\": \"There are $number users.\"  \n  },\n\n  \"brackets\": {\n    \"users[one]\": \"There is one user.\",\n    \"users[other]\": \"There are $number users.\"  \n  }\n\n}\n```\n\n### Defined as object\n\nEnabled by `plural_object` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```json\n{\n\n  \"users\": {\n    \"one\": \"There is one user.\",\n    \"other\": \"There are $number users.\"\n  }\n\n}\n```\n\nThe object is considered plural if and only if all items are key-value strings with keys being valid plural types (zero, one, two, few, many, other).\n\nIf the condition above is not met, the object is not considered plural and is parsed as a structured JSON.\n\n### Defined using i18Next plural\n\nEnabled by `plural_i18next` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nSingular\u002Fplural variant:\n\n```json\n{\n  \"key\": \"item\",\n  \"key_plural\": \"items\"\n}\n```\n\nAll plural forms:\n\n```json\n{\n  \"key_0\": \"zero\",\n  \"key_1\": \"singular\",\n  \"key_2\": \"two\",\n  \"key_3\": \"few\",\n  \"key_4\": \"many\",\n  \"key_5\": \"other\"\n}\n```\n\n### Defined using ICU\n\nEnabled by `plural_icu` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```json\n{\n  \"users\": \"There are {COUNT, plural, one {one user} other {# users}}.\"\n}\n```\n\nOnly one ICU plural can be used in the string as otherwise, it wouldn't be possible to convert it to a specific Localazy plural structure. If more than two ICU plurals are contained, the string is kept in the original form.\n\nAllowed plurals types are: zero (=0), one (=1), two (=2), few, many, other.\n \nOther ICU types like gender, number, etc. can be used but will not be converted and will be kept in string in the original form.\n\n### Defined using pipeline\n\nEnabled by `plural_pipeline` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nSingular\u002Fplural variant:\n\n```json\n{\n  \"key_plural\": \"one | other\"\n}\n```\n\n## Skipping empty translations\n\nBy default, empty translations are imported as empty strings. If your format use empty translations for untranslated texts, add `skip_empty` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.  \n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n## Using key as the source translation\n\nThere is a special format where the key is also the source language translation. It's possible to enable the support for this format by adding `source_is_key` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```json\n{\n  \"Text in the source language\": \"Translation in the defined language\"\n}\n```\n\n## Add BOM (for UTF encoding)\n\nIf you need BOM (byte order mark) to be exported in the output file, please add **add_bom** to features in the  [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n## Features overview\n\nThe table below is a summary of all available features for JSON parser.\n\n| Feature | Description |\n| --- | --- |\n| `content_as_object` | Enable content as a JSON object; also known as Mozilla\u002FChrome i18n. |\n| `content_as_array` | Enable content as objects in an array; older format of i18next. |\n| `requirejs` | Enable support of RequireJS format. |\n| `multilingual` | Enable support of multilingual JSON files. |\n| `lang_format=xxx` | Define how to output locales for multilingual files. |\n| `array` | Parse JSON arrays as arrays and not as list of single strings. |\n| `array_br` | Parse strings with keys suffixed by `[x]` as arrays. |\n| `plural_array` | Enable plurals defined as arrays. |\n| `plural_postfix_dd` | Parse strings with keys suffixed by `:type` as plural. |\n| `plural_postfix_us` | Parse strings with keys suffixed by `_type` as plural. |\n| `plural_postfix_cc` | Parse strings with keys suffixed by `Type` as plural. |\n| `plural_postfix_br` | Parse strings with keys suffixed by `[type]` as plural. |\n| `plural_postfix_sd` | Parse strings with keys suffixed by `.type` as plural. |\n| `plural_object` | Enable plurals defined as objects. |\n| `plural_i18next` | Enable i18Next plurals. |\n| `plural_icu` | Enable support for ICU plurals. |\n| `plural_pipeline` | Enable support for pipeline plurals. |\n| `arb_metadata` | Enable support for ARB-style metadata. |\n| `filter_untranslated` | Don't use the source language texts for missing translations. |\n| `skip_empty` | Consider empty translations as untranslated. |\n| `source_is_key` | Use the key as the source translation. |\n| `add_bom` | Include byte order mark in the output file. |\n\n___CLI_LINKS___\n","2024-07-16T15:14:49.000Z","32040",{"id":22,"slug":607,"name":826},{"documentation_id":1982},{"id":1528,"status":4,"slug":1983,"title":1984,"excerpt":1985,"content":1986,"created_on":1834,"modified_on":1987,"meta_title":1984,"meta_description":1985,"pinned":227,"sort":1988,"section":1989,"main_image":8},"toml-format","File Format - TOML","Learn how to use Localazy CLI for app and software localization with translations in TOML files. ","You can use Localazy to work directly with TOML files. Our TOML parser is a flexible and configurable solution and you can fine-tune it for your specific needs. \n\n## Plain TOMLs\n\nSimple plain TOML files are supported out-of-the-box and no extra configuration is necessary.  \n\n```toml\nkey1 = \"Key 1\"\nkey2 = \"Key 2\"\n```\n\n## Structured TOMLs\n\nStructured TOMLs are supported by default and no configuration is necessary. \n\n```toml\n[parent]\n\n  [parent.child]\n  structured_key = \"All is supported.\"\n```\n\n## Multilingual TOML\n\nMultilingual TOMLs allow defining more languages inside a single file. Localazy supports multilingual TOMLs with all the features describe in this document. \n\nThe top-level elements must be locale codes, and the corresponding source language as set in the project must be included. \n\nThe multilingual support must be enabled by adding `multilingual` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.   \n\n```toml\n[en] \nkey = \"in English\"\n\n[cs]\nkey = \"in Czech\"\n```\n\nLocale codes can be defined using one of the supported methods:\n\n* **LL_RR_Scrp**\n* **LL_Scrp_RR**\n* **LL_RR#Scrp**\n* **LL-RR-Scrp**\n* **LL-Scrp-RR**\n* **LL-RR#Scrp**\n* **LL+RR+Scrp**\n* **LL+Scrp+RR**\n* **Locale name**  (English, German, Czech, …)\n\nWhere **LL** is the language code (ISO 639-1), **RR** is the region code (ISO 3166-2), **Scrp** is the script code (ISO 15924). Parameters **RR** and **Scrp** can be omitted. \n\nIf the locale is not known to Localazy, it's skipped during the processing of uploaded files. \n\nYou can define the output format by adding `lang_format=xxx` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section where `xxx` is one of the following: \n\n* **ll-rr#scrp**\n* **ll-rr-scrp**\n* **ll-scrp-rr**\n* **ll-scrp_rr**\n* **ll_rr_scrp**\n* **ll_scrp_rr**\n* **ll+rr+scrp**\n* **ll+scrp+rr**\n* **locale_name**\n* **bcp**\n* **android_noscript**\n* **android**\n\nIt's a good practice to define the output format since it may not be inherited from the input file.  \n \n## Object-based TOMLs\n\nBy including `content_as_object` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section, you can enable parsing of more complex TOML files where the content is based on sub-structures.  \n\n```toml\n[key]\nmessage = \"String content\"\ndescription = \"Optional additional comment for translators.\"\n```\n\nInstead of `message`, you can use `string`, `value`, `text`, `content` or `translation`. Localazy remembers the field name and generates exactly the same document - just translated - for each of languages.  \n\nFor the context information, instead of `description`, any of `context`, `comment` and `developer_comment` can be used. \n\n::: info\nAll other features described in this document are still available including structured TOML, arrays and plurals parsing, etc. \n:::\n   \n## Contextual metadata\n\nWe have adopted metadata format from ARB files to our TOML support allowing to define additional metadata for the string using `@key` notation.\n\nWith `arb_metadata` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section, you can enable ARB-style metadata. With the feature enabled, Localazy extracts content from `description`, `context` and `placeholders` and presents it to the translators to provide better context and improve translation quality.\n\nFor plurals and arrays, metadata can be defined using the base form without the suffix. \n\n```toml\nsingleString = \"This is just a normal string.\"\n\ndatePickerMinuteOne = \"1 minute\"\ndatePickerMinuteOther = \"%minute minutes\"\n\n[\"@singleString\"] \ncontext = \"views:Home page\"\ndescription = \"Comment for the single string.\"\n\n[\"@datePickerMinute\"]\ndescription = \"Accessibility announcement for the selected minute on a time picker such as '15 minutes' or '15分'\"\nplural = \"minute\"\n  [\"@datePickerMinute\".placeholders]\n    [\"@datePickerMinute\".placeholders.minute]\n    description = \"the number of minutes\"\n    example = \"15\"\n```\n\nPlease note that quoting may be necessary and that you can only place metadata after your string definitions. \n\nIt's also possible to specify context information (a comment for translators and character limit) using our own extension:\n\n```toml\n my_key = \"This is a text of my key.\"\n \"@@localazy:comment:my_key\" = \"This is a comment for translators.\"\n \"@@localazy:limit:my_key\" = \"100\"\n```\n\n::: info\nPlease note that keys starting with `@@localazy` will not be exported to the output files. Do not overwrite your source files. \n:::\n\n## Arrays\n\nArrays are good but beware changing number of items to prevent mismatching translations. If your files contain incomplete arrays, don't use array features at all. \n\nThere are two ways how to define arrays.  \n\n### TOML Arrays\n\nStandard TOML arrays are recognized as arrays and stored with Localazy in a corresponding way.\n\nThis feature can be enabled by adding `array` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```toml\n[game]\ndifficulty = [\"easy\", \"medium\", \"hard\"]\n```\n\n### Arrays defined by suffix\n\nLocalazy parses automatically also the suffixed variant shown below and present it to translators in a way that keeps items together and thus improves context and translation quality. \n\nThis feature can be enabled by adding `array_br` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section. \n\n```toml\n\"difficulty[0]\" = \"easy\"\n\"difficulty[4]\" = \"normal\"\n\"difficulty[7]\" = \"hard\"\n\"difficulty[9]\" = \"extreme\"\n```\n\nThe code above will be processed as an array and additional metadata will be stored, so Localazy can restore the indexes correctly.\n\nAll valid indexes are processed where valid index is non-negative integer value.  \n\n\n## Plurals\n\nBeware that plurals may lead to different output for translated files due to how plurals are handled in different languages. \n\n```toml\n# English has only two plural forms:\npluralOne = \"You have 1 item.\"\npluralOther = \"You have %d items.\"\n\n# Czech has three plural forms:\npluralOne = \"Máte 1 položku.\"\npluralFew = \"Máte %d položky.\"\npluralOther = \"Máte %d položek.\"\n```\n\nLocalazy knows the rules for different languages and adapt its interface to assist translators to correctly translate all mandatory forms.\n\nYour app should be able to handle this. We are also working on SDK to help you with this task. \n\nAllowed plurals types are: **zero**, **one**, **two**, **few**, **many**, **other**. \n\n### Defined by suffix\n\nSeveral variants are available, and you can enable any of them and even combine them together. Localazy remembers how the plurals are formatted in the input file and keeps the same format for the translated files.\n\nAdd desired variants below to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section: \n\n* `plural_postfix_sd` for single dot variant.\n* `plural_postfix_us` for underscore variant.\n* `plural_postfix_cc` for camelCase variant.\n* `plural_postfix_br` for [brackets] variant.\n\n**Examples:**\n \n```toml\n[single_dot]\n\"users.one\" = \"There is one user.\"\n\"users.other\" = \"There are $number users.\"\n\n[underscore]\n\"users_one\" = \"There is one user.\"\n\"users_other\" = \"There are $number users.\"\n\n[camelCase]\n\"usersOne\" = \"There is one user.\"\n\"usersOther\" = \"There are $number users.\"\n\n[brackets]\n\"users[one]\" = \"There is one user.\"\n\"users[other]\" = \"There are $number users.\"\n```\n\n### Defined as object\n\nEnabled by `plural_object` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```toml\n[users]\none = \"There is one user.\"\nother = \"There are $number users.\"\n```\n\nThe object is considered plural if and only if all items are key-value strings with keys being valid plural types (zero, one, two, few, many, other).\n\nIf the condition above is not met, the object is not considered plural and is parsed as a structured TOML.\n\n\n### Defined using i18Next plural\n\nEnabled by `plural_i18next` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nSingular\u002Fplural variant:\n\n```toml\nkey = \"item\"\nkey_plural = \"items\"\n```\n\nAll plural forms:\n\n```toml\nkey_0 = \"zero\"\nkey_1 = \"singular\"\nkey_2 = \"two\"\nkey_3 = \"few\"\nkey_4 = \"many\"\nkey_5 = \"other\"\n```\n\n### Defined using ICU\n\nEnabled by `plural_icu` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```toml\nusers = \"There are {COUNT, plural, one {one user} other {# users}}.\"\n```\n\nOnly one ICU plural can be used in the string as otherwise, it wouldn't be possible to convert it to a specific Localazy plural structure. If more than two ICU plurals are contained, the string is kept in the original form.\n\nAllowed plurals types are: zero (=0), one (=1), two (=2), few, many, other.\n \nOther ICU types like gender, number, etc. can be used but will not be converted and will be kept in string in the original form.\n\n### Defined using pipeline\nEnabled by `plural_pipeline` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\nSingular\u002Fplural variant:\n```toml\n{\n  key_plural: \"one | other\"\n}\n```\n\n## Skipping empty translations\n\nBy default, empty translations are imported as empty strings. If your format use empty translations for untranslated texts, add `skip_empty` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.  \n\n## Filtering untranslated strings\n\nBy default, when the output file is generated, Localazy uses texts from the source languages when the translation in the exported language is missing. \n\nThis approach is safeguarding you from missing keys that can lead to crashes in some solutions\u002Fframeworks. \n\nThis feature can be disable by adding `filter_untranslated` to **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section and reuploading your source language file. \n\n## Using key as the source translation\n\nThere is a special format where the key is also the source language translation. It's possible to enable the support for this format by adding `source_is_key` in **features** in the [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n```toml\n\"Text in the source language\" = \"Translation in the defined\"\n```\n\n## Add BOM (for UTF encoding)\n\nIf you need BOM (byte order mark) to be exported in the output file, please add `add_bom` to features in the  [upload](\u002Fdocs\u002Fcli\u002Fupload-reference) section.\n\n## Features overview\n\nThe table below is a summary of all available features for TOML parser.\n\n| Feature | Description |\n| --- | --- |\n| `content_as_object` | Enable object-based TOML. |\n| `multilingual` | Enable support of multilingual TOML files. |\n| `lang_format=xxx` | Define how to output locales for multilingual files. |\n| `array` | Parse TOML arrays as arrays and not as list of single strings. |\n| `array_br` | Parse strings with keys suffixed by `[x]` as arrays. |\n| `plural_postfix_us` | Parse strings with keys suffixed by `_type` as plural. |\n| `plural_postfix_cc` | Parse strings with keys suffixed by `Type` as plural. |\n| `plural_postfix_br` | Parse strings with keys suffixed by `[type]` as plural. |\n| `plural_postfix_sd` | Parse strings with keys suffixed by `.type` as plural. |\n| `plural_object` | Enable plurals defined as objects. |\n| `plural_i18next` | Enable i18Next plurals. |\n| `plural_icu` | Enable support for ICU plurals. |\n| `plural_pipeline` | Enable plurals defined using pipeline. |\n| `arb_metadata` | Enable support for ARB-style metadata. |\n| `skip_empty` | Consider empty translations as untranslated. |\n| `filter_untranslated` | Don't use the source language texts for missing translations. |\n| `source_is_key` | Use the key as the source translation. |\n| `add_bom` | Include byte order mark in the output file. |\n\n___CLI_LINKS___\n","2024-07-16T15:15:05.000Z","32110",{"id":22,"slug":607,"name":826},[1991,1994,1996],{"faq_category_id":1992},{"id":67,"status":4,"created_on":1993,"sort":8,"slug":629,"label":625,"on_faq_index":227},"2022-03-17T12:22:57.000Z",{"faq_category_id":1995},{"id":107,"status":4,"created_on":1993,"sort":50,"slug":607,"label":826,"on_faq_index":229},{"faq_category_id":1997},{"id":57,"status":4,"created_on":1993,"sort":8,"slug":1998,"label":415,"on_faq_index":229},"advanced-features","{\"@context\":\"https:\u002F\u002Fschema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"How can I convert different localization file formats?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"\u003Cp>In the File Management section of Localazy, when downloading your files, you can select the desired format and download your strings in any of the available file formats.\u003C\u002Fp>\\n\u003Cp>Format Conversions feature is also an integral part of the \u003Ca href=\\\"\u002Fdocs\u002Fcli\u002Fthe-basics\\\">Localazy CLI tool\u003C\u002Fa>, so if you want to automate format conversions, you will need to install Localazy CLI on your preferred platform.\u003C\u002Fp>\\n\u003Cblockquote>\\n\u003Cp>Read the article: \u003Ca href=\\\"\u002Fblog\u002Fconvert-localization-files-different-formats-localazy\\\">How to convert localization files into different formats?\u003C\u002Fa>\u003C\u002Fp>\\n\u003C\u002Fblockquote>\\n\u003Cp>\u003Cem>Note: Format Conversions are available only as a part of the \u003Ca href=\\\"\u002Ftiers\u002Fprofessional\\\">Professional plan\u003C\u002Fa>\u003C\u002Fem>\u003C\u002Fp>\\n\"}}],\"name\":\"How can I convert different localization file formats?\",\"description\":\"In the File Management section of Localazy, when downloading your file\",\"url\":\"https:\u002F\u002Flocalazy.com\u002Ffaq\u002Fcli\u002Fhow-to-use-format-conversions-feature\",\"speakable\":{\"@type\":\"SpeakableSpecification\",\"cssSelector\":[\".faq-title\",\".faq-content\"]}}",{"id":2001,"owner":2002,"created_by":8,"sort":8,"title":2007,"slug":2008,"modified_on":53,"created_on":2009,"pinned":227,"badge":8,"priority":2010,"main_image":2011,"status":4,"tags":2012,"dictionary":2020,"reading_time":2021,"excerpt":-1,"og_title":53,"og_description":53,"og_image":53},"69d78a237ab1270001eddabf",{"id":2003,"first_name":2004,"last_name":53,"slug":2005,"avatar":2006},"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",[2013,2015,2018],{"id":518,"created_on":2014,"status":4,"label":838,"slug":842,"on_index_page":227},"2026-06-03 08:49:34",{"id":469,"created_on":2014,"status":4,"label":2016,"slug":2017,"on_index_page":229},"AI","ai",{"id":518,"created_on":2014,"status":4,"label":419,"slug":2019,"on_index_page":229},"localization",[],0,{"id":2023,"owner":2024,"created_by":8,"sort":8,"title":2025,"slug":2026,"modified_on":53,"created_on":2027,"pinned":227,"badge":8,"priority":2010,"main_image":2028,"status":4,"tags":2029,"dictionary":2035,"reading_time":2021,"excerpt":-1,"og_title":53,"og_description":53,"og_image":53},"6a1eb1ef8550a30001408466",{"id":2003,"first_name":2004,"last_name":53,"slug":2005,"avatar":2006},"Release Update: New features in CLI & API, revamped glossary, Strapi plugin updates, and more!","release-update-june-2026-new-features-localazy-cli-glossary-strapi-plugin","2026-06-02T16:10:29.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F06\u002FRelease-update-Localazy-may-2026.png",[2030,2033,2034],{"id":518,"created_on":2014,"status":4,"label":2031,"slug":2032,"on_index_page":229},"Release Update","release-update",{"id":518,"created_on":2014,"status":4,"label":826,"slug":607,"on_index_page":227},{"id":518,"created_on":2014,"status":4,"label":838,"slug":842,"on_index_page":227},[]]