[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-integrations":3,"footer-settings":1000,"main-navigation":1130,"footer-homepage":1747,"blog-post-nav-nav":1814,"blog-post-nav-[USE LATEST FEATURED]":1836,"blog-how-to-build-a-multi-language-dashboard-with-streamlit":1850},[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",[1131,1312,1522,1623,1742,1744],{"id":30,"name":1132,"url":13,"url_text":13,"status":6,"groups":1133},"Solutions",[1134,1143,1210,1242],{"navigation_items_group_id":1135},{"id":15,"sort":29,"status":6,"name":1136,"render_show_all_url":14,"show_all_url_position":1137,"show_favorite_icon":16,"show_all_url":13,"represent_as_tile":14,"items":1138},"Featured Article","top",[1139],{"collection":1140,"item":1141},"blog_post_navigation_item_type",{"id":73,"status":6,"sort":13,"show_author_img":16,"blog_post_tag":1142,"description":13},"nav",{"navigation_items_group_id":1144},{"id":29,"sort":142,"status":6,"name":1145,"render_show_all_url":14,"show_all_url_position":1137,"show_favorite_icon":14,"show_all_url":1146,"represent_as_tile":16,"items":1147},"Your Role","\u002Froles",[1148,1160,1170,1180,1190,1200],{"collection":1149,"item":1150},"relation_navigation_item_type",{"id":142,"status":6,"sort":13,"name":1151,"item":1152},"CMO",[1153],{"collection":1154,"item":1155},"personas",{"id":142,"status":6,"sort":13,"slug":1156,"icon":1157},"chief-marketing-officers",{"id":1158,"title":1159},"526097d8-176f-48e5-83d3-2fc4d77061f9","La Mail Bulk",{"collection":1149,"item":1161},{"id":15,"status":6,"sort":13,"name":1162,"item":1163},"CTO",[1164],{"collection":1154,"item":1165},{"id":73,"status":6,"sort":13,"slug":1166,"icon":1167},"chief-technical-officers",{"id":1168,"title":1169},"f808fdf0-c78b-4294-ba59-fe25f46fe825","La Mechanic",{"collection":1149,"item":1171},{"id":472,"status":6,"sort":13,"name":1172,"item":1173},"Product Manager",[1174],{"collection":1154,"item":1175},{"id":858,"status":6,"sort":13,"slug":1176,"icon":1177},"product-managers",{"id":1178,"title":1179},"ea39586a-21fc-4b34-ba87-496028e5198f","La Worker",{"collection":1149,"item":1181},{"id":151,"status":6,"sort":13,"name":1182,"item":1183},"Translator",[1184],{"collection":1154,"item":1185},{"id":472,"status":6,"sort":13,"slug":1186,"icon":1187},"professional-translators",{"id":1188,"title":1189},"07945171-d51d-4ca8-96c0-21cde9db258f","La Chat",{"collection":1149,"item":1191},{"id":128,"status":6,"sort":13,"name":1192,"item":1193},"Developer",[1194],{"collection":1154,"item":1195},{"id":321,"status":6,"sort":13,"slug":1196,"icon":1197},"software-developers",{"id":1198,"title":1199},"1806e46d-c551-4845-bf42-4407344d229e","La Terminal",{"collection":1149,"item":1201},{"id":746,"status":6,"sort":13,"name":1202,"item":1203},"Localization Manager",[1204],{"collection":1154,"item":1205},{"id":74,"status":6,"sort":13,"slug":1206,"icon":1207},"localization-managers",{"id":1208,"title":1209},"dac69bd1-bf5d-41d0-87d4-dd13e314698a","La Language",{"navigation_items_group_id":1211},{"id":59,"sort":15,"status":6,"name":1212,"render_show_all_url":14,"show_all_url_position":1213,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1214},"Use cases","bottom",[1215,1220,1224,1229,1233,1238],{"collection":1216,"item":1217},"simple_link_navigation_item_type",{"id":652,"status":6,"sort":13,"url":1218,"url_text":1219,"show_favorite_icon":14},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fsoftware-localization","Software localization",{"collection":1216,"item":1221},{"id":740,"status":6,"sort":13,"url":1222,"url_text":1223,"show_favorite_icon":14},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fmobile-app-localization","Mobile app localization",{"collection":1216,"item":1225},{"id":1226,"status":6,"sort":13,"url":1227,"url_text":1228,"show_favorite_icon":14},25,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fwebsite-localization","Website localization",{"collection":1216,"item":1230},{"id":746,"status":6,"sort":13,"url":1231,"url_text":1232,"show_favorite_icon":14},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fdesign-localization","Design localization",{"collection":1216,"item":1234},{"id":1235,"status":6,"sort":13,"url":1236,"url_text":1237,"show_favorite_icon":14},28,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fgame-localization","Game localization",{"collection":1216,"item":1239},{"id":986,"status":6,"sort":13,"url":1240,"url_text":1241,"show_favorite_icon":14},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fhelp-and-docs-localization","Help & docs localization",{"navigation_items_group_id":1243},{"id":58,"sort":30,"status":6,"name":1244,"render_show_all_url":14,"show_all_url_position":1213,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1245},"Industry",[1246,1256,1266,1275,1285,1294,1305],{"collection":1149,"item":1247},{"id":982,"status":6,"sort":13,"name":1248,"item":1249},"Digital Agencies",[1250],{"collection":1154,"item":1251},{"id":295,"status":6,"sort":13,"slug":1252,"icon":1253},"digital-agencies",{"id":1254,"title":1255},"547f5619-b21d-4b29-86f1-8b2200313cde","La Digi Agency",{"collection":1149,"item":1257},{"id":97,"status":6,"sort":13,"name":1258,"item":1259},"Startups & SaaS",[1260],{"collection":1154,"item":1261},{"id":30,"status":6,"sort":13,"slug":1262,"icon":1263},"startups",{"id":1264,"title":1265},"da1516e2-4afc-40a2-bcbf-a8161e2d610d","La Saa S",{"collection":1149,"item":1267},{"id":30,"status":6,"sort":13,"name":872,"item":1268},[1269],{"collection":1154,"item":1270},{"id":29,"status":6,"sort":13,"slug":1271,"icon":1272},"e-commerce",{"id":1273,"title":1274},"a3d09cd2-054f-4bb5-a0a2-d3d207db65df","La Ecommerce",{"collection":1149,"item":1276},{"id":181,"status":6,"sort":13,"name":1277,"item":1278},"FinTech Platforms",[1279],{"collection":1154,"item":1280},{"id":746,"status":6,"sort":13,"slug":1281,"icon":1282},"fintech",{"id":1283,"title":1284},"147339ba-07d1-4e5e-baad-23d27e60c919","La Money",{"collection":1149,"item":1286},{"id":652,"status":6,"sort":13,"name":1287,"item":1288},"Translation Agencies",[1289],{"collection":1154,"item":1290},{"id":652,"status":6,"sort":13,"slug":1291,"icon":1292},"translation-agencies",{"id":1293,"title":1209},"15d6fe33-2af8-4d6e-933d-5caa64394511",{"collection":1149,"item":1295},{"id":1296,"status":6,"sort":13,"name":1297,"item":1298},22,"Travel & Tourism",[1299],{"collection":1154,"item":1300},{"id":15,"status":6,"sort":13,"slug":1301,"icon":1302},"tourism",{"id":1303,"title":1304},"23a785e8-0ae5-4c4b-8452-aab1b58182a6","La Travel",{"collection":1149,"item":1306},{"id":1226,"status":6,"sort":13,"name":1307,"item":1308},"Nonprofit Causes",[1309],{"collection":1154,"item":1310},{"id":1235,"status":6,"sort":13,"slug":1311,"icon":13},"nonprofit",{"id":29,"name":1313,"url":13,"url_text":13,"status":6,"groups":1314},"Features",[1315,1374,1425,1471],{"navigation_items_group_id":1316},{"id":844,"sort":74,"status":6,"name":1317,"render_show_all_url":14,"show_all_url_position":1137,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1318},"Localization",[1319,1327,1335,1342,1349,1353,1360,1367],{"collection":1149,"item":1320},{"id":494,"status":6,"sort":13,"name":1321,"item":1322},"Localization services",[1323],{"collection":1324,"item":1325},"products",{"id":59,"status":6,"slug":1326},"continuous-localization-team",{"collection":1149,"item":1328},{"id":39,"status":6,"sort":13,"name":1329,"item":1330},"Translation management",[1331],{"collection":1332,"item":1333},"term_landing_page",{"id":986,"status":6,"slug":1334},"translation-management-system",{"collection":1149,"item":1336},{"id":155,"status":6,"sort":13,"name":1337,"item":1338},"Context Screenshots",[1339],{"collection":1324,"item":1340},{"id":1053,"status":6,"slug":1341},"context-screenshots-ocr",{"collection":1149,"item":1343},{"id":132,"status":6,"sort":13,"name":1344,"item":1345},"Translation Glossary",[1346],{"collection":1324,"item":1347},{"id":859,"status":6,"slug":1348},"glossary",{"collection":1216,"item":1350},{"id":73,"status":6,"sort":13,"url":1351,"url_text":1352,"show_favorite_icon":14},"\u002Fdocs\u002Fgeneral\u002Freviewing-translations","Quality control",{"collection":1149,"item":1354},{"id":677,"status":6,"sort":13,"name":1355,"item":1356},"Connected Projects",[1357],{"collection":1324,"item":1358},{"id":142,"status":6,"slug":1359},"connected-projects",{"collection":1149,"item":1361},{"id":106,"status":6,"sort":13,"name":1362,"item":1363},"Plural handling",[1364],{"collection":1324,"item":1365},{"id":322,"status":6,"slug":1366},"plurals",{"collection":1149,"item":1368},{"id":110,"status":6,"sort":13,"name":1369,"item":1370},"Style guides",[1371],{"collection":1324,"item":1372},{"id":128,"status":6,"slug":1373},"style-guide",{"navigation_items_group_id":1375},{"id":382,"sort":295,"status":6,"name":1376,"render_show_all_url":14,"show_all_url_position":1137,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1377},"Translation",[1378,1385,1392,1396,1403,1410,1418],{"collection":1149,"item":1379},{"id":549,"status":6,"sort":13,"name":1380,"item":1381},"Professional translations",[1382],{"collection":1332,"item":1383},{"id":321,"status":6,"slug":1384},"professional-translation-services",{"collection":1149,"item":1386},{"id":901,"status":6,"sort":13,"name":1387,"item":1388},"Crowdsourced translations",[1389],{"collection":1324,"item":1390},{"id":58,"status":6,"slug":1391},"share-tm",{"collection":1216,"item":1393},{"id":29,"status":6,"sort":13,"url":1394,"url_text":1395,"show_favorite_icon":14},"\u002Fdocs\u002Fgeneral\u002Ftranslating-strings","Translation interface",{"collection":1149,"item":1397},{"id":157,"status":6,"sort":13,"name":1398,"item":1399},"Machine translations",[1400],{"collection":1324,"item":1401},{"id":29,"status":6,"slug":1402},"machine-translation",{"collection":1149,"item":1404},{"id":68,"status":6,"sort":13,"name":1405,"item":1406},"Localazy AI translation",[1407],{"collection":1324,"item":1408},{"id":986,"status":6,"slug":1409},"localazy-ai",{"collection":1149,"item":1411},{"id":1412,"status":6,"sort":13,"name":1413,"item":1414},61,"Translation Memory",[1415],{"collection":1324,"item":1416},{"id":463,"status":6,"slug":1417},"translation-memory",{"collection":1149,"item":1419},{"id":400,"status":6,"sort":13,"name":1420,"item":1421},"Code & placeholders",[1422],{"collection":1324,"item":1423},{"id":321,"status":6,"slug":1424},"code-and-placeholders",{"navigation_items_group_id":1426},{"id":1053,"sort":58,"status":6,"name":1427,"render_show_all_url":14,"show_all_url_position":1137,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1428},"Management",[1429,1433,1440,1448,1456,1463,1467],{"collection":1216,"item":1430},{"id":58,"status":6,"sort":13,"url":1431,"url_text":1432,"show_favorite_icon":14},"\u002Fdocs\u002Fgeneral\u002Fdefining-user-roles","User roles",{"collection":1149,"item":1434},{"id":101,"status":6,"sort":13,"name":1435,"item":1436},"Duplicity Linking",[1437],{"collection":1324,"item":1438},{"id":181,"status":6,"slug":1439},"duplicity-linking",{"collection":1149,"item":1441},{"id":1442,"status":6,"sort":13,"name":1443,"item":1444},52,"Language Permissions",[1445],{"collection":1324,"item":1446},{"id":554,"status":6,"slug":1447},"language-permissions",{"collection":1149,"item":1449},{"id":65,"status":1450,"sort":13,"name":1451,"item":1452},"draft","Automations",[1453],{"collection":1324,"item":1454},{"id":472,"status":6,"slug":1455},"automations",{"collection":1149,"item":1457},{"id":904,"status":6,"sort":13,"name":1458,"item":1459},"Branching",[1460],{"collection":1324,"item":1461},{"id":746,"status":6,"slug":1462},"branching",{"collection":1216,"item":1464},{"id":554,"status":1450,"sort":13,"url":1465,"url_text":1466,"show_favorite_icon":14},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fsso-configuration","SSO",{"collection":1216,"item":1468},{"id":1296,"status":1450,"sort":13,"url":1469,"url_text":1470,"show_favorite_icon":14},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Flanguage-statistics","Reporting",{"navigation_items_group_id":1472},{"id":1065,"sort":59,"status":6,"name":1473,"render_show_all_url":14,"show_all_url_position":1137,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1474},"Development",[1475,1481,1487,1494,1501,1508,1515],{"collection":1149,"item":1476},{"id":986,"status":6,"sort":13,"name":1044,"item":1477},[1478],{"collection":1324,"item":1479},{"id":844,"status":6,"slug":1480},"translation-api",{"collection":1149,"item":1482},{"id":5,"status":6,"sort":13,"name":1483,"item":1484},"Localazy CLI",[1485],{"collection":1324,"item":1486},{"id":295,"status":6,"slug":145},{"collection":1149,"item":1488},{"id":322,"status":6,"sort":13,"name":1489,"item":1490},"Language CDN",[1491],{"collection":1324,"item":1492},{"id":73,"status":6,"slug":1493},"language-cdn",{"collection":1149,"item":1495},{"id":1235,"status":6,"sort":13,"name":1496,"item":1497},"Releases",[1498],{"collection":1324,"item":1499},{"id":74,"status":6,"slug":1500},"releases",{"collection":1149,"item":1502},{"id":965,"status":1450,"sort":13,"name":1503,"item":1504},"Format Conversions",[1505],{"collection":1324,"item":1506},{"id":30,"status":6,"slug":1507},"format-conversions",{"collection":1149,"item":1509},{"id":47,"status":6,"sort":13,"name":1510,"item":1511},"Webhooks",[1512],{"collection":1324,"item":1513},{"id":375,"status":6,"slug":1514},"webhooks",{"collection":1149,"item":1516},{"id":499,"status":6,"sort":13,"name":1517,"item":1518},"Export Aliases",[1519],{"collection":1324,"item":1520},{"id":5,"status":6,"slug":1521},"export-aliases",{"id":73,"name":1057,"url":13,"url_text":13,"status":6,"groups":1523},[1524,1613],{"navigation_items_group_id":1525},{"id":295,"sort":393,"status":6,"name":1526,"render_show_all_url":14,"show_all_url_position":1137,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1527},"Most popular",[1528],{"collection":1149,"item":1529},{"id":382,"status":6,"sort":13,"name":1057,"item":1530},[1531,1539,1546,1550,1554,1560,1564,1571,1575,1579,1583,1587,1591,1598,1605],{"collection":1532,"item":1533},"platforms",{"id":74,"status":6,"sort":142,"slug":1534,"name":1535,"icon":1536},"android","Android",{"id":1537,"title":1538},"ff965add-53b0-44ad-b27c-ea4ef641d384","Ic Outline Android",{"collection":1532,"item":1540},{"id":295,"status":6,"sort":30,"slug":1541,"name":1542,"icon":1543},"ios","iOS",{"id":1544,"title":1545},"886285d7-816a-4430-b5a5-edfe307b238e","Ios",{"collection":1532,"item":1547},{"id":5,"status":6,"sort":15,"slug":10,"name":9,"icon":1548},{"id":25,"title":1549},"Logos React",{"collection":1532,"item":1551},{"id":181,"status":6,"sort":73,"slug":184,"name":183,"icon":1552},{"id":191,"title":1553},"Vue",{"collection":1532,"item":1555},{"id":1072,"status":6,"sort":29,"slug":1556,"name":1557,"icon":1558},"angular","Angular",{"id":1559,"title":1557},"2a31a97a-48c5-4531-aa36-41c9dd0bdbef",{"collection":1532,"item":1561},{"id":142,"status":6,"sort":74,"slug":265,"name":264,"icon":1562},{"id":279,"title":1563},"Logos Flutter",{"collection":1532,"item":1565},{"id":15,"status":6,"sort":844,"slug":1566,"name":1567,"icon":1568},"typescript","TypeScript",{"id":1569,"title":1570},"8d1319b5-8a96-4199-8407-00add3418b1f","Logos Typescript Icon",{"collection":1532,"item":1572},{"id":375,"status":6,"sort":382,"slug":379,"name":378,"icon":1573},{"id":389,"title":1574},"Logos Javascript",{"collection":1532,"item":1576},{"id":382,"status":6,"sort":472,"slug":22,"name":470,"icon":1577},{"id":484,"title":1578},"Logos Json",{"collection":1532,"item":1580},{"id":554,"status":6,"sort":554,"slug":557,"name":556,"icon":1581},{"id":572,"title":1582},"Format",{"collection":1532,"item":1584},{"id":829,"status":6,"sort":836,"slug":833,"name":832,"icon":1585},{"id":840,"title":1586},"Strapi Logo Purple",{"collection":1532,"item":1588},{"id":68,"status":6,"sort":157,"slug":941,"name":940,"icon":1589},{"id":949,"title":1590},"Figma Icon",{"collection":1532,"item":1592},{"id":101,"status":6,"sort":132,"slug":1593,"name":1594,"icon":1595},"microsoft-excel","Microsoft Excel",{"id":1596,"title":1597},"7a175955-7b96-4561-939f-a0e1924faa40","Excel",{"collection":1532,"item":1599},{"id":112,"status":6,"sort":1412,"slug":1600,"name":1601,"icon":1602},"github-actions","GitHub Actions",{"id":1603,"title":1604},"da17554f-ac6d-443d-9bac-1f29645ec1c6","Github Icon",{"collection":1532,"item":1606},{"id":1607,"status":6,"sort":1608,"slug":1609,"name":1610,"icon":1611},97,999,"webflow","Webflow",{"id":1612,"title":1610},"ff43a386-52f8-499f-b77c-ab9a30f4a77e",{"navigation_items_group_id":1614},{"id":73,"sort":844,"status":6,"name":1615,"render_show_all_url":14,"show_all_url_position":1137,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1616},"Explore more",[1617],{"collection":1618,"item":1619},"text_link_navigation_item_type",{"id":142,"status":6,"sort":13,"text":1620,"url":1621,"url_text":1622},"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":1624},[1625,1649,1655],{"navigation_items_group_id":1626},{"id":142,"sort":382,"status":6,"name":1627,"render_show_all_url":14,"show_all_url_position":1137,"show_favorite_icon":14,"show_all_url":13,"represent_as_tile":14,"items":1628},"Helpful Links",[1629,1632,1634,1638,1640,1643,1645],{"collection":1216,"item":1630},{"id":1053,"status":6,"sort":13,"url":1080,"url_text":1631,"show_favorite_icon":16},"Localazy Blog",{"collection":1216,"item":1633},{"id":1065,"status":6,"sort":13,"url":978,"url_text":1066,"show_favorite_icon":16},{"collection":1216,"item":1635},{"id":142,"status":6,"sort":13,"url":1636,"url_text":1637,"show_favorite_icon":14},"https:\u002F\u002Fdiscuss.localazy.com\u002F","Discussion Forum",{"collection":1216,"item":1639},{"id":382,"status":6,"sort":13,"url":1074,"url_text":1073,"show_favorite_icon":14},{"collection":1216,"item":1641},{"id":15,"status":6,"sort":13,"url":1023,"url_text":1642,"show_favorite_icon":14},"Become a Partner",{"collection":1216,"item":1644},{"id":1068,"status":6,"sort":13,"url":1083,"url_text":1082,"show_favorite_icon":14},{"collection":1216,"item":1646},{"id":859,"status":6,"sort":13,"url":1647,"url_text":1648,"show_favorite_icon":14},"\u002Ftags\u002Frelease-update","Release Updates",{"navigation_items_group_id":1650},{"id":30,"sort":1065,"status":6,"name":1631,"render_show_all_url":16,"show_all_url_position":1137,"show_favorite_icon":14,"show_all_url":1080,"represent_as_tile":14,"items":1651},[1652],{"collection":1140,"item":1653},{"id":15,"status":6,"sort":13,"show_author_img":14,"blog_post_tag":1654,"description":13},"[USE LATEST FEATURED]",{"navigation_items_group_id":1656},{"id":74,"sort":1053,"status":6,"name":1066,"render_show_all_url":16,"show_all_url_position":1137,"show_favorite_icon":14,"show_all_url":978,"represent_as_tile":14,"items":1657},[1658,1672,1683,1692,1703,1713,1724,1732],{"collection":1149,"item":1659},{"id":73,"status":6,"sort":13,"name":1660,"item":1661},"General",[1662],{"collection":1663,"item":1664},"docs_section",{"id":30,"status":6,"sort":142,"slug":1665,"name":1660,"icon":1666,"featured_icon":1669},"general",{"id":1667,"title":1668},"423101f1-308c-42f1-8dfe-53272019e7cb","Global",{"id":1670,"title":1671},"0f7ca4cb-dc3b-4f62-b476-132ed5c4931f","General Doc",{"collection":1149,"item":1673},{"id":29,"status":6,"sort":13,"name":144,"item":1674},[1675],{"collection":1663,"item":1676},{"id":15,"status":6,"sort":30,"slug":145,"name":144,"icon":1677,"featured_icon":1680},{"id":1678,"title":1679},"2f7a4573-8265-4d76-8d55-ce0cc79b8983","Cli",{"id":1681,"title":1682},"3f76ff7b-0e74-4046-bb03-4ca99c3b66d5","Doc Cat Cli",{"collection":1149,"item":1684},{"id":58,"status":6,"sort":13,"name":75,"item":1685},[1686],{"collection":1663,"item":1687},{"id":472,"status":6,"sort":15,"slug":76,"name":75,"icon":1688,"featured_icon":1689},{"id":1678,"title":1679},{"id":1690,"title":1691},"20866781-e69b-4e01-9456-05437487b75c","API Doc",{"collection":1149,"item":1693},{"id":43,"status":6,"sort":13,"name":1694,"item":1695},"CDN",[1696],{"collection":1663,"item":1697},{"id":740,"status":6,"sort":73,"slug":1698,"name":1694,"icon":1699,"featured_icon":1700},"cdn",{"id":1667,"title":1668},{"id":1701,"title":1702},"a8ee9cb7-4e02-41f0-b595-eb518c3085b6","Doc Cat Cdn",{"collection":1149,"item":1704},{"id":74,"status":6,"sort":13,"name":1535,"item":1705},[1706],{"collection":1663,"item":1707},{"id":142,"status":6,"sort":29,"slug":1534,"name":1535,"icon":1708,"featured_icon":1710},{"id":1709,"title":1535},"fb8329ae-0c0c-4fbc-bcdc-83f2eeda1039",{"id":1711,"title":1712},"f7c0dec8-5b42-4943-ab3a-e3665723ad6f","Doc Cat Android",{"collection":1149,"item":1714},{"id":295,"status":6,"sort":13,"name":1542,"item":1715},[1716],{"collection":1663,"item":1717},{"id":73,"status":6,"sort":74,"slug":1541,"name":1542,"icon":1718,"featured_icon":1721},{"id":1719,"title":1720},"289e136c-55df-4d51-847b-1782a2308ee4","Ios Blue",{"id":1722,"title":1723},"2968d3f0-14b5-4427-82e7-f1ea2de17846","Doc Cat Ios",{"collection":1149,"item":1725},{"id":59,"status":6,"sort":13,"name":940,"item":1726},[1727],{"collection":1663,"item":1728},{"id":554,"status":6,"sort":295,"slug":941,"name":940,"icon":1729,"featured_icon":1730},{"id":1678,"title":1679},{"id":1731,"title":940},"f5e66b5b-a439-47f6-af4a-6ad261de2e87",{"collection":1149,"item":1733},{"id":393,"status":6,"sort":13,"name":832,"item":1734},[1735],{"collection":1663,"item":1736},{"id":982,"status":6,"sort":58,"slug":833,"name":832,"icon":1737,"featured_icon":1739},{"id":1738,"title":832},"3b4b03c7-e131-49e6-a014-c8c2c8a2751e",{"id":1740,"title":1741},"1dd05c76-e517-4aea-a3d8-49cfddb40056","Strapi Doc",{"id":15,"name":1085,"url":1086,"url_text":1085,"status":6,"groups":1743},[],{"id":74,"name":1009,"url":1745,"url_text":1009,"status":6,"groups":1746},"\u002Fbook-demo",[],{"status":6,"header_badges":1748,"footer_badges":1766,"footer_secured_badges":1772,"slider_badges":1784},[1749,1756,1761],{"id":142,"status":6,"sort":13,"link":1750,"title":1751,"badgeType":1752,"badgeName":1753,"metadata":13,"image":1754},"https:\u002F\u002Fwww.g2.com\u002Fproducts\u002Flocalazy\u002Freviews","Best meets requirements","Other","G2-winter-24-best-meets-requirments",{"id":1755},"8d5dd6fd-6995-4c92-8219-a6ed5ba6acdc",{"id":30,"status":6,"sort":13,"link":1750,"title":1757,"badgeType":1752,"badgeName":1758,"metadata":13,"image":1759},"Best support","G2-winter-24-best-support",{"id":1760},"e59dd465-84d9-45c7-987d-dd4048fd6992",{"id":15,"status":6,"sort":13,"link":1750,"title":1762,"badgeType":1752,"badgeName":1763,"metadata":13,"image":1764},"Easiest admin","G2-winter-24-easiest-admin",{"id":1765},"5f12c4c8-bec0-47cf-87b4-a4502e9f1bd2",[1767],{"id":382,"status":6,"sort":13,"link":1750,"title":1768,"badgeType":1752,"badgeName":1769,"metadata":13,"image":1770},"Users love us","Users love us 25",{"id":1771},"232416a5-86ba-4be6-85a5-b88802003d53",[1773,1779],{"id":844,"status":6,"sort":13,"link":1774,"title":1775,"badgeType":1752,"badgeName":1776,"metadata":13,"image":1777},"https:\u002F\u002Fsprinto.com\u002Fget-iso-27001\u002F","Sprinto ISO 27001","Sprinto ISO 27001 certificate",{"id":1778},"c1c6c06c-6caf-4b78-8a7e-9606c395eb61",{"id":1053,"status":6,"sort":13,"link":1780,"title":1781,"badgeType":1752,"badgeName":1781,"metadata":13,"image":1782},"https:\u002F\u002Fwww.aicpa.org\u002Fsoc4so","SOC certificate",{"id":1783},"4f4bc0a6-09a0-41df-8295-8f990d96d941",[1785,1791,1795,1799,1803,1807,1812],{"id":29,"status":6,"sort":13,"link":1750,"title":1786,"badgeType":1752,"badgeName":1787,"metadata":1788,"image":1789},"Most likely to recommend","a","",{"id":1790},"da055731-3f11-4fc7-96f2-c11c0b84c831",{"id":74,"status":6,"sort":13,"link":1750,"title":1792,"badgeType":1752,"badgeName":13,"metadata":13,"image":1793},"EMEA High Performer",{"id":1794},"586fb488-81f2-41db-a4e8-ef309e50c0e6",{"id":295,"status":6,"sort":13,"link":1750,"title":1796,"badgeType":1752,"badgeName":13,"metadata":13,"image":1797},"Ease of Doing Business With",{"id":1798},"bfa26865-430e-463d-9886-cb56a8a8ecf6",{"id":58,"status":6,"sort":13,"link":1750,"title":1800,"badgeType":1752,"badgeName":13,"metadata":13,"image":1801},"High Performer",{"id":1802},"2cc1ba0f-c23a-4c97-ad4a-a655c97466fe",{"id":59,"status":6,"sort":13,"link":1750,"title":1804,"badgeType":1752,"badgeName":13,"metadata":13,"image":1805},"Fastest Implementation",{"id":1806},"6f297758-1c95-45f4-a6e9-528319897132",{"id":393,"status":6,"sort":13,"link":1808,"title":1809,"badgeType":1752,"badgeName":13,"metadata":13,"image":1810},"https:\u002F\u002Fwww.intercert.com\u002Fservices\u002Fgovernance-risk-compliance\u002Fiso-iec-27001","Intercert ISO 27001",{"id":1811},"0521a5f1-e1f2-4da6-a2bc-dc92773f2a7b",{"id":844,"status":6,"sort":13,"link":1774,"title":1775,"badgeType":1752,"badgeName":1776,"metadata":13,"image":1813},{"id":1778},{"id":1815,"owner":1816,"created_by":13,"sort":13,"title":1821,"slug":1822,"modified_on":1788,"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":1788,"og_description":1788,"og_image":1788},"69d78a237ab1270001eddabf",{"id":1817,"first_name":1818,"last_name":1788,"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-04 18:04:21",{"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":1317,"slug":1833,"on_index_page":16},"localization",[],0,{"id":1837,"owner":1838,"created_by":13,"sort":13,"title":1839,"slug":1840,"modified_on":1788,"created_on":1841,"pinned":14,"badge":13,"priority":1824,"main_image":1842,"status":6,"tags":1843,"dictionary":1849,"reading_time":1835,"excerpt":-1,"og_title":1788,"og_description":1788,"og_image":1788},"6a1eb1ef8550a30001408466",{"id":1817,"first_name":1818,"last_name":1788,"slug":1819,"avatar":1820},"Release Update: New features in CLI & API, revamped glossary, Strapi plugin updates, and more!","release-update-june-2026-new-features-localazy-cli-glossary-strapi-plugin","2026-06-02T16:10:29.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F06\u002FRelease-update-Localazy-may-2026.png",[1844,1847,1848],{"id":68,"created_on":1828,"status":6,"label":1845,"slug":1846,"on_index_page":16},"Release Update","release-update",{"id":68,"created_on":1828,"status":6,"label":144,"slug":145,"on_index_page":14},{"id":68,"created_on":1828,"status":6,"label":75,"slug":76,"on_index_page":14},[],{"post":1851,"relatedPosts":2072,"banner":2131},{"id":1852,"owner":1853,"created_by":13,"sort":13,"title":1858,"slug":1859,"modified_on":1860,"created_on":1861,"pinned":14,"badge":13,"priority":1824,"main_image":1862,"status":6,"tags":1863,"dictionary":1872,"reading_time":74,"excerpt":1980,"og_title":1788,"og_description":1788,"og_image":1788,"content":1981,"meta_title":1788,"meta_description":1788,"canonical":1982,"cta":1983,"fullGhostPost":1991},"60e8cfc0cf7b6a0001d20b3d",{"id":1854,"first_name":1855,"last_name":1788,"slug":1856,"avatar":1857},"6092822ecf7b6a0001d1dab2","Rafał Rybnik","rafal-rybnik","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Frafal.png","How to build a multi-language dashboard with Streamlit","how-to-build-a-multi-language-dashboard-with-streamlit","2026-04-16T16:25:15.000+02:00","2021-07-19T13:54:32.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fmulti-lang-Dash-with-Streamlit.png",[1864,1867,1870],{"id":68,"created_on":1828,"status":6,"label":1865,"slug":1866,"on_index_page":14},"HowTo","howto",{"id":68,"created_on":1828,"status":6,"label":1868,"slug":1869,"on_index_page":16},"DevTips","devtips",{"id":68,"created_on":1828,"status":6,"label":1871,"slug":1871,"on_index_page":16},"i18n",[1873,1899,1917,1929,1940,1955,1964,1973],{"id":68,"status":6,"owner":1874,"created_on":1875,"title":1876,"excerpt":1877,"content":1878,"slug":1879,"meta_title":1788,"meta_description":1788,"canonical":1788,"related_terms":1880},"2bac48a8-b362-482f-b574-3bc71dca4c5b","2026-05-12T07:09:23.000Z","Externalized string","Text separated from source code so it can be translated and reused across languages.","An externalized string is a piece of text stored outside the core codebase, usually in a resource file or localization file, that enables app developers to maintain translations. This separation allows developers and localization teams to manage, translate, and update text without touching the code itself. It’s a basic requirement for internationalizing software or digital products.\n\nWhen strings are hard-coded directly into the application, they cannot be detected or processed by translation tools. Externalizing them makes it possible to feed content into translation workflows, apply translation memory, and reuse strings across different parts of the app.\n\nString externalization is one of the first steps in making a product ready for international audiences. It makes collaboration between developers and translators much easier, reduces the risk of introducing bugs during translation, and supports content consistency across languages and platforms.\n\n### 📂 Benefits of externalized strings\n\n* Make content available for translation.\n* Keep source code clean and easier to maintain.\n* Support translation memory and consistency.\n* Prevent hard-coded text from blocking localization.\n* Allow content updates without redeploying the app.\n\nWithout externalized strings, localization tools can’t do their job. Treating text as data, rather than as part of the code, gives teams the option to work with it and translate it into the target languages needed. ","externalized-string",[1881,1884,1887,1890,1893,1896],{"id":1882,"slug":1883},340,"key-based-internationalization",{"id":1885,"slug":1886},79,"internationalization",{"id":1888,"slug":1889},171,"strings",{"id":1891,"slug":1892},256,"TODO",{"id":1894,"slug":1895},277,"string-catalog",{"id":1897,"slug":1898},344,"101-matching",{"id":864,"status":6,"owner":1874,"created_on":1900,"title":1901,"excerpt":1902,"content":1903,"slug":1904,"meta_title":13,"meta_description":1905,"canonical":13,"related_terms":1906},"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.",[1907,1908,1910,1911,1913,1914],{"id":30,"slug":1833},{"id":15,"slug":1909},"l10n",{"id":68,"slug":1879},{"id":1912,"slug":379},75,{"id":1885,"slug":1886},{"id":1915,"slug":1916},83,"python",{"id":1885,"status":6,"owner":1874,"created_on":1875,"title":1918,"excerpt":1919,"content":1920,"slug":1886,"meta_title":1788,"meta_description":1788,"canonical":1788,"related_terms":1921},"Internationalization (i18n)","The process of making your software localizable.","Internationalization (i18n) is the process of preparing software, digital products, and content so they can be easily adapted for various languages, regions, and cultures without requiring extensive reengineering.\n\nThis foundational step ensures that a product can be efficiently localized to meet the needs of different global markets. To internationalize your software, you need to pay attention to technical requirements. The code structure and design has to be prepared to allow for [localization](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Flocalization).\n\nIt involves considering various linguistic and cultural factors during the initial design and development phases. This process should start, ideally, in the design phase. For example, you may want to have externalised strings so you can bring your strings to the translation management tool.\n\nEvery business looking to expand their reach and provide User Experiences (UX) across diverse markets needs to consider internationalization and then localization.\n\n## 🌐 Key points about internationalization (i18n): \n\n* Internationalization involves creating flexible and adaptable designs that accommodate various languages, scripts, and cultural norms.\n* By preparing content and software for localization, internationalization simplifies the process of translating and adapting products for specific markets.\n* This process includes using Unicode, supporting different character sets, and ensuring compatibility with various regional formats (dates, currencies, etc.).\n* Investing in internationalization upfront reduces the time and cost associated with localizing products for multiple markets.\n\nBy prioritizing internationalization, companies can create products that are more versatile and ready for global distribution, ensuring they meet the needs of international users effectively.",[1922,1923,1925,1927],{"id":30,"slug":1833},{"id":73,"slug":1924},"translation",{"id":29,"slug":1926},"globalization",{"id":59,"slug":1928},"gilt",{"id":30,"status":6,"owner":1874,"created_on":1930,"title":1317,"excerpt":1931,"content":1932,"slug":1833,"meta_title":13,"meta_description":13,"canonical":13,"related_terms":1933},"2022-03-17T12:22:54.000Z","The process of preparing a product for a particular market.","Localization (l10n) is an essential part of the **[internationalization](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Finternationalization)** process. During localization, a product is prepared to be used in a particular destination, language and culture. Part of the localization process consists of changing locales such as currency, text orientation, or date format; and aligning the product with local, technical, or legislative requirements.\n\nA crucial part of localization is **[translation](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Ftranslation\u002F)**.\n\nLocalization is the process of adapting an internationalized product to meet the specific needs of a target market by translating it into the native language of that market. This includes translating the user interface, text, graphics, and other content to match the specific target locale.\n\nThe goal of localization is to provide an optimal user experience for the target market, as well as to make the product accessible to a wider audience. This process often involves more than just translation, and may include adjusting graphics, changing text length to accommodate different writing systems, and modifying the product's layout to fit cultural differences.\n\nInternationalization and localization are essential components of **[globalization](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fglobalization)** (g11n) and play a key role in expanding a product's reach and success. It's important to ensure that any Creative Commons attribution is considered during localization to prevent copyright infringement.\n\nBy localizing products, companies can reach new markets and increase their customer base, ultimately helping their business grow and thrive. The number of letters in the term i18n and l10n refers to the number of characters between the first and last letters in the term, and is used as a shorthand for internationalization and localization, respectively.",[1934,1935,1936,1937,1939],{"id":30,"slug":1833},{"id":73,"slug":1924},{"id":59,"slug":1928},{"id":97,"slug":1938},"translation-management-system-tms",{"id":1885,"slug":1886},{"id":1053,"status":6,"owner":1874,"created_on":1941,"title":1942,"excerpt":1943,"content":1944,"slug":1402,"meta_title":1788,"meta_description":1788,"canonical":1788,"related_terms":1945},"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)",[1946,1948,1950,1952],{"id":375,"slug":1947},"maht",{"id":855,"slug":1949},"mtpe-machine-translation-post-editing",{"id":783,"slug":1951},"deepl",{"id":1953,"slug":1954},136,"human-assisted-mt",{"id":97,"status":6,"owner":1874,"created_on":1900,"title":1956,"excerpt":1957,"content":1958,"slug":1938,"meta_title":1788,"meta_description":1788,"canonical":1788,"related_terms":1959},"Translation Management System (TMS)","A software for translation process automation.","TMS help increase production efficiency by eliminating, automating, and delegating both one-time and repetitive tasks during the translation process. Translation management systems help teams manage multilingual content, assign tasks, track progress, and maintain translation quality. TMS platforms are widely used in localization projects to handle large amounts of text efficiently. \n\nThey support features like translation memories, glossaries, and automated workflows. This makes the translation process faster and more consistent, especially for businesses that need content in multiple languages. [CAT tools](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fcat-tool) are a subtype of TMSs.\n\nTranslation management systems [like Localazy](https:\u002F\u002Flocalazy.com\u002Fterm\u002Ftranslation-management-system) usually consist of two parts. One takes care of workflow management and the second one aids with the translation process using different technologies and methods, such as:\n\n* [Machine translation](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fmachine-translation)\n* [Translation Memory](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Ftranslation-memory)\n\nThese systems are ideal for large-scale translation projects, as they provide a vast range of features. \n\n## ☝️ Top features of a TMS:\n\n* Centralizes translation tasks in one platform.\n* Assigns jobs to translators and tracks progress.\n* Uses a translation memory to avoid repeated translations.\n* Ensures consistency with built-in term bases.\n* Helps companies scale content across languages.\n\nWith a TMS, teams can work together smoothly to manage translations. It provides the tools needed to keep projects on track and ensures high-quality results every time. However, they can be pricey for single users or small teams who may benefit from them as well, especially for [quality assurance](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Fqa-quality-assurance) processes.",[1960,1961,1963],{"id":295,"slug":1417},{"id":844,"slug":1962},"cat-tool",{"id":1053,"slug":1402},{"id":73,"status":6,"owner":1874,"created_on":1930,"title":1376,"excerpt":1965,"content":1966,"slug":1924,"meta_title":1788,"meta_description":1788,"canonical":1788,"related_terms":1967},"The process of transforming a text into another language.","Translation (t9n) helps people understand a given term in their native language and is a vital part of the [localization](https:\u002F\u002Flocalazy.com\u002Fdictionary\u002Flocalization) (l10n) process.\n\nThe localization process is often the most tedious one during software developement, as you can’t just introduce a few locale-based rules in your source code.\n\nTranslating texts to another language is hard. You need to know context\u002Fmeaning. You can translate a word quickly, but without context, you can translate it the wrong way. For example, the term “book” can mean “reserve” or “piece of literature” in the Czech language. Both translations are correct, but which one is valid for a button? Context provides the right meaning.\n\n## [ISO definition of the term \"translation\"](https:\u002F\u002Fwww.iso.org\u002Fobp\u002Fui\u002F#iso:std:iso:17100:ed-1:v1:en)\n\nSet of processes to render source language content into target language content in written form.",[1968,1969,1970,1971,1972],{"id":30,"slug":1833},{"id":295,"slug":1417},{"id":1053,"slug":1402},{"id":97,"slug":1938},{"id":1885,"slug":1886},{"id":867,"status":6,"owner":1874,"created_on":1900,"title":1974,"excerpt":1975,"content":1976,"slug":1977,"meta_title":13,"meta_description":13,"canonical":13,"related_terms":1978},"Streamlit","Streamlit is an open-source python library that turns data scripts into shareable web apps.","Streamlit is a popular tool to build and share data apps. Developers using Streamlit can process and visualize data quickly with [Python](\u002Fdictionary\u002Fpython) scripts without any need to write a backend, define routes, handle HTTP requests, connect a frontend, write HTML, CSS, [JavaScript](\u002Fdictionary\u002Fjavascript), and so on...\n\nStreamlit was founded in 2018 by three ex-Google employees and, in 2021, has completed Series B funding with a total funding amount of $62M.\n\n## Further reading\nYou can find more information on the official website: [Streamlit.io](https:\u002F\u002Fstreamlit.io)\n\n \n\n\n\n","streamlit",[1979],{"id":1915,"slug":1916},"Learn how to create a multi-language dashboard with Streamlit - a popular Python library, and Localazy - a continuous localization platform for translation management.","\u003Cp>I’ve created a Streamlit app for my recent article about \u003Ca href=\"https:\u002F\u002Fmedium.datadriveninvestor.com\u002Fkeyword-monitoring-tool-track-your-competition-in-search-results-83db61f0a696\">keyword monitoring\u003C\u002Fa>. It is used to search keywords in Google and is quite useful. As search results and SEO topics, in general, are location-dependent, I thought it would be useful to translate the app interface into several languages.\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe width=\"100%\" height=\"560\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F3xAl9ktbQGc\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cp>▶️ \u003Cem>Live demo: \u003Ca href=\"http:\u002F\u002Fkeywordicebreaker.herokuapp.com\u002F\" rel=\"noopener\">http:\u002F\u002Fkeywordicebreaker.herokuapp.com\u002F\u003C\u002Fa>\u003C\u002Fem>\u003C\u002Fp>\u003Cp>In theory, making another language version does not seem difficult. After all, it is enough to \u003Ca href=\"\u002Fdictionary\u002Ftranslation\">translate \u003C\u002Fa>individual labels and descriptions into another language and by using a dictionary to map these.\u003C\u002Fp>\u003Cp>In practice, this simple approach is time-consuming and error-prone. It is definitely better not to reinvent the wheel and to use established solutions. One of them is \u003Ca href=\"\u002Fdictionary\u002Fgnu-gettext\">Gettext\u003C\u002Fa> — a universal set of tools for producing multi-lingual messages.\u003C\u002Fp>\u003Cp>From this article, you’ll learn how to translate \u003Ca href=\"\u002Fdictionary\u002Fstreamlit\">Streamlit \u003C\u002Fa>application by using Gettext and Localazy.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-10.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1206\" height=\"966\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-10.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002Fimage-10.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-10.png 1206w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Ch2 id=\"project-start\">🕹️ Project start \u003Ca class=\"markdownit-header-anchor\" href=\"#project-start\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fstreamlit-gettext\" rel=\"noopener\">https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fstreamlit-gettext\u003C\u002Fa>\u003C\u002Fp>\u003Cp>A code repository is attached to this article. The individual steps are separated into successive branches. The \u003Ccode>README.md\u003C\u002Fcode> file contains instructions for getting the dashboard up and running.\u003C\u002Fp>\u003Cp>The result should be as follows:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-11.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1456\" height=\"1167\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-11.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002Fimage-11.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-11.png 1456w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>After providing the API key:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-12.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1456\" height=\"1167\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-12.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002Fimage-12.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-12.png 1456w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\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 \u003Ca href=\"\u002Fdictionary\u002Fexternalized-string\">extract all strings\u003C\u002Fa> from the code to work on them separately from the business logic.\u003C\u002Fp>\u003Ch2 id=\"gettext\">📌 Gettext \u003Ca class=\"markdownit-header-anchor\" href=\"#gettext\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002F\" rel=\"noopener\">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 😉, including Python. The \u003Ccode>gettext\u003C\u002Fcode> 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>\u003Cp>We will prepare English, Polish and German language versions. First, we need to prepare the directory structure.\u003Cbr>\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 380px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 320px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F08560baea449a8370d4918c37a72aa80.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cpre>\u003Ccode>mkdir -p locales\u002F{de,pl}\u002FLC_MESSAGES\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Then, we should extract the messages from the code.\u003C\u002Fp>\u003Cpre>\u003Ccode>\u002FLibrary\u002FFrameworks\u002FPython.framework\u002FVersions\u002F3.8\u002Fshare\u002Fdoc\u002Fpython3.8\u002Fexamples\u002FTools\u002Fi18n\u002Fpygettext.py -d base -o locales\u002Fbase.pot dashboard.py\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>To find the \u003Ccode>pygettext.py\u003C\u002Fcode> file, you can use the command: \u003Ccode>locate pygettext.py\u003C\u002Fcode> .\u003C\u002Fp>\u003Cp>That will generate a \u003Ccode>base.pot\u003C\u002Fcode> file with strings taken from the \u003Ccode>dashboard.py\u003C\u002Fcode> file in the \u003Ccode>locales\u003C\u002Fcode> folder.\u003C\u002Fp>\u003Cp>Unfortunately, generated \u003Ccode>base.pot\u003C\u002Fcode> does not contain any strings. To fix this, we need to modify \u003Ccode>dashboard.py\u003C\u002Fcode> by marking the messages for translation.\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 260px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 200px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F42148ca9b7c651dd7865d97508c518da.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cp>After generating the \u003Ccode>base.pot\u003C\u002Fcode> again, strings appear in it.\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 260px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 200px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F84b50b0c98ea712567e52fa2c151279d.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cpre>\u003Ccode>branch: step1\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2 id=\"first-translations\">🚩 First translations \u003Ca class=\"markdownit-header-anchor\" href=\"#first-translations\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>Now let’s prepare the first translations. Copy and rename the base.pot into each language folder:\u003C\u002Fp>\u003Cpre>\u003Ccode>cp locales\u002Fbase.pot locales\u002Fde\u002FLC_MESSAGES\u002Fbase.po\ncp locales\u002Fbase.pot locales\u002Fpl\u002FLC_MESSAGES\u002Fbase.po\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Let’s modify the individual language files:\u003C\u002Fp>\u003C!--kg-card-begin: html-->\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\u002F5595a1330c9a19d411092f17901bf12f.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\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 \u003Ccode>gettext\u003C\u002Fcode> module and used in the program.\u003C\u002Fp>\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\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Now we can modify the \u003Ccode>dashboard.py\u003C\u002Fcode> file to display reports in different languages.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-13.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"335\" height=\"238\">\u003C\u002Ffigure>\u003Cp>At the beginning of the file add:\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 260px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 200px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002Fa7df103b83d3f5fc673a584fd06d69ae.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cp>From now on, the user can select a language from a dropdown. The interface will refresh every label that is processed by \u003Ccode>_()\u003C\u002Fcode> function:\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe width=\"100%\" height=\"560\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FFBNCFypuYVA\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cp>Two labels in the app are. 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=\"\u002Fpot\">POT file\u003C\u002Fa> from the beginning, copy it to the locales of each language, translate it and generate the binary files.\u003C\u002Fp>\u003Cpre>\u003Ccode>branch: step2\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2 id=\"translation-management-with-localazy\">📑 Translation management with Localazy \u003Ca class=\"markdownit-header-anchor\" href=\"#translation-management-with-localazy\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>So in the next iteration of our solution, we will add functions to the dashboard that generate POT and MO files. You have all the changes here:\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 345px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 285px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F8811b919abbec98df92d485a1cdc80f6.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cp>Localazy is an awesome piece of software that makes the usually awful translation experience bearable and even almost enjoyable. It \u003Ca href=\"\u002Fintegrations\">supports many frameworks and file formats\u003C\u002Fa> and provides \u003Ca href=\"\u002Fdocs\u002Fcli\u002Fthe-basics\">CLI tools\u003C\u002Fa> for build automation. \u003C\u002Fp>\u003Cp>My favorite features are the possibility of cooperative translation and \u003Cem>automagic management \u003C\u002Fem>of changes in translated files.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-14.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1411\" height=\"1108\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-14.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002Fimage-14.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-14.png 1411w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\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>\u003Cp>Select POT files from available file formats.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-15.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"745\" height=\"345\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-15.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-15.png 745w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>You will see a template configuration file \u003Ccode>localazy.json\u003C\u002Fcode>. Copy it to the project main folder.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-16.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"700\" height=\"400\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-16.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-16.png 700w\">\u003C\u002Ffigure>\u003C!--kg-card-begin: html-->\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>\u003C!--kg-card-end: html-->\u003Cp>Remember to modify the \u003Ccode>locales\u003C\u002Fcode> folder path. Go to your app on Localazy and add some new languages.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-17.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"700\" height=\"158\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-17.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-17.png 700w\">\u003C\u002Ffigure>\u003Cp>Now you can generate the PO files again and load them into Localazy:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-18.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"142\" height=\"51\">\u003C\u002Ffigure>\u003Cpre>\u003Ccode>localazy upload\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>After a while, you will see a list of phrases to translate in each language of your application.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-19.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1456\" height=\"1167\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-19.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002Fimage-19.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-19.png 1456w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>And the cherry on the top, a \u003Ca href=\"\u002Fdictionary\u002Fmachine-translation\">machine translation\u003C\u002Fa> comes with each phrase.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-20.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1456\" height=\"1167\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-20.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002Fimage-20.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-20.png 1456w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003C!--kg-card-begin: html-->\u003Ciframe width=\"100%\" height=\"560\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPW13Tfap8N4\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\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>\u003Cp>Unfortunately, for the changes to be loaded into the Streamlit app, the instance must be reset. If I can resolve this inconvenience, I will update the article.\u003C\u002Fp>\u003Cp>\u003Cstrong>Final effect:\u003C\u002Fstrong>\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe width=\"100%\" height=\"560\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fd_28H97pmSU\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cpre>\u003Ccode>branch: step3\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2 id=\"f-strings-problem\">⚠️ f-strings problem \u003Ca class=\"markdownit-header-anchor\" href=\"#f-strings-problem\">🔗\u003C\u002Fa>\u003C\u002Fh2>\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. I describe how to solve this issue in the \u003Ca href=\"\u002Fblog\u002Fautomatic-data-reports-multiple-languages-python-gettext-localazy#f-strings-problem\">previous article\u003C\u002Fa>.\u003C\u002Fp>\u003Cblockquote>Read:\u003Cstrong> \u003Ca href=\"\u002Fblog\u002Fautomatic-data-reports-multiple-languages-python-gettext-localazy#f-strings-problem\">Automatic data reports in multiple languages with Python, Gettext and Localazy\u003C\u002Fa>\u003C\u002Fstrong>\u003C\u002Fblockquote>\u003Ch2 id=\"takeaways\">✔️ Takeaways \u003Ca class=\"markdownit-header-anchor\" href=\"#takeaways\">🔗\u003C\u002Fa>\u003C\u002Fh2>\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>\u003Cp>The best thing about the combination of Gettext and Localazy is that if we generate new POT files (and thus lose the previously translated parts), Localazy will take care of re-translating them, so as not to repeat the work unnecessarily.\u003C\u002Fp>\u003Cp>Thank you for reading. I hope you enjoyed reading as much as I enjoyed writing this for you.\u003C\u002Fp>\u003Cp>This article was originally published at \u003Ca href=\"https:\u002F\u002Fblog.devgenius.io\u002Fhow-to-build-a-multi-language-dashboard-with-streamlit-9bc087dd4243\">Dev Genius Blog\u003C\u002Fa>.\u003C\u002Fp>\u003Cp>If you would like to share feedback or simply say \u003Ccode>hello\u003C\u002Fcode>, you can connect with me on \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Frafalrybnik\u002F?locale=en_US\">LinkedIn\u003C\u002Fa>.\u003C\u002Fp>\u003Ch2 id=\"you-might-also-like\">💖 You might also like \u003Ca class=\"markdownit-header-anchor\" href=\"#you-might-also-like\">🔗\u003C\u002Fa>\u003C\u002Fh2>\u003Cp>If you enjoyed reading this, you’ll probably enjoy my other articles too:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ca href=\"\u002Fblog\u002Fautomatic-data-reports-multiple-languages-python-gettext-localazy\">Automatic data reports in multiple languages with Python, Gettext and Localazy\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"https:\u002F\u002Fmedium.datadriveninvestor.com\u002Fkeyword-monitoring-tool-track-your-competition-in-search-results-83db61f0a696\">Keyword Monitoring Tool: Track your competition in search results\u003C\u002Fa>\u003C\u002Fli>\u003C\u002Ful>","https:\u002F\u002Fblog.devgenius.io\u002Fhow-to-build-a-multi-language-dashboard-with-streamlit-9bc087dd4243",{"id":1072,"status":6,"created_on":1984,"modified_on":1985,"icon":1986,"header":1987,"description":1988,"button_label":1989,"link":1990},"2022-03-17T12:23:03.000Z","2023-01-19T11:50:20.000Z","member","Enjoy localization on autopilot! 🚀","Grab the Autopilot plan and let Localazy translate your projects while you sleep. Automatically.","Take off","register",{"slug":1859,"id":1852,"uuid":1992,"title":1858,"html":1993,"comment_id":1852,"feature_image":1862,"featured":14,"visibility":1994,"email_recipient_filter":1995,"created_at":1996,"updated_at":1860,"published_at":1861,"custom_excerpt":1980,"codeinjection_head":1997,"codeinjection_foot":13,"custom_template":13,"canonical_url":1982,"authors":1998,"tags":2002,"primary_author":2069,"primary_tag":2070,"url":2071,"excerpt":1980,"reading_time":29,"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":1872,"cta":1983,"plainTags":1863},"1d04f111-edcb-4c0a-a4bb-144dbb610c56","\u003Cp>I’ve created a Streamlit app for my recent article about \u003Ca href=\"https:\u002F\u002Fmedium.datadriveninvestor.com\u002Fkeyword-monitoring-tool-track-your-competition-in-search-results-83db61f0a696\">keyword monitoring\u003C\u002Fa>. It is used to search keywords in Google and is quite useful. As search results and SEO topics, in general, are location-dependent, I thought it would be useful to translate the app interface into several languages.\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe width=\"100%\" height=\"560\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F3xAl9ktbQGc\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cp>▶️ \u003Cem>Live demo: \u003Ca href=\"http:\u002F\u002Fkeywordicebreaker.herokuapp.com\u002F\" rel=\"noopener\">http:\u002F\u002Fkeywordicebreaker.herokuapp.com\u002F\u003C\u002Fa>\u003C\u002Fem>\u003C\u002Fp>\u003Cp>In theory, making another language version does not seem difficult. After all, it is enough to \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdictionary\u002Ftranslation\">translate \u003C\u002Fa>individual labels and descriptions into another language and by using a dictionary to map these.\u003C\u002Fp>\u003Cp>In practice, this simple approach is time-consuming and error-prone. It is definitely better not to reinvent the wheel and to use established solutions. One of them is \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdictionary\u002Fgnu-gettext\">Gettext\u003C\u002Fa> — a universal set of tools for producing multi-lingual messages.\u003C\u002Fp>\u003Cp>From this article, you’ll learn how to translate \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdictionary\u002Fstreamlit\">Streamlit \u003C\u002Fa>application by using Gettext and Localazy.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-10.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1206\" height=\"966\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-10.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002Fimage-10.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-10.png 1206w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Ch2 id=\"%F0%9F%95%B9%EF%B8%8F-project-start\">🕹️ Project start\u003C\u002Fh2>\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fstreamlit-gettext\" rel=\"noopener\">https:\u002F\u002Fgithub.com\u002Ffischerbach\u002Fstreamlit-gettext\u003C\u002Fa>\u003C\u002Fp>\u003Cp>A code repository is attached to this article. The individual steps are separated into successive branches. The \u003Ccode>README.md\u003C\u002Fcode> file contains instructions for getting the dashboard up and running.\u003C\u002Fp>\u003Cp>The result should be as follows:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-11.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1456\" height=\"1167\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-11.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002Fimage-11.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-11.png 1456w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>After providing the API key:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-12.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1456\" height=\"1167\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-12.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002Fimage-12.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-12.png 1456w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\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 \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdictionary\u002Fexternalized-string\">extract all strings\u003C\u002Fa> from the code to work on them separately from the business logic.\u003C\u002Fp>\u003Ch2 id=\"%F0%9F%93%8C-gettext\">📌 Gettext\u003C\u002Fh2>\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002F\" rel=\"noopener\">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 😉, including Python. The \u003Ccode>gettext\u003C\u002Fcode> 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>\u003Cp>We will prepare English, Polish and German language versions. First, we need to prepare the directory structure.\u003Cbr>\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 380px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 320px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F08560baea449a8370d4918c37a72aa80.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cpre>\u003Ccode>mkdir -p locales\u002F{de,pl}\u002FLC_MESSAGES\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Then, we should extract the messages from the code.\u003C\u002Fp>\u003Cpre>\u003Ccode>\u002FLibrary\u002FFrameworks\u002FPython.framework\u002FVersions\u002F3.8\u002Fshare\u002Fdoc\u002Fpython3.8\u002Fexamples\u002FTools\u002Fi18n\u002Fpygettext.py -d base -o locales\u002Fbase.pot dashboard.py\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>To find the \u003Ccode>pygettext.py\u003C\u002Fcode> file, you can use the command: \u003Ccode>locate pygettext.py\u003C\u002Fcode> .\u003C\u002Fp>\u003Cp>That will generate a \u003Ccode>base.pot\u003C\u002Fcode> file with strings taken from the \u003Ccode>dashboard.py\u003C\u002Fcode> file in the \u003Ccode>locales\u003C\u002Fcode> folder.\u003C\u002Fp>\u003Cp>Unfortunately, generated \u003Ccode>base.pot\u003C\u002Fcode> does not contain any strings. To fix this, we need to modify \u003Ccode>dashboard.py\u003C\u002Fcode> by marking the messages for translation.\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 260px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 200px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F42148ca9b7c651dd7865d97508c518da.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cp>After generating the \u003Ccode>base.pot\u003C\u002Fcode> again, strings appear in it.\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 260px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 200px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F84b50b0c98ea712567e52fa2c151279d.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cpre>\u003Ccode>branch: step1\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2 id=\"%F0%9F%9A%A9-first-translations\">🚩 First translations\u003C\u002Fh2>\u003Cp>Now let’s prepare the first translations. Copy and rename the base.pot into each language folder:\u003C\u002Fp>\u003Cpre>\u003Ccode>cp locales\u002Fbase.pot locales\u002Fde\u002FLC_MESSAGES\u002Fbase.po\ncp locales\u002Fbase.pot locales\u002Fpl\u002FLC_MESSAGES\u002Fbase.po\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Let’s modify the individual language files:\u003C\u002Fp>\u003C!--kg-card-begin: html-->\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\u002F5595a1330c9a19d411092f17901bf12f.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\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 \u003Ccode>gettext\u003C\u002Fcode> module and used in the program.\u003C\u002Fp>\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\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Now we can modify the \u003Ccode>dashboard.py\u003C\u002Fcode> file to display reports in different languages.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-13.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"335\" height=\"238\">\u003C\u002Ffigure>\u003Cp>At the beginning of the file add:\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 260px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 200px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002Fa7df103b83d3f5fc673a584fd06d69ae.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cp>From now on, the user can select a language from a dropdown. The interface will refresh every label that is processed by \u003Ccode>_()\u003C\u002Fcode> function:\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe width=\"100%\" height=\"560\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FFBNCFypuYVA\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cp>Two labels in the app are. 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\u002Fpot\">POT file\u003C\u002Fa> from the beginning, copy it to the locales of each language, translate it and generate the binary files.\u003C\u002Fp>\u003Cpre>\u003Ccode>branch: step2\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2 id=\"%F0%9F%93%91-translation-management-with-localazy\">📑 Translation management with Localazy\u003C\u002Fh2>\u003Cp>So in the next iteration of our solution, we will add functions to the dashboard that generate POT and MO files. You have all the changes here:\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe frameborder=\"0\" style=\"min-width: 200px; width: 100%; height: 345px;\" scrolling=\"no\" seamless=\"seamless\" srcdoc='\u003Chtml>\u003Cbody>\u003Cstyle type=\"text\u002Fcss\">.gist .gist-data { height: 285px; }\u003C\u002Fstyle>\u003Cscript src=\"https:\u002F\u002Fgist.github.com\u002Ffischerbach\u002F8811b919abbec98df92d485a1cdc80f6.js\">\u003C\u002Fscript>\u003C\u002Fbody>\u003C\u002Fhtml>'>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cp>Localazy is an awesome piece of software that makes the usually awful translation experience bearable and even almost enjoyable. It \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fintegrations\">supports many frameworks and file formats\u003C\u002Fa> and provides \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fdocs\u002Fcli\u002Fthe-basics\">CLI tools\u003C\u002Fa> for build automation. \u003C\u002Fp>\u003Cp>My favorite features are the possibility of cooperative translation and \u003Cem>automagic management \u003C\u002Fem>of changes in translated files.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-14.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1411\" height=\"1108\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-14.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002Fimage-14.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-14.png 1411w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\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>\u003Cp>Select POT files from available file formats.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-15.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"745\" height=\"345\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-15.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-15.png 745w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003Cp>You will see a template configuration file \u003Ccode>localazy.json\u003C\u002Fcode>. Copy it to the project main folder.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-16.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"700\" height=\"400\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-16.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-16.png 700w\">\u003C\u002Ffigure>\u003C!--kg-card-begin: html-->\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>\u003C!--kg-card-end: html-->\u003Cp>Remember to modify the \u003Ccode>locales\u003C\u002Fcode> folder path. Go to your app on Localazy and add some new languages.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-17.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"700\" height=\"158\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-17.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-17.png 700w\">\u003C\u002Ffigure>\u003Cp>Now you can generate the PO files again and load them into Localazy:\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-18.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"142\" height=\"51\">\u003C\u002Ffigure>\u003Cpre>\u003Ccode>localazy upload\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>After a while, you will see a list of phrases to translate in each language of your application.\u003C\u002Fp>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-19.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1456\" height=\"1167\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-19.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002Fimage-19.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-19.png 1456w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\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>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-20.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1456\" height=\"1167\" srcset=\"https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw600\u002F2021\u002F07\u002Fimage-20.png 600w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002Fsize\u002Fw1000\u002F2021\u002F07\u002Fimage-20.png 1000w, https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2021\u002F07\u002Fimage-20.png 1456w\" sizes=\"(min-width: 720px) 720px\">\u003C\u002Ffigure>\u003C!--kg-card-begin: html-->\u003Ciframe width=\"100%\" height=\"560\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPW13Tfap8N4\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\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>\u003Cp>Unfortunately, for the changes to be loaded into the Streamlit app, the instance must be reset. If I can resolve this inconvenience, I will update the article.\u003C\u002Fp>\u003Cp>\u003Cstrong>Final effect:\u003C\u002Fstrong>\u003C\u002Fp>\u003C!--kg-card-begin: html-->\u003Ciframe width=\"100%\" height=\"560\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fd_28H97pmSU\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen>\u003C\u002Fiframe>\u003C!--kg-card-end: html-->\u003Cpre>\u003Ccode>branch: step3\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2 id=\"%E2%9A%A0%EF%B8%8F-f-strings-problem\">⚠️ f-strings problem\u003C\u002Fh2>\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. I describe how to solve this issue in the \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fblog\u002Fautomatic-data-reports-multiple-languages-python-gettext-localazy#f-strings-problem\">previous article\u003C\u002Fa>.\u003C\u002Fp>\u003Cblockquote>Read:\u003Cstrong> \u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fblog\u002Fautomatic-data-reports-multiple-languages-python-gettext-localazy#f-strings-problem\">Automatic data reports in multiple languages with Python, Gettext and Localazy\u003C\u002Fa>\u003C\u002Fstrong>\u003C\u002Fblockquote>\u003Ch2 id=\"%E2%9C%94%EF%B8%8F-takeaways\">✔️ Takeaways\u003C\u002Fh2>\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>\u003Cp>The best thing about the combination of Gettext and Localazy is that if we generate new POT files (and thus lose the previously translated parts), Localazy will take care of re-translating them, so as not to repeat the work unnecessarily.\u003C\u002Fp>\u003Cp>Thank you for reading. I hope you enjoyed reading as much as I enjoyed writing this for you.\u003C\u002Fp>\u003Cp>This article was originally published at \u003Ca href=\"https:\u002F\u002Fblog.devgenius.io\u002Fhow-to-build-a-multi-language-dashboard-with-streamlit-9bc087dd4243\">Dev Genius Blog\u003C\u002Fa>.\u003C\u002Fp>\u003Cp>If you would like to share feedback or simply say \u003Ccode>hello\u003C\u002Fcode>, you can connect with me on \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Frafalrybnik\u002F?locale=en_US\">LinkedIn\u003C\u002Fa>.\u003C\u002Fp>\u003Ch2 id=\"%F0%9F%92%96-you-might-also-like\">💖 You might also like\u003C\u002Fh2>\u003Cp>If you enjoyed reading this, you’ll probably enjoy my other articles too:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ca href=\"https:\u002F\u002Fghost.localazy.com\u002Fblog\u002Fautomatic-data-reports-multiple-languages-python-gettext-localazy\">Automatic data reports in multiple languages with Python, Gettext and Localazy\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca href=\"https:\u002F\u002Fmedium.datadriveninvestor.com\u002Fkeyword-monitoring-tool-track-your-competition-in-search-results-83db61f0a696\">Keyword Monitoring Tool: Track your competition in search results\u003C\u002Fa>\u003C\u002Fli>\u003C\u002Ful>","public","none","2021-07-10T00:37:52.000+02:00","{\"intercomArticleUrl\":\"\"}",[1999],{"id":1854,"name":1855,"slug":1856,"profile_image":1857,"cover_image":13,"bio":13,"website":13,"location":2000,"facebook":13,"twitter":13,"meta_title":13,"meta_description":13,"url":2001},"Warsaw, Poland","https:\u002F\u002Fghost.localazy.com\u002Fauthor\u002Frafal-rybnik\u002F",[2003,2009,2012,2015,2018,2023,2028,2033,2039,2044,2049,2054,2059,2064],{"id":2004,"name":2005,"slug":2006,"description":2007,"feature_image":13,"visibility":1994,"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":2008},"60ba4b8fcf7b6a0001d1f9b9","[CTA] Enjoy localization on autopilot! 🚀","cta-16","Grab the brand new Autopilot plan and let Localazy translate your apps while you sleep. Automatically.","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fcta-16\u002F",{"id":2010,"name":1865,"slug":1866,"description":1865,"feature_image":13,"visibility":1994,"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":2011},"60a37fc7cf7b6a0001d1f0fa","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fhowto\u002F",{"id":2013,"name":1868,"slug":1869,"description":1868,"feature_image":13,"visibility":1994,"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":2014},"60a37fc7cf7b6a0001d1f0ea","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fdevtips\u002F",{"id":2016,"name":1871,"slug":1871,"description":13,"feature_image":13,"visibility":1994,"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":2017},"60f567ab6f8ebe0001bd80ec","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fi18n\u002F",{"id":2019,"name":2020,"slug":2021,"description":1877,"feature_image":13,"visibility":1994,"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":2022},"60a37fc7cf7b6a0001d1f159","[DICT] Externalized string","term-60","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-60\u002F",{"id":2024,"name":2025,"slug":2026,"description":1902,"feature_image":13,"visibility":1994,"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":2027},"60a37fc7cf7b6a0001d1f176","[DICT] GNU gettext","term-89","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-89\u002F",{"id":2029,"name":2030,"slug":2031,"description":1919,"feature_image":13,"visibility":1994,"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":2032},"60a37fc7cf7b6a0001d1f16c","[DICT] Internationalization (i18n)","term-79","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-79\u002F",{"id":2034,"name":2035,"slug":2036,"description":2037,"feature_image":13,"visibility":1994,"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":2038},"60a37fc7cf7b6a0001d1f11f","[DICT] Localization","term-2","Localization is a process of preparing a product for a particular market.","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-2\u002F",{"id":2040,"name":2041,"slug":2042,"description":1943,"feature_image":13,"visibility":1994,"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":2043},"60a37fc7cf7b6a0001d1f12a","[DICT] Machine translation (MT)","term-13","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-13\u002F",{"id":2045,"name":2046,"slug":2047,"description":1957,"feature_image":13,"visibility":1994,"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":2048},"60a37fc7cf7b6a0001d1f144","[DICT] Translation Management System (TMS)","term-39","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-39\u002F",{"id":2050,"name":2051,"slug":2052,"description":1965,"feature_image":13,"visibility":1994,"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":2053},"60a37fc7cf7b6a0001d1f121","[DICT] Translation","term-4","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-4\u002F",{"id":2055,"name":2056,"slug":2057,"description":1975,"feature_image":13,"visibility":1994,"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":2058},"60fa912b6f8ebe0001bd8c0e","[DICT] Streamlit","term-94","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fterm-94\u002F",{"id":2060,"name":2061,"slug":2062,"description":13,"feature_image":13,"visibility":1994,"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":2063},"60fffb486f8ebe0001bd8ddd","[COMSHARE]","comshare","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fcomshare\u002F",{"id":2065,"name":2066,"slug":2067,"description":13,"feature_image":13,"visibility":1994,"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":2068},"64710a2f047091000193ca3d","[INTERCOM]","intercom","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fintercom\u002F",{"id":1854,"name":1855,"slug":1856,"profile_image":1857,"cover_image":13,"bio":13,"website":13,"location":2000,"facebook":13,"twitter":13,"meta_title":13,"meta_description":13,"url":2001},{"id":2004,"name":2005,"slug":2006,"description":2007,"feature_image":13,"visibility":1994,"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":2008},"https:\u002F\u002Fghost.localazy.com\u002Fhow-to-build-a-multi-language-dashboard-with-streamlit\u002F",[2073,2093,2112],{"id":2074,"owner":2075,"created_by":13,"sort":13,"title":2080,"slug":2081,"modified_on":1788,"created_on":2082,"pinned":14,"badge":13,"priority":1824,"main_image":2083,"status":6,"tags":2084,"dictionary":2092,"reading_time":1835,"excerpt":-1,"og_title":1788,"og_description":1788,"og_image":1788},"6372308e04709100019374c9",{"id":2076,"first_name":2077,"last_name":1788,"slug":2078,"avatar":2079},"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",[2085,2087,2088,2089],{"id":2086,"created_on":1828,"status":6,"label":940,"slug":941,"on_index_page":16},6183,{"id":68,"created_on":1828,"status":6,"label":1865,"slug":1866,"on_index_page":14},{"id":68,"created_on":1828,"status":6,"label":1868,"slug":1869,"on_index_page":16},{"id":110,"created_on":1828,"status":6,"label":2090,"slug":2091,"on_index_page":14},"Design","design",[],{"id":2094,"owner":2095,"created_by":13,"sort":13,"title":2100,"slug":2101,"modified_on":1788,"created_on":2102,"pinned":14,"badge":13,"priority":1824,"main_image":2103,"status":6,"tags":2104,"dictionary":2111,"reading_time":1835,"excerpt":-1,"og_title":1788,"og_description":1788,"og_image":1788},"67cec8e634f1ce00011a908c",{"id":2096,"first_name":2097,"last_name":1788,"slug":2098,"avatar":2099},"60a37d0bcf7b6a0001d1eca7","Localazy Team","localazy-team","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2022\u002F11\u002FLogo-Gradient.png","A beginner's guide to pluralization in software localization","pluralization-in-software-localization-beginners-guide","2025-07-21T08:47:00.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2025\u002F06\u002FPluralization-2.png",[2105,2107,2108],{"id":68,"created_on":1828,"status":6,"label":2106,"slug":1366,"on_index_page":14},"Plurals",{"id":68,"created_on":1828,"status":6,"label":1868,"slug":1869,"on_index_page":16},{"id":68,"created_on":1828,"status":6,"label":2109,"slug":2110,"on_index_page":14},"Guide","guide",[],{"id":2113,"owner":2114,"created_by":13,"sort":13,"title":2119,"slug":2120,"modified_on":1788,"created_on":2121,"pinned":14,"badge":13,"priority":1824,"main_image":2122,"status":6,"tags":2123,"dictionary":2130,"reading_time":1835,"excerpt":-1,"og_title":1788,"og_description":1788,"og_image":1788},"63dd1bf30470910001939f8b",{"id":2115,"first_name":2116,"last_name":1788,"slug":2117,"avatar":2118},"61dc4e87df4bcb00010bd508","Mary Okosun","mary-okosun","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Fokosun.png","The ultimate guide to Localazy API","the-ultimate-guide-to-localazy-api","2023-03-15T10:00:00.000+01:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F03\u002Fultimate-localazy-api-guide.png",[2124,2125,2128,2129],{"id":68,"created_on":1828,"status":6,"label":75,"slug":76,"on_index_page":14},{"id":68,"created_on":1828,"status":6,"label":2126,"slug":2127,"on_index_page":14},"Automated Localization","automated-localization",{"id":68,"created_on":1828,"status":6,"label":1865,"slug":1866,"on_index_page":14},{"id":68,"created_on":1828,"status":6,"label":2109,"slug":2110,"on_index_page":14},[],{"id":142,"sort":13,"created_on":2132,"name":2133,"cta_link":2134,"banner_image":2135},"2022-03-17T12:23:14.000Z","default","https:\u002F\u002Flocalazy.com\u002Ffeatures\u002Flocalazy-ai",{"id":2136},"72defd59-a21d-44b9-822c-4e183ca62b99"]