Browse Source

Experimental L10N support in base and welcome templates. cc: #404

pull/406/head
Pēteris Caune 4 years ago
parent
commit
fd14e0e03b
No known key found for this signature in database GPG Key ID: E28D7679E9A9EDE2
5 changed files with 738 additions and 97 deletions
  1. +2
    -0
      hc/settings.py
  2. BIN
      locale/lv/LC_MESSAGES/django.mo
  3. +466
    -0
      locale/lv/LC_MESSAGES/django.po
  4. +46
    -18
      templates/base.html
  5. +224
    -79
      templates/front/welcome.html

+ 2
- 0
hc/settings.py View File

@ -66,6 +66,7 @@ MIDDLEWARE = (
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
"django.middleware.locale.LocaleMiddleware",
"hc.accounts.middleware.TeamAccessMiddleware",
)
@ -146,6 +147,7 @@ USE_TZ = True
TIME_ZONE = "UTC"
USE_I18N = True
USE_L10N = True
LOCALE_PATHS = (os.path.join(BASE_DIR, "locale"),)
SITE_ROOT = os.getenv("SITE_ROOT", "http://localhost:8000")
SITE_NAME = os.getenv("SITE_NAME", "Mychecks")


BIN
locale/lv/LC_MESSAGES/django.mo View File


+ 466
- 0
locale/lv/LC_MESSAGES/django.po View File

