summaryrefslogtreecommitdiffstats
path: root/l10n/et_EE.php
blob: b285159149074c7387d54c596be2f4f78af0801c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
$TRANSLATIONS = array(
"Feed contains invalid XML" => "Voog sisaldab vigast XML-i",
"Detected feed format is not supported" => "Voo tuvastus pole toetatud",
"SSL Certificate is invalid" => "SSL sertifikaat on vigane",
"Website not found" => "Veebilehte ei leitud",
"More redirects than allowed, aborting" => "Rohkem ümbersuunamisi kui lubatud, katkestan",
"Bigger than maximum allowed size" => "Suurem kui maksimaalne lubatud suurus",
"Request timed out" => "Päring aegus",
"Request unauthorized. Are you logged in?" => "Päring pole lubatud. Oled sa sisse loginud?",
"Request forbidden. Are you an admin?" => "Päring on keelatud. Kas sa oled admin?",
"Can not add feed: Exists already" => "Voogu ei saa lisada:  on juba olemas",
"Articles without feed" => "Artiklid ilma voota",
"Can not add folder: Exists already" => "Kausta ei saa lisada: on juba olemas",
"Use ownCloud cron for updates" => "Kasuta uuendusteks ownCloudi croni ",
"Disable this if you run a custom updater such as the Python updater included in the app" => "Keela see kui sa kasutada kohandatud uuendajat nagu rakendites olevat Python updater-it",
"Purge interval" => "Puhastuse intervall",
"Minimum amount of seconds after deleted feeds and folders are removed from the database; values below 60 seconds are ignored" => "Maksimaalne aeg sekundites peale mida voog ja kataloogid eemaldatakse andmebaasist; väärtusi alla 60 sekundi ignoreeritakse",
"Maximum read count per feed" => "Maksimaalne lugemiste arv voo kohta",
"Defines the maximum amount of articles that can be read per feed which won't be deleted by the cleanup job; if old articles reappear after being read, increase this value; negative values such as -1 will turn this feature off completely" => "Määrab maksimaalse loetavate artiklite koguse voo kohta mida ei kustutata puhastus toimingute poolt; kui vanad artiklid tekivad uuesti peale lugemist, suurenda seda väärtust; negatiised väärtused nagu -1  keeravad selle funktsiooni täielikult kinni",
"Maximum redirects" => "Maksimaalsed ümbersuunamised",
"How many redirects the feed fetcher should follow" => "Kui palju ümbersuunamisi peaks voo uuendaja järgima",
"Maximum feed page size" => "Maksimaalne voo lehekülje suurus",
"Maximum feed size in bytes. If the RSS/Atom page is bigger than this value, the update will be aborted" => "Maksimaalne voo suurus baitides. Kui RSS/Atom lehekülg on suurem kui see väärtus, siis uuendamine katkestatakse",
"Feed fetcher timeout" => "Voo ühenduse aegumine",
"Maximum number of seconds to wait for an RSS or Atom feed to load; if it takes longer the update will be aborted" => "Maksimaalne aeg sekundites RSS või Atom voo laadimiseks; kui see võtab kauem, siis uuendus katkestatakse",
"Explore Service URL" => "Sirvi teenuse URL-i",
"Saved" => "Salvestatud",
"Download" => "Lae alla",
"Close" => "Sulge",
"How to set up the operating system cron" => "Kuidas seadistada operatsioonisüsteemi ajastatud tegevust",
"filter" => "filter",
"Language" => "Keel",
"Subscribe" => "Telli",
"Refresh" => "Värskenda",
"No articles available" => "Ühtegi artiklit pole saadaval",
"No unread articles available" => "Lugemata artikleid pole saadaval",
"Open website" => "Ava veebisait",
"Star article" => "Märgi artikkel tähega",
"Unstar article" => "Eemalda artiklilt täht",
"Keep article unread" => "Hoia kui lugemata",
"Remove keep article unread" => "Eemalda märgistus 'Hoia kui lugemata'",
"by" => "lisas",
"from" => "kohast",
"Play audio" => "Esita heli",
"Download video" => "Laadi video alla",
"Download audio" => "Laadi helifail alla",
"Keyboard shortcut" => "Klvaiatuuri otsetee",
"Description" => "Kirjeldus",
"right" => "paremal",
"Jump to next article" => "Hüppar järgmisele artiklile",
"left" => "vasakul",
"Jump to previous article" => "Hüppa eelmisele artiklile",
"Toggle star article" => "Lülita artikli tähtekest",
"Star article and jump to next one" => "Märgi tähekesega ning hüppa järgmisele",
"Toggle keep current article unread" => "Lülita 'hoia olemasolev artikkel lugemata'",
"Open article in new tab" => "Ava artikkel uuel kaardil",
"Toggle expand article in compact view" => "Lülita 'laienda artikli kopaktne vaade'",
"Load next feed" => "Laadi järgmine voog",
"Load previous feed" => "Kaadi eelmine voog",
"Load next folder" => "Laadi järgmine kataloog",
"Load previous folder" => "Laadi eelmine kataloog",
"Focus search field" => "Fokuseeri otsingulahter",
"Mark current article's feed/folder read" => "Märgi praegused artikli vood/kaustad loetuks",
"Web address" => "Veebiaadress",
"Feed exists already!" => "Uudisvoog on juba olemas!",
"Folder" => "Kaust",
"No folder" => "Kausta pole",
"New folder" => "Uus kaust",
"Folder name" => "Kausta nimi",
"Go back" => "Mine tagasi",
"Folder exists already!" => "Kaust on juba olemas!",
"Advanced settings" => "Lisavalikud",
"Credentials" => "Kasutajatunnused",
"Username" => "Kasutajanimi",
"Password" => "Parool",
"New Folder" => "Uus kaust",
"Create" => "Lisa",
"Explore" => "Sirvi",
"Update failed more than 50 times" => "Uuendamine on ebaõnnestunud rohkem kui 50 korda",
"Deleted feed" => "Kustutatud uudisvoog",
"Undo delete feed" => "Tühista uudisvoo kustutamine",
"Rename" => "Nimeta ümber",
"Menu" => "Menüü",
"Pin feed to the top" => "Kinnita uudisvoog üles",
"No feed ordering" => "Voogude järjestust pole",
"Reversed feed ordering" => "Pööratud uudisvoo järjestus",
"Normal feed ordering" => "Tavaline uudisvoo järjestus",
"Rename feed" => "Nimeta voog ümber",
"Delete feed" => "Kustuta uudisvoog",
"Mark all articles read" => "Märgi kõik artiklid loetuks",
"Dismiss" => "Jäta vahele",
"Collapse" => "Sulge",
"Deleted folder" => "Kustutatud kaust",
"Undo delete folder" => "Tühista kausta kustutamine",
"Rename folder" => "Nimeta kaust ümber",
"Delete folder" => "Kustuta kaust",
"Starred" => "Tärniga märgitud",
"Unread articles" => "Lugemata artiklid",
"All articles" => "Kõik artiklid",
"Settings" => "Seaded",
"Disable mark read through scrolling" => "Lülita kerimisel loetuks määramine välja",
"Compact view" => "Kompaktne vaade",
"Show all articles" => "Näita kõiki artikleid",
"Keyboard shortcuts" => "Klaviatuuri otseteed",
"Subscriptions (OPML)" => "Tellimused (OPML)",
"Import" => "Impordi",
"Export" => "Ekspordi",
"Error when importing: file does not contain valid OPML" => "Viga importimisel: fail ei sisalda korrektset OPML-i",
"Unread/Starred Articles" => "Lugemata/Märgitud artiklid",
"Error when importing: file does not contain valid JSON" => "Viga importimisel: fail ei sisalda korrektset JSON-i"
);
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";
ghlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
// SPDX-License-Identifier: GPL-3.0-or-later

