Skip to content

i18n(loop/errors): localize DeepSeek error messages#444

Merged
esengine merged 1 commit into
mainfrom
feat/loop-errors-i18n-v2
May 8, 2026
Merged

i18n(loop/errors): localize DeepSeek error messages#444
esengine merged 1 commit into
mainfrom
feat/loop-errors-i18n-v2

Conversation

@esengine

@esengine esengine commented May 8, 2026

Copy link
Copy Markdown
Owner

Why

formatLoopError, reasonPrefixFor, and errorLabelFor were all hardcoded English. A Chinese user hitting a 503 / 401 / context-overflow saw raw English in the chat — same class of UX gap as #440, just on the i18n axis.

This includes the new 5xx outage notice from #440 (now in main).

What

New `errors.*` i18n namespace covering:

  • context overflow (with V4 / legacy limit mention)
  • 401 auth / 402 balance / 422 param / 400 bad request
  • 5xx head + reachable / unreachable / two action variants
  • reason prefix and label for budget / aborted / context-guard / stuck
  • (no message) fallback for empty error bodies

zh-CN translations for all 20 keys. The user-visible `{inner}` server message (e.g. "Authentication Fails") is preserved verbatim — translating DS's own response would be wrong.

Test plan

  • 26 existing EN cases still pass (vitest setupFiles pins runtime to EN)
  • 2 new cases flip to zh-CN and confirm runtime translation works
  • full suite green
  • tsc + biome clean

Note

Replaces #441 (closed). Original branch was stacked on the now-merged `fix/loop-deepseek-5xx-friendly`; new branch is rebased onto main.

formatLoopError, reasonPrefixFor, and errorLabelFor were all
hardcoded English. A Chinese user hitting a 503 / 401 / context
overflow saw raw English (and on top of that, the new 5xx outage
notice from #440 was also English).

Move the strings to a new errors.* i18n namespace covering:
  - context overflow (with V4/legacy limit mention)
  - 401 auth / 402 balance / 422 param / 400 bad request
  - 5xx head + reachable / unreachable / two action variants
  - reason prefix and label for budget/aborted/context-guard/stuck
  - "(no message)" fallback for empty error bodies

zh-CN translations included. Existing tests still cover EN (vitest
setupFile pins runtime to EN); two new tests flip to zh-CN to confirm
runtime switch actually translates.

Stacked on #440 — merge that first.
@esengine esengine merged commit 97a93cf into main May 8, 2026
3 checks passed
@esengine esengine deleted the feat/loop-errors-i18n-v2 branch May 8, 2026 11:28
ChasLui pushed a commit to ChasLui/DeepSeek-Reasonix that referenced this pull request May 23, 2026
formatLoopError, reasonPrefixFor, and errorLabelFor were all
hardcoded English. A Chinese user hitting a 503 / 401 / context
overflow saw raw English (and on top of that, the new 5xx outage
notice from esengine#440 was also English).

Move the strings to a new errors.* i18n namespace covering:
  - context overflow (with V4/legacy limit mention)
  - 401 auth / 402 balance / 422 param / 400 bad request
  - 5xx head + reachable / unreachable / two action variants
  - reason prefix and label for budget/aborted/context-guard/stuck
  - "(no message)" fallback for empty error bodies

zh-CN translations included. Existing tests still cover EN (vitest
setupFile pins runtime to EN); two new tests flip to zh-CN to confirm
runtime switch actually translates.

Stacked on esengine#440 — merge that first.
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