Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/yolol100/translatewordpress/archive/refs/heads/main.zipFrontend translation plugin with manual translations, CSV/XLIFF import/export, scanning and a visual translation editor.
Built for review-first agency workflows: scan content, translate manually or with AI assistance, review changes, then publish with more control.
Description
Webactueel Translate scans frontend-visible WordPress content and lets administrators or translator-role users manage translations manually, visually or via CSV. The current release includes a stronger workflow layer: visual editing, managed AI batches, quality and context reporting, media translation, WooCommerce-aware output, browser-language redirects, Yoast/Rank Math SEO filters, hreflang/canonical/sitemap foundations, glossary-aware translation maps and lightweight performance diagnostics.
Features
- One WordPress admin page with tabs.
- Language management.
- Visual translation editor for editing page text in context, with manual AI suggestions, Translation Memory reuse and explicit review/publish actions.
- Dedicated translator role/capability for review-first translation workflows.
- Managed AI batch translation foundations for small, review-first administrator-controlled batches.
- Translation quality report data for missing translations, review work, identical source/target text and possible broken markup.
- Translation context warnings for reused source text, conflicting translation variants and multi-context strings.
- Media translation fields for per-language image replacements, alt text and titles.
- WooCommerce-aware product, variation, attribute, order-item and product-term translation filters.
- Browser-language redirect support with locale/q-value matching and safe request guards.
- Translation table with search and pagination.
- Batch scanner for posts, pages, public post types, Elementor data, ACF fields and WooCommerce products where available.
- CSV export, CSV preview and CSV import.
- Frontend-only output translation with fail-open safety.
- Translation map cache using object cache/transients.
- Compatibility detection for popular multilingual, SEO, cache, form and builder plugins.
- Hreflang output that disables itself when another multilingual plugin is detected unless force override is enabled.
- Shortcode: [webactueel_translate_switcher]
- Requires the PHP DOM/ext-xml extension for frontend HTML output translation; without it, the plugin activates safely and skips frontend replacement with an admin notice.
- Debug-only slow-buffer telemetry with duration, buffer size, map size, replacement count, URL rewrite count and memory peak.
- AI translation foundation for OpenAI, DeepL, Google Translate and OpenAI-compatible providers. API keys should be supplied via server constants or the wat_ai_api_key filter. Database storage through the admin UI is disabled by default and only works when explicitly enabled by WAT_ENABLE_DB_AI_CREDENTIALS or the wat_allow_db_ai_credentials filter. Submitted text is disclosed to the selected external provider only when AI translation is enabled.
- Review-first workflow statuses for AI/manual translations.
- Yoast SEO and Rank Math title/description filter support for per-language SEO metadata.
- Glossary-aware translation maps for consistent brand and terminology replacement.
- Opt-in frontend performance snapshot and admin-only Server-Timing header for buffer diagnostics.
- Multilingual SEO checks and translation coverage endpoints for publish-readiness checks.
- Optional switcher mode that hides globally empty target languages until translations are published or reviewed.
- AI context profile for site context, audience, preferred terminology and do-not-translate terms.
- WooCommerce mixed-language risk reporting for safer product/cart/checkout staging checks.
- Optional gettext discovery for dynamic WordPress/theme/plugin strings with a domain allow-list and per-request throttle.
- Optional runtime output-buffer discovery for unknown frontend text nodes and translatable attributes.
- Scanner support for navigation menus, active widgets and public taxonomy terms.
- Optional conditional publish mode that hides/redirects unpublished target languages until coverage is complete.
- Google Translate API provider option alongside OpenAI, DeepL and OpenAI-compatible providers.
Installation
- Upload webactueel-translate-language-dropdowns.zip in WordPress > Plugins > Nieuwe plugin.
- Activate Webactueel Translate.
- Open Webactueel Translate in the admin sidebar.
- Add languages, run a scan and add translations manually, visually, with managed AI batches or via CSV.
Performance and compatibility notes
Meertalige SEO bevat hreflang, per-taal canonicals, Yoast/Rank Math metadata filters en een optionele XML-sitemap-index via /?wat_language_sitemap=1. De sitemap wordt intern gepagineerd zodat grotere sites niet stilzwijgend na de eerste batch posts of termen worden afgekapt.
Frontend output translation is guarded for normal HTML GET responses only. It skips admin, REST, AJAX, cron, feeds, sitemaps, XML-RPC and POST requests, respects a configurable maximum buffer size and is disabled for WooCommerce cart, checkout and account flows when safe mode is enabled. Translation maps use WordPress object cache and transients with plugin-owned invalidation.
This plugin uses plugin-owned custom database tables for translations, languages, glossary, scan jobs and logs. Direct database queries are intentional for those tables and should be reviewed together with their table-name escaping, placeholders, capability checks and cache invalidation behavior.
Managed AI batches are administrator-only, deliberately small and review-first. Long strings above the provider request limit are skipped rather than blocking the full batch. Generated translations should be reviewed before publication.
Context warnings are read-only workflow diagnostics. They do not change translations automatically; they help translators find reused source text, repeated contexts and conflicting translation variants before publication.
Privacy
This plugin stores its own settings, languages, translation strings, translation values, scan jobs and logs in WordPress options and custom database tables. Translation strings may contain personal data when personal data exists in the original site content.
When AI translation is enabled, the text submitted for translation is sent to the configured external provider (OpenAI, DeepL, Google Translate or an OpenAI-compatible provider) for processing. The provider, model, source text, target language and tone/formality options may be part of that request. API keys can be read from server constants or supplied through the wat_ai_api_key filter. Saving keys through the plugin settings is disabled by default; it only stores keys in the WordPress database with autoload disabled when WAT_ENABLE_DB_AI_CREDENTIALS or the wat_allow_db_ai_credentials filter explicitly allows this. Site owners should only enable AI translation after confirming that the selected provider, processing location, retention terms, data processing agreement and privacy policy fit their legal and client requirements. AI translation is disabled by default and AI translations can remain review-first before publication.
External AI services used only when enabled/configured:
- OpenAI API: https://openai.com/policies/service-terms/ and https://openai.com/policies/privacy-policy/
- DeepL API: https://www.deepl.com/pro-license and https://www.deepl.com/privacy/
- Google Cloud Translation API: https://cloud.google.com/terms and https://policies.google.com/privacy
- OpenAI-compatible providers: the site owner controls the endpoint and must document/review that provider's terms, privacy policy, retention and data-processing terms before use.
When frontend language detection is enabled, the plugin can store the selected language in the wat_language cookie. CSV previews are temporarily copied to a protected temporary directory, tied to the administrator who created them and removed after import or expiry. The admin interface may store dashboard preferences in user meta and local browser storage. The plugin registers WordPress privacy policy helper text plus exporter and eraser callbacks for administrator preferences.
Upgrade Notice
2.7.82
Production/release-ready build for WordPress 7.0. Keeps the CSV preview/import/export hardening, keeps the corrected Import/export spacing and updates release metadata for deployment. Stage once more before production rollout.
2.7.79
- UI: verwijdert de contexttekst rechts naast de instellingen-sectietabs zodat de tabstrip compact en eenduidig blijft.
Adds developer quality gates, PHPCS/WordPressCS configuration, npm asset sanity checks and a behavior-preserving Visual Editor/Language endpoint refactor split. Stage and run Plugin Check, PHPCS/WPCS and browser QA before production.
2.7.75
Performs a canonical admin CSS cleanup for the settings, language-switcher and Import/export layouts. Removes old conflicting layout blocks and keeps one scoped layout system. Stage and visually verify Instellingen, Talen & taalkiezer and Import/export before production.
2.7.63
Polishes the admin UI based on review feedback: removes CSV icons, stacks the CSV export button below the field, fixes the shortcode contrast bug, removes language table scrolling in Settings, tightens the translation modal height and moves the Visuele editor CTA to the top-right. Stage and visually verify Vertalingen, Import/export, Visuele editor and Instellingen before production.
2.7.62
Cleans up obsolete admin UI CSS from older CSV/glossary/tools variants and finalizes the Vaste termen card body structure. Stage and visually test Import/export, Vaste termen, Visuele editor and Settings before production.
2.7.61
Aligns the Visuele editor, Import/export, Vaste termen and Settings screens with the same closed WordPress-native plugin card rhythm used by Dashboard and Workflow. Stage and visually test all admin tabs before production.
2.7.60
Cleans up the Workflow tab panel structure so Publicatiecheck and Workflow per taal render as closed WordPress-native plugin cards with consistent headers, bodies and table containment. Stage and visually test Workflow before production.
2.7.59
Refines the translation and language modals into plugin-styled, viewport-safe editor dialogs. Stage and verify Vertalingen > Bewerken, language add modal, save buttons and browser console before production.
2.7.58
Restores closed dashboard card surfaces for language overview and recent scan results after the WordPress Components card reset. Stage and visually verify Overzicht before production.
2.7.57
Groups dashboard language and scan sections into proper WordPress-native cards, keeps the full-width admin layout and preserves the Workflow runtime fix. Stage and visually verify Overzicht, Vertalingen and Workflow before production.
2.7.56
Restores a full-width admin layout and brings back clearer card, tab and table styling after the workflow UI fix. Stage and visually verify Overzicht, Vertalingen and Workflow before production.
2.7.55
Fixes the Workflow tab runtime error and tightens the admin UI toward a compact WordPress-native React/SaaS plugin layout. Stage and visually verify all admin tabs before production.
2.7.53
Consolidates dashboard-only CSS layers and aligns the setup header CTA through the existing dashboard panel structure. Stage and visually verify the dashboard before production.
2.7.52
Tightens only the dashboard overview layout density and setup card hierarchy. Stage and visually verify the dashboard before production.
2.7.49
Cleans up the admin visual architecture for setup, workflow and visual-editor empty states. Stage and verify the admin UI before production.
2.7.48
Fixes a runtime admin loading error caused by the missing Translate/Import-export component after the UI cleanup. Stage and verify all admin tabs before production.
2.7.45
Corrects the admin UI state model after the Gutenberg-SaaS polish: no target-language setup now hides translation/import controls, removes hardcoded progress fallbacks and fixes the overview activation layout. Stage and visually verify all admin tabs before production.
2.7.44
Refines the admin UI into a Gutenberg-SaaS bridge: guided setup, consistent empty states, softer status badges, skeleton loading and data-consistent translation/visual-editor states. Stage and visually verify all admin tabs before production.
2.7.42
Fixes mapped-domain redirect host handling for language domains with www/non-normalized hosts. Stage and verify language switching before production.
2.7.41
Refines the Settings admin screen, removes Statuscheck from the primary tab row and moves technical checks under Settings. Stage and visually verify settings before production.
2.7.26
Restores the three overview status cards and refines the header action layout. Stage and visually verify the overview header/cards before production.
2.7.21
Adds safer WooCommerce payment-flow exclusions and light admin UX wording polish. Stage before production.
2.7.13
Restores safe CSV fallback matching for empty or invalid hashes while keeping SHA-256 hash-based matching strict. Stage CSV/XLIFF imports before production.
2.7.12
Fixes release version drift for the language-switcher block/assets and tightens plugin hash validation for CSV/XLIFF imports. Stage before production.
2.7.11
Release-hygiene release. Production ZIP now ships only runtime files; admin and frontend JS/CSS are minified (whitespace/comment-only, behaviour identical to source) and dead build stubs were removed. No runtime, REST or database changes. Stage before production.
2.7.10
Fixes release packaging and build safety. Stage before production.
2.7.9
Final metadata/API-provider hygiene release. Fixes admin asset fallback version and Google Translate response decoding. Stage before production.
2.7.8
Verifies the 2.7.7 discovery/provider release and fixes Google Translate capability reporting plus duplicate performance-monitor registration. Stage before production.
2.7.7
Adds opt-in dynamic string discovery, scanner coverage for menus/widgets/terms, Google Translate provider support and conditional language publish controls. Enable new discovery features on staging first.
2.7.6
Admin JS and CSS are now minified for production (whitespace-level only; behaviour identical to source). Source files stay readable under src/admin. No runtime, REST or database changes. Verify the admin tabs load normally on staging.
2.7.5
Full admin interface restyle: one unified WordPress-native + SaaS design across all tabs, rebuilt from scratch. CSS only — backend, REST and database unchanged. Verify every tab (Overzicht, Vertalingen, Workflow, Visuele editor, CSV & back-up, Instellingen, Systeemcontrole) on staging.
2.7.4
Translations tab redesign aligned with the provided screenshot layout. Keeps backend and database unchanged. Verify filters, edit modal, pagination UI and REST loading on staging.
2.6.8
Admin dashboard source/UX maintenance release. Keeps backend and database unchanged. Verify admin dashboard, language modal, tabs and REST loading on staging.
2.6.6
Performance/accessibility release. Adds deferred frontend script loading, clearer switcher semantics and a performance/accessibility validation template. No database migration required.
2.6.4
Release-readiness and maintainability hardening package. Adds private-plugin update protection, clearer operational docs, database-contract documentation and a stricter release/test matrix. No database migration required.
2.6.3
Improved visual-editor JavaScript reliability and strengthened admin tab event handling. No database migration required.
2.6.2
Frontend hardening release. Fixes clipboard fallback handling and allows visual-editor source URLs on configured language domains. Test admin copy actions and visual editor domain setups on staging.
2.6.1
Visual workflow reliability release. Fixes complex markup handling in the visual editor, AI rate-limit handling, privacy export/erase coverage, URL scheme handling, XLIFF sniffing and custom endpoint guidance. Verify on staging before production.
2.6.0
Visual translation workflow release candidate. Adds manual AI suggestions, explicit review/publication actions and stronger in-context editor guidance. Test the visual editor, REST permissions and AI settings on staging before production.
2.5.0
Feature release. Adds SEO/coverage diagnostics, AI context profile controls, switcher visibility control and WooCommerce mixed-language risk reporting. Run staging checks before production.
2.4.18
Documentation-only release polish. Run the included RELEASE-CHECKLIST.md on staging before production, especially after the previous internal refactor pass.
2.4.17
Technical maintenance release after the internal refactor pass. Install on staging first and verify language routing, settings/AI credentials, AI batch jobs, translation map/cache behavior, REST permissions, WooCommerce safe-mode pages and CSV/XLIFF import-export before production.
Changelog
2.7.82
- Updates plugin, readme, block and POT metadata to release version 2.7.82.
- Updates Tested up to to WordPress 7.0 after staging verification on WordPress 7.0.
- Keeps the CSV preview/import/export hardening and Import/export spacing fixes from 2.7.81.
- Ships as a runtime-only production ZIP with no source maps, package manifests, node_modules or development test files.
2.7.79
- Splits Visual Editor REST argument/response helpers into dedicated concern traits without changing routes, option keys or payload names.
- Splits language endpoint transaction/migration helpers into a dedicated concern trait.
- Adds Composer, PHPCS/WPCS and npm quality-gate configuration for repeatable static checks.
- Adds a distribution ignore file for runtime-only release packaging.
- Keeps the existing admin UI, REST namespace, shortcode, hooks and database schema unchanged.
2.7.75
- Removes old conflicting admin CSS blocks for settings, language-switcher, AI/settings rows and CSV layout.
- Replaces them with one canonical scoped layout layer for the affected admin surfaces.
- Keeps equal-height card behavior for Talen/Taalkiezer and paired CSV cards.
- Keeps segmented settings shorter while preserving existing option keys, REST routes, hooks and behavior.
- Does not add !important, inline CSS or a loose override stylesheet.
2.7.63
Polishes the admin UI based on review feedback: removes CSV icons, stacks the CSV export button below the field, fixes the shortcode contrast bug, removes language table scrolling in Settings, tightens the translation modal height and moves the Visuele editor CTA to the top-right. Stage and visually verify Vertalingen, Import/export, Visuele editor and Instellingen before production.
2.7.62
- Removed obsolete admin CSS for older tools, CSV workflow and glossary layout variants that are no longer rendered by the admin bundle.
- Wrapped the Vaste termen open state in an explicit card body for a cleaner header/body structure.
- Kept dynamic progressbar inline styles only and avoided REST namespace, option key, shortcode tag, asset handle and database schema changes.
2.7.61
- Reworked Visuele editor history output into a contained card header/body pattern with a compact empty state.
- Rebuilt Import/export CSV management and Vaste termen around the same card hierarchy used by Dashboard and Workflow.
- Tightened Settings card surfaces, language/selector grouping, client option cards, selected-row state and modal textarea sizing.
- Kept REST namespaces, option keys, shortcode tags, asset handles and database schema unchanged.
2.7.60
- Rebuilt the Workflow tab content as closed card panels for the publication check and per-language workflow table.
- Moved the publication action into the card header and placed the blocking notice inside the card body.
- Wrapped the workflow table in a contained card body so it no longer floats on the admin background.
- Kept REST namespaces, option keys, shortcode tags, asset handles and database schema unchanged.
2.7.59
- Refined the custom admin modal system for translation editing and language management.
- Keeps modal headers and footers fixed inside the viewport while only the modal body scrolls.
- Removed the duplicate prominent translation-memory notice from the translation editor; the toggle help now owns that explanation.
- Constrains the translation textarea to a usable editor size and keeps save actions visible.
- No REST namespace, option key, shortcode tag, asset handle or database schema changes.
2.7.58
- Fixed dashboard section cards being visually flattened by the generic WordPress Components card reset.
- Strengthened only the dashboard card selectors for language overview and recent scan results.
- Kept the dashboard full-width layout, Workflow tab runtime fix and existing REST/API/schema identifiers unchanged.
2.7.57
- Reworked dashboard section ownership so language overview and recent scan results render as proper card panels with header actions.
- Consolidated the full-width dashboard CSS into the existing admin stylesheet and removed the previous 2.7.56 footer refinement layer.
- Kept the Workflow tab JavaScript fix intact and left REST namespaces, option keys, shortcode tags, asset handles and database schema unchanged.
2.7.56
- Restored the admin app to a full-width layout inside wp-admin.
- Brought back clearer visual hierarchy for cards, tabs, filters and tables with subtle WordPress-native surface styling.
- Kept the prior Workflow tab JavaScript fix intact and left REST namespaces, option keys, shortcode tags, asset handles and database schema unchanged.
2.7.55
- Fixed a Workflow tab runtime error caused by accidental
return__()calls in the built admin bundle. - Tightened the admin page max-width, header density, dashboard metric cards, table wrappers, filters and status tabs for a more compact WordPress-native React/SaaS layout.
- Kept existing REST namespaces, option keys, shortcode tags, asset handles and database schema unchanged.
2.7.53
- Consolidated duplicate active dashboard CSS selector layers in the canonical admin stylesheet.
- Aligned the setup header CTA through the existing
DashboardPanelheader structure. - Kept dashboard shell spacing, full-width setup steps and removal of the separate “Volgende stap” card.
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.52
- Dashboard spacing cleanup for header, tab menu and dashboard content.
- Kept the setup checklist full-width inside the setup panel and removed the separate next-step card.
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.50
- Dashboard-only visual density cleanup for the overview setup card.
- Replaced the wide full-width setup stepper with a compact next-step card and compact progress chips.
- Kept Workflow, Visual editor, Import/export and Settings rendering unchanged.
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.49
- Compact overview setup wizard with horizontal setup progress.
- Replaced the Workflow empty state with the shared setup-required card pattern.
- Replaced the Visual editor empty state with the shared setup-required card pattern.
- Removed duplicate setup CTAs and delayed visual-editor stats/history until setup and scan context are available.
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.48
- Restored the missing Translate and Import/export admin component in the canonical admin build.
- Keeps the clean 2.7.47 packaging, CSS cleanup, consistent version metadata and corrected ZIP root.
2.7.45
- Corrected the admin UI state model so setup, translation, visual editor and import/export screens no longer show live controls before a target language exists.
- Removed hardcoded translation progress values and remaining demo/fallback language data from the admin app.
- Replaced the dashboard overview layout that forced the activation card into a narrow left grid column.
- Replaced the blocked workflow/visual-editor CTAs with one relevant next action.
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.44
- Reworked the overview setup area into a guided activation panel with five connected steps and one primary next action.
- Removed mock translation fallback rows from the live translations table so empty/setup states stay consistent with dashboard data.
- Added skeleton loading for translations and stronger SaaS-style empty states for setup and scan-required states.
- Refined status badges, tabs, KPI cards, radial progress, table rows, inputs and switcher preview within the existing scoped admin stylesheet.
- Tightened visual-editor counts so they no longer show fallback active-language/open-text data before setup.
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.42
- Fixed language-domain redirect host allow-listing so mapped hosts and their normalized equivalents are both accepted by wp_safe_redirect().
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.41
- Removed Statuscheck from the primary navigation and moved technical checks into Settings as an advanced/support section.
- Tightened the Settings layout so language, switcher and website translation options read more like plugin settings and less like a technical form dump.
- Reduced visual weight around settings cards and advanced sections while keeping existing controls and behaviour intact.
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.26
- Restored the three separate overview status cards for Doeltalen, Vertaalstatus and Website scan.
- Reworked the overview header action layout: setup badge above, last scan text next to the primary action.
- Left the five translation status filters intact because they represent clear content states, not competing primary navigation.
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.25
- Compact empty overview KPI state for sites with no target languages or scans.
- Removed duplicate workflow review summary; Publicatiecheck is now the primary blocker message.
- CSV import now asks for confirmation before applying previewed imports and uses destructive button styling where available.
- Strengthened KPI number hierarchy and responsive empty-summary styling.
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.24
- Removed loose browser ellipsis artifacts from translation/workflow table cells.
- Removed duplicate setup CTA and redundant visual-editor secondary action.
- Cleaned workflow language rows by combining code and language name into one column.
- Kept the 1440px admin container, consistent card/filter/table system and overflow safeguards.
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.21
- Added default and hardcoded safe-mode exclusions for WooCommerce order-pay/order-received payment flows.
- Polished admin labels and empty-state guidance while keeping the interface full width.
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.13
- Restored CSV preview/import fallback matching for rows with empty or invalid hashes when validated original text, source context and language data are present.
- Kept hash-based matching limited to valid plugin-generated SHA-256 hashes.
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.12
- Synced plugin, readme, block metadata, editor asset fallback and POT header versions to 2.7.12.
- Tightened CSV preview/import and XLIFF hash handling to accept only plugin-generated SHA-256 hashes.
- No database schema, REST namespace, shortcode, option key or asset handle changes.
2.7.11
- Production ZIP now contains runtime files only; build inputs (src/, tools/, package.json) are no longer shipped.
- Admin and frontend JS/CSS are minified for production (whitespace/comment-only via no-mangle, no-compress; behaviour proven identical to source).
- Removed unused native-workflow.js and native-workflow.css build stubs.
- No runtime, REST, hook, option, slug or database changes. Synced plugin, readme, package and asset fallback versions to 2.7.11.
2.7.10
- Repacked the plugin with normal ZIP paths so WordPress/Linux extraction does not create backslash file names.
- Hardened the admin asset build helper so missing esbuild no longer silently overwrites production assets with unminified copies.
- Added WAT_ALLOW_UNMINIFIED_BUILD=1 as an explicit local debug escape hatch only.
- Synced plugin, readme, package, block and asset fallback versions to 2.7.10.
2.7.9
- Synced the admin asset fallback version and build helper to the active plugin version.
- Removed double encoding from the Google Translate API key query argument.
- Decoded Google Translate HTML entities before storing sanitized provider output.
2.7.8
- Fixed Google Translate provider capability/API-key status reporting so the admin API reflects
google_translateconsistently. - Added Google Translate to AI batch capability metadata.
- Removed duplicate PerformanceMonitor registration to avoid duplicate metrics/header hooks.
- Synced plugin, readme, package and block metadata versions to 2.7.8.
2.7.7
- Added optional gettext discovery for dynamic WordPress, theme, plugin and WooCommerce strings. It is off by default, frontend-only, domain-allowlisted and throttled per request.
- Added optional runtime output-buffer discovery for unknown text nodes and translatable attributes. It is off by default and capped per page.
- Extended the scanner to include navigation menus, active widgets and public taxonomy terms after full/WooCommerce scans.
- Added Google Translate API as an external translation provider, with
WAT_GOOGLE_TRANSLATE_API_KEYsupport. - Added optional conditional publish mode: target languages can be hidden and redirected until all discovered strings are published/reviewed.
- Existing REST route names, hooks, table names and core translation storage are kept intact.
2.7.6
- Build pipeline now minifies the admin JavaScript and stylesheet for production. Minification is whitespace-level only (whitespace and comments removed); identifiers and logic are left unchanged, so behaviour is identical to the source.
- The readable source files under src/admin remain the single source of truth; build/admin now contains the minified output that WordPress enqueues. No enqueue handles, option keys, REST routes or database changes.
- Admin JavaScript reduced by roughly 20% and the stylesheet by roughly 18% in transfer size.
- CSS verified equivalent (identical selectors and declarations); JavaScript verified equivalent via syntax-tree analysis (only standard whitespace and safe canonical forms differ). Build now requires esbuild as a dev dependency (run npm install before npm run build).
2.7.5
- Rebuilt the entire admin stylesheet from scratch into one unified WordPress-native design system with light SaaS polish, shared across all seven tabs.
- Removed all legacy per-screen CSS treatments (workflow-exact, visual-exact, system-redesign, dashboard) and the per-tab navigation overrides that made each tab look different.
- Harmonised the top tab navigation, page headers/heroes, stat cards, panels, badges, tables, progress bars, forms, modals, toasts, empty states and system-status UI so every screen uses the same tokens, colours, spacing, radii and shadows.
- Uses the WordPress admin palette (primary #2271b1, text #1d2327, borders #dcdcde, page #f0f0f1) with the WordPress notice colours for success/warning/danger states.
- CSS-only release. No changes to JavaScript logic, hooks, option keys, slugs, REST routes, database schema or the shared frontend design-system stylesheet.
2.7.4
- Replaced the active Vertalingen screen with the screenshot-aligned translation management layout.
- Added the compact Vertalingen header, status summary card, status filter tabs, filter bar, translation table and pagination UI.
- Kept the existing seven-tab navigation: Overzicht, Vertalingen, Workflow, Visuele editor, CSV & back-up, Instellingen and Systeemcontrole.
- No backend endpoint, REST permission, database schema, scan, CSV/XLIFF, AI or WooCommerce logic changes.
2.6.8
- Added editable admin dashboard source snapshot and rebuild helper so the React dashboard is no longer only present in build assets.
- Improved dashboard “Doeltaal toevoegen” actions so they open the language modal through the existing settings/language backend.
- Removed obsolete dashboard progress CSS left from the previous admin overview.
- No database schema changes.
2.6.6
- Performance/CWV hardening: frontend switcher and visual-editor scripts now use WordPress footer/defer loading where applicable.
- Performance snapshot logging is now opt-in by default to avoid frontend database writes on normal translated page views.
- Accessibility/admin UX hardening: dropdown menu semantics now expose vertical menu orientation and list semantics are explicit.
- Added
docs/PERFORMANCE-ACCESSIBILITY-EVIDENCE.mdfor staging performance/accessibility validation. - No database schema changes.
2.6.4
- Added private-plugin
Update URIprotection to avoid accidental WordPress.org update collisions. - Added release, architecture, database-contract, security-review and staging test documentation for maintainable agency handoff.
- Expanded release gates for Plugin Check, PHPCS/WPCS, role-based REST tests, import/export edge cases and WooCommerce staging checks.
- No runtime behavior or database schema changes.
2.6.3
- Removed redundant visual-editor bulk-status state declaration found during the repeated scan loop.
- Hardened admin/native-workflow tab event dispatch with CustomEvent and popstate fallbacks for more resilient browser behavior.
- No database schema changes.
2.6.2
- Fixed admin shortcode/themecode copy feedback so clipboard failures do not show a false success message and older/insecure browsers use a safe textarea fallback.
- Allowed visual-editor source URL tracking for configured language-domain hosts while continuing to reject unrelated external URLs.
2.6.1
- Hardened visual-editor segment selection and live preview updates so complex buttons, links, icons and builder markup are not flattened during in-context editing.
- Fixed AI rate-limit cleanup so active counters for other users are not removed during the same minute window.
- Expanded privacy export/erase handling for AI usage metadata and assigned workflow jobs.
- Skips non-HTTP URL schemes during frontend URL rewriting.
- Makes XLIFF upload sniffing more tolerant of longer XML preambles while keeping DTD/entity blocking intact.
- Clarified custom OpenAI-compatible endpoint allowlist requirements in the admin UI.
2.6.0
- Enhanced the visual translation editor with explicit review-first save and publish actions.
- Added a manual AI suggestion endpoint for selected visual-editor segments; suggestions are only created after an authenticated translator action, never automatically on public pageviews.
- Reuses Translation Memory suggestions before paid/provider AI calls where possible.
- Added safer visual-editor REST status handling so non-admin translator submissions respect the review-required workflow setting.
- Improved visual-editor UI copy, keyboard workflow and AI/memory suggestion visibility.
2.5.0
- Added multilingual SEO check and translation coverage reporting endpoints for release/readiness dashboards.
- Added WooCommerce mixed-language risk reporting with explicit manual checkout/cart/account test guidance.
- Added optional switcher setting to hide target languages without published/reviewed translations while keeping default/current language visible.
- Added AI context profile settings for site context, target audience, brand terminology and do-not-translate terms; OpenAI/OpenAI-compatible requests now include the profile when enabled.
- Kept behavior safe by avoiding live public-page AI translation, reverse-proxy behavior or WooCommerce checkout output translation changes.
2.4.18
- Added RELEASE-CHECKLIST.md with reproducible package, static, staging, import/export, AI/privacy, WooCommerce/HPOS, uninstall and rollback checks.
- Synced plugin, readme, block metadata, asset fallback versions and translation-template project metadata to 2.4.18.
- No intentional feature, route, option, database schema, text-domain or frontend behavior changes.
2.4.17
- Release documentation hardening: added an explicit Upgrade Notice for the refactor maintenance release so site owners know to run staging checks for language routing, settings/AI credentials, AI jobs, translation maps, REST permissions, WooCommerce safe-mode pages and CSV/XLIFF import-export.
- Synced plugin, readme, block metadata, asset fallback versions and translation-template project metadata to 2.4.17.
- No intentional feature, route, option, database schema, text-domain or frontend behavior changes.
2.4.16
- Technical refactor release: split language routing, settings/AI policy, AI job queue and translation repository internals into smaller focused services while preserving public methods, hooks, routes, options and database table names.
- Kept the existing public facades for LanguageRouter, Settings, TranslationJobQueue and TranslationRepository to reduce backwards-compatibility risk.
- Synced plugin, readme, block metadata and asset fallback versions after the refactor validation pass.
- No intentional feature, route, option, database schema or text-domain changes.
2.4.15
- Release-gate hardening: exposed the strict frontend request guard in the REST settings schema.
- Workflow hardening: CSV/XLIFF imports by non-admin import users now respect review-first publishing rules.
- Validation hardening: AI job assignees and due dates are validated at REST boundary level.
- AI-boundary hardening: OpenAI-compatible model identifiers now default to an allow-list and can only be extended through the dedicated model filter.
- Hardened frontend output translation request guards for previews, builder edit modes, service endpoints and non-HTML file-like requests.
- Added a strict frontend guard setting, enabled by default, so agencies can explicitly relax edge-case behavior by filter/settings only.
- Tightened CSV upload validation for empty files and reduced fallback acceptance when MIME sniffing is unavailable.
- Hardened OpenAI-compatible model names and AI system instructions against untrusted source-text instructions.
- Synced release translation template and AI credential messaging so localized installs no longer mention default database storage for AI API keys.
2.4.13
- CSS architecture update: restored reproducible source CSS, central design tokens, modular component CSS and scoped build output with minimal specificity.
- Design consistency hardening: canonical admin grids, table wrappers and mobile actions normalized.
- Hardened visual editor REST validation with explicit length limits for selected source text, translations, selectors an
This README is longer than the copy stored here. Read the rest on GitHub →