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: "Звичайний",
playlist_not_found: "Плейлист не знайдено",
add_local: "Додати локальний",
downloaded_tracks: "Завантажені треки",
no_downloaded_tracks: "Немає завантажених треків",
ctx_play: "Відтворити",
ctx_play_local: "Відтворити локально",
ctx_edit: "Змінити",
ctx_go_to_artist: "Перейти до виконавця",
ctx_add_to_playlist: "Додати до плейлиста",
ctx_download: "Завантажити",
ctx_song_radio: "Радіо треку",
ctx_artist_radio: "Радіо виконавця",
ctx_remove_from_queue: "Видалити з черги",
ctx_remove_from_playlist: "Видалити з плейлиста",
sub_play_via: "Грати через",
sub_download_from: "Завантажити з",
sub_via: "Через",
sub_on: "На",
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: "Джерело за замовчуванням для потоку та завантажень",
normalize_volume_lbl: "Нормалізувати гучність між треками",
download_dir_lbl: "Тека завантажень",
cache_size_lbl: "Макс. розмір кешу потоку (МБ)",
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: "Для цього треку текст не знайдено.",
select_playlist_drop: "Оберіть плейлист, щоб додати треки",
reordered_playlist: "Плейлист переупорядковано",
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!("Додано: {}", uk_tracks(n)),
added_to: |n, to| format!("Додано: {} до {to}", uk_tracks(n)),
removed_n: |n| format!("Видалено: {}", uk_tracks(n)),
removed_from: |n, from| format!("Видалено: {} з {from}", uk_tracks(n)),
pasted_into: |n, into| format!("Вставлено: {} до {into}", uk_tracks(n)),
saved_title: |t| format!("«{t}» збережено до бібліотеки"),
playlist_created: |n| format!("Плейлист «{n}» створено"),
added_local: |n| format!("Додано: {} (оберіть плейлист для впорядкування)", uk_tracks(n)),
downloading_n: |n| format!("Завантаження {}…", uk_tracks(n)),
resolving_on: |title, p| format!("Визначення «{title}» на {p}…"),
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}"),
radio_label: |w, name| format!("Радіо ({w}): {name}"),
ctx_add_to_playlist_n: |n| format!("Додати {} до плейлиста", uk_tracks(n)),
ctx_download_n: |n| format!("Завантажити {}", uk_tracks(n)),
ctx_remove_from_queue_n: |n| format!("Видалити {} з черги", uk_tracks(n)),
ctx_remove_from_playlist_n: |n| format!("Видалити {} з плейлиста", uk_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: "Підтримує плейлисти Spotify, експортовані з https://exportify.net/.",
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!("Імпортовано {}", uk_tracks(n)),
import_imported_into: |n, into| format!("Імпортовано {} до {into}", uk_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: "Потокова передача та завантаження аудіо (обов'язково)",
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}"),
};
fn uk_tracks(n: usize) -> String {
let m10 = n % 10;
let m100 = n % 100;
if m10 == 1 && m100 != 11 {
format!("{n} трек")
} else if (2..=4).contains(&m10) && !(12..=14).contains(&m100) {
format!("{n} треки")
} else {
format!("{n} треків")
}
}