@ -0,0 +1,466 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# FULL NAME <EMAIL@ADDRESS>, 2020.
# Pēteris Caune <[email protected]>, 2020.
#
msgid ""
msgstr ""
"Project-Id-Version: 1.16-dev\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-21 19:32+0000\n"
"PO-Revision-Date: 2020-07-21 22:55+0300\n"
"Last-Translator: Pēteris Caune <[email protected]>\n"
"Language-Team: lv <>\n"
"Language: lv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
"2);\n"
"X-Generator: Gtranslator 3.36.0\n"
#: templates/base.html:5
#, python-format
msgid ""
"%(site_name)s - Monitor Cron Jobs. Get Notified When Your Cron Jobs Fail"
msgstr ""
"%(site_name)s - uzrauga cron darbus. Sūta brīdinājumus, kad tie nenotiek "
"laikā"
#: templates/base.html:65
msgid "Toggle navigation"
msgstr "Pārslēgt navigāciju"
#: templates/base.html:99
msgid "Checks"
msgstr "Detektori"
#: templates/base.html:106 templates/front/welcome.html:368
msgid "Integrations"
msgstr "Integrācijas"
#: templates/base.html:114
msgid "Badges"
msgstr "Nozīmītes"
#: templates/base.html:120
msgid "Settings"
msgstr "Iestatījumi"
#: templates/base.html:131 templates/base.html:135
msgid "Pricing"
msgstr "Cenas"
#: templates/base.html:143
msgid "Docs"
msgstr "Dokumentācija"
#: templates/base.html:150
msgid "Account"
msgstr "Konts"
#: templates/base.html:156
#| msgid "Simple Configuration"
msgid "Site Administration"
msgstr "Administrācija"
#: templates/base.html:162
msgid "Projects"
msgstr "Projekti"
#: templates/base.html:182
msgid "Account Settings"
msgstr "Konta iestatījumi"
#: templates/base.html:187
msgid "Log Out"
msgstr "Atteikties"
#: templates/base.html:195
#| msgid "Sign Up"
msgid "Sign In"
msgstr "Pierakstīties"
#: templates/base.html:204 templates/front/welcome.html:710
msgid "Sign Up"
msgstr "Reģistrēties"
#: templates/base.html:225
msgid "Powered by Healthchecks open-source project"
msgstr "Healthchecks atvērtā koda projekts"
#: templates/front/welcome.html:5
msgid ""
"Cron Monitoring. Monitor nightly backups, weekly reports, cron jobs and "
"background tasks. Receive alerts when your tasks don't run on time."
msgstr ""
"Cron darbu pārraudzība. Uzraugi rezerves kopiju veidošanu, iknedēļas "
"atskaišu ģenerēšanu, cron darbus, fona darbus. Saņem brīdinājumus, kad tie "
"nenotiek laikā."
#: templates/front/welcome.html:19
msgid ""
"Monitoring for your nightly backups, weekly reports, cron jobs and "
"background tasks."
msgstr "Rezerves kopiju, iknedēļas atskaišu, cron darbu uzraudzība."
#: templates/front/welcome.html:27
msgid "Make HTTP requests to the Ping URL at regular intervals."
msgstr "Ar regulāru intervālu sūti HTTP pieprasījumus uz ping adresi."
#: templates/front/welcome.html:29
#, python-format
msgid ""
"When the URL is not pinged on time, %(site_name)s will send you an alert."
msgstr "Kad pieprasījums netiek saņemts laikā, %(site_name)s ceļ trauksmi."
#: templates/front/welcome.html:35
msgid "You can monitor any service that can make HTTP requests or send emails."
msgstr ""
"Šādi iespējams pārraudzīt jebkuru servisu, kurš ir spējīgs sūtīt HTTP "
"pieprasījumus vai epastus."
#: templates/front/welcome.html:40
#, python-format
msgid ""
"For each of your periodic tasks, %(site_name)s provides an unique URL "
"similar to this one:"
msgstr ""
"Katram pārraugāmajam servisam %(site_name)s sagatavo unikālu ping adresi, "
"līdzīgu šai:"
#: templates/front/welcome.html:79
msgid "Browser"
msgstr "Pārlūkprogramma"
#: templates/front/welcome.html:85 templates/front/welcome.html:378
msgid "Email"
msgstr "E-pasts"
#: templates/front/welcome.html:124
msgid ""
"As an alternative to HTTP requests, you can also report \"liveness\" by "
"<strong>sending email messages</strong>."
msgstr ""
"Papildus HTTP pieprasījumiem, servisi par sevi var ziņot sūtot "
"<strong>epastu</strong>."
#: templates/front/welcome.html:131
#, python-format
msgid ""
"You can instruct %(site_name)s to look for a particular keyword in the "
"subject line. This is handy when your backup software sends an email after "
"every run, and uses a different subject line depending on success or failure."
msgstr ""
"Iespējams norādīt atslēgvārdu, kuru %(site_name)s meklēs epasta tematā. Tas "
"ir parocīgi, piemēram, ja dublējumu programmatūra pēc katra dublējuma "
"izveidošanas sūta epastu ar rezultātu epasta tematā."
#: templates/front/welcome.html:151
#, python-format
msgid ""
"%(site_name)s monitors the heartbeat messages sent by your cron jobs, "
"services and APIs. Get immediate alerts when they don't arrive on schedule."
msgstr ""
"%(site_name)s seko ping signāliem no pārraugāmajiem cron darbiem un "
"servisiem, un izsūta brīdinājumus tiklīdz kāds no signāliem neierodas laikā."
#: templates/front/welcome.html:158
msgid "Sign Up – It's Free"
msgstr "Reģistrējies (bezmaksas)"
#: templates/front/welcome.html:170
msgid "A quick peek of what's inside:"
msgstr "Ieskatam:"
#: templates/front/welcome.html:185
msgid "Live-updating Dashboard"
msgstr "Informācijas panelis"
#: templates/front/welcome.html:188
msgid ""
"A list of your checks, one for each Cron job, daemon or scheduled task you "
"want to monitor."
msgstr ""
"Detektoru saraksts. Katram cron darbam vai servisam, ko nepieciešams "
"uzraudzīt, atbilst viens detektors."
#: templates/front/welcome.html:194
msgid ""
"Give names and assign tags to your checks to easily recognize them later."
msgstr ""
"Detektoriem var piešķirt nosaukumus un birkas, lai tos būtu viegli atpazīt "
"un atšķirt."
#: templates/front/welcome.html:200
msgid "Tap on the integration icons to toggle them on and off."
msgstr "Uz integrāciju ikonām var klikšķināt lai tās ieslēgtu un izslēgtu."
#: templates/front/welcome.html:205
msgid ""
"Adjust Period and Grace time to match the periodicity and duration of your "
"tasks."
msgstr ""
"Periodu un pagarinājuma laiku jānorāda tā, lai tie atbilstu uzraugāmo darbu "
"biežumam un ilgumam."
#: templates/front/welcome.html:222
msgid "Simple Configuration"
msgstr "Vienkārša konfigurācija"
#: templates/front/welcome.html:223
msgid ""
"Each check has configurable <strong>Period</strong> and <strong>Grace Time</"
"strong> parameters. Depending on these parameters and time since the last "
"ping, the check is in one of the following states:"
msgstr ""
"Katram detektoram var iestatīt <strong>periodu</strong> un "
"<strong>pagarinājuma laiku</strong>. Atkarībā no šo parametru vērtībām un "
"saņemtajiem ping signāliem, detektors atrodas vienā no stāvokļiem:"
#: templates/front/welcome.html:235
msgid "New. A check that has been created, but has not received any pings yet."
msgstr "Jauns. Vēl nav saņēmis nevienu ping signālu."
#: templates/front/welcome.html:246
msgid "Up. Time since last ping has not exceeded <strong>Period</strong>."
msgstr ""
"Viss kārtībā. Laika intervāls kopš pēdējā saņemtā ping signāla nav "
"pārniedzis iestatīto <strong>periodu</strong>."
#: templates/front/welcome.html:257
msgid ""
"Late. Time since last ping has exceeded <strong>Period</strong>, but has not "
"yet exceeded <strong>Period</strong> + <strong>Grace</strong>."
msgstr ""
"Kavējas. Laika intervāls kopš pēdējā saņemtā signāla ir pārsniedzis "
"<strong>periodu</strong>, bet vēl nav pārsniedzis <strong>periodu</strong> + "
"<strong>pagarinājuma laiku</strong>."
#: templates/front/welcome.html:269
#, python-format
msgid ""
"Down. Time since last ping has exceeded <strong>Period</strong> + "
"<strong>Grace</strong>. When check goes from \"Late\" to \"Down\", "
"%(site_name)s sends you a notification."
msgstr ""
"Trauksme. Laika intervāls kopš pēdējā saņemtā signāla ir pārsniedzis "
"<strong>periodu</strong> + <strong>pagarinājuma laiku</strong>. Kad "
"detektora statuss izmainās no \"Kavējas\" uz \"Trauksme\", %(site_name)s "
"izsūta brīdinājumus."
#: templates/front/welcome.html:291
msgid "Cron Expression Support"
msgstr "Cron izteiksmes"
#: templates/front/welcome.html:293
msgid ""
"Alternatively, you can define the expected ping dates and times using a cron "
"expression. See"
msgstr ""
"Sagaidāmos signālu laikus iespējams norādīt arī lietojot cron izteiksmes. "
"Skatiet"
#: templates/front/welcome.html:298
msgid "Cron Syntax Cheatsheet"
msgstr "cron sintakses paraugus,"
#: templates/front/welcome.html:300
msgid "for the supported syntax features."
msgstr "lai iepazītos ar iespējām."
#: templates/front/welcome.html:305
msgid ""
"<strong>Grace Time</strong> specifies how \"late\" a ping can be before you "
"will be alerted. Set it to be a little above the expected duration of your "
"cron job."
msgstr ""
"<strong>Pagarinājuma laiks</strong> norāda, cik ilgi ping signālam "
"pieļaujams kavēties. Ieteicams norādīt laika intervālu, kas nedaudz "
"pārsniedz cron darba tipisko izpildes ilgumu."
#: templates/front/welcome.html:323
msgid "Details and Event Log"
msgstr "Apraksts un notikumu žurnāls"
#: templates/front/welcome.html:325
msgid ""
"You can add a longer, free-form description to each check. Leave notes and "
"pointers for yourself and for your team."
msgstr ""
"Katram detektoram iespējams pievienot garāku aprakstu brīvā formātā. Tajā "
"var iekļaut sev un kolēģiem noderīgas piezīmes."
#: templates/front/welcome.html:332
msgid ""
"You can also see the log of received pings and sent \"Down\" notifications."
msgstr "Tiek uzturēts saņemto ping signālu un izsūtīto brīdinājumu žurnāls."
#: templates/front/welcome.html:349
msgid "Public Status Badges"
msgstr "Publiskas statusa nozīmītes"
#: templates/front/welcome.html:351
#, python-format
msgid ""
"%(site_name)s provides status badges for each of the tags you have used. "
"Additionally, the \"%(site_name)s\" badge shows the overall status of all "
"checks in your account."
msgstr ""
"Katrai detektoru birkai atbilst statusa nozīmīte. Pieejama arī kopējā "
"%(site_name)s statusa nozīmīte, kas rāda visu detektoru kopējo statusu."
#: templates/front/welcome.html:358
msgid ""
"The badges have public, but hard-to-guess URLs. You can use them in your "
"READMEs, dashboards or status pages."
msgstr ""
"Statusa nozīmītēm ir publiskas, bet grūti uzminamas adreses. Tās var lietot "
"README dokumentos, informācijas paneļos un statusa lapās."
#: templates/front/welcome.html:370
msgid "Set up multiple ways to get notified:"
msgstr "Dažādas iespējas, kā saņemt brīdinājumus:"
#: templates/front/welcome.html:400 templates/front/welcome.html:408
#: templates/front/welcome.html:432 templates/front/welcome.html:444
#: templates/front/welcome.html:455 templates/front/welcome.html:465
#: templates/front/welcome.html:584 templates/front/welcome.html:618
#: templates/front/welcome.html:629
msgid "Chat"
msgstr "Tērzēšana"
#: templates/front/welcome.html:420 templates/front/welcome.html:526
#: templates/front/welcome.html:538
msgid "Push Notifications"
msgstr "Pašpiegādes paziņojumi"
#: templates/front/welcome.html:475 templates/front/welcome.html:486
#: templates/front/welcome.html:494 templates/front/welcome.html:505
#: templates/front/welcome.html:573 templates/front/welcome.html:607
msgid "Incident Management"
msgstr "Incidentu pārvaldība"
#: templates/front/welcome.html:515
msgid "Event Monitoring"
msgstr "Sistēmu uzraudzība"
#: templates/front/welcome.html:549
msgid "Shell Commands"
msgstr "Shell komandas"
#: templates/front/welcome.html:561
msgid "SMS"
msgstr "SMS"
#: templates/front/welcome.html:596
msgid "Project Management"
msgstr "Projektu vadība"
#: templates/front/welcome.html:638
#, python-format
msgid "What Can I Monitor With %(site_name)s?"
msgstr "Kur var pielietot %(site_name)s?"
#: templates/front/welcome.html:644
msgid "Cron Jobs"
msgstr "Cron darbi"
#: templates/front/welcome.html:646
#, python-format
msgid ""
"%(site_name)s monitoring is a great fit for cron jobs and cron-like systems "
"(systemd timers, Jenkins build jobs, Windows Scheduled Tasks, wp-cron, uwsgi "
"cron-like interface, Heroku Scheduler, ...). A failed cron job often has no "
"immediate visible consequences, and can go unnoticed for a long time."
msgstr ""
"%(site_name)s ir īpaši pielāgots cron darbu un līdzīgu uzdevumu (systemd "
"taimeri, Jenkins būvējumi, Windows Scheduled Tasks, wp-cron, uwsgi cron "
"funkcionalitāte, Heroku Scheduler, ...) pārraudzībai. Cron darbu avārijām "
"bieži nav redzamu seku, un tās var ilgi palikt nepamanītas."
#: templates/front/welcome.html:655 templates/front/welcome.html:679
msgid "Specific examples:"
msgstr "Piemēri:"
#: templates/front/welcome.html:657
msgid "Filesystem backups"
msgstr "Failu sistēmu dublējumi"
#: templates/front/welcome.html:658
msgid "Database backups"
msgstr "Datubāzu dublējumi"
#: templates/front/welcome.html:659
msgid "Daily, weekly, monthly report emails"
msgstr "Ikdienas, iknedēļas vai ikmēneša atskaišu epasti"
#: templates/front/welcome.html:660
msgid "SSL renewals"
msgstr "SSL sertifikātu atjaunošana"
#: templates/front/welcome.html:661
msgid "Business data import and sync"
msgstr "Biznesa datu imports un sinhronizācija"
#: templates/front/welcome.html:662
msgid "Antivirus scans"
msgstr "Antivīrusa darbība"
#: templates/front/welcome.html:663
msgid "Dynamic DNS updates"
msgstr "DDNS klienta darbība"
#: templates/front/welcome.html:667
msgid "Processes, Services, Servers"
msgstr "Procesu, servisu, serveru uzraudzība"
#: templates/front/welcome.html:670
#, python-format
msgid ""
"%(site_name)s monitoring can be used for lightweight server monitoring: "
"ensuring a particular system service, or the server as a whole is alive and "
"healthy. Write a shell script that checks for a specific condition, and "
"pings %(site_name)s if successful. Run the shell script regularly."
msgstr ""
"%(site_name)s var pielieot vienkāršai serveru un atsevišķu procesu "
"uzraudzībai. To dara, izveidojot shell skriptu, kas pārbauda kādu sistēmas "
"parametru un nosūta ping signālu %(site_name)s, un pievienojot šo skriptu "
"sistēmas cron darbiem."
#: templates/front/welcome.html:681
msgid "Check a specific docker container is running"
msgstr "Pārbaude, vai kāds noteikts Docker konteiners strādā"
#: templates/front/welcome.html:682
msgid "Check a specific application process is running"
msgstr "Pārbaude, vai kāda noteikta aplikācija strādā"
#: templates/front/welcome.html:683
msgid "Check database replication lag"
msgstr "Datubāzes replikācijas aiztures pārbaude"
#: templates/front/welcome.html:684
msgid "Check system resources: free disk, free RAM, ..."
msgstr "Sistēmas resursu (brīvā atmiņa, ...) pārbaude"
#: templates/front/welcome.html:686
msgid ""
"Send simple, unconditional \"I'm alive\" messages from your server (or your "
"NAS, router, Raspberry Pi, ...)"
msgstr ""
"Regulāri beznosacījuma signāli no servera (vai NAS, vai maršrutētāja, vai "
"Raspberry Pi, ...)"
#: templates/front/welcome.html:702
#, python-format
msgid ""
"%(site_name)s is a <strong>free</strong> and <a href=\"https://github.com/"
"healthchecks/healthchecks\">open source</a> service. Setting up monitoring "
"for your cron jobs only takes minutes. Start sleeping better at nights!"
msgstr ""
"%(site_name)s ir <strong>bezmaksas</strong> un <a href=\"https://github.com/"
"healthchecks/healthchecks\">atvērta koda</a> serviss. Tā ieviešana prasa "
"tikai dažas minūtes. Ar %(site_name)s naktīs labāk nāk miegs!"

