Skip to content

chore(i18n): fill missing vi, tr, zh-Hans translations to 100%#962

Merged
datlechin merged 2 commits intomainfrom
chore/fill-missing-translations
May 1, 2026
Merged

chore(i18n): fill missing vi, tr, zh-Hans translations to 100%#962
datlechin merged 2 commits intomainfrom
chore/fill-missing-translations

Conversation

@datlechin
Copy link
Copy Markdown
Member

Summary

Fills 297 missing strings × 3 locales (vi, tr, zh-Hans). Brings the Localizable.xcstrings catalog from ~83% to 100% completion across the three non-English locales.

Most missing strings came from the recent External API / MCP integration (#925) and the query layer refactor (#956). Three pure-formatter strings (:%@, %@:%lld, %1$@, %2$@) are marked shouldTranslate: false instead of translated, since they have no translatable text.

Coverage

Locale Before After
vi ~83% 100%
tr ~83% 100%
zh-Hans ~83% 100%

Translation rules followed

  • All placeholders preserved verbatim (%@, %d, %lld, %1$@, %2$@, \n).
  • Technical terms kept in English: PostgreSQL/MySQL/MongoDB/etc. driver names, SQL keywords, SSH/TLS/SSL/JSON/CSV/MCP/UUID/JWT, product names (Raycast, Cursor, Claude Desktop, GitHub, TablePro), file extensions, keyboard shortcuts.
  • Tone: developer-product, terse, matching existing translation voice for each locale.
  • Punctuation: locale-appropriate (full-width for zh-Hans body text, Western for placeholders and code; vi/tr use Western).

Test plan

  • App launches in each locale with no broken layout (long Vietnamese strings, Turkish word order, Chinese full-width punctuation).
  • Settings > Integrations / Activity Log strings render correctly (most new strings live here).
  • Pairing approval sheet, token revoke confirmation, External Access section all read naturally.
  • No string-format crashes (placeholder count matches between source and translations).

Review priorities

  • Vietnamese: native speakers verifiable. Nothing flagged for review.
  • Turkish: agent kept proper-noun apostrophe suffixes (TablePro'ya, iCloud'a). Used Turkish title case for buttons. One small note: "Don't Sort" rendered as "Sıralama" (relies on context); review if explicit "do not sort" wording is needed.
  • Simplified Chinese: standard JetBrains/VS Code-style Chinese tech UI conventions. "Token" rendered as "令牌". "intent" in Unsupported intent: %@ kept in English (likely a programmatic identifier).

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cd9d699791

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"tr" : {
"stringUnit" : {
"state" : "translated",
"value" : "'%@' izinli '%@' token'ı '%@' kaynağına erişemiyor"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve argument mapping in Turkish access error text

This translation reorders the sentence to put the permission phrase first, but it uses unnumbered placeholders, so runtime substitution follows source order (token, permission, resource) and swaps the first two values in the rendered Turkish message. When token and permission differ, users see incorrect details in an authorization error, which is misleading for debugging and access reviews. Use positional placeholders to match the reordered grammar.

Useful? React with 👍 / 👎.

@datlechin datlechin merged commit 5e88b60 into main May 1, 2026
1 check passed
@datlechin datlechin deleted the chore/fill-missing-translations branch May 1, 2026 14:22
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