The playground instrument selector, loading screen and several labels stay in English in the French UI
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 84/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- react, typescript
- Ambito
- accessibility, frontend, internationalization, testing
Direzione di ricerca
Start with the listed strings in InstrumentSelector.tsx, App.tsx, PreviewFrame.tsx, EditorPane.tsx, and UploadButton.tsx; check how nearby UI uses t({ en, fr }) and how the loading screen accesses i18n outside CoreProvider. Add the playground TSX files (excluding stories) to the react/jsx-no-literals block in eslint.config.js and extend testing/src/specs/playground.spec.ts. Done when the listed strings display in French and lint and the E2E assertions pass.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Several strings in the playground are hard-coded in English, so the French UI shows English in the instrument selector, on the loading screen and in a few labels. The playground offers English and French through its LanguageToggle and translates most text with t({ en, fr }), but these strings skip it. The instrument selector, the control used most, is the most visible case: in French, its search placeholder, its empty state and all three group headings (Examples, Saved, Templates, which are the raw category values) stay in English. react/jsx-no-literals, which catches this in apps/web and packages/react-core, is not enabled for apps/playground in eslint.config.js.
Where
apps/playground/src/components/Header/InstrumentSelector/InstrumentSelector.tsx:33, :44, :46, :48:
aria-label="Load an instrument..."
// ...
<Command.Input placeholder="Search..." />
<Command.List>
<Command.Empty>No Instruments Found</Command.Empty>
{Object.entries(categorizedInstruments).map(([heading, instruments]) => (
<Command.Group heading={heading} key={heading}>
Also:
apps/playground/src/App.tsx:13: the loading screen'stitle="Loading Editor and Toolchain"andsubtitle="Please Be Patient, This May Take a While".apps/playground/src/components/Viewer/PreviewFrame.tsx:69: the preview iframe'stitle="Open Data Capture - Instrument Preview", which screen readers announce.apps/playground/src/components/Editor/EditorPane.tsx:118: the image preview'salt={`Rendering of ${defaultFile.name}`}.apps/playground/src/components/Header/UploadButton/UploadButton.tsx:33,36: the fallback label'Unlabeled', which becomes the uploaded instrument's visible name.
Reproduce
- Open the playground and switch the language toggle to Français.
- Open the instrument selector, then type
zzzinto its search box. - Reload the page.
Actual: the placeholder reads Search..., the headings read Examples, Saved and Templates, the empty state reads No Instruments Found, and the loading screen is in English.
Expected: all of these appear in French.
Tests
Add apps/playground/src/**/*.tsx (excluding stories) to the react/jsx-no-literals block in eslint.config.js, so pnpm lint catches any regression. That lint rule is the guard; the strings themselves have no pure logic to unit-test.
E2E in testing/src/specs/playground.spec.ts: switch to French, open the selector, and assert that the search placeholder and a group heading are the French strings.
Suggested fix
Wrap each string in t({ en, fr }), map the category values to translated headings, and enable react/jsx-no-literals for the playground. The loading screen renders outside CoreProvider, so it needs i18n.t or a small wrapper rather than the hook.
- Lingua principale
- TypeScript
- Stelle
- 119
- Fork
- 19
- Merge medio
- 18h 50m
- PR unite (30g)
- 36
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di DouglasNeuroInformatics/OpenDataCapture
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
DouglasNeuroInformatics/OpenDataCapture#1813 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
DouglasNeuroInformatics/OpenDataCapture#1812 ·
I maintainer di solito rispondono entro 1 giorno
-
Area: Playground Bug Difficulty: Low Good First Issue Priority: Low
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
DouglasNeuroInformatics/OpenDataCapture#1805 ·
I maintainer di solito rispondono entro 1 giorno
-
Area: Instruments Bug Difficulty: Low Priority: Low
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
DouglasNeuroInformatics/OpenDataCapture#1801 ·
I maintainer di solito rispondono entro 1 giorno
-
Area: Instruments Bug Difficulty: Low Good First Issue Priority: Low
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
DouglasNeuroInformatics/OpenDataCapture#1800 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di DouglasNeuroInformatics/OpenDataCapture
Issue simili
-
[Bug]: Device screenshot fails with 500 on iPhone Duo (Xcode 27.2): serve-sim calls simctl without --displayForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
pingdotgg/t3code#24900 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
inu-appcenter/UNIDorm-web#411 ·
I maintainer di solito rispondono entro 1 giorno
-
🐛 bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
ranxianglei/billion-context#4720 ·
I maintainer di solito rispondono entro 1 giorno
-
area:arcade game p3-medium ready-for-agent type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
fderuiter/deruiter.dev#2840 ·
I maintainer di solito rispondono entro 1 giorno