Problem
On the regular QV vote stage, the navigation button is hardcoded to English (Next Question → / Next Module →) and ignores the survey locale. Under zh-TW, respondents see English instead of Chinese.
(QVPlus flow is unaffected — already fixed separately.)
When it happens
- Survey has 2+ QV questions → button shows
Next Question →.
- QV block is followed by another module → button shows
Next Module →.
- A single trailing QV question is fine (falls through to localized
Submit).
The hardcoded code
client/src/pages/survey/components/QuadraticSurveyPage.tsx:246-250:
const votePrimaryLabel = !isLastNavigatorQuestion
? 'Next Question →' // <-- hardcoded English
: hasNextModule
? 'Next Module →' // <-- hardcoded English
: undefined;
This is passed to QsNavBar as voteCtaLabel. In QsNavBar.tsx:245:
voteCtaLabel || (voteCtaMode === 'next' ? labels.text.nextQuestion : labels.text.submit)
the hardcoded voteCtaLabel shadows the already-localized labels.text.nextQuestion (下一題 →), so the translation is never used.
Fix
- Replace the literals with
resolvedQvLabels.text.nextQuestion / a new nextModule key (only nextQuestion is translated today; Next Module → has none).
- Do it on a branch off
main (touches the shared/regular QV path).
Problem
On the regular QV vote stage, the navigation button is hardcoded to English (
Next Question →/Next Module →) and ignores the surveylocale. Underzh-TW, respondents see English instead of Chinese.(QVPlus flow is unaffected — already fixed separately.)
When it happens
Next Question →.Next Module →.Submit).The hardcoded code
client/src/pages/survey/components/QuadraticSurveyPage.tsx:246-250:This is passed to
QsNavBarasvoteCtaLabel. InQsNavBar.tsx:245:the hardcoded
voteCtaLabelshadows the already-localizedlabels.text.nextQuestion(下一題 →), so the translation is never used.Fix
resolvedQvLabels.text.nextQuestion/ a newnextModulekey (onlynextQuestionis translated today;Next Module →has none).main(touches the shared/regular QV path).