diff --git a/src/lib/i18n/en.ts b/src/lib/i18n/en.ts index 47f1017..a55e9f7 100644 --- a/src/lib/i18n/en.ts +++ b/src/lib/i18n/en.ts @@ -134,5 +134,31 @@ export default { title: 'Oops!', message: 'The page you’re looking for doesn’t exist. It might have been removed, renamed, or never existed.\n\n

Go back to the homepage to continue browsing', return: 'Return home', - } + }, + player: { + menu: { + showFuri: 'Show Furigana', + hideFuri: 'Hide Furigana', + revertHiragana: 'Revert to Hiragana', + convertToKatakana: 'Convert all to Katakana', + showRomaji: 'Show Romaji', + hideRomaji: 'Hide Romaji', + showRomajiOnError: 'Show Romaji on Error', + hideRomajiOnError: 'Don\'t Show Romaji on Error', + musicModeUnavailable: 'Not available in music mode', + showRepeated: 'Show Repeated Lines', + hideRepeated: 'Hide Repeated Lines', + shuffle: 'Current: Shuffle', + sequential: 'Current: Sequential', + nextSong: 'Next Song' + } + }, + dialog: { + close: 'Close', + error: { + title: 'Error', + refresh: 'Refresh to Retry' + } + }, + components: {} } \ No newline at end of file diff --git a/src/lib/i18n/ja.ts b/src/lib/i18n/ja.ts index 425a73c..d5f46fd 100644 --- a/src/lib/i18n/ja.ts +++ b/src/lib/i18n/ja.ts @@ -134,5 +134,31 @@ export default { title: 'おっと!', message: 'お探しのページは見つかりませんでした。削除されたか、名前が変更されたか、あるいは最初から存在しなかった可能性があります。\n\n

トップページ に戻って閲覧を続けてください', return: 'トップページに戻る', - } + }, + player: { + menu: { + showFuri: 'ふりがなを表示', + hideFuri: 'ふりがなを隠す', + revertHiragana: 'ひらがなに戻す', + convertToKatakana: 'すべてカタカナに変換', + showRomaji: 'ローマ字を表示', + hideRomaji: 'ローマ字を隠す', + showRomajiOnError: 'エラー時にローマ字を表示', + hideRomajiOnError: 'エラー時にローマ字を表示しない', + musicModeUnavailable: '音楽モードでは利用できません', + showRepeated: '重複行を表示', + hideRepeated: '重複行を隠す', + shuffle: '現在:シャッフル再生', + sequential: '現在:順次再生', + nextSong: '次の曲' + } + }, + dialog: { + close: '閉じる', + error: { + title: 'エラー', + refresh: '更新して再試行' + } + }, + components: {} } diff --git a/src/lib/i18n/zh.ts b/src/lib/i18n/zh.ts index 3fcd861..a7f6403 100644 --- a/src/lib/i18n/zh.ts +++ b/src/lib/i18n/zh.ts @@ -134,5 +134,33 @@ export default { title: '页面不存在', message: '很抱歉,您访问的页面不存在。可能已被删除、更名,或链接输入错误。\n\n

返回 首页 继续浏览', return: '返回首页', + }, + player: { + menu: { + showFuri: '显示假名标注', + hideFuri: '隐藏假名标注', + revertHiragana: '恢复平假名', + convertToKatakana: '全部转换为片假名', + showRomaji: '显示罗马音', + hideRomaji: '隐藏罗马音', + showRomajiOnError: '错误时显示罗马音', + hideRomajiOnError: '不在错误时显示罗马音', + musicModeUnavailable: '音乐模式下不可用', + showRepeated: '显示重复行', + hideRepeated: '隐藏重复行', + shuffle: '当前:随机播放', + sequential: '当前:顺序播放', + nextSong: '下首' + } + }, + dialog: { + close: '关闭', + error: { + title: '错误', + refresh: '刷新重试' + } + }, + components: { + } } \ No newline at end of file diff --git a/src/lib/ui/player/PlayerAppBar.svelte b/src/lib/ui/player/PlayerAppBar.svelte index 791d740..dabd431 100644 --- a/src/lib/ui/player/PlayerAppBar.svelte +++ b/src/lib/ui/player/PlayerAppBar.svelte @@ -7,6 +7,8 @@ import { API } from "$lib/client" import { getNextSong, getNextLoc } from "./SongSwitching" + import { getI18n } from "$lib/i18n" + interface Props { song: NeteaseSong settings: TypingSettings @@ -27,6 +29,8 @@ isKaraoke = false }: Props = $props() + const t = getI18n().player.menu + let isHideRepeated = $derived(settings.hideRepeated && !disableHideRepeated) const nextSongId = $derived(getNextSong(playlist, loc)) @@ -48,27 +52,27 @@ - settings.isFuri = !settings.isFuri}>{settings.isFuri ? "隐藏" : "显示"}假名标注 - settings.allKata = !settings.allKata}>{settings.allKata ? "恢复平假名" : "全部转换为片假名"} - settings.showRomaji = !settings.showRomaji}>{settings.showRomaji ? "隐藏罗马音" : "显示罗马音"} + settings.isFuri = !settings.isFuri}>{settings.isFuri ? t.hideFuri : t.showFuri} + settings.allKata = !settings.allKata}>{settings.allKata ? t.revertHiragana : t.convertToKatakana} + settings.showRomaji = !settings.showRomaji}>{settings.showRomaji ? t.hideRomaji : t.showRomaji} {#if showRomajiOnError} - settings.showRomajiOnError = !settings.showRomajiOnError}>{settings.showRomajiOnError ? "不在错误时显示罗马音" : "错误时显示罗马音"} + settings.showRomajiOnError = !settings.showRomajiOnError}>{settings.showRomajiOnError ? t.hideRomajiOnError : t.showRomajiOnError} {/if} settings.hideRepeated = !settings.hideRepeated}>{isHideRepeated ? "显示重复行" : "隐藏重复行"} + sub={disableHideRepeated ? t.musicModeUnavailable : ""} + onclick={() => settings.hideRepeated = !settings.hideRepeated}>{isHideRepeated ? t.showRepeated : t.hideRepeated} {#if loc} loc!.playMode = loc!.playMode === 'random' ? 'sequential' : 'random'}> - {loc.playMode === 'random' ? "当前:随机播放" : "当前:顺序播放"} + {loc.playMode === 'random' ? t.shuffle : t.sequential} {#if nextSongId} - 下首 + {t.nextSong} {/if} {/if} diff --git a/src/lib/ui/status/Dialog.svelte b/src/lib/ui/status/Dialog.svelte index 8024eba..62b6b9f 100644 --- a/src/lib/ui/status/Dialog.svelte +++ b/src/lib/ui/status/Dialog.svelte @@ -1,6 +1,7 @@ diff --git a/src/lib/ui/status/ErrorDialog.svelte b/src/lib/ui/status/ErrorDialog.svelte index 8d8af08..bfcf348 100644 --- a/src/lib/ui/status/ErrorDialog.svelte +++ b/src/lib/ui/status/ErrorDialog.svelte @@ -1,15 +1,18 @@ - location.reload() }]} noClose>