+ 46
- 18
templates/base.html View File

@ -1,8 +1,8 @@
<!DOCTYPE html>{% load compress static hc_extras %}
<!DOCTYPE html>{% load compress i18n static hc_extras %}
<html lang="en">
<head>
<meta charset="utf-8">
<title>{% block title %}{{ site_name }} - Monitor Cron Jobs. Get Notified When Your Cron Jobs Fail{% endblock %}</title>
<title>{% block title %}{% blocktrans trimmed %}{{ site_name }} - Monitor Cron Jobs. Get Notified When Your Cron Jobs Fail{% endblocktrans %}{% endblock %}</title>
{% block description %}
<meta name="description" content="Monitor and Get Notified When Your Cron Jobs Fail. Free alternative to Cronitor and Dead Man's Snitch.">
{% endblock %}
@ -62,7 +62,7 @@
data-target="#navbar"
aria-expanded="false"
aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="sr-only">{% trans "Toggle navigation" %}</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
@ -95,24 +95,30 @@
{% if project %}
<ul id="nav-main-sections" class="nav navbar-nav">
<li {% if page == 'checks' %} class="active" {% endif %}>
<a href="{% url 'hc-checks' project.code %}">Checks</a>
<a href="{% url 'hc-checks' project.code %}">
{% trans "Checks" %}
</a>
</li>
{% with b=project.have_channel_issues %}
<li {% if b %}id="broken-channels"{% endif %} {% if page == 'channels' %}class="active"{% endif %}>
<a href="{% url 'hc-p-channels' project.code %}">
Integrations
{% trans "Integrations" %}
{% if b %}<span class="icon-grace"></span>{% endif %}
</a>
</li>
{% endwith %}
<li {% if page == 'badges' %} class="active" {% endif %}>
<a href="{% url 'hc-badges' project.code %}">Badges</a>
<a href="{% url 'hc-badges' project.code %}">
{% trans "Badges" %}
</a>
</li>
<li {% if page == 'project' %} class="active" {% endif %}>
<a href="{% url 'hc-project-settings' project.code %}">Settings</a>
<a href="{% url 'hc-project-settings' project.code %}">
{% trans "Settings" %}
</a>
</li>
</ul>
{% endif %}
@ -121,30 +127,40 @@
{% if show_pricing %}
<li {% if page == 'pricing' %} class="active" {% endif %}>
{% if project %}
<a href="{% url 'hc-p-pricing' project.code %}">Pricing</a>
<a href="{% url 'hc-p-pricing' project.code %}">
{% trans "Pricing" %}
</a>
{% else %}
<a href="{% url 'hc-pricing' %}">Pricing</a>
<a href="{% url 'hc-pricing' %}">
{% trans "Pricing" %}
</a>
{% endif %}
</li>
{% endif %}
<li {% if page == 'docs' %} class="active" {% endif %}>
<a href="{% url 'hc-docs' %}">Docs</a>
<a href="{% url 'hc-docs' %}">
{% trans "Docs" %}
</a>
</li>
{% if request.user.is_authenticated %}
<li class="dropdown">
<a id="nav-email" href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">
Account
{% trans "Account" %}
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
{% if request.user.is_superuser %}
<li><a href="{% url 'admin:index' %}">Site Administration</a></li>
<li><a href="{% url 'admin:index' %}">
{% trans "Site Administration" %}
</a></li>
<li role="separator" class="divider"></li>
{% endif %}
<li class="dropdown-header">Projects</li>
<li class="dropdown-header">
{% trans "Projects" %}
</li>
{% for project in request.profile.annotated_projects %}
<li class="project-item">
<a href="{% url 'hc-checks' project.code %}">
@ -161,19 +177,31 @@
<li role="separator" class="divider"></li>
<li class="dropdown-header">{{ request.user.email }}</li>
<li><a href="{% url 'hc-profile' %}">Account Settings</a></li>
<li><a href="{% url 'hc-logout' %}">Log Out</a></li>
<li>
<a href="{% url 'hc-profile' %}">
{% trans "Account Settings" %}
</a>
</li>
<li>
<a href="{% url 'hc-logout' %}">
{% trans "Log Out" %}
</a>
</li>
</ul>
</li>
{% elif page != "login" %}
<li><a href="{% url 'hc-login' %}">Sign In</a></li>
<li>
<a href="{% url 'hc-login' %}">
{% trans "Sign In" %}
</a>
</li>
{% endif %}
{% if registration_open %}
{% if page == "welcome" or page == "login" %}
<li>
<a id="nav-sign-up" href="#" data-toggle="modal" data-target="#signup-modal">
<span>Sign Up</span>
<span>{% trans "Sign Up" %}</span>
</a>
</li>
{% endif %}
@ -194,7 +222,7 @@
<div class="container{% if page == "checks" or page == "details" %}-fluid{% endif %}">
<ul>
<li>
Powered by Healthchecks open-source project
{% trans "Powered by Healthchecks open-source project" %}
(<a href="https://github.com/healthchecks/healthchecks">github</a>,
<a href="https://healthchecks.io">healthchecks.io</a>)
</li>


