diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index e7b81be1..5baa6812 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -354,6 +354,7 @@ "dynamicIsImage": "enable background image", "followCurrentLyric": "follow current lyric", "lyricAlignment": "lyric alignment", + "lyricOffset": "lyrics offset (ms)", "lyricGap": "lyric gap", "lyricSize": "lyric size", "opacity": "opacity", @@ -366,7 +367,8 @@ "lyrics": "lyrics", "related": "related", "upNext": "up next", - "visualizer": "visualizer" + "visualizer": "visualizer", + "noLyrics": "no lyrics found" }, "genreList": { "showAlbums": "show $t(entity.genre_one) $t(entity.album_other)", diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index f0e9f0f2..e42754dd 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -135,7 +135,7 @@ "artist_one": "автор", "artist_few": "автора", "artist_other": "исполнители", - "artist_many": "авторов", + "artist_many": "исполнителей", "folderWithCount_one": "{{count}} папка", "folderWithCount_few": "{{count}} папки", "folderWithCount_many": "{{count}} папок", @@ -281,7 +281,7 @@ "communityRating": "рейтинг сообщества", "favorited": "любимый", "albumArtist": "$t(entity.albumArtist_one)", - "isFavorited": "любимый", + "isFavorited": "любимые", "bpm": "уд./мин.", "disc": "диск", "biography": "биография", @@ -294,13 +294,13 @@ "playCount": "количество воспроизведений", "recentlyUpdated": "обновленные недавно", "channels": "$t(common.channel_other)", - "recentlyPlayed": "недавно проигрывался", + "recentlyPlayed": "проигрывались недавно", "owner": "$t(common.owner)", "title": "название", "rating": "рейтинг", "search": "поиск", "genre": "$t(entity.genre_one)", - "recentlyAdded": "добавлен недавно", + "recentlyAdded": "недавно добавленные", "note": "заметка", "name": "название", "releaseDate": "дата выхода", @@ -311,7 +311,7 @@ "id": "№", "songCount": "количество песен", "isPublic": "публичный", - "random": "случайный", + "random": "случайно", "lastPlayed": "последний раз проигрывалась", "toYear": "до года", "album": "$t(entity.album_one)", @@ -352,7 +352,7 @@ }, "page": { "sidebar": { - "nowPlaying": "сейчас проигрывается", + "nowPlaying": "сейчас играет", "playlists": "$t(entity.playlist_other)", "search": "$t(common.search)", "tracks": "$t(entity.track_other)", @@ -375,6 +375,7 @@ "showLyricProvider": "показать источник слов", "unsynchronized": "не синхронизировано", "lyricAlignment": "выравнивание слов песни", + "lyricOffset": "задержка слов (мсек)", "useImageAspectRatio": "использовать соотношение сторон изображения", "lyricGap": "пробел между словами", "dynamicIsImage": "включить фоновое изображение", @@ -382,7 +383,9 @@ }, "upNext": "играет", "lyrics": "слова", - "related": "похожие" + "related": "похожие", + "visualizer": "визуализатор", + "noLyrics": "слова для песни не найдены" }, "appMenu": { "selectServer": "список серверов", @@ -478,7 +481,7 @@ "viewAll": "посмотреть всё", "appearsOn": "появляется в", "viewDiscography": "посмотреть дискографию", - "relatedArtists": "похож на $t(entity.artist_other)", + "relatedArtists": "похож на $t(entity.artist_many)", "viewAllTracks": "посмотреть все $t(entity.track_other)", "recentReleases": "недавние релизы", "about": "О {{artist}}", diff --git a/src/renderer/features/lyrics/lyrics.tsx b/src/renderer/features/lyrics/lyrics.tsx index 33d8e32c..4b5ea97e 100644 --- a/src/renderer/features/lyrics/lyrics.tsx +++ b/src/renderer/features/lyrics/lyrics.tsx @@ -2,6 +2,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; import { Center, Group } from '@mantine/core'; import { AnimatePresence, motion } from 'framer-motion'; import { ErrorBoundary } from 'react-error-boundary'; +import { useTranslation } from 'react-i18next'; import { RiInformationFill } from 'react-icons/ri'; import styled from 'styled-components'; import { useSongLyricsByRemoteId, useSongLyricsBySong } from './queries/lyric-query'; @@ -86,6 +87,7 @@ const ScrollContainer = styled(motion.div)` export const Lyrics = () => { const currentSong = useCurrentSong(); const lyricsSettings = useLyricsSettings(); + const { t } = useTranslation(); const [index, setIndex] = useState(0); const [translatedLyrics, setTranslatedLyrics] = useState(null); const [showTranslation, setShowTranslation] = useState(false); @@ -217,7 +219,9 @@ export const Lyrics = () => { order={3} weight={700} > - No lyrics found + {t('page.fullscreenPlayer.noLyrics', { + postProcess: 'sentenceCase', + })} diff --git a/src/renderer/features/player/components/full-screen-player-queue.tsx b/src/renderer/features/player/components/full-screen-player-queue.tsx index 16e07219..e053c8ba 100644 --- a/src/renderer/features/player/components/full-screen-player-queue.tsx +++ b/src/renderer/features/player/components/full-screen-player-queue.tsx @@ -98,7 +98,7 @@ export const FullScreenPlayerQueue = () => { items.push({ active: activeTab === 'visualizer', icon: , - label: t('page.fullscreenPlayer.visualizer'), + label: t('page.fullscreenPlayer.visualizer', { postProcess: 'titleCase' }), onClick: () => setStore({ activeTab: 'visualizer' }), }); } diff --git a/src/renderer/features/player/components/full-screen-player.tsx b/src/renderer/features/player/components/full-screen-player.tsx index 2367568c..9078e383 100644 --- a/src/renderer/features/player/components/full-screen-player.tsx +++ b/src/renderer/features/player/components/full-screen-player.tsx @@ -382,7 +382,11 @@ const Controls = () => {