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

Translate “LangSpector” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by 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.