feat(core): add i18n foundation with English locale and UI wiring (#1589)

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
This commit is contained in:
Sam Potts
2026-06-18 11:55:38 -07:00
committed by GitHub
co-authored by Cursor Wesley Luyten
parent fa768da757
commit 768bf09da0
79 changed files with 2237 additions and 455 deletions
@@ -49,10 +49,10 @@ describe('PlaybackRateButton', () => {
const button = document.querySelector('[data-testid="button"]');
await waitFor(() => {
expect(document.querySelector('[data-testid="popup"] span')?.textContent).toBe('Playback rate 1');
expect(document.querySelector('[data-testid="popup"] span')?.textContent).toBe('playbackRateAria');
expect(document.querySelector('[data-testid="popup"] kbd')?.textContent).toBe('>');
});
expect(button?.getAttribute('aria-label')).toBe('Playback rate 1');
expect(button?.getAttribute('aria-label')).toBe('playbackRateAria');
expect(button?.getAttribute('aria-keyshortcuts')).toBe('>');
});
});
@@ -72,7 +72,7 @@ describe('usePlaybackRateOptions', () => {
const trigger = screen.getByTestId('trigger');
expect(trigger.getAttribute('aria-label')).toBe('Playback rate 1.5');
expect(trigger.getAttribute('aria-label')).toBe('playbackRateAria');
expect(trigger.getAttribute('data-rate')).toBe('1.5');
});
@@ -178,7 +178,7 @@ describe('TimeSlider compound', () => {
const thumb = container.querySelector('[data-testid="thumb"]');
expect(thumb?.getAttribute('role')).toBe('slider');
expect(thumb?.getAttribute('aria-label')).toBe('Seek');
expect(thumb?.getAttribute('aria-label')).toBe('seek');
});
it('SliderValue displays formatted time', () => {
@@ -184,7 +184,7 @@ describe('VolumeSlider compound', () => {
const thumb = container.querySelector('[data-testid="thumb"]');
expect(thumb?.getAttribute('role')).toBe('slider');
expect(thumb?.getAttribute('aria-label')).toBe('Volume');
expect(thumb?.getAttribute('aria-label')).toBe('volume');
});
it('SliderValue formats as percentage', () => {