summaryrefslogtreecommitdiffstats
path: root/contrib/nvi/catalog
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1996-11-01 06:45:43 +0000
committerpeter <peter@FreeBSD.org>1996-11-01 06:45:43 +0000
commit59cc89c2c2e686da3bdab2d5cfac4f33462d29fe (patch)
tree88f923c9c0be2e2a225a9b21716fd582de668b42 /contrib/nvi/catalog
downloadFreeBSD-src-59cc89c2c2e686da3bdab2d5cfac4f33462d29fe.zip
FreeBSD-src-59cc89c2c2e686da3bdab2d5cfac4f33462d29fe.tar.gz
Import of nvi-1.79, minus a few bits that we dont need (eg: postscript
files, curses, db, regex etc that we already have). The other glue will follow shortly. Obtained from: Keith Bostic <bostic@bostic.com>
Diffstat (limited to 'contrib/nvi/catalog')
-rw-r--r--contrib/nvi/catalog/Makefile84
-rw-r--r--contrib/nvi/catalog/README166
-rw-r--r--contrib/nvi/catalog/dump.c114
-rw-r--r--contrib/nvi/catalog/dutch317
-rw-r--r--contrib/nvi/catalog/dutch.base307
-rw-r--r--contrib/nvi/catalog/dutch.check37
-rw-r--r--contrib/nvi/catalog/dutch.owner1
-rw-r--r--contrib/nvi/catalog/english317
-rw-r--r--contrib/nvi/catalog/english.base309
-rw-r--r--contrib/nvi/catalog/english.check36
-rw-r--r--contrib/nvi/catalog/english.owner1
-rw-r--r--contrib/nvi/catalog/french317
-rw-r--r--contrib/nvi/catalog/french.base309
-rw-r--r--contrib/nvi/catalog/french.check34
-rw-r--r--contrib/nvi/catalog/german317
-rw-r--r--contrib/nvi/catalog/german.base307
-rw-r--r--contrib/nvi/catalog/german.check36
-rw-r--r--contrib/nvi/catalog/german.owner1
-rw-r--r--contrib/nvi/catalog/ru_RU.KOI8-R267
-rw-r--r--contrib/nvi/catalog/ru_RU.KOI8-R.base219
-rw-r--r--contrib/nvi/catalog/ru_RU.KOI8-R.check169
-rw-r--r--contrib/nvi/catalog/ru_RU.KOI8-R.owner1
-rw-r--r--contrib/nvi/catalog/ru_SU.KOI8-R267
-rw-r--r--contrib/nvi/catalog/ru_SU.KOI8-R.base219
-rw-r--r--contrib/nvi/catalog/ru_SU.KOI8-R.check169
-rw-r--r--contrib/nvi/catalog/ru_SU.KOI8-R.owner1
-rw-r--r--contrib/nvi/catalog/spanish317
-rw-r--r--contrib/nvi/catalog/spanish.base309
-rw-r--r--contrib/nvi/catalog/spanish.check35
-rw-r--r--contrib/nvi/catalog/spell.ok19
-rw-r--r--contrib/nvi/catalog/swedish317
-rw-r--r--contrib/nvi/catalog/swedish.base307
-rw-r--r--contrib/nvi/catalog/swedish.check34
-rw-r--r--contrib/nvi/catalog/swedish.owner1
34 files changed, 5661 insertions, 0 deletions
diff --git a/contrib/nvi/catalog/Makefile b/contrib/nvi/catalog/Makefile
new file mode 100644
index 0000000..1044051
--- /dev/null
+++ b/contrib/nvi/catalog/Makefile
@@ -0,0 +1,84 @@
+# @(#)Makefile 8.29 (Berkeley) 10/19/96
+
+CAT= dutch english french german ru_SU.KOI8-R spanish swedish
+FILES= ../cl/*.c ../common/*.c ../ex/*.c ../tk/*.c ../vi/*.c
+
+all: dump ${CAT}
+
+${CAT}: english.base
+ @echo "... $@"; \
+ rm -f $@; \
+ sort -u $@.base | \
+ awk '{ \
+ if ($$1 == 1) { \
+ print "\nMESSAGE NUMBER 1 IS NOT LEGAL"; \
+ exit 1; \
+ } \
+ if (++nline > $$1) { \
+ print "DUPLICATE MESSAGE NUMBER " $$1; \
+ exit 1; \
+ } \
+ for (; nline < $$1; ++nline) \
+ print ""; \
+ print $0; \
+ }' | \
+ sed -e '1s/^/VI_MESSAGE_CATALOG/' \
+ -e '/"/s/^[^"]*"//' \
+ -e '1!s/"$$/X/' > $@; \
+ chmod 444 $@; \
+ if grep DUPLICATE $@ > /dev/null; then \
+ grep DUPLICATE $@; \
+ fi; \
+ if grep 'NOT LEGAL' $@ > /dev/null; then \
+ grep 'NOT LEGAL' $@; \
+ fi
+
+CHK= dutch.check english.check french.check german.check \
+ ru_SU.KOI8-R.check spanish.check swedish.check
+check: ${CHK}
+${CHK}: ${CAT}
+ @echo "... $@"; \
+ f=`basename $@ .check`; \
+ (echo "Unused message id's (this is okay):"; \
+ awk '{ \
+ while (++nline < $$1) \
+ printf "%03d\n", nline; \
+ }' < $$f.base; \
+ echo =========================; \
+ echo "MISSING ERROR MESSAGES (Please add!):"; \
+ awk '{print $$1}' < $$f.base | sort -u > __ck1; \
+ awk '{print $$1}' < english.base | sort -u > __ck2; \
+ comm -13 __ck1 __ck2; \
+ echo =========================; \
+ echo "Extra error messages (just delete them):"; \
+ comm -23 __ck1 __ck2; \
+ echo =========================; \
+ echo "MESSAGES WITH THE SAME MESSAGE ID's (FIX!):"; \
+ for j in \
+ `sed '/^$$/d' < $$f.base | sort -u | \
+ awk '{print $$1}' | uniq -d`; do \
+ egrep $$j $$f.base; \
+ done; \
+ echo =========================; \
+ echo "Duplicate messages, both id and message (this is okay):"; \
+ sed '/^$$/d' < $$f.base | sort | uniq -c | \
+ awk '$$1 != 1 { print $$0 }' | sort -n; \
+ echo =========================; \
+ echo "Duplicate messages, just message (this is okay):"; \
+ sed '/^$$/d' < $$f | sort | uniq -c | \
+ awk '$$1 != 1 { print $$0 }' | sort -n; \
+ echo =========================) > $@
+
+english.base: dump ${FILES} #Makefile
+ ./dump ${FILES} |\
+ sed -e '/|/!d' \
+ -e 's/|/ "/' \
+ -e 's/^"//' \
+ -e 's/\\"/"/g' |\
+ sort -n > $@
+
+dump: dump.c
+ ${CC} -O -o dump dump.c
+
+clean:
+ rm -f dump dump.o ${CAT} english.base *.check __ck1 __ck2
diff --git a/contrib/nvi/catalog/README b/contrib/nvi/catalog/README
new file mode 100644
index 0000000..15a7063
--- /dev/null
+++ b/contrib/nvi/catalog/README
@@ -0,0 +1,166 @@
+# @(#)README 8.4 (Berkeley) 11/22/94
+
+Generally, all non-system error and informational messages in nvi are
+catalog messages, i.e. they can be tailored to a specific langauge.
+Command strings, usage strings, system errors and other "known text"
+are not. It would certainly be possible to internationalize all the
+text strings in nvi, but it's unclear that it's the right thing to do.
+
+First, there's no portable way to do message catalogs. The System V
+scheme is a reasonable choice, but none of the 4BSD derived systems
+support it. So, catalogs are completely implemented within nvi, and
+don't require any library support.
+
+Message catalogs in nvi are fairly simple. Every catalog message
+consists of two parts -- an initial number followed by a pipe (`|')
+character, followed by the English text for the message. For example:
+
+ msgq(sp, M_ERR, "001|This is an error message");
+
+would be a typical message.
+
+When the msgq() routine is called, if the user has specified a message
+catalog and the format string (the third argument) has a leading number,
+then it is converted to a record number, and that record is retrieved
+from the message catalog and used as a replacement format string. If
+the record can't be retrieved for any reason, the English text is displayed
+instead.
+
+Each message format string MUST map into the English format string, i.e.
+it can't display more or different arguments than the English one.
+
+For example:
+
+ msgq(sp, M_ERR, "002|Error: %d %x", arg1, arg2);
+
+is a format string that displays two arguments. It is possible, however,
+to reorder the arguments or to not display all of them. The convention
+nvi uses is the System V printf(3) convention, i.e. "%[0-9]*$" is the name
+of a specific, numbered argument. For example:
+
+ msgq(sp, M_ERR, "002|Error: %2$d %1$x", arg1, arg2);
+
+displays the arguments in reverse order.
+
+If the system supports this convention in its library printf routines
+(as specified by the test #define NL_ARGMAX), nvi uses those routines.
+Otherwise, there is some serious magic going on in common/msg.c to make
+this all work.
+
+Arguments to the msgq function are required to contain ONLY printable
+characters. No further translation is done by the msgq routine before
+displaying the message on the screen. For example, in the msgq call:
+
+ msgq(sp, M_ERR, "003|File: %s", file_name);
+
+"file_name" must contain only printable characters. The routine
+msg_print() returns a printable version of a string in allocated
+memory. For example:
+
+ char *p;
+
+ p = msg_print(sp, file_name);
+ msgq(sp, M_ERR, M("003", "File: %s"), p);
+ FREE_SPACE(sp, p, 0);
+
+makes sure that "file_name" is printable before calling the msgq
+routine.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The message catalogs themselves are maintained in two files. The first
+is the "base file" which contains two fields, a record number and the
+message itself. All base files are named using the convention
+"vi_<language>.base", e.g. the English one is "vi_english.base". For
+example:
+
+ 002 "Unable to create temporary file"
+ 003 "Warning: %s is not a regular file"
+ 004 "%s already locked, session is read-only"
+ 005 "%s: remove"
+ 006 "%s: close"
+ 007 "%s: remove"
+ 008 "%s: remove"
+ 009 "Read-only file, not written; use ! to override"
+ 010 "Read-only file, not written"
+
+are the first few lines of the current vi_english.base file. Note that
+message #1 is missing -- the first message of each catalog is a special
+one, so that nvi can recognize message catalog files. It's added by the
+Makefile script that creates the second version of the message catalog.
+
+The second file is the file used by nvi to access messages, and is a list
+of the messages, one per line:
+
+ VI_MESSAGE_CATALOG
+ Unable to create temporary fileX
+ Warning: %s is not a regular fileX
+ %s already locked, session is read-onlyX
+ %s: removeX
+ %s: closeX
+ %s: removeX
+ %s: removeX
+ Read-only file, not written; use ! to overrideX
+ Read-only file, not writtenX
+
+Note that all messages have had a trailing 'X' character appended. This
+is to provide nvi a place to store a trailing nul for the message so that
+C library routines that expect one won't be disappointed.
+
+These files are named for their language, e.g. "vi_english". The second
+files are automatically created from the first files.
+
+To create a new catalog for nvi:
+
+Copy the file vi_english.base to a file that you can modify , e.g. "cp
+vi_english.base vi_german.base". For each of the messages in the file,
+replace the message with the string that you want to use. To find out
+what the arguments to a message are, I'm afraid you'll have to search
+the source code for the message number. You can find them fairly quickly
+by doing:
+
+ cd ..; egrep '123\|' */*.[chys]
+
+I'm sorry that there's not an easier way, but I couldn't think of
+anything that wasn't a lot of work.
+
+If, for some reason, you don't have the file vi_english.base, or you
+have new sources for which you want to create a new base catalog, you
+can create it by running the command "make english" in the catalog
+directory.
+
+Once you've translated all of the strings, then add your catalog to the
+"CAT=" line of the Makefile, and run the command "make catalog". This
+will create the second (and corresponding) file for each file named
+<language>.base.
+
+Don't worry about missing line numbers, i.e. base files that look like:
+
+ 005 Message number 5.
+ 007 Message number 7.
+
+This simply means that a message was deleted during the course of nvi's
+development. It will be taken care of automatically when you create
+the second form of the file.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+If you add new messages to the nvi sources, you can check your work by
+doing "make english; make check". The "make check" target lists unused
+message numbers, duplicate message numbers, and duplicate messages.
+Unused message numbers are only useful if you are condensing messages.
+Duplicate message numbers are a serious problem and have to be fixed.
+Duplicate messages are only interesting if a message appears often enough
+that it's worth creating a routine so that the string is only need in
+a single place.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+To select a catalog when running nvi, set the "msgcat" option. If the
+value of this option ends with a '/', it is treated as the name of a
+directory that contains a message catalog "vi_XXXX", where XXXX is the
+value of the LANG environmental variable, if it's set, or the value of
+the LC_MESSAGES environmental variable if it's not. If neither of those
+environmental variables are set, or if the option doesn't end in a '/',
+the option is treated as the full path name of the message catalog to use.
+
+If any messages are missing from the catalog, the backup text (English)
+is used instead.
diff --git a/contrib/nvi/catalog/dump.c b/contrib/nvi/catalog/dump.c
new file mode 100644
index 0000000..0b3cd26
--- /dev/null
+++ b/contrib/nvi/catalog/dump.c
@@ -0,0 +1,114 @@
+/*-
+ * Copyright (c) 1992, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+static char copyright[] =
+"@(#) Copyright (c) 1992, 1993, 1994\n\
+ The Regents of the University of California. All rights reserved.\n";
+#endif /* not lint */
+
+#ifndef lint
+static char sccsid[] = "@(#)dump.c 8.1 (Berkeley) 8/31/94";
+#endif /* not lint */
+
+#include <ctype.h>
+#include <stdio.h>
+
+static void
+parse(fp)
+ FILE *fp;
+{
+ int ch, s1, s2, s3;
+
+#define TESTD(s) { \
+ if ((s = getc(fp)) == EOF) \
+ return; \
+ if (!isdigit(s)) \
+ continue; \
+}
+#define TESTP { \
+ if ((ch = getc(fp)) == EOF) \
+ return; \
+ if (ch != '|') \
+ continue; \
+}
+#define MOVEC(t) { \
+ do { \
+ if ((ch = getc(fp)) == EOF) \
+ return; \
+ } while (ch != (t)); \
+}
+ for (;;) {
+ MOVEC('"');
+ TESTD(s1);
+ TESTD(s2);
+ TESTD(s3);
+ TESTP;
+ putchar('"');
+ putchar(s1);
+ putchar(s2);
+ putchar(s3);
+ putchar('|');
+ for (;;) { /* dump to end quote. */
+ if ((ch = getc(fp)) == EOF)
+ return;
+ putchar(ch);
+ if (ch == '"')
+ break;
+ if (ch == '\\') {
+ if ((ch = getc(fp)) == EOF)
+ return;
+ putchar(ch);
+ }
+ }
+ putchar('\n');
+ }
+}
+
+int
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ FILE *fp;
+
+ for (; *argv != NULL; ++argv) {
+ if ((fp = fopen(*argv, "r")) == NULL) {
+ perror(*argv);
+ exit (1);
+ }
+ parse(fp);
+ (void)fclose(fp);
+ }
+ exit (0);
+}
diff --git a/contrib/nvi/catalog/dutch b/contrib/nvi/catalog/dutch
new file mode 100644
index 0000000..de9fb60
--- /dev/null
+++ b/contrib/nvi/catalog/dutch
@@ -0,0 +1,317 @@
+VI_MESSAGE_CATALOG
+regel te langX
+kan regel %lu niet verwijderenX
+kan niet toevoegen aan regel %luX
+kan niet invoegen vooraan regel %luX
+kan regel %lu niet opslaanX
+kan laatste regel niet lezenX
+Fout: kan regel %lu niet vindenX
+log bestandX
+Er vindt geen logging plaats, kan wijzigingen niet ongedaan makenX
+geen wijzigingen om ongedaan te makenX
+Er vindt geen logging plaats, kan wijzigingen niet ongedaan makenX
+Er vindt geen logging plaats, herhaling niet mogelijkX
+geen wijzigingen om te herhalenX
+%s/%d: schrijven naar log misluktX
+Vi's standaard invoer en uitvoer moeten aan een terminal gekoppeld zijnX
+Merk %s: niet gezetX
+Merk %s: de regel is verwijderdX
+Merk %s: de cursor positie bestaat niet meerX
+Fout: X
+nieuw bestandX
+naam veranderdX
+gewijzigdX
+ongewijzigdX
+NIET BEVEILIGDX
+niet schrijfbaarX
+regel %lu uit %lu [%ld%%]X
+leeg bestandX
+regel %luX
+Het bestand %s is geen message catalogX
+Niet in staat om de standaard %s optie in te stellenX
+Gebruik: %sX
+set: optie %s onbekend: 'set all' laat alle opties zienX
+set: [no]%s optie kan geen waarde hebbenX
+set: %s optie moet een waarde hebbenX
+set: %s optie: %sX
+set: %s optie: %s: getal is te grootX
+set: %s optie: %s is een ongeldige waardeX
+set: %s optie moet een waarde hebbenX
+Te weinig kolommen op het scherm, minder dan %dX
+Aantal kolommen te groot, meer dan %dX
+Te weinig regels op het scherm, minder dan %dX
+Aantal regels te groot, meer dan %dX
+De lisp optie is niet ondersteundX
+messages niet uitgeschakeld: %sX
+messages niet geactiveerd: %sX
+
+De paragraph optie moet karakter paren bevattenX
+De section optie moet karakter paren bevattenX
+
+
+
+De standaard buffer is leegX
+Buffer %s is leegX
+Bestanden met newlines in de naam kunnen niet hersteld wordenX
+Wijzigingen kunnen niet ongedaan gemaakt worden als deze sessie misluktX
+Bestand wordt gecopieerd voor herstel...X
+Herstel mechanisme werkt niet: %sX
+Wijzigingen kunnen niet ongedaan gemaakt worden als deze sessie misluktX
+Kon bestand niet veilig stellen: %sX
+Bestand wordt gecopieerd voor herstel...X
+Informatie met betrekking tot gebruiker nummer %u niet gevondenX
+Kan herstel bestand niet beveiligenX
+herstel buffer overgelopenX
+herstel bestandX
+%s: verminkt herstel bestandX
+%s: verminkt herstel bestandX
+U heeft geen bestand genaamd %s te herstellenX
+U kan eerdere versies van dit bestand herstellenX
+U kan nog meer bestanden herstellenX
+kan geen email versturen: %sX
+Bestand leeg; niets om te doorzoekenX
+Einde van het bestand bereikt zonder dat het patroon gevonden isX
+Geen vorig zoek patroonX
+Patroon niet gevondenX
+Begin van het bestand bereikt zonder dat het patroon gevonden isX
+Zoek-operatie omgeslagenX
+Bezig met zoeken...X
+Geen niet-printbaar karakter gevondenX
+Onbekend commandoX
+
+Commando niet beschikbaar in ex modeX
+Aantal mag niet nul zijnX
+%s: ongeldige regel aanduidingX
+Interne fout in syntax tabel (%s: %s)X
+Gebruik: %sX
+%s: tijdelijke buffer niet vrijgegevenX
+Vlag offset voor regel 1X
+Vlag offset voorbij bestands eindeX
+bestand/scherm veranderd tijdens uitvoeren van @ in een blokX
+bestand/scherm veranderd tijdens uitvoeren van globaal/v commandoX
+Ex commando mislukt: rest van commando(s) genegeerdX
+Ex commando mislukt: gemappede toetsen genegeerdX
+Het tweede adres is kleiner dan het eersteX
+Geen merk naam opgegevenX
+\\ niet gevolgd door / of ?X
+Referentie aan een regel nummer kleiner dan 0X
+Het %s commando is onbekendX
+Adres waarde te grootX
+Adres waarde te kleinX
+Ongeldige adres combinatieX
+Ongeldig adres: slechts %lu regels in het bestand aanwezigX
+Ongeldig adres: het bestand is leegX
+Het %s commando staat het adres 0 niet toeX
+Geen afkortingen om weer te gevenX
+Afkortingen moeten eindigen met een "woord" letterX
+Afkortingen mogen geen tabulaties of spaties bevattenX
+Afkortingen mogen geen woord/niet-woord karakters mengen, behalve aan het eindeX
+"%s" is geen afkortingX
+Vi commando mislukt: gemappede toetsen genegeerdX
+Dit is het laatste bestandX
+Dit is het eerste bestandX
+Dit is het eerste bestandX
+lijst met bestanden is leegX
+Geen voorgaand commando om "!" te vervangenX
+Geen bestandsnaam voor %%X
+Geen bestandsnaam voor #X
+Fout: execl: %sX
+I/O fout: %sX
+Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forcerenX
+Kan uw home directory niet vindenX
+Nieuwe huidige directory: %sX
+Geen cut buffers aanwezigX
+Het %s commando kan niet gebruikt worden in een globaal of v commandoX
+%s/%s: niet gelezen: noch U noch root is de eigenaarX
+%s/%s: niet gelezen: U bent niet de eigenaarX
+%s/%s: niet gelezen: kan gewijzigd worden door andere gebruikersX
+%s: niet gelezen: noch U noch root is de eigenaar"X
+%s: niet gelezen: U bent niet de eigenaarX
+%s: niet gelezen: kan gewijzigd worden door andere gebruikersX
+Geen volgende regel om samen te voegenX
+Geen input map entriesX
+Geen command map entriesX
+Het %s karakter kan niet ge-remapped wordenX
+"%s" is niet gemappedX
+Merk naam moet een enkel karakter zijnX
+%s bestaat al, niet weggeschreven; gebruik ! om het te forcerenX
+Nieuw .exrc bestand: %s. X
+doel regel ligt in het blokX
+Het open commando vereist dat de open optie actief isX
+Het open commando is nog niet ondersteundX
+Kan dit bestand niet veilig stellenX
+Bestand veilig gesteldX
+%s resulteert in te veel bestandsnamenX
+Alleen echte bestanden en named pipes kunnen gelezen wordenX
+%s: lees beveiliging niet beschikbaarX
+Bezig met lezen...X
+%s: %lu regels, %lu karaktersX
+Geen achtergrond schermen aanwezigX
+Het script commando is alleen beschikbaar in vi modeX
+Geen comando om uit te voerenX
+shiftwidth optie op 0 gezetX
+Count te grootX
+Count te kleinX
+Reguliere expressie opgegeven; r vlag heeft geen betekenisX
+De #, l en p vlaggen kunnen niet gecombineerd worden met de c vlag in vi modeX
+Geen match gevondenX
+Geen voorafgaande tag aanwezigX
+Minder dan %s elementen op de tags stapel; gebruik :display t[ags]X
+Geen bestand genaamd %s op de tags stapel; gebruik :display t[ags]X
+Kies Enter om door te gaan: X
+%s: tag niet gevondenX
+%s: verminkte tag in %sX
+%s: Het regel nummer van deze tag is voorbij het einde van het bestandX
+De tags stapel is leegX
+%s: zoek patroon niet gevondenX
+%d andere bestanden te wijzigenX
+Buffer %s is leegX
+Bevestig wijziging? [n]X
+OnderbrokenX
+Geen voorafgaande buffer om uit te voerenX
+Geen vorige reguliere expressieX
+Het %s commando vereist dat er een bestand geladen isX
+Gebruik: %sX
+Het visual commando vereist dat de open optie actief isX
+
+Leeg bestandX
+Geen voorafgaand F, f, T of t zoek commandoX
+%s niet gevondenX
+Geen voorafgaand bestand te bewerkenX
+Cursor niet op een getalX
+Getal wordt te grootX
+Getal wordt te kleinX
+Geen overeenkomstig karakter op deze regelX
+Overeenkomstig karakter niet gevondenX
+Geen karakters te vervangenX
+Geen ander scherm aanwezigX
+Karakters achter het zoek patroon, de regel offset, en/of het z commandoX
+Geen voorafgaand zoek patroonX
+Zoekopdracht na omslag teruggekeerd op originele positieX
+Afkorting overschrijdt expansie limiet: karakters genegeerdX
+Ongeldig karakter; quote to enterX
+Reeds aan het begin van de invoerX
+Niet meer karakters te verwijderenX
+Verplaatsing voorbij het einde van het bestandX
+Verplaatsing voorbij het einde van de regelX
+Cursor niet verplaatstX
+Reeds aan het begin van het bestandX
+Verplaatsing voorbij het begin van het bestandX
+Reeds in de eerste kolomX
+Buffers moeten voor het commando opgegeven wordenX
+Reeds bij het einde van het bestandX
+Reeds bij het einde van de regelX
+%s is geen vi commandoX
+Gebruik: %sX
+Geen karakters te verwijderenX
+Het Q commando vereist de ex terminal interfaceX
+Geen commando om te herhalenX
+Het bestand is leegX
+%s mag niet gebruikt worden als een verplaatsings commandoX
+Al in commando modeX
+Cursor niet in een woordX
+
+Windows optie waarde is te groot, maximum is %uX
+ToevoegenX
+VeranderenX
+CommandoX
+InvoegenX
+VervangenX
+Verplaatsing voorbij het eind van het schermX
+Verplaatsing voorbij het begin van het schermX
+Scherm moet meer dan %d regels hebben om het te kunnen splitsenX
+Er zijn geen achtergrond schermenX
+Er is geen achtergrond scherm waarin U bestand %s aan het bewerken bentX
+U kan uw enige scherm niet in de achtergrond zettenX
+Het scherm kan slechts verkleind worden tot %d regelsX
+Het scherm kan niet kleinerX
+Het scherm kan niet groterX
+
+Dit scherm kan niet gesuspend wordenX
+Onderbroken: gemappede toetsen genegeerdX
+vi: tijdelijke buffer niet vrijgegevenX
+Deze terminal heeft geen %s toetsX
+Er kan slechts een buffer opgegeven wordenX
+Getal groter dan %luX
+OnderbrokenX
+Aanmaken van tijdelijk bestand is misluktX
+Waarschuwing: %s is geen regulier bestandX
+%s is al geopend, bestand is in deze sessie niet schrijfbaarX
+%s: verwijdering misluktX
+%s: sluiting misluktX
+%s: verwijdering misluktX
+%s: verwijdering misluktX
+Bestand niet schrijfbaar, niet weggeschreven; gebruik ! om het te forcerenX
+Bestand niet schrijfbaar, niet weggeschrevenX
+%s bestaat al, niet weggeschreven; gebruik ! om het te forcerenX
+%s bestaat al, niet weggeschrevenX
+Gebruik ! om een incompleet bestand weg te schrijvenX
+Bestand incompleet, niet weggeschrevenX
+%s: bestand op disk nieuwer dan deze versie; gebruik ! om het te forcerenX
+%s: bestand op disk nieuwer dan deze versieX
+%s: schrijf beveiliging niet beschikbaarX
+Bezig met schrijven...X
+%s: WAARSCHUWING: BESTAND INCOMPLEETX
+Reeds op de eerste tag van deze groepX
+%s: nieuw bestand: %lu regels, %lu karaktersX
+%s: %lu regels, %lu karaktersX
+%s resulteert in te veel bestandsnamenX
+%s: geen normaal bestandX
+%s: U bent niet de eigenaarX
+%s: kan gewijzigd worden door andere gebruikersX
+Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forcerenX
+Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik :edit! om het te forcerenX
+Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forcerenX
+Tijdelijk bestand; exit negeert wijzigingenX
+Bestand niet schrijfbaar, wijzigingen niet automatisch weggeschrevenX
+log opnieuw gestartX
+Bevestig? [ynq]X
+Druk op een toets om door te gaan: X
+Druk op een toets om door te gaan [: voor meer ex commandos]: X
+Druk op een toets om door te gaan [q om te stoppen]: X
+Deze vorm van %s vereist de ex terminal interfaceX
+Entering ex input mode.X
+Commando mislukt, nog geen bestand geladen.X
+ doorgaan?X
+Onverwacht character eventX
+Onverwacht end-of-file eventX
+Geen match gevonden voor dit patroonX
+Onverwacht interrupt eventX
+Onverwacht quit eventX
+Onverwacht repaint eventX
+Reeds op de laatste tag van deze groepX
+Het %s command vereist de ex terminal interfaceX
+Deze vorm van %s is niet ondersteund als de secure edit optie actief isX
+Onverwacht string eventX
+Onverwacht timeout eventX
+Onverwacht write eventX
+
+Shell expansies zijn niet ondersteund als de secure edit optie actief isX
+Het %s commando is niet ondersteund als de secure edit optie actief isX
+set: %s mag niet uitgezet wordenX
+Scherm te klein.X
+toegevoegdX
+gewijzigdX
+verwijderdX
+samengevoegdX
+verplaatstX
+verschovenX
+gebufferdX
+regelX
+regelsX
+Vi was niet geladen met een Tcl interpreterX
+Bestand gewijzigd sinds het de laatste keer weg is geschreven.X
+Shell expansie misluktX
+Geen %s edit optie opgegevenX
+Vi was niet geladen met een Perl interpreterX
+Geen ex commando om uit te voerenX
+Kies <CR> om commando uit te voeren, :q om te stoppenX
+Gebruik "cscope help" voor uitlegX
+Nog geen cscope connectie aanwezigX
+%s: onbekend zoek type: gebruik een van %sX
+%d: onbekende cscope sessieX
+set: de %s optie mag nooit aangezet wordenX
+set: de %s optie mag nooit op 0 gezet wordenX
+%s: toegevoegd: %lu regels, %lu karaktersX
+Onverwacht resize eventX
+%d bestanden te wijzigenX
diff --git a/contrib/nvi/catalog/dutch.base b/contrib/nvi/catalog/dutch.base
new file mode 100644
index 0000000..2d8667e
--- /dev/null
+++ b/contrib/nvi/catalog/dutch.base
@@ -0,0 +1,307 @@
+002 "regel te lang"
+003 "kan regel %lu niet verwijderen"
+004 "kan niet toevoegen aan regel %lu"
+005 "kan niet invoegen vooraan regel %lu"
+006 "kan regel %lu niet opslaan"
+007 "kan laatste regel niet lezen"
+008 "Fout: kan regel %lu niet vinden"
+009 "log bestand"
+010 "Er vindt geen logging plaats, kan wijzigingen niet ongedaan maken"
+011 "geen wijzigingen om ongedaan te maken"
+012 "Er vindt geen logging plaats, kan wijzigingen niet ongedaan maken"
+013 "Er vindt geen logging plaats, herhaling niet mogelijk"
+014 "geen wijzigingen om te herhalen"
+015 "%s/%d: schrijven naar log mislukt"
+016 "Vi's standaard invoer en uitvoer moeten aan een terminal gekoppeld zijn"
+017 "Merk %s: niet gezet"
+018 "Merk %s: de regel is verwijderd"
+019 "Merk %s: de cursor positie bestaat niet meer"
+020 "Fout: "
+021 "nieuw bestand"
+022 "naam veranderd"
+023 "gewijzigd"
+024 "ongewijzigd"
+025 "NIET BEVEILIGD"
+026 "niet schrijfbaar"
+027 "regel %lu uit %lu [%ld%%]"
+028 "leeg bestand"
+029 "regel %lu"
+030 "Het bestand %s is geen message catalog"
+031 "Niet in staat om de standaard %s optie in te stellen"
+032 "Gebruik: %s"
+033 "set: optie %s onbekend: 'set all' laat alle opties zien"
+034 "set: [no]%s optie kan geen waarde hebben"
+035 "set: %s optie moet een waarde hebben"
+036 "set: %s optie: %s"
+037 "set: %s optie: %s: getal is te groot"
+038 "set: %s optie: %s is een ongeldige waarde"
+039 "set: %s optie moet een waarde hebben"
+040 "Te weinig kolommen op het scherm, minder dan %d"
+041 "Aantal kolommen te groot, meer dan %d"
+042 "Te weinig regels op het scherm, minder dan %d"
+043 "Aantal regels te groot, meer dan %d"
+044 "De lisp optie is niet ondersteund"
+045 "messages niet uitgeschakeld: %s"
+046 "messages niet geactiveerd: %s"
+048 "De paragraph optie moet karakter paren bevatten"
+049 "De section optie moet karakter paren bevatten"
+053 "De standaard buffer is leeg"
+054 "Buffer %s is leeg"
+055 "Bestanden met newlines in de naam kunnen niet hersteld worden"
+056 "Wijzigingen kunnen niet ongedaan gemaakt worden als deze sessie mislukt"
+057 "Bestand wordt gecopieerd voor herstel..."
+058 "Herstel mechanisme werkt niet: %s"
+059 "Wijzigingen kunnen niet ongedaan gemaakt worden als deze sessie mislukt"
+060 "Kon bestand niet veilig stellen: %s"
+061 "Bestand wordt gecopieerd voor herstel..."
+062 "Informatie met betrekking tot gebruiker nummer %u niet gevonden"
+063 "Kan herstel bestand niet beveiligen"
+064 "herstel buffer overgelopen"
+065 "herstel bestand"
+066 "%s: verminkt herstel bestand"
+067 "%s: verminkt herstel bestand"
+068 "U heeft geen bestand genaamd %s te herstellen"
+069 "U kan eerdere versies van dit bestand herstellen"
+070 "U kan nog meer bestanden herstellen"
+071 "kan geen email versturen: %s"
+072 "Bestand leeg; niets om te doorzoeken"
+073 "Einde van het bestand bereikt zonder dat het patroon gevonden is"
+074 "Geen vorig zoek patroon"
+075 "Patroon niet gevonden"
+076 "Begin van het bestand bereikt zonder dat het patroon gevonden is"
+077 "Zoek-operatie omgeslagen"
+078 "Bezig met zoeken..."
+079 "Geen niet-printbaar karakter gevonden"
+080 "Onbekend commando"
+082 "Commando niet beschikbaar in ex mode"
+083 "Aantal mag niet nul zijn"
+084 "%s: ongeldige regel aanduiding"
+085 "Interne fout in syntax tabel (%s: %s)"
+086 "Gebruik: %s"
+087 "%s: tijdelijke buffer niet vrijgegeven"
+088 "Vlag offset voor regel 1"
+089 "Vlag offset voorbij bestands einde"
+090 "bestand/scherm veranderd tijdens uitvoeren van @ in een blok"
+091 "bestand/scherm veranderd tijdens uitvoeren van globaal/v commando"
+092 "Ex commando mislukt: rest van commando(s) genegeerd"
+093 "Ex commando mislukt: gemappede toetsen genegeerd"
+094 "Het tweede adres is kleiner dan het eerste"
+095 "Geen merk naam opgegeven"
+096 "\\ niet gevolgd door / of ?"
+097 "Referentie aan een regel nummer kleiner dan 0"
+098 "Het %s commando is onbekend"
+099 "Adres waarde te groot"
+100 "Adres waarde te klein"
+101 "Ongeldige adres combinatie"
+102 "Ongeldig adres: slechts %lu regels in het bestand aanwezig"
+103 "Ongeldig adres: het bestand is leeg"
+104 "Het %s commando staat het adres 0 niet toe"
+105 "Geen afkortingen om weer te geven"
+106 "Afkortingen moeten eindigen met een "woord" letter"
+107 "Afkortingen mogen geen tabulaties of spaties bevatten"
+108 "Afkortingen mogen geen woord/niet-woord karakters mengen, behalve aan het einde"
+109 ""%s" is geen afkorting"
+110 "Vi commando mislukt: gemappede toetsen genegeerd"
+111 "Dit is het laatste bestand"
+112 "Dit is het eerste bestand"
+113 "Dit is het eerste bestand"
+114 "lijst met bestanden is leeg"
+115 "Geen voorgaand commando om "!" te vervangen"
+116 "Geen bestandsnaam voor %%"
+117 "Geen bestandsnaam voor #"
+118 "Fout: execl: %s"
+119 "I/O fout: %s"
+120 "Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forceren"
+121 "Kan uw home directory niet vinden"
+122 "Nieuwe huidige directory: %s"
+123 "Geen cut buffers aanwezig"
+124 "Het %s commando kan niet gebruikt worden in een globaal of v commando"
+125 "%s/%s: niet gelezen: noch U noch root is de eigenaar"
+126 "%s/%s: niet gelezen: U bent niet de eigenaar"
+127 "%s/%s: niet gelezen: kan gewijzigd worden door andere gebruikers"
+128 "%s: niet gelezen: noch U noch root is de eigenaar""
+129 "%s: niet gelezen: U bent niet de eigenaar"
+130 "%s: niet gelezen: kan gewijzigd worden door andere gebruikers"
+131 "Geen volgende regel om samen te voegen"
+132 "Geen input map entries"
+133 "Geen command map entries"
+134 "Het %s karakter kan niet ge-remapped worden"
+135 ""%s" is niet gemapped"
+136 "Merk naam moet een enkel karakter zijn"
+137 "%s bestaat al, niet weggeschreven; gebruik ! om het te forceren"
+138 "Nieuw .exrc bestand: %s. "
+139 "doel regel ligt in het blok"
+140 "Het open commando vereist dat de open optie actief is"
+141 "Het open commando is nog niet ondersteund"
+142 "Kan dit bestand niet veilig stellen"
+143 "Bestand veilig gesteld"
+144 "%s resulteert in te veel bestandsnamen"
+145 "Alleen echte bestanden en named pipes kunnen gelezen worden"
+146 "%s: lees beveiliging niet beschikbaar"
+147 "Bezig met lezen..."
+148 "%s: %lu regels, %lu karakters"
+149 "Geen achtergrond schermen aanwezig"
+150 "Het script commando is alleen beschikbaar in vi mode"
+151 "Geen comando om uit te voeren"
+152 "shiftwidth optie op 0 gezet"
+153 "Count te groot"
+154 "Count te klein"
+155 "Reguliere expressie opgegeven; r vlag heeft geen betekenis"
+156 "De #, l en p vlaggen kunnen niet gecombineerd worden met de c vlag in vi mode"
+157 "Geen match gevonden"
+158 "Geen voorafgaande tag aanwezig"
+159 "Minder dan %s elementen op de tags stapel; gebruik :display t[ags]"
+160 "Geen bestand genaamd %s op de tags stapel; gebruik :display t[ags]"
+161 "Kies Enter om door te gaan: "
+162 "%s: tag niet gevonden"
+163 "%s: verminkte tag in %s"
+164 "%s: Het regel nummer van deze tag is voorbij het einde van het bestand"
+165 "De tags stapel is leeg"
+166 "%s: zoek patroon niet gevonden"
+167 "%d andere bestanden te wijzigen"
+168 "Buffer %s is leeg"
+169 "Bevestig wijziging? [n]"
+170 "Onderbroken"
+171 "Geen voorafgaande buffer om uit te voeren"
+172 "Geen vorige reguliere expressie"
+173 "Het %s commando vereist dat er een bestand geladen is"
+174 "Gebruik: %s"
+175 "Het visual commando vereist dat de open optie actief is"
+177 "Leeg bestand"
+178 "Geen voorafgaand F, f, T of t zoek commando"
+179 "%s niet gevonden"
+180 "Geen voorafgaand bestand te bewerken"
+181 "Cursor niet op een getal"
+182 "Getal wordt te groot"
+183 "Getal wordt te klein"
+184 "Geen overeenkomstig karakter op deze regel"
+185 "Overeenkomstig karakter niet gevonden"
+186 "Geen karakters te vervangen"
+187 "Geen ander scherm aanwezig"
+188 "Karakters achter het zoek patroon, de regel offset, en/of het z commando"
+189 "Geen voorafgaand zoek patroon"
+190 "Zoekopdracht na omslag teruggekeerd op originele positie"
+191 "Afkorting overschrijdt expansie limiet: karakters genegeerd"
+192 "Ongeldig karakter; quote to enter"
+193 "Reeds aan het begin van de invoer"
+194 "Niet meer karakters te verwijderen"
+195 "Verplaatsing voorbij het einde van het bestand"
+196 "Verplaatsing voorbij het einde van de regel"
+197 "Cursor niet verplaatst"
+198 "Reeds aan het begin van het bestand"
+199 "Verplaatsing voorbij het begin van het bestand"
+200 "Reeds in de eerste kolom"
+201 "Buffers moeten voor het commando opgegeven worden"
+202 "Reeds bij het einde van het bestand"
+203 "Reeds bij het einde van de regel"
+204 "%s is geen vi commando"
+205 "Gebruik: %s"
+206 "Geen karakters te verwijderen"
+207 "Het Q commando vereist de ex terminal interface"
+208 "Geen commando om te herhalen"
+209 "Het bestand is leeg"
+210 "%s mag niet gebruikt worden als een verplaatsings commando"
+211 "Al in commando mode"
+212 "Cursor niet in een woord"
+214 "Windows optie waarde is te groot, maximum is %u"
+215 "Toevoegen"
+216 "Veranderen"
+217 "Commando"
+218 "Invoegen"
+219 "Vervangen"
+220 "Verplaatsing voorbij het eind van het scherm"
+221 "Verplaatsing voorbij het begin van het scherm"
+222 "Scherm moet meer dan %d regels hebben om het te kunnen splitsen"
+223 "Er zijn geen achtergrond schermen"
+224 "Er is geen achtergrond scherm waarin U bestand %s aan het bewerken bent"
+225 "U kan uw enige scherm niet in de achtergrond zetten"
+226 "Het scherm kan slechts verkleind worden tot %d regels"
+227 "Het scherm kan niet kleiner"
+228 "Het scherm kan niet groter"
+230 "Dit scherm kan niet gesuspend worden"
+231 "Onderbroken: gemappede toetsen genegeerd"
+232 "vi: tijdelijke buffer niet vrijgegeven"
+233 "Deze terminal heeft geen %s toets"
+234 "Er kan slechts een buffer opgegeven worden"
+235 "Getal groter dan %lu"
+236 "Onderbroken"
+237 "Aanmaken van tijdelijk bestand is mislukt"
+238 "Waarschuwing: %s is geen regulier bestand"
+239 "%s is al geopend, bestand is in deze sessie niet schrijfbaar"
+240 "%s: verwijdering mislukt"
+241 "%s: sluiting mislukt"
+242 "%s: verwijdering mislukt"
+243 "%s: verwijdering mislukt"
+244 "Bestand niet schrijfbaar, niet weggeschreven; gebruik ! om het te forceren"
+245 "Bestand niet schrijfbaar, niet weggeschreven"
+246 "%s bestaat al, niet weggeschreven; gebruik ! om het te forceren"
+247 "%s bestaat al, niet weggeschreven"
+248 "Gebruik ! om een incompleet bestand weg te schrijven"
+249 "Bestand incompleet, niet weggeschreven"
+250 "%s: bestand op disk nieuwer dan deze versie; gebruik ! om het te forceren"
+251 "%s: bestand op disk nieuwer dan deze versie"
+252 "%s: schrijf beveiliging niet beschikbaar"
+253 "Bezig met schrijven..."
+254 "%s: WAARSCHUWING: BESTAND INCOMPLEET"
+255 "Reeds op de eerste tag van deze groep"
+256 "%s: nieuw bestand: %lu regels, %lu karakters"
+257 "%s: %lu regels, %lu karakters"
+258 "%s resulteert in te veel bestandsnamen"
+259 "%s: geen normaal bestand"
+260 "%s: U bent niet de eigenaar"
+261 "%s: kan gewijzigd worden door andere gebruikers"
+262 "Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forceren"
+263 "Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik :edit! om het te forceren"
+264 "Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forceren"
+265 "Tijdelijk bestand; exit negeert wijzigingen"
+266 "Bestand niet schrijfbaar, wijzigingen niet automatisch weggeschreven"
+267 "log opnieuw gestart"
+268 "Bevestig? [ynq]"
+269 "Druk op een toets om door te gaan: "
+270 "Druk op een toets om door te gaan [: voor meer ex commandos]: "
+271 "Druk op een toets om door te gaan [q om te stoppen]: "
+272 "Deze vorm van %s vereist de ex terminal interface"
+273 "Entering ex input mode."
+274 "Commando mislukt, nog geen bestand geladen."
+275 " doorgaan?"
+276 "Onverwacht character event"
+277 "Onverwacht end-of-file event"
+278 "Geen match gevonden voor dit patroon"
+279 "Onverwacht interrupt event"
+280 "Onverwacht quit event"
+281 "Onverwacht repaint event"
+282 "Reeds op de laatste tag van deze groep"
+283 "Het %s command vereist de ex terminal interface"
+284 "Deze vorm van %s is niet ondersteund als de secure edit optie actief is"
+285 "Onverwacht string event"
+286 "Onverwacht timeout event"
+287 "Onverwacht write event"
+289 "Shell expansies zijn niet ondersteund als de secure edit optie actief is"
+290 "Het %s commando is niet ondersteund als de secure edit optie actief is"
+291 "set: %s mag niet uitgezet worden"
+292 "Scherm te klein."
+293 "toegevoegd"
+294 "gewijzigd"
+295 "verwijderd"
+296 "samengevoegd"
+297 "verplaatst"
+298 "verschoven"
+299 "gebufferd"
+300 "regel"
+301 "regels"
+302 "Vi was niet geladen met een Tcl interpreter"
+303 "Bestand gewijzigd sinds het de laatste keer weg is geschreven."
+304 "Shell expansie mislukt"
+305 "Geen %s edit optie opgegeven"
+306 "Vi was niet geladen met een Perl interpreter"
+307 "Geen ex commando om uit te voeren"
+308 "Kies <CR> om commando uit te voeren, :q om te stoppen"
+309 "Gebruik "cscope help" voor uitleg"
+310 "Nog geen cscope connectie aanwezig"
+311 "%s: onbekend zoek type: gebruik een van %s"
+312 "%d: onbekende cscope sessie"
+313 "set: de %s optie mag nooit aangezet worden"
+314 "set: de %s optie mag nooit op 0 gezet worden"
+315 "%s: toegevoegd: %lu regels, %lu karakters"
+316 "Onverwacht resize event"
+317 "%d bestanden te wijzigen"
diff --git a/contrib/nvi/catalog/dutch.check b/contrib/nvi/catalog/dutch.check
new file mode 100644
index 0000000..d651aec
--- /dev/null
+++ b/contrib/nvi/catalog/dutch.check
@@ -0,0 +1,37 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+213
+229
+288
+=========================
+MISSING ERROR MESSAGES (Please add!):
+=========================
+Extra error messages (just delete them):
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+=========================
+Duplicate messages, just message (this is okay):
+ 2 %s bestaat al, niet weggeschreven; gebruik ! om het te forcerenX
+ 2 %s resulteert in te veel bestandsnamenX
+ 2 %s: %lu regels, %lu karaktersX
+ 2 %s: verminkt herstel bestandX
+ 2 Bestand wordt gecopieerd voor herstel...X
+ 2 Buffer %s is leegX
+ 2 Dit is het eerste bestandX
+ 2 Er vindt geen logging plaats, kan wijzigingen niet ongedaan makenX
+ 2 OnderbrokenX
+ 2 Wijzigingen kunnen niet ongedaan gemaakt worden als deze sessie misluktX
+ 2 gewijzigdX
+ 2 set: %s optie moet een waarde hebbenX
+ 3 %s: verwijdering misluktX
+ 3 Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forcerenX
+ 4 Gebruik: %sX
+=========================
diff --git a/contrib/nvi/catalog/dutch.owner b/contrib/nvi/catalog/dutch.owner
new file mode 100644
index 0000000..27f47d3
--- /dev/null
+++ b/contrib/nvi/catalog/dutch.owner
@@ -0,0 +1 @@
+J.G. Vons <Gert-Jan.Vons@ocegr.fr>
diff --git a/contrib/nvi/catalog/english b/contrib/nvi/catalog/english
new file mode 100644
index 0000000..f34451d
--- /dev/null
+++ b/contrib/nvi/catalog/english
@@ -0,0 +1,317 @@
+VI_MESSAGE_CATALOG
+Line length overflowX
+unable to delete line %luX
+unable to append to line %luX
+unable to insert at line %luX
+unable to store line %luX
+unable to get last lineX
+Error: unable to retrieve line %luX
+Log fileX
+Logging not being performed, undo not possibleX
+No changes to undoX
+Logging not being performed, undo not possibleX
+Logging not being performed, roll-forward not possibleX
+No changes to re-doX
+%s/%d: log put errorX
+Vi's standard input and output must be a terminalX
+Mark %s: not setX
+Mark %s: the line was deletedX
+Mark %s: cursor position no longer existsX
+Error: X
+new fileX
+name changedX
+modifiedX
+unmodifiedX
+UNLOCKEDX
+readonlyX
+line %lu of %lu [%ld%%]X
+empty fileX
+line %luX
+The file %s is not a message catalogX
+Unable to set default %s optionX
+Usage: %sX
+set: no %s option: 'set all' gives all option valuesX
+set: [no]%s option doesn't take a valueX
+set: %s option isn't a booleanX
+set: %s option: %sX
+set: %s option: %s: value overflowX
+set: %s option: %s is an illegal numberX
+set: %s option isn't a booleanX
+Screen columns too small, less than %dX
+Screen columns too large, greater than %dX
+Screen lines too small, less than %dX
+Screen lines too large, greater than %dX
+The lisp option is not implementedX
+messages not turned off: %sX
+messages not turned on: %sX
+
+The paragraph option must be in two character groupsX
+The section option must be in two character groupsX
+
+
+
+The default buffer is emptyX
+Buffer %s is emptyX
+Files with newlines in the name are unrecoverableX
+Modifications not recoverable if the session failsX
+Copying file for recovery...X
+Preservation failed: %sX
+Modifications not recoverable if the session failsX
+File backup failed: %sX
+Copying file for recovery...X
+Information on user id %u not foundX
+Unable to lock recovery fileX
+Recovery file buffer overrunX
+Recovery fileX
+%s: malformed recovery fileX
+%s: malformed recovery fileX
+No files named %s, readable by you, to recoverX
+There are older versions of this file for you to recoverX
+There are other files for you to recoverX
+not sending email: %sX
+File empty; nothing to searchX
+Reached end-of-file without finding the patternX
+No previous search patternX
+Pattern not foundX
+Reached top-of-file without finding the patternX
+Search wrappedX
+Searching...X
+No non-printable character foundX
+Unknown command nameX
+
+%s: command not available in ex modeX
+Count may not be zeroX
+%s: bad line specificationX
+Internal syntax table error (%s: %s)X
+Usage: %sX
+%s: temporary buffer not releasedX
+Flag offset to before line 1X
+Flag offset past end-of-fileX
+@ with range running when the file/screen changedX
+Global/v command running when the file/screen changedX
+Ex command failed: pending commands discardedX
+Ex command failed: mapped keys discardedX
+The second address is smaller than the firstX
+No mark name suppliedX
+\\ not followed by / or ?X
+Reference to a line number less than 0X
+The %s command is unknownX
+Address value overflowX
+Address value underflowX
+Illegal address combinationX
+Illegal address: only %lu lines in the fileX
+Illegal address: the file is emptyX
+The %s command doesn't permit an address of 0X
+No abbreviations to displayX
+Abbreviations must end with a "word" characterX
+Abbreviations may not contain tabs or spacesX
+Abbreviations may not mix word/non-word characters, except at the endX
+"%s" is not an abbreviationX
+Vi command failed: mapped keys discardedX
+No more files to editX
+No previous files to editX
+No previous files to rewindX
+No file list to displayX
+No previous command to replace "!"X
+No filename to substitute for %%X
+No filename to substitute for #X
+Error: execl: %sX
+I/O error: %sX
+File modified since last complete write; write or use ! to overrideX
+Unable to find home directory locationX
+New current directory: %sX
+No cut buffers to displayX
+The %s command can't be used as part of a global or v commandX
+%s/%s: not sourced: not owned by you or rootX
+%s/%s: not sourced: not owned by youX
+%s/%s: not sourced: writeable by a user other than the ownerX
+%s: not sourced: not owned by you or rootX
+%s: not sourced: not owned by youX
+%s: not sourced: writeable by a user other than the ownerX
+No following lines to joinX
+No input map entriesX
+No command map entriesX
+The %s character may not be remappedX
+"%s" isn't currently mappedX
+Mark names must be a single characterX
+%s exists, not written; use ! to overrideX
+New exrc file: %sX
+Destination line is inside move rangeX
+The open command requires that the open option be setX
+The open command is not yet implementedX
+Preservation of this file not possibleX
+File preservedX
+%s: expanded into too many file namesX
+Only regular files and named pipes may be readX
+%s: read lock was unavailableX
+Reading...X
+%s: %lu lines, %lu charactersX
+No background screens to displayX
+The script command is only available in vi modeX
+No command to executeX
+shiftwidth option set to 0X
+Count overflowX
+Count underflowX
+Regular expression specified; r flag meaninglessX
+The #, l and p flags may not be combined with the c flag in vi modeX
+No match foundX
+No previous tag enteredX
+Less than %s entries on the tags stack; use :display t[ags]X
+No file %s on the tags stack to return to; use :display t[ags]X
+Press Enter to continue: X
+%s: tag not foundX
+%s: corrupted tag in %sX
+%s: the tag's line number is past the end of the fileX
+The tags stack is emptyX
+%s: search pattern not foundX
+%d more files to editX
+Buffer %s is emptyX
+Confirm change? [n]X
+InterruptedX
+No previous buffer to executeX
+No previous regular expressionX
+The %s command requires that a file have already been read inX
+Usage: %sX
+The visual command requires that the open option be setX
+
+Empty fileX
+No previous F, f, T or t searchX
+%s not foundX
+No previous file to editX
+Cursor not in a numberX
+Resulting number too largeX
+Resulting number too smallX
+No match character on this lineX
+Matching character not foundX
+No characters to replaceX
+No other screen to switch toX
+Characters after search string, line offset and/or z commandX
+No previous search patternX
+Search wrapped to original positionX
+Abbreviation exceeded expansion limit: characters discardedX
+Illegal character; quote to enterX
+Already at the beginning of the insertX
+No more characters to eraseX
+Movement past the end-of-fileX
+Movement past the end-of-lineX
+No cursor movement madeX
+Already at the beginning of the fileX
+Movement past the beginning of the fileX
+Already in the first columnX
+Buffers should be specified before the commandX
+Already at end-of-fileX
+Already at end-of-lineX
+%s isn't a vi commandX
+Usage: %sX
+No characters to deleteX
+The Q command requires the ex terminal interfaceX
+No command to repeatX
+The file is emptyX
+%s may not be used as a motion commandX
+Already in command modeX
+Cursor not in a wordX
+
+Windows option value is too large, max is %uX
+AppendX
+ChangeX
+CommandX
+InsertX
+ReplaceX
+Movement past the end-of-screenX
+Movement past the beginning-of-screenX
+Screen must be larger than %d lines to splitX
+There are no background screensX
+There's no background screen editing a file named %sX
+You may not background your only displayed screenX
+The screen can only shrink to %d rowsX
+The screen cannot shrinkX
+The screen cannot growX
+
+This screen may not be suspendedX
+Interrupted: mapped keys discardedX
+vi: temporary buffer not releasedX
+This terminal has no %s keyX
+Only one buffer may be specifiedX
+Number larger than %luX
+InterruptedX
+Unable to create temporary fileX
+Warning: %s is not a regular fileX
+%s already locked, session is read-onlyX
+%s: removeX
+%s: closeX
+%s: removeX
+%s: removeX
+Read-only file, not written; use ! to overrideX
+Read-only file, not writtenX
+%s exists, not written; use ! to overrideX
+%s exists, not writtenX
+Partial file, not written; use ! to overrideX
+Partial file, not writtenX
+%s: file modified more recently than this copy; use ! to overrideX
+%s: file modified more recently than this copyX
+%s: write lock was unavailableX
+Writing...X
+%s: WARNING: FILE TRUNCATEDX
+Already at the first tag of this groupX
+%s: new file: %lu lines, %lu charactersX
+%s: %lu lines, %lu charactersX
+%s expanded into too many file namesX
+%s: not a regular fileX
+%s: not owned by youX
+%s: accessible by a user other than the ownerX
+File modified since last complete write; write or use ! to overrideX
+File modified since last complete write; write or use :edit! to overrideX
+File modified since last complete write; write or use ! to overrideX
+File is a temporary; exit will discard modificationsX
+File readonly, modifications not auto-writtenX
+Log restartedX
+confirm? [ynq]X
+Press any key to continue: X
+Press any key to continue [: to enter more ex commands]: X
+Press any key to continue [q to quit]: X
+That form of %s requires the ex terminal interfaceX
+Entering ex input mode.X
+Command failed, no file read in yet.X
+ cont?X
+Unexpected character eventX
+Unexpected end-of-file eventX
+No matches for queryX
+Unexpected interrupt eventX
+Unexpected quit eventX
+Unexpected repaint eventX
+Already at the last tag of this groupX
+The %s command requires the ex terminal interfaceX
+That form of %s is not supported when the secure edit option is setX
+Unexpected string eventX
+Unexpected timeout eventX
+Unexpected write eventX
+
+Shell expansions not supported when the secure edit option is setX
+The %s command is not supported when the secure edit option is setX
+set: the %s option may not be turned offX
+Display too small.X
+addedX
+changedX
+deletedX
+joinedX
+movedX
+shiftedX
+yankedX
+lineX
+linesX
+Vi was not loaded with a Tcl interpreterX
+File modified since last write.X
+Shell expansion failedX
+No %s edit option specifiedX
+Vi was not loaded with a Perl interpreterX
+No ex command to executeX
+Enter <CR> to execute a command, :q to exitX
+Use "cscope help" for helpX
+No cscope connections runningX
+%s: unknown search type: use one of %sX
+%d: no such cscope sessionX
+set: the %s option may never be turned onX
+set: the %s option may never be set to 0X
+%s: appended: %lu lines, %lu charactersX
+Unexpected resize eventX
+%d files to editX
diff --git a/contrib/nvi/catalog/english.base b/contrib/nvi/catalog/english.base
new file mode 100644
index 0000000..6d8d7bf
--- /dev/null
+++ b/contrib/nvi/catalog/english.base
@@ -0,0 +1,309 @@
+002 "Line length overflow"
+003 "unable to delete line %lu"
+004 "unable to append to line %lu"
+005 "unable to insert at line %lu"
+006 "unable to store line %lu"
+007 "unable to get last line"
+008 "Error: unable to retrieve line %lu"
+009 "Log file"
+010 "Logging not being performed, undo not possible"
+011 "No changes to undo"
+012 "Logging not being performed, undo not possible"
+013 "Logging not being performed, roll-forward not possible"
+014 "No changes to re-do"
+015 "%s/%d: log put error"
+016 "Vi's standard input and output must be a terminal"
+017 "Mark %s: not set"
+018 "Mark %s: the line was deleted"
+019 "Mark %s: cursor position no longer exists"
+020 "Error: "
+021 "new file"
+022 "name changed"
+023 "modified"
+024 "unmodified"
+025 "UNLOCKED"
+026 "readonly"
+027 "line %lu of %lu [%ld%%]"
+028 "empty file"
+029 "line %lu"
+030 "The file %s is not a message catalog"
+031 "Unable to set default %s option"
+032 "Usage: %s"
+033 "set: no %s option: 'set all' gives all option values"
+034 "set: [no]%s option doesn't take a value"
+035 "set: %s option isn't a boolean"
+036 "set: %s option: %s"
+037 "set: %s option: %s: value overflow"
+038 "set: %s option: %s is an illegal number"
+039 "set: %s option isn't a boolean"
+040 "Screen columns too small, less than %d"
+041 "Screen columns too large, greater than %d"
+042 "Screen lines too small, less than %d"
+043 "Screen lines too large, greater than %d"
+044 "The lisp option is not implemented"
+045 "messages not turned off: %s"
+046 "messages not turned on: %s"
+048 "The paragraph option must be in two character groups"
+049 "The section option must be in two character groups"
+053 "The default buffer is empty"
+054 "Buffer %s is empty"
+055 "Files with newlines in the name are unrecoverable"
+056 "Modifications not recoverable if the session fails"
+057 "Copying file for recovery..."
+058 "Preservation failed: %s"
+059 "Modifications not recoverable if the session fails"
+060 "File backup failed: %s"
+061 "Copying file for recovery..."
+062 "Information on user id %u not found"
+063 "Unable to lock recovery file"
+064 "Recovery file buffer overrun"
+065 "Recovery file"
+066 "%s: malformed recovery file"
+067 "%s: malformed recovery file"
+068 "No files named %s, readable by you, to recover"
+069 "There are older versions of this file for you to recover"
+070 "There are other files for you to recover"
+071 "not sending email: %s"
+072 "File empty; nothing to search"
+073 "Reached end-of-file without finding the pattern"
+074 "No previous search pattern"
+075 "Pattern not found"
+076 "Reached top-of-file without finding the pattern"
+077 "Search wrapped"
+078 "Searching..."
+079 "No non-printable character found"
+080 "Unknown command name"
+082 "%s: command not available in ex mode"
+083 "Count may not be zero"
+084 "%s: bad line specification"
+085 "Internal syntax table error (%s: %s)"
+086 "Usage: %s"
+087 "%s: temporary buffer not released"
+088 "Flag offset to before line 1"
+089 "Flag offset past end-of-file"
+090 "@ with range running when the file/screen changed"
+091 "Global/v command running when the file/screen changed"
+092 "Ex command failed: pending commands discarded"
+093 "Ex command failed: mapped keys discarded"
+094 "The second address is smaller than the first"
+095 "No mark name supplied"
+096 "\\ not followed by / or ?"
+097 "Reference to a line number less than 0"
+098 "The %s command is unknown"
+099 "Address value overflow"
+100 "Address value underflow"
+101 "Illegal address combination"
+102 "Illegal address: only %lu lines in the file"
+103 "Illegal address: the file is empty"
+104 "The %s command doesn't permit an address of 0"
+105 "No abbreviations to display"
+106 "Abbreviations must end with a "word" character"
+107 "Abbreviations may not contain tabs or spaces"
+108 "Abbreviations may not mix word/non-word characters, except at the end"
+109 ""%s" is not an abbreviation"
+110 "Vi command failed: mapped keys discarded"
+111 "No more files to edit"
+112 "No previous files to edit"
+113 "No previous files to rewind"
+114 "No file list to display"
+115 "No previous command to replace "!""
+116 "No filename to substitute for %%"
+117 "No filename to substitute for #"
+118 "Error: execl: %s"
+119 "I/O error: %s"
+120 "File modified since last complete write; write or use ! to override"
+121 "Unable to find home directory location"
+122 "New current directory: %s"
+123 "No cut buffers to display"
+124 "The %s command can't be used as part of a global or v command"
+125 "%s/%s: not sourced: not owned by you or root"
+126 "%s/%s: not sourced: not owned by you"
+127 "%s/%s: not sourced: writeable by a user other than the owner"
+128 "%s: not sourced: not owned by you or root"
+129 "%s: not sourced: not owned by you"
+130 "%s: not sourced: writeable by a user other than the owner"
+131 "No following lines to join"
+132 "No input map entries"
+133 "No command map entries"
+134 "The %s character may not be remapped"
+135 ""%s" isn't currently mapped"
+136 "Mark names must be a single character"
+137 "%s exists, not written; use ! to override"
+138 "New exrc file: %s"
+139 "Destination line is inside move range"
+140 "The open command requires that the open option be set"
+141 "The open command is not yet implemented"
+142 "Preservation of this file not possible"
+143 "File preserved"
+144 "%s: expanded into too many file names"
+145 "Only regular files and named pipes may be read"
+146 "%s: read lock was unavailable"
+147 "Reading..."
+148 "%s: %lu lines, %lu characters"
+149 "No background screens to display"
+150 "The script command is only available in vi mode"
+151 "No command to execute"
+152 "shiftwidth option set to 0"
+153 "Count overflow"
+154 "Count underflow"
+155 "Regular expression specified; r flag meaningless"
+156 "The #, l and p flags may not be combined with the c flag in vi mode"
+157 "No match found"
+158 "No previous tag entered"
+159 "Less than %s entries on the tags stack; use :display t[ags]"
+160 "No file %s on the tags stack to return to; use :display t[ags]"
+161 "Press Enter to continue: "
+162 "%s: tag not found"
+163 "%s: corrupted tag in %s"
+164 "%s: the tag's line number is past the end of the file"
+165 "The tags stack is empty"
+166 "%s: search pattern not found"
+167 "%d more files to edit"
+168 "Buffer %s is empty"
+169 "Confirm change? [n]"
+170 "Interrupted"
+171 "No previous buffer to execute"
+172 "No previous regular expression"
+173 "The %s command requires that a file have already been read in"
+174 "Usage: %s"
+175 "The visual command requires that the open option be set"
+177 "Empty file"
+178 "No previous F, f, T or t search"
+179 "%s not found"
+180 "No previous file to edit"
+181 "Cursor not in a number"
+182 "Resulting number too large"
+183 "Resulting number too small"
+184 "No match character on this line"
+185 "Matching character not found"
+186 "No characters to replace"
+187 "No other screen to switch to"
+188 "Characters after search string, line offset and/or z command"
+189 "No previous search pattern"
+190 "Search wrapped to original position"
+191 "Abbreviation exceeded expansion limit: characters discarded"
+192 "Illegal character; quote to enter"
+193 "Already at the beginning of the insert"
+194 "No more characters to erase"
+195 "Movement past the end-of-file"
+196 "Movement past the end-of-line"
+197 "No cursor movement made"
+198 "Already at the beginning of the file"
+199 "Movement past the beginning of the file"
+200 "Already in the first column"
+201 "Buffers should be specified before the command"
+202 "Already at end-of-file"
+203 "Already at end-of-line"
+204 "%s isn't a vi command"
+205 "Usage: %s"
+206 "No characters to delete"
+207 "The Q command requires the ex terminal interface"
+208 "No command to repeat"
+209 "The file is empty"
+209 "The file is empty"
+210 "%s may not be used as a motion command"
+211 "Already in command mode"
+212 "Cursor not in a word"
+214 "Windows option value is too large, max is %u"
+215 "Append"
+216 "Change"
+217 "Command"
+218 "Insert"
+219 "Replace"
+220 "Movement past the end-of-screen"
+221 "Movement past the beginning-of-screen"
+222 "Screen must be larger than %d lines to split"
+223 "There are no background screens"
+224 "There's no background screen editing a file named %s"
+225 "You may not background your only displayed screen"
+226 "The screen can only shrink to %d rows"
+227 "The screen cannot shrink"
+228 "The screen cannot grow"
+230 "This screen may not be suspended"
+231 "Interrupted: mapped keys discarded"
+232 "vi: temporary buffer not released"
+233 "This terminal has no %s key"
+234 "Only one buffer may be specified"
+235 "Number larger than %lu"
+236 "Interrupted"
+237 "Unable to create temporary file"
+238 "Warning: %s is not a regular file"
+239 "%s already locked, session is read-only"
+240 "%s: remove"
+241 "%s: close"
+242 "%s: remove"
+243 "%s: remove"
+244 "Read-only file, not written; use ! to override"
+245 "Read-only file, not written"
+246 "%s exists, not written; use ! to override"
+247 "%s exists, not written"
+248 "Partial file, not written; use ! to override"
+249 "Partial file, not written"
+250 "%s: file modified more recently than this copy; use ! to override"
+251 "%s: file modified more recently than this copy"
+252 "%s: write lock was unavailable"
+253 "Writing..."
+254 "%s: WARNING: FILE TRUNCATED"
+255 "Already at the first tag of this group"
+256 "%s: new file: %lu lines, %lu characters"
+257 "%s: %lu lines, %lu characters"
+258 "%s expanded into too many file names"
+259 "%s: not a regular file"
+260 "%s: not owned by you"
+261 "%s: accessible by a user other than the owner"
+262 "File modified since last complete write; write or use ! to override"
+263 "File modified since last complete write; write or use :edit! to override"
+264 "File modified since last complete write; write or use ! to override"
+265 "File is a temporary; exit will discard modifications"
+266 "File readonly, modifications not auto-written"
+267 "Log restarted"
+268 "confirm? [ynq]"
+269 "Press any key to continue: "
+270 "Press any key to continue [: to enter more ex commands]: "
+271 "Press any key to continue [q to quit]: "
+272 "That form of %s requires the ex terminal interface"
+273 "Entering ex input mode."
+274 "Command failed, no file read in yet."
+275 " cont?"
+276 "Unexpected character event"
+277 "Unexpected end-of-file event"
+278 "No matches for query"
+279 "Unexpected interrupt event"
+280 "Unexpected quit event"
+281 "Unexpected repaint event"
+282 "Already at the last tag of this group"
+283 "The %s command requires the ex terminal interface"
+284 "That form of %s is not supported when the secure edit option is set"
+285 "Unexpected string event"
+286 "Unexpected timeout event"
+287 "Unexpected write event"
+289 "Shell expansions not supported when the secure edit option is set"
+290 "The %s command is not supported when the secure edit option is set"
+291 "set: the %s option may not be turned off"
+292 "Display too small."
+293 "added"
+294 "changed"
+295 "deleted"
+296 "joined"
+297 "moved"
+298 "shifted"
+299 "yanked"
+300 "line"
+301 "lines"
+302 "Vi was not loaded with a Tcl interpreter"
+303 "File modified since last write."
+304 "Shell expansion failed"
+304 "Shell expansion failed"
+305 "No %s edit option specified"
+306 "Vi was not loaded with a Perl interpreter"
+307 "No ex command to execute"
+308 "Enter <CR> to execute a command, :q to exit"
+309 "Use "cscope help" for help"
+310 "No cscope connections running"
+311 "%s: unknown search type: use one of %s"
+312 "%d: no such cscope session"
+313 "set: the %s option may never be turned on"
+314 "set: the %s option may never be set to 0"
+315 "%s: appended: %lu lines, %lu characters"
+316 "Unexpected resize event"
+317 "%d files to edit"
diff --git a/contrib/nvi/catalog/english.check b/contrib/nvi/catalog/english.check
new file mode 100644
index 0000000..5109378
--- /dev/null
+++ b/contrib/nvi/catalog/english.check
@@ -0,0 +1,36 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+229
+288
+=========================
+MISSING ERROR MESSAGES (Please add!):
+=========================
+Extra error messages (just delete them):
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+ 2 209 "The file is empty"
+ 2 304 "Shell expansion failed"
+=========================
+Duplicate messages, just message (this is okay):
+ 2 %s exists, not written; use ! to overrideX
+ 2 %s: %lu lines, %lu charactersX
+ 2 %s: malformed recovery fileX
+ 2 Buffer %s is emptyX
+ 2 Copying file for recovery...X
+ 2 InterruptedX
+ 2 Logging not being performed, undo not possibleX
+ 2 Modifications not recoverable if the session failsX
+ 2 No previous search patternX
+ 2 set: %s option isn't a booleanX
+ 3 %s: removeX
+ 3 File modified since last complete write; write or use ! to overrideX
+ 4 Usage: %sX
+=========================
diff --git a/contrib/nvi/catalog/english.owner b/contrib/nvi/catalog/english.owner
new file mode 100644
index 0000000..034567ddd
--- /dev/null
+++ b/contrib/nvi/catalog/english.owner
@@ -0,0 +1 @@
+Keith Bostic <bostic@cs.berkeley.edu>
diff --git a/contrib/nvi/catalog/french b/contrib/nvi/catalog/french
new file mode 100644
index 0000000..a75c486
--- /dev/null
+++ b/contrib/nvi/catalog/french
@@ -0,0 +1,317 @@
+VI_MESSAGE_CATALOG
+D‚passement de longueur de ligneX
+impossible de supprimer la ligne %luX
+impossible d'ajouter … la ligne %luX
+impossible d'ins‚rer devant la ligne %luX
+impossible de stocker la ligne %luX
+impossible d'obtenir la derniŠre ligneX
+Erreur : impossible de r‚cup‚rer la ligne %luX
+Fichier journalX
+Aucune connexion n'‚tant effectu‚e, impossible d'annulerX
+Aucune action … annulerX
+Aucune connexion n'‚tant effectu‚e, impossible d'annulerX
+Aucune connexion n'‚tant effectu‚e, reprise actualis‚e impossibleX
+Aucune action … refaireX
+%s/%d : Erreur d'‚criture de journalX
+L'entr‚e et la sortie Vi standards doivent ˆtre un terminalX
+Marque %s : non d‚finieX
+Marque %s : la ligne a ‚t‚ supprim‚eX
+Marque %s : la position du curseur n'existe plusX
+Erreur : X
+nouveau fichierX
+le nom a chang‚X
+modifi‚X
+non modifi‚X
+DEVERROUILLEX
+lecture seuleX
+ligne %lu de %lu [%ld%%]X
+fichier videX
+ligne %luX
+Ce fichier %s n'est pas un catalogue de messagesX
+Impossible de configurer option %s par d‚fautX
+Utilisation : %sX
+D‚finition : pas d'option %s : 'tout d‚finir' donne toutes les valeurs optionnellesX
+D‚finition : option [no]%s ne prend pas de valeurX
+D‚finition : l'option %s n'est pas bool‚enneX
+D‚finition : option %s : %sX
+D‚finition : option %s : %s : D‚passement de valeurX
+D‚finition : option %s : %s n'est pas un nombre valideX
+D‚finition : l'option %s n'est pas bool‚enneX
+Les colonnes de l'‚cran sont trop petites, inf‚rieures … %dX
+Les colonnes de l'‚cran sont trop grandes, sup‚rieures … %dX
+Les lignes de l'‚cran sont trop courtes, inf‚rieures … %dX
+Les lignes de l'‚cran sont trop longues, sup‚rieures … %dX
+L'option lisp n'est pas impl‚ment‚eX
+Les messages ne sont pas d‚sactiv‚s : %sX
+Les messages ne sont pas activ‚s : %sX
+
+L'option de paragraphe doit ˆtre en groupe de deux caractŠresX
+L'option de section doit ˆtre en groupe de deux caractŠresX
+
+
+
+Le tampon par d‚faut est videX
+Le tampon %s est videX
+Les fichiers dont le nom contient des caractŠres de saut de ligne sont irr‚cup‚rablesX
+Impossible de r‚cup‚rer les modifications si la session ‚choueX
+Copie en cours du fichier pour r‚cup‚ration...X
+La pr‚servation a ‚chou‚ : %sX
+Impossible de r‚cup‚rer les modifications si la session ‚choueX
+La sauvegarde du fichier a ‚chou‚ : %sX
+Copie en cours du fichier pour r‚cup‚ration...X
+Les renseignements sur l'identit‚ %u de l'utilisateur sont introuvablesX
+Impossible de verrouiller le fichier de r‚cup‚rationX
+D‚bordement de tampon du fichier de r‚cup‚rationX
+Fichier de r‚cup‚rationX
+%s : Fichier de r‚cup‚ration malform‚X
+%s : Fichier de r‚cup‚ration malform‚X
+Aucun fichier nomm‚ %s … r‚cup‚rer, que vous puissiez lireX
+Il existe des versions r‚cup‚rables ant‚rieures … ce fichierX
+Vous avez d'autres fichiers … r‚cup‚rerX
+pas d'envoi d'email : %sX
+Fichier vide, rien … rechercherX
+Fin de fichier atteinte sans trouver le motifX
+Pas de motif de recherche pr‚c‚dentX
+Motif introuvableX
+D‚but du fichier atteint sans trouver le motifX
+La recherche est revenue … son point de d‚partX
+Recherche en cours...X
+CaractŠre non-imprimable introuvableX
+Nom de commande inconnuX
+
+%s : Commande non disponible en ex modeX
+Le compte ne peut ˆtre z‚roX
+%s : mauvaise sp‚cification de ligneX
+Erreur de tableau de syntaxe interne (%s: %s)X
+Utilisation : %sX
+%s : tampon temporaire non lib‚r‚X
+D‚calage de drapeau hors de la ligne 1X
+D‚calage de drapeau hors de la fin du fichierX
+@ avec plage, en cours d'ex‚cution quand le fichier/l'‚cran a chang‚X
+Commande Global/v en cours d'ex‚cution quand le fichier/l'‚cran a chang‚X
+La commande ex a ‚chou‚ : commandes en attente abandonn‚esX
+La commande ex a ‚chou‚ : les touches affect‚es sont abandonn‚esX
+La deuxiŠme adresse est plus petite que la premiŠreX
+Aucun nom de marque fourniX
+\\ pas suivi par / ou ?X
+R‚f‚rence … un num‚ro de ligne inf‚rieure … 0X
+La commande %s est inconnueX
+D‚passement de la valeur adresseX
+D‚passement n‚gatif de la valeur adresseX
+Combinaison d'adresse non valideX
+Adresse non valide : il n'y a que des lignes %lu dans le fichierX
+Adresse non valide : le fichier est videX
+La commande %s ne permet pas une adresse de 0X
+Pas d'abr‚viations … afficherX
+Les abr‚viations doivent finir par un caractŠre"motX
+Les abr‚viations ne peuvent pas contenir de tabulations ni d'espacesX
+Les abr‚viations ne peuvent pas contenir un m‚lange de caractŠres mot/non-mot, sauf … la finX
+"%s" n'est pas une abr‚viationX
+La commande Vi a ‚chou‚ : Les touches affect‚es ont ‚t‚ abandonn‚esX
+Plus de fichiers … ‚diterX
+Pas de fichiers pr‚c‚dents … ‚diterX
+Pas de fichiers pr‚c‚dents … rembobinerX
+Pas de liste de fichiers … afficherX
+Pas de commande pr‚c‚dente … remplacer"!"X
+Pas de nom de fichier … substituer … %%X
+Pas de nom de fichier … substituer … #X
+Erreur : execl : %sX
+Erreur E/S : %sX
+Fichier modifi‚ depuis la derniŠre ‚criture complŠte ; ‚crire ou utiliser ! pour outrepasserX
+Impossible de trouver l'emplacement du r‚pertoire d'origineX
+Nouveau r‚pertoire en cours : %sX
+Pas de tampon de coupure … afficherX
+La commande %s ne peut pas ˆtre utilis‚e … l'int‚rieur d'une commande globale ou commande vX
+%s/%s : ‚chec de source : ni vous ni le super-utilisateur n'ˆtes les propri‚taires X
+%s/%s : ‚chec de source : vous n'ˆtes pas le propri‚taireX
+%s/%s : ‚chec de source : peut ˆtre ‚crit par un utilisateur autre que le propri‚taireX
+%s : ‚chec de source : ni vous ni le super-utilisateur n'ˆtes les propri‚tairesX
+%s : ‚chec de source : vous n'ˆtes pas le propri‚taireX
+%s : ‚chec de source : peut ˆtre ‚crit par un utilisateur autre que le propri‚taireX
+Pas de lignes suivantes … joindreX
+Pas d'entr‚es de mappage d'entr‚eX
+Pas d'entr‚es de mappage de commandesX
+Le caractŠre %s ne peut pas ˆtre remapp‚X
+"%s" n'est pas actuellement mapp‚X
+Les noms de marque ne doivent avoir qu'un caractŠreX
+%s existe, non enregistr‚; utiliser ! pour outrepasserX
+Nouveau fichier exrc : %sX
+La ligne de destination est … l'int‚rieur de la plage … d‚placerX
+La commande ouverte n‚cessite que l'option ouverte soit d‚finieX
+La commande ouverte n'est pas encore impl‚ment‚eX
+La pr‚servation de ce fichier est impossibleX
+Fichier pr‚serv‚X
+%s: ‚tendu dans trop de noms de fichiersX
+Vous ne pouvez lire que les fichiers standards et les canaux de transmission nomm‚sX
+%s: Interdiction de lecture non disponibleX
+Lecture en cours...X
+%s: %lu lignes, %lu caractŠresX
+Pas d'‚crans d'arriŠre-plan … afficherX
+La commande script n'est disponible qu'en mode viX
+Pas de commande … ex‚cuterX
+Option de largeur de d‚calage d‚finie sur 0X
+Compter d‚passementX
+Compter d‚passement n‚gatifX
+Expression standard sp‚cifi‚e; drapeau r superfluX
+Vous ne pouvez pas en mode vi, combiner les drapeaux #, l et p avec le drapeau cX
+Aucune correspondance trouv‚eX
+Aucune marque pr‚c‚dente entr‚eX
+Moins de %s entr‚es dans la pile de marques ; utilisez t[ags]X
+Pas de fichier %s vers lequel retourner dans la pile de marques ; utiliser : affichage t[ags]X
+Appuyez sur Entr‚e pour continuer :X
+%s : marque introuvableX
+%s : marque corrompue en %sX
+%s : le num‚ro de ligne de la marque d‚passe la fin du fichierX
+La pile de marques est videX
+%s : motif de recherche introuvableX
+%d fichiers suppl‚mentaires … ‚diterX
+Le tampon %s est vide
+Confirmer les changements ? [n]X
+InterrompuX
+Pas de tampon pr‚c‚dent … ex‚cuterX
+Pas d'expression standard pr‚c‚denteX
+La commande %s n‚cessite qu'un fichier ait d‚j… ‚t‚ lu en m‚moireX
+Utilisation : %sX
+La commande visuelle n‚cessite que l'option ouverte soit d‚finieX
+
+Fichier videX
+Pas de recherche pr‚c‚dente F, f, T ou tX
+%s introuvableX
+Pas de fichier pr‚c‚dent … ‚diterX
+Le curseur n'est pas dans un nombreX
+Le nombre obtenu est trop grandX
+Le nombre obtenu est trop petitX
+Pas de correspondance de caractŠre sur cette ligneX
+CaractŠre correspondant introuvableX
+Pas de caractŠres … remplacerX
+Pas d'autre ‚cran vers lequel basculerX
+CaractŠres aprŠs la chaŒne de recherche, d‚calage de ligne et/ou commande zX
+Pas de motif de recherche pr‚c‚dentX
+La recherche est revenue … son point de d‚partX
+L'abr‚viation a d‚pass‚ la limite de l'expansion : caractŠres abandonn‚sX
+CaractŠre non valide ; guillemet pour saisirX
+D‚j… au d‚but de l'insertionX
+Plus de caractŠres … effacerX
+D‚placement hors de fin de fichierX
+D‚placement hors de fin de ligneX
+Aucun mouvement de curseur n'a ‚t‚ effectu‚X
+D‚j… au d‚but du fichierX
+D‚placement hors du d‚but du fichierX
+D‚j… dans la premiŠre colonneX
+Les tampons doivent ˆtre sp‚cifi‚s avant la commandeX
+D‚j… … la fin du fichierX
+D‚j… … la fin de la ligneX
+%s n'est pas une commande viX
+Utilisation : %sX
+Pas de caractŠres … supprimerX
+La commande Q n‚cessite une interface terminal exX
+Pas de commande … r‚p‚terX
+Le fichier est videX
+Vous ne pouvez pas utiliser %s comme commande de d‚placementX
+D‚j… en mode commandeX
+Le curseur n'est pas dans un motX
+
+Valeur optionnelle de fenˆtre trop grande, maximum est %uX
+AjouterX
+ChangerX
+CommandeX
+Ins‚rerX
+RemplacerX
+D‚placement hors de la fin d'‚cranX
+D‚placement hors du d‚but d'‚cranX
+L'‚cran doit ˆtre sup‚rieur … %d lignes pour se fractionnerX
+Il n'y a pas d'‚cran d'arriŠre-planX
+Il n'y a pas d'‚cran d'arriŠre-plan qui ‚dite un fichier nomm‚ %sX
+Vous ne pouvez pas mettre … l'arriŠre-plan votre seul ‚cran affich‚X
+L'‚cran ne peut ˆtre r‚duit qu'… %d rangsX
+L'‚cran n'est pas auto-r‚ductibleX
+L'‚cran n'est pas auto-extensibleX
+
+Vous ne pouvez pas mettre cet ‚cran en attenteX
+Interrompu : les touches affect‚es ont ‚t‚ abandonn‚esX
+vi : le tampon temporaire n' a pas ‚t‚ lib‚r‚X
+Ce terminal n'a pas de touche %sX
+Vous ne pouvez sp‚cifier qu'un seul tamponX
+Nombre sup‚rieur … %luX
+InterrompuX
+Impossible de cr‚er un fichier temporaireX
+Avertissement : %s n'est pas un fichier standardX
+%s d‚j… verrouill‚, session en lecture seuleX
+%s: supprimerX
+%s: fermerX
+%s: supprimerX
+%s: supprimerX
+Fichier en lecture seule, pas ‚crit, utiliser ! pour outrepasserX
+Fichier en lecture seule, pas ‚critX
+%s existe, pas ‚crit; utiliser ! pour outrepasserX
+%s existe, pas ‚critX
+Fichier partiel, pas ‚crit; utiliser ! pour outrepasserX
+Fichier partiel, pas ‚critX
+%s: fichier modifi‚ plus r‚cemment que cet exemplaire; utiliser ! pour outrepasserX
+%s: fichier modifi‚ plus r‚cemment que cet exemplaireX
+%s: interdiction d'‚criture non disponibleX
+Ecriture en cours...X
+%s: AVERTISSEMENT : FICHIER TRONQUEX
+PremiŠre marque de ce groupe d‚j… atteinteX
+%s: nouveau fichier : %lu lignes, %lu caractŠresX
+%s: %lu lignes, %lu caractŠresX
+%s ‚tendue … trop de noms de fichiersX
+%s: pas un fichier standardX
+%s: ne vous appartient pasX
+%s: accessible par un utilisateur autre que son propri‚taireX
+Fichier modif‚ depuis la derniŠre ‚criture complŠte ; ‚crire ou utiliser ! pour outrepasser X
+Fichier modif‚ depuis la derniŠre ‚criture complŠte ; ‚crire ou utiliser :edit! pour outrepasserX
+Fichier modif‚ depuis la derniŠre ‚criture complŠte ; ‚crire ou utiliser ! pour outrepasserX
+Fichier temporaire ; quitter annulera les modificationsX
+Fichier en lecture seule ; les modifications ne sont pas ‚crites automatiquementX
+Journal red‚marr‚X
+confirmer ? [ynq]X
+Appuyez sur n'importe quelle touche pour continuer : X
+Appuyez sur n'importe quelle touche pour continuer [: pour entrer plus de commandes ex] : X
+Appuyez sur n'importe quelle touche pour continuer [q pour Quitter]: X
+Cette forme de %s n‚cessite l'interface de terminal exX
+Entr‚e de mode entr‚e ex.X
+La commande a ‚chou‚, aucun fichier n'a encore ‚t‚ lu.X
+cont?X
+Ev‚nement impr‚vu de caractŠreX
+Ev‚nement impr‚vu de fin-de-fichierX
+Pas de correspondances pour cette requˆteX
+Ev‚nement impr‚vu d'interruptionX
+Ev‚nement quitter impr‚vuX
+Ev‚nement impr‚vu de rafraŒchissementX
+La derniŠre marque de ce groupe a d‚j… ‚t‚ atteinteX
+La commande %s n‚cessite l'interface de terminal exX
+Cette forme de %s n'est pas reconnue quand l'option d'‚dition prot‚g‚e est activ‚eX
+Ev‚nement impr‚vu de chaŒneX
+Ev‚nement impr‚vu de d‚lai impartiX
+Ev‚nement d'‚criture impr‚vuX
+
+Les expansions du shell ne sont pas reconnues quand l'option d'‚dition prot‚g‚e est activ‚eX
+La commande %s n'est pas reconnue quand l'option d'‚dition prot‚g‚e est activ‚eX
+D‚finition : l'option %s ne peut pas ˆtre d‚sactiv‚eX
+Affichage trop petit.X
+ajout‚X
+chang‚X
+supprim‚X
+jointX
+d‚plac‚X
+d‚cal‚X
+coup‚X
+ligneX
+lignesX
+Vi n'a pas ‚t‚ charg‚ avec un interpr‚tateur TclX
+Ficher modifi‚ depuis le dernier enregistrement.X
+L'expansion du shell a ‚chou‚X
+Pas d'option d'‚dition %s sp‚cifi‚eX
+Vi n'a pas ‚t‚ charg‚ avec un interpr‚tateur PerlX
+Pas de commande ex … ex‚cuterX
+Entrez <CR> pour ex‚cuter une commande, :q pour quitterX
+Utiliser "cscope help" pour obtenir de l'aideX
+Aucune connexion cscope n'est lanc‚eX
+%s : type de recherche inconnu : utiliser un des %sX
+%d : Il n'existe pas de telle session cscopeX
+D‚finition : l'option %s ne peut jamais ˆtre activ‚eX
+D‚finition : l'option %s ne peut jamais ˆtre d‚finie sur 0X
+%s: joints : %lu lignes, %lu caractŠresX
+‚v‚nement impr‚vu de redimensionnementX
+%d fichiers … ‚diterX
diff --git a/contrib/nvi/catalog/french.base b/contrib/nvi/catalog/french.base
new file mode 100644
index 0000000..db2d45f
--- /dev/null
+++ b/contrib/nvi/catalog/french.base
@@ -0,0 +1,309 @@
+002 "D‚passement de longueur de ligne"
+003 "impossible de supprimer la ligne %lu"
+004 "impossible d'ajouter … la ligne %lu"
+005 "impossible d'ins‚rer devant la ligne %lu"
+006 "impossible de stocker la ligne %lu"
+007 "impossible d'obtenir la derniŠre ligne"
+008 "Erreur : impossible de r‚cup‚rer la ligne %lu"
+009 "Fichier journal"
+010 "Aucune connexion n'‚tant effectu‚e, impossible d'annuler"
+011 "Aucune action … annuler"
+012 "Aucune connexion n'‚tant effectu‚e, impossible d'annuler"
+013 "Aucune connexion n'‚tant effectu‚e, reprise actualis‚e impossible"
+014 "Aucune action … refaire"
+015 "%s/%d : Erreur d'‚criture de journal"
+016 "L'entr‚e et la sortie Vi standards doivent ˆtre un terminal"
+017 "Marque %s : non d‚finie"
+018 "Marque %s : la ligne a ‚t‚ supprim‚e"
+019 "Marque %s : la position du curseur n'existe plus"
+020 "Erreur : "
+021 "nouveau fichier"
+022 "le nom a chang‚"
+023 "modifi‚"
+024 "non modifi‚"
+025 "DEVERROUILLE"
+026 "lecture seule"
+027 "ligne %lu de %lu [%ld%%]"
+028 "fichier vide"
+029 "ligne %lu"
+030 "Ce fichier %s n'est pas un catalogue de messages"
+031 "Impossible de configurer option %s par d‚faut"
+032 "Utilisation : %s"
+033 "D‚finition : pas d'option %s : 'tout d‚finir' donne toutes les valeurs optionnelles"
+034 "D‚finition : option [no]%s ne prend pas de valeur"
+035 "D‚finition : l'option %s n'est pas bool‚enne"
+036 "D‚finition : option %s : %s"
+037 "D‚finition : option %s : %s : D‚passement de valeur"
+038 "D‚finition : option %s : %s n'est pas un nombre valide"
+039 "D‚finition : l'option %s n'est pas bool‚enne"
+040 "Les colonnes de l'‚cran sont trop petites, inf‚rieures … %d"
+041 "Les colonnes de l'‚cran sont trop grandes, sup‚rieures … %d"
+042 "Les lignes de l'‚cran sont trop courtes, inf‚rieures … %d"
+043 "Les lignes de l'‚cran sont trop longues, sup‚rieures … %d"
+044 "L'option lisp n'est pas impl‚ment‚e"
+045 "Les messages ne sont pas d‚sactiv‚s : %s"
+046 "Les messages ne sont pas activ‚s : %s"
+048 "L'option de paragraphe doit ˆtre en groupe de deux caractŠres"
+049 "L'option de section doit ˆtre en groupe de deux caractŠres"
+053 "Le tampon par d‚faut est vide"
+054 "Le tampon %s est vide"
+055 "Les fichiers dont le nom contient des caractŠres de saut de ligne sont irr‚cup‚rables"
+056 "Impossible de r‚cup‚rer les modifications si la session ‚choue"
+057 "Copie en cours du fichier pour r‚cup‚ration..."
+058 "La pr‚servation a ‚chou‚ : %s"
+059 "Impossible de r‚cup‚rer les modifications si la session ‚choue"
+060 "La sauvegarde du fichier a ‚chou‚ : %s"
+061 "Copie en cours du fichier pour r‚cup‚ration..."
+062 "Les renseignements sur l'identit‚ %u de l'utilisateur sont introuvables"
+063 "Impossible de verrouiller le fichier de r‚cup‚ration"
+064 "D‚bordement de tampon du fichier de r‚cup‚ration"
+065 "Fichier de r‚cup‚ration"
+066 "%s : Fichier de r‚cup‚ration malform‚"
+067 "%s : Fichier de r‚cup‚ration malform‚"
+068 "Aucun fichier nomm‚ %s … r‚cup‚rer, que vous puissiez lire"
+069 "Il existe des versions r‚cup‚rables ant‚rieures … ce fichier"
+070 "Vous avez d'autres fichiers … r‚cup‚rer"
+071 "pas d'envoi d'email : %s"
+072 "Fichier vide, rien … rechercher"
+073 "Fin de fichier atteinte sans trouver le motif"
+074 "Pas de motif de recherche pr‚c‚dent"
+075 "Motif introuvable"
+076 "D‚but du fichier atteint sans trouver le motif"
+077 "La recherche est revenue … son point de d‚part"
+078 "Recherche en cours..."
+079 "CaractŠre non-imprimable introuvable"
+080 "Nom de commande inconnu"
+082 "%s : Commande non disponible en ex mode"
+083 "Le compte ne peut ˆtre z‚ro"
+084 "%s : mauvaise sp‚cification de ligne"
+085 "Erreur de tableau de syntaxe interne (%s: %s)"
+086 "Utilisation : %s"
+087 "%s : tampon temporaire non lib‚r‚"
+088 "D‚calage de drapeau hors de la ligne 1"
+089 "D‚calage de drapeau hors de la fin du fichier"
+090 "@ avec plage, en cours d'ex‚cution quand le fichier/l'‚cran a chang‚"
+091 "Commande Global/v en cours d'ex‚cution quand le fichier/l'‚cran a chang‚"
+092 "La commande ex a ‚chou‚ : commandes en attente abandonn‚es"
+093 "La commande ex a ‚chou‚ : les touches affect‚es sont abandonn‚es"
+094 "La deuxiŠme adresse est plus petite que la premiŠre"
+095 "Aucun nom de marque fourni"
+096 "\\ pas suivi par / ou ?"
+097 "R‚f‚rence … un num‚ro de ligne inf‚rieure … 0"
+098 "La commande %s est inconnue"
+099 "D‚passement de la valeur adresse"
+100 "D‚passement n‚gatif de la valeur adresse"
+101 "Combinaison d'adresse non valide"
+102 "Adresse non valide : il n'y a que des lignes %lu dans le fichier"
+103 "Adresse non valide : le fichier est vide"
+104 "La commande %s ne permet pas une adresse de 0"
+105 "Pas d'abr‚viations … afficher"
+106 "Les abr‚viations doivent finir par un caractŠre"mot"
+107 "Les abr‚viations ne peuvent pas contenir de tabulations ni d'espaces"
+108 "Les abr‚viations ne peuvent pas contenir un m‚lange de caractŠres mot/non-mot, sauf … la fin"
+109 ""%s" n'est pas une abr‚viation"
+110 "La commande Vi a ‚chou‚ : Les touches affect‚es ont ‚t‚ abandonn‚es"
+111 "Plus de fichiers … ‚diter"
+112 "Pas de fichiers pr‚c‚dents … ‚diter"
+113 "Pas de fichiers pr‚c‚dents … rembobiner"
+114 "Pas de liste de fichiers … afficher"
+115 "Pas de commande pr‚c‚dente … remplacer"!""
+116 "Pas de nom de fichier … substituer … %%"
+117 "Pas de nom de fichier … substituer … #"
+118 "Erreur : execl : %s"
+119 "Erreur E/S : %s"
+120 "Fichier modifi‚ depuis la derniŠre ‚criture complŠte ; ‚crire ou utiliser ! pour outrepasser"
+121 "Impossible de trouver l'emplacement du r‚pertoire d'origine"
+122 "Nouveau r‚pertoire en cours : %s"
+123 "Pas de tampon de coupure … afficher"
+124 "La commande %s ne peut pas ˆtre utilis‚e … l'int‚rieur d'une commande globale ou commande v"
+125 "%s/%s : ‚chec de source : ni vous ni le super-utilisateur n'ˆtes les propri‚taires "
+126 "%s/%s : ‚chec de source : vous n'ˆtes pas le propri‚taire"
+127 "%s/%s : ‚chec de source : peut ˆtre ‚crit par un utilisateur autre que le propri‚taire"
+128 "%s : ‚chec de source : ni vous ni le super-utilisateur n'ˆtes les propri‚taires"
+129 "%s : ‚chec de source : vous n'ˆtes pas le propri‚taire"
+130 "%s : ‚chec de source : peut ˆtre ‚crit par un utilisateur autre que le propri‚taire"
+131 "Pas de lignes suivantes … joindre"
+132 "Pas d'entr‚es de mappage d'entr‚e"
+133 "Pas d'entr‚es de mappage de commandes"
+134 "Le caractŠre %s ne peut pas ˆtre remapp‚"
+135 ""%s" n'est pas actuellement mapp‚"
+136 "Les noms de marque ne doivent avoir qu'un caractŠre"
+137 "%s existe, non enregistr‚; utiliser ! pour outrepasser"
+138 "Nouveau fichier exrc : %s"
+139 "La ligne de destination est … l'int‚rieur de la plage … d‚placer"
+140 "La commande ouverte n‚cessite que l'option ouverte soit d‚finie"
+141 "La commande ouverte n'est pas encore impl‚ment‚e"
+142 "La pr‚servation de ce fichier est impossible"
+143 "Fichier pr‚serv‚"
+144 "%s: ‚tendu dans trop de noms de fichiers"
+145 "Vous ne pouvez lire que les fichiers standards et les canaux de transmission nomm‚s"
+146 "%s: Interdiction de lecture non disponible"
+147 "Lecture en cours..."
+148 "%s: %lu lignes, %lu caractŠres"
+149 "Pas d'‚crans d'arriŠre-plan … afficher"
+150 "La commande script n'est disponible qu'en mode vi"
+151 "Pas de commande … ex‚cuter"
+152 "Option de largeur de d‚calage d‚finie sur 0"
+153 "Compter d‚passement"
+154 "Compter d‚passement n‚gatif"
+155 "Expression standard sp‚cifi‚e; drapeau r superflu"
+156 "Vous ne pouvez pas en mode vi, combiner les drapeaux #, l et p avec le drapeau c"
+157 "Aucune correspondance trouv‚e"
+158 "Aucune marque pr‚c‚dente entr‚e"
+159 "Moins de %s entr‚es dans la pile de marques ; utilisez t[ags]"
+160 "Pas de fichier %s vers lequel retourner dans la pile de marques ; utiliser : affichage t[ags]"
+161 "Appuyez sur Entr‚e pour continuer :"
+162 "%s : marque introuvable"
+163 "%s : marque corrompue en %s"
+164 "%s : le num‚ro de ligne de la marque d‚passe la fin du fichier"
+165 "La pile de marques est vide"
+166 "%s : motif de recherche introuvable"
+167 "%d fichiers suppl‚mentaires … ‚diter"
+168 "Le tampon %s est vide
+169 "Confirmer les changements ? [n]"
+170 "Interrompu"
+171 "Pas de tampon pr‚c‚dent … ex‚cuter"
+172 "Pas d'expression standard pr‚c‚dente"
+173 "La commande %s n‚cessite qu'un fichier ait d‚j… ‚t‚ lu en m‚moire"
+174 "Utilisation : %s"
+175 "La commande visuelle n‚cessite que l'option ouverte soit d‚finie"
+177 "Fichier vide"
+178 "Pas de recherche pr‚c‚dente F, f, T ou t"
+179 "%s introuvable"
+180 "Pas de fichier pr‚c‚dent … ‚diter"
+181 "Le curseur n'est pas dans un nombre"
+182 "Le nombre obtenu est trop grand"
+183 "Le nombre obtenu est trop petit"
+184 "Pas de correspondance de caractŠre sur cette ligne"
+185 "CaractŠre correspondant introuvable"
+186 "Pas de caractŠres … remplacer"
+187 "Pas d'autre ‚cran vers lequel basculer"
+188 "CaractŠres aprŠs la chaŒne de recherche, d‚calage de ligne et/ou commande z"
+189 "Pas de motif de recherche pr‚c‚dent"
+190 "La recherche est revenue … son point de d‚part"
+191 "L'abr‚viation a d‚pass‚ la limite de l'expansion : caractŠres abandonn‚s"
+192 "CaractŠre non valide ; guillemet pour saisir"
+193 "D‚j… au d‚but de l'insertion"
+194 "Plus de caractŠres … effacer"
+195 "D‚placement hors de fin de fichier"
+196 "D‚placement hors de fin de ligne"
+197 "Aucun mouvement de curseur n'a ‚t‚ effectu‚"
+198 "D‚j… au d‚but du fichier"
+199 "D‚placement hors du d‚but du fichier"
+200 "D‚j… dans la premiŠre colonne"
+201 "Les tampons doivent ˆtre sp‚cifi‚s avant la commande"
+202 "D‚j… … la fin du fichier"
+203 "D‚j… … la fin de la ligne"
+204 "%s n'est pas une commande vi"
+205 "Utilisation : %s"
+206 "Pas de caractŠres … supprimer"
+207 "La commande Q n‚cessite une interface terminal ex"
+208 "Pas de commande … r‚p‚ter"
+209 "Le fichier est vide"
+209 "Le fichier est vide"
+210 "Vous ne pouvez pas utiliser %s comme commande de d‚placement"
+211 "D‚j… en mode commande"
+212 "Le curseur n'est pas dans un mot"
+214 "Valeur optionnelle de fenˆtre trop grande, maximum est %u"
+215 "Ajouter"
+216 "Changer"
+217 "Commande"
+218 "Ins‚rer"
+219 "Remplacer"
+220 "D‚placement hors de la fin d'‚cran"
+221 "D‚placement hors du d‚but d'‚cran"
+222 "L'‚cran doit ˆtre sup‚rieur … %d lignes pour se fractionner"
+223 "Il n'y a pas d'‚cran d'arriŠre-plan"
+224 "Il n'y a pas d'‚cran d'arriŠre-plan qui ‚dite un fichier nomm‚ %s"
+225 "Vous ne pouvez pas mettre … l'arriŠre-plan votre seul ‚cran affich‚"
+226 "L'‚cran ne peut ˆtre r‚duit qu'… %d rangs"
+227 "L'‚cran n'est pas auto-r‚ductible"
+228 "L'‚cran n'est pas auto-extensible"
+230 "Vous ne pouvez pas mettre cet ‚cran en attente"
+231 "Interrompu : les touches affect‚es ont ‚t‚ abandonn‚es"
+232 "vi : le tampon temporaire n' a pas ‚t‚ lib‚r‚"
+233 "Ce terminal n'a pas de touche %s"
+234 "Vous ne pouvez sp‚cifier qu'un seul tampon"
+235 "Nombre sup‚rieur … %lu"
+236 "Interrompu"
+237 "Impossible de cr‚er un fichier temporaire"
+238 "Avertissement : %s n'est pas un fichier standard"
+239 "%s d‚j… verrouill‚, session en lecture seule"
+240 "%s: supprimer"
+241 "%s: fermer"
+242 "%s: supprimer"
+243 "%s: supprimer"
+244 "Fichier en lecture seule, pas ‚crit, utiliser ! pour outrepasser"
+245 "Fichier en lecture seule, pas ‚crit"
+246 "%s existe, pas ‚crit; utiliser ! pour outrepasser"
+247 "%s existe, pas ‚crit"
+248 "Fichier partiel, pas ‚crit; utiliser ! pour outrepasser"
+249 "Fichier partiel, pas ‚crit"
+250 "%s: fichier modifi‚ plus r‚cemment que cet exemplaire; utiliser ! pour outrepasser"
+251 "%s: fichier modifi‚ plus r‚cemment que cet exemplaire"
+252 "%s: interdiction d'‚criture non disponible"
+253 "Ecriture en cours..."
+254 "%s: AVERTISSEMENT : FICHIER TRONQUE"
+255 "PremiŠre marque de ce groupe d‚j… atteinte"
+256 "%s: nouveau fichier : %lu lignes, %lu caractŠres"
+257 "%s: %lu lignes, %lu caractŠres"
+258 "%s ‚tendue … trop de noms de fichiers"
+259 "%s: pas un fichier standard"
+260 "%s: ne vous appartient pas"
+261 "%s: accessible par un utilisateur autre que son propri‚taire"
+262 "Fichier modif‚ depuis la derniŠre ‚criture complŠte ; ‚crire ou utiliser ! pour outrepasser "
+263 "Fichier modif‚ depuis la derniŠre ‚criture complŠte ; ‚crire ou utiliser :edit! pour outrepasser"
+264 "Fichier modif‚ depuis la derniŠre ‚criture complŠte ; ‚crire ou utiliser ! pour outrepasser"
+265 "Fichier temporaire ; quitter annulera les modifications"
+266 "Fichier en lecture seule ; les modifications ne sont pas ‚crites automatiquement"
+267 "Journal red‚marr‚"
+268 "confirmer ? [ynq]"
+269 "Appuyez sur n'importe quelle touche pour continuer : "
+270 "Appuyez sur n'importe quelle touche pour continuer [: pour entrer plus de commandes ex] : "
+271 "Appuyez sur n'importe quelle touche pour continuer [q pour Quitter]: "
+272 "Cette forme de %s n‚cessite l'interface de terminal ex"
+273 "Entr‚e de mode entr‚e ex."
+274 "La commande a ‚chou‚, aucun fichier n'a encore ‚t‚ lu."
+275 "cont?"
+276 "Ev‚nement impr‚vu de caractŠre"
+277 "Ev‚nement impr‚vu de fin-de-fichier"
+278 "Pas de correspondances pour cette requˆte"
+279 "Ev‚nement impr‚vu d'interruption"
+280 "Ev‚nement quitter impr‚vu"
+281 "Ev‚nement impr‚vu de rafraŒchissement"
+282 "La derniŠre marque de ce groupe a d‚j… ‚t‚ atteinte"
+283 "La commande %s n‚cessite l'interface de terminal ex"
+284 "Cette forme de %s n'est pas reconnue quand l'option d'‚dition prot‚g‚e est activ‚e"
+285 "Ev‚nement impr‚vu de chaŒne"
+286 "Ev‚nement impr‚vu de d‚lai imparti"
+287 "Ev‚nement d'‚criture impr‚vu"
+289 "Les expansions du shell ne sont pas reconnues quand l'option d'‚dition prot‚g‚e est activ‚e"
+290 "La commande %s n'est pas reconnue quand l'option d'‚dition prot‚g‚e est activ‚e"
+291 "D‚finition : l'option %s ne peut pas ˆtre d‚sactiv‚e"
+292 "Affichage trop petit."
+293 "ajout‚"
+294 "chang‚"
+295 "supprim‚"
+296 "joint"
+297 "d‚plac‚"
+298 "d‚cal‚"
+299 "coup‚"
+300 "ligne"
+301 "lignes"
+302 "Vi n'a pas ‚t‚ charg‚ avec un interpr‚tateur Tcl"
+303 "Ficher modifi‚ depuis le dernier enregistrement."
+304 "L'expansion du shell a ‚chou‚"
+304 "L'expansion du shell a ‚chou‚"
+305 "Pas d'option d'‚dition %s sp‚cifi‚e"
+306 "Vi n'a pas ‚t‚ charg‚ avec un interpr‚tateur Perl"
+307 "Pas de commande ex … ex‚cuter"
+308 "Entrez <CR> pour ex‚cuter une commande, :q pour quitter"
+309 "Utiliser "cscope help" pour obtenir de l'aide"
+310 "Aucune connexion cscope n'est lanc‚e"
+311 "%s : type de recherche inconnu : utiliser un des %s"
+312 "%d : Il n'existe pas de telle session cscope"
+313 "D‚finition : l'option %s ne peut jamais ˆtre activ‚e"
+314 "D‚finition : l'option %s ne peut jamais ˆtre d‚finie sur 0"
+315 "%s: joints : %lu lignes, %lu caractŠres"
+316 "‚v‚nement impr‚vu de redimensionnement"
+317 "%d fichiers … ‚diter"
diff --git a/contrib/nvi/catalog/french.check b/contrib/nvi/catalog/french.check
new file mode 100644
index 0000000..1e53d93
--- /dev/null
+++ b/contrib/nvi/catalog/french.check
@@ -0,0 +1,34 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+229
+288
+=========================
+MISSING ERROR MESSAGES (Please add!):
+=========================
+Extra error messages (just delete them):
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+ 2 209 "Le fichier est vide"
+ 2 304 "L'expansion du shell a ‚chou‚"
+=========================
+Duplicate messages, just message (this is okay):
+ 2 %s : Fichier de r‚cup‚ration malform‚X
+ 2 %s: %lu lignes, %lu caractŠresX
+ 2 Aucune connexion n'‚tant effectu‚e, impossible d'annulerX
+ 2 Copie en cours du fichier pour r‚cup‚ration...X
+ 2 D‚finition : l'option %s n'est pas bool‚enneX
+ 2 Impossible de r‚cup‚rer les modifications si la session ‚choueX
+ 2 InterrompuX
+ 2 La recherche est revenue … son point de d‚partX
+ 2 Pas de motif de recherche pr‚c‚dentX
+ 3 %s: supprimerX
+ 4 Utilisation : %sX
+=========================
diff --git a/contrib/nvi/catalog/german b/contrib/nvi/catalog/german
new file mode 100644
index 0000000..0810ba6c
--- /dev/null
+++ b/contrib/nvi/catalog/german
@@ -0,0 +1,317 @@
+VI_MESSAGE_CATALOG
+Zeilenlaengen UeberlaufX
+kann Zeile %lu nicht loeschenX
+kann an Zeile %lu nicht anfuegenX
+kann in Zeile %lu nicht einfuegenX
+kann Zeile %lu nicht speichernX
+kann letzte Zeile nicht lesenX
+Fehler: kann Zeile %lu nicht wiederherstellenX
+ProtokolldateiX
+Keine Protokollierung aktiv, rueckgaengig machen nicht moeglichX
+Keine Aenderungen rueckgaengig zu machenX
+Keine Protokollierung aktiv, rueckgaengig machen nicht moeglichX
+Keine Protokollierung aktiv, Wiederholung von Aenderungen nicht moeglichX
+Keine Aenderungen zu wiederholenX
+%s/%d: ProtokollschreibfehlerX
+Vi's Standardein- und ausgabe muss ein Terminal seinX
+Marke %s: nicht gesetztX
+Marke %s: die Zeile wurde geloeschtX
+Marke %s: Cursorposition existiert nicht mehrX
+Fehler: X
+neue DateiX
+Name geaendertX
+geaendertX
+nicht geaendertX
+NICHT GELOCKEDX
+nur zum LesenX
+Zeile %lu von %lu [%ld%%]X
+leere DateiX
+Zeile %luX
+Die Datei %s ist kein MeldungskatalogX
+Setzen der Voreinstellung fuer %s Option nicht moeglichX
+Benutzung: %sX
+set: keine %s Option: 'set all' zeigt alle Optionen mit Werten anX
+set: der [no]%s Option kann kein Wert zugewiesen werdenX
+set: %s ist keine boolsche OptionX
+set: %s Option: %sX
+set: %s Option: %s: Wert UeberlaufX
+set: %s Option: %s ist eine ungueltige ZahlX
+set: %s ist keine boolsche OptionX
+Anzeige hat zu wenig Spalten, weniger als %dX
+Anzeige hat zu viele Spalten, mehr als %dX
+Anzeige hat zu wenig Zeilen, weniger als %dX
+Anzeige hat zu viele Zeilen, mehr als %dX
+Die lisp Option ist nicht implementiertX
+Messages nicht abgeschalten: %sX
+Messages nicht eingeschalten: %sX
+
+Die paragraph Option muss Gruppen zu zwei Zeichen enthaltenX
+Die section Option muss Gruppen zu zwei Zeichen enthaltenX
+
+
+
+Der Standardpuffer ist leerX
+Puffer %s ist leerX
+Dateien mit newlines im Namen sind nicht wiederherstellbarX
+Aenderungen nicht wiederherstellbar falls die Editorsitzung schief gehtX
+kopiere Datei fuer Wiederherstellung ...X
+Rettungsmechanismus funktioniert nicht: %sX
+Aenderungen nicht wiederherstellbar falls die Editorsitzung schief gehtX
+Sicherung der Datei gescheitert: %sX
+kopiere Datei fuer Wiederherstellung ...X
+Informationen ueber den Benutzer mit id %u nicht gefundenX
+Wiederherstellungsdatei kann nicht gesperrt werdenX
+Puffer der Wiederherstellungsdatei uebergelaufenX
+WiederherstellungsdateiX
+%s: Wiederherstellungsdatei hat falsches FormatX
+%s: Wiederherstellungsdatei hat falsches FormatX
+Keine von Ihnen lesbaren Dateien mit Namen %s zum WiederherstellenX
+Es gibt aeltere Versionen dieser Datei von Ihnen zum WiederherstellenX
+Sie haben noch andere Dateien zum WiederherstellenX
+schicke keine email: %sX
+Datei leer; nichts zu suchenX
+Dateiende erreicht, ohne das Suchmuster zu findenX
+Kein altes SuchmusterX
+Suchmuster nicht gefundenX
+Dateianfang erreicht, ohne das Suchmuster zu findenX
+Suche umgeschlagenX
+suche ...X
+Keine nichtdruckbaren Zeichen gefundenX
+Unbekannter KommandonameX
+
+%s: Kommando im ex Modus nicht verfuegbarX
+Count darf nicht Null seinX
+%s: falsche ZeilenangabeX
+Interner Syntaxtabellenfehler (%s: %s)X
+Benutzung: %sX
+%s: temporaerer Puffer nicht freigegebenX
+Flagoffset vor Zeile 1X
+Flagoffset hinter dem DateiendeX
+@ mit Bereich lief als Datei/Anzeige geaendert wurdeX
+globales oder v-Kommando lief als Datei/Anzeige geaendert wurdeX
+Ex Kommando misslungen: restliche Kommandoeingabe ignoriertX
+Ex Kommando misslungen: umdefinierte Tasten ungueltigX
+Die zweite Adresse ist kleiner als die ersteX
+Kein Markenname angegebenX
+\\ ohne folgenden / oder ?X
+Referenz auf eine negative ZeilennummerX
+Das Kommando %s ist unbekanntX
+Adresswert zu grossX
+Adresswert zu kleinX
+Ungueltige AdresskombinationX
+Ungueltige Adresse: nur %lu Zeilen in der DateiX
+Ungueltige Adresse: die Datei ist leerX
+Das Kommando %s erlaubt keine Adresse 0X
+Keine Abkuerzungen zum AnzeigenX
+Abkuerzungen muessen mit einem "Wort"-Zeichen endenX
+Abkuerzungen duerfen keine Tabulator- oder Leerzeichen enthaltenX
+In Abkuerzungen duerfen ausser am Ende Wort- und Nicht-Wort-Zeichen nicht gemischt werdenX
+"%s" ist keine AbkuerzungX
+Vi Kommando misslungen: umdefinierte Tasten ungueltigX
+Keine weiteren Dateien zu edierenX
+Keine vorhergehenden Dateien zu edierenX
+Keine vorhergehenden Dateien fuer rewindX
+Keine Dateiliste zum AnzeigenX
+Kein vorhergehendes Kommando um "!" zu ersetzenX
+Kein Dateiname fuer %%X
+Kein Dateiname fuer #X
+Fehler: execl: %sX
+I/O Fehler: %sX
+Datei wurde seit dem letzten vollstaendigen Schreiben geaendert; schreibe oder verwende ! zum ignorierenX
+Kann Homedirectory nicht bestimmenX
+Neues aktuelles Directory: %sX
+Keine Puffer anzuzeigenX
+Das Kommando %s kann nicht als Teil eines global oder v Kommandos verwendet werdenX
+%s/%s: nicht gelesen: gehoehrt weder Ihnen noch rootX
+%s/%s: nicht gelesen: gehoehrt nicht IhnenX
+%s/%s: nicht gelesen: anderer Benutzer als Eigentuemer hat SchreibrechtX
+%s: nicht gelesen: gehoehrt weder Ihnen noch rootX
+%s: nicht gelesen: gehoehrt nicht IhnenX
+%s: nicht gelesen: anderer Benutzer als Eigentuemer hat SchreibrechtX
+Keine folgenden Zeilen zum VerbindenX
+Kein Eingabe-Map EintragX
+Kein Kommando-Map EintragX
+Das %s Zeichen kann nicht umgemappt werdenX
+"%s" ist momentan nicht gemapptX
+Markennamen muessen einzelne Buchstaben seinX
+%s existiert, nicht geschrieben; verwende ! zum UeberschreibenX
+Neue .exrc Datei: %s. X
+Zielzeile ist innerhalb des VerschiebebereichsX
+Das open Kommando verlangt, dass die open Option gesetzt istX
+Das open Kommando ist nocht nicht implementiertX
+Rettung dieser Datei nicht moeglichX
+Datei gerettetX
+%s wurde in zu viele Dateinamen expandiertX
+Nur regulaere Dateien und named pipes koennen gelesen werdenX
+%s: Lesesperrung war nicht moeglichX
+lese ...X
+%s: %lu Zeilen, %lu ZeichenX
+Keine Hintegrundanzeigen vorhandenX
+Das script Kommando ist nur im vi Modus verfuegbarX
+Kein Kommando auszufuehrenX
+shiftwidth Option auf 0 gesetztX
+Count ueberlaufX
+Count unterlaufX
+Regulaerer Ausdruck angegeben; r Flag bedeutungslosX
+Die #, l und p Flags koennen im vi Modus nicht mit dem c Flag kombiniert werdenX
+Keine Uebereinstimmung gefundenX
+Kein vorhergehender 'tag' angegebenX
+Weniger als %s Eintraege auf dem 'tag'-Stack; verwende :display t[ags]X
+Keine Datei namens %s auf dem 'tag'-Stack; verwende :display t[ags]X
+Druecke Enter um fortzufahren: X
+%s: 'tag' nicht gefundenX
+%s: kaputter 'tag' in %sX
+%s: die Zeilennummer des 'tag' ist hinter dem DateiendeX
+Der 'tag' Stack ist leerX
+%s: Suchmuster nicht gefundenX
+%d weitere Dateien zu edierenX
+Puffer %s ist leerX
+Bestaetige Aenderung [n]X
+Unterbrochen.X
+Kein vorhergehender Puffer zum AusfuehrenX
+Kein vorhergehender regulaerer AusdruckX
+Das Kommando %s verlangt, dass bereits eine Datei eingelesen wurdeX
+Benutzung: %sX
+Das visual Kommando verlangt dass die open Option gesetzt istX
+
+Leere DateiX
+Keine vorhergehende F, f, T oder t SucheX
+%s nicht gefundenX
+Keine vorhergehende Datei zu edierenX
+Cursor nicht auf einer ZahlX
+Sich ergebende Zahl ist zu grossX
+Sich ergebende Zahl ist zu kleinX
+Kein korrespondierendes Zeichen in dieser ZeileX
+Korrespondierendes Zeichen nicht gefundenX
+Keine Zeichen zu ersetzenX
+Keine andere Anzeige zum HinschaltenX
+Zeichen nach Suchmuster, Zeilenoffset und/oder z KommandoX
+Kein altes SuchmusterX
+Suche zur urspruenglichen Position umgeschlagenX
+Abkuerzung ueberschreitet Expansionsgrenze: Zeichen weggelassenX
+Nicht erlaubtes Zeichen; maskiere zum EingebenX
+Bereits am Anfang der EingabeX
+Keine weiteren Zeichen zu loeschenX
+Bewegung hinter das DateiendeX
+Bewegung hinter das ZeilenendeX
+Keine Cursorbewegung gemachtX
+Bereits am DateianfangX
+Bewegung vor den DateianfangX
+Bereits in der ersten SpalteX
+Puffer sollen vor dem Kommando angegeben werdenX
+Bereits am DateiendeX
+Bereits am ZeilenendeX
+%s ist kein vi KommandoX
+Benutzung: %sX
+Keine Zeichen zu loeschenX
+Das Q Kommando benoetigt das ex Terminal InterfaceX
+Kein Kommando zu wiederholenX
+Die Datei ist leerX
+%s kann nicht als Bewegungskommando verwendet werdenX
+Bereits im Kommando-ModusX
+ Cursor nicht auf einem WortX
+
+Wert der Window Option ist zu gross, max ist %uX
+AnfuegenX
+AendernX
+KommandoX
+EinfuegenX
+ErsetzenX
+Bewegung hinter das AnzeigenendeX
+Bewegung vor den AnzeigenanfangX
+Anzeige muss zum Zerlegen groesser als %d seinX
+Keine Hintergrundanzeigen vorhandenX
+Es gibt keine Hintergrundanzeige die eine Datei namens %s ediertX
+Die einzige dargestellte Anzeige kann nicht in den Hintergrund gebracht werdenX
+Die Anzeige kann nur auf %d Zeilen verkleinert werdenX
+Die Anzeige kann nicht verkleinert werdenX
+Die Anzeige kann nicht vergroessert werdenX
+
+Diese Anzeige kann nicht gestopped werdenX
+Unterbrochen: umdefinierte Tasten ungueltigX
+vi: temporaerer Puffer nicht freigegebenX
+Dieses Terminal hat keine %s TasteX
+es kann nur ein Puffer angegeben werdenX
+Zahl groesser als %luX
+UnterbrochenX
+Nicht moeglich temporaere Datei anzulegenX
+Warnung: %s ist keine regulaere DateiX
+%s ist bereits gesperrt, nur-lese EditorsitzungX
+%s: loeschenX
+%s: schliessenX
+%s: loeschenX
+%s: loeschenX
+Nur-lese Datei, nicht geschrieben; verwende ! zum UeberschreibenX
+Nur-lese Datei, nicht geschriebenX
+%s existiert, nicht geschrieben; verwende ! zum UeberschreibenX
+%s existiert, nicht geschriebenX
+Teil der Datei, nicht geschrieben; verwende ! zum UeberschreibenX
+Teil der Datei, nicht geschriebenX
+%s: Datei wurde spaeter als diese Kopie veraendert; verwende ! zum UeberschreibenX
+%s: Datei wurde spaeter als diese Kopie veraendertX
+%s: Schreibsperrung war nicht moeglichX
+schreibe ...X
+%s: WARNUNG: DATEI ABGESCHNITTENX
+Bereits am ersten 'tag' dieser GruppeX
+%s: neue Datei: %lu Zeilen, %lu ZeichenX
+%s: %lu Zeilen, %lu ZeichenX
+%s wurde in zu viele Dateinamen expandiertX
+%s: keine regulaere DateiX
+%s: gehoehrt nicht IhnenX
+%s: anderer Benutzer als Eigentuemer hat ZugriffX
+Datei wurde seit dem letzten vollstaendigen Schreiben geaendert; schreibe oder verwende ! zum ignorierenX
+Datei wurde seit dem letzten vollstaendigen Schreiben geaendert; schreibe oder verwende :edit! zum ignorierenX
+Datei wurde seit dem letzten vollstaendigen Schreiben geaendert; schreibe oder verwende ! zum ignorierenX
+Datei ist temporaer; beim Verlassen gehen die Aenderungen verlorenX
+Nur-lese Datei, Aenderungen werden nicht automatisch geschriebenX
+Portokollierung neu begonnenX
+bestaetigen [ynq]X
+Druecke beliebige Taste um fortzufahrenX
+Druecke beliebige Taste um fortzufahren [: um weitere Kommandos einzugeben]: X
+Druecke beliebige Taste um fortzufahren [q zum Verlassen]: X
+Diese Form von %s benoetigt das ex Terminal-InterfaceX
+Gehe in ex Eingabe-Modus.\nX
+Kommando schief gelaufen, noch keine Datei eingelesenX
+ weiter?X
+unerwartetes Zeichen - EreignisX
+unerwartetes Dateiende - EreignisX
+Keine Position zum Anspringen gefundenX
+unerwartetes Unterbrechungs - EreignisX
+unerwartetes Verlassen - EreignisX
+unerwartetes Wiederherstellungs - EreignisX
+Bereits am letzten 'tag' dieser GruppeX
+Das %s Kommando benoetigt das ex Terminal-InterfaceX
+Diese Form von %s wird nicht unterstuetzt wenn die 'secure edit' - Option gesetzt istX
+unerwartetes Zeichenketten - EreignisX
+unerwartetes timeout - EreignisX
+unerwartetes Schreibe - EreignisX
+
+Shell Expandierungen nicht unterstuetzt wenn die 'secure edit' - Option gesetzt istX
+Das %s Kommando wird nicht unterstuetzt wenn die 'secure edit' - Option gesetzt istX
+set: %s kann nicht ausgeschaltet werdenX
+Anzeige zu klein.X
+angefuegtX
+geaendertX
+geloeschtX
+verbundenX
+verschobenX
+geschobenX
+in Puffer geschriebenX
+ZeileX
+ZeilenX
+Vi wurde nicht mit dem Tcl Interpreter gelinktX
+Datei wurde seit dem letzten Schreiben veraendert.X
+Shell Expansion nicht geklapptX
+Es ist keine %s Edieroption angegebenX
+Vi wurde nicht mit einem Perl Interpreter geladenX
+Kein ex Kommando auszufuehrenX
+Druecke <CR> um ein Kommando auszufuehren, :q zum verlassenX
+Verwende "cscope help" fuer HilestellungX
+Keine cscope Verbindung aktivX
+%s: unbekannter Suchtyp: verwende einen aus %sX
+%d: keine solche cscope VerbindungX
+set: die %s Option kann nicht eingeschaltet werdenX
+set: die %s Option kann nicht auf 0 gesetzt werdenX
+%s: angefuegt: %lu Zeilen, %lu ZeichenX
+unerwartetes Groessenveraenderungs - EreignisX
+%d Dateien zu edierenX
diff --git a/contrib/nvi/catalog/german.base b/contrib/nvi/catalog/german.base
new file mode 100644
index 0000000..135b72d
--- /dev/null
+++ b/contrib/nvi/catalog/german.base
@@ -0,0 +1,307 @@
+002 "Zeilenlaengen Ueberlauf"
+003 "kann Zeile %lu nicht loeschen"
+004 "kann an Zeile %lu nicht anfuegen"
+005 "kann in Zeile %lu nicht einfuegen"
+006 "kann Zeile %lu nicht speichern"
+007 "kann letzte Zeile nicht lesen"
+008 "Fehler: kann Zeile %lu nicht wiederherstellen"
+009 "Protokolldatei"
+010 "Keine Protokollierung aktiv, rueckgaengig machen nicht moeglich"
+011 "Keine Aenderungen rueckgaengig zu machen"
+012 "Keine Protokollierung aktiv, rueckgaengig machen nicht moeglich"
+013 "Keine Protokollierung aktiv, Wiederholung von Aenderungen nicht moeglich"
+014 "Keine Aenderungen zu wiederholen"
+015 "%s/%d: Protokollschreibfehler"
+016 "Vi's Standardein- und ausgabe muss ein Terminal sein"
+017 "Marke %s: nicht gesetzt"
+018 "Marke %s: die Zeile wurde geloescht"
+019 "Marke %s: Cursorposition existiert nicht mehr"
+020 "Fehler: "
+021 "neue Datei"
+022 "Name geaendert"
+023 "geaendert"
+024 "nicht geaendert"
+025 "NICHT GELOCKED"
+026 "nur zum Lesen"
+027 "Zeile %lu von %lu [%ld%%]"
+028 "leere Datei"
+029 "Zeile %lu"
+030 "Die Datei %s ist kein Meldungskatalog"
+031 "Setzen der Voreinstellung fuer %s Option nicht moeglich"
+032 "Benutzung: %s"
+033 "set: keine %s Option: 'set all' zeigt alle Optionen mit Werten an"
+034 "set: der [no]%s Option kann kein Wert zugewiesen werden"
+035 "set: %s ist keine boolsche Option"
+036 "set: %s Option: %s"
+037 "set: %s Option: %s: Wert Ueberlauf"
+038 "set: %s Option: %s ist eine ungueltige Zahl"
+039 "set: %s ist keine boolsche Option"
+040 "Anzeige hat zu wenig Spalten, weniger als %d"
+041 "Anzeige hat zu viele Spalten, mehr als %d"
+042 "Anzeige hat zu wenig Zeilen, weniger als %d"
+043 "Anzeige hat zu viele Zeilen, mehr als %d"
+044 "Die lisp Option ist nicht implementiert"
+045 "Messages nicht abgeschalten: %s"
+046 "Messages nicht eingeschalten: %s"
+048 "Die paragraph Option muss Gruppen zu zwei Zeichen enthalten"
+049 "Die section Option muss Gruppen zu zwei Zeichen enthalten"
+053 "Der Standardpuffer ist leer"
+054 "Puffer %s ist leer"
+055 "Dateien mit newlines im Namen sind nicht wiederherstellbar"
+056 "Aenderungen nicht wiederherstellbar falls die Editorsitzung schief geht"
+057 "kopiere Datei fuer Wiederherstellung ..."
+058 "Rettungsmechanismus funktioniert nicht: %s"
+059 "Aenderungen nicht wiederherstellbar falls die Editorsitzung schief geht"
+060 "Sicherung der Datei gescheitert: %s"
+061 "kopiere Datei fuer Wiederherstellung ..."
+062 "Informationen ueber den Benutzer mit id %u nicht gefunden"
+063 "Wiederherstellungsdatei kann nicht gesperrt werden"
+064 "Puffer der Wiederherstellungsdatei uebergelaufen"
+065 "Wiederherstellungsdatei"
+066 "%s: Wiederherstellungsdatei hat falsches Format"
+067 "%s: Wiederherstellungsdatei hat falsches Format"
+068 "Keine von Ihnen lesbaren Dateien mit Namen %s zum Wiederherstellen"
+069 "Es gibt aeltere Versionen dieser Datei von Ihnen zum Wiederherstellen"
+070 "Sie haben noch andere Dateien zum Wiederherstellen"
+071 "schicke keine email: %s"
+072 "Datei leer; nichts zu suchen"
+073 "Dateiende erreicht, ohne das Suchmuster zu finden"
+074 "Kein altes Suchmuster"
+075 "Suchmuster nicht gefunden"
+076 "Dateianfang erreicht, ohne das Suchmuster zu finden"
+077 "Suche umgeschlagen"
+078 "suche ..."
+079 "Keine nichtdruckbaren Zeichen gefunden"
+080 "Unbekannter Kommandoname"
+082 "%s: Kommando im ex Modus nicht verfuegbar"
+083 "Count darf nicht Null sein"
+084 "%s: falsche Zeilenangabe"
+085 "Interner Syntaxtabellenfehler (%s: %s)"
+086 "Benutzung: %s"
+087 "%s: temporaerer Puffer nicht freigegeben"
+088 "Flagoffset vor Zeile 1"
+089 "Flagoffset hinter dem Dateiende"
+090 "@ mit Bereich lief als Datei/Anzeige geaendert wurde"
+091 "globales oder v-Kommando lief als Datei/Anzeige geaendert wurde"
+092 "Ex Kommando misslungen: restliche Kommandoeingabe ignoriert"
+093 "Ex Kommando misslungen: umdefinierte Tasten ungueltig"
+094 "Die zweite Adresse ist kleiner als die erste"
+095 "Kein Markenname angegeben"
+096 "\\ ohne folgenden / oder ?"
+097 "Referenz auf eine negative Zeilennummer"
+098 "Das Kommando %s ist unbekannt"
+099 "Adresswert zu gross"
+100 "Adresswert zu klein"
+101 "Ungueltige Adresskombination"
+102 "Ungueltige Adresse: nur %lu Zeilen in der Datei"
+103 "Ungueltige Adresse: die Datei ist leer"
+104 "Das Kommando %s erlaubt keine Adresse 0"
+105 "Keine Abkuerzungen zum Anzeigen"
+106 "Abkuerzungen muessen mit einem "Wort"-Zeichen enden"
+107 "Abkuerzungen duerfen keine Tabulator- oder Leerzeichen enthalten"
+108 "In Abkuerzungen duerfen ausser am Ende Wort- und Nicht-Wort-Zeichen nicht gemischt werden"
+109 ""%s" ist keine Abkuerzung"
+110 "Vi Kommando misslungen: umdefinierte Tasten ungueltig"
+111 "Keine weiteren Dateien zu edieren"
+112 "Keine vorhergehenden Dateien zu edieren"
+113 "Keine vorhergehenden Dateien fuer rewind"
+114 "Keine Dateiliste zum Anzeigen"
+115 "Kein vorhergehendes Kommando um "!" zu ersetzen"
+116 "Kein Dateiname fuer %%"
+117 "Kein Dateiname fuer #"
+118 "Fehler: execl: %s"
+119 "I/O Fehler: %s"
+120 "Datei wurde seit dem letzten vollstaendigen Schreiben geaendert; schreibe oder verwende ! zum ignorieren"
+121 "Kann Homedirectory nicht bestimmen"
+122 "Neues aktuelles Directory: %s"
+123 "Keine Puffer anzuzeigen"
+124 "Das Kommando %s kann nicht als Teil eines global oder v Kommandos verwendet werden"
+125 "%s/%s: nicht gelesen: gehoehrt weder Ihnen noch root"
+126 "%s/%s: nicht gelesen: gehoehrt nicht Ihnen"
+127 "%s/%s: nicht gelesen: anderer Benutzer als Eigentuemer hat Schreibrecht"
+128 "%s: nicht gelesen: gehoehrt weder Ihnen noch root"
+129 "%s: nicht gelesen: gehoehrt nicht Ihnen"
+130 "%s: nicht gelesen: anderer Benutzer als Eigentuemer hat Schreibrecht"
+131 "Keine folgenden Zeilen zum Verbinden"
+132 "Kein Eingabe-Map Eintrag"
+133 "Kein Kommando-Map Eintrag"
+134 "Das %s Zeichen kann nicht umgemappt werden"
+135 ""%s" ist momentan nicht gemappt"
+136 "Markennamen muessen einzelne Buchstaben sein"
+137 "%s existiert, nicht geschrieben; verwende ! zum Ueberschreiben"
+138 "Neue .exrc Datei: %s. "
+139 "Zielzeile ist innerhalb des Verschiebebereichs"
+140 "Das open Kommando verlangt, dass die open Option gesetzt ist"
+141 "Das open Kommando ist nocht nicht implementiert"
+142 "Rettung dieser Datei nicht moeglich"
+143 "Datei gerettet"
+144 "%s wurde in zu viele Dateinamen expandiert"
+145 "Nur regulaere Dateien und named pipes koennen gelesen werden"
+146 "%s: Lesesperrung war nicht moeglich"
+147 "lese ..."
+148 "%s: %lu Zeilen, %lu Zeichen"
+149 "Keine Hintegrundanzeigen vorhanden"
+150 "Das script Kommando ist nur im vi Modus verfuegbar"
+151 "Kein Kommando auszufuehren"
+152 "shiftwidth Option auf 0 gesetzt"
+153 "Count ueberlauf"
+154 "Count unterlauf"
+155 "Regulaerer Ausdruck angegeben; r Flag bedeutungslos"
+156 "Die #, l und p Flags koennen im vi Modus nicht mit dem c Flag kombiniert werden"
+157 "Keine Uebereinstimmung gefunden"
+158 "Kein vorhergehender 'tag' angegeben"
+159 "Weniger als %s Eintraege auf dem 'tag'-Stack; verwende :display t[ags]"
+160 "Keine Datei namens %s auf dem 'tag'-Stack; verwende :display t[ags]"
+161 "Druecke Enter um fortzufahren: "
+162 "%s: 'tag' nicht gefunden"
+163 "%s: kaputter 'tag' in %s"
+164 "%s: die Zeilennummer des 'tag' ist hinter dem Dateiende"
+165 "Der 'tag' Stack ist leer"
+166 "%s: Suchmuster nicht gefunden"
+167 "%d weitere Dateien zu edieren"
+168 "Puffer %s ist leer"
+169 "Bestaetige Aenderung [n]"
+170 "Unterbrochen."
+171 "Kein vorhergehender Puffer zum Ausfuehren"
+172 "Kein vorhergehender regulaerer Ausdruck"
+173 "Das Kommando %s verlangt, dass bereits eine Datei eingelesen wurde"
+174 "Benutzung: %s"
+175 "Das visual Kommando verlangt dass die open Option gesetzt ist"
+177 "Leere Datei"
+178 "Keine vorhergehende F, f, T oder t Suche"
+179 "%s nicht gefunden"
+180 "Keine vorhergehende Datei zu edieren"
+181 "Cursor nicht auf einer Zahl"
+182 "Sich ergebende Zahl ist zu gross"
+183 "Sich ergebende Zahl ist zu klein"
+184 "Kein korrespondierendes Zeichen in dieser Zeile"
+185 "Korrespondierendes Zeichen nicht gefunden"
+186 "Keine Zeichen zu ersetzen"
+187 "Keine andere Anzeige zum Hinschalten"
+188 "Zeichen nach Suchmuster, Zeilenoffset und/oder z Kommando"
+189 "Kein altes Suchmuster"
+190 "Suche zur urspruenglichen Position umgeschlagen"
+191 "Abkuerzung ueberschreitet Expansionsgrenze: Zeichen weggelassen"
+192 "Nicht erlaubtes Zeichen; maskiere zum Eingeben"
+193 "Bereits am Anfang der Eingabe"
+194 "Keine weiteren Zeichen zu loeschen"
+195 "Bewegung hinter das Dateiende"
+196 "Bewegung hinter das Zeilenende"
+197 "Keine Cursorbewegung gemacht"
+198 "Bereits am Dateianfang"
+199 "Bewegung vor den Dateianfang"
+200 "Bereits in der ersten Spalte"
+201 "Puffer sollen vor dem Kommando angegeben werden"
+202 "Bereits am Dateiende"
+203 "Bereits am Zeilenende"
+204 "%s ist kein vi Kommando"
+205 "Benutzung: %s"
+206 "Keine Zeichen zu loeschen"
+207 "Das Q Kommando benoetigt das ex Terminal Interface"
+208 "Kein Kommando zu wiederholen"
+209 "Die Datei ist leer"
+210 "%s kann nicht als Bewegungskommando verwendet werden"
+211 "Bereits im Kommando-Modus"
+212 " Cursor nicht auf einem Wort"
+214 "Wert der Window Option ist zu gross, max ist %u"
+215 "Anfuegen"
+216 "Aendern"
+217 "Kommando"
+218 "Einfuegen"
+219 "Ersetzen"
+220 "Bewegung hinter das Anzeigenende"
+221 "Bewegung vor den Anzeigenanfang"
+222 "Anzeige muss zum Zerlegen groesser als %d sein"
+223 "Keine Hintergrundanzeigen vorhanden"
+224 "Es gibt keine Hintergrundanzeige die eine Datei namens %s ediert"
+225 "Die einzige dargestellte Anzeige kann nicht in den Hintergrund gebracht werden"
+226 "Die Anzeige kann nur auf %d Zeilen verkleinert werden"
+227 "Die Anzeige kann nicht verkleinert werden"
+228 "Die Anzeige kann nicht vergroessert werden"
+230 "Diese Anzeige kann nicht gestopped werden"
+231 "Unterbrochen: umdefinierte Tasten ungueltig"
+232 "vi: temporaerer Puffer nicht freigegeben"
+233 "Dieses Terminal hat keine %s Taste"
+234 "es kann nur ein Puffer angegeben werden"
+235 "Zahl groesser als %lu"
+236 "Unterbrochen"
+237 "Nicht moeglich temporaere Datei anzulegen"
+238 "Warnung: %s ist keine regulaere Datei"
+239 "%s ist bereits gesperrt, nur-lese Editorsitzung"
+240 "%s: loeschen"
+241 "%s: schliessen"
+242 "%s: loeschen"
+243 "%s: loeschen"
+244 "Nur-lese Datei, nicht geschrieben; verwende ! zum Ueberschreiben"
+245 "Nur-lese Datei, nicht geschrieben"
+246 "%s existiert, nicht geschrieben; verwende ! zum Ueberschreiben"
+247 "%s existiert, nicht geschrieben"
+248 "Teil der Datei, nicht geschrieben; verwende ! zum Ueberschreiben"
+249 "Teil der Datei, nicht geschrieben"
+250 "%s: Datei wurde spaeter als diese Kopie veraendert; verwende ! zum Ueberschreiben"
+251 "%s: Datei wurde spaeter als diese Kopie veraendert"
+252 "%s: Schreibsperrung war nicht moeglich"
+253 "schreibe ..."
+254 "%s: WARNUNG: DATEI ABGESCHNITTEN"
+255 "Bereits am ersten 'tag' dieser Gruppe"
+256 "%s: neue Datei: %lu Zeilen, %lu Zeichen"
+257 "%s: %lu Zeilen, %lu Zeichen"
+258 "%s wurde in zu viele Dateinamen expandiert"
+259 "%s: keine regulaere Datei"
+260 "%s: gehoehrt nicht Ihnen"
+261 "%s: anderer Benutzer als Eigentuemer hat Zugriff"
+262 "Datei wurde seit dem letzten vollstaendigen Schreiben geaendert; schreibe oder verwende ! zum ignorieren"
+263 "Datei wurde seit dem letzten vollstaendigen Schreiben geaendert; schreibe oder verwende :edit! zum ignorieren"
+264 "Datei wurde seit dem letzten vollstaendigen Schreiben geaendert; schreibe oder verwende ! zum ignorieren"
+265 "Datei ist temporaer; beim Verlassen gehen die Aenderungen verloren"
+266 "Nur-lese Datei, Aenderungen werden nicht automatisch geschrieben"
+267 "Portokollierung neu begonnen"
+268 "bestaetigen [ynq]"
+269 "Druecke beliebige Taste um fortzufahren"
+270 "Druecke beliebige Taste um fortzufahren [: um weitere Kommandos einzugeben]: "
+271 "Druecke beliebige Taste um fortzufahren [q zum Verlassen]: "
+272 "Diese Form von %s benoetigt das ex Terminal-Interface"
+273 "Gehe in ex Eingabe-Modus.\n"
+274 "Kommando schief gelaufen, noch keine Datei eingelesen"
+275 " weiter?"
+276 "unerwartetes Zeichen - Ereignis"
+277 "unerwartetes Dateiende - Ereignis"
+278 "Keine Position zum Anspringen gefunden"
+279 "unerwartetes Unterbrechungs - Ereignis"
+280 "unerwartetes Verlassen - Ereignis"
+281 "unerwartetes Wiederherstellungs - Ereignis"
+282 "Bereits am letzten 'tag' dieser Gruppe"
+283 "Das %s Kommando benoetigt das ex Terminal-Interface"
+284 "Diese Form von %s wird nicht unterstuetzt wenn die 'secure edit' - Option gesetzt ist"
+285 "unerwartetes Zeichenketten - Ereignis"
+286 "unerwartetes timeout - Ereignis"
+287 "unerwartetes Schreibe - Ereignis"
+289 "Shell Expandierungen nicht unterstuetzt wenn die 'secure edit' - Option gesetzt ist"
+290 "Das %s Kommando wird nicht unterstuetzt wenn die 'secure edit' - Option gesetzt ist"
+291 "set: %s kann nicht ausgeschaltet werden"
+292 "Anzeige zu klein."
+293 "angefuegt"
+294 "geaendert"
+295 "geloescht"
+296 "verbunden"
+297 "verschoben"
+298 "geschoben"
+299 "in Puffer geschrieben"
+300 "Zeile"
+301 "Zeilen"
+302 "Vi wurde nicht mit dem Tcl Interpreter gelinkt"
+303 "Datei wurde seit dem letzten Schreiben veraendert."
+304 "Shell Expansion nicht geklappt"
+305 "Es ist keine %s Edieroption angegeben"
+306 "Vi wurde nicht mit einem Perl Interpreter geladen"
+307 "Kein ex Kommando auszufuehren"
+308 "Druecke <CR> um ein Kommando auszufuehren, :q zum verlassen"
+309 "Verwende "cscope help" fuer Hilestellung"
+310 "Keine cscope Verbindung aktiv"
+311 "%s: unbekannter Suchtyp: verwende einen aus %s"
+312 "%d: keine solche cscope Verbindung"
+313 "set: die %s Option kann nicht eingeschaltet werden"
+314 "set: die %s Option kann nicht auf 0 gesetzt werden"
+315 "%s: angefuegt: %lu Zeilen, %lu Zeichen"
+316 "unerwartetes Groessenveraenderungs - Ereignis"
+317 "%d Dateien zu edieren"
diff --git a/contrib/nvi/catalog/german.check b/contrib/nvi/catalog/german.check
new file mode 100644
index 0000000..4fd60c1
--- /dev/null
+++ b/contrib/nvi/catalog/german.check
@@ -0,0 +1,36 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+213
+229
+288
+=========================
+MISSING ERROR MESSAGES (Please add!):
+=========================
+Extra error messages (just delete them):
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+=========================
+Duplicate messages, just message (this is okay):
+ 2 %s existiert, nicht geschrieben; verwende ! zum UeberschreibenX
+ 2 %s wurde in zu viele Dateinamen expandiertX
+ 2 %s: %lu Zeilen, %lu ZeichenX
+ 2 %s: Wiederherstellungsdatei hat falsches FormatX
+ 2 Aenderungen nicht wiederherstellbar falls die Editorsitzung schief gehtX
+ 2 Kein altes SuchmusterX
+ 2 Keine Protokollierung aktiv, rueckgaengig machen nicht moeglichX
+ 2 Puffer %s ist leerX
+ 2 geaendertX
+ 2 kopiere Datei fuer Wiederherstellung ...X
+ 2 set: %s ist keine boolsche OptionX
+ 3 %s: loeschenX
+ 3 Datei wurde seit dem letzten vollstaendigen Schreiben geaendert; schreibe oder verwende ! zum ignorierenX
+ 4 Benutzung: %sX
+=========================
diff --git a/contrib/nvi/catalog/german.owner b/contrib/nvi/catalog/german.owner
new file mode 100644
index 0000000..e72e8ae
--- /dev/null
+++ b/contrib/nvi/catalog/german.owner
@@ -0,0 +1 @@
+Bernhard Daeubler <daeb@physik.uni-ulm.de>
diff --git a/contrib/nvi/catalog/ru_RU.KOI8-R b/contrib/nvi/catalog/ru_RU.KOI8-R
new file mode 100644
index 0000000..7eb35b9
--- /dev/null
+++ b/contrib/nvi/catalog/ru_RU.KOI8-R
@@ -0,0 +1,267 @@
+VI_MESSAGE_CATALOG
+pEREPOLNENIE ZNA^ENIQ DLINY STROKIX
+%s/%d: NEWOZMOVNO UDALITX STROKU %uX
+%s/%d: NEWOZMOVNO DOBAWITX K STROKE %uX
+%s/%d: NEWOZMOVNO WSTAWITX W STROKU %uX
+%s/%d: NEWOZMOVNO SOHRANITX STROKU %uX
+%s/%d: NEWOZMOVNO DOSTATX POSLEDN@@ STROKUX
+
+fAJL ZAPISEJX
+zAPISI NE WELISX, NEWOZMOVNO OTMENITX POSLEDN@@ KOMANDUX
+nET IZMENENIJ DLQ OTMENYX
+zAPISI NE WELISX, NEWOZMOVNO OTMENITX POSLEDN@@ KOMANDUX
+zAPISI NE WELISX, NEWOZMOVNO PROSMOTRETX WPEREDX
+nET IZMENENIJ DLQ PEREDELKIX
+%s/%d: O[IBKA PRI ZAPISI PROTOKOLAX
+sTANDARTNYJ WWOD/WYWOD DLQ VI DOLVEN BYTX TERMINALX
+oTMETKA %s: NE USTANOWLENAX
+oTMETKA %s: STROKA BYLA UDALENAX
+oTMETKA %s: POZICII KURSORA BOLX[E NE SU]ESTWUETX
+o[IBKA:X
+
+
+
+
+
+
+
+
+
+fAJL %s NE QWLQETSQ KATALOGOM SOOB]ENIJX
+nEWOZMOVNO USTANOWITX OPCI@ %s PO UMOL^ANI@X
+iSPOLXZOWANIE: %sX
+oPCII %s NET: 'set all' POKAZYWAET WSE WOZMOVNYE OPCIIX
+set: [no]%s NE PRINIMAET TAKOGO ZNA^ENIQX
+set: %s OPCIQ NE QWLQETSQ DWOI^NOJX
+
+
+set: NEPRAWILXNOE ZNA^ENIE %sX
+set: %s OPCIQ NE QWLQETSQ DWOI^NOJX
+kOLI^ESTWO KOLONOK \KRANA SLI[KOM MALO, MENX[E ^EM %dX
+kOLI^ESTWO KOLONOK \KRANA SLI[KOM WELIKO, BOLX[E ^EM %dX
+kOLI^ESTWO STROK \KRANA SLI[KOM MALO, MENX[E ^EM %dX
+kOLI^ESTWO STROK \KRANA SLI[KOM WELIKO, BOLX[E ^EM %dX
+oPCIQ lisp OTSUTSTWUETX
+sOOB]ENIQ NE WYKL@^ENY: %sX
+sOOB]ENIQ NE WKL@^ENY: %sX
+oPCIQ modeline(s) NE MOVET BYTX PEREUSTANOWLENAX
+oPCIQ paragraph DOLVNA SOSTOQTX IZ GRUPP S DWUMQ SIMWOLAMIX
+oPCIQ section DOLVNA SOSTOQTX IZ GRUPP S DWUMQ SIMWOLAMIX
+oPCIQ shiftwidth NE MOVET BYTX USTANOWLENA NA 0X
+oPCIQ sourceany NE MOVET BYTX USTANOWLENAX
+tABULQCIQ NE MOVET BYTX USTANOWLENA NA 0X
+sTARTOWYJ BUFER PUSTX
+bUFER %s PUSTX
+fAJLY S SIMWOLAMI PEREWODA STROKI W IMENI NE MOGUT BYTX WOSSTANOWLENYX
+iZMENENIQ NE SOHRANENY PRI KRAHE SESSIIX
+
+sOHRANENIE NE UDALOSX: %sX
+iZMENENIQ NE SOHRANQ@TSQ PRI OBRYWE SESSIIX
+sOHRANENIE KOPII FAJLA NE UDALOSX: %sX
+
+iNFORMACII NA POLXZOWATELQ %u NE NAJDENOX
+nEWOZMOVNO ZA]ITITX SPASENNYJ FAJLX
+bUFER WOSSTANOWLENNOGO FAJLA PEREPOLNENX
+wOSSTANOWLENNYJ FAJLX
+%s: NE DO KONCA WOSSTANOWLENNYJ FAJLX
+%s: NE DO KONCA WOSSTANOWLENNYJ FAJLX
+fAJLOW S IMENEM %s, KOTORYE wY MOVETE ^ITATX, NE SU]ESTWUETX
+eSTX STARYE WERSII FAJLA, KOTORYE MOVNO WOSSTANOWITXX
+sU]ESTWU@T DRUGIE FAJLY, KOTORYE MOVNO WOSSTANOWITXX
+E-mail NE POSLAN: %sX
+fAJL PUST - ISKATX NE^EGOX
+dOSTIGNUT KONEC FAJLA BEZ NAHOVDENIQ OBRAZCA POISKAX
+nE ZADAN OBRAZEC POISKAX
+oBRAZEC POISKA NE NAJDENX
+dOSTUPNO NA^ALO FAJLA BEZ NAHOVDENIQ OBRAZCA POISKAX
+pOISK ZACIKLENX
+
+nEPE^ATNYH SIMWOLOW NE NAJDENOX
+nEIZWESTNAQ KOMANDAX
+
+kOMANDA NE DOSTUPNA W REVIME exX
+s^ET^IK NE MOVET BYTX NULEMX
+%s: NEPRAWILXNOE UKAZANIE STROKIX
+wNUTRENNQQ O[IBKA W SINTAKSISE (%s: %s)X
+iSPOLXZOWANIE: %sX
+%s: WREMENNYJ BUFER NE ISPOLXZOWANX
+mETKA POSTAWLENA PERED STROKOJ 1X
+mETKA POSTAWLENA POSLE KONCA FAJLAX
+
+
+kOMANDA ex NE UDALASX: PARAMETRY KOMANDY ZABYTYX
+
+wTOROJ ADRES MENX[E ^EM PERWYJX
+nE UKAZANO NAZWANIE OTMETKIX
+\\ NE ZAWER[AETSQ / ILI ?X
+sSYLKA K STROKE S NOMEROM MENX[E 0X
+kOMANDA %s NEIZWESTNAX
+pEREPOLNENIE ZNA^ENIQ ADRESAX
+nEDOBOR ZNA^ENIQ ADRESAX
+nEDOPUSTIMAQ KOMBINACIQ W ADRESEX
+nEPRAWILXNYJ ADRES: WSEGO %lu STROK W FAJLEX
+nEPRAWILXNYJ ADRES: FAJL PUSTX
+kOMMANDA %s NE MOVET ISPOLXZOWATX ADRES 0X
+aBBREWIATURY OTSUTSTWU@TX
+aBBREWIATURY DOLVNY ZAKAN^IWATXSQ SIMWOLOM "word"X
+aBBREWIATURY NE MOGUT SODERVATX SIMWOLOY TABLQCII ILI PROBELYX
+aBBREWIATURY NE MOGUT SO^ETATXSQ S SIMWOLAMI SLOW/NE-SLOW, ZA ISKL@^ENIEM KONCA STROKIX
+"%s" NE QWLQETSQ ABBREWIATUROJX
+
+fAJLOW DLQ REDAKTIROWANIQ BOLX[E NETX
+oTSUTSTWIE PREDYDU]EGO FAJLA DLQ REDAKTIROWANIQX
+oTSUTSTWIE PREDYDU]EGO FAJLA DLQ PROSMOTRA NAZADX
+nET FAJLOWX
+oTSUTSTWIE PREDYDU]EJ KOMANDY DLQ ZAMENY "!"X
+oTSUTSTWIE ZAMENY DLQ %%X
+oTSUTSTWIE ZAMENY DLQ #X
+o[IBKA: execl: %sX
+o[IBKA WWODA/WYWODA: %sX
+fAJL IZMENEN S MOMENTA POSLEDNEJ POLNOJ ZAPISI: ISPOLXZUJTE ! DLQ OBHODAX
+nEWOZMOVNO NAJTI DOMA[NIJ KATALOGX
+nOWYJ KATALOG: %sX
+nET WYREZANYH BUFEROWX
+kOMANDA %s NE MOVET BYTX ISPOLXZOWANA WNUTRI OB]EJ KOMANDYX
+%s/%s: NE OTKRYT: NE PRINADLEVIT wAM ILI root-UX
+%s/%s: NE OTKRYT: NE PRINADLEVIT wAMX
+%s/%s: NE OTKRYT: WOZMOVNOSTX ZAPISI U POLXZOWATELQ, NE QWLQ@]EGOSQ WLADELXCEMX
+%s/%s: NE S^ITAN: NE PRINADLEVIT wAM ILI root-UX
+%s/%s: NE S^ITAN: NE PRINADLEVIT wAMX
+%s/%s: NE S^ITAN: WOZMOVNOSTX ZAPISI U POLXZOWATELQ, NE QWLQ@]EGOSQ WLADELXCEMX
+pOSLEDU@]IE STROKI OTSUTSTWU@TX
+oTSUTSTWIE PARAMETROW WWODAX
+oTSUTSTWIE PARAMETROW KOMANDYX
+sIMWOL %s NE MOVET BYTX PEREZAPOMNENX
+"%s" NA DANNYJ MOMENT NE OTME^ENX
+iMQ METKI DOLVNO BYTX ODNIM SIMWOLOMX
+%s SU]ESTWUET, NE ZAPISAN; ISPOLXZUJTE ! DLQ OBHODAX
+nOWYJ FAJL .exrc: %sX
+sTROKA PERENOSA NAHODITSQ WNUTRI PARAMETROW PERENOSAX
+kOMANDA open PODRAZUMEWAET USTANOWKU OPCII openX
+kOMANDA open NE REALIZOWANAX
+zA]ITA FAJLA NEWOZMOVNAX
+fAJL ZA]I]ENX
+%s RAS[IRILSQ W SLI[KOM BOLX[OE KOLI^ESTWO IMEN FAJLOWX
+
+%s: ZA]ITA NA ^TENIE BYLA NEDOSTUPNAX
+
+%s: %lu STROK, %lu SIMWOLOWX
+nET TENEWYH OKONX
+kOMANDA script ISPOLXZUETSQ TOLXKO W REVIME viX
+nET KOMANDY DLQ ISPOLNENIQX
+oPCIQ shiftwidth USTANOWLENA NA 0X
+pEREPOLNENIE S^ET^IKAX
+cIKL WYPOLNEN NE DO KONCAX
+uKAZANO REGULQRNOE WYRAVENIE: FLAG r NE NUVENX
+fLAGI #, l I p NE MOGUT BYTX OB_EDINENY S FLAGOM c W REVIME viX
+sOWPADENIJ NETX
+mETKA OTSUTSTWUETX
+w STEKE METOK ZAPISEJ MENX[E, ^EM %s, ISPOLXZUJTE :display t[ags]X
+fAJLA S IMENEM %s W STEKE METOK NET; ISPOLXZUJTE :display t[ags]X
+
+%s: METKA NE NAJDENAX
+%s: PLOHAQ METKA W %sX
+
+sTEK METOK PUSTX
+%s: ISKOMAQ PEREMENNAQ NE NAJDENAX
+
+bUFER %s PUSTX
+
+pRERWANOX
+oTSUTSTWIE BUFERA DLQ ISPOLXZOWANIQX
+nET PREDIDU]EGO REGULQRNOGO WYRAVENIQX
+kOMANDA %s PODRAZUMEWAET NALI^IE PRO^TENNOGO FAJLAX
+iSPOLXZOWANIE: %sX
+kOMANDA visual PODRAZUMEWAET OBQZATELXNU@ USTANOWKU OPCII openX
+%s RAS[IRILSQ DO SLI[KOM BOLX[OGO KOLI^ESTWA FAJLOWX
+pUSTOJ FAJLX
+nET PREDYDU]EGO POISKA F, f, T, ILI tX
+%s NE NAJDENOX
+nET PREDYDU]EGO FAJLA DLQ REDAKTIROWANIQX
+kURSOR STOIT NE NA CIFREX
+pOLU^ENNOE ^ISLO SLI[KOM WELIKOX
+pOLU^ENNOE ^ISLO SLI[KOM MALOX
+pODHODQ]EGO SIMWOLA NET NA \TOJ STROKEX
+pODHODQ]IJ SIMWOL NE NAJDENX
+nET SIMWOLOW DLQ UDALENIQX
+dRUGOGO \KRANA NE SU]ESTWUETX
+sIMWOLY POSLE STROKI DLQ POISKA I/ILI PEREBOR STROKIX
+pRO[LYJ OBRAZEC POISKA OTSUTSTWUETX
+pOISK ZAWER[ILSQ NA NA^ALXNOJ POZICIIX
+
+sIMWOL NEPRAWILEN; ZAKL@^EN W KAWY^KI DLQ WWODAX
+uVE NA NA^ALE WSTAWKIX
+nET SIMWOLOW DLQ UDALENIQX
+pEREDWIVENIE ZA KONEC FAJLAX
+pEREDWIVENIE ZA KONEC STROKIX
+dWIVENIE STROKI NE SDELANOX
+uVE NA NA^ALE FAJLAX
+dWIVENIE KURSORA ZA NA^ALO FAJLAX
+uVE W PERWOJ KOLONKEX
+bUFERY DOLVNY BYTX UKAZANY DO WYPOLNENIQ KOMANDYX
+uVE NA KONCE FAJLAX
+uVE NA KONSE STROKIX
+%s NE QWLQETSQ KOMANDOJ VIX
+iSPOLXZOWANIE: %sX
+nET SIMWOLOW DLQ UDALENIQX
+
+nET KOMANDY DLQ POWTORAX
+
+kOMANDA %s NE MOVET BYTX ISPOLXZOWANA KAK KOMANDA PRODWIVENIQX
+~ISLO BOLX[E ^EM %luX
+
+
+zNA^ENIE KOLI^ESTWA OKON SLI[KOM WELIKO, MAKSIMALXNOE ZNA^ENIE = %uX
+
+
+
+
+
+dWIVENIE KURSORA ZA KONEC \KRANAX
+dWIVENIE KURSORA ZA NA^ALO \KRANAX
+
+tENEWYH OKON NETX
+nE SU]ESTWUET TENEWOGO OKNA S REDAKTIROWANIEM FAJLA %sX
+wY NE MOVETE SDELATX EDINSTWENNOE OKNO TENEWYMX
+|KRAN MOVET BYTX SVATX
+|KRAN NE MOVET BYTX SVATX
+|KRAN NE MOVET BYTX RAS[IRENX
+
+
+
+
+dANNYJ TIP TERMINALA NE IMEET KLAWI[I %sX
+
+
+
+nEWOZMOVNO SOZDATX WREMENNYJ FAJLX
+wNIMANIE: %s SPECIALXNYJ FAJLX
+%s UVE ZABLOKIROWAN, DOSTUPEN TOLXKO NA ^TENIEX
+%s: UDALENX
+%s: ZAKRYTX
+%s: UDALENX
+%s: UDALENX
+fAJL TOLXKO DLQ ^TENIQ, NE ZAPISAN: iSPOLXZUJTE ! DLQ OBHODAX
+fAJL TOLXKO DLQ ^TENIQ, NE ZAPISANX
+%s SU]ESTWUET, NE ZAPISAN; ISPOLXZUJTE ! DLQ OBHODAX
+%s SU]ESTWUET, NE ZAPISANX
+iSPOLXZUJTE ! DLQ ^ASTI^NOJ ZAPISI FAJLAX
+~ASTX FAJLA, FAJL NE ZAPISANX
+%s: fAJL IZMENQLSQ POZDNEE, ^EM DANNAQ KOPIQ: ISPOLXZUJTE ! DLQ OBHODAX
+%s: fAJL IZMENQLSQ POZDNEE, ^EM DANNAQ KOPIQX
+%s: ZA]ITA NA ZAPISX BYLA NEDOSTUPNAX
+
+%s: wnimanie: fajl use~enX
+
+%s: NOWYJ FAJL: %lu STROK, %lu SIMWOLOWX
+%s: %lu STROK, %lu SIMWOLOWX
+%s RAS[IRILSQ W SLI[KOM BOLX[OE KOLI^ESTWO IMEN FAJLOWX
+%s SPECIALXNYJ FAJLX
+%s: NE PRINADLEVIT wAMX
+%s: DOSTUPEN NE TOLXKO wAMX
+fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE ! DLQ OBHODAX
+fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE :edit DLQ OBHODAX
+fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE ! DLQ OBHODAX
+fAJL WREMENNYJ: WYHOD SOTRET L@BYE IZMENENIQX
+
+zAPISI NA^ATY ZANOWOX
diff --git a/contrib/nvi/catalog/ru_RU.KOI8-R.base b/contrib/nvi/catalog/ru_RU.KOI8-R.base
new file mode 100644
index 0000000..59efd3f
--- /dev/null
+++ b/contrib/nvi/catalog/ru_RU.KOI8-R.base
@@ -0,0 +1,219 @@
+002 "pEREPOLNENIE ZNA^ENIQ DLINY STROKI"
+003 "%s/%d: NEWOZMOVNO UDALITX STROKU %u"
+004 "%s/%d: NEWOZMOVNO DOBAWITX K STROKE %u"
+005 "%s/%d: NEWOZMOVNO WSTAWITX W STROKU %u"
+006 "%s/%d: NEWOZMOVNO SOHRANITX STROKU %u"
+007 "%s/%d: NEWOZMOVNO DOSTATX POSLEDN@@ STROKU"
+009 "fAJL ZAPISEJ"
+010 "zAPISI NE WELISX, NEWOZMOVNO OTMENITX POSLEDN@@ KOMANDU"
+011 "nET IZMENENIJ DLQ OTMENY"
+012 "zAPISI NE WELISX, NEWOZMOVNO OTMENITX POSLEDN@@ KOMANDU"
+013 "zAPISI NE WELISX, NEWOZMOVNO PROSMOTRETX WPERED"
+014 "nET IZMENENIJ DLQ PEREDELKI"
+015 "%s/%d: O[IBKA PRI ZAPISI PROTOKOLA"
+016 "sTANDARTNYJ WWOD/WYWOD DLQ VI DOLVEN BYTX TERMINAL"
+017 "oTMETKA %s: NE USTANOWLENA"
+018 "oTMETKA %s: STROKA BYLA UDALENA"
+019 "oTMETKA %s: POZICII KURSORA BOLX[E NE SU]ESTWUET"
+020 "o[IBKA:"
+030 "fAJL %s NE QWLQETSQ KATALOGOM SOOB]ENIJ"
+031 "nEWOZMOVNO USTANOWITX OPCI@ %s PO UMOL^ANI@"
+032 "iSPOLXZOWANIE: %s"
+033 "oPCII %s NET: 'set all' POKAZYWAET WSE WOZMOVNYE OPCII"
+034 "set: [no]%s NE PRINIMAET TAKOGO ZNA^ENIQ"
+035 "set: %s OPCIQ NE QWLQETSQ DWOI^NOJ"
+038 "set: NEPRAWILXNOE ZNA^ENIE %s"
+039 "set: %s OPCIQ NE QWLQETSQ DWOI^NOJ"
+040 "kOLI^ESTWO KOLONOK \KRANA SLI[KOM MALO, MENX[E ^EM %d"
+041 "kOLI^ESTWO KOLONOK \KRANA SLI[KOM WELIKO, BOLX[E ^EM %d"
+042 "kOLI^ESTWO STROK \KRANA SLI[KOM MALO, MENX[E ^EM %d"
+043 "kOLI^ESTWO STROK \KRANA SLI[KOM WELIKO, BOLX[E ^EM %d"
+044 "oPCIQ lisp OTSUTSTWUET"
+045 "sOOB]ENIQ NE WYKL@^ENY: %s"
+046 "sOOB]ENIQ NE WKL@^ENY: %s"
+047 "oPCIQ modeline(s) NE MOVET BYTX PEREUSTANOWLENA"
+048 "oPCIQ paragraph DOLVNA SOSTOQTX IZ GRUPP S DWUMQ SIMWOLAMI"
+049 "oPCIQ section DOLVNA SOSTOQTX IZ GRUPP S DWUMQ SIMWOLAMI"
+050 "oPCIQ shiftwidth NE MOVET BYTX USTANOWLENA NA 0"
+051 "oPCIQ sourceany NE MOVET BYTX USTANOWLENA"
+052 "tABULQCIQ NE MOVET BYTX USTANOWLENA NA 0"
+053 "sTARTOWYJ BUFER PUST"
+054 "bUFER %s PUST"
+055 "fAJLY S SIMWOLAMI PEREWODA STROKI W IMENI NE MOGUT BYTX WOSSTANOWLENY"
+056 "iZMENENIQ NE SOHRANENY PRI KRAHE SESSII"
+058 "sOHRANENIE NE UDALOSX: %s"
+059 "iZMENENIQ NE SOHRANQ@TSQ PRI OBRYWE SESSII"
+060 "sOHRANENIE KOPII FAJLA NE UDALOSX: %s"
+062 "iNFORMACII NA POLXZOWATELQ %u NE NAJDENO"
+063 "nEWOZMOVNO ZA]ITITX SPASENNYJ FAJL"
+064 "bUFER WOSSTANOWLENNOGO FAJLA PEREPOLNEN"
+065 "wOSSTANOWLENNYJ FAJL"
+066 "%s: NE DO KONCA WOSSTANOWLENNYJ FAJL"
+067 "%s: NE DO KONCA WOSSTANOWLENNYJ FAJL"
+068 "fAJLOW S IMENEM %s, KOTORYE wY MOVETE ^ITATX, NE SU]ESTWUET"
+069 "eSTX STARYE WERSII FAJLA, KOTORYE MOVNO WOSSTANOWITX"
+070 "sU]ESTWU@T DRUGIE FAJLY, KOTORYE MOVNO WOSSTANOWITX"
+071 "E-mail NE POSLAN: %s"
+072 "fAJL PUST - ISKATX NE^EGO"
+073 "dOSTIGNUT KONEC FAJLA BEZ NAHOVDENIQ OBRAZCA POISKA"
+074 "nE ZADAN OBRAZEC POISKA"
+075 "oBRAZEC POISKA NE NAJDEN"
+076 "dOSTUPNO NA^ALO FAJLA BEZ NAHOVDENIQ OBRAZCA POISKA"
+077 "pOISK ZACIKLEN"
+079 "nEPE^ATNYH SIMWOLOW NE NAJDENO"
+080 "nEIZWESTNAQ KOMANDA"
+082 "kOMANDA NE DOSTUPNA W REVIME ex"
+083 "s^ET^IK NE MOVET BYTX NULEM"
+084 "%s: NEPRAWILXNOE UKAZANIE STROKI"
+085 "wNUTRENNQQ O[IBKA W SINTAKSISE (%s: %s)"
+086 "iSPOLXZOWANIE: %s"
+087 "%s: WREMENNYJ BUFER NE ISPOLXZOWAN"
+088 "mETKA POSTAWLENA PERED STROKOJ 1"
+089 "mETKA POSTAWLENA POSLE KONCA FAJLA"
+092 "kOMANDA ex NE UDALASX: PARAMETRY KOMANDY ZABYTY"
+094 "wTOROJ ADRES MENX[E ^EM PERWYJ"
+095 "nE UKAZANO NAZWANIE OTMETKI"
+096 "\\ NE ZAWER[AETSQ / ILI ?"
+097 "sSYLKA K STROKE S NOMEROM MENX[E 0"
+098 "kOMANDA %s NEIZWESTNA"
+099 "pEREPOLNENIE ZNA^ENIQ ADRESA"
+100 "nEDOBOR ZNA^ENIQ ADRESA"
+101 "nEDOPUSTIMAQ KOMBINACIQ W ADRESE"
+102 "nEPRAWILXNYJ ADRES: WSEGO %lu STROK W FAJLE"
+103 "nEPRAWILXNYJ ADRES: FAJL PUST"
+104 "kOMMANDA %s NE MOVET ISPOLXZOWATX ADRES 0"
+105 "aBBREWIATURY OTSUTSTWU@T"
+106 "aBBREWIATURY DOLVNY ZAKAN^IWATXSQ SIMWOLOM "word""
+107 "aBBREWIATURY NE MOGUT SODERVATX SIMWOLOY TABLQCII ILI PROBELY"
+108 "aBBREWIATURY NE MOGUT SO^ETATXSQ S SIMWOLAMI SLOW/NE-SLOW, ZA ISKL@^ENIEM KONCA STROKI"
+109 ""%s" NE QWLQETSQ ABBREWIATUROJ"
+111 "fAJLOW DLQ REDAKTIROWANIQ BOLX[E NET"
+112 "oTSUTSTWIE PREDYDU]EGO FAJLA DLQ REDAKTIROWANIQ"
+113 "oTSUTSTWIE PREDYDU]EGO FAJLA DLQ PROSMOTRA NAZAD"
+114 "nET FAJLOW"
+115 "oTSUTSTWIE PREDYDU]EJ KOMANDY DLQ ZAMENY "!""
+116 "oTSUTSTWIE ZAMENY DLQ %%"
+117 "oTSUTSTWIE ZAMENY DLQ #"
+118 "o[IBKA: execl: %s"
+119 "o[IBKA WWODA/WYWODA: %s"
+120 "fAJL IZMENEN S MOMENTA POSLEDNEJ POLNOJ ZAPISI: ISPOLXZUJTE ! DLQ OBHODA"
+121 "nEWOZMOVNO NAJTI DOMA[NIJ KATALOG"
+122 "nOWYJ KATALOG: %s"
+123 "nET WYREZANYH BUFEROW"
+124 "kOMANDA %s NE MOVET BYTX ISPOLXZOWANA WNUTRI OB]EJ KOMANDY"
+125 "%s/%s: NE OTKRYT: NE PRINADLEVIT wAM ILI root-U"
+126 "%s/%s: NE OTKRYT: NE PRINADLEVIT wAM"
+127 "%s/%s: NE OTKRYT: WOZMOVNOSTX ZAPISI U POLXZOWATELQ, NE QWLQ@]EGOSQ WLADELXCEM"
+128 "%s/%s: NE S^ITAN: NE PRINADLEVIT wAM ILI root-U"
+129 "%s/%s: NE S^ITAN: NE PRINADLEVIT wAM"
+130 "%s/%s: NE S^ITAN: WOZMOVNOSTX ZAPISI U POLXZOWATELQ, NE QWLQ@]EGOSQ WLADELXCEM"
+131 "pOSLEDU@]IE STROKI OTSUTSTWU@T"
+132 "oTSUTSTWIE PARAMETROW WWODA"
+133 "oTSUTSTWIE PARAMETROW KOMANDY"
+134 "sIMWOL %s NE MOVET BYTX PEREZAPOMNEN"
+135 ""%s" NA DANNYJ MOMENT NE OTME^EN"
+136 "iMQ METKI DOLVNO BYTX ODNIM SIMWOLOM"
+137 "%s SU]ESTWUET, NE ZAPISAN; ISPOLXZUJTE ! DLQ OBHODA"
+138 "nOWYJ FAJL .exrc: %s"
+139 "sTROKA PERENOSA NAHODITSQ WNUTRI PARAMETROW PERENOSA"
+140 "kOMANDA open PODRAZUMEWAET USTANOWKU OPCII open"
+141 "kOMANDA open NE REALIZOWANA"
+142 "zA]ITA FAJLA NEWOZMOVNA"
+143 "fAJL ZA]I]EN"
+144 "%s RAS[IRILSQ W SLI[KOM BOLX[OE KOLI^ESTWO IMEN FAJLOW"
+146 "%s: ZA]ITA NA ^TENIE BYLA NEDOSTUPNA"
+148 "%s: %lu STROK, %lu SIMWOLOW"
+149 "nET TENEWYH OKON"
+150 "kOMANDA script ISPOLXZUETSQ TOLXKO W REVIME vi"
+151 "nET KOMANDY DLQ ISPOLNENIQ"
+152 "oPCIQ shiftwidth USTANOWLENA NA 0"
+153 "pEREPOLNENIE S^ET^IKA"
+154 "cIKL WYPOLNEN NE DO KONCA"
+155 "uKAZANO REGULQRNOE WYRAVENIE: FLAG r NE NUVEN"
+156 "fLAGI #, l I p NE MOGUT BYTX OB_EDINENY S FLAGOM c W REVIME vi"
+157 "sOWPADENIJ NET"
+158 "mETKA OTSUTSTWUET"
+159 "w STEKE METOK ZAPISEJ MENX[E, ^EM %s, ISPOLXZUJTE :display t[ags]"
+160 "fAJLA S IMENEM %s W STEKE METOK NET; ISPOLXZUJTE :display t[ags]"
+162 "%s: METKA NE NAJDENA"
+163 "%s: PLOHAQ METKA W %s"
+165 "sTEK METOK PUST"
+166 "%s: ISKOMAQ PEREMENNAQ NE NAJDENA"
+168 "bUFER %s PUST"
+170 "pRERWANO"
+171 "oTSUTSTWIE BUFERA DLQ ISPOLXZOWANIQ"
+172 "nET PREDIDU]EGO REGULQRNOGO WYRAVENIQ"
+173 "kOMANDA %s PODRAZUMEWAET NALI^IE PRO^TENNOGO FAJLA"
+174 "iSPOLXZOWANIE: %s"
+175 "kOMANDA visual PODRAZUMEWAET OBQZATELXNU@ USTANOWKU OPCII open"
+176 "%s RAS[IRILSQ DO SLI[KOM BOLX[OGO KOLI^ESTWA FAJLOW"
+177 "pUSTOJ FAJL"
+178 "nET PREDYDU]EGO POISKA F, f, T, ILI t"
+179 "%s NE NAJDENO"
+180 "nET PREDYDU]EGO FAJLA DLQ REDAKTIROWANIQ"
+181 "kURSOR STOIT NE NA CIFRE"
+182 "pOLU^ENNOE ^ISLO SLI[KOM WELIKO"
+183 "pOLU^ENNOE ^ISLO SLI[KOM MALO"
+184 "pODHODQ]EGO SIMWOLA NET NA \TOJ STROKE"
+185 "pODHODQ]IJ SIMWOL NE NAJDEN"
+186 "nET SIMWOLOW DLQ UDALENIQ"
+187 "dRUGOGO \KRANA NE SU]ESTWUET"
+188 "sIMWOLY POSLE STROKI DLQ POISKA I/ILI PEREBOR STROKI"
+189 "pRO[LYJ OBRAZEC POISKA OTSUTSTWUET"
+190 "pOISK ZAWER[ILSQ NA NA^ALXNOJ POZICII"
+192 "sIMWOL NEPRAWILEN; ZAKL@^EN W KAWY^KI DLQ WWODA"
+193 "uVE NA NA^ALE WSTAWKI"
+194 "nET SIMWOLOW DLQ UDALENIQ"
+195 "pEREDWIVENIE ZA KONEC FAJLA"
+196 "pEREDWIVENIE ZA KONEC STROKI"
+197 "dWIVENIE STROKI NE SDELANO"
+198 "uVE NA NA^ALE FAJLA"
+199 "dWIVENIE KURSORA ZA NA^ALO FAJLA"
+200 "uVE W PERWOJ KOLONKE"
+201 "bUFERY DOLVNY BYTX UKAZANY DO WYPOLNENIQ KOMANDY"
+202 "uVE NA KONCE FAJLA"
+203 "uVE NA KONSE STROKI"
+204 "%s NE QWLQETSQ KOMANDOJ VI"
+205 "iSPOLXZOWANIE: %s"
+206 "nET SIMWOLOW DLQ UDALENIQ"
+208 "nET KOMANDY DLQ POWTORA"
+210 "kOMANDA %s NE MOVET BYTX ISPOLXZOWANA KAK KOMANDA PRODWIVENIQ"
+211 "~ISLO BOLX[E ^EM %lu"
+214 "zNA^ENIE KOLI^ESTWA OKON SLI[KOM WELIKO, MAKSIMALXNOE ZNA^ENIE = %u"
+220 "dWIVENIE KURSORA ZA KONEC \KRANA"
+221 "dWIVENIE KURSORA ZA NA^ALO \KRANA"
+223 "tENEWYH OKON NET"
+224 "nE SU]ESTWUET TENEWOGO OKNA S REDAKTIROWANIEM FAJLA %s"
+225 "wY NE MOVETE SDELATX EDINSTWENNOE OKNO TENEWYM"
+226 "|KRAN MOVET BYTX SVAT"
+227 "|KRAN NE MOVET BYTX SVAT"
+228 "|KRAN NE MOVET BYTX RAS[IREN"
+233 "dANNYJ TIP TERMINALA NE IMEET KLAWI[I %s"
+237 "nEWOZMOVNO SOZDATX WREMENNYJ FAJL"
+238 "wNIMANIE: %s SPECIALXNYJ FAJL"
+239 "%s UVE ZABLOKIROWAN, DOSTUPEN TOLXKO NA ^TENIE"
+240 "%s: UDALEN"
+241 "%s: ZAKRYT"
+242 "%s: UDALEN"
+243 "%s: UDALEN"
+244 "fAJL TOLXKO DLQ ^TENIQ, NE ZAPISAN: iSPOLXZUJTE ! DLQ OBHODA"
+245 "fAJL TOLXKO DLQ ^TENIQ, NE ZAPISAN"
+246 "%s SU]ESTWUET, NE ZAPISAN; ISPOLXZUJTE ! DLQ OBHODA"
+247 "%s SU]ESTWUET, NE ZAPISAN"
+248 "iSPOLXZUJTE ! DLQ ^ASTI^NOJ ZAPISI FAJLA"
+249 "~ASTX FAJLA, FAJL NE ZAPISAN"
+250 "%s: fAJL IZMENQLSQ POZDNEE, ^EM DANNAQ KOPIQ: ISPOLXZUJTE ! DLQ OBHODA"
+251 "%s: fAJL IZMENQLSQ POZDNEE, ^EM DANNAQ KOPIQ"
+252 "%s: ZA]ITA NA ZAPISX BYLA NEDOSTUPNA"
+254 "%s: wnimanie: fajl use~en"
+256 "%s: NOWYJ FAJL: %lu STROK, %lu SIMWOLOW"
+257 "%s: %lu STROK, %lu SIMWOLOW"
+258 "%s RAS[IRILSQ W SLI[KOM BOLX[OE KOLI^ESTWO IMEN FAJLOW"
+259 "%s SPECIALXNYJ FAJL"
+260 "%s: NE PRINADLEVIT wAM"
+261 "%s: DOSTUPEN NE TOLXKO wAM"
+262 "fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE ! DLQ OBHODA"
+263 "fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE :edit DLQ OBHODA"
+264 "fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE ! DLQ OBHODA"
+265 "fAJL WREMENNYJ: WYHOD SOTRET L@BYE IZMENENIQ"
+267 "zAPISI NA^ATY ZANOWO"
diff --git a/contrib/nvi/catalog/ru_RU.KOI8-R.check b/contrib/nvi/catalog/ru_RU.KOI8-R.check
new file mode 100644
index 0000000..ca77b89
--- /dev/null
+++ b/contrib/nvi/catalog/ru_RU.KOI8-R.check
@@ -0,0 +1,169 @@
+Unused message id's (this is okay):
+001
+008
+021
+022
+023
+024
+025
+026
+027
+028
+029
+036
+037
+057
+061
+078
+081
+090
+091
+093
+110
+145
+147
+161
+164
+167
+169
+191
+207
+209
+212
+213
+215
+216
+217
+218
+219
+222
+229
+230
+231
+232
+234
+235
+236
+253
+255
+266
+=========================
+MISSING ERROR MESSAGES (Please add!):
+008
+021
+022
+023
+024
+025
+026
+027
+028
+029
+036
+037
+057
+061
+078
+090
+091
+093
+110
+145
+147
+161
+164
+167
+169
+191
+207
+209
+212
+215
+216
+217
+218
+219
+222
+230
+231
+232
+234
+235
+236
+253
+255
+266
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+=========================
+Extra error messages (just delete them):
+047
+050
+051
+052
+176
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+=========================
+Duplicate messages, just message (this is okay):
+ 2 %s RAS[IRILSQ W SLI[KOM BOLX[OE KOLI^ESTWO IMEN FAJLOWX
+ 2 %s SU]ESTWUET, NE ZAPISAN; ISPOLXZUJTE ! DLQ OBHODAX
+ 2 %s: %lu STROK, %lu SIMWOLOWX
+ 2 %s: NE DO KONCA WOSSTANOWLENNYJ FAJLX
+ 2 bUFER %s PUSTX
+ 2 fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE ! DLQ OBHODAX
+ 2 set: %s OPCIQ NE QWLQETSQ DWOI^NOJX
+ 2 zAPISI NE WELISX, NEWOZMOVNO OTMENITX POSLEDN@@ KOMANDUX
+ 3 %s: UDALENX
+ 3 nET SIMWOLOW DLQ UDALENIQX
+ 4 iSPOLXZOWANIE: %sX
+=========================
diff --git a/contrib/nvi/catalog/ru_RU.KOI8-R.owner b/contrib/nvi/catalog/ru_RU.KOI8-R.owner
new file mode 100644
index 0000000..bf4fa18
--- /dev/null
+++ b/contrib/nvi/catalog/ru_RU.KOI8-R.owner
@@ -0,0 +1 @@
+Dima Ruban <dima@demos.su>
diff --git a/contrib/nvi/catalog/ru_SU.KOI8-R b/contrib/nvi/catalog/ru_SU.KOI8-R
new file mode 100644
index 0000000..7eb35b9
--- /dev/null
+++ b/contrib/nvi/catalog/ru_SU.KOI8-R
@@ -0,0 +1,267 @@
+VI_MESSAGE_CATALOG
+pEREPOLNENIE ZNA^ENIQ DLINY STROKIX
+%s/%d: NEWOZMOVNO UDALITX STROKU %uX
+%s/%d: NEWOZMOVNO DOBAWITX K STROKE %uX
+%s/%d: NEWOZMOVNO WSTAWITX W STROKU %uX
+%s/%d: NEWOZMOVNO SOHRANITX STROKU %uX
+%s/%d: NEWOZMOVNO DOSTATX POSLEDN@@ STROKUX
+
+fAJL ZAPISEJX
+zAPISI NE WELISX, NEWOZMOVNO OTMENITX POSLEDN@@ KOMANDUX
+nET IZMENENIJ DLQ OTMENYX
+zAPISI NE WELISX, NEWOZMOVNO OTMENITX POSLEDN@@ KOMANDUX
+zAPISI NE WELISX, NEWOZMOVNO PROSMOTRETX WPEREDX
+nET IZMENENIJ DLQ PEREDELKIX
+%s/%d: O[IBKA PRI ZAPISI PROTOKOLAX
+sTANDARTNYJ WWOD/WYWOD DLQ VI DOLVEN BYTX TERMINALX
+oTMETKA %s: NE USTANOWLENAX
+oTMETKA %s: STROKA BYLA UDALENAX
+oTMETKA %s: POZICII KURSORA BOLX[E NE SU]ESTWUETX
+o[IBKA:X
+
+
+
+
+
+
+
+
+
+fAJL %s NE QWLQETSQ KATALOGOM SOOB]ENIJX
+nEWOZMOVNO USTANOWITX OPCI@ %s PO UMOL^ANI@X
+iSPOLXZOWANIE: %sX
+oPCII %s NET: 'set all' POKAZYWAET WSE WOZMOVNYE OPCIIX
+set: [no]%s NE PRINIMAET TAKOGO ZNA^ENIQX
+set: %s OPCIQ NE QWLQETSQ DWOI^NOJX
+
+
+set: NEPRAWILXNOE ZNA^ENIE %sX
+set: %s OPCIQ NE QWLQETSQ DWOI^NOJX
+kOLI^ESTWO KOLONOK \KRANA SLI[KOM MALO, MENX[E ^EM %dX
+kOLI^ESTWO KOLONOK \KRANA SLI[KOM WELIKO, BOLX[E ^EM %dX
+kOLI^ESTWO STROK \KRANA SLI[KOM MALO, MENX[E ^EM %dX
+kOLI^ESTWO STROK \KRANA SLI[KOM WELIKO, BOLX[E ^EM %dX
+oPCIQ lisp OTSUTSTWUETX
+sOOB]ENIQ NE WYKL@^ENY: %sX
+sOOB]ENIQ NE WKL@^ENY: %sX
+oPCIQ modeline(s) NE MOVET BYTX PEREUSTANOWLENAX
+oPCIQ paragraph DOLVNA SOSTOQTX IZ GRUPP S DWUMQ SIMWOLAMIX
+oPCIQ section DOLVNA SOSTOQTX IZ GRUPP S DWUMQ SIMWOLAMIX
+oPCIQ shiftwidth NE MOVET BYTX USTANOWLENA NA 0X
+oPCIQ sourceany NE MOVET BYTX USTANOWLENAX
+tABULQCIQ NE MOVET BYTX USTANOWLENA NA 0X
+sTARTOWYJ BUFER PUSTX
+bUFER %s PUSTX
+fAJLY S SIMWOLAMI PEREWODA STROKI W IMENI NE MOGUT BYTX WOSSTANOWLENYX
+iZMENENIQ NE SOHRANENY PRI KRAHE SESSIIX
+
+sOHRANENIE NE UDALOSX: %sX
+iZMENENIQ NE SOHRANQ@TSQ PRI OBRYWE SESSIIX
+sOHRANENIE KOPII FAJLA NE UDALOSX: %sX
+
+iNFORMACII NA POLXZOWATELQ %u NE NAJDENOX
+nEWOZMOVNO ZA]ITITX SPASENNYJ FAJLX
+bUFER WOSSTANOWLENNOGO FAJLA PEREPOLNENX
+wOSSTANOWLENNYJ FAJLX
+%s: NE DO KONCA WOSSTANOWLENNYJ FAJLX
+%s: NE DO KONCA WOSSTANOWLENNYJ FAJLX
+fAJLOW S IMENEM %s, KOTORYE wY MOVETE ^ITATX, NE SU]ESTWUETX
+eSTX STARYE WERSII FAJLA, KOTORYE MOVNO WOSSTANOWITXX
+sU]ESTWU@T DRUGIE FAJLY, KOTORYE MOVNO WOSSTANOWITXX
+E-mail NE POSLAN: %sX
+fAJL PUST - ISKATX NE^EGOX
+dOSTIGNUT KONEC FAJLA BEZ NAHOVDENIQ OBRAZCA POISKAX
+nE ZADAN OBRAZEC POISKAX
+oBRAZEC POISKA NE NAJDENX
+dOSTUPNO NA^ALO FAJLA BEZ NAHOVDENIQ OBRAZCA POISKAX
+pOISK ZACIKLENX
+
+nEPE^ATNYH SIMWOLOW NE NAJDENOX
+nEIZWESTNAQ KOMANDAX
+
+kOMANDA NE DOSTUPNA W REVIME exX
+s^ET^IK NE MOVET BYTX NULEMX
+%s: NEPRAWILXNOE UKAZANIE STROKIX
+wNUTRENNQQ O[IBKA W SINTAKSISE (%s: %s)X
+iSPOLXZOWANIE: %sX
+%s: WREMENNYJ BUFER NE ISPOLXZOWANX
+mETKA POSTAWLENA PERED STROKOJ 1X
+mETKA POSTAWLENA POSLE KONCA FAJLAX
+
+
+kOMANDA ex NE UDALASX: PARAMETRY KOMANDY ZABYTYX
+
+wTOROJ ADRES MENX[E ^EM PERWYJX
+nE UKAZANO NAZWANIE OTMETKIX
+\\ NE ZAWER[AETSQ / ILI ?X
+sSYLKA K STROKE S NOMEROM MENX[E 0X
+kOMANDA %s NEIZWESTNAX
+pEREPOLNENIE ZNA^ENIQ ADRESAX
+nEDOBOR ZNA^ENIQ ADRESAX
+nEDOPUSTIMAQ KOMBINACIQ W ADRESEX
+nEPRAWILXNYJ ADRES: WSEGO %lu STROK W FAJLEX
+nEPRAWILXNYJ ADRES: FAJL PUSTX
+kOMMANDA %s NE MOVET ISPOLXZOWATX ADRES 0X
+aBBREWIATURY OTSUTSTWU@TX
+aBBREWIATURY DOLVNY ZAKAN^IWATXSQ SIMWOLOM "word"X
+aBBREWIATURY NE MOGUT SODERVATX SIMWOLOY TABLQCII ILI PROBELYX
+aBBREWIATURY NE MOGUT SO^ETATXSQ S SIMWOLAMI SLOW/NE-SLOW, ZA ISKL@^ENIEM KONCA STROKIX
+"%s" NE QWLQETSQ ABBREWIATUROJX
+
+fAJLOW DLQ REDAKTIROWANIQ BOLX[E NETX
+oTSUTSTWIE PREDYDU]EGO FAJLA DLQ REDAKTIROWANIQX
+oTSUTSTWIE PREDYDU]EGO FAJLA DLQ PROSMOTRA NAZADX
+nET FAJLOWX
+oTSUTSTWIE PREDYDU]EJ KOMANDY DLQ ZAMENY "!"X
+oTSUTSTWIE ZAMENY DLQ %%X
+oTSUTSTWIE ZAMENY DLQ #X
+o[IBKA: execl: %sX
+o[IBKA WWODA/WYWODA: %sX
+fAJL IZMENEN S MOMENTA POSLEDNEJ POLNOJ ZAPISI: ISPOLXZUJTE ! DLQ OBHODAX
+nEWOZMOVNO NAJTI DOMA[NIJ KATALOGX
+nOWYJ KATALOG: %sX
+nET WYREZANYH BUFEROWX
+kOMANDA %s NE MOVET BYTX ISPOLXZOWANA WNUTRI OB]EJ KOMANDYX
+%s/%s: NE OTKRYT: NE PRINADLEVIT wAM ILI root-UX
+%s/%s: NE OTKRYT: NE PRINADLEVIT wAMX
+%s/%s: NE OTKRYT: WOZMOVNOSTX ZAPISI U POLXZOWATELQ, NE QWLQ@]EGOSQ WLADELXCEMX
+%s/%s: NE S^ITAN: NE PRINADLEVIT wAM ILI root-UX
+%s/%s: NE S^ITAN: NE PRINADLEVIT wAMX
+%s/%s: NE S^ITAN: WOZMOVNOSTX ZAPISI U POLXZOWATELQ, NE QWLQ@]EGOSQ WLADELXCEMX
+pOSLEDU@]IE STROKI OTSUTSTWU@TX
+oTSUTSTWIE PARAMETROW WWODAX
+oTSUTSTWIE PARAMETROW KOMANDYX
+sIMWOL %s NE MOVET BYTX PEREZAPOMNENX
+"%s" NA DANNYJ MOMENT NE OTME^ENX
+iMQ METKI DOLVNO BYTX ODNIM SIMWOLOMX
+%s SU]ESTWUET, NE ZAPISAN; ISPOLXZUJTE ! DLQ OBHODAX
+nOWYJ FAJL .exrc: %sX
+sTROKA PERENOSA NAHODITSQ WNUTRI PARAMETROW PERENOSAX
+kOMANDA open PODRAZUMEWAET USTANOWKU OPCII openX
+kOMANDA open NE REALIZOWANAX
+zA]ITA FAJLA NEWOZMOVNAX
+fAJL ZA]I]ENX
+%s RAS[IRILSQ W SLI[KOM BOLX[OE KOLI^ESTWO IMEN FAJLOWX
+
+%s: ZA]ITA NA ^TENIE BYLA NEDOSTUPNAX
+
+%s: %lu STROK, %lu SIMWOLOWX
+nET TENEWYH OKONX
+kOMANDA script ISPOLXZUETSQ TOLXKO W REVIME viX
+nET KOMANDY DLQ ISPOLNENIQX
+oPCIQ shiftwidth USTANOWLENA NA 0X
+pEREPOLNENIE S^ET^IKAX
+cIKL WYPOLNEN NE DO KONCAX
+uKAZANO REGULQRNOE WYRAVENIE: FLAG r NE NUVENX
+fLAGI #, l I p NE MOGUT BYTX OB_EDINENY S FLAGOM c W REVIME viX
+sOWPADENIJ NETX
+mETKA OTSUTSTWUETX
+w STEKE METOK ZAPISEJ MENX[E, ^EM %s, ISPOLXZUJTE :display t[ags]X
+fAJLA S IMENEM %s W STEKE METOK NET; ISPOLXZUJTE :display t[ags]X
+
+%s: METKA NE NAJDENAX
+%s: PLOHAQ METKA W %sX
+
+sTEK METOK PUSTX
+%s: ISKOMAQ PEREMENNAQ NE NAJDENAX
+
+bUFER %s PUSTX
+
+pRERWANOX
+oTSUTSTWIE BUFERA DLQ ISPOLXZOWANIQX
+nET PREDIDU]EGO REGULQRNOGO WYRAVENIQX
+kOMANDA %s PODRAZUMEWAET NALI^IE PRO^TENNOGO FAJLAX
+iSPOLXZOWANIE: %sX
+kOMANDA visual PODRAZUMEWAET OBQZATELXNU@ USTANOWKU OPCII openX
+%s RAS[IRILSQ DO SLI[KOM BOLX[OGO KOLI^ESTWA FAJLOWX
+pUSTOJ FAJLX
+nET PREDYDU]EGO POISKA F, f, T, ILI tX
+%s NE NAJDENOX
+nET PREDYDU]EGO FAJLA DLQ REDAKTIROWANIQX
+kURSOR STOIT NE NA CIFREX
+pOLU^ENNOE ^ISLO SLI[KOM WELIKOX
+pOLU^ENNOE ^ISLO SLI[KOM MALOX
+pODHODQ]EGO SIMWOLA NET NA \TOJ STROKEX
+pODHODQ]IJ SIMWOL NE NAJDENX
+nET SIMWOLOW DLQ UDALENIQX
+dRUGOGO \KRANA NE SU]ESTWUETX
+sIMWOLY POSLE STROKI DLQ POISKA I/ILI PEREBOR STROKIX
+pRO[LYJ OBRAZEC POISKA OTSUTSTWUETX
+pOISK ZAWER[ILSQ NA NA^ALXNOJ POZICIIX
+
+sIMWOL NEPRAWILEN; ZAKL@^EN W KAWY^KI DLQ WWODAX
+uVE NA NA^ALE WSTAWKIX
+nET SIMWOLOW DLQ UDALENIQX
+pEREDWIVENIE ZA KONEC FAJLAX
+pEREDWIVENIE ZA KONEC STROKIX
+dWIVENIE STROKI NE SDELANOX
+uVE NA NA^ALE FAJLAX
+dWIVENIE KURSORA ZA NA^ALO FAJLAX
+uVE W PERWOJ KOLONKEX
+bUFERY DOLVNY BYTX UKAZANY DO WYPOLNENIQ KOMANDYX
+uVE NA KONCE FAJLAX
+uVE NA KONSE STROKIX
+%s NE QWLQETSQ KOMANDOJ VIX
+iSPOLXZOWANIE: %sX
+nET SIMWOLOW DLQ UDALENIQX
+
+nET KOMANDY DLQ POWTORAX
+
+kOMANDA %s NE MOVET BYTX ISPOLXZOWANA KAK KOMANDA PRODWIVENIQX
+~ISLO BOLX[E ^EM %luX
+
+
+zNA^ENIE KOLI^ESTWA OKON SLI[KOM WELIKO, MAKSIMALXNOE ZNA^ENIE = %uX
+
+
+
+
+
+dWIVENIE KURSORA ZA KONEC \KRANAX
+dWIVENIE KURSORA ZA NA^ALO \KRANAX
+
+tENEWYH OKON NETX
+nE SU]ESTWUET TENEWOGO OKNA S REDAKTIROWANIEM FAJLA %sX
+wY NE MOVETE SDELATX EDINSTWENNOE OKNO TENEWYMX
+|KRAN MOVET BYTX SVATX
+|KRAN NE MOVET BYTX SVATX
+|KRAN NE MOVET BYTX RAS[IRENX
+
+
+
+
+dANNYJ TIP TERMINALA NE IMEET KLAWI[I %sX
+
+
+
+nEWOZMOVNO SOZDATX WREMENNYJ FAJLX
+wNIMANIE: %s SPECIALXNYJ FAJLX
+%s UVE ZABLOKIROWAN, DOSTUPEN TOLXKO NA ^TENIEX
+%s: UDALENX
+%s: ZAKRYTX
+%s: UDALENX
+%s: UDALENX
+fAJL TOLXKO DLQ ^TENIQ, NE ZAPISAN: iSPOLXZUJTE ! DLQ OBHODAX
+fAJL TOLXKO DLQ ^TENIQ, NE ZAPISANX
+%s SU]ESTWUET, NE ZAPISAN; ISPOLXZUJTE ! DLQ OBHODAX
+%s SU]ESTWUET, NE ZAPISANX
+iSPOLXZUJTE ! DLQ ^ASTI^NOJ ZAPISI FAJLAX
+~ASTX FAJLA, FAJL NE ZAPISANX
+%s: fAJL IZMENQLSQ POZDNEE, ^EM DANNAQ KOPIQ: ISPOLXZUJTE ! DLQ OBHODAX
+%s: fAJL IZMENQLSQ POZDNEE, ^EM DANNAQ KOPIQX
+%s: ZA]ITA NA ZAPISX BYLA NEDOSTUPNAX
+
+%s: wnimanie: fajl use~enX
+
+%s: NOWYJ FAJL: %lu STROK, %lu SIMWOLOWX
+%s: %lu STROK, %lu SIMWOLOWX
+%s RAS[IRILSQ W SLI[KOM BOLX[OE KOLI^ESTWO IMEN FAJLOWX
+%s SPECIALXNYJ FAJLX
+%s: NE PRINADLEVIT wAMX
+%s: DOSTUPEN NE TOLXKO wAMX
+fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE ! DLQ OBHODAX
+fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE :edit DLQ OBHODAX
+fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE ! DLQ OBHODAX
+fAJL WREMENNYJ: WYHOD SOTRET L@BYE IZMENENIQX
+
+zAPISI NA^ATY ZANOWOX
diff --git a/contrib/nvi/catalog/ru_SU.KOI8-R.base b/contrib/nvi/catalog/ru_SU.KOI8-R.base
new file mode 100644
index 0000000..59efd3f
--- /dev/null
+++ b/contrib/nvi/catalog/ru_SU.KOI8-R.base
@@ -0,0 +1,219 @@
+002 "pEREPOLNENIE ZNA^ENIQ DLINY STROKI"
+003 "%s/%d: NEWOZMOVNO UDALITX STROKU %u"
+004 "%s/%d: NEWOZMOVNO DOBAWITX K STROKE %u"
+005 "%s/%d: NEWOZMOVNO WSTAWITX W STROKU %u"
+006 "%s/%d: NEWOZMOVNO SOHRANITX STROKU %u"
+007 "%s/%d: NEWOZMOVNO DOSTATX POSLEDN@@ STROKU"
+009 "fAJL ZAPISEJ"
+010 "zAPISI NE WELISX, NEWOZMOVNO OTMENITX POSLEDN@@ KOMANDU"
+011 "nET IZMENENIJ DLQ OTMENY"
+012 "zAPISI NE WELISX, NEWOZMOVNO OTMENITX POSLEDN@@ KOMANDU"
+013 "zAPISI NE WELISX, NEWOZMOVNO PROSMOTRETX WPERED"
+014 "nET IZMENENIJ DLQ PEREDELKI"
+015 "%s/%d: O[IBKA PRI ZAPISI PROTOKOLA"
+016 "sTANDARTNYJ WWOD/WYWOD DLQ VI DOLVEN BYTX TERMINAL"
+017 "oTMETKA %s: NE USTANOWLENA"
+018 "oTMETKA %s: STROKA BYLA UDALENA"
+019 "oTMETKA %s: POZICII KURSORA BOLX[E NE SU]ESTWUET"
+020 "o[IBKA:"
+030 "fAJL %s NE QWLQETSQ KATALOGOM SOOB]ENIJ"
+031 "nEWOZMOVNO USTANOWITX OPCI@ %s PO UMOL^ANI@"
+032 "iSPOLXZOWANIE: %s"
+033 "oPCII %s NET: 'set all' POKAZYWAET WSE WOZMOVNYE OPCII"
+034 "set: [no]%s NE PRINIMAET TAKOGO ZNA^ENIQ"
+035 "set: %s OPCIQ NE QWLQETSQ DWOI^NOJ"
+038 "set: NEPRAWILXNOE ZNA^ENIE %s"
+039 "set: %s OPCIQ NE QWLQETSQ DWOI^NOJ"
+040 "kOLI^ESTWO KOLONOK \KRANA SLI[KOM MALO, MENX[E ^EM %d"
+041 "kOLI^ESTWO KOLONOK \KRANA SLI[KOM WELIKO, BOLX[E ^EM %d"
+042 "kOLI^ESTWO STROK \KRANA SLI[KOM MALO, MENX[E ^EM %d"
+043 "kOLI^ESTWO STROK \KRANA SLI[KOM WELIKO, BOLX[E ^EM %d"
+044 "oPCIQ lisp OTSUTSTWUET"
+045 "sOOB]ENIQ NE WYKL@^ENY: %s"
+046 "sOOB]ENIQ NE WKL@^ENY: %s"
+047 "oPCIQ modeline(s) NE MOVET BYTX PEREUSTANOWLENA"
+048 "oPCIQ paragraph DOLVNA SOSTOQTX IZ GRUPP S DWUMQ SIMWOLAMI"
+049 "oPCIQ section DOLVNA SOSTOQTX IZ GRUPP S DWUMQ SIMWOLAMI"
+050 "oPCIQ shiftwidth NE MOVET BYTX USTANOWLENA NA 0"
+051 "oPCIQ sourceany NE MOVET BYTX USTANOWLENA"
+052 "tABULQCIQ NE MOVET BYTX USTANOWLENA NA 0"
+053 "sTARTOWYJ BUFER PUST"
+054 "bUFER %s PUST"
+055 "fAJLY S SIMWOLAMI PEREWODA STROKI W IMENI NE MOGUT BYTX WOSSTANOWLENY"
+056 "iZMENENIQ NE SOHRANENY PRI KRAHE SESSII"
+058 "sOHRANENIE NE UDALOSX: %s"
+059 "iZMENENIQ NE SOHRANQ@TSQ PRI OBRYWE SESSII"
+060 "sOHRANENIE KOPII FAJLA NE UDALOSX: %s"
+062 "iNFORMACII NA POLXZOWATELQ %u NE NAJDENO"
+063 "nEWOZMOVNO ZA]ITITX SPASENNYJ FAJL"
+064 "bUFER WOSSTANOWLENNOGO FAJLA PEREPOLNEN"
+065 "wOSSTANOWLENNYJ FAJL"
+066 "%s: NE DO KONCA WOSSTANOWLENNYJ FAJL"
+067 "%s: NE DO KONCA WOSSTANOWLENNYJ FAJL"
+068 "fAJLOW S IMENEM %s, KOTORYE wY MOVETE ^ITATX, NE SU]ESTWUET"
+069 "eSTX STARYE WERSII FAJLA, KOTORYE MOVNO WOSSTANOWITX"
+070 "sU]ESTWU@T DRUGIE FAJLY, KOTORYE MOVNO WOSSTANOWITX"
+071 "E-mail NE POSLAN: %s"
+072 "fAJL PUST - ISKATX NE^EGO"
+073 "dOSTIGNUT KONEC FAJLA BEZ NAHOVDENIQ OBRAZCA POISKA"
+074 "nE ZADAN OBRAZEC POISKA"
+075 "oBRAZEC POISKA NE NAJDEN"
+076 "dOSTUPNO NA^ALO FAJLA BEZ NAHOVDENIQ OBRAZCA POISKA"
+077 "pOISK ZACIKLEN"
+079 "nEPE^ATNYH SIMWOLOW NE NAJDENO"
+080 "nEIZWESTNAQ KOMANDA"
+082 "kOMANDA NE DOSTUPNA W REVIME ex"
+083 "s^ET^IK NE MOVET BYTX NULEM"
+084 "%s: NEPRAWILXNOE UKAZANIE STROKI"
+085 "wNUTRENNQQ O[IBKA W SINTAKSISE (%s: %s)"
+086 "iSPOLXZOWANIE: %s"
+087 "%s: WREMENNYJ BUFER NE ISPOLXZOWAN"
+088 "mETKA POSTAWLENA PERED STROKOJ 1"
+089 "mETKA POSTAWLENA POSLE KONCA FAJLA"
+092 "kOMANDA ex NE UDALASX: PARAMETRY KOMANDY ZABYTY"
+094 "wTOROJ ADRES MENX[E ^EM PERWYJ"
+095 "nE UKAZANO NAZWANIE OTMETKI"
+096 "\\ NE ZAWER[AETSQ / ILI ?"
+097 "sSYLKA K STROKE S NOMEROM MENX[E 0"
+098 "kOMANDA %s NEIZWESTNA"
+099 "pEREPOLNENIE ZNA^ENIQ ADRESA"
+100 "nEDOBOR ZNA^ENIQ ADRESA"
+101 "nEDOPUSTIMAQ KOMBINACIQ W ADRESE"
+102 "nEPRAWILXNYJ ADRES: WSEGO %lu STROK W FAJLE"
+103 "nEPRAWILXNYJ ADRES: FAJL PUST"
+104 "kOMMANDA %s NE MOVET ISPOLXZOWATX ADRES 0"
+105 "aBBREWIATURY OTSUTSTWU@T"
+106 "aBBREWIATURY DOLVNY ZAKAN^IWATXSQ SIMWOLOM "word""
+107 "aBBREWIATURY NE MOGUT SODERVATX SIMWOLOY TABLQCII ILI PROBELY"
+108 "aBBREWIATURY NE MOGUT SO^ETATXSQ S SIMWOLAMI SLOW/NE-SLOW, ZA ISKL@^ENIEM KONCA STROKI"
+109 ""%s" NE QWLQETSQ ABBREWIATUROJ"
+111 "fAJLOW DLQ REDAKTIROWANIQ BOLX[E NET"
+112 "oTSUTSTWIE PREDYDU]EGO FAJLA DLQ REDAKTIROWANIQ"
+113 "oTSUTSTWIE PREDYDU]EGO FAJLA DLQ PROSMOTRA NAZAD"
+114 "nET FAJLOW"
+115 "oTSUTSTWIE PREDYDU]EJ KOMANDY DLQ ZAMENY "!""
+116 "oTSUTSTWIE ZAMENY DLQ %%"
+117 "oTSUTSTWIE ZAMENY DLQ #"
+118 "o[IBKA: execl: %s"
+119 "o[IBKA WWODA/WYWODA: %s"
+120 "fAJL IZMENEN S MOMENTA POSLEDNEJ POLNOJ ZAPISI: ISPOLXZUJTE ! DLQ OBHODA"
+121 "nEWOZMOVNO NAJTI DOMA[NIJ KATALOG"
+122 "nOWYJ KATALOG: %s"
+123 "nET WYREZANYH BUFEROW"
+124 "kOMANDA %s NE MOVET BYTX ISPOLXZOWANA WNUTRI OB]EJ KOMANDY"
+125 "%s/%s: NE OTKRYT: NE PRINADLEVIT wAM ILI root-U"
+126 "%s/%s: NE OTKRYT: NE PRINADLEVIT wAM"
+127 "%s/%s: NE OTKRYT: WOZMOVNOSTX ZAPISI U POLXZOWATELQ, NE QWLQ@]EGOSQ WLADELXCEM"
+128 "%s/%s: NE S^ITAN: NE PRINADLEVIT wAM ILI root-U"
+129 "%s/%s: NE S^ITAN: NE PRINADLEVIT wAM"
+130 "%s/%s: NE S^ITAN: WOZMOVNOSTX ZAPISI U POLXZOWATELQ, NE QWLQ@]EGOSQ WLADELXCEM"
+131 "pOSLEDU@]IE STROKI OTSUTSTWU@T"
+132 "oTSUTSTWIE PARAMETROW WWODA"
+133 "oTSUTSTWIE PARAMETROW KOMANDY"
+134 "sIMWOL %s NE MOVET BYTX PEREZAPOMNEN"
+135 ""%s" NA DANNYJ MOMENT NE OTME^EN"
+136 "iMQ METKI DOLVNO BYTX ODNIM SIMWOLOM"
+137 "%s SU]ESTWUET, NE ZAPISAN; ISPOLXZUJTE ! DLQ OBHODA"
+138 "nOWYJ FAJL .exrc: %s"
+139 "sTROKA PERENOSA NAHODITSQ WNUTRI PARAMETROW PERENOSA"
+140 "kOMANDA open PODRAZUMEWAET USTANOWKU OPCII open"
+141 "kOMANDA open NE REALIZOWANA"
+142 "zA]ITA FAJLA NEWOZMOVNA"
+143 "fAJL ZA]I]EN"
+144 "%s RAS[IRILSQ W SLI[KOM BOLX[OE KOLI^ESTWO IMEN FAJLOW"
+146 "%s: ZA]ITA NA ^TENIE BYLA NEDOSTUPNA"
+148 "%s: %lu STROK, %lu SIMWOLOW"
+149 "nET TENEWYH OKON"
+150 "kOMANDA script ISPOLXZUETSQ TOLXKO W REVIME vi"
+151 "nET KOMANDY DLQ ISPOLNENIQ"
+152 "oPCIQ shiftwidth USTANOWLENA NA 0"
+153 "pEREPOLNENIE S^ET^IKA"
+154 "cIKL WYPOLNEN NE DO KONCA"
+155 "uKAZANO REGULQRNOE WYRAVENIE: FLAG r NE NUVEN"
+156 "fLAGI #, l I p NE MOGUT BYTX OB_EDINENY S FLAGOM c W REVIME vi"
+157 "sOWPADENIJ NET"
+158 "mETKA OTSUTSTWUET"
+159 "w STEKE METOK ZAPISEJ MENX[E, ^EM %s, ISPOLXZUJTE :display t[ags]"
+160 "fAJLA S IMENEM %s W STEKE METOK NET; ISPOLXZUJTE :display t[ags]"
+162 "%s: METKA NE NAJDENA"
+163 "%s: PLOHAQ METKA W %s"
+165 "sTEK METOK PUST"
+166 "%s: ISKOMAQ PEREMENNAQ NE NAJDENA"
+168 "bUFER %s PUST"
+170 "pRERWANO"
+171 "oTSUTSTWIE BUFERA DLQ ISPOLXZOWANIQ"
+172 "nET PREDIDU]EGO REGULQRNOGO WYRAVENIQ"
+173 "kOMANDA %s PODRAZUMEWAET NALI^IE PRO^TENNOGO FAJLA"
+174 "iSPOLXZOWANIE: %s"
+175 "kOMANDA visual PODRAZUMEWAET OBQZATELXNU@ USTANOWKU OPCII open"
+176 "%s RAS[IRILSQ DO SLI[KOM BOLX[OGO KOLI^ESTWA FAJLOW"
+177 "pUSTOJ FAJL"
+178 "nET PREDYDU]EGO POISKA F, f, T, ILI t"
+179 "%s NE NAJDENO"
+180 "nET PREDYDU]EGO FAJLA DLQ REDAKTIROWANIQ"
+181 "kURSOR STOIT NE NA CIFRE"
+182 "pOLU^ENNOE ^ISLO SLI[KOM WELIKO"
+183 "pOLU^ENNOE ^ISLO SLI[KOM MALO"
+184 "pODHODQ]EGO SIMWOLA NET NA \TOJ STROKE"
+185 "pODHODQ]IJ SIMWOL NE NAJDEN"
+186 "nET SIMWOLOW DLQ UDALENIQ"
+187 "dRUGOGO \KRANA NE SU]ESTWUET"
+188 "sIMWOLY POSLE STROKI DLQ POISKA I/ILI PEREBOR STROKI"
+189 "pRO[LYJ OBRAZEC POISKA OTSUTSTWUET"
+190 "pOISK ZAWER[ILSQ NA NA^ALXNOJ POZICII"
+192 "sIMWOL NEPRAWILEN; ZAKL@^EN W KAWY^KI DLQ WWODA"
+193 "uVE NA NA^ALE WSTAWKI"
+194 "nET SIMWOLOW DLQ UDALENIQ"
+195 "pEREDWIVENIE ZA KONEC FAJLA"
+196 "pEREDWIVENIE ZA KONEC STROKI"
+197 "dWIVENIE STROKI NE SDELANO"
+198 "uVE NA NA^ALE FAJLA"
+199 "dWIVENIE KURSORA ZA NA^ALO FAJLA"
+200 "uVE W PERWOJ KOLONKE"
+201 "bUFERY DOLVNY BYTX UKAZANY DO WYPOLNENIQ KOMANDY"
+202 "uVE NA KONCE FAJLA"
+203 "uVE NA KONSE STROKI"
+204 "%s NE QWLQETSQ KOMANDOJ VI"
+205 "iSPOLXZOWANIE: %s"
+206 "nET SIMWOLOW DLQ UDALENIQ"
+208 "nET KOMANDY DLQ POWTORA"
+210 "kOMANDA %s NE MOVET BYTX ISPOLXZOWANA KAK KOMANDA PRODWIVENIQ"
+211 "~ISLO BOLX[E ^EM %lu"
+214 "zNA^ENIE KOLI^ESTWA OKON SLI[KOM WELIKO, MAKSIMALXNOE ZNA^ENIE = %u"
+220 "dWIVENIE KURSORA ZA KONEC \KRANA"
+221 "dWIVENIE KURSORA ZA NA^ALO \KRANA"
+223 "tENEWYH OKON NET"
+224 "nE SU]ESTWUET TENEWOGO OKNA S REDAKTIROWANIEM FAJLA %s"
+225 "wY NE MOVETE SDELATX EDINSTWENNOE OKNO TENEWYM"
+226 "|KRAN MOVET BYTX SVAT"
+227 "|KRAN NE MOVET BYTX SVAT"
+228 "|KRAN NE MOVET BYTX RAS[IREN"
+233 "dANNYJ TIP TERMINALA NE IMEET KLAWI[I %s"
+237 "nEWOZMOVNO SOZDATX WREMENNYJ FAJL"
+238 "wNIMANIE: %s SPECIALXNYJ FAJL"
+239 "%s UVE ZABLOKIROWAN, DOSTUPEN TOLXKO NA ^TENIE"
+240 "%s: UDALEN"
+241 "%s: ZAKRYT"
+242 "%s: UDALEN"
+243 "%s: UDALEN"
+244 "fAJL TOLXKO DLQ ^TENIQ, NE ZAPISAN: iSPOLXZUJTE ! DLQ OBHODA"
+245 "fAJL TOLXKO DLQ ^TENIQ, NE ZAPISAN"
+246 "%s SU]ESTWUET, NE ZAPISAN; ISPOLXZUJTE ! DLQ OBHODA"
+247 "%s SU]ESTWUET, NE ZAPISAN"
+248 "iSPOLXZUJTE ! DLQ ^ASTI^NOJ ZAPISI FAJLA"
+249 "~ASTX FAJLA, FAJL NE ZAPISAN"
+250 "%s: fAJL IZMENQLSQ POZDNEE, ^EM DANNAQ KOPIQ: ISPOLXZUJTE ! DLQ OBHODA"
+251 "%s: fAJL IZMENQLSQ POZDNEE, ^EM DANNAQ KOPIQ"
+252 "%s: ZA]ITA NA ZAPISX BYLA NEDOSTUPNA"
+254 "%s: wnimanie: fajl use~en"
+256 "%s: NOWYJ FAJL: %lu STROK, %lu SIMWOLOW"
+257 "%s: %lu STROK, %lu SIMWOLOW"
+258 "%s RAS[IRILSQ W SLI[KOM BOLX[OE KOLI^ESTWO IMEN FAJLOW"
+259 "%s SPECIALXNYJ FAJL"
+260 "%s: NE PRINADLEVIT wAM"
+261 "%s: DOSTUPEN NE TOLXKO wAM"
+262 "fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE ! DLQ OBHODA"
+263 "fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE :edit DLQ OBHODA"
+264 "fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE ! DLQ OBHODA"
+265 "fAJL WREMENNYJ: WYHOD SOTRET L@BYE IZMENENIQ"
+267 "zAPISI NA^ATY ZANOWO"
diff --git a/contrib/nvi/catalog/ru_SU.KOI8-R.check b/contrib/nvi/catalog/ru_SU.KOI8-R.check
new file mode 100644
index 0000000..ca77b89
--- /dev/null
+++ b/contrib/nvi/catalog/ru_SU.KOI8-R.check
@@ -0,0 +1,169 @@
+Unused message id's (this is okay):
+001
+008
+021
+022
+023
+024
+025
+026
+027
+028
+029
+036
+037
+057
+061
+078
+081
+090
+091
+093
+110
+145
+147
+161
+164
+167
+169
+191
+207
+209
+212
+213
+215
+216
+217
+218
+219
+222
+229
+230
+231
+232
+234
+235
+236
+253
+255
+266
+=========================
+MISSING ERROR MESSAGES (Please add!):
+008
+021
+022
+023
+024
+025
+026
+027
+028
+029
+036
+037
+057
+061
+078
+090
+091
+093
+110
+145
+147
+161
+164
+167
+169
+191
+207
+209
+212
+215
+216
+217
+218
+219
+222
+230
+231
+232
+234
+235
+236
+253
+255
+266
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+=========================
+Extra error messages (just delete them):
+047
+050
+051
+052
+176
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+=========================
+Duplicate messages, just message (this is okay):
+ 2 %s RAS[IRILSQ W SLI[KOM BOLX[OE KOLI^ESTWO IMEN FAJLOWX
+ 2 %s SU]ESTWUET, NE ZAPISAN; ISPOLXZUJTE ! DLQ OBHODAX
+ 2 %s: %lu STROK, %lu SIMWOLOWX
+ 2 %s: NE DO KONCA WOSSTANOWLENNYJ FAJLX
+ 2 bUFER %s PUSTX
+ 2 fAJL IZMENEN SO WREMENI POSLEDNEJ ZAPISI: SOHRANITE ILI ISPOLXZUJTE ! DLQ OBHODAX
+ 2 set: %s OPCIQ NE QWLQETSQ DWOI^NOJX
+ 2 zAPISI NE WELISX, NEWOZMOVNO OTMENITX POSLEDN@@ KOMANDUX
+ 3 %s: UDALENX
+ 3 nET SIMWOLOW DLQ UDALENIQX
+ 4 iSPOLXZOWANIE: %sX
+=========================
diff --git a/contrib/nvi/catalog/ru_SU.KOI8-R.owner b/contrib/nvi/catalog/ru_SU.KOI8-R.owner
new file mode 100644
index 0000000..bf4fa18
--- /dev/null
+++ b/contrib/nvi/catalog/ru_SU.KOI8-R.owner
@@ -0,0 +1 @@
+Dima Ruban <dima@demos.su>
diff --git a/contrib/nvi/catalog/spanish b/contrib/nvi/catalog/spanish
new file mode 100644
index 0000000..fb67ee9
--- /dev/null
+++ b/contrib/nvi/catalog/spanish
@@ -0,0 +1,317 @@
+VI_MESSAGE_CATALOG
+Desbordamiento de longitud de l¡neaX
+no se puede borrar la l¡nea %luX
+no se puede a¤adir la l¡nea %luX
+no se puede insertar en la l¡nea %luX
+no se puede guardar la l¡nea %luX
+no se puede obtener la £ltima l¡neaX
+Error: no se puede recuperar la l¡nea %luX
+Archivo de logX
+No se realiza log, no se puede deshacerX
+No hay cambios para deshacerX
+No se realiza log, no se puede deshacerX
+No se realiza log, no se puede remontar hacia adelanteX
+No hay cambios para rehacerX
+%s/%d: error de logX
+La entrada y salida est ndar de Vi debe ser una terminalX
+Marcar %s: no determinadoX
+Marcar %s: se borr¢ la l¡neaX
+Marcar %s: la posici¢n del cursor ya no existeX
+Error: X
+nuevo archivoX
+nombre cambiadoX
+modificadoX
+no modificadoX
+DESTRABADOX
+lectura solamenteX
+l¡nea %lu de %lu [%ld%%]X
+archivo vac¡oX
+l¡nea %luX
+El archivo %s no es un cat logo de mensajesX
+No se puede determinar la opci¢n por omisi¢n %sX
+Uso: %sX
+determinar: no hay opci¢n %s: 'determinar todo' establece todos los valores de opci¢nX
+determinar: [no] hay opci¢n %s no tiene valorX
+determinar: opci¢n %s no es booleanoX
+determinar: opci¢n %s: %sX
+determinar: opci¢n %s: %s: desbordamiento de valoresX
+determinar: opci¢n %s: %s es un n£mero ilegalX
+determinar: opci¢n %s no es booleanoX
+Las columnas en pantalla son demasiado peque¤as, menos de %dX
+Las columnas en pantalla son demasiado grandes, m s de %dX
+Las l¡neas en pantalla son demasiado peque¤as, menos de %dX
+Las l¡neas en pantalla son demasiado grandes, m s de %dX
+La opci¢n lisp no est  implementadaX
+mensajes no desconectados: %sX
+mensajes no conectados: %sX
+
+La opci¢n de p rrafo debe estar en dos grupos de caracteresX
+La opci¢n de secci¢n debe estar en dos grupos de caracteresX
+
+
+
+El buffer por omisi¢n est  vac¡oX
+El buffer %s est  vac¡oX
+Los archivos con nuevas l¡neas en el nombre son irrecuperablesX
+Las modificaciones no pueden recuperarse si la sesi¢n fallaX
+Copiando archivo para recuperaci¢n...X
+Preservaci¢n fracasada: %sX
+Las modificaciones no pueden recuperarse si la sesi¢n fallaX
+Archivo de respaldo fracasado: %sX
+Copiando archivo para recuperaci¢n...X
+Informaci¢n sobre identificaci¢n del usuario %u no encontradaX
+No se puede trabar archivo de recuperaci¢nX
+Desbordamiento de buffer de archivo de recuperaci¢nX
+Archivo de recuperaci¢nX
+%s: archivo de recuperaci¢n defectuosoX
+%s: archivo de recuperaci¢n defectuosoX
+No hay archivos denominados %s, que usted pueda leer, para recuperarX
+Existen versiones m s antiguas de este archivo que usted puede recuperarX
+Existen otros archivos que usted puede recuperarX
+no env¡a email: %sX
+Archivo vac¡o; no hay nada para buscarX
+Se alcanz¢ el final del archivo sin encontrar el patr¢nX
+No hay patr¢n anterior de b£squedaX
+No se encontr¢ el patr¢nX
+ Se alcanz¢ el principio del archivo sin encontrar el patr¢nX
+B£squeda reiniciadaX
+Buscando...X
+No se encontr¢ ning£n car cter no imprimibleX
+Nombre de comando desconocidoX
+
+%s: comando no disponible en modalidad exX
+La cuenta no puede ser ceroX
+%s: mala especificaci¢n de l¡neaX
+Error interno de tabla de sintaxis (%s: %s)X
+Uso: %sX
+%s: buffer temporario no liberadoX
+Desplazamiento de marcador a antes de la l¡nea 1X
+Desplazamiento de marcador m s all  del final del archivoX
+@ con rango que corre cuando se cambia el archivo/la pantallaX
+Comando global/v que corre cuando se cambia el archivo/la pantallaX
+Comando Ex fracasado: comandos pendientes descartadosX
+Comando Ex fracasado: teclas mapeadas descartadasX
+La segunda direcci¢n es m s peque¤a que la primeraX
+No se suministra nombre de marcaX
+\\ no es seguido por / o ?X
+Referencia a un n£mero de l¡nea menor que 0X
+El comando %s es desconocidoX
+Desbordamiento de valor de direcci¢nX
+Subdesbordamiento de valor de direcci¢nX
+Combinaci¢n de direcci¢n ilegalX
+Direcci¢n ilegal: s¢lo %lu l¡neas en el archivoX
+Direcci¢n ilegal: el archivo est  vac¡oX
+El comando %s no permite una direcci¢n de 0X
+No hay abreviaturas para visualizarX
+Las abreviaturas deben terminar con un car cter de \"palabra\" X
+Las abreviaturas no pueden contener tabs o espaciosX
+Las abreviaturas no pueden mezclar caracteres palabra/no-palabra, salvo al finalX
+\"%s\" no es una abreviaturaX
+Comando Vi fracasado: teclas mapeadas descartadasX
+No hay m s archivos para editarX
+No hay archivos anteriores para editarX
+No hay archivos anteriores para rebobinarX
+No hay lista de archivos para visualizarX
+No hay un comando anterior para reemplazar a \"!\"X
+No hay nombre de archivo para sustituir por %%X
+No hay nombre de archivo para sustituir por #X
+Error: execl: %sX
+Error de E/S: %sX
+Archivo modificado desde la £ltima escritura completa; escribir o usar ! para alterarX
+No se puede encontrar la ubicaci¢n del directorio inicialX
+Nuevo directorio actual: %sX
+No hay buffers sueltos para visualizarX
+El comando %s no puede usarse como parte de un comando global o vX
+%s/%s: sin fuente: no le pertenece a usted o a ra¡zX
+%s/%s: sin fuente: no le pertenece a ustedX
+%s/%s: sin fuente: puede ser escrito por un usuario que no sea el propietarioX
+%s: sin fuente: no le pertenece a usted o a ra¡zX
+%s: sin fuente: no le pertenece a ustedX
+%s: sin fuente: puede ser escrito por un usuario que no sea el propietarioX
+No hay l¡neas siguientes para unirX
+No hay anotaciones de mapa de entradaX
+No hay anotaciones de mapa de comandoX
+El car cter %s no puede remapearseX
+\"%s\" no est  mapeado actualmenteX
+Marca de nombres debe ser un s¢lo car cterX
+%s existe, no est  escrito; usar ! para alterarX
+Nuevo archivo exrc: %sX
+La l¡nea de destino se encuentra dentro del rango de movimientoX
+El comando abierto requiere que se determine la opci¢n abiertaX
+El comando abierto no se ha implementado a£nX
+No es posible preservar este archivoX
+Archivo preservadoX
+%s: expandido a demasiados nombres de archivoX
+S¢lo pueden leerse los archivos regulares y los conductos nombradosX
+%s: traba de lectura no disponibleX
+Leyendo...X
+%s: %lu l¡neas, %lu caracteresX
+No hay pantallas de fondo para mostrarX
+El comando de script s¢lo est  disponible en modalidad viX
+No hay comando para ejecutarX
+opci¢n de ancho de desplazamiento en 0X
+Desbordamiento de cuentaX
+Subdesbordamiento de cuentaX
+Expresi¢n regular especificada; marcador r no tiene significadoX
+Los marcadores #, l y p no pueden combinarse con el marcador c en la modalidad viX
+No se encontr¢ coincidenciaX
+No se ingres¢ un identificador anteriorX
+Se encontraron menos de %s anotaciones en la pila de identificadores; usar :visualizar i[dentificadores]X
+No hay archivo %s en la pila de identificadores al que se pueda volver; usar :visualizar i[dentificadores]"
+Presionar Intro para continuar: X
+%s: no se encontr¢ el identificadorX
+%s: identificador corrompido en %sX
+%s: el n£mero de l¡nea del identificador es posterior al final del archivoX
+La pila de identificadores est  vac¡aX
+%s: patr¢n de b£squeda no encontradoX
+%d archivos m s para editarX
+El buffer %s est  vac¡oX
+¨Confirmar cambio? [n]X
+InterrumpidoX
+No hay buffer anterior para ejecutarX
+No hay expresi¢n regular anteriorX
+El comando %s requiere que se haya le¡do un archivoX
+Uso: %sX
+El comando visual requiere que se determine la opci¢n abiertaX
+
+Archivo vac¡oX
+No hay b£squeda F, f, T o t anteriorX
+%s no se encontr¢X
+No hay archivo anterior para editarX
+El cursor no est  en un n£meroX
+El n£mero resultante es demasiado grandeX
+ El n£mero resultante es demasiado peque¤oX
+No hay car cter coincidente en esta l¡neaX
+No se encontr¢ un car cter coincidenteX
+No hay caracteres para reemplazarX
+No hay otra pantalla a la que se pueda pasarX
+Caracteres despu‚s de cadena de b£squeda, desplazamiento de l¡nea y/o comando zX
+No hay patr¢n anterior de b£squedaX
+B£squeda vuelve a la posici¢n inicialX
+Se super¢ el l¡mite de expansi¢n de abreviatura: se descartaron caracteresX
+Car cter ilegal; mencionar para entrarX
+Ya se encuentra al principio de la inserci¢nX
+No hay m s caracteres para borrarX
+Movimiento m s all  del final del archivoX
+Movimiento m s all  del final de la l¡neaX
+No hay movimiento del cursorX
+Ya se encuentra al principio del archivoX
+Movimiento m s all  del principio del archivoX
+Ya se encuentra en la primera columnaX
+Los buffers deben especificarse antes del comandoX
+Ya se encuentra al final del archivoX
+Ya se encuentra al final de la l¡neaX
+%s no es un comando viX
+Uso: %sX
+No hay caracteres para borrarX
+El comando Q requiere la interfase de terminal exX
+No hay comando para repetirX
+El archivo est  vac¡oX
+%s no puede usarse como comando de movimientoX
+Ya se encuentra en modalidad de comandoX
+El cursor no se encuentra en una palabraX
+
+El valor de opci¢n de Windows es demasiado grande, el m x. es %uX
+A¤adirX
+CambiarX
+ComandoX
+InsertarX
+ReemplazarX
+El movimiento va m s all  del final de la pantallaX
+El movimiento va m s all  del principio de la pantallaX
+La pantalla debe tener m s de %d l¡neas para dividirseX
+No hay pantallas de fondoX
+No hay pantalla de fondo editando un archivo denominado %sX
+No se puede poner fondo a la £nica pantalla que se visualizaX
+La pantalla s¢lo puede reducirse a %d hilerasX
+La pantalla no puede reducirseX
+La pantalla no puede aumentarseX
+
+Esta pantalla no puede suspenderseX
+Interrumpido: teclas mapeadas descartadasX
+vi: buffer temporario no liberadoX
+Esta terminal no tiene tecla %sX
+S¢lo un buffer puede especificarseX
+N£mero mayor que %luX
+InterrumpidoX
+No se puede crear archivo temporarioX
+Advertencia: %s no es un archivo regularX
+%s ya se encuentra trabado, la sesi¢n es de lectura solamenteX
+%s: eliminarX
+%s: cerrarX
+%s: eliminarX
+%s: eliminarX
+Archivo de lectura solamente, no escrito; usar ! para alterarX
+ Archivo de lectura solamente, no escritoX
+%s existe, no escrito; usar ! para alterarX
+%s existe, no escritoX
+Archivo parcial, no escrito; usar ! para alterarX
+Archivo parcial, no escritoX
+%s: archivo modificado m s recientemente que esta copia; usar ! para alterarX
+%s: archivo modificado m s recientemente que esta copiaX
+%s: la traba de escritura no estaba disponibleX
+Escribiendo...X
+%s: ADVERTENCIA: ARCHIVO TRUNCADOX
+Ya se encuentra en el primer identificador de este grupoX
+%s: nuevo archivo: %lu l¡neas, %lu caracteresX
+%s: %lu l¡neas, %lu caracteresX
+%s expandido a demasiados nombres de archivosX
+%s: no es un archivo regularX
+%s: no le perteneceX
+%s: accesible por un usuario que no sea el propietarioX
+Archivo modificado desde la £ltima escritura completa; escribir o usar ! para alterarX
+Archivo modificado desde la £ltima escritura completa; escribir o usar :editar! para alterarX
+Archivo modificado desde la £ltima escritura completa; escribir o usar ! para alterarX
+El archivo es temporario; al salir se descartar n las modificacionesX
+Archivo de lectura solamente, las modificaciones no se autoescribenX
+Se reinici¢ el logX
+confirmar? [snq]X
+Presionar cualquier tecla para continuar: X
+Presionar cualquier tecla para continuar [: para ingresar m s comandos ex]: X
+Presionar cualquier tecla para continuar [q para salir]: X
+Esta forma de %s requiere la interfase terminal exX
+Ingresando en la modalidad de entrada ex.X
+Comando fracasado, no hay archivo le¡do aun.X
+ cont?X
+Evento inesperado de car cterX
+Evento inesperado de final de archivoX
+No hay coincidencias para consultaX
+Evento inesperado de interrupci¢nX
+Evento inesperado de salidaX
+Evento inesperado de repinturaX
+Ya se encuentra en el £ltimo identificador de este grupoX
+El comando %s requiere la interfase terminal exX
+Esta forma de %s no se encuentra soportada cuando se determina la opci¢n de edici¢n seguraX
+Evento inesperado de cadenaX
+Evento inesperado de tiempo excedidoX
+Evento inesperado de escrituraX
+
+Las expansiones de shell no se encuentran soportadas cuando se determina la opci¢n de edici¢n seguraX
+El comando %s no se encuentra soportado cuando se determina la opci¢n de edici¢n seguraX
+determinar: la opci¢n %s puede no estar desconectadaX
+El monitor es demasiado peque¤o.X
+agregadoX
+cambiadoX
+borradoX
+unidoX
+movidoX
+desplazadoX
+arrancadoX
+l¡neaX
+l¡neasX
+Vi no se carg¢ con un int‚rprete TclX
+Archivo modificado desde la £ltima escritura.X
+Expansi¢n de shell fracasadaX
+No hay opci¢n de edici¢n %s especificadaX
+Vi no se carg¢ con un int‚rprete PerlX
+No hay comando ex para ejecutarX
+Ingresar <CR> para ejecutar un comando, :q para salirX
+Usar \"cscope ayuda\" para obtener ayudaX
+No hay conexiones cscope corriendoX
+%s: tipo de b£squeda desconocido: usar uno de %sX
+%d: no existe esta sesi¢n cscopeX
+determinar: la opci¢n %s no puede conectarse nuncaX
+determinar: la opci¢n %s no puede determinarse nunca en 0X
+%s: a¤adido: %lu l¡neas, %lu caracteresX
+Evento inesperado de modificaci¢n de tama¤oX
+%d archivos para editarX
diff --git a/contrib/nvi/catalog/spanish.base b/contrib/nvi/catalog/spanish.base
new file mode 100644
index 0000000..270199e
--- /dev/null
+++ b/contrib/nvi/catalog/spanish.base
@@ -0,0 +1,309 @@
+002 "Desbordamiento de longitud de l¡nea"
+003 "no se puede borrar la l¡nea %lu"
+004 "no se puede a¤adir la l¡nea %lu"
+005 "no se puede insertar en la l¡nea %lu"
+006 "no se puede guardar la l¡nea %lu"
+007 "no se puede obtener la £ltima l¡nea"
+008 "Error: no se puede recuperar la l¡nea %lu"
+009 "Archivo de log"
+010 "No se realiza log, no se puede deshacer"
+011 "No hay cambios para deshacer"
+012 "No se realiza log, no se puede deshacer"
+013 "No se realiza log, no se puede remontar hacia adelante"
+014 "No hay cambios para rehacer"
+015 "%s/%d: error de log"
+016 "La entrada y salida est ndar de Vi debe ser una terminal"
+017 "Marcar %s: no determinado"
+018 "Marcar %s: se borr¢ la l¡nea"
+019 "Marcar %s: la posici¢n del cursor ya no existe"
+020 "Error: "
+021 "nuevo archivo"
+022 "nombre cambiado"
+023 "modificado"
+024 "no modificado"
+025 "DESTRABADO"
+026 "lectura solamente"
+027 "l¡nea %lu de %lu [%ld%%]"
+028 "archivo vac¡o"
+029 "l¡nea %lu"
+030 "El archivo %s no es un cat logo de mensajes"
+031 "No se puede determinar la opci¢n por omisi¢n %s"
+032 "Uso: %s"
+033 "determinar: no hay opci¢n %s: 'determinar todo' establece todos los valores de opci¢n"
+034 "determinar: [no] hay opci¢n %s no tiene valor"
+035 "determinar: opci¢n %s no es booleano"
+036 "determinar: opci¢n %s: %s"
+037 "determinar: opci¢n %s: %s: desbordamiento de valores"
+038 "determinar: opci¢n %s: %s es un n£mero ilegal"
+039 "determinar: opci¢n %s no es booleano"
+040 "Las columnas en pantalla son demasiado peque¤as, menos de %d"
+041 "Las columnas en pantalla son demasiado grandes, m s de %d"
+042 "Las l¡neas en pantalla son demasiado peque¤as, menos de %d"
+043 "Las l¡neas en pantalla son demasiado grandes, m s de %d"
+044 "La opci¢n lisp no est  implementada"
+045 "mensajes no desconectados: %s"
+046 "mensajes no conectados: %s"
+048 "La opci¢n de p rrafo debe estar en dos grupos de caracteres"
+049 "La opci¢n de secci¢n debe estar en dos grupos de caracteres"
+053 "El buffer por omisi¢n est  vac¡o"
+054 "El buffer %s est  vac¡o"
+055 "Los archivos con nuevas l¡neas en el nombre son irrecuperables"
+056 "Las modificaciones no pueden recuperarse si la sesi¢n falla"
+057 "Copiando archivo para recuperaci¢n..."
+058 "Preservaci¢n fracasada: %s"
+059 "Las modificaciones no pueden recuperarse si la sesi¢n falla"
+060 "Archivo de respaldo fracasado: %s"
+061 "Copiando archivo para recuperaci¢n..."
+062 "Informaci¢n sobre identificaci¢n del usuario %u no encontrada"
+063 "No se puede trabar archivo de recuperaci¢n"
+064 "Desbordamiento de buffer de archivo de recuperaci¢n"
+065 "Archivo de recuperaci¢n"
+066 "%s: archivo de recuperaci¢n defectuoso"
+067 "%s: archivo de recuperaci¢n defectuoso"
+068 "No hay archivos denominados %s, que usted pueda leer, para recuperar"
+069 "Existen versiones m s antiguas de este archivo que usted puede recuperar"
+070 "Existen otros archivos que usted puede recuperar"
+071 "no env¡a email: %s"
+072 "Archivo vac¡o; no hay nada para buscar"
+073 "Se alcanz¢ el final del archivo sin encontrar el patr¢n"
+074 "No hay patr¢n anterior de b£squeda"
+075 "No se encontr¢ el patr¢n"
+076 " Se alcanz¢ el principio del archivo sin encontrar el patr¢n"
+077 "B£squeda reiniciada"
+078 "Buscando..."
+079 "No se encontr¢ ning£n car cter no imprimible"
+080 "Nombre de comando desconocido"
+082 "%s: comando no disponible en modalidad ex"
+083 "La cuenta no puede ser cero"
+084 "%s: mala especificaci¢n de l¡nea"
+085 "Error interno de tabla de sintaxis (%s: %s)"
+086 "Uso: %s"
+087 "%s: buffer temporario no liberado"
+088 "Desplazamiento de marcador a antes de la l¡nea 1"
+089 "Desplazamiento de marcador m s all  del final del archivo"
+090 "@ con rango que corre cuando se cambia el archivo/la pantalla"
+091 "Comando global/v que corre cuando se cambia el archivo/la pantalla"
+092 "Comando Ex fracasado: comandos pendientes descartados"
+093 "Comando Ex fracasado: teclas mapeadas descartadas"
+094 "La segunda direcci¢n es m s peque¤a que la primera"
+095 "No se suministra nombre de marca"
+096 "\\ no es seguido por / o ?"
+097 "Referencia a un n£mero de l¡nea menor que 0"
+098 "El comando %s es desconocido"
+099 "Desbordamiento de valor de direcci¢n"
+100 "Subdesbordamiento de valor de direcci¢n"
+101 "Combinaci¢n de direcci¢n ilegal"
+102 "Direcci¢n ilegal: s¢lo %lu l¡neas en el archivo"
+103 "Direcci¢n ilegal: el archivo est  vac¡o"
+104 "El comando %s no permite una direcci¢n de 0"
+105 "No hay abreviaturas para visualizar"
+106 "Las abreviaturas deben terminar con un car cter de \"palabra\" "
+107 "Las abreviaturas no pueden contener tabs o espacios"
+108 "Las abreviaturas no pueden mezclar caracteres palabra/no-palabra, salvo al final"
+109 "\"%s\" no es una abreviatura"
+110 "Comando Vi fracasado: teclas mapeadas descartadas"
+111 "No hay m s archivos para editar"
+112 "No hay archivos anteriores para editar"
+113 "No hay archivos anteriores para rebobinar"
+114 "No hay lista de archivos para visualizar"
+115 "No hay un comando anterior para reemplazar a \"!\""
+116 "No hay nombre de archivo para sustituir por %%"
+117 "No hay nombre de archivo para sustituir por #"
+118 "Error: execl: %s"
+119 "Error de E/S: %s"
+120 "Archivo modificado desde la £ltima escritura completa; escribir o usar ! para alterar"
+121 "No se puede encontrar la ubicaci¢n del directorio inicial"
+122 "Nuevo directorio actual: %s"
+123 "No hay buffers sueltos para visualizar"
+124 "El comando %s no puede usarse como parte de un comando global o v"
+125 "%s/%s: sin fuente: no le pertenece a usted o a ra¡z"
+126 "%s/%s: sin fuente: no le pertenece a usted"
+127 "%s/%s: sin fuente: puede ser escrito por un usuario que no sea el propietario"
+128 "%s: sin fuente: no le pertenece a usted o a ra¡z"
+129 "%s: sin fuente: no le pertenece a usted"
+130 "%s: sin fuente: puede ser escrito por un usuario que no sea el propietario"
+131 "No hay l¡neas siguientes para unir"
+132 "No hay anotaciones de mapa de entrada"
+133 "No hay anotaciones de mapa de comando"
+134 "El car cter %s no puede remapearse"
+135 "\"%s\" no est  mapeado actualmente"
+136 "Marca de nombres debe ser un s¢lo car cter"
+137 "%s existe, no est  escrito; usar ! para alterar"
+138 "Nuevo archivo exrc: %s"
+139 "La l¡nea de destino se encuentra dentro del rango de movimiento"
+140 "El comando abierto requiere que se determine la opci¢n abierta"
+141 "El comando abierto no se ha implementado a£n"
+142 "No es posible preservar este archivo"
+143 "Archivo preservado"
+144 "%s: expandido a demasiados nombres de archivo"
+145 "S¢lo pueden leerse los archivos regulares y los conductos nombrados"
+146 "%s: traba de lectura no disponible"
+147 "Leyendo..."
+148 "%s: %lu l¡neas, %lu caracteres"
+149 "No hay pantallas de fondo para mostrar"
+150 "El comando de script s¢lo est  disponible en modalidad vi"
+151 "No hay comando para ejecutar"
+152 "opci¢n de ancho de desplazamiento en 0"
+153 "Desbordamiento de cuenta"
+154 "Subdesbordamiento de cuenta"
+155 "Expresi¢n regular especificada; marcador r no tiene significado"
+156 "Los marcadores #, l y p no pueden combinarse con el marcador c en la modalidad vi"
+157 "No se encontr¢ coincidencia"
+158 "No se ingres¢ un identificador anterior"
+159 "Se encontraron menos de %s anotaciones en la pila de identificadores; usar :visualizar i[dentificadores]"
+160 "No hay archivo %s en la pila de identificadores al que se pueda volver; usar :visualizar i[dentificadores]"
+161 "Presionar Intro para continuar: "
+162 "%s: no se encontr¢ el identificador"
+163 "%s: identificador corrompido en %s"
+164 "%s: el n£mero de l¡nea del identificador es posterior al final del archivo"
+165 "La pila de identificadores est  vac¡a"
+166 "%s: patr¢n de b£squeda no encontrado"
+167 "%d archivos m s para editar"
+168 "El buffer %s est  vac¡o"
+169 "¨Confirmar cambio? [n]"
+170 "Interrumpido"
+171 "No hay buffer anterior para ejecutar"
+172 "No hay expresi¢n regular anterior"
+173 "El comando %s requiere que se haya le¡do un archivo"
+174 "Uso: %s"
+175 "El comando visual requiere que se determine la opci¢n abierta"
+177 "Archivo vac¡o"
+178 "No hay b£squeda F, f, T o t anterior"
+179 "%s no se encontr¢"
+180 "No hay archivo anterior para editar"
+181 "El cursor no est  en un n£mero"
+182 "El n£mero resultante es demasiado grande"
+183 " El n£mero resultante es demasiado peque¤o"
+184 "No hay car cter coincidente en esta l¡nea"
+185 "No se encontr¢ un car cter coincidente"
+186 "No hay caracteres para reemplazar"
+187 "No hay otra pantalla a la que se pueda pasar"
+188 "Caracteres despu‚s de cadena de b£squeda, desplazamiento de l¡nea y/o comando z"
+189 "No hay patr¢n anterior de b£squeda"
+190 "B£squeda vuelve a la posici¢n inicial"
+191 "Se super¢ el l¡mite de expansi¢n de abreviatura: se descartaron caracteres"
+192 "Car cter ilegal; mencionar para entrar"
+193 "Ya se encuentra al principio de la inserci¢n"
+194 "No hay m s caracteres para borrar"
+195 "Movimiento m s all  del final del archivo"
+196 "Movimiento m s all  del final de la l¡nea"
+197 "No hay movimiento del cursor"
+198 "Ya se encuentra al principio del archivo"
+199 "Movimiento m s all  del principio del archivo"
+200 "Ya se encuentra en la primera columna"
+201 "Los buffers deben especificarse antes del comando"
+202 "Ya se encuentra al final del archivo"
+203 "Ya se encuentra al final de la l¡nea"
+204 "%s no es un comando vi"
+205 "Uso: %s"
+206 "No hay caracteres para borrar"
+207 "El comando Q requiere la interfase de terminal ex"
+208 "No hay comando para repetir"
+209 "El archivo est  vac¡o"
+209 "El archivo est  vac¡o"
+210 "%s no puede usarse como comando de movimiento"
+211 "Ya se encuentra en modalidad de comando"
+212 "El cursor no se encuentra en una palabra"
+214 "El valor de opci¢n de Windows es demasiado grande, el m x. es %u"
+215 "A¤adir"
+216 "Cambiar"
+217 "Comando"
+218 "Insertar"
+219 "Reemplazar"
+220 "El movimiento va m s all  del final de la pantalla"
+221 "El movimiento va m s all  del principio de la pantalla"
+222 "La pantalla debe tener m s de %d l¡neas para dividirse"
+223 "No hay pantallas de fondo"
+224 "No hay pantalla de fondo editando un archivo denominado %s"
+225 "No se puede poner fondo a la £nica pantalla que se visualiza"
+226 "La pantalla s¢lo puede reducirse a %d hileras"
+227 "La pantalla no puede reducirse"
+228 "La pantalla no puede aumentarse"
+230 "Esta pantalla no puede suspenderse"
+231 "Interrumpido: teclas mapeadas descartadas"
+232 "vi: buffer temporario no liberado"
+233 "Esta terminal no tiene tecla %s"
+234 "S¢lo un buffer puede especificarse"
+235 "N£mero mayor que %lu"
+236 "Interrumpido"
+237 "No se puede crear archivo temporario"
+238 "Advertencia: %s no es un archivo regular"
+239 "%s ya se encuentra trabado, la sesi¢n es de lectura solamente"
+240 "%s: eliminar"
+241 "%s: cerrar"
+242 "%s: eliminar"
+243 "%s: eliminar"
+244 "Archivo de lectura solamente, no escrito; usar ! para alterar"
+245 " Archivo de lectura solamente, no escrito"
+246 "%s existe, no escrito; usar ! para alterar"
+247 "%s existe, no escrito"
+248 "Archivo parcial, no escrito; usar ! para alterar"
+249 "Archivo parcial, no escrito"
+250 "%s: archivo modificado m s recientemente que esta copia; usar ! para alterar"
+251 "%s: archivo modificado m s recientemente que esta copia"
+252 "%s: la traba de escritura no estaba disponible"
+253 "Escribiendo..."
+254 "%s: ADVERTENCIA: ARCHIVO TRUNCADO"
+255 "Ya se encuentra en el primer identificador de este grupo"
+256 "%s: nuevo archivo: %lu l¡neas, %lu caracteres"
+257 "%s: %lu l¡neas, %lu caracteres"
+258 "%s expandido a demasiados nombres de archivos"
+259 "%s: no es un archivo regular"
+260 "%s: no le pertenece"
+261 "%s: accesible por un usuario que no sea el propietario"
+262 "Archivo modificado desde la £ltima escritura completa; escribir o usar ! para alterar"
+263 "Archivo modificado desde la £ltima escritura completa; escribir o usar :editar! para alterar"
+264 "Archivo modificado desde la £ltima escritura completa; escribir o usar ! para alterar"
+265 "El archivo es temporario; al salir se descartar n las modificaciones"
+266 "Archivo de lectura solamente, las modificaciones no se autoescriben"
+267 "Se reinici¢ el log"
+268 "confirmar? [snq]"
+269 "Presionar cualquier tecla para continuar: "
+270 "Presionar cualquier tecla para continuar [: para ingresar m s comandos ex]: "
+271 "Presionar cualquier tecla para continuar [q para salir]: "
+272 "Esta forma de %s requiere la interfase terminal ex"
+273 "Ingresando en la modalidad de entrada ex."
+274 "Comando fracasado, no hay archivo le¡do aun."
+275 " cont?"
+276 "Evento inesperado de car cter"
+277 "Evento inesperado de final de archivo"
+278 "No hay coincidencias para consulta"
+279 "Evento inesperado de interrupci¢n"
+280 "Evento inesperado de salida"
+281 "Evento inesperado de repintura"
+282 "Ya se encuentra en el £ltimo identificador de este grupo"
+283 "El comando %s requiere la interfase terminal ex"
+284 "Esta forma de %s no se encuentra soportada cuando se determina la opci¢n de edici¢n segura"
+285 "Evento inesperado de cadena"
+286 "Evento inesperado de tiempo excedido"
+287 "Evento inesperado de escritura"
+289 "Las expansiones de shell no se encuentran soportadas cuando se determina la opci¢n de edici¢n segura"
+290 "El comando %s no se encuentra soportado cuando se determina la opci¢n de edici¢n segura"
+291 "determinar: la opci¢n %s puede no estar desconectada"
+292 "El monitor es demasiado peque¤o."
+293 "agregado"
+294 "cambiado"
+295 "borrado"
+296 "unido"
+297 "movido"
+298 "desplazado"
+299 "arrancado"
+300 "l¡nea"
+301 "l¡neas"
+302 "Vi no se carg¢ con un int‚rprete Tcl"
+303 "Archivo modificado desde la £ltima escritura."
+304 "Expansi¢n de shell fracasada"
+304 "Expansi¢n de shell fracasada"
+305 "No hay opci¢n de edici¢n %s especificada"
+306 "Vi no se carg¢ con un int‚rprete Perl"
+307 "No hay comando ex para ejecutar"
+308 "Ingresar <CR> para ejecutar un comando, :q para salir"
+309 "Usar \"cscope ayuda\" para obtener ayuda"
+310 "No hay conexiones cscope corriendo"
+311 "%s: tipo de b£squeda desconocido: usar uno de %s"
+312 "%d: no existe esta sesi¢n cscope"
+313 "determinar: la opci¢n %s no puede conectarse nunca"
+314 "determinar: la opci¢n %s no puede determinarse nunca en 0"
+315 "%s: a¤adido: %lu l¡neas, %lu caracteres"
+316 "Evento inesperado de modificaci¢n de tama¤o"
+317 "%d archivos para editar"
diff --git a/contrib/nvi/catalog/spanish.check b/contrib/nvi/catalog/spanish.check
new file mode 100644
index 0000000..c04785e
--- /dev/null
+++ b/contrib/nvi/catalog/spanish.check
@@ -0,0 +1,35 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+229
+288
+=========================
+MISSING ERROR MESSAGES (Please add!):
+=========================
+Extra error messages (just delete them):
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+ 2 209 "El archivo est  vac¡o"
+ 2 304 "Expansi¢n de shell fracasada"
+=========================
+Duplicate messages, just message (this is okay):
+ 2 %s: %lu l¡neas, %lu caracteresX
+ 2 %s: archivo de recuperaci¢n defectuosoX
+ 2 Copiando archivo para recuperaci¢n...X
+ 2 El buffer %s est  vac¡oX
+ 2 InterrumpidoX
+ 2 Las modificaciones no pueden recuperarse si la sesi¢n fallaX
+ 2 No hay patr¢n anterior de b£squedaX
+ 2 No se realiza log, no se puede deshacerX
+ 2 determinar: opci¢n %s no es booleanoX
+ 3 %s: eliminarX
+ 3 Archivo modificado desde la £ltima escritura completa; escribir o usar ! para alterarX
+ 4 Uso: %sX
+=========================
diff --git a/contrib/nvi/catalog/spell.ok b/contrib/nvi/catalog/spell.ok
new file mode 100644
index 0000000..00be471
--- /dev/null
+++ b/contrib/nvi/catalog/spell.ok
@@ -0,0 +1,19 @@
+ARGMAX
+LC
+NL
+XXXX
+arg1
+arg2
+chys
+english
+english.base
+german.base
+langauge
+msg
+msg.c
+msgcat
+msgq
+nvi
+nvi's
+pathname
+sp
diff --git a/contrib/nvi/catalog/swedish b/contrib/nvi/catalog/swedish
new file mode 100644
index 0000000..044b354
--- /dev/null
+++ b/contrib/nvi/catalog/swedish
@@ -0,0 +1,317 @@
+VI_MESSAGE_CATALOG
+För långa raderX
+kan inte ta bort rad %luX
+kan inte lägga till på rad %luX
+kan inte sätta in på rad %luX
+kan inte lagra rad %luX
+kan inte hämta sista radenX
+Fel: kan inte hämta rad %luX
+LoggningsfilX
+Loggning utförs inte, ångra är inte möjligtX
+Inga ändringar att ångraX
+Loggning utförs inte, ångra är inte möjligtX
+Loggning utförs inte, ångra ångra är inte möjligtX
+Inga ändringar att återgöraX
+%s/%d: fel vid loggningX
+Vi:s standard in och ut måste gå till en terminalX
+Markering %s: inte sattX
+Markering %s: raden har tagits bortX
+Markering %s: markörpositionen finns inte längreX
+Fel: X
+ny filX
+namnet ändradesX
+ändradX
+oförändradX
+OLÅSTX
+inte skrivbarX
+rad %lu av %lu [%ld%%]X
+tom filX
+rad %luX
+Filen %s är ingen meddelandekatalogX
+Kan inte sätta standardvärde för %s flagganX
+Användning: %sX
+set: %s är en okänd flagga: "set all" visar alla flaggorX
+set: [no]%s flaggan kan inte ges ett värdeX
+set: %s flaggan är inte boleanskX
+set: %s flaggan: %sX
+set: %s flaggan: %s: för stort värdeX
+set: %s flaggan: %s är ett otillåtet talX
+set: %s flaggan är inte boleanskX
+Fönsterkolumnerna är för få, mindre än %dX
+Fönsterkolumnerna är för många, fler än %dX
+Fönsterraderna är för få, mindre än %dX
+Fönsterraderna är för många, fler än %dX
+Lisp flaggan är inte implementeradX
+meddelanden är inte avslagna: %sX
+meddelanden är inte påslagna: %sX
+
+Paragraph flaggan måste ges i teckengrupper om tvåX
+Section flaggan måste ges i teckengrupper om tvåX
+
+
+
+Standardbufferten är tomX
+Buffer %s är tomX
+Filer med radmatning i namnet kan inte återskapasX
+Ändringar kan inte återskapas om programmet krascharX
+Kopierar filen för återskapning...X
+Säkerhetskopiering misslyckades: %sX
+Ändringar kan inte återskapas om programmet krascharX
+Misslyckades att säkerhetskopiera filen: %sX
+Kopierar filen för återskapning...X
+Kan inte hitta information om användaridentitet %uX
+Kan inte låsa återskapningsfilenX
+Återskapningsfilens buffer överskrivenX
+ÅterskapningsfilX
+%s: Återskapningsfilen är korruptX
+%s: Återskapningsfilen är korruptX
+Det finns ingen fil %s, läsbar av dig, att återskapaX
+Det finns äldre versioner av denna fil som du kan återskapaX
+Det finns andra filer du kan återskapaX
+skickar inte email: %sX
+Filen är tom; inget att söka iX
+Kom till slutet på filen utan att hitta söksträngenX
+Ingen tidigare söksträngX
+Hittar inte söksträngenX
+Kom till början av filen utan att hitta söksträngenX
+Sökningen slog runtX
+Söker...X
+Inga icke skrivbara tecken funnaX
+Okänt kommandonamnX
+
+%s: kommandot är inte tillgängligt i "ex" lägeX
+Talet får inte vara nollX
+%s: Ogiltig radspecifikationX
+Fel i intern syntaxtabell (%s: %s)X
+Användning: %sX
+%s: temporärbuffert inte frisläpptX
+Offset är före rad 1X
+Offset är efter slutet på filenX
+@ med intervall exekverades när filen/fönstret ändradesX
+Global/v kommando exekverades när filen/fönstret ändradesX
+Ex kommando misslyckades: efterföljande kommandon ignoreradeX
+Ex kommando misslyckades: omdefinierade tangenter ignoreradeX
+Den andra adressen är mindre än den förstaX
+Inget namn på markering givetX
+\\ följs inte av / eller ?X
+Referens till ett radnummer mindre än 0X
+%s kommandot är inte käntX
+Värdet på adressen är för stortX
+Värdet på adressen är för litetX
+Otillåten adresskombinationX
+Otillåten adress: bara %lu rader finns i filenX
+Otillåten adress: filen är tomX
+%s kommandot tillåter inte en adress som är 0X
+Inga förkortningar att visaX
+Förkortningar måste sluta med ett "ord" teckenX
+Förkortningar kan inte innehålla mellanslag eller tabX
+Förkortningar kan inte blanda "ord"/"icke ord" tecken, utom i slutetX
+"%s" är ingen förkortningX
+Vi kommando misslyckades: omdefinierade tangenter ignoreradeX
+Inga fler filer att editeraX
+Inga tidigare filer att editeraX
+Inga tidigare filer att spela tillbakaX
+Ingen fillista att visaX
+Inget tidigare kommando att ersätta "!" medX
+Inget filnamn att ersätta %% medX
+Inget filnamn att ersätta # medX
+Fel: execl: %sX
+I/O fel: %sX
+Filen ändrad efter sista skrivning; spara eller använd !X
+Kan inte hitta hemkatalogX
+Ny nuvarande katalog: %sX
+Inga "cut buffers" att visaX
+%s kommandot kan inte används som del i ett "global" eller v kommandoX
+%s/%s: inte läst: varken du eller root är ägareX
+%s/%s: inte läst: du är inte ägareX
+%s/%s: inte läst: skrivbar av annan än ägarenX
+%s: inte läst: varken du eller root är ägareX
+%s: inte läst: du är inte ägareX
+%s: inte läst: skrivbar av annan än ägarenX
+Ingen nästa rad att sätta ihop medX
+Det finns inget i inmatningsmappningenX
+Det finns inget i kommandomappningenX
+%s tecknet kan inte mappas omX
+"%s" är inte ommappat just nuX
+Namn på markeringar måste vara ett tecken långaX
+%s finns, inget sparat; använd ! för att sparaX
+Ny exrc fil: %sX
+Målraden ligger inne i området som ska flyttasX
+Open kommandot kräver att open flaggan är sattX
+Open kommandot är inte implementerat ännuX
+Säkerhetskopiering av filen är inte möjligtX
+Filen säkerhetskopieradX
+%s expanderade till för många filnamnX
+Endast vanliga filer och namngivna rör kan läsasX
+%s: läslåset är otillgängligtX
+Läser...X
+%s: %lu rader, %lu teckenX
+Inga bakgrundsfönster att visaX
+Script kommandot finns bara i "vi" lägeX
+Inget kommando att exekveraX
+shiftwidth flaggan satt till 0X
+Talet har för stort värdeX
+Talet har för litet värdeX
+Reguljärt uttryck är givet; r flaggan är meningslösX
+#, l och p flaggorna kan inte kombineras med c flaggan i "vi" lägeX
+Ingen matchande text funnenX
+Inget tidigare märke har givitsX
+Det är färre än %s märken i stacken; använd :display t[ags]X
+Det finns ingen fil %s i märkesstacken; använd :display t[ags]X
+Tryck Enter för att fortsätta: X
+%s: märke inte funnetX
+%s: korrupt märke i %sX
+%s: märkets radnummer är bortom filslutetX
+Märkesstacken är tomX
+%s: söksträngen inte funnenX
+%d filer till att editeraX
+Buffert %s är tomX
+Bekräfta ändring? [n]X
+AvbrutenX
+Ingen tidigare buffert att exekveraX
+Inget tidigare reguljärt uttryckX
+%s kommandot kräver att en fil redan lästs inX
+Användning: %sX
+Visual kommandot kräver att open flaggan är sattX
+
+Tom filX
+Ingen tidigare F, f, T eller t sökningX
+%s inte funnenX
+Ingen tidigare fil att editeraX
+Markören är inte i ett talX
+Det resulterande talet är för stortX
+Det resulterande talet är för litetX
+Inget matchande tecken på denna radX
+Matchande tecken inte funnetX
+Det finns inga tecken att ersättaX
+Det finns inget fönster att byta tillX
+Tecken efter söksträng, radoffset och/eller z kommandotX
+Ingen tidigare söksträngX
+Sökningen slog runt till ursprungliga positionenX
+Förkortning överskred expanderingsgränsen: tecken har tagits bortX
+Ogiltigt tecken; använd "quote" för att sätta inX
+Redan i början på insättningenX
+Inga fler tecken att ta bortX
+Försök att gå bortom slutet på filenX
+Försök att gå bortom slutet på radenX
+Ingen förflyttning gjordX
+Redan i början på filenX
+Försök att gå före början på filenX
+Redan i första kolumnenX
+Buffertar måste anges före kommandotX
+Redan i slutet av filenX
+Redan på slutet av radenX
+%s är inte ett "vi" kommandoX
+Användning: %sX
+Inga tecken att ta bortX
+Q kommandot kräver "ex" i terminallägeX
+Inget kommando att repeteraX
+Filen är tomX
+%s kan inte användas som ett förflyttningskommandoX
+Redan i kommando lägeX
+Markören är inte i ett ordX
+
+Windows flaggans värde är för stor, största värde är %uX
+Lägg tillX
+ÄndraX
+KommandoX
+Sätt inX
+ErsättX
+Förflyttning bortom fönsterslutX
+Förflyttning till före fönstrets börjanX
+Fönstret måste vara större än %d rader för delningX
+Det finns inga fönster i bakgrundenX
+Det finns inget fönster i bakgrunden som editerar filen %sX
+Du får inte sätta ditt enda synliga fönster i bakgrundenX
+Fönstret kan bara krympa till %d raderX
+Fönstret kan inte krympaX
+Fönstret kan inte växaX
+
+Detta fönster kan inte pausasX
+Avbrutet: omdefinierade tangenter ignoreradeX
+vi: temporärbuffertar inte frisläpptaX
+Denna terminal har ingen %s tangentX
+Endast en buffert kan angesX
+Talet är större än %luX
+AvbrutetX
+Kan inte skapa temporär filX
+Warning: %s är inte en normal filX
+%s är redan låst, detta blir en icke skrivbar sessionX
+%s: ta bortX
+%s: stängX
+%s: ta bortX
+%s: ta bortX
+Ej skrivbar fil, filen inte sparad; använd ! för att skriva överX
+Ej skrivbar fil, filen inte sparadX
+%s finns, ej sparad; använd ! för att utföra operationenX
+%s finns, filen inte sparadX
+Ofullständig fil, filen inte sparad, använd ! för att skriva överX
+Ofullständig fil, filen inte sparadX
+%s: filen ändrad efter denna kopia togs; använd ! för att utföra operationenX
+%s: filen ändrad efter denna kopia togsX
+%s: skrivlåset är otillgängligtX
+Skriver...X
+%s: VARNING: FILEN TRUNKERADX
+Redan vid första märket i denna gruppX
+%s: ny fil: %lu rader, %lu teckenX
+%s: %lu rader, %lu teckenX
+%s expanderade till för många filnamnX
+%s är inte en normal filX
+%s ägs inte av digX
+%s är åtkomstbar av andra än ägarenX
+Filen har ändrats efter den sparats; spara eller använd !X
+Filen har ändrats efter den sparats; spara eller använd :edit!X
+Filen har ändrats efter den sparats; spara eller använd !X
+Filen är temporär; exit kastar bort ändringarnaX
+Ej skrivbar fil, ändringar har inte automatsparatsX
+Loggningen startar omX
+bekräfta? [ynq]X
+Tryck på en tangent för att fortsätta: X
+Tryck på en tangent för att fortsätta [: för att ge fler kommandon]: X
+Tryck på en tangent för att fortsätta [q för att avsluta]: X
+Den formen av %s kräver "ex" i terminallägeX
+Går till "ex" inmatningsläge.X
+Kommandot misslyckades, ingen fil inläst ännu.X
+ forts?X
+Oväntad teckenhändelseX
+Oväntad filslutshändelseX
+Sökningen hittade ingentingX
+Oväntad avbrottshändelseX
+Oväntad avslutningshändelseX
+Oväntad omritningshändelseX
+Redan vid sista märket i denna gruppX
+%s kommandot kräver "ex" i terminallägeX
+Den formen av %s är inte tillgänglig när secure edit flaggan är sattX
+Oväntad stränghändelseX
+Oväntad tidshändelseX
+Oväntad skrivhändelseX
+
+Skalexpansion är inte tillgänglig när secure edit flaggan är sattX
+%s kommandot är inte tillgänglig när secure edit flaggan är sattX
+set: %s kan inte slås avX
+Fönstret för litet.X
+tillagdaX
+ändradeX
+borttagnaX
+ihopsattaX
+flyttadeX
+flyttadeX
+inklistradeX
+radX
+raderX
+Vi har inte länkats med en Tcl tolkX
+Filen har ändrats efter den sparats.X
+Skalexpansion misslyckadesX
+Ingen %s edit flagga givenX
+Vi har inte länkats med en Perl tolkX
+Inga "ex" kommandon att exekveraX
+Tryck <CR> för att exekvera kommando, :q för att avslutaX
+Gör "cscope help" för hjälpX
+Inga cscope kopplingar körsX
+%s: okänd söktyp: använd en av %sX
+%d: ingen sådan cscope sessionX
+set: %s flaggan får aldrig slås påX
+set: %s flaggan får aldrig sättas till 0X
+%s: tillagt: %lu rader, %lu teckenX
+Oväntad storleksändringX
+%d filer att editeraX
diff --git a/contrib/nvi/catalog/swedish.base b/contrib/nvi/catalog/swedish.base
new file mode 100644
index 0000000..43bf776
--- /dev/null
+++ b/contrib/nvi/catalog/swedish.base
@@ -0,0 +1,307 @@
+002 "För långa rader"
+003 "kan inte ta bort rad %lu"
+004 "kan inte lägga till på rad %lu"
+005 "kan inte sätta in på rad %lu"
+006 "kan inte lagra rad %lu"
+007 "kan inte hämta sista raden"
+008 "Fel: kan inte hämta rad %lu"
+009 "Loggningsfil"
+010 "Loggning utförs inte, ångra är inte möjligt"
+011 "Inga ändringar att ångra"
+012 "Loggning utförs inte, ångra är inte möjligt"
+013 "Loggning utförs inte, ångra ångra är inte möjligt"
+014 "Inga ändringar att återgöra"
+015 "%s/%d: fel vid loggning"
+016 "Vi:s standard in och ut måste gå till en terminal"
+017 "Markering %s: inte satt"
+018 "Markering %s: raden har tagits bort"
+019 "Markering %s: markörpositionen finns inte längre"
+020 "Fel: "
+021 "ny fil"
+022 "namnet ändrades"
+023 "ändrad"
+024 "oförändrad"
+025 "OLÅST"
+026 "inte skrivbar"
+027 "rad %lu av %lu [%ld%%]"
+028 "tom fil"
+029 "rad %lu"
+030 "Filen %s är ingen meddelandekatalog"
+031 "Kan inte sätta standardvärde för %s flaggan"
+032 "Användning: %s"
+033 "set: %s är en okänd flagga: "set all" visar alla flaggor"
+034 "set: [no]%s flaggan kan inte ges ett värde"
+035 "set: %s flaggan är inte boleansk"
+036 "set: %s flaggan: %s"
+037 "set: %s flaggan: %s: för stort värde"
+038 "set: %s flaggan: %s är ett otillåtet tal"
+039 "set: %s flaggan är inte boleansk"
+040 "Fönsterkolumnerna är för få, mindre än %d"
+041 "Fönsterkolumnerna är för många, fler än %d"
+042 "Fönsterraderna är för få, mindre än %d"
+043 "Fönsterraderna är för många, fler än %d"
+044 "Lisp flaggan är inte implementerad"
+045 "meddelanden är inte avslagna: %s"
+046 "meddelanden är inte påslagna: %s"
+048 "Paragraph flaggan måste ges i teckengrupper om två"
+049 "Section flaggan måste ges i teckengrupper om två"
+053 "Standardbufferten är tom"
+054 "Buffer %s är tom"
+055 "Filer med radmatning i namnet kan inte återskapas"
+056 "Ändringar kan inte återskapas om programmet kraschar"
+057 "Kopierar filen för återskapning..."
+058 "Säkerhetskopiering misslyckades: %s"
+059 "Ändringar kan inte återskapas om programmet kraschar"
+060 "Misslyckades att säkerhetskopiera filen: %s"
+061 "Kopierar filen för återskapning..."
+062 "Kan inte hitta information om användaridentitet %u"
+063 "Kan inte låsa återskapningsfilen"
+064 "Återskapningsfilens buffer överskriven"
+065 "Återskapningsfil"
+066 "%s: Återskapningsfilen är korrupt"
+067 "%s: Återskapningsfilen är korrupt"
+068 "Det finns ingen fil %s, läsbar av dig, att återskapa"
+069 "Det finns äldre versioner av denna fil som du kan återskapa"
+070 "Det finns andra filer du kan återskapa"
+071 "skickar inte email: %s"
+072 "Filen är tom; inget att söka i"
+073 "Kom till slutet på filen utan att hitta söksträngen"
+074 "Ingen tidigare söksträng"
+075 "Hittar inte söksträngen"
+076 "Kom till början av filen utan att hitta söksträngen"
+077 "Sökningen slog runt"
+078 "Söker..."
+079 "Inga icke skrivbara tecken funna"
+080 "Okänt kommandonamn"
+082 "%s: kommandot är inte tillgängligt i "ex" läge"
+083 "Talet får inte vara noll"
+084 "%s: Ogiltig radspecifikation"
+085 "Fel i intern syntaxtabell (%s: %s)"
+086 "Användning: %s"
+087 "%s: temporärbuffert inte frisläppt"
+088 "Offset är före rad 1"
+089 "Offset är efter slutet på filen"
+090 "@ med intervall exekverades när filen/fönstret ändrades"
+091 "Global/v kommando exekverades när filen/fönstret ändrades"
+092 "Ex kommando misslyckades: efterföljande kommandon ignorerade"
+093 "Ex kommando misslyckades: omdefinierade tangenter ignorerade"
+094 "Den andra adressen är mindre än den första"
+095 "Inget namn på markering givet"
+096 "\\ följs inte av / eller ?"
+097 "Referens till ett radnummer mindre än 0"
+098 "%s kommandot är inte känt"
+099 "Värdet på adressen är för stort"
+100 "Värdet på adressen är för litet"
+101 "Otillåten adresskombination"
+102 "Otillåten adress: bara %lu rader finns i filen"
+103 "Otillåten adress: filen är tom"
+104 "%s kommandot tillåter inte en adress som är 0"
+105 "Inga förkortningar att visa"
+106 "Förkortningar måste sluta med ett "ord" tecken"
+107 "Förkortningar kan inte innehålla mellanslag eller tab"
+108 "Förkortningar kan inte blanda "ord"/"icke ord" tecken, utom i slutet"
+109 ""%s" är ingen förkortning"
+110 "Vi kommando misslyckades: omdefinierade tangenter ignorerade"
+111 "Inga fler filer att editera"
+112 "Inga tidigare filer att editera"
+113 "Inga tidigare filer att spela tillbaka"
+114 "Ingen fillista att visa"
+115 "Inget tidigare kommando att ersätta "!" med"
+116 "Inget filnamn att ersätta %% med"
+117 "Inget filnamn att ersätta # med"
+118 "Fel: execl: %s"
+119 "I/O fel: %s"
+120 "Filen ändrad efter sista skrivning; spara eller använd !"
+121 "Kan inte hitta hemkatalog"
+122 "Ny nuvarande katalog: %s"
+123 "Inga "cut buffers" att visa"
+124 "%s kommandot kan inte används som del i ett "global" eller v kommando"
+125 "%s/%s: inte läst: varken du eller root är ägare"
+126 "%s/%s: inte läst: du är inte ägare"
+127 "%s/%s: inte läst: skrivbar av annan än ägaren"
+128 "%s: inte läst: varken du eller root är ägare"
+129 "%s: inte läst: du är inte ägare"
+130 "%s: inte läst: skrivbar av annan än ägaren"
+131 "Ingen nästa rad att sätta ihop med"
+132 "Det finns inget i inmatningsmappningen"
+133 "Det finns inget i kommandomappningen"
+134 "%s tecknet kan inte mappas om"
+135 ""%s" är inte ommappat just nu"
+136 "Namn på markeringar måste vara ett tecken långa"
+137 "%s finns, inget sparat; använd ! för att spara"
+138 "Ny exrc fil: %s"
+139 "Målraden ligger inne i området som ska flyttas"
+140 "Open kommandot kräver att open flaggan är satt"
+141 "Open kommandot är inte implementerat ännu"
+142 "Säkerhetskopiering av filen är inte möjligt"
+143 "Filen säkerhetskopierad"
+144 "%s expanderade till för många filnamn"
+145 "Endast vanliga filer och namngivna rör kan läsas"
+146 "%s: läslåset är otillgängligt"
+147 "Läser..."
+148 "%s: %lu rader, %lu tecken"
+149 "Inga bakgrundsfönster att visa"
+150 "Script kommandot finns bara i "vi" läge"
+151 "Inget kommando att exekvera"
+152 "shiftwidth flaggan satt till 0"
+153 "Talet har för stort värde"
+154 "Talet har för litet värde"
+155 "Reguljärt uttryck är givet; r flaggan är meningslös"
+156 "#, l och p flaggorna kan inte kombineras med c flaggan i "vi" läge"
+157 "Ingen matchande text funnen"
+158 "Inget tidigare märke har givits"
+159 "Det är färre än %s märken i stacken; använd :display t[ags]"
+160 "Det finns ingen fil %s i märkesstacken; använd :display t[ags]"
+161 "Tryck Enter för att fortsätta: "
+162 "%s: märke inte funnet"
+163 "%s: korrupt märke i %s"
+164 "%s: märkets radnummer är bortom filslutet"
+165 "Märkesstacken är tom"
+166 "%s: söksträngen inte funnen"
+167 "%d filer till att editera"
+168 "Buffert %s är tom"
+169 "Bekräfta ändring? [n]"
+170 "Avbruten"
+171 "Ingen tidigare buffert att exekvera"
+172 "Inget tidigare reguljärt uttryck"
+173 "%s kommandot kräver att en fil redan lästs in"
+174 "Användning: %s"
+175 "Visual kommandot kräver att open flaggan är satt"
+177 "Tom fil"
+178 "Ingen tidigare F, f, T eller t sökning"
+179 "%s inte funnen"
+180 "Ingen tidigare fil att editera"
+181 "Markören är inte i ett tal"
+182 "Det resulterande talet är för stort"
+183 "Det resulterande talet är för litet"
+184 "Inget matchande tecken på denna rad"
+185 "Matchande tecken inte funnet"
+186 "Det finns inga tecken att ersätta"
+187 "Det finns inget fönster att byta till"
+188 "Tecken efter söksträng, radoffset och/eller z kommandot"
+189 "Ingen tidigare söksträng"
+190 "Sökningen slog runt till ursprungliga positionen"
+191 "Förkortning överskred expanderingsgränsen: tecken har tagits bort"
+192 "Ogiltigt tecken; använd "quote" för att sätta in"
+193 "Redan i början på insättningen"
+194 "Inga fler tecken att ta bort"
+195 "Försök att gå bortom slutet på filen"
+196 "Försök att gå bortom slutet på raden"
+197 "Ingen förflyttning gjord"
+198 "Redan i början på filen"
+199 "Försök att gå före början på filen"
+200 "Redan i första kolumnen"
+201 "Buffertar måste anges före kommandot"
+202 "Redan i slutet av filen"
+203 "Redan på slutet av raden"
+204 "%s är inte ett "vi" kommando"
+205 "Användning: %s"
+206 "Inga tecken att ta bort"
+207 "Q kommandot kräver "ex" i terminalläge"
+208 "Inget kommando att repetera"
+209 "Filen är tom"
+210 "%s kan inte användas som ett förflyttningskommando"
+211 "Redan i kommando läge"
+212 "Markören är inte i ett ord"
+214 "Windows flaggans värde är för stor, största värde är %u"
+215 "Lägg till"
+216 "Ändra"
+217 "Kommando"
+218 "Sätt in"
+219 "Ersätt"
+220 "Förflyttning bortom fönsterslut"
+221 "Förflyttning till före fönstrets början"
+222 "Fönstret måste vara större än %d rader för delning"
+223 "Det finns inga fönster i bakgrunden"
+224 "Det finns inget fönster i bakgrunden som editerar filen %s"
+225 "Du får inte sätta ditt enda synliga fönster i bakgrunden"
+226 "Fönstret kan bara krympa till %d rader"
+227 "Fönstret kan inte krympa"
+228 "Fönstret kan inte växa"
+230 "Detta fönster kan inte pausas"
+231 "Avbrutet: omdefinierade tangenter ignorerade"
+232 "vi: temporärbuffertar inte frisläppta"
+233 "Denna terminal har ingen %s tangent"
+234 "Endast en buffert kan anges"
+235 "Talet är större än %lu"
+236 "Avbrutet"
+237 "Kan inte skapa temporär fil"
+238 "Warning: %s är inte en normal fil"
+239 "%s är redan låst, detta blir en icke skrivbar session"
+240 "%s: ta bort"
+241 "%s: stäng"
+242 "%s: ta bort"
+243 "%s: ta bort"
+244 "Ej skrivbar fil, filen inte sparad; använd ! för att skriva över"
+245 "Ej skrivbar fil, filen inte sparad"
+246 "%s finns, ej sparad; använd ! för att utföra operationen"
+247 "%s finns, filen inte sparad"
+248 "Ofullständig fil, filen inte sparad, använd ! för att skriva över"
+249 "Ofullständig fil, filen inte sparad"
+250 "%s: filen ändrad efter denna kopia togs; använd ! för att utföra operationen"
+251 "%s: filen ändrad efter denna kopia togs"
+252 "%s: skrivlåset är otillgängligt"
+253 "Skriver..."
+254 "%s: VARNING: FILEN TRUNKERAD"
+255 "Redan vid första märket i denna grupp"
+256 "%s: ny fil: %lu rader, %lu tecken"
+257 "%s: %lu rader, %lu tecken"
+258 "%s expanderade till för många filnamn"
+259 "%s är inte en normal fil"
+260 "%s ägs inte av dig"
+261 "%s är åtkomstbar av andra än ägaren"
+262 "Filen har ändrats efter den sparats; spara eller använd !"
+263 "Filen har ändrats efter den sparats; spara eller använd :edit!"
+264 "Filen har ändrats efter den sparats; spara eller använd !"
+265 "Filen är temporär; exit kastar bort ändringarna"
+266 "Ej skrivbar fil, ändringar har inte automatsparats"
+267 "Loggningen startar om"
+268 "bekräfta? [ynq]"
+269 "Tryck på en tangent för att fortsätta: "
+270 "Tryck på en tangent för att fortsätta [: för att ge fler kommandon]: "
+271 "Tryck på en tangent för att fortsätta [q för att avsluta]: "
+272 "Den formen av %s kräver "ex" i terminalläge"
+273 "Går till "ex" inmatningsläge."
+274 "Kommandot misslyckades, ingen fil inläst ännu."
+275 " forts?"
+276 "Oväntad teckenhändelse"
+277 "Oväntad filslutshändelse"
+278 "Sökningen hittade ingenting"
+279 "Oväntad avbrottshändelse"
+280 "Oväntad avslutningshändelse"
+281 "Oväntad omritningshändelse"
+282 "Redan vid sista märket i denna grupp"
+283 "%s kommandot kräver "ex" i terminalläge"
+284 "Den formen av %s är inte tillgänglig när secure edit flaggan är satt"
+285 "Oväntad stränghändelse"
+286 "Oväntad tidshändelse"
+287 "Oväntad skrivhändelse"
+289 "Skalexpansion är inte tillgänglig när secure edit flaggan är satt"
+290 "%s kommandot är inte tillgänglig när secure edit flaggan är satt"
+291 "set: %s kan inte slås av"
+292 "Fönstret för litet."
+293 "tillagda"
+294 "ändrade"
+295 "borttagna"
+296 "ihopsatta"
+297 "flyttade"
+298 "flyttade"
+299 "inklistrade"
+300 "rad"
+301 "rader"
+302 "Vi har inte länkats med en Tcl tolk"
+303 "Filen har ändrats efter den sparats."
+304 "Skalexpansion misslyckades"
+305 "Ingen %s edit flagga given"
+306 "Vi har inte länkats med en Perl tolk"
+307 "Inga "ex" kommandon att exekvera"
+308 "Tryck <CR> för att exekvera kommando, :q för att avsluta"
+309 "Gör "cscope help" för hjälp"
+310 "Inga cscope kopplingar körs"
+311 "%s: okänd söktyp: använd en av %s"
+312 "%d: ingen sådan cscope session"
+313 "set: %s flaggan får aldrig slås på"
+314 "set: %s flaggan får aldrig sättas till 0"
+315 "%s: tillagt: %lu rader, %lu tecken"
+316 "Oväntad storleksändring"
+317 "%d filer att editera"
diff --git a/contrib/nvi/catalog/swedish.check b/contrib/nvi/catalog/swedish.check
new file mode 100644
index 0000000..c70b9bb
--- /dev/null
+++ b/contrib/nvi/catalog/swedish.check
@@ -0,0 +1,34 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+213
+229
+288
+=========================
+MISSING ERROR MESSAGES (Please add!):
+=========================
+Extra error messages (just delete them):
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+=========================
+Duplicate messages, just message (this is okay):
+ 2 %s expanderade till för många filnamnX
+ 2 %s: %lu rader, %lu teckenX
+ 2 %s: Återskapningsfilen är korruptX
+ 2 Filen har ändrats efter den sparats; spara eller använd !X
+ 2 Ingen tidigare söksträngX
+ 2 Kopierar filen för återskapning...X
+ 2 Loggning utförs inte, ångra är inte möjligtX
+ 2 flyttadeX
+ 2 set: %s flaggan är inte boleanskX
+ 2 Ändringar kan inte återskapas om programmet krascharX
+ 3 %s: ta bortX
+ 4 Användning: %sX
+=========================
diff --git a/contrib/nvi/catalog/swedish.owner b/contrib/nvi/catalog/swedish.owner
new file mode 100644
index 0000000..2b36f2d
--- /dev/null
+++ b/contrib/nvi/catalog/swedish.owner
@@ -0,0 +1 @@
+Jan Djarv <jan.djarv@mbox200.swipnet.se>
OpenPOWER on IntegriCloud