+ 224
- 79
templates/front/welcome.html View File

@ -1,8 +1,8 @@
{% extends "base.html" %}
{% load compress humanize static %}
{% load compress humanize i18n static %}
{% block description %}
<meta name="description" content="Cron Monitoring. Monitor nightly backups, weekly reports, cron jobs and background tasks. Receive alerts when your tasks don't run on time.">
<meta name="description" content="{% blocktrans %}Cron Monitoring. Monitor nightly backups, weekly reports, cron jobs and background tasks. Receive alerts when your tasks don't run on time.{% endblocktrans %}">
{% endblock %}
@ -16,28 +16,31 @@
<div class="row">
<div class="col-sm-12">
<h1 id="pitch">
Monitoring for your nightly backups,
weekly reports, cron jobs and background tasks.</h1>
{% trans "Monitoring for your nightly backups, weekly reports, cron jobs and background tasks." %}
</h1>
</div>
</div>
<div class="row">
<div class="col-sm-6 col-sm-push-6">
<p id="pitch-text">
Make HTTP requests to the Ping URL at regular intervals.
{% trans "Make HTTP requests to the Ping URL at regular intervals." %}
<strong>
{% blocktrans trimmed %}
When the URL is not pinged on time,
{{ site_name }} will send you an alert.
{% endblocktrans %}
</strong>
You can monitor any service that can make HTTP requests
or send emails.
{% trans "You can monitor any service that can make HTTP requests or send emails." %}
</p>
</div>
<div class="col-sm-6 col-sm-pull-6">
<h2 id="pitch-subtitle">
{% blocktrans trimmed %}
For each of your periodic tasks,
{{ site_name }} provides an unique URL similar to this one:
{% endblocktrans %}
</h2>
<div id="pitch-url">
<code>{{ ping_url }}</code>
@ -73,13 +76,13 @@
<a href="#cs" data-toggle="tab">C#</a>
</li>
<li class="hidden-xs">
<a href="#browser" data-toggle="tab">Browser</a>
<a href="#browser" data-toggle="tab">{% trans "Browser" %}</a>
</li>
<li class="hidden-xs">
<a href="#powershell" data-toggle="tab">PowerShell</a>
</li>
<li class="hidden-xs">
<a href="#email" data-toggle="tab">Email</a>
<a href="#email" data-toggle="tab">{% trans "Email" %}</a>
</li>
</ul>
<div class="tab-content">
@ -118,15 +121,19 @@
</div>
<div class="tab-pane tab-pane-email" id="email">
<p>
{% blocktrans trimmed %}
As an alternative to HTTP requests,
you can also report "liveness" by
<strong>sending email messages</strong>.
{% endblocktrans %}
</p>
<p>
{% blocktrans trimmed %}
You can instruct {{ site_name }} to look for a particular
keyword in the subject line. This is handy when your backup
software sends an email after every run, and uses a different
subject line depending on success or failure.
{% endblocktrans %}
</p>
</div>
</div>
@ -140,10 +147,15 @@
<div class="container">
<div class="row">
<div id="get-started" class="col-sm-8 col-sm-offset-2 text-center">
<h1>{{ site_name }} monitors the heartbeat messages sent by your cron jobs, services and APIs.
Get immediate alerts when they don't arrive on schedule. </h1>
<h1>
{% blocktrans trimmed %}
{{ site_name }} monitors the heartbeat messages sent by your cron
jobs, services and APIs. Get immediate alerts when they don't
arrive on schedule.
{% endblocktrans %}
</h1>
<a href="#" data-toggle="modal" data-target="#signup-modal" class="btn btn-lg btn-primary">
Sign Up – It's Free
{% trans "Sign Up – It's Free" %}
</a>
</div>
</div>
@ -154,7 +166,9 @@
<div class="container">
<div class="row">
<div class="col-sm-12">
<h2 class="tour-title">A quick peek of what's inside:</h2>
<h2 class="tour-title">
{% trans "A quick peek of what's inside:" %}
</h2>
</div>
</div>
@ -167,21 +181,31 @@
alt="My Checks page" />
</div>
<div class="col-sm-4">
<h3>Live-updating Dashboard</h3>
<h3>
{% trans "Live-updating Dashboard" %}
</h3>
<p>
{% blocktrans trimmed %}
A list of your checks, one for each Cron job, daemon or
scheduled task you want to monitor.
{% endblocktrans %}
</p>
<p>
{% blocktrans trimmed %}
Give names and assign tags to your checks to easily recognize
them later.
{% endblocktrans %}
</p>
<p>
{% blocktrans trimmed %}
Tap on the integration icons to toggle them on and off.
{% endblocktrans %}
</p>
<p>
{% blocktrans trimmed %}
Adjust Period and Grace time to match the
periodicity and duration of your tasks.
{% endblocktrans %}
</p>
</div>
</div>
@ -195,10 +219,12 @@
alt="Period/Grace Time dialog" />
</div>
<div class="col-sm-4">
<h3>Simple Configuration</h3>
<h3>{% trans "Simple Configuration" %}</h3>
{% blocktrans trimmed %}
Each check has configurable <strong>Period</strong> and <strong>Grace Time</strong> parameters.
Depending on these parameters and time since the last ping, the check is in one of the
following states:
{% endblocktrans %}
<table class="table">
<tr>
@ -206,8 +232,10 @@
<span class="status icon-new"></span>
</td>
<td>
{% blocktrans trimmed %}
New.
A check that has been created, but has not received any pings yet.
{% endblocktrans %}
</td>
</tr>
<tr>
@ -215,8 +243,10 @@
<span class="status icon-up"></span>
</td>
<td>
{% blocktrans trimmed %}
Up.
Time since last ping has not exceeded <strong>Period</strong>.
{% endblocktrans %}
</td>
</tr>
<tr>
@ -224,9 +254,11 @@
<span class="status icon-grace"></span>
</td>
<td>
{% blocktrans trimmed %}
Late.
Time since last ping has exceeded <strong>Period</strong>,
but has not yet exceeded <strong>Period</strong> + <strong>Grace</strong>.
{% endblocktrans %}
</td>
</tr>
<tr>
@ -234,10 +266,12 @@
<span class="status icon-down"></span>
</td>
<td>
{% blocktrans trimmed %}
Down.
Time since last ping has exceeded <strong>Period</strong> + <strong>Grace</strong>.
When check goes from "Late" to "Down", {{ site_name }}
sends you a notification.
{% endblocktrans %}
</td>
</tr>
</table>
@ -254,17 +288,25 @@
alt="Cron dialog" />
</div>
<div class="col-sm-4">
<h3>Cron Expression Support</h3>
<h3>{% trans "Cron Expression Support" %}</h3>
<p>
{% blocktrans trimmed %}
Alternatively, you can define the expected ping dates and times
using a cron expression. See
<a href="{% url 'hc-docs-cron' %}">Cron Syntax Cheatsheet</a>
{% endblocktrans %}
<a href="{% url 'hc-docs-cron' %}">
{% trans "Cron Syntax Cheatsheet" %}
</a>
{% blocktrans trimmed %}
for the supported syntax features.
{% endblocktrans %}
</p>
<p>
{% blocktrans trimmed %}
<strong>Grace Time</strong> specifies how "late" a ping can
be before you will be alerted. Set it to be a little above
the expected duration of your cron job.
{% endblocktrans %}
</p>
</div>
</div>
@ -278,15 +320,19 @@
alt="Details Page" />
</div>
<div class="col-sm-4">
<h3>Details and Event Log</h3>
<h3>{% trans "Details and Event Log" %}</h3>
<p>
{% blocktrans trimmed %}
You can add a longer, free-form description to each
check. Leave notes and pointers for yourself and
for your team.
{% endblocktrans %}
</p>
<p>
{% blocktrans trimmed %}
You can also see the log of received pings and
sent "Down" notifications.
{% endblocktrans %}
</p>
</div>
</div>
@ -300,29 +346,37 @@
alt="Details Page" />
</div>
<div class="col-sm-4">
<h3>Public Status Badges</h3>
<h3>{% trans "Public Status Badges" %}</h3>
<p>
{% blocktrans trimmed %}
{{ site_name }} provides status badges for each of the tags
you have used. Additionally, the "{{ site_name }}" badge
shows the overall status of all checks in your account.
{% endblocktrans %}
</p>
<p>
{% blocktrans trimmed %}
The badges have public, but hard-to-guess URLs.
You can use them in your READMEs, dashboards or status pages.
{% endblocktrans %}
</p>
</div>
</div>
<div id="welcome-integrations" class="row">
<div class="col-sm-12">
<h1>Integrations<br>
<small>Set up multiple ways to get notified:</small>
<h1>{% trans "Integrations" %}<br>
<small>
{% trans "Set up multiple ways to get notified:" %}
</small>
</h1>
</div>
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/email.png' %}" class="icon" alt="" />
<h3>Email<br><small>&nbsp;</small>
<h3>
{% trans "Email" %}<br>
<small>&nbsp;</small>
</h3>
</div>
</div>
@ -330,7 +384,10 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/webhook.png' %}" class="icon" alt="" />
<h3>Webhooks<br><small>&nbsp;</small></h3>
<h3>
Webhooks<br>
<small>&nbsp;</small>
</h3>
</div>
</div>
@ -338,12 +395,18 @@
{% if enable_slack_btn %}
<a href="{% url 'hc-slack-help' %}" class="integration">
<img src="{% static 'img/integrations/slack.png' %}" class="icon" alt="" />
<h3>Slack<br><small>Chat</small></h3>
<h3>
Slack<br>
<small>{% trans "Chat" %}</small>
</h3>
</a>
{% else %}
<div class="integration">
<img src="{% static 'img/integrations/slack.png' %}" class="icon" alt="" />
<h3>Slack<br><small>Chat</small></h3>
<h3>
Slack<br>
<small>{% trans "Chat" %}</small>
</h3>
</div>
{% endif %}
</div>
@ -352,7 +415,10 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/apprise.png' %}" class="icon" alt="" />
<h3>Apprise<br><small>Push Notifications</small></h3>
<h3>
Apprise<br>
<small>{% trans "Push Notifications" %}</small>
</h3>
</div>
</div>
{% endif %}
@ -361,7 +427,10 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/discord.png' %}" class="icon" alt="" />
<h3>Discord<br><small>Chat</small></h3>
<h3>
Discord<br>
<small>{% trans "Chat" %}</small>
</h3>
</div>
</div>
{% endif %}
@ -370,7 +439,10 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/matrix.png' %}" class="icon" alt="" />
<h3>Matrix<br><small>Chat</small></h3>
<h3>
Matrix<br>
<small>{% trans "Chat" %}</small>
</h3>
</div>
</div>
{% endif %}
@ -378,21 +450,30 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/mattermost.png' %}" class="icon" alt="" />
<h3>Mattermost<br><small>Chat</small></h3>
<h3>
Mattermost<br>
<small>{% trans "Chat" %}</small>
</h3>
</div>
</div>
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/msteams.png' %}" class="icon" alt="" />
<h3>Microsoft Teams<br><small>Chat</small></h3>
<h3>
Microsoft Teams<br>
<small>{% trans "Chat" %}</small>
</h3>
</div>
</div>
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/opsgenie.png' %}" class="icon" alt="" />
<h3>OpsGenie<br><small>Incident Management</small></h3>
<h3>
OpsGenie<br>
<small>{% trans "Incident Management" %}</small>
</h3>
</div>
</div>
@ -400,12 +481,18 @@
{% if enable_pdc %}
<a href="{% url 'hc-pdc-help' %}" class="integration">
<img src="{% static 'img/integrations/pd.png' %}" class="icon" alt="" />
<h3>PagerDuty<br><small>Incident Management</small></h3>
<h3>
PagerDuty<br>
<small>{% trans "Incident Management" %}</small>
</h3>
</a>
{% else %}
<div class="integration">
<img src="{% static 'img/integrations/pd.png' %}" class="icon" alt="" />
<h3>PagerDuty<br><small>Incident Management</small></h3>
<h3>
PagerDuty<br>
<small>{% trans "Incident Management" %}</small>
</h3>
</div>
{% endif %}
</div>
@ -413,14 +500,20 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/pagertree.png' %}" class="icon" alt="" />
<h3>PagerTree<br><small>Incident Management</small></h3>
<h3>
PagerTree<br>
<small>{% trans "Incident Management" %}</small>
</h3>
</div>
</div>
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<a href="{% url 'hc-serve-doc' 'configuring_prometheus' %}" class="integration">
<img src="{% static 'img/integrations/prometheus.png' %}" class="icon" alt="" />
<h3>Prometheus<br><small>Event Monitoring</small></h3>
<h3>
Prometheus<br>
<small>{% trans "Event Monitoring" %}</small>
</h3>
</a>
</div>
@ -428,7 +521,10 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/pushbullet.png' %}" class="icon" alt="" />
<h3>Pushbullet<br><small>Push Notifications</small></h3>
<h3>
Pushbullet<br>
<small>{% trans "Push Notifications" %}</small>
</h3>
</div>
</div>
{% endif %}
@ -437,7 +533,10 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<a href="{% url 'hc-pushover-help' %}" class="integration">
<img src="{% static 'img/integrations/po.png' %}" class="icon" alt="" />
<h3>Pushover<br><small>Push Notifications</small></h3>
<h3>
Pushover<br>
<small>{% trans "Push Notifications" %}</small>
</h3>
</a>
</div>
{% endif %}
@ -446,7 +545,10 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/shell.png' %}" class="icon" alt="" />
<h3>Shell Commands<br><small>&nbsp;</small></h3>
<h3>
{% trans "Shell Commands" %}<br>
<small>&nbsp;</small>
</h3>
</div>
</div>
{% endif %}
@ -455,7 +557,10 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/sms.png' %}" class="icon" alt="" />
<h3>SMS<br><small>&nbsp;</small></h3>
<h3>
{% trans "SMS" %}<br>
<small>&nbsp;</small>
</h3>
</div>
</div>
{% endif %}
@ -463,7 +568,10 @@
<div class="col-md-2 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/spike.png' %}" class="icon" alt="Spike.sh icon" />
<h3>Spike.sh <br><small>Incident Management</small></h3>
<h3>
Spike.sh<br>
<small>{% trans "Incident Management" %}</small>
</h3>
</div>
</div>
@ -471,7 +579,10 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<a href="{% url 'hc-telegram-help' %}" class="integration">
<img src="{% static 'img/integrations/telegram.png' %}" class="icon" alt="" />
<h3>Telegram<br><small>Chat</small></h3>
<h3>
Telegram<br>
<small>{% trans "Chat" %}</small>
</h3>
</a>
</div>
{% endif %}
@ -480,7 +591,10 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/trello.png' %}" class="icon" alt="" />
<h3>Trello<br><small>Project Management</small></h3>
<h3>
Trello<br>
<small>{% trans "Project Management" %}</small>
</h3>
</div>
</div>
{% endif %}
@ -488,7 +602,10 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/victorops.png' %}" class="icon" alt="" />
<h3>VictorOps<br><small>Incident Management</small></h3>
<h3>
VictorOps<br>
<small>{% trans "Incident Management" %}</small>
</h3>
</div>
</div>
@ -496,7 +613,10 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/whatsapp.png' %}" class="icon" alt="" />
<h3>WhatsApp<br><small>Chat</small></h3>
<h3>
WhatsApp<br>
<small>{% trans "Chat" %}</small>
</h3>
</div>
</div>
{% endif %}
@ -504,49 +624,70 @@
<div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
<div class="integration">
<img src="{% static 'img/integrations/zulip.png' %}" class="icon" alt="" />
<h3>Zulip<br><small>Chat</small></h3>
<h3>
Zulip<br>
<small>{% trans "Chat" %}</small>
</h3>
</div>
</div>
</div>
<div class="row tour-section">
<div class="col-sm-12">
<h1 class="text-center">What Can I Monitor With {{ site_name }}?</h1>
<h1 class="text-center">
{% blocktrans trimmed %}
What Can I Monitor With {{ site_name }}?
{% endblocktrans %}
</h1>
</div>
<div class="col-sm-6 use-cases">
<h2>Cron Jobs</h2>
<p>{{ site_name }} monitoring is a great fit for cron jobs and cron-like systems
(systemd timers, Jenkins build jobs, Windows Scheduled Tasks, wp-cron, uwsgi cron-like
interface, Heroku Scheduler, ...). A failed cron job often has no immediate visible
consequences, and can go unnoticed for a long time.</p>
<p>Specific examples:</p>
<h2>{% trans "Cron Jobs" %}</h2>
<p>
{% blocktrans trimmed %}
{{ site_name }} monitoring is a great fit for cron jobs and cron-like
systems (systemd timers, Jenkins build jobs, Windows Scheduled Tasks,
wp-cron, uwsgi cron-like interface, Heroku Scheduler, ...). A failed
cron job often has no immediate visible consequences, and can go
unnoticed for a long time.
{% endblocktrans %}
</p>
<p>{% trans "Specific examples:" %}</p>
<ul>
<li>Filesystem backups</li>
<li>Database backups</li>
<li>Daily, weekly, monthly report emails</li>
<li>SSL renewals</li>
<li>Business data import and sync</li>
<li>Antivirus scans</li>
<li>Dynamic DNS updates</li>
<li>{% trans "Filesystem backups" %}</li>
<li>{% trans "Database backups" %}</li>
<li>{% trans "Daily, weekly, monthly report emails" %}</li>
<li>{% trans "SSL renewals" %}</li>
<li>{% trans "Business data import and sync" %}</li>
<li>{% trans "Antivirus scans" %}</li>
<li>{% trans "Dynamic DNS updates" %}</li>
</ul>
</div>
<div class="col-sm-6 use-cases">
<h2>Processes, Services, Servers</h2>
<p>{{ site_name }} monitoring can be used for lightweight server monitoring:
ensuring a particular system service, or the server as a whole is alive and healthy.
Write a shell script that checks for a specific condition, and pings {{ site_name }}
if successful. Run the shell script regularly.</p>
<p>Specific examples:</p>
<h2>{% trans "Processes, Services, Servers" %}</h2>
<p>
{% blocktrans trimmed %}
{{ site_name }} monitoring can be used for lightweight server
monitoring: ensuring a particular system service, or the server as a
whole is alive and healthy. Write a shell script that checks for a
specific condition, and pings {{ site_name }} if successful. Run the
shell script regularly.
{% endblocktrans %}
</p>
<p>{% trans "Specific examples:" %}</p>
<ul>
<li>Check a specific docker container is running</li>
<li>Check a specific application process is running</li>
<li>Check database replication lag</li>
<li>Check system resources: free disk, free RAM, ...</li>
<li>Send simple, unconditional "I'm alive" messages from your server (or your NAS,
router, Raspberry Pi, ...)</li>
<li>{% trans "Check a specific docker container is running" %}</li>
<li>{% trans "Check a specific application process is running" %}</li>
<li>{% trans "Check database replication lag" %}</li>
<li>{% trans "Check system resources: free disk, free RAM, ..." %}</li>
<li>
{% blocktrans trimmed %}
Send simple, unconditional "I'm alive" messages from your server
(or your NAS, router, Raspberry Pi, ...)
{% endblocktrans %}
</li>
</ul>
</div>
</div>
@ -557,12 +698,16 @@
<div class="footer-jumbo-bleed">
<div class="col-sm-10 col-sm-offset-1">
<div id="footer-cta" class="jumbotron text-center">
<p>{{ site_name }} is a <strong>free</strong> and
<a href="https://github.com/healthchecks/healthchecks">open source</a> service.
Setting up monitoring for your cron jobs only takes minutes.
Start sleeping better at nights!</p>
<p>
{% blocktrans trimmed %}
{{ site_name }} is a <strong>free</strong> and
<a href="https://github.com/healthchecks/healthchecks">open source</a>
service. Setting up monitoring for your cron jobs only takes minutes.
Start sleeping better at nights!
{% endblocktrans %}
</p>
<a href="#" data-toggle="modal" data-target="#signup-modal" class="btn btn-lg btn-primary">
Sign Up
{% trans "Sign Up" %}
</a>
</div>
</div>


Loading…
Cancel
Save