`Evaluator` must respect the referencing entity's language when evaluating a referenced entity, or fall back to the negotiated content language
>>> [!note] Migrated issue <!-- Drupal.org comment --> <!-- Migrated from issue #3583379. --> Reported by: [julien](https://www.drupal.org/user/177445) Related to !876 >>> <h3 id="overview">Overview</h3> <p>When Canvas evaluates prop expressions that traverse entity references (e.g., a paragraph referencing a media entity, or an entity_reference field pointing to a taxonomy term), the referenced entities are<br> always returned in their default language &mdash; not the current page/content language. On multilingual sites, this means component props populated from referenced entities display untranslated content.<br> Steps to reproduce:<br> 1. Enable content translation on a referenced entity type (e.g., Media, Taxonomy term)<br> 2. Create a Canvas component with a prop sourced from a reference field (e.g., image &rarr; entity reference &rarr; media &rarr; file URI)<br> 3. Create content in the default language, translate the referenced entity<br> 4. View the page in the translated language<br> 5. The referenced entity's field values appear in the default language, not the translated one</p> <p> Root cause:<br> Evaluator::doEvaluate() follows DataReferenceInterface to load referenced entities but never calls getTranslation() on them. The referenced entity is used as-is from the reference property, which returns it<br> in the default/stored language.</p> <h3 id="proposed-resolution">Proposed resolution</h3> <p> - Add a resolveTranslation() helper that checks TranslatableInterface and calls getTranslation($language_code) when a translation exists<br> - Thread $language_code through the entire evaluate()/doEvaluate() recursion chain<br> - At the entry point (EntityFieldPropSource::evaluate()), seed $language_code from the host entity's language; fall back to current language via LanguageManager<br> - Apply resolveTranslation() at every point a referenced entity is resolved (3 locations in doEvaluate())</p> <h3 id="ui-changes">User interface changes</h3> > Related issue: [Issue #3552924](https://www.drupal.org/node/3552924) > Related issue: [Issue #3546597](https://www.drupal.org/node/3546597) > Related issue: [Issue #3590196](https://www.drupal.org/node/3590196)
issue