{"id":94,"date":"2026-09-21T16:35:29","date_gmt":"2026-09-21T16:35:29","guid":{"rendered":"https:\/\/docs.latw.ai\/uncategorized\/what-gets-translated\/"},"modified":"2026-09-21T16:35:29","modified_gmt":"2026-09-21T16:35:29","slug":"what-gets-translated","status":"publish","type":"post","link":"https:\/\/docs.latw.ai\/pl\/latw-for-wpml\/what-gets-translated\/","title":{"rendered":"What Gets Translated?"},"content":{"rendered":"<p>When you send a page for translation, the plugin does not decide what to translate. <strong>WPML builds<br \/>\nthe list<\/strong>, hands it over, and writes the answers back. That is why a page can come back translated<br \/>\nwith its SEO title still in English, or with one ACF field untouched: those pieces were never in the<br \/>\nlist to begin with.<\/p>\n<p>Knowing how the list is built is usually all it takes to fix it.<\/p>\n<h2>The rule behind everything on this page<\/h2>\n<p>A piece of content reaches the translator when <strong>both<\/strong> of these are true:<\/p>\n<ol>\n<li><strong>WPML is set to translate it.<\/strong> Post types, taxonomies and custom fields each have their own<br \/>\nsetting.<\/li>\n<li><strong>It actually has a value.<\/strong> An empty field has nothing to translate, so WPML leaves it out<br \/>\nentirely. This is the one people miss: the setting is right, the field is simply blank on that<br \/>\nparticular page.<\/li>\n<\/ol>\n<h2>The standard parts of a post<\/h2>\n<p>The title, the content and the excerpt are always included. Nothing needs configuring \u2014 if the post<br \/>\nhas them, they are translated.<\/p>\n<h2>Custom fields, including SEO<\/h2>\n<p>Everything a plugin or theme stores beside the post \u2014 SEO titles and descriptions, ACF fields,<br \/>\nsubtitles, button labels \u2014 is a custom field, and WPML treats them all the same way.<\/p>\n<p>Go to <strong>WPML \u2192 Settings \u2192 Custom Fields Translation<\/strong>. Every field registered on the site is listed<br \/>\nwith four choices:<\/p>\n<table>\n<thead>\n<tr>\n<th>Setting<\/th>\n<th>What happens<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Translate<\/strong><\/td>\n<td>Sent to the translator and written back translated.<\/td>\n<\/tr>\n<tr>\n<td><strong>Copy<\/strong><\/td>\n<td>Copied to the translation verbatim, and re-copied whenever the original changes.<\/td>\n<\/tr>\n<tr>\n<td><strong>Copy once<\/strong><\/td>\n<td>Copied when the translation is first created, then left alone for editing by hand.<\/td>\n<\/tr>\n<tr>\n<td><strong>Don&#8217;t translate<\/strong><\/td>\n<td>Ignored. The translation keeps whatever the field has, usually nothing.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>SEO plugins.<\/strong> Yoast, Rank Math, SureRank, AIOSEO and the others ship a WPML configuration that<br \/>\nsets their fields to <strong>Translate<\/strong> for you, so this is usually already correct \u2014 worth checking once<br \/>\nrather than assuming. With it in place, the SEO title and meta description are translated along with<br \/>\nthe page, and so are the Facebook and Twitter titles and descriptions if you fill those in.<\/p>\n<p>Remember the second condition: a page with an empty SEO title has nothing to translate there. If you<br \/>\nrely on your SEO plugin to generate titles automatically, there is no stored value, nothing is sent,<br \/>\nand the translation generates its own title in its own language \u2014 which is usually what you want<br \/>\nanyway.<\/p>\n<p><strong>ACF and other field plugins.<\/strong> Same screen, same four choices. WPML publishes a recommended set of<br \/>\npreferences for ACF; the links at the bottom of <em>Do internal links point to the translated pages?<\/em><br \/>\npoint at it.<\/p>\n<p><strong>Term meta<\/strong> \u2014 fields attached to categories and tags rather than posts \u2014 has its own list, under<br \/>\n<strong>WPML \u2192 Settings \u2192 Custom Term Meta Translation<\/strong>.<\/p>\n<h2>Pages built with a page builder<\/h2>\n<p>Content from Elementor, Spectra, Divi, WPBakery and the block editor does not arrive as one block of<br \/>\ntext. WPML breaks it into individual strings \u2014 a heading, a button label, a paragraph \u2014 and each one<br \/>\nis translated separately. That is why a page builder page can show dozens of small pieces rather<br \/>\nthan one body field, and why its translation is rebuilt rather than stored as one lump.<\/p>\n<p>Two consequences worth knowing:<\/p>\n<ul>\n<li>Text that is not text \u2014 an image file name, a <code>#<\/code> placeholder link, a CSS class \u2014 is part of the<br \/>\nsame list, because WPML cannot tell the difference. It is passed through unchanged.<\/li>\n<li>Editing a translated page builder page by hand edits those strings, not the post content.<\/li>\n<\/ul>\n<h2>Post types and taxonomies<\/h2>\n<p><strong>WPML \u2192 Settings \u2192 Post Types Translation<\/strong> decides which content types are translatable at all. A<br \/>\ncustom post type set to <em>Not translatable<\/em> will never appear anywhere in this plugin.<\/p>\n<p><strong>WPML \u2192 Settings \u2192 Taxonomies Translation<\/strong> does the same for categories, tags and product<br \/>\ncategories. Terms are translated separately from the posts that use them \u2014 see <em>How to Translate?<\/em><br \/>\nfor where to do that.<\/p>\n<h2>What is not covered here<\/h2>\n<ul>\n<li><strong>Links and menus<\/strong> have their own rules, and their own page: <em>Do internal links point to the<br \/>\ntranslated pages?<\/em><\/li>\n<li><strong>Interface text<\/strong> from the theme and plugins \u2014 button labels, form messages, widget titles \u2014 is<br \/>\nnot part of any post. It lives in WPML String Translation and is translated from its own screen.<\/li>\n<\/ul>\n<h2>Checking what was actually sent<\/h2>\n<p>If you are not sure whether a field made it into a translation, open <strong>AI Translator \u2192 History<\/strong> and<br \/>\npress <strong>View<\/strong> in the <strong>Request<\/strong> column of that row. It shows exactly what left the site, keyed by<br \/>\nthe name WPML gave each field:<\/p>\n<table>\n<thead>\n<tr>\n<th>Name you will see<\/th>\n<th>What it is<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>title<\/code>, <code>body<\/code>, <code>excerpt<\/code><\/td>\n<td>The standard post fields.<\/td>\n<\/tr>\n<tr>\n<td><code>field-&lt;name&gt;-0<\/code><\/td>\n<td>A custom field, named after the key it is stored under.<\/td>\n<\/tr>\n<tr>\n<td><code>package-string-\u2026<\/code><\/td>\n<td>One string from a page builder or block.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>A field missing from that list was never sent \u2014 which sends you back to the two conditions at the top<br \/>\nof this page.<\/p>\n<p>There is one row type with nothing to show there: a translation made from Claude or ChatGPT over MCP<br \/>\nnever goes to a provider, so there is no request to look at. Ask the assistant which fields it was<br \/>\ngiven instead \u2014 see <em>Translating from Claude and ChatGPT (MCP)<\/em>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When you send a page for translation, the plugin does not decide what to translate. WPML builds the list, hands it over, and writes the answers\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_latwm_translated_slug":"","footnotes":""},"categories":[3],"tags":[],"class_list":["post-94","post","type-post","status-publish","format-standard","hentry","category-latw-for-wpml"],"_links":{"self":[{"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/posts\/94","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/comments?post=94"}],"version-history":[{"count":0,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/posts\/94\/revisions"}],"wp:attachment":[{"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/media?parent=94"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/categories?post=94"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/tags?post=94"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}