feat: move hardcoded strings to i18n

This commit is contained in:
Mikhail Kiselev
2026-02-10 14:41:20 +03:00
parent e24e4e7533
commit c42d6035fa
3 changed files with 29 additions and 7 deletions

View File

@@ -202,7 +202,7 @@
meetingActive = true meetingActive = true
} catch (e) { } catch (e) {
console.error('Failed to start meeting:', e) console.error('Failed to start meeting:', e)
alert('Ошибка запуска планёрки: ' + e) alert($t('common.errorStartMeeting') + ': ' + e)
} }
} }

View File

@@ -66,18 +66,18 @@
<div class="help-icon"> <div class="help-icon">
? ?
<div class="help-tooltip"> <div class="help-tooltip">
<div class="tooltip-title">Hotkeys</div> <div class="tooltip-title">{$t('hotkeys.title')}</div>
<div class="tooltip-row"><span class="key">⌘N</span> Next speaker</div> <div class="tooltip-row"><span class="key">⌘N</span> {$t('hotkeys.next')}</div>
<div class="tooltip-row"><span class="key">⌘S</span> Skip speaker</div> <div class="tooltip-row"><span class="key">⌘S</span> {$t('hotkeys.skip')}</div>
<div class="tooltip-row"><span class="key">Space</span> Pause/Resume</div> <div class="tooltip-row"><span class="key">Space</span> {$t('hotkeys.pauseResume')}</div>
<div class="tooltip-row"><span class="key">⌘Q</span> Stop meeting</div> <div class="tooltip-row"><span class="key">⌘Q</span> {$t('hotkeys.stop')}</div>
</div> </div>
</div> </div>
</div> </div>
<div class="speaker-name"> <div class="speaker-name">
{#if timerState?.currentSpeaker} {#if timerState?.currentSpeaker}
Сейчас говорит: {timerState.currentSpeaker} {$t('timer.currentlySpeaking')}: {timerState.currentSpeaker}
{:else} {:else}
{$t('timer.noSpeaker')} {$t('timer.noSpeaker')}
{/if} {/if}

View File

@@ -32,6 +32,7 @@ export const translations = {
// Timer page // Timer page
timer: { timer: {
currentSpeaker: 'Текущий спикер', currentSpeaker: 'Текущий спикер',
currentlySpeaking: 'Сейчас говорит',
speakerTime: 'Время спикера', speakerTime: 'Время спикера',
totalTime: 'Общее время', totalTime: 'Общее время',
remaining: 'Осталось', remaining: 'Осталось',
@@ -131,6 +132,7 @@ export const translations = {
no: 'Нет', no: 'Нет',
loading: 'Загрузка...', loading: 'Загрузка...',
error: 'Ошибка', error: 'Ошибка',
errorStartMeeting: 'Ошибка запуска планёрки',
}, },
// Time formats // Time formats
@@ -139,6 +141,15 @@ export const translations = {
minutes: 'мин', minutes: 'мин',
seconds: 'сек', seconds: 'сек',
}, },
// Hotkeys
hotkeys: {
title: 'Горячие клавиши',
next: 'Следующий спикер',
skip: 'Пропустить',
pauseResume: 'Пауза/Продолжить',
stop: 'Остановить митинг',
},
}, },
en: { en: {
@@ -170,6 +181,7 @@ export const translations = {
// Timer page // Timer page
timer: { timer: {
currentSpeaker: 'Current Speaker', currentSpeaker: 'Current Speaker',
currentlySpeaking: 'Currently speaking',
speakerTime: 'Speaker Time', speakerTime: 'Speaker Time',
totalTime: 'Total Time', totalTime: 'Total Time',
remaining: 'Remaining', remaining: 'Remaining',
@@ -269,6 +281,7 @@ export const translations = {
no: 'No', no: 'No',
loading: 'Loading...', loading: 'Loading...',
error: 'Error', error: 'Error',
errorStartMeeting: 'Failed to start meeting',
}, },
// Time formats // Time formats
@@ -277,6 +290,15 @@ export const translations = {
minutes: 'min', minutes: 'min',
seconds: 'sec', seconds: 'sec',
}, },
// Hotkeys
hotkeys: {
title: 'Hotkeys',
next: 'Next speaker',
skip: 'Skip speaker',
pauseResume: 'Pause/Resume',
stop: 'Stop meeting',
},
}, },
}; };