#include "rrd.h"

// ----------------------------------------------------------------------------
// RRDCALC helpers

void rrdcalc_flags_to_json_array(BUFFER *wb, const char *key, RRDCALC_FLAGS flags) {
    buffer_json_member_add_array(wb, key);

    if(flags & RRDCALC_FLAG_DB_ERROR)
        buffer_json_add_array_item_string(wb, "DB_ERROR");
    if(flags & RRDCALC_FLAG_DB_NAN)
        buffer_json_add_array_item_string(wb, "DB_NAN");
    if(flags & RRDCALC_FLAG_CALC_ERROR)
        buffer_json_add_array_item_string(wb, "CALC_ERROR");
    if(flags & RRDCALC_FLAG_WARN_ERROR)
        buffer_json_add_array_item_string(wb, "WARN_ERROR");
    if(flags & RRDCALC_FLAG_CRIT_ERROR)
        buffer_json_add_array_item_string(wb, "CRIT_ERROR");
    if(flags & RRDCALC_FLAG_RUNNABLE)
        buffer_json_add_array_item_string(wb, "RUNNABLE");
    if(flags & RRDCALC_FLAG_DISABLED)
        buffer_json_add_array_item_string(wb, "DISABLED");
    if(flags & RRDCALC_FLAG_SILENCED)
        buffer_json_add_array_item_string(wb, "SILENCED");
    if(flags & RRDCALC_FLAG_RUN_ONCE)
        buffer_json_add_array_item_string(wb, "RUN_ONCE");
    if(flags & RRDCALC_FLAG_FROM_TEMPLATE)
        buffer_json_add_array_item_string(wb, "FROM_TEMPLATE");

    buffer_json_array_close(wb);
}

