mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-08 17:06:15 -08:00
feat(settings): add mpvReuseInstance setting to store and i18n
Add MPV_REUSE_INSTANCE key to the electron backend store service and include mpvReuseInstance in the shared settings interface so the new boolean setting is persisted and available across renderer and main processes. Also update English i18n JSON formatting and expand the HOME section translations (reformatting and adding nested playlist-related keys) to ensure the UI strings remain consistent after changes.
This commit is contained in:
1 parent
d9cbb1ce87
commit
7c42c1b6fc
6 files changed
+360
-331
No files matched your search
@@ -3,11 +3,13 @@ import Store from 'electron-store';
|
||||
export const WINDOW_BOUNDS = 'WINDOW_BOUNDS';
|
||||
export const MPV_PLAYER_PATH = 'MPV_PLAYER_PATH';
|
||||
export const VLC_PLAYER_PATH = 'VLC_PLAYER_PATH';
|
||||
export const MPV_REUSE_INSTANCE = 'MPV_REUSE_INSTANCE';
|
||||
|
||||
export type StoreType = {
|
||||
[WINDOW_BOUNDS]: Electron.Rectangle;
|
||||
[MPV_PLAYER_PATH]: string;
|
||||
[VLC_PLAYER_PATH]: string;
|
||||
[MPV_REUSE_INSTANCE]: boolean;
|
||||
};
|
||||
|
||||
// Initialize renderer support
|
||||
|
||||
@@ -24,6 +24,7 @@ const DEFAULT_SETTINGS: Settings = {
|
||||
showCaptions: false,
|
||||
theme: Theme.LightTheme,
|
||||
mpvPlayerPath: '',
|
||||
mpvReuseInstance: false,
|
||||
vlcPlayerPath: '',
|
||||
remoteControl: false,
|
||||
remoteControlPort: 3000,
|
||||
@@ -48,7 +49,11 @@ export const SettingsStore = signalStore(
|
||||
|
||||
async updateSettings(settings: Partial<Settings>) {
|
||||
patchState(store, settings);
|
||||
await firstValueFrom(storage.set(STORE_KEY.Settings, settings));
|
||||
// Save the complete settings object, not just the partial update
|
||||
const completeSettings = this.getSettings();
|
||||
await firstValueFrom(
|
||||
storage.set(STORE_KEY.Settings, completeSettings)
|
||||
);
|
||||
},
|
||||
|
||||
getSettings() {
|
||||
@@ -59,6 +64,7 @@ export const SettingsStore = signalStore(
|
||||
showCaptions: store.showCaptions(),
|
||||
theme: store.theme(),
|
||||
mpvPlayerPath: store.mpvPlayerPath(),
|
||||
mpvReuseInstance: store.mpvReuseInstance(),
|
||||
vlcPlayerPath: store.vlcPlayerPath(),
|
||||
remoteControl: store.remoteControl(),
|
||||
remoteControlPort: store.remoteControlPort(),
|
||||
|
||||
@@ -128,6 +128,23 @@
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="column">
|
||||
{{ 'SETTINGS.MPV_REUSE_INSTANCE_LABEL' | translate }}
|
||||
<p>
|
||||
{{
|
||||
'SETTINGS.MPV_REUSE_INSTANCE_DESCRIPTION'
|
||||
| translate
|
||||
}}
|
||||
</p>
|
||||
</div>
|
||||
<div class="column margin-right">
|
||||
<mat-checkbox
|
||||
class="column"
|
||||
formControlName="mpvReuseInstance"
|
||||
></mat-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (settingsForm.value.player === 'vlc') {
|
||||
<div class="row">
|
||||
|
||||
@@ -43,7 +43,6 @@ import {
|
||||
Playlist,
|
||||
SET_MPV_PLAYER_PATH,
|
||||
SET_VLC_PLAYER_PATH,
|
||||
SETTINGS_UPDATE,
|
||||
StreamFormat,
|
||||
Theme,
|
||||
VideoPlayer,
|
||||
@@ -145,6 +144,7 @@ export class SettingsComponent implements OnInit {
|
||||
showCaptions: false,
|
||||
theme: Theme.LightTheme,
|
||||
mpvPlayerPath: '',
|
||||
mpvReuseInstance: false,
|
||||
vlcPlayerPath: '',
|
||||
remoteControl: false,
|
||||
remoteControlPort: 3000,
|
||||
@@ -252,10 +252,11 @@ export class SettingsComponent implements OnInit {
|
||||
onSubmit(): void {
|
||||
this.settingsStore.updateSettings(this.settingsForm.value).then(() => {
|
||||
this.applyChangedSettings();
|
||||
this.dataService.sendIpcEvent(
|
||||
/* this.dataService.sendIpcEvent(
|
||||
SETTINGS_UPDATE,
|
||||
this.settingsForm.value
|
||||
);
|
||||
); */
|
||||
window.electron?.updateSettings(this.settingsForm.value);
|
||||
|
||||
this.dataService.sendIpcEvent(
|
||||
SET_MPV_PLAYER_PATH,
|
||||
|
||||
+329
-327
@@ -1,339 +1,341 @@
|
||||
{
|
||||
"CLOSE": "Close",
|
||||
"PLAYLISTS": "Playlists",
|
||||
"HOME": {
|
||||
"TITLE": "IPTVnator",
|
||||
"SUBTITLE": "Please select a playlist from the list or add a new playlist",
|
||||
"TABS": {
|
||||
"RECENTLY_ADDED": "Recently added playlists",
|
||||
"FILE_UPLOAD": "Add via file upload",
|
||||
"URL_UPLOAD": "Add via URL",
|
||||
"TEXT_IMPORT": "Import from text",
|
||||
"XTREME_IMPORT": "Add Xtreme Code",
|
||||
"STALKER_PORTAL_IMPORT": "Add Stalker Portal"
|
||||
"CLOSE": "Close",
|
||||
"PLAYLISTS": "Playlists",
|
||||
"HOME": {
|
||||
"TITLE": "IPTVnator",
|
||||
"SUBTITLE": "Please select a playlist from the list or add a new playlist",
|
||||
"TABS": {
|
||||
"RECENTLY_ADDED": "Recently added playlists",
|
||||
"FILE_UPLOAD": "Add via file upload",
|
||||
"URL_UPLOAD": "Add via URL",
|
||||
"TEXT_IMPORT": "Import from text",
|
||||
"XTREME_IMPORT": "Add Xtreme Code",
|
||||
"STALKER_PORTAL_IMPORT": "Add Stalker Portal"
|
||||
},
|
||||
"PLAYLISTS": {
|
||||
"NO_PLAYLISTS": "No playlists were added",
|
||||
"ADD_FIRST": "Please add your first playlist",
|
||||
"ADDED_VIA_URL": "Added via URL upload. URL:",
|
||||
"ADDED_VIA_FILE": "Added via file upload",
|
||||
"XTREAM_PLAYLIST": "Xtream playlist",
|
||||
"STALKER_PORTAL": "Stalker portal",
|
||||
"CHANNELS": "Channels",
|
||||
"ADDED": "Added",
|
||||
"SHOW_DETAILS": "Show playlist details",
|
||||
"REMOVE": "Remove playlist",
|
||||
"SEARCH_PLAYLISTS": "Search playlists by title",
|
||||
"INFO_DIALOG": {
|
||||
"PLAYLIST_DETAILS": "Playlist details",
|
||||
"TITLE": "Title",
|
||||
"FROM_URL": "Added from the URL",
|
||||
"IMPORT_DATE": "Import date",
|
||||
"CHANNELS": "Number of channels",
|
||||
"CLOSE": "Close",
|
||||
"SAVE": "Save",
|
||||
"USER_AGENT": "User agent",
|
||||
"ORIGINAL_FILENAME": "Original filename",
|
||||
"FILE_PATH": "File path",
|
||||
"UPDATE_FAILED": "Last playlist update failed",
|
||||
"AUTO_UPDATE": "Auto-update",
|
||||
"AUTO_UPDATE_DESCRIPTION": "If the auto-refresh function is activated, the playlist will be updated automatically each time the app is started.",
|
||||
"CUSTOM_USER_AGENT": "Some IPTV providers need a specific user-agent in order to play their playlist.",
|
||||
"EXPORT_PLAYLIST": "Export playlist as m3u",
|
||||
"SERVER_URL": "Server URL",
|
||||
"USERNAME": "Username",
|
||||
"PASSWORD": "Password",
|
||||
"MAC_ADDRESS": "Mac Address",
|
||||
"PLAYLIST_EXPORT_SUCCESS": "Playlist was exported successfully.",
|
||||
"PLAYLIST_EXPORT_ERROR": "Error: Playlist export failed."
|
||||
},
|
||||
"REMOVE_DIALOG": {
|
||||
"TITLE": "Remove playlist",
|
||||
"MESSAGE": "Are you sure you want to delete this playlist completely?",
|
||||
"SUCCESS": "Playlist was removed successfully"
|
||||
},
|
||||
"UPDATED": "Updated",
|
||||
"REFRESH": "Refresh playlist",
|
||||
"GLOBAL_FAVORITES": "Global favorites",
|
||||
"GLOBAL_FAVORITES_DESCRIPTION": "Auto-generated playlist with aggregated favorites from all playlists",
|
||||
"MY_PLAYLISTS": "My playlists",
|
||||
"MY_PLAYLISTS_SUBTITLE": "all available playlists",
|
||||
"PLAYLIST_UPDATE_SUCCESS": "Success! The playlist was successfully updated.",
|
||||
"PLAYLIST_UPDATE_ERROR": "Error updating playlist details."
|
||||
},
|
||||
"FILE_UPLOAD": {
|
||||
"DRAG_DROP": "Drag & drop files here",
|
||||
"OR": "or",
|
||||
"CHOOSE_PLAYLIST": "choose a playlist",
|
||||
"REJECTED": "File was rejected, unsupported file format {{filename}}."
|
||||
},
|
||||
"URL_UPLOAD": {
|
||||
"PLAYLIST_URL": "Playlist URL (m3u, m3u8)",
|
||||
"ADD_PLAYLIST": "Add playlist",
|
||||
"CORS_NOTE": "Note: In order to avoid CORS issues at this point the application uses a public CORS Proxy service. If you want to upload a playlist with sensitive data, it's more secure to import it from a file."
|
||||
},
|
||||
"TEXT_IMPORT": {
|
||||
"LABEL": "Insert m3u(8) playlist as text",
|
||||
"BUTTON_LABEL": "Import"
|
||||
},
|
||||
"XTREAM_PLAYLIST": {
|
||||
"TITLE": "Playlist title",
|
||||
"SERVER_URL": "Server URL",
|
||||
"USERNAME": "Username",
|
||||
"PASSWORD": "Password",
|
||||
"ADD": "Add",
|
||||
"TEST_CREDENTIALS": "Test credentials",
|
||||
"URL_VALIDATION_ERROR": "Should be a valid url with protocol (e.g. http://example.com or https://example.com:4324)"
|
||||
},
|
||||
"STALKER_PORTAL": {
|
||||
"TITLE": "Title",
|
||||
"MAC_ADDRESS": "Mac Address",
|
||||
"SERVER_URL": "Server URL",
|
||||
"URL_VALIDATION_ERROR": "Should be a valid url with protocol (e.g. http://example.com/c or https://example.com/stalker_portal/c)",
|
||||
"ADD": "Add"
|
||||
},
|
||||
"FILTER_BY_NAME": "Filter by name",
|
||||
"FILTER_BY_TYPE": "Filter by type",
|
||||
"SORT_PLAYLISTS": "Sort playlists",
|
||||
"SORT_BY": "Sort by",
|
||||
"SORT_OPTIONS": {
|
||||
"NAME_ASC": "Name (A-Z)",
|
||||
"NAME_DESC": "Name (Z-A)",
|
||||
"NEWEST": "Date added (Newest first)",
|
||||
"OLDEST": "Date added (Oldest first)"
|
||||
},
|
||||
"IMPORTED_AS_TEXT": "Imported as text",
|
||||
"PARSING_ERROR": "Error: Parsing failed, not a valid playlist:"
|
||||
},
|
||||
"PLAYLISTS": {
|
||||
"NO_PLAYLISTS": "No playlists were added",
|
||||
"ADD_FIRST": "Please add your first playlist",
|
||||
"ADDED_VIA_URL": "Added via URL upload. URL:",
|
||||
"ADDED_VIA_FILE": "Added via file upload",
|
||||
"XTREAM_PLAYLIST": "Xtream playlist",
|
||||
"STALKER_PORTAL": "Stalker portal",
|
||||
"CHANNELS": "Channels",
|
||||
"ADDED": "Added",
|
||||
"SHOW_DETAILS": "Show playlist details",
|
||||
"REMOVE": "Remove playlist",
|
||||
"SEARCH_PLAYLISTS": "Search playlists by title",
|
||||
"INFO_DIALOG": {
|
||||
"PLAYLIST_DETAILS": "Playlist details",
|
||||
"TITLE": "Title",
|
||||
"FROM_URL": "Added from the URL",
|
||||
"IMPORT_DATE": "Import date",
|
||||
"CHANNELS": "Number of channels",
|
||||
"CLOSE": "Close",
|
||||
"SAVE": "Save",
|
||||
"USER_AGENT": "User agent",
|
||||
"ORIGINAL_FILENAME": "Original filename",
|
||||
"FILE_PATH": "File path",
|
||||
"UPDATE_FAILED": "Last playlist update failed",
|
||||
"AUTO_UPDATE": "Auto-update",
|
||||
"AUTO_UPDATE_DESCRIPTION": "If the auto-refresh function is activated, the playlist will be updated automatically each time the app is started.",
|
||||
"CUSTOM_USER_AGENT": "Some IPTV providers need a specific user-agent in order to play their playlist.",
|
||||
"EXPORT_PLAYLIST": "Export playlist as m3u",
|
||||
"SERVER_URL": "Server URL",
|
||||
"USERNAME": "Username",
|
||||
"PASSWORD": "Password",
|
||||
"MAC_ADDRESS": "Mac Address",
|
||||
"PLAYLIST_EXPORT_SUCCESS": "Playlist was exported successfully.",
|
||||
"PLAYLIST_EXPORT_ERROR": "Error: Playlist export failed."
|
||||
},
|
||||
"REMOVE_DIALOG": {
|
||||
"TITLE": "Remove playlist",
|
||||
"MESSAGE": "Are you sure you want to delete this playlist completely?",
|
||||
"SUCCESS": "Playlist was removed successfully"
|
||||
},
|
||||
"UPDATED": "Updated",
|
||||
"REFRESH": "Refresh playlist",
|
||||
"GLOBAL_FAVORITES": "Global favorites",
|
||||
"GLOBAL_FAVORITES_DESCRIPTION": "Auto-generated playlist with aggregated favorites from all playlists",
|
||||
"MY_PLAYLISTS": "My playlists",
|
||||
"MY_PLAYLISTS_SUBTITLE": "all available playlists",
|
||||
"PLAYLIST_UPDATE_SUCCESS": "Success! The playlist was successfully updated.",
|
||||
"PLAYLIST_UPDATE_ERROR": "Error updating playlist details."
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings / IPTVnator",
|
||||
"SUBTITLE": "Change the configuration of the application",
|
||||
"DESCRIPTION": "Please adapt the options from the list below and confirm with the save changes button",
|
||||
"EPG_URL_LABEL": "EPG Url (*.xml or *.xml.gz)",
|
||||
"EPG_URL_PLACEHOLDER": "Enter an URL",
|
||||
"REFRESH_EPG": "Refresh EPG",
|
||||
"VIDEO_PLAYER_LABEL": "Video player",
|
||||
"VIDEO_PLAYER_PLACEHOLDER": "Select an option",
|
||||
"VERSION": "Version",
|
||||
"SAVE_CHANGES": "Save changes",
|
||||
"BACK_TO_HOME": "Back",
|
||||
"NEW_VERSION_AVAILABLE": "There is a new version available",
|
||||
"LATEST_VERSION": "You are using the latest version",
|
||||
"STREAM_FORMAT": "Stream Format",
|
||||
"LANGUAGE": "Language",
|
||||
"SETTINGS_SAVED": "Success! Configuration was saved.",
|
||||
"THEME": "Visual theme",
|
||||
"SHOW_CAPTIONS": "Show subtitles",
|
||||
"ADD_EPG_SOURCE": "Add EPG source",
|
||||
"EPG_URL_ERROR": "The value is not a valid URL",
|
||||
"VIDEO_PLAYER_DESCRIPTION": "Select default video player",
|
||||
"STREAM_FORMAT_DESCRIPTION": "Select default stream format (xtream)",
|
||||
"LANGUAGE_DESCRIPTION": "Select language of the application",
|
||||
"THEME_DESCRIPTION": "Select visual theme of the application",
|
||||
"SHOW_CAPTIONS_DESCRIPTION": "Show or hide subtitles by default",
|
||||
"VERSION_DESCRIPTION": "Current version of the application",
|
||||
"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",
|
||||
"IMPORT_EXPORT_DATA_DESCRIPTION": "Export or import playlists in the JSON format used within the application.",
|
||||
"IMPORT_DATA": "Import",
|
||||
"EXPORT_DATA": "Export",
|
||||
"REMOVE_ALL": "Remove playlists",
|
||||
"REMOVE_ALL_BUTTON": "Remove",
|
||||
"REMOVE_ALL_DESCRIPTION": "It will remove all existing playlists from the application.",
|
||||
"REMOVE_DIALOG": {
|
||||
"TITLE": "Remove all playlists",
|
||||
"MESSAGE": "Are you sure you want to delete all playlist from the application?"
|
||||
},
|
||||
"IMPORT_ERROR": "Import error, please try with another file.",
|
||||
"PLAYLISTS_REMOVED": "All playlists were removed.",
|
||||
"MPV_PLAYER_PATH_LABEL": "mpv path",
|
||||
"MPV_PLAYER_PATH_DESCRIPTION": "Set path to mpv player in your system. It will use the provided path to a mpv binary instead of using the one found in $PATH.",
|
||||
"MPV_PLAYER_PATH": "mpv player path",
|
||||
"MPV_REUSE_INSTANCE_LABEL": "Reuse MPV instance",
|
||||
"MPV_REUSE_INSTANCE_DESCRIPTION": "When enabled, the same MPV window will be reused for playing different streams. When disabled, each stream opens in a new MPV window.",
|
||||
"VLC_PLAYER_PATH_LABEL": "VLC path",
|
||||
"VLC_PLAYER_PATH_DESCRIPTION": "Set path to VLC player in your system. It will use the provided path to a VLC binary instead of the default path for our system.",
|
||||
"VLC_PLAYER_PATH": "VLC player path",
|
||||
"REMOTE_CONTROL": "Remote control",
|
||||
"REMOTE_CONTROL_DESCRIPTION": "Enable remote control of the application.",
|
||||
"REMOTE_CONTROL_PORT": "Remote control port",
|
||||
"REMOTE_CONTROL_PORT_DESCRIPTION": "Port used for remote control of the application. Port 3000 is used by default."
|
||||
},
|
||||
"FILE_UPLOAD": {
|
||||
"DRAG_DROP": "Drag & drop files here",
|
||||
"OR": "or",
|
||||
"CHOOSE_PLAYLIST": "choose a playlist",
|
||||
"REJECTED": "File was rejected, unsupported file format {{filename}}."
|
||||
"THEMES": {
|
||||
"DARK_THEME": "Dark theme",
|
||||
"LIGHT_THEME": "Light theme"
|
||||
},
|
||||
"URL_UPLOAD": {
|
||||
"PLAYLIST_URL": "Playlist URL (m3u, m3u8)",
|
||||
"ADD_PLAYLIST": "Add playlist",
|
||||
"CORS_NOTE": "Note: In order to avoid CORS issues at this point the application uses a public CORS Proxy service. If you want to upload a playlist with sensitive data, it's more secure to import it from a file."
|
||||
"CHANNELS": {
|
||||
"SEARCH_CHANNEL": "Search channel",
|
||||
"UPLOAD_OR_SELECT_OTHER_PLAYLIST": "Upload or select other playlist",
|
||||
"ALL_CHANNELS": "All channels",
|
||||
"GROUPS": "Groups",
|
||||
"UNGROUPED": "Ungrouped",
|
||||
"UNNAMED_CHANNEL": "Unnamed Channel",
|
||||
"FAVORITES": "Favorites",
|
||||
"NO_FAVORITES": "No favorites yet",
|
||||
"USE_STAR_TO_FAVORITE": "Please use 'star' icon to add channels to your favorites.",
|
||||
"REMOVE_FAVORITE": "Remove from favorites",
|
||||
"FAVORITES_UPDATED": "Favorites were updated!",
|
||||
"SORT_BY": "Sort by",
|
||||
"SORT_BY_DATE": "Sort by Date Added (Newest First)",
|
||||
"SORT_BY_RATING": "Sort by Rating",
|
||||
"SORT_BY_NAME": "Sort by Name (A-Z)"
|
||||
},
|
||||
"TEXT_IMPORT": {
|
||||
"LABEL": "Insert m3u(8) playlist as text",
|
||||
"BUTTON_LABEL": "Import"
|
||||
"TOP_MENU": {
|
||||
"OPEN_CHANNELS_LIST": "Open channel list",
|
||||
"TOGGLE_FAVORITE_FLAG": "Toggle favorite flag",
|
||||
"OPEN_EPG_LIST": "Open EPG list",
|
||||
"OPEN_MULTI_EPG": "Open Multi-EPG view"
|
||||
},
|
||||
"XTREAM_PLAYLIST": {
|
||||
"TITLE": "Playlist title",
|
||||
"SERVER_URL": "Server URL",
|
||||
"USERNAME": "Username",
|
||||
"PASSWORD": "Password",
|
||||
"ADD": "Add",
|
||||
"TEST_CREDENTIALS": "Test credentials",
|
||||
"URL_VALIDATION_ERROR": "Should be a valid url with protocol (e.g. http://example.com or https://example.com:4324)"
|
||||
"EPG": {
|
||||
"TITLE": "Electronic Program Guide",
|
||||
"NEXT_DAY": "Next day",
|
||||
"PREVIOUS_DAY": "Previous day",
|
||||
"LIVE_NOW": "Live now",
|
||||
"LIVE_STREAM": "Live stream",
|
||||
"TIMESHIFT_AVAILABLE": "Timeshift is available, click to play",
|
||||
"EPG_NOT_AVAILABLE_DATE": "Ooops, EPG is not available for the selected date",
|
||||
"EPG_NOT_AVAILABLE_CHANNEL_TITLE": "Ooops, EPG is not available for this channel.",
|
||||
"EPG_NOT_AVAILABLE_CHANNEL_DESCRIPTION": "Please add/change the URL of the EPG list in the settings of the app.",
|
||||
"FETCH_EPG": "Fetching EPG data...",
|
||||
"ERROR": "Ooops, EPG could not be loaded.",
|
||||
"DOWNLOAD_SUCCESS": "EPG was successfully downloaded.",
|
||||
"PROGRAM_DIALOG": {
|
||||
"PROGRAM_DETAILS": "Details about the TV program",
|
||||
"TITLE": "Title",
|
||||
"CATEGORY": "Category",
|
||||
"PARENTAL_RATING_SYSTEM": "Television content rating system",
|
||||
"DESCRIPTION": "Description",
|
||||
"LANGUAGE": "Language",
|
||||
"SHOW_PROGRAM_DETAILS": "Show details about this program"
|
||||
},
|
||||
"FETCH_SUCCESS": "EPG was fetched successfully"
|
||||
},
|
||||
"STALKER_PORTAL": {
|
||||
"TITLE": "Title",
|
||||
"MAC_ADDRESS": "Mac Address",
|
||||
"SERVER_URL": "Server URL",
|
||||
"URL_VALIDATION_ERROR": "Should be a valid url with protocol (e.g. http://example.com/c or https://example.com/stalker_portal/c)",
|
||||
"ADD": "Add"
|
||||
"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",
|
||||
"PORTUGUESE": "Português"
|
||||
},
|
||||
"FILTER_BY_NAME": "Filter by name",
|
||||
"FILTER_BY_TYPE": "Filter by type",
|
||||
"SORT_PLAYLISTS": "Sort playlists",
|
||||
"SORT_BY": "Sort by",
|
||||
"SORT_OPTIONS": {
|
||||
"NAME_ASC": "Name (A-Z)",
|
||||
"NAME_DESC": "Name (Z-A)",
|
||||
"NEWEST": "Date added (Newest first)",
|
||||
"OLDEST": "Date added (Oldest first)"
|
||||
"YES": "Yes",
|
||||
"NO": "No",
|
||||
"MENU": {
|
||||
"OPEN": "Open menu",
|
||||
"SUPPORT_ARIA": "Support IPTVnator on GitHub",
|
||||
"SETTINGS": "Settings",
|
||||
"SETTINGS_ARIA": "Open settings",
|
||||
"BUG_REPORT": "Report a bug",
|
||||
"WHAT_IS_NEW": "What is new",
|
||||
"ABOUT": "About",
|
||||
"ABOUT_ARIA": "About the application",
|
||||
"SUPPORT_PROJECT": "Support project"
|
||||
},
|
||||
"IMPORTED_AS_TEXT": "Imported as text",
|
||||
"PARSING_ERROR": "Error: Parsing failed, not a valid playlist:"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings / IPTVnator",
|
||||
"SUBTITLE": "Change the configuration of the application",
|
||||
"DESCRIPTION": "Please adapt the options from the list below and confirm with the save changes button",
|
||||
"EPG_URL_LABEL": "EPG Url (*.xml or *.xml.gz)",
|
||||
"EPG_URL_PLACEHOLDER": "Enter an URL",
|
||||
"REFRESH_EPG": "Refresh EPG",
|
||||
"VIDEO_PLAYER_LABEL": "Video player",
|
||||
"VIDEO_PLAYER_PLACEHOLDER": "Select an option",
|
||||
"VERSION": "Version",
|
||||
"SAVE_CHANGES": "Save changes",
|
||||
"BACK_TO_HOME": "Back",
|
||||
"NEW_VERSION_AVAILABLE": "There is a new version available",
|
||||
"LATEST_VERSION": "You are using the latest version",
|
||||
"STREAM_FORMAT": "Stream Format",
|
||||
"LANGUAGE": "Language",
|
||||
"SETTINGS_SAVED": "Success! Configuration was saved.",
|
||||
"THEME": "Visual theme",
|
||||
"SHOW_CAPTIONS": "Show subtitles",
|
||||
"ADD_EPG_SOURCE": "Add EPG source",
|
||||
"EPG_URL_ERROR": "The value is not a valid URL",
|
||||
"VIDEO_PLAYER_DESCRIPTION": "Select default video player",
|
||||
"STREAM_FORMAT_DESCRIPTION": "Select default stream format (xtream)",
|
||||
"LANGUAGE_DESCRIPTION": "Select language of the application",
|
||||
"THEME_DESCRIPTION": "Select visual theme of the application",
|
||||
"SHOW_CAPTIONS_DESCRIPTION": "Show or hide subtitles by default",
|
||||
"VERSION_DESCRIPTION": "Current version of the application",
|
||||
"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",
|
||||
"IMPORT_EXPORT_DATA_DESCRIPTION": "Export or import playlists in the JSON format used within the application.",
|
||||
"IMPORT_DATA": "Import",
|
||||
"EXPORT_DATA": "Export",
|
||||
"REMOVE_ALL": "Remove playlists",
|
||||
"REMOVE_ALL_BUTTON": "Remove",
|
||||
"REMOVE_ALL_DESCRIPTION": "It will remove all existing playlists from the application.",
|
||||
"REMOVE_DIALOG": {
|
||||
"TITLE": "Remove all playlists",
|
||||
"MESSAGE": "Are you sure you want to delete all playlist from the application?"
|
||||
"ABOUT": {
|
||||
"TITLE": "About IPTVnator",
|
||||
"DESCRIPTION": "Cross-platform IPTV player application with multiple features, such as support of m3u and m3u8 playlists, favorites, TV guide, TV archive/catchup and more.",
|
||||
"VERSION": "Version",
|
||||
"GITHUB_TOOLTIP": "ITPVnator repository on GitHub",
|
||||
"BUY_ME_A_COFFEE_TOOLTIP": "Buy me a coffee",
|
||||
"TWITTER_TOOLTIP": "Share on Twitter"
|
||||
},
|
||||
"IMPORT_ERROR": "Import error, please try with another file.",
|
||||
"PLAYLISTS_REMOVED": "All playlists were removed.",
|
||||
"MPV_PLAYER_PATH_LABEL": "mpv path",
|
||||
"MPV_PLAYER_PATH_DESCRIPTION": "Set path to mpv player in your system. It will use the provided path to a mpv binary instead of using the one found in $PATH.",
|
||||
"MPV_PLAYER_PATH": "mpv player path",
|
||||
"VLC_PLAYER_PATH_LABEL": "VLC path",
|
||||
"VLC_PLAYER_PATH_DESCRIPTION": "Set path to VLC player in your system. It will use the provided path to a VLC binary instead of the default path for our system.",
|
||||
"VLC_PLAYER_PATH": "VLC player path",
|
||||
"REMOTE_CONTROL": "Remote control",
|
||||
"REMOTE_CONTROL_DESCRIPTION": "Enable remote control of the application.",
|
||||
"REMOTE_CONTROL_PORT": "Remote control port",
|
||||
"REMOTE_CONTROL_PORT_DESCRIPTION": "Port used for remote control of the application. Port 3000 is used by default."
|
||||
},
|
||||
"THEMES": {
|
||||
"DARK_THEME": "Dark theme",
|
||||
"LIGHT_THEME": "Light theme"
|
||||
},
|
||||
"CHANNELS": {
|
||||
"SEARCH_CHANNEL": "Search channel",
|
||||
"UPLOAD_OR_SELECT_OTHER_PLAYLIST": "Upload or select other playlist",
|
||||
"ALL_CHANNELS": "All channels",
|
||||
"GROUPS": "Groups",
|
||||
"UNGROUPED": "Ungrouped",
|
||||
"UNNAMED_CHANNEL": "Unnamed Channel",
|
||||
"FAVORITES": "Favorites",
|
||||
"NO_FAVORITES": "No favorites yet",
|
||||
"USE_STAR_TO_FAVORITE": "Please use 'star' icon to add channels to your favorites.",
|
||||
"REMOVE_FAVORITE": "Remove from favorites",
|
||||
"FAVORITES_UPDATED": "Favorites were updated!",
|
||||
"SORT_BY": "Sort by",
|
||||
"SORT_BY_DATE": "Sort by Date Added (Newest First)",
|
||||
"SORT_BY_RATING": "Sort by Rating",
|
||||
"SORT_BY_NAME": "Sort by Name (A-Z)"
|
||||
},
|
||||
"TOP_MENU": {
|
||||
"OPEN_CHANNELS_LIST": "Open channel list",
|
||||
"TOGGLE_FAVORITE_FLAG": "Toggle favorite flag",
|
||||
"OPEN_EPG_LIST": "Open EPG list",
|
||||
"OPEN_MULTI_EPG": "Open Multi-EPG view"
|
||||
},
|
||||
"EPG": {
|
||||
"TITLE": "Electronic Program Guide",
|
||||
"NEXT_DAY": "Next day",
|
||||
"PREVIOUS_DAY": "Previous day",
|
||||
"LIVE_NOW": "Live now",
|
||||
"LIVE_STREAM": "Live stream",
|
||||
"TIMESHIFT_AVAILABLE": "Timeshift is available, click to play",
|
||||
"EPG_NOT_AVAILABLE_DATE": "Ooops, EPG is not available for the selected date",
|
||||
"EPG_NOT_AVAILABLE_CHANNEL_TITLE": "Ooops, EPG is not available for this channel.",
|
||||
"EPG_NOT_AVAILABLE_CHANNEL_DESCRIPTION": "Please add/change the URL of the EPG list in the settings of the app.",
|
||||
"FETCH_EPG": "Fetching EPG data...",
|
||||
"ERROR": "Ooops, EPG could not be loaded.",
|
||||
"DOWNLOAD_SUCCESS": "EPG was successfully downloaded.",
|
||||
"PROGRAM_DIALOG": {
|
||||
"PROGRAM_DETAILS": "Details about the TV program",
|
||||
"TITLE": "Title",
|
||||
"CATEGORY": "Category",
|
||||
"PARENTAL_RATING_SYSTEM": "Television content rating system",
|
||||
"DESCRIPTION": "Description",
|
||||
"LANGUAGE": "Language",
|
||||
"SHOW_PROGRAM_DETAILS": "Show details about this program"
|
||||
"UPDATE_AVAILABLE": "Update available",
|
||||
"REFRESH": "Refresh",
|
||||
"XTREAM": {
|
||||
"PLAY": "Play",
|
||||
"NAME": "Name",
|
||||
"RELEASE_DATE": "Release date",
|
||||
"GENRE": "Genre",
|
||||
"COUNTRY": "Country",
|
||||
"ACTORS": "Actors",
|
||||
"DIRECTOR": "Director",
|
||||
"DURATION": "Duration",
|
||||
"CAST": "Cast",
|
||||
"EPISODE_RUN_TIME": "Episode run time",
|
||||
"RATING": "Rating",
|
||||
"IMDB_RATING": " Rating IMDB",
|
||||
"KINOPOISK_RATING": "Rating Kinopoisk",
|
||||
"DESCRIPTION": "Description",
|
||||
"YEAR": "Year",
|
||||
"AGE": "Age",
|
||||
"YOUTUBE_TRAILER": "YouTube Trailer",
|
||||
"EPISODE": "Episode"
|
||||
},
|
||||
"FETCH_SUCCESS": "EPG was fetched successfully"
|
||||
},
|
||||
"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",
|
||||
"PORTUGUESE": "Português"
|
||||
},
|
||||
"YES": "Yes",
|
||||
"NO": "No",
|
||||
"MENU": {
|
||||
"OPEN": "Open menu",
|
||||
"SUPPORT_ARIA": "Support IPTVnator on GitHub",
|
||||
"SETTINGS": "Settings",
|
||||
"SETTINGS_ARIA": "Open settings",
|
||||
"BUG_REPORT": "Report a bug",
|
||||
"WHAT_IS_NEW": "What is new",
|
||||
"ABOUT": "About",
|
||||
"ABOUT_ARIA": "About the application",
|
||||
"SUPPORT_PROJECT": "Support project"
|
||||
},
|
||||
"ABOUT": {
|
||||
"TITLE": "About IPTVnator",
|
||||
"DESCRIPTION": "Cross-platform IPTV player application with multiple features, such as support of m3u and m3u8 playlists, favorites, TV guide, TV archive/catchup and more.",
|
||||
"VERSION": "Version",
|
||||
"GITHUB_TOOLTIP": "ITPVnator repository on GitHub",
|
||||
"BUY_ME_A_COFFEE_TOOLTIP": "Buy me a coffee",
|
||||
"TWITTER_TOOLTIP": "Share on Twitter"
|
||||
},
|
||||
"UPDATE_AVAILABLE": "Update available",
|
||||
"REFRESH": "Refresh",
|
||||
"XTREAM": {
|
||||
"PLAY": "Play",
|
||||
"NAME": "Name",
|
||||
"RELEASE_DATE": "Release date",
|
||||
"GENRE": "Genre",
|
||||
"COUNTRY": "Country",
|
||||
"ACTORS": "Actors",
|
||||
"DIRECTOR": "Director",
|
||||
"DURATION": "Duration",
|
||||
"CAST": "Cast",
|
||||
"EPISODE_RUN_TIME": "Episode run time",
|
||||
"RATING": "Rating",
|
||||
"IMDB_RATING": " Rating IMDB",
|
||||
"KINOPOISK_RATING": "Rating Kinopoisk",
|
||||
"DESCRIPTION": "Description",
|
||||
"YEAR": "Year",
|
||||
"AGE": "Age",
|
||||
"YOUTUBE_TRAILER": "YouTube Trailer",
|
||||
"EPISODE": "Episode"
|
||||
},
|
||||
"PORTALS": {
|
||||
"ALL_CATEGORIES": "All categories",
|
||||
"MY_FAVORITES": "My favorites",
|
||||
"ADD_TO_FAVORITES": "Add to favorites",
|
||||
"REMOVE_FROM_FAVORITES": "Remove from favorites",
|
||||
"REMOVED_FROM_FAVORITES": "Removed from favorites",
|
||||
"ADDED_TO_FAVORITES": "Added to favorites",
|
||||
"SIDEBAR": {
|
||||
"MAIN": "Main",
|
||||
"MOVIES": "Movies",
|
||||
"LIVE_TV": "Live TV",
|
||||
"SERIES": "Series",
|
||||
"LIBRARY": "Library",
|
||||
"SEARCH": "Search",
|
||||
"RECENT": "Recent",
|
||||
"FAVORITES": "Favorites",
|
||||
"HOME": "Home",
|
||||
"PLAYLIST_INFO": "Playlist info",
|
||||
"ACCOUNT_INFO": "Account info"
|
||||
"PORTALS": {
|
||||
"ALL_CATEGORIES": "All categories",
|
||||
"MY_FAVORITES": "My favorites",
|
||||
"ADD_TO_FAVORITES": "Add to favorites",
|
||||
"REMOVE_FROM_FAVORITES": "Remove from favorites",
|
||||
"REMOVED_FROM_FAVORITES": "Removed from favorites",
|
||||
"ADDED_TO_FAVORITES": "Added to favorites",
|
||||
"SIDEBAR": {
|
||||
"MAIN": "Main",
|
||||
"MOVIES": "Movies",
|
||||
"LIVE_TV": "Live TV",
|
||||
"SERIES": "Series",
|
||||
"LIBRARY": "Library",
|
||||
"SEARCH": "Search",
|
||||
"RECENT": "Recent",
|
||||
"FAVORITES": "Favorites",
|
||||
"HOME": "Home",
|
||||
"PLAYLIST_INFO": "Playlist info",
|
||||
"ACCOUNT_INFO": "Account info"
|
||||
},
|
||||
"ERROR_VIEW": {
|
||||
"ACCOUNT_EXPIRED": {
|
||||
"TITLE": "Account expired",
|
||||
"DESCRIPTION": "This account has been expired. Please check the credentials in playlist settings or remove it."
|
||||
},
|
||||
"UNAUTHORIZED": {
|
||||
"TITLE": "Unauthorized",
|
||||
"DESCRIPTION": "Please check the credentials in playlist settings or remove it."
|
||||
},
|
||||
"NOT_FOUND": {
|
||||
"TITLE": "Portal not found",
|
||||
"DESCRIPTION": "Please check the credentials and portal url in playlist settings or remove it."
|
||||
},
|
||||
"EMPTY_CATEGORY": {
|
||||
"TITLE": "Empty category",
|
||||
"DESCRIPTION": "This category has no content, please select another category or change the content type"
|
||||
},
|
||||
"UNKNOWN_ERROR": {
|
||||
"TITLE": "Something went wrong",
|
||||
"DESCRIPTION": "Unknown error, please try again later"
|
||||
},
|
||||
"NO_CATEGORY_SELECTED": {
|
||||
"TITLE": "No category selected",
|
||||
"DESCRIPTION": "Please select a category to see the content"
|
||||
},
|
||||
"PLAYLIST_SETTINGS": "Playlist Settings",
|
||||
"HOME": "Home",
|
||||
"DELETE": "Delete"
|
||||
},
|
||||
"EMPTY_LIST_VIEW": {
|
||||
"TITLE": "No results found",
|
||||
"NO_SEARCH_RESULTS": "Nothing found, try to change you search request"
|
||||
},
|
||||
"STREAM_URL_COPIED": "Stream URL copied to clipboard",
|
||||
"COPY_STREAM_URL": "Copy Stream URL",
|
||||
"SELECT_CATEGORY": "Select a category"
|
||||
},
|
||||
"ERROR_VIEW": {
|
||||
"ACCOUNT_EXPIRED": {
|
||||
"TITLE": "Account expired",
|
||||
"DESCRIPTION": "This account has been expired. Please check the credentials in playlist settings or remove it."
|
||||
},
|
||||
"UNAUTHORIZED": {
|
||||
"TITLE": "Unauthorized",
|
||||
"DESCRIPTION": "Please check the credentials in playlist settings or remove it."
|
||||
},
|
||||
"NOT_FOUND": {
|
||||
"TITLE": "Portal not found",
|
||||
"DESCRIPTION": "Please check the credentials and portal url in playlist settings or remove it."
|
||||
},
|
||||
"EMPTY_CATEGORY": {
|
||||
"TITLE": "Empty category",
|
||||
"DESCRIPTION": "This category has no content, please select another category or change the content type"
|
||||
},
|
||||
"UNKNOWN_ERROR": {
|
||||
"TITLE": "Something went wrong",
|
||||
"DESCRIPTION": "Unknown error, please try again later"
|
||||
},
|
||||
"NO_CATEGORY_SELECTED": {
|
||||
"TITLE": "No category selected",
|
||||
"DESCRIPTION": "Please select a category to see the content"
|
||||
},
|
||||
"PLAYLIST_SETTINGS": "Playlist Settings",
|
||||
"HOME": "Home",
|
||||
"DELETE": "Delete"
|
||||
},
|
||||
"EMPTY_LIST_VIEW": {
|
||||
"TITLE": "No results found",
|
||||
"NO_SEARCH_RESULTS": "Nothing found, try to change you search request"
|
||||
},
|
||||
"STREAM_URL_COPIED": "Stream URL copied to clipboard",
|
||||
"COPY_STREAM_URL": "Copy Stream URL",
|
||||
"SELECT_CATEGORY": "Select a category"
|
||||
},
|
||||
"INFORMATION": "Information",
|
||||
"REMOTE_CONTROL": {
|
||||
"TITLE": "Remote control",
|
||||
"UP_CHANNEL": "Up channel",
|
||||
"DOWN_CHANNEL": "Down channel",
|
||||
"HEADER": "IPTVNator Remote Control",
|
||||
"FOOTER": "IPTVNator Remote Control"
|
||||
}
|
||||
}
|
||||
"INFORMATION": "Information",
|
||||
"REMOTE_CONTROL": {
|
||||
"TITLE": "Remote control",
|
||||
"UP_CHANNEL": "Up channel",
|
||||
"DOWN_CHANNEL": "Down channel",
|
||||
"HEADER": "IPTVNator Remote Control",
|
||||
"FOOTER": "IPTVNator Remote Control"
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,7 @@ export interface Settings {
|
||||
showCaptions: boolean;
|
||||
theme: Theme;
|
||||
mpvPlayerPath: string;
|
||||
mpvReuseInstance: boolean;
|
||||
vlcPlayerPath: string;
|
||||
remoteControl: boolean;
|
||||
remoteControlPort: number;
|
||||
|
||||
Reference in new issue
Block a user