{"id":305358,"date":"2026-05-21T11:14:51","date_gmt":"2026-05-21T11:14:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/kaapa-lingoslug\/"},"modified":"2026-05-21T12:19:06","modified_gmt":"2026-05-21T12:19:06","slug":"lingosluglite","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/lingosluglite\/","author":23488720,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"LingoSlug Lite","header_author":"Karoliina Paappa","header_description":"Clean multilingual URLs with per-language slugs and automatic redirects for selected pages (same post ID), plus an optional language switcher shortcode.","assets_banners_color":"243b18","last_updated":"2026-05-21 12:19:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":46,"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":"karrukka","date":"2026-05-21 11:17:03"},"1.0.1":{"tag":"1.0.1","author":"karrukka","date":"2026-05-21 11:35:33"},"1.0.2":{"tag":"1.0.2","author":"karrukka","date":"2026-05-21 12:19:06"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3541720,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3541720,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3541720,"resolution":"1544x500","location":"assets","locale":"","width":3860,"height":1250},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3541720,"resolution":"772x250","location":"assets","locale":"","width":1930,"height":625}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3541887,"resolution":"1","location":"assets","locale":"","width":2546,"height":1434},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3541887,"resolution":"2","location":"assets","locale":"","width":2538,"height":1428}},"screenshots":{"1":"Languages &amp; switcher settings","2":"Page URLs configuration with multilingual slug previews"}},"plugin_section":[],"plugin_tags":[22323,99,939,726,562],"plugin_category":[48,59],"plugin_contributors":[263812],"plugin_business_model":[],"class_list":["post-305358","plugin","type-plugin","status-publish","hentry","plugin_tags-language-switcher","plugin_tags-multilingual","plugin_tags-permalinks","plugin_tags-redirects","plugin_tags-slugs","plugin_category-language-tools","plugin_category-utilities-and-tools","plugin_contributors-karrukka","plugin_committers-karrukka"],"banners":{"banner":"https:\/\/ps.w.org\/lingosluglite\/assets\/banner-772x250.jpg?rev=3541720","banner_2x":"https:\/\/ps.w.org\/lingosluglite\/assets\/banner-1544x500.jpg?rev=3541720","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/lingosluglite\/assets\/icon-128x128.png?rev=3541720","icon_2x":"https:\/\/ps.w.org\/lingosluglite\/assets\/icon-256x256.png?rev=3541720","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/lingosluglite\/assets\/screenshot-1.png?rev=3541887","caption":"Languages &amp; switcher settings"},{"src":"https:\/\/ps.w.org\/lingosluglite\/assets\/screenshot-2.png?rev=3541887","caption":"Page URLs configuration with multilingual slug previews"}],"raw_content":"<!--section=description-->\n<p>LingoSlug Lite is a lightweight solution for <strong>multilingual URLs<\/strong> when you want <strong>localized permalinks<\/strong> (per-language slugs) and <strong>redirects<\/strong>, but you do not need a full multilingual suite.<\/p>\n\n<p>It is designed for two common setups:<\/p>\n\n<ul>\n<li>Sites where the <strong>same WordPress page (same page ID)<\/strong> is rendered in different languages by another language\/translation solution (locale switching), and<\/li>\n<li>Sites where each language is managed as a <strong>separate page<\/strong> \u2014 but you still want clean, localized URLs.<\/li>\n<\/ul>\n\n<p>LingoSlug Lite handles URL slugs + redirects, but does <strong>not<\/strong> translate content.<\/p>\n\n<p>Example:<\/p>\n\n<p>Before:\n- (EN) <code>example.com\/contact\/<\/code>\n- (DE) <code>example.com\/kontakt-page\/<\/code><\/p>\n\n<p>After:\n- (EN) <code>example.com\/en\/contact\/<\/code>\n- (DE) <code>example.com\/de\/kontakt\/<\/code><\/p>\n\n<p>Slug cleanup example (same language):<\/p>\n\n<p>Before (default WordPress slug):\n- <code>example.com\/en\/contact-page-2\/<\/code><\/p>\n\n<p>After (configured clean slug):\n- <code>example.com\/en\/contact\/<\/code><\/p>\n\n<p>LingoSlug Lite does <strong>not<\/strong> translate content and does <strong>not<\/strong> create language pages for you.<\/p>\n\n<p>Problems this plugin solves:<\/p>\n\n<ul>\n<li>Ugly or inconsistent URLs like <code>\/sample-page\/<\/code> or <code>\/english-page-2\/<\/code><\/li>\n<li>Duplicate URLs \/ wrong-language URLs after switching languages (automatic redirects help keep URLs consistent)<\/li>\n<li>Better search engine consistency: redirects help crawlers index the correct language URL instead of duplicates\/wrong-language URLs.<\/li>\n<\/ul>\n\n<p>Who this is for:<\/p>\n\n<ul>\n<li>You want <strong>language-aware URLs<\/strong> (e.g. <code>\/{lang}\/{slug}\/<\/code>) for selected pages.<\/li>\n<li>You manage languages manually and just want URL hygiene (slugs + redirects).<\/li>\n<li>Your language solution sets the WordPress locale per request and\/or uses a <code>\/{lang}\/...<\/code> prefix.<\/li>\n<\/ul>\n\n<p>Features:<\/p>\n\n<p>1) <strong>Per-language slugs<\/strong>\n- Configure a page and define a slug per language code (e.g. <code>en<\/code>, <code>sv<\/code>).\n- The plugin adds rewrite rules so configured pages can have language-aware URLs.\n- Permalinks are filtered so links point to the configured slug for the current locale.\n- As a fallback, a query parameter can also be used (configurable in settings, e.g. <code>?lang=en<\/code>).\n- Free version note: the plugin allows <strong>the site default language + 1 additional language<\/strong> (max 2 total).<\/p>\n\n<p>2) <strong>Automatic redirects<\/strong>\n- Helps avoid duplicate or wrong-language URLs after switching languages (redirects to the correct slug for the current locale).<\/p>\n\n<p>3) <strong>Optional switcher<\/strong>\n- Enable an optional navigation switcher via shortcode <code>[lingoslug_lite_switcher]<\/code>.\n- Shortcode parameters:\n  - <code>page_id<\/code> (optional): Render the switcher for a specific page ID. If omitted, the plugin uses the currently viewed page when possible.\n- Important: The switcher requires another plugin to translate the page dynamically (same page ID) by switching the site language\/locale. LingoSlug Lite does not automatically map separate translated pages to each other.<\/p>\n\n<p>4) <strong>Slug cleanup<\/strong>\n- Configure clean, consistent slugs (per language) even if the default WordPress slug is \u201cugly\u201d.\n- This also works within a single language (e.g. use <code>\/en\/contact\/<\/code> instead of <code>\/en\/contact-page-2\/<\/code>).<\/p>\n\n<p>Privacy:<\/p>\n\n<ul>\n<li>LingoSlug Lite does not collect personal data and does not send data to third-party services.<\/li>\n<\/ul>\n\n<p>Upgrade to LingoSlug Pro for:<\/p>\n\n<ul>\n<li>Unlimited languages (no free 2-language limit)<\/li>\n<li>Force a page to a specific language URL (useful for mixed-language menus)<\/li>\n<li>Language switcher: shortcode or automatic output (no shortcode needed)<\/li>\n<li>Multilingual SEO extras: optional <code>hreflang<\/code> output to help Google show the right language version to the right visitors<\/li>\n<li>Optional SEO tools: noindex controls and attachment page handling<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/lingoslug-lite\/<\/code> or install via the Plugins screen.<\/li>\n<li>Activate the plugin through the Plugins screen.<\/li>\n<li>Go to <strong>Settings \u2192 LingoSlug Lite<\/strong>.<\/li>\n<li>Configure per-page slugs and (optional) switcher output.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20translate%20content%3F\"><h3>Does this plugin translate content?<\/h3><\/dt>\n<dd><p>No. LingoSlug Lite does not translate content and does not create language pages automatically. It helps you keep clean URLs and redirects for pages you manage manually.<\/p><\/dd>\n<dt id=\"how%20can%20i%20create%20a%20mixed-language%20menu%20%28some%20items%20always%20land%20on%20a%20specific%20language%29%3F\"><h3>How can I create a mixed-language menu (some items always land on a specific language)?<\/h3><\/dt>\n<dd><p>LingoSlug Lite is focused on per-language slugs + basic redirects. Mixed-language menu forcing is available in the premium version.<\/p><\/dd>\n<dt id=\"which%20translation%20plugins%20does%20this%20work%20with%3F\"><h3>Which translation plugins does this work with?<\/h3><\/dt>\n<dd><p>LingoSlug Lite can work with multilingual setups that expose the current language through standard WordPress signals. It does <strong>not<\/strong> integrate directly with WPML or Polylang APIs. It relies on:<\/p>\n\n<ul>\n<li>WordPress locale per request (via <code>determine_locale()<\/code> \/ <code>get_locale()<\/code>), and\/or<\/li>\n<li>a URL language prefix like <code>\/{lang}\/...<\/code> (for example <code>\/en\/...<\/code>, <code>\/sv\/...<\/code>).<\/li>\n<\/ul>\n\n<p>As a fallback, it can also read a language code from a query parameter (configurable in settings as <em>Language Param<\/em>, e.g. <code>lang<\/code>, <code>language<\/code>, <code>locale<\/code>).<\/p>\n\n<p>If you need automatic translation, use a dedicated translation plugin (for example, <strong>WEB-T \u2013 eTranslation Multilingual<\/strong>) or any plugin that switches the WP locale per request, and use LingoSlug Lite to keep language URLs clean and SEO-friendly.<\/p>\n\n<p>If your translation plugin:\n- sets the WP locale per request, and\/or\n- uses a <code>\/{lang}\/...<\/code> URL prefix,\nthen LingoSlug Lite is likely compatible.<\/p>\n\n<p>If you use separate WordPress pages for each language, you must configure each page manually. LingoSlug Lite does not detect or link translation relationships between pages.<\/p><\/dd>\n<dt id=\"does%20it%20automatically%20map%20separate%20translated%20pages%20to%20each%20other%3F\"><h3>Does it automatically map separate translated pages to each other?<\/h3><\/dt>\n<dd><p>No. LingoSlug Lite does not try to detect translation relationships between separate pages. You configure slugs per selected page, and only those pages get language-aware URLs and redirects.<\/p><\/dd>\n<dt id=\"which%20languages%20are%20supported%3F\"><h3>Which languages are supported?<\/h3><\/dt>\n<dd><p>You can configure language codes in <strong>Settings \u2192 LingoSlug Lite \u2192 Languages<\/strong>.<\/p>\n\n<p>Free version note: the plugin allows <strong>the site default language + 1 additional language<\/strong> (max 2 total). Any extra language codes will be ignored on save.<\/p>\n\n<p>A Pro version is available with advanced features. The free plugin remains fully functional without it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Improve settings page guidance: clearer language\/switcher help, shortcode page_id hint, and a troubleshooting section.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix logo loading issue on the settings page.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Simple clean multilingual URLs with per-language slugs and automatic redirects \u2014 for sites where translations are handled separately.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/305358","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=305358"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/karrukka"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=305358"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=305358"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=305358"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=305358"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=305358"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=305358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}