Description
This plugin adds a Language Detection menu to the WordPress admin area. From there, you can select a post or page and see a preview of its content, with any foreign language passages highlighted for you. The plugin currently recognizes five languages: French, English, Spanish, German and Italian. A simple checklist lets you approve or reject each highlighted passage one by one, so nothing is changed without your review.
Once you approve a passage, it is permanently saved in the content as a span element carrying the correct language attribute. This tells screen readers and other assistive technology to switch to the right pronunciation for that piece of text, instead of reading it aloud as if it were written in the site main language. This directly improves the accessibility of your content for people who rely on screen readers or text to speech tools.
The plugin detects languages using a statistical method that looks at common letter patterns, rather than sending your content to any outside website or service. Nothing ever leaves your own server, and no data is shared with anyone.
Please note that the language attribute added by this plugin is invisible to regular visitors. It has no effect on how the text looks on the page. Only the plugin admin screen shows a colored highlight, so you can see and check which passages have been detected.
Correctly identifying the language of text passages is one of the accessibility success criteria referenced by European accessibility regulation, which applies across the European Union. This plugin helps website owners address that specific requirement.
Main features
- An “Analyze Content” screen where you choose a post or page, see a highlighted preview, and approve or reject each passage one by one
- Every change is saved as a normal WordPress revision, so you can always undo it later
- Detection of a single foreign word hidden inside an otherwise normal sentence, in addition to full sentences and longer passages
- A custom glossary where you can teach the plugin extra words or short expressions and the language they belong to, which always takes priority over automatic detection
- The plugin remembers which passages you rejected, so they will not be suggested again the next time you run an analysis on the same content
- Works with content built using a page builder, in addition to the standard WordPress editor
- Code blocks, preformatted text, scripts and styles are always left untouched
- An optional automatic mode that marks passages live on the page without saving anything, switched off by default
- An admin interface available in five languages: French, English, Spanish, German and Italian
A note on privacy
This plugin does not collect any personal data, does not set any cookies, and does not send any information to outside websites or services. Every step of the language detection process happens locally, on your own server, using dictionaries that are bundled with the plugin itself.
Installation
- Upload the
benjamin-thiers-foreign-language-accessibility-detectorfolder to the/wp-content/plugins/directory, or install the plugin directly from the WordPress plugin directory. - Activate the plugin through the “Plugins” menu in WordPress.
- Go to the new “Language Detection” menu to analyze a piece of content.
FAQ
-
Does this plugin call any external service?
-
No. Language detection is performed locally using a bundled statistical library and dictionaries. No content is sent anywhere.
-
Does the lang=”xx” attribute change how the text looks on the front end?
-
No. It is a purely semantic HTML attribute used by assistive technologies (screen readers, text-to-speech). It has no visual effect for sighted visitors.
-
What happens to content already validated if I deactivate or uninstall the plugin?
-
Passages already saved as
<span lang="xx">directly in a post’s content remain in that content after deactivation or uninstallation, since they were written into the post content itself. Passages managed for page-builder content (stored as post meta) will simply stop being applied once the plugin is deactivated. -
Can I add words or expressions that aren’t detected automatically?
-
Yes, using the custom glossary (term -> language). Terms added there always take priority over automatic detection.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Benjamin Thiers Foreign Language Accessibility Detector” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Benjamin Thiers Foreign Language Accessibility Detector” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.8.2
- UX: added a contextual tip on the review checklist: when a whole sentence isn’t detected as a single block (only some of its words are flagged), it now suggests unchecking those words and adding the full sentence to the glossary instead, so it’s recognized as one piece going forward.
1.8.1
- Fixed missing translations: the strings introduced by the last three features (page builder support, rejection memory, per-analysis language filter) were only available in English. All 4 languages (FR, DE, ES, IT) are now complete again.
1.8.0
- The “Analyze” page now lets you check/uncheck which foreign languages to search for, per analysis (independent from the global settings). Useful to avoid false positives such as a common English word being mistaken for another language when you know only one foreign language is actually present in the content.
1.7.1
- Bug fix: a rejected passage (unchecked then applied) had no persistent memory and would reappear as a “new” candidate on the very next analysis. Rejections are now remembered per content, excluded from future suggestions, with a button to undo if needed.
1.7.0
- New: support for page-builder content (e.g. Elementor) whose post_content is not the rendering source. The plugin now fetches the actually rendered HTML in-process to analyze it, and stores validated passages as post meta instead of writing into post_content. Classic content (Gutenberg/Classic Editor) is unaffected.
- The “Analyze” page now shows an “Elementor” tag next to page-builder-managed content in the search list.
1.6.0
- Admin interface translated into English, German, Spanish and Italian (in addition to French).
1.5.0
- Merging of nearby words detected in the same foreign language (e.g. “Small is beautiful”): up to 2 short undetected words between them no longer split the expression into isolated pieces.
1.4.0
- On the “Analyze Content” page, already-flagged passages are now listed in read-only mode instead of showing the generic “no passage detected” message.
- New dedicated “Glossary” page: add, sortable list, filter by language, free-text search, delete.
1.3.1
- Fix: re-running analysis/apply on already-corrected content could nest duplicate
<span lang="xx">tags. Text already wrapped in an element carrying a lang attribute is now never re-analyzed.
1.3.0
- New: glossary of custom terms/expressions (term -> language), with priority over automatic detection.
1.2.0
- Word-by-word detection (frequency dictionaries, 5 x 40,000 words): catches an isolated foreign word slipped into a base-language sentence.
- Content selector replaced by a search/autocomplete field (by title or ID), suited to sites with a lot of content.
- New setting to enable/disable word-by-word detection.
1.1.0
- New: manual analysis and validation page, page by page.
- Automatic mode becomes optional and is disabled by default.
1.0.0
- Initial release.