Skip to content

Promote chat-history strings for translation#8703

Open
GerardPaligot wants to merge 28 commits into
developfrom
feature/gerard/chat-history-smartling
Open

Promote chat-history strings for translation#8703
GerardPaligot wants to merge 28 commits into
developfrom
feature/gerard/chat-history-smartling

Conversation

@GerardPaligot
Copy link
Copy Markdown
Contributor

@GerardPaligot GerardPaligot commented May 28, 2026

Task/Issue URL: https://app.asana.com/1/137249556945/project/1211850753229323/task/1214820120386828?focus=true

Description

Promotes the native chat-history UI strings out of donottranslate.xml and into strings-duckchat.xml so the 35 keys enter the Smartling translation pipeline ahead of release. Also replaces the two temporary duck_ai_chat_history_coming_soon placeholders wired into the Search and Overflow toolbar icons with their real content descriptions, and applies the final wording revisions agreed during copy review (Unpin → Remove Pin; sentence-case "Chat Pinned" / "Chat Unpinned" snackbars).

No new resource keys for UI surfaces that don't already exist — every promoted string is already consumed by the chat-history screen shipped behind duckAiChatHistory.historyScreen.

Steps to test this PR

n/a

UI changes

n/a


Note

Low Risk
Mostly resource and copy changes on an existing feature-flagged screen, plus a small fire-dialog label branch for chat selection.

Overview
Moves native Duck.ai chat history copy out of donottranslate.xml into strings-duckchat.xml and adds the same keys across locale strings-duckchat files so Smartling can translate them. Search and overflow toolbar items no longer use the temporary “coming soon” placeholder; they use dedicated content-description strings. English copy is refreshed (e.g. Remove pin, snackbar wording, new overflow/search descriptions).

The fire confirmation sheet labels bulk delete as Delete Chats when opened from chat-history selection (isInChatSelectionMode / FireDialogOrigin.ChatHistory), backed by a new singleTabFireDialogDeleteChats string.

Also includes minor onboarding string edits in some app locale strings.xml files (step counter / Dax example text).

Reviewed by Cursor Bugbot for commit d39f97c. Bugbot is set up for automated code reviews on this repo. Configure here.

Copy link
Copy Markdown
Contributor Author

GerardPaligot commented May 28, 2026

This stack of pull requests is managed by Graphite. Learn more about stacking.

<string name="preOnboardingWelcomeDialogBody1">Chceš rychlejší prohlížeč, se kterým budeš mít vše pod kontrolou?</string>
<string name="preOnboardingWelcomeDialogBody2">Umělá inteligence je vždy volitelná a ochrana soukromí je vždy zapnutá.</string>
<string name="onboardingStepIndicatorText" instruction="a counter above our instructions in onboarding that tells a user what step they are on">%1$d z %2$d</string>
<string name="onboardingStepIndicatorText" instruction="a counter above our instructions in onboarding that tells a user what step they are on">%1$d %2$d</string>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Step indicator missing "z" separator in three locales

High Severity

The word z (meaning "of") between the two format placeholders in onboardingStepIndicatorText was accidentally removed in the Czech, Polish, and Slovak translations. The string now reads %1$d %2$d instead of %1$d z %2$d, so the onboarding step indicator will display e.g. "1 3" instead of "1 z 3" ("1 of 3"). The English base string is %1$d of %2$d.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit cd3371c. Configure here.

<string name="onboardingSearchDaxDialogOption1Quoted" instruction="translate &apos;duck&apos; too.">hvordan si «and» på engelsk</string>
<string name="onboardingSearchDaxDialogOption1EnglishQuoted" instruction="translate &apos;duck&apos; too. Don&apos;t add question mark">hvordan si «and» på spansk</string>
<string name="onboardingSearchDaxDialogOption1Quoted" instruction="translate &apos;duck&apos; too.">hvordan si «duck» på engelsk</string>
<string name="onboardingSearchDaxDialogOption1EnglishQuoted" instruction="translate &apos;duck&apos; too. Don&apos;t add question mark">hvordan si duck» på spansk</string>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Norwegian string missing opening guillemet quote character

Medium Severity

The opening guillemet « was dropped from the onboardingSearchDaxDialogOption1EnglishQuoted string in Norwegian. It now reads hvordan si duck» på spansk instead of hvordan si «duck» på spansk, leaving an unmatched closing » visible to users.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit cd3371c. Configure here.

Base automatically changed from feature/gerard/view-all-chats-shortcut to develop May 28, 2026 09:05
@GerardPaligot GerardPaligot force-pushed the feature/gerard/chat-history-smartling branch from deb3752 to ba4a93b Compare May 28, 2026 09:07
<string name="preOnboardingWelcomeDialogBody2">Изкуственият интелект винаги е по избор, а защитата на поверителността винаги е включена.</string>
<string name="onboardingStepIndicatorText" instruction="a counter above our instructions in onboarding that tells a user what step they are on">%1$d от %2$d</string>
<string name="onboardingSearchDaxDialogOption1Quoted" instruction="translate &apos;duck&apos; too.">как се казва патица“ на английски</string>
<string name="onboardingSearchDaxDialogOption1Quoted" instruction="translate &apos;duck&apos; too.">как се казва патица“ на английски</string>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bulgarian string uses unescaped ASCII quotes, will be stripped

