Skip to content

[BUG] Google AI Overview citation hover duplicates translations #2185

Description

@kv-chiu

Before you report

  • I have searched existing issues to avoid duplicates
  • I have tried with the latest available version (or can reproduce on latest)

Current vs. Expected behavior

On a Google Search AI Overview, hovering a citation after page translation is enabled permanently appends another copy of the same bilingual translation. Repeating the hover keeps increasing the number of .read-frog-translated-content-wrapper elements by one.

Expected: citation hover UI must not change the number of page-translation wrappers.

Observed in a live DOM trace:

before hover: 18 wrappers
after hover:  19 wrappers
existing wrappers still connected: 18
new wrappers: 1

The added wrapper follows this mutation sequence:

inserted empty inside span.yADgie
translated content inserted
removed from span.yADgie
inserted as a direct child of the original paragraph

Google temporarily moves the existing source Text node into span.yADgie while rendering citation hover UI. The page mutation handler treats that temporary element as newly added translatable content. Read Frog translates it, then Google unwraps the decorator while preserving its children, leaving the new translation wrapper behind permanently.

To Reproduce

  1. Open Google Search and search for openai ipo.
  2. Enable Read Frog page translation in bilingual mode.
  3. Find the first paragraph of the AI Overview and its Yahoo Finance +1 citation.
  4. Move the pointer over the citation source.
  5. Move away and hover the citation repeatedly.
  6. Observe that the same translated paragraph is appended once per hover.

Which area(s) are affected? (Select all that apply)

Browser Extension

Extension version (if applicable)

1.46.9; the implicated mutation/traversal code is unchanged on main at 1.47.1.

Provide environment information

- OS: macOS
- Browser: Google Chrome
- Website: https://www.google.com/search?q=openai+ipo
- Translation mode: bilingual

Additional context

This differs from #1096/#1686: the duplicate is not an independent double insertion during infinite scroll. It is caused by a site-created temporary wrapper around already translated, unchanged host text.

A generic fix is to skip re-walking child-list additions inside a bilingual layout source whose host text and translation wrapper are still current. Genuine text additions make the state stale and continue through the existing retranslation path.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions