Title: LangSpector
Author: Analyses-Web
Published: <strong>September 21, 2026</strong>
Last modified: September 21, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/langspector.svg)

# LangSpector

 By [Analyses-Web](https://profiles.wordpress.org/ulissse/)

[Download](https://downloads.wordpress.org/plugin/langspector.0.4.22.zip)

 * [Details](https://wordpress.org/plugins/langspector/#description)
 * [Reviews](https://wordpress.org/plugins/langspector/#reviews)
 *  [Installation](https://wordpress.org/plugins/langspector/#installation)
 * [Development](https://wordpress.org/plugins/langspector/#developers)

 [Support](https://wordpress.org/support/plugin/langspector/)

## Description

LangSpector scans a Polylang site and reports multilingual inconsistencies without
changing site content.

LangSpector Free checks:
 * Invalid or inconsistent Polylang translation relations(
intentionally missing translations are not treated as errors). * Internal links 
to posts or pages pointing to another language when a translation in the current
language exists. * Suggested URL for the matching translation. * Multilingual health
score. * Report filters by severity, finding type, language and status.

The Free edition scans all eligible content, displays all core findings and includes
report filters. LangSpector Pro is a separate add-on that adds taxonomy, menu, mixed-
language passage, SEO metadata and multilingual ALT checks. Language analysis is
fully local and uses compact fixed language profiles made of whole-word markers 
and a small set of characteristic fragments, comparing only the languages configured
in Polylang.

LangSpector stores only its scan reports and ignore preferences in its own database
tables. It does not send site content to an external service and does not automatically
fix anything.

### Safety

LangSpector is deliberately read-only. It never updates posts, terms, menus, SEO
fields or Polylang relationships.

### Support

For questions about LangSpector, installation, audits, compatibility, purchases,
licenses or technical issues, please use the official LangSpector Support system:

https://analyses-web.com/langspector/support/

## Installation

 1. Install and activate Polylang.
 2. Upload and activate LangSpector.
 3. Open LangSpector > Dashboard.
 4. Click “Start scan”.
 5. Review findings under LangSpector > Report.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“LangSpector” is open source software. The following people have contributed to 
this plugin.

Contributors

 *   [ Analyses-Web ](https://profiles.wordpress.org/ulissse/)

[Translate “LangSpector” into your language.](https://translate.wordpress.org/projects/wp-plugins/langspector)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/langspector/), check
out the [SVN repository](https://plugins.svn.wordpress.org/langspector/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/langspector/) by
[RSS](https://plugins.trac.wordpress.org/log/langspector/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.4.22

 * Remove a stray decorative “P” shown in the Free dashboard upgrade section.
 * No scan, filtering or detection logic changes.

#### 0.4.21

 * Make severity, finding-type and language report filters part of the fully functional
   Free edition.
 * Detect the separately installed Pro add-on by plugin presence rather than by 
   license state.
 * Update Free/Pro interface wording without changing scan rules, severities or 
   audit results.

#### 0.4.20

 * Finalize Analyses-Web publisher metadata and WordPress.org contributor information.
 * Keep scan logic, database behaviour and audit results unchanged.

#### 0.4.19

 * Pass each report-filter placeholder value explicitly to wpdb::prepare() so Plugin
   Check can verify the exact replacement count.
 * Document intentional uncached writes to LangSpector-owned custom tables without
   changing scan or report behaviour.

#### 0.4.18

 * Rewrite report filtering queries with fixed prepared SQL so Plugin Check can 
   verify all database parameters without changing report behaviour.

#### 0.4.17

 * Add translator comments for all localized strings that contain placeholders.
 * Remove the no-longer-needed manual translation loader for WordPress.org-hosted
   translations.
 * Clarify nonce handling for read-only report filters and AJAX requests already
   protected by LangSpector’s nonce guard.
 * Use WordPress database identifier placeholders for custom table names and document
   intentional direct access to LangSpector-owned tables.
 * Prefix the uninstall-loop variable and harden custom-table cleanup queries without
   changing uninstall behaviour.

#### 0.4.16

 * Add explicit GPL license metadata to the main plugin header.
 * Add the official LangSpector Support destination to the plugin readme.
 * Simplify the uninstall-data checkbox handling without changing behaviour.

#### 0.4.15

 * Treat the www and non-www variants of the site hostname as the same internal 
   domain during link audits.

#### 0.4.14

 * Add internally validated compact profiles for Japanese, Chinese, Korean, Ancient
   Greek and Ligurian.
 * Add dense-script handling for Korean Hangul while preserving the existing conservative
   short-text rules.
 * Complete the validated local language set at 73 profiles.

#### 0.4.13

 * Add internally validated compact profiles for Gujarati, Kannada, Marathi, Nepali,
   Sanskrit, Sinhala, Tamil, Telugu, Thai and Tibetan.
 * Adapt linguistic-unit counting for Thai text, which does not normally separate
   every word with spaces.

#### 0.4.12

 * Add internally validated compact profiles for Azerbaijani, Armenian, Kyrgyz, 
   Tatar, Kurmanji, Amharic, Tigrinya, Luganda, Setswana and Yoruba.
 * Treat a marker as strong when it is unique among the languages actually configured
   in Polylang, including two-language sites.

#### 0.4.11

 * Add internally validated compact profiles for Arabic, Persian, Urdu, Hebrew, 
   Hindi, Bengali, Vietnamese, Indonesian, Malay and Tagalog/Filipino.
 * Keep detection conservative for short Indonesian/Malay metadata where the two
   languages remain too close to call reliably.
 * Preserve combining marks when tokenizing Unicode scripts so Indic and similar
   writing systems are analysed as complete words.
 * Accept the common `fil` language code as an alias of Tagalog (`tl`).
 * Refine Norwegian Bokmål markers to avoid a remaining Norwegian/Danish confusion
   found during regression testing.

#### 0.4.10

 * Add internally validated compact profiles for Afrikaans, Basque, Irish, Scottish
   Gaelic, Icelandic, Luxembourgish, Latin and Haitian Creole.

#### 0.4.9

 * Add internally validated compact profiles for Croatian, Slovenian, Serbian, Macedonian,
   Albanian, Estonian, Latvian and Lithuanian.
 * Improve Unicode lowercase handling for cased scripts when mbstring is unavailable.

#### 0.4.8

 * Add internally validated compact profiles for Polish, Swedish, Danish, Norwegian
   Bokmål, Finnish, Romanian, Catalan, Czech, Slovak, Hungarian, Turkish, Greek,
   Russian, Ukrainian and Bulgarian.
 * Use only language profiles that have passed internal confusion tests; profiles
   still under preparation are ignored until validated.
 * Improve Danish/Norwegian separation while remaining conservative on short titles.

#### 0.4.7

 * Reduces false language mismatches in short SEO titles and ALT text by requiring
   multiple discriminating word markers.
 * Ignores bare domain names during language detection and refines common French
   markers.

#### 0.4.6

 * Restore the lighter ALT admission rules used before 0.4.4; remove the special
   six-word/title-case ALT pre-filter.
 * Add distinct report labels for SEO title and SEO description language findings.

#### 0.4.5

 * Replace the large raw n-gram profiles with compact, human-readable language profiles.
 * Use up to 40 whole-word markers and 15 characteristic fragments for the main 
   FR/EN/DE/ES/IT/NL/PT profiles.
 * Weight shared markers automatically across the active Polylang languages so closely
   related languages do not dominate each other.
 * Keep compact fallback profiles for additional supported languages without learning
   from site content.
 * Preserve the conservative ALT rules introduced in 0.4.4.

#### 0.4.4

 * Make multilingual ALT analysis conservative: ignore samples with fewer than six
   words or insufficient linguistic signal.
 * Ignore ALT labels dominated by brand/product-style title-cased names to reduce
   short-text false positives.
 * Keep the fixed n-gram language engine unchanged for content and SEO metadata.

#### 0.4.3

 * Replace the mixed-language detector with a single fixed character n-gram engine
   independent of site content.
 * Compare text only with language profiles for the languages actually configured
   in Polylang.
 * Use the same deterministic detection engine for visible content, SEO metadata
   and ALT text, with conservative context-specific confidence thresholds.
 * Remove site-trained profiles and lexical/script fallback chains that could create
   contradictory results.

#### 0.4.2

 * Make mixed-language detection prefer only the languages actually configured in
   Polylang.
 * Use site-trained language profiles for SEO metadata and other sufficiently long
   text, not only article passages.
 * Tighten confidence margins for short metadata and ALT text to reduce false positives
   between closely related languages.

#### 0.4.0

 * Require WordPress 6.5 or later.
 * Resolve genuinely relative internal links against the current content permalink.
 * Keep only the latest completed audit and remove older scan records automatically.
 * Mark broken Polylang translation relations as Critical.
 * Add a conservative local language detector that learns n-gram profiles from the
   languages configured in Polylang, with Unicode-script and lexical fallbacks.
 * Add an optional setting to remove all LangSpector data on uninstall.

#### 0.3.2

 * Restore the proven WP_Query offset-based scan engine used before version 0.3.0.
 * Keep the eligible-content total fixed for the complete audit and stop strictly
   when that total is reached.
 * Discard stale scan locks after an interrupted audit while continuing to prevent
   concurrent scans.

#### 0.3.1

 * Finalize a scan as soon as the announced eligible-content total is reached, even
   if content changes while the audit is running.
 * Run report finalization in a dedicated request and show the finalization stage
   explicitly.
 * Optimize the final score query and add a composite findings index for large sites.

#### 0.3.0

 * Remove content and report quotas from the Free edition.
 * Keep the Free/Pro distinction based on audit features.
 * Prevent overlapping audits and use efficient cursor-based scan batches.
 * Declare Polylang as a required plugin.

#### 0.2.3

 * Make the View Pro plans button more visible without changing its position.
 * Add Pro plan links to the Free limit explanations in the dashboard and report.

#### 0.2.2

 * Add contextual upgrade buttons on the Dashboard, Report and Settings pages.
 * Add an Upgrade to Pro link on the WordPress Plugins page.
 * Direct users who already installed the Pro extension to license activation.

#### 0.2.1

 * Make Free scan and report limits prominent before an audit.
 * Record and display exact audit coverage: analyzed contents versus all eligible
   contents.
 * Mark scores from limited Free scans as partial.
 * Clarify that an empty limited report covers only the analyzed sample, not the
   entire site.
 * Show the Free coverage limit during scan progress.

#### 0.2.0

 * Introduce the Free core and Pro extension architecture.
 * Limit Free audits to 50 contents and Free reports to 20 displayed findings.
 * Move advanced audit checks out of the Free package and expose extension hooks
   for LangSpector Pro.
 * Add clear Free/Pro edition indicators and edition-specific settings information.

#### 0.1.6

 * Recalculate the score and severity counts immediately after Ignore or Reactivate.
 * Show active findings by default and clarify the Active, Ignored and All results
   filters.
 * Add concise explanations for scoring and persistent ignores.
 * Improve empty-report messaging and dashboard heading visibility.

#### 0.1.5

 * Remove the temporary Verified workflow from reports.
 * Show Ignore only for active findings and Reactivate only for ignored findings.
 * Convert legacy Verified findings back to New during the database upgrade.

#### 0.1.4

 * Display the multilingual health score with one decimal place.
 * Reserve a displayed score of 100/100 for scans with no active findings.

#### 0.1.3

 * Remove generic ALT-missing warnings; report only genuinely multilingual ALT inconsistencies.
 * Preserve query strings and URL fragments such as #comments in suggested translated
   links.
 * Reclassify ordinary wrong-language content/taxonomy links from Critical to Important.
 * Open Edit actions in a new browser tab, matching View.

#### 0.1.2

 * Do not report intentionally missing translations as findings or include them 
   in the health score.
 * Accept empty per-post Yoast/Rank Math fields when global templates provide the
   effective metadata.
 * Accept SEO template variables such as %%title%% and %%page%% without treating
   them as missing.
 * Greatly tighten mixed-language detection and skip list-like/scientific passages
   to reduce false positives.
 * Stop artificially repeating SEO/ALT text for language detection.

#### 0.1.1

 * Fix exact URL resolution on Polylang sites to prevent sibling translations being
   misidentified.
 * Never report a wrong-language link when current and suggested URLs are equivalent.
 * Resolve taxonomy links by exact translated URL.
 * Replace raw-finding score with an affected-object weighted score suitable for
   large sites.

#### 0.1.0

 * Initial V1 prototype.

## Meta

 *  Version **0.4.22**
 *  Last updated **14 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [audit](https://wordpress.org/plugins/tags/audit/)[links](https://wordpress.org/plugins/tags/links/)
   [multilingual](https://wordpress.org/plugins/tags/multilingual/)[polylang](https://wordpress.org/plugins/tags/polylang/)
   [quality](https://wordpress.org/plugins/tags/quality/)
 *  [Advanced View](https://wordpress.org/plugins/langspector/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/langspector/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/langspector/reviews/)

## Contributors

 *   [ Analyses-Web ](https://profiles.wordpress.org/ulissse/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/langspector/)