Skip to content

[iOS] Localize Duck.ai contextual sheet strings for Smartling translation#4474

Open
SabrinaTardio wants to merge 1 commit intosabrina/view-all-chats-url-parameterfrom
sabrina/contextual-sheet-translations
Open

[iOS] Localize Duck.ai contextual sheet strings for Smartling translation#4474
SabrinaTardio wants to merge 1 commit intosabrina/view-all-chats-url-parameterfrom
sabrina/contextual-sheet-translations

Conversation

@SabrinaTardio
Copy link
Copy Markdown
Contributor

@SabrinaTardio SabrinaTardio commented Apr 18, 2026

Task/Issue URL: https://app.asana.com/1/137249556945/project/1204186595873227/task/1214118261014133?focus=true
Tech Design URL: N/A
CC: N/A

Description

  • Convert contextual sheet NotLocalizedString entries to NSLocalizedString for Smartling translation: welcome message, quick actions, recent chats popup labels
  • Update placeholder copy from "Ask privately" to "Ask anything privately" across all Duck.ai input fields
  • Refactor welcome message from two split strings into a single format string ("All chats are %@ private") with a separate highlighted word string, so translators can reorder for their language
  • Remove redundant searchInputFieldPlaceholderDuckAIV2 since the original now uses the updated copy

Testing Steps

  • Open the Duck.ai contextual sheet and verify the welcome message reads "All chats are [shield] private" with "private" in green
  • Verify the input placeholder reads "Ask anything privately"
  • Verify quick action chips read "Ask about page" and "Summarize page"
  • Tap the list button and verify "Recent Chats" header and "View all chats" labels display correctly
  • Verify the omnibar Duck.ai placeholder also reads "Ask anything privately"

Impact and Risks

Impact Level: Low

What could go wrong?

  • Existing translations for "Ask privately" will show the English "Ask anything privately" until Smartling translations are delivered
  • The welcome message refactor changes how the attributed string is built; if the format string or private word don't match, the green highlight won't apply (falls back to default styling)

Quality Considerations

  • Welcome message uses %@ placeholder for the shield icon, allowing translators to reposition it
  • Separate duckai.welcome.private.word string ensures translators can keep the highlighted word in sync with the full message
  • Switch bar strings (aiChatRecentChatsTitle, aiChatSuggestedChatsTitle) intentionally left as NotLocalizedString since they're not part of the contextual sheet

Made with Cursor


Note

Low Risk
Low risk UI copy/localization changes; main risk is the new welcome-message format/keyword matching, which could affect icon insertion or green highlighting in some locales.

Overview
Updates Duck.ai contextual sheet copy to be fully localizable via NSLocalizedString, adding new keys for the welcome message, quick actions, and recent-chats labels.

Refactors the welcome label to use a single format string ("All chats are %@ private") with runtime shield-icon replacement and separate localized matching for the highlighted private word, and standardizes the input placeholder to the updated copy ("Ask anything privately") while removing the old V2 placeholder/flagged selection.

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

@github-actions
Copy link
Copy Markdown
Contributor

Messages
📖

You seem to be updating localized strings. Make sure that you request translations and include translated strings before you ship your change. See iOS and macOS localization guidelines for more information.

Generated by 🚫 dangerJS against f4c504c

@SabrinaTardio SabrinaTardio added the start ios translation Starts iOS translation workflow via Smartling label Apr 18, 2026
@github-actions
Copy link
Copy Markdown
Contributor

🌍 Smartling Translation Job Created

Job ID: 5retpmz34mjy
Platform: iOS

🔗 View in Smartling Dashboard

🔧 View Workflow Run

Next:

  • Review translation job
  • Authorize translation by adding the authorize translation label

@github-actions github-actions bot added needs translation authorization The Smartling translation job the PR is awaiting authorization. and removed start ios translation Starts iOS translation workflow via Smartling labels Apr 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs translation authorization The Smartling translation job the PR is awaiting authorization.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant