mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-08 17:06:15 -08:00
Merge branch '4gray:master' into feature/streamFormatOption
This commit is contained in:
28 files changed
+764
-60
No files matched your search
@@ -4,7 +4,7 @@
|
||||
<img src="https://raw.githubusercontent.com/4gray/iptvnator/electron/src/assets/icons/favicon.256x256.png" alt="IPTVnator icon" title="Free IPTV player application" />
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://github.com/4gray/iptvnator/releases"><img src="https://img.shields.io/github/release/4gray/iptvnator.svg?style=for-the-badge&logo=github" alt="Release"></a>
|
||||
<a href="https://github.com/4gray/iptvnator/releases"><img src="https://img.shields.io/github/release/4gray/iptvnator.svg?style=for-the-badge&logo=github" alt="Release"></a>
|
||||
<a href="https://github.com/4gray/iptvnator/releases"><img src="https://img.shields.io/github/v/release/4gray/iptvnator?include_prereleases&label=pre-release&logo=github&style=for-the-badge" /></a>
|
||||
<img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/4gray/iptvnator/build-and-test.yaml?style=for-the-badge&logo=github"> <a href="https://github.com/4gray/iptvnator/releases"><img src="https://img.shields.io/github/downloads/4gray/iptvnator/total?style=for-the-badge&logo=github" alt="Releases"></a> <a href="https://codecov.io/gh/4gray/iptvnator"><img alt="Codecov" src="https://img.shields.io/codecov/c/github/4gray/iptvnator?style=for-the-badge"></a> <a href="https://t.me/iptvnator"><img src="https://img.shields.io/badge/telegram-iptvnator-blue?logo=telegram&style=for-the-badge" alt="Telegram"></a> <a href="https://bsky.app/profile/iptvnator.bsky.social"><img src="https://img.shields.io/badge/bluesky-iptvnator-darkblue?logo=bluesky&style=for-the-badge" alt="Bluesky"></a>
|
||||
</p>
|
||||
@@ -33,7 +33,23 @@ The application is a cross-platform, open-source project built with ~~Electron~~
|
||||
- Favorite channels management
|
||||
- Global favorites aggregated from all playlists
|
||||
- HTML video player with HLS.js support or Video.js-based player
|
||||
- Internationalization with support for 8 languages (English, Russian, German, Korean, Spanish, Chinese, French, Italian)
|
||||
- Internationalization with support for 16 languages:
|
||||
* Arabic
|
||||
* Moroccan arabic
|
||||
* English
|
||||
* Russian
|
||||
* German
|
||||
* Korean
|
||||
* Spanish
|
||||
* Chinese
|
||||
* Traditional chinese
|
||||
* French
|
||||
* Italian
|
||||
* Turkish
|
||||
* Japanese
|
||||
* Dutch
|
||||
* Belarusian
|
||||
* Polish
|
||||
- Custom "User Agent" header configuration for playlists
|
||||
- Light and Dark themes
|
||||
- Docker version available for self-hosting
|
||||
|
||||
Generated
+6
-5
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "iptvnator",
|
||||
"version": "1.0.0-beta.5",
|
||||
"version": "1.0.0-beta.6",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
@@ -39,7 +39,7 @@
|
||||
"date-fns": "2.29.3",
|
||||
"dplayer": "1.27.1",
|
||||
"epg-parser": "0.1.6",
|
||||
"hls.js": "1.4.12",
|
||||
"hls.js": "1.6.0",
|
||||
"iptv-playlist-parser": "github:4gray/iptv-playlist-parser",
|
||||
"lodash": "4.17.21",
|
||||
"moment": "2.30.1",
|
||||
@@ -12527,9 +12527,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/hls.js": {
|
||||
"version": "1.4.12",
|
||||
"resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.4.12.tgz",
|
||||
"integrity": "sha512-1RBpx2VihibzE3WE9kGoVCtrhhDWTzydzElk/kyRbEOLnb1WIE+3ZabM/L8BqKFTCL3pUy4QzhXgD1Q6Igr1JA=="
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.0.tgz",
|
||||
"integrity": "sha512-AlW8ymcDKZuKtzXCUmEy4nOcHRkebnShH6t6hC2+QJQP0WXlTUSSO9Kp22uSEYdCgpwkXEJsfOhqxrgO2tDctQ==",
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/hmac-drbg": {
|
||||
"version": "1.0.1",
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "iptvnator",
|
||||
"version": "1.0.0-beta.5",
|
||||
"version": "1.0.0-beta.6",
|
||||
"description": "IPTV player application.",
|
||||
"homepage": "https://github.com/4gray/iptvnator",
|
||||
"author": {
|
||||
@@ -66,7 +66,7 @@
|
||||
"date-fns": "2.29.3",
|
||||
"dplayer": "1.27.1",
|
||||
"epg-parser": "0.1.6",
|
||||
"hls.js": "1.4.12",
|
||||
"hls.js": "1.6.0",
|
||||
"iptv-playlist-parser": "github:4gray/iptv-playlist-parser",
|
||||
"lodash": "4.17.21",
|
||||
"moment": "2.30.1",
|
||||
@@ -148,4 +148,4 @@
|
||||
"browserslist": [
|
||||
"chrome 91"
|
||||
]
|
||||
}
|
||||
}
|
||||
Generated
+8
-1
@@ -4,7 +4,7 @@ version = 3
|
||||
|
||||
[[package]]
|
||||
name = "IPTVnator"
|
||||
version = "1.0.0-beta.5"
|
||||
version = "1.0.0-beta.6"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"fix-path-env",
|
||||
@@ -1899,6 +1899,12 @@ dependencies = [
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "http-range"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573"
|
||||
|
||||
[[package]]
|
||||
name = "httparse"
|
||||
version = "1.10.1"
|
||||
@@ -4986,6 +4992,7 @@ dependencies = [
|
||||
"gtk",
|
||||
"heck 0.5.0",
|
||||
"http 1.2.0",
|
||||
"http-range",
|
||||
"jni",
|
||||
"libc",
|
||||
"log",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "IPTVnator"
|
||||
version = "1.0.0-beta.5"
|
||||
version = "1.0.0-beta.6"
|
||||
description = "IPTVnator"
|
||||
authors = ["4gray"]
|
||||
license = "MIT"
|
||||
@@ -21,7 +21,7 @@ tauri-build = { version = "2", features = [] }
|
||||
serde_json = "1.0"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
log = "0.4"
|
||||
tauri = { version = "2.2.0", features = ["macos-private-api"] }
|
||||
tauri = { version = "2.2.0", features = [ "protocol-asset", "macos-private-api"] }
|
||||
tauri-plugin-log = "2"
|
||||
tauri-plugin-http = {version = "2", features = ["unsafe-headers"] }
|
||||
tauri-plugin-shell = "2"
|
||||
|
||||
@@ -30,6 +30,12 @@
|
||||
},
|
||||
{
|
||||
"url": "https://*:**"
|
||||
},
|
||||
{
|
||||
"url": "file://**"
|
||||
},
|
||||
{
|
||||
"url": "file:///**"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
+37
-12
@@ -78,19 +78,44 @@ pub async fn fetch_and_parse_epg(url: String) -> Result<(), Box<dyn std::error::
|
||||
async fn fetch_single_epg_source(url: String) -> Result<EpgSource, Box<dyn std::error::Error>> {
|
||||
info!("Starting EPG fetch from URL: {}", url);
|
||||
|
||||
// Fetch content
|
||||
let client = reqwest::Client::new();
|
||||
let content = if url.ends_with(".gz") {
|
||||
info!("Fetching and decompressing gzipped EPG data...");
|
||||
let bytes = client.get(&url).send().await?.bytes().await?;
|
||||
let mut decoder = GzDecoder::new(&bytes[..]);
|
||||
let mut string = String::new();
|
||||
decoder.read_to_string(&mut string)?;
|
||||
info!("Successfully decompressed EPG data");
|
||||
string
|
||||
// Get content based on URL type
|
||||
let content = if url.starts_with("file://") {
|
||||
info!("Reading EPG data from local file...");
|
||||
let file_path = url.strip_prefix("file://").unwrap_or(&url);
|
||||
let file_content = std::fs::read_to_string(file_path)
|
||||
.or_else(|_| {
|
||||
// If regular read fails, try reading as gzip
|
||||
if file_path.ends_with(".gz") {
|
||||
info!("Attempting to decompress local gzipped file...");
|
||||
let file = std::fs::File::open(file_path)?;
|
||||
let mut decoder = GzDecoder::new(file);
|
||||
let mut content = String::new();
|
||||
decoder.read_to_string(&mut content)?;
|
||||
Ok(content)
|
||||
} else {
|
||||
Err(std::io::Error::new(
|
||||
std::io::ErrorKind::Other,
|
||||
"Failed to read file",
|
||||
))
|
||||
}
|
||||
})?;
|
||||
info!("Successfully read local EPG file");
|
||||
file_content
|
||||
} else {
|
||||
info!("Fetching EPG data...");
|
||||
client.get(&url).send().await?.text().await?
|
||||
// Fetch content from remote URL
|
||||
let client = reqwest::Client::new();
|
||||
if url.ends_with(".gz") {
|
||||
info!("Fetching and decompressing gzipped EPG data...");
|
||||
let bytes = client.get(&url).send().await?.bytes().await?;
|
||||
let mut decoder = GzDecoder::new(&bytes[..]);
|
||||
let mut string = String::new();
|
||||
decoder.read_to_string(&mut string)?;
|
||||
info!("Successfully decompressed EPG data");
|
||||
string
|
||||
} else {
|
||||
info!("Fetching EPG data...");
|
||||
client.get(&url).send().await?.text().await?
|
||||
}
|
||||
};
|
||||
|
||||
info!("Parsing EPG XML data...");
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
|
||||
"productName": "iptvnator",
|
||||
"version": "1.0.0-5",
|
||||
"version": "1.0.0-6",
|
||||
"identifier": "com.4gray.dev",
|
||||
"build": {
|
||||
"frontendDist": "../dist/browser",
|
||||
@@ -43,7 +43,8 @@
|
||||
"https:",
|
||||
"http:",
|
||||
"'unsafe-eval'",
|
||||
"'unsafe-inline'"
|
||||
"'unsafe-inline'",
|
||||
"file:"
|
||||
],
|
||||
"img-src": [
|
||||
"'self'",
|
||||
@@ -51,22 +52,27 @@
|
||||
"asset:",
|
||||
"https:",
|
||||
"http:",
|
||||
"blob:"
|
||||
"blob:",
|
||||
"file:",
|
||||
"'unsafe-eval'",
|
||||
"'unsafe-inline'"
|
||||
],
|
||||
"media-src": ["'self'", "https:", "http:", "blob:", "data:"],
|
||||
"media-src": ["'self'", "https:", "http:", "blob:", "data:", "file:"],
|
||||
"script-src": [
|
||||
"'self'",
|
||||
"'unsafe-inline'",
|
||||
"'unsafe-eval'",
|
||||
"tauri:",
|
||||
"asset:"
|
||||
"asset:",
|
||||
"file:"
|
||||
],
|
||||
"style-src": [
|
||||
"'self'",
|
||||
"'unsafe-inline'",
|
||||
"https:",
|
||||
"http:",
|
||||
"https://fonts.googleapis.com"
|
||||
"https://fonts.googleapis.com",
|
||||
"file:"
|
||||
],
|
||||
"font-src": ["'self'", "https://fonts.gstatic.com", "data:"],
|
||||
"connect-src": [
|
||||
@@ -80,6 +86,10 @@
|
||||
],
|
||||
"frame-src": ["'self'", "https:", "http:", "blob:", "data:"],
|
||||
"worker-src": ["'self'", "blob:", "data:"]
|
||||
},
|
||||
"assetProtocol": {
|
||||
"enable": true,
|
||||
"scope": ["*/**"]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
+1
-1
@@ -133,7 +133,7 @@ export class ChannelListContainerComponent {
|
||||
this.selected = channel;
|
||||
this.store.dispatch(PlaylistActions.setActiveChannel({ channel }));
|
||||
|
||||
const epgChannelId = channel?.tvg?.id?.trim() || channel?.name.trim();
|
||||
const epgChannelId = channel?.name.trim();
|
||||
|
||||
if (epgChannelId) {
|
||||
this.epgService.getChannelPrograms(epgChannelId);
|
||||
|
||||
+8
-10
@@ -1,11 +1,10 @@
|
||||
import { DragDropModule } from '@angular/cdk/drag-drop';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { NgIf } from '@angular/common';
|
||||
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
||||
import { MatButtonModule } from '@angular/material/button';
|
||||
import { MatDividerModule } from '@angular/material/divider';
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
import { MatIconButton } from '@angular/material/button';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
import { MatListModule } from '@angular/material/list';
|
||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
||||
import { MatTooltip } from '@angular/material/tooltip';
|
||||
import { TranslatePipe } from '@ngx-translate/core';
|
||||
|
||||
@Component({
|
||||
@@ -49,13 +48,12 @@ import { TranslatePipe } from '@ngx-translate/core';
|
||||
</button>
|
||||
</mat-list-item>`,
|
||||
imports: [
|
||||
CommonModule,
|
||||
DragDropModule,
|
||||
MatButtonModule,
|
||||
MatDividerModule,
|
||||
MatIconModule,
|
||||
MatIcon,
|
||||
MatIconButton,
|
||||
MatListModule,
|
||||
MatTooltipModule,
|
||||
MatTooltip,
|
||||
NgIf,
|
||||
TranslatePipe,
|
||||
],
|
||||
})
|
||||
|
||||
@@ -161,10 +161,7 @@ export class MultiEpgContainerComponent
|
||||
|
||||
try {
|
||||
const channelNames = this._playlistChannels
|
||||
.map(
|
||||
(channel) =>
|
||||
channel.tvg?.id?.trim() ?? channel.name?.trim() ?? ''
|
||||
)
|
||||
.map((channel) => channel.name?.trim() ?? '')
|
||||
.filter((name) => name !== '');
|
||||
|
||||
console.log('Requesting EPG data:');
|
||||
|
||||
@@ -16,4 +16,6 @@ export enum Language {
|
||||
TURKISH = 'tr',
|
||||
JAPANESE = 'ja',
|
||||
DUTCH = 'nl',
|
||||
BELARUSIAN = 'by',
|
||||
POLISH = 'pl',
|
||||
}
|
||||
@@ -220,7 +220,10 @@
|
||||
"FRENCH": "الفرنسية",
|
||||
"ITALIAN": "الإيطالية",
|
||||
"TURKISH": "التركية",
|
||||
"JAPANESE": "اليابانية"
|
||||
"JAPANESE": "اليابانية",
|
||||
"DUTCH": "الهولندية",
|
||||
"BELARUSIAN": "البيلاروسية",
|
||||
"POLISH": "البولندية"
|
||||
},
|
||||
"YES": "نعم",
|
||||
"NO": "لا",
|
||||
|
||||
@@ -220,7 +220,10 @@
|
||||
"FRENCH": "الفرنسية",
|
||||
"ITALIAN": "الإيطالية",
|
||||
"TURKISH": "التركية",
|
||||
"JAPANESE": "اليابانية"
|
||||
"JAPANESE": "اليابانية",
|
||||
"DUTCH": "الهولندية",
|
||||
"BELARUSIAN": "البيلاروسية",
|
||||
"POLISH": "البولندية"
|
||||
},
|
||||
"YES": "آه",
|
||||
"NO": "لا",
|
||||
|
||||
@@ -0,0 +1,284 @@
|
||||
{
|
||||
"CLOSE": "Закрыць",
|
||||
"PLAYLISTS": "Плэйлісты",
|
||||
"HOME": {
|
||||
"TITLE": "IPTVnator",
|
||||
"SUBTITLE": "Выберыце плэйліст са спісу, дадайце новы з камп'ютара або загрузіце па спасылцы",
|
||||
"TABS": {
|
||||
"RECENTLY_ADDED": "Нядаўна дададзеныя плэйлісты",
|
||||
"FILE_UPLOAD": "Загрузіць з камп'ютара",
|
||||
"URL_UPLOAD": "Загрузіць па спасылцы",
|
||||
"TEXT_IMPORT": "Імпартаваць з тэксту",
|
||||
"STALKER_PORTAL_IMPORT": "Дадаць Stalker партал",
|
||||
"XTREME_IMPORT": "Дадаць Xtreme Code"
|
||||
},
|
||||
"PLAYLISTS": {
|
||||
"NO_PLAYLISTS": "Пакуль яшчэ не было дададзена ніводнага плэйліста",
|
||||
"ADD_FIRST": "Вы можаце дадаць плэйлісты з суседніх укладак",
|
||||
"ADDED_VIA_URL": "Быў дададзены па спасылцы:",
|
||||
"ADDED_VIA_FILE": "Быў загружаны з камп'ютара",
|
||||
"CHANNELS": "Каналаў",
|
||||
"ADDED": "Дададзены",
|
||||
"SHOW_DETAILS": "Паказаць інфармацыю аб плэйлісце",
|
||||
"REMOVE": "Выдаліць плэйліст",
|
||||
"SEARCH_PLAYLISTS": "Пошук па назве плэйліста",
|
||||
"INFO_DIALOG": {
|
||||
"PLAYLIST_DETAILS": "Падрабязная інфармацыя аб плэйлісце",
|
||||
"TITLE": "Назва",
|
||||
"FROM_URL": "Дададзены па спасылцы",
|
||||
"IMPORT_DATE": "Дата імпарту",
|
||||
"CHANNELS": "Колькасць каналаў",
|
||||
"CLOSE": "Закрыць",
|
||||
"SAVE": "Захаваць",
|
||||
"USER_AGENT": "User agent",
|
||||
"ORIGINAL_FILENAME": "Імя файла пры загрузцы",
|
||||
"FILE_PATH": "Шлях да файла",
|
||||
"UPDATE_FAILED": "Не ўдалося абнавіць плэйліст",
|
||||
"AUTO_UPDATE": "Аўтаабнаўленне",
|
||||
"AUTO_UPDATE_DESCRIPTION": "Калі актываваная функцыя аўтаабнаўлення, спіс прайгравання будзе абнаўляцца аўтаматычна пры кожным запуску праграмы.",
|
||||
"CUSTOM_USER_AGENT": "Некаторыя IPTV правайдэры патрабуюць указанне пэўнага карыстальніцкага агента (User Agent) для прайгравання свайго плэйліста.",
|
||||
"EXPORT_PLAYLIST": "Экспартаваць плэйліст (m3u)",
|
||||
"PASSWORD": "Пароль",
|
||||
"SERVER_URL": "URL-адрас сервера",
|
||||
"USERNAME": "Імя карыстальніка",
|
||||
"MAC_ADDRESS": "MAC-адрас"
|
||||
},
|
||||
"UPDATED": "Абноўлены",
|
||||
"REFRESH": "Абнавіць плэйліст",
|
||||
"REMOVE_DIALOG": {
|
||||
"MESSAGE": "Вы ўпэўнены, што хочаце выдаліць гэты плэйліст?",
|
||||
"TITLE": "Выдаліць плэйліст"
|
||||
},
|
||||
"GLOBAL_FAVORITES": "Усе фаварыты",
|
||||
"GLOBAL_FAVORITES_DESCRIPTION": "Аўтаматычна згенераваны плэйліст, які ўключае ў сябе фаварыты з усіх плэйлістоў",
|
||||
"MY_PLAYLISTS": "Мае плэйлісты",
|
||||
"MY_PLAYLISTS_SUBTITLE": "Усе наяўныя плэйлісты",
|
||||
"PLAYLIST_UPDATE_SUCCESS": "Плэйліст быў паспяхова абноўлены!",
|
||||
"STALKER_PORTAL": "Stalker партал",
|
||||
"XTREAM_PLAYLIST": "Xtream плэйліст"
|
||||
},
|
||||
"FILE_UPLOAD": {
|
||||
"DRAG_DROP": "Перацягніце файл у гэтую вобласць",
|
||||
"OR": "або",
|
||||
"CHOOSE_PLAYLIST": "выберыце плэйліст",
|
||||
"REJECTED": "На жаль, гэты фармат файлаў не падтрымліваецца {{filename}}."
|
||||
},
|
||||
"URL_UPLOAD": {
|
||||
"PLAYLIST_URL": "Спасылка на плэйліст (*.m3u або *.m3u8)",
|
||||
"ADD_PLAYLIST": "Дадаць плэйліст"
|
||||
},
|
||||
"TEXT_IMPORT": {
|
||||
"LABEL": "Устаўце плэйліст фармату m3u(8) у гэта поле",
|
||||
"BUTTON_LABEL": "Імпартаваць"
|
||||
},
|
||||
"XTREAM_PLAYLIST": {
|
||||
"TITLE": "Назва плэйліста",
|
||||
"SERVER_URL": "Сервер URL",
|
||||
"USERNAME": "Карыстальнік",
|
||||
"PASSWORD": "Пароль",
|
||||
"ADD": "Дадаць",
|
||||
"TEST_CREDENTIALS": "Праверыць",
|
||||
"URL_VALIDATION_ERROR": "Павінен быць сапраўдны URL-адрас з пратаколам (напрыклад, http://example.com або https://example.com:4324)."
|
||||
},
|
||||
"STALKER_PORTAL": {
|
||||
"ADD": "Дадаць",
|
||||
"TITLE": "Назва",
|
||||
"MAC_ADDRESS": "MAC-адрас",
|
||||
"SERVER_URL": "URL сервера",
|
||||
"URL_VALIDATION_ERROR": "Павінен быць сапраўдны URL-адрас з пратаколам (напрыклад, http://example.com/c або https://example.com/stalker_portal/c)."
|
||||
},
|
||||
"FILTER_BY_TYPE": "Фільтраваць па тыпу",
|
||||
"IMPORTED_AS_TEXT": "Імпартавана як тэкст",
|
||||
"FILTER_BY_NAME": "Фільтраваць па імені",
|
||||
"PARSING_ERROR": "Памылка парсінгу, несапраўдны плэйліст:"
|
||||
},
|
||||
"LANGUAGES": {
|
||||
"ARABIC": "العربية",
|
||||
"MOROCCAN_ARABIC": "العربية (اللهجة المغربية)",
|
||||
"ENGLISH": "English",
|
||||
"KOREAN": "한국어",
|
||||
"RUSSIAN": "Русский",
|
||||
"GERMAN": "Deutsch",
|
||||
"SPANISH": "Español",
|
||||
"CHINESE": "简体中文",
|
||||
"TRADITIONAL_CHINESE": "繁體中文",
|
||||
"FRENCH": "Français",
|
||||
"ITALIAN": "Italiano",
|
||||
"TURKISH": "Türkçe",
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "Nederlands",
|
||||
"BELARUSIAN": "Беларуская"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Налады / IPTVnator",
|
||||
"SUBTITLE": "Тут можна змяніць агульныя налады праграмы",
|
||||
"DESCRIPTION": "Скончыўшы наладу, не забудзьцеся пацвердзіць новыя налады кнопкай 'Захаваць'",
|
||||
"EPG_URL_LABEL": "Спасылка на праграму каналаў (EPG) (*.xml або *.xml.gz)",
|
||||
"EPG_URL_PLACEHOLDER": "Увядзіце спасылку",
|
||||
"REFRESH_EPG": "Абнавіць праграму каналаў (EPG)",
|
||||
"VIDEO_PLAYER_LABEL": "Відэапрайгравальнік",
|
||||
"VIDEO_PLAYER_PLACEHOLDER": "Выберыце са спісу",
|
||||
"VERSION": "Версія праграмы",
|
||||
"SAVE_CHANGES": "Захаваць",
|
||||
"BACK_TO_HOME": "Назад",
|
||||
"NEW_VERSION_AVAILABLE": "Даступная новая версія праграмы",
|
||||
"LATEST_VERSION": "Вы выкарыстоўваеце апошнюю версію праграмы",
|
||||
"LANGUAGE": "Мова",
|
||||
"SETTINGS_SAVED": "Новыя налады былі паспяхова захаваны!",
|
||||
"THEME": "Тэма афармлення",
|
||||
"SHOW_CAPTIONS": "Адлюстроўваць субтытры",
|
||||
"ADD_EPG_SOURCE": "Дадаць крыніцу EPG",
|
||||
"EPG_URL_ERROR": "Уведзенае значэнне не з'яўляецца URL-адрасам.",
|
||||
"VIDEO_PLAYER_DESCRIPTION": "Выбраць стандартны відэапрайгравальнік",
|
||||
"LANGUAGE_DESCRIPTION": "Выбраць мову праграмы",
|
||||
"THEME_DESCRIPTION": "Выбраць візуальную тэму афармлення",
|
||||
"SHOW_CAPTIONS_DESCRIPTION": "Паказаць або схаваць субтытры па змаўчанні.",
|
||||
"VERSION_DESCRIPTION": "Бягучая версія праграмы",
|
||||
"EPG_NOTE": "На гэты момант EPG даступны толькі ў натыўнай версіі IPTVnator.",
|
||||
"EPG_NOTE_URL_TEXT": "Падрабязней тут",
|
||||
"IMPORT_EXPORT_DATA": "Імпарт/экспарт плэйлістоў",
|
||||
"IMPORT_EXPORT_DATA_DESCRIPTION": "Экспарт або імпарт плэйлістоў у фармаце JSON, які выкарыстоўваецца ў праграме.",
|
||||
"IMPORT_DATA": "Імпарт",
|
||||
"EXPORT_DATA": "Экспарт",
|
||||
"REMOVE_ALL": "Выдаліць плэйліст",
|
||||
"REMOVE_ALL_BUTTON": "Выдаліць",
|
||||
"REMOVE_ALL_DESCRIPTION": "Гэта дзеянне выдаліць усе існуючыя плэйлісты з праграмы.",
|
||||
"REMOVE_DIALOG": {
|
||||
"TITLE": "Выдаліць усе плэйлісты",
|
||||
"MESSAGE": "Вы ўпэўнены, што хочаце выдаліць усе плэйлісты з праграмы?"
|
||||
},
|
||||
"IMPORT_ERROR": "Памылка імпарту, калі ласка, паспрабуйце імпартаваць іншы файл.",
|
||||
"PLAYLISTS_REMOVED": "Усе плэйлісты былі выдалены.",
|
||||
"VLC_PLAYER_PATH_LABEL": "Шлях да VLC прайгравальніка",
|
||||
"VLC_PLAYER_PATH": "Шлях да VLC прайгравальніка",
|
||||
"MPV_PLAYER_PATH_LABEL": "Шлях да mpv прайгравальніка",
|
||||
"MPV_PLAYER_PATH": "Шлях да mpv прайгравальніка",
|
||||
"VLC_PLAYER_PATH_DESCRIPTION": "Усталюйце шлях да прайгравальніка VLC у вашай сістэме. \nЁн будзе выкарыстоўваць прадастаўлены шлях да бінарнага файла VLC замест шляху па змаўчанні."
|
||||
},
|
||||
"THEMES": {
|
||||
"DARK_THEME": "Цёмная тэма",
|
||||
"LIGHT_THEME": "Светлая тэма"
|
||||
},
|
||||
"CHANNELS": {
|
||||
"SEARCH_CHANNEL": "Пошук каналаў",
|
||||
"UPLOAD_OR_SELECT_OTHER_PLAYLIST": "Загрузіць або выбраць іншы плэйліст",
|
||||
"ALL_CHANNELS": "Усе каналы",
|
||||
"GROUPS": "Групы",
|
||||
"UNGROUPED": "Незагрупаваныя",
|
||||
"UNNAMED_CHANNEL": "Канал без назвы",
|
||||
"FAVORITES": "Выбраныя",
|
||||
"NO_FAVORITES": "Выбраных каналаў пакуль няма",
|
||||
"USE_STAR_TO_FAVORITE": "Выкарыстоўвайце значок зоркі, каб дадаваць каналы ў выбранае",
|
||||
"REMOVE_FAVORITE": "Выдаліць са спісу фаварытаў",
|
||||
"FAVORITES_UPDATED": "Спіс фаварытаў быў абноўлены!"
|
||||
},
|
||||
"TOP_MENU": {
|
||||
"OPEN_CHANNELS_LIST": "Адкрыць спіс каналаў",
|
||||
"TOGGLE_FAVORITE_FLAG": "Выбраны",
|
||||
"OPEN_EPG_LIST": "Адкрыць праграму (EPG)",
|
||||
"OPEN_MULTI_EPG": "Адкрыць мульты-EPG прагляд"
|
||||
},
|
||||
"EPG": {
|
||||
"NEXT_DAY": "Наступны дзень",
|
||||
"PREVIOUS_DAY": "Папярэдні дзень",
|
||||
"LIVE_NOW": "Цяпер",
|
||||
"LIVE_STREAM": "Прамая трансляцыя",
|
||||
"TIMESHIFT_AVAILABLE": "Даступная функцыя архіва (timeshift). Націсніце на перадачу для прайгравання.",
|
||||
"EPG_NOT_AVAILABLE_DATE": "Ой, праграма на гэты дзень, на жаль, адсутнічае.",
|
||||
"EPG_NOT_AVAILABLE_CHANNEL_TITLE": "Праграма для гэтага канала недаступная.",
|
||||
"EPG_NOT_AVAILABLE_CHANNEL_DESCRIPTION": "Паспрабуйце змяніць або абнавіць спасылку на EPG у наладах праграмы.",
|
||||
"FETCH_EPG": "Загружаю праграму ТБ-перадач (EPG)...",
|
||||
"ERROR": "Ой, не ўдалося загрузіць праграму каналаў (EPG)",
|
||||
"DOWNLOAD_SUCCESS": "Праграма каналаў (EPG) была паспяхова загружана.",
|
||||
"PROGRAM_DIALOG": {
|
||||
"PROGRAM_DETAILS": "Падрабязнасці перадачы",
|
||||
"TITLE": "Назва",
|
||||
"CATEGORY": "Катэгорыя",
|
||||
"PARENTAL_RATING_SYSTEM": "Возраснае абмежаванне",
|
||||
"DESCRIPTION": "Апісанне",
|
||||
"LANGUAGE": "Мова",
|
||||
"SHOW_PROGRAM_DETAILS": "Паказаць падрабязнасці"
|
||||
}
|
||||
},
|
||||
"NO": "Не",
|
||||
"YES": "Так",
|
||||
"MENU": {
|
||||
"OPEN": "Адкрыць меню",
|
||||
"SUPPORT_ARIA": "Падтрымаць IPTVnator на GitHub",
|
||||
"SETTINGS": "Налады",
|
||||
"SETTINGS_ARIA": "Адкрыць налады",
|
||||
"BUG_REPORT": "Паведаміць аб памылцы",
|
||||
"WHAT_IS_NEW": "Што новага?",
|
||||
"ABOUT": "Аб праграме",
|
||||
"ABOUT_ARIA": "Аб праграме",
|
||||
"SUPPORT_PROJECT": "Падтрымаць праект"
|
||||
},
|
||||
"ABOUT": {
|
||||
"TITLE": "Аб праграме",
|
||||
"DESCRIPTION": "Кросплатформавая праграма для прайгравання IPTV з мноствам функцый, такіх як падтрымка плэйлістоў m3u і m3u8, фаварыты, ТБ-гід, ТБ-архіў/даганянне і іншае.",
|
||||
"VERSION": "Версія",
|
||||
"GITHUB_TOOLTIP": "Рэпазітар праграмы на GitHub",
|
||||
"BUY_ME_A_COFFEE_TOOLTIP": "Падтрымаць распрацоўшчыка",
|
||||
"TWITTER_TOOLTIP": "Падзяліцца ў Twitter"
|
||||
},
|
||||
"UPDATE_AVAILABLE": "Даступна абнаўленне",
|
||||
"REFRESH": "Абнавіць",
|
||||
"XTREAM": {
|
||||
"RATING": "Рэйтынг",
|
||||
"RELEASE_DATE": "Дата выпуску",
|
||||
"ACTORS": "Акцёры",
|
||||
"PLAY": "Прайграць",
|
||||
"GENRE": "Жанр",
|
||||
"DURATION": "Працягласць",
|
||||
"COUNTRY": "Краіна",
|
||||
"NAME": "Назва",
|
||||
"DIRECTOR": "Рэжысёр",
|
||||
"CAST": "Акцёрскі склад",
|
||||
"EPISODE_RUN_TIME": "Працягласць эпізоду",
|
||||
"AGE": "Узрост",
|
||||
"EPISODE": "Эпізод",
|
||||
"YEAR": "Год",
|
||||
"YOUTUBE_TRAILER": "Трэйлер на YouTube",
|
||||
"DESCRIPTION": "Апісанне",
|
||||
"KINOPOISK_RATING": "Рэйтынг на Кінапоіск",
|
||||
"IMDB_RATING": "Рэйтынг на IMDB"
|
||||
},
|
||||
"PORTALS": {
|
||||
"ALL_CATEGORIES": "Усе катэгорыі",
|
||||
"ADD_TO_FAVORITES": "Дадаць у выбранае",
|
||||
"REMOVE_FROM_FAVORITES": "Выдаліць з выбранага",
|
||||
"MY_FAVORITES": "Выбранае",
|
||||
"COPY_STREAM_URL": "Капіраваць URL-адрас патоку",
|
||||
"ERROR_VIEW": {
|
||||
"DELETE": "Выдаліць",
|
||||
"ACCOUNT_EXPIRED": {
|
||||
"TITLE": "Тэрмін дзеяння ўліковага запісу скончыўся",
|
||||
"DESCRIPTION": "Тэрмін дзеяння гэтага ўліковага запісу скончыўся. \nКалі ласка, праверце ўліковыя дадзеныя ў наладах плэйліста або выдаліце яго."
|
||||
},
|
||||
"HOME": "На галоўную",
|
||||
"EMPTY_CATEGORY": {
|
||||
"TITLE": "Пустая катэгорыя",
|
||||
"DESCRIPTION": "У гэтай катэгорыі няма кантэнту. Выберыце іншую катэгорыю або зменіце тып кантэнту."
|
||||
},
|
||||
"UNAUTHORIZED": {
|
||||
"TITLE": "Несанкцыянаваны",
|
||||
"DESCRIPTION": "Калі ласка, праверце ўліковыя дадзеныя ў наладах плэйліста або выдаліце іх."
|
||||
},
|
||||
"NOT_FOUND": {
|
||||
"TITLE": "Партал не знойдзены"
|
||||
},
|
||||
"UNKNOWN_ERROR": {
|
||||
"TITLE": "Нешта пайшло не так",
|
||||
"DESCRIPTION": "Невядомая памылка. Паўтарыце спробу пазней."
|
||||
},
|
||||
"PLAYLIST_SETTINGS": "Налады плэйліста"
|
||||
},
|
||||
"STREAM_URL_COPIED": "URL-адрас патоку быў скапіяваны ў буфер абмену.",
|
||||
"EMPTY_LIST_VIEW": {
|
||||
"NO_SEARCH_RESULTS": "Нічога не знойдзена, паспрабуйце змяніць пошукавы запыт"
|
||||
},
|
||||
"REMOVED_FROM_FAVORITES": "Выдалена з выбранага",
|
||||
"ADDED_TO_FAVORITES": "Дададзена ў выбранае"
|
||||
},
|
||||
"INFORMATION": "Інфармацыя"
|
||||
}
|
||||
@@ -140,7 +140,10 @@
|
||||
"FRENCH": "Français",
|
||||
"ITALIAN": "Italiano",
|
||||
"TURKISH": "Türkçe",
|
||||
"JAPANESE": "日本語"
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "Nederlands",
|
||||
"BELARUSIAN": "Беларуская",
|
||||
"POLISH": "Polski"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"BACK_TO_HOME": "Zurück",
|
||||
|
||||
@@ -222,7 +222,10 @@
|
||||
"FRENCH": "Français",
|
||||
"ITALIAN": "Italiano",
|
||||
"TURKISH": "Türkçe",
|
||||
"JAPANESE": "日本語"
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "Nederlands",
|
||||
"BELARUSIAN": "Беларуская",
|
||||
"POLISH": "Polski"
|
||||
},
|
||||
"YES": "Yes",
|
||||
"NO": "No",
|
||||
|
||||
@@ -183,7 +183,10 @@
|
||||
"FRENCH": "Français",
|
||||
"ITALIAN": "Italiano",
|
||||
"TURKISH": "Türkçe",
|
||||
"JAPANESE": "日本語"
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "Nederlands",
|
||||
"BELARUSIAN": "Беларуская",
|
||||
"POLISH": "Polski"
|
||||
},
|
||||
"YES": "Sí",
|
||||
"NO": "No",
|
||||
|
||||
@@ -182,7 +182,10 @@
|
||||
"TRADITIONAL_CHINESE": "繁體中文",
|
||||
"ITALIAN": "Italiano",
|
||||
"TURKISH": "Türkçe",
|
||||
"JAPANESE": "日本語"
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "Nederlands",
|
||||
"BELARUSIAN": "Беларуская",
|
||||
"POLISH": "Polski"
|
||||
},
|
||||
"YES": "Oui",
|
||||
"NO": "Non",
|
||||
|
||||
@@ -218,7 +218,10 @@
|
||||
"FRENCH": "Français",
|
||||
"ITALIAN": "Italiano",
|
||||
"TURKISH": "Türkçe",
|
||||
"JAPANESE": "日本語"
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "Nederlands",
|
||||
"BELARUSIAN": "Беларуская",
|
||||
"POLISH": "Polski"
|
||||
},
|
||||
"YES": "Sì",
|
||||
"NO": "No",
|
||||
|
||||
@@ -208,7 +208,10 @@
|
||||
"FRENCH": "フランス語",
|
||||
"ITALIAN": "イタリア語",
|
||||
"TURKISH": "トルコ語",
|
||||
"JAPANESE": "日本語"
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "オランダ語",
|
||||
"BELARUSIAN": "ベラルーシ語",
|
||||
"POLISH": "ポーランド語"
|
||||
},
|
||||
"YES": "はい",
|
||||
"NO": "いいえ",
|
||||
|
||||
@@ -172,7 +172,10 @@
|
||||
"FRENCH": "Français",
|
||||
"ITALIAN": "Italiano",
|
||||
"TURKISH": "Türkçe",
|
||||
"JAPANESE": "日本語"
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "Nederlands",
|
||||
"BELARUSIAN": "Беларуская",
|
||||
"POLISH": "Polski"
|
||||
},
|
||||
"YES": "Yes",
|
||||
"NO": "No",
|
||||
|
||||
@@ -220,7 +220,9 @@
|
||||
"ITALIAN": "Italiano",
|
||||
"TURKISH": "Türkçe",
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "Nederlands"
|
||||
"DUTCH": "Nederlands",
|
||||
"BELARUSIAN": "Беларуская",
|
||||
"POLISH": "Polski"
|
||||
},
|
||||
"YES": "Ja",
|
||||
"NO": "Nee",
|
||||
|
||||
@@ -0,0 +1,317 @@
|
||||
{
|
||||
"CLOSE": "Zamknij",
|
||||
"PLAYLISTS": "Listy odtwarzania",
|
||||
"HOME": {
|
||||
"TITLE": "IPTVnator",
|
||||
"SUBTITLE": "Wybierz listę odtwarzania z listy lub dodaj nową listę odtwarzania",
|
||||
"TABS": {
|
||||
"RECENTLY_ADDED": "Ostatnio dodane listy odtwarzania",
|
||||
"FILE_UPLOAD": "Dodaj przez przesłanie pliku",
|
||||
"URL_UPLOAD": "Dodaj przez URL",
|
||||
"TEXT_IMPORT": "Importuj z tekstu",
|
||||
"XTREME_IMPORT": "Dodaj kod Xtreme",
|
||||
"STALKER_PORTAL_IMPORT": "Dodaj portal Stalker"
|
||||
},
|
||||
"PLAYLISTS": {
|
||||
"NO_PLAYLISTS": "Nie dodano żadnych list odtwarzania",
|
||||
"ADD_FIRST": "Dodaj swoją pierwszą listę odtwarzania",
|
||||
"ADDED_VIA_URL": "Dodano przez przesłanie URL. URL:",
|
||||
"ADDED_VIA_FILE": "Dodano przez przesłanie pliku",
|
||||
"XTREAM_PLAYLIST": "Lista odtwarzania Xtream",
|
||||
"STALKER_PORTAL": "Portal Stalker",
|
||||
"CHANNELS": "Kanały",
|
||||
"ADDED": "Dodano",
|
||||
"SHOW_DETAILS": "Pokaż szczegóły listy odtwarzania",
|
||||
"REMOVE": "Usuń listę odtwarzania",
|
||||
"SEARCH_PLAYLISTS": "Szukaj list odtwarzania według tytułu",
|
||||
"INFO_DIALOG": {
|
||||
"PLAYLIST_DETAILS": "Szczegóły listy odtwarzania",
|
||||
"TITLE": "Tytuł",
|
||||
"FROM_URL": "Dodano z URL",
|
||||
"IMPORT_DATE": "Data importu",
|
||||
"CHANNELS": "Liczba kanałów",
|
||||
"CLOSE": "Zamknij",
|
||||
"SAVE": "Zapisz",
|
||||
"USER_AGENT": "Agent użytkownika",
|
||||
"ORIGINAL_FILENAME": "Oryginalna nazwa pliku",
|
||||
"FILE_PATH": "Ścieżka pliku",
|
||||
"UPDATE_FAILED": "Ostatnia aktualizacja listy odtwarzania nie powiodła się",
|
||||
"AUTO_UPDATE": "Automatyczna aktualizacja",
|
||||
"AUTO_UPDATE_DESCRIPTION": "Jeśli funkcja automatycznego odświeżania jest aktywna, lista odtwarzania będzie automatycznie aktualizowana przy każdym uruchomieniu aplikacji.",
|
||||
"CUSTOM_USER_AGENT": "Niektórzy dostawcy IPTV wymagają określonego agenta użytkownika, aby odtworzyć ich listę odtwarzania.",
|
||||
"EXPORT_PLAYLIST": "Eksportuj listę odtwarzania jako m3u",
|
||||
"SERVER_URL": "URL serwera",
|
||||
"USERNAME": "Nazwa użytkownika",
|
||||
"PASSWORD": "Hasło",
|
||||
"MAC_ADDRESS": "Adres Mac",
|
||||
"PLAYLIST_EXPORT_SUCCESS": "Lista odtwarzania została pomyślnie wyeksportowana.",
|
||||
"PLAYLIST_EXPORT_ERROR": "Błąd: Eksport listy odtwarzania nie powiódł się."
|
||||
},
|
||||
"REMOVE_DIALOG": {
|
||||
"TITLE": "Usuń listę odtwarzania",
|
||||
"MESSAGE": "Czy na pewno chcesz całkowicie usunąć tę listę odtwarzania?",
|
||||
"SUCCESS": "Lista odtwarzania została pomyślnie usunięta"
|
||||
},
|
||||
"UPDATED": "Zaktualizowano",
|
||||
"REFRESH": "Odśwież listę odtwarzania",
|
||||
"GLOBAL_FAVORITES": "Globalne ulubione",
|
||||
"GLOBAL_FAVORITES_DESCRIPTION": "Automatycznie wygenerowana lista odtwarzania z zagregowanymi ulubionymi ze wszystkich list odtwarzania",
|
||||
"MY_PLAYLISTS": "Moje listy odtwarzania",
|
||||
"MY_PLAYLISTS_SUBTITLE": "wszystkie dostępne listy odtwarzania",
|
||||
"PLAYLIST_UPDATE_SUCCESS": "Sukces! Lista odtwarzania została pomyślnie zaktualizowana.",
|
||||
"PLAYLIST_UPDATE_ERROR": "Błąd aktualizacji szczegółów listy odtwarzania."
|
||||
},
|
||||
"FILE_UPLOAD": {
|
||||
"DRAG_DROP": "Przeciągnij i upuść pliki tutaj",
|
||||
"OR": "lub",
|
||||
"CHOOSE_PLAYLIST": "wybierz listę odtwarzania",
|
||||
"REJECTED": "Plik został odrzucony, nieobsługiwany format pliku {{filename}}."
|
||||
},
|
||||
"URL_UPLOAD": {
|
||||
"PLAYLIST_URL": "URL listy odtwarzania (m3u, m3u8)",
|
||||
"ADD_PLAYLIST": "Dodaj listę odtwarzania",
|
||||
"CORS_NOTE": "Uwaga: Aby uniknąć problemów z CORS, aplikacja używa publicznej usługi proxy CORS. Jeśli chcesz przesłać listę odtwarzania z wrażliwymi danymi, bezpieczniej jest zaimportować ją z pliku."
|
||||
},
|
||||
"TEXT_IMPORT": {
|
||||
"LABEL": "Wklej listę odtwarzania m3u(8) jako tekst",
|
||||
"BUTTON_LABEL": "Importuj"
|
||||
},
|
||||
"XTREAM_PLAYLIST": {
|
||||
"TITLE": "Tytuł listy odtwarzania",
|
||||
"SERVER_URL": "URL serwera",
|
||||
"USERNAME": "Nazwa użytkownika",
|
||||
"PASSWORD": "Hasło",
|
||||
"ADD": "Dodaj",
|
||||
"TEST_CREDENTIALS": "Testuj dane uwierzytelniające",
|
||||
"URL_VALIDATION_ERROR": "Powinien to być poprawny URL z protokołem (np. http://example.com lub https://example.com:4324)"
|
||||
},
|
||||
"STALKER_PORTAL": {
|
||||
"TITLE": "Tytuł",
|
||||
"MAC_ADDRESS": "Adres Mac",
|
||||
"SERVER_URL": "URL serwera",
|
||||
"URL_VALIDATION_ERROR": "Powinien to być poprawny URL z protokołem (np. http://example.com/c lub https://example.com/stalker_portal/c)",
|
||||
"ADD": "Dodaj"
|
||||
},
|
||||
"FILTER_BY_NAME": "Filtruj według nazwy",
|
||||
"FILTER_BY_TYPE": "Filtruj według typu",
|
||||
"SORT_PLAYLISTS": "Sortuj listy odtwarzania",
|
||||
"SORT_BY": "Sortuj według",
|
||||
"SORT_OPTIONS": {
|
||||
"NAME_ASC": "Nazwa (A-Z)",
|
||||
"NAME_DESC": "Nazwa (Z-A)",
|
||||
"NEWEST": "Data dodania (najnowsze pierwsze)",
|
||||
"OLDEST": "Data dodania (najstarsze pierwsze)"
|
||||
},
|
||||
"IMPORTED_AS_TEXT": "Zaimportowano jako tekst",
|
||||
"PARSING_ERROR": "Błąd: Analiza nie powiodła się, nieprawidłowa lista odtwarzania:"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Ustawienia / IPTVnator",
|
||||
"SUBTITLE": "Zmień konfigurację aplikacji",
|
||||
"DESCRIPTION": "Dostosuj opcje z poniższej listy i potwierdź przyciskiem „Zapisz zmiany”",
|
||||
"EPG_URL_LABEL": "URL EPG (*.xml lub *.xml.gz)",
|
||||
"EPG_URL_PLACEHOLDER": "Wprowadź URL",
|
||||
"REFRESH_EPG": "Odśwież EPG",
|
||||
"VIDEO_PLAYER_LABEL": "Odtwarzacz wideo",
|
||||
"VIDEO_PLAYER_PLACEHOLDER": "Wybierz opcję",
|
||||
"VERSION": "Wersja",
|
||||
"SAVE_CHANGES": "Zapisz zmiany",
|
||||
"BACK_TO_HOME": "Wróć",
|
||||
"NEW_VERSION_AVAILABLE": "Dostępna jest nowa wersja",
|
||||
"LATEST_VERSION": "Używasz najnowszej wersji",
|
||||
"LANGUAGE": "Język",
|
||||
"SETTINGS_SAVED": "Sukces! Konfiguracja została zapisana.",
|
||||
"THEME": "Motyw wizualny",
|
||||
"SHOW_CAPTIONS": "Pokaż napisy",
|
||||
"ADD_EPG_SOURCE": "Dodaj źródło EPG",
|
||||
"EPG_URL_ERROR": "Wartość nie jest prawidłowym URL",
|
||||
"VIDEO_PLAYER_DESCRIPTION": "Wybierz domyślny odtwarzacz wideo",
|
||||
"LANGUAGE_DESCRIPTION": "Wybierz język aplikacji",
|
||||
"THEME_DESCRIPTION": "Wybierz motyw wizualny aplikacji",
|
||||
"SHOW_CAPTIONS_DESCRIPTION": "Domyślnie pokaż lub ukryj napisy",
|
||||
"VERSION_DESCRIPTION": "Aktualna wersja aplikacji",
|
||||
"EPG_NOTE": "Obecnie EPG jest dostępne tylko w wersji IPTVnator opartej na Electron.",
|
||||
"EPG_NOTE_URL_TEXT": "Sprawdź tutaj",
|
||||
"IMPORT_EXPORT_DATA": "Import/eksport list odtwarzania",
|
||||
"IMPORT_EXPORT_DATA_DESCRIPTION": "Eksportuj lub importuj listy odtwarzania w formacie JSON używanym w aplikacji.",
|
||||
"IMPORT_DATA": "Importuj",
|
||||
"EXPORT_DATA": "Eksportuj",
|
||||
"REMOVE_ALL": "Usuń listy odtwarzania",
|
||||
"REMOVE_ALL_BUTTON": "Usuń",
|
||||
"REMOVE_ALL_DESCRIPTION": "Spowoduje to usunięcie wszystkich istniejących list odtwarzania z aplikacji.",
|
||||
"REMOVE_DIALOG": {
|
||||
"TITLE": "Usuń wszystkie listy odtwarzania",
|
||||
"MESSAGE": "Czy na pewno chcesz usunąć wszystkie listy odtwarzania z aplikacji?"
|
||||
},
|
||||
"IMPORT_ERROR": "Błąd importu, spróbuj z innym plikiem.",
|
||||
"PLAYLISTS_REMOVED": "Wszystkie listy odtwarzania zostały usunięte.",
|
||||
"MPV_PLAYER_PATH_LABEL": "Ścieżka mpv",
|
||||
"MPV_PLAYER_PATH_DESCRIPTION": "Ustaw ścieżkę do odtwarzacza mpv w systemie. Będzie używać podanej ścieżki do pliku binarnego mpv zamiast tego znalezionego w $PATH.",
|
||||
"MPV_PLAYER_PATH": "Ścieżka odtwarzacza mpv",
|
||||
"VLC_PLAYER_PATH_LABEL": "Ścieżka VLC",
|
||||
"VLC_PLAYER_PATH_DESCRIPTION": "Ustaw ścieżkę do odtwarzacza VLC w systemie. Będzie używać podanej ścieżki do pliku binarnego VLC zamiast domyślnej ścieżki dla naszego systemu.",
|
||||
"VLC_PLAYER_PATH": "Ścieżka odtwarzacza VLC",
|
||||
"REMOTE_CONTROL": "Zdalne sterowanie",
|
||||
"REMOTE_CONTROL_DESCRIPTION": "Włącz zdalne sterowanie aplikacją.",
|
||||
"REMOTE_CONTROL_PORT": "Port zdalnego sterowania",
|
||||
"REMOTE_CONTROL_PORT_DESCRIPTION": "Port używany do zdalnego sterowania aplikacją. Domyślnie używany jest port 3000."
|
||||
},
|
||||
"THEMES": {
|
||||
"DARK_THEME": "Ciemny motyw",
|
||||
"LIGHT_THEME": "Jasny motyw"
|
||||
},
|
||||
"CHANNELS": {
|
||||
"SEARCH_CHANNEL": "Szukaj kanału",
|
||||
"UPLOAD_OR_SELECT_OTHER_PLAYLIST": "Prześlij lub wybierz inną listę odtwarzania",
|
||||
"ALL_CHANNELS": "Wszystkie kanały",
|
||||
"GROUPS": "Grupy",
|
||||
"UNGROUPED": "Niegrupowane",
|
||||
"UNNAMED_CHANNEL": "Nienazwany kanał",
|
||||
"FAVORITES": "Ulubione",
|
||||
"NO_FAVORITES": "Brak ulubionych",
|
||||
"USE_STAR_TO_FAVORITE": "Użyj ikony „gwiazdki”, aby dodać kanały do ulubionych.",
|
||||
"REMOVE_FAVORITE": "Usuń z ulubionych",
|
||||
"FAVORITES_UPDATED": "Ulubione zostały zaktualizowane!",
|
||||
"SORT_BY": "Sortuj według",
|
||||
"SORT_BY_DATE": "Sortuj według daty dodania (najnowsze pierwsze)",
|
||||
"SORT_BY_RATING": "Sortuj według oceny",
|
||||
"SORT_BY_NAME": "Sortuj według nazwy (A-Z)"
|
||||
},
|
||||
"TOP_MENU": {
|
||||
"OPEN_CHANNELS_LIST": "Otwórz listę kanałów",
|
||||
"TOGGLE_FAVORITE_FLAG": "Przełącz flagę ulubionych",
|
||||
"OPEN_EPG_LIST": "Otwórz listę EPG",
|
||||
"OPEN_MULTI_EPG": "Otwórz widok Multi-EPG"
|
||||
},
|
||||
"EPG": {
|
||||
"TITLE": "Elektroniczny przewodnik po programach",
|
||||
"NEXT_DAY": "Następny dzień",
|
||||
"PREVIOUS_DAY": "Poprzedni dzień",
|
||||
"LIVE_NOW": "Na żywo teraz",
|
||||
"LIVE_STREAM": "Transmisja na żywo",
|
||||
"TIMESHIFT_AVAILABLE": "Dostępne jest przesunięcie czasowe, kliknij, aby odtworzyć",
|
||||
"EPG_NOT_AVAILABLE_DATE": "Ups, EPG nie jest dostępne dla wybranej daty",
|
||||
"EPG_NOT_AVAILABLE_CHANNEL_TITLE": "Ups, EPG nie jest dostępne dla tego kanału.",
|
||||
"EPG_NOT_AVAILABLE_CHANNEL_DESCRIPTION": "Dodaj/zmień URL listy EPG w ustawieniach aplikacji.",
|
||||
"FETCH_EPG": "Pobieranie danych EPG...",
|
||||
"ERROR": "Ups, nie można załadować EPG.",
|
||||
"DOWNLOAD_SUCCESS": "EPG zostało pomyślnie pobrane.",
|
||||
"PROGRAM_DIALOG": {
|
||||
"PROGRAM_DETAILS": "Szczegóły programu telewizyjnego",
|
||||
"TITLE": "Tytuł",
|
||||
"CATEGORY": "Kategoria",
|
||||
"PARENTAL_RATING_SYSTEM": "System oceny treści telewizyjnych",
|
||||
"DESCRIPTION": "Opis",
|
||||
"LANGUAGE": "Język",
|
||||
"SHOW_PROGRAM_DETAILS": "Pokaż szczegóły programu"
|
||||
},
|
||||
"FETCH_SUCCESS": "EPG zostało pomyślnie pobrane"
|
||||
},
|
||||
"LANGUAGES": {
|
||||
"ARABIC": "العربية",
|
||||
"MOROCCAN_ARABIC": "العربية (اللهجة المغربية)",
|
||||
"ENGLISH": "English",
|
||||
"KOREAN": "한국어",
|
||||
"RUSSIAN": "Русский",
|
||||
"GERMAN": "Deutsch",
|
||||
"SPANISH": "Español",
|
||||
"CHINESE": "简体中文",
|
||||
"TRADITIONAL_CHINESE": "繁體中文",
|
||||
"FRENCH": "Français",
|
||||
"ITALIAN": "Italiano",
|
||||
"TURKISH": "Türkçe",
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "Nederlands",
|
||||
"BELARUSIAN": "Беларуская",
|
||||
"POLISH": "Polski"
|
||||
},
|
||||
"YES": "Tak",
|
||||
"NO": "Nie",
|
||||
"MENU": {
|
||||
"OPEN": "Otwórz menu",
|
||||
"SUPPORT_ARIA": "Wsparcie IPTVnator na GitHubie",
|
||||
"SETTINGS": "Ustawienia",
|
||||
"SETTINGS_ARIA": "Otwórz ustawienia",
|
||||
"BUG_REPORT": "Zgłoś błąd",
|
||||
"WHAT_IS_NEW": "Co nowego",
|
||||
"ABOUT": "O aplikacji",
|
||||
"ABOUT_ARIA": "Informacje o aplikacji",
|
||||
"SUPPORT_PROJECT": "Wesprzyj projekt"
|
||||
},
|
||||
"ABOUT": {
|
||||
"TITLE": "O IPTVnator",
|
||||
"DESCRIPTION": "Wieloplatformowa aplikacja do odtwarzania IPTV z wieloma funkcjami, takimi jak obsługa list odtwarzania m3u i m3u8, ulubione, przewodnik TV, archiwum TV/catchup i inne.",
|
||||
"VERSION": "Wersja",
|
||||
"GITHUB_TOOLTIP": "Repozytorium ITPVnator na GitHubie",
|
||||
"BUY_ME_A_COFFEE_TOOLTIP": "Postaw mi kawę",
|
||||
"TWITTER_TOOLTIP": "Udostępnij na Twitterze"
|
||||
},
|
||||
"UPDATE_AVAILABLE": "Dostępna aktualizacja",
|
||||
"REFRESH": "Odśwież",
|
||||
"XTREAM": {
|
||||
"PLAY": "Odtwórz",
|
||||
"NAME": "Nazwa",
|
||||
"RELEASE_DATE": "Data wydania",
|
||||
"GENRE": "Gatunek",
|
||||
"COUNTRY": "Kraj",
|
||||
"ACTORS": "Aktorzy",
|
||||
"DIRECTOR": "Reżyser",
|
||||
"DURATION": "Czas trwania",
|
||||
"CAST": "Obsada",
|
||||
"EPISODE_RUN_TIME": "Czas trwania odcinka",
|
||||
"RATING": "Ocena",
|
||||
"IMDB_RATING": "Ocena IMDB",
|
||||
"KINOPOISK_RATING": "Ocena Kinopoisk",
|
||||
"DESCRIPTION": "Opis",
|
||||
"YEAR": "Rok",
|
||||
"AGE": "Wiek",
|
||||
"YOUTUBE_TRAILER": "Zwiastun YouTube",
|
||||
"EPISODE": "Odcinek"
|
||||
},
|
||||
"PORTALS": {
|
||||
"ALL_CATEGORIES": "Wszystkie kategorie",
|
||||
"MY_FAVORITES": "Moje ulubione",
|
||||
"ADD_TO_FAVORITES": "Dodaj do ulubionych",
|
||||
"REMOVE_FROM_FAVORITES": "Usuń z ulubionych",
|
||||
"REMOVED_FROM_FAVORITES": "Usunięto z ulubionych",
|
||||
"ADDED_TO_FAVORITES": "Dodano do ulubionych",
|
||||
"ERROR_VIEW": {
|
||||
"ACCOUNT_EXPIRED": {
|
||||
"TITLE": "Konto wygasło",
|
||||
"DESCRIPTION": "To konto wygasło. Sprawdź dane uwierzytelniające w ustawieniach listy odtwarzania lub usuń ją."
|
||||
},
|
||||
"UNAUTHORIZED": {
|
||||
"TITLE": "Nieautoryzowany",
|
||||
"DESCRIPTION": "Sprawdź dane uwierzytelniające w ustawieniach listy odtwarzania lub usuń ją."
|
||||
},
|
||||
"NOT_FOUND": {
|
||||
"TITLE": "Nie znaleziono portalu",
|
||||
"DESCRIPTION": "Sprawdź dane uwierzytelniające i URL portalu w ustawieniach listy odtwarzania lub usuń ją."
|
||||
},
|
||||
"EMPTY_CATEGORY": {
|
||||
"TITLE": "Pusta kategoria",
|
||||
"DESCRIPTION": "Ta kategoria nie zawiera treści, wybierz inną kategorię lub zmień typ treści"
|
||||
},
|
||||
"UNKNOWN_ERROR": {
|
||||
"TITLE": "Coś poszło nie tak",
|
||||
"DESCRIPTION": "Nieznany błąd, spróbuj ponownie później"
|
||||
},
|
||||
"PLAYLIST_SETTINGS": "Ustawienia listy odtwarzania",
|
||||
"HOME": "Strona główna",
|
||||
"DELETE": "Usuń"
|
||||
},
|
||||
"EMPTY_LIST_VIEW": {
|
||||
"NO_SEARCH_RESULTS": "Nic nie znaleziono, spróbuj zmienić zapytanie wyszukiwania"
|
||||
},
|
||||
"STREAM_URL_COPIED": "URL strumienia skopiowany do schowka",
|
||||
"COPY_STREAM_URL": "Kopiuj URL strumienia"
|
||||
},
|
||||
"INFORMATION": "Informacje",
|
||||
"REMOTE_CONTROL": {
|
||||
"TITLE": "Zdalne sterowanie",
|
||||
"UP_CHANNEL": "Kanał w górę",
|
||||
"DOWN_CHANNEL": "Kanał w dół",
|
||||
"HEADER": "Zdalne sterowanie IPTVNator",
|
||||
"FOOTER": "Zdalne sterowanie IPTVNator"
|
||||
}
|
||||
}
|
||||
@@ -196,7 +196,10 @@
|
||||
"FRENCH": "Français",
|
||||
"ITALIAN": "Italiano",
|
||||
"TURKISH": "Türkçe",
|
||||
"JAPANESE": "日本語"
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "Nederlands",
|
||||
"BELARUSIAN": "Беларуская",
|
||||
"POLISH": "Polski"
|
||||
},
|
||||
"NO": "Нет",
|
||||
"YES": "Да",
|
||||
|
||||
@@ -208,7 +208,10 @@
|
||||
"FRENCH": "Français",
|
||||
"ITALIAN": "Italiano",
|
||||
"TURKISH": "Türkçe",
|
||||
"JAPANESE": "日本語"
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "Nederlands",
|
||||
"BELARUSIAN": "Беларуская",
|
||||
"POLISH": "Polski"
|
||||
},
|
||||
"YES": "Evet",
|
||||
"NO": "Hayır",
|
||||
|
||||
@@ -172,7 +172,10 @@
|
||||
"FRENCH": "Français",
|
||||
"ITALIAN": "Italiano",
|
||||
"TURKISH": "Türkçe",
|
||||
"JAPANESE": "日本語"
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "Nederlands",
|
||||
"BELARUSIAN": "Беларуская",
|
||||
"POLISH": "Polski"
|
||||
},
|
||||
"YES": "是",
|
||||
"NO": "否",
|
||||
|
||||
@@ -175,7 +175,10 @@
|
||||
"FRENCH": "Français",
|
||||
"ITALIAN": "Italiano",
|
||||
"TURKISH": "Türkçe",
|
||||
"JAPANESE": "日本語"
|
||||
"JAPANESE": "日本語",
|
||||
"DUTCH": "Nederlands",
|
||||
"BELARUSIAN": "Беларуская",
|
||||
"POLISH": "Polski"
|
||||
},
|
||||
"YES": "是",
|
||||
"NO": "否",
|
||||
|
||||
Reference in new issue
Block a user