mirror of
https://github.com/algerkong/AlgerMusicPlayer.git
synced 2026-04-03 06:10:49 +08:00
feat: 添加日语和韩语国际化,并且优化语言相关代码
This commit is contained in:
@@ -18,7 +18,8 @@ export default defineConfig({
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': resolve('src/renderer'),
|
||||
'@renderer': resolve('src/renderer')
|
||||
'@renderer': resolve('src/renderer'),
|
||||
'@i18n': resolve('src/i18n')
|
||||
}
|
||||
},
|
||||
plugins: [
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
import artist from './artist';
|
||||
import common from './common';
|
||||
import comp from './comp';
|
||||
import donation from './donation';
|
||||
import download from './download';
|
||||
import favorite from './favorite';
|
||||
import history from './history';
|
||||
import login from './login';
|
||||
import player from './player';
|
||||
import search from './search';
|
||||
import settings from './settings';
|
||||
import songItem from './songItem';
|
||||
import user from './user';
|
||||
|
||||
export default {
|
||||
common,
|
||||
donation,
|
||||
favorite,
|
||||
history,
|
||||
login,
|
||||
player,
|
||||
search,
|
||||
settings,
|
||||
songItem,
|
||||
user,
|
||||
download,
|
||||
comp,
|
||||
artist
|
||||
};
|
||||
38
src/i18n/lang/ja-JP/README.md
Normal file
38
src/i18n/lang/ja-JP/README.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# 日本語翻訳 (Japanese Translation)
|
||||
|
||||
このディレクトリには、AlgerMusicPlayerの日本語翻訳ファイルが含まれています。
|
||||
|
||||
## ファイル構成
|
||||
|
||||
- `artist.ts` - アーティスト関連の翻訳
|
||||
- `common.ts` - 共通の翻訳(ボタン、メッセージなど)
|
||||
- `comp.ts` - コンポーネント関連の翻訳
|
||||
- `donation.ts` - 寄付関連の翻訳
|
||||
- `download.ts` - ダウンロード管理の翻訳
|
||||
- `favorite.ts` - お気に入り機能の翻訳
|
||||
- `history.ts` - 履歴機能の翻訳
|
||||
- `login.ts` - ログイン関連の翻訳
|
||||
- `player.ts` - プレイヤー機能の翻訳
|
||||
- `search.ts` - 検索機能の翻訳
|
||||
- `settings.ts` - 設定画面の翻訳
|
||||
- `songItem.ts` - 楽曲アイテムの翻訳
|
||||
- `user.ts` - ユーザー関連の翻訳
|
||||
- `index.ts` - すべての翻訳をエクスポートするメインファイル
|
||||
|
||||
## 使用方法
|
||||
|
||||
アプリケーション内で言語を日本語に切り替えるには:
|
||||
|
||||
1. 設定画面を開く
|
||||
2. 「言語設定」セクションを見つける
|
||||
3. ドロップダウンメニューから「日本語」を選択
|
||||
|
||||
## 翻訳の改善
|
||||
|
||||
翻訳の改善や修正がある場合は、該当するファイルを編集してプルリクエストを送信してください。
|
||||
|
||||
## 注意事項
|
||||
|
||||
- すべての翻訳キーは中国語版と英語版に対応しています
|
||||
- 新しい機能が追加された場合は、対応する日本語翻訳も追加する必要があります
|
||||
- 文字化けを避けるため、ファイルはUTF-8エンコーディングで保存してください
|
||||
5
src/i18n/lang/ja-JP/artist.ts
Normal file
5
src/i18n/lang/ja-JP/artist.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export default {
|
||||
hotSongs: '人気楽曲',
|
||||
albums: 'アルバム',
|
||||
description: 'アーティスト紹介'
|
||||
};
|
||||
56
src/i18n/lang/ja-JP/common.ts
Normal file
56
src/i18n/lang/ja-JP/common.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
export default {
|
||||
play: '再生',
|
||||
next: '次の曲',
|
||||
previous: '前の曲',
|
||||
volume: '音量',
|
||||
settings: '設定',
|
||||
search: '検索',
|
||||
loading: '読み込み中...',
|
||||
loadingMore: 'さらに読み込み中...',
|
||||
alipay: 'Alipay',
|
||||
wechat: 'WeChat Pay',
|
||||
on: 'オン',
|
||||
off: 'オフ',
|
||||
show: '表示',
|
||||
hide: '非表示',
|
||||
confirm: '確認',
|
||||
cancel: 'キャンセル',
|
||||
configure: '設定',
|
||||
open: '開く',
|
||||
modify: '変更',
|
||||
success: '操作成功',
|
||||
error: '操作失敗',
|
||||
warning: '警告',
|
||||
info: 'お知らせ',
|
||||
save: '保存',
|
||||
delete: '削除',
|
||||
refresh: '更新',
|
||||
retry: '再試行',
|
||||
reset: 'リセット',
|
||||
back: '戻る',
|
||||
copySuccess: 'クリップボードにコピーしました',
|
||||
copyFailed: 'コピーに失敗しました',
|
||||
validation: {
|
||||
required: 'この項目は必須です',
|
||||
invalidInput: '無効な入力です',
|
||||
selectRequired: 'オプションを選択してください',
|
||||
numberRange: '{min}から{max}の間の数値を入力してください'
|
||||
},
|
||||
viewMore: 'もっと見る',
|
||||
noMore: 'これ以上ありません',
|
||||
selectAll: '全選択',
|
||||
expand: '展開',
|
||||
collapse: '折りたたみ',
|
||||
songCount: '{count}曲',
|
||||
language: '言語',
|
||||
tray: {
|
||||
show: '表示',
|
||||
quit: '終了',
|
||||
playPause: '再生/一時停止',
|
||||
prev: '前の曲',
|
||||
next: '次の曲',
|
||||
pause: '一時停止',
|
||||
play: '再生',
|
||||
favorite: 'お気に入り'
|
||||
}
|
||||
};
|
||||
190
src/i18n/lang/ja-JP/comp.ts
Normal file
190
src/i18n/lang/ja-JP/comp.ts
Normal file
@@ -0,0 +1,190 @@
|
||||
export default {
|
||||
installApp: {
|
||||
description: 'アプリをインストールして、より良い体験を',
|
||||
noPrompt: '今後表示しない',
|
||||
install: '今すぐインストール',
|
||||
cancel: '後でインストール',
|
||||
download: 'ダウンロード',
|
||||
downloadFailed: 'ダウンロード失敗',
|
||||
downloadComplete: 'ダウンロード完了',
|
||||
downloadProblem: 'ダウンロードに問題がありますか?',
|
||||
downloadProblemLinkText: '最新版をダウンロード'
|
||||
},
|
||||
playlistDrawer: {
|
||||
title: 'プレイリストに追加',
|
||||
createPlaylist: '新しいプレイリストを作成',
|
||||
cancelCreate: '作成をキャンセル',
|
||||
create: '作成',
|
||||
playlistName: 'プレイリスト名',
|
||||
privatePlaylist: 'プライベートプレイリスト',
|
||||
publicPlaylist: 'パブリックプレイリスト',
|
||||
createSuccess: 'プレイリストの作成に成功しました',
|
||||
createFailed: 'プレイリストの作成に失敗しました',
|
||||
addSuccess: '楽曲の追加に成功しました',
|
||||
addFailed: '楽曲の追加に失敗しました',
|
||||
private: 'プライベート',
|
||||
public: 'パブリック',
|
||||
count: '曲',
|
||||
loginFirst: 'まずログインしてください',
|
||||
getPlaylistFailed: 'プレイリストの取得に失敗しました',
|
||||
inputPlaylistName: 'プレイリスト名を入力してください'
|
||||
},
|
||||
update: {
|
||||
title: '新しいバージョンが見つかりました',
|
||||
currentVersion: '現在のバージョン',
|
||||
cancel: '後で更新',
|
||||
prepareDownload: 'ダウンロード準備中...',
|
||||
downloading: 'ダウンロード中...',
|
||||
nowUpdate: '今すぐ更新',
|
||||
downloadFailed: 'ダウンロードに失敗しました。再試行するか手動でダウンロードしてください',
|
||||
startFailed: 'ダウンロードの開始に失敗しました。再試行するか手動でダウンロードしてください',
|
||||
noDownloadUrl: '現在のシステムに適したインストールパッケージが見つかりません。手動でダウンロードしてください',
|
||||
installConfirmTitle: '更新をインストール',
|
||||
installConfirmContent: 'アプリを閉じて更新をインストールしますか?',
|
||||
manualInstallTip: 'アプリを閉じた後にインストーラーが正常に起動しない場合は、ダウンロードフォルダでファイルを見つけて手動で開いてください。',
|
||||
yesInstall: '今すぐインストール',
|
||||
noThanks: '後でインストール',
|
||||
fileLocation: 'ファイルの場所',
|
||||
copy: 'パスをコピー',
|
||||
copySuccess: 'パスをクリップボードにコピーしました',
|
||||
copyFailed: 'コピーに失敗しました',
|
||||
backgroundDownload: 'バックグラウンドダウンロード'
|
||||
},
|
||||
coffee: {
|
||||
title: 'コーヒーをおごる',
|
||||
alipay: 'Alipay',
|
||||
wechat: 'WeChat Pay',
|
||||
alipayQR: 'Alipay QRコード',
|
||||
wechatQR: 'WeChat QRコード',
|
||||
coffeeDesc: '一杯のコーヒー、一つのサポート',
|
||||
coffeeDescLinkText: 'もっと見る',
|
||||
qqGroup: 'QQチャンネル:algermusic',
|
||||
messages: {
|
||||
copySuccess: 'クリップボードにコピーしました'
|
||||
},
|
||||
donateList: 'コーヒーをおごる'
|
||||
},
|
||||
playlistType: {
|
||||
title: 'プレイリストカテゴリ',
|
||||
showAll: 'すべて表示',
|
||||
hide: '一部を非表示'
|
||||
},
|
||||
recommendAlbum: {
|
||||
title: '最新アルバム'
|
||||
},
|
||||
recommendSinger: {
|
||||
title: '毎日のおすすめ',
|
||||
songlist: '毎日のおすすめリスト'
|
||||
},
|
||||
recommendSonglist: {
|
||||
title: '今週の人気音楽'
|
||||
},
|
||||
searchBar: {
|
||||
login: 'ログイン',
|
||||
toLogin: 'ログインへ',
|
||||
logout: 'ログアウト',
|
||||
set: '設定',
|
||||
theme: 'テーマ',
|
||||
restart: '再起動',
|
||||
refresh: '更新',
|
||||
currentVersion: '現在のバージョン',
|
||||
searchPlaceholder: '何かを検索してみましょう...',
|
||||
zoom: 'ページズーム',
|
||||
zoom100: '標準ズーム100%',
|
||||
resetZoom: 'クリックしてズームをリセット',
|
||||
zoomDefault: '標準ズーム'
|
||||
},
|
||||
titleBar: {
|
||||
closeTitle: '閉じる方法を選択してください',
|
||||
minimizeToTray: 'トレイに最小化',
|
||||
exitApp: 'アプリを終了',
|
||||
rememberChoice: '選択を記憶する',
|
||||
closeApp: 'アプリを閉じる'
|
||||
},
|
||||
userPlayList: {
|
||||
title: '{name}のよく聞く音楽'
|
||||
},
|
||||
musicList: {
|
||||
searchSongs: '楽曲を検索',
|
||||
noSearchResults: '関連する楽曲が見つかりませんでした',
|
||||
switchToNormal: 'デフォルトレイアウトに切り替え',
|
||||
switchToCompact: 'コンパクトレイアウトに切り替え',
|
||||
playAll: 'すべて再生',
|
||||
collect: 'お気に入り',
|
||||
collectSuccess: 'お気に入りに追加しました',
|
||||
cancelCollectSuccess: 'お気に入りから削除しました',
|
||||
operationFailed: '操作に失敗しました',
|
||||
cancelCollect: 'お気に入りから削除',
|
||||
addToPlaylist: 'プレイリストに追加',
|
||||
addToPlaylistSuccess: 'プレイリストに追加しました',
|
||||
songsAlreadyInPlaylist: '楽曲は既にプレイリストに存在します'
|
||||
},
|
||||
playlist: {
|
||||
import: {
|
||||
button: 'プレイリストインポート',
|
||||
title: 'プレイリストインポート',
|
||||
description: 'メタデータ/テキスト/リンクの3つの方法でプレイリストをインポートできます',
|
||||
linkTab: 'リンクインポート',
|
||||
textTab: 'テキストインポート',
|
||||
localTab: 'メタデータインポート',
|
||||
linkPlaceholder: 'プレイリストのリンクを入力してください(1行に1つ)',
|
||||
textPlaceholder: '楽曲情報を入力してください。形式:楽曲名 アーティスト名',
|
||||
localPlaceholder: 'JSON形式の楽曲メタデータを入力してください',
|
||||
linkTips: 'サポートされているリンクソース:',
|
||||
linkTip1: 'プレイリストをWeChat/Weibo/QQでシェアした後、リンクをコピー',
|
||||
linkTip2: 'プレイリスト/個人ページのリンクを直接コピー',
|
||||
linkTip3: '記事のリンクを直接コピー',
|
||||
textTips: '楽曲情報を入力してください(1行に1曲)',
|
||||
textFormat: '形式:楽曲名 アーティスト名',
|
||||
localTips: '楽曲メタデータを追加してください',
|
||||
localFormat: '形式例:',
|
||||
songNamePlaceholder: '楽曲名',
|
||||
artistNamePlaceholder: 'アーティスト名',
|
||||
albumNamePlaceholder: 'アルバム名',
|
||||
addSongButton: '楽曲を追加',
|
||||
addLinkButton: 'リンクを追加',
|
||||
importToStarPlaylist: 'お気に入りの音楽にインポート',
|
||||
playlistNamePlaceholder: 'プレイリスト名を入力してください',
|
||||
importButton: 'インポート開始',
|
||||
emptyLinkWarning: 'プレイリストのリンクを入力してください',
|
||||
emptyTextWarning: '楽曲情報を入力してください',
|
||||
emptyLocalWarning: '楽曲メタデータを入力してください',
|
||||
invalidJsonFormat: 'JSON形式が正しくありません',
|
||||
importSuccess: 'インポートタスクの作成に成功しました',
|
||||
importFailed: 'インポートに失敗しました',
|
||||
importStatus: 'インポート状況',
|
||||
refresh: '更新',
|
||||
taskId: 'タスクID',
|
||||
status: 'ステータス',
|
||||
successCount: '成功数',
|
||||
failReason: '失敗理由',
|
||||
unknownError: '不明なエラー',
|
||||
statusPending: '処理待ち',
|
||||
statusProcessing: '処理中',
|
||||
statusSuccess: 'インポート成功',
|
||||
statusFailed: 'インポート失敗',
|
||||
statusUnknown: '不明なステータス',
|
||||
taskList: 'タスクリスト',
|
||||
taskListTitle: 'インポートタスクリスト',
|
||||
action: '操作',
|
||||
select: '選択',
|
||||
fetchTaskListFailed: 'タスクリストの取得に失敗しました',
|
||||
noTasks: 'インポートタスクがありません',
|
||||
clearTasks: 'タスクをクリア',
|
||||
clearTasksConfirmTitle: 'クリア確認',
|
||||
clearTasksConfirmContent: 'すべてのインポートタスク記録をクリアしますか?この操作は元に戻せません。',
|
||||
confirm: '確認',
|
||||
cancel: 'キャンセル',
|
||||
clearTasksSuccess: 'タスクリストをクリアしました',
|
||||
clearTasksFailed: 'タスクリストのクリアに失敗しました'
|
||||
}
|
||||
},
|
||||
settings: '設定',
|
||||
user: 'ユーザー',
|
||||
toplist: 'ランキング',
|
||||
history: 'お気に入り履歴',
|
||||
list: 'プレイリスト',
|
||||
mv: 'MV',
|
||||
home: 'ホーム',
|
||||
search: '検索'
|
||||
};
|
||||
8
src/i18n/lang/ja-JP/donation.ts
Normal file
8
src/i18n/lang/ja-JP/donation.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
export default {
|
||||
description: 'あなたの寄付は開発・保守作業をサポートするために使用され、サーバー保守、ドメイン更新などが含まれます。',
|
||||
message: 'メッセージを残す際は、メールアドレスやGitHubユーザー名を記載してください。',
|
||||
refresh: 'リストを更新',
|
||||
toDonateList: 'コーヒーをおごる',
|
||||
noMessage: 'メッセージがありません',
|
||||
title: '寄付リスト'
|
||||
};
|
||||
87
src/i18n/lang/ja-JP/download.ts
Normal file
87
src/i18n/lang/ja-JP/download.ts
Normal file
@@ -0,0 +1,87 @@
|
||||
export default {
|
||||
title: 'ダウンロード管理',
|
||||
localMusic: 'ローカル音楽',
|
||||
count: '合計{count}曲',
|
||||
clearAll: '記録をクリア',
|
||||
settings: '設定',
|
||||
tabs: {
|
||||
downloading: 'ダウンロード中',
|
||||
downloaded: 'ダウンロード済み'
|
||||
},
|
||||
empty: {
|
||||
noTasks: 'ダウンロードタスクがありません',
|
||||
noDownloaded: 'ダウンロード済みの楽曲がありません'
|
||||
},
|
||||
progress: {
|
||||
total: '全体の進行状況: {progress}%'
|
||||
},
|
||||
status: {
|
||||
downloading: 'ダウンロード中',
|
||||
completed: '完了',
|
||||
failed: '失敗',
|
||||
unknown: '不明'
|
||||
},
|
||||
artist: {
|
||||
unknown: '不明なアーティスト'
|
||||
},
|
||||
delete: {
|
||||
title: '削除確認',
|
||||
message: '楽曲「{filename}」を削除しますか?この操作は元に戻せません。',
|
||||
confirm: '削除確認',
|
||||
cancel: 'キャンセル',
|
||||
success: '削除成功',
|
||||
failed: '削除失敗',
|
||||
fileNotFound: 'ファイルが存在しないか移動されました。記録から削除しました',
|
||||
recordRemoved: 'ファイルの削除に失敗しましたが、記録から削除しました'
|
||||
},
|
||||
clear: {
|
||||
title: 'ダウンロード記録をクリア',
|
||||
message: 'すべてのダウンロード記録をクリアしますか?この操作はダウンロード済みの音楽ファイルを削除しませんが、すべての記録をクリアします。',
|
||||
confirm: 'クリア確認',
|
||||
cancel: 'キャンセル',
|
||||
success: 'ダウンロード記録をクリアしました'
|
||||
},
|
||||
message: {
|
||||
downloadComplete: '{filename}のダウンロードが完了しました',
|
||||
downloadFailed: '{filename}のダウンロードに失敗しました: {error}'
|
||||
},
|
||||
loading: '読み込み中...',
|
||||
playStarted: '再生開始: {name}',
|
||||
playFailed: '再生失敗: {name}',
|
||||
path: {
|
||||
copied: 'パスをクリップボードにコピーしました',
|
||||
copyFailed: 'パスのコピーに失敗しました'
|
||||
},
|
||||
settingsPanel: {
|
||||
title: 'ダウンロード設定',
|
||||
path: 'ダウンロード場所',
|
||||
pathDesc: '音楽ファイルのダウンロード保存場所を設定',
|
||||
pathPlaceholder: 'ダウンロードパスを選択してください',
|
||||
noPathSelected: 'まずダウンロードパスを選択してください',
|
||||
select: 'フォルダを選択',
|
||||
open: 'フォルダを開く',
|
||||
fileFormat: 'ファイル名形式',
|
||||
fileFormatDesc: '音楽ダウンロード時のファイル命名形式を設定',
|
||||
customFormat: 'カスタム形式',
|
||||
separator: '区切り文字',
|
||||
separators: {
|
||||
dash: 'スペース-スペース',
|
||||
underscore: 'アンダースコア',
|
||||
space: 'スペース'
|
||||
},
|
||||
dragToArrange: 'ドラッグで並び替えまたは矢印ボタンで順序を調整:',
|
||||
formatVariables: '使用可能な変数',
|
||||
preview: 'プレビュー効果:',
|
||||
saveSuccess: 'ダウンロード設定を保存しました',
|
||||
presets: {
|
||||
songArtist: '楽曲名 - アーティスト名',
|
||||
artistSong: 'アーティスト名 - 楽曲名',
|
||||
songOnly: '楽曲名のみ'
|
||||
},
|
||||
components: {
|
||||
songName: '楽曲名',
|
||||
artistName: 'アーティスト名',
|
||||
albumName: 'アルバム名'
|
||||
}
|
||||
}
|
||||
};
|
||||
13
src/i18n/lang/ja-JP/favorite.ts
Normal file
13
src/i18n/lang/ja-JP/favorite.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
export default {
|
||||
title: 'お気に入り',
|
||||
count: '合計{count}曲',
|
||||
batchDownload: '一括ダウンロード',
|
||||
download: 'ダウンロード ({count})',
|
||||
emptyTip: 'まだお気に入りの楽曲がありません',
|
||||
downloadSuccess: 'ダウンロード完了',
|
||||
downloadFailed: 'ダウンロード失敗',
|
||||
downloading: 'ダウンロード中です。しばらくお待ちください...',
|
||||
selectSongsFirst: 'まずダウンロードする楽曲を選択してください',
|
||||
descending: '降順',
|
||||
ascending: '昇順'
|
||||
};
|
||||
5
src/i18n/lang/ja-JP/history.ts
Normal file
5
src/i18n/lang/ja-JP/history.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export default {
|
||||
title: '再生履歴',
|
||||
playCount: '{count}',
|
||||
getHistoryFailed: '履歴の取得に失敗しました'
|
||||
};
|
||||
22
src/i18n/lang/ja-JP/login.ts
Normal file
22
src/i18n/lang/ja-JP/login.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
export default {
|
||||
title: {
|
||||
qr: 'QRコードログイン',
|
||||
phone: '電話番号ログイン'
|
||||
},
|
||||
qrTip: 'NetEase Cloudアプリでログイン',
|
||||
phoneTip: 'NetEase Cloudアカウントでログイン',
|
||||
placeholder: {
|
||||
phone: '電話番号',
|
||||
password: 'パスワード'
|
||||
},
|
||||
button: {
|
||||
login: 'ログイン',
|
||||
switchToQr: 'QRコードログイン',
|
||||
switchToPhone: '電話番号ログイン'
|
||||
},
|
||||
message: {
|
||||
loginSuccess: 'ログイン成功',
|
||||
loadError: 'ログイン情報の読み込み中にエラーが発生しました',
|
||||
qrCheckError: 'QRコードの状態確認中にエラーが発生しました'
|
||||
}
|
||||
};
|
||||
123
src/i18n/lang/ja-JP/player.ts
Normal file
123
src/i18n/lang/ja-JP/player.ts
Normal file
@@ -0,0 +1,123 @@
|
||||
export default {
|
||||
nowPlaying: '再生中',
|
||||
playlist: 'プレイリスト',
|
||||
lyrics: '歌詞',
|
||||
previous: '前へ',
|
||||
play: '再生',
|
||||
pause: '一時停止',
|
||||
next: '次へ',
|
||||
volumeUp: '音量を上げる',
|
||||
volumeDown: '音量を下げる',
|
||||
mute: 'ミュート',
|
||||
unmute: 'ミュート解除',
|
||||
songNum: '楽曲総数:{num}',
|
||||
addCorrection: '{num}秒早める',
|
||||
subtractCorrection: '{num}秒遅らせる',
|
||||
playFailed: '現在の楽曲の再生に失敗しました。次の曲を再生します',
|
||||
playMode: {
|
||||
sequence: '順次再生',
|
||||
loop: 'リピート再生',
|
||||
random: 'ランダム再生'
|
||||
},
|
||||
fullscreen: {
|
||||
enter: 'フルスクリーン',
|
||||
exit: 'フルスクリーン終了'
|
||||
},
|
||||
close: '閉じる',
|
||||
modeHint: {
|
||||
single: 'リピート再生',
|
||||
list: '自動で次の曲を再生'
|
||||
},
|
||||
lrc: {
|
||||
noLrc: '歌詞がありません。お楽しみください'
|
||||
},
|
||||
reparse: {
|
||||
title: '解析音源を選択',
|
||||
desc: '音源をクリックして直接解析します。次回この楽曲を再生する際は選択した音源を使用します',
|
||||
success: '再解析成功',
|
||||
failed: '再解析失敗',
|
||||
warning: '音源を選択してください',
|
||||
bilibiliNotSupported: 'Bilibili動画は再解析をサポートしていません',
|
||||
processing: '解析中...',
|
||||
clear: 'カスタム音源をクリア'
|
||||
},
|
||||
playBar: {
|
||||
expand: '歌詞を展開',
|
||||
collapse: '歌詞を折りたたみ',
|
||||
like: 'いいね',
|
||||
lyric: '歌詞',
|
||||
noSongPlaying: '再生中の楽曲がありません',
|
||||
eq: 'イコライザー',
|
||||
playList: 'プレイリスト',
|
||||
reparse: '再解析',
|
||||
playMode: {
|
||||
sequence: '順次再生',
|
||||
loop: 'ループ再生',
|
||||
random: 'ランダム再生'
|
||||
},
|
||||
play: '再生開始',
|
||||
pause: '再生一時停止',
|
||||
prev: '前の曲',
|
||||
next: '次の曲',
|
||||
volume: '音量',
|
||||
favorite: '{name}をお気に入りに追加しました',
|
||||
unFavorite: '{name}をお気に入りから削除しました',
|
||||
miniPlayBar: 'ミニ再生バー',
|
||||
playbackSpeed: '再生速度',
|
||||
advancedControls: 'その他の設定'
|
||||
},
|
||||
eq: {
|
||||
title: 'イコライザー',
|
||||
reset: 'リセット',
|
||||
on: 'オン',
|
||||
off: 'オフ',
|
||||
bass: '低音',
|
||||
midrange: '中音',
|
||||
treble: '高音',
|
||||
presets: {
|
||||
flat: 'フラット',
|
||||
pop: 'ポップ',
|
||||
rock: 'ロック',
|
||||
classical: 'クラシック',
|
||||
jazz: 'ジャズ',
|
||||
electronic: 'エレクトロニック',
|
||||
hiphop: 'ヒップホップ',
|
||||
rb: 'R&B',
|
||||
metal: 'メタル',
|
||||
vocal: 'ボーカル',
|
||||
dance: 'ダンス',
|
||||
acoustic: 'アコースティック',
|
||||
custom: 'カスタム'
|
||||
}
|
||||
},
|
||||
// タイマー機能関連
|
||||
sleepTimer: {
|
||||
title: 'スリープタイマー',
|
||||
cancel: 'タイマーをキャンセル',
|
||||
timeMode: '時間で停止',
|
||||
songsMode: '楽曲数で停止',
|
||||
playlistEnd: 'プレイリスト終了後に停止',
|
||||
afterPlaylist: 'プレイリスト終了後に停止',
|
||||
activeUntilEnd: 'リスト終了まで再生',
|
||||
minutes: '分',
|
||||
hours: '時間',
|
||||
songs: '曲',
|
||||
set: '設定',
|
||||
timerSetSuccess: '{minutes}分後に停止するよう設定しました',
|
||||
songsSetSuccess: '{songs}曲再生後に停止するよう設定しました',
|
||||
playlistEndSetSuccess: 'プレイリスト終了後に停止するよう設定しました',
|
||||
timerCancelled: 'スリープタイマーをキャンセルしました',
|
||||
timerEnded: 'スリープタイマーが作動しました',
|
||||
playbackStopped: '音楽再生を停止しました',
|
||||
minutesRemaining: '残り{minutes}分',
|
||||
songsRemaining: '残り{count}曲'
|
||||
},
|
||||
playList: {
|
||||
clearAll: 'プレイリストをクリア',
|
||||
alreadyEmpty: 'プレイリストは既に空です',
|
||||
cleared: 'プレイリストをクリアしました',
|
||||
empty: 'プレイリストが空です',
|
||||
clearConfirmTitle: 'プレイリストをクリア',
|
||||
clearConfirmContent: 'これによりプレイリスト内のすべての楽曲がクリアされ、現在の再生が停止されます。続行しますか?'
|
||||
}
|
||||
};
|
||||
27
src/i18n/lang/ja-JP/search.ts
Normal file
27
src/i18n/lang/ja-JP/search.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
export default {
|
||||
title: {
|
||||
hotSearch: '人気検索リスト',
|
||||
searchList: '検索リスト',
|
||||
searchHistory: '検索履歴'
|
||||
},
|
||||
button: {
|
||||
clear: 'クリア',
|
||||
back: '戻る',
|
||||
playAll: 'リストを再生'
|
||||
},
|
||||
loading: {
|
||||
more: '読み込み中...',
|
||||
failed: '検索に失敗しました'
|
||||
},
|
||||
noMore: 'これ以上ありません',
|
||||
error: {
|
||||
searchFailed: '検索に失敗しました'
|
||||
},
|
||||
search: {
|
||||
single: '楽曲',
|
||||
album: 'アルバム',
|
||||
playlist: 'プレイリスト',
|
||||
mv: 'MV',
|
||||
bilibili: 'Bilibili'
|
||||
}
|
||||
};
|
||||
285
src/i18n/lang/ja-JP/settings.ts
Normal file
285
src/i18n/lang/ja-JP/settings.ts
Normal file
@@ -0,0 +1,285 @@
|
||||
export default {
|
||||
theme: 'テーマ',
|
||||
language: '言語',
|
||||
regard: 'について',
|
||||
logout: 'ログアウト',
|
||||
sections: {
|
||||
basic: '基本設定',
|
||||
playback: '再生設定',
|
||||
application: 'アプリケーション設定',
|
||||
network: 'ネットワーク設定',
|
||||
system: 'システム管理',
|
||||
donation: '寄付サポート',
|
||||
regard: 'について'
|
||||
},
|
||||
basic: {
|
||||
themeMode: 'テーマモード',
|
||||
themeModeDesc: 'ライト/ダークテーマの切り替え',
|
||||
autoTheme: 'システムに従う',
|
||||
manualTheme: '手動切り替え',
|
||||
language: '言語設定',
|
||||
languageDesc: '表示言語を切り替え',
|
||||
font: 'フォント設定',
|
||||
fontDesc: 'フォントを選択します。前に配置されたフォントが優先されます',
|
||||
fontScope: {
|
||||
global: 'グローバル',
|
||||
lyric: '歌詞のみ'
|
||||
},
|
||||
animation: 'アニメーション速度',
|
||||
animationDesc: 'アニメーションを有効にするかどうか',
|
||||
animationSpeed: {
|
||||
slow: '非常に遅い',
|
||||
normal: '通常',
|
||||
fast: '非常に速い'
|
||||
},
|
||||
fontPreview: {
|
||||
title: 'フォントプレビュー',
|
||||
chinese: '中国語',
|
||||
english: 'English',
|
||||
japanese: '日本語',
|
||||
korean: '韓国語',
|
||||
chineseText: '静夜思 床前明月光 疑是地上霜',
|
||||
englishText: 'The quick brown fox jumps over the lazy dog',
|
||||
japaneseText: 'あいうえお かきくけこ さしすせそ',
|
||||
koreanText: '가나다라마 바사아자차 카타파하'
|
||||
}
|
||||
},
|
||||
playback: {
|
||||
quality: '音質設定',
|
||||
qualityDesc: '音楽再生の音質を選択(NetEase Cloud VIP)',
|
||||
qualityOptions: {
|
||||
standard: '標準',
|
||||
higher: '高音質',
|
||||
exhigh: '超高音質',
|
||||
lossless: 'ロスレス',
|
||||
hires: 'Hi-Res',
|
||||
jyeffect: 'HD サラウンド',
|
||||
sky: 'イマーシブサラウンド',
|
||||
dolby: 'Dolby Atmos',
|
||||
jymaster: '超高解像度マスター'
|
||||
},
|
||||
musicSources: '音源設定',
|
||||
musicSourcesDesc: '音楽解析に使用する音源プラットフォームを選択',
|
||||
musicSourcesWarning: '少なくとも1つの音源プラットフォームを選択する必要があります',
|
||||
musicUnblockEnable: '音楽解析を有効にする',
|
||||
musicUnblockEnableDesc: '有効にすると、再生できない音楽の解析を試みます',
|
||||
configureMusicSources: '音源を設定',
|
||||
selectedMusicSources: '選択された音源:',
|
||||
noMusicSources: '音源が選択されていません',
|
||||
gdmusicInfo: 'GD音楽台は複数のプラットフォーム音源を自動解析し、最適な結果を自動選択できます',
|
||||
autoPlay: '自動再生',
|
||||
autoPlayDesc: 'アプリを再起動した際に自動的に再生を継続するかどうか',
|
||||
showStatusBar: 'ステータスバーコントロール機能を表示するかどうか',
|
||||
showStatusBarContent: 'Macのステータスバーに音楽コントロール機能を表示できます(再起動後に有効)'
|
||||
},
|
||||
application: {
|
||||
closeAction: '閉じる動作',
|
||||
closeActionDesc: 'ウィンドウを閉じる際の動作を選択',
|
||||
closeOptions: {
|
||||
ask: '毎回確認',
|
||||
minimize: 'トレイに最小化',
|
||||
close: '直接終了'
|
||||
},
|
||||
shortcut: 'ショートカット設定',
|
||||
shortcutDesc: 'グローバルショートカットをカスタマイズ',
|
||||
download: 'ダウンロード管理',
|
||||
downloadDesc: 'ダウンロードリストボタンを常に表示するかどうか',
|
||||
unlimitedDownload: '無制限ダウンロード',
|
||||
unlimitedDownloadDesc: '有効にすると音楽を無制限でダウンロードします(ダウンロード失敗の可能性があります)。デフォルトは300曲制限',
|
||||
downloadPath: 'ダウンロードディレクトリ',
|
||||
downloadPathDesc: '音楽ファイルのダウンロード場所を選択',
|
||||
remoteControl: 'リモートコントロール',
|
||||
remoteControlDesc: 'リモートコントロール機能を設定'
|
||||
},
|
||||
network: {
|
||||
apiPort: '音楽APIポート',
|
||||
apiPortDesc: '変更後はアプリの再起動が必要です',
|
||||
proxy: 'プロキシ設定',
|
||||
proxyDesc: '音楽にアクセスできない場合はプロキシを有効にできます',
|
||||
proxyHost: 'プロキシアドレス',
|
||||
proxyHostPlaceholder: 'プロキシアドレスを入力してください',
|
||||
proxyPort: 'プロキシポート',
|
||||
proxyPortPlaceholder: 'プロキシポートを入力してください',
|
||||
realIP: 'realIP設定',
|
||||
realIPDesc: '制限により、このプロジェクトは海外での使用が制限されます。realIPパラメータを使用して国内IPを渡すことで解決できます',
|
||||
messages: {
|
||||
proxySuccess: 'プロキシ設定を保存しました。アプリ再起動後に有効になります',
|
||||
proxyError: '入力が正しいかどうか確認してください',
|
||||
realIPSuccess: '実IPアドレス設定を保存しました',
|
||||
realIPError: '有効なIPアドレスを入力してください'
|
||||
}
|
||||
},
|
||||
system: {
|
||||
cache: 'キャッシュ管理',
|
||||
cacheDesc: 'キャッシュをクリア',
|
||||
cacheClearTitle: 'クリアするキャッシュタイプを選択してください:',
|
||||
cacheTypes: {
|
||||
history: {
|
||||
label: '再生履歴',
|
||||
description: '再生した楽曲の記録をクリア'
|
||||
},
|
||||
favorite: {
|
||||
label: 'お気に入り記録',
|
||||
description: 'ローカルのお気に入り楽曲記録をクリア(クラウドのお気に入りには影響しません)'
|
||||
},
|
||||
user: {
|
||||
label: 'ユーザーデータ',
|
||||
description: 'ログイン情報とユーザー関連データをクリア'
|
||||
},
|
||||
settings: {
|
||||
label: 'アプリ設定',
|
||||
description: 'アプリのすべてのカスタム設定をクリア'
|
||||
},
|
||||
downloads: {
|
||||
label: 'ダウンロード記録',
|
||||
description: 'ダウンロード履歴をクリア(ダウンロード済みファイルは削除されません)'
|
||||
},
|
||||
resources: {
|
||||
label: '音楽リソース',
|
||||
description: '読み込み済みの音楽ファイル、歌詞などのリソースキャッシュをクリア'
|
||||
},
|
||||
lyrics: {
|
||||
label: '歌詞リソース',
|
||||
description: '読み込み済みの歌詞リソースキャッシュをクリア'
|
||||
}
|
||||
},
|
||||
restart: '再起動',
|
||||
restartDesc: 'アプリを再起動',
|
||||
messages: {
|
||||
clearSuccess: 'クリア成功。一部の設定は再起動後に有効になります'
|
||||
}
|
||||
},
|
||||
about: {
|
||||
version: 'バージョン',
|
||||
checkUpdate: '更新を確認',
|
||||
checking: '確認中...',
|
||||
latest: '現在最新バージョンです',
|
||||
hasUpdate: '新しいバージョンが見つかりました',
|
||||
gotoUpdate: '更新へ',
|
||||
gotoGithub: 'Githubへ',
|
||||
author: '作者',
|
||||
authorDesc: 'algerkong スターを付けてください🌟',
|
||||
messages: {
|
||||
checkError: '更新確認に失敗しました。後でもう一度お試しください'
|
||||
}
|
||||
},
|
||||
validation: {
|
||||
selectProxyProtocol: 'プロキシプロトコルを選択してください',
|
||||
proxyHost: 'プロキシアドレスを入力してください',
|
||||
portNumber: '有効なポート番号を入力してください(1-65535)'
|
||||
},
|
||||
lyricSettings: {
|
||||
title: '歌詞設定',
|
||||
tabs: {
|
||||
display: '表示',
|
||||
interface: 'インターフェース',
|
||||
typography: 'テキスト',
|
||||
mobile: 'モバイル'
|
||||
},
|
||||
pureMode: 'ピュアモード',
|
||||
hideCover: 'カバーを非表示',
|
||||
centerDisplay: '中央表示',
|
||||
showTranslation: '翻訳を表示',
|
||||
hideLyrics: '歌詞を非表示',
|
||||
hidePlayBar: '再生バーを非表示',
|
||||
hideMiniPlayBar: 'ミニ再生バーを非表示',
|
||||
backgroundTheme: '背景テーマ',
|
||||
themeOptions: {
|
||||
default: 'デフォルト',
|
||||
light: 'ライト',
|
||||
dark: 'ダーク'
|
||||
},
|
||||
fontSize: 'フォントサイズ',
|
||||
fontSizeMarks: {
|
||||
small: '小',
|
||||
medium: '中',
|
||||
large: '大'
|
||||
},
|
||||
letterSpacing: '文字間隔',
|
||||
letterSpacingMarks: {
|
||||
compact: 'コンパクト',
|
||||
default: 'デフォルト',
|
||||
loose: 'ゆったり'
|
||||
},
|
||||
lineHeight: '行の高さ',
|
||||
lineHeightMarks: {
|
||||
compact: 'コンパクト',
|
||||
default: 'デフォルト',
|
||||
loose: 'ゆったり'
|
||||
},
|
||||
mobileLayout: 'モバイルレイアウト',
|
||||
layoutOptions: {
|
||||
default: 'デフォルト',
|
||||
ios: 'iOSスタイル',
|
||||
android: 'Androidスタイル'
|
||||
},
|
||||
mobileCoverStyle: 'カバースタイル',
|
||||
coverOptions: {
|
||||
record: 'レコード',
|
||||
square: '正方形',
|
||||
full: 'フルスクリーン'
|
||||
},
|
||||
lyricLines: '歌詞行数',
|
||||
mobileUnavailable: 'この設定はモバイルでのみ利用可能です'
|
||||
},
|
||||
themeColor: {
|
||||
title: '歌詞テーマカラー',
|
||||
presetColors: 'プリセットカラー',
|
||||
customColor: 'カスタムカラー',
|
||||
preview: 'プレビュー効果',
|
||||
previewText: '歌詞効果',
|
||||
colorNames: {
|
||||
'spotify-green': 'Spotify グリーン',
|
||||
'apple-blue': 'Apple ブルー',
|
||||
'youtube-red': 'YouTube レッド',
|
||||
orange: 'バイタルオレンジ',
|
||||
purple: 'ミステリアスパープル',
|
||||
pink: 'サクラピンク'
|
||||
},
|
||||
tooltips: {
|
||||
openColorPicker: 'カラーパレットを開く',
|
||||
closeColorPicker: 'カラーパレットを閉じる'
|
||||
},
|
||||
placeholder: '#1db954'
|
||||
},
|
||||
shortcutSettings: {
|
||||
title: 'ショートカット設定',
|
||||
shortcut: 'ショートカット',
|
||||
shortcutDesc: 'ショートカットをカスタマイズ',
|
||||
shortcutConflict: 'ショートカットの競合',
|
||||
inputPlaceholder: 'クリックしてショートカットを入力',
|
||||
resetShortcuts: 'デフォルトに戻す',
|
||||
disableAll: 'すべて無効',
|
||||
enableAll: 'すべて有効',
|
||||
togglePlay: '再生/一時停止',
|
||||
prevPlay: '前の曲',
|
||||
nextPlay: '次の曲',
|
||||
volumeUp: '音量を上げる',
|
||||
volumeDown: '音量を下げる',
|
||||
toggleFavorite: 'お気に入り/お気に入り解除',
|
||||
toggleWindow: 'ウィンドウ表示/非表示',
|
||||
scopeGlobal: 'グローバル',
|
||||
scopeApp: 'アプリ内',
|
||||
enabled: '有効',
|
||||
disabled: '無効',
|
||||
messages: {
|
||||
resetSuccess: 'デフォルトのショートカットに戻しました。保存を忘れずに',
|
||||
conflict: '競合するショートカットがあります。再設定してください',
|
||||
saveSuccess: 'ショートカット設定を保存しました',
|
||||
saveError: 'ショートカットの保存に失敗しました。再試行してください',
|
||||
cancelEdit: '変更をキャンセルしました',
|
||||
disableAll: 'すべてのショートカットを無効にしました。保存を忘れずに',
|
||||
enableAll: 'すべてのショートカットを有効にしました。保存を忘れずに'
|
||||
}
|
||||
},
|
||||
remoteControl: {
|
||||
title: 'リモートコントロール',
|
||||
enable: 'リモートコントロールを有効にする',
|
||||
port: 'サービスポート',
|
||||
allowedIps: '許可されたIPアドレス',
|
||||
addIp: 'IPを追加',
|
||||
emptyListHint: '空のリストはすべてのIPアクセスを許可することを意味します',
|
||||
saveSuccess: 'リモートコントロール設定を保存しました',
|
||||
accessInfo: 'リモートコントロールアクセスアドレス:'
|
||||
}
|
||||
};
|
||||
28
src/i18n/lang/ja-JP/songItem.ts
Normal file
28
src/i18n/lang/ja-JP/songItem.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
export default {
|
||||
menu: {
|
||||
play: '再生',
|
||||
playNext: '次に再生',
|
||||
download: '楽曲をダウンロード',
|
||||
addToPlaylist: 'プレイリストに追加',
|
||||
favorite: 'いいね',
|
||||
unfavorite: 'いいね解除',
|
||||
removeFromPlaylist: 'プレイリストから削除',
|
||||
dislike: '嫌い',
|
||||
undislike: '嫌い解除'
|
||||
},
|
||||
message: {
|
||||
downloading: 'ダウンロード中です。しばらくお待ちください...',
|
||||
downloadFailed: 'ダウンロードに失敗しました',
|
||||
downloadQueued: 'ダウンロードキューに追加しました',
|
||||
addedToNextPlay: '次の再生に追加しました',
|
||||
getUrlFailed: '音楽ダウンロードアドレスの取得に失敗しました。ログインしているか確認してください'
|
||||
},
|
||||
dialog: {
|
||||
dislike: {
|
||||
title: 'お知らせ!',
|
||||
content: 'この楽曲を嫌いにしますか?再度アクセスすると毎日のおすすめから除外されます。',
|
||||
positiveText: '嫌い',
|
||||
negativeText: 'キャンセル'
|
||||
}
|
||||
}
|
||||
};
|
||||
48
src/i18n/lang/ja-JP/user.ts
Normal file
48
src/i18n/lang/ja-JP/user.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
export default {
|
||||
profile: {
|
||||
followers: 'フォロワー',
|
||||
following: 'フォロー中',
|
||||
level: 'レベル'
|
||||
},
|
||||
playlist: {
|
||||
created: '作成したプレイリスト',
|
||||
mine: '私が作成した',
|
||||
trackCount: '{count}曲',
|
||||
playCount: '{count}回再生'
|
||||
},
|
||||
ranking: {
|
||||
title: '聴取ランキング',
|
||||
playCount: '{count}回'
|
||||
},
|
||||
follow: {
|
||||
title: 'フォローリスト',
|
||||
viewPlaylist: 'プレイリストを見る',
|
||||
noFollowings: 'フォローがありません',
|
||||
loadMore: 'さらに読み込み',
|
||||
noSignature: 'この人は怠け者で、何も残していません',
|
||||
userFollowsTitle: 'のフォロー',
|
||||
myFollowsTitle: '私のフォロー'
|
||||
},
|
||||
follower: {
|
||||
title: 'フォロワーリスト',
|
||||
noFollowers: 'フォロワーがいません',
|
||||
loadMore: 'さらに読み込み',
|
||||
userFollowersTitle: 'のフォロワー',
|
||||
myFollowersTitle: '私のフォロワー'
|
||||
},
|
||||
detail: {
|
||||
playlists: 'プレイリスト',
|
||||
records: '聴取ランキング',
|
||||
noPlaylists: 'プレイリストがありません',
|
||||
noRecords: '聴取記録がありません',
|
||||
artist: 'アーティスト',
|
||||
noSignature: 'この人は怠け者で、何も残していません',
|
||||
invalidUserId: '無効なユーザーID',
|
||||
noRecordPermission: '{name}は聴取ランキングを見せてくれません'
|
||||
},
|
||||
message: {
|
||||
loadFailed: 'ユーザーページの読み込みに失敗しました',
|
||||
deleteSuccess: '削除成功',
|
||||
deleteFailed: '削除失敗'
|
||||
}
|
||||
};
|
||||
5
src/i18n/lang/ko-KR/artist.ts
Normal file
5
src/i18n/lang/ko-KR/artist.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export default {
|
||||
hotSongs: '인기 곡',
|
||||
albums: '앨범',
|
||||
description: '아티스트 소개'
|
||||
};
|
||||
56
src/i18n/lang/ko-KR/common.ts
Normal file
56
src/i18n/lang/ko-KR/common.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
export default {
|
||||
play: '재생',
|
||||
next: '다음 곡',
|
||||
previous: '이전 곡',
|
||||
volume: '볼륨',
|
||||
settings: '설정',
|
||||
search: '검색',
|
||||
loading: '로딩 중...',
|
||||
loadingMore: '더 불러오기...',
|
||||
alipay: '알리페이',
|
||||
wechat: '위챗 페이',
|
||||
on: '켜기',
|
||||
off: '끄기',
|
||||
show: '표시',
|
||||
hide: '숨기기',
|
||||
confirm: '확인',
|
||||
cancel: '취소',
|
||||
configure: '구성',
|
||||
open: '열기',
|
||||
modify: '수정',
|
||||
success: '작업 성공',
|
||||
error: '작업 실패',
|
||||
warning: '경고',
|
||||
info: '알림',
|
||||
save: '저장',
|
||||
delete: '삭제',
|
||||
refresh: '새로고침',
|
||||
retry: '다시 시도',
|
||||
reset: '재설정',
|
||||
back: '뒤로',
|
||||
copySuccess: '클립보드에 복사됨',
|
||||
copyFailed: '복사 실패',
|
||||
validation: {
|
||||
required: '이 항목은 필수입니다',
|
||||
invalidInput: '잘못된 입력',
|
||||
selectRequired: '옵션을 선택해주세요',
|
||||
numberRange: '{min}에서 {max} 사이의 숫자를 입력해주세요'
|
||||
},
|
||||
viewMore: '더 보기',
|
||||
noMore: '더 이상 없음',
|
||||
selectAll: '전체 선택',
|
||||
expand: '펼치기',
|
||||
collapse: '접기',
|
||||
songCount: '{count}곡',
|
||||
language: '언어',
|
||||
tray: {
|
||||
show: '표시',
|
||||
quit: '종료',
|
||||
playPause: '재생/일시정지',
|
||||
prev: '이전 곡',
|
||||
next: '다음 곡',
|
||||
pause: '일시정지',
|
||||
play: '재생',
|
||||
favorite: '즐겨찾기'
|
||||
}
|
||||
};
|
||||
190
src/i18n/lang/ko-KR/comp.ts
Normal file
190
src/i18n/lang/ko-KR/comp.ts
Normal file
@@ -0,0 +1,190 @@
|
||||
export default {
|
||||
installApp: {
|
||||
description: '앱을 설치하여 더 나은 경험을 얻으세요',
|
||||
noPrompt: '다시 묻지 않기',
|
||||
install: '지금 설치',
|
||||
cancel: '나중에 설치',
|
||||
download: '다운로드',
|
||||
downloadFailed: '다운로드 실패',
|
||||
downloadComplete: '다운로드 완료',
|
||||
downloadProblem: '다운로드에 문제가 있나요?',
|
||||
downloadProblemLinkText: '최신 버전 다운로드'
|
||||
},
|
||||
playlistDrawer: {
|
||||
title: '플레이리스트에 추가',
|
||||
createPlaylist: '새 플레이리스트 만들기',
|
||||
cancelCreate: '만들기 취소',
|
||||
create: '만들기',
|
||||
playlistName: '플레이리스트 이름',
|
||||
privatePlaylist: '비공개 플레이리스트',
|
||||
publicPlaylist: '공개 플레이리스트',
|
||||
createSuccess: '플레이리스트 생성 성공',
|
||||
createFailed: '플레이리스트 생성 실패',
|
||||
addSuccess: '곡 추가 성공',
|
||||
addFailed: '곡 추가 실패',
|
||||
private: '비공개',
|
||||
public: '공개',
|
||||
count: '곡',
|
||||
loginFirst: '먼저 로그인해주세요',
|
||||
getPlaylistFailed: '플레이리스트 가져오기 실패',
|
||||
inputPlaylistName: '플레이리스트 이름을 입력해주세요'
|
||||
},
|
||||
update: {
|
||||
title: '새 버전 발견',
|
||||
currentVersion: '현재 버전',
|
||||
cancel: '나중에 업데이트',
|
||||
prepareDownload: '다운로드 준비 중...',
|
||||
downloading: '다운로드 중...',
|
||||
nowUpdate: '지금 업데이트',
|
||||
downloadFailed: '다운로드 실패, 다시 시도하거나 수동으로 다운로드해주세요',
|
||||
startFailed: '다운로드 시작 실패, 다시 시도하거나 수동으로 다운로드해주세요',
|
||||
noDownloadUrl: '현재 시스템에 적합한 설치 패키지를 찾을 수 없습니다. 수동으로 다운로드해주세요',
|
||||
installConfirmTitle: '업데이트 설치',
|
||||
installConfirmContent: '앱을 닫고 업데이트를 설치하시겠습니까?',
|
||||
manualInstallTip: '앱을 닫은 후 설치 프로그램이 정상적으로 나타나지 않으면 다운로드 폴더에서 파일을 찾아 수동으로 열어주세요.',
|
||||
yesInstall: '지금 설치',
|
||||
noThanks: '나중에 설치',
|
||||
fileLocation: '파일 위치',
|
||||
copy: '경로 복사',
|
||||
copySuccess: '경로가 클립보드에 복사됨',
|
||||
copyFailed: '복사 실패',
|
||||
backgroundDownload: '백그라운드 다운로드'
|
||||
},
|
||||
coffee: {
|
||||
title: '커피 한 잔 사주세요',
|
||||
alipay: '알리페이',
|
||||
wechat: '위챗 페이',
|
||||
alipayQR: '알리페이 결제 QR코드',
|
||||
wechatQR: '위챗 결제 QR코드',
|
||||
coffeeDesc: '커피 한 잔, 하나의 지원',
|
||||
coffeeDescLinkText: '더 보기',
|
||||
qqGroup: 'QQ 채널: algermusic',
|
||||
messages: {
|
||||
copySuccess: '클립보드에 복사됨'
|
||||
},
|
||||
donateList: '커피 한 잔 사주세요'
|
||||
},
|
||||
playlistType: {
|
||||
title: '플레이리스트 분류',
|
||||
showAll: '모두 표시',
|
||||
hide: '일부 숨기기'
|
||||
},
|
||||
recommendAlbum: {
|
||||
title: '최신 앨범'
|
||||
},
|
||||
recommendSinger: {
|
||||
title: '일일 추천',
|
||||
songlist: '일일 추천 목록'
|
||||
},
|
||||
recommendSonglist: {
|
||||
title: '이번 주 인기 음악'
|
||||
},
|
||||
searchBar: {
|
||||
login: '로그인',
|
||||
toLogin: '로그인하기',
|
||||
logout: '로그아웃',
|
||||
set: '설정',
|
||||
theme: '테마',
|
||||
restart: '재시작',
|
||||
refresh: '새로고침',
|
||||
currentVersion: '현재 버전',
|
||||
searchPlaceholder: '검색해보세요...',
|
||||
zoom: '페이지 확대/축소',
|
||||
zoom100: '표준 확대/축소 100%',
|
||||
resetZoom: '클릭하여 확대/축소 재설정',
|
||||
zoomDefault: '표준 확대/축소'
|
||||
},
|
||||
titleBar: {
|
||||
closeTitle: '닫기 방법을 선택해주세요',
|
||||
minimizeToTray: '트레이로 최소화',
|
||||
exitApp: '앱 종료',
|
||||
rememberChoice: '선택 기억하기',
|
||||
closeApp: '앱 닫기'
|
||||
},
|
||||
userPlayList: {
|
||||
title: '{name}의 자주 듣는 음악'
|
||||
},
|
||||
musicList: {
|
||||
searchSongs: '곡 검색',
|
||||
noSearchResults: '관련 곡을 찾을 수 없습니다',
|
||||
switchToNormal: '기본 레이아웃으로 전환',
|
||||
switchToCompact: '컴팩트 레이아웃으로 전환',
|
||||
playAll: '모두 재생',
|
||||
collect: '수집',
|
||||
collectSuccess: '수집 성공',
|
||||
cancelCollectSuccess: '수집 취소 성공',
|
||||
operationFailed: '작업 실패',
|
||||
cancelCollect: '수집 취소',
|
||||
addToPlaylist: '재생 목록에 추가',
|
||||
addToPlaylistSuccess: '재생 목록에 추가 성공',
|
||||
songsAlreadyInPlaylist: '곡이 이미 재생 목록에 있습니다'
|
||||
},
|
||||
playlist: {
|
||||
import: {
|
||||
button: '플레이리스트 가져오기',
|
||||
title: '플레이리스트 가져오기',
|
||||
description: '메타데이터/텍스트/링크 세 가지 방법으로 플레이리스트 가져오기 지원',
|
||||
linkTab: '링크 가져오기',
|
||||
textTab: '텍스트 가져오기',
|
||||
localTab: '메타데이터 가져오기',
|
||||
linkPlaceholder: '플레이리스트 링크를 입력하세요. 한 줄에 하나씩',
|
||||
textPlaceholder: '곡 정보를 입력하세요. 형식: 곡명 가수명',
|
||||
localPlaceholder: 'JSON 형식의 곡 메타데이터를 입력하세요',
|
||||
linkTips: '지원되는 링크 소스:',
|
||||
linkTip1: '플레이리스트를 위챗/웨이보/QQ로 공유한 후 링크 복사',
|
||||
linkTip2: '플레이리스트/개인 홈페이지 링크 직접 복사',
|
||||
linkTip3: '기사 링크 직접 복사',
|
||||
textTips: '곡 정보를 입력하세요. 한 줄에 한 곡씩',
|
||||
textFormat: '형식: 곡명 가수명',
|
||||
localTips: '곡 메타데이터를 추가해주세요',
|
||||
localFormat: '형식 예시:',
|
||||
songNamePlaceholder: '곡명',
|
||||
artistNamePlaceholder: '아티스트명',
|
||||
albumNamePlaceholder: '앨범명',
|
||||
addSongButton: '곡 추가',
|
||||
addLinkButton: '링크 추가',
|
||||
importToStarPlaylist: '내가 좋아하는 음악으로 가져오기',
|
||||
playlistNamePlaceholder: '플레이리스트 이름을 입력하세요',
|
||||
importButton: '가져오기 시작',
|
||||
emptyLinkWarning: '플레이리스트 링크를 입력해주세요',
|
||||
emptyTextWarning: '곡 정보를 입력해주세요',
|
||||
emptyLocalWarning: '곡 메타데이터를 입력해주세요',
|
||||
invalidJsonFormat: 'JSON 형식이 올바르지 않습니다',
|
||||
importSuccess: '가져오기 작업 생성 성공',
|
||||
importFailed: '가져오기 실패',
|
||||
importStatus: '가져오기 상태',
|
||||
refresh: '새로고침',
|
||||
taskId: '작업 ID',
|
||||
status: '상태',
|
||||
successCount: '성공 수',
|
||||
failReason: '실패 이유',
|
||||
unknownError: '알 수 없는 오류',
|
||||
statusPending: '처리 대기 중',
|
||||
statusProcessing: '처리 중',
|
||||
statusSuccess: '가져오기 성공',
|
||||
statusFailed: '가져오기 실패',
|
||||
statusUnknown: '알 수 없는 상태',
|
||||
taskList: '작업 목록',
|
||||
taskListTitle: '가져오기 작업 목록',
|
||||
action: '작업',
|
||||
select: '선택',
|
||||
fetchTaskListFailed: '작업 목록 가져오기 실패',
|
||||
noTasks: '가져오기 작업이 없습니다',
|
||||
clearTasks: '작업 지우기',
|
||||
clearTasksConfirmTitle: '지우기 확인',
|
||||
clearTasksConfirmContent: '모든 가져오기 작업 기록을 지우시겠습니까? 이 작업은 되돌릴 수 없습니다.',
|
||||
confirm: '확인',
|
||||
cancel: '취소',
|
||||
clearTasksSuccess: '작업 목록이 지워졌습니다',
|
||||
clearTasksFailed: '작업 목록 지우기 실패'
|
||||
}
|
||||
},
|
||||
settings: '설정',
|
||||
user: '사용자',
|
||||
toplist: '순위',
|
||||
history: '수집 기록',
|
||||
list: '플레이리스트',
|
||||
mv: 'MV',
|
||||
home: '홈',
|
||||
search: '검색'
|
||||
};
|
||||
8
src/i18n/lang/ko-KR/donation.ts
Normal file
8
src/i18n/lang/ko-KR/donation.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
export default {
|
||||
description: '귀하의 기부는 서버 유지보수, 도메인 갱신 등을 포함한 개발 및 유지보수 작업을 지원하는 데 사용됩니다.',
|
||||
message: '메시지를 남길 때 이메일이나 GitHub 이름을 남겨주세요.',
|
||||
refresh: '목록 새로고침',
|
||||
toDonateList: '커피 한 잔 사주세요',
|
||||
noMessage: '메시지가 없습니다',
|
||||
title: '기부 목록'
|
||||
};
|
||||
87
src/i18n/lang/ko-KR/download.ts
Normal file
87
src/i18n/lang/ko-KR/download.ts
Normal file
@@ -0,0 +1,87 @@
|
||||
export default {
|
||||
title: '다운로드 관리',
|
||||
localMusic: '로컬 음악',
|
||||
count: '총 {count}곡',
|
||||
clearAll: '기록 지우기',
|
||||
settings: '설정',
|
||||
tabs: {
|
||||
downloading: '다운로드 중',
|
||||
downloaded: '다운로드 완료'
|
||||
},
|
||||
empty: {
|
||||
noTasks: '다운로드 작업이 없습니다',
|
||||
noDownloaded: '다운로드된 곡이 없습니다'
|
||||
},
|
||||
progress: {
|
||||
total: '전체 진행률: {progress}%'
|
||||
},
|
||||
status: {
|
||||
downloading: '다운로드 중',
|
||||
completed: '완료',
|
||||
failed: '실패',
|
||||
unknown: '알 수 없음'
|
||||
},
|
||||
artist: {
|
||||
unknown: '알 수 없는 가수'
|
||||
},
|
||||
delete: {
|
||||
title: '삭제 확인',
|
||||
message: '곡 "{filename}"을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
|
||||
confirm: '삭제 확인',
|
||||
cancel: '취소',
|
||||
success: '삭제 성공',
|
||||
failed: '삭제 실패',
|
||||
fileNotFound: '파일이 존재하지 않거나 이동되었습니다. 기록에서 제거되었습니다',
|
||||
recordRemoved: '파일 삭제 실패, 하지만 기록에서 제거되었습니다'
|
||||
},
|
||||
clear: {
|
||||
title: '다운로드 기록 지우기',
|
||||
message: '모든 다운로드 기록을 지우시겠습니까? 이 작업은 다운로드된 음악 파일을 삭제하지 않지만 모든 기록을 지웁니다.',
|
||||
confirm: '지우기 확인',
|
||||
cancel: '취소',
|
||||
success: '다운로드 기록이 지워졌습니다'
|
||||
},
|
||||
message: {
|
||||
downloadComplete: '{filename} 다운로드 완료',
|
||||
downloadFailed: '{filename} 다운로드 실패: {error}'
|
||||
},
|
||||
loading: '로딩 중...',
|
||||
playStarted: '재생 시작: {name}',
|
||||
playFailed: '재생 실패: {name}',
|
||||
path: {
|
||||
copied: '경로가 클립보드에 복사됨',
|
||||
copyFailed: '경로 복사 실패'
|
||||
},
|
||||
settingsPanel: {
|
||||
title: '다운로드 설정',
|
||||
path: '다운로드 위치',
|
||||
pathDesc: '음악 파일 다운로드 저장 위치 설정',
|
||||
pathPlaceholder: '다운로드 경로를 선택해주세요',
|
||||
noPathSelected: '먼저 다운로드 경로를 선택해주세요',
|
||||
select: '폴더 선택',
|
||||
open: '폴더 열기',
|
||||
fileFormat: '파일명 형식',
|
||||
fileFormatDesc: '음악 다운로드 시 파일 이름 형식 설정',
|
||||
customFormat: '사용자 정의 형식',
|
||||
separator: '구분자',
|
||||
separators: {
|
||||
dash: '공백-공백',
|
||||
underscore: '밑줄',
|
||||
space: '공백'
|
||||
},
|
||||
dragToArrange: '드래그하여 정렬하거나 화살표 버튼을 사용하여 순서 조정:',
|
||||
formatVariables: '사용 가능한 변수',
|
||||
preview: '미리보기 효과:',
|
||||
saveSuccess: '다운로드 설정이 저장됨',
|
||||
presets: {
|
||||
songArtist: '곡명 - 가수명',
|
||||
artistSong: '가수명 - 곡명',
|
||||
songOnly: '곡명만'
|
||||
},
|
||||
components: {
|
||||
songName: '곡명',
|
||||
artistName: '가수명',
|
||||
albumName: '앨범명'
|
||||
}
|
||||
}
|
||||
};
|
||||
13
src/i18n/lang/ko-KR/favorite.ts
Normal file
13
src/i18n/lang/ko-KR/favorite.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
export default {
|
||||
title: '내 수집',
|
||||
count: '총 {count}곡',
|
||||
batchDownload: '일괄 다운로드',
|
||||
download: '다운로드 ({count})',
|
||||
emptyTip: '아직 수집한 곡이 없습니다',
|
||||
downloadSuccess: '다운로드 완료',
|
||||
downloadFailed: '다운로드 실패',
|
||||
downloading: '다운로드 중입니다. 잠시만 기다려주세요...',
|
||||
selectSongsFirst: '먼저 다운로드할 곡을 선택해주세요',
|
||||
descending: '내림차순',
|
||||
ascending: '오름차순'
|
||||
};
|
||||
5
src/i18n/lang/ko-KR/history.ts
Normal file
5
src/i18n/lang/ko-KR/history.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export default {
|
||||
title: '재생 기록',
|
||||
playCount: '{count}',
|
||||
getHistoryFailed: '기록 가져오기 실패'
|
||||
};
|
||||
22
src/i18n/lang/ko-KR/login.ts
Normal file
22
src/i18n/lang/ko-KR/login.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
export default {
|
||||
title: {
|
||||
qr: 'QR코드 로그인',
|
||||
phone: '휴대폰 번호 로그인'
|
||||
},
|
||||
qrTip: '넷이즈 클라우드 뮤직 앱으로 QR코드를 스캔하여 로그인',
|
||||
phoneTip: '넷이즈 클라우드 계정으로 로그인',
|
||||
placeholder: {
|
||||
phone: '휴대폰 번호',
|
||||
password: '비밀번호'
|
||||
},
|
||||
button: {
|
||||
login: '로그인',
|
||||
switchToQr: 'QR코드 로그인',
|
||||
switchToPhone: '휴대폰 번호 로그인'
|
||||
},
|
||||
message: {
|
||||
loginSuccess: '로그인 성공',
|
||||
loadError: '로그인 정보 로드 중 오류 발생',
|
||||
qrCheckError: 'QR코드 상태 확인 중 오류 발생'
|
||||
}
|
||||
};
|
||||
122
src/i18n/lang/ko-KR/player.ts
Normal file
122
src/i18n/lang/ko-KR/player.ts
Normal file
@@ -0,0 +1,122 @@
|
||||
export default {
|
||||
nowPlaying: '현재 재생 중',
|
||||
playlist: '재생 목록',
|
||||
lyrics: '가사',
|
||||
previous: '이전',
|
||||
play: '재생',
|
||||
pause: '일시정지',
|
||||
next: '다음',
|
||||
volumeUp: '볼륨 증가',
|
||||
volumeDown: '볼륨 감소',
|
||||
mute: '음소거',
|
||||
unmute: '음소거 해제',
|
||||
songNum: '총 곡 수: {num}',
|
||||
addCorrection: '{num}초 앞당기기',
|
||||
subtractCorrection: '{num}초 지연',
|
||||
playFailed: '현재 곡 재생 실패, 다음 곡 재생',
|
||||
playMode: {
|
||||
sequence: '순차 재생',
|
||||
loop: '한 곡 반복',
|
||||
random: '랜덤 재생'
|
||||
},
|
||||
fullscreen: {
|
||||
enter: '전체화면',
|
||||
exit: '전체화면 종료'
|
||||
},
|
||||
close: '닫기',
|
||||
modeHint: {
|
||||
single: '한 곡 반복',
|
||||
list: '자동으로 다음 곡 재생'
|
||||
},
|
||||
lrc: {
|
||||
noLrc: '가사가 없습니다. 음악을 감상해주세요'
|
||||
},
|
||||
reparse: {
|
||||
title: '음원 선택',
|
||||
desc: '음원을 클릭하여 직접 분석하세요. 다음에 이 곡을 재생할 때 선택한 음원을 사용합니다',
|
||||
success: '재분석 성공',
|
||||
failed: '재분석 실패',
|
||||
warning: '음원을 선택해주세요',
|
||||
bilibiliNotSupported: 'B站 비디오는 재분석을 지원하지 않습니다',
|
||||
processing: '분석 중...',
|
||||
clear: '사용자 정의 음원 지우기'
|
||||
},
|
||||
playBar: {
|
||||
expand: '가사 펼치기',
|
||||
collapse: '가사 접기',
|
||||
like: '좋아요',
|
||||
lyric: '가사',
|
||||
noSongPlaying: '재생 중인 곡이 없습니다',
|
||||
eq: '이퀄라이저',
|
||||
playList: '재생 목록',
|
||||
reparse: '재분석',
|
||||
playMode: {
|
||||
sequence: '순차 재생',
|
||||
loop: '반복 재생',
|
||||
random: '랜덤 재생'
|
||||
},
|
||||
play: '재생 시작',
|
||||
pause: '재생 일시정지',
|
||||
prev: '이전 곡',
|
||||
next: '다음 곡',
|
||||
volume: '볼륨',
|
||||
favorite: '{name} 즐겨찾기 추가됨',
|
||||
unFavorite: '{name} 즐겨찾기 해제됨',
|
||||
miniPlayBar: '미니 재생바',
|
||||
playbackSpeed: '재생 속도',
|
||||
advancedControls: '고급 설정'
|
||||
},
|
||||
eq: {
|
||||
title: '이퀄라이저',
|
||||
reset: '재설정',
|
||||
on: '켜기',
|
||||
off: '끄기',
|
||||
bass: '저음',
|
||||
midrange: '중음',
|
||||
treble: '고음',
|
||||
presets: {
|
||||
flat: '플랫',
|
||||
pop: '팝',
|
||||
rock: '록',
|
||||
classical: '클래식',
|
||||
jazz: '재즈',
|
||||
electronic: '일렉트로닉',
|
||||
hiphop: '힙합',
|
||||
rb: 'R&B',
|
||||
metal: '메탈',
|
||||
vocal: '보컬',
|
||||
dance: '댄스',
|
||||
acoustic: '어쿠스틱',
|
||||
custom: '사용자 정의'
|
||||
}
|
||||
},
|
||||
sleepTimer: {
|
||||
title: '타이머 종료',
|
||||
cancel: '타이머 취소',
|
||||
timeMode: '시간으로 종료',
|
||||
songsMode: '곡 수로 종료',
|
||||
playlistEnd: '재생 목록 완료 후 종료',
|
||||
afterPlaylist: '재생 목록 완료 후 종료',
|
||||
activeUntilEnd: '목록 끝까지 재생',
|
||||
minutes: '분',
|
||||
hours: '시간',
|
||||
songs: '곡',
|
||||
set: '설정',
|
||||
timerSetSuccess: '{minutes}분 후 종료로 설정됨',
|
||||
songsSetSuccess: '{songs}곡 재생 후 종료로 설정됨',
|
||||
playlistEndSetSuccess: '재생 목록 완료 후 종료로 설정됨',
|
||||
timerCancelled: '타이머 종료 취소됨',
|
||||
timerEnded: '타이머 종료 실행됨',
|
||||
playbackStopped: '음악 재생이 중지됨',
|
||||
minutesRemaining: '남은 시간 {minutes}분',
|
||||
songsRemaining: '남은 곡 수 {count}곡'
|
||||
},
|
||||
playList: {
|
||||
clearAll: '재생 목록 비우기',
|
||||
alreadyEmpty: '재생 목록이 이미 비어있습니다',
|
||||
cleared: '재생 목록이 비워졌습니다',
|
||||
empty: '재생 목록이 비어있습니다',
|
||||
clearConfirmTitle: '재생 목록 비우기',
|
||||
clearConfirmContent: '재생 목록의 모든 곡을 삭제하고 현재 재생을 중지합니다. 계속하시겠습니까?'
|
||||
}
|
||||
};
|
||||
27
src/i18n/lang/ko-KR/search.ts
Normal file
27
src/i18n/lang/ko-KR/search.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
export default {
|
||||
title: {
|
||||
hotSearch: '인기 검색',
|
||||
searchList: '검색 목록',
|
||||
searchHistory: '검색 기록'
|
||||
},
|
||||
button: {
|
||||
clear: '지우기',
|
||||
back: '뒤로',
|
||||
playAll: '재생 목록'
|
||||
},
|
||||
loading: {
|
||||
more: '로딩 중...',
|
||||
failed: '검색 실패'
|
||||
},
|
||||
noMore: '더 이상 없음',
|
||||
error: {
|
||||
searchFailed: '검색 실패'
|
||||
},
|
||||
search: {
|
||||
single: '단일곡',
|
||||
album: '앨범',
|
||||
playlist: '플레이리스트',
|
||||
mv: 'MV',
|
||||
bilibili: 'B站'
|
||||
}
|
||||
};
|
||||
285
src/i18n/lang/ko-KR/settings.ts
Normal file
285
src/i18n/lang/ko-KR/settings.ts
Normal file
@@ -0,0 +1,285 @@
|
||||
export default {
|
||||
theme: '테마',
|
||||
language: '언어',
|
||||
regard: '정보',
|
||||
logout: '로그아웃',
|
||||
sections: {
|
||||
basic: '기본 설정',
|
||||
playback: '재생 설정',
|
||||
application: '애플리케이션 설정',
|
||||
network: '네트워크 설정',
|
||||
system: '시스템 관리',
|
||||
donation: '후원 지원',
|
||||
regard: '정보'
|
||||
},
|
||||
basic: {
|
||||
themeMode: '테마 모드',
|
||||
themeModeDesc: '낮/밤 테마 전환',
|
||||
autoTheme: '시스템 따라가기',
|
||||
manualTheme: '수동 전환',
|
||||
language: '언어 설정',
|
||||
languageDesc: '표시 언어 전환',
|
||||
font: '폰트 설정',
|
||||
fontDesc: '폰트 선택, 앞에 있는 폰트를 우선 사용',
|
||||
fontScope: {
|
||||
global: '전역',
|
||||
lyric: '가사만'
|
||||
},
|
||||
animation: '애니메이션 속도',
|
||||
animationDesc: '애니메이션 활성화 여부',
|
||||
animationSpeed: {
|
||||
slow: '매우 느림',
|
||||
normal: '보통',
|
||||
fast: '매우 빠름'
|
||||
},
|
||||
fontPreview: {
|
||||
title: '폰트 미리보기',
|
||||
chinese: '中文',
|
||||
english: 'English',
|
||||
japanese: '日本語',
|
||||
korean: '한국어',
|
||||
chineseText: '静夜思 床前明月光 疑是地上霜',
|
||||
englishText: 'The quick brown fox jumps over the lazy dog',
|
||||
japaneseText: 'あいうえお かきくけこ さしすせそ',
|
||||
koreanText: '가나다라마 바사아자차 카타파하'
|
||||
}
|
||||
},
|
||||
playback: {
|
||||
quality: '음질 설정',
|
||||
qualityDesc: '음악 재생 음질 선택 (넷이즈 클라우드 VIP)',
|
||||
qualityOptions: {
|
||||
standard: '표준',
|
||||
higher: '높음',
|
||||
exhigh: '매우 높음',
|
||||
lossless: '무손실',
|
||||
hires: 'Hi-Res',
|
||||
jyeffect: 'HD 서라운드',
|
||||
sky: '몰입형 서라운드',
|
||||
dolby: '돌비 애트모스',
|
||||
jymaster: '초고화질 마스터'
|
||||
},
|
||||
musicSources: '음원 설정',
|
||||
musicSourcesDesc: '음악 해석에 사용할 음원 플랫폼 선택',
|
||||
musicSourcesWarning: '최소 하나의 음원 플랫폼을 선택해야 합니다',
|
||||
musicUnblockEnable: '음악 해석 활성화',
|
||||
musicUnblockEnableDesc: '활성화하면 재생할 수 없는 음악을 해석하려고 시도합니다',
|
||||
configureMusicSources: '음원 구성',
|
||||
selectedMusicSources: '선택된 음원:',
|
||||
noMusicSources: '음원이 선택되지 않음',
|
||||
gdmusicInfo: 'GD 뮤직은 여러 플랫폼 음원을 자동으로 해석하고 최적의 결과를 자동 선택합니다',
|
||||
autoPlay: '자동 재생',
|
||||
autoPlayDesc: '앱을 다시 열 때 자동으로 재생을 계속할지 여부',
|
||||
showStatusBar: '상태바 제어 기능 표시 여부',
|
||||
showStatusBarContent: 'Mac 상태바에 음악 제어 기능을 표시할 수 있습니다 (재시작 후 적용)'
|
||||
},
|
||||
application: {
|
||||
closeAction: '닫기 동작',
|
||||
closeActionDesc: '창을 닫을 때의 동작 선택',
|
||||
closeOptions: {
|
||||
ask: '매번 묻기',
|
||||
minimize: '트레이로 최소화',
|
||||
close: '직접 종료'
|
||||
},
|
||||
shortcut: '단축키 설정',
|
||||
shortcutDesc: '전역 단축키 사용자 정의',
|
||||
download: '다운로드 관리',
|
||||
downloadDesc: '다운로드 목록 버튼을 항상 표시할지 여부',
|
||||
unlimitedDownload: '무제한 다운로드',
|
||||
unlimitedDownloadDesc: '활성화하면 음악을 무제한으로 다운로드합니다 (다운로드 실패가 발생할 수 있음), 기본 제한 300곡',
|
||||
downloadPath: '다운로드 디렉토리',
|
||||
downloadPathDesc: '음악 파일의 다운로드 위치 선택',
|
||||
remoteControl: '원격 제어',
|
||||
remoteControlDesc: '원격 제어 기능 설정'
|
||||
},
|
||||
network: {
|
||||
apiPort: '음악 API 포트',
|
||||
apiPortDesc: '수정 후 앱을 재시작해야 합니다',
|
||||
proxy: '프록시 설정',
|
||||
proxyDesc: '음악에 액세스할 수 없을 때 프록시를 활성화할 수 있습니다',
|
||||
proxyHost: '프록시 주소',
|
||||
proxyHostPlaceholder: '프록시 주소를 입력하세요',
|
||||
proxyPort: '프록시 포트',
|
||||
proxyPortPlaceholder: '프록시 포트를 입력하세요',
|
||||
realIP: 'realIP 설정',
|
||||
realIPDesc: '제한으로 인해 이 프로젝트는 해외에서 사용할 때 제한을 받을 수 있으며, realIP 매개변수를 사용하여 국내 IP를 전달하여 해결할 수 있습니다',
|
||||
messages: {
|
||||
proxySuccess: '프록시 설정이 저장되었습니다. 앱을 재시작한 후 적용됩니다',
|
||||
proxyError: '입력이 올바른지 확인하세요',
|
||||
realIPSuccess: '실제 IP 설정이 저장되었습니다',
|
||||
realIPError: '유효한 IP 주소를 입력하세요'
|
||||
}
|
||||
},
|
||||
system: {
|
||||
cache: '캐시 관리',
|
||||
cacheDesc: '캐시 지우기',
|
||||
cacheClearTitle: '지울 캐시 유형을 선택하세요:',
|
||||
cacheTypes: {
|
||||
history: {
|
||||
label: '재생 기록',
|
||||
description: '재생한 곡 기록 지우기'
|
||||
},
|
||||
favorite: {
|
||||
label: '즐겨찾기 기록',
|
||||
description: '로컬 즐겨찾기 곡 기록 지우기 (클라우드 즐겨찾기에는 영향 없음)'
|
||||
},
|
||||
user: {
|
||||
label: '사용자 데이터',
|
||||
description: '로그인 정보 및 사용자 관련 데이터 지우기'
|
||||
},
|
||||
settings: {
|
||||
label: '앱 설정',
|
||||
description: '앱의 모든 사용자 정의 설정 지우기'
|
||||
},
|
||||
downloads: {
|
||||
label: '다운로드 기록',
|
||||
description: '다운로드 기록 지우기 (다운로드된 파일은 삭제되지 않음)'
|
||||
},
|
||||
resources: {
|
||||
label: '음악 리소스',
|
||||
description: '로드된 음악 파일, 가사 등 리소스 캐시 지우기'
|
||||
},
|
||||
lyrics: {
|
||||
label: '가사 리소스',
|
||||
description: '로드된 가사 리소스 캐시 지우기'
|
||||
}
|
||||
},
|
||||
restart: '재시작',
|
||||
restartDesc: '앱 재시작',
|
||||
messages: {
|
||||
clearSuccess: '지우기 성공, 일부 설정은 재시작 후 적용됩니다'
|
||||
}
|
||||
},
|
||||
about: {
|
||||
version: '버전',
|
||||
checkUpdate: '업데이트 확인',
|
||||
checking: '확인 중...',
|
||||
latest: '현재 최신 버전입니다',
|
||||
hasUpdate: '새 버전 발견',
|
||||
gotoUpdate: '업데이트하러 가기',
|
||||
gotoGithub: 'Github로 이동',
|
||||
author: '작성자',
|
||||
authorDesc: 'algerkong 별점🌟 부탁드려요',
|
||||
messages: {
|
||||
checkError: '업데이트 확인 실패, 나중에 다시 시도하세요'
|
||||
}
|
||||
},
|
||||
validation: {
|
||||
selectProxyProtocol: '프록시 프로토콜을 선택하세요',
|
||||
proxyHost: '프록시 주소를 입력하세요',
|
||||
portNumber: '유효한 포트 번호를 입력하세요 (1-65535)'
|
||||
},
|
||||
lyricSettings: {
|
||||
title: '가사 설정',
|
||||
tabs: {
|
||||
display: '표시',
|
||||
interface: '인터페이스',
|
||||
typography: '텍스트',
|
||||
mobile: '모바일'
|
||||
},
|
||||
pureMode: '순수 모드',
|
||||
hideCover: '커버 숨기기',
|
||||
centerDisplay: '중앙 표시',
|
||||
showTranslation: '번역 표시',
|
||||
hideLyrics: '가사 숨기기',
|
||||
hidePlayBar: '재생바 숨기기',
|
||||
hideMiniPlayBar: '미니 재생바 숨기기',
|
||||
backgroundTheme: '배경 테마',
|
||||
themeOptions: {
|
||||
default: '기본',
|
||||
light: '밝음',
|
||||
dark: '어둠'
|
||||
},
|
||||
fontSize: '폰트 크기',
|
||||
fontSizeMarks: {
|
||||
small: '작음',
|
||||
medium: '중간',
|
||||
large: '큼'
|
||||
},
|
||||
letterSpacing: '글자 간격',
|
||||
letterSpacingMarks: {
|
||||
compact: '좁음',
|
||||
default: '기본',
|
||||
loose: '넓음'
|
||||
},
|
||||
lineHeight: '줄 높이',
|
||||
lineHeightMarks: {
|
||||
compact: '좁음',
|
||||
default: '기본',
|
||||
loose: '넓음'
|
||||
},
|
||||
mobileLayout: '모바일 레이아웃',
|
||||
layoutOptions: {
|
||||
default: '기본',
|
||||
ios: 'iOS 스타일',
|
||||
android: '안드로이드 스타일'
|
||||
},
|
||||
mobileCoverStyle: '커버 스타일',
|
||||
coverOptions: {
|
||||
record: '레코드',
|
||||
square: '정사각형',
|
||||
full: '전체화면'
|
||||
},
|
||||
lyricLines: '가사 줄 수',
|
||||
mobileUnavailable: '이 설정은 모바일에서만 사용 가능합니다'
|
||||
},
|
||||
themeColor: {
|
||||
title: '가사 테마 색상',
|
||||
presetColors: '미리 설정된 색상',
|
||||
customColor: '사용자 정의 색상',
|
||||
preview: '미리보기 효과',
|
||||
previewText: '가사 효과',
|
||||
colorNames: {
|
||||
'spotify-green': 'Spotify 그린',
|
||||
'apple-blue': '애플 블루',
|
||||
'youtube-red': 'YouTube 레드',
|
||||
orange: '활력 오렌지',
|
||||
purple: '신비 퍼플',
|
||||
pink: '벚꽃 핑크'
|
||||
},
|
||||
tooltips: {
|
||||
openColorPicker: '색상 선택기 열기',
|
||||
closeColorPicker: '색상 선택기 닫기'
|
||||
},
|
||||
placeholder: '#1db954'
|
||||
},
|
||||
shortcutSettings: {
|
||||
title: '단축키 설정',
|
||||
shortcut: '단축키',
|
||||
shortcutDesc: '단축키 사용자 정의',
|
||||
shortcutConflict: '단축키 충돌',
|
||||
inputPlaceholder: '클릭하여 단축키 입력',
|
||||
resetShortcuts: '기본값 복원',
|
||||
disableAll: '모두 비활성화',
|
||||
enableAll: '모두 활성화',
|
||||
togglePlay: '재생/일시정지',
|
||||
prevPlay: '이전 곡',
|
||||
nextPlay: '다음 곡',
|
||||
volumeUp: '볼륨 증가',
|
||||
volumeDown: '볼륨 감소',
|
||||
toggleFavorite: '즐겨찾기/즐겨찾기 취소',
|
||||
toggleWindow: '창 표시/숨기기',
|
||||
scopeGlobal: '전역',
|
||||
scopeApp: '앱 내',
|
||||
enabled: '활성화',
|
||||
disabled: '비활성화',
|
||||
messages: {
|
||||
resetSuccess: '기본 단축키로 복원되었습니다. 저장을 잊지 마세요',
|
||||
conflict: '충돌하는 단축키가 있습니다. 다시 설정하세요',
|
||||
saveSuccess: '단축키 설정이 저장되었습니다',
|
||||
saveError: '단축키 저장 실패, 다시 시도하세요',
|
||||
cancelEdit: '수정이 취소되었습니다',
|
||||
disableAll: '모든 단축키가 비활성화되었습니다. 저장을 잊지 마세요',
|
||||
enableAll: '모든 단축키가 활성화되었습니다. 저장을 잊지 마세요'
|
||||
}
|
||||
},
|
||||
remoteControl: {
|
||||
title: '원격 제어',
|
||||
enable: '원격 제어 활성화',
|
||||
port: '서비스 포트',
|
||||
allowedIps: '허용된 IP 주소',
|
||||
addIp: 'IP 추가',
|
||||
emptyListHint: '빈 목록은 모든 IP 액세스를 허용함을 의미합니다',
|
||||
saveSuccess: '원격 제어 설정이 저장되었습니다',
|
||||
accessInfo: '원격 제어 액세스 주소:'
|
||||
}
|
||||
};
|
||||
28
src/i18n/lang/ko-KR/songItem.ts
Normal file
28
src/i18n/lang/ko-KR/songItem.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
export default {
|
||||
menu: {
|
||||
play: '재생',
|
||||
playNext: '다음에 재생',
|
||||
download: '곡 다운로드',
|
||||
addToPlaylist: '플레이리스트에 추가',
|
||||
favorite: '좋아요',
|
||||
unfavorite: '좋아요 취소',
|
||||
removeFromPlaylist: '플레이리스트에서 삭제',
|
||||
dislike: '싫어요',
|
||||
undislike: '싫어요 취소'
|
||||
},
|
||||
message: {
|
||||
downloading: '다운로드 중입니다. 잠시 기다려주세요...',
|
||||
downloadFailed: '다운로드 실패',
|
||||
downloadQueued: '다운로드 대기열에 추가됨',
|
||||
addedToNextPlay: '다음 재생에 추가됨',
|
||||
getUrlFailed: '음악 다운로드 주소 가져오기 실패, 로그인 상태를 확인하세요'
|
||||
},
|
||||
dialog: {
|
||||
dislike: {
|
||||
title: '알림!',
|
||||
content: '이 곡을 싫어한다고 확인하시겠습니까? 다시 들어가면 일일 추천에서 제외됩니다.',
|
||||
positiveText: '싫어요',
|
||||
negativeText: '취소'
|
||||
}
|
||||
}
|
||||
};
|
||||
48
src/i18n/lang/ko-KR/user.ts
Normal file
48
src/i18n/lang/ko-KR/user.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
export default {
|
||||
profile: {
|
||||
followers: '팔로워',
|
||||
following: '팔로잉',
|
||||
level: '레벨'
|
||||
},
|
||||
playlist: {
|
||||
created: '생성한 플레이리스트',
|
||||
mine: '내가 만든',
|
||||
trackCount: '{count}곡',
|
||||
playCount: '{count}회 재생'
|
||||
},
|
||||
ranking: {
|
||||
title: '음악 청취 순위',
|
||||
playCount: '{count}회'
|
||||
},
|
||||
follow: {
|
||||
title: '팔로잉 목록',
|
||||
viewPlaylist: '플레이리스트 보기',
|
||||
noFollowings: '팔로잉이 없습니다',
|
||||
loadMore: '더 보기',
|
||||
noSignature: '이 사람은 게을러서 아무것도 남기지 않았습니다',
|
||||
userFollowsTitle: '의 팔로잉',
|
||||
myFollowsTitle: '내 팔로잉'
|
||||
},
|
||||
follower: {
|
||||
title: '팔로워 목록',
|
||||
noFollowers: '팔로워가 없습니다',
|
||||
loadMore: '더 보기',
|
||||
userFollowersTitle: '의 팔로워',
|
||||
myFollowersTitle: '내 팔로워'
|
||||
},
|
||||
detail: {
|
||||
playlists: '플레이리스트',
|
||||
records: '음악 청취 순위',
|
||||
noPlaylists: '플레이리스트가 없습니다',
|
||||
noRecords: '음악 청취 기록이 없습니다',
|
||||
artist: '아티스트',
|
||||
noSignature: '이 사람은 게을러서 아무것도 남기지 않았습니다',
|
||||
invalidUserId: '사용자 ID가 유효하지 않습니다',
|
||||
noRecordPermission: '{name}님이 음악 청취 순위를 보지 못하게 했습니다'
|
||||
},
|
||||
message: {
|
||||
loadFailed: '사용자 페이지 로드 실패',
|
||||
deleteSuccess: '삭제 성공',
|
||||
deleteFailed: '삭제 실패'
|
||||
}
|
||||
};
|
||||
@@ -1,29 +0,0 @@
|
||||
import artist from './artist';
|
||||
import common from './common';
|
||||
import comp from './comp';
|
||||
import donation from './donation';
|
||||
import download from './download';
|
||||
import favorite from './favorite';
|
||||
import history from './history';
|
||||
import login from './login';
|
||||
import player from './player';
|
||||
import search from './search';
|
||||
import settings from './settings';
|
||||
import songItem from './songItem';
|
||||
import user from './user';
|
||||
|
||||
export default {
|
||||
common,
|
||||
donation,
|
||||
favorite,
|
||||
history,
|
||||
login,
|
||||
player,
|
||||
search,
|
||||
settings,
|
||||
songItem,
|
||||
user,
|
||||
download,
|
||||
comp,
|
||||
artist
|
||||
};
|
||||
@@ -1,29 +0,0 @@
|
||||
import artist from './artist';
|
||||
import common from './common';
|
||||
import comp from './comp';
|
||||
import donation from './donation';
|
||||
import download from './download';
|
||||
import favorite from './favorite';
|
||||
import history from './history';
|
||||
import login from './login';
|
||||
import player from './player';
|
||||
import search from './search';
|
||||
import settings from './settings';
|
||||
import songItem from './songItem';
|
||||
import user from './user';
|
||||
|
||||
export default {
|
||||
common,
|
||||
donation,
|
||||
favorite,
|
||||
history,
|
||||
login,
|
||||
player,
|
||||
search,
|
||||
settings,
|
||||
songItem,
|
||||
user,
|
||||
download,
|
||||
comp,
|
||||
artist
|
||||
};
|
||||
25
src/i18n/languages.ts
Normal file
25
src/i18n/languages.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
// 语言配置文件 - 集中管理语言相关的配置
|
||||
|
||||
// 语言显示名称映射
|
||||
export const LANGUAGE_DISPLAY_NAMES: Record<string, string> = {
|
||||
'zh-CN': '简体中文',
|
||||
'zh-Hant': '繁體中文',
|
||||
'en-US': 'English',
|
||||
'ja-JP': '日本語',
|
||||
'ko-KR': '한국어'
|
||||
};
|
||||
|
||||
// 默认语言
|
||||
export const DEFAULT_LANGUAGE = 'zh-CN';
|
||||
|
||||
// 回退语言
|
||||
export const FALLBACK_LANGUAGE = 'en-US';
|
||||
|
||||
// 语言排序优先级(用于在UI中的显示顺序)
|
||||
export const LANGUAGE_PRIORITY: Record<string, number> = {
|
||||
'zh-CN': 1,
|
||||
'zh-Hant': 2,
|
||||
'en-US': 3,
|
||||
'ja-JP': 4,
|
||||
'ko-KR': 5
|
||||
};
|
||||
@@ -1,19 +1,15 @@
|
||||
import enUS from './lang/en-US';
|
||||
import zhCN from './lang/zh-CN';
|
||||
import zhHant from './lang/zh-Hant';
|
||||
import { DEFAULT_LANGUAGE } from './languages';
|
||||
import { buildLanguageMessages } from './utils';
|
||||
|
||||
const messages = {
|
||||
'zh-CN': zhCN,
|
||||
'en-US': enUS,
|
||||
'zh-Hant': zhHant
|
||||
} as const;
|
||||
// 使用工具函数构建语言消息对象
|
||||
const messages = buildLanguageMessages();
|
||||
|
||||
type Language = keyof typeof messages;
|
||||
|
||||
// 为主进程提供一个简单的 i18n 实现
|
||||
const mainI18n = {
|
||||
global: {
|
||||
currentLocale: 'zh-CN' as Language,
|
||||
currentLocale: DEFAULT_LANGUAGE as Language,
|
||||
get locale() {
|
||||
return this.currentLocale;
|
||||
},
|
||||
|
||||
@@ -1,19 +1,15 @@
|
||||
import { createI18n } from 'vue-i18n';
|
||||
|
||||
import enUS from './lang/en-US';
|
||||
import zhCN from './lang/zh-CN';
|
||||
import zhHant from './lang/zh-Hant';
|
||||
import { DEFAULT_LANGUAGE, FALLBACK_LANGUAGE } from './languages';
|
||||
import { buildLanguageMessages } from './utils';
|
||||
|
||||
const messages = {
|
||||
'zh-CN': zhCN,
|
||||
'en-US': enUS,
|
||||
'zh-Hant': zhHant
|
||||
};
|
||||
// 使用工具函数构建语言消息对象
|
||||
const messages = buildLanguageMessages();
|
||||
|
||||
const i18n = createI18n({
|
||||
legacy: false,
|
||||
locale: 'zh-CN',
|
||||
fallbackLocale: 'en-US',
|
||||
locale: DEFAULT_LANGUAGE,
|
||||
fallbackLocale: FALLBACK_LANGUAGE,
|
||||
messages,
|
||||
globalInjection: true,
|
||||
silentTranslationWarn: true,
|
||||
|
||||
60
src/i18n/utils.ts
Normal file
60
src/i18n/utils.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
// 自动导入所有语言的所有翻译文件
|
||||
const allLangModules = import.meta.glob('./lang/**/*.ts', { eager: true });
|
||||
|
||||
// 构建语言消息对象
|
||||
export const buildLanguageMessages = () => {
|
||||
const messages: Record<string, Record<string, any>> = {};
|
||||
|
||||
Object.entries(allLangModules).forEach(([path, module]) => {
|
||||
// 解析路径,例如 './lang/zh-CN/common.ts' -> { lang: 'zh-CN', module: 'common' }
|
||||
const match = path.match(/\.\/lang\/([^/]+)\/([^/]+)\.ts$/);
|
||||
if (match) {
|
||||
const [, langCode, moduleName] = match;
|
||||
|
||||
// 跳过 index 文件
|
||||
if (moduleName !== 'index') {
|
||||
if (!messages[langCode]) {
|
||||
messages[langCode] = {};
|
||||
}
|
||||
messages[langCode][moduleName] = (module as any).default;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return messages;
|
||||
};
|
||||
|
||||
// 获取所有支持的语言
|
||||
export const getSupportedLanguages = (): string[] => {
|
||||
const messages = buildLanguageMessages();
|
||||
return Object.keys(messages);
|
||||
};
|
||||
|
||||
export const isLanguageSupported = (lang: string): boolean => {
|
||||
return getSupportedLanguages().includes(lang);
|
||||
};
|
||||
|
||||
import { LANGUAGE_DISPLAY_NAMES, LANGUAGE_PRIORITY } from './languages';
|
||||
|
||||
// 获取语言显示名称的映射
|
||||
export const getLanguageDisplayNames = (): Record<string, string> => {
|
||||
return LANGUAGE_DISPLAY_NAMES;
|
||||
};
|
||||
|
||||
// 生成语言选项数组,用于下拉选择等组件
|
||||
export const getLanguageOptions = () => {
|
||||
const supportedLanguages = getSupportedLanguages();
|
||||
const displayNames = getLanguageDisplayNames();
|
||||
|
||||
// 按优先级排序
|
||||
const sortedLanguages = supportedLanguages.sort((a, b) => {
|
||||
const priorityA = LANGUAGE_PRIORITY[a] || 999;
|
||||
const priorityB = LANGUAGE_PRIORITY[b] || 999;
|
||||
return priorityA - priorityB;
|
||||
});
|
||||
|
||||
return sortedLanguages.map(lang => ({
|
||||
label: displayNames[lang] || lang,
|
||||
value: lang
|
||||
}));
|
||||
};
|
||||
@@ -1,58 +0,0 @@
|
||||
{
|
||||
"settings": {
|
||||
"lyricSettings": {
|
||||
"title": "歌词设置",
|
||||
"tabs": {
|
||||
"display": "显示",
|
||||
"interface": "界面",
|
||||
"typography": "文字",
|
||||
"mobile": "移动端"
|
||||
},
|
||||
"pureMode": "纯净模式",
|
||||
"hideCover": "隐藏封面",
|
||||
"centerDisplay": "居中显示",
|
||||
"showTranslation": "显示翻译",
|
||||
"hideLyrics": "隐藏歌词",
|
||||
"hidePlayBar": "隐藏播放栏",
|
||||
"hideMiniPlayBar": "隐藏迷你播放栏",
|
||||
"backgroundTheme": "背景主题",
|
||||
"themeOptions": {
|
||||
"default": "默认",
|
||||
"light": "亮色",
|
||||
"dark": "暗色"
|
||||
},
|
||||
"fontSize": "字体大小",
|
||||
"fontSizeMarks": {
|
||||
"small": "小",
|
||||
"medium": "中",
|
||||
"large": "大"
|
||||
},
|
||||
"letterSpacing": "字间距",
|
||||
"letterSpacingMarks": {
|
||||
"compact": "紧凑",
|
||||
"default": "默认",
|
||||
"loose": "宽松"
|
||||
},
|
||||
"lineHeight": "行高",
|
||||
"lineHeightMarks": {
|
||||
"compact": "紧凑",
|
||||
"default": "默认",
|
||||
"loose": "宽松"
|
||||
},
|
||||
"mobileLayout": "移动端布局",
|
||||
"layoutOptions": {
|
||||
"default": "默认",
|
||||
"ios": "iOS风格",
|
||||
"android": "安卓风格"
|
||||
},
|
||||
"mobileCoverStyle": "封面样式",
|
||||
"coverOptions": {
|
||||
"record": "唱片",
|
||||
"square": "方形",
|
||||
"full": "全屏"
|
||||
},
|
||||
"lyricLines": "歌词行数",
|
||||
"mobileUnavailable": "此设置仅在移动端可用"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,8 +9,8 @@ import {
|
||||
} from 'electron';
|
||||
import { join } from 'path';
|
||||
|
||||
import type { Language } from '../../i18n/main';
|
||||
import i18n from '../../i18n/main';
|
||||
import { getLanguageOptions } from '../../i18n/utils';
|
||||
import { getStore } from './config';
|
||||
|
||||
// 歌曲信息接口定义
|
||||
@@ -33,11 +33,8 @@ let songTitleTray: Tray | null = null;
|
||||
let isPlaying = false;
|
||||
let currentSong: SongInfo | null = null;
|
||||
|
||||
const LANGUAGES: { label: string; value: Language }[] = [
|
||||
{ label: '简体中文', value: 'zh-CN' },
|
||||
{ label: 'English', value: 'en-US' },
|
||||
{ label: '繁體中文', value: 'zh-Hant' }
|
||||
];
|
||||
// 使用自动导入的语言选项
|
||||
const LANGUAGES = getLanguageOptions();
|
||||
|
||||
// 更新播放状态
|
||||
export function updatePlayState(playing: boolean) {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
import { getLanguageOptions } from '@i18n/utils';
|
||||
import { computed } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
@@ -7,11 +8,8 @@ import { useSettingsStore } from '@/store/modules/settings';
|
||||
const settingsStore = useSettingsStore();
|
||||
const { locale } = useI18n();
|
||||
|
||||
const languages = [
|
||||
{ label: '简体中文', value: 'zh-CN' },
|
||||
{ label: '繁體中文', value: 'zh-Hant' },
|
||||
{ label: 'English', value: 'en-US' }
|
||||
];
|
||||
// 使用自动导入的语言选项
|
||||
const languages = getLanguageOptions();
|
||||
|
||||
console.log('locale', locale);
|
||||
// 使用计算属性来获取当前语言
|
||||
|
||||
@@ -12,5 +12,19 @@
|
||||
"electron-vite/node"
|
||||
],
|
||||
"moduleResolution": "bundler",
|
||||
},
|
||||
"paths": {
|
||||
"@/*": [
|
||||
"src/renderer/*"
|
||||
],
|
||||
"@renderer/*": [
|
||||
"src/renderer/*"
|
||||
],
|
||||
"@main/*": [
|
||||
"src/main/*"
|
||||
],
|
||||
"@i18n/*": [
|
||||
"src/i18n/*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -28,7 +28,8 @@
|
||||
"paths": {
|
||||
"@/*": ["src/renderer/*"],
|
||||
"@renderer/*": ["src/renderer/*"],
|
||||
"@main/*": ["src/main/*"]
|
||||
"@main/*": ["src/main/*"],
|
||||
"@i18n/*": ["src/i18n/*"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,8 @@ export default defineConfig({
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': resolve('src/renderer'),
|
||||
'@renderer': resolve('src/renderer')
|
||||
'@renderer': resolve('src/renderer'),
|
||||
'@i18n': resolve('src/i18n')
|
||||
}
|
||||
},
|
||||
plugins: [
|
||||
|
||||
Reference in New Issue
Block a user