feat: enhance settings page with community links and support options

Entire-Checkpoint: c6e522b4276c
This commit is contained in:
4gray committed 2026-04-19 22:32:15 +02:00
1 parent 4c6e65be9b
commit d3231151e7
5 files changed
+556 -7

No files matched your search

@@ -801,7 +801,7 @@
</div>
<div class="settings-group__header-text">
<h3>{{ 'SETTINGS.ABOUT' | translate }}</h3>
<p>{{ 'SETTINGS.VERSION_DESCRIPTION' | translate }}</p>
<p>{{ 'SETTINGS.ABOUT_SUBTITLE' | translate }}</p>
</div>
</header>
@@ -815,6 +815,170 @@
<small>{{ updateMessage }}</small>
</div>
</div>
<div class="setting-item setting-item--full-control">
<div class="setting-item__meta">
<h4>{{ 'SETTINGS.COMMUNITY' | translate }}</h4>
<p>
{{ 'SETTINGS.COMMUNITY_DESCRIPTION' | translate }}
</p>
</div>
<div class="setting-item__control">
<div class="link-cards">
<a
class="link-card link-card--github"
href="https://github.com/4gray/iptvnator"
target="_blank"
rel="noreferrer noopener"
data-test-id="link-github"
>
<span class="link-card__glyph">
<svg
viewBox="0 0 24 24"
aria-hidden="true"
focusable="false"
>
<path
fill="currentColor"
d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.6.112.793-.26.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.52 11.52 0 0 1 12 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.565 21.796 24 17.3 24 12c0-6.627-5.373-12-12-12z"
/>
</svg>
</span>
<span class="link-card__text">
<strong>GitHub</strong>
<span>{{
'SETTINGS.LINK_GITHUB_DESCRIPTION'
| translate
}}</span>
</span>
<mat-icon class="link-card__arrow"
>arrow_outward</mat-icon
>
</a>
<a
class="link-card link-card--blog"
href="https://4gray.github.io/iptvnator/"
target="_blank"
rel="noreferrer noopener"
data-test-id="link-blog"
>
<span class="link-card__glyph">
<mat-icon>menu_book</mat-icon>
</span>
<span class="link-card__text">
<strong>{{
'SETTINGS.LINK_BLOG' | translate
}}</strong>
<span>{{
'SETTINGS.LINK_BLOG_DESCRIPTION'
| translate
}}</span>
</span>
<mat-icon class="link-card__arrow"
>arrow_outward</mat-icon
>
</a>
<a
class="link-card link-card--telegram"
href="https://t.me/iptvnator"
target="_blank"
rel="noreferrer noopener"
data-test-id="link-telegram"
>
<span class="link-card__glyph">
<svg
viewBox="0 0 24 24"
aria-hidden="true"
focusable="false"
>
<path
fill="currentColor"
d="M9.78 18.65l.28-4.23 7.68-6.92c.34-.31-.07-.46-.52-.19L7.74 13.3 3.64 12c-.88-.25-.89-.86.2-1.3l15.97-6.16c.73-.33 1.43.18 1.15 1.3l-2.72 12.81c-.19.91-.74 1.13-1.5.71L12.6 16.3l-1.99 1.93c-.23.23-.42.42-.83.42z"
/>
</svg>
</span>
<span class="link-card__text">
<strong>Telegram</strong>
<span>{{
'SETTINGS.LINK_TELEGRAM_DESCRIPTION'
| translate
}}</span>
</span>
<mat-icon class="link-card__arrow"
>arrow_outward</mat-icon
>
</a>
</div>
</div>
</div>
<div class="setting-item setting-item--full-control">
<div class="support-card" data-test-id="support-card">
<div class="support-card__intro">
<div class="support-card__emblem">
<mat-icon>favorite</mat-icon>
</div>
<div class="support-card__copy">
<h4>
{{ 'SETTINGS.SUPPORT_TITLE' | translate }}
</h4>
<p>
{{
'SETTINGS.SUPPORT_DESCRIPTION'
| translate
}}
</p>
</div>
</div>
<div class="support-card__actions">
<a
class="support-btn support-btn--sponsors"
href="https://github.com/sponsors/4gray"
target="_blank"
rel="noreferrer noopener"
data-test-id="support-sponsors"
>
<span class="support-btn__glyph">
<svg
viewBox="0 0 24 24"
aria-hidden="true"
focusable="false"
>
<path
fill="currentColor"
d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"
/>
</svg>
</span>
<span class="support-btn__text">
<strong>GitHub Sponsors</strong>
<small>{{
'SETTINGS.SUPPORT_SPONSORS_HINT'
| translate
}}</small>
</span>
</a>
<a
class="support-btn support-btn--kofi"
href="https://ko-fi.com/4gray"
target="_blank"
rel="noreferrer noopener"
data-test-id="support-kofi"
>
<span class="support-btn__glyph">
<mat-icon>local_cafe</mat-icon>
</span>
<span class="support-btn__text">
<strong>Ko-fi</strong>
<small>{{
'SETTINGS.SUPPORT_KOFI_HINT'
| translate
}}</small>
</span>
</a>
</div>
</div>
</div>
</section>
<footer class="action-bar" data-test-id="settings-action-bar">
@@ -510,6 +510,329 @@
}
}
.link-cards {
width: 100%;
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
box-sizing: border-box;
}
.link-card {
box-sizing: border-box;
display: grid;
grid-template-columns: 40px minmax(0, 1fr) 20px;
align-items: center;
gap: 12px;
padding: 12px 14px;
border: 1px solid color-mix(
in srgb,
var(--mat-sys-outline-variant) 70%,
transparent
);
border-radius: 16px;
background: color-mix(
in srgb,
var(--mat-sys-surface-container-low) 88%,
transparent
);
color: var(--mat-sys-on-surface);
text-decoration: none;
transition:
border-color 0.18s ease,
background 0.18s ease,
transform 0.18s ease,
box-shadow 0.18s ease;
&:hover {
transform: translateY(-1px);
border-color: color-mix(
in srgb,
var(--app-selection-border) 54%,
var(--mat-sys-outline-variant)
);
background: color-mix(
in srgb,
var(--mat-sys-surface-container-high) 92%,
transparent
);
box-shadow: 0 10px 20px -22px rgba(15, 23, 42, 0.5);
.link-card__arrow {
opacity: 1;
transform: translate(2px, -2px);
}
}
&:focus-visible {
outline: none;
box-shadow:
0 0 0 2px var(--mat-sys-surface),
0 0 0 4px
color-mix(in srgb, var(--app-selection-color) 40%, transparent);
}
}
.link-card__glyph {
display: inline-flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
border-radius: 12px;
background: color-mix(
in srgb,
var(--mat-sys-surface-container-high) 82%,
transparent
);
color: var(--mat-sys-on-surface-variant);
svg {
width: 20px;
height: 20px;
}
mat-icon {
font-size: 20px;
width: 20px;
height: 20px;
}
}
.link-card--github .link-card__glyph {
background: color-mix(
in srgb,
var(--mat-sys-on-surface) 10%,
transparent
);
color: var(--mat-sys-on-surface);
}
.link-card--blog .link-card__glyph {
background: color-mix(in srgb, #ff7849 18%, transparent);
color: #ff8a5b;
}
.link-card--telegram .link-card__glyph {
background: color-mix(in srgb, #229ed9 22%, transparent);
color: #38b0e3;
}
.link-card__text {
min-width: 0;
display: flex;
flex-direction: column;
gap: 2px;
strong {
font-size: 0.92rem;
font-weight: 650;
letter-spacing: -0.01em;
}
span {
color: var(--settings-muted);
font-size: 0.78rem;
line-height: 1.35;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
}
.link-card__arrow {
font-size: 18px;
width: 18px;
height: 18px;
color: var(--settings-muted);
opacity: 0.6;
transition:
opacity 0.18s ease,
transform 0.18s ease;
}
.support-card {
width: 100%;
box-sizing: border-box;
position: relative;
display: flex;
flex-direction: column;
gap: 14px;
padding: 18px;
border-radius: 18px;
border: 1px solid color-mix(in srgb, #ff4d6d 26%, transparent);
background:
radial-gradient(
120% 140% at 0% 0%,
color-mix(in srgb, #ff4d6d 16%, transparent) 0%,
transparent 55%
),
radial-gradient(
120% 140% at 100% 100%,
color-mix(in srgb, #ffb347 14%, transparent) 0%,
transparent 60%
),
color-mix(
in srgb,
var(--mat-sys-surface-container-low) 92%,
transparent
);
overflow: hidden;
&::after {
content: '';
position: absolute;
inset: 0;
pointer-events: none;
background: radial-gradient(
80% 100% at 50% -10%,
color-mix(in srgb, #ff4d6d 12%, transparent) 0%,
transparent 70%
);
opacity: 0.8;
}
}
.support-card__intro {
position: relative;
display: flex;
align-items: flex-start;
gap: 14px;
z-index: 1;
}
.support-card__emblem {
flex: 0 0 auto;
display: inline-flex;
align-items: center;
justify-content: center;
width: 44px;
height: 44px;
border-radius: 14px;
background: linear-gradient(135deg, #ff4d6d, #ff8b5e);
color: #fff;
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.35),
0 10px 18px -10px rgba(255, 77, 109, 0.55);
mat-icon {
font-size: 22px;
width: 22px;
height: 22px;
}
}
.support-card__copy {
min-width: 0;
flex: 1 1 auto;
h4 {
margin: 0;
font-size: 1rem;
font-weight: 700;
letter-spacing: -0.01em;
}
p {
margin: 4px 0 0;
color: var(--settings-muted);
font-size: 0.86rem;
line-height: 1.5;
max-width: 64ch;
}
}
.support-card__actions {
position: relative;
z-index: 1;
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.support-btn {
flex: 1 1 220px;
display: inline-flex;
align-items: center;
gap: 12px;
padding: 10px 14px;
border-radius: 14px;
border: 1px solid transparent;
text-decoration: none;
color: #fff;
transition:
transform 0.18s ease,
box-shadow 0.18s ease,
filter 0.18s ease;
&:hover {
transform: translateY(-1px);
filter: brightness(1.04);
}
&:focus-visible {
outline: none;
box-shadow:
0 0 0 2px var(--mat-sys-surface),
0 0 0 4px
color-mix(in srgb, var(--app-selection-color) 40%, transparent);
}
}
.support-btn__glyph {
display: inline-flex;
align-items: center;
justify-content: center;
width: 34px;
height: 34px;
border-radius: 10px;
background: rgba(255, 255, 255, 0.18);
color: #fff;
flex: 0 0 auto;
svg {
width: 18px;
height: 18px;
}
mat-icon {
font-size: 18px;
width: 18px;
height: 18px;
}
}
.support-btn__text {
min-width: 0;
display: flex;
flex-direction: column;
gap: 2px;
strong {
font-size: 0.92rem;
font-weight: 700;
letter-spacing: -0.01em;
}
small {
color: rgba(255, 255, 255, 0.82);
font-size: 0.75rem;
line-height: 1.3;
}
}
.support-btn--sponsors {
background: linear-gradient(135deg, #d4337a, #ff4d6d);
box-shadow: 0 12px 22px -18px rgba(212, 51, 122, 0.7);
}
.support-btn--kofi {
background: linear-gradient(135deg, #13c3ff, #29abe0);
box-shadow: 0 12px 22px -18px rgba(19, 195, 255, 0.7);
}
.settings-note {
margin: 12px 18px 18px;
padding: 10px 12px;
@@ -610,6 +933,14 @@
align-items: flex-start;
}
.link-cards {
grid-template-columns: 1fr;
}
.support-btn {
flex: 1 1 100%;
}
.url-row {
justify-content: flex-start;
flex-wrap: wrap;
+20 -2
View File
@@ -274,6 +274,17 @@
"LANGUAGE_DESCRIPTION": "Wählen Sie die Sprache der Anwendung aus",
"PLAYLISTS_REMOVED": "Alle Playlists wurden entfernt.",
"VERSION_DESCRIPTION": "Aktuelle Version der Anwendung",
"ABOUT_SUBTITLE": "Version, Projekt-Links und Möglichkeiten, IPTVnator zu unterstützen.",
"COMMUNITY": "Projekt & Community",
"COMMUNITY_DESCRIPTION": "Gib dem Repository einen Stern, lies den Blog oder tritt der Telegram-Gruppe für Updates und Hilfe bei.",
"LINK_BLOG": "Blog",
"LINK_GITHUB_DESCRIPTION": "Stern vergeben, Issues melden oder beitragen",
"LINK_BLOG_DESCRIPTION": "Release Notes, Tipps und Projekt-Updates",
"LINK_TELEGRAM_DESCRIPTION": "Ankündigungen, Community und Support",
"SUPPORT_TITLE": "Projekt unterstützen",
"SUPPORT_DESCRIPTION": "IPTVnator ist kostenlose Open-Source-Software, die im Offenen entwickelt wird. Wenn sie Teil deines Alltags ist, hilft ein kleiner Beitrag, das Projekt am Leben zu halten und die nächsten Schritte zu gestalten — danke!",
"SUPPORT_SPONSORS_HINT": "Wiederkehrend oder einmalig",
"SUPPORT_KOFI_HINT": "Spendiere einen Kaffee",
"REMOVE_ALL_DESCRIPTION": "Dadurch werden alle vorhandenen Wiedergabelisten aus der Anwendung entfernt.",
"MPV_PLAYER_PATH": "MPV-Player-Pfad",
"SHOW_CAPTIONS_DESCRIPTION": "Untertitel standardmäßig ein- oder ausblenden",
@@ -532,6 +543,7 @@
},
"WORKSPACE": {
"FAVORITES_ONLY": "Nur Favoriten",
"SORT_CUSTOM": "Eigene Reihenfolge",
"SORT_DATE_DESC": "Datum (Neueste zuerst)",
"SORT_DATE_ASC": "Datum (Älteste zuerst)",
"SORT_NAME_ASC": "Name A-Z",
@@ -670,8 +682,14 @@
"CLEAR_COMPLETED_DOWNLOADS_THIS_PLAYLIST_ARIA": "Abgeschlossene Downloads für diese Playlist löschen",
"CLEAR_RECENTLY_VIEWED_SECTION": "Zuletzt angesehen löschen",
"CLEAR_RECENTLY_VIEWED_SECTION_ARIA": "Zuletzt angesehen für diesen Abschnitt löschen",
"CLEAR_RECENTLY_VIEWED_DIALOG_TITLE": "Zuletzt angesehen löschen?",
"CLEAR_RECENTLY_VIEWED_DIALOG_MESSAGE": "Alle zuletzt angesehenen Einträge in diesem Abschnitt werden entfernt. Diese Aktion kann nicht rückgängig gemacht werden.",
"CLEAR_RECENTLY_VIEWED_TYPE": "Zuletzt angesehen ({{type}}) löschen",
"CLEAR_RECENTLY_VIEWED_DIALOG_TITLE": "Zuletzt angesehen ({{type}}) löschen?",
"CLEAR_RECENTLY_VIEWED_DIALOG_MESSAGE_PLAYLIST": "Alle {{type}}-Einträge aus dieser Playlist werden aus dem Verlauf entfernt. Diese Aktion kann nicht rückgängig gemacht werden.",
"CLEAR_RECENTLY_VIEWED_DIALOG_MESSAGE_ALL": "Alle {{type}}-Einträge aus allen Playlists werden aus dem Verlauf entfernt. Diese Aktion kann nicht rückgängig gemacht werden.",
"CLEAR_FAVORITES_TYPE": "Favoriten ({{type}}) löschen",
"CLEAR_FAVORITES_DIALOG_TITLE": "Alle {{type}}-Favoriten entfernen?",
"CLEAR_FAVORITES_DIALOG_MESSAGE_PLAYLIST": "Alle {{type}}-Favoriten aus dieser Playlist werden entfernt. Diese Aktion kann nicht rückgängig gemacht werden.",
"CLEAR_FAVORITES_DIALOG_MESSAGE_ALL": "Alle {{type}}-Favoriten aus allen Playlists werden entfernt. Diese Aktion kann nicht rückgängig gemacht werden.",
"XTREAM_CODE": "Xtream Code",
"STALKER_PORTAL": "Stalker-Portal",
"CHANNELS_COUNT": "{{count}} Sender",
+20 -2
View File
@@ -226,6 +226,17 @@
"SHOW_EXTERNAL_PLAYBACK_BAR": "Show now playing footer",
"SHOW_EXTERNAL_PLAYBACK_BAR_DESCRIPTION": "Keep the external-player status bar visible at the bottom of the workspace on desktop.",
"VERSION_DESCRIPTION": "Current version of the application",
"ABOUT_SUBTITLE": "Version, project links and ways to support IPTVnator.",
"COMMUNITY": "Project & community",
"COMMUNITY_DESCRIPTION": "Star the repository, read the blog or join the Telegram group for updates and help.",
"LINK_BLOG": "Blog",
"LINK_GITHUB_DESCRIPTION": "Star the repo, open an issue or contribute",
"LINK_BLOG_DESCRIPTION": "Release notes, tips and project updates",
"LINK_TELEGRAM_DESCRIPTION": "Announcements, community and support",
"SUPPORT_TITLE": "Support the project",
"SUPPORT_DESCRIPTION": "IPTVnator is free and open source, built in the open. If it is part of your daily routine, a small contribution helps keep the project alive and shape what comes next — thank you.",
"SUPPORT_SPONSORS_HINT": "Recurring or one-time",
"SUPPORT_KOFI_HINT": "Buy me a coffee",
"EPG_NOTE": "Currently EPG is available only in the electron-based version of IPTVnator.",
"EPG_NOTE_URL_TEXT": "Check it here",
"IMPORT_EXPORT_DATA": "Import/export playlists",
@@ -644,6 +655,7 @@
},
"WORKSPACE": {
"FAVORITES_ONLY": "Favorites only",
"SORT_CUSTOM": "Custom order",
"SORT_DATE_DESC": "Date Added (Latest First)",
"SORT_DATE_ASC": "Date Added (Oldest First)",
"SORT_NAME_ASC": "Name A-Z",
@@ -782,8 +794,14 @@
"CLEAR_COMPLETED_DOWNLOADS_THIS_PLAYLIST_ARIA": "Clear completed downloads for this playlist",
"CLEAR_RECENTLY_VIEWED_SECTION": "Clear recently viewed",
"CLEAR_RECENTLY_VIEWED_SECTION_ARIA": "Clear recently viewed for this section",
"CLEAR_RECENTLY_VIEWED_DIALOG_TITLE": "Clear recently viewed?",
"CLEAR_RECENTLY_VIEWED_DIALOG_MESSAGE": "All recently viewed items in this section will be removed. This action cannot be undone.",
"CLEAR_RECENTLY_VIEWED_TYPE": "Clear recently viewed {{type}}",
"CLEAR_RECENTLY_VIEWED_DIALOG_TITLE": "Clear recently viewed {{type}}?",
"CLEAR_RECENTLY_VIEWED_DIALOG_MESSAGE_PLAYLIST": "All {{type}} items from this playlist will be removed from your recently viewed history. This action cannot be undone.",
"CLEAR_RECENTLY_VIEWED_DIALOG_MESSAGE_ALL": "All {{type}} items across all playlists will be removed from your recently viewed history. This action cannot be undone.",
"CLEAR_FAVORITES_TYPE": "Clear {{type}} favorites",
"CLEAR_FAVORITES_DIALOG_TITLE": "Remove all {{type}} favorites?",
"CLEAR_FAVORITES_DIALOG_MESSAGE_PLAYLIST": "All {{type}} favorites from this playlist will be removed. This action cannot be undone.",
"CLEAR_FAVORITES_DIALOG_MESSAGE_ALL": "All {{type}} favorites across all playlists will be removed. This action cannot be undone.",
"XTREAM_CODE": "Xtream Code",
"STALKER_PORTAL": "Stalker Portal",
"CHANNELS_COUNT": "{{count}} channels",
+20 -2
View File
@@ -201,6 +201,17 @@
"STARTUP_BEHAVIOR_RESTORE_LAST_VIEW": "Восстановить последний экран",
"SHOW_CAPTIONS_DESCRIPTION": "Показать или скрыть субтитры по умолчанию.",
"VERSION_DESCRIPTION": "Текущая версия приложения",
"ABOUT_SUBTITLE": "Версия, ссылки на проект и способы поддержать IPTVnator.",
"COMMUNITY": "Проект и сообщество",
"COMMUNITY_DESCRIPTION": "Поставьте звезду репозиторию, читайте блог или присоединяйтесь к Telegram-группе для новостей и поддержки.",
"LINK_BLOG": "Блог",
"LINK_GITHUB_DESCRIPTION": "Звезда, issues и возможность поучаствовать",
"LINK_BLOG_DESCRIPTION": "Новости релизов, советы и обновления проекта",
"LINK_TELEGRAM_DESCRIPTION": "Анонсы, сообщество и поддержка",
"SUPPORT_TITLE": "Поддержать проект",
"SUPPORT_DESCRIPTION": "IPTVnator — бесплатный open source проект, разработка ведётся открыто. Если он стал частью вашего дня, небольшая поддержка помогает продолжать развитие — спасибо!",
"SUPPORT_SPONSORS_HINT": "Регулярно или однократно",
"SUPPORT_KOFI_HINT": "Купить кофе",
"EPG_NOTE": "На данный момент EPG доступен только в нативной версии IPTVnator.",
"EPG_NOTE_URL_TEXT": "Подробнее здесь",
"IMPORT_EXPORT_DATA": "Импорт/экспорт плейлистов",
@@ -488,6 +499,7 @@
},
"WORKSPACE": {
"FAVORITES_ONLY": "Только избранное",
"SORT_CUSTOM": "Пользовательский порядок",
"SORT_DATE_DESC": "Дата добавления (Сначала новые)",
"SORT_DATE_ASC": "Дата добавления (Сначала старые)",
"SORT_NAME_ASC": "Имя (А-Я)",
@@ -626,8 +638,14 @@
"CLEAR_COMPLETED_DOWNLOADS_THIS_PLAYLIST_ARIA": "Очистить завершенные загрузки для этого плейлиста",
"CLEAR_RECENTLY_VIEWED_SECTION": "Очистить недавно просмотренное",
"CLEAR_RECENTLY_VIEWED_SECTION_ARIA": "Очистить недавно просмотренное для этого раздела",
"CLEAR_RECENTLY_VIEWED_DIALOG_TITLE": "Очистить недавно просмотренное?",
"CLEAR_RECENTLY_VIEWED_DIALOG_MESSAGE": "Все недавно просмотренные элементы в этом разделе будут удалены. Это действие нельзя отменить.",
"CLEAR_RECENTLY_VIEWED_TYPE": "Очистить недавно просмотренное ({{type}})",
"CLEAR_RECENTLY_VIEWED_DIALOG_TITLE": "Очистить недавно просмотренное ({{type}})?",
"CLEAR_RECENTLY_VIEWED_DIALOG_MESSAGE_PLAYLIST": "Все элементы «{{type}}» из этого плейлиста будут удалены из истории просмотров. Это действие нельзя отменить.",
"CLEAR_RECENTLY_VIEWED_DIALOG_MESSAGE_ALL": "Все элементы «{{type}}» из всех плейлистов будут удалены из истории просмотров. Это действие нельзя отменить.",
"CLEAR_FAVORITES_TYPE": "Удалить избранное ({{type}})",
"CLEAR_FAVORITES_DIALOG_TITLE": "Удалить все избранное «{{type}}»?",
"CLEAR_FAVORITES_DIALOG_MESSAGE_PLAYLIST": "Все избранное «{{type}}» из этого плейлиста будет удалено. Это действие нельзя отменить.",
"CLEAR_FAVORITES_DIALOG_MESSAGE_ALL": "Все избранное «{{type}}» из всех плейлистов будет удалено. Это действие нельзя отменить.",
"XTREAM_CODE": "Xtream Code",
"STALKER_PORTAL": "Портал Stalker",
"CHANNELS_COUNT": "{{count}} каналов",