{"id":325325,"date":"2026-07-30T09:58:48","date_gmt":"2026-07-30T09:58:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/langforge\/"},"modified":"2026-07-30T09:58:19","modified_gmt":"2026-07-30T09:58:19","slug":"langforge","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/langforge\/","author":23513346,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.24","stable_tag":"1.0.24","tested":"7.0.2","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"LangForge","header_author":"Avakode","header_description":"Multilingual plugin for WordPress \u2014 language routing (4 URL formats), manual translation, language switcher, string translation, hreflang SEO, Glossary, WooCommerce, unlimited languages, REST\/WP-CLI, WPML compatibility, and one-click migration. AI translation available via the Lang Forge Pro add-on.","assets_banners_color":"323e55","last_updated":"2026-07-30 09:58:19","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/avakode.com","header_plugin_uri":"https:\/\/langforgewp.com","header_author_uri":"https:\/\/avakode.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":25,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.24":{"tag":"1.0.24","author":"avakodeforge","date":"2026-07-30 09:58:19"}},"upgrade_notice":{"1.0.18":"<p>Adds a Support menu, optional anonymous analytics (off by default), and dashboard Pro tips.<\/p>","1.0.15":"<p>Licensing and WordPress.org compliance improvements.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3628343,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3628343,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3628343,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3628343,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.24"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3628343,"resolution":"1","location":"assets","locale":"","width":1440,"height":860},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3628343,"resolution":"2","location":"assets","locale":"","width":1440,"height":1100},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3628343,"resolution":"3","location":"assets","locale":"","width":1440,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3628343,"resolution":"4","location":"assets","locale":"","width":1440,"height":960},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3628343,"resolution":"5","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"Languages \u2014 add as many languages as you need and set codes, display labels, switcher visibility and the default language.","2":"Post editor \u2014 the Language panel lists every linked translation and creates the missing ones in one click.","3":"Posts list \u2014 a language column with translation shortcuts, plus per-language filters and counts.","4":"Settings \u2014 pick the URL structure (directory, parameter, subdomain or domain) and set the language fallback chain.","5":"Front end \u2014 the language switcher with flags and native language names."}},"plugin_section":[262246],"plugin_tags":[2353,22323,1734,99,2333],"plugin_category":[48],"plugin_contributors":[273812],"plugin_business_model":[],"class_list":["post-325325","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-ai","plugin_tags-language-switcher","plugin_tags-localization","plugin_tags-multilingual","plugin_tags-translation","plugin_category-language-tools","plugin_contributors-avakodeforge","plugin_committers-avakodeforge"],"banners":{"banner":"https:\/\/ps.w.org\/langforge\/assets\/banner-772x250.png?rev=3628343","banner_2x":"https:\/\/ps.w.org\/langforge\/assets\/banner-1544x500.png?rev=3628343","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/langforge\/assets\/icon-128x128.png?rev=3628343","icon_2x":"https:\/\/ps.w.org\/langforge\/assets\/icon-256x256.png?rev=3628343","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/langforge\/assets\/screenshot-1.png?rev=3628343","caption":"Languages \u2014 add as many languages as you need and set codes, display labels, switcher visibility and the default language."},{"src":"https:\/\/ps.w.org\/langforge\/assets\/screenshot-2.png?rev=3628343","caption":"Post editor \u2014 the Language panel lists every linked translation and creates the missing ones in one click."},{"src":"https:\/\/ps.w.org\/langforge\/assets\/screenshot-3.png?rev=3628343","caption":"Posts list \u2014 a language column with translation shortcuts, plus per-language filters and counts."},{"src":"https:\/\/ps.w.org\/langforge\/assets\/screenshot-4.png?rev=3628343","caption":"Settings \u2014 pick the URL structure (directory, parameter, subdomain or domain) and set the language fallback chain."},{"src":"https:\/\/ps.w.org\/langforge\/assets\/screenshot-5.png?rev=3628343","caption":"Front end \u2014 the language switcher with flags and native language names."}],"raw_content":"<!--section=description-->\n<p><strong>Lang Forge<\/strong> is a modern multilingual plugin that handles multilingual URL routing (4 URL formats), manual post and string translation, a language switcher, hreflang SEO, RTL layouts, a glossary, WooCommerce, unlimited languages, and one-click migration from WPML \/ Polylang \/ TranslatePress. It ships a REST API and WP-CLI commands and is a drop-in WPML compatibility layer. AI translation is available as the <strong>Lang Forge Pro<\/strong> add-on.<\/p>\n\n<h4>Free<\/h4>\n\n<ul>\n<li>Unlimited languages<\/li>\n<li>Multilingual URL routing \u2014 4 formats (directory <code>\/fr\/<\/code>, query <code>?lang=fr<\/code>, subdomain, domain mapping)<\/li>\n<li>Manual post \/ page \/ CPT translation linking<\/li>\n<li>Manual string translation (auto-registered via gettext)<\/li>\n<li>Language switcher (widget \/ shortcode \/ admin bar)<\/li>\n<li>hreflang sitemap<\/li>\n<li>Glossary<\/li>\n<li>WooCommerce product and store string translation<\/li>\n<li>WPML compatibility layer (<code>icl_object_id()<\/code>, <code>icl_get_languages()<\/code>, etc.)<\/li>\n<li>REST API + WP-CLI commands<\/li>\n<li>One-click migration from WPML \/ Polylang \/ TranslatePress<\/li>\n<li>RTL support (ar\/he\/fa\/ur\/ku)<\/li>\n<\/ul>\n\n<h4>Pro<\/h4>\n\n<ul>\n<li>AI translation with translation memory<\/li>\n<li>Visual editor (side-by-side WYSIWYG translation)<\/li>\n<li>Frontend translation<\/li>\n<li>Elementor + ACF integration<\/li>\n<li>Content diff + Translation QA<\/li>\n<li>Analytics dashboard<\/li>\n<li>Import \/ export PO + XLIFF<\/li>\n<li>Bulk AI translation, translator roles, media\/comment translation, live preview<\/li>\n<\/ul>\n\n<p>Part of the <strong>Forge Suite<\/strong> \u2014 bundle includes SEO Forge, Form Forge, Field Forge.<\/p>\n\n<h3>Third-Party Services<\/h3>\n\n<p>Lang Forge connects to the following third-party services. Basic translation, the language switcher, string translation, and hreflang work fully offline with no external calls \u2014 data is sent only when you use an AI feature.<\/p>\n\n<ul>\n<li><strong>Avakode API<\/strong> (https:\/\/avakode.com) \u2014 powers AI translation and AI quality checks, and validates your license. When you run an AI translation or QA check, the source post content, the target language, your site URL, and your license key are sent. The Avakode API routes AI requests to OpenAI and\/or DeepL on your behalf. Terms: https:\/\/avakode.com\/terms \u2014 Privacy: https:\/\/avakode.com\/privacy<\/li>\n<li><strong>OpenAI<\/strong> (used by the Avakode API to perform AI translation) \u2014 Terms: https:\/\/openai.com\/policies\/terms-of-use \u2014 Privacy: https:\/\/openai.com\/policies\/privacy-policy<\/li>\n<li><strong>DeepL<\/strong> (used by the Avakode API to perform AI translation) \u2014 Terms: https:\/\/www.deepl.com\/en\/pro-license \u2014 Privacy: https:\/\/www.deepl.com\/en\/privacy<\/li>\n<li><strong>Anonymous usage analytics (opt-in, OFF by default)<\/strong> \u2014 Only if you explicitly opt in from the Lang Forge settings, the plugin sends anonymous product-usage telemetry to the Avakode API (https:\/\/avakode.com\/telemetry): a random install ID (UUID, not tied to your site URL or any account), your bucketed WordPress and PHP version ranges, the plugin version, and aggregate feature-usage event counters. It is sent ONLY after you opt in and can be disabled at any time. It never sends your site URL, email address, post or form content, or license key. Privacy: https:\/\/avakode.com\/privacy<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload <code>langforge<\/code> to <code>\/wp-content\/plugins\/<\/code>, or install via Plugins \u2192 Add New.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>Lang Forge \u2192 Settings<\/strong> and enable your target languages.<\/li>\n<li>(Optional) Connect to Avakode for Pro features at <strong>Lang Forge \u2192 Connect<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20lang%20forge%20work%20with%20my%20theme%3F\"><h3>Does Lang Forge work with my theme?<\/h3><\/dt>\n<dd><p>Yes \u2014 Lang Forge uses standard WordPress hooks (<code>the_content<\/code>, <code>get_the_title<\/code>, hreflang via <code>wp_head<\/code>). No theme-specific integration needed.<\/p><\/dd>\n<dt id=\"can%20i%20migrate%20from%20wpml%20%2F%20polylang%20%2F%20translatepress%3F\"><h3>Can I migrate from WPML \/ Polylang \/ TranslatePress?<\/h3><\/dt>\n<dd><p>Yes. Lang Forge ships with a migration tool that imports translated posts, string translations, and language URLs. The tool is non-destructive \u2014 your source plugin stays installed until you confirm the migration.<\/p><\/dd>\n<dt id=\"how%20much%20does%20ai%20translation%20cost%3F\"><h3>How much does AI translation cost?<\/h3><\/dt>\n<dd><p>AI translations consume Forge Credits (separate from the subscription). One credit \u2248 one short paragraph. Credits don't expire.<\/p><\/dd>\n<dt id=\"is%20my%20content%20sent%20to%20openai%3F\"><h3>Is my content sent to OpenAI?<\/h3><\/dt>\n<dd><p>Only the text being translated is sent to the Avakode AI proxy, which forwards it to OpenAI \/ DeepL. No personal data, no admin info, no URLs.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.24<\/h4>\n\n<ul>\n<li>Security hardening: all dynamic output is now escaped late with the context-appropriate function (esc_html\/esc_attr\/esc_url, esc_html__ for translated strings used as format strings, and wp_kses for trusted pre-built admin markup). No behavioural changes.<\/li>\n<li>The glossary CSV export now neutralises CSV\/formula injection in exported cells.<\/li>\n<\/ul>\n\n<h4>1.0.23<\/h4>\n\n<ul>\n<li>Free now supports an unlimited number of languages with no plan-based cap \u2014 removed all license-gated language-limit code (no \"locked\" language rows, no over-limit notice, no limit on saving).<\/li>\n<li>Tightened the glossary REST list endpoint to the same administrator capability as glossary management.<\/li>\n<\/ul>\n\n<h4>1.0.22<\/h4>\n\n<ul>\n<li>Hardened WP-CLI export: files are now always written to a plugin-slug folder inside the uploads directory (wp-content\/uploads\/langforge\/) instead of an arbitrary path, so nothing is ever written into the plugin folder.<\/li>\n<li>Uninstall cleanup now only removes data under the plugin's own unambiguous prefix, so unrelated options\/metadata belonging to other plugins are never deleted.<\/li>\n<\/ul>\n\n<h4>1.0.18<\/h4>\n\n<ul>\n<li>New: Support menu item that opens the Avakode support dashboard.<\/li>\n<li>New: Opt-in anonymous usage analytics (OFF by default) \u2014 see Third-Party Services.<\/li>\n<li>New: Contextual, dismissible Pro feature tips on the plugin dashboard (Free users only).<\/li>\n<\/ul>\n\n<h4>1.0.15<\/h4>\n\n<ul>\n<li>WordPress.org compliance and licensing hardening.<\/li>\n<li>Pro entitlement is now resolved by the Lang Forge Pro add-on; the free plugin bundles no licensing SDK.<\/li>\n<li>The plugin no longer modifies admin notices belonging to other plugins.<\/li>\n<li>readme metadata cleanup.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Multilingual &amp; translation plugin \u2014 URL routing, post &amp; string translation, language switcher, hreflang SEO, glossary, WooCommerce. WPML-compatible.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/325325","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=325325"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/avakodeforge"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=325325"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=325325"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=325325"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=325325"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=325325"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=325325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}