{"id":261440,"date":"2025-11-18T10:29:45","date_gmt":"2025-11-18T10:29:45","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/multilify\/"},"modified":"2026-08-24T18:25:57","modified_gmt":"2026-08-24T18:25:57","slug":"multilify","status":"publish","type":"plugin","link":"https:\/\/da.wordpress.org\/plugins\/multilify\/","author":23401902,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Multilify","header_author":"Kadir Erman","header_description":"A powerful multilingual content management system for WordPress. Supports unlimited languages with custom slugs, SEO optimization, and performance caching.","assets_banners_color":"","last_updated":"2026-08-24 18:25:57","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/multilify.com","header_author_uri":"https:\/\/kadirerman.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":688,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"kadirerman","date":"2025-11-18 10:30:08"},"1.0.1":{"tag":"1.0.1","author":"kadirerman","date":"2025-11-18 11:01:18"},"1.0.2":{"tag":"1.0.2","author":"kadirerman","date":"2026-06-28 17:10:54"},"1.0.3":{"tag":"1.0.3","author":"kadirerman","date":"2026-06-28 17:53:32"},"1.0.4":{"tag":"1.0.4","author":"kadirerman","date":"2026-08-15 22:23:54"},"1.0.5":{"tag":"1.0.5","author":"kadirerman","date":"2026-08-21 20:03:15"},"1.1.0":{"tag":"1.1.0","author":"kadirerman","date":"2026-08-22 14:20:43"},"1.2.0":{"tag":"1.2.0","author":"kadirerman","date":"2026-08-24 18:25:57"}},"upgrade_notice":{"1.2.0":"<p>The admin screens are now available in Turkish, German and Spanish. Nothing else changed; no action needed after updating.<\/p>","1.1.0":"<p>Fixes 404s on paged, feed and child-page URLs under a language prefix, and on subdirectory installs where language detection never worked. Adds hreflang tags and browser language detection. Visit Settings &gt; Permalinks once after updating so the new routes register.<\/p>","1.0.5":"<p>URLs in the default language lose their \/{lang}\/ prefix in this release. If you rely on the prefixed form, add redirects before updating.<\/p>","1.0.4":"<p>Compatibility release for WordPress 7.1. No functional changes.<\/p>","1.0.3":"<p>Adds language editing, duplicate-code protection, the [multilify_switcher] shortcode, and fixes a blank settings page after saving.<\/p>","1.0.2":"<p>Adds flag-only switcher support and makes the language name optional.<\/p>","1.0.1":"<p>Minor update: Added plugin icon and website links.<\/p>","1.0.0":"<p>Initial release of Multilify.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3397963,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.1.0","1.2.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Language management page - Add and manage your languages","2":"Translation meta boxes - Translate content directly in the editor","3":"Language switcher - Display language options to your visitors","4":"Settings page - Configure your multilingual setup"}},"plugin_section":[],"plugin_tags":[104,1385,1734,99,2333],"plugin_category":[48],"plugin_contributors":[250828],"plugin_business_model":[],"class_list":["post-261440","plugin","type-plugin","status-publish","hentry","plugin_tags-i18n","plugin_tags-language","plugin_tags-localization","plugin_tags-multilingual","plugin_tags-translation","plugin_category-language-tools","plugin_contributors-kadirerman","plugin_committers-kadirerman"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/multilify\/assets\/icon-256x256.png?rev=3397963","icon_2x":"https:\/\/ps.w.org\/multilify\/assets\/icon-256x256.png?rev=3397963","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Multilify<\/strong> is a lightweight yet powerful multilingual plugin for WordPress that allows you to create and manage content in multiple languages with ease.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Unlimited Languages<\/strong> - Add as many languages as you need<\/li>\n<li><strong>Custom Slugs<\/strong> - Set a different URL for every language, including nested pages<\/li>\n<li><strong>hreflang Tags<\/strong> - <code>rel=\"alternate\"<\/code> tags in <code>&lt;head&gt;<\/code>, plus <code>x-default<\/code>, so search engines index each language correctly<\/li>\n<li><strong>Correct Page Language<\/strong> - <code>&lt;html lang&gt;<\/code> and a <code>Content-Language<\/code> header follow the language being viewed<\/li>\n<li><strong>Browser Language Detection<\/strong> - First-time visitors land in the language their browser asks for; their own choice is remembered afterwards<\/li>\n<li><strong>Translation Progress<\/strong> - The settings page shows how many entries each language still needs<\/li>\n<li><strong>Flag Picker<\/strong> - Choose a flag from a grid instead of hunting for the emoji<\/li>\n<li><strong>Performance First<\/strong> - Object caching on the slug lookup, with an index to match<\/li>\n<li><strong>Visual Editor<\/strong> - Translate content using the familiar WordPress editor<\/li>\n<li><strong>Language Switcher<\/strong> - Built-in switcher with flag-only or flag + name display<\/li>\n<li><strong>Any Post Type<\/strong> - Posts and pages out of the box, anything else through the <code>multilify_post_types<\/code> filter<\/li>\n<li><strong>Shortcode &amp; Template Tag<\/strong> - Drop the switcher anywhere with <code>[multilify_switcher]<\/code><\/li>\n<li><strong>Developer Friendly<\/strong> - Filters for the post type list, the translated title and content, the flag choices and the locale<\/li>\n<\/ul>\n\n<h4>Perfect For<\/h4>\n\n<ul>\n<li>Blogs and magazines<\/li>\n<li>Business websites<\/li>\n<li>E-commerce stores (works with WooCommerce)<\/li>\n<li>Portfolio sites<\/li>\n<li>Any WordPress site that needs multilingual support<\/li>\n<\/ul>\n\n<h4>Why Choose Multilify?<\/h4>\n\n<p>Unlike bloated translation plugins, Multilify focuses on performance and simplicity:<\/p>\n\n<ul>\n<li><strong>Lightweight<\/strong> - No impact on your site speed<\/li>\n<li><strong>Clean Database<\/strong> - Efficient data storage with proper indexing<\/li>\n<li><strong>No External Services<\/strong> - All translations stored locally<\/li>\n<li><strong>100% Free<\/strong> - No premium features, no limitations<\/li>\n<li><strong>Privacy Focused<\/strong> - Your content stays on your server<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>Add your languages from the Multilify settings page<\/li>\n<li>Edit any post or page to see translation meta boxes<\/li>\n<li>Enter translations for each language<\/li>\n<li>Add the language switcher to your theme<\/li>\n<\/ol>\n\n<h4>Developer Features<\/h4>\n\n<ul>\n<li>Object caching on the slug lookup, invalidated when a slug changes<\/li>\n<li>Transient API for optimized rewrite rule flushing<\/li>\n<li>Filters: <code>multilify_post_types<\/code>, <code>multilify_translated_title<\/code>, <code>multilify_translated_content<\/code>, <code>multilify_flag_choices<\/code>, <code>multilify_locale<\/code>, <code>multilify_enable_browser_detection<\/code><\/li>\n<li>Clean, documented code following the WordPress Coding Standards<\/li>\n<\/ul>\n\n<h4>Translating Content<\/h4>\n\n<p>When editing a post or page, you'll see meta boxes for each active language where you can:<\/p>\n\n<ul>\n<li>Enter translated title<\/li>\n<li>Add translated content using the WordPress editor<\/li>\n<li>Set custom URL slugs for each language<\/li>\n<li>All fields are optional - fallback to default language if not translated<\/li>\n<\/ul>\n\n<h4>Language Switcher<\/h4>\n\n<p>Add the language switcher to your theme using:<\/p>\n\n<pre><code>&lt;?php if ( function_exists( 'multilify_switcher' ) ) multilify_switcher(); ?&gt;\n<\/code><\/pre>\n\n<p>Or use the shortcode: <code>[multilify_switcher]<\/code><\/p>\n\n<p>To show flags only (no language name):<\/p>\n\n<pre><code>&lt;?php if ( function_exists( 'multilify_switcher' ) ) multilify_switcher( array( 'show_name' =&gt; false ) ); ?&gt;\n<\/code><\/pre>\n\n<p>Or with the shortcode:<\/p>\n\n<pre><code>[multilify_switcher show_name=\"false\"]\n<\/code><\/pre>\n\n<p>The language name is optional. If you leave it empty when adding a language, the language code is used as a fallback. You can also edit a language's name and flag at any time from the Multilify settings page.<\/p>\n\n<h3>Support<\/h3>\n\n<ul>\n<li><strong>Website:<\/strong> <a href=\"https:\/\/multilify.com\">https:\/\/multilify.com<\/a><\/li>\n<li><strong>Support Forums:<\/strong> <a href=\"https:\/\/wordpress.org\/support\/plugin\/multilify\/\">WordPress.org support forums<\/a><\/li>\n<li><strong>GitHub:<\/strong> <a href=\"https:\/\/github.com\/kadirermantr\/multilify\">github.com\/kadirermantr\/multilify<\/a><\/li>\n<\/ul>\n\n<h3>Contributing<\/h3>\n\n<p>Multilify is open source! Contribute on <a href=\"https:\/\/github.com\/kadirermantr\/multilify\">GitHub<\/a>.<\/p>\n\n<!--section=installation-->\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>Log in to your WordPress admin panel<\/li>\n<li>Navigate to Plugins &gt; Add New<\/li>\n<li>Search for \"Multilify\"<\/li>\n<li>Click \"Install Now\" and then \"Activate\"<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin zip file<\/li>\n<li>Log in to your WordPress admin panel<\/li>\n<li>Navigate to Plugins &gt; Add New &gt; Upload Plugin<\/li>\n<li>Choose the zip file and click \"Install Now\"<\/li>\n<li>Activate the plugin<\/li>\n<\/ol>\n\n<h4>After Installation<\/h4>\n\n<ol>\n<li>Go to Multilify in your WordPress admin menu<\/li>\n<li>Add your languages (e.g., English, Turkish, Spanish)<\/li>\n<li>Set your default language<\/li>\n<li>Start translating your content!<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20multilify%20free%3F\"><h3>Is Multilify free?<\/h3><\/dt>\n<dd><p>Yes! Multilify is 100% free with no premium version or hidden costs.<\/p><\/dd>\n<dt id=\"how%20many%20languages%20can%20i%20add%3F\"><h3>How many languages can I add?<\/h3><\/dt>\n<dd><p>Unlimited! Add as many languages as your site needs.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20builders%3F\"><h3>Does it work with page builders?<\/h3><\/dt>\n<dd><p>Multilify translates content that runs through the <code>the_content<\/code> filter, which covers the block editor and the classic editor. Builders that render from their own stored data, such as Elementor, bypass that filter, so their layouts are not translated.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20site%3F\"><h3>Will it slow down my site?<\/h3><\/dt>\n<dd><p>No! Multilify is built with performance in mind. It uses caching and database indexing to ensure fast page loads.<\/p><\/dd>\n<dt id=\"can%20i%20use%20custom%20urls%20for%20each%20language%3F\"><h3>Can I use custom URLs for each language?<\/h3><\/dt>\n<dd><p>Yes! You can set custom slugs for each language version of your content.<\/p><\/dd>\n<dt id=\"does%20it%20support%20rtl%20languages%3F\"><h3>Does it support RTL languages?<\/h3><\/dt>\n<dd><p>Multilify sets <code>dir=\"rtl\"<\/code> on the document when WordPress reports an RTL locale, so an RTL theme renders correctly. It does not ship RTL stylesheets of its own; that is your theme's job.<\/p><\/dd>\n<dt id=\"can%20i%20translate%20menus%20and%20widgets%3F\"><h3>Can I translate menus and widgets?<\/h3><\/dt>\n<dd><p>Currently, Multilify focuses on post and page content. Menu and widget translation support is planned for future releases.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20woocommerce%3F\"><h3>Is it compatible with WooCommerce?<\/h3><\/dt>\n<dd><p>Translation panels appear on posts and pages by default. To add them to products, or any other custom post type, use the <code>multilify_post_types<\/code> filter:<\/p>\n\n<pre><code>add_filter( 'multilify_post_types', function ( $types ) { $types[] = 'product'; return $types; } );\n<\/code><\/pre>\n\n<p>This translates the product title and description. Prices, attributes and variations are WooCommerce's own data and are not covered.<\/p><\/dd>\n<dt id=\"how%20do%20i%20get%20support%3F\"><h3>How do I get support?<\/h3><\/dt>\n<dd><p>You can get support through the WordPress.org support forums or by contacting us directly.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<p>Added\n* Turkish, German and Spanish translations of the admin interface. WordPress shows the plugin in its own language when the site runs in one of them, and falls back to English otherwise.\n* Any other locale can be contributed at translate.wordpress.org, from the translation template the plugin already ships<\/p>\n\n<h4>1.1.0<\/h4>\n\n<p>Fixes\n* Language detection now works when WordPress is installed in a subdirectory; the install path is no longer mistaken for a language code\n* <code>\/{lang}\/page\/2\/<\/code> and <code>\/{lang}\/feed\/<\/code> return content instead of a 404; paged entries, entry feeds and search under a language prefix now route correctly\n* Child pages keep their parent path in translated URLs, so <code>\/{lang}\/parent\/child\/<\/code> resolves instead of 404ing\n* The document title on the front page and on archives is no longer overwritten with a post title from the loop\n* Translation panels no longer save on revisions or on post types they were never added to\n* Meta box fields no longer inherit the inline editor's layout, which shrank their labels and clipped their inputs<\/p>\n\n<p>Added\n* <code>rel=\"alternate\"<\/code> hreflang tags, including <code>x-default<\/code>, in <code>&lt;head&gt;<\/code>\n* <code>&lt;html lang&gt;<\/code> and a <code>Content-Language<\/code> header that follow the language being viewed\n* Browser language detection for first-time visitors, remembered per visitor and overridable with the <code>multilify_enable_browser_detection<\/code> filter\n* Translation progress per language on the settings page\n* A flag picker in place of the free text emoji field\n* Custom post type support through the <code>multilify_post_types<\/code> filter\n* Filters: <code>multilify_translated_title<\/code>, <code>multilify_translated_content<\/code>, <code>multilify_flag_choices<\/code>, <code>multilify_locale<\/code><\/p>\n\n<p>Changed\n* Rebuilt the settings screen: language entries read as a list with their code, name, default state and progress\n* Corrected readme claims that the code did not support<\/p>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>The default language no longer gets a URL prefix, so each post has a single canonical address<\/li>\n<li>Added uninstall cleanup that removes plugin options, translation meta and the lookup index<\/li>\n<li>Made the plugin translatable: interface strings now use the multilify text domain and a .pot template ships in \/languages<\/li>\n<li>The default language can no longer be deleted, and only an existing language can be set as default<\/li>\n<li>Language switcher is now a nav list with hreflang, aria-current and a screen-reader label when only flags are shown<\/li>\n<li>Fixed the delete confirmation appearing twice<\/li>\n<li>Added a LICENSE file (GPL v2)<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Tested up to WordPress 7.1<\/li>\n<li>Verified compatibility with the always-iframed post editor introduced in WordPress 7.1<\/li>\n<li>Verified compatibility with the jQuery UI 1.14.2 update shipped in WordPress 7.1<\/li>\n<li>No functional changes<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Added the ability to edit existing languages (name and flag) from the admin<\/li>\n<li>Prevented adding a language with a code that already exists (shows an error)<\/li>\n<li>Registered the [multilify_switcher] shortcode (supports show_name and show_flag)<\/li>\n<li>Fixed a blank settings page after saving (form handling moved to admin_init so redirects work)<\/li>\n<li>Fixed PHP warnings in the language switcher when a post object was unavailable<\/li>\n<li>Tested up to WordPress 6.9<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added flag-only language switcher support via show_name and show_flag arguments<\/li>\n<li>Made the language name optional (falls back to the language code when left empty)<\/li>\n<li>Fixed an empty\/underlined language label appearing in the switcher<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added plugin icon for WordPress.org directory<\/li>\n<li>Added Plugin URI (https:\/\/multilify.vercel.app)<\/li>\n<li>Updated support section with website and GitHub links<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Unlimited language support<\/li>\n<li>Custom slug functionality<\/li>\n<li>Performance caching system<\/li>\n<li>Database indexing<\/li>\n<li>Language switcher<\/li>\n<li>SEO optimization<\/li>\n<li>Browser language detection<\/li>\n<li>Admin interface<\/li>\n<li>Translation meta boxes<\/li>\n<\/ul>","raw_excerpt":"Powerful multilingual content management for WordPress with custom slugs and SEO optimization.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/261440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=261440"}],"author":[{"embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kadirerman"}],"wp:attachment":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=261440"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=261440"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=261440"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=261440"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=261440"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=261440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}