inline const char *rrdcalc_status2string(RRDCALC_STATUS status) {
    switch(status) {
        case RRDCALC_STATUS_REMOVED:
            return "REMOVED";

        case RRDCALC_STATUS_UNDEFINED:
            return "UNDEFINED";

        case RRDCALC_STATUS_UNINITIALIZED:
            return "UNINITIALIZED";

        case RRDCALC_STATUS_CLEAR:
            return "CLEAR";

        case RRDCALC_STATUS_RAISED:
            return "RAISED";

        case RRDCALC_STATUS_WARNING:
            return "WARNING";

        case RRDCALC_STATUS_CRITICAL:
            return "CRITICAL";

        default:
            netdata_log_error("Unknown alarm status %d", status);
            return "UNKNOWN";
    }
}

uint32_t rrdcalc_get_unique_id(RRDHOST *host, STRING *chart, STRING *name, uint32_t *next_event_id, uuid_t *config_hash_id) {
    rw_spinlock_read_lock(&host->health_log.spinlock);

    // re-use old IDs, by looking them up in the alarm log
    ALARM_ENTRY *ae = NULL;
    for(ae = host->health_log.alarms; ae ;ae = ae->next) {
        if(unlikely(name == ae->name && chart == ae->chart && !uuid_memcmp(&ae->config_hash_id, config_hash_id))) {
            if(next_event_id) *next_event_id = ae->alarm_event_id + 1;
            break;
        }
    }

    uint32_t alarm_id;

    if(ae)
        alarm_id = ae->alarm_id;

    else {
        alarm_id = sql_get_alarm_id(host, chart, name, next_event_id, config_hash_id);

        if (!alarm_id) {
            //check possible stored config hash as zeroes or null
            alarm_id = sql_get_alarm_id_check_zero_hash(host, chart, name, next_event_id, config_hash_id);
            if (!alarm_id) {
                if (unlikely(!host->health_log.next_alarm_id))
                    host->health_log.next_alarm_id = (uint32_t)now_realtime_sec();

                alarm_id = host->health_log.next_alarm_id++;
            }
        }
    }

    rw_spinlock_read_unlock(&host->health_log.spinlock);
    return alarm_id;
}

// ----------------------------------------------------------------------------
// RRDCALC replacing info/summary text variables with RRDSET labels

static STRING *rrdcalc_replace_variables_with_rrdset_labels(const char *line, RRDCALC *rc) {
    if (!line || !*line)
        return NULL;

    size_t pos = 0;
    char *temp = strdupz(line);
    char var[RRDCALC_VAR_MAX];
    char *m, *lbl_value = NULL;

    while ((m = strchr(temp + pos, '$')) && *(m+1) == '{') {
        int i = 0;
        char *e = m;
        while (*e) {
            var[i++] = *e;

            if (*e == '}' || i == RRDCALC_VAR_MAX - 1)
                break;

            e++;
        }

        var[i] = '\0';
        pos = m - temp + 1;

        if (!strcmp(var, RRDCALC_VAR_FAMILY)) {
            char *buf = find_and_replace(temp, var, (rc->rrdset && rc->rrdset->family) ? rrdset_family(