{"id":378795,"date":"2026-10-01T05:53:19","date_gmt":"2026-10-01T05:53:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/globaldev-multilingual\/"},"modified":"2026-10-01T05:52:40","modified_gmt":"2026-10-01T05:52:40","slug":"globaldev-multilingual","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/globaldev-multilingual\/","author":18387632,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.15","stable_tag":"0.2.15","tested":"7.1.2","requires":"6.2","requires_php":"8.0","requires_plugins":null,"header_name":"GlobalDev Multilingual","header_author":"GlobalDev","header_description":"Lightweight multilingual content management for WordPress with translation relationships, language URLs, Elementor-safe duplication, hreflang and a language switcher.","assets_banners_color":"09669f","last_updated":"2026-10-01 05:52:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":59,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","changelog"],"tags":{"0.2.15":{"tag":"0.2.15","author":"globaldevitus","date":"2026-10-01 05:52:40","revision":3722450}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3722449,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3722449,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3722449,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3722449,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.15"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3722449,"resolution":"1","location":"assets","locale":"","width":1530,"height":1544},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3722449,"resolution":"2","location":"assets","locale":"","width":1524,"height":1389},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3722449,"resolution":"3","location":"assets","locale":"","width":1528,"height":1385},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3722449,"resolution":"4","location":"assets","locale":"","width":1526,"height":3559},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3722449,"resolution":"5","location":"assets","locale":"","width":1524,"height":1943},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3722449,"resolution":"6","location":"assets","locale":"","width":1530,"height":1544}},"screenshots":[]},"plugin_section":[],"plugin_tags":[76538,8583,99,2333],"plugin_category":[48],"plugin_contributors":[193414],"plugin_business_model":[],"class_list":["post-378795","plugin","type-plugin","status-publish","hentry","plugin_tags-elementor","plugin_tags-languages","plugin_tags-multilingual","plugin_tags-translation","plugin_category-language-tools","plugin_contributors-globaldev","plugin_committers-globaldevitus"],"banners":{"banner":"https:\/\/ps.w.org\/globaldev-multilingual\/assets\/banner-772x250.png?rev=3722449","banner_2x":"https:\/\/ps.w.org\/globaldev-multilingual\/assets\/banner-1544x500.png?rev=3722449","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/globaldev-multilingual\/assets\/icon-128x128.png?rev=3722449","icon_2x":"https:\/\/ps.w.org\/globaldev-multilingual\/assets\/icon-256x256.png?rev=3722449","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/globaldev-multilingual\/assets\/screenshot-1.png?rev=3722449","caption":""},{"src":"https:\/\/ps.w.org\/globaldev-multilingual\/assets\/screenshot-2.png?rev=3722449","caption":""},{"src":"https:\/\/ps.w.org\/globaldev-multilingual\/assets\/screenshot-3.png?rev=3722449","caption":""},{"src":"https:\/\/ps.w.org\/globaldev-multilingual\/assets\/screenshot-4.png?rev=3722449","caption":""},{"src":"https:\/\/ps.w.org\/globaldev-multilingual\/assets\/screenshot-5.png?rev=3722449","caption":""},{"src":"https:\/\/ps.w.org\/globaldev-multilingual\/assets\/screenshot-6.png?rev=3722449","caption":""}],"raw_content":"<!--section=description-->\n<p>GlobalDev Multilingual links normal WordPress posts, pages and menus into translation groups and serves secondary languages from directory URLs such as \/en\/ and \/de\/.<\/p>\n\n<h3>Current features<\/h3>\n\n<ul>\n<li>Language administration with configurable default\/active languages.<\/li>\n<li>Professional multilingual dashboard and dedicated admin pages.<\/li>\n<li>AJAX language add, enable\/disable, set-default and remove actions.<\/li>\n<li>Directory URLs for secondary languages.<\/li>\n<li>Translation relationships stored in a dedicated table.<\/li>\n<li>Translation activity\/history table.<\/li>\n<li>Language metabox for public post types.<\/li>\n<li>Create translated copies while preserving content, taxonomies and most metadata.<\/li>\n<li>Elementor-safe duplication: copies _elementor_data but does not copy generated Elementor CSS\/assets.<\/li>\n<li>WPML-style language columns in Posts and Pages.<\/li>\n<li>Admin language filter to avoid duplicate translation rows.<\/li>\n<li>Translation overview with edit\/create controls per language.<\/li>\n<li>Linked multilingual navigation menus, frontend menu switching and WPML-style structure synchronization.<\/li>\n<li>Automatic\/debounced multilingual rewrite flushing after relevant actions.<\/li>\n<li>[gdml_language_switcher] shortcode.<\/li>\n<li>hreflang and x-default tags.<\/li>\n<li>Public helper functions for integrations.<\/li>\n<\/ul>\n\n<h3>Not included yet<\/h3>\n\n<ul>\n<li>AI translation.<\/li>\n<li>String Translation \/ gettext registry.<\/li>\n<li>WooCommerce product synchronization.<\/li>\n<li>Translated taxonomy terms.<\/li>\n<li>SEO plugin-specific field adapters.<\/li>\n<\/ul>\n\n<!--section=changelog-->\n<h4>0.2.15<\/h4>\n\n<ul>\n<li>WordPress.org \/ Plugin Check compliance cleanup: plugin\/readme headers, translator comments, nonce\/input handling and query hardening.<\/li>\n<li>Removed deprecated manual text-domain loading; WordPress loads the plugin translations automatically.<\/li>\n<li>Simplified legacy collation repair now that multilingual joins are collation-safe.<\/li>\n<li>Reduced slow menu-item lookup queries and tightened menu-editor security handling.<\/li>\n<li>Added a final nav_menu_item_title fallback so automatic translated menu labels always follow the current translated page title on the frontend.<\/li>\n<\/ul>\n\n<h4>0.2.8<\/h4>\n\n<ul>\n<li>Redesigned Appearance &gt; Menus multilingual controls into a professional menu workspace.<\/li>\n<li>Added one-click synchronization from the default-language menu to a translated menu.<\/li>\n<li>Added Sync all translations from the default-language source menu.<\/li>\n<li>Synchronization mirrors menu order, hierarchy, linked posts\/pages and compatible menu metadata.<\/li>\n<li>Existing translated navigation labels and target-only manual items are preserved.<\/li>\n<li>Older translated menus are automatically mapped to source menu items on first sync.<\/li>\n<li>New menu translations now always use the default-language menu as their structural source.<\/li>\n<li>Added sync controls to Multilingual &gt; Menus and translation-history logging.<\/li>\n<\/ul>\n\n<h4>0.2.7<\/h4>\n\n<ul>\n<li>Fixed WordPress language-pack installation verification and cache invalidation.<\/li>\n<li>Language packs now report Installed only when WordPress itself detects the locale.<\/li>\n<\/ul>\n\n<h4>0.2.6<\/h4>\n\n<ul>\n<li>Switch WordPress runtime locale per frontend GDML language without changing wp-admin or the saved Site Language.<\/li>\n<li>Automatically install the corresponding WordPress core language pack when a language is added.<\/li>\n<li>Add language-pack status and retry installation controls to the Languages screen.<\/li>\n<\/ul>\n\n<h4>0.2.5<\/h4>\n\n<ul>\n<li>Fixed frontend HTML language attributes so translated pages emit their own configured locale.<\/li>\n<li>Added a hard-coded-theme fallback that rewrites only the opening HTML tag when language_attributes() is not used.<\/li>\n<li>Added automatic RTL\/LTR document direction based on the active language.<\/li>\n<\/ul>\n\n<h4>0.2.4<\/h4>\n\n<ul>\n<li>Fixed MySQL illegal-mix-of-collations errors in multilingual post queries.<\/li>\n<li>Automatically aligns the GDML translation table collation with wp_posts during upgrade when permitted.<\/li>\n<li>Added binary-safe translation joins as a fallback on restricted hosting.<\/li>\n<li>Frontend menus now hide post\/page items when the current language has no published translation.<\/li>\n<li>Singular language switchers no longer show languages for missing translations.<\/li>\n<li>Added a native Appearance &gt; Menus Language Switcher box with Add to menu.<\/li>\n<li>Language switcher supports Dropdown or Inline display, native-name or code labels, and flags on\/off.<\/li>\n<li>Switcher settings remain editable on the menu item and are preserved when menus are cloned.<\/li>\n<\/ul>\n\n<h4>0.2.3<\/h4>\n\n<ul>\n<li>Added searchable WordPress locale picker with installed\/available groups, regional variants and flags.<\/li>\n<li>Language presets now follow the locales exposed by WordPress.org for the installed WordPress version, with offline ISO fallback.<\/li>\n<li>Prevent duplicate WordPress locales and support longer regional\/formal route codes.<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>Expanded the language preset selector to all 184 ISO 639-1 languages.<\/li>\n<li>Added flag icons, native names, English names and locale defaults to language presets.<\/li>\n<li>Existing site languages are disabled in the preset selector to prevent accidental replacement.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Fixed WordPress and third-party admin notices being injected inside the GlobalDev Multilingual visual page header.<\/li>\n<li>Added a dedicated screen-reader H1 outside the visual header so WordPress notice placement stays in the normal admin notice area.<\/li>\n<li>Added a defensive MutationObserver that relocates late-injected notices above the GDML header.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Redesigned professional admin interface with Dashboard, Languages, Translations, Menus, History and Settings pages.<\/li>\n<li>Added AJAX language management without page reloads.<\/li>\n<li>Added language presets and active\/inactive state controls.<\/li>\n<li>Added translation history\/audit table and recent-activity dashboard.<\/li>\n<li>Added translation-group overview with per-language edit\/create controls.<\/li>\n<li>Added multilingual menu overview.<\/li>\n<li>Added one-click rewrite\/permalink refresh in Dashboard and Settings.<\/li>\n<li>Fixed linking newly-created translated menus when WordPress had already registered the target menu as a default-language object.<\/li>\n<li>Existing 0.1.x installations automatically create the new history table during upgrade.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Multilingual menu relationships and menu-language selector.<\/li>\n<li>Create linked menu translations with hierarchy preserved.<\/li>\n<li>Remap post\/page menu items to translated objects when available.<\/li>\n<li>Frontend automatically swaps the assigned default menu for its linked language menu.<\/li>\n<li>Filter menu-editor post\/page pickers by the current menu language.<\/li>\n<li>Preserve plugin-specific menu item and menu term metadata when cloning.<\/li>\n<li>Fix activation-time rewrite flushing and debounce GDML rewrite flushes after translation\/menu actions.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>WPML-style language flag columns in Posts\/Pages.<\/li>\n<li>Pencil icon opens existing translations.<\/li>\n<li>Plus icon creates missing translations.<\/li>\n<li>Admin language filter shows one language at a time by default to avoid duplicate translation rows.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Lightweight multilingual content management for WordPress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/378795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=378795"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/globaldevitus"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=378795"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=378795"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=378795"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=378795"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=378795"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=378795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}