.islist = 1,
.id = "profile",
.name = N_("Streaming profiles"),
- .desc = N_("The streaming profile to use/used, if not set the "
- "default will be used."),
+ .desc = N_("The streaming profile to use/used. If not set, "
+ "the default will be used."),
.set = access_entry_profile_set,
.get = access_entry_profile_get,
.list = profile_class_get_list,
.type = PT_BOOL,
.id = "all_rw_dvr",
.name = N_("All DVR (rw)"),
- .desc = N_("Allow/disallow read/write access to other users "
+ .desc = N_("Allow/disallow read/write access to other users' "
"DVR entries."),
.off = offsetof(access_entry_t, ae_all_rw_dvr),
},
.type = PT_BOOL,
.id = "admin",
.name = N_("Admin"),
- .desc = N_("Allow/disallow access to the Configuration tab."),
+ .desc = N_("Allow/disallow access to the 'Configuration' tab."),
.off = offsetof(access_entry_t, ae_admin),
},
{
.type = PT_BOOL,
.id = "channel_tag_exclude",
.name = N_("Exclude channel tags"),
- .desc = N_("Enable excluding of user-config defined channel "
+ .desc = N_("Enable exclusion of user-config defined channel "
"tags. This will prevent the user from accessing "
"channels associated with the tags selected (below)."),
.off = offsetof(access_entry_t, ae_chtags_exclude),
.type = PT_STR,
.id = "username",
.name = N_("Username"),
- .desc = N_("Username of the entry. (this should match "
- "a username from within the Access Entries tab."),
+ .desc = N_("Username of the entry (this should match a "
+ "username from within the \"Access Entries\" tab."),
.off = offsetof(passwd_entry_t, pw_username),
},
{
"EPG data to the channel (using the channel name "
"for matching). If you turn this option off, only "
"the OTA EPG grabber will be used for this channel "
- "unless the EPG Source option is not set manually."),
+ "unless you've specifically set a different EPG "
+ "Source."),
.off = offsetof(channel_t, ch_epgauto),
.opts = PO_ADVANCED,
},
.id = "epg_running",
.name = N_("Use EPG running state"),
.desc = N_("Use EPG running state. Use EITp/f to decide "
- "event start/stop. This is also known as accurate "
- "recording. Note that this can have unexpected "
- "results if the broadcaster isn`t very good at "
- "time keeping."),
+ "event start/stop. This is also known as "
+ "\"Accurate Recording\". Note that this can have "
+ "unexpected results if the broadcaster isn`t very "
+ "good at time keeping."),
.off = offsetof(channel_t, ch_epg_running),
.list = channel_class_epg_running_list,
.opts = PO_ADVANCED
.type = PT_BOOL,
.id = "internal",
.name = N_("Internal"),
- .desc = N_("Use tag internally (don`t expose to clients)."),
+ .desc = N_("Use tag internally (don't expose to clients)."),
.off = offsetof(channel_tag_t, ct_internal),
.opts = PO_ADVANCED
},
.name = N_("Directory"),
.desc = N_("When specified, this setting overrides the "
"subdirectory rules (except the base directory) "
- "specified by the DVR configuration and puts all "
- "recordings done by this entry into the specified "
- "subdirectory. See Help for more info."),
+ "defined in the DVR configuration and puts all "
+ "recordings done by this entry into the "
+ "subdirectory named here. See Help for more info."),
.off = offsetof(dvr_autorec_entry_t, dae_directory),
},
{
.type = PT_STR,
.id = "tag",
.name = N_("Channel tag"),
- .desc = N_("A channel tag (e.g. a group of channels) on which "
+ .desc = N_("A channel tag (e.g. a group of channels) to which "
"this rule applies."),
.set = dvr_autorec_entry_class_tag_set,
.get = dvr_autorec_entry_class_tag_get,
.id = "content_type",
.name = N_("Content type"),
.desc = N_("The content type (Movie/Drama, Sports, etc.) to "
- "be used to filter matching events/programmes."),
+ "be used to filter matching events/programs."),
.list = dvr_autorec_entry_class_content_type_list,
.off = offsetof(dvr_autorec_entry_t, dae_content_type),
.opts = PO_ADVANCED
.islist = 1,
.id = "weekdays",
.name = N_("Days of week"),
- .desc = N_("Days of the week which the rule should apply."),
+ .desc = N_("Days of the week to which the rule should apply."),
.set = dvr_autorec_entry_class_weekdays_set,
.get = dvr_autorec_entry_class_weekdays_get_,
.list = dvr_autorec_entry_class_weekdays_list,
.id = "minduration",
.name = N_("Minimum duration"),
.desc = N_("The minimal duration of a matching event - in "
- "other words, only match programmes that are no "
+ "other words, only match programs that are no "
"shorter than this duration."),
.list = dvr_autorec_entry_class_minduration_list,
.off = offsetof(dvr_autorec_entry_t, dae_minduration),
.type = PT_STR,
.id = "creator",
.name = N_("Creator"),
- .desc = N_("The user who created the recording or the "
+ .desc = N_("The user who created the recording, or the "
"auto-recording source and IP address if scheduled "
"by a matching rule."),
.off = offsetof(dvr_autorec_entry_t, dae_creator),
.id = "pre-extra-time",
.name = N_("Pre-recording padding"),
.desc = N_("Start recording earlier than the defined "
- "start time by x minutes, for example if a program "
- "is to start at 13:00 and you set a padding of 5 "
+ "Start recording earlier than the defined start "
+ "time by x minutes: for example, if a program is "
+ "to start at 13:00 and you set a padding of 5 "
"minutes it will start recording at 12:54:30 "
- "(including a warming-up time of 30 seconds). If this "
- "isn't set the pre-recording padding if set in the "
- "channel or DVR entry will be used."),
+ "(including a warm-up time of 30 seconds). If this "
+ "isn't specified, any pre-recording padding as set "
+ "in the channel or DVR entry will be used."),
.off = offsetof(dvr_config_t, dvr_extra_time_pre),
.list = dvr_config_class_extra_list,
.opts = PO_ADVANCED,
.id = "epg-running",
.name = N_("Use EPG running state"),
.desc = N_("Use EITp/f to decide event start/stop. This is "
- "also known as accurate recording. Note that this "
- "can have unexpected results if the broadcaster "
- "isn`t very good at time keeping."),
+ "also known as \"Accurate Recording\". Note that "
+ "this can have unexpected results if the "
+ "broadcaster isn't very good at time keeping."),
.off = offsetof(dvr_config_t, dvr_running),
.opts = PO_ADVANCED,
.def.u32 = 1,
.id = "day-dir",
.name = N_("Make subdirectories per day"),
.desc = N_("Create a new directory per day in the "
- "recording system path. Only days when anything is "
- "recorded will the folder be created. The format of the "
- "directory will be ISO standard YYYY-MM-DD."),
+ "recording system path. Folders will only be "
+ "created when something is recorded. The format "
+ "of the directory will be ISO standard YYYY-MM-DD."),
.off = offsetof(dvr_config_t, dvr_dir_per_day),
.opts = PO_EXPERT,
.group = 4,
.desc = N_("Create a directory per channel when "
"storing recordings. If both this and the 'directory "
"per day' checkbox is enabled, the date-directory "
- "will be parent to the per-channel directory."),
+ "will be the parent of the per-channel directory."),
.off = offsetof(dvr_config_t, dvr_channel_dir),
.opts = PO_EXPERT,
.group = 4,
.type = PT_BOOL,
.id = "omit-title",
.name = N_("Don't include title in filename"),
- .desc = N_("Don`t include the title in the filename."),
+ .desc = N_("Don't include the title in the filename."),
.off = offsetof(dvr_config_t, dvr_omit_title),
.opts = PO_EXPERT,
.group = 6,
.type = PT_TIME,
.id = "start_extra",
.name = N_("Pre-recording padding"),
- .desc = N_("Start recording earlier than the EPG/timer defined "
- "start time by x minutes, for example if a program "
- "is to start at 13:00 and you set a padding of 5 "
- "minutes it will start recording at 12:54:30 "
- "(including a warming-up time of 30 seconds). If this "
- "isn't set the pre-recording padding if set in the "
- "channel or DVR profile will be used."),
+ .desc = N_("Start recording earlier than the "
+ "EPG/timer-defined start time by x minutes: for "
+ "example, if a program is to start at 13:00 and "
+ "you set a padding of 5 minutes, it will start "
+ "recording at 12:54:30 (including a warm-up time "
+ "of 30 seconds). If this isn't specified, any "
+ "pre-recording padding as set in the channel or "
+ "DVR profile will be used."),
.off = offsetof(dvr_entry_t, de_start_extra),
.set = dvr_entry_class_start_extra_set,
.list = dvr_entry_class_extra_list,
.type = PT_TIME,
.id = "duration",
.name = N_("Duration"),
- .desc = N_("The total recording time including pre and post "
+ .desc = N_("The total recording time including pre- and post-"
"recording padding."),
.get = dvr_entry_class_duration_get,
.opts = PO_RDONLY | PO_NOSAVE | PO_DURATION,
.type = PT_STR,
.id = "creator",
.name = N_("Creator"),
- .desc = N_("The user who created the recording or the "
+ .desc = N_("The user who created the recording, or the "
"auto-recording source and IP address if scheduled "
"by a matching rule."),
.off = offsetof(dvr_entry_t, de_creator),
.type = PT_BOOL,
.id = "noresched",
.name = N_("Don't reschedule"),
- .desc = N_("Don`t re-schedule if recording fails."),
+ .desc = N_("Don't re-schedule if recording fails."),
.off = offsetof(dvr_entry_t, de_dont_reschedule),
.opts = PO_HIDDEN | PO_NOUI,
},
.type = PT_BOOL,
.id = "norerecord",
.name = N_("Don't re-record"),
- .desc = N_("Don`t re-record if recording fails."),
+ .desc = N_("Don't re-record if recording fails."),
.off = offsetof(dvr_entry_t, de_dont_rerecord),
.opts = PO_HIDDEN | PO_ADVANCED,
},
.type = PT_STR,
.id = "timerec",
.name = N_("Auto time record"),
- .desc = N_("Timer based automatic recording."),
+ .desc = N_("Timer-based automatic recording."),
.set = dvr_entry_class_timerec_set,
.get = dvr_entry_class_timerec_get,
.opts = PO_RDONLY | PO_EXPERT,
.type = PT_STR,
.id = "timerec_caption",
.name = N_("Time record caption"),
- .desc = N_("Timer based automatic record caption."),
+ .desc = N_("Timer-based automatic record caption."),
.get = dvr_entry_class_timerec_caption_get,
.opts = PO_RDONLY | PO_NOSAVE | PO_HIDDEN | PO_NOUI,
},
.type = PT_STR,
.id = "start",
.name = N_("Start"),
- .desc = N_("Time to start the recording/Time the recording started."),
+ .desc = N_("Time to start the recording/time the recording started."),
.set = dvr_timerec_entry_class_start_set,
.get = dvr_timerec_entry_class_start_get,
.list = dvr_timerec_entry_class_time_list,
.type = PT_STR,
.id = "stop",
.name = N_("Stop"),
- .desc = N_("Time to stop recording/Time the recording stopped."),
+ .desc = N_("Time to stop recording/time the recording stopped."),
.set = dvr_timerec_entry_class_stop_set,
.get = dvr_timerec_entry_class_stop_get,
.list = dvr_timerec_entry_class_time_list,
.type = PT_STR,
.id = "creator",
.name = N_("Creator"),
- .desc = N_("The user who created the recording or the "
+ .desc = N_("The user who created the recording, or the "
"auto-recording source and IP address if scheduled "
"by a matching rule."),
.off = offsetof(dvr_timerec_entry_t, dte_creator),
.type = PT_U32,
.id = "iptv_buffer_limit",
.name = N_("Buffering limit (ms)"),
- .desc = N_("Specifies the incoming buffering limit in milliseconds (PCR based). "
- "If PCR time difference from the system clock is higher, the incoming "
- "stream is paused."),
+ .desc = N_("Specifies the incoming buffering limit in "
+ "milliseconds (PCR based). If the PCR time "
+ "difference from the system clock is higher than "
+ "this, the incoming stream is paused."),
.off = offsetof(iptv_mux_t, mm_iptv_buffer_limit),
.opts = PO_ADVANCED,
},
.id = "initscan",
.name = N_("Initial scan"),
.desc = N_("Allow the initial scan tuning on this device "
- "(scan when Tvheadend starts). See Skip Initial "
- "Scan in the network settings for further details."),
+ "(scan when Tvheadend starts). See 'Skip Initial "
+ "Scan' in the network settings for further details."),
.off = offsetof(mpegts_input_t, mi_initscan),
.def.i = 1,
.opts = PO_ADVANCED,
.type = PT_STR,
.id = "name",
.name = N_("Name"),
- .desc = N_("The name (or freq) the mux is on."),
+ .desc = N_("The name (or frequency) the mux is on."),
.opts = PO_RDONLY | PO_NOSAVE,
.get = mpegts_mux_class_get_name,
},
.type = PT_U32,
.id = "frequency",
.name = N_("Frequency (kHz)"),
- .desc = N_("The frequency of the mux/transponder in Hertz,"),
+ .desc = N_("The frequency of the mux/transponder in Hertz."),
.off = offsetof(dvb_mux_t, lm_tuning.dmc_fe_freq),
.set = dvb_mux_dvbs_class_frequency_set,
},
.type = PT_BOOL,
.id = "skipinitscan",
.name = N_("Skip initial scan"),
- .desc = N_("Skip scanning known muxes on Tvheadend start. "
- "If initial scan is allowed and new muxes are "
- "found they will be scanned too. See Help for "
+ .desc = N_("Skip scanning known muxes when Tvheadend starts. "
+ "If \"initial scan\" is allowed and new muxes are "
+ "found then they will still be scanned. See Help for "
"more details."),
.off = offsetof(mpegts_network_t, mn_skipinitscan),
.opts = PO_EXPERT,
.id = "rewrite_pmt",
.name = N_("Rewrite PMT"),
.desc = N_("Rewrite PMT (Program Map Table) packets to only "
- "include information about the currently streamed "
+ "include information about the currently-streamed "
"service."),
.off = offsetof(profile_mpegts_t, pro_rewrite_pmt),
.opts = PO_ADVANCED,
.id = "rewrite_pat",
.name = N_("Rewrite PAT"),
.desc = N_("Rewrite PAT (Program Association Table) packets "
- "to only include information about the currently "
+ "to only include information about the currently-"
"streamed service."),
.off = offsetof(profile_mpegts_t, pro_rewrite_pat),
.opts = PO_ADVANCED,
.id = "rewrite_sdt",
.name = N_("Rewrite SDT"),
.desc = N_("Rewrite SDT (Service Description Table) packets "
- "to only include information about the currently "
+ "to only include information about the currently-"
"streamed service."),
.off = offsetof(profile_mpegts_t, pro_rewrite_sdt),
.opts = PO_ADVANCED,
.id = "rewrite_eit",
.name = N_("Rewrite EIT"),
.desc = N_("Rewrite EIT (Event Information Table) packets "
- "to only include information about the currently "
+ "to only include information about the currently-"
"streamed service."),
.off = offsetof(profile_mpegts_t, pro_rewrite_eit),
.opts = PO_ADVANCED,
.type = PT_U32,
.id = "vbitrate",
.name = N_("Video bitrate (kb/s) (0=auto)"),
- .desc = N_("Bitrate to use for the transcode. See help for "
+ .desc = N_("Bitrate to use for the transcode. See Help for "
"detailed information."),
.off = offsetof(profile_transcode_t, pro_vbitrate),
.opts = PO_ADVANCED,
.id = "acodec",
.name = N_("Audio codec"),
.desc = N_("Audio codec to use for the transcode. \"Do not "
- "use \" will disable audio output."),
+ "use\" will disable audio output."),
.off = offsetof(profile_transcode_t, pro_acodec),
.def.s = "libvorbis",
.list = profile_class_acodec_list,
.type = PT_INT,
.id = "priority",
.name = N_("Priority (-10..10)"),
- .desc = N_("Service priority. Enter a value between -10 and 10 "
- "Higher value indicates higher preference. See Help "
- "for more info."),
+ .desc = N_("Service priority. Enter a value between -10 and "
+ "10. A higher value indicates a higher preference. "
+ "See Help for more info."),
.off = offsetof(service_t, s_prio),
.opts = PO_ADVANCED
},
.desc = N_("Only activate timeshift when the client makes the first "
"rewind, fast-forward or pause request. Note, "
"because there is no buffer on the first request "
- "rewinding is not possible."),
+ "rewinding is not possible at that point."),
.off = offsetof(timeshift_conf_t, ondemand),
},
{
.name = N_("Maximum RAM size (MB)"),
.desc = N_("The maximum RAM (system memory) size for timeshift "
"buffers. When free RAM buffers are available, they "
- "are used instead storage to save the timeshift data."),
+ "are used for timeshift data in preference to using "
+ "storage."),
.set = timeshift_conf_class_ram_size_set,
.get = timeshift_conf_class_ram_size_get,
},
.type = PT_BOOL,
.id = "trace",
.name = N_("Debug trace (low-level)"),
- .desc = N_("Enable/disable including of low level debug traces."),
+ .desc = N_("Enable/disable inclusion of low-level debug traces."),
.get = tvhlog_class_trace_get,
.set = tvhlog_class_trace_set,
#if !ENABLE_TRACE
**This wizard should be run only on the initial setup. Please, cancel \
it, if you are not willing to touch the current configuration.**\
\
-\n\n**Notes**: \
-If you cannot see your preferred language in the language list and would \
+\n\n**Notes**:\n \
+* If you cannot see your preferred language in the language list and would \
like to help translate Tvheadend see \
[here](https://tvheadend.org/projects/tvheadend/wiki/Internationalization).\n\
-If you don't enter a preferred language, US English will be used as a default.\n\
-Not selecting the correct EPG \
+* If you don't enter a preferred language, US English will be used as a default.\n\
+* Not selecting the correct EPG \
language can result in garbled EPG text; if this happens, don't panic, \
as you can easily change it later.\n\
"))
.id = "ui_lang",
.name = N_("Language"),
.desc = N_("Select the default user interface language. "
- "This can be overridden later in access entries "
- "on a per user basis."),
+ "This can be overridden later in \"Access Entries\" "
+ "on a per-user basis."),
.get = wizard_get_value_ui_lang,
.set = wizard_set_value_ui_lang,
.list = language_get_ui_list,
This works alongside the second part, which is a familiar \
username/password combination, so provide these for both \
an administrator and regular (day-to-day) user. \
-\n\n**Notes**: \
-You may enter a comma-separated list of network prefixes (IPv4/IPv6).\n\
+\n\n**Notes**:\n \
+* You may enter a comma-separated list of network prefixes (IPv4/IPv6).\n\
if you were asked to enter a username and password during installation, \
we'd recommend not using the same details for a user here as it may cause \
unexpected behavior, incorrect permissions etc.\n\
-To allow anonymous access for any account (administrative or regular user) enter \
+* To allow anonymous access for any account (administrative or regular user) enter \
an asterisk (*) in the username and password fields. ___It is not___ \
recommended that you allow anonymous access to the admin account.\n\
-If you plan on accessing Tvheadend over the Internet, make sure you use \
-strong credentials and ___do not allow anonymous access at all___.\n\n\
+* If you plan on accessing Tvheadend over the Internet, make sure you use \
+strong credentials and ___do not allow anonymous access at all___.\n\
"))
wizard_page_t *wizard_login(const char *lang)
NETWORK_FCN(6)
DESCRIPTION_FCN(network, N_("\
-Select network type for detected tuners.\n\
-The T means terresterial, C is cable and S is satellite.\n\
-If you do not assign a network type to the tuner, the tuner\
-will not be used in TVH.\
+Now let's get your tuners configured. Go ahead and select a network for \
+each of the tuners you would like to use. if you do not assign a \
+network to a tuner it will __not__ be used.\n\
+\
+**Selecting the Right Network**:\n\
+Many tuners are able to receive different signal types. If you normally \
+receive your channels through an antenna (also known as an aerial) then \
+you would select the network under the tuners with DVB-T/ATSC-T/ISDB-T \
+in the name.\n\
+\
+If you receive your channels through a satellite dish then you would \
+select the network under the tuners with DVB-S/S2 in the name.\n\
+\
+If you receive your channels via a cable then you would select the network under the tuners with DVB-C/ATSC-C/ISDB-C in the name.\
+\
+**Notes**:\n\
+* Tuners already in use will not appear below.\n\
+* If using IPTV, the playlist you enter must contain valid links to \
+streams using codecs supported by Tvheadend.\n\
+* If you've configured Tvheadend before running this wizard, changes \
+you make via this wizard may not be applied.\
"))
}
DESCRIPTION_FCN(channels, N_("\
-You are finished now.\n\
-You may further customize your settings by editing channel numbers etc.\n\
+You are now finished.\n\
+You may further customize your settings by editing channel numbers, etc.\n\
If you confirm this dialog, the default administrator account will be\
-removed! Please, use credentals you defined through this wizard!\
+removed. Please then use credentals you defined thru this wizard.\
"))
DESCRIPTION_FCN(channels2, N_("\
-You are finished now.\n\
-You may further customize your settings by editing channel numbers etc.\
+You are now finished.\n\
+You may further customize your settings by editing channel numbers, etc.\
"))
wizard_page_t *wizard_channels(const char *lang)