[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$faM4PSt2OlVazQfhvrNdSsU1avHo7F58OESLrt_E7KxY":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":22,"download_link":23,"security_score":24,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27,"vulnerabilities":28,"developer":29,"crawl_stats":26,"alternatives":37,"analysis":137,"fingerprints":208},"language-downloader","Language Downloader","0.4","Brandon Kraft","https:\u002F\u002Fprofiles.wordpress.org\u002Fkraftbj\u002F","\u003Cp>Allows for on-the-fly downloading of new translations using WordPress 4.0 Translation API improvements.\u003C\u002Fp>\n\u003Ch3>Thanks\u003C\u002Fh3>\n\u003Cp>A special thanks to all who have contributed to development.\u003C\u002Fp>\n\u003Ch4>Code Contributions\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Ryan Duff\u003C\u002Fli>\n\u003C\u002Ful>\n","Allows for on-the-fly downloading of new translations using WordPress 4.0 Translation API improvements. Early version, use at your own risk.",10,3138,100,1,"2023-10-10T20:20:00.000Z","4.0.38","4.0","",[20,21],"languages","translation","http:\u002F\u002Fwww.brandonkraft.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flanguage-downloader.zip",85,0,null,"2026-03-15T15:16:48.613Z",[],{"slug":30,"display_name":7,"profile_url":8,"plugin_count":31,"total_installs":32,"avg_security_score":33,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},"kraftbj",6,40710,98,30,93,"2026-04-04T07:33:51.783Z",[38,61,83,100,121],{"slug":39,"name":40,"version":41,"author":42,"author_profile":43,"description":44,"short_description":45,"active_installs":46,"downloaded":47,"rating":48,"num_ratings":49,"last_updated":50,"tested_up_to":51,"requires_at_least":52,"requires_php":53,"tags":54,"homepage":18,"download_link":58,"security_score":59,"vuln_count":14,"unpatched_count":25,"last_vuln_date":60,"fetched_at":27},"theme-translation-for-polylang","Theme and plugin translation for Polylang (TTfP)","3.4.9","Marcin Kazmierski","https:\u002F\u002Fprofiles.wordpress.org\u002Fmarcinkazmierski\u002F","\u003Ch4>What is “Theme and plugin translation for Polylang”?\u003C\u002Fh4>\n\u003Cp>Extension for Polylang plugin (Polylang is an extension to make multilingual WordPress websites.).\u003Cbr \u002F>\nPlugin is needed to translate the WordPress themes and plugins by Polylang.\u003C\u002Fp>\n\u003Ch4>How to configure it?\u003C\u002Fh4>\n\u003Cp>Select themes and plugins to find texts for translation by Polylang.\u003Cbr \u002F>\nIn admin dashboard:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Languages -> TTfP Settings\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>How it is work?\u003C\u002Fh4>\n\u003Cp>“Theme and plugin translation for Polylang” automatically searches all files of WordPress themes and plugins. It chooses from this file only those files with extensions:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>php\u003C\u002Fli>\n\u003Cli>inc\u003C\u002Fli>\n\u003Cli>twig\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>In addition, is implemented the integration with Timber library (read more: http:\u002F\u002Ftimber.upstatement.com) – which allows to translate twig’s skins in simple way.\u003Cbr \u002F>\nPlugin in searched skins or plugins chooses texts from Polylang functions, such as:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>_e(string $text, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>__(string $text, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>_x(string $text, string $context, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>pll_e(string $text);\u003C\u002Fli>\n\u003Cli>pll__(string $text);\u003C\u002Fli>\n\u003Cli>esc_html(string $text);\u003C\u002Fli>\n\u003Cli>esc_html_e(string $text, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>esc_html__(string $text, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>_n(string $single, string $plural, int $number, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>esc_attr_e(string $text, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>esc_attr__(string $text, string $domain = ‘default’);\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>In your function.php, themes or plugins.\u003C\u002Fp>\n\u003Cp>For example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003Cp>\u003C?php pll_e('My text'); ?>\u003C\u002Fp>\n\n\u003Cp>\u003C?php _e('My another text', 'my_theme'); ?>\u003C\u002Fp>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>On the timber context declare this functions like:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$context['pll_e'] = TimberHelper::function_wrapper('pll_e');\n\n$context['pll_'] = TimberHelper::function_wrapper('pll_');\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>See more on: \u003Ccode>https:\u002F\u002Fpolylang.wordpress.com\u002Fdocumentation\u002Fdocumentation-for-developers\u002Ffunctions-reference\u002F\u003C\u002Fcode>\u003Cbr \u002F>\nThese functions are defined by Polylang plugin for printing translations.\u003Cbr \u002F>\nThanks “Theme and plugin translation for Polylang” you can find these strings to translate and add to Polylang register on very simple way.\u003Cbr \u002F>\nAnd then you can translate these texts from the admin dashboard.\u003Cbr \u002F>\nThe scan result can be seen on the tab with translations:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Settings -> Languages -> String translation\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>or\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Languages -> String translation\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You don’t need programs like poedit – you don’t change files with extensions like: \u003Ccode>.pot\u003C\u002Fcode>, \u003Ccode>.po\u003C\u002Fcode>, \u003Ccode>.mo\u003C\u002Fcode>.\u003Cbr \u002F>\n“Theme and plugin translation for Polylang” is highly efficient because the scanner is worked only on admin dashboard in tab:\u003Cbr \u002F>\nIn dashboard:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Settings -> Languages -> String translation\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>or\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Languages -> String translation\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Export and import string translation\u003C\u002Fh4>\n\u003Cp>In dashboard:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Languages -> TTfP Settings\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Filter reference\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>ttfp_domains\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Allows plugins and themes (in functions.php) to modify list of text domains (unique identifier for retrieving translated strings).\u003Cbr \u002F>\nList of text domains is displayed on “TTfP Settings” page to select them for translation by polylang engine.\u003C\u002Fp>\n\u003Cp>Example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter('ttfp_domains', 'custom_ttfp_domains', 10, 1);\nfunction custom_ttfp_domains(array $domains):array\n {\n     $domains[] = \"my-custom-domain\";\n     return $domains;\n }\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Filter reference\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>ttfp_translation_access\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Returns whether the user has capability to view and edit translations provided by TTfP.\u003C\u002Fp>\n\u003Cp>Example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter('ttfp_translation_access', 'custom_ttfp_translation_access', 10, 1);\nfunction custom_ttfp_translation_access(bool $hasAccess):bool\n {\n     return current_user_can('edit_posts');\n }\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Theme and plugin translation using Polylang for WordPress. Extension for Polylang plugin.",10000,269744,94,35,"2025-03-15T15:35:00.000Z","6.6.5","5.7","7.0",[20,55,56,57,21],"multilanguage","polylang","translate","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftheme-translation-for-polylang.3.4.9.zip",92,"2022-11-28 00:00:00",{"slug":62,"name":63,"version":64,"author":65,"author_profile":66,"description":67,"short_description":68,"active_installs":69,"downloaded":70,"rating":71,"num_ratings":72,"last_updated":73,"tested_up_to":74,"requires_at_least":75,"requires_php":76,"tags":77,"homepage":81,"download_link":82,"security_score":13,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27},"events-manager-wpml","Events Manager and WPML Compatibility","2.0.4","Marcus (aka @msykes)","https:\u002F\u002Fprofiles.wordpress.org\u002Fnetweblogic\u002F","\u003Cp>This plugin helps make \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fevents-manager\u002F\" rel=\"ugc\">Events Manager\u003C\u002Fa> and \u003Ca href=\"http:\u002F\u002Fwpml.org\" rel=\"nofollow ugc\">WPML\u003C\u002Fa> work better together by allowing translation of all event-related features:\u003C\u002Fp>\n\u003Cp>** Version 2.0 is a major revamp that fixes \u003Cem>all known issues\u003C\u002Fem>, nuances and limitiation. 2.0 enables \u003Cem>full compatiblity\u003C\u002Fem> with \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fevents-manager\u002F\" rel=\"ugc\">Events Manager\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Feventsmanagerpro.com\" rel=\"nofollow ugc\">Events Manager Pro Add-ons\u003C\u002Fa> **\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Detects translated pages of specific EM pages (assigned in Events > Settings > Pages) and displays relevant language content\u003C\u002Fli>\n\u003Cli>Searching locations and events within the context of the current language being viewed.\u003C\u002Fli>\n\u003Cli>Recurring events can be created in multiple languages, recurrence translations are correctly created.\u003C\u002Fli>\n\u003Cli>Event translations will share relevant information across all translations, including\n\u003Cul>\n\u003Cli>Event Times\u003C\u002Fli>\n\u003Cli>Location Information\u003C\u002Fli>\n\u003Cli>If translations for the location exist, translated events will show\u002Flink to location of the same language, if not the original location translation.\u003C\u002Fli>\n\u003Cli>Bookings and Booking Forms\u003C\u002Fli>\n\u003Cli>If you delete an event that is the originally translated event, booking and other meta info is transferred to default language or next available language translation.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Location address information can be translated, whilst sharing coordinate, country\u002Fzip information accross translations.\u003C\u002Fli>\n\u003Cli>Event-related text can be translated for each language including:\n\u003Cul>\n\u003Cli>Custom texts, emails templates and formats on the settings page.\u003C\u002Fli>\n\u003Cli>Booking and attendee custom forms (available in Pro)\u003C\u002Fli>\n\u003Cli>Custom event and gateway emails (available in Pro)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>MultiSite cross-site support, including showing events from other blogs in your network when EM Global Tables Mode is enabled.\u003C\u002Fli>\n\u003Cli>Displaying untranslated items in lists or hiding them, according to WPML settings.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Special Installation Steps\u003C\u002Fh4>\n\u003Cp>Please ensure that WPML 4.2 and EM 5.6.7 or higher are installed BEFORE updating or activating this plugin.\u003C\u002Fp>\n\u003Cp>When setting up EM and WPML, you should create translated versions of the event, location, category, tag, etc. pages assigned in Events > Settings > Pages of your admin area. Duplicating them using WPML is enough.\u003C\u002Fp>\n\u003Cp>Given the flexibiltiy of both plugins, there is an huge number of possible setting\u002Flanguage combinations to test, and despite our rigorous testing it is impossible to test every setting combination and scenario. To the best of our knowledge, we have achieved 100% compatibility, but should you come across on your setup and we’ll do our best to fix them as time permits.\u003C\u002Fp>\n","Integrates the Events Manager and WPML plugins together to provide a smoother multilingual experience (Requires Events Manager and WPML)",1000,38031,56,13,"2025-04-23T10:15:00.000Z","6.8.5","3.3","5.2",[78,20,79,21,80],"events","multilingual","wpml","https:\u002F\u002Fwp-events-plugin.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fevents-manager-wpml.2.0.4.zip",{"slug":57,"name":84,"version":85,"author":86,"author_profile":87,"description":88,"short_description":89,"active_installs":90,"downloaded":91,"rating":25,"num_ratings":25,"last_updated":92,"tested_up_to":93,"requires_at_least":93,"requires_php":18,"tags":94,"homepage":98,"download_link":99,"security_score":24,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27},"Translate","1.2","Verdi Heinz","https:\u002F\u002Fprofiles.wordpress.org\u002Fver3\u002F","\u003Cp>There are plenty of auto translate plugins, but they leave the content rigid with grammatical errors.  For those needing a solution to translate a WordPress site manually into unlimited languages or versions, WP-Translate is for you.  Using shortcodes, template tags, and a widget, you can easily create a site that will reflect appropriate content, images, links, and text for each language.  You can use simple shortcodes in your content, or customize your templates to change your entire site.  The beautiful thing is that you don’t need to create multiple posts or pages for each language.  All content is filtered off one post\u002Fpage.\u003C\u002Fp>\n\u003Ch3>Changes\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Translate no longer uses commas as delimiters for the parameters, use the | pipe symbol instead.  This caused problems when trying to translate paragraphs with commas.\u003C\u002Fli>\n\u003Cli>Nested shortcodes.  You can now add contact forms, photo galleries and whatever other plugin that uses shortcodes into the [translate] tags.\u003C\u002Fli>\n\u003C\u002Ful>\n","There are plenty of auto translate plugins, but they leave the content rigid with grammatical errors.  For those needing a solution to translate a Wor &hellip;",70,38258,"2009-04-10T14:38:00.000Z","2.7",[95,96,20,97,21],"images","language","tranlate","http:\u002F\u002Fwww.misternifty.com\u002Ftranslate","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftranslate.1.2.zip",{"slug":101,"name":102,"version":103,"author":104,"author_profile":105,"description":106,"short_description":107,"active_installs":108,"downloaded":109,"rating":13,"num_ratings":110,"last_updated":111,"tested_up_to":112,"requires_at_least":113,"requires_php":53,"tags":114,"homepage":117,"download_link":118,"security_score":119,"vuln_count":14,"unpatched_count":25,"last_vuln_date":120,"fetched_at":27},"smartcat-wpml","Smartcat Translator for WPML","3.1.77","smartcatai","https:\u002F\u002Fprofiles.wordpress.org\u002Fsmartcatai\u002F","\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.smartcat.com\u002F?utm_source=connectors&utm_medium=referral&utm_campaign=wordpress\" rel=\"nofollow ugc\">Smartcat\u003C\u002Fa> connects linguists, companies, and agencies to streamline the translation of any content into any language, on demand. Our platform puts your translation process on autopilot, from content creation to payments.\u003C\u002Fp>\n\u003Cp>The plugin allows you to set up an integration between your WPML-enabled WordPress site and Smartcat. The integration itself is configured in Smartcat. Once configured, it will automatically pull translatable content from your website to Smartcat, where you can translate it with your own linguists or the ones you pick from our Marketplace. Alternatively, you can use the power of machine translation and post-edit just the most important pages to reduce translation costs. Once your content is translated, Smartcat will push it back to WordPress, instantly publishable in the target language(s) of choice.\u003C\u002Fp>\n\u003Ch3>Account & pricing\u003C\u002Fh3>\n\u003Cp>You first need to create a Smartcat account as one is not automatically created when installing the extension.\u003Cbr \u002F>\nTo create an account, go to \u003Ca href=\"https:\u002F\u002Fwww.smartcat.com\" rel=\"nofollow ugc\">smartcat.com\u003C\u002Fa>. All translation features in Smartcat are free to use.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Connect your WordPress website with a specific Smartcat account\u003C\u002Fli>\n\u003Cli>Choose the translation supplier from your own team or Smartcat Marketplace\u003C\u002Fli>\n\u003Cli>Automatically send new or updated content for translation\u003C\u002Fli>\n\u003Cli>Reuse existing translations thanks to Translation Memory\u003C\u002Fli>\n\u003Cli>Choose translation workflow stages — translation, editing, proofreading, etc.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Benefits of Smartcat\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>No document re-formatting required\u003C\u002Fli>\n\u003Cli>Easy-to-use multilingual translation editor\u003C\u002Fli>\n\u003Cli>Multi-stage translation process — e.g., translation, editing, proofreading\u003C\u002Fli>\n\u003Cli>Free collaboration with your own volunteers or coworkers\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.smartcat.com\u002Fmarketplace\u002F?utm_source=connectors&utm_medium=referral&utm_campaign=wordpress\" rel=\"nofollow ugc\">Marketplace\u003C\u002Fa>\u003Cbr \u002F>\n of 350,000+ translators and 2,000+ agencies in 100+ language pairs\u003C\u002Fli>\n\u003Cli>Track progress by language, document, or person\u003C\u002Fli>\n\u003Cli>Automated payments to translation suppliers\u003C\u002Fli>\n\u003Cli>Free support to optimize localization processes\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>Contact us at \u003Ca href=\"mailto:support@smartcat.com\" rel=\"nofollow ugc\">support@smartcat.com\u003C\u002Fa> with any questions related to:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Module issues\u003C\u002Fli>\n\u003Cli>Assistance in vendor management (freelancers or LSPs)\u003C\u002Fli>\n\u003Cli>Use of the module for your clients needs\u003C\u002Fli>\n\u003C\u002Ful>\n","The easiest way to translate your WPML-enabled WordPress site into various languages.",60,15979,3,"2026-03-13T07:35:00.000Z","6.9.4","5.3",[20,115,79,21,116],"localization","translator","https:\u002F\u002Fsmartcat.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsmartcat-wpml.3.1.77.zip",99,"2025-09-10 18:45:26",{"slug":122,"name":123,"version":124,"author":125,"author_profile":126,"description":127,"short_description":128,"active_installs":11,"downloaded":129,"rating":25,"num_ratings":25,"last_updated":130,"tested_up_to":131,"requires_at_least":132,"requires_php":18,"tags":133,"homepage":135,"download_link":136,"security_score":24,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27},"basic-bilingual","Basic Bilingual","1.3.5","Steph","https:\u002F\u002Fprofiles.wordpress.org\u002Fsteph\u002F","\u003Cp>Allows you to set the language of individual posts and pages and to summarize\u003Cbr \u002F>\nthem in other languages.\u003C\u002Fp>\n\u003Cp>The excerpts are automatically inserted right before the post content, with the\u003Cbr \u002F>\ncorrect language attribute. The correct language attribute is also set on the\u003Cbr \u002F>\npost titles and original content.\u003C\u002Fp>\n\u003Cp>If you were using this plugin prior to version 1.0 you will have to migrate\u003Cbr \u002F>\nyour posts and pages.\u003C\u002Fp>\n\u003Col>\n\u003Cli>Make sure your back-up your database\u003C\u002Fli>\n\u003Cli>Select the same 2 languages you were previously using in the “Site languages”\u003Cbr \u002F>\noption\u003C\u002Fli>\n\u003Cli>Press the “Migrate” button on the settings page\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>You might want to check \u003Ca href=\"http:\u002F\u002Fclimbtothestars.org\u002Ffocus\u002Fmultilingual\" rel=\"nofollow ugc\">my work on multilingualism online\u003C\u002Fa>\u003Cbr \u002F>\nto understand what brought me to develop this plugin.\u003C\u002Fp>\n\u003Cp>We also welcome volunteers to translate that plugin into more languages. If you\u003Cbr \u002F>\nwish to help then contact \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fstephtara\" rel=\"nofollow ugc\">@stephtara\u003C\u002Fa> on Twitter\u003Cbr \u002F>\nor see \u003Ca href=\"http:\u002F\u002Fclimbtothestars.org\u002Fcontact\u002F\" rel=\"nofollow ugc\">Stephanie’s contact page\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cp>Following is the list of people who worked on this plugin.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fclimbtothestars.org\u002F\" rel=\"nofollow ugc\">Stephanie Booth\u003C\u002Fa>: Ideas and initial development.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fwww.freshlabs.de\u002Fjournal\u002F\" rel=\"nofollow ugc\">Tim Isenheim\u003C\u002Fa>: Contributed bug fixes.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Flpal.li\u002F\" rel=\"nofollow ugc\">Luca Palli\u003C\u002Fa>: Contributed bug fixes and features.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fvdvn.me\u002F\" rel=\"nofollow ugc\">Claude Vedovini\u003C\u002Fa>: Took over development for v1.0.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fnathalieaynie.com\u002F\" rel=\"nofollow ugc\">Nathalie Aynié\u003C\u002Fa>: Contributed the Italian\u003Cbr \u002F>\ntranslations.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fwww.webhostinghub.com\u002F\" rel=\"nofollow ugc\">Borisa Djuraskovic\u003C\u002Fa>: Contributed the\u003Cbr \u002F>\nSerbo-Croatian translations.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fjanspoelstra\" rel=\"nofollow ugc\">Jan Spoelstra\u003C\u002Fa>: Contributed the\u003Cbr \u002F>\nDutch translations.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Privacy Policy\u003C\u002Fh3>\n\u003Cp>This plugin does not collect any personal information from your visitors.\u003C\u002Fp>\n","Allows you to set the language of individual posts and pages and to summarize",14173,"2018-05-18T04:19:00.000Z","4.9.29","3.5",[134,96,20,79,21],"bilingual","http:\u002F\u002Fclimbtothestars.org\u002Fwordpress\u002Fbasic-bilingual\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbasic-bilingual.1.3.5.zip",{"attackSurface":138,"codeSignals":154,"taintFlows":167,"riskAssessment":195,"analyzedAt":207},{"hooks":139,"ajaxHandlers":150,"restRoutes":151,"shortcodes":152,"cronEvents":153,"entryPointCount":25,"unprotectedCount":25},[140,146],{"type":141,"name":142,"callback":143,"file":144,"line":145},"action","init","ld_kraft_load_textdomain","language-downloader.php",16,{"type":141,"name":147,"callback":148,"file":144,"line":149},"admin_menu","ld_add_settings_menu",29,[],[],[],[],{"dangerousFunctions":155,"sqlUsage":156,"outputEscaping":158,"fileOperations":25,"externalRequests":25,"nonceChecks":25,"capabilityChecks":25,"bundledLibraries":166},[],{"prepared":25,"raw":25,"locations":157},[],{"escaped":110,"rawEcho":159,"locations":160},2,[161,164],{"file":144,"line":162,"context":163},43,"raw output",{"file":144,"line":165,"context":163},48,[],[168,186],{"entryPoint":169,"graph":170,"unsanitizedCount":14,"severity":185},"ld_options_page (language-downloader.php:31)",{"nodes":171,"edges":182},[172,177],{"id":173,"type":174,"label":175,"file":144,"line":176},"n0","source","$_GET",40,{"id":178,"type":179,"label":180,"file":144,"line":162,"wp_function":181},"n1","sink","echo() [XSS]","echo",[183],{"from":173,"to":178,"sanitized":184},false,"medium",{"entryPoint":187,"graph":188,"unsanitizedCount":14,"severity":194},"\u003Clanguage-downloader> (language-downloader.php:0)",{"nodes":189,"edges":192},[190,191],{"id":173,"type":174,"label":175,"file":144,"line":176},{"id":178,"type":179,"label":180,"file":144,"line":162,"wp_function":181},[193],{"from":173,"to":178,"sanitized":184},"low",{"summary":196,"deductions":197},"The \"language-downloader\" plugin v0.4 exhibits a generally good security posture based on the provided static analysis. It has a minimal attack surface with no identified AJAX handlers, REST API routes, shortcodes, or cron events that are exposed. Furthermore, the code does not utilize dangerous functions and all SQL queries are properly prepared, which are excellent security practices.\n\nHowever, there are areas of concern. The taint analysis revealed two flows with unsanitized paths, although no critical or high severity issues were flagged from these. The lack of nonce checks and capability checks across all entry points is a significant weakness, meaning that any interaction with these (if they existed) would not be properly secured. Additionally, 40% of output escaping is not properly handled, which could lead to cross-site scripting vulnerabilities if user-supplied data is outputted without sanitization.\n\nThe plugin's vulnerability history is a strong positive, with zero recorded CVEs. This, combined with the absence of dangerous functions and prepared SQL statements, suggests the developers have prioritized security in known areas. Despite the identified taint flows and output escaping issues, the overall lack of a significant attack surface and past vulnerabilities points to a relatively low risk profile, but the potential for XSS and unauthorized action remains due to the missing security checks.",[198,201,203,205],{"reason":199,"points":200},"Unsanitized paths in taint flows",15,{"reason":202,"points":31},"Improper output escaping (40% unescaped)",{"reason":204,"points":11},"Missing nonce checks on entry points",{"reason":206,"points":11},"Missing capability checks on entry points","2026-03-17T01:24:13.496Z",{"wat":209,"direct":214},{"assetPaths":210,"generatorPatterns":211,"scriptPaths":212,"versionParams":213},[],[],[],[],{"cssClasses":215,"htmlComments":217,"htmlAttributes":218,"restEndpoints":221,"jsGlobals":222,"shortcodeOutput":223},[216],"success",[],[219,220],"lang=\"language-downloader\"","name=\"ld_language_downloader\"",[],[],[]]