mirror of
https://salsa.debian.org/dskoll/remind.git
synced 2026-04-17 14:59:20 +02:00
291 lines
12 KiB
C
291 lines
12 KiB
C
/***************************************************************/
|
|
/* */
|
|
/* FINNISH.H */
|
|
/* */
|
|
/* Support for the Finnish language. */
|
|
/* */
|
|
/* Author: Mikko Silvonen <silvonen@iki.fi> */
|
|
/* */
|
|
/* See http://www.iki.fi/silvonen/remind/ for a list of */
|
|
/* Finnish holidays. */
|
|
/* */
|
|
/* This file is part of REMIND. */
|
|
/* This file is Copyright (C) 1993-1998 by Mikko Silvonen. */
|
|
/* REMIND is Copyright (C) 1992-2023 by Dianne Skoll */
|
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/* */
|
|
/***************************************************************/
|
|
|
|
/* The very first define in a language support file must be L_LANGNAME: */
|
|
#define L_LANGNAME "Finnish"
|
|
|
|
/* Day names */
|
|
#define L_SUNDAY "sunnuntai"
|
|
#define L_MONDAY "maanantai"
|
|
#define L_TUESDAY "tiistai"
|
|
#define L_WEDNESDAY "keskiviikko"
|
|
#define L_THURSDAY "torstai"
|
|
#define L_FRIDAY "perjantai"
|
|
#define L_SATURDAY "lauantai"
|
|
|
|
/* Month names */
|
|
#define L_JAN "tammikuu"
|
|
#define L_FEB "helmikuu"
|
|
#define L_MAR "maaliskuu"
|
|
#define L_APR "huhtikuu"
|
|
#define L_MAY "toukokuu"
|
|
#define L_JUN "kesäkuu"
|
|
#define L_JUL "heinäkuu"
|
|
#define L_AUG "elokuu"
|
|
#define L_SEP "syyskuu"
|
|
#define L_OCT "lokakuu"
|
|
#define L_NOV "marraskuu"
|
|
#define L_DEC "joulukuu"
|
|
|
|
/* Today and tomorrow */
|
|
#define L_TODAY "tänään"
|
|
#define L_TOMORROW "huomenna"
|
|
|
|
/* The default banner */
|
|
#define L_BANNER "Viestit %wna %d. %mta %y%o:"
|
|
|
|
/* "am" and "pm" */
|
|
#define L_AM " ap."
|
|
#define L_PM " ip."
|
|
|
|
/* Ago and from now */
|
|
#define L_AGO "sitten"
|
|
#define L_FROMNOW "kuluttua"
|
|
|
|
/* "in %d days' time" */
|
|
#define L_INXDAYS "%d päivän kuluttua"
|
|
|
|
/* "on" as in "on date...", but in Finnish it is a case ending;
|
|
L_PARTIT is the partitive ending appended to -kuu and -tai */
|
|
#define L_ON "na"
|
|
#define L_PARTIT "ta"
|
|
|
|
/* Pluralizing - this is a problem for many languages and may require
|
|
a more drastic fix */
|
|
/* The partitive ending of "day" */
|
|
#define L_PLURAL "ä"
|
|
|
|
/* Minutes, hours, at, etc */
|
|
#define L_NOW "nyt"
|
|
#define L_AT "klo"
|
|
#define L_MINUTE "minuutti"
|
|
#define L_HOUR "tunti"
|
|
#define L_IS "on"
|
|
#define L_WAS "oli"
|
|
#define L_AND "ja"
|
|
|
|
/* What to add to make "hour" plural (or actually partitive) */
|
|
#define L_HPLU "a"
|
|
/* What to add to make "minute" plural (or actually partitive) */
|
|
#define L_MPLU "a"
|
|
|
|
/* Genitive form of "hour" */
|
|
#define L_HGEN "tunnin"
|
|
/* Genitive form of "minute" */
|
|
#define L_MGEN "minuutin"
|
|
|
|
/* Define any overrides here, such as L_ORDINAL_OVERRIDE, L_A_OVER, etc.
|
|
See the file dosubst.c for more info. */
|
|
|
|
#define L_ORDINAL_OVERRIDE switch(d) { \
|
|
case 1: plu = ":senä"; break; \
|
|
case 2: plu = ":sena"; break; \
|
|
default: \
|
|
switch(d%10) { \
|
|
case 2: \
|
|
case 3: \
|
|
case 6: \
|
|
case 8: plu = ":ntena"; break; \
|
|
default: plu = ":ntenä"; break; \
|
|
} \
|
|
}
|
|
#define L_A_OVER if (altmode == '*') { sprintf(s, "%s %d. %s %d", DayName[dse%7], d, MonthName[m], y); } else { sprintf(s, "%s%s %d. %s%s %d", DayName[dse%7], L_ON, d, MonthName[m], L_PARTIT, y); }
|
|
#define L_C_OVER if (altmode == '*') { sprintf(s, "%s", DayName[dse%7]); } else { sprintf(s, "%s%s", DayName[dse%7], L_ON); }
|
|
#define L_E_OVER sprintf(s, "%02d%c%02d%c%04d", d, DateSep, m+1, DateSep, y);
|
|
#define L_F_OVER sprintf(s, "%02d%c%02d%c%04d", m+1, DateSep, d, DateSep, y);
|
|
#define L_G_OVER if (altmode == '*') { sprintf(s, "%s %d. %s", DayName[dse%7], d, MonthName[m]); } else { sprintf(s, "%s%s %d. %s%s", DayName[dse%7], L_ON, d, MonthName[m], L_PARTIT); }
|
|
#define L_H_OVER sprintf(s, "%02d%c%02d", d, DateSep, m+1);
|
|
#define L_I_OVER sprintf(s, "%02d%c%02d", m+1, DateSep, d);
|
|
#define L_J_OVER if (altmode == '*') { sprintf(s, "%s %sn %d%s %d", DayName[dse%7], MonthName[m], d, plu, y); } else { sprintf(s, "%s%s %sn %d%s %d", DayName[dse%7], L_ON, MonthName[m], d, plu, y); }
|
|
#define L_K_OVER if (altmode == '*') { sprintf(s, "%s %sn %d%s", DayName[dse%7], MonthName[m], d, plu); } else { sprintf(s, "%s%s %sn %d%s", DayName[dse%7], L_ON, MonthName[m], d, plu); }
|
|
#define L_L_OVER sprintf(s, "%04d%c%02d%c%02d", y, DateSep, m+1, DateSep, d);
|
|
#define L_Q_OVER sprintf(s, "n");
|
|
#define L_U_OVER if (altmode == '*') { sprintf(s, "%s %d%s %s %d", DayName[dse%7], d, plu, MonthName[m], y); } else { sprintf(s, "%s%s %d%s %s%s %d", DayName[dse%7], L_ON, d, plu, MonthName[m], L_PARTIT, y); }
|
|
#define L_V_OVER if (altmode == '*') { sprintf(s, "%s %d%s %s", DayName[dse%7], d, plu, MonthName[m]); } else { sprintf(s, "%s%s %d%s %s%s", DayName[dse%7], L_ON, d, plu, MonthName[m], L_PARTIT); }
|
|
#define L_1_OVER \
|
|
if (tdiff == 0) \
|
|
sprintf(s, "%s", L_NOW); \
|
|
else { \
|
|
s[0] = '\0'; \
|
|
if (hdiff != 0) { \
|
|
if (tdiff < 0) \
|
|
sprintf(s, "%d %s%s ", hdiff, L_HOUR, hplu); \
|
|
else \
|
|
sprintf(s, "%d %s ", hdiff, L_HGEN); \
|
|
} \
|
|
if (mdiff != 0) { \
|
|
if (tdiff < 0) \
|
|
sprintf(s + strlen(s), "%d %s%s ", mdiff, L_MINUTE, mplu); \
|
|
else \
|
|
sprintf(s + strlen(s), "%d %s ", mdiff, L_MGEN); \
|
|
} \
|
|
sprintf(s + strlen(s), when); \
|
|
}
|
|
|
|
/* The next ones are used only when MK_GLOBALS is set */
|
|
#ifdef MK_GLOBALS
|
|
#define L_ERR_OVERRIDE 1
|
|
EXTERN char *ErrMsg[] =
|
|
{
|
|
"Ok",
|
|
"Puuttuva ']'",
|
|
"Puuttuva lainausmerkki",
|
|
"Liian monimutkainen lauseke - liikaa operaattoreita",
|
|
"Liian monimutkainen lauseke - liikaa operandeja",
|
|
"Puuttuva ')'",
|
|
"Määrittelemätön funktio",
|
|
"Virheellinen merkki",
|
|
"Kaksipaikkainen operaattori puuttuu",
|
|
"Muisti loppui",
|
|
"Virheellinen luku",
|
|
"Operaattoripino tyhjä - sisäinen virhe",
|
|
"Muuttujapino tyhjä - sisäinen virhe",
|
|
"Tyyppimuunnos ei onnistu",
|
|
"Virheellinen tyyppi",
|
|
"Liian suuri päiväys",
|
|
"Pinovirhe - sisäinen virhe",
|
|
"Jako nollalla",
|
|
"Määrittelemätön funktio",
|
|
"Odottamaton rivin loppu",
|
|
"Odottamaton tiedoston loppu",
|
|
"Syöttö- tai tulostusvirhe",
|
|
"Liian pitkä rivi",
|
|
"Sisäinen virhe",
|
|
"Virheellinen päiväys",
|
|
"Liian vähän argumentteja",
|
|
"Liian paljon argumentteja",
|
|
"Virheellinen aika",
|
|
"Liian suuri luku",
|
|
"Liian pieni luku",
|
|
"Tiedoston avaus ei onnistu",
|
|
"Liian monta sisäkkäistä INCLUDEa",
|
|
"Jäsennysvirhe",
|
|
"Laukaisuhetken laskenta ei onnistu",
|
|
"Liian monta sisäkkäistä IF-lausetta",
|
|
"ELSE ilman IF-lausetta",
|
|
"ENDIF ilman IF-lausetta",
|
|
"Kaikkia viikonpäiviä ei voi jättää pois",
|
|
"Ylimääräisiä merkkejä rivillä",
|
|
"POP-OMIT-CONTEXT ilman PUSH-OMIT-CONTEXTia",
|
|
"RUN-lauseen käyttö estetty",
|
|
"Arvoaluevirhe",
|
|
"Virheellinen tunniste",
|
|
"Rekursiivinen funktiokutsu havaittu",
|
|
"",
|
|
"Järjestelmämuuttujan muuttaminen ei onnistu",
|
|
"C-kirjastofunktio ei pysty esittämään päiväystä tai aikaa",
|
|
"Sisäisen funktion määritelmää yritettiin muuttaa",
|
|
"Lausekkeessa ei voi olla sisäkkäisiä funktiomääritelmiä",
|
|
"Päiväyksen täytyy olla täydellinen toistokertoimessa",
|
|
"Vuosi annettu kahdesti",
|
|
"Kuukausi annettu kahdesti",
|
|
"Päivä annettu kahdesti",
|
|
"Tuntematon sana tai merkki",
|
|
"OMIT-komennossa on annettava kuukausi",
|
|
"Liian monta osittaista OMIT-komentoa",
|
|
"Liian monta täydellistä OMIT-komentoa",
|
|
"Varoitus: PUSH-OMIT-CONTEXT ilman POP-OMIT-CONTEXTia",
|
|
"Virhe tiedoston luvussa",
|
|
"Pilkku puuttuu",
|
|
"Virheellinen juutalainen päiväys",
|
|
"IIF vaatii parittoman määrän argumentteja",
|
|
"Varoitus: puuttuva ENDIF",
|
|
"Pilkku puuttuu",
|
|
"Viikonpäivä annettu kahdesti",
|
|
"Käytä vain yhtä komennoista BEFORE, AFTER ja SKIP",
|
|
"Sisäkkäisiä MSG-, MSF- ja RUN-lauseita ei voi käyttää lausekkeessa",
|
|
"Toistokerroin annettu kahdesti",
|
|
"Delta-arvo annettu kahdesti",
|
|
"Peruutusarvo annettu kahdesti",
|
|
"ONCE-avainsanaa käytetty kahdesti. (Hah.)",
|
|
"AT-sanan perästä puuttuu aika",
|
|
"THROUGH/UNTIL-sanaa käytetty kahdesti",
|
|
"Epätäydellinen päiväys",
|
|
"FROM/SCANFROM-sanaa käytetty kahdesti",
|
|
"Muuttuja",
|
|
"Arvo",
|
|
"*MÄÄRITTELEMÄTÖN*",
|
|
"Siirrytään funktioon",
|
|
"Poistutaan funktiosta",
|
|
"Vanhentunut",
|
|
"fork() epäonnistui - jonomuistutukset eivät toimi",
|
|
"Tiedoston avaus ei onnistu",
|
|
"Virheellinen järjestelmäpäiväys: vuosi on vähemmän kuin %d\n",
|
|
"Tuntematon virheenetsintätarkenne '%c'\n",
|
|
"Tuntematon tarkenne '%c'\n",
|
|
"Tuntematon käyttäjä '%s'\n",
|
|
"Ryhmänumeron vaihto %d:ksi ei onnistunut\n",
|
|
"Käyttäjänumeron vaihto %d:ksi ei onnistunut\n",
|
|
"Muisti ei riitä ympäristölle\n",
|
|
"Puuttuva '='-merkki",
|
|
"Puuttuva muuttujanimi",
|
|
"Puuttuva lauseke",
|
|
"Päivän asetus %s:ksi ei onnitus\n",
|
|
"Remind: tarkenne '-i': %s\n",
|
|
"Ei viestejä.",
|
|
"%d viesti(ä) tämän päivän jonossa.\n",
|
|
"Numero puuttuu",
|
|
"Virheellinen funktio WARN-lausekkeessa",
|
|
"Can't convert between time zones",
|
|
"No files matching *.rem",
|
|
"String too long",
|
|
"Time specified twice",
|
|
"Cannot specify DURATION without specifying AT"
|
|
};
|
|
#endif /* MK_GLOBALS */
|
|
|
|
/* The following is only used in init.c */
|
|
#ifdef L_IN_INIT
|
|
#define L_USAGE_OVERRIDE 1
|
|
void Usage(void)
|
|
{
|
|
fprintf(ErrFp, "\nREMIND %s (%s version) Copyright 1992-2023 Dianne Skoll\n", VERSION, L_LANGNAME);
|
|
#ifdef BETA
|
|
fprintf(ErrFp, ">>>> BETAVERSIO <<<<\n");
|
|
#endif
|
|
fprintf(ErrFp, "Käyttö: remind [tarkenteet] tiedosto [päiväys] [aika] [*toisto]\n");
|
|
fprintf(ErrFp, "Tarkenteet:\n");
|
|
fprintf(ErrFp, " -n Tulosta viestien seuraavat esiintymiskerrat yksink. muodossa\n");
|
|
fprintf(ErrFp, " -r Estä RUN-lauseiden käyttö\n");
|
|
fprintf(ErrFp, " -c[n] Tulosta n:n kuukauden kalenteri (oletus 1)\n");
|
|
fprintf(ErrFp, " -c+[n] Tulosta n:n viikon kalenteri (oletus 1)\n");
|
|
fprintf(ErrFp, " -w[n[,p[,s]]] Aseta kalenterin leveys, tasaus ja välit\n");
|
|
fprintf(ErrFp, " -s[+][n] Tulosta n:n kuukauden (viikon) 'yksink. kalenteri' (oletus 1)\n");
|
|
fprintf(ErrFp, " -p[n] Kuten -s, mutta tulosta rem2ps:lle sopivassa muodossa\n");
|
|
fprintf(ErrFp, " -v Laveat tulostukset\n");
|
|
fprintf(ErrFp, " -o Älä noudata ONCE-lauseita\n");
|
|
fprintf(ErrFp, " -t Laukaise kaikki viestit deltan arvosta välittämättä\n");
|
|
fprintf(ErrFp, " -h Suppeat tulostukset\n");
|
|
#ifdef HAVE_QUEUED
|
|
fprintf(ErrFp, " -a Älä laukaise viestejä heti - lisää ne jonoon\n");
|
|
fprintf(ErrFp, " -q Älä lisää viestejä jonoon\n");
|
|
fprintf(ErrFp, " -f Laukaise viestit, pysy etualalla\n");
|
|
fprintf(ErrFp, " -z[n] Käynnisty demonina, herätys n:n (5:n) minuutin välein\n");
|
|
#endif
|
|
fprintf(ErrFp, " -d... Virheenetsintä: e=echo x=expr-eval t=trig v=dumpvars l=showline\n");
|
|
fprintf(ErrFp, " -e Ohjaa virhetulostus stdout-vuohon\n");
|
|
fprintf(ErrFp, " -b[n] Ajan ilmaisu: 0=ap/ip, 1=24 tuntia, 2=ei aikoja\n");
|
|
fprintf(ErrFp, " -x[n] SATISFY-lauseen toistoraja (oletus 1000)\n");
|
|
fprintf(ErrFp, " -kcmd Suorita 'cmd' MSG-tyyppisille viesteille\n");
|
|
fprintf(ErrFp, " -g[ddd] Lajittele viestit päiväyksen, ajan ja tärkeyden mukaan\n");
|
|
fprintf(ErrFp, " -ivar=val Alusta muuttuja var arvolla val ja säilytä var\n");
|
|
fprintf(ErrFp, " -m Aloita kalenteri maanantaista eikä sunnuntaista\n");
|
|
exit(1);
|
|
}
|
|
#endif /* L_IN_INIT */
|