[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-integrations":3,"footer-settings":1000,"footer-homepage":1130,"main-navigation":1197,"blog-post-nav-nav":1814,"blog-post-nav-[USE LATEST FEATURED]":1836,"blog-automatic-data-reports-multiple-languages-python-gettext-localazy":1856},[4,180,262,374,468,553,646,739,828,938],{"id":5,"status":6,"created_on":7,"modified_on":8,"name":9,"slug":10,"description":11,"docs_link":12,"priority":13,"has_sdk":14,"sort":15,"highlighted":14,"in_menu":16,"changefreq":13,"support_type":17,"show_in_spa":16,"is_file_format":14,"meta_title":13,"meta_description":13,"featured_on_web":16,"marketing_subtitle":18,"tile_subtitle":19,"tile_description":20,"is_enterprise":14,"is_popular":14,"primary_use_case":13,"hierarchy_handling":13,"best_for":13,"file_extension":13,"format_code_example":13,"format_to_extension":21,"upload_features":23,"icon":24,"meta_image":26,"primary_tag":28,"tags":49,"integration_methods":71,"recommended_methods":164,"default_integration_method":165,"faq_categories":172,"translations":178,"platforms_id":5},33,"published","2022-03-18T08:09:24.000Z","2025-02-26T13:36:08.000Z","React","react","Manage your React app translations with Localazy, a continuous localization tool. React i18n done right. ","\u002Fdocs\u002Fcli\u002Fjson-format",null,false,3,true,"JSON format support","CLI support","react-i18next and more","Use Localazy to translate your React projects with your favorite i18n library.",{"json":22},"json",[],{"id":25},"26757a90-88a3-4a94-b587-9f38614ed3bd",{"id":27},"a97492ec-ee8d-429c-bf66-d0fe59b6e5c9",{"id":29,"status":6,"sort":30,"created_on":31,"label":32,"hidden":14,"icon":33,"translations":35},5,2,"2022-03-17T12:23:44.000Z","Web apps",{"id":34},"c9e70e4f-8136-432a-8d82-53c3501a9eb4",[36,38,42,46],{"id":29,"languages_code":37,"label":32},"xxa",{"id":39,"languages_code":40,"label":41},45,"es","Aplicaciones web",{"id":43,"languages_code":44,"label":45},50,"cs","Webové aplikace",{"id":47,"languages_code":48,"label":32},59,"en",[50,57],{"id":29,"status":6,"sort":30,"label":32,"hidden":14,"created_on":31,"icon":51,"translations":52},{"id":34},[53,54,55,56],{"id":29,"languages_code":37,"label":32},{"id":39,"languages_code":40,"label":41},{"id":43,"languages_code":44,"label":45},{"id":47,"languages_code":48,"label":32},{"id":58,"status":6,"sort":59,"label":60,"hidden":14,"created_on":61,"icon":13,"translations":62},8,9,"Framework","2022-03-17T12:23:45.000Z",[63,64,67,69],{"id":58,"languages_code":37,"label":60},{"id":65,"languages_code":40,"label":66},53,"Marco",{"id":68,"languages_code":44,"label":60},60,{"id":70,"languages_code":48,"label":60},67,[72,88,118,141],{"id":73,"status":6,"sort":74,"label":75,"alternative_label":13,"slug":76,"description":77,"documentation_link":78,"loc_icon":76,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":79},4,6,"API","api","Translate strings directly or upload them into your Localazy project.","\u002Fdocs\u002Fapi\u002Fintroduction",[80,81,84,86],{"id":73,"languages_code":37,"label":75,"description":77,"slug":76},{"id":82,"languages_code":40,"label":75,"description":83,"slug":76},40,"Utilice la API para exportar traducciones e importar contenido de\u002Fa Localazy mediante programación.",{"id":43,"languages_code":48,"label":75,"description":85,"slug":76},"Choose between translating strings directly or uploading them into Localazy.",{"id":47,"languages_code":44,"label":75,"description":87,"slug":76},"Pomocí rozhraní API můžete programovaně exportovat překlady a importovat obsah z\u002Fdo Localazy.",{"id":15,"status":6,"sort":29,"label":89,"alternative_label":13,"slug":90,"description":91,"documentation_link":92,"loc_icon":93,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":94},"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",[95,96,100,102,105,109,111,113],{"id":15,"languages_code":37,"label":89,"description":91,"slug":90},{"id":97,"languages_code":40,"label":98,"description":99,"slug":13},39,"Cree claves fuente en línea","Añada claves fuente a través de la interfaz web en línea y sincronícelas posteriormente en su proyecto.",{"id":101,"languages_code":48,"label":89,"description":91,"slug":90},51,{"id":68,"languages_code":44,"label":103,"description":104,"slug":13},"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":106,"languages_code":40,"label":107,"description":108,"slug":90},64,"Cree claves de origen en línea","Añada claves de origen a través de la interfaz web en línea y sincronícelas posteriormente en su proyecto.",{"id":110,"languages_code":48,"label":89,"description":91,"slug":90},65,{"id":112,"languages_code":44,"label":103,"description":104,"slug":90},66,{"id":114,"languages_code":115,"label":116,"description":117,"slug":13},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":30,"status":6,"sort":73,"label":119,"alternative_label":120,"slug":121,"description":122,"documentation_link":123,"loc_icon":124,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":125},"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",[126,127,131,133,137],{"id":30,"languages_code":37,"label":119,"description":122,"slug":121},{"id":128,"languages_code":40,"label":129,"description":130,"slug":13},38,"Carga directa de archivos","Cargue sus textos y traducciones existentes en cualquier formato directamente para empezar rápidamente.",{"id":132,"languages_code":48,"label":119,"description":122,"slug":121},47,{"id":134,"languages_code":44,"label":135,"description":136,"slug":13},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":138,"languages_code":115,"label":139,"description":140,"slug":13},85,"Direkter Datei-Upload","Laden Sie Ihre Texte und vorhandenen Übersetzungen in einem beliebigen Format direkt hoch, um schnell loszulegen.",{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":148},1,"Command Line Interface","CLI","cli","The best option for developers that want to make localization an automated part of their workflow.","\u002Fdocs\u002Fcli\u002Fthe-basics",[149,150,154,156,160],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},37,"Interfaz de Línea de Comandos","La mejor opción para los desarrolladores que deseen hacer de la localización una parte automatizada de su flujo de trabajo.",{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},46,{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},55,"Rozhraní Příkazového Řádku","Nejlepší volba pro vývojáře, kteří chtějí, aby se lokalizace stala automatizovanou součástí jejich pracovních postupů.",{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},87,"Befehlszeilenschnittstelle","Die beste Option für Entwickler, die die Lokalisierung zu einem automatisierten Teil ihres Arbeitsablaufs machen möchten.",[],{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":166},[167,168,169,170,171],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[173],{"id":174,"status":6,"created_on":175,"sort":13,"slug":176,"label":177,"on_faq_index":13},76,"2025-02-26T12:44:29.000Z","front-end-common","Front-end Common",[179],{"languages_code":37,"name":9,"slug":10,"description":11,"support_type":17,"meta_title":13,"meta_description":13,"marketing_subtitle":18,"tile_subtitle":19,"tile_description":20,"id":5,"platforms_id":5,"docs_link":12},{"id":181,"status":6,"created_on":7,"modified_on":182,"name":183,"slug":184,"description":185,"docs_link":12,"priority":13,"has_sdk":14,"sort":73,"highlighted":14,"in_menu":16,"changefreq":13,"support_type":17,"show_in_spa":16,"is_file_format":14,"meta_title":13,"meta_description":13,"featured_on_web":16,"marketing_subtitle":18,"tile_subtitle":186,"tile_description":187,"is_enterprise":14,"is_popular":14,"primary_use_case":13,"hierarchy_handling":13,"best_for":13,"file_extension":13,"format_code_example":13,"format_to_extension":188,"upload_features":189,"icon":190,"meta_image":192,"primary_tag":194,"tags":201,"integration_methods":215,"recommended_methods":246,"default_integration_method":247,"faq_categories":254,"translations":260,"platforms_id":181},19,"2025-02-26T13:35:41.000Z","Vue.js","vuejs","Online Vue.js project localization tool for your translation management. Enjoy true continuous localization with Localazy & translate your JSON files automatically.","Vue.js & JSON","Enjoy true continuous localization with Localazy & translate your Vue projects automatically.",{"json":22},[],{"id":191},"6180b41f-3249-47d3-adcd-50fe1cf11bf1",{"id":193},"8171b836-d6b8-4354-8db3-34ccd384970d",{"id":29,"status":6,"sort":30,"created_on":31,"label":32,"hidden":14,"icon":195,"translations":196},{"id":34},[197,198,199,200],{"id":29,"languages_code":37,"label":32},{"id":39,"languages_code":40,"label":41},{"id":43,"languages_code":44,"label":45},{"id":47,"languages_code":48,"label":32},[202,209],{"id":29,"status":6,"sort":30,"label":32,"hidden":14,"created_on":31,"icon":203,"translations":204},{"id":34},[205,206,207,208],{"id":29,"languages_code":37,"label":32},{"id":39,"languages_code":40,"label":41},{"id":43,"languages_code":44,"label":45},{"id":47,"languages_code":48,"label":32},{"id":58,"status":6,"sort":59,"label":60,"hidden":14,"created_on":61,"icon":13,"translations":210},[211,212,213,214],{"id":58,"languages_code":37,"label":60},{"id":65,"languages_code":40,"label":66},{"id":68,"languages_code":44,"label":60},{"id":70,"languages_code":48,"label":60},[216,222,232,239],{"id":73,"status":6,"sort":74,"label":75,"alternative_label":13,"slug":76,"description":77,"documentation_link":78,"loc_icon":76,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":217},[218,219,220,221],{"id":73,"languages_code":37,"label":75,"description":77,"slug":76},{"id":82,"languages_code":40,"label":75,"description":83,"slug":76},{"id":43,"languages_code":48,"label":75,"description":85,"slug":76},{"id":47,"languages_code":44,"label":75,"description":87,"slug":76},{"id":15,"status":6,"sort":29,"label":89,"alternative_label":13,"slug":90,"description":91,"documentation_link":92,"loc_icon":93,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":223},[224,225,226,227,228,229,230,231],{"id":15,"languages_code":37,"label":89,"description":91,"slug":90},{"id":97,"languages_code":40,"label":98,"description":99,"slug":13},{"id":101,"languages_code":48,"label":89,"description":91,"slug":90},{"id":68,"languages_code":44,"label":103,"description":104,"slug":13},{"id":106,"languages_code":40,"label":107,"description":108,"slug":90},{"id":110,"languages_code":48,"label":89,"description":91,"slug":90},{"id":112,"languages_code":44,"label":103,"description":104,"slug":90},{"id":114,"languages_code":115,"label":116,"description":117,"slug":13},{"id":30,"status":6,"sort":73,"label":119,"alternative_label":120,"slug":121,"description":122,"documentation_link":123,"loc_icon":124,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":233},[234,235,236,237,238],{"id":30,"languages_code":37,"label":119,"description":122,"slug":121},{"id":128,"languages_code":40,"label":129,"description":130,"slug":13},{"id":132,"languages_code":48,"label":119,"description":122,"slug":121},{"id":134,"languages_code":44,"label":135,"description":136,"slug":13},{"id":138,"languages_code":115,"label":139,"description":140,"slug":13},{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":240},[241,242,243,244,245],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[],{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":248},[249,250,251,252,253],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[255,259],{"id":134,"status":6,"created_on":256,"sort":13,"slug":257,"label":258,"on_faq_index":13},"2023-03-01T11:21:41.000Z","vue-localization","Vue.js Localization",{"id":174,"status":6,"created_on":175,"sort":13,"slug":176,"label":177,"on_faq_index":13},[261],{"languages_code":37,"name":183,"slug":184,"description":185,"support_type":17,"meta_title":13,"meta_description":13,"marketing_subtitle":18,"tile_subtitle":186,"tile_description":187,"id":181,"platforms_id":181,"docs_link":12},{"id":142,"status":6,"created_on":7,"modified_on":263,"name":264,"slug":265,"description":266,"docs_link":267,"priority":13,"has_sdk":14,"sort":74,"highlighted":14,"in_menu":16,"changefreq":13,"support_type":268,"show_in_spa":16,"is_file_format":14,"meta_title":13,"meta_description":13,"featured_on_web":14,"marketing_subtitle":18,"tile_subtitle":268,"tile_description":269,"is_enterprise":14,"is_popular":14,"primary_use_case":270,"hierarchy_handling":271,"best_for":272,"file_extension":273,"format_code_example":274,"format_to_extension":275,"upload_features":277,"icon":278,"meta_image":280,"primary_tag":282,"tags":293,"integration_methods":332,"recommended_methods":363,"default_integration_method":364,"faq_categories":371,"translations":372,"platforms_id":142},"2025-07-03T14:21:42.000Z","Flutter","flutter","Learn how to use Localazy CLI for localization of Flutter app. Flutter’s ARB format is fully supported including arrays, plurals, and selected context information. No extra configuration is necessary, but you can enable certain features if you want to.","\u002Fdocs\u002Fcli\u002Fflutter-format","ARB format support","Use the Localazy CLI for localization of Flutter projects. Flutter’s ARB format is fully supported.","Supports metadata like placeholders","JSON-like key-value","Flutter apps",".arb","```\n{\n  \"localazy_message\": \"Go international, today. With Localazy.\"\n}\n```",{"arb":276},"arb",[],{"id":279},"b9f13a11-9328-4a03-86cf-b20de0685606",{"id":281},"c2674666-4371-4aa4-9a65-438c7363fafe",{"id":74,"status":6,"sort":58,"created_on":61,"label":283,"hidden":14,"icon":284,"translations":286},"Mobile apps",{"id":285},"c9c7e1f5-8b59-4016-ae0c-6fba9469cd55",[287,288,290,292],{"id":74,"languages_code":37,"label":283},{"id":155,"languages_code":40,"label":289},"Aplicaciones móviles",{"id":157,"languages_code":44,"label":291},"Mobilní aplikace",{"id":110,"languages_code":48,"label":283},[294,306,313,320],{"id":295,"status":6,"sort":181,"label":296,"hidden":14,"created_on":61,"icon":297,"translations":299},7,"Desktop & Games",{"id":298},"65b04533-5b4c-430c-b8a4-ecce84754200",[300,301,303,305],{"id":295,"languages_code":37,"label":296},{"id":132,"languages_code":40,"label":302},"Escritorio y Juegos",{"id":134,"languages_code":44,"label":304},"Stolní počítače & Hry",{"id":112,"languages_code":48,"label":296},{"id":29,"status":6,"sort":30,"label":32,"hidden":14,"created_on":31,"icon":307,"translations":308},{"id":34},[309,310,311,312],{"id":29,"languages_code":37,"label":32},{"id":39,"languages_code":40,"label":41},{"id":43,"languages_code":44,"label":45},{"id":47,"languages_code":48,"label":32},{"id":74,"status":6,"sort":58,"label":283,"hidden":14,"created_on":61,"icon":314,"translations":315},{"id":285},[316,317,318,319],{"id":74,"languages_code":37,"label":283},{"id":155,"languages_code":40,"label":289},{"id":157,"languages_code":44,"label":291},{"id":110,"languages_code":48,"label":283},{"id":321,"status":6,"sort":322,"label":323,"hidden":16,"created_on":61,"icon":13,"translations":324},30,32,"ARB",[325,326,328,330],{"id":321,"languages_code":37,"label":323},{"id":327,"languages_code":40,"label":323},120,{"id":329,"languages_code":44,"label":323},125,{"id":331,"languages_code":48,"label":323},130,[333,339,349,356],{"id":73,"status":6,"sort":74,"label":75,"alternative_label":13,"slug":76,"description":77,"documentation_link":78,"loc_icon":76,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":334},[335,336,337,338],{"id":73,"languages_code":37,"label":75,"description":77,"slug":76},{"id":82,"languages_code":40,"label":75,"description":83,"slug":76},{"id":43,"languages_code":48,"label":75,"description":85,"slug":76},{"id":47,"languages_code":44,"label":75,"description":87,"slug":76},{"id":15,"status":6,"sort":29,"label":89,"alternative_label":13,"slug":90,"description":91,"documentation_link":92,"loc_icon":93,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":340},[341,342,343,344,345,346,347,348],{"id":15,"languages_code":37,"label":89,"description":91,"slug":90},{"id":97,"languages_code":40,"label":98,"description":99,"slug":13},{"id":101,"languages_code":48,"label":89,"description":91,"slug":90},{"id":68,"languages_code":44,"label":103,"description":104,"slug":13},{"id":106,"languages_code":40,"label":107,"description":108,"slug":90},{"id":110,"languages_code":48,"label":89,"description":91,"slug":90},{"id":112,"languages_code":44,"label":103,"description":104,"slug":90},{"id":114,"languages_code":115,"label":116,"description":117,"slug":13},{"id":30,"status":6,"sort":73,"label":119,"alternative_label":120,"slug":121,"description":122,"documentation_link":123,"loc_icon":124,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":350},[351,352,353,354,355],{"id":30,"languages_code":37,"label":119,"description":122,"slug":121},{"id":128,"languages_code":40,"label":129,"description":130,"slug":13},{"id":132,"languages_code":48,"label":119,"description":122,"slug":121},{"id":134,"languages_code":44,"label":135,"description":136,"slug":13},{"id":138,"languages_code":115,"label":139,"description":140,"slug":13},{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":357},[358,359,360,361,362],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[],{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":365},[366,367,368,369,370],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[],[373],{"languages_code":37,"name":264,"slug":265,"description":266,"support_type":268,"meta_title":13,"meta_description":13,"marketing_subtitle":18,"tile_subtitle":268,"tile_description":269,"id":142,"platforms_id":142,"docs_link":267},{"id":375,"status":6,"created_on":376,"modified_on":377,"name":378,"slug":379,"description":380,"docs_link":381,"priority":13,"has_sdk":14,"sort":382,"highlighted":14,"in_menu":16,"changefreq":13,"support_type":383,"show_in_spa":16,"is_file_format":14,"meta_title":13,"meta_description":13,"featured_on_web":16,"marketing_subtitle":18,"tile_subtitle":383,"tile_description":384,"is_enterprise":14,"is_popular":14,"primary_use_case":13,"hierarchy_handling":13,"best_for":13,"file_extension":13,"format_code_example":13,"format_to_extension":385,"upload_features":387,"icon":388,"meta_image":390,"primary_tag":392,"tags":407,"integration_methods":422,"recommended_methods":453,"default_integration_method":454,"faq_categories":461,"translations":466,"platforms_id":375},31,"2022-03-18T08:09:25.000Z","2024-07-17T07:43:22.000Z","JavaScript","javascript","Localize your app with JavaScript localizations and Localazy CLI.\nUpload JavaScript files with strings to Localazy and manage your translations easily. Download translated files back.","\u002Fdocs\u002Fcli\u002Fjavascript-format",12,"JS file support","Translating JS files is easy as a pie with Localazy!",{"js":386},"js",[],{"id":389},"4218d0c9-7e6b-494d-9663-37ceaf93ee8c",{"id":391},"2c6699eb-1d80-4772-8268-5597dbcead8c",{"id":393,"status":6,"sort":393,"created_on":61,"label":394,"hidden":14,"icon":395,"translations":397},10,"Programming Languages",{"id":396},"8c5836bb-1fbe-49c5-9330-8f931838c457",[398,399,402,405],{"id":393,"languages_code":37,"label":394},{"id":400,"languages_code":40,"label":401},63,"Lenguajes de Programación",{"id":403,"languages_code":44,"label":404},68,"Programovací Jazyky",{"id":406,"languages_code":48,"label":394},70,[408,415],{"id":29,"status":6,"sort":30,"label":32,"hidden":14,"created_on":31,"icon":409,"translations":410},{"id":34},[411,412,413,414],{"id":29,"languages_code":37,"label":32},{"id":39,"languages_code":40,"label":41},{"id":43,"languages_code":44,"label":45},{"id":47,"languages_code":48,"label":32},{"id":393,"status":6,"sort":393,"label":394,"hidden":14,"created_on":61,"icon":416,"translations":417},{"id":396},[418,419,420,421],{"id":393,"languages_code":37,"label":394},{"id":400,"languages_code":40,"label":401},{"id":403,"languages_code":44,"label":404},{"id":406,"languages_code":48,"label":394},[423,429,439,446],{"id":73,"status":6,"sort":74,"label":75,"alternative_label":13,"slug":76,"description":77,"documentation_link":78,"loc_icon":76,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":424},[425,426,427,428],{"id":73,"languages_code":37,"label":75,"description":77,"slug":76},{"id":82,"languages_code":40,"label":75,"description":83,"slug":76},{"id":43,"languages_code":48,"label":75,"description":85,"slug":76},{"id":47,"languages_code":44,"label":75,"description":87,"slug":76},{"id":15,"status":6,"sort":29,"label":89,"alternative_label":13,"slug":90,"description":91,"documentation_link":92,"loc_icon":93,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":430},[431,432,433,434,435,436,437,438],{"id":15,"languages_code":37,"label":89,"description":91,"slug":90},{"id":97,"languages_code":40,"label":98,"description":99,"slug":13},{"id":101,"languages_code":48,"label":89,"description":91,"slug":90},{"id":68,"languages_code":44,"label":103,"description":104,"slug":13},{"id":106,"languages_code":40,"label":107,"description":108,"slug":90},{"id":110,"languages_code":48,"label":89,"description":91,"slug":90},{"id":112,"languages_code":44,"label":103,"description":104,"slug":90},{"id":114,"languages_code":115,"label":116,"description":117,"slug":13},{"id":30,"status":6,"sort":73,"label":119,"alternative_label":120,"slug":121,"description":122,"documentation_link":123,"loc_icon":124,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":440},[441,442,443,444,445],{"id":30,"languages_code":37,"label":119,"description":122,"slug":121},{"id":128,"languages_code":40,"label":129,"description":130,"slug":13},{"id":132,"languages_code":48,"label":119,"description":122,"slug":121},{"id":134,"languages_code":44,"label":135,"description":136,"slug":13},{"id":138,"languages_code":115,"label":139,"description":140,"slug":13},{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":447},[448,449,450,451,452],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[],{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":455},[456,457,458,459,460],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[462],{"id":463,"status":6,"created_on":464,"sort":13,"slug":465,"label":378,"on_faq_index":14},35,"2022-06-10T09:49:33.000Z","javascript-i18n-localization",[467],{"languages_code":37,"name":378,"slug":379,"description":380,"support_type":383,"meta_title":13,"meta_description":13,"marketing_subtitle":18,"tile_subtitle":383,"tile_description":384,"id":375,"platforms_id":375,"docs_link":381},{"id":382,"status":6,"created_on":376,"modified_on":469,"name":470,"slug":22,"description":471,"docs_link":12,"priority":13,"has_sdk":14,"sort":472,"highlighted":14,"in_menu":16,"changefreq":13,"support_type":473,"show_in_spa":16,"is_file_format":16,"meta_title":13,"meta_description":13,"featured_on_web":16,"marketing_subtitle":18,"tile_subtitle":474,"tile_description":475,"is_enterprise":14,"is_popular":16,"primary_use_case":476,"hierarchy_handling":477,"best_for":478,"file_extension":479,"format_code_example":480,"format_to_extension":481,"upload_features":482,"icon":483,"meta_image":485,"primary_tag":487,"tags":500,"integration_methods":508,"recommended_methods":539,"default_integration_method":540,"faq_categories":547,"translations":551,"platforms_id":382},"2025-10-14T11:22:29.000Z","JSON","Online JSON translator you will love. Comfortable JSON language files editor with powerful CLI under your fingers for continuous localization.",20,"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":22},[],{"id":484},"99ac3b7c-dba5-4693-a4f4-1f27a6d7782d",{"id":486},"8d614c20-667e-4bee-a64d-7d7ce9c0ee0a",{"id":73,"status":6,"sort":29,"created_on":61,"label":488,"hidden":14,"icon":489,"translations":491},"File formats",{"id":490},"ab7c8f89-dcce-45ab-9e21-8605aef289c3",[492,493,496,498],{"id":73,"languages_code":37,"label":488},{"id":494,"languages_code":40,"label":495},44,"Formatos de archivo",{"id":101,"languages_code":44,"label":497},"Formáty souborů",{"id":499,"languages_code":48,"label":488},62,[501],{"id":73,"status":6,"sort":29,"label":488,"hidden":14,"created_on":61,"icon":502,"translations":503},{"id":490},[504,505,506,507],{"id":73,"languages_code":37,"label":488},{"id":494,"languages_code":40,"label":495},{"id":101,"languages_code":44,"label":497},{"id":499,"languages_code":48,"label":488},[509,515,525,532],{"id":73,"status":6,"sort":74,"label":75,"alternative_label":13,"slug":76,"description":77,"documentation_link":78,"loc_icon":76,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":510},[511,512,513,514],{"id":73,"languages_code":37,"label":75,"description":77,"slug":76},{"id":82,"languages_code":40,"label":75,"description":83,"slug":76},{"id":43,"languages_code":48,"label":75,"description":85,"slug":76},{"id":47,"languages_code":44,"label":75,"description":87,"slug":76},{"id":15,"status":6,"sort":29,"label":89,"alternative_label":13,"slug":90,"description":91,"documentation_link":92,"loc_icon":93,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":516},[517,518,519,520,521,522,523,524],{"id":15,"languages_code":37,"label":89,"description":91,"slug":90},{"id":97,"languages_code":40,"label":98,"description":99,"slug":13},{"id":101,"languages_code":48,"label":89,"description":91,"slug":90},{"id":68,"languages_code":44,"label":103,"description":104,"slug":13},{"id":106,"languages_code":40,"label":107,"description":108,"slug":90},{"id":110,"languages_code":48,"label":89,"description":91,"slug":90},{"id":112,"languages_code":44,"label":103,"description":104,"slug":90},{"id":114,"languages_code":115,"label":116,"description":117,"slug":13},{"id":30,"status":6,"sort":73,"label":119,"alternative_label":120,"slug":121,"description":122,"documentation_link":123,"loc_icon":124,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":526},[527,528,529,530,531],{"id":30,"languages_code":37,"label":119,"description":122,"slug":121},{"id":128,"languages_code":40,"label":129,"description":130,"slug":13},{"id":132,"languages_code":48,"label":119,"description":122,"slug":121},{"id":134,"languages_code":44,"label":135,"description":136,"slug":13},{"id":138,"languages_code":115,"label":139,"description":140,"slug":13},{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":533},[534,535,536,537,538],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[],{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":541},[542,543,544,545,546],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[548],{"id":549,"status":6,"created_on":550,"sort":13,"slug":22,"label":470,"on_faq_index":14},36,"2022-06-10T10:49:07.000Z",[552],{"languages_code":37,"name":470,"slug":22,"description":471,"support_type":473,"meta_title":13,"meta_description":13,"marketing_subtitle":18,"tile_subtitle":474,"tile_description":475,"id":382,"platforms_id":382,"docs_link":12},{"id":554,"status":6,"created_on":376,"modified_on":555,"name":556,"slug":557,"description":558,"docs_link":559,"priority":13,"has_sdk":14,"sort":554,"highlighted":14,"in_menu":16,"changefreq":13,"support_type":560,"show_in_spa":14,"is_file_format":16,"meta_title":13,"meta_description":13,"featured_on_web":16,"marketing_subtitle":18,"tile_subtitle":561,"tile_description":562,"is_enterprise":14,"is_popular":16,"primary_use_case":563,"hierarchy_handling":564,"best_for":565,"file_extension":566,"format_code_example":567,"format_to_extension":568,"upload_features":570,"icon":571,"meta_image":573,"primary_tag":575,"tags":582,"integration_methods":604,"recommended_methods":635,"default_integration_method":636,"faq_categories":643,"translations":644,"platforms_id":554},21,"2025-07-03T14:28:31.000Z","XLIFF","xliff","XLIFF is meant for localization. Enjoy Localazy - an online XLIFF editor for your translation management. Integrate your XLIFF files with Localazy to achieve true continuous localization and translate XLIFF files on autopilot.","\u002Fdocs\u002Fcli\u002Fxliff-12-format","File format support","Meant for localization","XLIFF stands for XML Localization Interchange File Format - and Localazy is the best way to manage XLIFF files.","Used in translation pipelines","XML-based exchange format","Translation & software",".xliff","```\n\u003Ctrans-unit id=\"localazy_message\">\n    \u003Csource>Go international, today. With Localazy.\u003C\u002Fsource>\n\u003C\u002Ftrans-unit>\n```",{"xliff":569},"xlf",[],{"id":572},"ca424cc8-e8a7-4aef-8dca-ef4a4d1334fc",{"id":574},"889970a6-cce8-4055-b96a-9c3f292aa67f",{"id":73,"status":6,"sort":29,"created_on":61,"label":488,"hidden":14,"icon":576,"translations":577},{"id":490},[578,579,580,581],{"id":73,"languages_code":37,"label":488},{"id":494,"languages_code":40,"label":495},{"id":101,"languages_code":44,"label":497},{"id":499,"languages_code":48,"label":488},[583,590,597],{"id":73,"status":6,"sort":29,"label":488,"hidden":14,"created_on":61,"icon":584,"translations":585},{"id":490},[586,587,588,589],{"id":73,"languages_code":37,"label":488},{"id":494,"languages_code":40,"label":495},{"id":101,"languages_code":44,"label":497},{"id":499,"languages_code":48,"label":488},{"id":73,"status":6,"sort":29,"label":488,"hidden":14,"created_on":61,"icon":591,"translations":592},{"id":490},[593,594,595,596],{"id":73,"languages_code":37,"label":488},{"id":494,"languages_code":40,"label":495},{"id":101,"languages_code":44,"label":497},{"id":499,"languages_code":48,"label":488},{"id":73,"status":6,"sort":29,"label":488,"hidden":14,"created_on":61,"icon":598,"translations":599},{"id":490},[600,601,602,603],{"id":73,"languages_code":37,"label":488},{"id":494,"languages_code":40,"label":495},{"id":101,"languages_code":44,"label":497},{"id":499,"languages_code":48,"label":488},[605,611,621,628],{"id":73,"status":6,"sort":74,"label":75,"alternative_label":13,"slug":76,"description":77,"documentation_link":78,"loc_icon":76,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":606},[607,608,609,610],{"id":73,"languages_code":37,"label":75,"description":77,"slug":76},{"id":82,"languages_code":40,"label":75,"description":83,"slug":76},{"id":43,"languages_code":48,"label":75,"description":85,"slug":76},{"id":47,"languages_code":44,"label":75,"description":87,"slug":76},{"id":15,"status":6,"sort":29,"label":89,"alternative_label":13,"slug":90,"description":91,"documentation_link":92,"loc_icon":93,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":612},[613,614,615,616,617,618,619,620],{"id":15,"languages_code":37,"label":89,"description":91,"slug":90},{"id":97,"languages_code":40,"label":98,"description":99,"slug":13},{"id":101,"languages_code":48,"label":89,"description":91,"slug":90},{"id":68,"languages_code":44,"label":103,"description":104,"slug":13},{"id":106,"languages_code":40,"label":107,"description":108,"slug":90},{"id":110,"languages_code":48,"label":89,"description":91,"slug":90},{"id":112,"languages_code":44,"label":103,"description":104,"slug":90},{"id":114,"languages_code":115,"label":116,"description":117,"slug":13},{"id":30,"status":6,"sort":73,"label":119,"alternative_label":120,"slug":121,"description":122,"documentation_link":123,"loc_icon":124,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":622},[623,624,625,626,627],{"id":30,"languages_code":37,"label":119,"description":122,"slug":121},{"id":128,"languages_code":40,"label":129,"description":130,"slug":13},{"id":132,"languages_code":48,"label":119,"description":122,"slug":121},{"id":134,"languages_code":44,"label":135,"description":136,"slug":13},{"id":138,"languages_code":115,"label":139,"description":140,"slug":13},{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":629},[630,631,632,633,634],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[],{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":637},[638,639,640,641,642],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[],[645],{"languages_code":37,"name":556,"slug":557,"description":558,"support_type":560,"meta_title":13,"meta_description":13,"marketing_subtitle":18,"tile_subtitle":561,"tile_description":562,"id":554,"platforms_id":554,"docs_link":559},{"id":472,"status":6,"created_on":647,"modified_on":647,"name":648,"slug":649,"description":650,"docs_link":651,"priority":13,"has_sdk":14,"sort":652,"highlighted":14,"in_menu":16,"changefreq":13,"support_type":560,"show_in_spa":16,"is_file_format":16,"meta_title":13,"meta_description":13,"featured_on_web":14,"marketing_subtitle":18,"tile_subtitle":653,"tile_description":654,"is_enterprise":14,"is_popular":16,"primary_use_case":13,"hierarchy_handling":13,"best_for":13,"file_extension":13,"format_code_example":13,"format_to_extension":655,"upload_features":656,"icon":657,"meta_image":659,"primary_tag":661,"tags":668,"integration_methods":697,"recommended_methods":728,"default_integration_method":729,"faq_categories":736,"translations":737,"platforms_id":472},"2026-05-21T20:49:09.000Z","PO","po","Edit .po and .pot files with your team, automate translation with AI, and ship faster.","\u002Fdocs\u002Fcli\u002Fpo-format",24,"Seamless integration","Upload, edit and translate PO files with Localazy.",{"po":649},[],{"id":658},"25f317fe-0c10-4f0b-92cd-f80d1f3c6a67",{"id":660},"490022f9-d91a-4e1a-9e79-db374ec997c2",{"id":73,"status":6,"sort":29,"created_on":61,"label":488,"hidden":14,"icon":662,"translations":663},{"id":490},[664,665,666,667],{"id":73,"languages_code":37,"label":488},{"id":494,"languages_code":40,"label":495},{"id":101,"languages_code":44,"label":497},{"id":499,"languages_code":48,"label":488},[669,676,687],{"id":73,"status":6,"sort":29,"label":488,"hidden":14,"created_on":61,"icon":670,"translations":671},{"id":490},[672,673,674,675],{"id":73,"languages_code":37,"label":488},{"id":494,"languages_code":40,"label":495},{"id":101,"languages_code":44,"label":497},{"id":499,"languages_code":48,"label":488},{"id":677,"status":6,"sort":677,"label":678,"hidden":16,"created_on":61,"icon":13,"translations":679},34,"C++",[680,681,683,685],{"id":677,"languages_code":37,"label":678},{"id":682,"languages_code":40,"label":678},135,{"id":684,"languages_code":44,"label":678},140,{"id":686,"languages_code":48,"label":678},144,{"id":554,"status":6,"sort":652,"label":688,"hidden":16,"created_on":61,"icon":13,"translations":689},"Gettext",[690,691,693,695],{"id":554,"languages_code":37,"label":688},{"id":692,"languages_code":40,"label":688},101,{"id":694,"languages_code":44,"label":688},106,{"id":696,"languages_code":48,"label":688},111,[698,704,714,721],{"id":73,"status":6,"sort":74,"label":75,"alternative_label":13,"slug":76,"description":77,"documentation_link":78,"loc_icon":76,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":699},[700,701,702,703],{"id":73,"languages_code":37,"label":75,"description":77,"slug":76},{"id":82,"languages_code":40,"label":75,"description":83,"slug":76},{"id":43,"languages_code":48,"label":75,"description":85,"slug":76},{"id":47,"languages_code":44,"label":75,"description":87,"slug":76},{"id":15,"status":6,"sort":29,"label":89,"alternative_label":13,"slug":90,"description":91,"documentation_link":92,"loc_icon":93,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":705},[706,707,708,709,710,711,712,713],{"id":15,"languages_code":37,"label":89,"description":91,"slug":90},{"id":97,"languages_code":40,"label":98,"description":99,"slug":13},{"id":101,"languages_code":48,"label":89,"description":91,"slug":90},{"id":68,"languages_code":44,"label":103,"description":104,"slug":13},{"id":106,"languages_code":40,"label":107,"description":108,"slug":90},{"id":110,"languages_code":48,"label":89,"description":91,"slug":90},{"id":112,"languages_code":44,"label":103,"description":104,"slug":90},{"id":114,"languages_code":115,"label":116,"description":117,"slug":13},{"id":30,"status":6,"sort":73,"label":119,"alternative_label":120,"slug":121,"description":122,"documentation_link":123,"loc_icon":124,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":715},[716,717,718,719,720],{"id":30,"languages_code":37,"label":119,"description":122,"slug":121},{"id":128,"languages_code":40,"label":129,"description":130,"slug":13},{"id":132,"languages_code":48,"label":119,"description":122,"slug":121},{"id":134,"languages_code":44,"label":135,"description":136,"slug":13},{"id":138,"languages_code":115,"label":139,"description":140,"slug":13},{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":722},[723,724,725,726,727],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[],{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":730},[731,732,733,734,735],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[],[738],{"languages_code":37,"name":648,"slug":649,"description":650,"support_type":560,"meta_title":13,"meta_description":13,"marketing_subtitle":18,"tile_subtitle":653,"tile_description":654,"id":472,"platforms_id":472,"docs_link":651},{"id":740,"status":6,"created_on":376,"modified_on":741,"name":742,"slug":743,"description":744,"docs_link":745,"priority":13,"has_sdk":14,"sort":746,"highlighted":14,"in_menu":16,"changefreq":13,"support_type":560,"show_in_spa":16,"is_file_format":16,"meta_title":13,"meta_description":13,"featured_on_web":14,"marketing_subtitle":18,"tile_subtitle":747,"tile_description":748,"is_enterprise":14,"is_popular":14,"primary_use_case":749,"hierarchy_handling":750,"best_for":751,"file_extension":752,"format_code_example":753,"format_to_extension":754,"upload_features":755,"icon":756,"meta_image":757,"primary_tag":759,"tags":766,"integration_methods":784,"recommended_methods":815,"default_integration_method":816,"faq_categories":823,"translations":826,"platforms_id":740},26,"2025-10-02T08:32:44.000Z","RESX","resx","Quickly translate and manage your RESX files with Localazy or integrate Localazy with your .NET project and enjoy a fully automated localization process. ","\u002Fdocs\u002Fcli\u002Fresx-format",27,".NET localization","Translate .NET projects using RESX files and Localazy.","Standard format for Windows\u002F.NET localization","Flat key-value structure",".NET applications",".resx","```\n\u003C?xml version=\"1.0\" encoding=\"utf-8\"?>\n\u003Croot>\n  \u003Cdata name=\"localazy_message\" xml:space=\"preserve\">\n    \u003Cvalue>Go international, today. With Localazy.\u003C\u002Fvalue>\n  \u003C\u002Fdata>\n\u003C\u002Froot>\n```",{"resx":743},[],{"id":658},{"id":758},"1f07bf83-9363-47d6-b21b-a5121c0efaf6",{"id":73,"status":6,"sort":29,"created_on":61,"label":488,"hidden":14,"icon":760,"translations":761},{"id":490},[762,763,764,765],{"id":73,"languages_code":37,"label":488},{"id":494,"languages_code":40,"label":495},{"id":101,"languages_code":44,"label":497},{"id":499,"languages_code":48,"label":488},[767,774],{"id":73,"status":6,"sort":29,"label":488,"hidden":14,"created_on":61,"icon":768,"translations":769},{"id":490},[770,771,772,773],{"id":73,"languages_code":37,"label":488},{"id":494,"languages_code":40,"label":495},{"id":101,"languages_code":44,"label":497},{"id":499,"languages_code":48,"label":488},{"id":652,"status":6,"sort":740,"label":775,"hidden":16,"created_on":61,"icon":13,"translations":776},"C#",[777,778,780,782],{"id":652,"languages_code":37,"label":775},{"id":779,"languages_code":40,"label":775},103,{"id":781,"languages_code":44,"label":775},108,{"id":783,"languages_code":48,"label":775},113,[785,791,801,808],{"id":73,"status":6,"sort":74,"label":75,"alternative_label":13,"slug":76,"description":77,"documentation_link":78,"loc_icon":76,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":786},[787,788,789,790],{"id":73,"languages_code":37,"label":75,"description":77,"slug":76},{"id":82,"languages_code":40,"label":75,"description":83,"slug":76},{"id":43,"languages_code":48,"label":75,"description":85,"slug":76},{"id":47,"languages_code":44,"label":75,"description":87,"slug":76},{"id":15,"status":6,"sort":29,"label":89,"alternative_label":13,"slug":90,"description":91,"documentation_link":92,"loc_icon":93,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":792},[793,794,795,796,797,798,799,800],{"id":15,"languages_code":37,"label":89,"description":91,"slug":90},{"id":97,"languages_code":40,"label":98,"description":99,"slug":13},{"id":101,"languages_code":48,"label":89,"description":91,"slug":90},{"id":68,"languages_code":44,"label":103,"description":104,"slug":13},{"id":106,"languages_code":40,"label":107,"description":108,"slug":90},{"id":110,"languages_code":48,"label":89,"description":91,"slug":90},{"id":112,"languages_code":44,"label":103,"description":104,"slug":90},{"id":114,"languages_code":115,"label":116,"description":117,"slug":13},{"id":30,"status":6,"sort":73,"label":119,"alternative_label":120,"slug":121,"description":122,"documentation_link":123,"loc_icon":124,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":802},[803,804,805,806,807],{"id":30,"languages_code":37,"label":119,"description":122,"slug":121},{"id":128,"languages_code":40,"label":129,"description":130,"slug":13},{"id":132,"languages_code":48,"label":119,"description":122,"slug":121},{"id":134,"languages_code":44,"label":135,"description":136,"slug":13},{"id":138,"languages_code":115,"label":139,"description":140,"slug":13},{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":809},[810,811,812,813,814],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[],{"id":142,"status":6,"sort":15,"label":143,"alternative_label":144,"slug":145,"description":146,"documentation_link":147,"loc_icon":145,"is_official_plugin":14,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":817},[818,819,820,821,822],{"id":142,"languages_code":37,"label":143,"description":146,"slug":145},{"id":151,"languages_code":40,"label":152,"description":153,"slug":145},{"id":155,"languages_code":48,"label":143,"description":146,"slug":145},{"id":157,"languages_code":44,"label":158,"description":159,"slug":145},{"id":161,"languages_code":115,"label":162,"description":163,"slug":13},[824],{"id":494,"status":6,"created_on":825,"sort":13,"slug":743,"label":742,"on_faq_index":13},"2022-08-01T16:44:06.000Z",[827],{"languages_code":37,"name":742,"slug":743,"description":744,"support_type":560,"meta_title":13,"meta_description":13,"marketing_subtitle":18,"tile_subtitle":747,"tile_description":748,"id":740,"platforms_id":740,"docs_link":745},{"id":829,"status":6,"created_on":830,"modified_on":831,"name":832,"slug":833,"description":834,"docs_link":835,"priority":13,"has_sdk":13,"sort":836,"highlighted":14,"in_menu":16,"changefreq":13,"support_type":837,"show_in_spa":16,"is_file_format":13,"meta_title":13,"meta_description":13,"featured_on_web":16,"marketing_subtitle":837,"tile_subtitle":837,"tile_description":838,"is_enterprise":14,"is_popular":16,"primary_use_case":13,"hierarchy_handling":13,"best_for":13,"file_extension":13,"format_code_example":13,"format_to_extension":13,"upload_features":13,"icon":839,"meta_image":841,"primary_tag":843,"tags":856,"integration_methods":905,"recommended_methods":925,"default_integration_method":926,"faq_categories":933,"translations":936,"platforms_id":829},72,"2022-06-16T09:08:11.000Z","2026-04-27T18:16:54.000Z","Strapi","strapi","Enjoy seamless integration of Strapi & Localazy and translate your website efficiently. Download the official Localazy plugin in the Strapi Marketplace to get started!","\u002Fdocs\u002Fstrapi\u002Fstrapi-plugin-introduction",54,"Localization Plugin","Localize your Strapi website with our official localization plugin. Easy setup and installation.",{"id":840},"cde7f1d0-f2e0-4243-929e-a3f8f9146e69",{"id":842},"5995b721-a2ea-487e-ad4b-298a489bbd24",{"id":382,"status":6,"sort":844,"created_on":61,"label":845,"hidden":14,"icon":846,"translations":848},11,"CMS",{"id":847},"1172a655-928c-4594-9263-d8afdfd9cd79",[849,850,852,854],{"id":382,"languages_code":37,"label":845},{"id":851,"languages_code":40,"label":845},73,{"id":853,"languages_code":44,"label":845},81,{"id":855,"languages_code":48,"label":845},84,[857,871,884,891],{"id":858,"status":6,"sort":859,"label":860,"hidden":14,"created_on":61,"icon":13,"translations":861},18,17,"Multilingual SEO",[862,863,866,869],{"id":858,"languages_code":37,"label":860},{"id":864,"languages_code":40,"label":865},89,"SEO multilingüe",{"id":867,"languages_code":44,"label":868},94,"Vícejazyčné SEO",{"id":870,"languages_code":48,"label":860},99,{"id":5,"status":6,"sort":5,"label":872,"hidden":14,"created_on":61,"icon":873,"translations":875},"E-commerce",{"id":874},"e782ed3f-d954-45ca-8b17-5bf5fe95f30a",[876,877,880,882],{"id":5,"languages_code":37,"label":872},{"id":878,"languages_code":40,"label":879},132,"Comercio electrónico",{"id":881,"languages_code":44,"label":872},137,{"id":883,"languages_code":48,"label":872},142,{"id":382,"status":6,"sort":844,"label":845,"hidden":14,"created_on":61,"icon":885,"translations":886},{"id":847},[887,888,889,890],{"id":382,"languages_code":37,"label":845},{"id":851,"languages_code":40,"label":845},{"id":853,"languages_code":44,"label":845},{"id":855,"languages_code":48,"label":845},{"id":30,"status":6,"sort":74,"label":892,"hidden":14,"created_on":61,"icon":893,"translations":895},"Marketing tools",{"id":894},"098fe6a4-dd2e-42d8-937e-2d8121e6e266",[896,897,900,903],{"id":30,"languages_code":37,"label":892},{"id":898,"languages_code":40,"label":899},43,"Herramientas de marketing",{"id":901,"languages_code":44,"label":902},48,"Marketingové nástroje",{"id":904,"languages_code":48,"label":892},58,[906],{"id":58,"status":6,"sort":13,"label":907,"alternative_label":908,"slug":909,"description":910,"documentation_link":911,"loc_icon":912,"is_official_plugin":16,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":913},"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",[914,915,918,919,922],{"id":58,"languages_code":37,"label":907,"description":910,"slug":909},{"id":898,"languages_code":40,"label":916,"description":917,"slug":13},"Complemento Oficial de Strapi","Nuestros desarrolladores mantienen un complemento oficial de localización de Strapi. ¡Empiece en unos pocos clics!",{"id":65,"languages_code":48,"label":907,"description":910,"slug":909},{"id":499,"languages_code":44,"label":920,"description":921,"slug":13},"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":864,"languages_code":115,"label":923,"description":924,"slug":13},"Offizielles Strapi-Plugin","Unsere Entwickler pflegen ein offizielles Strapi-Lokalisierungs-Plugin. Starten Sie mit ein paar Klicks!",[],{"id":58,"status":6,"sort":13,"label":907,"alternative_label":908,"slug":909,"description":910,"documentation_link":911,"loc_icon":912,"is_official_plugin":16,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":927},[928,929,930,931,932],{"id":58,"languages_code":37,"label":907,"description":910,"slug":909},{"id":898,"languages_code":40,"label":916,"description":917,"slug":13},{"id":65,"languages_code":48,"label":907,"description":910,"slug":909},{"id":499,"languages_code":44,"label":920,"description":921,"slug":13},{"id":864,"languages_code":115,"label":923,"description":924,"slug":13},[934],{"id":151,"status":6,"created_on":935,"sort":13,"slug":833,"label":832,"on_faq_index":13},"2022-06-16T09:24:13.000Z",[937],{"languages_code":37,"name":832,"slug":833,"description":834,"support_type":837,"meta_title":13,"meta_description":13,"marketing_subtitle":837,"tile_subtitle":837,"tile_description":838,"id":829,"platforms_id":829,"docs_link":835},{"id":68,"status":6,"created_on":376,"modified_on":939,"name":940,"slug":941,"description":13,"docs_link":942,"priority":13,"has_sdk":14,"sort":157,"highlighted":14,"in_menu":16,"changefreq":13,"support_type":943,"show_in_spa":16,"is_file_format":14,"meta_title":13,"meta_description":13,"featured_on_web":16,"marketing_subtitle":944,"tile_subtitle":945,"tile_description":946,"is_enterprise":14,"is_popular":16,"primary_use_case":13,"hierarchy_handling":13,"best_for":13,"file_extension":13,"format_code_example":13,"format_to_extension":13,"upload_features":947,"icon":948,"meta_image":950,"primary_tag":952,"tags":966,"integration_methods":974,"recommended_methods":990,"default_integration_method":991,"faq_categories":997,"translations":998,"platforms_id":68},"2024-12-20T15:00:22.000Z","Figma","figma","\u002Fdocs\u002Fintegrations\u002Fquick-start-figma","plugin","Figma plugin","Localization plugin","Quickly translate your Figma designs and seamlessly reuse the translations during the development of your project.",[],{"id":949},"813745a4-a77d-4735-93b7-e0dd731b2304",{"id":951},"7573fed6-8817-4cb4-84d2-be327e6c4891",{"id":15,"status":6,"sort":295,"created_on":61,"label":953,"hidden":14,"icon":954,"translations":956},"Design tools",{"id":955},"1053d863-b690-4fbd-aadf-dbf2ba282768",[957,958,961,964],{"id":15,"languages_code":37,"label":953},{"id":959,"languages_code":40,"label":960},42,"Herramientas de diseño",{"id":962,"languages_code":44,"label":963},49,"Nástroje pro návrh",{"id":965,"languages_code":48,"label":953},57,[967],{"id":15,"status":6,"sort":295,"label":953,"hidden":14,"created_on":61,"icon":968,"translations":969},{"id":955},[970,971,972,973],{"id":15,"languages_code":37,"label":953},{"id":959,"languages_code":40,"label":960},{"id":962,"languages_code":44,"label":963},{"id":965,"languages_code":48,"label":953},[975],{"id":295,"status":6,"sort":13,"label":908,"alternative_label":908,"slug":976,"description":977,"documentation_link":978,"loc_icon":912,"is_official_plugin":16,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":979},"official-plugin","Our developers maintain an official plugin for this integration. Start in a few clicks!","\u002Fdocs",[980,981,985,987],{"id":295,"languages_code":37,"label":908,"description":977,"slug":976},{"id":982,"languages_code":40,"label":983,"description":984,"slug":13},23,"Plugin Oficial","Nuestros desarrolladores mantienen un plugin oficial para esta integración. ¡Empiece con unos pocos clics!",{"id":986,"languages_code":48,"label":908,"description":977,"slug":976},29,{"id":463,"languages_code":44,"label":988,"description":989,"slug":13},"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":295,"status":6,"sort":13,"label":908,"alternative_label":908,"slug":976,"description":977,"documentation_link":978,"loc_icon":912,"is_official_plugin":16,"is_universal_plugin":14,"universal_plugin_vendor":13,"translations":992},[993,994,995,996],{"id":295,"languages_code":37,"label":908,"description":977,"slug":976},{"id":982,"languages_code":40,"label":983,"description":984,"slug":13},{"id":986,"languages_code":48,"label":908,"description":977,"slug":976},{"id":463,"languages_code":44,"label":988,"description":989,"slug":13},[],[999],{"languages_code":37,"name":940,"slug":941,"description":13,"support_type":943,"meta_title":13,"meta_description":13,"marketing_subtitle":944,"tile_subtitle":945,"tile_description":946,"id":68,"platforms_id":68,"docs_link":942},{"id":142,"status":6,"security_section_title":1001,"loved_section_title":1002,"columns":1003,"social_links":1090,"policy_links":1120},"Secured & trusted","Loved by users",[1004,1017,1033,1056,1060],{"id":142,"status":6,"sort":13,"title":1005,"column_key":1006,"links":1007},"Localazy","connect",[1008,1011,1014],{"id":844,"status":6,"sort":142,"title":1009,"url":1010},"Book a demo","___LOCALAZY_MEETING_URL___",{"id":382,"status":6,"sort":30,"title":1012,"url":1013},"Contact","\u002Fcontact",{"id":554,"status":6,"sort":15,"title":1015,"url":1016},"About us","\u002Fabout-us",{"id":30,"status":6,"sort":13,"title":1018,"column_key":1019,"links":1020},"Programs","programs",[1021,1024,1027,1030],{"id":142,"status":6,"sort":73,"title":1022,"url":1023},"Partner Program","\u002Fpartnership",{"id":30,"status":6,"sort":29,"title":1025,"url":1026},"Ambassador Program","\u002Fambassador",{"id":15,"status":6,"sort":74,"title":1028,"url":1029},"Startup Program","\u002Ffor\u002Fstartups",{"id":73,"status":6,"sort":295,"title":1031,"url":1032},"Nonprofits","\u002Ffor\u002Fnonprofit",{"id":15,"status":6,"sort":13,"title":1034,"column_key":1035,"links":1036},"Use Cases","use_cases",[1037,1040,1043,1046,1049,1052],{"id":29,"status":6,"sort":58,"title":1038,"url":1039},"Software Localization","\u002Fterm\u002Fsoftware-localization",{"id":74,"status":6,"sort":59,"title":1041,"url":1042},"Machine Translation Services","\u002Ffeatures\u002Fmachine-translation",{"id":295,"status":6,"sort":393,"title":1044,"url":1045},"Translation API","\u002Ffeatures\u002Ftranslation-api",{"id":58,"status":6,"sort":844,"title":1047,"url":1048},"Crowdsourced Translations","\u002Ffeatures\u002Fshare-tm",{"id":59,"status":6,"sort":382,"title":1050,"url":1051},"Figma i18n & localization","\u002Ffeatures\u002Ffigma-localization-plugin",{"id":393,"status":6,"sort":1053,"title":1054,"url":1055},13,"Translation as a Service","\u002Fterm\u002Ftranslation-service",{"id":73,"status":6,"sort":13,"title":1057,"column_key":1058,"links":1059},"Integrations","integrations",[],{"id":29,"status":6,"sort":13,"title":1061,"column_key":1062,"links":1063},"Resources","resources",[1064,1067,1071,1075,1078,1081,1084,1087],{"id":1053,"status":6,"sort":1065,"title":1066,"url":978},14,"Documentation",{"id":1065,"status":6,"sort":1068,"title":1069,"url":1070},15,"Dictionary","\u002Fdictionary",{"id":1068,"status":6,"sort":1072,"title":1073,"url":1074},16,"Case Studies","\u002Fcase-study",{"id":1072,"status":6,"sort":859,"title":1076,"url":1077},"Discussion forum","___DISCUSS_URL___",{"id":859,"status":6,"sort":858,"title":1079,"url":1080},"Localization Blog","\u002Fblog",{"id":858,"status":6,"sort":181,"title":1082,"url":1083},"FAQ","\u002Ffaq",{"id":181,"status":6,"sort":472,"title":1085,"url":1086},"Pricing","\u002Fpricing",{"id":472,"status":6,"sort":554,"title":1088,"url":1089},"Brand assets","https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Fu\u002F1\u002Ffolders\u002F1tZqsZHBlGelz7A2FwTsiwrs4j3sd9HTk",[1091,1096,1101,1106,1111,1116],{"id":142,"status":6,"sort":13,"platform":1092,"icon":1093,"url":1094,"label":1095},"feed","rss","\u002Ffeed.xml","Localazy RSS Feed",{"id":30,"status":6,"sort":13,"platform":1097,"icon":1098,"url":1099,"label":1100},"facebook","fb-logo","https:\u002F\u002Fwww.facebook.com\u002Flocalazy\u002F","Localazy facebook",{"id":15,"status":6,"sort":13,"platform":1102,"icon":1103,"url":1104,"label":1105},"github","github-logo","https:\u002F\u002Fgithub.com\u002Flocalazy","Localazy GitHub",{"id":73,"status":6,"sort":13,"platform":1107,"icon":1108,"url":1109,"label":1110},"x","x-twitter","https:\u002F\u002Fx.com\u002Flocalazy","Localazy X",{"id":29,"status":6,"sort":13,"platform":1112,"icon":1113,"url":1114,"label":1115},"linkedin","linkedin-logo","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002F37836599\u002F","Localazy LinkedIn",{"id":74,"status":6,"sort":13,"platform":1117,"icon":1118,"url":1077,"label":1119},"discourse","discourse-logo","Localazy Discourse",[1121,1124,1127],{"id":142,"status":6,"sort":13,"title":1122,"url":1123,"action":13},"Privacy policy","\u002Fprivacy-policy",{"id":30,"status":6,"sort":13,"title":1125,"url":1126,"action":13},"Terms & Conditions","\u002Fterms-and-conditions",{"id":15,"status":6,"sort":13,"title":1128,"url":13,"action":1129},"Cookies","cookie-consent",{"status":6,"header_badges":1131,"footer_badges":1149,"footer_secured_badges":1155,"slider_badges":1167},[1132,1139,1144],{"id":142,"status":6,"sort":13,"link":1133,"title":1134,"badgeType":1135,"badgeName":1136,"metadata":13,"image":1137},"https:\u002F\u002Fwww.g2.com\u002Fproducts\u002Flocalazy\u002Freviews","Best meets requirements","Other","G2-winter-24-best-meets-requirments",{"id":1138},"8d5dd6fd-6995-4c92-8219-a6ed5ba6acdc",{"id":30,"status":6,"sort":13,"link":1133,"title":1140,"badgeType":1135,"badgeName":1141,"metadata":13,"image":1142},"Best support","G2-winter-24-best-support",{"id":1143},"e59dd465-84d9-45c7-987d-dd4048fd6992",{"id":15,"status":6,"sort":13,"link":1133,"title":1145,"badgeType":1135,"badgeName":1146,"metadata":13,"image":1147},"Easiest admin","G2-winter-24-easiest-admin",{"id":1148},"5f12c4c8-bec0-47cf-87b4-a4502e9f1bd2",[1150],{"id":382,"status":6,"sort":13,"link":1133,"title":1151,"badgeType":1135,"badgeName":1152,"metadata":13,"image":1153},"Users love us","Users love us 25",{"id":1154},"232416a5-86ba-4be6-85a5-b88802003d53",[1156,1162],{"id":844,"status":6,"sort":13,"link":1157,"title":1158,"badgeType":1135,"badgeName":1159,"metadata":13,"image":1160},"https:\u002F\u002Fsprinto.com\u002Fget-iso-27001\u002F","Sprinto ISO 27001","Sprinto ISO 27001 certificate",{"id":1161},"c1c6c06c-6caf-4b78-8a7e-9606c395eb61",{"id":1053,"status":6,"sort":13,"link":1163,"title":1164,"badgeType":1135,"badgeName":1164,"metadata":13,"image":1165},"https:\u002F\u002Fwww.aicpa.org\u002Fsoc4so","SOC certificate",{"id":1166},"4f4bc0a6-09a0-41df-8295-8f990d96d941",[1168,1174,1178,1182,1186,1190,1195],{"id":29,"status":6,"sort":13,"link":1133,"title":1169,"badgeType":1135,"badgeName":1170,"metadata":1171,"image":1172},"Most likely to recommend","a","",{"id":1173},"da055731-3f11-4fc7-96f2-c11c0b84c831",{"id":74,"status":6,"sort":13,"link":1133,"title":1175,"badgeType":1135,"badgeName":13,"metadata":13,"image":1176},"EMEA High Performer",{"id":1177},"586fb488-81f2-41db-a4e8-ef309e50c0e6",{"id":295,"status":6,"sort":13,"link":1133,"title":1179,"badgeType":1135,"badgeName":13,"metadata":13,"image":1180},"Ease of Doing Business With",{"id":1181},"bfa26865-430e-463d-9886-cb56a8a8ecf6",{"id":58,"status":6,"sort":13,"link":1133,"title":1183,"badgeType":1135,"badgeName":13,"metadata":13,"image":1184},"High Performer",{"id":1185},"2cc1ba0f-c23a-4c97-ad4a-a655c97466fe",{"id":59,"status":6,"sort":13,"link":1133,"title":1187,"badgeType":1135,"badgeName":13,"metadata":13,"image":1188},"Fastest Implementation",{"id":1189},"6f297758-1c95-45f4-a6e9-528319897132",{"id":393,"status":6,"sort":13,"link":1191,"title":1192,"badgeType":1135,"badgeName":13,"metadata":13,"image":1193},"https:\u002F\u002Fwww.intercert.com\u002Fservices\u002Fgovernance-risk-compliance\u002Fiso-iec-27001","Intercert ISO 27001",{"id":1194},"0521a5f1-e1f2-4da6-a2bc-dc92773f2a7b",{"id":844,"status":6,"sort":13,"link":1157,"title":1158,"badgeType":1135,"badgeName":1159,"metadata":13,"image":1196},{"id":1161},[1198,1379,1589,1690,1809,1811],{"id":30,"name":1199,"url":13,"url_text":13,"status":6,"groups":1200},"Solutions",[1201,1210,1277,1309],{"navigation_items_group_id":1202},{"id":15,"sort":29,"status":6,"name":1203,"render_show_all_url":14,"show_all_url_position":1204,"show_favorite_icon":16,"show_all_url":13,"represent_as_tile":14,"items":1205},"Featured Article","top",[1206],{"collection":1207,"item":1208},"blog_post_navigation_item_type",{"id":73,"status":6,"sort":13,"show_author_img":16,"blog_post_tag":1209,"description":13},"nav",{"navigation_items_group_id":1211},{"id":29,"sort":142,"status":6,"name":1212,"render_show_all_url":14,"show_all_url_position":1204,"show_favorite_icon":14,"show_all_url":1213,"represent_as_tile":16,"items":1214},"Your Role","\u002Froles",[1215,1227,1237,1247,1257,1267],{"collection":1216,"item":1217},"relation_navigation_item_type",{"id":142,"status":6,"sort":13,"name":1218,"item":1219},"CMO",[1220],{"collection":1221,"item":1222},"personas",{"id":142,"status":6,"sort":13,"slug":1223,"icon":1224},"chief-marketing-officers",{"id":1225,"title":1226},"526097d8-176f-48e5-83d3-2fc4d77061f9","La Mail Bulk",{"collection":1216,"item":1228},{"id":15,"status":6,"sort":13,"name":1229,"item":1230},"CTO",[1231],{"collection":1221,"item":1232},{"id":73,"status":6,"sort":13,"slug":1233,"icon":1234},"chief-technical-officers",{"id":1235,"title":1236},"f808fdf0-c78b-4294-ba59-fe25f46fe825","La Mechanic",{"collection":1216,"item":1238},{"id":472,"status":6,"sort":13,"name":1239,"item":1240},"Product Manager",[1241],{"collection":1221,"item":1242},{"id":858,"status":6,"sort":13,"slug":1243,"icon":1244},"product-managers",{"id":1245,"title":1246},"ea39586a-21fc-4b34-ba87-496028e5198f","La Worker",{"collection":1216,"item":1248},{"id":151,"status":6,"sort":13,"name":1249,"item":1250},"Translator",[1251],{"collection":1221,"item":1252},{"id":472,"status":6,"sort":13,"slug":1253,"icon":1254},"professional-translators",{"id":1255,"title":1256},"07945171-d51d-4ca8-96c0-21cde9db258f","La Chat",{"collection":1216,"item":1258},{"id":128,"status":6,"sort":13,"name":1259,"item":1260},"Developer",[1261],{"collection":1221,"item":1262},{"id":321,"status":6,"sort":13,"slug":1263,"icon":1264},"software-developers",{"id":1265,"title":1266},"1806e46d-c551-4845-bf42-4407344d229e","La Terminal",{"collection":1216,"item":1268},{"id":746,"status":6,"sort":13,"name":1269,"item":1270},"Localization Manager",[1271],{"collection":1221,"item":1272},{"id":74,"status":6,"sort":13,"slug":1273,"icon":1274},"localization-managers",{"id":1275,"title":1276},"dac69bd1-bf5d-41d0-87d4-dd13e314698a","La Language",{"navigation_items_group_id":1278},{"id":59,"sort":15,"status":6,"name":1279,"render_show_all_url":14,"show_all_url_position":1280,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1281},"Use cases","bottom",[1282,1287,1291,1296,1300,1305],{"collection":1283,"item":1284},"simple_link_navigation_item_type",{"id":652,"status":6,"sort":13,"url":1285,"url_text":1286,"show_favorite_icon":14},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fsoftware-localization","Software localization",{"collection":1283,"item":1288},{"id":740,"status":6,"sort":13,"url":1289,"url_text":1290,"show_favorite_icon":14},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fmobile-app-localization","Mobile app localization",{"collection":1283,"item":1292},{"id":1293,"status":6,"sort":13,"url":1294,"url_text":1295,"show_favorite_icon":14},25,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fwebsite-localization","Website localization",{"collection":1283,"item":1297},{"id":746,"status":6,"sort":13,"url":1298,"url_text":1299,"show_favorite_icon":14},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fdesign-localization","Design localization",{"collection":1283,"item":1301},{"id":1302,"status":6,"sort":13,"url":1303,"url_text":1304,"show_favorite_icon":14},28,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fgame-localization","Game localization",{"collection":1283,"item":1306},{"id":986,"status":6,"sort":13,"url":1307,"url_text":1308,"show_favorite_icon":14},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fhelp-and-docs-localization","Help & docs localization",{"navigation_items_group_id":1310},{"id":58,"sort":30,"status":6,"name":1311,"render_show_all_url":14,"show_all_url_position":1280,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1312},"Industry",[1313,1323,1333,1342,1352,1361,1372],{"collection":1216,"item":1314},{"id":982,"status":6,"sort":13,"name":1315,"item":1316},"Digital Agencies",[1317],{"collection":1221,"item":1318},{"id":295,"status":6,"sort":13,"slug":1319,"icon":1320},"digital-agencies",{"id":1321,"title":1322},"547f5619-b21d-4b29-86f1-8b2200313cde","La Digi Agency",{"collection":1216,"item":1324},{"id":97,"status":6,"sort":13,"name":1325,"item":1326},"Startups & SaaS",[1327],{"collection":1221,"item":1328},{"id":30,"status":6,"sort":13,"slug":1329,"icon":1330},"startups",{"id":1331,"title":1332},"da1516e2-4afc-40a2-bcbf-a8161e2d610d","La Saa S",{"collection":1216,"item":1334},{"id":30,"status":6,"sort":13,"name":872,"item":1335},[1336],{"collection":1221,"item":1337},{"id":29,"status":6,"sort":13,"slug":1338,"icon":1339},"e-commerce",{"id":1340,"title":1341},"a3d09cd2-054f-4bb5-a0a2-d3d207db65df","La Ecommerce",{"collection":1216,"item":1343},{"id":181,"status":6,"sort":13,"name":1344,"item":1345},"FinTech Platforms",[1346],{"collection":1221,"item":1347},{"id":746,"status":6,"sort":13,"slug":1348,"icon":1349},"fintech",{"id":1350,"title":1351},"147339ba-07d1-4e5e-baad-23d27e60c919","La Money",{"collection":1216,"item":1353},{"id":652,"status":6,"sort":13,"name":1354,"item":1355},"Translation Agencies",[1356],{"collection":1221,"item":1357},{"id":652,"status":6,"sort":13,"slug":1358,"icon":1359},"translation-agencies",{"id":1360,"title":1276},"15d6fe33-2af8-4d6e-933d-5caa64394511",{"collection":1216,"item":1362},{"id":1363,"status":6,"sort":13,"name":1364,"item":1365},22,"Travel & Tourism",[1366],{"collection":1221,"item":1367},{"id":15,"status":6,"sort":13,"slug":1368,"icon":1369},"tourism",{"id":1370,"title":1371},"23a785e8-0ae5-4c4b-8452-aab1b58182a6","La Travel",{"collection":1216,"item":1373},{"id":1293,"status":6,"sort":13,"name":1374,"item":1375},"Nonprofit Causes",[1376],{"collection":1221,"item":1377},{"id":1302,"status":6,"sort":13,"slug":1378,"icon":13},"nonprofit",{"id":29,"name":1380,"url":13,"url_text":13,"status":6,"groups":1381},"Features",[1382,1441,1492,1538],{"navigation_items_group_id":1383},{"id":844,"sort":74,"status":6,"name":1384,"render_show_all_url":14,"show_all_url_position":1204,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1385},"Localization",[1386,1394,1402,1409,1416,1420,1427,1434],{"collection":1216,"item":1387},{"id":494,"status":6,"sort":13,"name":1388,"item":1389},"Localization services",[1390],{"collection":1391,"item":1392},"products",{"id":59,"status":6,"slug":1393},"continuous-localization-team",{"collection":1216,"item":1395},{"id":39,"status":6,"sort":13,"name":1396,"item":1397},"Translation management",[1398],{"collection":1399,"item":1400},"term_landing_page",{"id":986,"status":6,"slug":1401},"translation-management-system",{"collection":1216,"item":1403},{"id":155,"status":6,"sort":13,"name":1404,"item":1405},"Context Screenshots",[1406],{"collection":1391,"item":1407},{"id":1053,"status":6,"slug":1408},"context-screenshots-ocr",{"collection":1216,"item":1410},{"id":132,"status":6,"sort":13,"name":1411,"item":1412},"Translation Glossary",[1413],{"collection":1391,"item":1414},{"id":859,"status":6,"slug":1415},"glossary",{"collection":1283,"item":1417},{"id":73,"status":6,"sort":13,"url":1418,"url_text":1419,"show_favorite_icon":14},"\u002Fdocs\u002Fgeneral\u002Freviewing-translations","Quality control",{"collection":1216,"item":1421},{"id":677,"status":6,"sort":13,"name":1422,"item":1423},"Connected Projects",[1424],{"collection":1391,"item":1425},{"id":142,"status":6,"slug":1426},"connected-projects",{"collection":1216,"item":1428},{"id":106,"status":6,"sort":13,"name":1429,"item":1430},"Plural handling",[1431],{"collection":1391,"item":1432},{"id":322,"status":6,"slug":1433},"plurals",{"collection":1216,"item":1435},{"id":110,"status":6,"sort":13,"name":1436,"item":1437},"Style guides",[1438],{"collection":1391,"item":1439},{"id":128,"status":6,"slug":1440},"style-guide",{"navigation_items_group_id":1442},{"id":382,"sort":295,"status":6,"name":1443,"render_show_all_url":14,"show_all_url_position":1204,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1444},"Translation",[1445,1452,1459,1463,1470,1477,1485],{"collection":1216,"item":1446},{"id":549,"status":6,"sort":13,"name":1447,"item":1448},"Professional translations",[1449],{"collection":1399,"item":1450},{"id":321,"status":6,"slug":1451},"professional-translation-services",{"collection":1216,"item":1453},{"id":901,"status":6,"sort":13,"name":1454,"item":1455},"Crowdsourced translations",[1456],{"collection":1391,"item":1457},{"id":58,"status":6,"slug":1458},"share-tm",{"collection":1283,"item":1460},{"id":29,"status":6,"sort":13,"url":1461,"url_text":1462,"show_favorite_icon":14},"\u002Fdocs\u002Fgeneral\u002Ftranslating-strings","Translation interface",{"collection":1216,"item":1464},{"id":157,"status":6,"sort":13,"name":1465,"item":1466},"Machine translations",[1467],{"collection":1391,"item":1468},{"id":29,"status":6,"slug":1469},"machine-translation",{"collection":1216,"item":1471},{"id":68,"status":6,"sort":13,"name":1472,"item":1473},"Localazy AI translation",[1474],{"collection":1391,"item":1475},{"id":986,"status":6,"slug":1476},"localazy-ai",{"collection":1216,"item":1478},{"id":1479,"status":6,"sort":13,"name":1480,"item":1481},61,"Translation Memory",[1482],{"collection":1391,"item":1483},{"id":463,"status":6,"slug":1484},"translation-memory",{"collection":1216,"item":1486},{"id":400,"status":6,"sort":13,"name":1487,"item":1488},"Code & placeholders",[1489],{"collection":1391,"item":1490},{"id":321,"status":6,"slug":1491},"code-and-placeholders",{"navigation_items_group_id":1493},{"id":1053,"sort":58,"status":6,"name":1494,"render_show_all_url":14,"show_all_url_position":1204,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1495},"Management",[1496,1500,1507,1515,1523,1530,1534],{"collection":1283,"item":1497},{"id":58,"status":6,"sort":13,"url":1498,"url_text":1499,"show_favorite_icon":14},"\u002Fdocs\u002Fgeneral\u002Fdefining-user-roles","User roles",{"collection":1216,"item":1501},{"id":101,"status":6,"sort":13,"name":1502,"item":1503},"Duplicity Linking",[1504],{"collection":1391,"item":1505},{"id":181,"status":6,"slug":1506},"duplicity-linking",{"collection":1216,"item":1508},{"id":1509,"status":6,"sort":13,"name":1510,"item":1511},52,"Language Permissions",[1512],{"collection":1391,"item":1513},{"id":554,"status":6,"slug":1514},"language-permissions",{"collection":1216,"item":1516},{"id":65,"status":1517,"sort":13,"name":1518,"item":1519},"draft","Automations",[1520],{"collection":1391,"item":1521},{"id":472,"status":6,"slug":1522},"automations",{"collection":1216,"item":1524},{"id":904,"status":6,"sort":13,"name":1525,"item":1526},"Branching",[1527],{"collection":1391,"item":1528},{"id":746,"status":6,"slug":1529},"branching",{"collection":1283,"item":1531},{"id":554,"status":1517,"sort":13,"url":1532,"url_text":1533,"show_favorite_icon":14},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fsso-configuration","SSO",{"collection":1283,"item":1535},{"id":1363,"status":1517,"sort":13,"url":1536,"url_text":1537,"show_favorite_icon":14},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Flanguage-statistics","Reporting",{"navigation_items_group_id":1539},{"id":1065,"sort":59,"status":6,"name":1540,"render_show_all_url":14,"show_all_url_position":1204,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1541},"Development",[1542,1548,1554,1561,1568,1575,1582],{"collection":1216,"item":1543},{"id":986,"status":6,"sort":13,"name":1044,"item":1544},[1545],{"collection":1391,"item":1546},{"id":844,"status":6,"slug":1547},"translation-api",{"collection":1216,"item":1549},{"id":5,"status":6,"sort":13,"name":1550,"item":1551},"Localazy CLI",[1552],{"collection":1391,"item":1553},{"id":295,"status":6,"slug":145},{"collection":1216,"item":1555},{"id":322,"status":6,"sort":13,"name":1556,"item":1557},"Language CDN",[1558],{"collection":1391,"item":1559},{"id":73,"status":6,"slug":1560},"language-cdn",{"collection":1216,"item":1562},{"id":1302,"status":6,"sort":13,"name":1563,"item":1564},"Releases",[1565],{"collection":1391,"item":1566},{"id":74,"status":6,"slug":1567},"releases",{"collection":1216,"item":1569},{"id":965,"status":1517,"sort":13,"name":1570,"item":1571},"Format Conversions",[1572],{"collection":1391,"item":1573},{"id":30,"status":6,"slug":1574},"format-conversions",{"collection":1216,"item":1576},{"id":47,"status":6,"sort":13,"name":1577,"item":1578},"Webhooks",[1579],{"collection":1391,"item":1580},{"id":375,"status":6,"slug":1581},"webhooks",{"collection":1216,"item":1583},{"id":499,"status":6,"sort":13,"name":1584,"item":1585},"Export Aliases",[1586],{"collection":1391,"item":1587},{"id":5,"status":6,"slug":1588},"export-aliases",{"id":73,"name":1057,"url":13,"url_text":13,"status":6,"groups":1590},[1591,1680],{"navigation_items_group_id":1592},{"id":295,"sort":393,"status":6,"name":1593,"render_show_all_url":14,"show_all_url_position":1204,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1594},"Most popular",[1595],{"collection":1216,"item":1596},{"id":382,"status":6,"sort":13,"name":1057,"item":1597},[1598,1606,1613,1617,1621,1627,1631,1638,1642,1646,1650,1654,1658,1665,1672],{"collection":1599,"item":1600},"platforms",{"id":74,"status":6,"sort":142,"slug":1601,"name":1602,"icon":1603},"android","Android",{"id":1604,"title":1605},"ff965add-53b0-44ad-b27c-ea4ef641d384","Ic Outline Android",{"collection":1599,"item":1607},{"id":295,"status":6,"sort":30,"slug":1608,"name":1609,"icon":1610},"ios","iOS",{"id":1611,"title":1612},"886285d7-816a-4430-b5a5-edfe307b238e","Ios",{"collection":1599,"item":1614},{"id":5,"status":6,"sort":15,"slug":10,"name":9,"icon":1615},{"id":25,"title":1616},"Logos React",{"collection":1599,"item":1618},{"id":181,"status":6,"sort":73,"slug":184,"name":183,"icon":1619},{"id":191,"title":1620},"Vue",{"collection":1599,"item":1622},{"id":1072,"status":6,"sort":29,"slug":1623,"name":1624,"icon":1625},"angular","Angular",{"id":1626,"title":1624},"2a31a97a-48c5-4531-aa36-41c9dd0bdbef",{"collection":1599,"item":1628},{"id":142,"status":6,"sort":74,"slug":265,"name":264,"icon":1629},{"id":279,"title":1630},"Logos Flutter",{"collection":1599,"item":1632},{"id":15,"status":6,"sort":844,"slug":1633,"name":1634,"icon":1635},"typescript","TypeScript",{"id":1636,"title":1637},"8d1319b5-8a96-4199-8407-00add3418b1f","Logos Typescript Icon",{"collection":1599,"item":1639},{"id":375,"status":6,"sort":382,"slug":379,"name":378,"icon":1640},{"id":389,"title":1641},"Logos Javascript",{"collection":1599,"item":1643},{"id":382,"status":6,"sort":472,"slug":22,"name":470,"icon":1644},{"id":484,"title":1645},"Logos Json",{"collection":1599,"item":1647},{"id":554,"status":6,"sort":554,"slug":557,"name":556,"icon":1648},{"id":572,"title":1649},"Format",{"collection":1599,"item":1651},{"id":829,"status":6,"sort":836,"slug":833,"name":832,"icon":1652},{"id":840,"title":1653},"Strapi Logo Purple",{"collection":1599,"item":1655},{"id":68,"status":6,"sort":157,"slug":941,"name":940,"icon":1656},{"id":949,"title":1657},"Figma Icon",{"collection":1599,"item":1659},{"id":101,"status":6,"sort":132,"slug":1660,"name":1661,"icon":1662},"microsoft-excel","Microsoft Excel",{"id":1663,"title":1664},"7a175955-7b96-4561-939f-a0e1924faa40","Excel",{"collection":1599,"item":1666},{"id":112,"status":6,"sort":1479,"slug":1667,"name":1668,"icon":1669},"github-actions","GitHub Actions",{"id":1670,"title":1671},"da17554f-ac6d-443d-9bac-1f29645ec1c6","Github Icon",{"collection":1599,"item":1673},{"id":1674,"status":6,"sort":1675,"slug":1676,"name":1677,"icon":1678},97,999,"webflow","Webflow",{"id":1679,"title":1677},"ff43a386-52f8-499f-b77c-ab9a30f4a77e",{"navigation_items_group_id":1681},{"id":73,"sort":844,"status":6,"name":1682,"render_show_all_url":14,"show_all_url_position":1204,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1683},"Explore more",[1684],{"collection":1685,"item":1686},"text_link_navigation_item_type",{"id":142,"status":6,"sort":13,"text":1687,"url":1688,"url_text":1689},"Localazy is a technology-agnostic platform supporting 50+ frameworks, file formats & popular tools.","\u002Fintegrations","See all integrations",{"id":142,"name":1061,"url":13,"url_text":13,"status":6,"groups":1691},[1692,1716,1722],{"navigation_items_group_id":1693},{"id":142,"sort":382,"status":6,"name":1694,"render_show_all_url":14,"show_all_url_position":1204,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1695},"Helpful Links",[1696,1699,1701,1705,1707,1710,1712],{"collection":1283,"item":1697},{"id":1053,"status":6,"sort":13,"url":1080,"url_text":1698,"show_favorite_icon":16},"Localazy Blog",{"collection":1283,"item":1700},{"id":1065,"status":6,"sort":13,"url":978,"url_text":1066,"show_favorite_icon":16},{"collection":1283,"item":1702},{"id":142,"status":6,"sort":13,"url":1703,"url_text":1704,"show_favorite_icon":14},"https:\u002F\u002Fdiscuss.localazy.com\u002F","Discussion Forum",{"collection":1283,"item":1706},{"id":382,"status":6,"sort":13,"url":1074,"url_text":1073,"show_favorite_icon":14},{"collection":1283,"item":1708},{"id":15,"status":6,"sort":13,"url":1023,"url_text":1709,"show_favorite_icon":14},"Become a Partner",{"collection":1283,"item":1711},{"id":1068,"status":6,"sort":13,"url":1083,"url_text":1082,"show_favorite_icon":14},{"collection":1283,"item":1713},{"id":859,"status":6,"sort":13,"url":1714,"url_text":1715,"show_favorite_icon":14},"\u002Ftags\u002Frelease-update","Release Updates",{"navigation_items_group_id":1717},{"id":30,"sort":1065,"status":6,"name":1698,"render_show_all_url":16,"show_all_url_position":1204,"show_favorite_icon":14,"show_all_url":1080,"represent_as_tile":14,"items":1718},[1719],{"collection":1207,"item":1720},{"id":15,"status":6,"sort":13,"show_author_img":14,"blog_post_tag":1721,"description":13},"[USE LATEST FEATURED]",{"navigation_items_group_id":1723},{"id":74,"sort":1053,"status":6,"name":1066,"render_show_all_url":16,"show_all_url_position":1204,"show_favorite_icon":14,"show_all_url":978,"represent_as_tile":14,"items":1724},[1725,1739,1750,1759,1770,1780,1791,1799],{"collection":1216,"item":1726},{"id":73,"status":6,"sort":13,"name":1727,"item":1728},"General",[1729],{"collection":1730,"item":1731},"docs_section",{"id":30,"status":6,"sort":142,"slug":1732,"name":1727,"icon":1733,"featured_icon":1736},"general",{"id":1734,"title":1735},"423101f1-308c-42f1-8dfe-53272019e7cb","Global",{"id":1737,"title":1738},"0f7ca4cb-dc3b-4f62-b476-132ed5c4931f","General Doc",{"collection":1216,"item":1740},{"id":29,"status":6,"sort":13,"name":144,"item":1741},[1742],{"collection":1730,"item":1743},{"id":15,"status":6,"sort":30,"slug":145,"name":144,"icon":1744,"featured_icon":1747},{"id":1745,"title":1746},"2f7a4573-8265-4d76-8d55-ce0cc79b8983","Cli",{"id":1748,"title":1749},"3f76ff7b-0e74-4046-bb03-4ca99c3b66d5","Doc Cat Cli",{"collection":1216,"item":1751},{"id":58,"status":6,"sort":13,"name":75,"item":1752},[1753],{"collection":1730,"item":1754},{"id":472,"status":6,"sort":15,"slug":76,"name":75,"icon":1755,"featured_icon":1756},{"id":1745,"title":1746},{"id":1757,"title":1758},"20866781-e69b-4e01-9456-05437487b75c","API Doc",{"collection":1216,"item":1760},{"id":43,"status":6,"sort":13,"name":1761,"item":1762},"CDN",[1763],{"collection":1730,"item":1764},{"id":740,"status":6,"sort":73,"slug":1765,"name":1761,"icon":1766,"featured_icon":1767},"cdn",{"id":1734,"title":1735},{"id":1768,"title":1769},"a8ee9cb7-4e02-41f0-b595-eb518c3085b6","Doc Cat Cdn",{"collection":1216,"item":1771},{"id":74,"status":6,"sort":13,"name":1602,"item":1772},[1773],{"collection":1730,"item":1774},{"id":142,"status":6,"sort":29,"slug":1601,"name":1602,"icon":1775,"featured_icon":1777},{"id":1776,"title":1602},"fb8329ae-0c0c-4fbc-bcdc-83f2eeda1039",{"id":1778,"title":1779},"f7c0dec8-5b42-4943-ab3a-e3665723ad6f","Doc Cat Android",{"collection":1216,"item":1781},{"id":295,"status":6,"sort":13,"name":1609,"item":1782},[1783],{"collection":1730,"item":1784},{"id":73,"status":6,"sort":74,"slug":1608,"name":1609,"icon":1785,"featured_icon":1788},{"id":1786,"title":1787},"289e136c-55df-4d51-847b-1782a2308ee4","Ios Blue",{"id":1789,"title":1790},"2968d3f0-14b5-4427-82e7-f1ea2de17846","Doc Cat Ios",{"collection":1216,"item":1792},{"id":59,"status":6,"sort":13,"name":940,"item":1793},[1794],{"collection":1730,"item":1795},{"id":554,"status":6,"sort":295,"slug":941,"name":940,"icon":1796,"featured_icon":1797},{"id":1745,"title":1746},{"id":1798,"title":940},"f5e66b5b-a439-47f6-af4a-6ad261de2e87",{"collection":1216,"item":1800},{"id":393,"status":6,"sort":13,"name":832,"item":1801},[1802],{"collection":1730,"item":1803},{"id":982,"status":6,"sort":58,"slug":833,"name":832,"icon":1804,"featured_icon":1806},{"id":1805,"title":832},"3b4b03c7-e131-49e6-a014-c8c2c8a2751e",{"id":1807,"title":1808},"1dd05c76-e517-4aea-a3d8-49cfddb40056","Strapi Doc",{"id":15,"name":1085,"url":1086,"url_text":1085,"status":6,"groups":1810},[],{"id":74,"name":1009,"url":1812,"url_text":1009,"status":6,"groups":1813},"\u002Fbook-demo",[],{"id":1815,"owner":1816,"created_by":13,"sort":13,"title":1821,"slug":1822,"modified_on":1171,"created_on":1823,"pinned":14,"badge":13,"priority":1824,"main_image":1825,"status":6,"tags":1826,"dictionary":1834,"reading_time":1835,"excerpt":-1,"og_title":1171,"og_description":1171,"og_image":1171},"69d78a237ab1270001eddabf",{"id":1817,"first_name":1818,"last_name":1171,"slug":1819,"avatar":1820},"606c233dcf7b6a0001d1da93","Petr Hodný","petr-hodny","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Fpetr.png","Translation API: Translate your content on the fly with Localazy AI!","translation-api-translate-your-content-on-the-fly-with-localazy-ai","2026-04-24T09:27:26.000+02:00","0.7","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F04\u002FLocalazy-AI-translation-api.png",[1827,1829,1832],{"id":68,"created_on":1828,"status":6,"label":75,"slug":76,"on_index_page":14},"2026-06-08 05:51:46",{"id":106,"created_on":1828,"status":6,"label":1830,"slug":1831,"on_index_page":16},"AI","ai",{"id":68,"created_on":1828,"status":6,"label":1384,"slug":1833,"on_index_page":16},"localization",[],0,{"id":1837,"owner":1838,"created_by":13,"sort":13,"title":1843,"slug":1844,"modified_on":1171,"created_on":1845,"pinned":14,"badge":13,"priority":1824,"main_image":1846,"status":6,"tags":1847,"dictionary":1855,"reading_time":1835,"excerpt":-1,"og_title":1171,"og_description":1171,"og_image":1171},"6a145e3f8550a300014081e4",{"id":1839,"first_name":1840,"last_name":1171,"slug":1841,"avatar":1842},"65647a510470910001942876","Dorota Pawlak","dorota-pawlak","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2024\u002F07\u002Fdorota.png","The great LLM translation war, pt. 2: Context beats model choice in 2026","the-great-llm-translation-war-pt-2-2026","2026-06-05T14:56:58.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F06\u002Flocalazy-AI-series-11.png",[1848,1849,1852],{"id":106,"created_on":1828,"status":6,"label":1830,"slug":1831,"on_index_page":16},{"id":106,"created_on":1828,"status":6,"label":1850,"slug":1851,"on_index_page":14},"ChatGPT","chatgpt",{"id":68,"created_on":1828,"status":6,"label":1853,"slug":1854,"on_index_page":14},"Translations","translations",[],{"post":1857,"relatedPosts":1976,"banner":2034},{"id":1858,"owner":1859,"created_by":13,"sort":13,"title":1864,"slug":1865,"modified_on":1866,"created_on":1867,"pinned":16,"badge":13,"priority":1824,"main_image":1868,"status":6,"tags":1869,"dictionary":1878,"reading_time":58,"excerpt":1916,"og_title":1171,"og_description":1171,"og_image":1171,"content":1917,"meta_title":1171,"meta_description":1171,"canonical":1171,"cta":1918,"fullGhostPost":1926},"60a37fc7cf7b6a0001d1f1c4",{"id":1860,"first_name":1861,"last_name":1171,"slug":1862,"avatar":1863},"6092822ecf7b6a0001d1dab2","Rafał Rybnik","rafal-rybnik","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Frafal.png","Automatic data reports in multiple languages with Python, Gettext and Localazy","automatic-data-reports-multiple-languages-python-gettext-localazy","2026-04-16T16:34:56.000+02:00","2021-03-23T10:37:41.000+01:00","https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F185acdae-c664-4d60-9411-9898ecc76efe",[1870,1872,1875],{"id":68,"created_on":1828,"status":6,"label":1005,"slug":1871,"on_index_page":14},"localazy",{"id":68,"created_on":1828,"status":6,"label":1873,"slug":1874,"on_index_page":14},"HowTo","howto",{"id":68,"created_on":1828,"status":6,"label":1876,"slug":1877,"on_index_page":14},"Automated Localization","automated-localization",[1879,1895],{"id":1053,"status":6,"owner":1880,"created_on":1881,"title":1882,"excerpt":1883,"content":1884,"slug":1469,"meta_title":1171,"meta_description":1171,"canonical":1171,"related_terms":1885},"2bac48a8-b362-482f-b574-3bc71dca4c5b","2026-05-12T07:09:22.000Z","Machine translation (MT)","The process of translating using computational linguistics.","A machine translation engine is a software tool that translates a text from one language to another without the help of human translators.\n\nMachine translation, also known as MT, is widely used as the first round of translations and is frequently very effective for short strings. However, it can produce unsatisfactory results when context knowledge is required, and thus, a human review is always advised.\n\n### 💬 Methods used in machine translation\n\nMachine translation engines recently experienced huge improvements related to the advanced use of neural networks, but they generally rely on these different methods:\n\n* [Statistical machine translation (SMT)](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fstatistical-machine-translation\u002F \"https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fstatistical-machine-translation\u002F\")\n* [Example-based machine translation (EBMT)](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fexample-based-machine-translation \"https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fexample-based-machine-translation\")\n* [Hybrid machine translation (HMT)](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fhybrid-machine-translation \"https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fhybrid-machine-translation\")\n* [Neural machine translation (NMT)](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fneural-machine-translation\u002F \"https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fneural-machine-translation\u002F\")\n\nNeural machine translation (used by [AI-powered translation](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fai-powered-translation) engines) is the most sophisticated type of instant translation today. It uses machine learning to improve its translation capabilities. As the engine translates more text with each request, the better results it produces with time by learning. Most instant translation services use this technology.\n\n### 🔍 What's the difference between HAMT and MAHT?\n\nWithin the realm of machine translation, it’s important to distinguish between **Human-Assisted Machine Translation (HAMT)** and **Machine-Assisted Human Translation (MAHT)**:\n\n* [**Human-Assisted Machine Translation (HAMT)**](\u002Fdictionary\u002Fhuman-assisted-mt): This process involves a human reviewing translations generated by machine translation (MT) engines. It is also known as MT plus post-editing and\u002For pre-editing. The machine handles the initial translation, which is then edited by a human to improve accuracy and context. This approach is useful for projects with repetitive content and where budget or time constraints are significant.\n* [**Machine-Assisted Human Translation (MAHT)**](\u002Fdictionary\u002Fmaht): In this method, human translators use computer software to aid their work. Translators receive machine translation suggestions, but they decide how to use them. This approach allows for high translation accuracy while benefiting from features like translation glossaries and memories, which enhance the efficiency and consistency of the translation process.\n\n### 🦾 MT engines available in Localazy \n\nLocalazy users can use the most popular and advanced [MT engines](https:\u002F\u002Flocalazy.com\u002Ffeatures\u002Fmachine-translation \"https:\u002F\u002Flocalazy.com\u002Ffeatures\u002Fmachine-translation\") to translate their content:\n\n* Amazon Translate (available for free)\n* Google Translate\n* DeepL\n* Azure Translator\n* OpenAI (ChatGPT), with your own API key\n\n> *Users can unlock different engines depending on the plan they buy. See our [pricing](https:\u002F\u002Flocalazy.com\u002Fpricing) and [docs](https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fadditional-mt-engines?srsltid=AfmBOoo--lURSBHDiHEoe3rYL3xSQHaZcTsl6kd7wwUYRGC-sGTTmG94 \"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fadditional-mt-engines?srsltid=AfmBOoo--lURSBHDiHEoe3rYL3xSQHaZcTsl6kd7wwUYRGC-sGTTmG94\") for more details.*\n\n### 📚 Additional resources:\n\n* [What is machine translation?](https:\u002F\u002Fwww.gala-global.org\u002Fwhat-machine-translation)\n* [History of machine translation](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHistory_of_machine_translation)",[1886,1888,1890,1892],{"id":375,"slug":1887},"maht",{"id":855,"slug":1889},"mtpe-machine-translation-post-editing",{"id":783,"slug":1891},"deepl",{"id":1893,"slug":1894},136,"human-assisted-mt",{"id":864,"status":6,"owner":1880,"created_on":1896,"title":1897,"excerpt":1898,"content":1899,"slug":1900,"meta_title":13,"meta_description":1901,"canonical":13,"related_terms":1902},"2022-03-17T12:22:55.000Z","GNU gettext","Gettext is a library that was built to minimize the work of i18n and l10n. It works by extracting the strings directly from the source files and generating a template file.","`gettext` is simple and flexible package to use for [i18n](\u002Fdictionary\u002Finternationalization) and [l10n](\u002Fdictionary\u002Flocalization) of software with various utilities, [string externalization](\u002Fdictionary\u002Fexternalized-string) and plural support. This package offers to programmers, translators and even users, a well integrated set of tools and extensive [documentation](https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002Fmanual\u002Fgettext.html). \n\n`gettext` is available for usage with various languages ([Python](\u002Fdictionary\u002Fpython), C, PHP, Ruby, [JavaScript](\u002Fjavascript) and many more) and most frameworks already have it with some support. You can check it [here](https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002F).\n\nIf you choose this route to prepare your project for internationalization and localization, you'll be in luck because Localazy supports `gettext`.\n\n\n","gnu-gettext","Gettext is a library that was built to minimize the work of i18n and l10n. It works by extracting the strings directly from the source files and generating a template file with externalized strings.",[1903,1904,1906,1908,1910,1913],{"id":30,"slug":1833},{"id":15,"slug":1905},"l10n",{"id":68,"slug":1907},"externalized-string",{"id":1909,"slug":379},75,{"id":1911,"slug":1912},79,"internationalization",{"id":1914,"slug":1915},83,"python","Once in a while as a data scientist, your job may be to produce a report that you could email to stakeholders or share through the intranet. Creating an automated report using it is a rather standard skill for a data scientist. ","\u003C!--kg-card-begin: html-->\u003Cp>Word documents may seem a bit old school, but there are still cases when using them is the shortest route to this goal. Whenever automation is discussed, \u003Ca href=\"\u002Fdictionary\u002Fpython\">Python\u003C\u002Fa> is a tool of choice. \u003C\u002Fp>\n\u003Cp>But everything’s all fun and games until other languages show up.\u003C\u002Fp>\n\u003Cp>In theory, preparing another language version does not seem complicated. After all, it is enough to translate individual labels and descriptions into another language and then hardcode them in the next version of the script. In practice, this simple approach is time-consuming and error-prone, especially when there is a constant need to modify some messages. Not to mention the difficulty of working with non-technical translators using this method.\u003C\u002Fp>\n\u003Cp>This article shows how to save time by translating the Python-generated data report by using \u003Ca href=\"\u002Fdictionary\u002Fgnu-gettext\">Gettext\u003C\u002Fa> and Localazy. I’ll show you how to extract messages from the source code (Gettext), store them in separate files and how to make them available in a collaborative translation tool (Localazy). Also, you will learn how to deal with difficulties in translating f-strings.\u003C\u002Fp>\n\u003Ch2 id=\"why\" id=\"why\">🤔 Why? \u003Ca class=\"markdownit-header-anchor\" href=\"#why\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Imagine that you work in the analytics team at an international company that has 3 branches in different countries (England, Germany, Poland).\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Ff7754c1c-5c90-4465-b420-cd72939fea2e\" alt=\"Illustrative Map\">\u003C\u002Fp>\n\u003Cp>You have created an interesting descriptive report, the results of which can significantly improve the performance of each branch.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F0c46a22d-294e-4411-b2b7-61f17f364a48\" alt=\"Data Report Example\">\n\u003Cem>The report is generated in docs format for easy email distribuiton\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>You want it to reach the widest possible audience, but your company does not work exclusively in English. As your report is generated automatically once a day, having it translated manually into national languages every time is not an option.\u003C\u002Fp>\n\u003Cp>But if you can automate report generation, why not do the same with translation?\u003C\u002Fp>\n\u003Ch2 id=\"project-start\" id=\"project-start\">▶️ Project start \u003Ca class=\"markdownit-header-anchor\" href=\"#project-start\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>In the beginning, your project is one file with the main script and dataset in CSV format.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fa32dd24a-0e89-417c-a615-7252952b3a2b\" alt=\".py and .csv files\">\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F4fef8f69367fd7520ae9f89e33983070.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>The script is quite self-explanatory. Using the data loaded from the CSV file, it calculates various statistics, generates a bar chart and packs everything into a Word document. The usage of the script is simple. All you need to do is specify the city and the date.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fc49ee1eb-9067-46e8-8070-2eb801007af8\" alt=\"Command Line Picture\">\u003C\u002Fp>\n\u003Cp>\u003Cem>Note: This project is aimed at teaching localization of Python applications, so I’m skipping aspects like validating input variables or being interesting 😆\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>Perhaps, we could translate messages into other languages and use \u003Ccode>if\u003C\u002Fcode> statements to change them according to the user’s will, but this approach would be tedious and error-prone. Therefore we will first extract all strings from the code to work on them separately from the business logic.\u003C\u002Fp>\n\u003Ch2 id=\"gettext\" id=\"gettext\">📝 Gettext \u003Ca class=\"markdownit-header-anchor\" href=\"#gettext\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002F\">GNU gettext\u003C\u002Fa> is a universal set of tools for producing multi-lingual messages. It provides a framework to support translated message strings. It supports many programming languages \u003Cimg class=\"emoji\" draggable=\"false\" alt=\"😉\" src=\"https:\u002F\u002Ftwemoji.maxcdn.com\u002Fv\u002F13.0.2\u002F72x72\u002F1f609.png\"\u002F>, including Python. The gettext module comes shipped with Python standard library. The best thing about gettext is that it will help us seamlessly extract text messages into separate files.\u003C\u002Fp>\n\u003Cp>As our report is prepared for data from London, Warsaw and Berlin, we will prepare English, Polish and German language versions. First, we need to prepare the directory structure.\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F9b0607b0c33ac3e08db9fb1d3819f17f.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cpre>\u003Ccode>mkdir -p locales\u002F{de,pl}\u002FLC_MESSAGES\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Then, we should extract the messages from the code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>xgettext -d base -o locales\u002Fbase.pot\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Or, alternatively:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002FLibrary\u002FFrameworks\u002FPython.framework\u002FVersions\u002F3.8\u002Fshare\u002Fdoc\u002Fpython3.8\u002Fexamples\u002FTools\u002Fi18n\u002Fpygettext.py -d base -o locales\u002Fbase.pot report.py\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>To find the \u003Ccode>pygettext.py\u003C\u002Fcode> file, you can use the command: \u003Ccode>locate pygettext.py\u003C\u002Fcode> .\u003C\u002Fp>\n\u003Cp>\u003Cem>Note: using plain gettext command will force you to modify the result file by adding CHARSET header “Content-Type: text\u002Fplain; charset=UTF-8n”\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>That will generate in the \u003Ccode>locales\u003C\u002Fcode> folder a \u003Ccode>base.pot\u003C\u002Fcode> file with strings taken from the \u003Ccode>report.py\u003C\u002Fcode> file.\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F1e1d3f70498ac5b791329bfe60871aef.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>Unfortunately, as you can see, generated \u003Ccode>base.pot\u003C\u002Fcode> does not contain any strings. To fix this, we need to modify \u003Ccode>report.py\u003C\u002Fcode> by marking the messages for translation.\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F180bceeaedbea6bf2de5bc6700914dd4.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>After generating the \u003Ccode>base.pot\u003C\u002Fcode> again, two strings appear in it.\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F07ed29c6e846235f153a4de850472ee4.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>After this paragraph, the project should look like this:\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u002Ftree\u002F002-gettext\">https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u002Ftree\u002F002-gettext\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Use this repository: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\">https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u003C\u002Fa>\nThe branches contain the following steps discussed in this article.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F7e828fab-3070-4382-8042-6ef9279dff30\" alt=\"Project branches overview\">\u003C\u002Fp>\n\u003Ch2 id=\"first-translations\" id=\"first-translations\">🎉 First translations \u003Ca class=\"markdownit-header-anchor\" href=\"#first-translations\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Now let’s prepare the first translations. Copy and rename the base.pot into each language folder:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>cp locales\u002Fbase.pot locales\u002Fde\u002FLC_MESSAGES\u002Fbase.po\ncp locales\u002Fbase.pot locales\u002Fpl\u002FLC_MESSAGES\u002Fbase.po\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Let’s modify the individual language files:\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F92be749db6d7114ceb415f457d7417ef.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>To use translation in our program, we need to generate the MO files. MO files are binary data files that are parsed by the Python gettext module and used in the program.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>msgfmt -o locales\u002Fde\u002FLC_MESSAGES\u002Fbase.mo locales\u002Fde\u002FLC_MESSAGES\u002Fbase\nmsgfmt -o locales\u002Fpl\u002FLC_MESSAGES\u002Fbase.mo locales\u002Fpl\u002FLC_MESSAGES\u002Fbase\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Now we can modify the script to generate reports in different languages.\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002Fe304921e053b40d3925388561e28f49d.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>From now on, we will also pass the appropriate translation function to the \u003Ccode>generate_report\u003C\u002Fcode> function.\u003C\u002Fp>\n\u003Cp>Let’s test:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>python3 report.py sales.csv Warsaw 2019-01-04 pl\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F631c4f7a-d4ee-4c74-8a30-776ff6232da6\" alt=\"Data Report Example 2\">\u003C\u002Fp>\n\u003Cp>The sentence in the middle paragraph has been replaced! If we change the last parameter to \u003Ccode>de\u003C\u002Fcode>, we get a version in German.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fc6ec023e-e90d-4a6c-839a-de2b119e92bc\" alt=\"Data Report Example 3\">\u003C\u002Fp>\n\u003Cp>One sentence in the report translated, it’s time for the rest. The procedure is the same. Every time a string with a message appears in the source code, surround it with the function \u003Ccode>_(‘This is a string’)\u003C\u002Fcode>. Once this is done, generate the \u003Ca href=\"\u002Fdocs\u002Fcli\u002Fpo-format\">POT file\u003C\u002Fa> from the beginning, copy it to the locales of each language, translate it and generate the binary files.\u003C\u002Fp>\n\u003Ch2 id=\"but-hey-it-was-supposed-to-be-easier\" id=\"but-hey-it-was-supposed-to-be-easier\">🥺 But hey, it was supposed to be easier \u003Ca class=\"markdownit-header-anchor\" href=\"#but-hey-it-was-supposed-to-be-easier\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>So in the next iteration of our solution, we create two helper scripts (\u003Ccode>generate_po.sh\u003C\u002Fcode> and \u003Ccode>generate_mo.sh\u003C\u002Fcode>). You have all the changes here:\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u002Ftree\u002F004-gettext-generators\">https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u002Ftree\u002F004-gettext-generators\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Let’s check one of the language files:\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u002Fblob\u002F004-gettext-generators\u002Flocales\u002Fpl\u002FLC_MESSAGES\u002Fbase.po\">https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u002Fblob\u002F004-gettext-generators\u002Flocales\u002Fpl\u002FLC_MESSAGES\u002Fbase.po\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>As you can see, even a relatively simple report can result in a fairly significant number of labels to translate. Additionally, with each change, we would have to \u003Ca href=\"https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F7496156\u002Fgettext-how-to-update-po-and-pot-files-after-the-source-is-modified\">take care of merging the changes by using msgmerge\u003C\u002Fa>. But we will use something better.\u003C\u002Fp>\n\u003Ch2 id=\"integrating-localazy\" id=\"integrating-localazy\">🚀 Integrating Localazy \u003Ca class=\"markdownit-header-anchor\" href=\"#integrating-localazy\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Localazy is an awesome piece of software that makes the usually awful translation experience bearable and even almost enjoyable. It supports many frameworks and file formats and provides \u003Ca href=\"\u002Fdocs\u002Fcli\u002Fthe-basics\">CLI tools\u003C\u002Fa> for build automation. My favourite features are the possibility of cooperative translation and automagic management of changes in translated files.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fe3d24a92-49b6-4744-995d-a78c808c7eff\" alt=\"Localazy phrases example\">\u003C\u002Fp>\n\u003Cp>So let’s integrate our report with Localazy. First, \u003Ca href=\"\u002Fregister\">create a Localazy account\u003C\u002Fa> and install \u003Ca href=\"\u002Fdocs\u002Fcli\u002Finstallation\">Localazy CLI\u003C\u002Fa>. Then, create a new application.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F3b8788d8-4153-4c0c-8953-d43a98ebde0d\" alt=\"Localazy New App Screen\">\u003C\u002Fp>\n\u003Cp>Make sure to set the App Type to Private app. If your app does not contain sensitive data, you can safely leave it Public. However, we will set it to Private, for reasons described in the last section \u003Cem>“f-strings problem”\u003C\u002Fem> of this article. Then, select POT files from available file formats.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F12022210-d9a3-470b-915f-7ab44a932ad7\" alt=\"Localazy File Formats\">\u003C\u002Fp>\n\u003Cp>You will see a template configuration file \u003Ccode>localazy.json\u003C\u002Fcode>. Copy it to the project main folder.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F92e479e4-0c6a-4af3-abec-921e26e0eea1\" alt=\"Localazy Upload strings screen\">\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002Fcf911e1fadb26ce0575d7ebfd0ac5461.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>Remember to modify the locales folder path. Go to your app on Localazy and add some new languages.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fe2b638bb-3834-4a70-bdba-e82f6e1ea12b\" alt=\"Localazy add languages\">\u003C\u002Fp>\n\u003Cp>Now you can generate the PO files again and load them into Localazy:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>bash generate_po.sh\nlocalazy upload\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fcf3c8259-d629-4a7c-8644-de080a2b1054\" alt=\"Localazy CLI\">\u003C\u002Fp>\n\u003Cp>After a while, you will see a list of phrases to translate in each language of your application.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F855d0b70-a1ce-4c47-81b6-1bd7ff224a79\" alt=\"Localazy Polish language phrases\">\u003C\u002Fp>\n\u003Cp>And the cherry on the top, a \u003Ca href=\"\u002Fdictionary\u002Fmachine-translation\">machine translation\u003C\u002Fa> comes with each phrase.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F8a3c3d95-a947-43bc-99ca-2100b0682e45\" alt=\"Localazy Translate Screen\">\u003C\u002Fp>\n\u003Cp>Once all the translations have been accepted or created, you can download them into your application and re-generate binary MO files:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>localazy download\nbash generate_mo.sh\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fee6c472f-6081-4b87-9d06-bb931f783540\" alt=\"Localazy CLI 2\">\u003C\u002Fp>\n\u003Cp>Let’s check the report in Polish:\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F2064395b-d12e-43bc-8233-a7e70f7dd566\" alt=\"Report in Polish\">\u003C\u002Fp>\n\u003Cp>As someone with some understanding of Polish, I’d say it’s quite acceptable. Finally, let’s address one more issue.\u003C\u002Fp>\n\u003Ch2 id=\"f-strings-problem\" id=\"f-strings-problem\">⚠️ f-strings problem \u003Ca class=\"markdownit-header-anchor\" href=\"#f-strings-problem\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>The project uses f-strings quite extensively. Unfortunately, we cannot use them as arguments of \u003Ccode>_()\u003C\u002Fcode> function, gettext will return an error. The problem can be solved by changing f-strings to a \u003Ccode>.format()\u003C\u002Fcode> statements or string concatenations. But I like f-strings, and generating text reports is indeed a model case for using them. Fortunately, there is a \u003Ca href=\"https:\u002F\u002Fstackoverflow.com\u002Fa\u002F56264202\u002F13712137\">workaround\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F993e6fab4caf67af6c63281fe3cb8b67\">https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F993e6fab4caf67af6c63281fe3cb8b67\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>We just wrap the f-string in a function that evaluates it. However, there are potential risks associated with using the \u003Ccode>eval\u003C\u002Fcode> function, because it runs the code contained in the string. This is why we made the application in Localazy private, so as not to run unfiltered code from users.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fb8dd657c-25ae-43d7-859c-b46cb3de1ead\" alt=\"Localazy Placeholders\">\u003C\u002Fp>\n\u003Cp>Another limitation is that every time you need to change the expression inside the string, you’ll need to update your .po file as well. However, thanks to Localazy, it is effortless to do so.\u003C\u002Fp>\n\u003Ch2 id=\"takeaways\" id=\"takeaways\">🤓 Takeaways \u003Ca class=\"markdownit-header-anchor\" href=\"#takeaways\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>As you can see, the duo of Gettext and Localazy is a flexible solution to localization problems. Each addresses different sources of workload and they complement each other wonderfully.\u003C\u002Fp>\n\u003Cp>The f-string issue remains to be solved, especially in the context of community translations. It is also worth considering what to do with the labels that appear in the dataset.\u003C\u002Fp>\n\u003Cp>Thank you for reading. I hope you enjoyed reading as much as I enjoyed writing this for you.\u003C\u002Fp>\n\u003Cp>If you would like to share feedback or simply say ‘hello’, you can connect with me: \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Frafalrybnik\u002F\">https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Frafalrybnik\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>If you enjoyed reading this, you’ll probably enjoy my other articles too: \u003Ca href=\"https:\u002F\u002Ffischerbach.medium.com\">https:\u002F\u002Ffischerbach.medium.com\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch2 id=\"references\" id=\"references\">📚 References \u003Ca class=\"markdownit-header-anchor\" href=\"#references\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>GNU Gettext:\u003C\u002Fstrong>\n\u003Ca href=\"https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002F\">https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Localazy:\u003C\u002Fstrong>\n\u003Ca href=\"\u002F\">https:\u002F\u002Flocalazy.com\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Specification of PO files:\u003C\u002Fstrong>\n\u003Ca href=\"https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002Fmanual\u002Fhtml_node\u002FPO-Files.html\">https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002Fmanual\u002Fhtml_node\u002FPO-Files.html\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Other:\u003C\u002Fstrong>\n\u003Ca href=\"https:\u002F\u002Fpython-docx.readthedocs.io\u002Fen\u002Flatest\u002F#what-it-can-do\">https:\u002F\u002Fpython-docx.readthedocs.io\u002Fen\u002Flatest\u002F#what-it-can-do\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca rel=\"nofollow\" href=\"https:\u002F\u002Fphrase.com\u002Fblog\u002Fposts\u002Ftranslate-python-gnu-gettext\u002F\">https:\u002F\u002Fphrase.com\u002Fblog\u002Fposts\u002Ftranslate-python-gnu-gettext\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Fjavascript-app-localization-i18next-localazy\">https:\u002F\u002Flocalazy.com\u002Fblog\u002Fjavascript-app-localization-i18next-localazy\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>This post was originally published on \u003Ca href=\"https:\u002F\u002Ftowardsdatascience.com\u002Fhow-to-create-automatic-data-report-in-multiple-languages-2a53b6417d42\">Towardsdatascience.com\u003C\u002Fa> by \u003Cstrong>Rafał Rybnik\u003C\u002Fstrong>\u003C\u002Fp>\n\u003C!--kg-card-end: html-->",{"id":382,"status":6,"created_on":1919,"modified_on":1920,"icon":1921,"header":1922,"description":1923,"button_label":1924,"link":1925},"2022-03-17T12:23:03.000Z","2023-01-19T11:50:04.000Z","member","Automate your localization today! ⚙️","Translate your project in a breeze, utilize the advanced features and fully automate your localization process with Localazy! ","Join Localazy","register",{"slug":1865,"id":1858,"uuid":1927,"title":1864,"html":1928,"comment_id":1929,"feature_image":1868,"featured":16,"visibility":1930,"email_recipient_filter":1931,"created_at":1867,"updated_at":1866,"published_at":1867,"custom_excerpt":1916,"codeinjection_head":1932,"codeinjection_foot":13,"custom_template":1929,"canonical_url":13,"authors":1933,"tags":1937,"primary_author":1973,"primary_tag":1974,"url":1975,"excerpt":1916,"reading_time":58,"access":16,"send_email_when_published":14,"og_image":13,"og_title":13,"og_description":13,"twitter_image":13,"twitter_title":13,"twitter_description":13,"meta_title":13,"meta_description":13,"email_subject":13,"frontmatter":13,"dictionary":1878,"cta":1918,"plainTags":1869},"bcfc1d64-9bed-453c-93aa-97b326df8b3d","\u003C!--kg-card-begin: html-->\u003Cp>Word documents may seem a bit old school, but there are still cases when using them is the shortest route to this goal. Whenever automation is discussed, \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdictionary\u002Fpython\">Python\u003C\u002Fa> is a tool of choice. \u003C\u002Fp>\n\u003Cp>But everything’s all fun and games until other languages show up.\u003C\u002Fp>\n\u003Cp>In theory, preparing another language version does not seem complicated. After all, it is enough to translate individual labels and descriptions into another language and then hardcode them in the next version of the script. In practice, this simple approach is time-consuming and error-prone, especially when there is a constant need to modify some messages. Not to mention the difficulty of working with non-technical translators using this method.\u003C\u002Fp>\n\u003Cp>This article shows how to save time by translating the Python-generated data report by using \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdictionary\u002Fgnu-gettext\">Gettext\u003C\u002Fa> and Localazy. I’ll show you how to extract messages from the source code (Gettext), store them in separate files and how to make them available in a collaborative translation tool (Localazy). Also, you will learn how to deal with difficulties in translating f-strings.\u003C\u002Fp>\n\u003Ch2 id=\"why\" id=\"why\">🤔 Why? \u003Ca class=\"markdownit-header-anchor\" href=\"#why\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Imagine that you work in the analytics team at an international company that has 3 branches in different countries (England, Germany, Poland).\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Ff7754c1c-5c90-4465-b420-cd72939fea2e\" alt=\"Illustrative Map\">\u003C\u002Fp>\n\u003Cp>You have created an interesting descriptive report, the results of which can significantly improve the performance of each branch.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F0c46a22d-294e-4411-b2b7-61f17f364a48\" alt=\"Data Report Example\">\n\u003Cem>The report is generated in docs format for easy email distribuiton\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>You want it to reach the widest possible audience, but your company does not work exclusively in English. As your report is generated automatically once a day, having it translated manually into national languages every time is not an option.\u003C\u002Fp>\n\u003Cp>But if you can automate report generation, why not do the same with translation?\u003C\u002Fp>\n\u003Ch2 id=\"project-start\" id=\"project-start\">▶️ Project start \u003Ca class=\"markdownit-header-anchor\" href=\"#project-start\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>In the beginning, your project is one file with the main script and dataset in CSV format.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fa32dd24a-0e89-417c-a615-7252952b3a2b\" alt=\".py and .csv files\">\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F4fef8f69367fd7520ae9f89e33983070.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>The script is quite self-explanatory. Using the data loaded from the CSV file, it calculates various statistics, generates a bar chart and packs everything into a Word document. The usage of the script is simple. All you need to do is specify the city and the date.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fc49ee1eb-9067-46e8-8070-2eb801007af8\" alt=\"Command Line Picture\">\u003C\u002Fp>\n\u003Cp>\u003Cem>Note: This project is aimed at teaching localization of Python applications, so I’m skipping aspects like validating input variables or being interesting 😆\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>Perhaps, we could translate messages into other languages and use \u003Ccode>if\u003C\u002Fcode> statements to change them according to the user’s will, but this approach would be tedious and error-prone. Therefore we will first extract all strings from the code to work on them separately from the business logic.\u003C\u002Fp>\n\u003Ch2 id=\"gettext\" id=\"gettext\">📝 Gettext \u003Ca class=\"markdownit-header-anchor\" href=\"#gettext\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002F\">GNU gettext\u003C\u002Fa> is a universal set of tools for producing multi-lingual messages. It provides a framework to support translated message strings. It supports many programming languages \u003Cimg class=\"emoji\" draggable=\"false\" alt=\"😉\" src=\"https:\u002F\u002Ftwemoji.maxcdn.com\u002Fv\u002F13.0.2\u002F72x72\u002F1f609.png\"\u002F>, including Python. The gettext module comes shipped with Python standard library. The best thing about gettext is that it will help us seamlessly extract text messages into separate files.\u003C\u002Fp>\n\u003Cp>As our report is prepared for data from London, Warsaw and Berlin, we will prepare English, Polish and German language versions. First, we need to prepare the directory structure.\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F9b0607b0c33ac3e08db9fb1d3819f17f.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cpre>\u003Ccode>mkdir -p locales\u002F{de,pl}\u002FLC_MESSAGES\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Then, we should extract the messages from the code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>xgettext -d base -o locales\u002Fbase.pot\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Or, alternatively:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002FLibrary\u002FFrameworks\u002FPython.framework\u002FVersions\u002F3.8\u002Fshare\u002Fdoc\u002Fpython3.8\u002Fexamples\u002FTools\u002Fi18n\u002Fpygettext.py -d base -o locales\u002Fbase.pot report.py\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>To find the \u003Ccode>pygettext.py\u003C\u002Fcode> file, you can use the command: \u003Ccode>locate pygettext.py\u003C\u002Fcode> .\u003C\u002Fp>\n\u003Cp>\u003Cem>Note: using plain gettext command will force you to modify the result file by adding CHARSET header “Content-Type: text\u002Fplain; charset=UTF-8n”\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>That will generate in the \u003Ccode>locales\u003C\u002Fcode> folder a \u003Ccode>base.pot\u003C\u002Fcode> file with strings taken from the \u003Ccode>report.py\u003C\u002Fcode> file.\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F1e1d3f70498ac5b791329bfe60871aef.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>Unfortunately, as you can see, generated \u003Ccode>base.pot\u003C\u002Fcode> does not contain any strings. To fix this, we need to modify \u003Ccode>report.py\u003C\u002Fcode> by marking the messages for translation.\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F180bceeaedbea6bf2de5bc6700914dd4.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>After generating the \u003Ccode>base.pot\u003C\u002Fcode> again, two strings appear in it.\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F07ed29c6e846235f153a4de850472ee4.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>After this paragraph, the project should look like this:\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u002Ftree\u002F002-gettext\">https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u002Ftree\u002F002-gettext\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Use this repository: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\">https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u003C\u002Fa>\nThe branches contain the following steps discussed in this article.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F7e828fab-3070-4382-8042-6ef9279dff30\" alt=\"Project branches overview\">\u003C\u002Fp>\n\u003Ch2 id=\"first-translations\" id=\"first-translations\">🎉 First translations \u003Ca class=\"markdownit-header-anchor\" href=\"#first-translations\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Now let’s prepare the first translations. Copy and rename the base.pot into each language folder:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>cp locales\u002Fbase.pot locales\u002Fde\u002FLC_MESSAGES\u002Fbase.po\ncp locales\u002Fbase.pot locales\u002Fpl\u002FLC_MESSAGES\u002Fbase.po\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Let’s modify the individual language files:\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F92be749db6d7114ceb415f457d7417ef.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>To use translation in our program, we need to generate the MO files. MO files are binary data files that are parsed by the Python gettext module and used in the program.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>msgfmt -o locales\u002Fde\u002FLC_MESSAGES\u002Fbase.mo locales\u002Fde\u002FLC_MESSAGES\u002Fbase\nmsgfmt -o locales\u002Fpl\u002FLC_MESSAGES\u002Fbase.mo locales\u002Fpl\u002FLC_MESSAGES\u002Fbase\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Now we can modify the script to generate reports in different languages.\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002Fe304921e053b40d3925388561e28f49d.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>From now on, we will also pass the appropriate translation function to the \u003Ccode>generate_report\u003C\u002Fcode> function.\u003C\u002Fp>\n\u003Cp>Let’s test:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>python3 report.py sales.csv Warsaw 2019-01-04 pl\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F631c4f7a-d4ee-4c74-8a30-776ff6232da6\" alt=\"Data Report Example 2\">\u003C\u002Fp>\n\u003Cp>The sentence in the middle paragraph has been replaced! If we change the last parameter to \u003Ccode>de\u003C\u002Fcode>, we get a version in German.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fc6ec023e-e90d-4a6c-839a-de2b119e92bc\" alt=\"Data Report Example 3\">\u003C\u002Fp>\n\u003Cp>One sentence in the report translated, it’s time for the rest. The procedure is the same. Every time a string with a message appears in the source code, surround it with the function \u003Ccode>_(‘This is a string’)\u003C\u002Fcode>. Once this is done, generate the \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdocs\u002Fcli\u002Fpo-format\">POT file\u003C\u002Fa> from the beginning, copy it to the locales of each language, translate it and generate the binary files.\u003C\u002Fp>\n\u003Ch2 id=\"but-hey-it-was-supposed-to-be-easier\" id=\"but-hey-it-was-supposed-to-be-easier\">🥺 But hey, it was supposed to be easier \u003Ca class=\"markdownit-header-anchor\" href=\"#but-hey-it-was-supposed-to-be-easier\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>So in the next iteration of our solution, we create two helper scripts (\u003Ccode>generate_po.sh\u003C\u002Fcode> and \u003Ccode>generate_mo.sh\u003C\u002Fcode>). You have all the changes here:\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u002Ftree\u002F004-gettext-generators\">https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u002Ftree\u002F004-gettext-generators\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Let’s check one of the language files:\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u002Fblob\u002F004-gettext-generators\u002Flocales\u002Fpl\u002FLC_MESSAGES\u002Fbase.po\">https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fpython_localization_tutorial\u002Fblob\u002F004-gettext-generators\u002Flocales\u002Fpl\u002FLC_MESSAGES\u002Fbase.po\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>As you can see, even a relatively simple report can result in a fairly significant number of labels to translate. Additionally, with each change, we would have to \u003Ca href=\"https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F7496156\u002Fgettext-how-to-update-po-and-pot-files-after-the-source-is-modified\">take care of merging the changes by using msgmerge\u003C\u002Fa>. But we will use something better.\u003C\u002Fp>\n\u003Ch2 id=\"integrating-localazy\" id=\"integrating-localazy\">🚀 Integrating Localazy \u003Ca class=\"markdownit-header-anchor\" href=\"#integrating-localazy\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Localazy is an awesome piece of software that makes the usually awful translation experience bearable and even almost enjoyable. It supports many frameworks and file formats and provides \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdocs\u002Fcli\u002Fthe-basics\">CLI tools\u003C\u002Fa> for build automation. My favourite features are the possibility of cooperative translation and automagic management of changes in translated files.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fe3d24a92-49b6-4744-995d-a78c808c7eff\" alt=\"Localazy phrases example\">\u003C\u002Fp>\n\u003Cp>So let’s integrate our report with Localazy. First, \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fregister\">create a Localazy account\u003C\u002Fa> and install \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdocs\u002Fcli\u002Finstallation\">Localazy CLI\u003C\u002Fa>. Then, create a new application.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F3b8788d8-4153-4c0c-8953-d43a98ebde0d\" alt=\"Localazy New App Screen\">\u003C\u002Fp>\n\u003Cp>Make sure to set the App Type to Private app. If your app does not contain sensitive data, you can safely leave it Public. However, we will set it to Private, for reasons described in the last section \u003Cem>“f-strings problem”\u003C\u002Fem> of this article. Then, select POT files from available file formats.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F12022210-d9a3-470b-915f-7ab44a932ad7\" alt=\"Localazy File Formats\">\u003C\u002Fp>\n\u003Cp>You will see a template configuration file \u003Ccode>localazy.json\u003C\u002Fcode>. Copy it to the project main folder.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F92e479e4-0c6a-4af3-abec-921e26e0eea1\" alt=\"Localazy Upload strings screen\">\u003C\u002Fp>\n\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 460px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 400px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002Fcf911e1fadb26ce0575d7ebfd0ac5461.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\n\u003Cp>Remember to modify the locales folder path. Go to your app on Localazy and add some new languages.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fe2b638bb-3834-4a70-bdba-e82f6e1ea12b\" alt=\"Localazy add languages\">\u003C\u002Fp>\n\u003Cp>Now you can generate the PO files again and load them into Localazy:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>bash generate_po.sh\nlocalazy upload\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fcf3c8259-d629-4a7c-8644-de080a2b1054\" alt=\"Localazy CLI\">\u003C\u002Fp>\n\u003Cp>After a while, you will see a list of phrases to translate in each language of your application.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F855d0b70-a1ce-4c47-81b6-1bd7ff224a79\" alt=\"Localazy Polish language phrases\">\u003C\u002Fp>\n\u003Cp>And the cherry on the top, a \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdictionary\u002Fmachine-translation\">machine translation\u003C\u002Fa> comes with each phrase.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F8a3c3d95-a947-43bc-99ca-2100b0682e45\" alt=\"Localazy Translate Screen\">\u003C\u002Fp>\n\u003Cp>Once all the translations have been accepted or created, you can download them into your application and re-generate binary MO files:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>localazy download\nbash generate_mo.sh\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fee6c472f-6081-4b87-9d06-bb931f783540\" alt=\"Localazy CLI 2\">\u003C\u002Fp>\n\u003Cp>Let’s check the report in Polish:\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F2064395b-d12e-43bc-8233-a7e70f7dd566\" alt=\"Report in Polish\">\u003C\u002Fp>\n\u003Cp>As someone with some understanding of Polish, I’d say it’s quite acceptable. Finally, let’s address one more issue.\u003C\u002Fp>\n\u003Ch2 id=\"f-strings-problem\" id=\"f-strings-problem\">⚠️ f-strings problem \u003Ca class=\"markdownit-header-anchor\" href=\"#f-strings-problem\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>The project uses f-strings quite extensively. Unfortunately, we cannot use them as arguments of \u003Ccode>_()\u003C\u002Fcode> function, gettext will return an error. The problem can be solved by changing f-strings to a \u003Ccode>.format()\u003C\u002Fcode> statements or string concatenations. But I like f-strings, and generating text reports is indeed a model case for using them. Fortunately, there is a \u003Ca href=\"https:\u002F\u002Fstackoverflow.com\u002Fa\u002F56264202\u002F13712137\">workaround\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F993e6fab4caf67af6c63281fe3cb8b67\">https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F993e6fab4caf67af6c63281fe3cb8b67\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>We just wrap the f-string in a function that evaluates it. However, there are potential risks associated with using the \u003Ccode>eval\u003C\u002Fcode> function, because it runs the code contained in the string. This is why we made the application in Localazy private, so as not to run unfiltered code from users.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Fb8dd657c-25ae-43d7-859c-b46cb3de1ead\" alt=\"Localazy Placeholders\">\u003C\u002Fp>\n\u003Cp>Another limitation is that every time you need to change the expression inside the string, you’ll need to update your .po file as well. However, thanks to Localazy, it is effortless to do so.\u003C\u002Fp>\n\u003Ch2 id=\"takeaways\" id=\"takeaways\">🤓 Takeaways \u003Ca class=\"markdownit-header-anchor\" href=\"#takeaways\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>As you can see, the duo of Gettext and Localazy is a flexible solution to localization problems. Each addresses different sources of workload and they complement each other wonderfully.\u003C\u002Fp>\n\u003Cp>The f-string issue remains to be solved, especially in the context of community translations. It is also worth considering what to do with the labels that appear in the dataset.\u003C\u002Fp>\n\u003Cp>Thank you for reading. I hope you enjoyed reading as much as I enjoyed writing this for you.\u003C\u002Fp>\n\u003Cp>If you would like to share feedback or simply say ‘hello’, you can connect with me: \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Frafalrybnik\u002F\">https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Frafalrybnik\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>If you enjoyed reading this, you’ll probably enjoy my other articles too: \u003Ca href=\"https:\u002F\u002Ffischerbach.medium.com\">https:\u002F\u002Ffischerbach.medium.com\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch2 id=\"references\" id=\"references\">📚 References \u003Ca class=\"markdownit-header-anchor\" href=\"#references\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>GNU Gettext:\u003C\u002Fstrong>\n\u003Ca href=\"https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002F\">https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Localazy:\u003C\u002Fstrong>\n\u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002F\">https:\u002F\u002Flocalazy.com\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Specification of PO files:\u003C\u002Fstrong>\n\u003Ca href=\"https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002Fmanual\u002Fhtml_node\u002FPO-Files.html\">https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002Fmanual\u002Fhtml_node\u002FPO-Files.html\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Other:\u003C\u002Fstrong>\n\u003Ca href=\"https:\u002F\u002Fpython-docx.readthedocs.io\u002Fen\u002Flatest\u002F#what-it-can-do\">https:\u002F\u002Fpython-docx.readthedocs.io\u002Fen\u002Flatest\u002F#what-it-can-do\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca rel=\"nofollow\" href=\"https:\u002F\u002Fphrase.com\u002Fblog\u002Fposts\u002Ftranslate-python-gnu-gettext\u002F\">https:\u002F\u002Fphrase.com\u002Fblog\u002Fposts\u002Ftranslate-python-gnu-gettext\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Fjavascript-app-localization-i18next-localazy\">https:\u002F\u002Flocalazy.com\u002Fblog\u002Fjavascript-app-localization-i18next-localazy\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>This post was originally published on \u003Ca href=\"https:\u002F\u002Ftowardsdatascience.com\u002Fhow-to-create-automatic-data-report-in-multiple-languages-2a53b6417d42\">Towardsdatascience.com\u003C\u002Fa> by \u003Cstrong>Rafał Rybnik\u003C\u002Fstrong>\u003C\u002Fp>\n\u003C!--kg-card-end: html-->","87","public","none","{\"intercomArticleUrl\":\"\"}",[1934],{"id":1860,"name":1861,"slug":1862,"profile_image":1863,"cover_image":13,"bio":13,"website":13,"location":1935,"facebook":13,"twitter":13,"meta_title":13,"meta_description":13,"url":1936},"Warsaw, Poland","https:\u002F\u002Fghost.localazy.com\u002Fauthor\u002Frafal-rybnik\u002F",[1938,1944,1947,1950,1953,1958,1963,1968],{"id":1939,"name":1940,"slug":1941,"description":1942,"feature_image":13,"visibility":1930,"og_image":13,"og_title":13,"og_description":13,"twitter_image":13,"twitter_title":13,"twitter_description":13,"meta_title":13,"meta_description":13,"codeinjection_head":13,"codeinjection_foot":13,"canonical_url":13,"accent_color":13,"url":1943},"60a37fc7cf7b6a0001d1f11a","[CTA] Automate your localization today! ⚙️","cta-12","Use all core localization features for free and automate your localization process with Localazy!","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fcta-12\u002F",{"id":1945,"name":1005,"slug":1871,"description":1005,"feature_image":13,"visibility":1930,"og_image":13,"og_title":13,"og_description":13,"twitter_image":13,"twitter_title":13,"twitter_description":13,"meta_title":13,"meta_description":13,"codeinjection_head":13,"codeinjection_foot":13,"canonical_url":13,"accent_color":13,"url":1946},"60a37fc7cf7b6a0001d1f0d9","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Flocalazy\u002F",{"id":1948,"name":1873,"slug":1874,"description":1873,"feature_image":13,"visibility":1930,"og_image":13,"og_title":13,"og_description":13,"twitter_image":13,"twitter_title":13,"twitter_description":13,"meta_title":13,"meta_description":13,"codeinjection_head":13,"codeinjection_foot":13,"canonical_url":13,"accent_color":13,"url":1949},"60a37fc7cf7b6a0001d1f0fa","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fhowto\u002F",{"id":1951,"name":1876,"slug":1877,"description":1876,"feature_image":13,"visibility":1930,"og_image":13,"og_title":13,"og_description":13,"twitter_image":13,"twitter_title":13,"twitter_description":13,"meta_title":13,"meta_description":13,"codeinjection_head":13,"codeinjection_foot":13,"canonical_url":13,"accent_color":13,"url":1952},"60a37fc7cf7b6a0001d1f101","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fautomated-localization\u002F",{"id":1954,"name":1955,"slug":1956,"description":1883,"feature_image":13,"visibility":1930,"og_image":13,"og_title":13,"og_description":13,"twitter_image":13,"twitter_title":13,"twitter_description":13,"meta_title":13,"meta_description":13,"codeinjection_head":13,"codeinjection_foot":13,"canonical_url":13,"accent_color":13,"url":1957},"60a37fc7cf7b6a0001d1f12a","[DICT] Machine translation (MT)","term-13","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-13\u002F",{"id":1959,"name":1960,"slug":1961,"description":1898,"feature_image":13,"visibility":1930,"og_image":13,"og_title":13,"og_description":13,"twitter_image":13,"twitter_title":13,"twitter_description":13,"meta_title":13,"meta_description":13,"codeinjection_head":13,"codeinjection_foot":13,"canonical_url":13,"accent_color":13,"url":1962},"60a37fc7cf7b6a0001d1f176","[DICT] GNU gettext","term-89","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-89\u002F",{"id":1964,"name":1965,"slug":1966,"description":13,"feature_image":13,"visibility":1930,"og_image":13,"og_title":13,"og_description":13,"twitter_image":13,"twitter_title":13,"twitter_description":13,"meta_title":13,"meta_description":13,"codeinjection_head":13,"codeinjection_foot":13,"canonical_url":13,"accent_color":13,"url":1967},"60fffb486f8ebe0001bd8ddd","[COMSHARE]","comshare","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fcomshare\u002F",{"id":1969,"name":1970,"slug":1971,"description":13,"feature_image":13,"visibility":1930,"og_image":13,"og_title":13,"og_description":13,"twitter_image":13,"twitter_title":13,"twitter_description":13,"meta_title":13,"meta_description":13,"codeinjection_head":13,"codeinjection_foot":13,"canonical_url":13,"accent_color":13,"url":1972},"64710a2f047091000193ca3d","[INTERCOM]","intercom","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fintercom\u002F",{"id":1860,"name":1861,"slug":1862,"profile_image":1863,"cover_image":13,"bio":13,"website":13,"location":1935,"facebook":13,"twitter":13,"meta_title":13,"meta_description":13,"url":1936},{"id":1939,"name":1940,"slug":1941,"description":1942,"feature_image":13,"visibility":1930,"og_image":13,"og_title":13,"og_description":13,"twitter_image":13,"twitter_title":13,"twitter_description":13,"meta_title":13,"meta_description":13,"codeinjection_head":13,"codeinjection_foot":13,"canonical_url":13,"accent_color":13,"url":1943},"https:\u002F\u002Fghost.localazy.com\u002Fautomatic-data-reports-multiple-languages-python-gettext-localazy\u002F",[1977,1994,2012],{"id":1978,"owner":1979,"created_by":13,"sort":13,"title":1980,"slug":1981,"modified_on":1171,"created_on":1982,"pinned":14,"badge":13,"priority":1824,"main_image":1983,"status":6,"tags":1984,"dictionary":1993,"reading_time":1835,"excerpt":-1,"og_title":1171,"og_description":1171,"og_image":1171},"633ad643fe956a000108a63d",{"id":1817,"first_name":1818,"last_name":1171,"slug":1819,"avatar":1820},"The ultimate guide to Localazy translation services","guide-localazy-translation-services","2022-10-14T10:21:57.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2022\u002F10\u002FCLT-services.png",[1985,1986,1989,1990],{"id":68,"created_on":1828,"status":6,"label":1853,"slug":1854,"on_index_page":14},{"id":68,"created_on":1828,"status":6,"label":1987,"slug":1988,"on_index_page":14},"Continuous Localization","continuous-localization",{"id":68,"created_on":1828,"status":6,"label":1005,"slug":1871,"on_index_page":14},{"id":68,"created_on":1828,"status":6,"label":1991,"slug":1992,"on_index_page":14},"Guide","guide",[],{"id":1995,"owner":1996,"created_by":13,"sort":13,"title":2001,"slug":2002,"modified_on":1171,"created_on":2003,"pinned":14,"badge":13,"priority":1824,"main_image":2004,"status":6,"tags":2005,"dictionary":2011,"reading_time":1835,"excerpt":-1,"og_title":1171,"og_description":1171,"og_image":1171},"62135cb7df4bcb00010be0df",{"id":1997,"first_name":1998,"last_name":1171,"slug":1999,"avatar":2000},"61dc4f36df4bcb00010bd510","Gletjan Muco","gletjan-muco","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F09\u002FProfile-Pic---Blue-Background.jpeg","12 reasons why Localazy is better than spreadsheets for localization projects","12-reasons-why-localazy-is-better-than-spreadsheets-for-localization-projects","2022-03-17T01:20:26.000+01:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2022\u002F03\u002FLocalazy-better-than-Spreadsheets.png",[2006,2007,2008],{"id":68,"created_on":1828,"status":6,"label":1876,"slug":1877,"on_index_page":14},{"id":68,"created_on":1828,"status":6,"label":1005,"slug":1871,"on_index_page":14},{"id":68,"created_on":1828,"status":6,"label":2009,"slug":2010,"on_index_page":14},"Tip","tip",[],{"id":2013,"owner":2014,"created_by":13,"sort":13,"title":2019,"slug":2020,"modified_on":1171,"created_on":2021,"pinned":14,"badge":13,"priority":1824,"main_image":2022,"status":6,"tags":2023,"dictionary":2033,"reading_time":1835,"excerpt":-1,"og_title":1171,"og_description":1171,"og_image":1171},"6372308e04709100019374c9",{"id":2015,"first_name":2016,"last_name":1171,"slug":2017,"avatar":2018},"6061ffdd2a37af00016d413d","Daniel Charvát","daniel-charvat","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Fdan-1.png","Figma in Localization: Figma as a Source of Truth","figma-series-figma-as-source-of-truth","2023-02-08T20:43:55.000+01:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F01\u002FFigma-Series-3.png",[2024,2026,2027,2030],{"id":2025,"created_on":1828,"status":6,"label":940,"slug":941,"on_index_page":16},6183,{"id":68,"created_on":1828,"status":6,"label":1873,"slug":1874,"on_index_page":14},{"id":68,"created_on":1828,"status":6,"label":2028,"slug":2029,"on_index_page":16},"DevTips","devtips",{"id":110,"created_on":1828,"status":6,"label":2031,"slug":2032,"on_index_page":14},"Design","design",[],{"id":142,"sort":13,"created_on":2035,"name":2036,"cta_link":2037,"banner_image":2038},"2022-03-17T12:23:14.000Z","default","https:\u002F\u002Flocalazy.com\u002Ffeatures\u002Flocalazy-ai",{"id":2039},"72defd59-a21d-44b9-822c-4e183ca62b99"]