use super::Strings;
use crate::providers::ProviderId;
pub const STRINGS: Strings = Strings {
search: "検索",
downloads: "ダウンロード",
settings: "設定",
library: "ライブラリ",
nothing_saved_yet: "まだ保存されていません",
new_playlist_name: "新しいプレイリスト名",
queue: "キュー",
recently_played: "最近再生した曲",
now_playing_from: "再生中(元:",
now_playing: "再生中",
up_next: "次に再生",
no_track_playing: "再生中の曲はありません",
no_more_tracks_in_queue: "キューにこれ以上曲はありません",
no_recently_played_tracks: "最近再生した曲はありません",
not_playing: "再生していません",
no_tracks_found: "曲が見つかりません",
searching: "検索中…",
loading: "読み込み中…",
load_more: "もっと読み込む",
no_results_found: "結果が見つかりません",
no_recent_searches: "最近の検索はありません",
generating_radio: "ラジオを生成中…",
not_an_artist_page: "アーティストページではありません",
provided_by: "提供元",
retry: "再試行",
nothing_here: "ここには何もありません",
most_popular_songs: "人気の曲",
albums: "アルバム",
playlists: "プレイリスト",
fans_also_like: "ファンも好む",
looking_up_lyrics: "歌詞を検索中…",
play_a_track_for_lyrics: "曲を再生すると歌詞が表示されます。",
lyrics_selectable: "選択可能",
lyrics_synced: "同期済み",
lyrics_plain: "プレーン",
lyrics_translations: "翻訳",
lyrics_original: "オリジナル",
add_custom: "歌詞を追加",
lyrics_name: "名前",
translate_with_ai: "AIで翻訳",
translate_title: "AIで歌詞を翻訳",
translate_language_lbl: "翻訳先の言語",
translate_prompt_lbl: "プロンプト",
translate_submit: "翻訳する",
translate_reset: "プロンプトをリセット",
translating: "翻訳中…",
translation_ready: "翻訳が完了しました — 確認して保存してください",
translation_language_empty: "翻訳先の言語を入力してください",
no_lyrics_to_translate: "この曲には翻訳できる歌詞がありません。",
translation_not_configured: "設定でサーバーのURLとモデルを指定してください。",
translation_failed: |e| format!("翻訳に失敗しました: {e}"),
sec_translation: "AI翻訳",
translation_base_url_lbl: "サーバーURL(OpenAI互換)",
translation_api_key_lbl: "APIキー(ローカルサーバーでは空欄)",
translation_model_lbl: "モデル",
translation_refresh_models: "モデル一覧を取得",
translation_no_models: "このサーバーにモデルが見つかりません。",
translation_models_failed: |e| format!("モデル一覧の取得に失敗しました: {e}"),
edit_lyrics: "歌詞を編集",
lyrics_editor_hint: "1行に1フレーズ。[mm:ss.xx]を先頭に付けると同期歌詞になります。任意の行の下に`# note`行を追加すると、歌詞の下にメモが表示されます。",
playlist_not_found: "プレイリストが見つかりません",
add_local: "ローカルを追加",
downloaded_tracks: "ダウンロードした曲",
no_downloaded_tracks: "ダウンロードした曲はありません",
ctx_play: "再生",
ctx_play_local: "ローカルを再生",
ctx_edit: "編集",
ctx_go_to_artist: "アーティストへ移動",
ctx_add_to_queue: "キューに追加",
ctx_add_to_playlist: "プレイリストに追加",
ctx_download: "ダウンロード",
ctx_song_radio: "曲のラジオ",
ctx_artist_radio: "アーティストのラジオ",
ctx_remove_from_queue: "キューから削除",
ctx_remove_from_playlist: "プレイリストから削除",
ctx_remove_from_recent: "最近再生から削除",
ctx_clear_cache: "キャッシュをクリア",
sub_play_via: "再生元",
sub_download_from: "ダウンロード元",
sub_via: "経由",
sub_on: "で",
sub_clear_cache_from: "クリア元",
via_search_suffix: "(検索)",
current: "(現在)",
select: "選択",
find: "検索",
finding: "検索中…",
found_on: |p| format!("{p} で見つかりました"),
not_linked: "未リンク",
providers: "提供元",
no_provider_data: "この曲には提供元データがありません。",
save: "保存",
cancel: "キャンセル",
edit_track: "曲を編集",
lbl_title: "タイトル",
lbl_artist: "アーティスト",
ph_track_title: "曲のタイトル",
ph_track_artist: "曲のアーティスト",
delete: "削除",
delete_playlist_q: "プレイリストを削除しますか?",
tracks_wont_be_deleted: "曲は削除されません。",
lbl_id: "ID",
lbl_url: "URL",
lbl_artist_id: "アーティスト ID",
lbl_duration_secs: "長さ(秒)",
lbl_thumbnail: "サムネイル",
lbl_album: "アルバム",
sec_playback: "再生",
sec_storage: "ストレージ",
sec_history: "履歴",
sec_appearance: "外観",
sec_dependencies: "依存関係",
theme_lbl: "テーマ",
language_lbl: "言語",
default_provider_lbl: "既定のストリーミング・ダウンロード提供元",
cookie_browser_lbl: "ブラウザのCookie(年齢制限動画用)",
cookies_off: "オフ",
normalize_volume_lbl: "曲間で音量を正規化",
download_dir_lbl: "ダウンロード先",
cache_size_lbl: "ストリーミングキャッシュの最大サイズ(MB)",
hist_rows_lbl: "検索履歴の表示行数",
hist_entries_lbl: "保存する検索履歴件数",
recent_kept_lbl: "保存する最近再生した曲数",
reset_defaults: "既定に戻す",
find_in_list: "リスト内を検索…",
scope_songs: "曲",
scope_videos: "動画",
scope_artists: "アーティスト",
scope_albums: "アルバム",
scope_playlists: "プレイリスト",
radio_word_song: "曲",
radio_word_artist: "アーティスト",
lyrics_copied: "歌詞をクリップボードにコピーしました",
saved_to_library: "ライブラリに保存しました",
removed_from_library: "ライブラリから削除しました",
no_lyrics_found: "この曲の歌詞が見つかりません。",
lyrics_saved: "カスタム歌詞を保存しました",
lyrics_deleted: "カスタム歌詞を削除しました",
lyrics_empty: "歌詞を空にできません",
lyrics_name_empty: "歌詞に名前を付けてください",
select_playlist_drop: "曲を置く先のプレイリストを選択",
reordered_playlist: "プレイリストを並べ替えました",
max_panes_reached: "ペインの最大数に達しました",
n_saved: |n| format!("{n} 件保存"),
n_plays: |n| format!("{} 回再生", crate::util::format_count(n)),
search_placeholder: |p| match p {
ProviderId::YouTube => "YouTube Music を検索…".into(),
ProviderId::Local => "検索…".into(),
other => format!("{} を検索…", other.label()),
},
added: |n| format!("{} を追加", ja_tracks(n)),
added_to: |n, to| format!("{} を {to} に追加", ja_tracks(n)),
removed_n: |n| format!("{} を削除", ja_tracks(n)),
removed_from: |n, from| format!("{} を {from} から削除", ja_tracks(n)),
pasted_into: |n, into| format!("{} を {into} に貼り付け", ja_tracks(n)),
saved_title: |t| format!("「{t}」をライブラリに保存しました"),
playlist_created: |n| format!("プレイリスト「{n}」を作成しました"),
added_local: |n| format!("{} を追加(整理するプレイリストを選択)", ja_tracks(n)),
downloading_n: |n| format!("{} をダウンロード中…", ja_tracks(n)),
resolving_on: |title, p| format!("「{title}」を {p} で解決中…"),
resolving_player_client: "互換性のあるプレイヤークライアントを解決中…",
resolved_player_client: |c| format!("プレイヤークライアントを解決しました: {c}"),
player_client_unavailable: "互換性のあるプレイヤークライアントが見つかりません、デフォルトを使用します…",
provider_no_radio: |p| format!("{p} はラジオに対応していません"),
generating_radio_for: |w, name| format!("{w} のラジオを生成中: {name}…"),
could_not_find_on: |name, p| format!("「{name}」が {p} で見つかりません"),
opening: |l| format!("開いています: {l}…"),
opening_artist: |name| format!("アーティストを開いています: {name}…"),
download_complete: |path| format!("ダウンロード完了!{path} に保存しました"),
failed_resolve_on: |title, p, e| format!("「{title}」の {p} での解決に失敗: {e}"),
couldnt_load: |e| format!("読み込めませんでした: {e}"),
couldnt_load_lyrics: |e| format!("歌詞を読み込めませんでした: {e}"),
search_failed: |e| format!("検索に失敗: {e}"),
cache_cleared_for: |p| format!("{p}のキャッシュをクリアしました"),
radio_label: |w, name| format!("ラジオ({w}): {name}"),
ctx_add_to_playlist_n: |n| format!("{} をプレイリストに追加", ja_tracks(n)),
ctx_add_to_queue_n: |n| format!("{} をキューに追加", ja_tracks(n)),
ctx_download_n: |n| format!("{} をダウンロード", ja_tracks(n)),
ctx_remove_from_queue_n: |n| format!("{} をキューから削除", ja_tracks(n)),
ctx_remove_from_playlist_n: |n| format!("{} をプレイリストから削除", ja_tracks(n)),
ctx_remove_from_recent_n: |n| format!("{} を最近再生から削除", ja_tracks(n)),
import_playlist: "プレイリストをインポート",
import_method_native: "ネイティブ",
import_method_filelist: "ファイル一覧",
import_method_csv: "CSV",
import_native_hint: "playlists.json からプレイリストをインポートします。",
import_csv_name_col: "名前の列",
import_csv_artist_col: "アーティストの列",
import_csv_album_col: "アルバムの列",
import_csv_preset: "プリセット",
import_csv_preset_default: "既定",
import_csv_preset_exportify: "Exportify",
import_csv_exportify_note: "https://exportify.net/ からエクスポートした Spotify プレイリストに対応。",
import_pattern_lbl: "ファイル名パターン",
import_playlist_name: "プレイリスト名",
import_add_pattern: "パターンを追加",
import_select_file: "ファイルを選択",
import_select_folder: "フォルダを選択",
import_pattern_conflict: |a, b| {
format!(
"パターン「{a}」と「{b}」は同じファイルに一致し、フィールドが競合する可能性があります。どちらかを削除または修正してください。"
)
},
import_playlists_imported: |n| format!("{} をインポート", ja_tracks(n)),
import_imported_into: |n, into| format!("{} を {into} にインポート", ja_tracks(n)),
import_no_tracks: "インポートする曲が見つかりません。",
import_no_match: "いずれのパターンにも一致するファイルがありません。",
import_bad_file: "選択したファイルを読み込めませんでした。",
deps_title: "不足している依存関係",
deps_intro: "アプリが使用する一部のツールが見つかりません。インストールするものを選ぶか、破棄して続行してください(それらが揃うまで検索やストリーミングが機能しない場合があります)。",
deps_install: "インストール",
deps_install_selected: "選択項目をインストール",
deps_discard: "破棄",
deps_installing: "インストール中…",
deps_installed: "インストール済み",
deps_failed: "失敗",
deps_installed_toast: "選択した依存関係をインストールしました。",
deps_yt_dlp_desc: "音声をストリーミング・ダウンロード(YouTubeとSoundCloudに必須)",
deps_ytmusicapi_desc: "YouTube Music 検索(任意、yt-dlp にフォールバック)",
deps_python3_desc: "ytmusicapi に必要(YouTube Music 検索用)",
deps_ytmusicapi_requires_python: "Python 3 が必要(先にインストール)",
deps_play_requires_yt_dlp: "再生には yt-dlp が必要です。起動ダイアログからインストールして再生してください。",
deps_source_not_playable: "このソースは再生できません。",
deps_found_section_title: "システムで見つかりました",
deps_found_section_intro: "これらはすでに利用可能です。アプリで管理するコピーをインストールするにはチェックを入れてください(アプリのコピーがシステムのものより優先されます)。",
deps_found_on_system: "システムで見つかりました",
deps_managed_by_app: "インストール済み(アプリ管理)",
deps_not_installed: "未インストール",
deps_delete: "削除",
deps_deleting: "削除中…",
deps_deleted: "削除済み",
deps_delete_failed: "削除に失敗",
sec_updates: "アップデート",
check_for_updates: "アップデートを確認",
checking_for_updates: "アップデートを確認中…",
up_to_date: "最新です",
current_version: |v| format!("バージョン {v}"),
update_available: |v| format!("バージョン {v} が利用可能です。設定から更新できます。"),
update_now: "今すぐ更新",
updating: "更新中…",
update_applied: |v| format!("バージョン {v} に更新しました。再起動中…"),
package_managed: "自動更新できません(アプリケーションディレクトリへの書き込み権限がありません)。パッケージマネージャーでインストールされた場合は、それを使用して更新してください。",
update_failed: |e| format!("アップデートに失敗しました: {e}"),
percent: |pct| format!("{pct}%"),
list_match_pos: |pos, total| format!("{pos}/{total}"),
sub_menu_label: |base, provider, suffix| format!("{base} {provider} {suffix}"),
deps_failed_detail: |e| format!("Failed: {e}"),
deps_delete_failed_detail: |e| format!("Delete failed: {e}"),
sc_title: "キーボードショートカット",
sc_sec_list: "トラックリスト",
sc_move: "リスト内を移動(循環)",
sc_focus_panel: "キューまたはリストにフォーカス",
sc_first_last: "先頭 / 末尾の行",
sc_page: "ページ / 半ページ",
sc_play: "フォーカス中の曲を再生",
sc_sec_select: "選択と編集",
sc_extend: "選択範囲を広げる",
sc_toggle_sel: "行の選択を切り替え",
sc_select_all: "リスト内をすべて選択",
sc_copy_paste: "選択中の曲をコピー / 貼り付け",
sc_delete: "選択中の曲を削除",
sc_esc: "ポップアップを閉じて選択を解除し検索に戻る",
sc_sec_search: "検索",
sc_focus_search: "検索にフォーカス",
sc_stage_provider: "検索プロバイダーを指定(保留)",
sc_stage_scope: "検索スコープを指定(保留)",
sc_run_search: "保留中の検索を実行",
sc_find_list: "リスト内あいまい検索(一致間を移動)",
sc_sec_playlists: "プレイリストと履歴",
sc_prev_next_pl: "前 / 次のプレイリスト",
sc_jump: "プレイリストジャンプ(Enterで開く、Shift+Enterで再生)",
sc_back_fwd: "ペインで戻る / 進む",
sc_sec_playback: "再生",
sc_play_pause: "再生 / 一時停止",
sc_next_prev: "次 / 前の曲",
sc_mute: "ミュート",
sc_volume: "音量ダウン / アップ",
sc_seek: "5秒戻る / 進む(Shift: 10秒)",
sc_toggles: "キュー / リピート / 歌詞 / キュータブ",
sc_sec_panes: "ペイン",
sc_split: "左右 / 上下に分割",
sc_close_pane: "ペインを閉じる",
sc_adj_pane: "隣のペインにフォーカス",
sc_cycle_pane: "ペインを巡回 / 移動",
sc_sec_menu: "コンテキストメニュー",
sc_open_menu: "フォーカス中の曲に対して開く",
sc_nav_menu: "メニュー内を移動",
};
fn ja_tracks(n: usize) -> String {
format!("{n} 曲")
}