Medium Severity

The onboardingSearchDaxDialogOption1Quoted string changed from typographic „патица" quotes to what appear to be unescaped ASCII " (U+0022) around "патица". AAPT treats paired ASCII " as quoting delimiters (for whitespace preservation) and strips them from output. The user will see the word without any surrounding quotation marks. The English source uses \"duck\" and the sibling string on line 1010 uses \"патица\" — both properly escaped.

Fix in Cursor Fix in Web

Triggered by learned rule: Do not flag string resource copy content (grammar, wording, phrasing)

Reviewed by Cursor Bugbot for commit ba4a93b. Configure here.

<string name="onboardingStepIndicatorText" instruction="a counter above our instructions in onboarding that tells a user what step they are on">%1$d van %2$d</string>
<string name="onboardingSearchDaxDialogOption1Quoted" instruction="translate &apos;duck&apos; too.">hoe zeg je \'eend\' in het Engels?</string>
<string name="onboardingSearchDaxDialogOption1EnglishQuoted" instruction="translate &apos;duck&apos; too. Don&apos;t add question mark">hoe zeg je \'eend\' in het Spaans</string>
<string name="onboardingSearchDaxDialogOption1EnglishQuoted" instruction="translate &apos;duck&apos; too. Don&apos;t add question mark">hoe zeg je \'eend\' in het Nederlands</string>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dutch search suggestion targets user's own language

Medium Severity

The onboardingSearchDaxDialogOption1EnglishQuoted string in Dutch changed from in het Spaans (in Spanish) to in het Nederlands (in Dutch). Every other locale targets "Spanish" as the foreign language in this search suggestion. Asking a Dutch-speaking user "how to say 'eend' in Dutch" is nonsensical — they already know the answer. This appears to be an accidental edit.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 4b7b416. Configure here.

GerardPaligot and others added 15 commits May 29, 2026 09:49
Copy is locked for the native chat history screen, so move the placeholder
strings from donottranslate.xml into strings-duckchat.xml to enter the
Smartling pipeline ahead of release. Replaces the two temporary
"Coming soon" placeholders on the Search and Overflow toolbar entries
with proper content descriptions, and applies the final wording revisions
(Unpin → Remove Pin; sentence-case pin/unpin snackbars).
Translate strings to values-es
Translate strings to values-ro
Translate strings to values-tr
Translate strings to values-sk
Translate strings to values-ru
Translate strings to values-et
Translate strings to values-it
Translate strings to values-pl
Translate strings to values-bg
Translate strings to values-lv
Translate strings to values-fi
Translate strings to values-sl
Translate strings to values-nl
Translate strings to values-hr
Translate strings to values-hu
Translate strings to values-nb
Translate strings to values-sv
Translate strings to values-da
Translate strings to values-el
Translate strings to values-fr
Translate strings to values-lt
Translate strings to values-pt
Translate strings to values-cs
Ship review feedback flagged that "Delete All" is misleading when the
chat-history Fire-all and Delete-selected flows show the dialog operating
on a specific set of chats rather than everything. The new label lands
behind a generic isInSelectionMode flag on the ViewState so future
selection-style entry points (e.g. tab-switcher multi-select) can adopt
the same wording without changes to the view.
@GerardPaligot GerardPaligot force-pushed the feature/gerard/chat-history-smartling branch from 265552d to 4fcdd5e Compare May 29, 2026 07:56
Copy link
Copy Markdown
Contributor

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 5 total unresolved issues (including 4 from previous reviews).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 75e336f. Configure here.

<string name="preOnboardingWelcomeDialogBody2">La IA es siempre opcional y la protección de privacidad está siempre activada.</string>
<string name="onboardingStepIndicatorText" instruction="a counter above our instructions in onboarding that tells a user what step they are on">%1$d de %2$d</string>
<string name="onboardingSearchDaxDialogOption1Quoted" instruction="translate &apos;duck&apos; too.">cómo se dice «pato» en inglés</string>
<string name="onboardingSearchDaxDialogOption1Quoted" instruction="translate &apos;duck&apos; too.">cómo se dice «duck» en inglés</string>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Translated word "duck" reverted to English in multiple locales

Medium Severity

In onboardingSearchDaxDialogOption1Quoted (and EnglishQuoted in some locales), the correctly translated local word for "duck" was replaced with the English word "duck": Spanish «pato»«duck», Latvian "pīle""duck", Norwegian «and»«duck», Polish „kaczka"„duck". The instruction attribute on these strings explicitly says "translate 'duck' too," confirming the local word is required. This appears to be accidental data corruption.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 75e336f. Configure here.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant