Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Start Session, instrument cards, bulk-assignment errors and dashboard dates ignore the interface language

Abierto
#1,769 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
react, typescript

Línea de trabajo

Start with the listed components and routes in apps/web, then read apps/web/src/utils/bulk-assignments.ts and its tests to understand how error messages reach the wizard. Compare date formatting with the existing LineGraph and audit-log behavior, which the issue says already uses resolvedLanguage. Done means the named labels, enum values, parse errors, notifications, and dates follow the selected interface language, with the listed tests passing.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Area: Web Bug Difficulty: Medium Priority: Medium

Several user-facing strings in apps/web do not go through useTranslation, and some dates are formatted with the browser's locale instead of the interface language. A clinician using the French or Spanish interface sees English labels on the Start Session page and the instrument cards, English-only error lists in the bulk-assignment wizard, raw enum values such as INTERACTIVE, and month names in whatever language the browser happens to be set to. react/jsx-no-literals does not catch any of these, because each one is a prop value, an object property or a value computed outside JSX.

Where

Hard-coded English

  • apps/web/src/components/StartSessionForm/StartSessionForm.tsx:107 and apps/web/src/components/IdentificationForm/IdentificationForm.tsx:30: the identification-method select is labelled label: 'Method', on the Start Session page and in Datahub's Subject Lookup dialog.
  • apps/web/src/components/InstrumentCard/InstrumentCard.tsx:131: label: 'Tags' on every instrument card in Administer Instrument and Remote Assignment.
  • apps/web/src/components/InstrumentShowcase/InstrumentKindDropdown.tsx:38-41: the Kind filter's third option is label: 'Series' (the other two are translated).
  • apps/web/src/utils/bulk-assignments.ts:123-402: every BulkParseFailure message the wizard's ErrorList renders, e.g. 'Missing subject ID', 'Date of birth must be written as YYYY-MM-DD', 'Sex must be male or female', 'The workbook contains no sheets.' (14 in all). parseDelimitedText (:258-261) also passes Papa Parse's own English error.message (e.g. "Quoted field unterminated") straight through for pasted text and CSV files. ErrorList translates its own heading, so a French user reads a French sentence followed by an English list.
  • apps/web/src/routes/_app/datahub/subjects/$subjectId/table/$recordId.tsx:48: the failed-download notification has title: 'Error'.

Raw enum values shown as text

  • apps/web/src/routes/_app/dashboard.tsx:315 (Total Instruments dialog, "Kind" column), apps/web/src/routes/_app/admin/instrument-repos/index.tsx:338 (repository View dialog) and apps/web/src/routes/_app/upload/index.tsx:29 (Upload, "Kind" column) all render instrument.kind, i.e. FORM, INTERACTIVE, SERIES or FILE.

Dates in the browser's locale

  • apps/web/src/routes/_app/dashboard.tsx:455, :474, :578 and :597: the chart axis ticks and tooltips call toLocaleDateString(undefined, …).
  • apps/web/src/routes/_app/admin/instrument-repos/index.tsx:204: "Last Synced" calls toLocaleDateString() with no locale, so an en-US browser shows 10/7/2026 even in the French interface, which a French reader takes as 10 July.
// dashboard.tsx:453-456
tickFormatter={(timestamp: number) => {
  const date = new Date(timestamp);
  return date.toLocaleDateString(undefined, { day: 'numeric', month: 'short' });
}}

Reproduce

  1. In a browser whose language is English, sign in and switch the interface to Français.
  2. Open Start Session, Administer Instrument (during a session), the Dashboard, and Admin Panel → Instrument Repos.
  3. In Group Actions → Remote Assignments → Create Assignments, upload a CSV with a row missing its subject ID.

Actual: "Method", "Tags", "Series" and INTERACTIVE appear in English; the dashboard axes read "Oct 7"; "Last Synced" reads 10/7/2026; the wizard lists "Missing subject ID" under a French heading.
Expected: all of these follow the selected interface language, and dates are formatted with resolvedLanguage, as LineGraph and the audit logs already do.

Tests

  • apps/web/src/utils/__tests__/bulk-assignments.test.ts: it('should return every parse error as localized text, so the wizard can show it in the interface language').
  • apps/web/src/components/StartSessionForm/__tests__/StartSessionForm.test.tsx: it('should label the identification method in the interface language').
  • apps/web/src/routes/_app/__tests__/dashboard.test.tsx: it('should format chart dates in the interface language rather than the browser locale').
  • testing/src/specs/start-session.spec.ts: switch to French and assert the method select's label is not "Method".

Suggested fix

Translate the labels inline with t({ en, es, fr }). Have BulkParseError.message carry a LocalizedText (or a code that ErrorList maps to copy) instead of an English string, and map Papa Parse's error codes to translated copy rather than forwarding its message. Map InstrumentKind to translated labels in one helper and reuse it in the three tables. Pass resolvedLanguage to every toLocaleDateString call.

Lenguaje dominante
TypeScript
Estrellas
119
Forks
19
Merge medio
18 h 50 min
PR fusionados (30 d)
36

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de DouglasNeuroInformatics/OpenDataCapture

Todos los issues de DouglasNeuroInformatics/OpenDataCapture

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.